]> BookStack Code Mirror - bookstack/blob - resources/js/wysiwyg/ui/index.ts
Lexical: Reorganised some logic into manager
[bookstack] / resources / js / wysiwyg / ui / index.ts
1 import {LexicalEditor} from "lexical";
2 import {getMainEditorFullToolbar} from "./toolbars";
3 import {EditorUIManager} from "./framework/manager";
4 import {image as imageFormDefinition, link as linkFormDefinition, source as sourceFormDefinition} from "./defaults/form-definitions";
5 import {ImageDecorator} from "./decorators/image";
6 import {EditorUiContext} from "./framework/core";
7
8 export function buildEditorUI(element: HTMLElement, editor: LexicalEditor) {
9     const manager = new EditorUIManager();
10     const context: EditorUiContext = {
11         editor,
12         editorDOM: element,
13         manager,
14         translate: (text: string): string => text,
15         lastSelection: null,
16     };
17     manager.setContext(context);
18
19     // Create primary toolbar
20     manager.setToolbar(getMainEditorFullToolbar());
21
22     // Register modals
23     manager.registerModal('link', {
24         title: 'Insert/Edit link',
25         form: linkFormDefinition,
26     });
27     manager.registerModal('image', {
28         title: 'Insert/Edit Image',
29         form: imageFormDefinition
30     });
31     manager.registerModal('source', {
32         title: 'Source code',
33         form: sourceFormDefinition,
34     });
35
36     // Register image decorator listener
37     manager.registerDecoratorType('image', ImageDecorator);
38 }