Server IP : 80.87.202.40 / Your IP : 216.73.216.169 Web Server : Apache System : Linux rospirotorg.ru 5.14.0-539.el9.x86_64 #1 SMP PREEMPT_DYNAMIC Thu Dec 5 22:26:13 UTC 2024 x86_64 User : bitrix ( 600) PHP Version : 8.2.27 Disable Function : NONE MySQL : OFF | cURL : ON | WGET : ON | Perl : ON | Python : OFF | Sudo : ON | Pkexec : ON Directory : /home/bitrix/ext_www/rospirotorg.ru/bitrix/js/ui/text-editor/src/plugins/ |
Upload File : |
import type { LexicalEditor, LexicalNode, LexicalNodeReplacement } from 'ui.lexical.core'; import { mergeRegister } from 'ui.lexical.utils'; import { BBCodeExportConversion, BBCodeImportConversion } from '../bbcode'; import { type TextEditor } from '../text-editor'; import type { SchemeValidationOptions } from '../types/scheme-validation-options'; export interface PluginStaticMembers { getName(): string; getNodes(editor: TextEditor): Array<Class<LexicalNode>>; } export interface PluginInterface {} export type PluginClassConstructor = (editor: TextEditor) => PluginInterface; export type PluginConstructor = PluginClassConstructor & PluginStaticMembers; /** * @memberof BX.UI.TextEditor */ export default class BasePlugin implements PluginStaticMembers { #textEditor: TextEditor = null; #destroyed: boolean = false; #removeListeners: Function = () => {}; constructor(textEditor: TextEditor) { this.#textEditor = textEditor; } static getName(): string { throw new Error('getName must be implemented in a child class'); } static getNodes(editor: TextEditor): Array<Class<LexicalNode> | LexicalNodeReplacement> { return []; } importBBCode(): BBCodeImportConversion | null { return null; } exportBBCode(): BBCodeExportConversion | null { return null; } validateScheme(): SchemeValidationOptions | null { return null; } afterInit(): void { // you can override this method } getName(): string { return this.constructor.getName(); } getEditor(): TextEditor { return this.#textEditor; } getLexicalEditor(): LexicalEditor { return this.#textEditor.getLexicalEditor(); } cleanUpRegister(...func: Array<Function>): void { this.#removeListeners = mergeRegister( this.#removeListeners, ...func, ); } isDestroyed(): boolean { return this.#destroyed; } destroy(): void { this.#destroyed = true; this.#removeListeners(); this.#removeListeners = null; } }