2022-03-04 13:39:39 +01:00
|
|
|
/**
|
|
|
|
* @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 */
|
|
|
|
|
2025-05-09 22:35:36 +03:00
|
|
|
import { ClassicEditor, Typing, Paragraph, Undo, Enter, Clipboard, Link, Bold, Italic, Markdown, CodeBlock } from 'ckeditor5';
|
2022-03-04 13:39:39 +01:00
|
|
|
|
2024-05-20 14:27:21 +02:00
|
|
|
import Mermaid from '../../src/mermaid.js';
|
2022-03-04 13:39:39 +01:00
|
|
|
|
|
|
|
ClassicEditor
|
|
|
|
.create( document.querySelector( '#editor' ), {
|
2025-05-10 02:31:29 +03:00
|
|
|
licenseKey: "GPL",
|
2022-03-04 13:39:39 +01:00
|
|
|
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 );
|
|
|
|
}
|