1
0
mirror of https://github.com/BookStackApp/BookStack.git synced 2025-07-21 09:22:09 +03:00
Files
bookstack/resources/js/wysiwyg/ui/index.ts
Dan Brown c606970e38 Lexical: Started comment implementation
Refactors some UI and toolbar code for better abstract use across editor
versions.
2025-06-24 17:47:53 +01:00

42 lines
1.4 KiB
TypeScript

import {LexicalEditor} from "lexical";
import {EditorUIManager} from "./framework/manager";
import {EditorUiContext} from "./framework/core";
import {el} from "../utils/dom";
export function buildEditorUI(containerDOM: HTMLElement, editor: LexicalEditor, options: Record<string, any>): EditorUiContext {
const editorDOM = el('div', {
contenteditable: 'true',
class: `editor-content-area ${options.editorClass || ''}`,
});
const scrollDOM = el('div', {
class: 'editor-content-wrap',
}, [editorDOM]);
containerDOM.append(scrollDOM);
containerDOM.classList.add('editor-container');
containerDOM.setAttribute('dir', options.textDirection);
if (options.darkMode) {
containerDOM.classList.add('editor-dark');
}
const manager = new EditorUIManager();
const context: EditorUiContext = {
editor,
containerDOM: containerDOM,
editorDOM: editorDOM,
scrollDOM: scrollDOM,
manager,
translate(text: string): string {
const translations = options.translations;
return translations[text] || text;
},
error(error: string|Error): void {
const message = error instanceof Error ? error.message : error;
window.$events.error(message); // TODO - Translate
},
options,
};
manager.setContext(context);
return context;
}