1 import {LexicalEditor} from "lexical";
2 import {getImageToolbarContent, getLinkToolbarContent, 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";
8 export function buildEditorUI(container: HTMLElement, element: HTMLElement, editor: LexicalEditor) {
9 const manager = new EditorUIManager();
10 const context: EditorUiContext = {
12 containerDOM: container,
15 translate: (text: string): string => text,
18 manager.setContext(context);
20 // Create primary toolbar
21 manager.setToolbar(getMainEditorFullToolbar());
24 manager.registerModal('link', {
25 title: 'Insert/Edit link',
26 form: linkFormDefinition,
28 manager.registerModal('image', {
29 title: 'Insert/Edit Image',
30 form: imageFormDefinition
32 manager.registerModal('source', {
34 form: sourceFormDefinition,
37 // Register context toolbars
38 manager.registerContextToolbar('image', {
40 content: getImageToolbarContent(),
41 displayTargetLocator(originalTarget: HTMLElement) {
42 return originalTarget.closest('a') || originalTarget;
45 manager.registerContextToolbar('link', {
47 content: getLinkToolbarContent(),
50 // Register image decorator listener
51 manager.registerDecoratorType('image', ImageDecorator);