UNPKG

@lobehub/editor

Version:

A powerful and extensible rich text editor built on Meta's Lexical framework, providing a modern editing experience with React integration.

71 lines (69 loc) 2.51 kB
function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); } import { $getNodeByKey, createEditor } from 'lexical'; // DOM export var DOM_ELEMENT_TYPE = 1; export var DOM_TEXT_TYPE = 3; export var DOM_DOCUMENT_TYPE = 9; export var DOM_DOCUMENT_FRAGMENT_TYPE = 11; export function genServiceId(name) { return { __serviceId: name }; } export var noop = function noop() {}; export function createEmptyEditorState() { // Create a temporary editor to get an empty state var tempEditor = createEditor(); return tempEditor.getEditorState(); } export function assert(cond, message) { if (cond) { return; } throw new Error(message); } export function getNodeKeyFromDOMNode(dom, editor) { var prop = "__lexicalKey_".concat(editor._key); return dom[prop]; } export function $getNodeFromDOMNode(dom, editor, editorState) { var key = getNodeKeyFromDOMNode(dom, editor); if (key !== undefined) { return $getNodeByKey(key, editorState); } return null; } /** * @param x - The element being tested * @returns Returns true if x is a DOM Node, false otherwise. */ export function isDOMNode(x) { return _typeof(x) === 'object' && x !== null && 'nodeType' in x && typeof x.nodeType === 'number'; } /** * @param x - The element being testing * @returns Returns true if x is a document fragment, false otherwise. */ export function isDocumentFragment(x) { return isDOMNode(x) && x.nodeType === DOM_DOCUMENT_FRAGMENT_TYPE; } export function getParentElement(node) { var parentElement = node.assignedSlot || node.parentElement; return isDocumentFragment(parentElement) ? parentElement.host : parentElement; } export function $getNearestNodeFromDOMNode(startingDOM, editor, editorState) { var dom = startingDOM; while (dom !== null) { var node = $getNodeFromDOMNode(dom, editor, editorState); if (node !== null) { return node; } dom = getParentElement(dom); } return null; } export function getKernelFromEditor(editor) { var _editor$_createEditor; // @ts-expect-error __kernel is injected into the lexical editor instance return ((_editor$_createEditor = editor._createEditorArgs) === null || _editor$_createEditor === void 0 ? void 0 : _editor$_createEditor.__kernel) || editor._kernel; }