mirror of
https://github.com/TriliumNext/Notes.git
synced 2025-07-30 03:32:26 +08:00
58 lines
1.5 KiB
TypeScript
58 lines
1.5 KiB
TypeScript
import { Plugin, logWarning, blockAutoformatEditing } from 'ckeditor5';
|
|
// eslint-disable-next-line ckeditor5-rules/allow-imports-only-from-main-package-entry-point
|
|
import Math from './math.js';
|
|
import MathCommand from './mathcommand.js';
|
|
import MathUI from './mathui.js';
|
|
|
|
export default class AutoformatMath extends Plugin {
|
|
public static get requires() {
|
|
return [ Math, 'Autoformat' ] as const;
|
|
}
|
|
|
|
/**
|
|
* @inheritDoc
|
|
*/
|
|
public init(): void {
|
|
const editor = this.editor;
|
|
|
|
if ( !editor.plugins.has( 'Math' ) ) {
|
|
logWarning( 'autoformat-math-feature-missing', editor );
|
|
}
|
|
}
|
|
|
|
public afterInit(): void {
|
|
const editor = this.editor;
|
|
const command = editor.commands.get( 'math' );
|
|
|
|
if ( command instanceof MathCommand ) {
|
|
const callback = () => {
|
|
if ( !command.isEnabled ) {
|
|
return false;
|
|
}
|
|
|
|
command.display = true;
|
|
|
|
// Wait until selection is removed.
|
|
window.setTimeout(
|
|
() => {
|
|
const mathUIInstance = editor.plugins.get( 'MathUI' );
|
|
if ( mathUIInstance instanceof MathUI ) {
|
|
mathUIInstance._showUI();
|
|
}
|
|
},
|
|
50
|
|
);
|
|
};
|
|
|
|
// @ts-expect-error: blockAutoformatEditing expects an Autoformat instance even though it works with any Plugin instance
|
|
blockAutoformatEditing( editor, this, /^\$\$$/, callback );
|
|
// @ts-expect-error: blockAutoformatEditing expects an Autoformat instance even though it works with any Plugin instance
|
|
blockAutoformatEditing( editor, this, /^\\\[$/, callback );
|
|
}
|
|
}
|
|
|
|
public static get pluginName() {
|
|
return 'AutoformatMath' as const;
|
|
}
|
|
}
|