2025-05-04 18:36:03 +03:00
|
|
|
import { Plugin, ButtonView } from 'ckeditor5';
|
|
|
|
|
2025-05-04 18:53:18 +03:00
|
|
|
import admonitionIcon from '../theme/icons/admonition.svg';
|
|
|
|
import AdmonitionEditing from './admonitionediting.js';
|
|
|
|
import AdmonitionUI from './admonitionui.js';
|
|
|
|
import AdmonitionAutoformat from './admonitionautoformat.js';
|
2025-05-04 18:36:03 +03:00
|
|
|
|
|
|
|
export default class Admonition extends Plugin {
|
2025-05-04 18:53:18 +03:00
|
|
|
|
|
|
|
public static get requires() {
|
|
|
|
return [ AdmonitionEditing, AdmonitionUI, AdmonitionAutoformat ] as const;
|
|
|
|
}
|
|
|
|
|
2025-05-04 18:36:03 +03:00
|
|
|
public static get pluginName() {
|
|
|
|
return 'Admonition' as const;
|
|
|
|
}
|
|
|
|
|
|
|
|
public init(): void {
|
|
|
|
const editor = this.editor;
|
|
|
|
const t = editor.t;
|
|
|
|
const model = editor.model;
|
|
|
|
|
|
|
|
// Register the "admonition" button, so it can be displayed in the toolbar.
|
|
|
|
editor.ui.componentFactory.add( 'admonition', locale => {
|
|
|
|
const view = new ButtonView( locale );
|
|
|
|
|
|
|
|
view.set( {
|
|
|
|
label: t( 'Admonition' ),
|
2025-05-04 18:53:18 +03:00
|
|
|
icon: admonitionIcon,
|
2025-05-04 18:36:03 +03:00
|
|
|
tooltip: true
|
|
|
|
} );
|
|
|
|
|
|
|
|
// Insert a text into the editor after clicking the button.
|
|
|
|
this.listenTo( view, 'execute', () => {
|
|
|
|
model.change( writer => {
|
|
|
|
const textNode = writer.createText( 'Hello CKEditor 5!' );
|
|
|
|
|
|
|
|
model.insertContent( textNode );
|
|
|
|
} );
|
|
|
|
|
|
|
|
editor.editing.view.focus();
|
|
|
|
} );
|
|
|
|
|
|
|
|
return view;
|
|
|
|
} );
|
|
|
|
}
|
|
|
|
}
|