mirror of
https://github.com/TriliumNext/Notes.git
synced 2025-08-23 20:42:29 +08:00
52 lines
1.1 KiB
JavaScript
52 lines
1.1 KiB
JavaScript
/**
|
|
* @module mermaid/mermaidtoolbar
|
|
*/
|
|
|
|
import { Plugin } from 'ckeditor5/src/core.js';
|
|
import { WidgetToolbarRepository } from 'ckeditor5/src/widget.js';
|
|
|
|
export default class MermaidToolbar extends Plugin {
|
|
/**
|
|
* @inheritDoc
|
|
*/
|
|
static get requires() {
|
|
return [ WidgetToolbarRepository ];
|
|
}
|
|
|
|
/**
|
|
* @inheritDoc
|
|
*/
|
|
static get pluginName() {
|
|
return 'MermaidToolbar';
|
|
}
|
|
|
|
/**
|
|
* @inheritDoc
|
|
*/
|
|
afterInit() {
|
|
const editor = this.editor;
|
|
const t = editor.t;
|
|
|
|
const widgetToolbarRepository = editor.plugins.get( WidgetToolbarRepository );
|
|
const mermaidToolbarItems = [ 'mermaidSourceView', 'mermaidSplitView', 'mermaidPreview', '|', 'mermaidInfo' ];
|
|
|
|
if ( mermaidToolbarItems ) {
|
|
widgetToolbarRepository.register( 'mermaidToolbar', {
|
|
ariaLabel: t( 'Mermaid toolbar' ),
|
|
items: mermaidToolbarItems,
|
|
getRelatedElement: selection => getSelectedElement( selection )
|
|
} );
|
|
}
|
|
}
|
|
}
|
|
|
|
function getSelectedElement( selection ) {
|
|
const viewElement = selection.getSelectedElement();
|
|
|
|
if ( viewElement && viewElement.hasClass( 'ck-mermaid__wrapper' ) ) {
|
|
return viewElement;
|
|
}
|
|
|
|
return null;
|
|
}
|