mirror of
https://github.com/TriliumNext/Notes.git
synced 2025-07-27 10:02:59 +08:00
68 lines
1.9 KiB
TypeScript
68 lines
1.9 KiB
TypeScript
/**
|
|
* @license Copyright (c) 2003-2021, CKSource - Frederico Knabben. All rights reserved.
|
|
* For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license
|
|
*/
|
|
|
|
/* globals console, window, document */
|
|
|
|
import { ClassicEditor } from '@ckeditor/ckeditor5-editor-classic';
|
|
import { Typing } from '@ckeditor/ckeditor5-typing';
|
|
import { Paragraph } from '@ckeditor/ckeditor5-paragraph';
|
|
import { Undo } from '@ckeditor/ckeditor5-undo';
|
|
import { Enter } from '@ckeditor/ckeditor5-enter';
|
|
import { Clipboard } from '@ckeditor/ckeditor5-clipboard';
|
|
import { Link } from '@ckeditor/ckeditor5-link';
|
|
import { Bold, Italic } from '@ckeditor/ckeditor5-basic-styles';
|
|
import { Markdown } from '@ckeditor/ckeditor5-markdown-gfm';
|
|
import { CodeBlock } from '@ckeditor/ckeditor5-code-block';
|
|
|
|
import Mermaid from '../../src/mermaid.js';
|
|
|
|
ClassicEditor
|
|
.create( document.querySelector( '#editor' ), {
|
|
plugins: [
|
|
Markdown,
|
|
Typing,
|
|
Paragraph,
|
|
Undo,
|
|
Enter,
|
|
Clipboard,
|
|
Link,
|
|
Bold,
|
|
Italic,
|
|
CodeBlock,
|
|
Mermaid
|
|
],
|
|
toolbar: [ 'bold', 'italic', 'link', 'undo', 'redo', 'codeBlock', 'mermaid' ],
|
|
codeBlock: {
|
|
languages: [
|
|
{ language: 'plaintext', label: 'Plain text', class: '' },
|
|
{ language: 'javascript', label: 'JavaScript' },
|
|
{ language: 'python', label: 'Python' },
|
|
{ language: 'mermaid', label: 'Mermaid' }
|
|
]
|
|
}
|
|
|
|
} )
|
|
.then( editor => {
|
|
window.editor = editor;
|
|
|
|
setupMarkdownOutputPreview( editor );
|
|
} )
|
|
.catch( err => {
|
|
console.error( err.stack );
|
|
} );
|
|
|
|
function setupMarkdownOutputPreview( editor ) {
|
|
const outputElement = document.querySelector( '#markdown-output' );
|
|
|
|
editor.model.document.on( 'change', () => {
|
|
outputElement.innerText = editor.getData();
|
|
} );
|
|
|
|
// Set the initial data with delay so hightlight.js doesn't catch them.
|
|
window.setTimeout( () => {
|
|
outputElement.innerText = editor.getData();
|
|
}, 500 );
|
|
}
|