UNPKG

428 kBSource Map (JSON)View Raw
1{"version":3,"file":"index.js","sources":["../../../../../../.yarn/berry/cache/@babel-runtime-npm-7.23.2-d013d6cf7e-10.zip/node_modules/@babel/runtime/helpers/arrayWithHoles.js","../../../../../../.yarn/berry/cache/@babel-runtime-npm-7.23.2-d013d6cf7e-10.zip/node_modules/@babel/runtime/helpers/iterableToArrayLimit.js","../../../../../../.yarn/berry/cache/@babel-runtime-npm-7.23.2-d013d6cf7e-10.zip/node_modules/@babel/runtime/helpers/arrayLikeToArray.js","../../../../../../.yarn/berry/cache/@babel-runtime-npm-7.23.2-d013d6cf7e-10.zip/node_modules/@babel/runtime/helpers/unsupportedIterableToArray.js","../../../../../../.yarn/berry/cache/@babel-runtime-npm-7.23.2-d013d6cf7e-10.zip/node_modules/@babel/runtime/helpers/nonIterableRest.js","../../../../../../.yarn/berry/cache/@babel-runtime-npm-7.23.2-d013d6cf7e-10.zip/node_modules/@babel/runtime/helpers/slicedToArray.js","../../../../../../.yarn/berry/cache/@babel-runtime-npm-7.23.2-d013d6cf7e-10.zip/node_modules/@babel/runtime/helpers/objectWithoutPropertiesLoose.js","../../../../../../.yarn/berry/cache/@babel-runtime-npm-7.23.2-d013d6cf7e-10.zip/node_modules/@babel/runtime/helpers/objectWithoutProperties.js","../../../../../../.yarn/berry/cache/@babel-runtime-npm-7.23.2-d013d6cf7e-10.zip/node_modules/@babel/runtime/helpers/typeof.js","../../../../../../.yarn/berry/cache/@babel-runtime-npm-7.23.2-d013d6cf7e-10.zip/node_modules/@babel/runtime/helpers/toPrimitive.js","../../../../../../.yarn/berry/cache/@babel-runtime-npm-7.23.2-d013d6cf7e-10.zip/node_modules/@babel/runtime/helpers/toPropertyKey.js","../../../../../../.yarn/berry/cache/@babel-runtime-npm-7.23.2-d013d6cf7e-10.zip/node_modules/@babel/runtime/helpers/defineProperty.js","../src/hooks/use-slate-static.tsx","../src/utils/environment.ts","../src/utils/weak-maps.ts","../../../../../../.yarn/berry/cache/@babel-runtime-npm-7.23.2-d013d6cf7e-10.zip/node_modules/@babel/runtime/helpers/arrayWithoutHoles.js","../../../../../../.yarn/berry/cache/@babel-runtime-npm-7.23.2-d013d6cf7e-10.zip/node_modules/@babel/runtime/helpers/iterableToArray.js","../../../../../../.yarn/berry/cache/@babel-runtime-npm-7.23.2-d013d6cf7e-10.zip/node_modules/@babel/runtime/helpers/nonIterableSpread.js","../../../../../../.yarn/berry/cache/@babel-runtime-npm-7.23.2-d013d6cf7e-10.zip/node_modules/@babel/runtime/helpers/toConsumableArray.js","../src/utils/dom.ts","../../../../../../.yarn/berry/cache/@babel-runtime-npm-7.23.2-d013d6cf7e-10.zip/node_modules/@babel/runtime/helpers/createClass.js","../../../../../../.yarn/berry/cache/@babel-runtime-npm-7.23.2-d013d6cf7e-10.zip/node_modules/@babel/runtime/helpers/classCallCheck.js","../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","../../../../../../.yarn/berry/cache/@babel-runtime-npm-7.23.2-d013d6cf7e-10.zip/node_modules/@babel/runtime/helpers/assertThisInitialized.js","../../../../../../.yarn/berry/cache/@babel-runtime-npm-7.23.2-d013d6cf7e-10.zip/node_modules/@babel/runtime/helpers/setPrototypeOf.js","../../../../../../.yarn/berry/cache/@babel-runtime-npm-7.23.2-d013d6cf7e-10.zip/node_modules/@babel/runtime/helpers/inherits.js","../../../../../../.yarn/berry/cache/@babel-runtime-npm-7.23.2-d013d6cf7e-10.zip/node_modules/@babel/runtime/helpers/possibleConstructorReturn.js","../../../../../../.yarn/berry/cache/@babel-runtime-npm-7.23.2-d013d6cf7e-10.zip/node_modules/@babel/runtime/helpers/getPrototypeOf.js","../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":["function _arrayWithHoles(arr) {\n if (Array.isArray(arr)) return arr;\n}\nmodule.exports = _arrayWithHoles, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _iterableToArrayLimit(r, l) {\n var t = null == r ? null : \"undefined\" != typeof Symbol && r[Symbol.iterator] || r[\"@@iterator\"];\n if (null != t) {\n var e,\n n,\n i,\n u,\n a = [],\n f = !0,\n o = !1;\n try {\n if (i = (t = t.call(r)).next, 0 === l) {\n if (Object(t) !== t) return;\n f = !1;\n } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0);\n } catch (r) {\n o = !0, n = r;\n } finally {\n try {\n if (!f && null != t[\"return\"] && (u = t[\"return\"](), Object(u) !== u)) return;\n } finally {\n if (o) throw n;\n }\n }\n return a;\n }\n}\nmodule.exports = _iterableToArrayLimit, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _arrayLikeToArray(arr, len) {\n if (len == null || len > arr.length) len = arr.length;\n for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i];\n return arr2;\n}\nmodule.exports = _arrayLikeToArray, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","var arrayLikeToArray = require(\"./arrayLikeToArray.js\");\nfunction _unsupportedIterableToArray(o, minLen) {\n if (!o) return;\n if (typeof o === \"string\") return arrayLikeToArray(o, minLen);\n var n = Object.prototype.toString.call(o).slice(8, -1);\n if (n === \"Object\" && o.constructor) n = o.constructor.name;\n if (n === \"Map\" || n === \"Set\") return Array.from(o);\n if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return arrayLikeToArray(o, minLen);\n}\nmodule.exports = _unsupportedIterableToArray, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _nonIterableRest() {\n throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\nmodule.exports = _nonIterableRest, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","var arrayWithHoles = require(\"./arrayWithHoles.js\");\nvar iterableToArrayLimit = require(\"./iterableToArrayLimit.js\");\nvar unsupportedIterableToArray = require(\"./unsupportedIterableToArray.js\");\nvar nonIterableRest = require(\"./nonIterableRest.js\");\nfunction _slicedToArray(arr, i) {\n return arrayWithHoles(arr) || iterableToArrayLimit(arr, i) || unsupportedIterableToArray(arr, i) || nonIterableRest();\n}\nmodule.exports = _slicedToArray, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","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}\nmodule.exports = _objectWithoutPropertiesLoose, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","var objectWithoutPropertiesLoose = require(\"./objectWithoutPropertiesLoose.js\");\nfunction _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}\nmodule.exports = _objectWithoutProperties, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _typeof(o) {\n \"@babel/helpers - typeof\";\n\n return (module.exports = _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 }, module.exports.__esModule = true, module.exports[\"default\"] = module.exports), _typeof(o);\n}\nmodule.exports = _typeof, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","var _typeof = require(\"./typeof.js\")[\"default\"];\nfunction _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}\nmodule.exports = _toPrimitive, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","var _typeof = require(\"./typeof.js\")[\"default\"];\nvar toPrimitive = require(\"./toPrimitive.js\");\nfunction _toPropertyKey(arg) {\n var key = toPrimitive(arg, \"string\");\n return _typeof(key) === \"symbol\" ? key : String(key);\n}\nmodule.exports = _toPropertyKey, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","var toPropertyKey = require(\"./toPropertyKey.js\");\nfunction _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}\nmodule.exports = _defineProperty, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","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","var arrayLikeToArray = require(\"./arrayLikeToArray.js\");\nfunction _arrayWithoutHoles(arr) {\n if (Array.isArray(arr)) return arrayLikeToArray(arr);\n}\nmodule.exports = _arrayWithoutHoles, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _iterableToArray(iter) {\n if (typeof Symbol !== \"undefined\" && iter[Symbol.iterator] != null || iter[\"@@iterator\"] != null) return Array.from(iter);\n}\nmodule.exports = _iterableToArray, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _nonIterableSpread() {\n throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\nmodule.exports = _nonIterableSpread, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","var arrayWithoutHoles = require(\"./arrayWithoutHoles.js\");\nvar iterableToArray = require(\"./iterableToArray.js\");\nvar unsupportedIterableToArray = require(\"./unsupportedIterableToArray.js\");\nvar nonIterableSpread = require(\"./nonIterableSpread.js\");\nfunction _toConsumableArray(arr) {\n return arrayWithoutHoles(arr) || iterableToArray(arr) || unsupportedIterableToArray(arr) || nonIterableSpread();\n}\nmodule.exports = _toConsumableArray, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","/**\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","var toPropertyKey = require(\"./toPropertyKey.js\");\nfunction _defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, toPropertyKey(descriptor.key), descriptor);\n }\n}\nfunction _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n Object.defineProperty(Constructor, \"prototype\", {\n writable: false\n });\n return Constructor;\n}\nmodule.exports = _createClass, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}\nmodule.exports = _classCallCheck, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","/**\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","function _assertThisInitialized(self) {\n if (self === void 0) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n return self;\n}\nmodule.exports = _assertThisInitialized, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _setPrototypeOf(o, p) {\n module.exports = _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n }, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;\n return _setPrototypeOf(o, p);\n}\nmodule.exports = _setPrototypeOf, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","var setPrototypeOf = require(\"./setPrototypeOf.js\");\nfunction _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function\");\n }\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n writable: true,\n configurable: true\n }\n });\n Object.defineProperty(subClass, \"prototype\", {\n writable: false\n });\n if (superClass) setPrototypeOf(subClass, superClass);\n}\nmodule.exports = _inherits, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","var _typeof = require(\"./typeof.js\")[\"default\"];\nvar assertThisInitialized = require(\"./assertThisInitialized.js\");\nfunction _possibleConstructorReturn(self, call) {\n if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) {\n return call;\n } else if (call !== void 0) {\n throw new TypeError(\"Derived constructors may only return object or undefined\");\n }\n return assertThisInitialized(self);\n}\nmodule.exports = _possibleConstructorReturn, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _getPrototypeOf(o) {\n module.exports = _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function _getPrototypeOf(o) {\n return o.__proto__ || Object.getPrototypeOf(o);\n }, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;\n return _getPrototypeOf(o);\n}\nmodule.exports = _getPrototypeOf, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","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":["require$$0","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","_domPoint","_slicedToArray","node","offset","childNodes","isLast","index","_getEditableChildAndI","getEditableChildAndIndex","_getEditableChildAndI2","i","getEditableChild","textContent","hasShadowRoot","parent","parentNode","toString","direction","child","triedForward","triedBackward","getAttribute","_getEditableChildAndI3","_getEditableChildAndI4","getPlainText","domNode","text","nodeValue","_i","_Array$from","Array","from","childNode","display","getComputedStyle","getPropertyValue","tagName","catchSlateFragment","getSlateFragmentAttribute","dataTransfer","htmlData","_ref","match","_ref2","fragment","isTrackedMutation","mutation","batch","target","matches","_ReactEditor$getWindo","ReactEditor","getWindow","contains","hasDOMNode","editable","parentMutation","find","_ref3","addedNodes","removedNodes","_iterator","_createForOfIteratorHelper","_step","s","n","done","err","e","f","_iterator2","_step2","Key","_createClass","_classCallCheck","_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","_event","x","clientX","y","clientY","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","_options$editable","editorEl","targetEl","parentElement","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","_Editor$node","_Editor$node2","at","selector","texts","querySelectorAll","attr","trueLength","end","nextText","hasAttribute","_nextText$textContent","domText","startsWith","Math","min","max","isBackward","Range","domAnchor","domFocus","isCollapsed","startNode","startOffset","_ref4","endNode","endOffset","startEl","isStartAtZeroWidth","endEl","isEndAtZeroWidth","domEl","toSlatePoint","_ref5","_ref6","nearestNode","nearestOffset","textNode","_domNode$textContent","_domNode$textContent2","potentialVoidNode","voidNode","leafNode","contents","cloneContents","removals","_toConsumableArray","slice","call","forEach","textContext","removeChild","leafNodes","current","endsWith","_Editor$start","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","constructor","name","createAndroidInputManager","scheduleOnDOMSelectionChange","onDOMSelectionChange","flushing","compositionEndTimeoutId","flushTimeoutId","actionTimeoutId","idCounter","insertPositionHint","applyPendingSelection","pendingSelection","performAction","action","isPoint","run","flush","clearTimeout","hasPendingDiffs","hasPendingAction","selectionRef","rangeRef","marks","scheduleSelectionChange","_EDITOR_TO_PENDING_DI","_EDITOR_TO_PENDING_DI2","pendingMarks","insertText","deleteFragment","filter","cancel","unref","userMarks","handleCompositionEnd","handleCompositionStart","updatePlaceholderVisibility","forceHide","placeholderElement","style","removeProperty","storeDiff","_EDITOR_TO_PENDING_DI3","idx","findIndex","change","push","merged","splice","_objectSpread","scheduleAction","handleDOMBeforeInput","_targetRange2","inputType","_event$getTargetRange","_event$getTargetRange2","nativeTargetRange","canStoreDiff","_Range$edges","edges","_Range$edges2","_Range$edges3","_Range$edges4","_Editor$leaf","_Editor$leaf2","relevantPendingDiffs","apply","handleUserSelect","_targetRange3","targetNode","deleteForward","_nativeTargetRange","_targetRange4","nativeCollapsed","deleteBackward","unit","insertSoftBreak","insertBreak","replace","parts","line","_Range$edges5","_Range$edges6","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","_useState","useState","MutationObserver","_useState2","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","_props$isTrailing","ref","getTextContent","initialText","textWithTrailing","MemoizedText","memo","forwardRef","_props$length","_props$isLineBreak","_props$isMarkPlacehol","attributes","PLACEHOLDER_DELAY","disconnectPlaceholderResizeObserver","placeholderResizeObserver","releaseObserver","clearTimeoutRef","timeoutRef","Leaf","renderPlaceholder","_props$renderLeaf","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","_props$renderElement","renderElement","p","DefaultElement","readOnly","useReadOnly","useChildren","hasInlines","dir","getDirection","Tag","_Node$texts","_Node$texts2","_Node$texts2$","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","_bufferedMutations","trackedMutations","restoreDOM","reverse","insertBefore","nextSibling","characterDataOldValue","RestoreDOMComponent","_Component","_inherits","_super","_createSuper","_this","args","_assertThisInitialized","_this$mutationObserve","componentDidMount","manager","getSnapshotBeforeUpdate","_this$mutationObserve2","_this$mutationObserve3","_this$manager2","pendingMutations","_this$manager","componentDidUpdate","_this$manager3","componentWillUnmount","_this$mutationObserve4","render","Component","RestoreDOM","Children","Editable","defaultRenderPlaceholder","DefaultPlaceholder","autoFocus","_props$decorate","defaultDecorate","propsOnDOMBeforeInput","onDOMBeforeInput","_props$readOnly","_props$renderPlacehol","_props$scrollSelectio","scrollSelectionIntoView","defaultScrollSelectionIntoView","_props$style","userStyle","_props$as","as","_props$disableDefault","disableDefaultStyles","setIsComposing","deferredOperations","_useState3","_useState4","placeholderHeight","setPlaceholderHeight","_useTrackUserInput","_useReducer","useReducer","_useReducer2","forceRender","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","isDOMEventHandled","_EDITOR_TO_USER_SELEC","isCompositionChange","native","_node$parentElement","_window$getComputedSt","_ReactEditor$toDOMPoi","_ReactEditor$toDOMPoi2","_lastText$textContent","lastText","createTreeWalker","NodeFilter","SHOW_TEXT","lastChild","whiteSpace","block","preventDefault","toRestore","removeEventListener","addEventListener","placeHolderResizeHandler","_placeholderEl$getBou","_decorations$push","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","_React$useState","isNodeList","assign","v","_React$useState2","setContext","_useSelectorContext","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","addMark","removeMark","parentBlockEntry","_parentBlockEntry","parentBlockPath","parentElementRange","currentLineRange","pathRefMatches","pendingAction","getMatches","prevPath","previous","commonPath","common","changedPath","isBefore","changedNode","changedNodeKey","changedPathRef","pathRef","_matches","_matches$_i","_i2","_pathRefMatches","_pathRefMatches$_i","_Editor$node3","_Editor$node4","attach","trim","_endVoid","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","_step2$value"],"mappings":"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","x_google_ignoreList":[0,1,2,3,4,5,6,7,8,9,10,11,15,16,17,18,20,21,43,44,45,46,47]}
\No newline at end of file