2025-06-16 21:14:46 +03:00
|
|
|
import { ButtonView, Command, Plugin } from 'ckeditor5';
|
2025-05-03 17:22:49 +03:00
|
|
|
import markdownIcon from '../icons/markdown-mark.svg?raw';
|
2024-11-09 14:09:50 +02:00
|
|
|
|
2025-06-16 21:14:46 +03:00
|
|
|
export const COMMAND_NAME = 'importMarkdownInline';
|
|
|
|
|
2024-11-09 14:09:50 +02:00
|
|
|
export default class MarkdownImportPlugin extends Plugin {
|
|
|
|
init() {
|
|
|
|
const editor = this.editor;
|
|
|
|
|
2025-06-16 23:52:16 +03:00
|
|
|
editor.commands.add(COMMAND_NAME, new ImportMarkdownCommand(editor));
|
2025-06-16 21:14:46 +03:00
|
|
|
|
2024-11-09 14:09:50 +02:00
|
|
|
editor.ui.componentFactory.add( 'markdownImport', locale => {
|
|
|
|
const view = new ButtonView( locale );
|
|
|
|
|
|
|
|
view.set( {
|
|
|
|
label: 'Markdown import from clipboard',
|
|
|
|
icon: markdownIcon,
|
|
|
|
tooltip: true
|
|
|
|
} );
|
|
|
|
|
|
|
|
// Callback executed once the image is clicked.
|
2025-06-16 21:14:46 +03:00
|
|
|
const command = editor.commands.get(COMMAND_NAME)!;
|
|
|
|
view.bind('isEnabled').to(command, 'isEnabled');
|
|
|
|
view.on('execute', () => editor.execute(COMMAND_NAME));
|
2024-11-09 14:09:50 +02:00
|
|
|
|
|
|
|
return view;
|
|
|
|
} );
|
|
|
|
}
|
|
|
|
}
|
2025-06-16 21:14:46 +03:00
|
|
|
|
2025-06-16 23:52:16 +03:00
|
|
|
class ImportMarkdownCommand extends Command {
|
2025-06-16 21:14:46 +03:00
|
|
|
|
|
|
|
execute() {
|
|
|
|
glob.importMarkdownInline();
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|