UNPKG

391 kBSource Map (JSON)View Raw
1{"version":3,"file":"index.es.js","sources":["../../../../../../.yarn/berry/cache/@babel-runtime-npm-7.23.2-d013d6cf7e-10.zip/node_modules/@babel/runtime/helpers/esm/objectWithoutPropertiesLoose.js","../../../../../../.yarn/berry/cache/@babel-runtime-npm-7.23.2-d013d6cf7e-10.zip/node_modules/@babel/runtime/helpers/esm/objectWithoutProperties.js","../../../../../../.yarn/berry/cache/@babel-runtime-npm-7.23.2-d013d6cf7e-10.zip/node_modules/@babel/runtime/helpers/esm/typeof.js","../../../../../../.yarn/berry/cache/@babel-runtime-npm-7.23.2-d013d6cf7e-10.zip/node_modules/@babel/runtime/helpers/esm/toPrimitive.js","../../../../../../.yarn/berry/cache/@babel-runtime-npm-7.23.2-d013d6cf7e-10.zip/node_modules/@babel/runtime/helpers/esm/toPropertyKey.js","../../../../../../.yarn/berry/cache/@babel-runtime-npm-7.23.2-d013d6cf7e-10.zip/node_modules/@babel/runtime/helpers/esm/defineProperty.js","../src/hooks/use-slate-static.tsx","../src/utils/environment.ts","../src/utils/weak-maps.ts","../src/utils/dom.ts","../src/utils/key.ts","../src/plugin/react-editor.ts","../src/utils/diff-text.ts","../src/hooks/android-input-manager/android-input-manager.ts","../src/hooks/use-is-mounted.tsx","../src/hooks/use-isomorphic-layout-effect.ts","../src/hooks/use-mutation-observer.ts","../src/hooks/android-input-manager/use-android-input-manager.ts","../src/utils/range-list.ts","../src/components/string.tsx","../src/components/leaf.tsx","../src/components/text.tsx","../src/components/element.tsx","../src/hooks/use-decorate.ts","../src/hooks/use-selected.ts","../src/hooks/use-children.tsx","../src/hooks/use-read-only.ts","../src/hooks/use-slate.tsx","../src/hooks/use-track-user-input.ts","../src/utils/constants.ts","../src/utils/hotkeys.ts","../src/components/restore-dom/restore-dom-manager.ts","../src/components/restore-dom/restore-dom.tsx","../src/components/editable.tsx","../src/hooks/use-focused.ts","../src/hooks/use-slate-selector.tsx","../src/components/slate.tsx","../src/hooks/use-editor.tsx","../src/hooks/use-slate-selection.tsx","../src/utils/lines.ts","../src/plugin/with-react.ts"],"sourcesContent":["export default function _objectWithoutPropertiesLoose(source, excluded) {\n if (source == null) return {};\n var target = {};\n var sourceKeys = Object.keys(source);\n var key, i;\n for (i = 0; i < sourceKeys.length; i++) {\n key = sourceKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n target[key] = source[key];\n }\n return target;\n}","import objectWithoutPropertiesLoose from \"./objectWithoutPropertiesLoose.js\";\nexport default function _objectWithoutProperties(source, excluded) {\n if (source == null) return {};\n var target = objectWithoutPropertiesLoose(source, excluded);\n var key, i;\n if (Object.getOwnPropertySymbols) {\n var sourceSymbolKeys = Object.getOwnPropertySymbols(source);\n for (i = 0; i < sourceSymbolKeys.length; i++) {\n key = sourceSymbolKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue;\n target[key] = source[key];\n }\n }\n return target;\n}","export default function _typeof(o) {\n \"@babel/helpers - typeof\";\n\n return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) {\n return typeof o;\n } : function (o) {\n return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o;\n }, _typeof(o);\n}","import _typeof from \"./typeof.js\";\nexport default function _toPrimitive(input, hint) {\n if (_typeof(input) !== \"object\" || input === null) return input;\n var prim = input[Symbol.toPrimitive];\n if (prim !== undefined) {\n var res = prim.call(input, hint || \"default\");\n if (_typeof(res) !== \"object\") return res;\n throw new TypeError(\"@@toPrimitive must return a primitive value.\");\n }\n return (hint === \"string\" ? String : Number)(input);\n}","import _typeof from \"./typeof.js\";\nimport toPrimitive from \"./toPrimitive.js\";\nexport default function _toPropertyKey(arg) {\n var key = toPrimitive(arg, \"string\");\n return _typeof(key) === \"symbol\" ? key : String(key);\n}","import toPropertyKey from \"./toPropertyKey.js\";\nexport default function _defineProperty(obj, key, value) {\n key = toPropertyKey(key);\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n return obj;\n}","import { createContext, useContext } from 'react'\nimport { Editor } from 'slate'\nimport { ReactEditor } from '../plugin/react-editor'\n\n/**\n * A React context for sharing the editor object.\n */\n\nexport const EditorContext = createContext<ReactEditor | null>(null)\n\n/**\n * Get the current editor object from the React context.\n */\n\nexport const useSlateStatic = (): Editor => {\n const editor = useContext(EditorContext)\n\n if (!editor) {\n throw new Error(\n `The \\`useSlateStatic\\` hook must be used inside the <Slate> component's context.`\n )\n }\n\n return editor\n}\n","import React from 'react'\n\nexport const REACT_MAJOR_VERSION = parseInt(React.version.split('.')[0], 10)\n\nexport const IS_IOS =\n typeof navigator !== 'undefined' &&\n typeof window !== 'undefined' &&\n /iPad|iPhone|iPod/.test(navigator.userAgent) &&\n !window.MSStream\n\nexport const IS_APPLE =\n typeof navigator !== 'undefined' && /Mac OS X/.test(navigator.userAgent)\n\nexport const IS_ANDROID =\n typeof navigator !== 'undefined' && /Android/.test(navigator.userAgent)\n\nexport const IS_FIREFOX =\n typeof navigator !== 'undefined' &&\n /^(?!.*Seamonkey)(?=.*Firefox).*/i.test(navigator.userAgent)\n\nexport const IS_WEBKIT =\n typeof navigator !== 'undefined' &&\n /AppleWebKit(?!.*Chrome)/i.test(navigator.userAgent)\n\n// \"modern\" Edge was released at 79.x\nexport const IS_EDGE_LEGACY =\n typeof navigator !== 'undefined' &&\n /Edge?\\/(?:[0-6][0-9]|[0-7][0-8])(?:\\.)/i.test(navigator.userAgent)\n\nexport const IS_CHROME =\n typeof navigator !== 'undefined' && /Chrome/i.test(navigator.userAgent)\n\n// Native `beforeInput` events don't work well with react on Chrome 75\n// and older, Chrome 76+ can use `beforeInput` though.\nexport const IS_CHROME_LEGACY =\n typeof navigator !== 'undefined' &&\n /Chrome?\\/(?:[0-7][0-5]|[0-6][0-9])(?:\\.)/i.test(navigator.userAgent)\n\nexport const IS_ANDROID_CHROME_LEGACY =\n IS_ANDROID &&\n typeof navigator !== 'undefined' &&\n /Chrome?\\/(?:[0-5]?\\d)(?:\\.)/i.test(navigator.userAgent)\n\n// Firefox did not support `beforeInput` until `v87`.\nexport const IS_FIREFOX_LEGACY =\n typeof navigator !== 'undefined' &&\n /^(?!.*Seamonkey)(?=.*Firefox\\/(?:[0-7][0-9]|[0-8][0-6])(?:\\.)).*/i.test(\n navigator.userAgent\n )\n\n// UC mobile browser\nexport const IS_UC_MOBILE =\n typeof navigator !== 'undefined' && /.*UCBrowser/.test(navigator.userAgent)\n\n// Wechat browser (not including mac wechat)\nexport const IS_WECHATBROWSER =\n typeof navigator !== 'undefined' &&\n /.*Wechat/.test(navigator.userAgent) &&\n !/.*MacWechat/.test(navigator.userAgent) // avoid lookbehind (buggy in safari < 16.4)\n\n// Check if DOM is available as React does internally.\n// https://github.com/facebook/react/blob/master/packages/shared/ExecutionEnvironment.js\nexport const CAN_USE_DOM = !!(\n typeof window !== 'undefined' &&\n typeof window.document !== 'undefined' &&\n typeof window.document.createElement !== 'undefined'\n)\n\n// COMPAT: Firefox/Edge Legacy don't support the `beforeinput` event\n// Chrome Legacy doesn't support `beforeinput` correctly\nexport const HAS_BEFORE_INPUT_SUPPORT =\n (!IS_CHROME_LEGACY || !IS_ANDROID_CHROME_LEGACY) &&\n !IS_EDGE_LEGACY &&\n // globalThis is undefined in older browsers\n typeof globalThis !== 'undefined' &&\n globalThis.InputEvent &&\n // @ts-ignore The `getTargetRanges` property isn't recognized.\n typeof globalThis.InputEvent.prototype.getTargetRanges === 'function'\n","import { Ancestor, Editor, Node, Operation, Range, RangeRef, Text } from 'slate'\nimport { Action } from '../hooks/android-input-manager/android-input-manager'\nimport { TextDiff } from './diff-text'\nimport { Key } from './key'\n\n/**\n * Two weak maps that allow us rebuild a path given a node. They are populated\n * at render time such that after a render occurs we can always backtrack.\n */\n\nexport const NODE_TO_INDEX: WeakMap<Node, number> = new WeakMap()\nexport const NODE_TO_PARENT: WeakMap<Node, Ancestor> = new WeakMap()\n\n/**\n * Weak maps that allow us to go between Slate nodes and DOM nodes. These\n * are used to resolve DOM event-related logic into Slate actions.\n */\nexport const EDITOR_TO_WINDOW: WeakMap<Editor, Window> = new WeakMap()\nexport const EDITOR_TO_ELEMENT: WeakMap<Editor, HTMLElement> = new WeakMap()\nexport const EDITOR_TO_PLACEHOLDER: WeakMap<Editor, string> = new WeakMap()\nexport const EDITOR_TO_PLACEHOLDER_ELEMENT: WeakMap<Editor, HTMLElement> =\n new WeakMap()\nexport const ELEMENT_TO_NODE: WeakMap<HTMLElement, Node> = new WeakMap()\nexport const NODE_TO_ELEMENT: WeakMap<Node, HTMLElement> = new WeakMap()\nexport const NODE_TO_KEY: WeakMap<Node, Key> = new WeakMap()\nexport const EDITOR_TO_KEY_TO_ELEMENT: WeakMap<\n Editor,\n WeakMap<Key, HTMLElement>\n> = new WeakMap()\n\n/**\n * Weak maps for storing editor-related state.\n */\n\nexport const IS_READ_ONLY: WeakMap<Editor, boolean> = new WeakMap()\nexport const IS_FOCUSED: WeakMap<Editor, boolean> = new WeakMap()\nexport const IS_COMPOSING: WeakMap<Editor, boolean> = new WeakMap()\n\nexport const EDITOR_TO_USER_SELECTION: WeakMap<Editor, RangeRef | null> =\n new WeakMap()\n\n/**\n * Weak map for associating the context `onChange` context with the plugin.\n */\n\nexport const EDITOR_TO_ON_CHANGE = new WeakMap<\n Editor,\n (options?: { operation?: Operation }) => void\n>()\n\n/**\n * Weak maps for saving pending state on composition stage.\n */\n\nexport const EDITOR_TO_SCHEDULE_FLUSH: WeakMap<Editor, () => void> =\n new WeakMap()\n\nexport const EDITOR_TO_PENDING_INSERTION_MARKS: WeakMap<\n Editor,\n Partial<Text> | null\n> = new WeakMap()\n\nexport const EDITOR_TO_USER_MARKS: WeakMap<Editor, Partial<Text> | null> =\n new WeakMap()\n\n/**\n * Android input handling specific weak-maps\n */\n\nexport const EDITOR_TO_PENDING_DIFFS: WeakMap<Editor, TextDiff[]> =\n new WeakMap()\n\nexport const EDITOR_TO_PENDING_ACTION: WeakMap<Editor, Action | null> =\n new WeakMap()\n\nexport const EDITOR_TO_PENDING_SELECTION: WeakMap<Editor, Range | null> =\n new WeakMap()\n\nexport const EDITOR_TO_FORCE_RENDER: WeakMap<Editor, () => void> = new WeakMap()\n\n/**\n * Symbols.\n */\n\nexport const PLACEHOLDER_SYMBOL = Symbol('placeholder') as unknown as string\nexport const MARK_PLACEHOLDER_SYMBOL = Symbol(\n 'mark-placeholder'\n) as unknown as string\n","/**\n * Types.\n */\n\n// COMPAT: This is required to prevent TypeScript aliases from doing some very\n// weird things for Slate's types with the same name as globals. (2019/11/27)\n// https://github.com/microsoft/TypeScript/issues/35002\nimport DOMNode = globalThis.Node\nimport DOMComment = globalThis.Comment\nimport DOMElement = globalThis.Element\nimport DOMText = globalThis.Text\nimport DOMRange = globalThis.Range\nimport DOMSelection = globalThis.Selection\nimport DOMStaticRange = globalThis.StaticRange\nimport { ReactEditor } from '../plugin/react-editor'\n\nexport {\n DOMNode,\n DOMComment,\n DOMElement,\n DOMText,\n DOMRange,\n DOMSelection,\n DOMStaticRange,\n}\n\ndeclare global {\n interface Window {\n Selection: (typeof Selection)['constructor']\n DataTransfer: (typeof DataTransfer)['constructor']\n Node: (typeof Node)['constructor']\n }\n}\n\nexport type DOMPoint = [Node, number]\n\n/**\n * Returns the host window of a DOM node\n */\n\nexport const getDefaultView = (value: any): Window | null => {\n return (\n (value && value.ownerDocument && value.ownerDocument.defaultView) || null\n )\n}\n\n/**\n * Check if a DOM node is a comment node.\n */\n\nexport const isDOMComment = (value: any): value is DOMComment => {\n return isDOMNode(value) && value.nodeType === 8\n}\n\n/**\n * Check if a DOM node is an element node.\n */\n\nexport const isDOMElement = (value: any): value is DOMElement => {\n return isDOMNode(value) && value.nodeType === 1\n}\n\n/**\n * Check if a value is a DOM node.\n */\n\nexport const isDOMNode = (value: any): value is DOMNode => {\n const window = getDefaultView(value)\n return !!window && value instanceof window.Node\n}\n\n/**\n * Check if a value is a DOM selection.\n */\n\nexport const isDOMSelection = (value: any): value is DOMSelection => {\n const window = value && value.anchorNode && getDefaultView(value.anchorNode)\n return !!window && value instanceof window.Selection\n}\n\n/**\n * Check if a DOM node is an element node.\n */\n\nexport const isDOMText = (value: any): value is DOMText => {\n return isDOMNode(value) && value.nodeType === 3\n}\n\n/**\n * Checks whether a paste event is a plaintext-only event.\n */\n\nexport const isPlainTextOnlyPaste = (event: ClipboardEvent) => {\n return (\n event.clipboardData &&\n event.clipboardData.getData('text/plain') !== '' &&\n event.clipboardData.types.length === 1\n )\n}\n\n/**\n * Normalize a DOM point so that it always refers to a text node.\n */\n\nexport const normalizeDOMPoint = (domPoint: DOMPoint): DOMPoint => {\n let [node, offset] = domPoint\n\n // If it's an element node, its offset refers to the index of its children\n // including comment nodes, so try to find the right text child node.\n if (isDOMElement(node) && node.childNodes.length) {\n let isLast = offset === node.childNodes.length\n let index = isLast ? offset - 1 : offset\n ;[node, index] = getEditableChildAndIndex(\n node,\n index,\n isLast ? 'backward' : 'forward'\n )\n // If the editable child found is in front of input offset, we instead seek to its end\n isLast = index < offset\n\n // If the node has children, traverse until we have a leaf node. Leaf nodes\n // can be either text nodes, or other void DOM nodes.\n while (isDOMElement(node) && node.childNodes.length) {\n const i = isLast ? node.childNodes.length - 1 : 0\n node = getEditableChild(node, i, isLast ? 'backward' : 'forward')\n }\n\n // Determine the new offset inside the text node.\n offset = isLast && node.textContent != null ? node.textContent.length : 0\n }\n\n // Return the node and offset.\n return [node, offset]\n}\n\n/**\n * Determines whether the active element is nested within a shadowRoot\n */\n\nexport const hasShadowRoot = (node: Node | null) => {\n let parent = node && node.parentNode\n while (parent) {\n if (parent.toString() === '[object ShadowRoot]') {\n return true\n }\n parent = parent.parentNode\n }\n return false\n}\n\n/**\n * Get the nearest editable child and index at `index` in a `parent`, preferring\n * `direction`.\n */\n\nexport const getEditableChildAndIndex = (\n parent: DOMElement,\n index: number,\n direction: 'forward' | 'backward'\n): [DOMNode, number] => {\n const { childNodes } = parent\n let child = childNodes[index]\n let i = index\n let triedForward = false\n let triedBackward = false\n\n // While the child is a comment node, or an element node with no children,\n // keep iterating to find a sibling non-void, non-comment node.\n while (\n isDOMComment(child) ||\n (isDOMElement(child) && child.childNodes.length === 0) ||\n (isDOMElement(child) && child.getAttribute('contenteditable') === 'false')\n ) {\n if (triedForward && triedBackward) {\n break\n }\n\n if (i >= childNodes.length) {\n triedForward = true\n i = index - 1\n direction = 'backward'\n continue\n }\n\n if (i < 0) {\n triedBackward = true\n i = index + 1\n direction = 'forward'\n continue\n }\n\n child = childNodes[i]\n index = i\n i += direction === 'forward' ? 1 : -1\n }\n\n return [child, index]\n}\n\n/**\n * Get the nearest editable child at `index` in a `parent`, preferring\n * `direction`.\n */\n\nexport const getEditableChild = (\n parent: DOMElement,\n index: number,\n direction: 'forward' | 'backward'\n): DOMNode => {\n const [child] = getEditableChildAndIndex(parent, index, direction)\n return child\n}\n\n/**\n * Get a plaintext representation of the content of a node, accounting for block\n * elements which get a newline appended.\n *\n * The domNode must be attached to the DOM.\n */\n\nexport const getPlainText = (domNode: DOMNode) => {\n let text = ''\n\n if (isDOMText(domNode) && domNode.nodeValue) {\n return domNode.nodeValue\n }\n\n if (isDOMElement(domNode)) {\n for (const childNode of Array.from(domNode.childNodes)) {\n text += getPlainText(childNode)\n }\n\n const display = getComputedStyle(domNode).getPropertyValue('display')\n\n if (display === 'block' || display === 'list' || domNode.tagName === 'BR') {\n text += '\\n'\n }\n }\n\n return text\n}\n\n/**\n * Get x-slate-fragment attribute from data-slate-fragment\n */\nconst catchSlateFragment = /data-slate-fragment=\"(.+?)\"/m\nexport const getSlateFragmentAttribute = (\n dataTransfer: DataTransfer\n): string | void => {\n const htmlData = dataTransfer.getData('text/html')\n const [, fragment] = htmlData.match(catchSlateFragment) || []\n return fragment\n}\n\n/**\n * Get the x-slate-fragment attribute that exist in text/html data\n * and append it to the DataTransfer object\n */\nexport const getClipboardData = (\n dataTransfer: DataTransfer,\n clipboardFormatKey = 'x-slate-fragment'\n): DataTransfer => {\n if (!dataTransfer.getData(`application/${clipboardFormatKey}`)) {\n const fragment = getSlateFragmentAttribute(dataTransfer)\n if (fragment) {\n const clipboardData = new DataTransfer()\n dataTransfer.types.forEach(type => {\n clipboardData.setData(type, dataTransfer.getData(type))\n })\n clipboardData.setData(`application/${clipboardFormatKey}`, fragment)\n return clipboardData\n }\n }\n return dataTransfer\n}\n\n/**\n * Check whether a mutation originates from a editable element inside the editor.\n */\n\nexport const isTrackedMutation = (\n editor: ReactEditor,\n mutation: MutationRecord,\n batch: MutationRecord[]\n): boolean => {\n const { target } = mutation\n if (isDOMElement(target) && target.matches('[contentEditable=\"false\"]')) {\n return false\n }\n\n const { document } = ReactEditor.getWindow(editor)\n if (document.contains(target)) {\n return ReactEditor.hasDOMNode(editor, target, { editable: true })\n }\n\n const parentMutation = batch.find(({ addedNodes, removedNodes }) => {\n for (const node of addedNodes) {\n if (node === target || node.contains(target)) {\n return true\n }\n }\n\n for (const node of removedNodes) {\n if (node === target || node.contains(target)) {\n return true\n }\n }\n })\n\n if (!parentMutation || parentMutation === mutation) {\n return false\n }\n\n // Target add/remove is tracked. Track the mutation if we track the parent mutation.\n return isTrackedMutation(editor, parentMutation, batch)\n}\n","/**\n * An auto-incrementing identifier for keys.\n */\n\nlet n = 0\n\n/**\n * A class that keeps track of a key string. We use a full class here because we\n * want to be able to use them as keys in `WeakMap` objects.\n */\n\nexport class Key {\n id: string\n\n constructor() {\n this.id = `${n++}`\n }\n}\n","import {\n BaseEditor,\n Editor,\n Element,\n Node,\n Path,\n Point,\n Range,\n Scrubber,\n Transforms,\n} from 'slate'\nimport { TextDiff } from '../utils/diff-text'\nimport {\n DOMElement,\n DOMNode,\n DOMPoint,\n DOMRange,\n DOMSelection,\n DOMStaticRange,\n DOMText,\n hasShadowRoot,\n isDOMElement,\n isDOMNode,\n isDOMSelection,\n normalizeDOMPoint,\n} from '../utils/dom'\nimport { IS_ANDROID, IS_CHROME, IS_FIREFOX } from '../utils/environment'\n\nimport { Key } from '../utils/key'\nimport {\n EDITOR_TO_ELEMENT,\n EDITOR_TO_KEY_TO_ELEMENT,\n EDITOR_TO_PENDING_DIFFS,\n EDITOR_TO_SCHEDULE_FLUSH,\n EDITOR_TO_WINDOW,\n ELEMENT_TO_NODE,\n IS_COMPOSING,\n IS_FOCUSED,\n IS_READ_ONLY,\n NODE_TO_INDEX,\n NODE_TO_KEY,\n NODE_TO_PARENT,\n} from '../utils/weak-maps'\n\n/**\n * A React and DOM-specific version of the `Editor` interface.\n */\n\nexport interface ReactEditor extends BaseEditor {\n hasEditableTarget: (\n editor: ReactEditor,\n target: EventTarget | null\n ) => target is DOMNode\n hasRange: (editor: ReactEditor, range: Range) => boolean\n hasSelectableTarget: (\n editor: ReactEditor,\n target: EventTarget | null\n ) => boolean\n hasTarget: (\n editor: ReactEditor,\n target: EventTarget | null\n ) => target is DOMNode\n insertData: (data: DataTransfer) => void\n insertFragmentData: (data: DataTransfer) => boolean\n insertTextData: (data: DataTransfer) => boolean\n isTargetInsideNonReadonlyVoid: (\n editor: ReactEditor,\n target: EventTarget | null\n ) => boolean\n setFragmentData: (\n data: DataTransfer,\n originEvent?: 'drag' | 'copy' | 'cut'\n ) => void\n}\n\nexport interface ReactEditorInterface {\n /**\n * Experimental and android specific: Get pending diffs\n */\n androidPendingDiffs: (editor: Editor) => TextDiff[] | undefined\n\n /**\n * Experimental and android specific: Flush all pending diffs and cancel composition at the next possible time.\n */\n androidScheduleFlush: (editor: Editor) => void\n\n /**\n * Blur the editor.\n */\n blur: (editor: ReactEditor) => void\n\n /**\n * Deselect the editor.\n */\n deselect: (editor: ReactEditor) => void\n\n /**\n * Find the DOM node that implements DocumentOrShadowRoot for the editor.\n */\n findDocumentOrShadowRoot: (editor: ReactEditor) => Document | ShadowRoot\n\n /**\n * Get the target range from a DOM `event`.\n */\n findEventRange: (editor: ReactEditor, event: any) => Range\n\n /**\n * Find a key for a Slate node.\n */\n findKey: (editor: ReactEditor, node: Node) => Key\n\n /**\n * Find the path of Slate node.\n */\n findPath: (editor: ReactEditor, node: Node) => Path\n\n /**\n * Focus the editor.\n */\n focus: (editor: ReactEditor, options?: { retries: number }) => void\n\n /**\n * Return the host window of the current editor.\n */\n getWindow: (editor: ReactEditor) => Window\n\n /**\n * Check if a DOM node is within the editor.\n */\n hasDOMNode: (\n editor: ReactEditor,\n target: DOMNode,\n options?: { editable?: boolean }\n ) => boolean\n\n /**\n * Check if the target is editable and in the editor.\n */\n hasEditableTarget: (\n editor: ReactEditor,\n target: EventTarget | null\n ) => target is DOMNode\n\n /**\n *\n */\n hasRange: (editor: ReactEditor, range: Range) => boolean\n\n /**\n * Check if the target can be selectable\n */\n hasSelectableTarget: (\n editor: ReactEditor,\n target: EventTarget | null\n ) => boolean\n\n /**\n * Check if the target is in the editor.\n */\n hasTarget: (\n editor: ReactEditor,\n target: EventTarget | null\n ) => target is DOMNode\n\n /**\n * Insert data from a `DataTransfer` into the editor.\n */\n insertData: (editor: ReactEditor, data: DataTransfer) => void\n\n /**\n * Insert fragment data from a `DataTransfer` into the editor.\n */\n insertFragmentData: (editor: ReactEditor, data: DataTransfer) => boolean\n\n /**\n * Insert text data from a `DataTransfer` into the editor.\n */\n insertTextData: (editor: ReactEditor, data: DataTransfer) => boolean\n\n /**\n * Check if the user is currently composing inside the editor.\n */\n isComposing: (editor: ReactEditor) => boolean\n\n /**\n * Check if the editor is focused.\n */\n isFocused: (editor: ReactEditor) => boolean\n\n /**\n * Check if the editor is in read-only mode.\n */\n isReadOnly: (editor: ReactEditor) => boolean\n\n /**\n * Check if the target is inside void and in an non-readonly editor.\n */\n isTargetInsideNonReadonlyVoid: (\n editor: ReactEditor,\n target: EventTarget | null\n ) => boolean\n\n /**\n * Sets data from the currently selected fragment on a `DataTransfer`.\n */\n setFragmentData: (\n editor: ReactEditor,\n data: DataTransfer,\n originEvent?: 'drag' | 'copy' | 'cut'\n ) => void\n\n /**\n * Find the native DOM element from a Slate node.\n */\n toDOMNode: (editor: ReactEditor, node: Node) => HTMLElement\n\n /**\n * Find a native DOM selection point from a Slate point.\n */\n toDOMPoint: (editor: ReactEditor, point: Point) => DOMPoint\n\n /**\n * Find a native DOM range from a Slate `range`.\n *\n * Notice: the returned range will always be ordinal regardless of the direction of Slate `range` due to DOM API limit.\n *\n * there is no way to create a reverse DOM Range using Range.setStart/setEnd\n * according to https://dom.spec.whatwg.org/#concept-range-bp-set.\n */\n toDOMRange: (editor: ReactEditor, range: Range) => DOMRange\n\n /**\n * Find a Slate node from a native DOM `element`.\n */\n toSlateNode: (editor: ReactEditor, domNode: DOMNode) => Node\n\n /**\n * Find a Slate point from a DOM selection's `domNode` and `domOffset`.\n */\n toSlatePoint: <T extends boolean>(\n editor: ReactEditor,\n domPoint: DOMPoint,\n options: {\n exactMatch: boolean\n suppressThrow: T\n }\n ) => T extends true ? Point | null : Point\n\n /**\n * Find a Slate range from a DOM range or selection.\n */\n toSlateRange: <T extends boolean>(\n editor: ReactEditor,\n domRange: DOMRange | DOMStaticRange | DOMSelection,\n options: {\n exactMatch: boolean\n suppressThrow: T\n }\n ) => T extends true ? Range | null : Range\n}\n\n// eslint-disable-next-line no-redeclare\nexport const ReactEditor: ReactEditorInterface = {\n androidPendingDiffs: editor => EDITOR_TO_PENDING_DIFFS.get(editor),\n\n androidScheduleFlush: editor => {\n EDITOR_TO_SCHEDULE_FLUSH.get(editor)?.()\n },\n\n blur: editor => {\n const el = ReactEditor.toDOMNode(editor, editor)\n const root = ReactEditor.findDocumentOrShadowRoot(editor)\n IS_FOCUSED.set(editor, false)\n\n if (root.activeElement === el) {\n el.blur()\n }\n },\n\n deselect: editor => {\n const { selection } = editor\n const root = ReactEditor.findDocumentOrShadowRoot(editor)\n const domSelection = root.getSelection()\n\n if (domSelection && domSelection.rangeCount > 0) {\n domSelection.removeAllRanges()\n }\n\n if (selection) {\n Transforms.deselect(editor)\n }\n },\n\n findDocumentOrShadowRoot: editor => {\n const el = ReactEditor.toDOMNode(editor, editor)\n const root = el.getRootNode()\n\n if (\n (root instanceof Document || root instanceof ShadowRoot) &&\n root.getSelection != null\n ) {\n return root\n }\n\n return el.ownerDocument\n },\n\n findEventRange: (editor, event) => {\n if ('nativeEvent' in event) {\n event = event.nativeEvent\n }\n\n const { clientX: x, clientY: y, target } = event\n\n if (x == null || y == null) {\n throw new Error(`Cannot resolve a Slate range from a DOM event: ${event}`)\n }\n\n const node = ReactEditor.toSlateNode(editor, event.target)\n const path = ReactEditor.findPath(editor, node)\n\n // If the drop target is inside a void node, move it into either the\n // next or previous node, depending on which side the `x` and `y`\n // coordinates are closest to.\n if (Element.isElement(node) && Editor.isVoid(editor, node)) {\n const rect = target.getBoundingClientRect()\n const isPrev = editor.isInline(node)\n ? x - rect.left < rect.left + rect.width - x\n : y - rect.top < rect.top + rect.height - y\n\n const edge = Editor.point(editor, path, {\n edge: isPrev ? 'start' : 'end',\n })\n const point = isPrev\n ? Editor.before(editor, edge)\n : Editor.after(editor, edge)\n\n if (point) {\n const range = Editor.range(editor, point)\n return range\n }\n }\n\n // Else resolve a range from the caret position where the drop occured.\n let domRange\n const { document } = ReactEditor.getWindow(editor)\n\n // COMPAT: In Firefox, `caretRangeFromPoint` doesn't exist. (2016/07/25)\n if (document.caretRangeFromPoint) {\n domRange = document.caretRangeFromPoint(x, y)\n } else {\n const position = document.caretPositionFromPoint(x, y)\n\n if (position) {\n domRange = document.createRange()\n domRange.setStart(position.offsetNode, position.offset)\n domRange.setEnd(position.offsetNode, position.offset)\n }\n }\n\n if (!domRange) {\n throw new Error(`Cannot resolve a Slate range from a DOM event: ${event}`)\n }\n\n // Resolve a Slate range from the DOM range.\n const range = ReactEditor.toSlateRange(editor, domRange, {\n exactMatch: false,\n suppressThrow: false,\n })\n return range\n },\n\n findKey: (editor, node) => {\n let key = NODE_TO_KEY.get(node)\n\n if (!key) {\n key = new Key()\n NODE_TO_KEY.set(node, key)\n }\n\n return key\n },\n\n findPath: (editor, node) => {\n const path: Path = []\n let child = node\n\n while (true) {\n const parent = NODE_TO_PARENT.get(child)\n\n if (parent == null) {\n if (Editor.isEditor(child)) {\n return path\n } else {\n break\n }\n }\n\n const i = NODE_TO_INDEX.get(child)\n\n if (i == null) {\n break\n }\n\n path.unshift(i)\n child = parent\n }\n\n throw new Error(\n `Unable to find the path for Slate node: ${Scrubber.stringify(node)}`\n )\n },\n\n focus: (editor, options = { retries: 5 }) => {\n // Return if already focused\n if (IS_FOCUSED.get(editor)) {\n return\n }\n\n // Retry setting focus if the editor has pending operations.\n // The DOM (selection) is unstable while changes are applied.\n // Retry until retries are exhausted or editor is focused.\n if (options.retries <= 0) {\n throw new Error(\n 'Could not set focus, editor seems stuck with pending operations'\n )\n }\n if (editor.operations.length > 0) {\n setTimeout(() => {\n ReactEditor.focus(editor, { retries: options.retries - 1 })\n }, 10)\n return\n }\n\n const el = ReactEditor.toDOMNode(editor, editor)\n const root = ReactEditor.findDocumentOrShadowRoot(editor)\n if (root.activeElement !== el) {\n // Ensure that the DOM selection state is set to the editor's selection\n if (editor.selection && root instanceof Document) {\n const domSelection = root.getSelection()\n const domRange = ReactEditor.toDOMRange(editor, editor.selection)\n domSelection?.removeAllRanges()\n domSelection?.addRange(domRange)\n }\n // Create a new selection in the top of the document if missing\n if (!editor.selection) {\n Transforms.select(editor, Editor.start(editor, []))\n editor.onChange()\n }\n // IS_FOCUSED should be set before calling el.focus() to ensure that\n // FocusedContext is updated to the correct value\n IS_FOCUSED.set(editor, true)\n el.focus({ preventScroll: true })\n }\n },\n\n getWindow: editor => {\n const window = EDITOR_TO_WINDOW.get(editor)\n if (!window) {\n throw new Error('Unable to find a host window element for this editor')\n }\n return window\n },\n\n hasDOMNode: (editor, target, options = {}) => {\n const { editable = false } = options\n const editorEl = ReactEditor.toDOMNode(editor, editor)\n let targetEl\n\n // COMPAT: In Firefox, reading `target.nodeType` will throw an error if\n // target is originating from an internal \"restricted\" element (e.g. a\n // stepper arrow on a number input). (2018/05/04)\n // https://github.com/ianstormtaylor/slate/issues/1819\n try {\n targetEl = (\n isDOMElement(target) ? target : target.parentElement\n ) as HTMLElement\n } catch (err) {\n if (\n err instanceof Error &&\n !err.message.includes('Permission denied to access property \"nodeType\"')\n ) {\n throw err\n }\n }\n\n if (!targetEl) {\n return false\n }\n\n return (\n targetEl.closest(`[data-slate-editor]`) === editorEl &&\n (!editable || targetEl.isContentEditable\n ? true\n : (typeof targetEl.isContentEditable === 'boolean' && // isContentEditable exists only on HTMLElement, and on other nodes it will be undefined\n // this is the core logic that lets you know you got the right editor.selection instead of null when editor is contenteditable=\"false\"(readOnly)\n targetEl.closest('[contenteditable=\"false\"]') === editorEl) ||\n !!targetEl.getAttribute('data-slate-zero-width'))\n )\n },\n\n hasEditableTarget: (editor, target): target is DOMNode =>\n isDOMNode(target) &&\n ReactEditor.hasDOMNode(editor, target, { editable: true }),\n\n hasRange: (editor, range) => {\n const { anchor, focus } = range\n return (\n Editor.hasPath(editor, anchor.path) && Editor.hasPath(editor, focus.path)\n )\n },\n\n hasSelectableTarget: (editor, target) =>\n ReactEditor.hasEditableTarget(editor, target) ||\n ReactEditor.isTargetInsideNonReadonlyVoid(editor, target),\n\n hasTarget: (editor, target): target is DOMNode =>\n isDOMNode(target) && ReactEditor.hasDOMNode(editor, target),\n\n insertData: (editor, data) => {\n editor.insertData(data)\n },\n\n insertFragmentData: (editor, data) => editor.insertFragmentData(data),\n\n insertTextData: (editor, data) => editor.insertTextData(data),\n\n isComposing: editor => {\n return !!IS_COMPOSING.get(editor)\n },\n\n isFocused: editor => !!IS_FOCUSED.get(editor),\n\n isReadOnly: editor => !!IS_READ_ONLY.get(editor),\n\n isTargetInsideNonReadonlyVoid: (editor, target) => {\n if (IS_READ_ONLY.get(editor)) return false\n\n const slateNode =\n ReactEditor.hasTarget(editor, target) &&\n ReactEditor.toSlateNode(editor, target)\n return Element.isElement(slateNode) && Editor.isVoid(editor, slateNode)\n },\n\n setFragmentData: (editor, data, originEvent) =>\n editor.setFragmentData(data, originEvent),\n\n toDOMNode: (editor, node) => {\n const KEY_TO_ELEMENT = EDITOR_TO_KEY_TO_ELEMENT.get(editor)\n const domNode = Editor.isEditor(node)\n ? EDITOR_TO_ELEMENT.get(editor)\n : KEY_TO_ELEMENT?.get(ReactEditor.findKey(editor, node))\n\n if (!domNode) {\n throw new Error(\n `Cannot resolve a DOM node from Slate node: ${Scrubber.stringify(node)}`\n )\n }\n\n return domNode\n },\n\n toDOMPoint: (editor, point) => {\n const [node] = Editor.node(editor, point.path)\n const el = ReactEditor.toDOMNode(editor, node)\n let domPoint: DOMPoint | undefined\n\n // If we're inside a void node, force the offset to 0, otherwise the zero\n // width spacing character will result in an incorrect offset of 1\n if (Editor.void(editor, { at: point })) {\n point = { path: point.path, offset: 0 }\n }\n\n // For each leaf, we need to isolate its content, which means filtering\n // to its direct text and zero-width spans. (We have to filter out any\n // other siblings that may have been rendered alongside them.)\n const selector = `[data-slate-string], [data-slate-zero-width]`\n const texts = Array.from(el.querySelectorAll(selector))\n let start = 0\n\n for (let i = 0; i < texts.length; i++) {\n const text = texts[i]\n const domNode = text.childNodes[0] as HTMLElement\n\n if (domNode == null || domNode.textContent == null) {\n continue\n }\n\n const { length } = domNode.textContent\n const attr = text.getAttribute('data-slate-length')\n const trueLength = attr == null ? length : parseInt(attr, 10)\n const end = start + trueLength\n\n // Prefer putting the selection inside the mark placeholder to ensure\n // composed text is displayed with the correct marks.\n const nextText = texts[i + 1]\n if (\n point.offset === end &&\n nextText?.hasAttribute('data-slate-mark-placeholder')\n ) {\n const domText = nextText.childNodes[0]\n\n domPoint = [\n // COMPAT: If we don't explicity set the dom point to be on the actual\n // dom text element, chrome will put the selection behind the actual dom\n // text element, causing domRange.getBoundingClientRect() calls on a collapsed\n // selection to return incorrect zero values (https://bugs.chromium.org/p/chromium/issues/detail?id=435438)\n // which will cause issues when scrolling to it.\n domText instanceof DOMText ? domText : nextText,\n nextText.textContent?.startsWith('\\uFEFF') ? 1 : 0,\n ]\n break\n }\n\n if (point.offset <= end) {\n const offset = Math.min(length, Math.max(0, point.offset - start))\n domPoint = [domNode, offset]\n break\n }\n\n start = end\n }\n\n if (!domPoint) {\n throw new Error(\n `Cannot resolve a DOM point from Slate point: ${Scrubber.stringify(\n point\n )}`\n )\n }\n\n return domPoint\n },\n\n toDOMRange: (editor, range) => {\n const { anchor, focus } = range\n const isBackward = Range.isBackward(range)\n const domAnchor = ReactEditor.toDOMPoint(editor, anchor)\n const domFocus = Range.isCollapsed(range)\n ? domAnchor\n : ReactEditor.toDOMPoint(editor, focus)\n\n const window = ReactEditor.getWindow(editor)\n const domRange = window.document.createRange()\n const [startNode, startOffset] = isBackward ? domFocus : domAnchor\n const [endNode, endOffset] = isBackward ? domAnchor : domFocus\n\n // A slate Point at zero-width Leaf always has an offset of 0 but a native DOM selection at\n // zero-width node has an offset of 1 so we have to check if we are in a zero-width node and\n // adjust the offset accordingly.\n const startEl = (\n isDOMElement(startNode) ? startNode : startNode.parentElement\n ) as HTMLElement\n const isStartAtZeroWidth = !!startEl.getAttribute('data-slate-zero-width')\n const endEl = (\n isDOMElement(endNode) ? endNode : endNode.parentElement\n ) as HTMLElement\n const isEndAtZeroWidth = !!endEl.getAttribute('data-slate-zero-width')\n\n domRange.setStart(startNode, isStartAtZeroWidth ? 1 : startOffset)\n domRange.setEnd(endNode, isEndAtZeroWidth ? 1 : endOffset)\n return domRange\n },\n\n toSlateNode: (editor, domNode) => {\n let domEl = isDOMElement(domNode) ? domNode : domNode.parentElement\n\n if (domEl && !domEl.hasAttribute('data-slate-node')) {\n domEl = domEl.closest(`[data-slate-node]`)\n }\n\n const node = domEl ? ELEMENT_TO_NODE.get(domEl as HTMLElement) : null\n\n if (!node) {\n throw new Error(`Cannot resolve a Slate node from DOM node: ${domEl}`)\n }\n\n return node\n },\n\n toSlatePoint: <T extends boolean>(\n editor: ReactEditor,\n domPoint: DOMPoint,\n options: {\n exactMatch: boolean\n suppressThrow: T\n }\n ): T extends true ? Point | null : Point => {\n const { exactMatch, suppressThrow } = options\n const [nearestNode, nearestOffset] = exactMatch\n ? domPoint\n : normalizeDOMPoint(domPoint)\n const parentNode = nearestNode.parentNode as DOMElement\n let textNode: DOMElement | null = null\n let offset = 0\n\n if (parentNode) {\n const editorEl = ReactEditor.toDOMNode(editor, editor)\n const potentialVoidNode = parentNode.closest('[data-slate-void=\"true\"]')\n // Need to ensure that the closest void node is actually a void node\n // within this editor, and not a void node within some parent editor. This can happen\n // if this editor is within a void node of another editor (\"nested editors\", like in\n // the \"Editable Voids\" example on the docs site).\n const voidNode =\n potentialVoidNode && editorEl.contains(potentialVoidNode)\n ? potentialVoidNode\n : null\n let leafNode = parentNode.closest('[data-slate-leaf]')\n let domNode: DOMElement | null = null\n\n // Calculate how far into the text node the `nearestNode` is, so that we\n // can determine what the offset relative to the text node is.\n if (leafNode) {\n textNode = leafNode.closest('[data-slate-node=\"text\"]')\n\n if (textNode) {\n const window = ReactEditor.getWindow(editor)\n const range = window.document.createRange()\n range.setStart(textNode, 0)\n range.setEnd(nearestNode, nearestOffset)\n\n const contents = range.cloneContents()\n const removals = [\n ...Array.prototype.slice.call(\n contents.querySelectorAll('[data-slate-zero-width]')\n ),\n ...Array.prototype.slice.call(\n contents.querySelectorAll('[contenteditable=false]')\n ),\n ]\n\n removals.forEach(el => {\n // COMPAT: While composing at the start of a text node, some keyboards put\n // the text content inside the zero width space.\n if (\n IS_ANDROID &&\n !exactMatch &&\n el.hasAttribute('data-slate-zero-width') &&\n el.textContent.length > 0 &&\n el.textContext !== '\\uFEFF'\n ) {\n if (el.textContent.startsWith('\\uFEFF')) {\n el.textContent = el.textContent.slice(1)\n }\n\n return\n }\n\n el!.parentNode!.removeChild(el)\n })\n\n // COMPAT: Edge has a bug where Range.prototype.toString() will\n // convert \\n into \\r\\n. The bug causes a loop when slate-react\n // attempts to reposition its cursor to match the native position. Use\n // textContent.length instead.\n // https://developer.microsoft.com/en-us/microsoft-edge/platform/issues/10291116/\n offset = contents.textContent!.length\n domNode = textNode\n }\n } else if (voidNode) {\n // For void nodes, the element with the offset key will be a cousin, not an\n // ancestor, so find it by going down from the nearest void parent and taking the\n // first one that isn't inside a nested editor.\n const leafNodes = voidNode.querySelectorAll('[data-slate-leaf]')\n for (let index = 0; index < leafNodes.length; index++) {\n const current = leafNodes[index]\n if (ReactEditor.hasDOMNode(editor, current)) {\n leafNode = current\n break\n }\n }\n\n // COMPAT: In read-only editors the leaf is not rendered.\n if (!leafNode) {\n offset = 1\n } else {\n textNode = leafNode.closest('[data-slate-node=\"text\"]')!\n domNode = leafNode\n offset = domNode.textContent!.length\n domNode.querySelectorAll('[data-slate-zero-width]').forEach(el => {\n offset -= el.textContent!.length\n })\n }\n }\n\n if (\n domNode &&\n offset === domNode.textContent!.length &&\n // COMPAT: Android IMEs might remove the zero width space while composing,\n // and we don't add it for line-breaks.\n IS_ANDROID &&\n domNode.getAttribute('data-slate-zero-width') === 'z' &&\n domNode.textContent?.startsWith('\\uFEFF') &&\n // COMPAT: If the parent node is a Slate zero-width space, editor is\n // because the text node should have no characters. However, during IME\n // composition the ASCII characters will be prepended to the zero-width\n // space, so subtract 1 from the offset to account for the zero-width\n // space character.\n (parentNode.hasAttribute('data-slate-zero-width') ||\n // COMPAT: In Firefox, `range.cloneContents()` returns an extra trailing '\\n'\n // when the document ends with a new-line character. This results in the offset\n // length being off by one, so we need to subtract one to account for this.\n (IS_FIREFOX && domNode.textContent?.endsWith('\\n\\n')))\n ) {\n offset--\n }\n }\n\n if (IS_ANDROID && !textNode && !exactMatch) {\n const node = parentNode.hasAttribute('data-slate-node')\n ? parentNode\n : parentNode.closest('[data-slate-node]')\n\n if (node && ReactEditor.hasDOMNode(editor, node, { editable: true })) {\n const slateNode = ReactEditor.toSlateNode(editor, node)\n let { path, offset } = Editor.start(\n editor,\n ReactEditor.findPath(editor, slateNode)\n )\n\n if (!node.querySelector('[data-slate-leaf]')) {\n offset = nearestOffset\n }\n\n return { path, offset } as T extends true ? Point | null : Point\n }\n }\n\n if (!textNode) {\n if (suppressThrow) {\n return null as T extends true ? Point | null : Point\n }\n throw new Error(\n `Cannot resolve a Slate point from DOM point: ${domPoint}`\n )\n }\n\n // COMPAT: If someone is clicking from one Slate editor into another,\n // the select event fires twice, once for the old editor's `element`\n // first, and then afterwards for the correct `element`. (2017/03/03)\n const slateNode = ReactEditor.toSlateNode(editor, textNode!)\n const path = ReactEditor.findPath(editor, slateNode)\n return { path, offset } as T extends true ? Point | null : Point\n },\n\n toSlateRange: <T extends boolean>(\n editor: ReactEditor,\n domRange: DOMRange | DOMStaticRange | DOMSelection,\n options: {\n exactMatch: boolean\n suppressThrow: T\n }\n ): T extends true ? Range | null : Range => {\n const { exactMatch, suppressThrow } = options\n const el = isDOMSelection(domRange)\n ? domRange.anchorNode\n : domRange.startContainer\n let anchorNode\n let anchorOffset\n let focusNode\n let focusOffset\n let isCollapsed\n\n if (el) {\n if (isDOMSelection(domRange)) {\n // COMPAT: In firefox the normal seletion way does not work\n // (https://github.com/ianstormtaylor/slate/pull/5486#issue-1820720223)\n if (IS_FIREFOX && domRange.rangeCount > 1) {\n focusNode = domRange.focusNode // Focus node works fine\n const firstRange = domRange.getRangeAt(0)\n const lastRange = domRange.getRangeAt(domRange.rangeCount - 1)\n\n // Here we are in the contenteditable mode of a table in firefox\n if (\n focusNode instanceof HTMLTableRowElement &&\n firstRange.startContainer instanceof HTMLTableRowElement &&\n lastRange.startContainer instanceof HTMLTableRowElement\n ) {\n // HTMLElement, becouse Element is a slate element\n function getLastChildren(element: HTMLElement): HTMLElement {\n if (element.childElementCount > 0) {\n return getLastChildren(<HTMLElement>element.children[0])\n } else {\n return element\n }\n }\n\n const firstNodeRow = <HTMLTableRowElement>firstRange.startContainer\n const lastNodeRow = <HTMLTableRowElement>lastRange.startContainer\n\n // This should never fail as \"The HTMLElement interface represents any HTML element.\"\n const firstNode = getLastChildren(\n <HTMLElement>firstNodeRow.children[firstRange.startOffset]\n )\n const lastNode = getLastChildren(\n <HTMLElement>lastNodeRow.children[lastRange.startOffset]\n )\n\n // Zero, as we allways take the right one as the anchor point\n focusOffset = 0\n\n if (lastNode.childNodes.length > 0) {\n anchorNode = lastNode.childNodes[0]\n } else {\n anchorNode = lastNode\n }\n\n if (firstNode.childNodes.length > 0) {\n focusNode = firstNode.childNodes[0]\n } else {\n focusNode = firstNode\n }\n\n if (lastNode instanceof HTMLElement) {\n anchorOffset = (<HTMLElement>lastNode).innerHTML.length\n } else {\n // Fallback option\n anchorOffset = 0\n }\n } else {\n // This is the read only mode of a firefox table\n // Right to left\n if (firstRange.startContainer === focusNode) {\n anchorNode = lastRange.endContainer\n anchorOffset = lastRange.endOffset\n focusOffset = firstRange.startOffset\n } else {\n // Left to right\n anchorNode = firstRange.startContainer\n anchorOffset = firstRange.endOffset\n focusOffset = lastRange.startOffset\n }\n }\n } else {\n anchorNode = domRange.anchorNode\n anchorOffset = domRange.anchorOffset\n focusNode = domRange.focusNode\n focusOffset = domRange.focusOffset\n }\n\n // COMPAT: There's a bug in chrome that always returns `true` for\n // `isCollapsed` for a Selection that comes from a ShadowRoot.\n // (2020/08/08)\n // https://bugs.chromium.org/p/chromium/issues/detail?id=447523\n // IsCollapsed might not work in firefox, but this will\n if ((IS_CHROME && hasShadowRoot(anchorNode)) || IS_FIREFOX) {\n isCollapsed =\n domRange.anchorNode === domRange.focusNode &&\n domRange.anchorOffset === domRange.focusOffset\n } else {\n isCollapsed = domRange.isCollapsed\n }\n } else {\n anchorNode = domRange.startContainer\n anchorOffset = domRange.startOffset\n focusNode = domRange.endContainer\n focusOffset = domRange.endOffset\n isCollapsed = domRange.collapsed\n }\n }\n\n if (\n anchorNode == null ||\n focusNode == null ||\n anchorOffset == null ||\n focusOffset == null\n ) {\n throw new Error(\n `Cannot resolve a Slate range from DOM range: ${domRange}`\n )\n }\n\n // COMPAT: Firefox sometimes includes an extra \\n (rendered by TextString\n // when isTrailing is true) in the focusOffset, resulting in an invalid\n // Slate point. (2023/11/01)\n if (\n IS_FIREFOX &&\n focusNode.textContent?.endsWith('\\n\\n') &&\n focusOffset === focusNode.textContent.length\n ) {\n focusOffset--\n }\n\n // COMPAT: Triple-clicking a word in chrome will sometimes place the focus\n // inside a `contenteditable=\"false\"` DOM node following the word, which\n // will cause `toSlatePoint` to throw an error. (2023/03/07)\n if (\n 'getAttribute' in focusNode &&\n (focusNode as HTMLElement).getAttribute('contenteditable') === 'false' &&\n (focusNode as HTMLElement).getAttribute('data-slate-void') !== 'true'\n ) {\n focusNode = anchorNode\n focusOffset = anchorNode.textContent?.length || 0\n }\n\n const anchor = ReactEditor.toSlatePoint(\n editor,\n [anchorNode, anchorOffset],\n {\n exactMatch,\n suppressThrow,\n }\n )\n if (!anchor) {\n return null as T extends true ? Range | null : Range\n }\n\n const focus = isCollapsed\n ? anchor\n : ReactEditor.toSlatePoint(editor, [focusNode, focusOffset], {\n exactMatch,\n suppressThrow,\n })\n if (!focus) {\n return null as T extends true ? Range | null : Range\n }\n\n let range: Range = { anchor: anchor as Point, focus: focus as Point }\n // if the selection is a hanging range that ends in a void\n // and the DOM focus is an Element\n // (meaning that the selection ends before the element)\n // unhang the range to avoid mistakenly including the void\n if (\n Range.isExpanded(range) &&\n Range.isForward(range) &&\n isDOMElement(focusNode) &&\n Editor.void(editor, { at: range.focus, mode: 'highest' })\n ) {\n range = Editor.unhangRange(editor, range, { voids: true })\n }\n\n return range as unknown as T extends true ? Range | null : Range\n },\n}\n","import {\n Editor,\n Node,\n Operation,\n Path,\n Point,\n Range,\n Text,\n Element,\n} from 'slate'\nimport { EDITOR_TO_PENDING_DIFFS } from './weak-maps'\n\nexport type StringDiff = {\n start: number\n end: number\n text: string\n}\n\nexport type TextDiff = {\n id: number\n path: Path\n diff: StringDiff\n}\n\n/**\n * Check whether a text diff was applied in a way we can perform the pending action on /\n * recover the pending selection.\n */\nexport function verifyDiffState(editor: Editor, textDiff: TextDiff): boolean {\n const { path, diff } = textDiff\n if (!Editor.hasPath(editor, path)) {\n return false\n }\n\n const node = Node.get(editor, path)\n if (!Text.isText(node)) {\n return false\n }\n\n if (diff.start !== node.text.length || diff.text.length === 0) {\n return (\n node.text.slice(diff.start, diff.start + diff.text.length) === diff.text\n )\n }\n\n const nextPath = Path.next(path)\n if (!Editor.hasPath(editor, nextPath)) {\n return false\n }\n\n const nextNode = Node.get(editor, nextPath)\n return Text.isText(nextNode) && nextNode.text.startsWith(diff.text)\n}\n\nexport function applyStringDiff(text: string, ...diffs: StringDiff[]) {\n return diffs.reduce(\n (text, diff) =>\n text.slice(0, diff.start) + diff.text + text.slice(diff.end),\n text\n )\n}\n\nfunction longestCommonPrefixLength(str: string, another: string) {\n const length = Math.min(str.length, another.length)\n\n for (let i = 0; i < length; i++) {\n if (str.charAt(i) !== another.charAt(i)) {\n return i\n }\n }\n\n return length\n}\n\nfunction longestCommonSuffixLength(\n str: string,\n another: string,\n max: number\n): number {\n const length = Math.min(str.length, another.length, max)\n\n for (let i = 0; i < length; i++) {\n if (\n str.charAt(str.length - i - 1) !== another.charAt(another.length - i - 1)\n ) {\n return i\n }\n }\n\n return length\n}\n\n/**\n * Remove redundant changes from the diff so that it spans the minimal possible range\n */\nexport function normalizeStringDiff(targetText: string, diff: StringDiff) {\n const { start, end, text } = diff\n const removedText = targetText.slice(start, end)\n\n const prefixLength = longestCommonPrefixLength(removedText, text)\n const max = Math.min(\n removedText.length - prefixLength,\n text.length - prefixLength\n )\n const suffixLength = longestCommonSuffixLength(removedText, text, max)\n\n const normalized: StringDiff = {\n start: start + prefixLength,\n end: end - suffixLength,\n text: text.slice(prefixLength, text.length - suffixLength),\n }\n\n if (normalized.start === normalized.end && normalized.text.length === 0) {\n return null\n }\n\n return normalized\n}\n\n/**\n * Return a string diff that is equivalent to applying b after a spanning the range of\n * both changes\n */\nexport function mergeStringDiffs(\n targetText: string,\n a: StringDiff,\n b: StringDiff\n): StringDiff | null {\n const start = Math.min(a.start, b.start)\n const overlap = Math.max(\n 0,\n Math.min(a.start + a.text.length, b.end) - b.start\n )\n\n const applied = applyStringDiff(targetText, a, b)\n const sliceEnd = Math.max(\n b.start + b.text.length,\n a.start +\n a.text.length +\n (a.start + a.text.length > b.start ? b.text.length : 0) -\n overlap\n )\n\n const text = applied.slice(start, sliceEnd)\n const end = Math.max(a.end, b.end - a.text.length + (a.end - a.start))\n return normalizeStringDiff(targetText, { start, end, text })\n}\n\n/**\n * Get the slate range the text diff spans.\n */\nexport function targetRange(textDiff: TextDiff): Range {\n const { path, diff } = textDiff\n return {\n anchor: { path, offset: diff.start },\n focus: { path, offset: diff.end },\n }\n}\n\n/**\n * Normalize a 'pending point' a.k.a a point based on the dom state before applying\n * the pending diffs. Since the pending diffs might have been inserted with different\n * marks we have to 'walk' the offset from the starting position to ensure we still\n * have a valid point inside the document\n */\nexport function normalizePoint(editor: Editor, point: Point): Point | null {\n let { path, offset } = point\n if (!Editor.hasPath(editor, path)) {\n return null\n }\n\n let leaf = Node.get(editor, path)\n if (!Text.isText(leaf)) {\n return null\n }\n\n const parentBlock = Editor.above(editor, {\n match: n => Element.isElement(n) && Editor.isBlock(editor, n),\n at: path,\n })\n\n if (!parentBlock) {\n return null\n }\n\n while (offset > leaf.text.length) {\n const entry = Editor.next(editor, { at: path, match: Text.isText })\n if (!entry || !Path.isDescendant(entry[1], parentBlock[1])) {\n return null\n }\n\n offset -= leaf.text.length\n leaf = entry[0]\n path = entry[1]\n }\n\n return { path, offset }\n}\n\n/**\n * Normalize a 'pending selection' to ensure it's valid in the current document state.\n */\nexport function normalizeRange(editor: Editor, range: Range): Range | null {\n const anchor = normalizePoint(editor, range.anchor)\n if (!anchor) {\n return null\n }\n\n if (Range.isCollapsed(range)) {\n return { anchor, focus: anchor }\n }\n\n const focus = normalizePoint(editor, range.focus)\n if (!focus) {\n return null\n }\n\n return { anchor, focus }\n}\n\nexport function transformPendingPoint(\n editor: Editor,\n point: Point,\n op: Operation\n): Point | null {\n const pendingDiffs = EDITOR_TO_PENDING_DIFFS.get(editor)\n const textDiff = pendingDiffs?.find(({ path }) =>\n Path.equals(path, point.path)\n )\n\n if (!textDiff || point.offset <= textDiff.diff.start) {\n return Point.transform(point, op, { affinity: 'backward' })\n }\n\n const { diff } = textDiff\n // Point references location inside the diff => transform the point based on the location\n // the diff will be applied to and add the offset inside the diff.\n if (point.offset <= diff.start + diff.text.length) {\n const anchor = { path: point.path, offset: diff.start }\n const transformed = Point.transform(anchor, op, {\n affinity: 'backward',\n })\n\n if (!transformed) {\n return null\n }\n\n return {\n path: transformed.path,\n offset: transformed.offset + point.offset - diff.start,\n }\n }\n\n // Point references location after the diff\n const anchor = {\n path: point.path,\n offset: point.offset - diff.text.length + diff.end - diff.start,\n }\n const transformed = Point.transform(anchor, op, {\n affinity: 'backward',\n })\n if (!transformed) {\n return null\n }\n\n if (\n op.type === 'split_node' &&\n Path.equals(op.path, point.path) &&\n anchor.offset < op.position &&\n diff.start < op.position\n ) {\n return transformed\n }\n\n return {\n path: transformed.path,\n offset: transformed.offset + diff.text.length - diff.end + diff.start,\n }\n}\n\nexport function transformPendingRange(\n editor: Editor,\n range: Range,\n op: Operation\n): Range | null {\n const anchor = transformPendingPoint(editor, range.anchor, op)\n if (!anchor) {\n return null\n }\n\n if (Range.isCollapsed(range)) {\n return { anchor, focus: anchor }\n }\n\n const focus = transformPendingPoint(editor, range.focus, op)\n if (!focus) {\n return null\n }\n\n return { anchor, focus }\n}\n\nexport function transformTextDiff(\n textDiff: TextDiff,\n op: Operation\n): TextDiff | null {\n const { path, diff, id } = textDiff\n\n switch (op.type) {\n case 'insert_text': {\n if (!Path.equals(op.path, path) || op.offset >= diff.end) {\n return textDiff\n }\n\n if (op.offset <= diff.start) {\n return {\n diff: {\n start: op.text.length + diff.start,\n end: op.text.length + diff.end,\n text: diff.text,\n },\n id,\n path,\n }\n }\n\n return {\n diff: {\n start: diff.start,\n end: diff.end + op.text.length,\n text: diff.text,\n },\n id,\n path,\n }\n }\n case 'remove_text': {\n if (!Path.equals(op.path, path) || op.offset >= diff.end) {\n return textDiff\n }\n\n if (op.offset + op.text.length <= diff.start) {\n return {\n diff: {\n start: diff.start - op.text.length,\n end: diff.end - op.text.length,\n text: diff.text,\n },\n id,\n path,\n }\n }\n\n return {\n diff: {\n start: diff.start,\n end: diff.end - op.text.length,\n text: diff.text,\n },\n id,\n path,\n }\n }\n case 'split_node': {\n if (!Path.equals(op.path, path) || op.position >= diff.end) {\n return {\n diff,\n id,\n path: Path.transform(path, op, { affinity: 'backward' })!,\n }\n }\n\n if (op.position > diff.start) {\n return {\n diff: {\n start: diff.start,\n end: Math.min(op.position, diff.end),\n text: diff.text,\n },\n id,\n path,\n }\n }\n\n return {\n diff: {\n start: diff.start - op.position,\n end: diff.end - op.position,\n text: diff.text,\n },\n id,\n path: Path.transform(path, op, { affinity: 'forward' })!,\n }\n }\n case 'merge_node': {\n if (!Path.equals(op.path, path)) {\n return {\n diff,\n id,\n path: Path.transform(path, op)!,\n }\n }\n\n return {\n diff: {\n start: diff.start + op.position,\n end: diff.end + op.position,\n text: diff.text,\n },\n id,\n path: Path.transform(path, op)!,\n }\n }\n }\n\n const newPath = Path.transform(path, op)\n if (!newPath) {\n return null\n }\n\n return {\n diff,\n path: newPath,\n id,\n }\n}\n","import { DebouncedFunc } from 'lodash'\nimport { Editor, Node, Path, Point, Range, Text, Transforms } from 'slate'\nimport { ReactEditor } from '../../plugin/react-editor'\nimport {\n applyStringDiff,\n mergeStringDiffs,\n normalizePoint,\n normalizeRange,\n normalizeStringDiff,\n StringDiff,\n targetRange,\n TextDiff,\n verifyDiffState,\n} from '../../utils/diff-text'\nimport { isDOMSelection, isTrackedMutation } from '../../utils/dom'\nimport {\n EDITOR_TO_FORCE_RENDER,\n EDITOR_TO_PENDING_ACTION,\n EDITOR_TO_PENDING_DIFFS,\n EDITOR_TO_PENDING_INSERTION_MARKS,\n EDITOR_TO_PENDING_SELECTION,\n EDITOR_TO_PLACEHOLDER_ELEMENT,\n EDITOR_TO_USER_MARKS,\n IS_COMPOSING,\n} from '../../utils/weak-maps'\n\nexport type Action = { at?: Point | Range; run: () => void }\n\n// https://github.com/facebook/draft-js/blob/main/src/component/handlers/composition/DraftEditorCompositionHandler.js#L41\n// When using keyboard English association function, conpositionEnd triggered too fast, resulting in after `insertText` still maintain association state.\nconst RESOLVE_DELAY = 25\n\n// Time with no user interaction before the current user action is considered as done.\nconst FLUSH_DELAY = 200\n\n// Replace with `const debug = console.log` to debug\nconst debug = (..._: unknown[]) => {}\n\n// Type guard to check if a value is a DataTransfer\nconst isDataTransfer = (value: any): value is DataTransfer =>\n value?.constructor.name === 'DataTransfer'\n\nexport type CreateAndroidInputManagerOptions = {\n editor: ReactEditor\n\n scheduleOnDOMSelectionChange: DebouncedFunc<() => void>\n onDOMSelectionChange: DebouncedFunc<() => void>\n}\n\nexport type AndroidInputManager = {\n flush: () => void\n scheduleFlush: () => void\n\n hasPendingDiffs: () => boolean\n hasPendingAction: () => boolean\n hasPendingChanges: () => boolean\n isFlushing: () => boolean | 'action'\n\n handleUserSelect: (range: Range | null) => void\n handleCompositionEnd: (event: React.CompositionEvent<HTMLDivElement>) => void\n handleCompositionStart: (\n event: React.CompositionEvent<HTMLDivElement>\n ) => void\n handleDOMBeforeInput: (event: InputEvent) => void\n handleKeyDown: (event: React.KeyboardEvent<HTMLDivElement>) => void\n\n handleDomMutations: (mutations: MutationRecord[]) => void\n handleInput: () => void\n}\n\nexport function createAndroidInputManager({\n editor,\n scheduleOnDOMSelectionChange,\n onDOMSelectionChange,\n}: CreateAndroidInputManagerOptions): AndroidInputManager {\n let flushing: 'action' | boolean = false\n let compositionEndTimeoutId: ReturnType<typeof setTimeout> | null = null\n let flushTimeoutId: ReturnType<typeof setTimeout> | null = null\n let actionTimeoutId: ReturnType<typeof setTimeout> | null = null\n\n let idCounter = 0\n let insertPositionHint: StringDiff | null | false = false\n\n const applyPendingSelection = () => {\n const pendingSelection = EDITOR_TO_PENDING_SELECTION.get(editor)\n EDITOR_TO_PENDING_SELECTION.delete(editor)\n\n if (pendingSelection) {\n const { selection } = editor\n const normalized = normalizeRange(editor, pendingSelection)\n\n debug('apply pending selection', pendingSelection, normalized)\n\n if (normalized && (!selection || !Range.equals(normalized, selection))) {\n Transforms.select(editor, normalized)\n }\n }\n }\n\n const performAction = () => {\n const action = EDITOR_TO_PENDING_ACTION.get(editor)\n EDITOR_TO_PENDING_ACTION.delete(editor)\n if (!action) {\n return\n }\n\n if (action.at) {\n const target = Point.isPoint(action.at)\n ? normalizePoint(editor, action.at)\n : normalizeRange(editor, action.at)\n\n if (!target) {\n return\n }\n\n const targetRange = Editor.range(editor, target)\n if (!editor.selection || !Range.equals(editor.selection, targetRange)) {\n Transforms.select(editor, target)\n }\n }\n\n action.run()\n }\n\n const flush = () => {\n if (flushTimeoutId) {\n clearTimeout(flushTimeoutId)\n flushTimeoutId = null\n }\n\n if (actionTimeoutId) {\n clearTimeout(actionTimeoutId)\n actionTimeoutId = null\n }\n\n if (!hasPendingDiffs() && !hasPendingAction()) {\n applyPendingSelection()\n return\n }\n\n if (!flushing) {\n flushing = true\n setTimeout(() => (flushing = false))\n }\n\n if (hasPendingAction()) {\n flushing = 'action'\n }\n\n const selectionRef =\n editor.selection &&\n Editor.rangeRef(editor, editor.selection, { affinity: 'forward' })\n EDITOR_TO_USER_MARKS.set(editor, editor.marks)\n\n debug(\n 'flush',\n EDITOR_TO_PENDING_ACTION.get(editor),\n EDITOR_TO_PENDING_DIFFS.get(editor)\n )\n\n let scheduleSelectionChange = hasPendingDiffs()\n\n let diff: TextDiff | undefined\n while ((diff = EDITOR_TO_PENDING_DIFFS.get(editor)?.[0])) {\n const pendingMarks = EDITOR_TO_PENDING_INSERTION_MARKS.get(editor)\n\n if (pendingMarks !== undefined) {\n EDITOR_TO_PENDING_INSERTION_MARKS.delete(editor)\n editor.marks = pendingMarks\n }\n\n if (pendingMarks && insertPositionHint === false) {\n insertPositionHint = null\n debug('insert after mark placeholder')\n }\n\n const range = targetRange(diff)\n if (!editor.selection || !Range.equals(editor.selection, range)) {\n Transforms.select(editor, range)\n }\n\n if (diff.diff.text) {\n Editor.insertText(editor, diff.diff.text)\n } else {\n Editor.deleteFragment(editor)\n }\n\n // Remove diff only after we have applied it to account for it when transforming\n // pending ranges.\n EDITOR_TO_PENDING_DIFFS.set(\n editor,\n EDITOR_TO_PENDING_DIFFS.get(editor)?.filter(\n ({ id }) => id !== diff!.id\n )!\n )\n\n if (!verifyDiffState(editor, diff)) {\n debug('invalid diff state')\n scheduleSelectionChange = false\n EDITOR_TO_PENDING_ACTION.delete(editor)\n EDITOR_TO_USER_MARKS.delete(editor)\n flushing = 'action'\n\n // Ensure we don't restore the pending user (dom) selection\n // since the document and dom state do not match.\n EDITOR_TO_PENDING_SELECTION.delete(editor)\n scheduleOnDOMSelectionChange.cancel()\n onDOMSelectionChange.cancel()\n selectionRef?.unref()\n }\n }\n\n const selection = selectionRef?.unref()\n if (\n selection &&\n !EDITOR_TO_PENDING_SELECTION.get(editor) &&\n (!editor.selection || !Range.equals(selection, editor.selection))\n ) {\n Transforms.select(editor, selection)\n }\n\n if (hasPendingAction()) {\n performAction()\n return\n }\n\n // COMPAT: The selectionChange event is fired after the action is performed,\n // so we have to manually schedule it to ensure we don't 'throw away' the selection\n // while rendering if we have pending changes.\n if (scheduleSelectionChange) {\n debug('scheduleOnDOMSelectionChange pending changes')\n scheduleOnDOMSelectionChange()\n }\n\n scheduleOnDOMSelectionChange.flush()\n onDOMSelectionChange.flush()\n\n applyPendingSelection()\n\n const userMarks = EDITOR_TO_USER_MARKS.get(editor)\n EDITOR_TO_USER_MARKS.delete(editor)\n if (userMarks !== undefined) {\n editor.marks = userMarks\n editor.onChange()\n }\n }\n\n const handleCompositionEnd = (\n _event: React.CompositionEvent<HTMLDivElement>\n ) => {\n if (compositionEndTimeoutId) {\n clearTimeout(compositionEndTimeoutId)\n }\n\n compositionEndTimeoutId = setTimeout(() => {\n IS_COMPOSING.set(editor, false)\n flush()\n }, RESOLVE_DELAY)\n }\n\n const handleCompositionStart = (\n _event: React.CompositionEvent<HTMLDivElement>\n ) => {\n debug('composition start')\n\n IS_COMPOSING.set(editor, true)\n\n if (compositionEndTimeoutId) {\n clearTimeout(compositionEndTimeoutId)\n compositionEndTimeoutId = null\n }\n }\n\n const updatePlaceholderVisibility = (forceHide = false) => {\n const placeholderElement = EDITOR_TO_PLACEHOLDER_ELEMENT.get(editor)\n if (!placeholderElement) {\n return\n }\n\n if (hasPendingDiffs() || forceHide) {\n placeholderElement.style.display = 'none'\n return\n }\n\n placeholderElement.style.removeProperty('display')\n }\n\n const storeDiff = (path: Path, diff: StringDiff) => {\n debug('storeDiff', path, diff)\n\n const pendingDiffs = EDITOR_TO_PENDING_DIFFS.get(editor) ?? []\n EDITOR_TO_PENDING_DIFFS.set(editor, pendingDiffs)\n\n const target = Node.leaf(editor, path)\n const idx = pendingDiffs.findIndex(change => Path.equals(change.path, path))\n if (idx < 0) {\n const normalized = normalizeStringDiff(target.text, diff)\n if (normalized) {\n pendingDiffs.push({ path, diff, id: idCounter++ })\n }\n\n updatePlaceholderVisibility()\n return\n }\n\n const merged = mergeStringDiffs(target.text, pendingDiffs[idx].diff, diff)\n if (!merged) {\n pendingDiffs.splice(idx, 1)\n updatePlaceholderVisibility()\n return\n }\n\n pendingDiffs[idx] = {\n ...pendingDiffs[idx],\n diff: merged,\n }\n }\n\n const scheduleAction = (\n run: () => void,\n { at }: { at?: Point | Range } = {}\n ): void => {\n insertPositionHint = false\n debug('scheduleAction', { at, run })\n\n EDITOR_TO_PENDING_SELECTION.delete(editor)\n scheduleOnDOMSelectionChange.cancel()\n onDOMSelectionChange.cancel()\n\n if (hasPendingAction()) {\n flush()\n }\n\n EDITOR_TO_PENDING_ACTION.set(editor, { at, run })\n\n // COMPAT: When deleting before a non-contenteditable element chrome only fires a beforeinput,\n // (no input) and doesn't perform any dom mutations. Without a flush timeout we would never flush\n // in this case and thus never actually perform the action.\n actionTimeoutId = setTimeout(flush)\n }\n\n const handleDOMBeforeInput = (event: InputEvent): void => {\n if (flushTimeoutId) {\n clearTimeout(flushTimeoutId)\n flushTimeoutId = null\n }\n\n const { inputType: type } = event\n let targetRange: Range | null = null\n const data: DataTransfer | string | undefined =\n (event as any).dataTransfer || event.data || undefined\n\n if (\n insertPositionHint !== false &&\n type !== 'insertText' &&\n type !== 'insertCompositionText'\n ) {\n insertPositionHint = false\n }\n\n let [nativeTargetRange] = (event as any).getTargetRanges()\n if (nativeTargetRange) {\n targetRange = ReactEditor.toSlateRange(editor, nativeTargetRange, {\n exactMatch: false,\n suppressThrow: true,\n })\n }\n\n // COMPAT: SelectionChange event is fired after the action is performed, so we\n // have to manually get the selection here to ensure it's up-to-date.\n const window = ReactEditor.getWindow(editor)\n const domSelection = window.getSelection()\n if (!targetRange && domSelection) {\n nativeTargetRange = domSelection\n targetRange = ReactEditor.toSlateRange(editor, domSelection, {\n exactMatch: false,\n suppressThrow: true,\n })\n }\n\n targetRange = targetRange ?? editor.selection\n if (!targetRange) {\n return\n }\n\n // By default, the input manager tries to store text diffs so that we can\n // defer flushing them at a later point in time. We don't want to flush\n // for every input event as this can be expensive. However, there are some\n // scenarios where we cannot safely store the text diff and must instead\n // schedule an action to let Slate normalize the editor state.\n let canStoreDiff = true\n\n if (type.startsWith('delete')) {\n if (Range.isExpanded(targetRange)) {\n const [start, end] = Range.edges(targetRange)\n const leaf = Node.leaf(editor, start.path)\n\n if (leaf.text.length === start.offset && end.offset === 0) {\n const next = Editor.next(editor, {\n at: start.path,\n match: Text.isText,\n })\n if (next && Path.equals(next[1], end.path)) {\n targetRange = { anchor: end, focus: end }\n }\n }\n }\n\n const direction = type.endsWith('Backward') ? 'backward' : 'forward'\n const [start, end] = Range.edges(targetRange)\n const [leaf, path] = Editor.leaf(editor, start.path)\n\n const diff = {\n text: '',\n start: start.offset,\n end: end.offset,\n }\n const pendingDiffs = EDITOR_TO_PENDING_DIFFS.get(editor)\n const relevantPendingDiffs = pendingDiffs?.find(change =>\n Path.equals(change.path, path)\n )\n const diffs = relevantPendingDiffs\n ? [relevantPendingDiffs.diff, diff]\n : [diff]\n const text = applyStringDiff(leaf.text, ...diffs)\n\n if (text.length === 0) {\n // Text leaf will be removed, so we need to schedule an\n // action to remove it so that Slate can normalize instead\n // of storing as a diff\n canStoreDiff = false\n }\n\n if (Range.isExpanded(targetRange)) {\n if (\n canStoreDiff &&\n Path.equals(targetRange.anchor.path, targetRange.focus.path)\n ) {\n const point = { path: targetRange.anchor.path, offset: start.offset }\n const range = Editor.range(editor, point, point)\n handleUserSelect(range)\n\n return storeDiff(targetRange.anchor.path, {\n text: '',\n end: end.offset,\n start: start.offset,\n })\n }\n\n return scheduleAction(\n () => Editor.deleteFragment(editor, { direction }),\n { at: targetRange }\n )\n }\n }\n\n switch (type) {\n case 'deleteByComposition':\n case 'deleteByCut':\n case 'deleteByDrag': {\n return scheduleAction(() => Editor.deleteFragment(editor), {\n at: targetRange,\n })\n }\n\n case 'deleteContent':\n case 'deleteContentForward': {\n const { anchor } = targetRange\n if (canStoreDiff && Range.isCollapsed(targetRange)) {\n const targetNode = Node.leaf(editor, anchor.path)\n\n if (anchor.offset < targetNode.text.length) {\n return storeDiff(anchor.path, {\n text: '',\n start: anchor.offset,\n end: anchor.offset + 1,\n })\n }\n }\n\n return scheduleAction(() => Editor.deleteForward(editor), {\n at: targetRange,\n })\n }\n\n case 'deleteContentBackward': {\n const { anchor } = targetRange\n\n // If we have a mismatch between the native and slate selection being collapsed\n // we are most likely deleting a zero-width placeholder and thus should perform it\n // as an action to ensure correct behavior (mostly happens with mark placeholders)\n const nativeCollapsed = isDOMSelection(nativeTargetRange)\n ? nativeTargetRange.isCollapsed\n : !!nativeTargetRange?.collapsed\n\n if (\n canStoreDiff &&\n nativeCollapsed &&\n Range.isCollapsed(targetRange) &&\n anchor.offset > 0\n ) {\n return storeDiff(anchor.path, {\n text: '',\n start: anchor.offset - 1,\n end: anchor.offset,\n })\n }\n\n return scheduleAction(() => Editor.deleteBackward(editor), {\n at: targetRange,\n })\n }\n\n case 'deleteEntireSoftLine': {\n return scheduleAction(\n () => {\n Editor.deleteBackward(editor, { unit: 'line' })\n Editor.deleteForward(editor, { unit: 'line' })\n },\n { at: targetRange }\n )\n }\n\n case 'deleteHardLineBackward': {\n return scheduleAction(\n () => Editor.deleteBackward(editor, { unit: 'block' }),\n { at: targetRange }\n )\n }\n\n case 'deleteSoftLineBackward': {\n return scheduleAction(\n () => Editor.deleteBackward(editor, { unit: 'line' }),\n { at: targetRange }\n )\n }\n\n case 'deleteHardLineForward': {\n return scheduleAction(\n () => Editor.deleteForward(editor, { unit: 'block' }),\n { at: targetRange }\n )\n }\n\n case 'deleteSoftLineForward': {\n return scheduleAction(\n () => Editor.deleteForward(editor, { unit: 'line' }),\n { at: targetRange }\n )\n }\n\n case 'deleteWordBackward': {\n return scheduleAction(\n () => Editor.deleteBackward(editor, { unit: 'word' }),\n { at: targetRange }\n )\n }\n\n case 'deleteWordForward': {\n return scheduleAction(\n () => Editor.deleteForward(editor, { unit: 'word' }),\n { at: targetRange }\n )\n }\n\n case 'insertLineBreak': {\n return scheduleAction(() => Editor.insertSoftBreak(editor), {\n at: targetRange,\n })\n }\n\n case 'insertParagraph': {\n return scheduleAction(() => Editor.insertBreak(editor), {\n at: targetRange,\n })\n }\n case 'insertCompositionText':\n case 'deleteCompositionText':\n case 'insertFromComposition':\n case 'insertFromDrop':\n case 'insertFromPaste':\n case 'insertFromYank':\n case 'insertReplacementText':\n case 'insertText': {\n if (isDataTransfer(data)) {\n return scheduleAction(() => ReactEditor.insertData(editor, data), {\n at: targetRange,\n })\n }\n\n let text = data ?? ''\n\n // COMPAT: If we are writing inside a placeholder, the ime inserts the text inside\n // the placeholder itself and thus includes the zero-width space inside edit events.\n if (EDITOR_TO_PENDING_INSERTION_MARKS.get(editor)) {\n text = text.replace('\\uFEFF', '')\n }\n\n // Pastes from the Android clipboard will generate `insertText` events.\n // If the copied text contains any newlines, Android will append an\n // extra newline to the end of the copied text.\n if (type === 'insertText' && /.*\\n.*\\n$/.test(text)) {\n text = text.slice(0, -1)\n }\n\n // If the text includes a newline, split it at newlines and paste each component\n // string, with soft breaks in between each.\n if (text.includes('\\n')) {\n return scheduleAction(\n () => {\n const parts = text.split('\\n')\n parts.forEach((line, i) => {\n if (line) {\n Editor.insertText(editor, line)\n }\n if (i !== parts.length - 1) {\n Editor.insertSoftBreak(editor)\n }\n })\n },\n {\n at: targetRange,\n }\n )\n }\n\n if (Path.equals(targetRange.anchor.path, targetRange.focus.path)) {\n const [start, end] = Range.edges(targetRange)\n\n const diff = {\n start: start.offset,\n end: end.offset,\n text,\n }\n\n // COMPAT: Swiftkey has a weird bug where the target range of the 2nd word\n // inserted after a mark placeholder is inserted with an anchor offset off by 1.\n // So writing 'some text' will result in 'some ttext'. Luckily all 'normal' insert\n // text events are fired with the correct target ranges, only the final 'insertComposition'\n // isn't, so we can adjust the target range start offset if we are confident this is the\n // swiftkey insert causing the issue.\n if (text && insertPositionHint && type === 'insertCompositionText') {\n const hintPosition =\n insertPositionHint.start + insertPositionHint.text.search(/\\S|$/)\n const diffPosition = diff.start + diff.text.search(/\\S|$/)\n\n if (\n diffPosition === hintPosition + 1 &&\n diff.end ===\n insertPositionHint.start + insertPositionHint.text.length\n ) {\n debug('adjusting swiftKey insert position using hint')\n diff.start -= 1\n insertPositionHint = null\n scheduleFlush()\n } else {\n insertPositionHint = false\n }\n } else if (type === 'insertText') {\n if (insertPositionHint === null) {\n insertPositionHint = diff\n } else if (\n insertPositionHint &&\n Range.isCollapsed(targetRange) &&\n insertPositionHint.end + insertPositionHint.text.length ===\n start.offset\n ) {\n insertPositionHint = {\n ...insertPositionHint,\n text: insertPositionHint.text + text,\n }\n } else {\n insertPositionHint = false\n }\n } else {\n insertPositionHint = false\n }\n\n if (canStoreDiff) {\n storeDiff(start.path, diff)\n return\n }\n }\n\n return scheduleAction(() => Editor.insertText(editor, text), {\n at: targetRange,\n })\n }\n }\n }\n\n const hasPendingAction = () => {\n return !!EDITOR_TO_PENDING_ACTION.get(editor)\n }\n\n const hasPendingDiffs = () => {\n return !!EDITOR_TO_PENDING_DIFFS.get(editor)?.length\n }\n\n const hasPendingChanges = () => {\n return hasPendingAction() || hasPendingDiffs()\n }\n\n const isFlushing = () => {\n return flushing\n }\n\n const handleUserSelect = (range: Range | null) => {\n EDITOR_TO_PENDING_SELECTION.set(editor, range)\n\n if (flushTimeoutId) {\n clearTimeout(flushTimeoutId)\n flushTimeoutId = null\n }\n\n const { selection } = editor\n if (!range) {\n return\n }\n\n const pathChanged =\n !selection || !Path.equals(selection.anchor.path, range.anchor.path)\n const parentPathChanged =\n !selection ||\n !Path.equals(\n selection.anchor.path.slice(0, -1),\n range.anchor.path.slice(0, -1)\n )\n\n if ((pathChanged && insertPositionHint) || parentPathChanged) {\n insertPositionHint = false\n }\n\n if (pathChanged || hasPendingDiffs()) {\n flushTimeoutId = setTimeout(flush, FLUSH_DELAY)\n }\n }\n\n const handleInput = () => {\n if (hasPendingAction() || !hasPendingDiffs()) {\n debug('flush input')\n flush()\n }\n }\n\n const handleKeyDown = (_: React.KeyboardEvent) => {\n // COMPAT: Swiftkey closes the keyboard when typing inside a empty node\n // directly next to a non-contenteditable element (= the placeholder).\n // The only event fired soon enough for us to allow hiding the placeholder\n // without swiftkey picking it up is the keydown event, so we have to hide it\n // here. See https://github.com/ianstormtaylor/slate/pull/4988#issuecomment-1201050535\n if (!hasPendingDiffs()) {\n updatePlaceholderVisibility(true)\n setTimeout(updatePlaceholderVisibility)\n }\n }\n\n const scheduleFlush = () => {\n if (!hasPendingAction()) {\n actionTimeoutId = setTimeout(flush)\n }\n }\n\n const handleDomMutations = (mutations: MutationRecord[]) => {\n if (hasPendingDiffs() || hasPendingAction()) {\n return\n }\n\n if (\n mutations.some(mutation => isTrackedMutation(editor, mutation, mutations))\n ) {\n // Cause a re-render to restore the dom state if we encounter tracked mutations without\n // a corresponding pending action.\n EDITOR_TO_FORCE_RENDER.get(editor)?.()\n }\n }\n\n return {\n flush,\n scheduleFlush,\n\n hasPendingDiffs,\n hasPendingAction,\n hasPendingChanges,\n\n isFlushing,\n\n handleUserSelect,\n handleCompositionEnd,\n handleCompositionStart,\n handleDOMBeforeInput,\n handleKeyDown,\n\n handleDomMutations,\n handleInput,\n }\n}\n","import { useEffect, useRef } from 'react'\n\nexport function useIsMounted() {\n const isMountedRef = useRef(false)\n\n useEffect(() => {\n isMountedRef.current = true\n return () => {\n isMountedRef.current = false\n }\n }, [])\n\n return isMountedRef.current\n}\n","import { useLayoutEffect, useEffect } from 'react'\nimport { CAN_USE_DOM } from '../utils/environment'\n\n/**\n * Prevent warning on SSR by falling back to useEffect when DOM isn't available\n */\n\nexport const useIsomorphicLayoutEffect = CAN_USE_DOM\n ? useLayoutEffect\n : useEffect\n","import { RefObject, useEffect, useState } from 'react'\nimport { useIsomorphicLayoutEffect } from './use-isomorphic-layout-effect'\n\nexport function useMutationObserver(\n node: RefObject<HTMLElement>,\n callback: MutationCallback,\n options: MutationObserverInit\n) {\n const [mutationObserver] = useState(() => new MutationObserver(callback))\n\n useIsomorphicLayoutEffect(() => {\n // Discard mutations caused during render phase. This works due to react calling\n // useLayoutEffect synchronously after the render phase before the next tick.\n mutationObserver.takeRecords()\n })\n\n useEffect(() => {\n if (!node.current) {\n throw new Error('Failed to attach MutationObserver, `node` is undefined')\n }\n\n mutationObserver.observe(node.current, options)\n return () => mutationObserver.disconnect()\n }, [mutationObserver, node, options])\n}\n","import { RefObject, useState } from 'react'\nimport { useSlateStatic } from '../use-slate-static'\nimport { IS_ANDROID } from '../../utils/environment'\nimport { EDITOR_TO_SCHEDULE_FLUSH } from '../../utils/weak-maps'\nimport {\n createAndroidInputManager,\n CreateAndroidInputManagerOptions,\n} from './android-input-manager'\nimport { useIsMounted } from '../use-is-mounted'\nimport { useMutationObserver } from '../use-mutation-observer'\n\ntype UseAndroidInputManagerOptions = {\n node: RefObject<HTMLElement>\n} & Omit<\n CreateAndroidInputManagerOptions,\n 'editor' | 'onUserInput' | 'receivedUserInput'\n>\n\nconst MUTATION_OBSERVER_CONFIG: MutationObserverInit = {\n subtree: true,\n childList: true,\n characterData: true,\n}\n\nexport const useAndroidInputManager = !IS_ANDROID\n ? () => null\n : ({ node, ...options }: UseAndroidInputManagerOptions) => {\n if (!IS_ANDROID) {\n return null\n }\n\n const editor = useSlateStatic()\n const isMounted = useIsMounted()\n\n const [inputManager] = useState(() =>\n createAndroidInputManager({\n editor,\n ...options,\n })\n )\n\n useMutationObserver(\n node,\n inputManager.handleDomMutations,\n MUTATION_OBSERVER_CONFIG\n )\n\n EDITOR_TO_SCHEDULE_FLUSH.set(editor, inputManager.scheduleFlush)\n if (isMounted) {\n inputManager.flush()\n }\n\n return inputManager\n }\n","import { Range } from 'slate'\nimport { PLACEHOLDER_SYMBOL } from './weak-maps'\n\nexport const shallowCompare = (\n obj1: { [key: string]: unknown },\n obj2: { [key: string]: unknown }\n) =>\n Object.keys(obj1).length === Object.keys(obj2).length &&\n Object.keys(obj1).every(\n key => obj2.hasOwnProperty(key) && obj1[key] === obj2[key]\n )\n\nconst isDecorationFlagsEqual = (range: Range, other: Range) => {\n const { anchor: rangeAnchor, focus: rangeFocus, ...rangeOwnProps } = range\n const { anchor: otherAnchor, focus: otherFocus, ...otherOwnProps } = other\n\n return (\n range[PLACEHOLDER_SYMBOL] === other[PLACEHOLDER_SYMBOL] &&\n shallowCompare(rangeOwnProps, otherOwnProps)\n )\n}\n\n/**\n * Check if a list of decorator ranges are equal to another.\n *\n * PERF: this requires the two lists to also have the ranges inside them in the\n * same order, but this is an okay constraint for us since decorations are\n * kept in order, and the odd case where they aren't is okay to re-render for.\n */\n\nexport const isElementDecorationsEqual = (\n list: Range[],\n another: Range[]\n): boolean => {\n if (list.length !== another.length) {\n return false\n }\n\n for (let i = 0; i < list.length; i++) {\n const range = list[i]\n const other = another[i]\n\n if (!Range.equals(range, other) || !isDecorationFlagsEqual(range, other)) {\n return false\n }\n }\n\n return true\n}\n\n/**\n * Check if a list of decorator ranges are equal to another.\n *\n * PERF: this requires the two lists to also have the ranges inside them in the\n * same order, but this is an okay constraint for us since decorations are\n * kept in order, and the odd case where they aren't is okay to re-render for.\n */\n\nexport const isTextDecorationsEqual = (\n list: Range[],\n another: Range[]\n): boolean => {\n if (list.length !== another.length) {\n return false\n }\n\n for (let i = 0; i < list.length; i++) {\n const range = list[i]\n const other = another[i]\n\n // compare only offsets because paths doesn't matter for text\n if (\n range.anchor.offset !== other.anchor.offset ||\n range.focus.offset !== other.focus.offset ||\n !isDecorationFlagsEqual(range, other)\n ) {\n return false\n }\n }\n\n return true\n}\n","import React, { forwardRef, memo, useRef, useState } from 'react'\nimport { Editor, Text, Path, Element, Node } from 'slate'\n\nimport { ReactEditor, useSlateStatic } from '..'\nimport { useIsomorphicLayoutEffect } from '../hooks/use-isomorphic-layout-effect'\nimport { IS_ANDROID } from '../utils/environment'\nimport { MARK_PLACEHOLDER_SYMBOL } from '../utils/weak-maps'\n\n/**\n * Leaf content strings.\n */\n\nconst String = (props: {\n isLast: boolean\n leaf: Text\n parent: Element\n text: Text\n}) => {\n const { isLast, leaf, parent, text } = props\n const editor = useSlateStatic()\n const path = ReactEditor.findPath(editor, text)\n const parentPath = Path.parent(path)\n const isMarkPlaceholder = Boolean(leaf[MARK_PLACEHOLDER_SYMBOL])\n\n // COMPAT: Render text inside void nodes with a zero-width space.\n // So the node can contain selection but the text is not visible.\n if (editor.isVoid(parent)) {\n return <ZeroWidthString length={Node.string(parent).length} />\n }\n\n // COMPAT: If this is the last text node in an empty block, render a zero-\n // width space that will convert into a line break when copying and pasting\n // to support expected plain text.\n if (\n leaf.text === '' &&\n parent.children[parent.children.length - 1] === text &&\n !editor.isInline(parent) &&\n Editor.string(editor, parentPath) === ''\n ) {\n return <ZeroWidthString isLineBreak isMarkPlaceholder={isMarkPlaceholder} />\n }\n\n // COMPAT: If the text is empty, it's because it's on the edge of an inline\n // node, so we render a zero-width space so that the selection can be\n // inserted next to it still.\n if (leaf.text === '') {\n return <ZeroWidthString isMarkPlaceholder={isMarkPlaceholder} />\n }\n\n // COMPAT: Browsers will collapse trailing new lines at the end of blocks,\n // so we need to add an extra trailing new lines to prevent that.\n if (isLast && leaf.text.slice(-1) === '\\n') {\n return <TextString isTrailing text={leaf.text} />\n }\n\n return <TextString text={leaf.text} />\n}\n\n/**\n * Leaf strings with text in them.\n */\nconst TextString = (props: { text: string; isTrailing?: boolean }) => {\n const { text, isTrailing = false } = props\n const ref = useRef<HTMLSpanElement>(null)\n const getTextContent = () => {\n return `${text ?? ''}${isTrailing ? '\\n' : ''}`\n }\n const [initialText] = useState(getTextContent)\n\n // This is the actual text rendering boundary where we interface with the DOM\n // The text is not rendered as part of the virtual DOM, as since we handle basic character insertions natively,\n // updating the DOM is not a one way dataflow anymore. What we need here is not reconciliation and diffing\n // with previous version of the virtual DOM, but rather diffing with the actual DOM element, and replace the DOM <span> content\n // exactly if and only if its current content does not match our current virtual DOM.\n // Otherwise the DOM TextNode would always be replaced by React as the user types, which interferes with native text features,\n // eg makes native spellcheck opt out from checking the text node.\n\n // useLayoutEffect: updating our span before browser paint\n useIsomorphicLayoutEffect(() => {\n // null coalescing text to make sure we're not outputing \"null\" as a string in the extreme case it is nullish at runtime\n const textWithTrailing = getTextContent()\n\n if (ref.current && ref.current.textContent !== textWithTrailing) {\n ref.current.textContent = textWithTrailing\n }\n\n // intentionally not specifying dependencies, so that this effect runs on every render\n // as this effectively replaces \"specifying the text in the virtual DOM under the <span> below\" on each render\n })\n\n // We intentionally render a memoized <span> that only receives the initial text content when the component is mounted.\n // We defer to the layout effect above to update the `textContent` of the span element when needed.\n return <MemoizedText ref={ref}>{initialText}</MemoizedText>\n}\n\nconst MemoizedText = memo(\n forwardRef<HTMLSpanElement, { children: string }>((props, ref) => {\n return (\n <span data-slate-string ref={ref}>\n {props.children}\n </span>\n )\n })\n)\n\n/**\n * Leaf strings without text, render as zero-width strings.\n */\n\nexport const ZeroWidthString = (props: {\n length?: number\n isLineBreak?: boolean\n isMarkPlaceholder?: boolean\n}) => {\n const { length = 0, isLineBreak = false, isMarkPlaceholder = false } = props\n\n const attributes: {\n 'data-slate-zero-width': string\n 'data-slate-length': number\n 'data-slate-mark-placeholder'?: boolean\n } = {\n 'data-slate-zero-width': isLineBreak ? 'n' : 'z',\n 'data-slate-length': length,\n }\n\n if (isMarkPlaceholder) {\n attributes['data-slate-mark-placeholder'] = true\n }\n\n return (\n <span {...attributes}>\n {!IS_ANDROID || !isLineBreak ? '\\uFEFF' : null}\n {isLineBreak ? <br /> : null}\n </span>\n )\n}\n\nexport default String\n","import React, {\n useRef,\n useCallback,\n MutableRefObject,\n useState,\n useEffect,\n} from 'react'\nimport { JSX } from 'react'\nimport { Element, Text } from 'slate'\nimport { ResizeObserver as ResizeObserverPolyfill } from '@juggle/resize-observer'\nimport String from './string'\nimport {\n PLACEHOLDER_SYMBOL,\n EDITOR_TO_PLACEHOLDER_ELEMENT,\n EDITOR_TO_FORCE_RENDER,\n} from '../utils/weak-maps'\nimport { RenderLeafProps, RenderPlaceholderProps } from './editable'\nimport { useSlateStatic } from '../hooks/use-slate-static'\nimport { IS_WEBKIT, IS_ANDROID } from '../utils/environment'\n\n// Delay the placeholder on Android to prevent the keyboard from closing.\n// (https://github.com/ianstormtaylor/slate/pull/5368)\nconst PLACEHOLDER_DELAY = IS_ANDROID ? 300 : 0\n\nfunction disconnectPlaceholderResizeObserver(\n placeholderResizeObserver: MutableRefObject<ResizeObserver | null>,\n releaseObserver: boolean\n) {\n if (placeholderResizeObserver.current) {\n placeholderResizeObserver.current.disconnect()\n if (releaseObserver) {\n placeholderResizeObserver.current = null\n }\n }\n}\n\ntype TimerId = ReturnType<typeof setTimeout> | null\n\nfunction clearTimeoutRef(timeoutRef: MutableRefObject<TimerId>) {\n if (timeoutRef.current) {\n clearTimeout(timeoutRef.current)\n timeoutRef.current = null\n }\n}\n\n/**\n * Individual leaves in a text node with unique formatting.\n */\nconst Leaf = (props: {\n isLast: boolean\n leaf: Text\n parent: Element\n renderPlaceholder: (props: RenderPlaceholderProps) => JSX.Element\n renderLeaf?: (props: RenderLeafProps) => JSX.Element\n text: Text\n}) => {\n const {\n leaf,\n isLast,\n text,\n parent,\n renderPlaceholder,\n renderLeaf = (props: RenderLeafProps) => <DefaultLeaf {...props} />,\n } = props\n\n const editor = useSlateStatic()\n const placeholderResizeObserver = useRef<ResizeObserver | null>(null)\n const placeholderRef = useRef<HTMLElement | null>(null)\n const [showPlaceholder, setShowPlaceholder] = useState(false)\n const showPlaceholderTimeoutRef = useRef<TimerId>(null)\n\n const callbackPlaceholderRef = useCallback(\n (placeholderEl: HTMLElement | null) => {\n disconnectPlaceholderResizeObserver(\n placeholderResizeObserver,\n placeholderEl == null\n )\n\n if (placeholderEl == null) {\n EDITOR_TO_PLACEHOLDER_ELEMENT.delete(editor)\n leaf.onPlaceholderResize?.(null)\n } else {\n EDITOR_TO_PLACEHOLDER_ELEMENT.set(editor, placeholderEl)\n\n if (!placeholderResizeObserver.current) {\n // Create a new observer and observe the placeholder element.\n const ResizeObserver = window.ResizeObserver || ResizeObserverPolyfill\n placeholderResizeObserver.current = new ResizeObserver(() => {\n leaf.onPlaceholderResize?.(placeholderEl)\n })\n }\n placeholderResizeObserver.current.observe(placeholderEl)\n placeholderRef.current = placeholderEl\n }\n },\n [placeholderRef, leaf, editor]\n )\n\n let children = (\n <String isLast={isLast} leaf={leaf} parent={parent} text={text} />\n )\n\n const leafIsPlaceholder = Boolean(leaf[PLACEHOLDER_SYMBOL])\n useEffect(() => {\n if (leafIsPlaceholder) {\n if (!showPlaceholderTimeoutRef.current) {\n // Delay the placeholder, so it will not render in a selection\n showPlaceholderTimeoutRef.current = setTimeout(() => {\n setShowPlaceholder(true)\n showPlaceholderTimeoutRef.current = null\n }, PLACEHOLDER_DELAY)\n }\n } else {\n clearTimeoutRef(showPlaceholderTimeoutRef)\n setShowPlaceholder(false)\n }\n return () => clearTimeoutRef(showPlaceholderTimeoutRef)\n }, [leafIsPlaceholder, setShowPlaceholder])\n\n if (leafIsPlaceholder && showPlaceholder) {\n const placeholderProps: RenderPlaceholderProps = {\n children: leaf.placeholder,\n attributes: {\n 'data-slate-placeholder': true,\n style: {\n position: 'absolute',\n top: 0,\n pointerEvents: 'none',\n width: '100%',\n maxWidth: '100%',\n display: 'block',\n opacity: '0.333',\n userSelect: 'none',\n textDecoration: 'none',\n // Fixes https://github.com/udecode/plate/issues/2315\n WebkitUserModify: IS_WEBKIT ? 'inherit' : undefined,\n },\n contentEditable: false,\n ref: callbackPlaceholderRef,\n },\n }\n\n children = (\n <React.Fragment>\n {renderPlaceholder(placeholderProps)}\n {children}\n </React.Fragment>\n )\n }\n\n // COMPAT: Having the `data-` attributes on these leaf elements ensures that\n // in certain misbehaving browsers they aren't weirdly cloned/destroyed by\n // contenteditable behaviors. (2019/05/08)\n const attributes: {\n 'data-slate-leaf': true\n } = {\n 'data-slate-leaf': true,\n }\n\n return renderLeaf({ attributes, children, leaf, text })\n}\n\nconst MemoizedLeaf = React.memo(Leaf, (prev, next) => {\n return (\n next.parent === prev.parent &&\n next.isLast === prev.isLast &&\n next.renderLeaf === prev.renderLeaf &&\n next.renderPlaceholder === prev.renderPlaceholder &&\n next.text === prev.text &&\n Text.equals(next.leaf, prev.leaf) &&\n next.leaf[PLACEHOLDER_SYMBOL] === prev.leaf[PLACEHOLDER_SYMBOL]\n )\n})\n\nexport const DefaultLeaf = (props: RenderLeafProps) => {\n const { attributes, children } = props\n return <span {...attributes}>{children}</span>\n}\n\nexport default MemoizedLeaf\n","import React, { useCallback, useRef } from 'react'\nimport { Element, Range, Text as SlateText } from 'slate'\nimport { ReactEditor, useSlateStatic } from '..'\nimport { isTextDecorationsEqual } from '../utils/range-list'\nimport {\n EDITOR_TO_KEY_TO_ELEMENT,\n ELEMENT_TO_NODE,\n NODE_TO_ELEMENT,\n} from '../utils/weak-maps'\nimport { RenderLeafProps, RenderPlaceholderProps } from './editable'\nimport Leaf from './leaf'\n\n/**\n * Text.\n */\n\nconst Text = (props: {\n decorations: Range[]\n isLast: boolean\n parent: Element\n renderPlaceholder: (props: RenderPlaceholderProps) => JSX.Element\n renderLeaf?: (props: RenderLeafProps) => JSX.Element\n text: SlateText\n}) => {\n const { decorations, isLast, parent, renderPlaceholder, renderLeaf, text } =\n props\n const editor = useSlateStatic()\n const ref = useRef<HTMLSpanElement | null>(null)\n const leaves = SlateText.decorations(text, decorations)\n const key = ReactEditor.findKey(editor, text)\n const children = []\n\n for (let i = 0; i < leaves.length; i++) {\n const leaf = leaves[i]\n\n children.push(\n <Leaf\n isLast={isLast && i === leaves.length - 1}\n key={`${key.id}-${i}`}\n renderPlaceholder={renderPlaceholder}\n leaf={leaf}\n text={text}\n parent={parent}\n renderLeaf={renderLeaf}\n />\n )\n }\n\n // Update element-related weak maps with the DOM element ref.\n const callbackRef = useCallback(\n (span: HTMLSpanElement | null) => {\n const KEY_TO_ELEMENT = EDITOR_TO_KEY_TO_ELEMENT.get(editor)\n if (span) {\n KEY_TO_ELEMENT?.set(key, span)\n NODE_TO_ELEMENT.set(text, span)\n ELEMENT_TO_NODE.set(span, text)\n } else {\n KEY_TO_ELEMENT?.delete(key)\n NODE_TO_ELEMENT.delete(text)\n if (ref.current) {\n ELEMENT_TO_NODE.delete(ref.current)\n }\n }\n ref.current = span\n },\n [ref, editor, key, text]\n )\n return (\n <span data-slate-node=\"text\" ref={callbackRef}>\n {children}\n </span>\n )\n}\n\nconst MemoizedText = React.memo(Text, (prev, next) => {\n return (\n next.parent === prev.parent &&\n next.isLast === prev.isLast &&\n next.renderLeaf === prev.renderLeaf &&\n next.renderPlaceholder === prev.renderPlaceholder &&\n next.text === prev.text &&\n isTextDecorationsEqual(next.decorations, prev.decorations)\n )\n})\n\nexport default MemoizedText\n","import getDirection from 'direction'\nimport React, { useCallback } from 'react'\nimport { JSX } from 'react'\nimport { Editor, Element as SlateElement, Node, Range } from 'slate'\nimport { ReactEditor, useReadOnly, useSlateStatic } from '..'\nimport useChildren from '../hooks/use-children'\nimport { isElementDecorationsEqual } from '../utils/range-list'\nimport {\n EDITOR_TO_KEY_TO_ELEMENT,\n ELEMENT_TO_NODE,\n NODE_TO_ELEMENT,\n NODE_TO_INDEX,\n NODE_TO_PARENT,\n} from '../utils/weak-maps'\nimport {\n RenderElementProps,\n RenderLeafProps,\n RenderPlaceholderProps,\n} from './editable'\n\nimport Text from './text'\n\n/**\n * Element.\n */\n\nconst Element = (props: {\n decorations: Range[]\n element: SlateElement\n renderElement?: (props: RenderElementProps) => JSX.Element\n renderPlaceholder: (props: RenderPlaceholderProps) => JSX.Element\n renderLeaf?: (props: RenderLeafProps) => JSX.Element\n selection: Range | null\n}) => {\n const {\n decorations,\n element,\n renderElement = (p: RenderElementProps) => <DefaultElement {...p} />,\n renderPlaceholder,\n renderLeaf,\n selection,\n } = props\n const editor = useSlateStatic()\n const readOnly = useReadOnly()\n const isInline = editor.isInline(element)\n const key = ReactEditor.findKey(editor, element)\n const ref = useCallback(\n (ref: HTMLElement | null) => {\n // Update element-related weak maps with the DOM element ref.\n const KEY_TO_ELEMENT = EDITOR_TO_KEY_TO_ELEMENT.get(editor)\n if (ref) {\n KEY_TO_ELEMENT?.set(key, ref)\n NODE_TO_ELEMENT.set(element, ref)\n ELEMENT_TO_NODE.set(ref, element)\n } else {\n KEY_TO_ELEMENT?.delete(key)\n NODE_TO_ELEMENT.delete(element)\n }\n },\n [editor, key, element]\n )\n let children: React.ReactNode = useChildren({\n decorations,\n node: element,\n renderElement,\n renderPlaceholder,\n renderLeaf,\n selection,\n })\n\n // Attributes that the developer must mix into the element in their\n // custom node renderer component.\n const attributes: {\n 'data-slate-node': 'element'\n 'data-slate-void'?: true\n 'data-slate-inline'?: true\n contentEditable?: false\n dir?: 'rtl'\n ref: any\n } = {\n 'data-slate-node': 'element',\n ref,\n }\n\n if (isInline) {\n attributes['data-slate-inline'] = true\n }\n\n // If it's a block node with inline children, add the proper `dir` attribute\n // for text direction.\n if (!isInline && Editor.hasInlines(editor, element)) {\n const text = Node.string(element)\n const dir = getDirection(text)\n\n if (dir === 'rtl') {\n attributes.dir = dir\n }\n }\n\n // If it's a void node, wrap the children in extra void-specific elements.\n if (Editor.isVoid(editor, element)) {\n attributes['data-slate-void'] = true\n\n if (!readOnly && isInline) {\n attributes.contentEditable = false\n }\n\n const Tag = isInline ? 'span' : 'div'\n const [[text]] = Node.texts(element)\n\n children = (\n <Tag\n data-slate-spacer\n style={{\n height: '0',\n color: 'transparent',\n outline: 'none',\n position: 'absolute',\n }}\n >\n <Text\n renderPlaceholder={renderPlaceholder}\n decorations={[]}\n isLast={false}\n parent={element}\n text={text}\n />\n </Tag>\n )\n\n NODE_TO_INDEX.set(text, 0)\n NODE_TO_PARENT.set(text, element)\n }\n\n return renderElement({ attributes, children, element })\n}\n\nconst MemoizedElement = React.memo(Element, (prev, next) => {\n return (\n prev.element === next.element &&\n prev.renderElement === next.renderElement &&\n prev.renderLeaf === next.renderLeaf &&\n prev.renderPlaceholder === next.renderPlaceholder &&\n isElementDecorationsEqual(prev.decorations, next.decorations) &&\n (prev.selection === next.selection ||\n (!!prev.selection &&\n !!next.selection &&\n Range.equals(prev.selection, next.selection)))\n )\n})\n\n/**\n * The default element renderer.\n */\n\nexport const DefaultElement = (props: RenderElementProps) => {\n const { attributes, children, element } = props\n const editor = useSlateStatic()\n const Tag = editor.isInline(element) ? 'span' : 'div'\n return (\n <Tag {...attributes} style={{ position: 'relative' }}>\n {children}\n </Tag>\n )\n}\n\nexport default MemoizedElement\n","import { createContext, useContext } from 'react'\nimport { Range, NodeEntry } from 'slate'\n\n/**\n * A React context for sharing the `decorate` prop of the editable.\n */\n\nexport const DecorateContext = createContext<(entry: NodeEntry) => Range[]>(\n () => []\n)\n\n/**\n * Get the current `decorate` prop of the editable.\n */\n\nexport const useDecorate = (): ((entry: NodeEntry) => Range[]) => {\n return useContext(DecorateContext)\n}\n","import { createContext, useContext } from 'react'\n\n/**\n * A React context for sharing the `selected` state of an element.\n */\n\nexport const SelectedContext = createContext(false)\n\n/**\n * Get the current `selected` state of an element.\n */\n\nexport const useSelected = (): boolean => {\n return useContext(SelectedContext)\n}\n","import React from 'react'\nimport { Ancestor, Descendant, Editor, Element, Range } from 'slate'\nimport {\n RenderElementProps,\n RenderLeafProps,\n RenderPlaceholderProps,\n} from '../components/editable'\n\nimport ElementComponent from '../components/element'\nimport TextComponent from '../components/text'\nimport { ReactEditor } from '../plugin/react-editor'\nimport { NODE_TO_INDEX, NODE_TO_PARENT } from '../utils/weak-maps'\nimport { useDecorate } from './use-decorate'\nimport { SelectedContext } from './use-selected'\nimport { useSlateStatic } from './use-slate-static'\n\n/**\n * Children.\n */\n\nconst useChildren = (props: {\n decorations: Range[]\n node: Ancestor\n renderElement?: (props: RenderElementProps) => JSX.Element\n renderPlaceholder: (props: RenderPlaceholderProps) => JSX.Element\n renderLeaf?: (props: RenderLeafProps) => JSX.Element\n selection: Range | null\n}) => {\n const {\n decorations,\n node,\n renderElement,\n renderPlaceholder,\n renderLeaf,\n selection,\n } = props\n const decorate = useDecorate()\n const editor = useSlateStatic()\n const path = ReactEditor.findPath(editor, node)\n const children = []\n const isLeafBlock =\n Element.isElement(node) &&\n !editor.isInline(node) &&\n Editor.hasInlines(editor, node)\n\n for (let i = 0; i < node.children.length; i++) {\n const p = path.concat(i)\n const n = node.children[i] as Descendant\n const key = ReactEditor.findKey(editor, n)\n const range = Editor.range(editor, p)\n const sel = selection && Range.intersection(range, selection)\n const ds = decorate([n, p])\n\n for (const dec of decorations) {\n const d = Range.intersection(dec, range)\n\n if (d) {\n ds.push(d)\n }\n }\n\n if (Element.isElement(n)) {\n children.push(\n <SelectedContext.Provider key={`provider-${key.id}`} value={!!sel}>\n <ElementComponent\n decorations={ds}\n element={n}\n key={key.id}\n renderElement={renderElement}\n renderPlaceholder={renderPlaceholder}\n renderLeaf={renderLeaf}\n selection={sel}\n />\n </SelectedContext.Provider>\n )\n } else {\n children.push(\n <TextComponent\n decorations={ds}\n key={key.id}\n isLast={isLeafBlock && i === node.children.length - 1}\n parent={node}\n renderPlaceholder={renderPlaceholder}\n renderLeaf={renderLeaf}\n text={n}\n />\n )\n }\n\n NODE_TO_INDEX.set(n, i)\n NODE_TO_PARENT.set(n, node)\n }\n\n return children\n}\n\nexport default useChildren\n","import { createContext, useContext } from 'react'\n\n/**\n * A React context for sharing the `readOnly` state of the editor.\n */\n\nexport const ReadOnlyContext = createContext(false)\n\n/**\n * Get the current `readOnly` state of the editor.\n */\n\nexport const useReadOnly = (): boolean => {\n return useContext(ReadOnlyContext)\n}\n","import { createContext, useContext } from 'react'\nimport { Editor } from 'slate'\nimport { ReactEditor } from '../plugin/react-editor'\n\n/**\n * A React context for sharing the editor object, in a way that re-renders the\n * context whenever changes occur.\n */\n\nexport interface SlateContextValue {\n v: number\n editor: ReactEditor\n}\n\nexport const SlateContext = createContext<{\n v: number\n editor: ReactEditor\n} | null>(null)\n\n/**\n * Get the current editor object from the React context.\n */\n\nexport const useSlate = (): Editor => {\n const context = useContext(SlateContext)\n\n if (!context) {\n throw new Error(\n `The \\`useSlate\\` hook must be used inside the <Slate> component's context.`\n )\n }\n\n const { editor } = context\n return editor\n}\n\nexport const useSlateWithV = () => {\n const context = useContext(SlateContext)\n\n if (!context) {\n throw new Error(\n `The \\`useSlate\\` hook must be used inside the <Slate> component's context.`\n )\n }\n\n return context\n}\n","import { useCallback, useEffect, useRef } from 'react'\nimport { ReactEditor } from '../plugin/react-editor'\nimport { useSlateStatic } from './use-slate-static'\n\nexport function useTrackUserInput() {\n const editor = useSlateStatic()\n\n const receivedUserInput = useRef<boolean>(false)\n const animationFrameIdRef = useRef<number>(0)\n\n const onUserInput = useCallback(() => {\n if (receivedUserInput.current) {\n return\n }\n\n receivedUserInput.current = true\n\n const window = ReactEditor.getWindow(editor)\n window.cancelAnimationFrame(animationFrameIdRef.current)\n\n animationFrameIdRef.current = window.requestAnimationFrame(() => {\n receivedUserInput.current = false\n })\n }, [editor])\n\n useEffect(() => () => cancelAnimationFrame(animationFrameIdRef.current), [])\n\n return {\n receivedUserInput,\n onUserInput,\n }\n}\n","export const TRIPLE_CLICK = 3\n","import { isHotkey } from 'is-hotkey'\nimport { IS_APPLE } from './environment'\n\n/**\n * Hotkey mappings for each platform.\n */\n\nconst HOTKEYS = {\n bold: 'mod+b',\n compose: ['down', 'left', 'right', 'up', 'backspace', 'enter'],\n moveBackward: 'left',\n moveForward: 'right',\n moveWordBackward: 'ctrl+left',\n moveWordForward: 'ctrl+right',\n deleteBackward: 'shift?+backspace',\n deleteForward: 'shift?+delete',\n extendBackward: 'shift+left',\n extendForward: 'shift+right',\n italic: 'mod+i',\n insertSoftBreak: 'shift+enter',\n splitBlock: 'enter',\n undo: 'mod+z',\n}\n\nconst APPLE_HOTKEYS = {\n moveLineBackward: 'opt+up',\n moveLineForward: 'opt+down',\n moveWordBackward: 'opt+left',\n moveWordForward: 'opt+right',\n deleteBackward: ['ctrl+backspace', 'ctrl+h'],\n deleteForward: ['ctrl+delete', 'ctrl+d'],\n deleteLineBackward: 'cmd+shift?+backspace',\n deleteLineForward: ['cmd+shift?+delete', 'ctrl+k'],\n deleteWordBackward: 'opt+shift?+backspace',\n deleteWordForward: 'opt+shift?+delete',\n extendLineBackward: 'opt+shift+up',\n extendLineForward: 'opt+shift+down',\n redo: 'cmd+shift+z',\n transposeCharacter: 'ctrl+t',\n}\n\nconst WINDOWS_HOTKEYS = {\n deleteWordBackward: 'ctrl+shift?+backspace',\n deleteWordForward: 'ctrl+shift?+delete',\n redo: ['ctrl+y', 'ctrl+shift+z'],\n}\n\n/**\n * Create a platform-aware hotkey checker.\n */\n\nconst create = (key: string) => {\n const generic = HOTKEYS[<keyof typeof HOTKEYS>key]\n const apple = APPLE_HOTKEYS[<keyof typeof APPLE_HOTKEYS>key]\n const windows = WINDOWS_HOTKEYS[<keyof typeof WINDOWS_HOTKEYS>key]\n const isGeneric = generic && isHotkey(generic)\n const isApple = apple && isHotkey(apple)\n const isWindows = windows && isHotkey(windows)\n\n return (event: KeyboardEvent) => {\n if (isGeneric && isGeneric(event)) return true\n if (IS_APPLE && isApple && isApple(event)) return true\n if (!IS_APPLE && isWindows && isWindows(event)) return true\n return false\n }\n}\n\n/**\n * Hotkeys.\n */\n\nexport default {\n isBold: create('bold'),\n isCompose: create('compose'),\n isMoveBackward: create('moveBackward'),\n isMoveForward: create('moveForward'),\n isDeleteBackward: create('deleteBackward'),\n isDeleteForward: create('deleteForward'),\n isDeleteLineBackward: create('deleteLineBackward'),\n isDeleteLineForward: create('deleteLineForward'),\n isDeleteWordBackward: create('deleteWordBackward'),\n isDeleteWordForward: create('deleteWordForward'),\n isExtendBackward: create('extendBackward'),\n isExtendForward: create('extendForward'),\n isExtendLineBackward: create('extendLineBackward'),\n isExtendLineForward: create('extendLineForward'),\n isItalic: create('italic'),\n isMoveLineBackward: create('moveLineBackward'),\n isMoveLineForward: create('moveLineForward'),\n isMoveWordBackward: create('moveWordBackward'),\n isMoveWordForward: create('moveWordForward'),\n isRedo: create('redo'),\n isSoftBreak: create('insertSoftBreak'),\n isSplitBlock: create('splitBlock'),\n isTransposeCharacter: create('transposeCharacter'),\n isUndo: create('undo'),\n}\n","import { RefObject } from 'react'\nimport { ReactEditor } from '../../plugin/react-editor'\nimport { isTrackedMutation } from '../../utils/dom'\n\nexport type RestoreDOMManager = {\n registerMutations: (mutations: MutationRecord[]) => void\n restoreDOM: () => void\n clear: () => void\n}\n\nexport const createRestoreDomManager = (\n editor: ReactEditor,\n receivedUserInput: RefObject<boolean>\n): RestoreDOMManager => {\n let bufferedMutations: MutationRecord[] = []\n\n const clear = () => {\n bufferedMutations = []\n }\n\n const registerMutations = (mutations: MutationRecord[]) => {\n if (!receivedUserInput.current) {\n return\n }\n\n const trackedMutations = mutations.filter(mutation =>\n isTrackedMutation(editor, mutation, mutations)\n )\n\n bufferedMutations.push(...trackedMutations)\n }\n\n function restoreDOM() {\n if (bufferedMutations.length > 0) {\n bufferedMutations.reverse().forEach(mutation => {\n if (mutation.type === 'characterData') {\n // We don't want to restore the DOM for characterData mutations\n // because this interrupts the composition.\n return\n }\n\n mutation.removedNodes.forEach(node => {\n mutation.target.insertBefore(node, mutation.nextSibling)\n })\n\n mutation.addedNodes.forEach(node => {\n mutation.target.removeChild(node)\n })\n })\n\n // Clear buffered mutations to ensure we don't undo them twice\n clear()\n }\n }\n\n return {\n registerMutations,\n restoreDOM,\n clear,\n }\n}\n","import React, {\n Component,\n ComponentType,\n ContextType,\n ReactNode,\n RefObject,\n} from 'react'\nimport { EditorContext } from '../../hooks/use-slate-static'\nimport { IS_ANDROID } from '../../utils/environment'\nimport {\n createRestoreDomManager,\n RestoreDOMManager,\n} from './restore-dom-manager'\n\nconst MUTATION_OBSERVER_CONFIG: MutationObserverInit = {\n subtree: true,\n childList: true,\n characterData: true,\n characterDataOldValue: true,\n}\n\ntype RestoreDOMProps = {\n children?: ReactNode\n receivedUserInput: RefObject<boolean>\n node: RefObject<HTMLDivElement>\n}\n\n// We have to use a class component here since we rely on `getSnapshotBeforeUpdate` which has no FC equivalent\n// to run code synchronously immediately before react commits the component update to the DOM.\nclass RestoreDOMComponent extends Component<RestoreDOMProps> {\n static contextType = EditorContext\n context: ContextType<typeof EditorContext> = null\n\n private manager: RestoreDOMManager | null = null\n private mutationObserver: MutationObserver | null = null\n\n observe() {\n const { node } = this.props\n if (!node.current) {\n throw new Error('Failed to attach MutationObserver, `node` is undefined')\n }\n\n this.mutationObserver?.observe(node.current, MUTATION_OBSERVER_CONFIG)\n }\n\n componentDidMount() {\n const { receivedUserInput } = this.props\n const editor = this.context!\n\n this.manager = createRestoreDomManager(editor, receivedUserInput)\n this.mutationObserver = new MutationObserver(this.manager.registerMutations)\n\n this.observe()\n }\n\n getSnapshotBeforeUpdate() {\n const pendingMutations = this.mutationObserver?.takeRecords()\n if (pendingMutations?.length) {\n this.manager?.registerMutations(pendingMutations)\n }\n\n this.mutationObserver?.disconnect()\n this.manager?.restoreDOM()\n\n return null\n }\n\n componentDidUpdate() {\n this.manager?.clear()\n this.observe()\n }\n\n componentWillUnmount() {\n this.mutationObserver?.disconnect()\n }\n\n render() {\n return this.props.children\n }\n}\n\nexport const RestoreDOM: ComponentType<RestoreDOMProps> = IS_ANDROID\n ? RestoreDOMComponent\n : ({ children }) => <>{children}</>\n","import getDirection from 'direction'\nimport debounce from 'lodash/debounce'\nimport throttle from 'lodash/throttle'\nimport React, {\n useCallback,\n useEffect,\n useMemo,\n useReducer,\n useRef,\n useState,\n} from 'react'\nimport { JSX } from 'react'\nimport scrollIntoView from 'scroll-into-view-if-needed'\nimport {\n Editor,\n Element,\n Node,\n NodeEntry,\n Path,\n Range,\n Text,\n Transforms,\n} from 'slate'\nimport { useAndroidInputManager } from '../hooks/android-input-manager/use-android-input-manager'\nimport useChildren from '../hooks/use-children'\nimport { DecorateContext } from '../hooks/use-decorate'\nimport { useIsomorphicLayoutEffect } from '../hooks/use-isomorphic-layout-effect'\nimport { ReadOnlyContext } from '../hooks/use-read-only'\nimport { useSlate } from '../hooks/use-slate'\nimport { useTrackUserInput } from '../hooks/use-track-user-input'\nimport { ReactEditor } from '../plugin/react-editor'\nimport { TRIPLE_CLICK } from '../utils/constants'\nimport {\n DOMElement,\n DOMRange,\n DOMText,\n getDefaultView,\n isDOMElement,\n isDOMNode,\n isPlainTextOnlyPaste,\n} from '../utils/dom'\nimport {\n CAN_USE_DOM,\n HAS_BEFORE_INPUT_SUPPORT,\n IS_ANDROID,\n IS_CHROME,\n IS_FIREFOX,\n IS_FIREFOX_LEGACY,\n IS_IOS,\n IS_WEBKIT,\n IS_UC_MOBILE,\n IS_WECHATBROWSER,\n} from '../utils/environment'\nimport Hotkeys from '../utils/hotkeys'\nimport {\n EDITOR_TO_ELEMENT,\n EDITOR_TO_FORCE_RENDER,\n EDITOR_TO_PENDING_INSERTION_MARKS,\n EDITOR_TO_USER_MARKS,\n EDITOR_TO_USER_SELECTION,\n EDITOR_TO_WINDOW,\n ELEMENT_TO_NODE,\n IS_COMPOSING,\n IS_FOCUSED,\n IS_READ_ONLY,\n MARK_PLACEHOLDER_SYMBOL,\n NODE_TO_ELEMENT,\n PLACEHOLDER_SYMBOL,\n} from '../utils/weak-maps'\nimport { RestoreDOM } from './restore-dom/restore-dom'\nimport { AndroidInputManager } from '../hooks/android-input-manager/android-input-manager'\n\ntype DeferredOperation = () => void\n\nconst Children = (props: Parameters<typeof useChildren>[0]) => (\n <React.Fragment>{useChildren(props)}</React.Fragment>\n)\n\n/**\n * `RenderElementProps` are passed to the `renderElement` handler.\n */\n\nexport interface RenderElementProps {\n children: any\n element: Element\n attributes: {\n 'data-slate-node': 'element'\n 'data-slate-inline'?: true\n 'data-slate-void'?: true\n dir?: 'rtl'\n ref: any\n }\n}\n\n/**\n * `RenderLeafProps` are passed to the `renderLeaf` handler.\n */\n\nexport interface RenderLeafProps {\n children: any\n leaf: Text\n text: Text\n attributes: {\n 'data-slate-leaf': true\n }\n}\n\n/**\n * `EditableProps` are passed to the `<Editable>` component.\n */\n\nexport type EditableProps = {\n decorate?: (entry: NodeEntry) => Range[]\n onDOMBeforeInput?: (event: InputEvent) => void\n placeholder?: string\n readOnly?: boolean\n role?: string\n style?: React.CSSProperties\n renderElement?: (props: RenderElementProps) => JSX.Element\n renderLeaf?: (props: RenderLeafProps) => JSX.Element\n renderPlaceholder?: (props: RenderPlaceholderProps) => JSX.Element\n scrollSelectionIntoView?: (editor: ReactEditor, domRange: DOMRange) => void\n as?: React.ElementType\n disableDefaultStyles?: boolean\n} & React.TextareaHTMLAttributes<HTMLDivElement>\n\n/**\n * Editable.\n */\n\nexport const Editable = (props: EditableProps) => {\n const defaultRenderPlaceholder = useCallback(\n (props: RenderPlaceholderProps) => <DefaultPlaceholder {...props} />,\n []\n )\n const {\n autoFocus,\n decorate = defaultDecorate,\n onDOMBeforeInput: propsOnDOMBeforeInput,\n placeholder,\n readOnly = false,\n renderElement,\n renderLeaf,\n renderPlaceholder = defaultRenderPlaceholder,\n scrollSelectionIntoView = defaultScrollSelectionIntoView,\n style: userStyle = {},\n as: Component = 'div',\n disableDefaultStyles = false,\n ...attributes\n } = props\n const editor = useSlate()\n // Rerender editor when composition status changed\n const [isComposing, setIsComposing] = useState(false)\n const ref = useRef<HTMLDivElement | null>(null)\n const deferredOperations = useRef<DeferredOperation[]>([])\n const [placeholderHeight, setPlaceholderHeight] = useState<\n number | undefined\n >()\n\n const { onUserInput, receivedUserInput } = useTrackUserInput()\n\n const [, forceRender] = useReducer(s => s + 1, 0)\n EDITOR_TO_FORCE_RENDER.set(editor, forceRender)\n\n // Update internal state on each render.\n IS_READ_ONLY.set(editor, readOnly)\n\n // Keep track of some state for the event handler logic.\n const state = useMemo(\n () => ({\n isDraggingInternally: false,\n isUpdatingSelection: false,\n latestElement: null as DOMElement | null,\n hasMarkPlaceholder: false,\n }),\n []\n )\n\n // The autoFocus TextareaHTMLAttribute doesn't do anything on a div, so it\n // needs to be manually focused.\n useEffect(() => {\n if (ref.current && autoFocus) {\n ref.current.focus()\n }\n }, [autoFocus])\n\n /**\n * The AndroidInputManager object has a cyclical dependency on onDOMSelectionChange\n *\n * It is defined as a reference to simplify hook dependencies and clarify that\n * it needs to be initialized.\n */\n const androidInputManagerRef = useRef<\n AndroidInputManager | null | undefined\n >()\n\n // Listen on the native `selectionchange` event to be able to update any time\n // the selection changes. This is required because React's `onSelect` is leaky\n // and non-standard so it doesn't fire until after a selection has been\n // released. This causes issues in situations where another change happens\n // while a selection is being dragged.\n const onDOMSelectionChange = useMemo(\n () =>\n throttle(() => {\n const androidInputManager = androidInputManagerRef.current\n if (\n (IS_ANDROID || !ReactEditor.isComposing(editor)) &&\n (!state.isUpdatingSelection || androidInputManager?.isFlushing()) &&\n !state.isDraggingInternally\n ) {\n const root = ReactEditor.findDocumentOrShadowRoot(editor)\n const { activeElement } = root\n const el = ReactEditor.toDOMNode(editor, editor)\n const domSelection = root.getSelection()\n\n if (activeElement === el) {\n state.latestElement = activeElement\n IS_FOCUSED.set(editor, true)\n } else {\n IS_FOCUSED.delete(editor)\n }\n\n if (!domSelection) {\n return Transforms.deselect(editor)\n }\n\n const { anchorNode, focusNode } = domSelection\n\n const anchorNodeSelectable =\n ReactEditor.hasEditableTarget(editor, anchorNode) ||\n ReactEditor.isTargetInsideNonReadonlyVoid(editor, anchorNode)\n\n const focusNodeSelectable =\n ReactEditor.hasEditableTarget(editor, focusNode) ||\n ReactEditor.isTargetInsideNonReadonlyVoid(editor, focusNode)\n\n if (anchorNodeSelectable && focusNodeSelectable) {\n const range = ReactEditor.toSlateRange(editor, domSelection, {\n exactMatch: false,\n suppressThrow: true,\n })\n\n if (range) {\n if (\n !ReactEditor.isComposing(editor) &&\n !androidInputManager?.hasPendingChanges() &&\n !androidInputManager?.isFlushing()\n ) {\n Transforms.select(editor, range)\n } else {\n androidInputManager?.handleUserSelect(range)\n }\n }\n }\n\n // Deselect the editor if the dom selection is not selectable in readonly mode\n if (readOnly && (!anchorNodeSelectable || !focusNodeSelectable)) {\n Transforms.deselect(editor)\n }\n }\n }, 100),\n [editor, readOnly, state]\n )\n\n const scheduleOnDOMSelectionChange = useMemo(\n () => debounce(onDOMSelectionChange, 0),\n [onDOMSelectionChange]\n )\n\n androidInputManagerRef.current = useAndroidInputManager({\n node: ref,\n onDOMSelectionChange,\n scheduleOnDOMSelectionChange,\n })\n\n useIsomorphicLayoutEffect(() => {\n // Update element-related weak maps with the DOM element ref.\n let window\n if (ref.current && (window = getDefaultView(ref.current))) {\n EDITOR_TO_WINDOW.set(editor, window)\n EDITOR_TO_ELEMENT.set(editor, ref.current)\n NODE_TO_ELEMENT.set(editor, ref.current)\n ELEMENT_TO_NODE.set(ref.current, editor)\n } else {\n NODE_TO_ELEMENT.delete(editor)\n }\n\n // Make sure the DOM selection state is in sync.\n const { selection } = editor\n const root = ReactEditor.findDocumentOrShadowRoot(editor)\n const domSelection = root.getSelection()\n\n if (\n !domSelection ||\n !ReactEditor.isFocused(editor) ||\n androidInputManagerRef.current?.hasPendingAction()\n ) {\n return\n }\n\n const setDomSelection = (forceChange?: boolean) => {\n const hasDomSelection = domSelection.type !== 'None'\n\n // If the DOM selection is properly unset, we're done.\n if (!selection && !hasDomSelection) {\n return\n }\n\n // Get anchorNode and focusNode\n const focusNode = domSelection.focusNode\n let anchorNode\n\n // COMPAT: In firefox the normal seletion way does not work\n // (https://github.com/ianstormtaylor/slate/pull/5486#issue-1820720223)\n if (IS_FIREFOX && domSelection.rangeCount > 1) {\n const firstRange = domSelection.getRangeAt(0)\n const lastRange = domSelection.getRangeAt(domSelection.rangeCount - 1)\n\n // Right to left\n if (firstRange.startContainer === focusNode) {\n anchorNode = lastRange.endContainer\n } else {\n // Left to right\n anchorNode = firstRange.startContainer\n }\n } else {\n anchorNode = domSelection.anchorNode\n }\n\n // verify that the dom selection is in the editor\n const editorElement = EDITOR_TO_ELEMENT.get(editor)!\n let hasDomSelectionInEditor = false\n if (\n editorElement.contains(anchorNode) &&\n editorElement.contains(focusNode)\n ) {\n hasDomSelectionInEditor = true\n }\n\n // If the DOM selection is in the editor and the editor selection is already correct, we're done.\n if (\n hasDomSelection &&\n hasDomSelectionInEditor &&\n selection &&\n !forceChange\n ) {\n const slateRange = ReactEditor.toSlateRange(editor, domSelection, {\n exactMatch: true,\n\n // domSelection is not necessarily a valid Slate range\n // (e.g. when clicking on contentEditable:false element)\n suppressThrow: true,\n })\n\n if (slateRange && Range.equals(slateRange, selection)) {\n if (!state.hasMarkPlaceholder) {\n return\n }\n\n // Ensure selection is inside the mark placeholder\n if (\n anchorNode?.parentElement?.hasAttribute(\n 'data-slate-mark-placeholder'\n )\n ) {\n return\n }\n }\n }\n\n // when <Editable/> is being controlled through external value\n // then its children might just change - DOM responds to it on its own\n // but Slate's value is not being updated through any operation\n // and thus it doesn't transform selection on its own\n if (selection && !ReactEditor.hasRange(editor, selection)) {\n editor.selection = ReactEditor.toSlateRange(editor, domSelection, {\n exactMatch: false,\n suppressThrow: true,\n })\n return\n }\n\n // Otherwise the DOM selection is out of sync, so update it.\n state.isUpdatingSelection = true\n\n const newDomRange: DOMRange | null =\n selection && ReactEditor.toDOMRange(editor, selection)\n\n if (newDomRange) {\n if (ReactEditor.isComposing(editor) && !IS_ANDROID) {\n domSelection.collapseToEnd()\n } else if (Range.isBackward(selection!)) {\n domSelection.setBaseAndExtent(\n newDomRange.endContainer,\n newDomRange.endOffset,\n newDomRange.startContainer,\n newDomRange.startOffset\n )\n } else {\n domSelection.setBaseAndExtent(\n newDomRange.startContainer,\n newDomRange.startOffset,\n newDomRange.endContainer,\n newDomRange.endOffset\n )\n }\n scrollSelectionIntoView(editor, newDomRange)\n } else {\n domSelection.removeAllRanges()\n }\n\n return newDomRange\n }\n\n // In firefox if there is more then 1 range and we call setDomSelection we remove the ability to select more cells in a table\n if (domSelection.rangeCount <= 1) {\n setDomSelection()\n }\n\n const ensureSelection =\n androidInputManagerRef.current?.isFlushing() === 'action'\n\n if (!IS_ANDROID || !ensureSelection) {\n setTimeout(() => {\n state.isUpdatingSelection = false\n })\n return\n }\n\n let timeoutId: ReturnType<typeof setTimeout> | null = null\n const animationFrameId = requestAnimationFrame(() => {\n if (ensureSelection) {\n const ensureDomSelection = (forceChange?: boolean) => {\n try {\n const el = ReactEditor.toDOMNode(editor, editor)\n el.focus()\n\n setDomSelection(forceChange)\n } catch (e) {\n // Ignore, dom and state might be out of sync\n }\n }\n\n // Compat: Android IMEs try to force their selection by manually re-applying it even after we set it.\n // This essentially would make setting the slate selection during an update meaningless, so we force it\n // again here. We can't only do it in the setTimeout after the animation frame since that would cause a\n // visible flicker.\n ensureDomSelection()\n\n timeoutId = setTimeout(() => {\n // COMPAT: While setting the selection in an animation frame visually correctly sets the selection,\n // it doesn't update GBoards spellchecker state. We have to manually trigger a selection change after\n // the animation frame to ensure it displays the correct state.\n ensureDomSelection(true)\n state.isUpdatingSelection = false\n })\n }\n })\n\n return () => {\n cancelAnimationFrame(animationFrameId)\n if (timeoutId) {\n clearTimeout(timeoutId)\n }\n }\n })\n\n // Listen on the native `beforeinput` event to get real \"Level 2\" events. This\n // is required because React's `beforeinput` is fake and never really attaches\n // to the real event sadly. (2019/11/01)\n // https://github.com/facebook/react/issues/11211\n const onDOMBeforeInput = useCallback(\n (event: InputEvent) => {\n onUserInput()\n\n if (\n !readOnly &&\n ReactEditor.hasEditableTarget(editor, event.target) &&\n !isDOMEventHandled(event, propsOnDOMBeforeInput)\n ) {\n // COMPAT: BeforeInput events aren't cancelable on android, so we have to handle them differently using the android input manager.\n if (androidInputManagerRef.current) {\n return androidInputManagerRef.current.handleDOMBeforeInput(event)\n }\n\n // Some IMEs/Chrome extensions like e.g. Grammarly set the selection immediately before\n // triggering a `beforeinput` expecting the change to be applied to the immediately before\n // set selection.\n scheduleOnDOMSelectionChange.flush()\n onDOMSelectionChange.flush()\n\n const { selection } = editor\n const { inputType: type } = event\n const data = (event as any).dataTransfer || event.data || undefined\n\n const isCompositionChange =\n type === 'insertCompositionText' || type === 'deleteCompositionText'\n\n // COMPAT: use composition change events as a hint to where we should insert\n // composition text if we aren't composing to work around https://github.com/ianstormtaylor/slate/issues/5038\n if (isCompositionChange && ReactEditor.isComposing(editor)) {\n return\n }\n\n let native = false\n if (\n type === 'insertText' &&\n selection &&\n Range.isCollapsed(selection) &&\n // Only use native character insertion for single characters a-z or space for now.\n // Long-press events (hold a + press 4 = ä) to choose a special character otherwise\n // causes duplicate inserts.\n event.data &&\n event.data.length === 1 &&\n /[a-z ]/i.test(event.data) &&\n // Chrome has issues correctly editing the start of nodes: https://bugs.chromium.org/p/chromium/issues/detail?id=1249405\n // When there is an inline element, e.g. a link, and you select\n // right after it (the start of the next node).\n selection.anchor.offset !== 0\n ) {\n native = true\n\n // Skip native if there are marks, as\n // `insertText` will insert a node, not just text.\n if (editor.marks) {\n native = false\n }\n\n // Chrome also has issues correctly editing the end of anchor elements: https://bugs.chromium.org/p/chromium/issues/detail?id=1259100\n // Therefore we don't allow native events to insert text at the end of anchor nodes.\n const { anchor } = selection\n\n const [node, offset] = ReactEditor.toDOMPoint(editor, anchor)\n const anchorNode = node.parentElement?.closest('a')\n\n const window = ReactEditor.getWindow(editor)\n\n if (\n native &&\n anchorNode &&\n ReactEditor.hasDOMNode(editor, anchorNode)\n ) {\n // Find the last text node inside the anchor.\n const lastText = window?.document\n .createTreeWalker(anchorNode, NodeFilter.SHOW_TEXT)\n .lastChild() as DOMText | null\n\n if (lastText === node && lastText.textContent?.length === offset) {\n native = false\n }\n }\n\n // Chrome has issues with the presence of tab characters inside elements with whiteSpace = 'pre'\n // causing abnormal insert behavior: https://bugs.chromium.org/p/chromium/issues/detail?id=1219139\n if (\n native &&\n node.parentElement &&\n window?.getComputedStyle(node.parentElement)?.whiteSpace === 'pre'\n ) {\n const block = Editor.above(editor, {\n at: anchor.path,\n match: n => Element.isElement(n) && Editor.isBlock(editor, n),\n })\n\n if (block && Node.string(block[0]).includes('\\t')) {\n native = false\n }\n }\n }\n\n // COMPAT: For the deleting forward/backward input types we don't want\n // to change the selection because it is the range that will be deleted,\n // and those commands determine that for themselves.\n if (!type.startsWith('delete') || type.startsWith('deleteBy')) {\n const [targetRange] = (event as any).getTargetRanges()\n\n if (targetRange) {\n const range = ReactEditor.toSlateRange(editor, targetRange, {\n exactMatch: false,\n suppressThrow: false,\n })\n\n if (!selection || !Range.equals(selection, range)) {\n native = false\n\n const selectionRef =\n !isCompositionChange &&\n editor.selection &&\n Editor.rangeRef(editor, editor.selection)\n\n Transforms.select(editor, range)\n\n if (selectionRef) {\n EDITOR_TO_USER_SELECTION.set(editor, selectionRef)\n }\n }\n }\n }\n\n // Composition change types occur while a user is composing text and can't be\n // cancelled. Let them through and wait for the composition to end.\n if (isCompositionChange) {\n return\n }\n\n if (!native) {\n event.preventDefault()\n }\n\n // COMPAT: If the selection is expanded, even if the command seems like\n // a delete forward/backward command it should delete the selection.\n if (\n selection &&\n Range.isExpanded(selection) &&\n type.startsWith('delete')\n ) {\n const direction = type.endsWith('Backward') ? 'backward' : 'forward'\n Editor.deleteFragment(editor, { direction })\n return\n }\n\n switch (type) {\n case 'deleteByComposition':\n case 'deleteByCut':\n case 'deleteByDrag': {\n Editor.deleteFragment(editor)\n break\n }\n\n case 'deleteContent':\n case 'deleteContentForward': {\n Editor.deleteForward(editor)\n break\n }\n\n case 'deleteContentBackward': {\n Editor.deleteBackward(editor)\n break\n }\n\n case 'deleteEntireSoftLine': {\n Editor.deleteBackward(editor, { unit: 'line' })\n Editor.deleteForward(editor, { unit: 'line' })\n break\n }\n\n case 'deleteHardLineBackward': {\n Editor.deleteBackward(editor, { unit: 'block' })\n break\n }\n\n case 'deleteSoftLineBackward': {\n Editor.deleteBackward(editor, { unit: 'line' })\n break\n }\n\n case 'deleteHardLineForward': {\n Editor.deleteForward(editor, { unit: 'block' })\n break\n }\n\n case 'deleteSoftLineForward': {\n Editor.deleteForward(editor, { unit: 'line' })\n break\n }\n\n case 'deleteWordBackward': {\n Editor.deleteBackward(editor, { unit: 'word' })\n break\n }\n\n case 'deleteWordForward': {\n Editor.deleteForward(editor, { unit: 'word' })\n break\n }\n\n case 'insertLineBreak':\n Editor.insertSoftBreak(editor)\n break\n\n case 'insertParagraph': {\n Editor.insertBreak(editor)\n break\n }\n\n case 'insertFromComposition':\n case 'insertFromDrop':\n case 'insertFromPaste':\n case 'insertFromYank':\n case 'insertReplacementText':\n case 'insertText': {\n if (type === 'insertFromComposition') {\n // COMPAT: in Safari, `compositionend` is dispatched after the\n // `beforeinput` for \"insertFromComposition\". But if we wait for it\n // then we will abort because we're still composing and the selection\n // won't be updated properly.\n // https://www.w3.org/TR/input-events-2/\n if (ReactEditor.isComposing(editor)) {\n setIsComposing(false)\n IS_COMPOSING.set(editor, false)\n }\n }\n\n // use a weak comparison instead of 'instanceof' to allow\n // programmatic access of paste events coming from external windows\n // like cypress where cy.window does not work realibly\n if (data?.constructor.name === 'DataTransfer') {\n ReactEditor.insertData(editor, data)\n } else if (typeof data === 'string') {\n // Only insertText operations use the native functionality, for now.\n // Potentially expand to single character deletes, as well.\n if (native) {\n deferredOperations.current.push(() =>\n Editor.insertText(editor, data)\n )\n } else {\n Editor.insertText(editor, data)\n }\n }\n\n break\n }\n }\n\n // Restore the actual user section if nothing manually set it.\n const toRestore = EDITOR_TO_USER_SELECTION.get(editor)?.unref()\n EDITOR_TO_USER_SELECTION.delete(editor)\n\n if (\n toRestore &&\n (!editor.selection || !Range.equals(editor.selection, toRestore))\n ) {\n Transforms.select(editor, toRestore)\n }\n }\n },\n [\n editor,\n onDOMSelectionChange,\n onUserInput,\n propsOnDOMBeforeInput,\n readOnly,\n scheduleOnDOMSelectionChange,\n ]\n )\n\n const callbackRef = useCallback(\n (node: HTMLDivElement | null) => {\n if (node == null) {\n onDOMSelectionChange.cancel()\n scheduleOnDOMSelectionChange.cancel()\n\n EDITOR_TO_ELEMENT.delete(editor)\n NODE_TO_ELEMENT.delete(editor)\n\n if (ref.current && HAS_BEFORE_INPUT_SUPPORT) {\n // @ts-ignore The `beforeinput` event isn't recognized.\n ref.current.removeEventListener('beforeinput', onDOMBeforeInput)\n }\n } else {\n // Attach a native DOM event handler for `beforeinput` events, because React's\n // built-in `onBeforeInput` is actually a leaky polyfill that doesn't expose\n // real `beforeinput` events sadly... (2019/11/04)\n // https://github.com/facebook/react/issues/11211\n if (HAS_BEFORE_INPUT_SUPPORT) {\n // @ts-ignore The `beforeinput` event isn't recognized.\n node.addEventListener('beforeinput', onDOMBeforeInput)\n }\n }\n\n ref.current = node\n },\n [\n onDOMSelectionChange,\n scheduleOnDOMSelectionChange,\n editor,\n onDOMBeforeInput,\n ]\n )\n\n // Attach a native DOM event handler for `selectionchange`, because React's\n // built-in `onSelect` handler doesn't fire for all selection changes. It's a\n // leaky polyfill that only fires on keypresses or clicks. Instead, we want to\n // fire for any change to the selection inside the editor. (2019/11/04)\n // https://github.com/facebook/react/issues/5785\n useIsomorphicLayoutEffect(() => {\n const window = ReactEditor.getWindow(editor)\n\n window.document.addEventListener(\n 'selectionchange',\n scheduleOnDOMSelectionChange\n )\n\n return () => {\n window.document.removeEventListener(\n 'selectionchange',\n scheduleOnDOMSelectionChange\n )\n }\n }, [scheduleOnDOMSelectionChange])\n\n const decorations = decorate([editor, []])\n\n const showPlaceholder =\n placeholder &&\n editor.children.length === 1 &&\n Array.from(Node.texts(editor)).length === 1 &&\n Node.string(editor) === '' &&\n !isComposing\n\n const placeHolderResizeHandler = useCallback(\n (placeholderEl: HTMLElement | null) => {\n if (placeholderEl && showPlaceholder) {\n setPlaceholderHeight(placeholderEl.getBoundingClientRect()?.height)\n } else {\n setPlaceholderHeight(undefined)\n }\n },\n [showPlaceholder]\n )\n\n if (showPlaceholder) {\n const start = Editor.start(editor, [])\n decorations.push({\n [PLACEHOLDER_SYMBOL]: true,\n placeholder,\n onPlaceholderResize: placeHolderResizeHandler,\n anchor: start,\n focus: start,\n })\n }\n\n const { marks } = editor\n state.hasMarkPlaceholder = false\n\n if (editor.selection && Range.isCollapsed(editor.selection) && marks) {\n const { anchor } = editor.selection\n const leaf = Node.leaf(editor, anchor.path)\n const { text, ...rest } = leaf\n\n // While marks isn't a 'complete' text, we can still use loose Text.equals\n // here which only compares marks anyway.\n if (!Text.equals(leaf, marks as Text, { loose: true })) {\n state.hasMarkPlaceholder = true\n\n const unset = Object.fromEntries(\n Object.keys(rest).map(mark => [mark, null])\n )\n\n decorations.push({\n [MARK_PLACEHOLDER_SYMBOL]: true,\n ...unset,\n ...marks,\n\n anchor,\n focus: anchor,\n })\n }\n }\n\n // Update EDITOR_TO_MARK_PLACEHOLDER_MARKS in setTimeout useEffect to ensure we don't set it\n // before we receive the composition end event.\n useEffect(() => {\n setTimeout(() => {\n const { selection } = editor\n if (selection) {\n const { anchor } = selection\n const text = Node.leaf(editor, anchor.path)\n\n // While marks isn't a 'complete' text, we can still use loose Text.equals\n // here which only compares marks anyway.\n if (marks && !Text.equals(text, marks as Text, { loose: true })) {\n EDITOR_TO_PENDING_INSERTION_MARKS.set(editor, marks)\n return\n }\n }\n\n EDITOR_TO_PENDING_INSERTION_MARKS.delete(editor)\n })\n })\n\n return (\n <ReadOnlyContext.Provider value={readOnly}>\n <DecorateContext.Provider value={decorate}>\n <RestoreDOM node={ref} receivedUserInput={receivedUserInput}>\n <Component\n role={readOnly ? undefined : 'textbox'}\n aria-multiline={readOnly ? undefined : true}\n {...attributes}\n // COMPAT: Certain browsers don't support the `beforeinput` event, so we'd\n // have to use hacks to make these replacement-based features work.\n // For SSR situations HAS_BEFORE_INPUT_SUPPORT is false and results in prop\n // mismatch warning app moves to browser. Pass-through consumer props when\n // not CAN_USE_DOM (SSR) and default to falsy value\n spellCheck={\n HAS_BEFORE_INPUT_SUPPORT || !CAN_USE_DOM\n ? attributes.spellCheck\n : false\n }\n autoCorrect={\n HAS_BEFORE_INPUT_SUPPORT || !CAN_USE_DOM\n ? attributes.autoCorrect\n : 'false'\n }\n autoCapitalize={\n HAS_BEFORE_INPUT_SUPPORT || !CAN_USE_DOM\n ? attributes.autoCapitalize\n : 'false'\n }\n data-slate-editor\n data-slate-node=\"value\"\n // explicitly set this\n contentEditable={!readOnly}\n // in some cases, a decoration needs access to the range / selection to decorate a text node,\n // then you will select the whole text node when you select part the of text\n // this magic zIndex=\"-1\" will fix it\n zindex={-1}\n suppressContentEditableWarning\n ref={callbackRef}\n style={{\n ...(disableDefaultStyles\n ? {}\n : {\n // Allow positioning relative to the editable element.\n position: 'relative',\n // Preserve adjacent whitespace and new lines.\n whiteSpace: 'pre-wrap',\n // Allow words to break if they are too long.\n wordWrap: 'break-word',\n // Make the minimum height that of the placeholder.\n ...(placeholderHeight\n ? { minHeight: placeholderHeight }\n : {}),\n }),\n // Allow for passed-in styles to override anything.\n ...userStyle,\n }}\n onBeforeInput={useCallback(\n (event: React.FormEvent<HTMLDivElement>) => {\n // COMPAT: Certain browsers don't support the `beforeinput` event, so we\n // fall back to React's leaky polyfill instead just for it. It\n // only works for the `insertText` input type.\n if (\n !HAS_BEFORE_INPUT_SUPPORT &&\n !readOnly &&\n !isEventHandled(event, attributes.onBeforeInput) &&\n ReactEditor.hasSelectableTarget(editor, event.target)\n ) {\n event.preventDefault()\n if (!ReactEditor.isComposing(editor)) {\n const text = (event as any).data as string\n Editor.insertText(editor, text)\n }\n }\n },\n [attributes.onBeforeInput, editor, readOnly]\n )}\n onInput={useCallback(\n (event: React.FormEvent<HTMLDivElement>) => {\n if (isEventHandled(event, attributes.onInput)) {\n return\n }\n\n if (androidInputManagerRef.current) {\n androidInputManagerRef.current.handleInput()\n return\n }\n\n // Flush native operations, as native events will have propogated\n // and we can correctly compare DOM text values in components\n // to stop rendering, so that browser functions like autocorrect\n // and spellcheck work as expected.\n for (const op of deferredOperations.current) {\n op()\n }\n deferredOperations.current = []\n },\n [attributes.onInput]\n )}\n onBlur={useCallback(\n (event: React.FocusEvent<HTMLDivElement>) => {\n if (\n readOnly ||\n state.isUpdatingSelection ||\n !ReactEditor.hasSelectableTarget(editor, event.target) ||\n isEventHandled(event, attributes.onBlur)\n ) {\n return\n }\n\n // COMPAT: If the current `activeElement` is still the previous\n // one, this is due to the window being blurred when the tab\n // itself becomes unfocused, so we want to abort early to allow to\n // editor to stay focused when the tab becomes focused again.\n const root = ReactEditor.findDocumentOrShadowRoot(editor)\n if (state.latestElement === root.activeElement) {\n return\n }\n\n const { relatedTarget } = event\n const el = ReactEditor.toDOMNode(editor, editor)\n\n // COMPAT: The event should be ignored if the focus is returning\n // to the editor from an embedded editable element (eg. an <input>\n // element inside a void node).\n if (relatedTarget === el) {\n return\n }\n\n // COMPAT: The event should be ignored if the focus is moving from\n // the editor to inside a void node's spacer element.\n if (\n isDOMElement(relatedTarget) &&\n relatedTarget.hasAttribute('data-slate-spacer')\n ) {\n return\n }\n\n // COMPAT: The event should be ignored if the focus is moving to a\n // non- editable section of an element that isn't a void node (eg.\n // a list item of the check list example).\n if (\n relatedTarget != null &&\n isDOMNode(relatedTarget) &&\n ReactEditor.hasDOMNode(editor, relatedTarget)\n ) {\n const node = ReactEditor.toSlateNode(editor, relatedTarget)\n\n if (Element.isElement(node) && !editor.isVoid(node)) {\n return\n }\n }\n\n // COMPAT: Safari doesn't always remove the selection even if the content-\n // editable element no longer has focus. Refer to:\n // https://stackoverflow.com/questions/12353247/force-contenteditable-div-to-stop-accepting-input-after-it-loses-focus-under-web\n if (IS_WEBKIT) {\n const domSelection = root.getSelection()\n domSelection?.removeAllRanges()\n }\n\n IS_FOCUSED.delete(editor)\n },\n [\n readOnly,\n state.isUpdatingSelection,\n state.latestElement,\n editor,\n attributes.onBlur,\n ]\n )}\n onClick={useCallback(\n (event: React.MouseEvent<HTMLDivElement>) => {\n if (\n ReactEditor.hasTarget(editor, event.target) &&\n !isEventHandled(event, attributes.onClick) &&\n isDOMNode(event.target)\n ) {\n const node = ReactEditor.toSlateNode(editor, event.target)\n const path = ReactEditor.findPath(editor, node)\n\n // At this time, the Slate document may be arbitrarily different,\n // because onClick handlers can change the document before we get here.\n // Therefore we must check that this path actually exists,\n // and that it still refers to the same node.\n if (\n !Editor.hasPath(editor, path) ||\n Node.get(editor, path) !== node\n ) {\n return\n }\n\n if (event.detail === TRIPLE_CLICK && path.length >= 1) {\n let blockPath = path\n if (\n !(Element.isElement(node) && Editor.isBlock(editor, node))\n ) {\n const block = Editor.above(editor, {\n match: n =>\n Element.isElement(n) && Editor.isBlock(editor, n),\n at: path,\n })\n\n blockPath = block?.[1] ?? path.slice(0, 1)\n }\n\n const range = Editor.range(editor, blockPath)\n Transforms.select(editor, range)\n return\n }\n\n if (readOnly) {\n return\n }\n\n const start = Editor.start(editor, path)\n const end = Editor.end(editor, path)\n const startVoid = Editor.void(editor, { at: start })\n const endVoid = Editor.void(editor, { at: end })\n\n if (\n startVoid &&\n endVoid &&\n Path.equals(startVoid[1], endVoid[1])\n ) {\n const range = Editor.range(editor, start)\n Transforms.select(editor, range)\n }\n }\n },\n [editor, attributes.onClick, readOnly]\n )}\n onCompositionEnd={useCallback(\n (event: React.CompositionEvent<HTMLDivElement>) => {\n if (ReactEditor.hasSelectableTarget(editor, event.target)) {\n if (ReactEditor.isComposing(editor)) {\n Promise.resolve().then(() => {\n setIsComposing(false)\n IS_COMPOSING.set(editor, false)\n })\n }\n\n androidInputManagerRef.current?.handleCompositionEnd(event)\n\n if (\n isEventHandled(event, attributes.onCompositionEnd) ||\n IS_ANDROID\n ) {\n return\n }\n\n // COMPAT: In Chrome, `beforeinput` events for compositions\n // aren't correct and never fire the \"insertFromComposition\"\n // type that we need. So instead, insert whenever a composition\n // ends since it will already have been committed to the DOM.\n if (\n !IS_WEBKIT &&\n !IS_FIREFOX_LEGACY &&\n !IS_IOS &&\n !IS_WECHATBROWSER &&\n !IS_UC_MOBILE &&\n event.data\n ) {\n const placeholderMarks =\n EDITOR_TO_PENDING_INSERTION_MARKS.get(editor)\n EDITOR_TO_PENDING_INSERTION_MARKS.delete(editor)\n\n // Ensure we insert text with the marks the user was actually seeing\n if (placeholderMarks !== undefined) {\n EDITOR_TO_USER_MARKS.set(editor, editor.marks)\n editor.marks = placeholderMarks\n }\n\n Editor.insertText(editor, event.data)\n\n const userMarks = EDITOR_TO_USER_MARKS.get(editor)\n EDITOR_TO_USER_MARKS.delete(editor)\n if (userMarks !== undefined) {\n editor.marks = userMarks\n }\n }\n }\n },\n [attributes.onCompositionEnd, editor]\n )}\n onCompositionUpdate={useCallback(\n (event: React.CompositionEvent<HTMLDivElement>) => {\n if (\n ReactEditor.hasSelectableTarget(editor, event.target) &&\n !isEventHandled(event, attributes.onCompositionUpdate)\n ) {\n if (!ReactEditor.isComposing(editor)) {\n setIsComposing(true)\n IS_COMPOSING.set(editor, true)\n }\n }\n },\n [attributes.onCompositionUpdate, editor]\n )}\n onCompositionStart={useCallback(\n (event: React.CompositionEvent<HTMLDivElement>) => {\n if (ReactEditor.hasSelectableTarget(editor, event.target)) {\n androidInputManagerRef.current?.handleCompositionStart(event)\n\n if (\n isEventHandled(event, attributes.onCompositionStart) ||\n IS_ANDROID\n ) {\n return\n }\n\n setIsComposing(true)\n\n const { selection } = editor\n if (selection && Range.isExpanded(selection)) {\n Editor.deleteFragment(editor)\n return\n }\n }\n },\n [attributes.onCompositionStart, editor]\n )}\n onCopy={useCallback(\n (event: React.ClipboardEvent<HTMLDivElement>) => {\n if (\n ReactEditor.hasSelectableTarget(editor, event.target) &&\n !isEventHandled(event, attributes.onCopy) &&\n !isDOMEventTargetInput(event)\n ) {\n event.preventDefault()\n ReactEditor.setFragmentData(\n editor,\n event.clipboardData,\n 'copy'\n )\n }\n },\n [attributes.onCopy, editor]\n )}\n onCut={useCallback(\n (event: React.ClipboardEvent<HTMLDivElement>) => {\n if (\n !readOnly &&\n ReactEditor.hasSelectableTarget(editor, event.target) &&\n !isEventHandled(event, attributes.onCut) &&\n !isDOMEventTargetInput(event)\n ) {\n event.preventDefault()\n ReactEditor.setFragmentData(\n editor,\n event.clipboardData,\n 'cut'\n )\n const { selection } = editor\n\n if (selection) {\n if (Range.isExpanded(selection)) {\n Editor.deleteFragment(editor)\n } else {\n const node = Node.parent(editor, selection.anchor.path)\n if (Editor.isVoid(editor, node)) {\n Transforms.delete(editor)\n }\n }\n }\n }\n },\n [readOnly, editor, attributes.onCut]\n )}\n onDragOver={useCallback(\n (event: React.DragEvent<HTMLDivElement>) => {\n if (\n ReactEditor.hasTarget(editor, event.target) &&\n !isEventHandled(event, attributes.onDragOver)\n ) {\n // Only when the target is void, call `preventDefault` to signal\n // that drops are allowed. Editable content is droppable by\n // default, and calling `preventDefault` hides the cursor.\n const node = ReactEditor.toSlateNode(editor, event.target)\n\n if (Element.isElement(node) && Editor.isVoid(editor, node)) {\n event.preventDefault()\n }\n }\n },\n [attributes.onDragOver, editor]\n )}\n onDragStart={useCallback(\n (event: React.DragEvent<HTMLDivElement>) => {\n if (\n !readOnly &&\n ReactEditor.hasTarget(editor, event.target) &&\n !isEventHandled(event, attributes.onDragStart)\n ) {\n const node = ReactEditor.toSlateNode(editor, event.target)\n const path = ReactEditor.findPath(editor, node)\n const voidMatch =\n (Element.isElement(node) && Editor.isVoid(editor, node)) ||\n Editor.void(editor, { at: path, voids: true })\n\n // If starting a drag on a void node, make sure it is selected\n // so that it shows up in the selection's fragment.\n if (voidMatch) {\n const range = Editor.range(editor, path)\n Transforms.select(editor, range)\n }\n\n state.isDraggingInternally = true\n\n ReactEditor.setFragmentData(\n editor,\n event.dataTransfer,\n 'drag'\n )\n }\n },\n [readOnly, editor, attributes.onDragStart, state]\n )}\n onDrop={useCallback(\n (event: React.DragEvent<HTMLDivElement>) => {\n if (\n !readOnly &&\n ReactEditor.hasTarget(editor, event.target) &&\n !isEventHandled(event, attributes.onDrop)\n ) {\n event.preventDefault()\n\n // Keep a reference to the dragged range before updating selection\n const draggedRange = editor.selection\n\n // Find the range where the drop happened\n const range = ReactEditor.findEventRange(editor, event)\n const data = event.dataTransfer\n\n Transforms.select(editor, range)\n\n if (state.isDraggingInternally) {\n if (\n draggedRange &&\n !Range.equals(draggedRange, range) &&\n !Editor.void(editor, { at: range, voids: true })\n ) {\n Transforms.delete(editor, {\n at: draggedRange,\n })\n }\n }\n\n ReactEditor.insertData(editor, data)\n\n // When dragging from another source into the editor, it's possible\n // that the current editor does not have focus.\n if (!ReactEditor.isFocused(editor)) {\n ReactEditor.focus(editor)\n }\n }\n\n state.isDraggingInternally = false\n },\n [readOnly, editor, attributes.onDrop, state]\n )}\n onDragEnd={useCallback(\n (event: React.DragEvent<HTMLDivElement>) => {\n if (\n !readOnly &&\n state.isDraggingInternally &&\n attributes.onDragEnd &&\n ReactEditor.hasTarget(editor, event.target)\n ) {\n attributes.onDragEnd(event)\n }\n\n // When dropping on a different droppable element than the current editor,\n // `onDrop` is not called. So we need to clean up in `onDragEnd` instead.\n // Note: `onDragEnd` is only called when `onDrop` is not called\n state.isDraggingInternally = false\n },\n [readOnly, state, attributes, editor]\n )}\n onFocus={useCallback(\n (event: React.FocusEvent<HTMLDivElement>) => {\n if (\n !readOnly &&\n !state.isUpdatingSelection &&\n ReactEditor.hasEditableTarget(editor, event.target) &&\n !isEventHandled(event, attributes.onFocus)\n ) {\n const el = ReactEditor.toDOMNode(editor, editor)\n const root = ReactEditor.findDocumentOrShadowRoot(editor)\n state.latestElement = root.activeElement\n\n // COMPAT: If the editor has nested editable elements, the focus\n // can go to them. In Firefox, this must be prevented because it\n // results in issues with keyboard navigation. (2017/03/30)\n if (IS_FIREFOX && event.target !== el) {\n el.focus()\n return\n }\n\n IS_FOCUSED.set(editor, true)\n }\n },\n [readOnly, state, editor, attributes.onFocus]\n )}\n onKeyDown={useCallback(\n (event: React.KeyboardEvent<HTMLDivElement>) => {\n if (\n !readOnly &&\n ReactEditor.hasEditableTarget(editor, event.target)\n ) {\n androidInputManagerRef.current?.handleKeyDown(event)\n\n const { nativeEvent } = event\n\n // COMPAT: The composition end event isn't fired reliably in all browsers,\n // so we sometimes might end up stuck in a composition state even though we\n // aren't composing any more.\n if (\n ReactEditor.isComposing(editor) &&\n nativeEvent.isComposing === false\n ) {\n IS_COMPOSING.set(editor, false)\n setIsComposing(false)\n }\n\n if (\n isEventHandled(event, attributes.onKeyDown) ||\n ReactEditor.isComposing(editor)\n ) {\n return\n }\n\n const { selection } = editor\n const element =\n editor.children[\n selection !== null ? selection.focus.path[0] : 0\n ]\n const isRTL = getDirection(Node.string(element)) === 'rtl'\n\n // COMPAT: Since we prevent the default behavior on\n // `beforeinput` events, the browser doesn't think there's ever\n // any history stack to undo or redo, so we have to manage these\n // hotkeys ourselves. (2019/11/06)\n if (Hotkeys.isRedo(nativeEvent)) {\n event.preventDefault()\n const maybeHistoryEditor: any = editor\n\n if (typeof maybeHistoryEditor.redo === 'function') {\n maybeHistoryEditor.redo()\n }\n\n return\n }\n\n if (Hotkeys.isUndo(nativeEvent)) {\n event.preventDefault()\n const maybeHistoryEditor: any = editor\n\n if (typeof maybeHistoryEditor.undo === 'function') {\n maybeHistoryEditor.undo()\n }\n\n return\n }\n\n // COMPAT: Certain browsers don't handle the selection updates\n // properly. In Chrome, the selection isn't properly extended.\n // And in Firefox, the selection isn't properly collapsed.\n // (2017/10/17)\n if (Hotkeys.isMoveLineBackward(nativeEvent)) {\n event.preventDefault()\n Transforms.move(editor, { unit: 'line', reverse: true })\n return\n }\n\n if (Hotkeys.isMoveLineForward(nativeEvent)) {\n event.preventDefault()\n Transforms.move(editor, { unit: 'line' })\n return\n }\n\n if (Hotkeys.isExtendLineBackward(nativeEvent)) {\n event.preventDefault()\n Transforms.move(editor, {\n unit: 'line',\n edge: 'focus',\n reverse: true,\n })\n return\n }\n\n if (Hotkeys.isExtendLineForward(nativeEvent)) {\n event.preventDefault()\n Transforms.move(editor, { unit: 'line', edge: 'focus' })\n return\n }\n\n // COMPAT: If a void node is selected, or a zero-width text node\n // adjacent to an inline is selected, we need to handle these\n // hotkeys manually because browsers won't be able to skip over\n // the void node with the zero-width space not being an empty\n // string.\n if (Hotkeys.isMoveBackward(nativeEvent)) {\n event.preventDefault()\n\n if (selection && Range.isCollapsed(selection)) {\n Transforms.move(editor, { reverse: !isRTL })\n } else {\n Transforms.collapse(editor, {\n edge: isRTL ? 'end' : 'start',\n })\n }\n\n return\n }\n\n if (Hotkeys.isMoveForward(nativeEvent)) {\n event.preventDefault()\n\n if (selection && Range.isCollapsed(selection)) {\n Transforms.move(editor, { reverse: isRTL })\n } else {\n Transforms.collapse(editor, {\n edge: isRTL ? 'start' : 'end',\n })\n }\n\n return\n }\n\n if (Hotkeys.isMoveWordBackward(nativeEvent)) {\n event.preventDefault()\n\n if (selection && Range.isExpanded(selection)) {\n Transforms.collapse(editor, { edge: 'focus' })\n }\n\n Transforms.move(editor, { unit: 'word', reverse: !isRTL })\n return\n }\n\n if (Hotkeys.isMoveWordForward(nativeEvent)) {\n event.preventDefault()\n\n if (selection && Range.isExpanded(selection)) {\n Transforms.collapse(editor, { edge: 'focus' })\n }\n\n Transforms.move(editor, { unit: 'word', reverse: isRTL })\n return\n }\n\n // COMPAT: Certain browsers don't support the `beforeinput` event, so we\n // fall back to guessing at the input intention for hotkeys.\n // COMPAT: In iOS, some of these hotkeys are handled in the\n if (!HAS_BEFORE_INPUT_SUPPORT) {\n // We don't have a core behavior for these, but they change the\n // DOM if we don't prevent them, so we have to.\n if (\n Hotkeys.isBold(nativeEvent) ||\n Hotkeys.isItalic(nativeEvent) ||\n Hotkeys.isTransposeCharacter(nativeEvent)\n ) {\n event.preventDefault()\n return\n }\n\n if (Hotkeys.isSoftBreak(nativeEvent)) {\n event.preventDefault()\n Editor.insertSoftBreak(editor)\n return\n }\n\n if (Hotkeys.isSplitBlock(nativeEvent)) {\n event.preventDefault()\n Editor.insertBreak(editor)\n return\n }\n\n if (Hotkeys.isDeleteBackward(nativeEvent)) {\n event.preventDefault()\n\n if (selection && Range.isExpanded(selection)) {\n Editor.deleteFragment(editor, { direction: 'backward' })\n } else {\n Editor.deleteBackward(editor)\n }\n\n return\n }\n\n if (Hotkeys.isDeleteForward(nativeEvent)) {\n event.preventDefault()\n\n if (selection && Range.isExpanded(selection)) {\n Editor.deleteFragment(editor, { direction: 'forward' })\n } else {\n Editor.deleteForward(editor)\n }\n\n return\n }\n\n if (Hotkeys.isDeleteLineBackward(nativeEvent)) {\n event.preventDefault()\n\n if (selection && Range.isExpanded(selection)) {\n Editor.deleteFragment(editor, { direction: 'backward' })\n } else {\n Editor.deleteBackward(editor, { unit: 'line' })\n }\n\n return\n }\n\n if (Hotkeys.isDeleteLineForward(nativeEvent)) {\n event.preventDefault()\n\n if (selection && Range.isExpanded(selection)) {\n Editor.deleteFragment(editor, { direction: 'forward' })\n } else {\n Editor.deleteForward(editor, { unit: 'line' })\n }\n\n return\n }\n\n if (Hotkeys.isDeleteWordBackward(nativeEvent)) {\n event.preventDefault()\n\n if (selection && Range.isExpanded(selection)) {\n Editor.deleteFragment(editor, { direction: 'backward' })\n } else {\n Editor.deleteBackward(editor, { unit: 'word' })\n }\n\n return\n }\n\n if (Hotkeys.isDeleteWordForward(nativeEvent)) {\n event.preventDefault()\n\n if (selection && Range.isExpanded(selection)) {\n Editor.deleteFragment(editor, { direction: 'forward' })\n } else {\n Editor.deleteForward(editor, { unit: 'word' })\n }\n\n return\n }\n } else {\n if (IS_CHROME || IS_WEBKIT) {\n // COMPAT: Chrome and Safari support `beforeinput` event but do not fire\n // an event when deleting backwards in a selected void inline node\n if (\n selection &&\n (Hotkeys.isDeleteBackward(nativeEvent) ||\n Hotkeys.isDeleteForward(nativeEvent)) &&\n Range.isCollapsed(selection)\n ) {\n const currentNode = Node.parent(\n editor,\n selection.anchor.path\n )\n\n if (\n Element.isElement(currentNode) &&\n Editor.isVoid(editor, currentNode) &&\n (Editor.isInline(editor, currentNode) ||\n Editor.isBlock(editor, currentNode))\n ) {\n event.preventDefault()\n Editor.deleteBackward(editor, { unit: 'block' })\n\n return\n }\n }\n }\n }\n }\n },\n [readOnly, editor, attributes.onKeyDown]\n )}\n onPaste={useCallback(\n (event: React.ClipboardEvent<HTMLDivElement>) => {\n if (\n !readOnly &&\n ReactEditor.hasEditableTarget(editor, event.target) &&\n !isEventHandled(event, attributes.onPaste)\n ) {\n // COMPAT: Certain browsers don't support the `beforeinput` event, so we\n // fall back to React's `onPaste` here instead.\n // COMPAT: Firefox, Chrome and Safari don't emit `beforeinput` events\n // when \"paste without formatting\" is used, so fallback. (2020/02/20)\n // COMPAT: Safari InputEvents generated by pasting won't include\n // application/x-slate-fragment items, so use the\n // ClipboardEvent here. (2023/03/15)\n if (\n !HAS_BEFORE_INPUT_SUPPORT ||\n isPlainTextOnlyPaste(event.nativeEvent) ||\n IS_WEBKIT\n ) {\n event.preventDefault()\n ReactEditor.insertData(editor, event.clipboardData)\n }\n }\n },\n [readOnly, editor, attributes.onPaste]\n )}\n >\n <Children\n decorations={decorations}\n node={editor}\n renderElement={renderElement}\n renderPlaceholder={renderPlaceholder}\n renderLeaf={renderLeaf}\n selection={editor.selection}\n />\n </Component>\n </RestoreDOM>\n </DecorateContext.Provider>\n </ReadOnlyContext.Provider>\n )\n}\n\n/**\n * The props that get passed to renderPlaceholder\n */\nexport type RenderPlaceholderProps = {\n children: any\n attributes: {\n 'data-slate-placeholder': boolean\n dir?: 'rtl'\n contentEditable: boolean\n ref: React.RefCallback<any>\n style: React.CSSProperties\n }\n}\n\n/**\n * The default placeholder element\n */\n\nexport const DefaultPlaceholder = ({\n attributes,\n children,\n}: RenderPlaceholderProps) => (\n // COMPAT: Artificially add a line-break to the end on the placeholder element\n // to prevent Android IMEs to pick up its content in autocorrect and to auto-capitalize the first letter\n <span {...attributes}>\n {children}\n {IS_ANDROID && <br />}\n </span>\n)\n\n/**\n * A default memoized decorate function.\n */\n\nexport const defaultDecorate: (entry: NodeEntry) => Range[] = () => []\n\n/**\n * A default implement to scroll dom range into view.\n */\n\nconst defaultScrollSelectionIntoView = (\n editor: ReactEditor,\n domRange: DOMRange\n) => {\n // This was affecting the selection of multiple blocks and dragging behavior,\n // so enabled only if the selection has been collapsed.\n if (\n domRange.getBoundingClientRect &&\n (!editor.selection ||\n (editor.selection && Range.isCollapsed(editor.selection)))\n ) {\n const leafEl = domRange.startContainer.parentElement!\n leafEl.getBoundingClientRect = domRange.getBoundingClientRect.bind(domRange)\n scrollIntoView(leafEl, {\n scrollMode: 'if-needed',\n })\n\n // @ts-expect-error an unorthodox delete D:\n delete leafEl.getBoundingClientRect\n }\n}\n\n/**\n * Check if an event is overrided by a handler.\n */\n\nexport const isEventHandled = <\n EventType extends React.SyntheticEvent<unknown, unknown>,\n>(\n event: EventType,\n handler?: (event: EventType) => void | boolean\n) => {\n if (!handler) {\n return false\n }\n // The custom event handler may return a boolean to specify whether the event\n // shall be treated as being handled or not.\n const shouldTreatEventAsHandled = handler(event)\n\n if (shouldTreatEventAsHandled != null) {\n return shouldTreatEventAsHandled\n }\n\n return event.isDefaultPrevented() || event.isPropagationStopped()\n}\n\n/**\n * Check if the event's target is an input element\n */\nexport const isDOMEventTargetInput = <\n EventType extends React.SyntheticEvent<unknown, unknown>,\n>(\n event: EventType\n) => {\n return (\n isDOMNode(event.target) &&\n (event.target instanceof HTMLInputElement ||\n event.target instanceof HTMLTextAreaElement)\n )\n}\n\n/**\n * Check if a DOM event is overrided by a handler.\n */\n\nexport const isDOMEventHandled = <E extends Event>(\n event: E,\n handler?: (event: E) => void | boolean\n) => {\n if (!handler) {\n return false\n }\n\n // The custom event handler may return a boolean to specify whether the event\n // shall be treated as being handled or not.\n const shouldTreatEventAsHandled = handler(event)\n\n if (shouldTreatEventAsHandled != null) {\n return shouldTreatEventAsHandled\n }\n\n return event.defaultPrevented\n}\n","import { createContext, useContext } from 'react'\n\n/**\n * A React context for sharing the `focused` state of the editor.\n */\n\nexport const FocusedContext = createContext(false)\n\n/**\n * Get the current `focused` state of the editor.\n */\n\nexport const useFocused = (): boolean => {\n return useContext(FocusedContext)\n}\n","import {\n createContext,\n useCallback,\n useContext,\n useMemo,\n useReducer,\n useRef,\n} from 'react'\nimport { Editor } from 'slate'\nimport { useIsomorphicLayoutEffect } from './use-isomorphic-layout-effect'\n\nfunction isError(error: any): error is Error {\n return error instanceof Error\n}\n\ntype EditorChangeHandler = (editor: Editor) => void\n/**\n * A React context for sharing the editor selector context in a way to control rerenders\n */\n\nexport const SlateSelectorContext = createContext<{\n getSlate: () => Editor\n addEventListener: (callback: EditorChangeHandler) => () => void\n}>({} as any)\n\nconst refEquality = (a: any, b: any) => a === b\n\n/**\n * use redux style selectors to prevent rerendering on every keystroke.\n * Bear in mind rerendering can only prevented if the returned value is a value type or for reference types (e.g. objects and arrays) add a custom equality function.\n *\n * Example:\n * ```\n * const isSelectionActive = useSlateSelector(editor => Boolean(editor.selection));\n * ```\n */\nexport function useSlateSelector<T>(\n selector: (editor: Editor) => T,\n equalityFn: (a: T, b: T) => boolean = refEquality\n) {\n const [, forceRender] = useReducer(s => s + 1, 0)\n const context = useContext(SlateSelectorContext)\n if (!context) {\n throw new Error(\n `The \\`useSlateSelector\\` hook must be used inside the <Slate> component's context.`\n )\n }\n const { getSlate, addEventListener } = context\n\n const latestSubscriptionCallbackError = useRef<Error | undefined>()\n const latestSelector = useRef<(editor: Editor) => T>(() => null as any)\n const latestSelectedState = useRef<T>(null as any as T)\n let selectedState: T\n\n try {\n if (\n selector !== latestSelector.current ||\n latestSubscriptionCallbackError.current\n ) {\n selectedState = selector(getSlate())\n } else {\n selectedState = latestSelectedState.current\n }\n } catch (err) {\n if (latestSubscriptionCallbackError.current && isError(err)) {\n err.message += `\\nThe error may be correlated with this previous error:\\n${latestSubscriptionCallbackError.current.stack}\\n\\n`\n }\n\n throw err\n }\n useIsomorphicLayoutEffect(() => {\n latestSelector.current = selector\n latestSelectedState.current = selectedState\n latestSubscriptionCallbackError.current = undefined\n })\n\n useIsomorphicLayoutEffect(\n () => {\n function checkForUpdates() {\n try {\n const newSelectedState = latestSelector.current(getSlate())\n\n if (equalityFn(newSelectedState, latestSelectedState.current)) {\n return\n }\n\n latestSelectedState.current = newSelectedState\n } catch (err) {\n // we ignore all errors here, since when the component\n // is re-rendered, the selectors are called again, and\n // will throw again, if neither props nor store state\n // changed\n if (err instanceof Error) {\n latestSubscriptionCallbackError.current = err\n } else {\n latestSubscriptionCallbackError.current = new Error(String(err))\n }\n }\n\n forceRender()\n }\n\n const unsubscribe = addEventListener(checkForUpdates)\n\n checkForUpdates()\n\n return () => unsubscribe()\n },\n // don't rerender on equalityFn change since we want to be able to define it inline\n [addEventListener, getSlate]\n )\n\n return selectedState\n}\n\n/**\n * Create selector context with editor updating on every editor change\n */\nexport function useSelectorContext(editor: Editor) {\n const eventListeners = useRef<EditorChangeHandler[]>([]).current\n const slateRef = useRef<{\n editor: Editor\n }>({\n editor,\n }).current\n const onChange = useCallback(\n (editor: Editor) => {\n slateRef.editor = editor\n eventListeners.forEach((listener: EditorChangeHandler) =>\n listener(editor)\n )\n },\n [eventListeners, slateRef]\n )\n\n const selectorContext = useMemo(() => {\n return {\n getSlate: () => slateRef.editor,\n addEventListener: (callback: EditorChangeHandler) => {\n eventListeners.push(callback)\n return () => {\n eventListeners.splice(eventListeners.indexOf(callback), 1)\n }\n },\n }\n }, [eventListeners, slateRef])\n return { selectorContext, onChange }\n}\n","import React, { useCallback, useEffect, useState } from 'react'\nimport { Descendant, Editor, Node, Operation, Scrubber, Selection } from 'slate'\nimport { FocusedContext } from '../hooks/use-focused'\nimport { useIsomorphicLayoutEffect } from '../hooks/use-isomorphic-layout-effect'\nimport { SlateContext, SlateContextValue } from '../hooks/use-slate'\nimport {\n useSelectorContext,\n SlateSelectorContext,\n} from '../hooks/use-slate-selector'\nimport { EditorContext } from '../hooks/use-slate-static'\nimport { ReactEditor } from '../plugin/react-editor'\nimport { REACT_MAJOR_VERSION } from '../utils/environment'\nimport { EDITOR_TO_ON_CHANGE } from '../utils/weak-maps'\n\n/**\n * A wrapper around the provider to handle `onChange` events, because the editor\n * is a mutable singleton so it won't ever register as \"changed\" otherwise.\n */\n\nexport const Slate = (props: {\n editor: ReactEditor\n initialValue: Descendant[]\n children: React.ReactNode\n onChange?: (value: Descendant[]) => void\n onSelectionChange?: (selection: Selection) => void\n onValueChange?: (value: Descendant[]) => void\n}) => {\n const {\n editor,\n children,\n onChange,\n onSelectionChange,\n onValueChange,\n initialValue,\n ...rest\n } = props\n\n const [context, setContext] = React.useState<SlateContextValue>(() => {\n if (!Node.isNodeList(initialValue)) {\n throw new Error(\n `[Slate] initialValue is invalid! Expected a list of elements but got: ${Scrubber.stringify(\n initialValue\n )}`\n )\n }\n if (!Editor.isEditor(editor)) {\n throw new Error(\n `[Slate] editor is invalid! You passed: ${Scrubber.stringify(editor)}`\n )\n }\n editor.children = initialValue\n Object.assign(editor, rest)\n return { v: 0, editor }\n })\n\n const { selectorContext, onChange: handleSelectorChange } =\n useSelectorContext(editor)\n\n const onContextChange = useCallback(\n (options?: { operation?: Operation }) => {\n if (onChange) {\n onChange(editor.children)\n }\n\n switch (options?.operation?.type) {\n case 'set_selection':\n onSelectionChange?.(editor.selection)\n break\n default:\n onValueChange?.(editor.children)\n }\n\n setContext(prevContext => ({\n v: prevContext.v + 1,\n editor,\n }))\n handleSelectorChange(editor)\n },\n [editor, handleSelectorChange, onChange, onSelectionChange, onValueChange]\n )\n\n useEffect(() => {\n EDITOR_TO_ON_CHANGE.set(editor, onContextChange)\n\n return () => {\n EDITOR_TO_ON_CHANGE.set(editor, () => {})\n }\n }, [editor, onContextChange])\n\n const [isFocused, setIsFocused] = useState(ReactEditor.isFocused(editor))\n\n useEffect(() => {\n setIsFocused(ReactEditor.isFocused(editor))\n }, [editor])\n\n useIsomorphicLayoutEffect(() => {\n const fn = () => setIsFocused(ReactEditor.isFocused(editor))\n if (REACT_MAJOR_VERSION >= 17) {\n // In React >= 17 onFocus and onBlur listen to the focusin and focusout events during the bubbling phase.\n // Therefore in order for <Editable />'s handlers to run first, which is necessary for ReactEditor.isFocused(editor)\n // to return the correct value, we have to listen to the focusin and focusout events without useCapture here.\n document.addEventListener('focusin', fn)\n document.addEventListener('focusout', fn)\n return () => {\n document.removeEventListener('focusin', fn)\n document.removeEventListener('focusout', fn)\n }\n } else {\n document.addEventListener('focus', fn, true)\n document.addEventListener('blur', fn, true)\n return () => {\n document.removeEventListener('focus', fn, true)\n document.removeEventListener('blur', fn, true)\n }\n }\n }, [])\n\n return (\n <SlateSelectorContext.Provider value={selectorContext}>\n <SlateContext.Provider value={context}>\n <EditorContext.Provider value={context.editor}>\n <FocusedContext.Provider value={isFocused}>\n {children}\n </FocusedContext.Provider>\n </EditorContext.Provider>\n </SlateContext.Provider>\n </SlateSelectorContext.Provider>\n )\n}\n","import { useContext } from 'react'\n\nimport { EditorContext } from './use-slate-static'\n\n/**\n * Get the current editor object from the React context.\n * @deprecated Use useSlateStatic instead.\n */\n\nexport const useEditor = () => {\n const editor = useContext(EditorContext)\n\n if (!editor) {\n throw new Error(\n `The \\`useEditor\\` hook must be used inside the <Slate> component's context.`\n )\n }\n\n return editor\n}\n","import { BaseSelection, Range } from 'slate'\n\nimport { useSlateSelector } from './use-slate-selector'\n\n/**\n * Get the current slate selection.\n * Only triggers a rerender when the selection actually changes\n */\nexport const useSlateSelection = () => {\n return useSlateSelector(editor => editor.selection, isSelectionEqual)\n}\n\nconst isSelectionEqual = (a: BaseSelection, b: BaseSelection) => {\n if (!a && !b) return true\n if (!a || !b) return false\n return Range.equals(a, b)\n}\n","/**\n * Utilities for single-line deletion\n */\n\nimport { Editor, Range } from 'slate'\nimport { ReactEditor } from '../plugin/react-editor'\n\nconst doRectsIntersect = (rect: DOMRect, compareRect: DOMRect) => {\n const middle = (compareRect.top + compareRect.bottom) / 2\n\n return rect.top <= middle && rect.bottom >= middle\n}\n\nconst areRangesSameLine = (\n editor: ReactEditor,\n range1: Range,\n range2: Range\n) => {\n const rect1 = ReactEditor.toDOMRange(editor, range1).getBoundingClientRect()\n const rect2 = ReactEditor.toDOMRange(editor, range2).getBoundingClientRect()\n\n return doRectsIntersect(rect1, rect2) && doRectsIntersect(rect2, rect1)\n}\n\n/**\n * A helper utility that returns the end portion of a `Range`\n * which is located on a single line.\n *\n * @param {Editor} editor The editor object to compare against\n * @param {Range} parentRange The parent range to compare against\n * @returns {Range} A valid portion of the parentRange which is one a single line\n */\nexport const findCurrentLineRange = (\n editor: ReactEditor,\n parentRange: Range\n): Range => {\n const parentRangeBoundary = Editor.range(editor, Range.end(parentRange))\n const positions = Array.from(Editor.positions(editor, { at: parentRange }))\n\n let left = 0\n let right = positions.length\n let middle = Math.floor(right / 2)\n\n if (\n areRangesSameLine(\n editor,\n Editor.range(editor, positions[left]),\n parentRangeBoundary\n )\n ) {\n return Editor.range(editor, positions[left], parentRangeBoundary)\n }\n\n if (positions.length < 2) {\n return Editor.range(\n editor,\n positions[positions.length - 1],\n parentRangeBoundary\n )\n }\n\n while (middle !== positions.length && middle !== left) {\n if (\n areRangesSameLine(\n editor,\n Editor.range(editor, positions[middle]),\n parentRangeBoundary\n )\n ) {\n right = middle\n } else {\n left = middle\n }\n\n middle = Math.floor((left + right) / 2)\n }\n\n return Editor.range(editor, positions[right], parentRangeBoundary)\n}\n","import ReactDOM from 'react-dom'\nimport {\n BaseEditor,\n Editor,\n Element,\n Node,\n Operation,\n Path,\n PathRef,\n Point,\n Range,\n Transforms,\n} from 'slate'\nimport {\n TextDiff,\n transformPendingPoint,\n transformPendingRange,\n transformTextDiff,\n} from '../utils/diff-text'\nimport {\n getPlainText,\n getSlateFragmentAttribute,\n isDOMText,\n} from '../utils/dom'\nimport { Key } from '../utils/key'\nimport { findCurrentLineRange } from '../utils/lines'\nimport {\n EDITOR_TO_KEY_TO_ELEMENT,\n EDITOR_TO_ON_CHANGE,\n EDITOR_TO_PENDING_ACTION,\n EDITOR_TO_PENDING_DIFFS,\n EDITOR_TO_PENDING_INSERTION_MARKS,\n EDITOR_TO_PENDING_SELECTION,\n EDITOR_TO_SCHEDULE_FLUSH,\n EDITOR_TO_USER_MARKS,\n EDITOR_TO_USER_SELECTION,\n NODE_TO_KEY,\n} from '../utils/weak-maps'\nimport { ReactEditor } from './react-editor'\nimport { REACT_MAJOR_VERSION } from '../utils/environment'\n\n/**\n * `withReact` adds React and DOM specific behaviors to the editor.\n *\n * If you are using TypeScript, you must extend Slate's CustomTypes to use\n * this plugin.\n *\n * See https://docs.slatejs.org/concepts/11-typescript to learn how.\n */\n\nexport const withReact = <T extends BaseEditor>(\n editor: T,\n clipboardFormatKey = 'x-slate-fragment'\n): T & ReactEditor => {\n const e = editor as T & ReactEditor\n const { apply, onChange, deleteBackward, addMark, removeMark } = e\n\n // The WeakMap which maps a key to a specific HTMLElement must be scoped to the editor instance to\n // avoid collisions between editors in the DOM that share the same value.\n EDITOR_TO_KEY_TO_ELEMENT.set(e, new WeakMap())\n\n e.addMark = (key, value) => {\n EDITOR_TO_SCHEDULE_FLUSH.get(e)?.()\n\n if (\n !EDITOR_TO_PENDING_INSERTION_MARKS.get(e) &&\n EDITOR_TO_PENDING_DIFFS.get(e)?.length\n ) {\n // Ensure the current pending diffs originating from changes before the addMark\n // are applied with the current formatting\n EDITOR_TO_PENDING_INSERTION_MARKS.set(e, null)\n }\n\n EDITOR_TO_USER_MARKS.delete(e)\n\n addMark(key, value)\n }\n\n e.removeMark = key => {\n if (\n !EDITOR_TO_PENDING_INSERTION_MARKS.get(e) &&\n EDITOR_TO_PENDING_DIFFS.get(e)?.length\n ) {\n // Ensure the current pending diffs originating from changes before the addMark\n // are applied with the current formatting\n EDITOR_TO_PENDING_INSERTION_MARKS.set(e, null)\n }\n\n EDITOR_TO_USER_MARKS.delete(e)\n\n removeMark(key)\n }\n\n e.deleteBackward = unit => {\n if (unit !== 'line') {\n return deleteBackward(unit)\n }\n\n if (e.selection && Range.isCollapsed(e.selection)) {\n const parentBlockEntry = Editor.above(e, {\n match: n => Element.isElement(n) && Editor.isBlock(e, n),\n at: e.selection,\n })\n\n if (parentBlockEntry) {\n const [, parentBlockPath] = parentBlockEntry\n const parentElementRange = Editor.range(\n e,\n parentBlockPath,\n e.selection.anchor\n )\n\n const currentLineRange = findCurrentLineRange(e, parentElementRange)\n\n if (!Range.isCollapsed(currentLineRange)) {\n Transforms.delete(e, { at: currentLineRange })\n }\n }\n }\n }\n\n // This attempts to reset the NODE_TO_KEY entry to the correct value\n // as apply() changes the object reference and hence invalidates the NODE_TO_KEY entry\n e.apply = (op: Operation) => {\n const matches: [Path, Key][] = []\n const pathRefMatches: [PathRef, Key][] = []\n\n const pendingDiffs = EDITOR_TO_PENDING_DIFFS.get(e)\n if (pendingDiffs?.length) {\n const transformed = pendingDiffs\n .map(textDiff => transformTextDiff(textDiff, op))\n .filter(Boolean) as TextDiff[]\n\n EDITOR_TO_PENDING_DIFFS.set(e, transformed)\n }\n\n const pendingSelection = EDITOR_TO_PENDING_SELECTION.get(e)\n if (pendingSelection) {\n EDITOR_TO_PENDING_SELECTION.set(\n e,\n transformPendingRange(e, pendingSelection, op)\n )\n }\n\n const pendingAction = EDITOR_TO_PENDING_ACTION.get(e)\n if (pendingAction?.at) {\n const at = Point.isPoint(pendingAction?.at)\n ? transformPendingPoint(e, pendingAction.at, op)\n : transformPendingRange(e, pendingAction.at, op)\n\n EDITOR_TO_PENDING_ACTION.set(e, at ? { ...pendingAction, at } : null)\n }\n\n switch (op.type) {\n case 'insert_text':\n case 'remove_text':\n case 'set_node':\n case 'split_node': {\n matches.push(...getMatches(e, op.path))\n break\n }\n\n case 'set_selection': {\n // Selection was manually set, don't restore the user selection after the change.\n EDITOR_TO_USER_SELECTION.get(e)?.unref()\n EDITOR_TO_USER_SELECTION.delete(e)\n break\n }\n\n case 'insert_node':\n case 'remove_node': {\n matches.push(...getMatches(e, Path.parent(op.path)))\n break\n }\n\n case 'merge_node': {\n const prevPath = Path.previous(op.path)\n matches.push(...getMatches(e, prevPath))\n break\n }\n\n case 'move_node': {\n const commonPath = Path.common(\n Path.parent(op.path),\n Path.parent(op.newPath)\n )\n matches.push(...getMatches(e, commonPath))\n\n let changedPath: Path\n if (Path.isBefore(op.path, op.newPath)) {\n matches.push(...getMatches(e, Path.parent(op.path)))\n changedPath = op.newPath\n } else {\n matches.push(...getMatches(e, Path.parent(op.newPath)))\n changedPath = op.path\n }\n\n const changedNode = Node.get(editor, Path.parent(changedPath))\n const changedNodeKey = ReactEditor.findKey(e, changedNode)\n const changedPathRef = Editor.pathRef(e, Path.parent(changedPath))\n pathRefMatches.push([changedPathRef, changedNodeKey])\n\n break\n }\n }\n\n apply(op)\n\n for (const [path, key] of matches) {\n const [node] = Editor.node(e, path)\n NODE_TO_KEY.set(node, key)\n }\n\n for (const [pathRef, key] of pathRefMatches) {\n if (pathRef.current) {\n const [node] = Editor.node(e, pathRef.current)\n NODE_TO_KEY.set(node, key)\n }\n }\n }\n\n e.setFragmentData = (data: Pick<DataTransfer, 'getData' | 'setData'>) => {\n const { selection } = e\n\n if (!selection) {\n return\n }\n\n const [start, end] = Range.edges(selection)\n const startVoid = Editor.void(e, { at: start.path })\n const endVoid = Editor.void(e, { at: end.path })\n\n if (Range.isCollapsed(selection) && !startVoid) {\n return\n }\n\n // Create a fake selection so that we can add a Base64-encoded copy of the\n // fragment to the HTML, to decode on future pastes.\n const domRange = ReactEditor.toDOMRange(e, selection)\n let contents = domRange.cloneContents()\n let attach = contents.childNodes[0] as HTMLElement\n\n // Make sure attach is non-empty, since empty nodes will not get copied.\n contents.childNodes.forEach(node => {\n if (node.textContent && node.textContent.trim() !== '') {\n attach = node as HTMLElement\n }\n })\n\n // COMPAT: If the end node is a void node, we need to move the end of the\n // range from the void node's spacer span, to the end of the void node's\n // content, since the spacer is before void's content in the DOM.\n if (endVoid) {\n const [voidNode] = endVoid\n const r = domRange.cloneRange()\n const domNode = ReactEditor.toDOMNode(e, voidNode)\n r.setEndAfter(domNode)\n contents = r.cloneContents()\n }\n\n // COMPAT: If the start node is a void node, we need to attach the encoded\n // fragment to the void node's content node instead of the spacer, because\n // attaching it to empty `<div>/<span>` nodes will end up having it erased by\n // most browsers. (2018/04/27)\n if (startVoid) {\n attach = contents.querySelector('[data-slate-spacer]')! as HTMLElement\n }\n\n // Remove any zero-width space spans from the cloned DOM so that they don't\n // show up elsewhere when pasted.\n Array.from(contents.querySelectorAll('[data-slate-zero-width]')).forEach(\n zw => {\n const isNewline = zw.getAttribute('data-slate-zero-width') === 'n'\n zw.textContent = isNewline ? '\\n' : ''\n }\n )\n\n // Set a `data-slate-fragment` attribute on a non-empty node, so it shows up\n // in the HTML, and can be used for intra-Slate pasting. If it's a text\n // node, wrap it in a `<span>` so we have something to set an attribute on.\n if (isDOMText(attach)) {\n const span = attach.ownerDocument.createElement('span')\n // COMPAT: In Chrome and Safari, if we don't add the `white-space` style\n // then leading and trailing spaces will be ignored. (2017/09/21)\n span.style.whiteSpace = 'pre'\n span.appendChild(attach)\n contents.appendChild(span)\n attach = span\n }\n\n const fragment = e.getFragment()\n const string = JSON.stringify(fragment)\n const encoded = window.btoa(encodeURIComponent(string))\n attach.setAttribute('data-slate-fragment', encoded)\n data.setData(`application/${clipboardFormatKey}`, encoded)\n\n // Add the content to a <div> so that we can get its inner HTML.\n const div = contents.ownerDocument.createElement('div')\n div.appendChild(contents)\n div.setAttribute('hidden', 'true')\n contents.ownerDocument.body.appendChild(div)\n data.setData('text/html', div.innerHTML)\n data.setData('text/plain', getPlainText(div))\n contents.ownerDocument.body.removeChild(div)\n return data\n }\n\n e.insertData = (data: DataTransfer) => {\n if (!e.insertFragmentData(data)) {\n e.insertTextData(data)\n }\n }\n\n e.insertFragmentData = (data: DataTransfer): boolean => {\n /**\n * Checking copied fragment from application/x-slate-fragment or data-slate-fragment\n */\n const fragment =\n data.getData(`application/${clipboardFormatKey}`) ||\n getSlateFragmentAttribute(data)\n\n if (fragment) {\n const decoded = decodeURIComponent(window.atob(fragment))\n const parsed = JSON.parse(decoded) as Node[]\n e.insertFragment(parsed)\n return true\n }\n return false\n }\n\n e.insertTextData = (data: DataTransfer): boolean => {\n const text = data.getData('text/plain')\n\n if (text) {\n const lines = text.split(/\\r\\n|\\r|\\n/)\n let split = false\n\n for (const line of lines) {\n if (split) {\n Transforms.splitNodes(e, { always: true })\n }\n\n e.insertText(line)\n split = true\n }\n return true\n }\n return false\n }\n\n e.onChange = options => {\n // COMPAT: React < 18 doesn't batch `setState` hook calls, which means\n // that the children and selection can get out of sync for one render\n // pass. So we have to use this unstable API to ensure it batches them.\n // (2019/12/03)\n // https://github.com/facebook/react/issues/14259#issuecomment-439702367\n const maybeBatchUpdates =\n REACT_MAJOR_VERSION < 18\n ? ReactDOM.unstable_batchedUpdates\n : (callback: () => void) => callback()\n\n maybeBatchUpdates(() => {\n const onContextChange = EDITOR_TO_ON_CHANGE.get(e)\n\n if (onContextChange) {\n onContextChange(options)\n }\n\n onChange(options)\n })\n }\n\n return e\n}\n\nconst getMatches = (e: Editor, path: Path) => {\n const matches: [Path, Key][] = []\n for (const [n, p] of Editor.levels(e, { at: path })) {\n const key = ReactEditor.findKey(e, n)\n matches.push([p, key])\n }\n return matches\n}\n"],"names":["objectWithoutPropertiesLoose","toPrimitive","toPropertyKey","EditorContext","createContext","useSlateStatic","editor","useContext","Error","REACT_MAJOR_VERSION","parseInt","React","version","split","IS_IOS","navigator","window","test","userAgent","MSStream","IS_APPLE","IS_ANDROID","IS_FIREFOX","IS_WEBKIT","IS_EDGE_LEGACY","IS_CHROME","IS_CHROME_LEGACY","IS_ANDROID_CHROME_LEGACY","IS_FIREFOX_LEGACY","IS_UC_MOBILE","IS_WECHATBROWSER","CAN_USE_DOM","document","createElement","HAS_BEFORE_INPUT_SUPPORT","globalThis","InputEvent","prototype","getTargetRanges","NODE_TO_INDEX","WeakMap","NODE_TO_PARENT","EDITOR_TO_WINDOW","EDITOR_TO_ELEMENT","EDITOR_TO_PLACEHOLDER_ELEMENT","ELEMENT_TO_NODE","NODE_TO_ELEMENT","NODE_TO_KEY","EDITOR_TO_KEY_TO_ELEMENT","IS_READ_ONLY","IS_FOCUSED","IS_COMPOSING","EDITOR_TO_USER_SELECTION","EDITOR_TO_ON_CHANGE","EDITOR_TO_SCHEDULE_FLUSH","EDITOR_TO_PENDING_INSERTION_MARKS","EDITOR_TO_USER_MARKS","EDITOR_TO_PENDING_DIFFS","EDITOR_TO_PENDING_ACTION","EDITOR_TO_PENDING_SELECTION","EDITOR_TO_FORCE_RENDER","PLACEHOLDER_SYMBOL","Symbol","MARK_PLACEHOLDER_SYMBOL","DOMText","Text","getDefaultView","value","ownerDocument","defaultView","isDOMComment","isDOMNode","nodeType","isDOMElement","Node","isDOMSelection","anchorNode","Selection","isDOMText","isPlainTextOnlyPaste","event","clipboardData","getData","types","length","normalizeDOMPoint","domPoint","node","offset","childNodes","isLast","index","getEditableChildAndIndex","i","getEditableChild","textContent","hasShadowRoot","parent","parentNode","toString","direction","child","triedForward","triedBackward","getAttribute","getPlainText","domNode","text","nodeValue","childNode","Array","from","display","getComputedStyle","getPropertyValue","tagName","catchSlateFragment","getSlateFragmentAttribute","dataTransfer","htmlData","fragment","match","isTrackedMutation","mutation","batch","target","matches","ReactEditor","getWindow","contains","hasDOMNode","editable","parentMutation","find","_ref","addedNodes","removedNodes","n","Key","constructor","_defineProperty","id","concat","androidPendingDiffs","get","androidScheduleFlush","_EDITOR_TO_SCHEDULE_F","blur","el","toDOMNode","root","findDocumentOrShadowRoot","set","activeElement","deselect","selection","domSelection","getSelection","rangeCount","removeAllRanges","Transforms","getRootNode","Document","ShadowRoot","findEventRange","nativeEvent","clientX","x","clientY","y","toSlateNode","path","findPath","Element","isElement","Editor","isVoid","rect","getBoundingClientRect","isPrev","isInline","left","width","top","height","edge","point","before","after","range","domRange","caretRangeFromPoint","position","caretPositionFromPoint","createRange","setStart","offsetNode","setEnd","toSlateRange","exactMatch","suppressThrow","findKey","key","isEditor","unshift","Scrubber","stringify","focus","options","arguments","undefined","retries","operations","setTimeout","toDOMRange","addRange","select","start","onChange","preventScroll","editorEl","targetEl","parentElement","err","message","includes","closest","isContentEditable","hasEditableTarget","hasRange","anchor","hasPath","hasSelectableTarget","isTargetInsideNonReadonlyVoid","hasTarget","insertData","data","insertFragmentData","insertTextData","isComposing","isFocused","isReadOnly","slateNode","setFragmentData","originEvent","KEY_TO_ELEMENT","toDOMPoint","void","at","selector","texts","querySelectorAll","attr","trueLength","end","nextText","hasAttribute","_nextText$textContent","domText","startsWith","Math","min","max","isBackward","Range","domAnchor","domFocus","isCollapsed","startNode","startOffset","endNode","endOffset","startEl","isStartAtZeroWidth","endEl","isEndAtZeroWidth","domEl","toSlatePoint","nearestNode","nearestOffset","textNode","_domNode$textContent","_domNode$textContent2","potentialVoidNode","voidNode","leafNode","contents","cloneContents","removals","slice","call","forEach","textContext","removeChild","leafNodes","current","endsWith","querySelector","_focusNode$textConten","startContainer","anchorOffset","focusNode","focusOffset","firstRange","getRangeAt","lastRange","HTMLTableRowElement","getLastChildren","element","childElementCount","children","firstNodeRow","lastNodeRow","firstNode","lastNode","HTMLElement","innerHTML","endContainer","collapsed","_anchorNode$textConte","isExpanded","isForward","mode","unhangRange","voids","verifyDiffState","textDiff","diff","isText","nextPath","Path","next","nextNode","applyStringDiff","_len","diffs","_key","reduce","longestCommonPrefixLength","str","another","charAt","longestCommonSuffixLength","normalizeStringDiff","targetText","removedText","prefixLength","suffixLength","normalized","mergeStringDiffs","a","b","overlap","applied","sliceEnd","targetRange","normalizePoint","leaf","parentBlock","above","isBlock","entry","isDescendant","normalizeRange","transformPendingPoint","op","pendingDiffs","equals","Point","transform","affinity","transformed","type","transformPendingRange","transformTextDiff","newPath","RESOLVE_DELAY","FLUSH_DELAY","debug","isDataTransfer","name","createAndroidInputManager","scheduleOnDOMSelectionChange","onDOMSelectionChange","flushing","compositionEndTimeoutId","flushTimeoutId","actionTimeoutId","idCounter","insertPositionHint","applyPendingSelection","pendingSelection","delete","performAction","action","isPoint","run","flush","clearTimeout","hasPendingDiffs","hasPendingAction","selectionRef","rangeRef","marks","scheduleSelectionChange","_EDITOR_TO_PENDING_DI","_EDITOR_TO_PENDING_DI2","pendingMarks","insertText","deleteFragment","filter","_ref2","cancel","unref","userMarks","handleCompositionEnd","_event","handleCompositionStart","updatePlaceholderVisibility","forceHide","placeholderElement","style","removeProperty","storeDiff","_EDITOR_TO_PENDING_DI3","idx","findIndex","change","push","merged","splice","_objectSpread","scheduleAction","handleDOMBeforeInput","_targetRange2","inputType","nativeTargetRange","canStoreDiff","edges","relevantPendingDiffs","handleUserSelect","targetNode","deleteForward","_nativeTargetRange","nativeCollapsed","deleteBackward","unit","insertSoftBreak","insertBreak","replace","parts","line","hintPosition","search","diffPosition","scheduleFlush","_EDITOR_TO_PENDING_DI4","hasPendingChanges","isFlushing","pathChanged","parentPathChanged","handleInput","handleKeyDown","_","handleDomMutations","mutations","some","_EDITOR_TO_FORCE_REND","useIsMounted","isMountedRef","useRef","useEffect","useIsomorphicLayoutEffect","useLayoutEffect","useMutationObserver","callback","mutationObserver","useState","MutationObserver","takeRecords","observe","disconnect","MUTATION_OBSERVER_CONFIG","subtree","childList","characterData","useAndroidInputManager","_objectWithoutProperties","_excluded","isMounted","inputManager","shallowCompare","obj1","obj2","Object","keys","every","hasOwnProperty","isDecorationFlagsEqual","other","rangeOwnProps","otherOwnProps","_excluded2","isElementDecorationsEqual","list","isTextDecorationsEqual","String","props","parentPath","isMarkPlaceholder","Boolean","ZeroWidthString","string","isLineBreak","TextString","isTrailing","ref","getTextContent","initialText","textWithTrailing","MemoizedText","memo","forwardRef","attributes","PLACEHOLDER_DELAY","disconnectPlaceholderResizeObserver","placeholderResizeObserver","releaseObserver","clearTimeoutRef","timeoutRef","Leaf","renderPlaceholder","renderLeaf","DefaultLeaf","placeholderRef","showPlaceholder","setShowPlaceholder","showPlaceholderTimeoutRef","callbackPlaceholderRef","useCallback","placeholderEl","_leaf$onPlaceholderRe","onPlaceholderResize","ResizeObserver","ResizeObserverPolyfill","_leaf$onPlaceholderRe2","leafIsPlaceholder","placeholderProps","placeholder","pointerEvents","maxWidth","opacity","userSelect","textDecoration","WebkitUserModify","contentEditable","Fragment","MemoizedLeaf","prev","decorations","leaves","SlateText","callbackRef","span","renderElement","p","DefaultElement","readOnly","useReadOnly","useChildren","hasInlines","dir","getDirection","Tag","color","outline","MemoizedElement","DecorateContext","useDecorate","SelectedContext","useSelected","decorate","isLeafBlock","sel","intersection","ds","dec","d","Provider","ElementComponent","TextComponent","ReadOnlyContext","SlateContext","useSlate","context","useSlateWithV","useTrackUserInput","receivedUserInput","animationFrameIdRef","onUserInput","cancelAnimationFrame","requestAnimationFrame","TRIPLE_CLICK","HOTKEYS","bold","compose","moveBackward","moveForward","moveWordBackward","moveWordForward","extendBackward","extendForward","italic","splitBlock","undo","APPLE_HOTKEYS","moveLineBackward","moveLineForward","deleteLineBackward","deleteLineForward","deleteWordBackward","deleteWordForward","extendLineBackward","extendLineForward","redo","transposeCharacter","WINDOWS_HOTKEYS","create","generic","apple","windows","isGeneric","isHotkey","isApple","isWindows","isBold","isCompose","isMoveBackward","isMoveForward","isDeleteBackward","isDeleteForward","isDeleteLineBackward","isDeleteLineForward","isDeleteWordBackward","isDeleteWordForward","isExtendBackward","isExtendForward","isExtendLineBackward","isExtendLineForward","isItalic","isMoveLineBackward","isMoveLineForward","isMoveWordBackward","isMoveWordForward","isRedo","isSoftBreak","isSplitBlock","isTransposeCharacter","isUndo","createRestoreDomManager","bufferedMutations","clear","registerMutations","trackedMutations","restoreDOM","reverse","insertBefore","nextSibling","characterDataOldValue","RestoreDOMComponent","Component","_this$mutationObserve","componentDidMount","manager","getSnapshotBeforeUpdate","_this$mutationObserve2","_this$mutationObserve3","_this$manager2","pendingMutations","_this$manager","componentDidUpdate","_this$manager3","componentWillUnmount","_this$mutationObserve4","render","RestoreDOM","Children","Editable","defaultRenderPlaceholder","DefaultPlaceholder","autoFocus","defaultDecorate","onDOMBeforeInput","propsOnDOMBeforeInput","scrollSelectionIntoView","defaultScrollSelectionIntoView","userStyle","as","disableDefaultStyles","setIsComposing","deferredOperations","placeholderHeight","setPlaceholderHeight","forceRender","useReducer","s","state","useMemo","isDraggingInternally","isUpdatingSelection","latestElement","hasMarkPlaceholder","androidInputManagerRef","throttle","androidInputManager","anchorNodeSelectable","focusNodeSelectable","debounce","_androidInputManagerR","_androidInputManagerR2","setDomSelection","forceChange","hasDomSelection","editorElement","hasDomSelectionInEditor","slateRange","_anchorNode","newDomRange","collapseToEnd","setBaseAndExtent","ensureSelection","timeoutId","animationFrameId","ensureDomSelection","e","isDOMEventHandled","_EDITOR_TO_USER_SELEC","isCompositionChange","native","_node$parentElement","_window$getComputedSt","_lastText$textContent","lastText","createTreeWalker","NodeFilter","SHOW_TEXT","lastChild","whiteSpace","block","preventDefault","toRestore","removeEventListener","addEventListener","placeHolderResizeHandler","_placeholderEl$getBou","rest","loose","unset","fromEntries","map","mark","role","spellCheck","autoCorrect","autoCapitalize","zindex","suppressContentEditableWarning","wordWrap","minHeight","onBeforeInput","isEventHandled","onInput","onBlur","relatedTarget","onClick","detail","blockPath","_block$","startVoid","endVoid","onCompositionEnd","_androidInputManagerR3","Promise","resolve","then","placeholderMarks","onCompositionUpdate","onCompositionStart","_androidInputManagerR4","onCopy","isDOMEventTargetInput","onCut","onDragOver","onDragStart","voidMatch","onDrop","draggedRange","onDragEnd","onFocus","onKeyDown","_androidInputManagerR5","isRTL","Hotkeys","maybeHistoryEditor","move","collapse","currentNode","onPaste","leafEl","bind","scrollIntoView","scrollMode","handler","shouldTreatEventAsHandled","isDefaultPrevented","isPropagationStopped","HTMLInputElement","HTMLTextAreaElement","defaultPrevented","FocusedContext","useFocused","isError","error","SlateSelectorContext","refEquality","useSlateSelector","equalityFn","getSlate","latestSubscriptionCallbackError","latestSelector","latestSelectedState","selectedState","stack","checkForUpdates","newSelectedState","unsubscribe","useSelectorContext","eventListeners","slateRef","listener","selectorContext","indexOf","Slate","onSelectionChange","onValueChange","initialValue","setContext","isNodeList","assign","v","handleSelectorChange","onContextChange","_options$operation","operation","prevContext","setIsFocused","fn","useEditor","useSlateSelection","isSelectionEqual","doRectsIntersect","compareRect","middle","bottom","areRangesSameLine","range1","range2","rect1","rect2","findCurrentLineRange","parentRange","parentRangeBoundary","positions","right","floor","withReact","clipboardFormatKey","apply","addMark","removeMark","parentBlockEntry","parentBlockPath","parentElementRange","currentLineRange","pathRefMatches","pendingAction","getMatches","prevPath","previous","commonPath","common","changedPath","isBefore","changedNode","changedNodeKey","changedPathRef","pathRef","attach","trim","r","cloneRange","setEndAfter","zw","isNewline","appendChild","getFragment","JSON","encoded","btoa","encodeURIComponent","setAttribute","setData","div","body","decoded","decodeURIComponent","atob","parsed","parse","insertFragment","lines","splitNodes","always","maybeBatchUpdates","ReactDOM","unstable_batchedUpdates","levels"],"mappings":"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","x_google_ignoreList":[0,1,2,3,4,5]}
\No newline at end of file