mirror of
https://github.com/BookStackApp/BookStack.git
synced 2024-12-13 14:33:37 +08:00
22d078b47f
Imported at 0.17.1, Modified to work in-app. Added & configured test dependancies. Tests need to be altered to avoid using non-included deps including react dependancies.
44 lines
1.2 KiB
TypeScript
44 lines
1.2 KiB
TypeScript
/**
|
|
* Copyright (c) Meta Platforms, Inc. and affiliates.
|
|
*
|
|
* This source code is licensed under the MIT license found in the
|
|
* LICENSE file in the root directory of this source tree.
|
|
*
|
|
*/
|
|
|
|
import type {CreateEditorArgs, LexicalEditor} from 'lexical';
|
|
|
|
import {createEditor} from 'lexical';
|
|
|
|
/**
|
|
* Generates a headless editor that allows lexical to be used without the need for a DOM, eg in Node.js.
|
|
* Throws an error when unsupported methods are used.
|
|
* @param editorConfig - The optional lexical editor configuration.
|
|
* @returns - The configured headless editor.
|
|
*/
|
|
export function createHeadlessEditor(
|
|
editorConfig?: CreateEditorArgs,
|
|
): LexicalEditor {
|
|
const editor = createEditor(editorConfig);
|
|
editor._headless = true;
|
|
|
|
const unsupportedMethods = [
|
|
'registerDecoratorListener',
|
|
'registerRootListener',
|
|
'registerMutationListener',
|
|
'getRootElement',
|
|
'setRootElement',
|
|
'getElementByKey',
|
|
'focus',
|
|
'blur',
|
|
] as const;
|
|
|
|
unsupportedMethods.forEach((method: typeof unsupportedMethods[number]) => {
|
|
editor[method] = () => {
|
|
throw new Error(`${method} is not supported in headless mode`);
|
|
};
|
|
});
|
|
|
|
return editor;
|
|
}
|