slate 0.113.0 → 0.114.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.es.js +40 -11
- package/dist/index.es.js.map +1 -1
- package/dist/index.js +58 -20
- package/dist/index.js.map +1 -1
- package/dist/interfaces/text.d.ts +10 -1
- package/dist/interfaces/text.d.ts.map +1 -1
- package/dist/slate.js +58 -20
- package/dist/slate.min.js +1 -1
- package/package.json +1 -1
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../src/interfaces/path-ref.ts","../src/interfaces/point-ref.ts","../src/interfaces/range-ref.ts","../src/utils/weak-maps.ts","../../../../../../.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/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/unsupportedIterableToArray.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/interfaces/path.ts","../../../../../../.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","../../../../../../.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/nonIterableRest.js","../../../../../../.yarn/berry/cache/@babel-runtime-npm-7.23.2-d013d6cf7e-10.zip/node_modules/@babel/runtime/helpers/slicedToArray.js","../src/interfaces/transforms/general.ts","../src/interfaces/transforms/node.ts","../src/interfaces/transforms/selection.ts","../src/utils/deep-equal.ts","../../../../../../.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","../src/interfaces/range.ts","../src/interfaces/element.ts","../src/interfaces/node.ts","../src/interfaces/operation.ts","../src/editor/is-editor.ts","../src/interfaces/editor.ts","../src/interfaces/location.ts","../src/interfaces/point.ts","../src/interfaces/scrubber.ts","../src/interfaces/text.ts","../src/utils/get-default-insert-location.ts","../src/utils/match-path.ts","../src/utils/string.ts","../src/interfaces/transforms/text.ts","../src/interfaces/transforms/index.ts","../src/core/batch-dirty-paths.ts","../src/core/update-dirty-paths.ts","../src/core/apply.ts","../src/core/get-dirty-paths.ts","../src/core/get-fragment.ts","../src/core/normalize-node.ts","../src/core/should-normalize.ts","../src/editor/above.ts","../src/editor/add-mark.ts","../src/editor/after.ts","../src/editor/before.ts","../src/editor/delete-backward.ts","../src/editor/delete-forward.ts","../src/editor/delete-fragment.ts","../src/editor/edges.ts","../src/editor/element-read-only.ts","../src/editor/end.ts","../src/editor/first.ts","../src/editor/fragment.ts","../src/editor/get-void.ts","../src/editor/has-blocks.ts","../src/editor/has-inlines.ts","../src/editor/has-path.ts","../src/editor/has-texts.ts","../src/editor/insert-break.ts","../src/editor/insert-node.ts","../src/editor/insert-soft-break.ts","../src/editor/insert-text.ts","../src/editor/is-block.ts","../src/editor/is-edge.ts","../src/editor/is-empty.ts","../src/editor/is-end.ts","../src/editor/is-normalizing.ts","../src/editor/is-start.ts","../src/editor/last.ts","../src/editor/leaf.ts","../src/editor/levels.ts","../src/editor/marks.ts","../src/editor/next.ts","../src/editor/node.ts","../src/editor/nodes.ts","../src/editor/normalize.ts","../src/editor/parent.ts","../src/editor/path-ref.ts","../src/editor/path-refs.ts","../src/editor/path.ts","../src/editor/point-ref.ts","../src/editor/point-refs.ts","../src/editor/point.ts","../src/editor/positions.ts","../src/editor/previous.ts","../src/editor/range-ref.ts","../src/editor/range-refs.ts","../src/editor/range.ts","../src/editor/remove-mark.ts","../src/editor/set-normalizing.ts","../src/editor/start.ts","../src/editor/string.ts","../src/editor/unhang-range.ts","../src/editor/without-normalizing.ts","../src/editor/should-merge-nodes-remove-prev-node.ts","../src/transforms-text/delete-text.ts","../src/transforms-text/insert-fragment.ts","../src/transforms-selection/collapse.ts","../src/transforms-selection/deselect.ts","../src/transforms-selection/move.ts","../src/transforms-selection/select.ts","../src/transforms-selection/set-point.ts","../src/transforms-selection/set-selection.ts","../src/transforms-node/insert-nodes.ts","../src/transforms-node/lift-nodes.ts","../src/transforms-node/merge-nodes.ts","../src/transforms-node/move-nodes.ts","../src/transforms-node/remove-nodes.ts","../src/transforms-node/set-nodes.ts","../src/transforms-node/split-nodes.ts","../src/transforms-node/unset-nodes.ts","../src/transforms-node/unwrap-nodes.ts","../src/transforms-node/wrap-nodes.ts","../src/create-editor.ts"],"sourcesContent":["import { Operation, Path } from '..'\n\n/**\n * `PathRef` objects keep a specific path in a document synced over time as new\n * operations are applied to the editor. You can access their `current` property\n * at any time for the up-to-date path value.\n */\n\nexport interface PathRef {\n current: Path | null\n affinity: 'forward' | 'backward' | null\n unref(): Path | null\n}\n\nexport interface PathRefInterface {\n /**\n * Transform the path ref's current value by an operation.\n */\n transform: (ref: PathRef, op: Operation) => void\n}\n\n// eslint-disable-next-line no-redeclare\nexport const PathRef: PathRefInterface = {\n transform(ref: PathRef, op: Operation): void {\n const { current, affinity } = ref\n\n if (current == null) {\n return\n }\n\n const path = Path.transform(current, op, { affinity })\n ref.current = path\n\n if (path == null) {\n ref.unref()\n }\n },\n}\n","import { Operation, Point } from '..'\nimport { TextDirection } from '../types/types'\n\n/**\n * `PointRef` objects keep a specific point in a document synced over time as new\n * operations are applied to the editor. You can access their `current` property\n * at any time for the up-to-date point value.\n */\n\nexport interface PointRef {\n current: Point | null\n affinity: TextDirection | null\n unref(): Point | null\n}\n\nexport interface PointRefInterface {\n /**\n * Transform the point ref's current value by an operation.\n */\n transform: (ref: PointRef, op: Operation) => void\n}\n\n// eslint-disable-next-line no-redeclare\nexport const PointRef: PointRefInterface = {\n transform(ref: PointRef, op: Operation): void {\n const { current, affinity } = ref\n\n if (current == null) {\n return\n }\n\n const point = Point.transform(current, op, { affinity })\n ref.current = point\n\n if (point == null) {\n ref.unref()\n }\n },\n}\n","import { Operation, Range } from '..'\n\n/**\n * `RangeRef` objects keep a specific range in a document synced over time as new\n * operations are applied to the editor. You can access their `current` property\n * at any time for the up-to-date range value.\n */\n\nexport interface RangeRef {\n current: Range | null\n affinity: 'forward' | 'backward' | 'outward' | 'inward' | null\n unref(): Range | null\n}\n\nexport interface RangeRefInterface {\n /**\n * Transform the range ref's current value by an operation.\n */\n transform: (ref: RangeRef, op: Operation) => void\n}\n\n// eslint-disable-next-line no-redeclare\nexport const RangeRef: RangeRefInterface = {\n transform(ref: RangeRef, op: Operation): void {\n const { current, affinity } = ref\n\n if (current == null) {\n return\n }\n\n const path = Range.transform(current, op, { affinity })\n ref.current = path\n\n if (path == null) {\n ref.unref()\n }\n },\n}\n","import { Editor, Path, PathRef, PointRef, RangeRef } from '..'\n\nexport const DIRTY_PATHS: WeakMap<Editor, Path[]> = new WeakMap()\nexport const DIRTY_PATH_KEYS: WeakMap<Editor, Set<string>> = new WeakMap()\nexport const FLUSHING: WeakMap<Editor, boolean> = new WeakMap()\nexport const NORMALIZING: WeakMap<Editor, boolean> = new WeakMap()\nexport const PATH_REFS: WeakMap<Editor, Set<PathRef>> = new WeakMap()\nexport const POINT_REFS: WeakMap<Editor, Set<PointRef>> = new WeakMap()\nexport const RANGE_REFS: WeakMap<Editor, Set<RangeRef>> = new WeakMap()\n","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 _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;","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 _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;","import {\n InsertNodeOperation,\n MergeNodeOperation,\n MoveNodeOperation,\n Operation,\n RemoveNodeOperation,\n SplitNodeOperation,\n} from '..'\nimport { TextDirection } from '../types/types'\n\n/**\n * `Path` arrays are a list of indexes that describe a node's exact position in\n * a Slate node tree. Although they are usually relative to the root `Editor`\n * object, they can be relative to any `Node` object.\n */\n\nexport type Path = number[]\n\nexport interface PathAncestorsOptions {\n reverse?: boolean\n}\n\nexport interface PathLevelsOptions {\n reverse?: boolean\n}\n\nexport interface PathTransformOptions {\n affinity?: TextDirection | null\n}\n\nexport interface PathInterface {\n /**\n * Get a list of ancestor paths for a given path.\n *\n * The paths are sorted from shallowest to deepest ancestor. However, if the\n * `reverse: true` option is passed, they are reversed.\n */\n ancestors: (path: Path, options?: PathAncestorsOptions) => Path[]\n\n /**\n * Get the common ancestor path of two paths.\n */\n common: (path: Path, another: Path) => Path\n\n /**\n * Compare a path to another, returning an integer indicating whether the path\n * was before, at, or after the other.\n *\n * Note: Two paths of unequal length can still receive a `0` result if one is\n * directly above or below the other. If you want exact matching, use\n * [[Path.equals]] instead.\n */\n compare: (path: Path, another: Path) => -1 | 0 | 1\n\n /**\n * Check if a path ends after one of the indexes in another.\n */\n endsAfter: (path: Path, another: Path) => boolean\n\n /**\n * Check if a path ends at one of the indexes in another.\n */\n endsAt: (path: Path, another: Path) => boolean\n\n /**\n * Check if a path ends before one of the indexes in another.\n */\n endsBefore: (path: Path, another: Path) => boolean\n\n /**\n * Check if a path is exactly equal to another.\n */\n equals: (path: Path, another: Path) => boolean\n\n /**\n * Check if the path of previous sibling node exists\n */\n hasPrevious: (path: Path) => boolean\n\n /**\n * Check if a path is after another.\n */\n isAfter: (path: Path, another: Path) => boolean\n\n /**\n * Check if a path is an ancestor of another.\n */\n isAncestor: (path: Path, another: Path) => boolean\n\n /**\n * Check if a path is before another.\n */\n isBefore: (path: Path, another: Path) => boolean\n\n /**\n * Check if a path is a child of another.\n */\n isChild: (path: Path, another: Path) => boolean\n\n /**\n * Check if a path is equal to or an ancestor of another.\n */\n isCommon: (path: Path, another: Path) => boolean\n\n /**\n * Check if a path is a descendant of another.\n */\n isDescendant: (path: Path, another: Path) => boolean\n\n /**\n * Check if a path is the parent of another.\n */\n isParent: (path: Path, another: Path) => boolean\n\n /**\n * Check is a value implements the `Path` interface.\n */\n isPath: (value: any) => value is Path\n\n /**\n * Check if a path is a sibling of another.\n */\n isSibling: (path: Path, another: Path) => boolean\n\n /**\n * Get a list of paths at every level down to a path. Note: this is the same\n * as `Path.ancestors`, but including the path itself.\n *\n * The paths are sorted from shallowest to deepest. However, if the `reverse:\n * true` option is passed, they are reversed.\n */\n levels: (path: Path, options?: PathLevelsOptions) => Path[]\n\n /**\n * Given a path, get the path to the next sibling node.\n */\n next: (path: Path) => Path\n\n /**\n * Returns whether this operation can affect paths or not. Used as an\n * optimization when updating dirty paths during normalization\n *\n * NOTE: This *must* be kept in sync with the implementation of 'transform'\n * below\n */\n operationCanTransformPath: (\n operation: Operation\n ) => operation is\n | InsertNodeOperation\n | RemoveNodeOperation\n | MergeNodeOperation\n | SplitNodeOperation\n | MoveNodeOperation\n\n /**\n * Given a path, return a new path referring to the parent node above it.\n */\n parent: (path: Path) => Path\n\n /**\n * Given a path, get the path to the previous sibling node.\n */\n previous: (path: Path) => Path\n\n /**\n * Get a path relative to an ancestor.\n */\n relative: (path: Path, ancestor: Path) => Path\n\n /**\n * Transform a path by an operation.\n */\n transform: (\n path: Path,\n operation: Operation,\n options?: PathTransformOptions\n ) => Path | null\n}\n\n// eslint-disable-next-line no-redeclare\nexport const Path: PathInterface = {\n ancestors(path: Path, options: PathAncestorsOptions = {}): Path[] {\n const { reverse = false } = options\n let paths = Path.levels(path, options)\n\n if (reverse) {\n paths = paths.slice(1)\n } else {\n paths = paths.slice(0, -1)\n }\n\n return paths\n },\n\n common(path: Path, another: Path): Path {\n const common: Path = []\n\n for (let i = 0; i < path.length && i < another.length; i++) {\n const av = path[i]\n const bv = another[i]\n\n if (av !== bv) {\n break\n }\n\n common.push(av)\n }\n\n return common\n },\n\n compare(path: Path, another: Path): -1 | 0 | 1 {\n const min = Math.min(path.length, another.length)\n\n for (let i = 0; i < min; i++) {\n if (path[i] < another[i]) return -1\n if (path[i] > another[i]) return 1\n }\n\n return 0\n },\n\n endsAfter(path: Path, another: Path): boolean {\n const i = path.length - 1\n const as = path.slice(0, i)\n const bs = another.slice(0, i)\n const av = path[i]\n const bv = another[i]\n return Path.equals(as, bs) && av > bv\n },\n\n endsAt(path: Path, another: Path): boolean {\n const i = path.length\n const as = path.slice(0, i)\n const bs = another.slice(0, i)\n return Path.equals(as, bs)\n },\n\n endsBefore(path: Path, another: Path): boolean {\n const i = path.length - 1\n const as = path.slice(0, i)\n const bs = another.slice(0, i)\n const av = path[i]\n const bv = another[i]\n return Path.equals(as, bs) && av < bv\n },\n\n equals(path: Path, another: Path): boolean {\n return (\n path.length === another.length && path.every((n, i) => n === another[i])\n )\n },\n\n hasPrevious(path: Path): boolean {\n return path[path.length - 1] > 0\n },\n\n isAfter(path: Path, another: Path): boolean {\n return Path.compare(path, another) === 1\n },\n\n isAncestor(path: Path, another: Path): boolean {\n return path.length < another.length && Path.compare(path, another) === 0\n },\n\n isBefore(path: Path, another: Path): boolean {\n return Path.compare(path, another) === -1\n },\n\n isChild(path: Path, another: Path): boolean {\n return (\n path.length === another.length + 1 && Path.compare(path, another) === 0\n )\n },\n\n isCommon(path: Path, another: Path): boolean {\n return path.length <= another.length && Path.compare(path, another) === 0\n },\n\n isDescendant(path: Path, another: Path): boolean {\n return path.length > another.length && Path.compare(path, another) === 0\n },\n\n isParent(path: Path, another: Path): boolean {\n return (\n path.length + 1 === another.length && Path.compare(path, another) === 0\n )\n },\n\n isPath(value: any): value is Path {\n return (\n Array.isArray(value) &&\n (value.length === 0 || typeof value[0] === 'number')\n )\n },\n\n isSibling(path: Path, another: Path): boolean {\n if (path.length !== another.length) {\n return false\n }\n\n const as = path.slice(0, -1)\n const bs = another.slice(0, -1)\n const al = path[path.length - 1]\n const bl = another[another.length - 1]\n return al !== bl && Path.equals(as, bs)\n },\n\n levels(path: Path, options: PathLevelsOptions = {}): Path[] {\n const { reverse = false } = options\n const list: Path[] = []\n\n for (let i = 0; i <= path.length; i++) {\n list.push(path.slice(0, i))\n }\n\n if (reverse) {\n list.reverse()\n }\n\n return list\n },\n\n next(path: Path): Path {\n if (path.length === 0) {\n throw new Error(\n `Cannot get the next path of a root path [${path}], because it has no next index.`\n )\n }\n\n const last = path[path.length - 1]\n return path.slice(0, -1).concat(last + 1)\n },\n\n operationCanTransformPath(\n operation: Operation\n ): operation is\n | InsertNodeOperation\n | RemoveNodeOperation\n | MergeNodeOperation\n | SplitNodeOperation\n | MoveNodeOperation {\n switch (operation.type) {\n case 'insert_node':\n case 'remove_node':\n case 'merge_node':\n case 'split_node':\n case 'move_node':\n return true\n default:\n return false\n }\n },\n\n parent(path: Path): Path {\n if (path.length === 0) {\n throw new Error(`Cannot get the parent path of the root path [${path}].`)\n }\n\n return path.slice(0, -1)\n },\n\n previous(path: Path): Path {\n if (path.length === 0) {\n throw new Error(\n `Cannot get the previous path of a root path [${path}], because it has no previous index.`\n )\n }\n\n const last = path[path.length - 1]\n\n if (last <= 0) {\n throw new Error(\n `Cannot get the previous path of a first child path [${path}] because it would result in a negative index.`\n )\n }\n\n return path.slice(0, -1).concat(last - 1)\n },\n\n relative(path: Path, ancestor: Path): Path {\n if (!Path.isAncestor(ancestor, path) && !Path.equals(path, ancestor)) {\n throw new Error(\n `Cannot get the relative path of [${path}] inside ancestor [${ancestor}], because it is not above or equal to the path.`\n )\n }\n\n return path.slice(ancestor.length)\n },\n\n transform(\n path: Path | null,\n operation: Operation,\n options: PathTransformOptions = {}\n ): Path | null {\n if (!path) return null\n\n // PERF: use destructing instead of immer\n const p = [...path]\n const { affinity = 'forward' } = options\n\n // PERF: Exit early if the operation is guaranteed not to have an effect.\n if (path.length === 0) {\n return p\n }\n\n switch (operation.type) {\n case 'insert_node': {\n const { path: op } = operation\n\n if (\n Path.equals(op, p) ||\n Path.endsBefore(op, p) ||\n Path.isAncestor(op, p)\n ) {\n p[op.length - 1] += 1\n }\n\n break\n }\n\n case 'remove_node': {\n const { path: op } = operation\n\n if (Path.equals(op, p) || Path.isAncestor(op, p)) {\n return null\n } else if (Path.endsBefore(op, p)) {\n p[op.length - 1] -= 1\n }\n\n break\n }\n\n case 'merge_node': {\n const { path: op, position } = operation\n\n if (Path.equals(op, p) || Path.endsBefore(op, p)) {\n p[op.length - 1] -= 1\n } else if (Path.isAncestor(op, p)) {\n p[op.length - 1] -= 1\n p[op.length] += position\n }\n\n break\n }\n\n case 'split_node': {\n const { path: op, position } = operation\n\n if (Path.equals(op, p)) {\n if (affinity === 'forward') {\n p[p.length - 1] += 1\n } else if (affinity === 'backward') {\n // Nothing, because it still refers to the right path.\n } else {\n return null\n }\n } else if (Path.endsBefore(op, p)) {\n p[op.length - 1] += 1\n } else if (Path.isAncestor(op, p) && path[op.length] >= position) {\n p[op.length - 1] += 1\n p[op.length] -= position\n }\n\n break\n }\n\n case 'move_node': {\n const { path: op, newPath: onp } = operation\n\n // If the old and new path are the same, it's a no-op.\n if (Path.equals(op, onp)) {\n return p\n }\n\n if (Path.isAncestor(op, p) || Path.equals(op, p)) {\n const copy = onp.slice()\n\n if (Path.endsBefore(op, onp) && op.length < onp.length) {\n copy[op.length - 1] -= 1\n }\n\n return copy.concat(p.slice(op.length))\n } else if (\n Path.isSibling(op, onp) &&\n (Path.isAncestor(onp, p) || Path.equals(onp, p))\n ) {\n if (Path.endsBefore(op, p)) {\n p[op.length - 1] -= 1\n } else {\n p[op.length - 1] += 1\n }\n } else if (\n Path.endsBefore(onp, p) ||\n Path.equals(onp, p) ||\n Path.isAncestor(onp, p)\n ) {\n if (Path.endsBefore(op, p)) {\n p[op.length - 1] -= 1\n }\n\n p[onp.length - 1] += 1\n } else if (Path.endsBefore(op, p)) {\n if (Path.equals(onp, p)) {\n p[onp.length - 1] += 1\n }\n\n p[op.length - 1] -= 1\n }\n\n break\n }\n }\n\n return p\n },\n}\n","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;","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 _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;","import { createDraft, finishDraft, isDraft } from 'immer'\nimport {\n Ancestor,\n Descendant,\n Editor,\n Element,\n Node,\n NodeEntry,\n Operation,\n Path,\n Point,\n Range,\n Scrubber,\n Selection,\n Text,\n} from '../../index'\n\nexport interface GeneralTransforms {\n /**\n * Transform the editor by an operation.\n */\n transform: (editor: Editor, op: Operation) => void\n}\n\nconst applyToDraft = (editor: Editor, selection: Selection, op: Operation) => {\n switch (op.type) {\n case 'insert_node': {\n const { path, node } = op\n const parent = Node.parent(editor, path)\n const index = path[path.length - 1]\n\n if (index > parent.children.length) {\n throw new Error(\n `Cannot apply an \"insert_node\" operation at path [${path}] because the destination is past the end of the node.`\n )\n }\n\n parent.children.splice(index, 0, node)\n\n if (selection) {\n for (const [point, key] of Range.points(selection)) {\n selection[key] = Point.transform(point, op)!\n }\n }\n\n break\n }\n\n case 'insert_text': {\n const { path, offset, text } = op\n if (text.length === 0) break\n const node = Node.leaf(editor, path)\n const before = node.text.slice(0, offset)\n const after = node.text.slice(offset)\n node.text = before + text + after\n\n if (selection) {\n for (const [point, key] of Range.points(selection)) {\n selection[key] = Point.transform(point, op)!\n }\n }\n\n break\n }\n\n case 'merge_node': {\n const { path } = op\n const node = Node.get(editor, path)\n const prevPath = Path.previous(path)\n const prev = Node.get(editor, prevPath)\n const parent = Node.parent(editor, path)\n const index = path[path.length - 1]\n\n if (Text.isText(node) && Text.isText(prev)) {\n prev.text += node.text\n } else if (!Text.isText(node) && !Text.isText(prev)) {\n prev.children.push(...node.children)\n } else {\n throw new Error(\n `Cannot apply a \"merge_node\" operation at path [${path}] to nodes of different interfaces: ${Scrubber.stringify(\n node\n )} ${Scrubber.stringify(prev)}`\n )\n }\n\n parent.children.splice(index, 1)\n\n if (selection) {\n for (const [point, key] of Range.points(selection)) {\n selection[key] = Point.transform(point, op)!\n }\n }\n\n break\n }\n\n case 'move_node': {\n const { path, newPath } = op\n\n if (Path.isAncestor(path, newPath)) {\n throw new Error(\n `Cannot move a path [${path}] to new path [${newPath}] because the destination is inside itself.`\n )\n }\n\n const node = Node.get(editor, path)\n const parent = Node.parent(editor, path)\n const index = path[path.length - 1]\n\n // This is tricky, but since the `path` and `newPath` both refer to\n // the same snapshot in time, there's a mismatch. After either\n // removing the original position, the second step's path can be out\n // of date. So instead of using the `op.newPath` directly, we\n // transform `op.path` to ascertain what the `newPath` would be after\n // the operation was applied.\n parent.children.splice(index, 1)\n const truePath = Path.transform(path, op)!\n const newParent = Node.get(editor, Path.parent(truePath)) as Ancestor\n const newIndex = truePath[truePath.length - 1]\n\n newParent.children.splice(newIndex, 0, node)\n\n if (selection) {\n for (const [point, key] of Range.points(selection)) {\n selection[key] = Point.transform(point, op)!\n }\n }\n\n break\n }\n\n case 'remove_node': {\n const { path } = op\n const index = path[path.length - 1]\n const parent = Node.parent(editor, path)\n parent.children.splice(index, 1)\n\n // Transform all the points in the value, but if the point was in the\n // node that was removed we need to update the range or remove it.\n if (selection) {\n for (const [point, key] of Range.points(selection)) {\n const result = Point.transform(point, op)\n\n if (selection != null && result != null) {\n selection[key] = result\n } else {\n let prev: NodeEntry<Text> | undefined\n let next: NodeEntry<Text> | undefined\n\n for (const [n, p] of Node.texts(editor)) {\n if (Path.compare(p, path) === -1) {\n prev = [n, p]\n } else {\n next = [n, p]\n break\n }\n }\n\n let preferNext = false\n if (prev && next) {\n if (Path.equals(next[1], path)) {\n preferNext = !Path.hasPrevious(next[1])\n } else {\n preferNext =\n Path.common(prev[1], path).length <\n Path.common(next[1], path).length\n }\n }\n\n if (prev && !preferNext) {\n point.path = prev[1]\n point.offset = prev[0].text.length\n } else if (next) {\n point.path = next[1]\n point.offset = 0\n } else {\n selection = null\n }\n }\n }\n }\n\n break\n }\n\n case 'remove_text': {\n const { path, offset, text } = op\n if (text.length === 0) break\n const node = Node.leaf(editor, path)\n const before = node.text.slice(0, offset)\n const after = node.text.slice(offset + text.length)\n node.text = before + after\n\n if (selection) {\n for (const [point, key] of Range.points(selection)) {\n selection[key] = Point.transform(point, op)!\n }\n }\n\n break\n }\n\n case 'set_node': {\n const { path, properties, newProperties } = op\n\n if (path.length === 0) {\n throw new Error(`Cannot set properties on the root node!`)\n }\n\n const node = Node.get(editor, path)\n\n for (const key in newProperties) {\n if (key === 'children' || key === 'text') {\n throw new Error(`Cannot set the \"${key}\" property of nodes!`)\n }\n\n const value = newProperties[<keyof Node>key]\n\n if (value == null) {\n delete node[<keyof Node>key]\n } else {\n node[<keyof Node>key] = value\n }\n }\n\n // properties that were previously defined, but are now missing, must be deleted\n for (const key in properties) {\n if (!newProperties.hasOwnProperty(key)) {\n delete node[<keyof Node>key]\n }\n }\n\n break\n }\n\n case 'set_selection': {\n const { newProperties } = op\n\n if (newProperties == null) {\n selection = newProperties\n } else {\n if (selection == null) {\n if (!Range.isRange(newProperties)) {\n throw new Error(\n `Cannot apply an incomplete \"set_selection\" operation properties ${Scrubber.stringify(\n newProperties\n )} when there is no current selection.`\n )\n }\n\n selection = { ...newProperties }\n }\n\n for (const key in newProperties) {\n const value = newProperties[<keyof Range>key]\n\n if (value == null) {\n if (key === 'anchor' || key === 'focus') {\n throw new Error(`Cannot remove the \"${key}\" selection property`)\n }\n\n delete selection[<keyof Range>key]\n } else {\n selection[<keyof Range>key] = value\n }\n }\n }\n\n break\n }\n\n case 'split_node': {\n const { path, position, properties } = op\n\n if (path.length === 0) {\n throw new Error(\n `Cannot apply a \"split_node\" operation at path [${path}] because the root node cannot be split.`\n )\n }\n\n const node = Node.get(editor, path)\n const parent = Node.parent(editor, path)\n const index = path[path.length - 1]\n let newNode: Descendant\n\n if (Text.isText(node)) {\n const before = node.text.slice(0, position)\n const after = node.text.slice(position)\n node.text = before\n newNode = {\n ...(properties as Partial<Text>),\n text: after,\n }\n } else {\n const before = node.children.slice(0, position)\n const after = node.children.slice(position)\n node.children = before\n\n newNode = {\n ...(properties as Partial<Element>),\n children: after,\n }\n }\n\n parent.children.splice(index + 1, 0, newNode)\n\n if (selection) {\n for (const [point, key] of Range.points(selection)) {\n selection[key] = Point.transform(point, op)!\n }\n }\n\n break\n }\n }\n return selection\n}\n\n// eslint-disable-next-line no-redeclare\nexport const GeneralTransforms: GeneralTransforms = {\n transform(editor: Editor, op: Operation): void {\n editor.children = createDraft(editor.children)\n let selection = editor.selection && createDraft(editor.selection)\n\n try {\n selection = applyToDraft(editor, selection, op)\n } finally {\n editor.children = finishDraft(editor.children)\n\n if (selection) {\n editor.selection = isDraft(selection)\n ? (finishDraft(selection) as Range)\n : selection\n } else {\n editor.selection = null\n }\n }\n },\n}\n","import { Editor, Element, Location, Node, Path } from '../../index'\nimport { NodeMatch, PropsCompare, PropsMerge } from '../editor'\nimport { MaximizeMode, RangeMode } from '../../types/types'\n\nexport interface NodeInsertNodesOptions<T extends Node> {\n at?: Location\n match?: NodeMatch<T>\n mode?: RangeMode\n hanging?: boolean\n select?: boolean\n voids?: boolean\n batchDirty?: boolean\n}\n\nexport interface NodeTransforms {\n /**\n * Insert nodes in the editor\n * at the specified location or (if not defined) the current selection or (if not defined) the end of the document.\n */\n insertNodes: <T extends Node>(\n editor: Editor,\n nodes: Node | Node[],\n options?: NodeInsertNodesOptions<T>\n ) => void\n\n /**\n * Lift nodes at a specific location upwards in the document tree, splitting\n * their parent in two if necessary.\n */\n liftNodes: <T extends Node>(\n editor: Editor,\n options?: {\n at?: Location\n match?: NodeMatch<T>\n mode?: MaximizeMode\n voids?: boolean\n }\n ) => void\n\n /**\n * Merge a node at a location with the previous node of the same depth,\n * removing any empty containing nodes after the merge if necessary.\n */\n mergeNodes: <T extends Node>(\n editor: Editor,\n options?: {\n at?: Location\n match?: NodeMatch<T>\n mode?: RangeMode\n hanging?: boolean\n voids?: boolean\n }\n ) => void\n\n /**\n * Move the nodes at a location to a new location.\n */\n moveNodes: <T extends Node>(\n editor: Editor,\n options: {\n at?: Location\n match?: NodeMatch<T>\n mode?: MaximizeMode\n to: Path\n voids?: boolean\n }\n ) => void\n\n /**\n * Remove the nodes at a specific location in the document.\n */\n removeNodes: <T extends Node>(\n editor: Editor,\n options?: {\n at?: Location\n match?: NodeMatch<T>\n mode?: RangeMode\n hanging?: boolean\n voids?: boolean\n }\n ) => void\n\n /**\n * Set new properties on the nodes at a location.\n */\n setNodes: <T extends Node>(\n editor: Editor,\n props: Partial<T>,\n options?: {\n at?: Location\n match?: NodeMatch<T>\n mode?: MaximizeMode\n hanging?: boolean\n split?: boolean\n voids?: boolean\n compare?: PropsCompare\n merge?: PropsMerge\n }\n ) => void\n\n /**\n * Split the nodes at a specific location.\n */\n splitNodes: <T extends Node>(\n editor: Editor,\n options?: {\n at?: Location\n match?: NodeMatch<T>\n mode?: RangeMode\n always?: boolean\n height?: number\n voids?: boolean\n }\n ) => void\n\n /**\n * Unset properties on the nodes at a location.\n */\n unsetNodes: <T extends Node>(\n editor: Editor,\n props: string | string[],\n options?: {\n at?: Location\n match?: NodeMatch<T>\n mode?: MaximizeMode\n hanging?: boolean\n split?: boolean\n voids?: boolean\n }\n ) => void\n\n /**\n * Unwrap the nodes at a location from a parent node, splitting the parent if\n * necessary to ensure that only the content in the range is unwrapped.\n */\n unwrapNodes: <T extends Node>(\n editor: Editor,\n options?: {\n at?: Location\n match?: NodeMatch<T>\n mode?: MaximizeMode\n split?: boolean\n voids?: boolean\n }\n ) => void\n\n /**\n * Wrap the nodes at a location in a new container node, splitting the edges\n * of the range first to ensure that only the content in the range is wrapped.\n */\n wrapNodes: <T extends Node>(\n editor: Editor,\n element: Element,\n options?: {\n at?: Location\n match?: NodeMatch<T>\n mode?: MaximizeMode\n split?: boolean\n voids?: boolean\n }\n ) => void\n}\n\n// eslint-disable-next-line no-redeclare\nexport const NodeTransforms: NodeTransforms = {\n insertNodes(editor, nodes, options) {\n editor.insertNodes(nodes, options)\n },\n liftNodes(editor, options) {\n editor.liftNodes(options)\n },\n mergeNodes(editor, options) {\n editor.mergeNodes(options)\n },\n moveNodes(editor, options) {\n editor.moveNodes(options)\n },\n removeNodes(editor, options) {\n editor.removeNodes(options)\n },\n setNodes(editor, props, options) {\n editor.setNodes(props, options)\n },\n splitNodes(editor, options) {\n editor.splitNodes(options)\n },\n unsetNodes(editor, props, options) {\n editor.unsetNodes(props, options)\n },\n unwrapNodes(editor, options) {\n editor.unwrapNodes(options)\n },\n wrapNodes(editor, element, options) {\n editor.wrapNodes(element, options)\n },\n}\n","import { Editor, Location, Point, Range } from '../../index'\nimport { MoveUnit, SelectionEdge } from '../../types/types'\n\nexport interface SelectionCollapseOptions {\n edge?: SelectionEdge\n}\n\nexport interface SelectionMoveOptions {\n distance?: number\n unit?: MoveUnit\n reverse?: boolean\n edge?: SelectionEdge\n}\n\nexport interface SelectionSetPointOptions {\n edge?: SelectionEdge\n}\n\nexport interface SelectionTransforms {\n /**\n * Collapse the selection.\n */\n collapse: (editor: Editor, options?: SelectionCollapseOptions) => void\n\n /**\n * Unset the selection.\n */\n deselect: (editor: Editor) => void\n\n /**\n * Move the selection's point forward or backward.\n */\n move: (editor: Editor, options?: SelectionMoveOptions) => void\n\n /**\n * Set the selection to a new value.\n */\n select: (editor: Editor, target: Location) => void\n\n /**\n * Set new properties on one of the selection's points.\n */\n setPoint: (\n editor: Editor,\n props: Partial<Point>,\n options?: SelectionSetPointOptions\n ) => void\n\n /**\n * Set new properties on the selection.\n */\n setSelection: (editor: Editor, props: Partial<Range>) => void\n}\n\n// eslint-disable-next-line no-redeclare\nexport const SelectionTransforms: SelectionTransforms = {\n collapse(editor, options) {\n editor.collapse(options)\n },\n deselect(editor) {\n editor.deselect()\n },\n move(editor, options) {\n editor.move(options)\n },\n select(editor, target) {\n editor.select(target)\n },\n setPoint(editor, props, options) {\n editor.setPoint(props, options)\n },\n setSelection(editor, props) {\n editor.setSelection(props)\n },\n}\n","import { isPlainObject } from 'is-plain-object'\n\n/*\n Custom deep equal comparison for Slate nodes.\n\n We don't need general purpose deep equality;\n Slate only supports plain values, Arrays, and nested objects.\n Complex values nested inside Arrays are not supported.\n\n Slate objects are designed to be serialised, so\n missing keys are deliberately normalised to undefined.\n */\nexport const isDeepEqual = (\n node: Record<string, any>,\n another: Record<string, any>\n): boolean => {\n for (const key in node) {\n const a = node[key]\n const b = another[key]\n if (isPlainObject(a) && isPlainObject(b)) {\n if (!isDeepEqual(a, b)) return false\n } else if (Array.isArray(a) && Array.isArray(b)) {\n if (a.length !== b.length) return false\n for (let i = 0; i < a.length; i++) {\n if (a[i] !== b[i]) return false\n }\n } else if (a !== b) {\n return false\n }\n }\n\n /*\n Deep object equality is only necessary in one direction; in the reverse direction\n we are only looking for keys that are missing.\n As above, undefined keys are normalised to missing.\n */\n\n for (const key in another) {\n if (node[key] === undefined && another[key] !== undefined) {\n return false\n }\n }\n\n return true\n}\n","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;","import { produce } from 'immer'\nimport { isPlainObject } from 'is-plain-object'\nimport { ExtendedType, Operation, Path, Point, PointEntry } from '..'\nimport { RangeDirection } from '../types/types'\n\n/**\n * `Range` objects are a set of points that refer to a specific span of a Slate\n * document. They can define a span inside a single node or a can span across\n * multiple nodes.\n */\n\nexport interface BaseRange {\n anchor: Point\n focus: Point\n}\n\nexport type Range = ExtendedType<'Range', BaseRange>\n\nexport interface RangeEdgesOptions {\n reverse?: boolean\n}\n\nexport interface RangeTransformOptions {\n affinity?: RangeDirection | null\n}\n\nexport interface RangeInterface {\n /**\n * Get the start and end points of a range, in the order in which they appear\n * in the document.\n */\n edges: (range: Range, options?: RangeEdgesOptions) => [Point, Point]\n\n /**\n * Get the end point of a range.\n */\n end: (range: Range) => Point\n\n /**\n * Check if a range is exactly equal to another.\n */\n equals: (range: Range, another: Range) => boolean\n\n /**\n * Check if a range includes a path, a point or part of another range.\n */\n includes: (range: Range, target: Path | Point | Range) => boolean\n\n /**\n * Check if a range includes another range.\n */\n surrounds: (range: Range, target: Range) => boolean\n\n /**\n * Get the intersection of a range with another.\n */\n intersection: (range: Range, another: Range) => Range | null\n\n /**\n * Check if a range is backward, meaning that its anchor point appears in the\n * document _after_ its focus point.\n */\n isBackward: (range: Range) => boolean\n\n /**\n * Check if a range is collapsed, meaning that both its anchor and focus\n * points refer to the exact same position in the document.\n */\n isCollapsed: (range: Range) => boolean\n\n /**\n * Check if a range is expanded.\n *\n * This is the opposite of [[Range.isCollapsed]] and is provided for legibility.\n */\n isExpanded: (range: Range) => boolean\n\n /**\n * Check if a range is forward.\n *\n * This is the opposite of [[Range.isBackward]] and is provided for legibility.\n */\n isForward: (range: Range) => boolean\n\n /**\n * Check if a value implements the [[Range]] interface.\n */\n isRange: (value: any) => value is Range\n\n /**\n * Iterate through all of the point entries in a range.\n */\n points: (range: Range) => Generator<PointEntry, void, undefined>\n\n /**\n * Get the start point of a range.\n */\n start: (range: Range) => Point\n\n /**\n * Transform a range by an operation.\n */\n transform: (\n range: Range,\n op: Operation,\n options?: RangeTransformOptions\n ) => Range | null\n}\n\n// eslint-disable-next-line no-redeclare\nexport const Range: RangeInterface = {\n edges(range: Range, options: RangeEdgesOptions = {}): [Point, Point] {\n const { reverse = false } = options\n const { anchor, focus } = range\n return Range.isBackward(range) === reverse\n ? [anchor, focus]\n : [focus, anchor]\n },\n\n end(range: Range): Point {\n const [, end] = Range.edges(range)\n return end\n },\n\n equals(range: Range, another: Range): boolean {\n return (\n Point.equals(range.anchor, another.anchor) &&\n Point.equals(range.focus, another.focus)\n )\n },\n\n surrounds(range: Range, target: Range): boolean {\n const intersectionRange = Range.intersection(range, target)\n if (!intersectionRange) {\n return false\n }\n return Range.equals(intersectionRange, target)\n },\n\n includes(range: Range, target: Path | Point | Range): boolean {\n if (Range.isRange(target)) {\n if (\n Range.includes(range, target.anchor) ||\n Range.includes(range, target.focus)\n ) {\n return true\n }\n\n const [rs, re] = Range.edges(range)\n const [ts, te] = Range.edges(target)\n return Point.isBefore(rs, ts) && Point.isAfter(re, te)\n }\n\n const [start, end] = Range.edges(range)\n let isAfterStart = false\n let isBeforeEnd = false\n\n if (Point.isPoint(target)) {\n isAfterStart = Point.compare(target, start) >= 0\n isBeforeEnd = Point.compare(target, end) <= 0\n } else {\n isAfterStart = Path.compare(target, start.path) >= 0\n isBeforeEnd = Path.compare(target, end.path) <= 0\n }\n\n return isAfterStart && isBeforeEnd\n },\n\n intersection(range: Range, another: Range): Range | null {\n const { anchor, focus, ...rest } = range\n const [s1, e1] = Range.edges(range)\n const [s2, e2] = Range.edges(another)\n const start = Point.isBefore(s1, s2) ? s2 : s1\n const end = Point.isBefore(e1, e2) ? e1 : e2\n\n if (Point.isBefore(end, start)) {\n return null\n } else {\n return { anchor: start, focus: end, ...rest }\n }\n },\n\n isBackward(range: Range): boolean {\n const { anchor, focus } = range\n return Point.isAfter(anchor, focus)\n },\n\n isCollapsed(range: Range): boolean {\n const { anchor, focus } = range\n return Point.equals(anchor, focus)\n },\n\n isExpanded(range: Range): boolean {\n return !Range.isCollapsed(range)\n },\n\n isForward(range: Range): boolean {\n return !Range.isBackward(range)\n },\n\n isRange(value: any): value is Range {\n return (\n isPlainObject(value) &&\n Point.isPoint(value.anchor) &&\n Point.isPoint(value.focus)\n )\n },\n\n *points(range: Range): Generator<PointEntry, void, undefined> {\n yield [range.anchor, 'anchor']\n yield [range.focus, 'focus']\n },\n\n start(range: Range): Point {\n const [start] = Range.edges(range)\n return start\n },\n\n transform(\n range: Range | null,\n op: Operation,\n options: RangeTransformOptions = {}\n ): Range | null {\n return produce(range, r => {\n if (r === null) {\n return null\n }\n const { affinity = 'inward' } = options\n let affinityAnchor: 'forward' | 'backward' | null\n let affinityFocus: 'forward' | 'backward' | null\n\n if (affinity === 'inward') {\n // If the range is collapsed, make sure to use the same affinity to\n // avoid the two points passing each other and expanding in the opposite\n // direction\n const isCollapsed = Range.isCollapsed(r)\n if (Range.isForward(r)) {\n affinityAnchor = 'forward'\n affinityFocus = isCollapsed ? affinityAnchor : 'backward'\n } else {\n affinityAnchor = 'backward'\n affinityFocus = isCollapsed ? affinityAnchor : 'forward'\n }\n } else if (affinity === 'outward') {\n if (Range.isForward(r)) {\n affinityAnchor = 'backward'\n affinityFocus = 'forward'\n } else {\n affinityAnchor = 'forward'\n affinityFocus = 'backward'\n }\n } else {\n affinityAnchor = affinity\n affinityFocus = affinity\n }\n const anchor = Point.transform(r.anchor, op, { affinity: affinityAnchor })\n const focus = Point.transform(r.focus, op, { affinity: affinityFocus })\n\n if (!anchor || !focus) {\n return null\n }\n\n r.anchor = anchor\n r.focus = focus\n })\n },\n}\n","import { isPlainObject } from 'is-plain-object'\nimport { Ancestor, Descendant, Editor, ExtendedType, Node, Path } from '..'\n\n/**\n * `Element` objects are a type of node in a Slate document that contain other\n * element nodes or text nodes. They can be either \"blocks\" or \"inlines\"\n * depending on the Slate editor's configuration.\n */\n\nexport interface BaseElement {\n children: Descendant[]\n}\n\nexport type Element = ExtendedType<'Element', BaseElement>\n\nexport interface ElementInterface {\n /**\n * Check if a value implements the 'Ancestor' interface.\n */\n isAncestor: (value: any) => value is Ancestor\n\n /**\n * Check if a value implements the `Element` interface.\n */\n isElement: (value: any) => value is Element\n\n /**\n * Check if a value is an array of `Element` objects.\n */\n isElementList: (value: any) => value is Element[]\n\n /**\n * Check if a set of props is a partial of Element.\n */\n isElementProps: (props: any) => props is Partial<Element>\n\n /**\n * Check if a value implements the `Element` interface and has elementKey with selected value.\n * Default it check to `type` key value\n */\n isElementType: <T extends Element>(\n value: any,\n elementVal: string,\n elementKey?: string\n ) => value is T\n\n /**\n * Check if an element matches set of properties.\n *\n * Note: this checks custom properties, and it does not ensure that any\n * children are equivalent.\n */\n matches: (element: Element, props: Partial<Element>) => boolean\n}\n\n/**\n * Shared the function with isElementType utility\n */\nconst isElement = (value: any): value is Element => {\n return (\n isPlainObject(value) &&\n Node.isNodeList(value.children) &&\n !Editor.isEditor(value)\n )\n}\n\n// eslint-disable-next-line no-redeclare\nexport const Element: ElementInterface = {\n isAncestor(value: any): value is Ancestor {\n return isPlainObject(value) && Node.isNodeList(value.children)\n },\n\n isElement,\n\n isElementList(value: any): value is Element[] {\n return Array.isArray(value) && value.every(val => Element.isElement(val))\n },\n\n isElementProps(props: any): props is Partial<Element> {\n return (props as Partial<Element>).children !== undefined\n },\n\n isElementType: <T extends Element>(\n value: any,\n elementVal: string,\n elementKey: string = 'type'\n ): value is T => {\n return (\n isElement(value) && value[<keyof Descendant>elementKey] === elementVal\n )\n },\n\n matches(element: Element, props: Partial<Element>): boolean {\n for (const key in props) {\n if (key === 'children') {\n continue\n }\n\n if (element[<keyof Descendant>key] !== props[<keyof Descendant>key]) {\n return false\n }\n }\n\n return true\n },\n}\n\n/**\n * `ElementEntry` objects refer to an `Element` and the `Path` where it can be\n * found inside a root node.\n */\nexport type ElementEntry = [Element, Path]\n","import { produce } from 'immer'\nimport { Editor, Path, Range, Scrubber, Text } from '..'\nimport { Element, ElementEntry } from './element'\n\n/**\n * The `Node` union type represents all of the different types of nodes that\n * occur in a Slate document tree.\n */\n\nexport type BaseNode = Editor | Element | Text\nexport type Node = Editor | Element | Text\n\nexport interface NodeAncestorsOptions {\n reverse?: boolean\n}\n\nexport interface NodeChildrenOptions {\n reverse?: boolean\n}\n\nexport interface NodeDescendantsOptions {\n from?: Path\n to?: Path\n reverse?: boolean\n pass?: (node: NodeEntry) => boolean\n}\n\nexport interface NodeElementsOptions {\n from?: Path\n to?: Path\n reverse?: boolean\n pass?: (node: NodeEntry) => boolean\n}\n\nexport interface NodeLevelsOptions {\n reverse?: boolean\n}\n\nexport interface NodeNodesOptions {\n from?: Path\n to?: Path\n reverse?: boolean\n pass?: (entry: NodeEntry) => boolean\n}\n\nexport interface NodeTextsOptions {\n from?: Path\n to?: Path\n reverse?: boolean\n pass?: (node: NodeEntry) => boolean\n}\n\nexport interface NodeInterface {\n /**\n * Get the node at a specific path, asserting that it's an ancestor node.\n */\n ancestor: (root: Node, path: Path) => Ancestor\n\n /**\n * Return a generator of all the ancestor nodes above a specific path.\n *\n * By default the order is top-down, from highest to lowest ancestor in\n * the tree, but you can pass the `reverse: true` option to go bottom-up.\n */\n ancestors: (\n root: Node,\n path: Path,\n options?: NodeAncestorsOptions\n ) => Generator<NodeEntry<Ancestor>, void, undefined>\n\n /**\n * Get the child of a node at a specific index.\n */\n child: (root: Node, index: number) => Descendant\n\n /**\n * Iterate over the children of a node at a specific path.\n */\n children: (\n root: Node,\n path: Path,\n options?: NodeChildrenOptions\n ) => Generator<NodeEntry<Descendant>, void, undefined>\n\n /**\n * Get an entry for the common ancesetor node of two paths.\n */\n common: (root: Node, path: Path, another: Path) => NodeEntry\n\n /**\n * Get the node at a specific path, asserting that it's a descendant node.\n */\n descendant: (root: Node, path: Path) => Descendant\n\n /**\n * Return a generator of all the descendant node entries inside a root node.\n */\n descendants: (\n root: Node,\n options?: NodeDescendantsOptions\n ) => Generator<NodeEntry<Descendant>, void, undefined>\n\n /**\n * Return a generator of all the element nodes inside a root node. Each iteration\n * will return an `ElementEntry` tuple consisting of `[Element, Path]`. If the\n * root node is an element it will be included in the iteration as well.\n */\n elements: (\n root: Node,\n options?: NodeElementsOptions\n ) => Generator<ElementEntry, void, undefined>\n\n /**\n * Extract props from a Node.\n */\n extractProps: (node: Node) => NodeProps\n\n /**\n * Get the first node entry in a root node from a path.\n */\n first: (root: Node, path: Path) => NodeEntry\n\n /**\n * Get the sliced fragment represented by a range inside a root node.\n */\n fragment: (root: Node, range: Range) => Descendant[]\n\n /**\n * Get the descendant node referred to by a specific path. If the path is an\n * empty array, it refers to the root node itself.\n */\n get: (root: Node, path: Path) => Node\n\n /**\n * Similar to get, but returns undefined if the node does not exist.\n */\n getIf: (root: Node, path: Path) => Node | undefined\n\n /**\n * Check if a descendant node exists at a specific path.\n */\n has: (root: Node, path: Path) => boolean\n\n /**\n * Check if a value implements the `Node` interface.\n */\n isNode: (value: any) => value is Node\n\n /**\n * Check if a value is a list of `Node` objects.\n */\n isNodeList: (value: any) => value is Node[]\n\n /**\n * Get the last node entry in a root node from a path.\n */\n last: (root: Node, path: Path) => NodeEntry\n\n /**\n * Get the node at a specific path, ensuring it's a leaf text node.\n */\n leaf: (root: Node, path: Path) => Text\n\n /**\n * Return a generator of the in a branch of the tree, from a specific path.\n *\n * By default the order is top-down, from highest to lowest node in the tree,\n * but you can pass the `reverse: true` option to go bottom-up.\n */\n levels: (\n root: Node,\n path: Path,\n options?: NodeLevelsOptions\n ) => Generator<NodeEntry, void, undefined>\n\n /**\n * Check if a node matches a set of props.\n */\n matches: (node: Node, props: Partial<Node>) => boolean\n\n /**\n * Return a generator of all the node entries of a root node. Each entry is\n * returned as a `[Node, Path]` tuple, with the path referring to the node's\n * position inside the root node.\n */\n nodes: (\n root: Node,\n options?: NodeNodesOptions\n ) => Generator<NodeEntry, void, undefined>\n\n /**\n * Get the parent of a node at a specific path.\n */\n parent: (root: Node, path: Path) => Ancestor\n\n /**\n * Get the concatenated text string of a node's content.\n *\n * Note that this will not include spaces or line breaks between block nodes.\n * It is not a user-facing string, but a string for performing offset-related\n * computations for a node.\n */\n string: (node: Node) => string\n\n /**\n * Return a generator of all leaf text nodes in a root node.\n */\n texts: (\n root: Node,\n options?: NodeTextsOptions\n ) => Generator<NodeEntry<Text>, void, undefined>\n}\n\nconst IS_NODE_LIST_CACHE = new WeakMap<any[], boolean>()\n\n// eslint-disable-next-line no-redeclare\nexport const Node: NodeInterface = {\n ancestor(root: Node, path: Path): Ancestor {\n const node = Node.get(root, path)\n\n if (Text.isText(node)) {\n throw new Error(\n `Cannot get the ancestor node at path [${path}] because it refers to a text node instead: ${Scrubber.stringify(\n node\n )}`\n )\n }\n\n return node\n },\n\n *ancestors(\n root: Node,\n path: Path,\n options: NodeAncestorsOptions = {}\n ): Generator<NodeEntry<Ancestor>, void, undefined> {\n for (const p of Path.ancestors(path, options)) {\n const n = Node.ancestor(root, p)\n const entry: NodeEntry<Ancestor> = [n, p]\n yield entry\n }\n },\n\n child(root: Node, index: number): Descendant {\n if (Text.isText(root)) {\n throw new Error(\n `Cannot get the child of a text node: ${Scrubber.stringify(root)}`\n )\n }\n\n const c = root.children[index] as Descendant\n\n if (c == null) {\n throw new Error(\n `Cannot get child at index \\`${index}\\` in node: ${Scrubber.stringify(\n root\n )}`\n )\n }\n\n return c\n },\n\n *children(\n root: Node,\n path: Path,\n options: NodeChildrenOptions = {}\n ): Generator<NodeEntry<Descendant>, void, undefined> {\n const { reverse = false } = options\n const ancestor = Node.ancestor(root, path)\n const { children } = ancestor\n let index = reverse ? children.length - 1 : 0\n\n while (reverse ? index >= 0 : index < children.length) {\n const child = Node.child(ancestor, index)\n const childPath = path.concat(index)\n yield [child, childPath]\n index = reverse ? index - 1 : index + 1\n }\n },\n\n common(root: Node, path: Path, another: Path): NodeEntry {\n const p = Path.common(path, another)\n const n = Node.get(root, p)\n return [n, p]\n },\n\n descendant(root: Node, path: Path): Descendant {\n const node = Node.get(root, path)\n\n if (Editor.isEditor(node)) {\n throw new Error(\n `Cannot get the descendant node at path [${path}] because it refers to the root editor node instead: ${Scrubber.stringify(\n node\n )}`\n )\n }\n\n return node\n },\n\n *descendants(\n root: Node,\n options: NodeDescendantsOptions = {}\n ): Generator<NodeEntry<Descendant>, void, undefined> {\n for (const [node, path] of Node.nodes(root, options)) {\n if (path.length !== 0) {\n // NOTE: we have to coerce here because checking the path's length does\n // guarantee that `node` is not a `Editor`, but TypeScript doesn't know.\n yield [node, path] as NodeEntry<Descendant>\n }\n }\n },\n\n *elements(\n root: Node,\n options: NodeElementsOptions = {}\n ): Generator<ElementEntry, void, undefined> {\n for (const [node, path] of Node.nodes(root, options)) {\n if (Element.isElement(node)) {\n yield [node, path]\n }\n }\n },\n\n extractProps(node: Node): NodeProps {\n if (Element.isAncestor(node)) {\n const { children, ...properties } = node\n\n return properties\n } else {\n const { text, ...properties } = node\n\n return properties\n }\n },\n\n first(root: Node, path: Path): NodeEntry {\n const p = path.slice()\n let n = Node.get(root, p)\n\n while (n) {\n if (Text.isText(n) || n.children.length === 0) {\n break\n } else {\n n = n.children[0]\n p.push(0)\n }\n }\n\n return [n, p]\n },\n\n fragment(root: Node, range: Range): Descendant[] {\n if (Text.isText(root)) {\n throw new Error(\n `Cannot get a fragment starting from a root text node: ${Scrubber.stringify(\n root\n )}`\n )\n }\n\n const newRoot = produce({ children: root.children }, r => {\n const [start, end] = Range.edges(range)\n const nodeEntries = Node.nodes(r, {\n reverse: true,\n pass: ([, path]) => !Range.includes(range, path),\n })\n\n for (const [, path] of nodeEntries) {\n if (!Range.includes(range, path)) {\n const parent = Node.parent(r, path)\n const index = path[path.length - 1]\n parent.children.splice(index, 1)\n }\n\n if (Path.equals(path, end.path)) {\n const leaf = Node.leaf(r, path)\n leaf.text = leaf.text.slice(0, end.offset)\n }\n\n if (Path.equals(path, start.path)) {\n const leaf = Node.leaf(r, path)\n leaf.text = leaf.text.slice(start.offset)\n }\n }\n\n if (Editor.isEditor(r)) {\n r.selection = null\n }\n })\n\n return newRoot.children\n },\n\n get(root: Node, path: Path): Node {\n const node = Node.getIf(root, path)\n if (node === undefined) {\n throw new Error(\n `Cannot find a descendant at path [${path}] in node: ${Scrubber.stringify(\n root\n )}`\n )\n }\n return node\n },\n\n getIf(root: Node, path: Path): Node | undefined {\n let node = root\n\n for (let i = 0; i < path.length; i++) {\n const p = path[i]\n\n if (Text.isText(node) || !node.children[p]) {\n return\n }\n\n node = node.children[p]\n }\n\n return node\n },\n\n has(root: Node, path: Path): boolean {\n let node = root\n\n for (let i = 0; i < path.length; i++) {\n const p = path[i]\n\n if (Text.isText(node) || !node.children[p]) {\n return false\n }\n\n node = node.children[p]\n }\n\n return true\n },\n\n isNode(value: any): value is Node {\n return (\n Text.isText(value) || Element.isElement(value) || Editor.isEditor(value)\n )\n },\n\n isNodeList(value: any): value is Node[] {\n if (!Array.isArray(value)) {\n return false\n }\n const cachedResult = IS_NODE_LIST_CACHE.get(value)\n if (cachedResult !== undefined) {\n return cachedResult\n }\n const isNodeList = value.every(val => Node.isNode(val))\n IS_NODE_LIST_CACHE.set(value, isNodeList)\n return isNodeList\n },\n\n last(root: Node, path: Path): NodeEntry {\n const p = path.slice()\n let n = Node.get(root, p)\n\n while (n) {\n if (Text.isText(n) || n.children.length === 0) {\n break\n } else {\n const i = n.children.length - 1\n n = n.children[i]\n p.push(i)\n }\n }\n\n return [n, p]\n },\n\n leaf(root: Node, path: Path): Text {\n const node = Node.get(root, path)\n\n if (!Text.isText(node)) {\n throw new Error(\n `Cannot get the leaf node at path [${path}] because it refers to a non-leaf node: ${Scrubber.stringify(\n node\n )}`\n )\n }\n\n return node\n },\n\n *levels(\n root: Node,\n path: Path,\n options: NodeLevelsOptions = {}\n ): Generator<NodeEntry, void, undefined> {\n for (const p of Path.levels(path, options)) {\n const n = Node.get(root, p)\n yield [n, p]\n }\n },\n\n matches(node: Node, props: Partial<Node>): boolean {\n return (\n (Element.isElement(node) &&\n Element.isElementProps(props) &&\n Element.matches(node, props)) ||\n (Text.isText(node) &&\n Text.isTextProps(props) &&\n Text.matches(node, props))\n )\n },\n\n *nodes(\n root: Node,\n options: NodeNodesOptions = {}\n ): Generator<NodeEntry, void, undefined> {\n const { pass, reverse = false } = options\n const { from = [], to } = options\n const visited = new Set()\n let p: Path = []\n let n = root\n\n while (true) {\n if (to && (reverse ? Path.isBefore(p, to) : Path.isAfter(p, to))) {\n break\n }\n\n if (!visited.has(n)) {\n yield [n, p]\n }\n\n // If we're allowed to go downward and we haven't descended yet, do.\n if (\n !visited.has(n) &&\n !Text.isText(n) &&\n n.children.length !== 0 &&\n (pass == null || pass([n, p]) === false)\n ) {\n visited.add(n)\n let nextIndex = reverse ? n.children.length - 1 : 0\n\n if (Path.isAncestor(p, from)) {\n nextIndex = from[p.length]\n }\n\n p = p.concat(nextIndex)\n n = Node.get(root, p)\n continue\n }\n\n // If we're at the root and we can't go down, we're done.\n if (p.length === 0) {\n break\n }\n\n // If we're going forward...\n if (!reverse) {\n const newPath = Path.next(p)\n\n if (Node.has(root, newPath)) {\n p = newPath\n n = Node.get(root, p)\n continue\n }\n }\n\n // If we're going backward...\n if (reverse && p[p.length - 1] !== 0) {\n const newPath = Path.previous(p)\n p = newPath\n n = Node.get(root, p)\n continue\n }\n\n // Otherwise we're going upward...\n p = Path.parent(p)\n n = Node.get(root, p)\n visited.add(n)\n }\n },\n\n parent(root: Node, path: Path): Ancestor {\n const parentPath = Path.parent(path)\n const p = Node.get(root, parentPath)\n\n if (Text.isText(p)) {\n throw new Error(\n `Cannot get the parent of path [${path}] because it does not exist in the root.`\n )\n }\n\n return p\n },\n\n string(node: Node): string {\n if (Text.isText(node)) {\n return node.text\n } else {\n return node.children.map(Node.string).join('')\n }\n },\n\n *texts(\n root: Node,\n options: NodeTextsOptions = {}\n ): Generator<NodeEntry<Text>, void, undefined> {\n for (const [node, path] of Node.nodes(root, options)) {\n if (Text.isText(node)) {\n yield [node, path]\n }\n }\n },\n}\n\n/**\n * The `Descendant` union type represents nodes that are descendants in the\n * tree. It is returned as a convenience in certain cases to narrow a value\n * further than the more generic `Node` union.\n */\n\nexport type Descendant = Element | Text\n\n/**\n * The `Ancestor` union type represents nodes that are ancestors in the tree.\n * It is returned as a convenience in certain cases to narrow a value further\n * than the more generic `Node` union.\n */\n\nexport type Ancestor = Editor | Element\n\n/**\n * `NodeEntry` objects are returned when iterating over the nodes in a Slate\n * document tree. They consist of the node and its `Path` relative to the root\n * node in the document.\n */\n\nexport type NodeEntry<T extends Node = Node> = [T, Path]\n\n/**\n * Convenience type for returning the props of a node.\n */\nexport type NodeProps =\n | Omit<Editor, 'children'>\n | Omit<Element, 'children'>\n | Omit<Text, 'text'>\n","import { ExtendedType, Node, Path, Range } from '..'\nimport { isPlainObject } from 'is-plain-object'\n\nexport type BaseInsertNodeOperation = {\n type: 'insert_node'\n path: Path\n node: Node\n}\n\nexport type InsertNodeOperation = ExtendedType<\n 'InsertNodeOperation',\n BaseInsertNodeOperation\n>\n\nexport type BaseInsertTextOperation = {\n type: 'insert_text'\n path: Path\n offset: number\n text: string\n}\n\nexport type InsertTextOperation = ExtendedType<\n 'InsertTextOperation',\n BaseInsertTextOperation\n>\n\nexport type BaseMergeNodeOperation = {\n type: 'merge_node'\n path: Path\n position: number\n properties: Partial<Node>\n}\n\nexport type MergeNodeOperation = ExtendedType<\n 'MergeNodeOperation',\n BaseMergeNodeOperation\n>\n\nexport type BaseMoveNodeOperation = {\n type: 'move_node'\n path: Path\n newPath: Path\n}\n\nexport type MoveNodeOperation = ExtendedType<\n 'MoveNodeOperation',\n BaseMoveNodeOperation\n>\n\nexport type BaseRemoveNodeOperation = {\n type: 'remove_node'\n path: Path\n node: Node\n}\n\nexport type RemoveNodeOperation = ExtendedType<\n 'RemoveNodeOperation',\n BaseRemoveNodeOperation\n>\n\nexport type BaseRemoveTextOperation = {\n type: 'remove_text'\n path: Path\n offset: number\n text: string\n}\n\nexport type RemoveTextOperation = ExtendedType<\n 'RemoveTextOperation',\n BaseRemoveTextOperation\n>\n\nexport type BaseSetNodeOperation = {\n type: 'set_node'\n path: Path\n properties: Partial<Node>\n newProperties: Partial<Node>\n}\n\nexport type SetNodeOperation = ExtendedType<\n 'SetNodeOperation',\n BaseSetNodeOperation\n>\n\nexport type BaseSetSelectionOperation =\n | {\n type: 'set_selection'\n properties: null\n newProperties: Range\n }\n | {\n type: 'set_selection'\n properties: Partial<Range>\n newProperties: Partial<Range>\n }\n | {\n type: 'set_selection'\n properties: Range\n newProperties: null\n }\n\nexport type SetSelectionOperation = ExtendedType<\n 'SetSelectionOperation',\n BaseSetSelectionOperation\n>\n\nexport type BaseSplitNodeOperation = {\n type: 'split_node'\n path: Path\n position: number\n properties: Partial<Node>\n}\n\nexport type SplitNodeOperation = ExtendedType<\n 'SplitNodeOperation',\n BaseSplitNodeOperation\n>\n\nexport type NodeOperation =\n | InsertNodeOperation\n | MergeNodeOperation\n | MoveNodeOperation\n | RemoveNodeOperation\n | SetNodeOperation\n | SplitNodeOperation\n\nexport type SelectionOperation = SetSelectionOperation\n\nexport type TextOperation = InsertTextOperation | RemoveTextOperation\n\n/**\n * `Operation` objects define the low-level instructions that Slate editors use\n * to apply changes to their internal state. Representing all changes as\n * operations is what allows Slate editors to easily implement history,\n * collaboration, and other features.\n */\n\nexport type BaseOperation = NodeOperation | SelectionOperation | TextOperation\nexport type Operation = ExtendedType<'Operation', BaseOperation>\n\nexport interface OperationInterface {\n /**\n * Check if a value is a `NodeOperation` object.\n */\n isNodeOperation: (value: any) => value is NodeOperation\n\n /**\n * Check if a value is an `Operation` object.\n */\n isOperation: (value: any) => value is Operation\n\n /**\n * Check if a value is a list of `Operation` objects.\n */\n isOperationList: (value: any) => value is Operation[]\n\n /**\n * Check if a value is a `SelectionOperation` object.\n */\n isSelectionOperation: (value: any) => value is SelectionOperation\n\n /**\n * Check if a value is a `TextOperation` object.\n */\n isTextOperation: (value: any) => value is TextOperation\n\n /**\n * Invert an operation, returning a new operation that will exactly undo the\n * original when applied.\n */\n inverse: (op: Operation) => Operation\n}\n\n// eslint-disable-next-line no-redeclare\nexport const Operation: OperationInterface = {\n isNodeOperation(value: any): value is NodeOperation {\n return Operation.isOperation(value) && value.type.endsWith('_node')\n },\n\n isOperation(value: any): value is Operation {\n if (!isPlainObject(value)) {\n return false\n }\n\n switch (value.type) {\n case 'insert_node':\n return Path.isPath(value.path) && Node.isNode(value.node)\n case 'insert_text':\n return (\n typeof value.offset === 'number' &&\n typeof value.text === 'string' &&\n Path.isPath(value.path)\n )\n case 'merge_node':\n return (\n typeof value.position === 'number' &&\n Path.isPath(value.path) &&\n isPlainObject(value.properties)\n )\n case 'move_node':\n return Path.isPath(value.path) && Path.isPath(value.newPath)\n case 'remove_node':\n return Path.isPath(value.path) && Node.isNode(value.node)\n case 'remove_text':\n return (\n typeof value.offset === 'number' &&\n typeof value.text === 'string' &&\n Path.isPath(value.path)\n )\n case 'set_node':\n return (\n Path.isPath(value.path) &&\n isPlainObject(value.properties) &&\n isPlainObject(value.newProperties)\n )\n case 'set_selection':\n return (\n (value.properties === null && Range.isRange(value.newProperties)) ||\n (value.newProperties === null && Range.isRange(value.properties)) ||\n (isPlainObject(value.properties) &&\n isPlainObject(value.newProperties))\n )\n case 'split_node':\n return (\n Path.isPath(value.path) &&\n typeof value.position === 'number' &&\n isPlainObject(value.properties)\n )\n default:\n return false\n }\n },\n\n isOperationList(value: any): value is Operation[] {\n return (\n Array.isArray(value) && value.every(val => Operation.isOperation(val))\n )\n },\n\n isSelectionOperation(value: any): value is SelectionOperation {\n return Operation.isOperation(value) && value.type.endsWith('_selection')\n },\n\n isTextOperation(value: any): value is TextOperation {\n return Operation.isOperation(value) && value.type.endsWith('_text')\n },\n\n inverse(op: Operation): Operation {\n switch (op.type) {\n case 'insert_node': {\n return { ...op, type: 'remove_node' }\n }\n\n case 'insert_text': {\n return { ...op, type: 'remove_text' }\n }\n\n case 'merge_node': {\n return { ...op, type: 'split_node', path: Path.previous(op.path) }\n }\n\n case 'move_node': {\n const { newPath, path } = op\n\n // PERF: in this case the move operation is a no-op anyways.\n if (Path.equals(newPath, path)) {\n return op\n }\n\n // If the move happens completely within a single parent the path and\n // newPath are stable with respect to each other.\n if (Path.isSibling(path, newPath)) {\n return { ...op, path: newPath, newPath: path }\n }\n\n // If the move does not happen within a single parent it is possible\n // for the move to impact the true path to the location where the node\n // was removed from and where it was inserted. We have to adjust for this\n // and find the original path. We can accomplish this (only in non-sibling)\n // moves by looking at the impact of the move operation on the node\n // after the original move path.\n const inversePath = Path.transform(path, op)!\n const inverseNewPath = Path.transform(Path.next(path), op)!\n return { ...op, path: inversePath, newPath: inverseNewPath }\n }\n\n case 'remove_node': {\n return { ...op, type: 'insert_node' }\n }\n\n case 'remove_text': {\n return { ...op, type: 'insert_text' }\n }\n\n case 'set_node': {\n const { properties, newProperties } = op\n return { ...op, properties: newProperties, newProperties: properties }\n }\n\n case 'set_selection': {\n const { properties, newProperties } = op\n\n if (properties == null) {\n return {\n ...op,\n properties: newProperties as Range,\n newProperties: null,\n }\n } else if (newProperties == null) {\n return {\n ...op,\n properties: null,\n newProperties: properties as Range,\n }\n } else {\n return { ...op, properties: newProperties, newProperties: properties }\n }\n }\n\n case 'split_node': {\n return { ...op, type: 'merge_node', path: Path.next(op.path) }\n }\n }\n },\n}\n","import { Editor, EditorInterface } from '../interfaces/editor'\nimport { isPlainObject } from 'is-plain-object'\nimport { Range } from '../interfaces/range'\nimport { Node } from '../interfaces/node'\nimport { Operation } from '../interfaces/operation'\n\nconst IS_EDITOR_CACHE = new WeakMap<object, boolean>()\n\nexport const isEditor: EditorInterface['isEditor'] = (\n value: any\n): value is Editor => {\n const cachedIsEditor = IS_EDITOR_CACHE.get(value)\n if (cachedIsEditor !== undefined) {\n return cachedIsEditor\n }\n\n if (!isPlainObject(value)) {\n return false\n }\n\n const isEditor =\n typeof value.addMark === 'function' &&\n typeof value.apply === 'function' &&\n typeof value.deleteFragment === 'function' &&\n typeof value.insertBreak === 'function' &&\n typeof value.insertSoftBreak === 'function' &&\n typeof value.insertFragment === 'function' &&\n typeof value.insertNode === 'function' &&\n typeof value.insertText === 'function' &&\n typeof value.isElementReadOnly === 'function' &&\n typeof value.isInline === 'function' &&\n typeof value.isSelectable === 'function' &&\n typeof value.isVoid === 'function' &&\n typeof value.normalizeNode === 'function' &&\n typeof value.onChange === 'function' &&\n typeof value.removeMark === 'function' &&\n typeof value.getDirtyPaths === 'function' &&\n (value.marks === null || isPlainObject(value.marks)) &&\n (value.selection === null || Range.isRange(value.selection)) &&\n Node.isNodeList(value.children) &&\n Operation.isOperationList(value.operations)\n IS_EDITOR_CACHE.set(value, isEditor)\n return isEditor\n}\n","import {\n Ancestor,\n Descendant,\n Element,\n ExtendedType,\n Location,\n Node,\n NodeEntry,\n Operation,\n Path,\n PathRef,\n Point,\n PointRef,\n Range,\n RangeRef,\n Span,\n Text,\n Transforms,\n} from '..'\nimport {\n LeafEdge,\n MaximizeMode,\n RangeDirection,\n SelectionMode,\n TextDirection,\n TextUnit,\n TextUnitAdjustment,\n} from '../types/types'\nimport { OmitFirstArg } from '../utils/types'\nimport { isEditor } from '../editor/is-editor'\nimport {\n TextInsertFragmentOptions,\n TextInsertTextOptions,\n} from './transforms/text'\nimport { NodeInsertNodesOptions } from './transforms/node'\n\n/**\n * The `Editor` interface stores all the state of a Slate editor. It is extended\n * by plugins that wish to add their own helpers and implement new behaviors.\n */\nexport interface BaseEditor {\n // Core state.\n\n children: Descendant[]\n selection: Selection\n operations: Operation[]\n marks: EditorMarks | null\n\n // Overrideable core methods.\n\n apply: (operation: Operation) => void\n getDirtyPaths: (operation: Operation) => Path[]\n getFragment: () => Descendant[]\n isElementReadOnly: (element: Element) => boolean\n isSelectable: (element: Element) => boolean\n markableVoid: (element: Element) => boolean\n normalizeNode: (entry: NodeEntry, options?: { operation?: Operation }) => void\n onChange: (options?: { operation?: Operation }) => void\n shouldNormalize: ({\n iteration,\n dirtyPaths,\n operation,\n }: {\n iteration: number\n initialDirtyPathsLength: number\n dirtyPaths: Path[]\n operation?: Operation\n }) => boolean\n\n // Overrideable core transforms.\n\n addMark: OmitFirstArg<typeof Editor.addMark>\n collapse: OmitFirstArg<typeof Transforms.collapse>\n delete: OmitFirstArg<typeof Transforms.delete>\n deleteBackward: (unit: TextUnit) => void\n deleteForward: (unit: TextUnit) => void\n deleteFragment: OmitFirstArg<typeof Editor.deleteFragment>\n deselect: OmitFirstArg<typeof Transforms.deselect>\n insertBreak: OmitFirstArg<typeof Editor.insertBreak>\n insertFragment: OmitFirstArg<typeof Transforms.insertFragment>\n insertNode: OmitFirstArg<typeof Editor.insertNode>\n insertNodes: OmitFirstArg<typeof Transforms.insertNodes>\n insertSoftBreak: OmitFirstArg<typeof Editor.insertSoftBreak>\n insertText: OmitFirstArg<typeof Transforms.insertText>\n liftNodes: OmitFirstArg<typeof Transforms.liftNodes>\n mergeNodes: OmitFirstArg<typeof Transforms.mergeNodes>\n move: OmitFirstArg<typeof Transforms.move>\n moveNodes: OmitFirstArg<typeof Transforms.moveNodes>\n normalize: OmitFirstArg<typeof Editor.normalize>\n removeMark: OmitFirstArg<typeof Editor.removeMark>\n removeNodes: OmitFirstArg<typeof Transforms.removeNodes>\n select: OmitFirstArg<typeof Transforms.select>\n setNodes: <T extends Node>(\n props: Partial<T>,\n options?: {\n at?: Location\n match?: NodeMatch<T>\n mode?: MaximizeMode\n hanging?: boolean\n split?: boolean\n voids?: boolean\n compare?: PropsCompare\n merge?: PropsMerge\n }\n ) => void\n setNormalizing: OmitFirstArg<typeof Editor.setNormalizing>\n setPoint: OmitFirstArg<typeof Transforms.setPoint>\n setSelection: OmitFirstArg<typeof Transforms.setSelection>\n splitNodes: OmitFirstArg<typeof Transforms.splitNodes>\n unsetNodes: OmitFirstArg<typeof Transforms.unsetNodes>\n unwrapNodes: OmitFirstArg<typeof Transforms.unwrapNodes>\n withoutNormalizing: OmitFirstArg<typeof Editor.withoutNormalizing>\n wrapNodes: OmitFirstArg<typeof Transforms.wrapNodes>\n\n // Overrideable core queries.\n\n above: <T extends Ancestor>(\n options?: EditorAboveOptions<T>\n ) => NodeEntry<T> | undefined\n after: OmitFirstArg<typeof Editor.after>\n before: OmitFirstArg<typeof Editor.before>\n edges: OmitFirstArg<typeof Editor.edges>\n elementReadOnly: OmitFirstArg<typeof Editor.elementReadOnly>\n end: OmitFirstArg<typeof Editor.end>\n first: OmitFirstArg<typeof Editor.first>\n fragment: OmitFirstArg<typeof Editor.fragment>\n getMarks: OmitFirstArg<typeof Editor.marks>\n hasBlocks: OmitFirstArg<typeof Editor.hasBlocks>\n hasInlines: OmitFirstArg<typeof Editor.hasInlines>\n hasPath: OmitFirstArg<typeof Editor.hasPath>\n hasTexts: OmitFirstArg<typeof Editor.hasTexts>\n isBlock: OmitFirstArg<typeof Editor.isBlock>\n isEdge: OmitFirstArg<typeof Editor.isEdge>\n isEmpty: OmitFirstArg<typeof Editor.isEmpty>\n isEnd: OmitFirstArg<typeof Editor.isEnd>\n isInline: OmitFirstArg<typeof Editor.isInline>\n isNormalizing: OmitFirstArg<typeof Editor.isNormalizing>\n isStart: OmitFirstArg<typeof Editor.isStart>\n isVoid: OmitFirstArg<typeof Editor.isVoid>\n last: OmitFirstArg<typeof Editor.last>\n leaf: OmitFirstArg<typeof Editor.leaf>\n levels: <T extends Node>(\n options?: EditorLevelsOptions<T>\n ) => Generator<NodeEntry<T>, void, undefined>\n next: <T extends Descendant>(\n options?: EditorNextOptions<T>\n ) => NodeEntry<T> | undefined\n node: OmitFirstArg<typeof Editor.node>\n nodes: <T extends Node>(\n options?: EditorNodesOptions<T>\n ) => Generator<NodeEntry<T>, void, undefined>\n parent: OmitFirstArg<typeof Editor.parent>\n path: OmitFirstArg<typeof Editor.path>\n pathRef: OmitFirstArg<typeof Editor.pathRef>\n pathRefs: OmitFirstArg<typeof Editor.pathRefs>\n point: OmitFirstArg<typeof Editor.point>\n pointRef: OmitFirstArg<typeof Editor.pointRef>\n pointRefs: OmitFirstArg<typeof Editor.pointRefs>\n positions: OmitFirstArg<typeof Editor.positions>\n previous: <T extends Node>(\n options?: EditorPreviousOptions<T>\n ) => NodeEntry<T> | undefined\n range: OmitFirstArg<typeof Editor.range>\n rangeRef: OmitFirstArg<typeof Editor.rangeRef>\n rangeRefs: OmitFirstArg<typeof Editor.rangeRefs>\n start: OmitFirstArg<typeof Editor.start>\n string: OmitFirstArg<typeof Editor.string>\n unhangRange: OmitFirstArg<typeof Editor.unhangRange>\n void: OmitFirstArg<typeof Editor.void>\n shouldMergeNodesRemovePrevNode: OmitFirstArg<\n typeof Editor.shouldMergeNodesRemovePrevNode\n >\n}\n\nexport type Editor = ExtendedType<'Editor', BaseEditor>\n\nexport type BaseSelection = Range | null\n\nexport type Selection = ExtendedType<'Selection', BaseSelection>\n\nexport type EditorMarks = Omit<Text, 'text'>\n\nexport interface EditorAboveOptions<T extends Ancestor> {\n at?: Location\n match?: NodeMatch<T>\n mode?: MaximizeMode\n voids?: boolean\n}\n\nexport interface EditorAfterOptions {\n distance?: number\n unit?: TextUnitAdjustment\n voids?: boolean\n}\n\nexport interface EditorBeforeOptions {\n distance?: number\n unit?: TextUnitAdjustment\n voids?: boolean\n}\n\nexport interface EditorDirectedDeletionOptions {\n unit?: TextUnit\n}\n\nexport interface EditorElementReadOnlyOptions {\n at?: Location\n mode?: MaximizeMode\n voids?: boolean\n}\n\nexport interface EditorFragmentDeletionOptions {\n direction?: TextDirection\n}\n\nexport interface EditorLeafOptions {\n depth?: number\n edge?: LeafEdge\n}\n\nexport interface EditorLevelsOptions<T extends Node> {\n at?: Location\n match?: NodeMatch<T>\n reverse?: boolean\n voids?: boolean\n}\n\nexport interface EditorNextOptions<T extends Descendant> {\n at?: Location\n match?: NodeMatch<T>\n mode?: SelectionMode\n voids?: boolean\n}\n\nexport interface EditorNodeOptions {\n depth?: number\n edge?: LeafEdge\n}\n\nexport interface EditorNodesOptions<T extends Node> {\n at?: Location | Span\n match?: NodeMatch<T>\n mode?: SelectionMode\n universal?: boolean\n reverse?: boolean\n voids?: boolean\n pass?: (entry: NodeEntry) => boolean\n ignoreNonSelectable?: boolean\n}\n\nexport interface EditorNormalizeOptions {\n force?: boolean\n operation?: Operation\n}\n\nexport interface EditorParentOptions {\n depth?: number\n edge?: LeafEdge\n}\n\nexport interface EditorPathOptions {\n depth?: number\n edge?: LeafEdge\n}\n\nexport interface EditorPathRefOptions {\n affinity?: TextDirection | null\n}\n\nexport interface EditorPointOptions {\n edge?: LeafEdge\n}\n\nexport interface EditorPointRefOptions {\n affinity?: TextDirection | null\n}\n\nexport interface EditorPositionsOptions {\n at?: Location\n unit?: TextUnitAdjustment\n reverse?: boolean\n voids?: boolean\n ignoreNonSelectable?: boolean\n}\n\nexport interface EditorPreviousOptions<T extends Node> {\n at?: Location\n match?: NodeMatch<T>\n mode?: SelectionMode\n voids?: boolean\n}\n\nexport interface EditorRangeRefOptions {\n affinity?: RangeDirection | null\n}\n\nexport interface EditorStringOptions {\n voids?: boolean\n}\n\nexport interface EditorUnhangRangeOptions {\n voids?: boolean\n}\n\nexport interface EditorVoidOptions {\n at?: Location\n mode?: MaximizeMode\n voids?: boolean\n}\n\nexport interface EditorInterface {\n /**\n * Get the ancestor above a location in the document.\n */\n above: <T extends Ancestor>(\n editor: Editor,\n options?: EditorAboveOptions<T>\n ) => NodeEntry<T> | undefined\n\n /**\n * Add a custom property to the leaf text nodes in the current selection.\n *\n * If the selection is currently collapsed, the marks will be added to the\n * `editor.marks` property instead, and applied when text is inserted next.\n */\n addMark: (editor: Editor, key: string, value: any) => void\n\n /**\n * Get the point after a location.\n */\n after: (\n editor: Editor,\n at: Location,\n options?: EditorAfterOptions\n ) => Point | undefined\n\n /**\n * Get the point before a location.\n */\n before: (\n editor: Editor,\n at: Location,\n options?: EditorBeforeOptions\n ) => Point | undefined\n\n /**\n * Delete content in the editor backward from the current selection.\n */\n deleteBackward: (\n editor: Editor,\n options?: EditorDirectedDeletionOptions\n ) => void\n\n /**\n * Delete content in the editor forward from the current selection.\n */\n deleteForward: (\n editor: Editor,\n options?: EditorDirectedDeletionOptions\n ) => void\n\n /**\n * Delete the content in the current selection.\n */\n deleteFragment: (\n editor: Editor,\n options?: EditorFragmentDeletionOptions\n ) => void\n\n /**\n * Get the start and end points of a location.\n */\n edges: (editor: Editor, at: Location) => [Point, Point]\n\n /**\n * Match a read-only element in the current branch of the editor.\n */\n elementReadOnly: (\n editor: Editor,\n options?: EditorElementReadOnlyOptions\n ) => NodeEntry<Element> | undefined\n\n /**\n * Get the end point of a location.\n */\n end: (editor: Editor, at: Location) => Point\n\n /**\n * Get the first node at a location.\n */\n first: (editor: Editor, at: Location) => NodeEntry\n\n /**\n * Get the fragment at a location.\n */\n fragment: (editor: Editor, at: Location) => Descendant[]\n\n /**\n * Check if a node has block children.\n */\n hasBlocks: (editor: Editor, element: Element) => boolean\n\n /**\n * Check if a node has inline and text children.\n */\n hasInlines: (editor: Editor, element: Element) => boolean\n\n hasPath: (editor: Editor, path: Path) => boolean\n\n /**\n * Check if a node has text children.\n */\n hasTexts: (editor: Editor, element: Element) => boolean\n\n /**\n * Insert a block break at the current selection.\n *\n * If the selection is currently expanded, it will be deleted first.\n */\n insertBreak: (editor: Editor) => void\n\n /**\n * Inserts a fragment\n * at the specified location or (if not defined) the current selection or (if not defined) the end of the document.\n */\n insertFragment: (\n editor: Editor,\n fragment: Node[],\n options?: TextInsertFragmentOptions\n ) => void\n\n /**\n * Atomically inserts `nodes`\n * at the specified location or (if not defined) the current selection or (if not defined) the end of the document.\n */\n insertNode: <T extends Node>(\n editor: Editor,\n node: Node,\n options?: NodeInsertNodesOptions<T>\n ) => void\n\n /**\n * Insert a soft break at the current selection.\n *\n * If the selection is currently expanded, it will be deleted first.\n */\n insertSoftBreak: (editor: Editor) => void\n\n /**\n * Insert a string of text\n * at the specified location or (if not defined) the current selection or (if not defined) the end of the document.\n */\n insertText: (\n editor: Editor,\n text: string,\n options?: TextInsertTextOptions\n ) => void\n\n /**\n * Check if a value is a block `Element` object.\n */\n isBlock: (editor: Editor, value: Element) => boolean\n\n /**\n * Check if a point is an edge of a location.\n */\n isEdge: (editor: Editor, point: Point, at: Location) => boolean\n\n /**\n * Check if a value is an `Editor` object.\n */\n isEditor: (value: any) => value is Editor\n\n /**\n * Check if a value is a read-only `Element` object.\n */\n isElementReadOnly: (editor: Editor, element: Element) => boolean\n\n /**\n * Check if an element is empty, accounting for void nodes.\n */\n isEmpty: (editor: Editor, element: Element) => boolean\n\n /**\n * Check if a point is the end point of a location.\n */\n isEnd: (editor: Editor, point: Point, at: Location) => boolean\n\n /**\n * Check if a value is an inline `Element` object.\n */\n isInline: (editor: Editor, value: Element) => boolean\n\n /**\n * Check if the editor is currently normalizing after each operation.\n */\n isNormalizing: (editor: Editor) => boolean\n\n /**\n * Check if a value is a selectable `Element` object.\n */\n isSelectable: (editor: Editor, element: Element) => boolean\n\n /**\n * Check if a point is the start point of a location.\n */\n isStart: (editor: Editor, point: Point, at: Location) => boolean\n\n /**\n * Check if a value is a void `Element` object.\n */\n isVoid: (editor: Editor, value: Element) => boolean\n\n /**\n * Get the last node at a location.\n */\n last: (editor: Editor, at: Location) => NodeEntry\n\n /**\n * Get the leaf text node at a location.\n */\n leaf: (\n editor: Editor,\n at: Location,\n options?: EditorLeafOptions\n ) => NodeEntry<Text>\n\n /**\n * Iterate through all of the levels at a location.\n */\n levels: <T extends Node>(\n editor: Editor,\n options?: EditorLevelsOptions<T>\n ) => Generator<NodeEntry<T>, void, undefined>\n\n /**\n * Get the marks that would be added to text at the current selection.\n */\n marks: (editor: Editor) => Omit<Text, 'text'> | null\n\n /**\n * Get the matching node in the branch of the document after a location.\n */\n next: <T extends Descendant>(\n editor: Editor,\n options?: EditorNextOptions<T>\n ) => NodeEntry<T> | undefined\n\n /**\n * Get the node at a location.\n */\n node: (editor: Editor, at: Location, options?: EditorNodeOptions) => NodeEntry\n\n /**\n * Iterate through all of the nodes in the Editor.\n */\n nodes: <T extends Node>(\n editor: Editor,\n options?: EditorNodesOptions<T>\n ) => Generator<NodeEntry<T>, void, undefined>\n\n /**\n * Normalize any dirty objects in the editor.\n */\n normalize: (editor: Editor, options?: EditorNormalizeOptions) => void\n\n /**\n * Get the parent node of a location.\n */\n parent: (\n editor: Editor,\n at: Location,\n options?: EditorParentOptions\n ) => NodeEntry<Ancestor>\n\n /**\n * Get the path of a location.\n */\n path: (editor: Editor, at: Location, options?: EditorPathOptions) => Path\n\n /**\n * Create a mutable ref for a `Path` object, which will stay in sync as new\n * operations are applied to the editor.\n */\n pathRef: (\n editor: Editor,\n path: Path,\n options?: EditorPathRefOptions\n ) => PathRef\n\n /**\n * Get the set of currently tracked path refs of the editor.\n */\n pathRefs: (editor: Editor) => Set<PathRef>\n\n /**\n * Get the start or end point of a location.\n */\n point: (editor: Editor, at: Location, options?: EditorPointOptions) => Point\n\n /**\n * Create a mutable ref for a `Point` object, which will stay in sync as new\n * operations are applied to the editor.\n */\n pointRef: (\n editor: Editor,\n point: Point,\n options?: EditorPointRefOptions\n ) => PointRef\n\n /**\n * Get the set of currently tracked point refs of the editor.\n */\n pointRefs: (editor: Editor) => Set<PointRef>\n\n /**\n * Return all the positions in `at` range where a `Point` can be placed.\n *\n * By default, moves forward by individual offsets at a time, but\n * the `unit` option can be used to to move by character, word, line, or block.\n *\n * The `reverse` option can be used to change iteration direction.\n *\n * Note: By default void nodes are treated as a single point and iteration\n * will not happen inside their content unless you pass in true for the\n * `voids` option, then iteration will occur.\n */\n positions: (\n editor: Editor,\n options?: EditorPositionsOptions\n ) => Generator<Point, void, undefined>\n\n /**\n * Get the matching node in the branch of the document before a location.\n */\n previous: <T extends Node>(\n editor: Editor,\n options?: EditorPreviousOptions<T>\n ) => NodeEntry<T> | undefined\n\n /**\n * Get a range of a location.\n */\n range: (editor: Editor, at: Location, to?: Location) => Range\n\n /**\n * Create a mutable ref for a `Range` object, which will stay in sync as new\n * operations are applied to the editor.\n */\n rangeRef: (\n editor: Editor,\n range: Range,\n options?: EditorRangeRefOptions\n ) => RangeRef\n\n /**\n * Get the set of currently tracked range refs of the editor.\n */\n rangeRefs: (editor: Editor) => Set<RangeRef>\n\n /**\n * Remove a custom property from all of the leaf text nodes in the current\n * selection.\n *\n * If the selection is currently collapsed, the removal will be stored on\n * `editor.marks` and applied to the text inserted next.\n */\n removeMark: (editor: Editor, key: string) => void\n\n /**\n * Manually set if the editor should currently be normalizing.\n *\n * Note: Using this incorrectly can leave the editor in an invalid state.\n *\n */\n setNormalizing: (editor: Editor, isNormalizing: boolean) => void\n\n /**\n * Get the start point of a location.\n */\n start: (editor: Editor, at: Location) => Point\n\n /**\n * Get the text string content of a location.\n *\n * Note: by default the text of void nodes is considered to be an empty\n * string, regardless of content, unless you pass in true for the voids option\n */\n string: (\n editor: Editor,\n at: Location,\n options?: EditorStringOptions\n ) => string\n\n /**\n * Convert a range into a non-hanging one.\n */\n unhangRange: (\n editor: Editor,\n range: Range,\n options?: EditorUnhangRangeOptions\n ) => Range\n\n /**\n * Match a void node in the current branch of the editor.\n */\n void: (\n editor: Editor,\n options?: EditorVoidOptions\n ) => NodeEntry<Element> | undefined\n\n /**\n * Call a function, deferring normalization until after it completes.\n */\n withoutNormalizing: (editor: Editor, fn: () => void) => void\n\n /**\n * Call a function, Determine whether or not remove the previous node when merge.\n */\n shouldMergeNodesRemovePrevNode: (\n editor: Editor,\n prevNodeEntry: NodeEntry,\n curNodeEntry: NodeEntry\n ) => boolean\n}\n\n// eslint-disable-next-line no-redeclare\nexport const Editor: EditorInterface = {\n above(editor, options) {\n return editor.above(options)\n },\n\n addMark(editor, key, value) {\n editor.addMark(key, value)\n },\n\n after(editor, at, options) {\n return editor.after(at, options)\n },\n\n before(editor, at, options) {\n return editor.before(at, options)\n },\n\n deleteBackward(editor, options = {}) {\n const { unit = 'character' } = options\n editor.deleteBackward(unit)\n },\n\n deleteForward(editor, options = {}) {\n const { unit = 'character' } = options\n editor.deleteForward(unit)\n },\n\n deleteFragment(editor, options) {\n editor.deleteFragment(options)\n },\n\n edges(editor, at) {\n return editor.edges(at)\n },\n\n elementReadOnly(editor: Editor, options: EditorElementReadOnlyOptions = {}) {\n return editor.elementReadOnly(options)\n },\n\n end(editor, at) {\n return editor.end(at)\n },\n\n first(editor, at) {\n return editor.first(at)\n },\n\n fragment(editor, at) {\n return editor.fragment(at)\n },\n\n hasBlocks(editor, element) {\n return editor.hasBlocks(element)\n },\n\n hasInlines(editor, element) {\n return editor.hasInlines(element)\n },\n\n hasPath(editor, path) {\n return editor.hasPath(path)\n },\n\n hasTexts(editor, element) {\n return editor.hasTexts(element)\n },\n\n insertBreak(editor) {\n editor.insertBreak()\n },\n\n insertFragment(editor, fragment, options) {\n editor.insertFragment(fragment, options)\n },\n\n insertNode(editor, node) {\n editor.insertNode(node)\n },\n\n insertSoftBreak(editor) {\n editor.insertSoftBreak()\n },\n\n insertText(editor, text) {\n editor.insertText(text)\n },\n\n isBlock(editor, value) {\n return editor.isBlock(value)\n },\n\n isEdge(editor, point, at) {\n return editor.isEdge(point, at)\n },\n\n isEditor(value: any): value is Editor {\n return isEditor(value)\n },\n\n isElementReadOnly(editor, element) {\n return editor.isElementReadOnly(element)\n },\n\n isEmpty(editor, element) {\n return editor.isEmpty(element)\n },\n\n isEnd(editor, point, at) {\n return editor.isEnd(point, at)\n },\n\n isInline(editor, value) {\n return editor.isInline(value)\n },\n\n isNormalizing(editor) {\n return editor.isNormalizing()\n },\n\n isSelectable(editor: Editor, value: Element) {\n return editor.isSelectable(value)\n },\n\n isStart(editor, point, at) {\n return editor.isStart(point, at)\n },\n\n isVoid(editor, value) {\n return editor.isVoid(value)\n },\n\n last(editor, at) {\n return editor.last(at)\n },\n\n leaf(editor, at, options) {\n return editor.leaf(at, options)\n },\n\n levels(editor, options) {\n return editor.levels(options)\n },\n\n marks(editor) {\n return editor.getMarks()\n },\n\n next<T extends Descendant>(\n editor: Editor,\n options?: EditorNextOptions<T>\n ): NodeEntry<T> | undefined {\n return editor.next(options)\n },\n\n node(editor, at, options) {\n return editor.node(at, options)\n },\n\n nodes(editor, options) {\n return editor.nodes(options)\n },\n\n normalize(editor, options) {\n editor.normalize(options)\n },\n\n parent(editor, at, options) {\n return editor.parent(at, options)\n },\n\n path(editor, at, options) {\n return editor.path(at, options)\n },\n\n pathRef(editor, path, options) {\n return editor.pathRef(path, options)\n },\n\n pathRefs(editor) {\n return editor.pathRefs()\n },\n\n point(editor, at, options) {\n return editor.point(at, options)\n },\n\n pointRef(editor, point, options) {\n return editor.pointRef(point, options)\n },\n\n pointRefs(editor) {\n return editor.pointRefs()\n },\n\n positions(editor, options) {\n return editor.positions(options)\n },\n\n previous(editor, options) {\n return editor.previous(options)\n },\n\n range(editor, at, to) {\n return editor.range(at, to)\n },\n\n rangeRef(editor, range, options) {\n return editor.rangeRef(range, options)\n },\n\n rangeRefs(editor) {\n return editor.rangeRefs()\n },\n\n removeMark(editor, key) {\n editor.removeMark(key)\n },\n\n setNormalizing(editor, isNormalizing) {\n editor.setNormalizing(isNormalizing)\n },\n\n start(editor, at) {\n return editor.start(at)\n },\n\n string(editor, at, options) {\n return editor.string(at, options)\n },\n\n unhangRange(editor, range, options) {\n return editor.unhangRange(range, options)\n },\n\n void(editor, options) {\n return editor.void(options)\n },\n\n withoutNormalizing(editor, fn: () => void) {\n editor.withoutNormalizing(fn)\n },\n shouldMergeNodesRemovePrevNode: (editor, prevNode, curNode) => {\n return editor.shouldMergeNodesRemovePrevNode(prevNode, curNode)\n },\n}\n\n/**\n * A helper type for narrowing matched nodes with a predicate.\n */\n\nexport type NodeMatch<T extends Node> =\n | ((node: Node, path: Path) => node is T)\n | ((node: Node, path: Path) => boolean)\n\nexport type PropsCompare = (prop: Partial<Node>, node: Partial<Node>) => boolean\nexport type PropsMerge = (prop: Partial<Node>, node: Partial<Node>) => object\n","import { Path, Point, Range } from '..'\n\n/**\n * The `Location` interface is a union of the ways to refer to a specific\n * location in a Slate document: paths, points or ranges.\n *\n * Methods will often accept a `Location` instead of requiring only a `Path`,\n * `Point` or `Range`. This eliminates the need for developers to manage\n * converting between the different interfaces in their own code base.\n */\n\nexport type Location = Path | Point | Range\n\nexport interface LocationInterface {\n /**\n * Check if a value implements the `Location` interface.\n */\n isLocation: (value: any) => value is Location\n}\n\n// eslint-disable-next-line no-redeclare\nexport const Location: LocationInterface = {\n isLocation(value: any): value is Location {\n return Path.isPath(value) || Point.isPoint(value) || Range.isRange(value)\n },\n}\n\n/**\n * The `Span` interface is a low-level way to refer to locations in nodes\n * without using `Point` which requires leaf text nodes to be present.\n */\n\nexport type Span = [Path, Path]\n\nexport interface SpanInterface {\n /**\n * Check if a value implements the `Span` interface.\n */\n isSpan: (value: any) => value is Span\n}\n\n// eslint-disable-next-line no-redeclare\nexport const Span: SpanInterface = {\n isSpan(value: any): value is Span {\n return (\n Array.isArray(value) && value.length === 2 && value.every(Path.isPath)\n )\n },\n}\n","import { isPlainObject } from 'is-plain-object'\nimport { produce } from 'immer'\nimport { ExtendedType, Operation, Path } from '..'\nimport { TextDirection } from '../types/types'\n\n/**\n * `Point` objects refer to a specific location in a text node in a Slate\n * document. Its path refers to the location of the node in the tree, and its\n * offset refers to the distance into the node's string of text. Points can\n * only refer to `Text` nodes.\n */\n\nexport interface BasePoint {\n path: Path\n offset: number\n}\n\nexport type Point = ExtendedType<'Point', BasePoint>\n\nexport interface PointTransformOptions {\n affinity?: TextDirection | null\n}\n\nexport interface PointInterface {\n /**\n * Compare a point to another, returning an integer indicating whether the\n * point was before, at, or after the other.\n */\n compare: (point: Point, another: Point) => -1 | 0 | 1\n\n /**\n * Check if a point is after another.\n */\n isAfter: (point: Point, another: Point) => boolean\n\n /**\n * Check if a point is before another.\n */\n isBefore: (point: Point, another: Point) => boolean\n\n /**\n * Check if a point is exactly equal to another.\n */\n equals: (point: Point, another: Point) => boolean\n\n /**\n * Check if a value implements the `Point` interface.\n */\n isPoint: (value: any) => value is Point\n\n /**\n * Transform a point by an operation.\n */\n transform: (\n point: Point,\n op: Operation,\n options?: PointTransformOptions\n ) => Point | null\n}\n\n// eslint-disable-next-line no-redeclare\nexport const Point: PointInterface = {\n compare(point: Point, another: Point): -1 | 0 | 1 {\n const result = Path.compare(point.path, another.path)\n\n if (result === 0) {\n if (point.offset < another.offset) return -1\n if (point.offset > another.offset) return 1\n return 0\n }\n\n return result\n },\n\n isAfter(point: Point, another: Point): boolean {\n return Point.compare(point, another) === 1\n },\n\n isBefore(point: Point, another: Point): boolean {\n return Point.compare(point, another) === -1\n },\n\n equals(point: Point, another: Point): boolean {\n // PERF: ensure the offsets are equal first since they are cheaper to check.\n return (\n point.offset === another.offset && Path.equals(point.path, another.path)\n )\n },\n\n isPoint(value: any): value is Point {\n return (\n isPlainObject(value) &&\n typeof value.offset === 'number' &&\n Path.isPath(value.path)\n )\n },\n\n transform(\n point: Point | null,\n op: Operation,\n options: PointTransformOptions = {}\n ): Point | null {\n return produce(point, p => {\n if (p === null) {\n return null\n }\n const { affinity = 'forward' } = options\n const { path, offset } = p\n\n switch (op.type) {\n case 'insert_node':\n case 'move_node': {\n p.path = Path.transform(path, op, options)!\n break\n }\n\n case 'insert_text': {\n if (\n Path.equals(op.path, path) &&\n (op.offset < offset ||\n (op.offset === offset && affinity === 'forward'))\n ) {\n p.offset += op.text.length\n }\n\n break\n }\n\n case 'merge_node': {\n if (Path.equals(op.path, path)) {\n p.offset += op.position\n }\n\n p.path = Path.transform(path, op, options)!\n break\n }\n\n case 'remove_text': {\n if (Path.equals(op.path, path) && op.offset <= offset) {\n p.offset -= Math.min(offset - op.offset, op.text.length)\n }\n\n break\n }\n\n case 'remove_node': {\n if (Path.equals(op.path, path) || Path.isAncestor(op.path, path)) {\n return null\n }\n\n p.path = Path.transform(path, op, options)!\n break\n }\n\n case 'split_node': {\n if (Path.equals(op.path, path)) {\n if (op.position === offset && affinity == null) {\n return null\n } else if (\n op.position < offset ||\n (op.position === offset && affinity === 'forward')\n ) {\n p.offset -= op.position\n\n p.path = Path.transform(path, op, {\n ...options,\n affinity: 'forward',\n })!\n }\n } else {\n p.path = Path.transform(path, op, options)!\n }\n\n break\n }\n }\n })\n },\n}\n\n/**\n * `PointEntry` objects are returned when iterating over `Point` objects that\n * belong to a range.\n */\n\nexport type PointEntry = [Point, 'anchor' | 'focus']\n","export type Scrubber = (key: string, value: unknown) => unknown\n\nexport interface ScrubberInterface {\n setScrubber(scrubber: Scrubber | undefined): void\n stringify(value: any): string\n}\n\nlet _scrubber: Scrubber | undefined = undefined\n\n/**\n * This interface implements a stringify() function, which is used by Slate\n * internally when generating exceptions containing end user data. Developers\n * using Slate may call Scrubber.setScrubber() to alter the behavior of this\n * stringify() function.\n *\n * For example, to prevent the cleartext logging of 'text' fields within Nodes:\n *\n * import { Scrubber } from 'slate';\n * Scrubber.setScrubber((key, val) => {\n * if (key === 'text') return '...scrubbed...'\n * return val\n * });\n *\n */\n// eslint-disable-next-line no-redeclare\nexport const Scrubber: ScrubberInterface = {\n setScrubber(scrubber: Scrubber | undefined): void {\n _scrubber = scrubber\n },\n\n stringify(value: any): string {\n return JSON.stringify(value, _scrubber)\n },\n}\n","import { isPlainObject } from 'is-plain-object'\nimport { Range } from '..'\nimport { ExtendedType } from '../types/custom-types'\nimport { isDeepEqual } from '../utils/deep-equal'\n\n/**\n * `Text` objects represent the nodes that contain the actual text content of a\n * Slate document along with any formatting properties. They are always leaf\n * nodes in the document tree as they cannot contain any children.\n */\n\nexport interface BaseText {\n text: string\n}\n\nexport type Text = ExtendedType<'Text', BaseText>\n\nexport interface TextEqualsOptions {\n loose?: boolean\n}\n\nexport type DecoratedRange = Range & {\n /**\n * Customize how another decoration is merged into a text node. If not specified, `Object.assign` would be used.\n * It is useful for overlapping decorations with the same key but different values.\n */\n merge?: (leaf: Text, decoration: object) => void\n}\n\nexport interface TextInterface {\n /**\n * Check if two text nodes are equal.\n *\n * When loose is set, the text is not compared. This is\n * used to check whether sibling text nodes can be merged.\n */\n equals: (text: Text, another: Text, options?: TextEqualsOptions) => boolean\n\n /**\n * Check if a value implements the `Text` interface.\n */\n isText: (value: any) => value is Text\n\n /**\n * Check if a value is a list of `Text` objects.\n */\n isTextList: (value: any) => value is Text[]\n\n /**\n * Check if some props are a partial of Text.\n */\n isTextProps: (props: any) => props is Partial<Text>\n\n /**\n * Check if an text matches set of properties.\n *\n * Note: this is for matching custom properties, and it does not ensure that\n * the `text` property are two nodes equal.\n */\n matches: (text: Text, props: Partial<Text>) => boolean\n\n /**\n * Get the leaves for a text node given decorations.\n */\n decorations: (node: Text, decorations: DecoratedRange[]) => Text[]\n}\n\n// eslint-disable-next-line no-redeclare\nexport const Text: TextInterface = {\n equals(text: Text, another: Text, options: TextEqualsOptions = {}): boolean {\n const { loose = false } = options\n\n function omitText(obj: Record<any, any>) {\n const { text, ...rest } = obj\n\n return rest\n }\n\n return isDeepEqual(\n loose ? omitText(text) : text,\n loose ? omitText(another) : another\n )\n },\n\n isText(value: any): value is Text {\n return isPlainObject(value) && typeof value.text === 'string'\n },\n\n isTextList(value: any): value is Text[] {\n return Array.isArray(value) && value.every(val => Text.isText(val))\n },\n\n isTextProps(props: any): props is Partial<Text> {\n return (props as Partial<Text>).text !== undefined\n },\n\n matches(text: Text, props: Partial<Text>): boolean {\n for (const key in props) {\n if (key === 'text') {\n continue\n }\n\n if (\n !text.hasOwnProperty(key) ||\n text[<keyof Text>key] !== props[<keyof Text>key]\n ) {\n return false\n }\n }\n\n return true\n },\n\n decorations(node: Text, decorations: DecoratedRange[]): Text[] {\n let leaves: Text[] = [{ ...node }]\n\n for (const dec of decorations) {\n const { anchor, focus, merge: mergeDecoration, ...rest } = dec\n const [start, end] = Range.edges(dec)\n const next = []\n let leafEnd = 0\n const decorationStart = start.offset\n const decorationEnd = end.offset\n const merge = mergeDecoration ?? Object.assign\n\n for (const leaf of leaves) {\n const { length } = leaf.text\n const leafStart = leafEnd\n leafEnd += length\n\n // If the range encompasses the entire leaf, add the range.\n if (decorationStart <= leafStart && leafEnd <= decorationEnd) {\n merge(leaf, rest)\n next.push(leaf)\n continue\n }\n\n // If the range expanded and match the leaf, or starts after, or ends before it, continue.\n if (\n (decorationStart !== decorationEnd &&\n (decorationStart === leafEnd || decorationEnd === leafStart)) ||\n decorationStart > leafEnd ||\n decorationEnd < leafStart ||\n (decorationEnd === leafStart && leafStart !== 0)\n ) {\n next.push(leaf)\n continue\n }\n\n // Otherwise we need to split the leaf, at the start, end, or both,\n // and add the range to the middle intersecting section. Do the end\n // split first since we don't need to update the offset that way.\n let middle = leaf\n let before\n let after\n\n if (decorationEnd < leafEnd) {\n const off = decorationEnd - leafStart\n after = { ...middle, text: middle.text.slice(off) }\n middle = { ...middle, text: middle.text.slice(0, off) }\n }\n\n if (decorationStart > leafStart) {\n const off = decorationStart - leafStart\n before = { ...middle, text: middle.text.slice(0, off) }\n middle = { ...middle, text: middle.text.slice(off) }\n }\n\n merge(middle, rest)\n\n if (before) {\n next.push(before)\n }\n\n next.push(middle)\n\n if (after) {\n next.push(after)\n }\n }\n\n leaves = next\n }\n\n return leaves\n },\n}\n","import { Editor, Location } from '../interfaces'\n\n/**\n * Get the default location to insert content into the editor.\n * By default, use the selection as the target location. But if there is\n * no selection, insert at the end of the document since that is such a\n * common use case when inserting from a non-selected state.\n */\nexport const getDefaultInsertLocation = (editor: Editor): Location => {\n if (editor.selection) {\n return editor.selection\n } else if (editor.children.length > 0) {\n return Editor.end(editor, [])\n } else {\n return [0]\n }\n}\n","import { Editor } from '../interfaces/editor'\nimport { Path } from '../interfaces/path'\nimport { Node } from '../interfaces/node'\n\nexport const matchPath = (\n editor: Editor,\n path: Path\n): ((node: Node) => boolean) => {\n const [node] = Editor.node(editor, path)\n return n => n === node\n}\n","// Character (grapheme cluster) boundaries are determined according to\n// the default grapheme cluster boundary specification, extended grapheme clusters variant[1].\n//\n// References:\n//\n// [1] https://www.unicode.org/reports/tr29/#Default_Grapheme_Cluster_Table\n// [2] https://www.unicode.org/Public/UCD/latest/ucd/auxiliary/GraphemeBreakProperty.txt\n// [3] https://www.unicode.org/Public/UCD/latest/ucd/auxiliary/GraphemeBreakTest.html\n// [4] https://www.unicode.org/Public/UCD/latest/ucd/auxiliary/GraphemeBreakTest.txt\n\n/**\n * Get the distance to the end of the first character in a string of text.\n */\n\nexport const getCharacterDistance = (str: string, isRTL = false): number => {\n const isLTR = !isRTL\n const codepoints = isRTL ? codepointsIteratorRTL(str) : str\n\n let left: CodepointType = CodepointType.None\n let right: CodepointType = CodepointType.None\n let distance = 0\n // Evaluation of these conditions are deferred.\n let gb11: boolean | null = null // Is GB11 applicable?\n let gb12Or13: boolean | null = null // Is GB12 or GB13 applicable?\n\n for (const char of codepoints) {\n const code = char.codePointAt(0)\n if (!code) break\n\n const type = getCodepointType(char, code)\n ;[left, right] = isLTR ? [right, type] : [type, left]\n\n if (\n intersects(left, CodepointType.ZWJ) &&\n intersects(right, CodepointType.ExtPict)\n ) {\n if (isLTR) {\n gb11 = endsWithEmojiZWJ(str.substring(0, distance))\n } else {\n gb11 = endsWithEmojiZWJ(str.substring(0, str.length - distance))\n }\n if (!gb11) break\n }\n\n if (\n intersects(left, CodepointType.RI) &&\n intersects(right, CodepointType.RI)\n ) {\n if (gb12Or13 !== null) {\n gb12Or13 = !gb12Or13\n } else {\n if (isLTR) {\n gb12Or13 = true\n } else {\n gb12Or13 = endsWithOddNumberOfRIs(\n str.substring(0, str.length - distance)\n )\n }\n }\n if (!gb12Or13) break\n }\n\n if (\n left !== CodepointType.None &&\n right !== CodepointType.None &&\n isBoundaryPair(left, right)\n ) {\n break\n }\n\n distance += char.length\n }\n\n return distance || 1\n}\n\nconst SPACE = /\\s/\nconst PUNCTUATION =\n /[\\u002B\\u0021-\\u0023\\u0025-\\u002A\\u002C-\\u002F\\u003A\\u003B\\u003F\\u0040\\u005B-\\u005D\\u005F\\u007B\\u007D\\u00A1\\u00A7\\u00AB\\u00B6\\u00B7\\u00BB\\u00BF\\u037E\\u0387\\u055A-\\u055F\\u0589\\u058A\\u05BE\\u05C0\\u05C3\\u05C6\\u05F3\\u05F4\\u0609\\u060A\\u060C\\u060D\\u061B\\u061E\\u061F\\u066A-\\u066D\\u06D4\\u0700-\\u070D\\u07F7-\\u07F9\\u0830-\\u083E\\u085E\\u0964\\u0965\\u0970\\u0AF0\\u0DF4\\u0E4F\\u0E5A\\u0E5B\\u0F04-\\u0F12\\u0F14\\u0F3A-\\u0F3D\\u0F85\\u0FD0-\\u0FD4\\u0FD9\\u0FDA\\u104A-\\u104F\\u10FB\\u1360-\\u1368\\u1400\\u166D\\u166E\\u169B\\u169C\\u16EB-\\u16ED\\u1735\\u1736\\u17D4-\\u17D6\\u17D8-\\u17DA\\u1800-\\u180A\\u1944\\u1945\\u1A1E\\u1A1F\\u1AA0-\\u1AA6\\u1AA8-\\u1AAD\\u1B5A-\\u1B60\\u1BFC-\\u1BFF\\u1C3B-\\u1C3F\\u1C7E\\u1C7F\\u1CC0-\\u1CC7\\u1CD3\\u2010-\\u2027\\u2030-\\u2043\\u2045-\\u2051\\u2053-\\u205E\\u207D\\u207E\\u208D\\u208E\\u2329\\u232A\\u2768-\\u2775\\u27C5\\u27C6\\u27E6-\\u27EF\\u2983-\\u2998\\u29D8-\\u29DB\\u29FC\\u29FD\\u2CF9-\\u2CFC\\u2CFE\\u2CFF\\u2D70\\u2E00-\\u2E2E\\u2E30-\\u2E3B\\u3001-\\u3003\\u3008-\\u3011\\u3014-\\u301F\\u3030\\u303D\\u30A0\\u30FB\\uA4FE\\uA4FF\\uA60D-\\uA60F\\uA673\\uA67E\\uA6F2-\\uA6F7\\uA874-\\uA877\\uA8CE\\uA8CF\\uA8F8-\\uA8FA\\uA92E\\uA92F\\uA95F\\uA9C1-\\uA9CD\\uA9DE\\uA9DF\\uAA5C-\\uAA5F\\uAADE\\uAADF\\uAAF0\\uAAF1\\uABEB\\uFD3E\\uFD3F\\uFE10-\\uFE19\\uFE30-\\uFE52\\uFE54-\\uFE61\\uFE63\\uFE68\\uFE6A\\uFE6B\\uFF01-\\uFF03\\uFF05-\\uFF0A\\uFF0C-\\uFF0F\\uFF1A\\uFF1B\\uFF1F\\uFF20\\uFF3B-\\uFF3D\\uFF3F\\uFF5B\\uFF5D\\uFF5F-\\uFF65]/\nconst CHAMELEON = /['\\u2018\\u2019]/\n\n/**\n * Get the distance to the end of the first word in a string of text.\n */\n\nexport const getWordDistance = (text: string, isRTL = false): number => {\n let dist = 0\n let started = false\n\n while (text.length > 0) {\n const charDist = getCharacterDistance(text, isRTL)\n const [char, remaining] = splitByCharacterDistance(text, charDist, isRTL)\n\n if (isWordCharacter(char, remaining, isRTL)) {\n started = true\n dist += charDist\n } else if (!started) {\n dist += charDist\n } else {\n break\n }\n\n text = remaining\n }\n\n return dist\n}\n\n/**\n * Split a string in two parts at a given distance starting from the end when\n * `isRTL` is set to `true`.\n */\n\nexport const splitByCharacterDistance = (\n str: string,\n dist: number,\n isRTL?: boolean\n): [string, string] => {\n if (isRTL) {\n const at = str.length - dist\n return [str.slice(at, str.length), str.slice(0, at)]\n }\n\n return [str.slice(0, dist), str.slice(dist)]\n}\n\n/**\n * Check if a character is a word character. The `remaining` argument is used\n * because sometimes you must read subsequent characters to truly determine it.\n */\n\nconst isWordCharacter = (\n char: string,\n remaining: string,\n isRTL = false\n): boolean => {\n if (SPACE.test(char)) {\n return false\n }\n\n // Chameleons count as word characters as long as they're in a word, so\n // recurse to see if the next one is a word character or not.\n if (CHAMELEON.test(char)) {\n const charDist = getCharacterDistance(remaining, isRTL)\n const [nextChar, nextRemaining] = splitByCharacterDistance(\n remaining,\n charDist,\n isRTL\n )\n\n if (isWordCharacter(nextChar, nextRemaining, isRTL)) {\n return true\n }\n }\n\n if (PUNCTUATION.test(char)) {\n return false\n }\n\n return true\n}\n\n/**\n * Iterate on codepoints from right to left.\n */\n\nexport const codepointsIteratorRTL = function* (str: string) {\n const end = str.length - 1\n\n for (let i = 0; i < str.length; i++) {\n const char1 = str.charAt(end - i)\n\n if (isLowSurrogate(char1.charCodeAt(0))) {\n const char2 = str.charAt(end - i - 1)\n if (isHighSurrogate(char2.charCodeAt(0))) {\n yield char2 + char1\n\n i++\n continue\n }\n }\n\n yield char1\n }\n}\n\n/**\n * Is `charCode` a high surrogate.\n *\n * https://en.wikipedia.org/wiki/Universal_Character_Set_characters#Surrogates\n */\n\nconst isHighSurrogate = (charCode: number) => {\n return charCode >= 0xd800 && charCode <= 0xdbff\n}\n\n/**\n * Is `charCode` a low surrogate.\n *\n * https://en.wikipedia.org/wiki/Universal_Character_Set_characters#Surrogates\n */\n\nconst isLowSurrogate = (charCode: number) => {\n return charCode >= 0xdc00 && charCode <= 0xdfff\n}\n\nenum CodepointType {\n None = 0,\n Extend = 1 << 0,\n ZWJ = 1 << 1,\n RI = 1 << 2,\n Prepend = 1 << 3,\n SpacingMark = 1 << 4,\n L = 1 << 5,\n V = 1 << 6,\n T = 1 << 7,\n LV = 1 << 8,\n LVT = 1 << 9,\n ExtPict = 1 << 10,\n Any = 1 << 11,\n}\n\nconst reExtend = /^[\\p{Gr_Ext}\\p{EMod}]$/u\nconst rePrepend =\n /^[\\u0600-\\u0605\\u06DD\\u070F\\u0890-\\u0891\\u08E2\\u0D4E\\u{110BD}\\u{110CD}\\u{111C2}-\\u{111C3}\\u{1193F}\\u{11941}\\u{11A3A}\\u{11A84}-\\u{11A89}\\u{11D46}]$/u\nconst reSpacingMark =\n /^[\\u0903\\u093B\\u093E-\\u0940\\u0949-\\u094C\\u094E-\\u094F\\u0982-\\u0983\\u09BF-\\u09C0\\u09C7-\\u09C8\\u09CB-\\u09CC\\u0A03\\u0A3E-\\u0A40\\u0A83\\u0ABE-\\u0AC0\\u0AC9\\u0ACB-\\u0ACC\\u0B02-\\u0B03\\u0B40\\u0B47-\\u0B48\\u0B4B-\\u0B4C\\u0BBF\\u0BC1-\\u0BC2\\u0BC6-\\u0BC8\\u0BCA-\\u0BCC\\u0C01-\\u0C03\\u0C41-\\u0C44\\u0C82-\\u0C83\\u0CBE\\u0CC0-\\u0CC1\\u0CC3-\\u0CC4\\u0CC7-\\u0CC8\\u0CCA-\\u0CCB\\u0D02-\\u0D03\\u0D3F-\\u0D40\\u0D46-\\u0D48\\u0D4A-\\u0D4C\\u0D82-\\u0D83\\u0DD0-\\u0DD1\\u0DD8-\\u0DDE\\u0DF2-\\u0DF3\\u0E33\\u0EB3\\u0F3E-\\u0F3F\\u0F7F\\u1031\\u103B-\\u103C\\u1056-\\u1057\\u1084\\u1715\\u1734\\u17B6\\u17BE-\\u17C5\\u17C7-\\u17C8\\u1923-\\u1926\\u1929-\\u192B\\u1930-\\u1931\\u1933-\\u1938\\u1A19-\\u1A1A\\u1A55\\u1A57\\u1A6D-\\u1A72\\u1B04\\u1B3B\\u1B3D-\\u1B41\\u1B43-\\u1B44\\u1B82\\u1BA1\\u1BA6-\\u1BA7\\u1BAA\\u1BE7\\u1BEA-\\u1BEC\\u1BEE\\u1BF2-\\u1BF3\\u1C24-\\u1C2B\\u1C34-\\u1C35\\u1CE1\\u1CF7\\uA823-\\uA824\\uA827\\uA880-\\uA881\\uA8B4-\\uA8C3\\uA952-\\uA953\\uA983\\uA9B4-\\uA9B5\\uA9BA-\\uA9BB\\uA9BE-\\uA9C0\\uAA2F-\\uAA30\\uAA33-\\uAA34\\uAA4D\\uAAEB\\uAAEE-\\uAAEF\\uAAF5\\uABE3-\\uABE4\\uABE6-\\uABE7\\uABE9-\\uABEA\\uABEC\\u{11000}\\u{11002}\\u{11082}\\u{110B0}-\\u{110B2}\\u{110B7}-\\u{110B8}\\u{1112C}\\u{11145}-\\u{11146}\\u{11182}\\u{111B3}-\\u{111B5}\\u{111BF}-\\u{111C0}\\u{111CE}\\u{1122C}-\\u{1122E}\\u{11232}-\\u{11233}\\u{11235}\\u{112E0}-\\u{112E2}\\u{11302}-\\u{11303}\\u{1133F}\\u{11341}-\\u{11344}\\u{11347}-\\u{11348}\\u{1134B}-\\u{1134D}\\u{11362}-\\u{11363}\\u{11435}-\\u{11437}\\u{11440}-\\u{11441}\\u{11445}\\u{114B1}-\\u{114B2}\\u{114B9}\\u{114BB}-\\u{114BC}\\u{114BE}\\u{114C1}\\u{115B0}-\\u{115B1}\\u{115B8}-\\u{115BB}\\u{115BE}\\u{11630}-\\u{11632}\\u{1163B}-\\u{1163C}\\u{1163E}\\u{116AC}\\u{116AE}-\\u{116AF}\\u{116B6}\\u{11726}\\u{1182C}-\\u{1182E}\\u{11838}\\u{11931}-\\u{11935}\\u{11937}-\\u{11938}\\u{1193D}\\u{11940}\\u{11942}\\u{119D1}-\\u{119D3}\\u{119DC}-\\u{119DF}\\u{119E4}\\u{11A39}\\u{11A57}-\\u{11A58}\\u{11A97}\\u{11C2F}\\u{11C3E}\\u{11CA9}\\u{11CB1}\\u{11CB4}\\u{11D8A}-\\u{11D8E}\\u{11D93}-\\u{11D94}\\u{11D96}\\u{11EF5}-\\u{11EF6}\\u{16F51}-\\u{16F87}\\u{16FF0}-\\u{16FF1}\\u{1D166}\\u{1D16D}]$/u\nconst reL = /^[\\u1100-\\u115F\\uA960-\\uA97C]$/u\nconst reV = /^[\\u1160-\\u11A7\\uD7B0-\\uD7C6]$/u\nconst reT = /^[\\u11A8-\\u11FF\\uD7CB-\\uD7FB]$/u\nconst reLV =\n /^[\\uAC00\\uAC1C\\uAC38\\uAC54\\uAC70\\uAC8C\\uACA8\\uACC4\\uACE0\\uACFC\\uAD18\\uAD34\\uAD50\\uAD6C\\uAD88\\uADA4\\uADC0\\uADDC\\uADF8\\uAE14\\uAE30\\uAE4C\\uAE68\\uAE84\\uAEA0\\uAEBC\\uAED8\\uAEF4\\uAF10\\uAF2C\\uAF48\\uAF64\\uAF80\\uAF9C\\uAFB8\\uAFD4\\uAFF0\\uB00C\\uB028\\uB044\\uB060\\uB07C\\uB098\\uB0B4\\uB0D0\\uB0EC\\uB108\\uB124\\uB140\\uB15C\\uB178\\uB194\\uB1B0\\uB1CC\\uB1E8\\uB204\\uB220\\uB23C\\uB258\\uB274\\uB290\\uB2AC\\uB2C8\\uB2E4\\uB300\\uB31C\\uB338\\uB354\\uB370\\uB38C\\uB3A8\\uB3C4\\uB3E0\\uB3FC\\uB418\\uB434\\uB450\\uB46C\\uB488\\uB4A4\\uB4C0\\uB4DC\\uB4F8\\uB514\\uB530\\uB54C\\uB568\\uB584\\uB5A0\\uB5BC\\uB5D8\\uB5F4\\uB610\\uB62C\\uB648\\uB664\\uB680\\uB69C\\uB6B8\\uB6D4\\uB6F0\\uB70C\\uB728\\uB744\\uB760\\uB77C\\uB798\\uB7B4\\uB7D0\\uB7EC\\uB808\\uB824\\uB840\\uB85C\\uB878\\uB894\\uB8B0\\uB8CC\\uB8E8\\uB904\\uB920\\uB93C\\uB958\\uB974\\uB990\\uB9AC\\uB9C8\\uB9E4\\uBA00\\uBA1C\\uBA38\\uBA54\\uBA70\\uBA8C\\uBAA8\\uBAC4\\uBAE0\\uBAFC\\uBB18\\uBB34\\uBB50\\uBB6C\\uBB88\\uBBA4\\uBBC0\\uBBDC\\uBBF8\\uBC14\\uBC30\\uBC4C\\uBC68\\uBC84\\uBCA0\\uBCBC\\uBCD8\\uBCF4\\uBD10\\uBD2C\\uBD48\\uBD64\\uBD80\\uBD9C\\uBDB8\\uBDD4\\uBDF0\\uBE0C\\uBE28\\uBE44\\uBE60\\uBE7C\\uBE98\\uBEB4\\uBED0\\uBEEC\\uBF08\\uBF24\\uBF40\\uBF5C\\uBF78\\uBF94\\uBFB0\\uBFCC\\uBFE8\\uC004\\uC020\\uC03C\\uC058\\uC074\\uC090\\uC0AC\\uC0C8\\uC0E4\\uC100\\uC11C\\uC138\\uC154\\uC170\\uC18C\\uC1A8\\uC1C4\\uC1E0\\uC1FC\\uC218\\uC234\\uC250\\uC26C\\uC288\\uC2A4\\uC2C0\\uC2DC\\uC2F8\\uC314\\uC330\\uC34C\\uC368\\uC384\\uC3A0\\uC3BC\\uC3D8\\uC3F4\\uC410\\uC42C\\uC448\\uC464\\uC480\\uC49C\\uC4B8\\uC4D4\\uC4F0\\uC50C\\uC528\\uC544\\uC560\\uC57C\\uC598\\uC5B4\\uC5D0\\uC5EC\\uC608\\uC624\\uC640\\uC65C\\uC678\\uC694\\uC6B0\\uC6CC\\uC6E8\\uC704\\uC720\\uC73C\\uC758\\uC774\\uC790\\uC7AC\\uC7C8\\uC7E4\\uC800\\uC81C\\uC838\\uC854\\uC870\\uC88C\\uC8A8\\uC8C4\\uC8E0\\uC8FC\\uC918\\uC934\\uC950\\uC96C\\uC988\\uC9A4\\uC9C0\\uC9DC\\uC9F8\\uCA14\\uCA30\\uCA4C\\uCA68\\uCA84\\uCAA0\\uCABC\\uCAD8\\uCAF4\\uCB10\\uCB2C\\uCB48\\uCB64\\uCB80\\uCB9C\\uCBB8\\uCBD4\\uCBF0\\uCC0C\\uCC28\\uCC44\\uCC60\\uCC7C\\uCC98\\uCCB4\\uCCD0\\uCCEC\\uCD08\\uCD24\\uCD40\\uCD5C\\uCD78\\uCD94\\uCDB0\\uCDCC\\uCDE8\\uCE04\\uCE20\\uCE3C\\uCE58\\uCE74\\uCE90\\uCEAC\\uCEC8\\uCEE4\\uCF00\\uCF1C\\uCF38\\uCF54\\uCF70\\uCF8C\\uCFA8\\uCFC4\\uCFE0\\uCFFC\\uD018\\uD034\\uD050\\uD06C\\uD088\\uD0A4\\uD0C0\\uD0DC\\uD0F8\\uD114\\uD130\\uD14C\\uD168\\uD184\\uD1A0\\uD1BC\\uD1D8\\uD1F4\\uD210\\uD22C\\uD248\\uD264\\uD280\\uD29C\\uD2B8\\uD2D4\\uD2F0\\uD30C\\uD328\\uD344\\uD360\\uD37C\\uD398\\uD3B4\\uD3D0\\uD3EC\\uD408\\uD424\\uD440\\uD45C\\uD478\\uD494\\uD4B0\\uD4CC\\uD4E8\\uD504\\uD520\\uD53C\\uD558\\uD574\\uD590\\uD5AC\\uD5C8\\uD5E4\\uD600\\uD61C\\uD638\\uD654\\uD670\\uD68C\\uD6A8\\uD6C4\\uD6E0\\uD6FC\\uD718\\uD734\\uD750\\uD76C\\uD788]$/u\nconst reLVT =\n /^[\\uAC01-\\uAC1B\\uAC1D-\\uAC37\\uAC39-\\uAC53\\uAC55-\\uAC6F\\uAC71-\\uAC8B\\uAC8D-\\uACA7\\uACA9-\\uACC3\\uACC5-\\uACDF\\uACE1-\\uACFB\\uACFD-\\uAD17\\uAD19-\\uAD33\\uAD35-\\uAD4F\\uAD51-\\uAD6B\\uAD6D-\\uAD87\\uAD89-\\uADA3\\uADA5-\\uADBF\\uADC1-\\uADDB\\uADDD-\\uADF7\\uADF9-\\uAE13\\uAE15-\\uAE2F\\uAE31-\\uAE4B\\uAE4D-\\uAE67\\uAE69-\\uAE83\\uAE85-\\uAE9F\\uAEA1-\\uAEBB\\uAEBD-\\uAED7\\uAED9-\\uAEF3\\uAEF5-\\uAF0F\\uAF11-\\uAF2B\\uAF2D-\\uAF47\\uAF49-\\uAF63\\uAF65-\\uAF7F\\uAF81-\\uAF9B\\uAF9D-\\uAFB7\\uAFB9-\\uAFD3\\uAFD5-\\uAFEF\\uAFF1-\\uB00B\\uB00D-\\uB027\\uB029-\\uB043\\uB045-\\uB05F\\uB061-\\uB07B\\uB07D-\\uB097\\uB099-\\uB0B3\\uB0B5-\\uB0CF\\uB0D1-\\uB0EB\\uB0ED-\\uB107\\uB109-\\uB123\\uB125-\\uB13F\\uB141-\\uB15B\\uB15D-\\uB177\\uB179-\\uB193\\uB195-\\uB1AF\\uB1B1-\\uB1CB\\uB1CD-\\uB1E7\\uB1E9-\\uB203\\uB205-\\uB21F\\uB221-\\uB23B\\uB23D-\\uB257\\uB259-\\uB273\\uB275-\\uB28F\\uB291-\\uB2AB\\uB2AD-\\uB2C7\\uB2C9-\\uB2E3\\uB2E5-\\uB2FF\\uB301-\\uB31B\\uB31D-\\uB337\\uB339-\\uB353\\uB355-\\uB36F\\uB371-\\uB38B\\uB38D-\\uB3A7\\uB3A9-\\uB3C3\\uB3C5-\\uB3DF\\uB3E1-\\uB3FB\\uB3FD-\\uB417\\uB419-\\uB433\\uB435-\\uB44F\\uB451-\\uB46B\\uB46D-\\uB487\\uB489-\\uB4A3\\uB4A5-\\uB4BF\\uB4C1-\\uB4DB\\uB4DD-\\uB4F7\\uB4F9-\\uB513\\uB515-\\uB52F\\uB531-\\uB54B\\uB54D-\\uB567\\uB569-\\uB583\\uB585-\\uB59F\\uB5A1-\\uB5BB\\uB5BD-\\uB5D7\\uB5D9-\\uB5F3\\uB5F5-\\uB60F\\uB611-\\uB62B\\uB62D-\\uB647\\uB649-\\uB663\\uB665-\\uB67F\\uB681-\\uB69B\\uB69D-\\uB6B7\\uB6B9-\\uB6D3\\uB6D5-\\uB6EF\\uB6F1-\\uB70B\\uB70D-\\uB727\\uB729-\\uB743\\uB745-\\uB75F\\uB761-\\uB77B\\uB77D-\\uB797\\uB799-\\uB7B3\\uB7B5-\\uB7CF\\uB7D1-\\uB7EB\\uB7ED-\\uB807\\uB809-\\uB823\\uB825-\\uB83F\\uB841-\\uB85B\\uB85D-\\uB877\\uB879-\\uB893\\uB895-\\uB8AF\\uB8B1-\\uB8CB\\uB8CD-\\uB8E7\\uB8E9-\\uB903\\uB905-\\uB91F\\uB921-\\uB93B\\uB93D-\\uB957\\uB959-\\uB973\\uB975-\\uB98F\\uB991-\\uB9AB\\uB9AD-\\uB9C7\\uB9C9-\\uB9E3\\uB9E5-\\uB9FF\\uBA01-\\uBA1B\\uBA1D-\\uBA37\\uBA39-\\uBA53\\uBA55-\\uBA6F\\uBA71-\\uBA8B\\uBA8D-\\uBAA7\\uBAA9-\\uBAC3\\uBAC5-\\uBADF\\uBAE1-\\uBAFB\\uBAFD-\\uBB17\\uBB19-\\uBB33\\uBB35-\\uBB4F\\uBB51-\\uBB6B\\uBB6D-\\uBB87\\uBB89-\\uBBA3\\uBBA5-\\uBBBF\\uBBC1-\\uBBDB\\uBBDD-\\uBBF7\\uBBF9-\\uBC13\\uBC15-\\uBC2F\\uBC31-\\uBC4B\\uBC4D-\\uBC67\\uBC69-\\uBC83\\uBC85-\\uBC9F\\uBCA1-\\uBCBB\\uBCBD-\\uBCD7\\uBCD9-\\uBCF3\\uBCF5-\\uBD0F\\uBD11-\\uBD2B\\uBD2D-\\uBD47\\uBD49-\\uBD63\\uBD65-\\uBD7F\\uBD81-\\uBD9B\\uBD9D-\\uBDB7\\uBDB9-\\uBDD3\\uBDD5-\\uBDEF\\uBDF1-\\uBE0B\\uBE0D-\\uBE27\\uBE29-\\uBE43\\uBE45-\\uBE5F\\uBE61-\\uBE7B\\uBE7D-\\uBE97\\uBE99-\\uBEB3\\uBEB5-\\uBECF\\uBED1-\\uBEEB\\uBEED-\\uBF07\\uBF09-\\uBF23\\uBF25-\\uBF3F\\uBF41-\\uBF5B\\uBF5D-\\uBF77\\uBF79-\\uBF93\\uBF95-\\uBFAF\\uBFB1-\\uBFCB\\uBFCD-\\uBFE7\\uBFE9-\\uC003\\uC005-\\uC01F\\uC021-\\uC03B\\uC03D-\\uC057\\uC059-\\uC073\\uC075-\\uC08F\\uC091-\\uC0AB\\uC0AD-\\uC0C7\\uC0C9-\\uC0E3\\uC0E5-\\uC0FF\\uC101-\\uC11B\\uC11D-\\uC137\\uC139-\\uC153\\uC155-\\uC16F\\uC171-\\uC18B\\uC18D-\\uC1A7\\uC1A9-\\uC1C3\\uC1C5-\\uC1DF\\uC1E1-\\uC1FB\\uC1FD-\\uC217\\uC219-\\uC233\\uC235-\\uC24F\\uC251-\\uC26B\\uC26D-\\uC287\\uC289-\\uC2A3\\uC2A5-\\uC2BF\\uC2C1-\\uC2DB\\uC2DD-\\uC2F7\\uC2F9-\\uC313\\uC315-\\uC32F\\uC331-\\uC34B\\uC34D-\\uC367\\uC369-\\uC383\\uC385-\\uC39F\\uC3A1-\\uC3BB\\uC3BD-\\uC3D7\\uC3D9-\\uC3F3\\uC3F5-\\uC40F\\uC411-\\uC42B\\uC42D-\\uC447\\uC449-\\uC463\\uC465-\\uC47F\\uC481-\\uC49B\\uC49D-\\uC4B7\\uC4B9-\\uC4D3\\uC4D5-\\uC4EF\\uC4F1-\\uC50B\\uC50D-\\uC527\\uC529-\\uC543\\uC545-\\uC55F\\uC561-\\uC57B\\uC57D-\\uC597\\uC599-\\uC5B3\\uC5B5-\\uC5CF\\uC5D1-\\uC5EB\\uC5ED-\\uC607\\uC609-\\uC623\\uC625-\\uC63F\\uC641-\\uC65B\\uC65D-\\uC677\\uC679-\\uC693\\uC695-\\uC6AF\\uC6B1-\\uC6CB\\uC6CD-\\uC6E7\\uC6E9-\\uC703\\uC705-\\uC71F\\uC721-\\uC73B\\uC73D-\\uC757\\uC759-\\uC773\\uC775-\\uC78F\\uC791-\\uC7AB\\uC7AD-\\uC7C7\\uC7C9-\\uC7E3\\uC7E5-\\uC7FF\\uC801-\\uC81B\\uC81D-\\uC837\\uC839-\\uC853\\uC855-\\uC86F\\uC871-\\uC88B\\uC88D-\\uC8A7\\uC8A9-\\uC8C3\\uC8C5-\\uC8DF\\uC8E1-\\uC8FB\\uC8FD-\\uC917\\uC919-\\uC933\\uC935-\\uC94F\\uC951-\\uC96B\\uC96D-\\uC987\\uC989-\\uC9A3\\uC9A5-\\uC9BF\\uC9C1-\\uC9DB\\uC9DD-\\uC9F7\\uC9F9-\\uCA13\\uCA15-\\uCA2F\\uCA31-\\uCA4B\\uCA4D-\\uCA67\\uCA69-\\uCA83\\uCA85-\\uCA9F\\uCAA1-\\uCABB\\uCABD-\\uCAD7\\uCAD9-\\uCAF3\\uCAF5-\\uCB0F\\uCB11-\\uCB2B\\uCB2D-\\uCB47\\uCB49-\\uCB63\\uCB65-\\uCB7F\\uCB81-\\uCB9B\\uCB9D-\\uCBB7\\uCBB9-\\uCBD3\\uCBD5-\\uCBEF\\uCBF1-\\uCC0B\\uCC0D-\\uCC27\\uCC29-\\uCC43\\uCC45-\\uCC5F\\uCC61-\\uCC7B\\uCC7D-\\uCC97\\uCC99-\\uCCB3\\uCCB5-\\uCCCF\\uCCD1-\\uCCEB\\uCCED-\\uCD07\\uCD09-\\uCD23\\uCD25-\\uCD3F\\uCD41-\\uCD5B\\uCD5D-\\uCD77\\uCD79-\\uCD93\\uCD95-\\uCDAF\\uCDB1-\\uCDCB\\uCDCD-\\uCDE7\\uCDE9-\\uCE03\\uCE05-\\uCE1F\\uCE21-\\uCE3B\\uCE3D-\\uCE57\\uCE59-\\uCE73\\uCE75-\\uCE8F\\uCE91-\\uCEAB\\uCEAD-\\uCEC7\\uCEC9-\\uCEE3\\uCEE5-\\uCEFF\\uCF01-\\uCF1B\\uCF1D-\\uCF37\\uCF39-\\uCF53\\uCF55-\\uCF6F\\uCF71-\\uCF8B\\uCF8D-\\uCFA7\\uCFA9-\\uCFC3\\uCFC5-\\uCFDF\\uCFE1-\\uCFFB\\uCFFD-\\uD017\\uD019-\\uD033\\uD035-\\uD04F\\uD051-\\uD06B\\uD06D-\\uD087\\uD089-\\uD0A3\\uD0A5-\\uD0BF\\uD0C1-\\uD0DB\\uD0DD-\\uD0F7\\uD0F9-\\uD113\\uD115-\\uD12F\\uD131-\\uD14B\\uD14D-\\uD167\\uD169-\\uD183\\uD185-\\uD19F\\uD1A1-\\uD1BB\\uD1BD-\\uD1D7\\uD1D9-\\uD1F3\\uD1F5-\\uD20F\\uD211-\\uD22B\\uD22D-\\uD247\\uD249-\\uD263\\uD265-\\uD27F\\uD281-\\uD29B\\uD29D-\\uD2B7\\uD2B9-\\uD2D3\\uD2D5-\\uD2EF\\uD2F1-\\uD30B\\uD30D-\\uD327\\uD329-\\uD343\\uD345-\\uD35F\\uD361-\\uD37B\\uD37D-\\uD397\\uD399-\\uD3B3\\uD3B5-\\uD3CF\\uD3D1-\\uD3EB\\uD3ED-\\uD407\\uD409-\\uD423\\uD425-\\uD43F\\uD441-\\uD45B\\uD45D-\\uD477\\uD479-\\uD493\\uD495-\\uD4AF\\uD4B1-\\uD4CB\\uD4CD-\\uD4E7\\uD4E9-\\uD503\\uD505-\\uD51F\\uD521-\\uD53B\\uD53D-\\uD557\\uD559-\\uD573\\uD575-\\uD58F\\uD591-\\uD5AB\\uD5AD-\\uD5C7\\uD5C9-\\uD5E3\\uD5E5-\\uD5FF\\uD601-\\uD61B\\uD61D-\\uD637\\uD639-\\uD653\\uD655-\\uD66F\\uD671-\\uD68B\\uD68D-\\uD6A7\\uD6A9-\\uD6C3\\uD6C5-\\uD6DF\\uD6E1-\\uD6FB\\uD6FD-\\uD717\\uD719-\\uD733\\uD735-\\uD74F\\uD751-\\uD76B\\uD76D-\\uD787\\uD789-\\uD7A3]$/u\nconst reExtPict = /^\\p{ExtPict}$/u\n\nconst getCodepointType = (char: string, code: number): CodepointType => {\n let type = CodepointType.Any\n if (char.search(reExtend) !== -1) {\n type |= CodepointType.Extend\n }\n if (code === 0x200d) {\n type |= CodepointType.ZWJ\n }\n if (code >= 0x1f1e6 && code <= 0x1f1ff) {\n type |= CodepointType.RI\n }\n if (char.search(rePrepend) !== -1) {\n type |= CodepointType.Prepend\n }\n if (char.search(reSpacingMark) !== -1) {\n type |= CodepointType.SpacingMark\n }\n if (char.search(reL) !== -1) {\n type |= CodepointType.L\n }\n if (char.search(reV) !== -1) {\n type |= CodepointType.V\n }\n if (char.search(reT) !== -1) {\n type |= CodepointType.T\n }\n if (char.search(reLV) !== -1) {\n type |= CodepointType.LV\n }\n if (char.search(reLVT) !== -1) {\n type |= CodepointType.LVT\n }\n if (char.search(reExtPict) !== -1) {\n type |= CodepointType.ExtPict\n }\n\n return type\n}\n\nfunction intersects(x: CodepointType, y: CodepointType) {\n return (x & y) !== 0\n}\n\nconst NonBoundaryPairs: [CodepointType, CodepointType][] = [\n // GB6\n [\n CodepointType.L,\n CodepointType.L | CodepointType.V | CodepointType.LV | CodepointType.LVT,\n ],\n // GB7\n [CodepointType.LV | CodepointType.V, CodepointType.V | CodepointType.T],\n // GB8\n [CodepointType.LVT | CodepointType.T, CodepointType.T],\n // GB9\n [CodepointType.Any, CodepointType.Extend | CodepointType.ZWJ],\n // GB9a\n [CodepointType.Any, CodepointType.SpacingMark],\n // GB9b\n [CodepointType.Prepend, CodepointType.Any],\n // GB11\n [CodepointType.ZWJ, CodepointType.ExtPict],\n // GB12 and GB13\n [CodepointType.RI, CodepointType.RI],\n]\n\nfunction isBoundaryPair(left: CodepointType, right: CodepointType) {\n return (\n NonBoundaryPairs.findIndex(\n r => intersects(left, r[0]) && intersects(right, r[1])\n ) === -1\n )\n}\n\nconst endingEmojiZWJ = /\\p{ExtPict}[\\p{Gr_Ext}\\p{EMod}]*\\u200D$/u\nconst endsWithEmojiZWJ = (str: string): boolean => {\n return str.search(endingEmojiZWJ) !== -1\n}\n\nconst endingRIs = /\\p{RI}+$/gu\nconst endsWithOddNumberOfRIs = (str: string): boolean => {\n const match = str.match(endingRIs)\n if (match === null) {\n return false\n } else {\n // A RI is represented by a surrogate pair.\n const numRIs = match[0].length / 2\n return numRIs % 2 === 1\n }\n}\n","import { Editor, Location, Node, Path, Range, Transforms } from '../../index'\nimport { TextUnit } from '../../types/types'\nimport { getDefaultInsertLocation } from '../../utils'\n\nexport interface TextDeleteOptions {\n at?: Location\n distance?: number\n unit?: TextUnit\n reverse?: boolean\n hanging?: boolean\n voids?: boolean\n}\n\nexport interface TextInsertFragmentOptions {\n at?: Location\n hanging?: boolean\n voids?: boolean\n batchDirty?: boolean\n}\n\nexport interface TextInsertTextOptions {\n at?: Location\n voids?: boolean\n}\n\nexport interface TextTransforms {\n /**\n * Delete content in the editor.\n */\n delete: (editor: Editor, options?: TextDeleteOptions) => void\n\n /**\n * Insert a fragment in the editor\n * at the specified location or (if not defined) the current selection or (if not defined) the end of the document.\n */\n insertFragment: (\n editor: Editor,\n fragment: Node[],\n options?: TextInsertFragmentOptions\n ) => void\n\n /**\n * Insert a string of text in the editor\n * at the specified location or (if not defined) the current selection or (if not defined) the end of the document.\n */\n insertText: (\n editor: Editor,\n text: string,\n options?: TextInsertTextOptions\n ) => void\n}\n\n// eslint-disable-next-line no-redeclare\nexport const TextTransforms: TextTransforms = {\n delete(editor, options) {\n editor.delete(options)\n },\n insertFragment(editor, fragment, options) {\n editor.insertFragment(fragment, options)\n },\n insertText(\n editor: Editor,\n text: string,\n options: TextInsertTextOptions = {}\n ): void {\n Editor.withoutNormalizing(editor, () => {\n const { voids = false } = options\n let { at = getDefaultInsertLocation(editor) } = options\n\n if (Path.isPath(at)) {\n at = Editor.range(editor, at)\n }\n\n if (Range.isRange(at)) {\n if (Range.isCollapsed(at)) {\n at = at.anchor\n } else {\n const end = Range.end(at)\n if (!voids && Editor.void(editor, { at: end })) {\n return\n }\n const start = Range.start(at)\n const startRef = Editor.pointRef(editor, start)\n const endRef = Editor.pointRef(editor, end)\n Transforms.delete(editor, { at, voids })\n const startPoint = startRef.unref()\n const endPoint = endRef.unref()\n\n at = startPoint || endPoint!\n Transforms.setSelection(editor, { anchor: at, focus: at })\n }\n }\n\n if (\n (!voids && Editor.void(editor, { at })) ||\n Editor.elementReadOnly(editor, { at })\n ) {\n return\n }\n\n const { path, offset } = at\n if (text.length > 0)\n editor.apply({ type: 'insert_text', path, offset, text })\n })\n },\n}\n","import { GeneralTransforms } from './general'\nimport { NodeTransforms } from './node'\nimport { SelectionTransforms } from './selection'\nimport { TextTransforms } from './text'\n\nexport const Transforms: GeneralTransforms &\n NodeTransforms &\n SelectionTransforms &\n TextTransforms = {\n ...GeneralTransforms,\n ...NodeTransforms,\n ...SelectionTransforms,\n ...TextTransforms,\n}\n","// perf\n\nimport { Editor } from '../interfaces/editor'\n\nconst BATCHING_DIRTY_PATHS: WeakMap<Editor, boolean> = new WeakMap()\n\nexport const isBatchingDirtyPaths = (editor: Editor) => {\n return BATCHING_DIRTY_PATHS.get(editor) || false\n}\n\nexport const batchDirtyPaths = (\n editor: Editor,\n fn: () => void,\n update: () => void\n) => {\n const value = BATCHING_DIRTY_PATHS.get(editor) || false\n BATCHING_DIRTY_PATHS.set(editor, true)\n try {\n fn()\n update()\n } finally {\n BATCHING_DIRTY_PATHS.set(editor, value)\n }\n}\n","import { DIRTY_PATH_KEYS, DIRTY_PATHS } from '../utils/weak-maps'\nimport { Path } from '../interfaces/path'\nimport { Editor } from '../interfaces/editor'\n\n/**\n * update editor dirty paths\n *\n * @param newDirtyPaths: Path[]; new dirty paths\n * @param transform: (p: Path) => Path | null; how to transform existing dirty paths\n */\nexport function updateDirtyPaths(\n editor: Editor,\n newDirtyPaths: Path[],\n transform?: (p: Path) => Path | null\n) {\n const oldDirtyPaths = DIRTY_PATHS.get(editor) || []\n const oldDirtyPathKeys = DIRTY_PATH_KEYS.get(editor) || new Set()\n let dirtyPaths: Path[]\n let dirtyPathKeys: Set<string>\n\n const add = (path: Path | null) => {\n if (path) {\n const key = path.join(',')\n\n if (!dirtyPathKeys.has(key)) {\n dirtyPathKeys.add(key)\n dirtyPaths.push(path)\n }\n }\n }\n\n if (transform) {\n dirtyPaths = []\n dirtyPathKeys = new Set()\n for (const path of oldDirtyPaths) {\n const newPath = transform(path)\n add(newPath)\n }\n } else {\n dirtyPaths = oldDirtyPaths\n dirtyPathKeys = oldDirtyPathKeys\n }\n\n for (const path of newDirtyPaths) {\n add(path)\n }\n\n DIRTY_PATHS.set(editor, dirtyPaths)\n DIRTY_PATH_KEYS.set(editor, dirtyPathKeys)\n}\n","import { PathRef } from '../interfaces/path-ref'\nimport { PointRef } from '../interfaces/point-ref'\nimport { RangeRef } from '../interfaces/range-ref'\nimport { FLUSHING } from '../utils/weak-maps'\nimport { Path } from '../interfaces/path'\nimport { Transforms } from '../interfaces/transforms'\nimport { WithEditorFirstArg } from '../utils/types'\nimport { Editor } from '../interfaces/editor'\nimport { isBatchingDirtyPaths } from './batch-dirty-paths'\nimport { updateDirtyPaths } from './update-dirty-paths'\n\nexport const apply: WithEditorFirstArg<Editor['apply']> = (editor, op) => {\n for (const ref of Editor.pathRefs(editor)) {\n PathRef.transform(ref, op)\n }\n\n for (const ref of Editor.pointRefs(editor)) {\n PointRef.transform(ref, op)\n }\n\n for (const ref of Editor.rangeRefs(editor)) {\n RangeRef.transform(ref, op)\n }\n\n // update dirty paths\n if (!isBatchingDirtyPaths(editor)) {\n const transform = Path.operationCanTransformPath(op)\n ? (p: Path) => Path.transform(p, op)\n : undefined\n updateDirtyPaths(editor, editor.getDirtyPaths(op), transform)\n }\n\n Transforms.transform(editor, op)\n editor.operations.push(op)\n Editor.normalize(editor, {\n operation: op,\n })\n\n // Clear any formats applied to the cursor if the selection changes.\n if (op.type === 'set_selection') {\n editor.marks = null\n }\n\n if (!FLUSHING.get(editor)) {\n FLUSHING.set(editor, true)\n\n Promise.resolve().then(() => {\n FLUSHING.set(editor, false)\n editor.onChange({ operation: op })\n editor.operations = []\n })\n }\n}\n","import { WithEditorFirstArg } from '../utils/types'\nimport { Path } from '../interfaces/path'\nimport { Text } from '../interfaces/text'\nimport { Node } from '../interfaces/node'\nimport { Editor } from '../interfaces/editor'\n\n/**\n * Get the \"dirty\" paths generated from an operation.\n */\nexport const getDirtyPaths: WithEditorFirstArg<Editor['getDirtyPaths']> = (\n editor,\n op\n) => {\n switch (op.type) {\n case 'insert_text':\n case 'remove_text':\n case 'set_node': {\n const { path } = op\n return Path.levels(path)\n }\n\n case 'insert_node': {\n const { node, path } = op\n const levels = Path.levels(path)\n const descendants = Text.isText(node)\n ? []\n : Array.from(Node.nodes(node), ([, p]) => path.concat(p))\n\n return [...levels, ...descendants]\n }\n\n case 'merge_node': {\n const { path } = op\n const ancestors = Path.ancestors(path)\n const previousPath = Path.previous(path)\n return [...ancestors, previousPath]\n }\n\n case 'move_node': {\n const { path, newPath } = op\n\n if (Path.equals(path, newPath)) {\n return []\n }\n\n const oldAncestors: Path[] = []\n const newAncestors: Path[] = []\n\n for (const ancestor of Path.ancestors(path)) {\n const p = Path.transform(ancestor, op)\n oldAncestors.push(p!)\n }\n\n for (const ancestor of Path.ancestors(newPath)) {\n const p = Path.transform(ancestor, op)\n newAncestors.push(p!)\n }\n\n const newParent = newAncestors[newAncestors.length - 1]\n const newIndex = newPath[newPath.length - 1]\n const resultPath = newParent.concat(newIndex)\n\n return [...oldAncestors, ...newAncestors, resultPath]\n }\n\n case 'remove_node': {\n const { path } = op\n const ancestors = Path.ancestors(path)\n return [...ancestors]\n }\n\n case 'split_node': {\n const { path } = op\n const levels = Path.levels(path)\n const nextPath = Path.next(path)\n return [...levels, nextPath]\n }\n\n default: {\n return []\n }\n }\n}\n","import { Editor, Node } from '../interfaces'\nimport { WithEditorFirstArg } from '../utils'\n\nexport const getFragment: WithEditorFirstArg<\n Editor['getFragment']\n> = editor => {\n const { selection } = editor\n\n if (selection) {\n return Node.fragment(editor, selection)\n }\n return []\n}\n","import { WithEditorFirstArg } from '../utils/types'\nimport { Text } from '../interfaces/text'\nimport { Element } from '../interfaces/element'\nimport { Transforms } from '../interfaces/transforms'\nimport { Descendant, Node } from '../interfaces/node'\nimport { Editor } from '../interfaces/editor'\n\nexport const normalizeNode: WithEditorFirstArg<Editor['normalizeNode']> = (\n editor,\n entry\n) => {\n const [node, path] = entry\n\n // There are no core normalizations for text nodes.\n if (Text.isText(node)) {\n return\n }\n\n // Ensure that block and inline nodes have at least one text child.\n if (Element.isElement(node) && node.children.length === 0) {\n const child = { text: '' }\n Transforms.insertNodes(editor, child, {\n at: path.concat(0),\n voids: true,\n })\n return\n }\n\n // Determine whether the node should have block or inline children.\n const shouldHaveInlines = Editor.isEditor(node)\n ? false\n : Element.isElement(node) &&\n (editor.isInline(node) ||\n node.children.length === 0 ||\n Text.isText(node.children[0]) ||\n editor.isInline(node.children[0]))\n\n // Since we'll be applying operations while iterating, keep track of an\n // index that accounts for any added/removed nodes.\n let n = 0\n\n for (let i = 0; i < node.children.length; i++, n++) {\n const currentNode = Node.get(editor, path)\n if (Text.isText(currentNode)) continue\n const child = currentNode.children[n] as Descendant\n const prev = currentNode.children[n - 1] as Descendant\n const isLast = i === node.children.length - 1\n const isInlineOrText =\n Text.isText(child) || (Element.isElement(child) && editor.isInline(child))\n\n // Only allow block nodes in the top-level children and parent blocks\n // that only contain block nodes. Similarly, only allow inline nodes in\n // other inline nodes, or parent blocks that only contain inlines and\n // text.\n if (isInlineOrText !== shouldHaveInlines) {\n if (isInlineOrText) {\n Transforms.removeNodes(editor, { at: path.concat(n), voids: true })\n } else {\n Transforms.unwrapNodes(editor, { at: path.concat(n), voids: true })\n }\n n--\n } else if (Element.isElement(child)) {\n // Ensure that inline nodes are surrounded by text nodes.\n if (editor.isInline(child)) {\n if (prev == null || !Text.isText(prev)) {\n const newChild = { text: '' }\n Transforms.insertNodes(editor, newChild, {\n at: path.concat(n),\n voids: true,\n })\n n++\n } else if (isLast) {\n const newChild = { text: '' }\n Transforms.insertNodes(editor, newChild, {\n at: path.concat(n + 1),\n voids: true,\n })\n n++\n }\n }\n } else {\n // If the child is not a text node, and doesn't have a `children` field,\n // then we have an invalid node that will upset slate.\n //\n // eg: `{ type: 'some_node' }`.\n //\n // To prevent slate from breaking, we can add the `children` field,\n // and now that it is valid, we can to many more operations easily,\n // such as extend normalizers to fix erronous structure.\n if (!Text.isText(child) && !('children' in child)) {\n const elementChild = child as Element\n elementChild.children = []\n }\n\n // Merge adjacent text nodes that are empty or match.\n if (prev != null && Text.isText(prev)) {\n if (Text.equals(child, prev, { loose: true })) {\n Transforms.mergeNodes(editor, { at: path.concat(n), voids: true })\n n--\n } else if (prev.text === '') {\n Transforms.removeNodes(editor, {\n at: path.concat(n - 1),\n voids: true,\n })\n n--\n } else if (child.text === '') {\n Transforms.removeNodes(editor, {\n at: path.concat(n),\n voids: true,\n })\n n--\n }\n }\n }\n }\n}\n","import { WithEditorFirstArg } from '../utils/types'\nimport { Editor } from '../interfaces/editor'\n\nexport const shouldNormalize: WithEditorFirstArg<Editor['shouldNormalize']> = (\n editor,\n { iteration, initialDirtyPathsLength }\n) => {\n const maxIterations = initialDirtyPathsLength * 42 // HACK: better way?\n\n if (iteration > maxIterations) {\n throw new Error(\n `Could not completely normalize the editor after ${maxIterations} iterations! This is usually due to incorrect normalization logic that leaves a node in an invalid state.`\n )\n }\n\n return true\n}\n","import { Editor, EditorInterface } from '../interfaces/editor'\nimport { Text } from '../interfaces/text'\nimport { Range } from '../interfaces/range'\nimport { Path } from '../interfaces/path'\n\nexport const above: EditorInterface['above'] = (editor, options = {}) => {\n const {\n voids = false,\n mode = 'lowest',\n at = editor.selection,\n match,\n } = options\n\n if (!at) {\n return\n }\n\n const path = Editor.path(editor, at)\n const reverse = mode === 'lowest'\n\n for (const [n, p] of Editor.levels(editor, {\n at: path,\n voids,\n match,\n reverse,\n })) {\n if (Text.isText(n)) continue\n if (Range.isRange(at)) {\n if (\n Path.isAncestor(p, at.anchor.path) &&\n Path.isAncestor(p, at.focus.path)\n ) {\n return [n, p]\n }\n } else {\n if (!Path.equals(path, p)) {\n return [n, p]\n }\n }\n }\n}\n","import { Node } from '../interfaces/node'\nimport { Path } from '../interfaces/path'\nimport { Text } from '../interfaces/text'\nimport { Range } from '../interfaces/range'\nimport { Transforms } from '../interfaces/transforms'\nimport { FLUSHING } from '../utils/weak-maps'\nimport { Editor, EditorInterface } from '../interfaces/editor'\n\nexport const addMark: EditorInterface['addMark'] = (editor, key, value) => {\n const { selection } = editor\n\n if (selection) {\n const match = (node: Node, path: Path) => {\n if (!Text.isText(node)) {\n return false // marks can only be applied to text\n }\n const [parentNode, parentPath] = Editor.parent(editor, path)\n return !editor.isVoid(parentNode) || editor.markableVoid(parentNode)\n }\n const expandedSelection = Range.isExpanded(selection)\n let markAcceptingVoidSelected = false\n if (!expandedSelection) {\n const [selectedNode, selectedPath] = Editor.node(editor, selection)\n if (selectedNode && match(selectedNode, selectedPath)) {\n const [parentNode] = Editor.parent(editor, selectedPath)\n markAcceptingVoidSelected =\n parentNode && editor.markableVoid(parentNode)\n }\n }\n if (expandedSelection || markAcceptingVoidSelected) {\n Transforms.setNodes(\n editor,\n { [key]: value },\n {\n match,\n split: true,\n voids: true,\n }\n )\n } else {\n const marks = {\n ...(Editor.marks(editor) || {}),\n [key]: value,\n }\n\n editor.marks = marks\n if (!FLUSHING.get(editor)) {\n editor.onChange()\n }\n }\n }\n}\n","import { Editor, EditorInterface } from '../interfaces/editor'\n\nexport const after: EditorInterface['after'] = (editor, at, options = {}) => {\n const anchor = Editor.point(editor, at, { edge: 'end' })\n const focus = Editor.end(editor, [])\n const range = { anchor, focus }\n const { distance = 1 } = options\n let d = 0\n let target\n\n for (const p of Editor.positions(editor, {\n ...options,\n at: range,\n })) {\n if (d > distance) {\n break\n }\n\n if (d !== 0) {\n target = p\n }\n\n d++\n }\n\n return target\n}\n","import { Editor, EditorInterface } from '../interfaces/editor'\n\nexport const before: EditorInterface['before'] = (editor, at, options = {}) => {\n const anchor = Editor.start(editor, [])\n const focus = Editor.point(editor, at, { edge: 'start' })\n const range = { anchor, focus }\n const { distance = 1 } = options\n let d = 0\n let target\n\n for (const p of Editor.positions(editor, {\n ...options,\n at: range,\n reverse: true,\n })) {\n if (d > distance) {\n break\n }\n\n if (d !== 0) {\n target = p\n }\n\n d++\n }\n\n return target\n}\n","import { Editor } from '../interfaces/editor'\nimport { Transforms } from '../interfaces/transforms'\nimport { Range } from '../interfaces/range'\nimport { WithEditorFirstArg } from '../utils/types'\n\nexport const deleteBackward: WithEditorFirstArg<Editor['deleteBackward']> = (\n editor,\n unit\n) => {\n const { selection } = editor\n\n if (selection && Range.isCollapsed(selection)) {\n Transforms.delete(editor, { unit, reverse: true })\n }\n}\n","import { Editor } from '../interfaces/editor'\nimport { Transforms } from '../interfaces/transforms'\nimport { Range } from '../interfaces/range'\nimport { WithEditorFirstArg } from '../utils/types'\n\nexport const deleteForward: WithEditorFirstArg<Editor['deleteForward']> = (\n editor,\n unit\n) => {\n const { selection } = editor\n\n if (selection && Range.isCollapsed(selection)) {\n Transforms.delete(editor, { unit })\n }\n}\n","import { Range } from '../interfaces/range'\nimport { Transforms } from '../interfaces/transforms'\nimport { EditorInterface } from '../interfaces/editor'\n\nexport const deleteFragment: EditorInterface['deleteFragment'] = (\n editor,\n { direction = 'forward' } = {}\n) => {\n const { selection } = editor\n\n if (selection && Range.isExpanded(selection)) {\n Transforms.delete(editor, { reverse: direction === 'backward' })\n }\n}\n","import { Editor, EditorInterface } from '../interfaces/editor'\n\nexport const edges: EditorInterface['edges'] = (editor, at) => {\n return [Editor.start(editor, at), Editor.end(editor, at)]\n}\n","import { Element } from '../interfaces/element'\nimport { Editor, EditorInterface } from '../interfaces/editor'\n\nexport const elementReadOnly: EditorInterface['elementReadOnly'] = (\n editor,\n options = {}\n) => {\n return Editor.above(editor, {\n ...options,\n match: n => Element.isElement(n) && Editor.isElementReadOnly(editor, n),\n })\n}\n","import { Editor, EditorInterface } from '../interfaces/editor'\n\nexport const end: EditorInterface['end'] = (editor, at) => {\n return Editor.point(editor, at, { edge: 'end' })\n}\n","import { Editor, EditorInterface } from '../interfaces/editor'\n\nexport const first: EditorInterface['first'] = (editor, at) => {\n const path = Editor.path(editor, at, { edge: 'start' })\n return Editor.node(editor, path)\n}\n","import { Editor, EditorInterface } from '../interfaces/editor'\nimport { Node } from '../interfaces/node'\n\nexport const fragment: EditorInterface['fragment'] = (editor, at) => {\n const range = Editor.range(editor, at)\n return Node.fragment(editor, range)\n}\n","import { Editor, EditorInterface } from '../interfaces/editor'\nimport { Element } from '../interfaces/element'\n\nexport const getVoid: EditorInterface['void'] = (editor, options = {}) => {\n return Editor.above(editor, {\n ...options,\n match: n => Element.isElement(n) && Editor.isVoid(editor, n),\n })\n}\n","import { Editor, EditorInterface } from '../interfaces/editor'\nimport { Element } from '../interfaces/element'\n\nexport const hasBlocks: EditorInterface['hasBlocks'] = (editor, element) => {\n return element.children.some(\n n => Element.isElement(n) && Editor.isBlock(editor, n)\n )\n}\n","import { Editor, EditorInterface } from '../interfaces/editor'\nimport { Text } from '../interfaces/text'\n\nexport const hasInlines: EditorInterface['hasInlines'] = (editor, element) => {\n return element.children.some(\n n => Text.isText(n) || Editor.isInline(editor, n)\n )\n}\n","import { EditorInterface } from '../interfaces/editor'\nimport { Node } from '../interfaces/node'\n\nexport const hasPath: EditorInterface['hasPath'] = (editor, path) => {\n return Node.has(editor, path)\n}\n","import { EditorInterface } from '../interfaces/editor'\nimport { Text } from '../interfaces/text'\n\nexport const hasTexts: EditorInterface['hasTexts'] = (editor, element) => {\n return element.children.every(n => Text.isText(n))\n}\n","import { Transforms } from '../interfaces/transforms'\nimport { EditorInterface } from '../interfaces/editor'\n\nexport const insertBreak: EditorInterface['insertBreak'] = editor => {\n Transforms.splitNodes(editor, { always: true })\n}\n","import { Transforms } from '../interfaces/transforms'\nimport { EditorInterface } from '../interfaces/editor'\n\nexport const insertNode: EditorInterface['insertNode'] = (\n editor,\n node,\n options\n) => {\n Transforms.insertNodes(editor, node, options)\n}\n","import { Transforms } from '../interfaces/transforms'\nimport { EditorInterface } from '../interfaces/editor'\n\nexport const insertSoftBreak: EditorInterface['insertSoftBreak'] = editor => {\n Transforms.splitNodes(editor, { always: true })\n}\n","import { Transforms } from '../interfaces/transforms'\nimport { EditorInterface } from '../interfaces/editor'\n\nexport const insertText: EditorInterface['insertText'] = (\n editor,\n text,\n options = {}\n) => {\n const { selection, marks } = editor\n\n if (selection) {\n if (marks) {\n const node = { text, ...marks }\n Transforms.insertNodes(editor, node, {\n at: options.at,\n voids: options.voids,\n })\n } else {\n Transforms.insertText(editor, text, options)\n }\n\n editor.marks = null\n }\n}\n","import { EditorInterface } from '../interfaces/editor'\n\nexport const isBlock: EditorInterface['isBlock'] = (editor, value) => {\n return !editor.isInline(value)\n}\n","import { Editor, EditorInterface } from '../interfaces/editor'\n\nexport const isEdge: EditorInterface['isEdge'] = (editor, point, at) => {\n return Editor.isStart(editor, point, at) || Editor.isEnd(editor, point, at)\n}\n","import { EditorInterface } from '../interfaces/editor'\nimport { Text } from '../interfaces/text'\n\nexport const isEmpty: EditorInterface['isEmpty'] = (editor, element) => {\n const { children } = element\n const [first] = children\n return (\n children.length === 0 ||\n (children.length === 1 &&\n Text.isText(first) &&\n first.text === '' &&\n !editor.isVoid(element))\n )\n}\n","import { Editor, EditorInterface } from '../interfaces/editor'\nimport { Point } from '../interfaces/point'\n\nexport const isEnd: EditorInterface['isEnd'] = (editor, point, at) => {\n const end = Editor.end(editor, at)\n return Point.equals(point, end)\n}\n","import { EditorInterface } from '../interfaces/editor'\nimport { NORMALIZING } from '../utils/weak-maps'\n\nexport const isNormalizing: EditorInterface['isNormalizing'] = editor => {\n const isNormalizing = NORMALIZING.get(editor)\n return isNormalizing === undefined ? true : isNormalizing\n}\n","import { Editor, EditorInterface } from '../interfaces/editor'\nimport { Point } from '../interfaces/point'\n\nexport const isStart: EditorInterface['isStart'] = (editor, point, at) => {\n // PERF: If the offset isn't `0` we know it's not the start.\n if (point.offset !== 0) {\n return false\n }\n\n const start = Editor.start(editor, at)\n return Point.equals(point, start)\n}\n","import { Editor, EditorInterface } from '../interfaces/editor'\n\nexport const last: EditorInterface['last'] = (editor, at) => {\n const path = Editor.path(editor, at, { edge: 'end' })\n return Editor.node(editor, path)\n}\n","import { Editor, EditorInterface } from '../interfaces/editor'\nimport { Node } from '../interfaces/node'\n\nexport const leaf: EditorInterface['leaf'] = (editor, at, options = {}) => {\n const path = Editor.path(editor, at, options)\n const node = Node.leaf(editor, path)\n return [node, path]\n}\n","import { Node, NodeEntry } from '../interfaces/node'\nimport { Editor, EditorLevelsOptions } from '../interfaces/editor'\nimport { Element } from '../interfaces/element'\n\nexport function* levels<T extends Node>(\n editor: Editor,\n options: EditorLevelsOptions<T> = {}\n): Generator<NodeEntry<T>, void, undefined> {\n const { at = editor.selection, reverse = false, voids = false } = options\n let { match } = options\n\n if (match == null) {\n match = () => true\n }\n\n if (!at) {\n return\n }\n\n const levels: NodeEntry<T>[] = []\n const path = Editor.path(editor, at)\n\n for (const [n, p] of Node.levels(editor, path)) {\n if (!match(n, p)) {\n continue\n }\n\n levels.push([n, p] as NodeEntry<T>)\n\n if (!voids && Element.isElement(n) && Editor.isVoid(editor, n)) {\n break\n }\n }\n\n if (reverse) {\n levels.reverse()\n }\n\n yield* levels\n}\n","import { Editor, EditorInterface } from '../interfaces/editor'\nimport { NodeEntry } from '../interfaces/node'\nimport { Range } from '../interfaces/range'\nimport { Path } from '../interfaces/path'\nimport { Text } from '../interfaces/text'\nimport { Element } from '../interfaces/element'\nimport { Point } from '../interfaces'\n\nexport const marks: EditorInterface['marks'] = (editor, options = {}) => {\n const { marks, selection } = editor\n\n if (!selection) {\n return null\n }\n let { anchor, focus } = selection\n\n if (marks) {\n return marks\n }\n\n if (Range.isExpanded(selection)) {\n const isBackward = Range.isBackward(selection)\n if (isBackward) {\n ;[focus, anchor] = [anchor, focus]\n }\n /**\n * COMPAT: Make sure hanging ranges (caused by double clicking in Firefox)\n * do not adversely affect the returned marks.\n */\n const isEnd = Editor.isEnd(editor, anchor, anchor.path)\n if (isEnd) {\n const after = Editor.after(editor, anchor as Point)\n if (after) {\n anchor = after\n }\n }\n\n const [match] = Editor.nodes(editor, {\n match: Text.isText,\n at: {\n anchor,\n focus,\n },\n })\n\n if (match) {\n const [node] = match as NodeEntry<Text>\n const { text, ...rest } = node\n return rest\n } else {\n return {}\n }\n }\n\n const { path } = anchor\n\n let [node] = Editor.leaf(editor, path)\n\n if (anchor.offset === 0) {\n const prev = Editor.previous(editor, { at: path, match: Text.isText })\n const markedVoid = Editor.above(editor, {\n match: n =>\n Element.isElement(n) &&\n Editor.isVoid(editor, n) &&\n editor.markableVoid(n),\n })\n if (!markedVoid) {\n const block = Editor.above(editor, {\n match: n => Element.isElement(n) && Editor.isBlock(editor, n),\n })\n\n if (prev && block) {\n const [prevNode, prevPath] = prev\n const [, blockPath] = block\n\n if (Path.isAncestor(blockPath, prevPath)) {\n node = prevNode as Text\n }\n }\n }\n }\n\n const { text, ...rest } = node\n return rest\n}\n","import { Editor, EditorInterface } from '../interfaces/editor'\nimport { Span } from '../interfaces/location'\nimport { Path } from '../interfaces/path'\n\nexport const next: EditorInterface['next'] = (editor, options = {}) => {\n const { mode = 'lowest', voids = false } = options\n let { match, at = editor.selection } = options\n\n if (!at) {\n return\n }\n\n const pointAfterLocation = Editor.after(editor, at, { voids })\n\n if (!pointAfterLocation) return\n\n const [, to] = Editor.last(editor, [])\n\n const span: Span = [pointAfterLocation.path, to]\n\n if (Path.isPath(at) && at.length === 0) {\n throw new Error(`Cannot get the next node from the root node!`)\n }\n\n if (match == null) {\n if (Path.isPath(at)) {\n const [parent] = Editor.parent(editor, at)\n match = n => parent.children.includes(n)\n } else {\n match = () => true\n }\n }\n\n const [next] = Editor.nodes(editor, { at: span, match, mode, voids })\n return next\n}\n","import { Editor, EditorInterface } from '../interfaces/editor'\nimport { Node } from '../interfaces/node'\n\nexport const node: EditorInterface['node'] = (editor, at, options = {}) => {\n const path = Editor.path(editor, at, options)\n const node = Node.get(editor, path)\n return [node, path]\n}\n","import { Node, NodeEntry } from '../interfaces/node'\nimport { Editor, EditorNodesOptions } from '../interfaces/editor'\nimport { Span } from '../interfaces/location'\nimport { Element } from '../interfaces/element'\nimport { Path } from '../interfaces/path'\nimport { Text } from '../interfaces/text'\n\nexport function* nodes<T extends Node>(\n editor: Editor,\n options: EditorNodesOptions<T> = {}\n): Generator<NodeEntry<T>, void, undefined> {\n const {\n at = editor.selection,\n mode = 'all',\n universal = false,\n reverse = false,\n voids = false,\n pass,\n ignoreNonSelectable = false,\n } = options\n let { match } = options\n\n if (!match) {\n match = () => true\n }\n\n if (!at) {\n return\n }\n\n let from\n let to\n\n if (Span.isSpan(at)) {\n from = at[0]\n to = at[1]\n } else {\n const first = Editor.path(editor, at, { edge: 'start' })\n const last = Editor.path(editor, at, { edge: 'end' })\n from = reverse ? last : first\n to = reverse ? first : last\n }\n\n const nodeEntries = Node.nodes(editor, {\n reverse,\n from,\n to,\n pass: ([node, path]) => {\n if (pass && pass([node, path])) return true\n if (!Element.isElement(node)) return false\n if (\n !voids &&\n (Editor.isVoid(editor, node) || Editor.isElementReadOnly(editor, node))\n )\n return true\n if (ignoreNonSelectable && !Editor.isSelectable(editor, node)) return true\n return false\n },\n })\n\n const matches: NodeEntry<T>[] = []\n let hit: NodeEntry<T> | undefined\n\n for (const [node, path] of nodeEntries) {\n if (\n ignoreNonSelectable &&\n Element.isElement(node) &&\n !Editor.isSelectable(editor, node)\n ) {\n continue\n }\n\n const isLower = hit && Path.compare(path, hit[1]) === 0\n\n // In highest mode any node lower than the last hit is not a match.\n if (mode === 'highest' && isLower) {\n continue\n }\n\n if (!match(node, path)) {\n // If we've arrived at a leaf text node that is not lower than the last\n // hit, then we've found a branch that doesn't include a match, which\n // means the match is not universal.\n if (universal && !isLower && Text.isText(node)) {\n return\n } else {\n continue\n }\n }\n\n // If there's a match and it's lower than the last, update the hit.\n if (mode === 'lowest' && isLower) {\n hit = [node, path] as NodeEntry<T>\n continue\n }\n\n // In lowest mode we emit the last hit, once it's guaranteed lowest.\n const emit: NodeEntry<T> | undefined =\n mode === 'lowest' ? hit : ([node, path] as NodeEntry<T>)\n\n if (emit) {\n if (universal) {\n matches.push(emit)\n } else {\n yield emit\n }\n }\n\n hit = [node, path] as NodeEntry<T>\n }\n\n // Since lowest is always emitting one behind, catch up at the end.\n if (mode === 'lowest' && hit) {\n if (universal) {\n matches.push(hit)\n } else {\n yield hit\n }\n }\n\n // Universal defers to ensure that the match occurs in every branch, so we\n // yield all of the matches after iterating.\n if (universal) {\n yield* matches\n }\n}\n","import { Editor, EditorInterface } from '../interfaces/editor'\nimport { DIRTY_PATH_KEYS, DIRTY_PATHS } from '../utils/weak-maps'\nimport { Path } from '../interfaces/path'\nimport { Node } from '../interfaces/node'\nimport { Element } from '../interfaces/element'\n\nexport const normalize: EditorInterface['normalize'] = (\n editor,\n options = {}\n) => {\n const { force = false, operation } = options\n const getDirtyPaths = (editor: Editor) => {\n return DIRTY_PATHS.get(editor) || []\n }\n\n const getDirtyPathKeys = (editor: Editor) => {\n return DIRTY_PATH_KEYS.get(editor) || new Set()\n }\n\n const popDirtyPath = (editor: Editor): Path => {\n const path = getDirtyPaths(editor).pop()!\n const key = path.join(',')\n getDirtyPathKeys(editor).delete(key)\n return path\n }\n\n if (!Editor.isNormalizing(editor)) {\n return\n }\n\n if (force) {\n const allPaths = Array.from(Node.nodes(editor), ([, p]) => p)\n const allPathKeys = new Set(allPaths.map(p => p.join(',')))\n DIRTY_PATHS.set(editor, allPaths)\n DIRTY_PATH_KEYS.set(editor, allPathKeys)\n }\n\n if (getDirtyPaths(editor).length === 0) {\n return\n }\n\n Editor.withoutNormalizing(editor, () => {\n /*\n Fix dirty elements with no children.\n editor.normalizeNode() does fix this, but some normalization fixes also require it to work.\n Running an initial pass avoids the catch-22 race condition.\n */\n for (const dirtyPath of getDirtyPaths(editor)) {\n if (Node.has(editor, dirtyPath)) {\n const entry = Editor.node(editor, dirtyPath)\n const [node, _] = entry\n\n /*\n The default normalizer inserts an empty text node in this scenario, but it can be customised.\n So there is some risk here.\n\n As long as the normalizer only inserts child nodes for this case it is safe to do in any order;\n by definition adding children to an empty node can't cause other paths to change.\n */\n if (Element.isElement(node) && node.children.length === 0) {\n editor.normalizeNode(entry, { operation })\n }\n }\n }\n\n let dirtyPaths = getDirtyPaths(editor)\n const initialDirtyPathsLength = dirtyPaths.length\n let iteration = 0\n\n while (dirtyPaths.length !== 0) {\n if (\n !editor.shouldNormalize({\n dirtyPaths,\n iteration,\n initialDirtyPathsLength,\n operation,\n })\n ) {\n return\n }\n\n const dirtyPath = popDirtyPath(editor)\n\n // If the node doesn't exist in the tree, it does not need to be normalized.\n if (Node.has(editor, dirtyPath)) {\n const entry = Editor.node(editor, dirtyPath)\n editor.normalizeNode(entry, { operation })\n }\n iteration++\n dirtyPaths = getDirtyPaths(editor)\n }\n })\n}\n","import { Editor, EditorInterface } from '../interfaces/editor'\nimport { Path } from '../interfaces/path'\nimport { Ancestor, NodeEntry } from '../interfaces/node'\n\nexport const parent: EditorInterface['parent'] = (editor, at, options = {}) => {\n const path = Editor.path(editor, at, options)\n const parentPath = Path.parent(path)\n const entry = Editor.node(editor, parentPath)\n return entry as NodeEntry<Ancestor>\n}\n","import { Editor, EditorInterface } from '../interfaces/editor'\nimport { PathRef } from '../interfaces/path-ref'\n\nexport const pathRef: EditorInterface['pathRef'] = (\n editor,\n path,\n options = {}\n) => {\n const { affinity = 'forward' } = options\n const ref: PathRef = {\n current: path,\n affinity,\n unref() {\n const { current } = ref\n const pathRefs = Editor.pathRefs(editor)\n pathRefs.delete(ref)\n ref.current = null\n return current\n },\n }\n\n const refs = Editor.pathRefs(editor)\n refs.add(ref)\n return ref\n}\n","import { EditorInterface } from '../interfaces/editor'\nimport { PATH_REFS } from '../utils/weak-maps'\n\nexport const pathRefs: EditorInterface['pathRefs'] = editor => {\n let refs = PATH_REFS.get(editor)\n\n if (!refs) {\n refs = new Set()\n PATH_REFS.set(editor, refs)\n }\n\n return refs\n}\n","import { EditorInterface, Node, Path, Point, Range } from '../interfaces'\n\nexport const path: EditorInterface['path'] = (editor, at, options = {}) => {\n const { depth, edge } = options\n\n if (Path.isPath(at)) {\n if (edge === 'start') {\n const [, firstPath] = Node.first(editor, at)\n at = firstPath\n } else if (edge === 'end') {\n const [, lastPath] = Node.last(editor, at)\n at = lastPath\n }\n }\n\n if (Range.isRange(at)) {\n if (edge === 'start') {\n at = Range.start(at)\n } else if (edge === 'end') {\n at = Range.end(at)\n } else {\n at = Path.common(at.anchor.path, at.focus.path)\n }\n }\n\n if (Point.isPoint(at)) {\n at = at.path\n }\n\n if (depth != null) {\n at = at.slice(0, depth)\n }\n\n return at\n}\n","import { Editor, EditorInterface } from '../interfaces/editor'\nimport { PointRef } from '../interfaces/point-ref'\n\nexport const pointRef: EditorInterface['pointRef'] = (\n editor,\n point,\n options = {}\n) => {\n const { affinity = 'forward' } = options\n const ref: PointRef = {\n current: point,\n affinity,\n unref() {\n const { current } = ref\n const pointRefs = Editor.pointRefs(editor)\n pointRefs.delete(ref)\n ref.current = null\n return current\n },\n }\n\n const refs = Editor.pointRefs(editor)\n refs.add(ref)\n return ref\n}\n","import { EditorInterface } from '../interfaces/editor'\nimport { POINT_REFS } from '../utils/weak-maps'\n\nexport const pointRefs: EditorInterface['pointRefs'] = editor => {\n let refs = POINT_REFS.get(editor)\n\n if (!refs) {\n refs = new Set()\n POINT_REFS.set(editor, refs)\n }\n\n return refs\n}\n","import { EditorInterface } from '../interfaces/editor'\nimport { Path } from '../interfaces/path'\nimport { Node } from '../interfaces/node'\nimport { Text } from '../interfaces/text'\nimport { Range } from '../interfaces/range'\n\nexport const point: EditorInterface['point'] = (editor, at, options = {}) => {\n const { edge = 'start' } = options\n\n if (Path.isPath(at)) {\n let path\n\n if (edge === 'end') {\n const [, lastPath] = Node.last(editor, at)\n path = lastPath\n } else {\n const [, firstPath] = Node.first(editor, at)\n path = firstPath\n }\n\n const node = Node.get(editor, path)\n\n if (!Text.isText(node)) {\n throw new Error(\n `Cannot get the ${edge} point in the node at path [${at}] because it has no ${edge} text node.`\n )\n }\n\n return { path, offset: edge === 'end' ? node.text.length : 0 }\n }\n\n if (Range.isRange(at)) {\n const [start, end] = Range.edges(at)\n return edge === 'start' ? start : end\n }\n\n return at\n}\n","import { Editor, EditorPositionsOptions } from '../interfaces/editor'\nimport { Point } from '../interfaces/point'\nimport { Range } from '../interfaces/range'\nimport { Element } from '../interfaces/element'\nimport { Path } from '../interfaces/path'\nimport { Text } from '../interfaces/text'\nimport {\n getCharacterDistance,\n getWordDistance,\n splitByCharacterDistance,\n} from '../utils/string'\n\nexport function* positions(\n editor: Editor,\n options: EditorPositionsOptions = {}\n): Generator<Point, void, undefined> {\n const {\n at = editor.selection,\n unit = 'offset',\n reverse = false,\n voids = false,\n ignoreNonSelectable = false,\n } = options\n\n if (!at) {\n return\n }\n\n /**\n * Algorithm notes:\n *\n * Each step `distance` is dynamic depending on the underlying text\n * and the `unit` specified. Each step, e.g., a line or word, may\n * span multiple text nodes, so we iterate through the text both on\n * two levels in step-sync:\n *\n * `leafText` stores the text on a text leaf level, and is advanced\n * through using the counters `leafTextOffset` and `leafTextRemaining`.\n *\n * `blockText` stores the text on a block level, and is shortened\n * by `distance` every time it is advanced.\n *\n * We only maintain a window of one blockText and one leafText because\n * a block node always appears before all of its leaf nodes.\n */\n\n const range = Editor.range(editor, at)\n const [start, end] = Range.edges(range)\n const first = reverse ? end : start\n let isNewBlock = false\n let blockText = ''\n let distance = 0 // Distance for leafText to catch up to blockText.\n let leafTextRemaining = 0\n let leafTextOffset = 0\n\n // Iterate through all nodes in range, grabbing entire textual content\n // of block nodes in blockText, and text nodes in leafText.\n // Exploits the fact that nodes are sequenced in such a way that we first\n // encounter the block node, then all of its text nodes, so when iterating\n // through the blockText and leafText we just need to remember a window of\n // one block node and leaf node, respectively.\n for (const [node, path] of Editor.nodes(editor, {\n at,\n reverse,\n voids,\n ignoreNonSelectable,\n })) {\n /*\n * ELEMENT NODE - Yield position(s) for voids, collect blockText for blocks\n */\n if (Element.isElement(node)) {\n // Void nodes are a special case, so by default we will always\n // yield their first point. If the `voids` option is set to true,\n // then we will iterate over their content.\n if (!voids && (editor.isVoid(node) || editor.isElementReadOnly(node))) {\n yield Editor.start(editor, path)\n continue\n }\n\n // Inline element nodes are ignored as they don't themselves\n // contribute to `blockText` or `leafText` - their parent and\n // children do.\n if (editor.isInline(node)) continue\n\n // Block element node - set `blockText` to its text content.\n if (Editor.hasInlines(editor, node)) {\n // We always exhaust block nodes before encountering a new one:\n // console.assert(blockText === '',\n // `blockText='${blockText}' - `+\n // `not exhausted before new block node`, path)\n\n // Ensure range considered is capped to `range`, in the\n // start/end edge cases where block extends beyond range.\n // Equivalent to this, but presumably more performant:\n // blockRange = Editor.range(editor, ...Editor.edges(editor, path))\n // blockRange = Range.intersection(range, blockRange) // intersect\n // blockText = Editor.string(editor, blockRange, { voids })\n const e = Path.isAncestor(path, end.path)\n ? end\n : Editor.end(editor, path)\n const s = Path.isAncestor(path, start.path)\n ? start\n : Editor.start(editor, path)\n\n blockText = Editor.string(editor, { anchor: s, focus: e }, { voids })\n isNewBlock = true\n }\n }\n\n /*\n * TEXT LEAF NODE - Iterate through text content, yielding\n * positions every `distance` offset according to `unit`.\n */\n if (Text.isText(node)) {\n const isFirst = Path.equals(path, first.path)\n\n // Proof that we always exhaust text nodes before encountering a new one:\n // console.assert(leafTextRemaining <= 0,\n // `leafTextRemaining=${leafTextRemaining} - `+\n // `not exhausted before new leaf text node`, path)\n\n // Reset `leafText` counters for new text node.\n if (isFirst) {\n leafTextRemaining = reverse\n ? first.offset\n : node.text.length - first.offset\n leafTextOffset = first.offset // Works for reverse too.\n } else {\n leafTextRemaining = node.text.length\n leafTextOffset = reverse ? leafTextRemaining : 0\n }\n\n // Yield position at the start of node (potentially).\n if (isFirst || isNewBlock || unit === 'offset') {\n yield { path, offset: leafTextOffset }\n isNewBlock = false\n }\n\n // Yield positions every (dynamically calculated) `distance` offset.\n while (true) {\n // If `leafText` has caught up with `blockText` (distance=0),\n // and if blockText is exhausted, break to get another block node,\n // otherwise advance blockText forward by the new `distance`.\n if (distance === 0) {\n if (blockText === '') break\n distance = calcDistance(blockText, unit, reverse)\n // Split the string at the previously found distance and use the\n // remaining string for the next iteration.\n blockText = splitByCharacterDistance(blockText, distance, reverse)[1]\n }\n\n // Advance `leafText` by the current `distance`.\n leafTextOffset = reverse\n ? leafTextOffset - distance\n : leafTextOffset + distance\n leafTextRemaining = leafTextRemaining - distance\n\n // If `leafText` is exhausted, break to get a new leaf node\n // and set distance to the overflow amount, so we'll (maybe)\n // catch up to blockText in the next leaf text node.\n if (leafTextRemaining < 0) {\n distance = -leafTextRemaining\n break\n }\n\n // Successfully walked `distance` offsets through `leafText`\n // to catch up with `blockText`, so we can reset `distance`\n // and yield this position in this node.\n distance = 0\n yield { path, offset: leafTextOffset }\n }\n }\n }\n // Proof that upon completion, we've exahusted both leaf and block text:\n // console.assert(leafTextRemaining <= 0, \"leafText wasn't exhausted\")\n // console.assert(blockText === '', \"blockText wasn't exhausted\")\n\n // Helper:\n // Return the distance in offsets for a step of size `unit` on given string.\n function calcDistance(text: string, unit: string, reverse?: boolean) {\n if (unit === 'character') {\n return getCharacterDistance(text, reverse)\n } else if (unit === 'word') {\n return getWordDistance(text, reverse)\n } else if (unit === 'line' || unit === 'block') {\n return text.length\n }\n return 1\n }\n}\n","import { Editor, EditorInterface } from '../interfaces/editor'\nimport { Span } from '../interfaces/location'\nimport { Path } from '../interfaces/path'\n\nexport const previous: EditorInterface['previous'] = (editor, options = {}) => {\n const { mode = 'lowest', voids = false } = options\n let { match, at = editor.selection } = options\n\n if (!at) {\n return\n }\n\n const pointBeforeLocation = Editor.before(editor, at, { voids })\n\n if (!pointBeforeLocation) {\n return\n }\n\n const [, to] = Editor.first(editor, [])\n\n // The search location is from the start of the document to the path of\n // the point before the location passed in\n const span: Span = [pointBeforeLocation.path, to]\n\n if (Path.isPath(at) && at.length === 0) {\n throw new Error(`Cannot get the previous node from the root node!`)\n }\n\n if (match == null) {\n if (Path.isPath(at)) {\n const [parent] = Editor.parent(editor, at)\n match = n => parent.children.includes(n)\n } else {\n match = () => true\n }\n }\n\n const [previous] = Editor.nodes(editor, {\n reverse: true,\n at: span,\n match,\n mode,\n voids,\n })\n\n return previous\n}\n","import { Editor, EditorInterface } from '../interfaces/editor'\nimport { RangeRef } from '../interfaces/range-ref'\n\nexport const rangeRef: EditorInterface['rangeRef'] = (\n editor,\n range,\n options = {}\n) => {\n const { affinity = 'forward' } = options\n const ref: RangeRef = {\n current: range,\n affinity,\n unref() {\n const { current } = ref\n const rangeRefs = Editor.rangeRefs(editor)\n rangeRefs.delete(ref)\n ref.current = null\n return current\n },\n }\n\n const refs = Editor.rangeRefs(editor)\n refs.add(ref)\n return ref\n}\n","import { EditorInterface } from '../interfaces/editor'\nimport { RANGE_REFS } from '../utils/weak-maps'\n\nexport const rangeRefs: EditorInterface['rangeRefs'] = editor => {\n let refs = RANGE_REFS.get(editor)\n\n if (!refs) {\n refs = new Set()\n RANGE_REFS.set(editor, refs)\n }\n\n return refs\n}\n","import { Editor, EditorInterface } from '../interfaces/editor'\nimport { Range } from '../interfaces/range'\n\nexport const range: EditorInterface['range'] = (editor, at, to) => {\n if (Range.isRange(at) && !to) {\n return at\n }\n\n const start = Editor.start(editor, at)\n const end = Editor.end(editor, to || at)\n return { anchor: start, focus: end }\n}\n","import { Node } from '../interfaces/node'\nimport { Path } from '../interfaces/path'\nimport { Text } from '../interfaces/text'\nimport { Range } from '../interfaces/range'\nimport { Transforms } from '../interfaces/transforms'\nimport { FLUSHING } from '../utils/weak-maps'\nimport { Editor, EditorInterface } from '../interfaces/editor'\n\nexport const removeMark: EditorInterface['removeMark'] = (editor, key) => {\n const { selection } = editor\n\n if (selection) {\n const match = (node: Node, path: Path) => {\n if (!Text.isText(node)) {\n return false // marks can only be applied to text\n }\n const [parentNode, parentPath] = Editor.parent(editor, path)\n return !editor.isVoid(parentNode) || editor.markableVoid(parentNode)\n }\n const expandedSelection = Range.isExpanded(selection)\n let markAcceptingVoidSelected = false\n if (!expandedSelection) {\n const [selectedNode, selectedPath] = Editor.node(editor, selection)\n if (selectedNode && match(selectedNode, selectedPath)) {\n const [parentNode] = Editor.parent(editor, selectedPath)\n markAcceptingVoidSelected =\n parentNode && editor.markableVoid(parentNode)\n }\n }\n if (expandedSelection || markAcceptingVoidSelected) {\n Transforms.unsetNodes(editor, key, {\n match,\n split: true,\n voids: true,\n })\n } else {\n const marks = { ...(Editor.marks(editor) || {}) }\n delete marks[<keyof Node>key]\n editor.marks = marks\n if (!FLUSHING.get(editor)) {\n editor.onChange()\n }\n }\n }\n}\n","import { EditorInterface } from '../interfaces/editor'\nimport { NORMALIZING } from '../utils/weak-maps'\n\nexport const setNormalizing: EditorInterface['setNormalizing'] = (\n editor,\n isNormalizing\n) => {\n NORMALIZING.set(editor, isNormalizing)\n}\n","import { Editor, EditorInterface } from '../interfaces/editor'\n\nexport const start: EditorInterface['start'] = (editor, at) => {\n return Editor.point(editor, at, { edge: 'start' })\n}\n","import { Editor, EditorInterface } from '../interfaces/editor'\nimport { Range } from '../interfaces/range'\nimport { Text } from '../interfaces/text'\nimport { Path } from '../interfaces/path'\n\nexport const string: EditorInterface['string'] = (editor, at, options = {}) => {\n const { voids = false } = options\n const range = Editor.range(editor, at)\n const [start, end] = Range.edges(range)\n let text = ''\n\n for (const [node, path] of Editor.nodes(editor, {\n at: range,\n match: Text.isText,\n voids,\n })) {\n let t = node.text\n\n if (Path.equals(path, end.path)) {\n t = t.slice(0, end.offset)\n }\n\n if (Path.equals(path, start.path)) {\n t = t.slice(start.offset)\n }\n\n text += t\n }\n\n return text\n}\n","import { Editor, EditorInterface } from '../interfaces/editor'\nimport { Range } from '../interfaces/range'\nimport { Path } from '../interfaces/path'\nimport { Element } from '../interfaces/element'\nimport { Text } from '../interfaces/text'\n\nexport const unhangRange: EditorInterface['unhangRange'] = (\n editor,\n range,\n options = {}\n) => {\n const { voids = false } = options\n let [start, end] = Range.edges(range)\n\n // PERF: exit early if we can guarantee that the range isn't hanging.\n if (\n start.offset !== 0 ||\n end.offset !== 0 ||\n Range.isCollapsed(range) ||\n Path.hasPrevious(end.path)\n ) {\n return range\n }\n\n const endBlock = Editor.above(editor, {\n at: end,\n match: n => Element.isElement(n) && Editor.isBlock(editor, n),\n voids,\n })\n const blockPath = endBlock ? endBlock[1] : []\n const first = Editor.start(editor, start)\n const before = { anchor: first, focus: end }\n let skip = true\n\n for (const [node, path] of Editor.nodes(editor, {\n at: before,\n match: Text.isText,\n reverse: true,\n voids,\n })) {\n if (skip) {\n skip = false\n continue\n }\n\n if (node.text !== '' || Path.isBefore(path, blockPath)) {\n end = { path, offset: node.text.length }\n break\n }\n }\n\n return { anchor: start, focus: end }\n}\n","import { Editor, EditorInterface } from '../interfaces/editor'\n\nexport const withoutNormalizing: EditorInterface['withoutNormalizing'] = (\n editor,\n fn\n) => {\n const value = Editor.isNormalizing(editor)\n Editor.setNormalizing(editor, false)\n try {\n fn()\n } finally {\n Editor.setNormalizing(editor, value)\n }\n Editor.normalize(editor)\n}\n","import { EditorInterface, Element, Editor, Text } from '../interfaces'\n\nexport const shouldMergeNodesRemovePrevNode: EditorInterface['shouldMergeNodesRemovePrevNode'] =\n (editor, [prevNode, prevPath], [curNode, curNodePath]) => {\n // If the target node that we're merging with is empty, remove it instead\n // of merging the two. This is a common rich text editor behavior to\n // prevent losing formatting when deleting entire nodes when you have a\n // hanging selection.\n // if prevNode is first child in parent,don't remove it.\n\n return (\n (Element.isElement(prevNode) && Editor.isEmpty(editor, prevNode)) ||\n (Text.isText(prevNode) &&\n prevNode.text === '' &&\n prevPath[prevPath.length - 1] !== 0)\n )\n }\n","import { TextTransforms } from '../interfaces/transforms/text'\nimport { Editor } from '../interfaces/editor'\nimport { Range } from '../interfaces/range'\nimport { Point } from '../interfaces/point'\nimport { Path } from '../interfaces/path'\nimport { Transforms } from '../interfaces/transforms'\nimport { Element } from '../interfaces/element'\nimport { NodeEntry } from '../interfaces/node'\n\nexport const deleteText: TextTransforms['delete'] = (editor, options = {}) => {\n Editor.withoutNormalizing(editor, () => {\n const {\n reverse = false,\n unit = 'character',\n distance = 1,\n voids = false,\n } = options\n let { at = editor.selection, hanging = false } = options\n\n if (!at) {\n return\n }\n\n let isCollapsed = false\n if (Range.isRange(at) && Range.isCollapsed(at)) {\n isCollapsed = true\n at = at.anchor\n }\n\n if (Point.isPoint(at)) {\n const furthestVoid = Editor.void(editor, { at, mode: 'highest' })\n\n if (!voids && furthestVoid) {\n const [, voidPath] = furthestVoid\n at = voidPath\n } else {\n const opts = { unit, distance }\n const target = reverse\n ? Editor.before(editor, at, opts) || Editor.start(editor, [])\n : Editor.after(editor, at, opts) || Editor.end(editor, [])\n at = { anchor: at, focus: target }\n hanging = true\n }\n }\n\n if (Path.isPath(at)) {\n Transforms.removeNodes(editor, { at, voids })\n return\n }\n\n if (Range.isCollapsed(at)) {\n return\n }\n\n if (!hanging) {\n const [, end] = Range.edges(at)\n const endOfDoc = Editor.end(editor, [])\n\n if (!Point.equals(end, endOfDoc)) {\n at = Editor.unhangRange(editor, at, { voids })\n }\n }\n\n let [start, end] = Range.edges(at)\n const startBlock = Editor.above(editor, {\n match: n => Element.isElement(n) && Editor.isBlock(editor, n),\n at: start,\n voids,\n })\n const endBlock = Editor.above(editor, {\n match: n => Element.isElement(n) && Editor.isBlock(editor, n),\n at: end,\n voids,\n })\n const isAcrossBlocks =\n startBlock && endBlock && !Path.equals(startBlock[1], endBlock[1])\n const isSingleText = Path.equals(start.path, end.path)\n const startNonEditable = voids\n ? null\n : Editor.void(editor, { at: start, mode: 'highest' }) ??\n Editor.elementReadOnly(editor, { at: start, mode: 'highest' })\n const endNonEditable = voids\n ? null\n : Editor.void(editor, { at: end, mode: 'highest' }) ??\n Editor.elementReadOnly(editor, { at: end, mode: 'highest' })\n\n // If the start or end points are inside an inline void, nudge them out.\n if (startNonEditable) {\n const before = Editor.before(editor, start)\n\n if (before && startBlock && Path.isAncestor(startBlock[1], before.path)) {\n start = before\n }\n }\n\n if (endNonEditable) {\n const after = Editor.after(editor, end)\n\n if (after && endBlock && Path.isAncestor(endBlock[1], after.path)) {\n end = after\n }\n }\n\n // Get the highest nodes that are completely inside the range, as well as\n // the start and end nodes.\n const matches: NodeEntry[] = []\n let lastPath: Path | undefined\n\n for (const entry of Editor.nodes(editor, { at, voids })) {\n const [node, path] = entry\n\n if (lastPath && Path.compare(path, lastPath) === 0) {\n continue\n }\n\n if (\n (!voids &&\n Element.isElement(node) &&\n (Editor.isVoid(editor, node) ||\n Editor.isElementReadOnly(editor, node))) ||\n (!Path.isCommon(path, start.path) && !Path.isCommon(path, end.path))\n ) {\n matches.push(entry)\n lastPath = path\n }\n }\n\n const pathRefs = Array.from(matches, ([, p]) => Editor.pathRef(editor, p))\n const startRef = Editor.pointRef(editor, start)\n const endRef = Editor.pointRef(editor, end)\n\n let removedText = ''\n\n if (!isSingleText && !startNonEditable) {\n const point = startRef.current!\n const [node] = Editor.leaf(editor, point)\n const { path } = point\n const { offset } = start\n const text = node.text.slice(offset)\n if (text.length > 0) {\n editor.apply({ type: 'remove_text', path, offset, text })\n removedText = text\n }\n }\n\n pathRefs\n .reverse()\n .map(r => r.unref())\n .filter((r): r is Path => r !== null)\n .forEach(p => Transforms.removeNodes(editor, { at: p, voids }))\n\n if (!endNonEditable) {\n const point = endRef.current!\n const [node] = Editor.leaf(editor, point)\n const { path } = point\n const offset = isSingleText ? start.offset : 0\n const text = node.text.slice(offset, end.offset)\n if (text.length > 0) {\n editor.apply({ type: 'remove_text', path, offset, text })\n removedText = text\n }\n }\n\n if (!isSingleText && isAcrossBlocks && endRef.current && startRef.current) {\n Transforms.mergeNodes(editor, {\n at: endRef.current,\n hanging: true,\n voids,\n })\n }\n\n // For Thai script, deleting N character(s) backward should delete\n // N code point(s) instead of an entire grapheme cluster.\n // Therefore, the remaining code points should be inserted back.\n if (\n isCollapsed &&\n reverse &&\n unit === 'character' &&\n removedText.length > 1 &&\n removedText.match(/[\\u0E00-\\u0E7F]+/)\n ) {\n Transforms.insertText(\n editor,\n removedText.slice(0, removedText.length - distance)\n )\n }\n\n const startUnref = startRef.unref()\n const endUnref = endRef.unref()\n const point = reverse ? startUnref || endUnref : endUnref || startUnref\n\n if (options.at == null && point) {\n Transforms.select(editor, point)\n }\n })\n}\n","import { Transforms } from '../interfaces/transforms'\nimport { Editor } from '../interfaces/editor'\nimport { Range } from '../interfaces/range'\nimport { Path } from '../interfaces/path'\nimport { Element } from '../interfaces/element'\nimport { Node, NodeEntry } from '../interfaces/node'\nimport { Text } from '../interfaces/text'\nimport { TextTransforms } from '../interfaces/transforms/text'\nimport { getDefaultInsertLocation } from '../utils'\n\nexport const insertFragment: TextTransforms['insertFragment'] = (\n editor,\n fragment,\n options = {}\n) => {\n Editor.withoutNormalizing(editor, () => {\n const { hanging = false, voids = false } = options\n let { at = getDefaultInsertLocation(editor), batchDirty = true } = options\n\n if (!fragment.length) {\n return\n }\n\n if (Range.isRange(at)) {\n if (!hanging) {\n at = Editor.unhangRange(editor, at, { voids })\n }\n\n if (Range.isCollapsed(at)) {\n at = at.anchor\n } else {\n const [, end] = Range.edges(at)\n\n if (!voids && Editor.void(editor, { at: end })) {\n return\n }\n\n const pointRef = Editor.pointRef(editor, end)\n Transforms.delete(editor, { at })\n at = pointRef.unref()!\n }\n } else if (Path.isPath(at)) {\n at = Editor.start(editor, at)\n }\n\n if (!voids && Editor.void(editor, { at })) {\n return\n }\n\n // If the insert point is at the edge of an inline node, move it outside\n // instead since it will need to be split otherwise.\n const inlineElementMatch = Editor.above(editor, {\n at,\n match: n => Element.isElement(n) && Editor.isInline(editor, n),\n mode: 'highest',\n voids,\n })\n\n if (inlineElementMatch) {\n const [, inlinePath] = inlineElementMatch\n\n if (Editor.isEnd(editor, at, inlinePath)) {\n const after = Editor.after(editor, inlinePath)!\n at = after\n } else if (Editor.isStart(editor, at, inlinePath)) {\n const before = Editor.before(editor, inlinePath)!\n at = before\n }\n }\n\n const blockMatch = Editor.above(editor, {\n match: n => Element.isElement(n) && Editor.isBlock(editor, n),\n at,\n voids,\n })!\n const [, blockPath] = blockMatch\n const isBlockStart = Editor.isStart(editor, at, blockPath)\n const isBlockEnd = Editor.isEnd(editor, at, blockPath)\n const isBlockEmpty = isBlockStart && isBlockEnd\n const mergeStart = !isBlockStart || (isBlockStart && isBlockEnd)\n const mergeEnd = !isBlockEnd\n const [, firstPath] = Node.first({ children: fragment }, [])\n const [, lastPath] = Node.last({ children: fragment }, [])\n\n const matches: NodeEntry[] = []\n const matcher = ([n, p]: NodeEntry) => {\n const isRoot = p.length === 0\n if (isRoot) {\n return false\n }\n\n if (isBlockEmpty) {\n return true\n }\n\n if (\n mergeStart &&\n Path.isAncestor(p, firstPath) &&\n Element.isElement(n) &&\n !editor.isVoid(n) &&\n !editor.isInline(n)\n ) {\n return false\n }\n\n if (\n mergeEnd &&\n Path.isAncestor(p, lastPath) &&\n Element.isElement(n) &&\n !editor.isVoid(n) &&\n !editor.isInline(n)\n ) {\n return false\n }\n\n return true\n }\n\n for (const entry of Node.nodes({ children: fragment }, { pass: matcher })) {\n if (matcher(entry)) {\n matches.push(entry)\n }\n }\n\n const starts = []\n const middles = []\n const ends = []\n let starting = true\n let hasBlocks = false\n\n for (const [node] of matches) {\n if (Element.isElement(node) && !editor.isInline(node)) {\n starting = false\n hasBlocks = true\n middles.push(node)\n } else if (starting) {\n starts.push(node)\n } else {\n ends.push(node)\n }\n }\n\n const [inlineMatch] = Editor.nodes(editor, {\n at,\n match: n => Text.isText(n) || Editor.isInline(editor, n),\n mode: 'highest',\n voids,\n })!\n\n const [, inlinePath] = inlineMatch\n const isInlineStart = Editor.isStart(editor, at, inlinePath)\n const isInlineEnd = Editor.isEnd(editor, at, inlinePath)\n\n const middleRef = Editor.pathRef(\n editor,\n isBlockEnd && !ends.length ? Path.next(blockPath) : blockPath\n )\n\n const endRef = Editor.pathRef(\n editor,\n isInlineEnd ? Path.next(inlinePath) : inlinePath\n )\n\n Transforms.splitNodes(editor, {\n at,\n match: n =>\n hasBlocks\n ? Element.isElement(n) && Editor.isBlock(editor, n)\n : Text.isText(n) || Editor.isInline(editor, n),\n mode: hasBlocks ? 'lowest' : 'highest',\n always:\n hasBlocks &&\n (!isBlockStart || starts.length > 0) &&\n (!isBlockEnd || ends.length > 0),\n voids,\n })\n\n const startRef = Editor.pathRef(\n editor,\n !isInlineStart || (isInlineStart && isInlineEnd)\n ? Path.next(inlinePath)\n : inlinePath\n )\n\n Transforms.insertNodes(editor, starts, {\n at: startRef.current!,\n match: n => Text.isText(n) || Editor.isInline(editor, n),\n mode: 'highest',\n voids,\n batchDirty,\n })\n\n if (isBlockEmpty && !starts.length && middles.length && !ends.length) {\n Transforms.delete(editor, { at: blockPath, voids })\n }\n\n Transforms.insertNodes(editor, middles, {\n at: middleRef.current!,\n match: n => Element.isElement(n) && Editor.isBlock(editor, n),\n mode: 'lowest',\n voids,\n batchDirty,\n })\n\n Transforms.insertNodes(editor, ends, {\n at: endRef.current!,\n match: n => Text.isText(n) || Editor.isInline(editor, n),\n mode: 'highest',\n voids,\n batchDirty,\n })\n\n if (!options.at) {\n let path\n\n if (ends.length > 0 && endRef.current) {\n path = Path.previous(endRef.current)\n } else if (middles.length > 0 && middleRef.current) {\n path = Path.previous(middleRef.current)\n } else if (startRef.current) {\n path = Path.previous(startRef.current)\n }\n\n if (path) {\n const end = Editor.end(editor, path)\n Transforms.select(editor, end)\n }\n }\n\n startRef.unref()\n middleRef.unref()\n endRef.unref()\n })\n}\n","import { SelectionTransforms } from '../interfaces/transforms/selection'\nimport { Transforms } from '../interfaces/transforms'\nimport { Range } from '../interfaces/range'\n\nexport const collapse: SelectionTransforms['collapse'] = (\n editor,\n options = {}\n) => {\n const { edge = 'anchor' } = options\n const { selection } = editor\n\n if (!selection) {\n return\n } else if (edge === 'anchor') {\n Transforms.select(editor, selection.anchor)\n } else if (edge === 'focus') {\n Transforms.select(editor, selection.focus)\n } else if (edge === 'start') {\n const [start] = Range.edges(selection)\n Transforms.select(editor, start)\n } else if (edge === 'end') {\n const [, end] = Range.edges(selection)\n Transforms.select(editor, end)\n }\n}\n","import { SelectionTransforms } from '../interfaces/transforms/selection'\n\nexport const deselect: SelectionTransforms['deselect'] = editor => {\n const { selection } = editor\n\n if (selection) {\n editor.apply({\n type: 'set_selection',\n properties: selection,\n newProperties: null,\n })\n }\n}\n","import { SelectionTransforms } from '../interfaces/transforms/selection'\nimport { Range } from '../interfaces/range'\nimport { Editor } from '../interfaces/editor'\nimport { Transforms } from '../interfaces/transforms'\n\nexport const move: SelectionTransforms['move'] = (editor, options = {}) => {\n const { selection } = editor\n const { distance = 1, unit = 'character', reverse = false } = options\n let { edge = null } = options\n\n if (!selection) {\n return\n }\n\n if (edge === 'start') {\n edge = Range.isBackward(selection) ? 'focus' : 'anchor'\n }\n\n if (edge === 'end') {\n edge = Range.isBackward(selection) ? 'anchor' : 'focus'\n }\n\n const { anchor, focus } = selection\n const opts = { distance, unit, ignoreNonSelectable: true }\n const props: Partial<Range> = {}\n\n if (edge == null || edge === 'anchor') {\n const point = reverse\n ? Editor.before(editor, anchor, opts)\n : Editor.after(editor, anchor, opts)\n\n if (point) {\n props.anchor = point\n }\n }\n\n if (edge == null || edge === 'focus') {\n const point = reverse\n ? Editor.before(editor, focus, opts)\n : Editor.after(editor, focus, opts)\n\n if (point) {\n props.focus = point\n }\n }\n\n Transforms.setSelection(editor, props)\n}\n","import { SelectionTransforms } from '../interfaces/transforms/selection'\nimport { Editor } from '../interfaces/editor'\nimport { Transforms } from '../interfaces/transforms'\nimport { Range } from '../interfaces/range'\nimport { Scrubber } from '../interfaces/scrubber'\n\nexport const select: SelectionTransforms['select'] = (editor, target) => {\n const { selection } = editor\n target = Editor.range(editor, target)\n\n if (selection) {\n Transforms.setSelection(editor, target)\n return\n }\n\n if (!Range.isRange(target)) {\n throw new Error(\n `When setting the selection and the current selection is \\`null\\` you must provide at least an \\`anchor\\` and \\`focus\\`, but you passed: ${Scrubber.stringify(\n target\n )}`\n )\n }\n\n editor.apply({\n type: 'set_selection',\n properties: selection,\n newProperties: target,\n })\n}\n","import { SelectionTransforms } from '../interfaces/transforms/selection'\nimport { Range } from '../interfaces/range'\nimport { Transforms } from '../interfaces/transforms'\n\nexport const setPoint: SelectionTransforms['setPoint'] = (\n editor,\n props,\n options = {}\n) => {\n const { selection } = editor\n let { edge = 'both' } = options\n\n if (!selection) {\n return\n }\n\n if (edge === 'start') {\n edge = Range.isBackward(selection) ? 'focus' : 'anchor'\n }\n\n if (edge === 'end') {\n edge = Range.isBackward(selection) ? 'anchor' : 'focus'\n }\n\n const { anchor, focus } = selection\n const point = edge === 'anchor' ? anchor : focus\n\n Transforms.setSelection(editor, {\n [edge === 'anchor' ? 'anchor' : 'focus']: { ...point, ...props },\n })\n}\n","import { SelectionTransforms } from '../interfaces/transforms/selection'\nimport { Range } from '../interfaces/range'\nimport { Point } from '../interfaces/point'\n\nexport const setSelection: SelectionTransforms['setSelection'] = (\n editor,\n props\n) => {\n const { selection } = editor\n const oldProps: Partial<Range> | null = {}\n const newProps: Partial<Range> = {}\n\n if (!selection) {\n return\n }\n\n for (const k in props) {\n if (\n (k === 'anchor' &&\n props.anchor != null &&\n !Point.equals(props.anchor, selection.anchor)) ||\n (k === 'focus' &&\n props.focus != null &&\n !Point.equals(props.focus, selection.focus)) ||\n (k !== 'anchor' &&\n k !== 'focus' &&\n props[<keyof Range>k] !== selection[<keyof Range>k])\n ) {\n oldProps[<keyof Range>k] = selection[<keyof Range>k]\n newProps[<keyof Range>k] = props[<keyof Range>k]\n }\n }\n\n if (Object.keys(oldProps).length > 0) {\n editor.apply({\n type: 'set_selection',\n properties: oldProps,\n newProperties: newProps,\n })\n }\n}\n","import { NodeTransforms } from '../interfaces/transforms/node'\nimport { Editor } from '../interfaces/editor'\nimport { Node } from '../interfaces/node'\nimport { Range } from '../interfaces/range'\nimport { Transforms } from '../interfaces/transforms'\nimport { Point } from '../interfaces/point'\nimport { Text } from '../interfaces/text'\nimport { Element } from '../interfaces/element'\nimport { Path } from '../interfaces/path'\nimport { getDefaultInsertLocation } from '../utils'\nimport { batchDirtyPaths } from '../core/batch-dirty-paths'\nimport { BaseInsertNodeOperation } from '../interfaces'\nimport { updateDirtyPaths } from '../core/update-dirty-paths'\n\nexport const insertNodes: NodeTransforms['insertNodes'] = (\n editor,\n nodes,\n options = {}\n) => {\n Editor.withoutNormalizing(editor, () => {\n const {\n hanging = false,\n voids = false,\n mode = 'lowest',\n batchDirty = true,\n } = options\n let { at, match, select } = options\n\n if (Node.isNode(nodes)) {\n nodes = [nodes]\n }\n\n if (nodes.length === 0) {\n return\n }\n\n const [node] = nodes\n\n if (!at) {\n at = getDefaultInsertLocation(editor)\n if (select !== false) {\n select = true\n }\n }\n\n if (select == null) {\n select = false\n }\n\n if (Range.isRange(at)) {\n if (!hanging) {\n at = Editor.unhangRange(editor, at, { voids })\n }\n\n if (Range.isCollapsed(at)) {\n at = at.anchor\n } else {\n const [, end] = Range.edges(at)\n const pointRef = Editor.pointRef(editor, end)\n Transforms.delete(editor, { at })\n at = pointRef.unref()!\n }\n }\n\n if (Point.isPoint(at)) {\n if (match == null) {\n if (Text.isText(node)) {\n match = n => Text.isText(n)\n } else if (editor.isInline(node)) {\n match = n => Text.isText(n) || Editor.isInline(editor, n)\n } else {\n match = n => Element.isElement(n) && Editor.isBlock(editor, n)\n }\n }\n\n const [entry] = Editor.nodes(editor, {\n at: at.path,\n match,\n mode,\n voids,\n })\n\n if (entry) {\n const [, matchPath] = entry\n const pathRef = Editor.pathRef(editor, matchPath)\n const isAtEnd = Editor.isEnd(editor, at, matchPath)\n Transforms.splitNodes(editor, { at, match, mode, voids })\n const path = pathRef.unref()!\n at = isAtEnd ? Path.next(path) : path\n } else {\n return\n }\n }\n\n const parentPath = Path.parent(at)\n let index = at[at.length - 1]\n\n if (!voids && Editor.void(editor, { at: parentPath })) {\n return\n }\n\n if (batchDirty) {\n // PERF: batch update dirty paths\n // batched ops used to transform existing dirty paths\n const batchedOps: BaseInsertNodeOperation[] = []\n const newDirtyPaths: Path[] = Path.levels(parentPath)\n batchDirtyPaths(\n editor,\n () => {\n for (const node of nodes as Node[]) {\n const path = parentPath.concat(index)\n index++\n\n const op: BaseInsertNodeOperation = {\n type: 'insert_node',\n path,\n node,\n }\n editor.apply(op)\n at = Path.next(at as Path)\n\n batchedOps.push(op)\n if (Text.isText(node)) {\n newDirtyPaths.push(path)\n } else {\n newDirtyPaths.push(\n ...Array.from(Node.nodes(node), ([, p]) => path.concat(p))\n )\n }\n }\n },\n () => {\n updateDirtyPaths(editor, newDirtyPaths, p => {\n let newPath: Path | null = p\n for (const op of batchedOps) {\n if (Path.operationCanTransformPath(op)) {\n newPath = Path.transform(newPath, op)\n if (!newPath) {\n return null\n }\n }\n }\n return newPath\n })\n }\n )\n } else {\n for (const node of nodes as Node[]) {\n const path = parentPath.concat(index)\n index++\n\n editor.apply({ type: 'insert_node', path, node })\n at = Path.next(at as Path)\n }\n }\n\n at = Path.previous(at)\n\n if (select) {\n const point = Editor.end(editor, at)\n\n if (point) {\n Transforms.select(editor, point)\n }\n }\n })\n}\n","import { NodeTransforms } from '../interfaces/transforms/node'\nimport { Editor } from '../interfaces/editor'\nimport { Path } from '../interfaces/path'\nimport { matchPath } from '../utils/match-path'\nimport { Element } from '../interfaces/element'\nimport { Ancestor, NodeEntry } from '../interfaces/node'\nimport { Transforms } from '../interfaces/transforms'\n\nexport const liftNodes: NodeTransforms['liftNodes'] = (\n editor,\n options = {}\n) => {\n Editor.withoutNormalizing(editor, () => {\n const { at = editor.selection, mode = 'lowest', voids = false } = options\n let { match } = options\n\n if (match == null) {\n match = Path.isPath(at)\n ? matchPath(editor, at)\n : n => Element.isElement(n) && Editor.isBlock(editor, n)\n }\n\n if (!at) {\n return\n }\n\n const matches = Editor.nodes(editor, { at, match, mode, voids })\n const pathRefs = Array.from(matches, ([, p]) => Editor.pathRef(editor, p))\n\n for (const pathRef of pathRefs) {\n const path = pathRef.unref()!\n\n if (path.length < 2) {\n throw new Error(\n `Cannot lift node at a path [${path}] because it has a depth of less than \\`2\\`.`\n )\n }\n\n const parentNodeEntry = Editor.node(editor, Path.parent(path))\n const [parent, parentPath] = parentNodeEntry as NodeEntry<Ancestor>\n const index = path[path.length - 1]\n const { length } = parent.children\n\n if (length === 1) {\n const toPath = Path.next(parentPath)\n Transforms.moveNodes(editor, { at: path, to: toPath, voids })\n Transforms.removeNodes(editor, { at: parentPath, voids })\n } else if (index === 0) {\n Transforms.moveNodes(editor, { at: path, to: parentPath, voids })\n } else if (index === length - 1) {\n const toPath = Path.next(parentPath)\n Transforms.moveNodes(editor, { at: path, to: toPath, voids })\n } else {\n const splitPath = Path.next(path)\n const toPath = Path.next(parentPath)\n Transforms.splitNodes(editor, { at: splitPath, voids })\n Transforms.moveNodes(editor, { at: path, to: toPath, voids })\n }\n }\n })\n}\n","import { NodeTransforms } from '../interfaces/transforms/node'\nimport { Editor } from '../interfaces/editor'\nimport { Path } from '../interfaces/path'\nimport { Element } from '../interfaces/element'\nimport { Range } from '../interfaces/range'\nimport { Transforms } from '../interfaces/transforms'\nimport { Text } from '../interfaces/text'\nimport { Scrubber } from '../interfaces/scrubber'\nimport { Node } from '../interfaces/node'\n\nconst hasSingleChildNest = (editor: Editor, node: Node): boolean => {\n if (Element.isElement(node)) {\n const element = node as Element\n if (Editor.isVoid(editor, node)) {\n return true\n } else if (element.children.length === 1) {\n return hasSingleChildNest(editor, element.children[0])\n } else {\n return false\n }\n } else if (Editor.isEditor(node)) {\n return false\n } else {\n return true\n }\n}\n\nexport const mergeNodes: NodeTransforms['mergeNodes'] = (\n editor,\n options = {}\n) => {\n Editor.withoutNormalizing(editor, () => {\n let { match, at = editor.selection } = options\n const { hanging = false, voids = false, mode = 'lowest' } = options\n\n if (!at) {\n return\n }\n\n if (match == null) {\n if (Path.isPath(at)) {\n const [parent] = Editor.parent(editor, at)\n match = n => parent.children.includes(n)\n } else {\n match = n => Element.isElement(n) && Editor.isBlock(editor, n)\n }\n }\n\n if (!hanging && Range.isRange(at)) {\n at = Editor.unhangRange(editor, at, { voids })\n }\n\n if (Range.isRange(at)) {\n if (Range.isCollapsed(at)) {\n at = at.anchor\n } else {\n const [, end] = Range.edges(at)\n const pointRef = Editor.pointRef(editor, end)\n Transforms.delete(editor, { at })\n at = pointRef.unref()!\n\n if (options.at == null) {\n Transforms.select(editor, at)\n }\n }\n }\n\n const [current] = Editor.nodes(editor, { at, match, voids, mode })\n const prev = Editor.previous(editor, { at, match, voids, mode })\n\n if (!current || !prev) {\n return\n }\n\n const [node, path] = current\n const [prevNode, prevPath] = prev\n\n if (path.length === 0 || prevPath.length === 0) {\n return\n }\n\n const newPath = Path.next(prevPath)\n const commonPath = Path.common(path, prevPath)\n const isPreviousSibling = Path.isSibling(path, prevPath)\n const levels = Array.from(Editor.levels(editor, { at: path }), ([n]) => n)\n .slice(commonPath.length)\n .slice(0, -1)\n\n // Determine if the merge will leave an ancestor of the path empty as a\n // result, in which case we'll want to remove it after merging.\n const emptyAncestor = Editor.above(editor, {\n at: path,\n mode: 'highest',\n match: n => levels.includes(n) && hasSingleChildNest(editor, n),\n })\n\n const emptyRef = emptyAncestor && Editor.pathRef(editor, emptyAncestor[1])\n let properties\n let position\n\n // Ensure that the nodes are equivalent, and figure out what the position\n // and extra properties of the merge will be.\n if (Text.isText(node) && Text.isText(prevNode)) {\n const { text, ...rest } = node\n position = prevNode.text.length\n properties = rest as Partial<Text>\n } else if (Element.isElement(node) && Element.isElement(prevNode)) {\n const { children, ...rest } = node\n position = prevNode.children.length\n properties = rest as Partial<Element>\n } else {\n throw new Error(\n `Cannot merge the node at path [${path}] with the previous sibling because it is not the same kind: ${Scrubber.stringify(\n node\n )} ${Scrubber.stringify(prevNode)}`\n )\n }\n\n // If the node isn't already the next sibling of the previous node, move\n // it so that it is before merging.\n if (!isPreviousSibling) {\n Transforms.moveNodes(editor, { at: path, to: newPath, voids })\n }\n\n // If there was going to be an empty ancestor of the node that was merged,\n // we remove it from the tree.\n if (emptyRef) {\n Transforms.removeNodes(editor, { at: emptyRef.current!, voids })\n }\n\n if (Editor.shouldMergeNodesRemovePrevNode(editor, prev, current)) {\n Transforms.removeNodes(editor, { at: prevPath, voids })\n } else {\n editor.apply({\n type: 'merge_node',\n path: newPath,\n position,\n properties,\n })\n }\n\n if (emptyRef) {\n emptyRef.unref()\n }\n })\n}\n","import { NodeTransforms } from '../interfaces/transforms/node'\nimport { Editor } from '../interfaces/editor'\nimport { Path } from '../interfaces/path'\nimport { matchPath } from '../utils/match-path'\nimport { Element } from '../interfaces/element'\n\nexport const moveNodes: NodeTransforms['moveNodes'] = (editor, options) => {\n Editor.withoutNormalizing(editor, () => {\n const {\n to,\n at = editor.selection,\n mode = 'lowest',\n voids = false,\n } = options\n let { match } = options\n\n if (!at) {\n return\n }\n\n if (match == null) {\n match = Path.isPath(at)\n ? matchPath(editor, at)\n : n => Element.isElement(n) && Editor.isBlock(editor, n)\n }\n\n const toRef = Editor.pathRef(editor, to)\n const targets = Editor.nodes(editor, { at, match, mode, voids })\n const pathRefs = Array.from(targets, ([, p]) => Editor.pathRef(editor, p))\n\n for (const pathRef of pathRefs) {\n const path = pathRef.unref()!\n const newPath = toRef.current!\n\n if (path.length !== 0) {\n editor.apply({ type: 'move_node', path, newPath })\n }\n\n if (\n toRef.current &&\n Path.isSibling(newPath, path) &&\n Path.isAfter(newPath, path)\n ) {\n // When performing a sibling move to a later index, the path at the destination is shifted\n // to before the insertion point instead of after. To ensure our group of nodes are inserted\n // in the correct order we increment toRef to account for that\n toRef.current = Path.next(toRef.current)\n }\n }\n\n toRef.unref()\n })\n}\n","import { NodeTransforms } from '../interfaces/transforms/node'\nimport { Editor } from '../interfaces/editor'\nimport { Path } from '../interfaces/path'\nimport { matchPath } from '../utils/match-path'\nimport { Element } from '../interfaces/element'\nimport { Range } from '../interfaces/range'\n\nexport const removeNodes: NodeTransforms['removeNodes'] = (\n editor,\n options = {}\n) => {\n Editor.withoutNormalizing(editor, () => {\n const { hanging = false, voids = false, mode = 'lowest' } = options\n let { at = editor.selection, match } = options\n\n if (!at) {\n return\n }\n\n if (match == null) {\n match = Path.isPath(at)\n ? matchPath(editor, at)\n : n => Element.isElement(n) && Editor.isBlock(editor, n)\n }\n\n if (!hanging && Range.isRange(at)) {\n at = Editor.unhangRange(editor, at, { voids })\n }\n\n const depths = Editor.nodes(editor, { at, match, mode, voids })\n const pathRefs = Array.from(depths, ([, p]) => Editor.pathRef(editor, p))\n\n for (const pathRef of pathRefs) {\n const path = pathRef.unref()!\n\n if (path) {\n const [node] = Editor.node(editor, path)\n editor.apply({ type: 'remove_node', path, node })\n }\n }\n })\n}\n","import { NodeTransforms } from '../interfaces/transforms/node'\nimport { Editor } from '../interfaces/editor'\nimport { Path } from '../interfaces/path'\nimport { matchPath } from '../utils/match-path'\nimport { Element } from '../interfaces/element'\nimport { Range } from '../interfaces/range'\nimport { Transforms } from '../interfaces/transforms'\nimport { Node } from '../interfaces/node'\n\nexport const setNodes: NodeTransforms['setNodes'] = (\n editor,\n props: Partial<Node>,\n options = {}\n) => {\n Editor.withoutNormalizing(editor, () => {\n let { match, at = editor.selection, compare, merge } = options\n const {\n hanging = false,\n mode = 'lowest',\n split = false,\n voids = false,\n } = options\n\n if (!at) {\n return\n }\n\n if (match == null) {\n match = Path.isPath(at)\n ? matchPath(editor, at)\n : n => Element.isElement(n) && Editor.isBlock(editor, n)\n }\n\n if (!hanging && Range.isRange(at)) {\n at = Editor.unhangRange(editor, at, { voids })\n }\n\n if (split && Range.isRange(at)) {\n if (\n Range.isCollapsed(at) &&\n Editor.leaf(editor, at.anchor)[0].text.length > 0\n ) {\n // If the range is collapsed in a non-empty node and 'split' is true, there's nothing to\n // set that won't get normalized away\n return\n }\n const rangeRef = Editor.rangeRef(editor, at, { affinity: 'inward' })\n const [start, end] = Range.edges(at)\n const splitMode = mode === 'lowest' ? 'lowest' : 'highest'\n const endAtEndOfNode = Editor.isEnd(editor, end, end.path)\n Transforms.splitNodes(editor, {\n at: end,\n match,\n mode: splitMode,\n voids,\n always: !endAtEndOfNode,\n })\n const startAtStartOfNode = Editor.isStart(editor, start, start.path)\n Transforms.splitNodes(editor, {\n at: start,\n match,\n mode: splitMode,\n voids,\n always: !startAtStartOfNode,\n })\n at = rangeRef.unref()!\n\n if (options.at == null) {\n Transforms.select(editor, at)\n }\n }\n\n if (!compare) {\n compare = (prop, nodeProp) => prop !== nodeProp\n }\n\n for (const [node, path] of Editor.nodes(editor, {\n at,\n match,\n mode,\n voids,\n })) {\n const properties: Partial<Node> = {}\n // FIXME: is this correct?\n const newProperties: Partial<Node> & { [key: string]: unknown } = {}\n\n // You can't set properties on the editor node.\n if (path.length === 0) {\n continue\n }\n\n let hasChanges = false\n\n for (const k in props) {\n if (k === 'children' || k === 'text') {\n continue\n }\n\n if (compare(props[<keyof Node>k], node[<keyof Node>k])) {\n hasChanges = true\n // Omit new properties from the old properties list\n if (node.hasOwnProperty(k))\n properties[<keyof Node>k] = node[<keyof Node>k]\n // Omit properties that have been removed from the new properties list\n if (merge) {\n if (props[<keyof Node>k] != null)\n newProperties[<keyof Node>k] = merge(\n node[<keyof Node>k],\n props[<keyof Node>k]\n )\n } else {\n if (props[<keyof Node>k] != null)\n newProperties[<keyof Node>k] = props[<keyof Node>k]\n }\n }\n }\n\n if (hasChanges) {\n editor.apply({\n type: 'set_node',\n path,\n properties,\n newProperties,\n })\n }\n }\n })\n}\n","import { NodeTransforms } from '../interfaces/transforms/node'\nimport { Editor } from '../interfaces/editor'\nimport { Element } from '../interfaces/element'\nimport { Range } from '../interfaces/range'\nimport { Path } from '../interfaces/path'\nimport { PointRef } from '../interfaces/point-ref'\nimport { Transforms } from '../interfaces/transforms'\nimport { Node } from '../interfaces/node'\nimport { Point } from '../interfaces/point'\n\n/**\n * Convert a range into a point by deleting it's content.\n */\nconst deleteRange = (editor: Editor, range: Range): Point | null => {\n if (Range.isCollapsed(range)) {\n return range.anchor\n } else {\n const [, end] = Range.edges(range)\n const pointRef = Editor.pointRef(editor, end)\n Transforms.delete(editor, { at: range })\n return pointRef.unref()\n }\n}\n\nexport const splitNodes: NodeTransforms['splitNodes'] = (\n editor,\n options = {}\n) => {\n Editor.withoutNormalizing(editor, () => {\n const { mode = 'lowest', voids = false } = options\n let { match, at = editor.selection, height = 0, always = false } = options\n\n if (match == null) {\n match = n => Element.isElement(n) && Editor.isBlock(editor, n)\n }\n\n if (Range.isRange(at)) {\n at = deleteRange(editor, at)\n }\n\n // If the target is a path, the default height-skipping and position\n // counters need to account for us potentially splitting at a non-leaf.\n if (Path.isPath(at)) {\n const path = at\n const point = Editor.point(editor, path)\n const [parent] = Editor.parent(editor, path)\n match = n => n === parent\n height = point.path.length - path.length + 1\n at = point\n always = true\n }\n\n if (!at) {\n return\n }\n\n const beforeRef = Editor.pointRef(editor, at, {\n affinity: 'backward',\n })\n let afterRef: PointRef | undefined\n try {\n const [highest] = Editor.nodes(editor, { at, match, mode, voids })\n\n if (!highest) {\n return\n }\n\n const voidMatch = Editor.void(editor, { at, mode: 'highest' })\n const nudge = 0\n\n if (!voids && voidMatch) {\n const [voidNode, voidPath] = voidMatch\n\n if (Element.isElement(voidNode) && editor.isInline(voidNode)) {\n let after = Editor.after(editor, voidPath)\n\n if (!after) {\n const text = { text: '' }\n const afterPath = Path.next(voidPath)\n Transforms.insertNodes(editor, text, { at: afterPath, voids })\n after = Editor.point(editor, afterPath)!\n }\n\n at = after\n always = true\n }\n\n const siblingHeight = at.path.length - voidPath.length\n height = siblingHeight + 1\n always = true\n }\n\n afterRef = Editor.pointRef(editor, at)\n const depth = at.path.length - height\n const [, highestPath] = highest\n const lowestPath = at.path.slice(0, depth)\n let position = height === 0 ? at.offset : at.path[depth] + nudge\n\n for (const [node, path] of Editor.levels(editor, {\n at: lowestPath,\n reverse: true,\n voids,\n })) {\n let split = false\n\n if (\n path.length < highestPath.length ||\n path.length === 0 ||\n (!voids && Element.isElement(node) && Editor.isVoid(editor, node))\n ) {\n break\n }\n\n const point = beforeRef.current!\n const isEnd = Editor.isEnd(editor, point, path)\n\n if (always || !beforeRef || !Editor.isEdge(editor, point, path)) {\n split = true\n const properties = Node.extractProps(node)\n editor.apply({\n type: 'split_node',\n path,\n position,\n properties,\n })\n }\n\n position = path[path.length - 1] + (split || isEnd ? 1 : 0)\n }\n\n if (options.at == null) {\n const point = afterRef.current || Editor.end(editor, [])\n Transforms.select(editor, point)\n }\n } finally {\n beforeRef.unref()\n afterRef?.unref()\n }\n })\n}\n","import { NodeTransforms } from '../interfaces/transforms/node'\nimport { Transforms } from '../interfaces/transforms'\n\nexport const unsetNodes: NodeTransforms['unsetNodes'] = (\n editor,\n props,\n options = {}\n) => {\n if (!Array.isArray(props)) {\n props = [props]\n }\n\n const obj: any = {}\n\n for (const key of props) {\n obj[key] = null\n }\n\n Transforms.setNodes(editor, obj, options)\n}\n","import { NodeTransforms } from '../interfaces/transforms/node'\nimport { Editor } from '../interfaces/editor'\nimport { Path } from '../interfaces/path'\nimport { matchPath } from '../utils/match-path'\nimport { Element } from '../interfaces/element'\nimport { Range } from '../interfaces/range'\nimport { Transforms } from '../interfaces/transforms'\n\nexport const unwrapNodes: NodeTransforms['unwrapNodes'] = (\n editor,\n options = {}\n) => {\n Editor.withoutNormalizing(editor, () => {\n const { mode = 'lowest', split = false, voids = false } = options\n let { at = editor.selection, match } = options\n\n if (!at) {\n return\n }\n\n if (match == null) {\n match = Path.isPath(at)\n ? matchPath(editor, at)\n : n => Element.isElement(n) && Editor.isBlock(editor, n)\n }\n\n if (Path.isPath(at)) {\n at = Editor.range(editor, at)\n }\n\n const rangeRef = Range.isRange(at) ? Editor.rangeRef(editor, at) : null\n const matches = Editor.nodes(editor, { at, match, mode, voids })\n const pathRefs = Array.from(\n matches,\n ([, p]) => Editor.pathRef(editor, p)\n // unwrapNode will call liftNode which does not support splitting the node when nested.\n // If we do not reverse the order and call it from top to the bottom, it will remove all blocks\n // that wrap target node. So we reverse the order.\n ).reverse()\n\n for (const pathRef of pathRefs) {\n const path = pathRef.unref()!\n const [node] = Editor.node(editor, path)\n let range = Editor.range(editor, path)\n\n if (split && rangeRef) {\n range = Range.intersection(rangeRef.current!, range)!\n }\n\n Transforms.liftNodes(editor, {\n at: range,\n match: n => Element.isAncestor(node) && node.children.includes(n),\n voids,\n })\n }\n\n if (rangeRef) {\n rangeRef.unref()\n }\n })\n}\n","import { NodeTransforms } from '../interfaces/transforms/node'\nimport { Editor } from '../interfaces/editor'\nimport { Path } from '../interfaces/path'\nimport { matchPath } from '../utils/match-path'\nimport { Element } from '../interfaces/element'\nimport { Text } from '../interfaces/text'\nimport { Range } from '../interfaces/range'\nimport { Transforms } from '../interfaces/transforms'\n\nexport const wrapNodes: NodeTransforms['wrapNodes'] = (\n editor,\n element,\n options = {}\n) => {\n Editor.withoutNormalizing(editor, () => {\n const { mode = 'lowest', split = false, voids = false } = options\n let { match, at = editor.selection } = options\n\n if (!at) {\n return\n }\n\n if (match == null) {\n if (Path.isPath(at)) {\n match = matchPath(editor, at)\n } else if (editor.isInline(element)) {\n match = n =>\n (Element.isElement(n) && Editor.isInline(editor, n)) || Text.isText(n)\n } else {\n match = n => Element.isElement(n) && Editor.isBlock(editor, n)\n }\n }\n\n if (split && Range.isRange(at)) {\n const [start, end] = Range.edges(at)\n const rangeRef = Editor.rangeRef(editor, at, {\n affinity: 'inward',\n })\n Transforms.splitNodes(editor, { at: end, match, voids })\n Transforms.splitNodes(editor, { at: start, match, voids })\n at = rangeRef.unref()!\n\n if (options.at == null) {\n Transforms.select(editor, at)\n }\n }\n\n const roots = Array.from(\n Editor.nodes(editor, {\n at,\n match: editor.isInline(element)\n ? n => Element.isElement(n) && Editor.isBlock(editor, n)\n : n => Editor.isEditor(n),\n mode: 'lowest',\n voids,\n })\n )\n\n for (const [, rootPath] of roots) {\n const a = Range.isRange(at)\n ? Range.intersection(at, Editor.range(editor, rootPath))\n : at\n\n if (!a) {\n continue\n }\n\n const matches = Array.from(\n Editor.nodes(editor, { at: a, match, mode, voids })\n )\n\n if (matches.length > 0) {\n const [first] = matches\n const last = matches[matches.length - 1]\n const [, firstPath] = first\n const [, lastPath] = last\n\n if (firstPath.length === 0 && lastPath.length === 0) {\n // if there's no matching parent - usually means the node is an editor - don't do anything\n continue\n }\n\n const commonPath = Path.equals(firstPath, lastPath)\n ? Path.parent(firstPath)\n : Path.common(firstPath, lastPath)\n\n const range = Editor.range(editor, firstPath, lastPath)\n const commonNodeEntry = Editor.node(editor, commonPath)\n const [commonNode] = commonNodeEntry\n const depth = commonPath.length + 1\n const wrapperPath = Path.next(lastPath.slice(0, depth))\n const wrapper = { ...element, children: [] }\n Transforms.insertNodes(editor, wrapper, { at: wrapperPath, voids })\n\n Transforms.moveNodes(editor, {\n at: range,\n match: n =>\n Element.isAncestor(commonNode) && commonNode.children.includes(n),\n to: wrapperPath.concat(0),\n voids,\n })\n }\n }\n })\n}\n","import {\n addMark,\n deleteFragment,\n Editor,\n getDirtyPaths,\n getFragment,\n insertBreak,\n insertFragment,\n insertNode,\n insertSoftBreak,\n insertText,\n normalizeNode,\n removeMark,\n shouldNormalize,\n} from './'\nimport { apply } from './core'\nimport {\n above,\n after,\n before,\n deleteBackward,\n deleteForward,\n edges,\n elementReadOnly,\n end,\n first,\n fragment,\n getVoid,\n hasBlocks,\n hasInlines,\n hasPath,\n hasTexts,\n isBlock,\n isEdge,\n isEmpty,\n isEnd,\n isNormalizing,\n isStart,\n last,\n leaf,\n levels,\n marks,\n next,\n node,\n nodes,\n normalize,\n parent,\n path,\n pathRef,\n pathRefs,\n point,\n pointRef,\n pointRefs,\n positions,\n previous,\n range,\n rangeRef,\n rangeRefs,\n setNormalizing,\n shouldMergeNodesRemovePrevNode,\n start,\n string,\n unhangRange,\n withoutNormalizing,\n} from './editor'\nimport { deleteText } from './transforms-text'\nimport {\n collapse,\n deselect,\n move,\n select,\n setPoint,\n setSelection,\n} from './transforms-selection'\nimport {\n insertNodes,\n liftNodes,\n mergeNodes,\n moveNodes,\n removeNodes,\n setNodes,\n splitNodes,\n unsetNodes,\n unwrapNodes,\n wrapNodes,\n} from './transforms-node'\n\n/**\n * Create a new Slate `Editor` object.\n */\nexport const createEditor = (): Editor => {\n const editor: Editor = {\n children: [],\n operations: [],\n selection: null,\n marks: null,\n isElementReadOnly: () => false,\n isInline: () => false,\n isSelectable: () => true,\n isVoid: () => false,\n markableVoid: () => false,\n onChange: () => {},\n\n // Core\n apply: (...args) => apply(editor, ...args),\n\n // Editor\n addMark: (...args) => addMark(editor, ...args),\n deleteBackward: (...args) => deleteBackward(editor, ...args),\n deleteForward: (...args) => deleteForward(editor, ...args),\n deleteFragment: (...args) => deleteFragment(editor, ...args),\n getFragment: (...args) => getFragment(editor, ...args),\n insertBreak: (...args) => insertBreak(editor, ...args),\n insertSoftBreak: (...args) => insertSoftBreak(editor, ...args),\n insertFragment: (...args) => insertFragment(editor, ...args),\n insertNode: (...args) => insertNode(editor, ...args),\n insertText: (...args) => insertText(editor, ...args),\n normalizeNode: (...args) => normalizeNode(editor, ...args),\n removeMark: (...args) => removeMark(editor, ...args),\n getDirtyPaths: (...args) => getDirtyPaths(editor, ...args),\n shouldNormalize: (...args) => shouldNormalize(editor, ...args),\n\n // Editor interface\n above: (...args) => above(editor, ...args),\n after: (...args) => after(editor, ...args),\n before: (...args) => before(editor, ...args),\n collapse: (...args) => collapse(editor, ...args),\n delete: (...args) => deleteText(editor, ...args),\n deselect: (...args) => deselect(editor, ...args),\n edges: (...args) => edges(editor, ...args),\n elementReadOnly: (...args) => elementReadOnly(editor, ...args),\n end: (...args) => end(editor, ...args),\n first: (...args) => first(editor, ...args),\n fragment: (...args) => fragment(editor, ...args),\n getMarks: (...args) => marks(editor, ...args),\n hasBlocks: (...args) => hasBlocks(editor, ...args),\n hasInlines: (...args) => hasInlines(editor, ...args),\n hasPath: (...args) => hasPath(editor, ...args),\n hasTexts: (...args) => hasTexts(editor, ...args),\n insertNodes: (...args) => insertNodes(editor, ...args),\n isBlock: (...args) => isBlock(editor, ...args),\n isEdge: (...args) => isEdge(editor, ...args),\n isEmpty: (...args) => isEmpty(editor, ...args),\n isEnd: (...args) => isEnd(editor, ...args),\n isNormalizing: (...args) => isNormalizing(editor, ...args),\n isStart: (...args) => isStart(editor, ...args),\n last: (...args) => last(editor, ...args),\n leaf: (...args) => leaf(editor, ...args),\n levels: (...args) => levels(editor, ...args),\n liftNodes: (...args) => liftNodes(editor, ...args),\n mergeNodes: (...args) => mergeNodes(editor, ...args),\n move: (...args) => move(editor, ...args),\n moveNodes: (...args) => moveNodes(editor, ...args),\n next: (...args) => next(editor, ...args),\n node: (...args) => node(editor, ...args),\n nodes: (...args) => nodes(editor, ...args),\n normalize: (...args) => normalize(editor, ...args),\n parent: (...args) => parent(editor, ...args),\n path: (...args) => path(editor, ...args),\n pathRef: (...args) => pathRef(editor, ...args),\n pathRefs: (...args) => pathRefs(editor, ...args),\n point: (...args) => point(editor, ...args),\n pointRef: (...args) => pointRef(editor, ...args),\n pointRefs: (...args) => pointRefs(editor, ...args),\n positions: (...args) => positions(editor, ...args),\n previous: (...args) => previous(editor, ...args),\n range: (...args) => range(editor, ...args),\n rangeRef: (...args) => rangeRef(editor, ...args),\n rangeRefs: (...args) => rangeRefs(editor, ...args),\n removeNodes: (...args) => removeNodes(editor, ...args),\n select: (...args) => select(editor, ...args),\n setNodes: (...args) => setNodes(editor, ...args),\n setNormalizing: (...args) => setNormalizing(editor, ...args),\n setPoint: (...args) => setPoint(editor, ...args),\n setSelection: (...args) => setSelection(editor, ...args),\n splitNodes: (...args) => splitNodes(editor, ...args),\n start: (...args) => start(editor, ...args),\n string: (...args) => string(editor, ...args),\n unhangRange: (...args) => unhangRange(editor, ...args),\n unsetNodes: (...args) => unsetNodes(editor, ...args),\n unwrapNodes: (...args) => unwrapNodes(editor, ...args),\n void: (...args) => getVoid(editor, ...args),\n withoutNormalizing: (...args) => withoutNormalizing(editor, ...args),\n wrapNodes: (...args) => wrapNodes(editor, ...args),\n shouldMergeNodesRemovePrevNode: (...args) =>\n shouldMergeNodesRemovePrevNode(editor, ...args),\n }\n\n return editor\n}\n"],"names":["PathRef","transform","ref","op","current","affinity","path","Path","unref","PointRef","point","Point","RangeRef","Range","DIRTY_PATHS","WeakMap","DIRTY_PATH_KEYS","FLUSHING","NORMALIZING","PATH_REFS","POINT_REFS","RANGE_REFS","ancestors","options","arguments","length","undefined","_options$reverse","reverse","paths","levels","slice","common","another","i","av","bv","push","compare","min","Math","endsAfter","as","bs","equals","endsAt","endsBefore","every","n","hasPrevious","isAfter","isAncestor","isBefore","isChild","isCommon","isDescendant","isParent","isPath","value","Array","isArray","isSibling","al","bl","_options$reverse2","list","next","Error","concat","last","operationCanTransformPath","operation","type","parent","previous","relative","ancestor","p","_toConsumableArray","_options$affinity","position","onp","newPath","copy","require$$0","applyToDraft","editor","selection","node","Node","index","children","splice","_iterator","_createForOfIteratorHelper","points","_step","s","done","_step$value","_slicedToArray","key","err","e","f","offset","text","leaf","before","after","_iterator2","_step2","_step2$value","get","prevPath","prev","Text","isText","_prev$children","apply","Scrubber","stringify","_iterator3","_step3","_step3$value","truePath","newParent","newIndex","_iterator4","_step4","_step4$value","_iterator5","_step5","_step5$value","result","_iterator6","texts","_step6","_step6$value","preferNext","_iterator7","_step7","_step7$value","properties","newProperties","hasOwnProperty","isRange","_objectSpread","newNode","_iterator8","_step8","_step8$value","GeneralTransforms","createDraft","finishDraft","isDraft","NodeTransforms","insertNodes","nodes","liftNodes","mergeNodes","moveNodes","removeNodes","setNodes","props","splitNodes","unsetNodes","unwrapNodes","wrapNodes","element","SelectionTransforms","collapse","deselect","move","select","target","setPoint","setSelection","isDeepEqual","a","b","isPlainObject","edges","range","anchor","focus","isBackward","end","_Range$edges","_Range$edges2","surrounds","intersectionRange","intersection","includes","_Range$edges3","_Range$edges4","rs","re","_Range$edges5","_Range$edges6","ts","te","_Range$edges7","_Range$edges8","start","isAfterStart","isBeforeEnd","isPoint","rest","_objectWithoutProperties","_excluded","_Range$edges9","_Range$edges10","s1","e1","_Range$edges11","_Range$edges12","s2","e2","isCollapsed","isExpanded","isForward","_Range$edges13","_Range$edges14","produce","r","affinityAnchor","affinityFocus","isElement","isNodeList","Editor","isEditor","Element","isElementList","val","isElementProps","isElementType","elementVal","elementKey","matches","IS_NODE_LIST_CACHE","root","entry","child","c","childPath","descendant","descendants","elements","extractProps","_excluded2","first","fragment","newRoot","nodeEntries","pass","_ref","_ref2","getIf","has","isNode","cachedResult","set","isTextProps","_options$from","from","to","visited","Set","add","nextIndex","parentPath","string","map","join","Operation","isNodeOperation","isOperation","endsWith","isOperationList","isSelectionOperation","isTextOperation","inverse","inversePath","inverseNewPath","IS_EDITOR_CACHE","cachedIsEditor","addMark","deleteFragment","insertBreak","insertSoftBreak","insertFragment","insertNode","insertText","isElementReadOnly","isInline","isSelectable","isVoid","normalizeNode","onChange","removeMark","getDirtyPaths","marks","operations","above","at","deleteBackward","_options$unit","unit","deleteForward","_options$unit2","elementReadOnly","hasBlocks","hasInlines","hasPath","hasTexts","isBlock","isEdge","isEmpty","isEnd","isNormalizing","isStart","getMarks","normalize","pathRef","pathRefs","pointRef","pointRefs","positions","rangeRef","rangeRefs","setNormalizing","unhangRange","_void","withoutNormalizing","fn","shouldMergeNodesRemovePrevNode","prevNode","curNode","Location","isLocation","Span","isSpan","_scrubber","setScrubber","scrubber","JSON","_options$loose","loose","omitText","obj","isTextList","decorations","leaves","dec","mergeDecoration","merge","leafEnd","decorationStart","decorationEnd","Object","assign","leafStart","middle","off","getDefaultInsertLocation","matchPath","_Editor$node","_Editor$node2","getCharacterDistance","str","isRTL","isLTR","codepoints","codepointsIteratorRTL","left","CodepointType","None","right","distance","gb11","gb12Or13","char","code","codePointAt","getCodepointType","intersects","ZWJ","ExtPict","endsWithEmojiZWJ","substring","RI","endsWithOddNumberOfRIs","isBoundaryPair","SPACE","PUNCTUATION","CHAMELEON","getWordDistance","dist","started","charDist","_splitByCharacterDist","splitByCharacterDistance","_splitByCharacterDist2","remaining","isWordCharacter","test","_splitByCharacterDist3","_splitByCharacterDist4","nextChar","nextRemaining","char1","charAt","isLowSurrogate","charCodeAt","char2","isHighSurrogate","charCode","reExtend","rePrepend","reSpacingMark","reL","reV","reT","reLV","reLVT","reExtPict","Any","search","Extend","Prepend","SpacingMark","L","V","T","LV","LVT","x","y","NonBoundaryPairs","findIndex","endingEmojiZWJ","endingRIs","match","numRIs","TextTransforms","_delete","_options$voids","voids","_options$at","startRef","endRef","Transforms","startPoint","endPoint","_at","BATCHING_DIRTY_PATHS","isBatchingDirtyPaths","batchDirtyPaths","update","updateDirtyPaths","newDirtyPaths","oldDirtyPaths","oldDirtyPathKeys","dirtyPaths","dirtyPathKeys","Promise","resolve","then","previousPath","oldAncestors","newAncestors","resultPath","nextPath","getFragment","_entry","shouldHaveInlines","currentNode","isLast","isInlineOrText","newChild","elementChild","shouldNormalize","iteration","initialDirtyPathsLength","maxIterations","_options$mode","mode","_Editor$parent","_Editor$parent2","parentNode","markableVoid","expandedSelection","markAcceptingVoidSelected","selectedNode","selectedPath","_Editor$parent3","_Editor$parent4","_defineProperty","split","edge","_options$distance","d","_ref$direction","direction","getVoid","some","always","_children","_Editor$nodes","_Editor$nodes2","_match","_anchor","_Editor$leaf","_Editor$leaf2","markedVoid","block","_prev","_block","blockPath","_node2","pointAfterLocation","_Editor$last","_Editor$last2","span","_options$universal","universal","_options$ignoreNonSel","ignoreNonSelectable","hit","isLower","emit","_options$force","force","getDirtyPathKeys","popDirtyPath","pop","allPaths","allPathKeys","dirtyPath","_entry2","_","refs","depth","_Node$first","_Node$first2","firstPath","_Node$last","_Node$last2","lastPath","_options$edge","isNewBlock","blockText","leafTextRemaining","leafTextOffset","isFirst","calcDistance","pointBeforeLocation","_Editor$first","_Editor$first2","t","endBlock","skip","_ref3","_ref4","curNodePath","deleteText","_Editor$void","_Editor$void2","_options$hanging","hanging","furthestVoid","_furthestVoid","voidPath","opts","endOfDoc","startBlock","isAcrossBlocks","isSingleText","startNonEditable","endNonEditable","removedText","_start","filter","forEach","_Editor$leaf3","_Editor$leaf4","startUnref","endUnref","_options$batchDirty","batchDirty","inlineElementMatch","_inlineElementMatch","inlinePath","blockMatch","_blockMatch","isBlockStart","isBlockEnd","isBlockEmpty","mergeStart","mergeEnd","matcher","isRoot","starts","middles","ends","starting","_i","_matches","_matches$_i","inlineMatch","_inlineMatch","isInlineStart","isInlineEnd","middleRef","oldProps","newProps","k","keys","_nodes","_nodes2","isAtEnd","batchedOps","_loop","_batchedOps","_pathRefs","parentNodeEntry","_parentNodeEntry","toPath","splitPath","hasSingleChildNest","_current","commonPath","isPreviousSibling","emptyAncestor","emptyRef","toRef","targets","depths","_options$split","splitMode","endAtEndOfNode","startAtStartOfNode","prop","nodeProp","hasChanges","deleteRange","_options$height","height","_options$always","beforeRef","afterRef","highest","voidMatch","nudge","_voidMatch","voidNode","afterPath","siblingHeight","_highest","highestPath","lowestPath","_afterRef","roots","_roots$_i","_roots","rootPath","_first","_last","commonNodeEntry","_commonNodeEntry","commonNode","wrapperPath","wrapper","_ret","createEditor","_len","args","_key","_len2","_key2","_len3","_key3","_len4","_key4","_len5","_key5","_len6","_key6","_len7","_key7","_len8","_key8","_len9","_key9","_len10","_key10","_len11","_key11","_len12","_key12","_len13","_key13","_len14","_key14","_len15","_key15","_len16","_key16","_len17","_key17","_len18","_key18","_len19","_key19","_len20","_key20","_len21","_key21","_len22","_key22","_len23","_key23","_len24","_key24","_len25","_key25","_len26","_key26","_len27","_key27","_len28","_key28","_len29","_key29","_len30","_key30","_len31","_key31","_len32","_key32","_len33","_key33","_len34","_key34","_len35","_key35","_len36","_key36","_len37","_key37","_len38","_key38","_len39","_key39","_len40","_key40","_len41","_key41","_len42","_key42","_len43","_key43","_len44","_key44","_len45","_key45","_len46","_key46","_len47","_key47","_len48","_key48","_len49","_key49","_len50","_key50","_len51","_key51","_len52","_key52","_len53","_key53","_len54","_key54","_len55","_key55","_len56","_key56","_len57","_key57","_len58","_key58","_len59","_key59","_len60","_key60","_len61","_key61","_len62","_key62","_len63","_key63","_len64","_key64","_len65","_key65","_len66","_key66","_len67","_key67","_len68","_key68","_len69","_key69","_len70","_key70","_len71","_key71","_len72","_key72","_len73","_key73","_len74","_key74","_len75","_key75","_len76","_key76","_len77","_key77"],"mappings":"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","x_google_ignoreList":[4,5,6,7,8,9,11,12,13,14,15,16,17,18,23,24]}
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../src/interfaces/path-ref.ts","../src/interfaces/point-ref.ts","../src/interfaces/range-ref.ts","../src/utils/weak-maps.ts","../../../../../../.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/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/unsupportedIterableToArray.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/interfaces/path.ts","../../../../../../.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","../../../../../../.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/nonIterableRest.js","../../../../../../.yarn/berry/cache/@babel-runtime-npm-7.23.2-d013d6cf7e-10.zip/node_modules/@babel/runtime/helpers/slicedToArray.js","../src/interfaces/transforms/general.ts","../src/interfaces/transforms/node.ts","../src/interfaces/transforms/selection.ts","../src/utils/deep-equal.ts","../../../../../../.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","../src/interfaces/range.ts","../src/interfaces/element.ts","../src/interfaces/node.ts","../src/interfaces/operation.ts","../src/editor/is-editor.ts","../src/interfaces/editor.ts","../src/interfaces/location.ts","../src/interfaces/point.ts","../src/interfaces/scrubber.ts","../src/interfaces/text.ts","../src/utils/get-default-insert-location.ts","../src/utils/match-path.ts","../src/utils/string.ts","../src/interfaces/transforms/text.ts","../src/interfaces/transforms/index.ts","../src/core/batch-dirty-paths.ts","../src/core/update-dirty-paths.ts","../src/core/apply.ts","../src/core/get-dirty-paths.ts","../src/core/get-fragment.ts","../src/core/normalize-node.ts","../src/core/should-normalize.ts","../src/editor/above.ts","../src/editor/add-mark.ts","../src/editor/after.ts","../src/editor/before.ts","../src/editor/delete-backward.ts","../src/editor/delete-forward.ts","../src/editor/delete-fragment.ts","../src/editor/edges.ts","../src/editor/element-read-only.ts","../src/editor/end.ts","../src/editor/first.ts","../src/editor/fragment.ts","../src/editor/get-void.ts","../src/editor/has-blocks.ts","../src/editor/has-inlines.ts","../src/editor/has-path.ts","../src/editor/has-texts.ts","../src/editor/insert-break.ts","../src/editor/insert-node.ts","../src/editor/insert-soft-break.ts","../src/editor/insert-text.ts","../src/editor/is-block.ts","../src/editor/is-edge.ts","../src/editor/is-empty.ts","../src/editor/is-end.ts","../src/editor/is-normalizing.ts","../src/editor/is-start.ts","../src/editor/last.ts","../src/editor/leaf.ts","../src/editor/levels.ts","../src/editor/marks.ts","../src/editor/next.ts","../src/editor/node.ts","../src/editor/nodes.ts","../src/editor/normalize.ts","../src/editor/parent.ts","../src/editor/path-ref.ts","../src/editor/path-refs.ts","../src/editor/path.ts","../src/editor/point-ref.ts","../src/editor/point-refs.ts","../src/editor/point.ts","../src/editor/positions.ts","../src/editor/previous.ts","../src/editor/range-ref.ts","../src/editor/range-refs.ts","../src/editor/range.ts","../src/editor/remove-mark.ts","../src/editor/set-normalizing.ts","../src/editor/start.ts","../src/editor/string.ts","../src/editor/unhang-range.ts","../src/editor/without-normalizing.ts","../src/editor/should-merge-nodes-remove-prev-node.ts","../src/transforms-text/delete-text.ts","../src/transforms-text/insert-fragment.ts","../src/transforms-selection/collapse.ts","../src/transforms-selection/deselect.ts","../src/transforms-selection/move.ts","../src/transforms-selection/select.ts","../src/transforms-selection/set-point.ts","../src/transforms-selection/set-selection.ts","../src/transforms-node/insert-nodes.ts","../src/transforms-node/lift-nodes.ts","../src/transforms-node/merge-nodes.ts","../src/transforms-node/move-nodes.ts","../src/transforms-node/remove-nodes.ts","../src/transforms-node/set-nodes.ts","../src/transforms-node/split-nodes.ts","../src/transforms-node/unset-nodes.ts","../src/transforms-node/unwrap-nodes.ts","../src/transforms-node/wrap-nodes.ts","../src/create-editor.ts"],"sourcesContent":["import { Operation, Path } from '..'\n\n/**\n * `PathRef` objects keep a specific path in a document synced over time as new\n * operations are applied to the editor. You can access their `current` property\n * at any time for the up-to-date path value.\n */\n\nexport interface PathRef {\n current: Path | null\n affinity: 'forward' | 'backward' | null\n unref(): Path | null\n}\n\nexport interface PathRefInterface {\n /**\n * Transform the path ref's current value by an operation.\n */\n transform: (ref: PathRef, op: Operation) => void\n}\n\n// eslint-disable-next-line no-redeclare\nexport const PathRef: PathRefInterface = {\n transform(ref: PathRef, op: Operation): void {\n const { current, affinity } = ref\n\n if (current == null) {\n return\n }\n\n const path = Path.transform(current, op, { affinity })\n ref.current = path\n\n if (path == null) {\n ref.unref()\n }\n },\n}\n","import { Operation, Point } from '..'\nimport { TextDirection } from '../types/types'\n\n/**\n * `PointRef` objects keep a specific point in a document synced over time as new\n * operations are applied to the editor. You can access their `current` property\n * at any time for the up-to-date point value.\n */\n\nexport interface PointRef {\n current: Point | null\n affinity: TextDirection | null\n unref(): Point | null\n}\n\nexport interface PointRefInterface {\n /**\n * Transform the point ref's current value by an operation.\n */\n transform: (ref: PointRef, op: Operation) => void\n}\n\n// eslint-disable-next-line no-redeclare\nexport const PointRef: PointRefInterface = {\n transform(ref: PointRef, op: Operation): void {\n const { current, affinity } = ref\n\n if (current == null) {\n return\n }\n\n const point = Point.transform(current, op, { affinity })\n ref.current = point\n\n if (point == null) {\n ref.unref()\n }\n },\n}\n","import { Operation, Range } from '..'\n\n/**\n * `RangeRef` objects keep a specific range in a document synced over time as new\n * operations are applied to the editor. You can access their `current` property\n * at any time for the up-to-date range value.\n */\n\nexport interface RangeRef {\n current: Range | null\n affinity: 'forward' | 'backward' | 'outward' | 'inward' | null\n unref(): Range | null\n}\n\nexport interface RangeRefInterface {\n /**\n * Transform the range ref's current value by an operation.\n */\n transform: (ref: RangeRef, op: Operation) => void\n}\n\n// eslint-disable-next-line no-redeclare\nexport const RangeRef: RangeRefInterface = {\n transform(ref: RangeRef, op: Operation): void {\n const { current, affinity } = ref\n\n if (current == null) {\n return\n }\n\n const path = Range.transform(current, op, { affinity })\n ref.current = path\n\n if (path == null) {\n ref.unref()\n }\n },\n}\n","import { Editor, Path, PathRef, PointRef, RangeRef } from '..'\n\nexport const DIRTY_PATHS: WeakMap<Editor, Path[]> = new WeakMap()\nexport const DIRTY_PATH_KEYS: WeakMap<Editor, Set<string>> = new WeakMap()\nexport const FLUSHING: WeakMap<Editor, boolean> = new WeakMap()\nexport const NORMALIZING: WeakMap<Editor, boolean> = new WeakMap()\nexport const PATH_REFS: WeakMap<Editor, Set<PathRef>> = new WeakMap()\nexport const POINT_REFS: WeakMap<Editor, Set<PointRef>> = new WeakMap()\nexport const RANGE_REFS: WeakMap<Editor, Set<RangeRef>> = new WeakMap()\n","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 _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;","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 _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;","import {\n InsertNodeOperation,\n MergeNodeOperation,\n MoveNodeOperation,\n Operation,\n RemoveNodeOperation,\n SplitNodeOperation,\n} from '..'\nimport { TextDirection } from '../types/types'\n\n/**\n * `Path` arrays are a list of indexes that describe a node's exact position in\n * a Slate node tree. Although they are usually relative to the root `Editor`\n * object, they can be relative to any `Node` object.\n */\n\nexport type Path = number[]\n\nexport interface PathAncestorsOptions {\n reverse?: boolean\n}\n\nexport interface PathLevelsOptions {\n reverse?: boolean\n}\n\nexport interface PathTransformOptions {\n affinity?: TextDirection | null\n}\n\nexport interface PathInterface {\n /**\n * Get a list of ancestor paths for a given path.\n *\n * The paths are sorted from shallowest to deepest ancestor. However, if the\n * `reverse: true` option is passed, they are reversed.\n */\n ancestors: (path: Path, options?: PathAncestorsOptions) => Path[]\n\n /**\n * Get the common ancestor path of two paths.\n */\n common: (path: Path, another: Path) => Path\n\n /**\n * Compare a path to another, returning an integer indicating whether the path\n * was before, at, or after the other.\n *\n * Note: Two paths of unequal length can still receive a `0` result if one is\n * directly above or below the other. If you want exact matching, use\n * [[Path.equals]] instead.\n */\n compare: (path: Path, another: Path) => -1 | 0 | 1\n\n /**\n * Check if a path ends after one of the indexes in another.\n */\n endsAfter: (path: Path, another: Path) => boolean\n\n /**\n * Check if a path ends at one of the indexes in another.\n */\n endsAt: (path: Path, another: Path) => boolean\n\n /**\n * Check if a path ends before one of the indexes in another.\n */\n endsBefore: (path: Path, another: Path) => boolean\n\n /**\n * Check if a path is exactly equal to another.\n */\n equals: (path: Path, another: Path) => boolean\n\n /**\n * Check if the path of previous sibling node exists\n */\n hasPrevious: (path: Path) => boolean\n\n /**\n * Check if a path is after another.\n */\n isAfter: (path: Path, another: Path) => boolean\n\n /**\n * Check if a path is an ancestor of another.\n */\n isAncestor: (path: Path, another: Path) => boolean\n\n /**\n * Check if a path is before another.\n */\n isBefore: (path: Path, another: Path) => boolean\n\n /**\n * Check if a path is a child of another.\n */\n isChild: (path: Path, another: Path) => boolean\n\n /**\n * Check if a path is equal to or an ancestor of another.\n */\n isCommon: (path: Path, another: Path) => boolean\n\n /**\n * Check if a path is a descendant of another.\n */\n isDescendant: (path: Path, another: Path) => boolean\n\n /**\n * Check if a path is the parent of another.\n */\n isParent: (path: Path, another: Path) => boolean\n\n /**\n * Check is a value implements the `Path` interface.\n */\n isPath: (value: any) => value is Path\n\n /**\n * Check if a path is a sibling of another.\n */\n isSibling: (path: Path, another: Path) => boolean\n\n /**\n * Get a list of paths at every level down to a path. Note: this is the same\n * as `Path.ancestors`, but including the path itself.\n *\n * The paths are sorted from shallowest to deepest. However, if the `reverse:\n * true` option is passed, they are reversed.\n */\n levels: (path: Path, options?: PathLevelsOptions) => Path[]\n\n /**\n * Given a path, get the path to the next sibling node.\n */\n next: (path: Path) => Path\n\n /**\n * Returns whether this operation can affect paths or not. Used as an\n * optimization when updating dirty paths during normalization\n *\n * NOTE: This *must* be kept in sync with the implementation of 'transform'\n * below\n */\n operationCanTransformPath: (\n operation: Operation\n ) => operation is\n | InsertNodeOperation\n | RemoveNodeOperation\n | MergeNodeOperation\n | SplitNodeOperation\n | MoveNodeOperation\n\n /**\n * Given a path, return a new path referring to the parent node above it.\n */\n parent: (path: Path) => Path\n\n /**\n * Given a path, get the path to the previous sibling node.\n */\n previous: (path: Path) => Path\n\n /**\n * Get a path relative to an ancestor.\n */\n relative: (path: Path, ancestor: Path) => Path\n\n /**\n * Transform a path by an operation.\n */\n transform: (\n path: Path,\n operation: Operation,\n options?: PathTransformOptions\n ) => Path | null\n}\n\n// eslint-disable-next-line no-redeclare\nexport const Path: PathInterface = {\n ancestors(path: Path, options: PathAncestorsOptions = {}): Path[] {\n const { reverse = false } = options\n let paths = Path.levels(path, options)\n\n if (reverse) {\n paths = paths.slice(1)\n } else {\n paths = paths.slice(0, -1)\n }\n\n return paths\n },\n\n common(path: Path, another: Path): Path {\n const common: Path = []\n\n for (let i = 0; i < path.length && i < another.length; i++) {\n const av = path[i]\n const bv = another[i]\n\n if (av !== bv) {\n break\n }\n\n common.push(av)\n }\n\n return common\n },\n\n compare(path: Path, another: Path): -1 | 0 | 1 {\n const min = Math.min(path.length, another.length)\n\n for (let i = 0; i < min; i++) {\n if (path[i] < another[i]) return -1\n if (path[i] > another[i]) return 1\n }\n\n return 0\n },\n\n endsAfter(path: Path, another: Path): boolean {\n const i = path.length - 1\n const as = path.slice(0, i)\n const bs = another.slice(0, i)\n const av = path[i]\n const bv = another[i]\n return Path.equals(as, bs) && av > bv\n },\n\n endsAt(path: Path, another: Path): boolean {\n const i = path.length\n const as = path.slice(0, i)\n const bs = another.slice(0, i)\n return Path.equals(as, bs)\n },\n\n endsBefore(path: Path, another: Path): boolean {\n const i = path.length - 1\n const as = path.slice(0, i)\n const bs = another.slice(0, i)\n const av = path[i]\n const bv = another[i]\n return Path.equals(as, bs) && av < bv\n },\n\n equals(path: Path, another: Path): boolean {\n return (\n path.length === another.length && path.every((n, i) => n === another[i])\n )\n },\n\n hasPrevious(path: Path): boolean {\n return path[path.length - 1] > 0\n },\n\n isAfter(path: Path, another: Path): boolean {\n return Path.compare(path, another) === 1\n },\n\n isAncestor(path: Path, another: Path): boolean {\n return path.length < another.length && Path.compare(path, another) === 0\n },\n\n isBefore(path: Path, another: Path): boolean {\n return Path.compare(path, another) === -1\n },\n\n isChild(path: Path, another: Path): boolean {\n return (\n path.length === another.length + 1 && Path.compare(path, another) === 0\n )\n },\n\n isCommon(path: Path, another: Path): boolean {\n return path.length <= another.length && Path.compare(path, another) === 0\n },\n\n isDescendant(path: Path, another: Path): boolean {\n return path.length > another.length && Path.compare(path, another) === 0\n },\n\n isParent(path: Path, another: Path): boolean {\n return (\n path.length + 1 === another.length && Path.compare(path, another) === 0\n )\n },\n\n isPath(value: any): value is Path {\n return (\n Array.isArray(value) &&\n (value.length === 0 || typeof value[0] === 'number')\n )\n },\n\n isSibling(path: Path, another: Path): boolean {\n if (path.length !== another.length) {\n return false\n }\n\n const as = path.slice(0, -1)\n const bs = another.slice(0, -1)\n const al = path[path.length - 1]\n const bl = another[another.length - 1]\n return al !== bl && Path.equals(as, bs)\n },\n\n levels(path: Path, options: PathLevelsOptions = {}): Path[] {\n const { reverse = false } = options\n const list: Path[] = []\n\n for (let i = 0; i <= path.length; i++) {\n list.push(path.slice(0, i))\n }\n\n if (reverse) {\n list.reverse()\n }\n\n return list\n },\n\n next(path: Path): Path {\n if (path.length === 0) {\n throw new Error(\n `Cannot get the next path of a root path [${path}], because it has no next index.`\n )\n }\n\n const last = path[path.length - 1]\n return path.slice(0, -1).concat(last + 1)\n },\n\n operationCanTransformPath(\n operation: Operation\n ): operation is\n | InsertNodeOperation\n | RemoveNodeOperation\n | MergeNodeOperation\n | SplitNodeOperation\n | MoveNodeOperation {\n switch (operation.type) {\n case 'insert_node':\n case 'remove_node':\n case 'merge_node':\n case 'split_node':\n case 'move_node':\n return true\n default:\n return false\n }\n },\n\n parent(path: Path): Path {\n if (path.length === 0) {\n throw new Error(`Cannot get the parent path of the root path [${path}].`)\n }\n\n return path.slice(0, -1)\n },\n\n previous(path: Path): Path {\n if (path.length === 0) {\n throw new Error(\n `Cannot get the previous path of a root path [${path}], because it has no previous index.`\n )\n }\n\n const last = path[path.length - 1]\n\n if (last <= 0) {\n throw new Error(\n `Cannot get the previous path of a first child path [${path}] because it would result in a negative index.`\n )\n }\n\n return path.slice(0, -1).concat(last - 1)\n },\n\n relative(path: Path, ancestor: Path): Path {\n if (!Path.isAncestor(ancestor, path) && !Path.equals(path, ancestor)) {\n throw new Error(\n `Cannot get the relative path of [${path}] inside ancestor [${ancestor}], because it is not above or equal to the path.`\n )\n }\n\n return path.slice(ancestor.length)\n },\n\n transform(\n path: Path | null,\n operation: Operation,\n options: PathTransformOptions = {}\n ): Path | null {\n if (!path) return null\n\n // PERF: use destructing instead of immer\n const p = [...path]\n const { affinity = 'forward' } = options\n\n // PERF: Exit early if the operation is guaranteed not to have an effect.\n if (path.length === 0) {\n return p\n }\n\n switch (operation.type) {\n case 'insert_node': {\n const { path: op } = operation\n\n if (\n Path.equals(op, p) ||\n Path.endsBefore(op, p) ||\n Path.isAncestor(op, p)\n ) {\n p[op.length - 1] += 1\n }\n\n break\n }\n\n case 'remove_node': {\n const { path: op } = operation\n\n if (Path.equals(op, p) || Path.isAncestor(op, p)) {\n return null\n } else if (Path.endsBefore(op, p)) {\n p[op.length - 1] -= 1\n }\n\n break\n }\n\n case 'merge_node': {\n const { path: op, position } = operation\n\n if (Path.equals(op, p) || Path.endsBefore(op, p)) {\n p[op.length - 1] -= 1\n } else if (Path.isAncestor(op, p)) {\n p[op.length - 1] -= 1\n p[op.length] += position\n }\n\n break\n }\n\n case 'split_node': {\n const { path: op, position } = operation\n\n if (Path.equals(op, p)) {\n if (affinity === 'forward') {\n p[p.length - 1] += 1\n } else if (affinity === 'backward') {\n // Nothing, because it still refers to the right path.\n } else {\n return null\n }\n } else if (Path.endsBefore(op, p)) {\n p[op.length - 1] += 1\n } else if (Path.isAncestor(op, p) && path[op.length] >= position) {\n p[op.length - 1] += 1\n p[op.length] -= position\n }\n\n break\n }\n\n case 'move_node': {\n const { path: op, newPath: onp } = operation\n\n // If the old and new path are the same, it's a no-op.\n if (Path.equals(op, onp)) {\n return p\n }\n\n if (Path.isAncestor(op, p) || Path.equals(op, p)) {\n const copy = onp.slice()\n\n if (Path.endsBefore(op, onp) && op.length < onp.length) {\n copy[op.length - 1] -= 1\n }\n\n return copy.concat(p.slice(op.length))\n } else if (\n Path.isSibling(op, onp) &&\n (Path.isAncestor(onp, p) || Path.equals(onp, p))\n ) {\n if (Path.endsBefore(op, p)) {\n p[op.length - 1] -= 1\n } else {\n p[op.length - 1] += 1\n }\n } else if (\n Path.endsBefore(onp, p) ||\n Path.equals(onp, p) ||\n Path.isAncestor(onp, p)\n ) {\n if (Path.endsBefore(op, p)) {\n p[op.length - 1] -= 1\n }\n\n p[onp.length - 1] += 1\n } else if (Path.endsBefore(op, p)) {\n if (Path.equals(onp, p)) {\n p[onp.length - 1] += 1\n }\n\n p[op.length - 1] -= 1\n }\n\n break\n }\n }\n\n return p\n },\n}\n","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;","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 _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;","import { createDraft, finishDraft, isDraft } from 'immer'\nimport {\n Ancestor,\n Descendant,\n Editor,\n Element,\n Node,\n NodeEntry,\n Operation,\n Path,\n Point,\n Range,\n Scrubber,\n Selection,\n Text,\n} from '../../index'\n\nexport interface GeneralTransforms {\n /**\n * Transform the editor by an operation.\n */\n transform: (editor: Editor, op: Operation) => void\n}\n\nconst applyToDraft = (editor: Editor, selection: Selection, op: Operation) => {\n switch (op.type) {\n case 'insert_node': {\n const { path, node } = op\n const parent = Node.parent(editor, path)\n const index = path[path.length - 1]\n\n if (index > parent.children.length) {\n throw new Error(\n `Cannot apply an \"insert_node\" operation at path [${path}] because the destination is past the end of the node.`\n )\n }\n\n parent.children.splice(index, 0, node)\n\n if (selection) {\n for (const [point, key] of Range.points(selection)) {\n selection[key] = Point.transform(point, op)!\n }\n }\n\n break\n }\n\n case 'insert_text': {\n const { path, offset, text } = op\n if (text.length === 0) break\n const node = Node.leaf(editor, path)\n const before = node.text.slice(0, offset)\n const after = node.text.slice(offset)\n node.text = before + text + after\n\n if (selection) {\n for (const [point, key] of Range.points(selection)) {\n selection[key] = Point.transform(point, op)!\n }\n }\n\n break\n }\n\n case 'merge_node': {\n const { path } = op\n const node = Node.get(editor, path)\n const prevPath = Path.previous(path)\n const prev = Node.get(editor, prevPath)\n const parent = Node.parent(editor, path)\n const index = path[path.length - 1]\n\n if (Text.isText(node) && Text.isText(prev)) {\n prev.text += node.text\n } else if (!Text.isText(node) && !Text.isText(prev)) {\n prev.children.push(...node.children)\n } else {\n throw new Error(\n `Cannot apply a \"merge_node\" operation at path [${path}] to nodes of different interfaces: ${Scrubber.stringify(\n node\n )} ${Scrubber.stringify(prev)}`\n )\n }\n\n parent.children.splice(index, 1)\n\n if (selection) {\n for (const [point, key] of Range.points(selection)) {\n selection[key] = Point.transform(point, op)!\n }\n }\n\n break\n }\n\n case 'move_node': {\n const { path, newPath } = op\n\n if (Path.isAncestor(path, newPath)) {\n throw new Error(\n `Cannot move a path [${path}] to new path [${newPath}] because the destination is inside itself.`\n )\n }\n\n const node = Node.get(editor, path)\n const parent = Node.parent(editor, path)\n const index = path[path.length - 1]\n\n // This is tricky, but since the `path` and `newPath` both refer to\n // the same snapshot in time, there's a mismatch. After either\n // removing the original position, the second step's path can be out\n // of date. So instead of using the `op.newPath` directly, we\n // transform `op.path` to ascertain what the `newPath` would be after\n // the operation was applied.\n parent.children.splice(index, 1)\n const truePath = Path.transform(path, op)!\n const newParent = Node.get(editor, Path.parent(truePath)) as Ancestor\n const newIndex = truePath[truePath.length - 1]\n\n newParent.children.splice(newIndex, 0, node)\n\n if (selection) {\n for (const [point, key] of Range.points(selection)) {\n selection[key] = Point.transform(point, op)!\n }\n }\n\n break\n }\n\n case 'remove_node': {\n const { path } = op\n const index = path[path.length - 1]\n const parent = Node.parent(editor, path)\n parent.children.splice(index, 1)\n\n // Transform all the points in the value, but if the point was in the\n // node that was removed we need to update the range or remove it.\n if (selection) {\n for (const [point, key] of Range.points(selection)) {\n const result = Point.transform(point, op)\n\n if (selection != null && result != null) {\n selection[key] = result\n } else {\n let prev: NodeEntry<Text> | undefined\n let next: NodeEntry<Text> | undefined\n\n for (const [n, p] of Node.texts(editor)) {\n if (Path.compare(p, path) === -1) {\n prev = [n, p]\n } else {\n next = [n, p]\n break\n }\n }\n\n let preferNext = false\n if (prev && next) {\n if (Path.equals(next[1], path)) {\n preferNext = !Path.hasPrevious(next[1])\n } else {\n preferNext =\n Path.common(prev[1], path).length <\n Path.common(next[1], path).length\n }\n }\n\n if (prev && !preferNext) {\n point.path = prev[1]\n point.offset = prev[0].text.length\n } else if (next) {\n point.path = next[1]\n point.offset = 0\n } else {\n selection = null\n }\n }\n }\n }\n\n break\n }\n\n case 'remove_text': {\n const { path, offset, text } = op\n if (text.length === 0) break\n const node = Node.leaf(editor, path)\n const before = node.text.slice(0, offset)\n const after = node.text.slice(offset + text.length)\n node.text = before + after\n\n if (selection) {\n for (const [point, key] of Range.points(selection)) {\n selection[key] = Point.transform(point, op)!\n }\n }\n\n break\n }\n\n case 'set_node': {\n const { path, properties, newProperties } = op\n\n if (path.length === 0) {\n throw new Error(`Cannot set properties on the root node!`)\n }\n\n const node = Node.get(editor, path)\n\n for (const key in newProperties) {\n if (key === 'children' || key === 'text') {\n throw new Error(`Cannot set the \"${key}\" property of nodes!`)\n }\n\n const value = newProperties[<keyof Node>key]\n\n if (value == null) {\n delete node[<keyof Node>key]\n } else {\n node[<keyof Node>key] = value\n }\n }\n\n // properties that were previously defined, but are now missing, must be deleted\n for (const key in properties) {\n if (!newProperties.hasOwnProperty(key)) {\n delete node[<keyof Node>key]\n }\n }\n\n break\n }\n\n case 'set_selection': {\n const { newProperties } = op\n\n if (newProperties == null) {\n selection = newProperties\n } else {\n if (selection == null) {\n if (!Range.isRange(newProperties)) {\n throw new Error(\n `Cannot apply an incomplete \"set_selection\" operation properties ${Scrubber.stringify(\n newProperties\n )} when there is no current selection.`\n )\n }\n\n selection = { ...newProperties }\n }\n\n for (const key in newProperties) {\n const value = newProperties[<keyof Range>key]\n\n if (value == null) {\n if (key === 'anchor' || key === 'focus') {\n throw new Error(`Cannot remove the \"${key}\" selection property`)\n }\n\n delete selection[<keyof Range>key]\n } else {\n selection[<keyof Range>key] = value\n }\n }\n }\n\n break\n }\n\n case 'split_node': {\n const { path, position, properties } = op\n\n if (path.length === 0) {\n throw new Error(\n `Cannot apply a \"split_node\" operation at path [${path}] because the root node cannot be split.`\n )\n }\n\n const node = Node.get(editor, path)\n const parent = Node.parent(editor, path)\n const index = path[path.length - 1]\n let newNode: Descendant\n\n if (Text.isText(node)) {\n const before = node.text.slice(0, position)\n const after = node.text.slice(position)\n node.text = before\n newNode = {\n ...(properties as Partial<Text>),\n text: after,\n }\n } else {\n const before = node.children.slice(0, position)\n const after = node.children.slice(position)\n node.children = before\n\n newNode = {\n ...(properties as Partial<Element>),\n children: after,\n }\n }\n\n parent.children.splice(index + 1, 0, newNode)\n\n if (selection) {\n for (const [point, key] of Range.points(selection)) {\n selection[key] = Point.transform(point, op)!\n }\n }\n\n break\n }\n }\n return selection\n}\n\n// eslint-disable-next-line no-redeclare\nexport const GeneralTransforms: GeneralTransforms = {\n transform(editor: Editor, op: Operation): void {\n editor.children = createDraft(editor.children)\n let selection = editor.selection && createDraft(editor.selection)\n\n try {\n selection = applyToDraft(editor, selection, op)\n } finally {\n editor.children = finishDraft(editor.children)\n\n if (selection) {\n editor.selection = isDraft(selection)\n ? (finishDraft(selection) as Range)\n : selection\n } else {\n editor.selection = null\n }\n }\n },\n}\n","import { Editor, Element, Location, Node, Path } from '../../index'\nimport { NodeMatch, PropsCompare, PropsMerge } from '../editor'\nimport { MaximizeMode, RangeMode } from '../../types/types'\n\nexport interface NodeInsertNodesOptions<T extends Node> {\n at?: Location\n match?: NodeMatch<T>\n mode?: RangeMode\n hanging?: boolean\n select?: boolean\n voids?: boolean\n batchDirty?: boolean\n}\n\nexport interface NodeTransforms {\n /**\n * Insert nodes in the editor\n * at the specified location or (if not defined) the current selection or (if not defined) the end of the document.\n */\n insertNodes: <T extends Node>(\n editor: Editor,\n nodes: Node | Node[],\n options?: NodeInsertNodesOptions<T>\n ) => void\n\n /**\n * Lift nodes at a specific location upwards in the document tree, splitting\n * their parent in two if necessary.\n */\n liftNodes: <T extends Node>(\n editor: Editor,\n options?: {\n at?: Location\n match?: NodeMatch<T>\n mode?: MaximizeMode\n voids?: boolean\n }\n ) => void\n\n /**\n * Merge a node at a location with the previous node of the same depth,\n * removing any empty containing nodes after the merge if necessary.\n */\n mergeNodes: <T extends Node>(\n editor: Editor,\n options?: {\n at?: Location\n match?: NodeMatch<T>\n mode?: RangeMode\n hanging?: boolean\n voids?: boolean\n }\n ) => void\n\n /**\n * Move the nodes at a location to a new location.\n */\n moveNodes: <T extends Node>(\n editor: Editor,\n options: {\n at?: Location\n match?: NodeMatch<T>\n mode?: MaximizeMode\n to: Path\n voids?: boolean\n }\n ) => void\n\n /**\n * Remove the nodes at a specific location in the document.\n */\n removeNodes: <T extends Node>(\n editor: Editor,\n options?: {\n at?: Location\n match?: NodeMatch<T>\n mode?: RangeMode\n hanging?: boolean\n voids?: boolean\n }\n ) => void\n\n /**\n * Set new properties on the nodes at a location.\n */\n setNodes: <T extends Node>(\n editor: Editor,\n props: Partial<T>,\n options?: {\n at?: Location\n match?: NodeMatch<T>\n mode?: MaximizeMode\n hanging?: boolean\n split?: boolean\n voids?: boolean\n compare?: PropsCompare\n merge?: PropsMerge\n }\n ) => void\n\n /**\n * Split the nodes at a specific location.\n */\n splitNodes: <T extends Node>(\n editor: Editor,\n options?: {\n at?: Location\n match?: NodeMatch<T>\n mode?: RangeMode\n always?: boolean\n height?: number\n voids?: boolean\n }\n ) => void\n\n /**\n * Unset properties on the nodes at a location.\n */\n unsetNodes: <T extends Node>(\n editor: Editor,\n props: string | string[],\n options?: {\n at?: Location\n match?: NodeMatch<T>\n mode?: MaximizeMode\n hanging?: boolean\n split?: boolean\n voids?: boolean\n }\n ) => void\n\n /**\n * Unwrap the nodes at a location from a parent node, splitting the parent if\n * necessary to ensure that only the content in the range is unwrapped.\n */\n unwrapNodes: <T extends Node>(\n editor: Editor,\n options?: {\n at?: Location\n match?: NodeMatch<T>\n mode?: MaximizeMode\n split?: boolean\n voids?: boolean\n }\n ) => void\n\n /**\n * Wrap the nodes at a location in a new container node, splitting the edges\n * of the range first to ensure that only the content in the range is wrapped.\n */\n wrapNodes: <T extends Node>(\n editor: Editor,\n element: Element,\n options?: {\n at?: Location\n match?: NodeMatch<T>\n mode?: MaximizeMode\n split?: boolean\n voids?: boolean\n }\n ) => void\n}\n\n// eslint-disable-next-line no-redeclare\nexport const NodeTransforms: NodeTransforms = {\n insertNodes(editor, nodes, options) {\n editor.insertNodes(nodes, options)\n },\n liftNodes(editor, options) {\n editor.liftNodes(options)\n },\n mergeNodes(editor, options) {\n editor.mergeNodes(options)\n },\n moveNodes(editor, options) {\n editor.moveNodes(options)\n },\n removeNodes(editor, options) {\n editor.removeNodes(options)\n },\n setNodes(editor, props, options) {\n editor.setNodes(props, options)\n },\n splitNodes(editor, options) {\n editor.splitNodes(options)\n },\n unsetNodes(editor, props, options) {\n editor.unsetNodes(props, options)\n },\n unwrapNodes(editor, options) {\n editor.unwrapNodes(options)\n },\n wrapNodes(editor, element, options) {\n editor.wrapNodes(element, options)\n },\n}\n","import { Editor, Location, Point, Range } from '../../index'\nimport { MoveUnit, SelectionEdge } from '../../types/types'\n\nexport interface SelectionCollapseOptions {\n edge?: SelectionEdge\n}\n\nexport interface SelectionMoveOptions {\n distance?: number\n unit?: MoveUnit\n reverse?: boolean\n edge?: SelectionEdge\n}\n\nexport interface SelectionSetPointOptions {\n edge?: SelectionEdge\n}\n\nexport interface SelectionTransforms {\n /**\n * Collapse the selection.\n */\n collapse: (editor: Editor, options?: SelectionCollapseOptions) => void\n\n /**\n * Unset the selection.\n */\n deselect: (editor: Editor) => void\n\n /**\n * Move the selection's point forward or backward.\n */\n move: (editor: Editor, options?: SelectionMoveOptions) => void\n\n /**\n * Set the selection to a new value.\n */\n select: (editor: Editor, target: Location) => void\n\n /**\n * Set new properties on one of the selection's points.\n */\n setPoint: (\n editor: Editor,\n props: Partial<Point>,\n options?: SelectionSetPointOptions\n ) => void\n\n /**\n * Set new properties on the selection.\n */\n setSelection: (editor: Editor, props: Partial<Range>) => void\n}\n\n// eslint-disable-next-line no-redeclare\nexport const SelectionTransforms: SelectionTransforms = {\n collapse(editor, options) {\n editor.collapse(options)\n },\n deselect(editor) {\n editor.deselect()\n },\n move(editor, options) {\n editor.move(options)\n },\n select(editor, target) {\n editor.select(target)\n },\n setPoint(editor, props, options) {\n editor.setPoint(props, options)\n },\n setSelection(editor, props) {\n editor.setSelection(props)\n },\n}\n","import { isPlainObject } from 'is-plain-object'\n\n/*\n Custom deep equal comparison for Slate nodes.\n\n We don't need general purpose deep equality;\n Slate only supports plain values, Arrays, and nested objects.\n Complex values nested inside Arrays are not supported.\n\n Slate objects are designed to be serialised, so\n missing keys are deliberately normalised to undefined.\n */\nexport const isDeepEqual = (\n node: Record<string, any>,\n another: Record<string, any>\n): boolean => {\n for (const key in node) {\n const a = node[key]\n const b = another[key]\n if (isPlainObject(a) && isPlainObject(b)) {\n if (!isDeepEqual(a, b)) return false\n } else if (Array.isArray(a) && Array.isArray(b)) {\n if (a.length !== b.length) return false\n for (let i = 0; i < a.length; i++) {\n if (a[i] !== b[i]) return false\n }\n } else if (a !== b) {\n return false\n }\n }\n\n /*\n Deep object equality is only necessary in one direction; in the reverse direction\n we are only looking for keys that are missing.\n As above, undefined keys are normalised to missing.\n */\n\n for (const key in another) {\n if (node[key] === undefined && another[key] !== undefined) {\n return false\n }\n }\n\n return true\n}\n","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;","import { produce } from 'immer'\nimport { isPlainObject } from 'is-plain-object'\nimport { ExtendedType, Operation, Path, Point, PointEntry } from '..'\nimport { RangeDirection } from '../types/types'\n\n/**\n * `Range` objects are a set of points that refer to a specific span of a Slate\n * document. They can define a span inside a single node or a can span across\n * multiple nodes.\n */\n\nexport interface BaseRange {\n anchor: Point\n focus: Point\n}\n\nexport type Range = ExtendedType<'Range', BaseRange>\n\nexport interface RangeEdgesOptions {\n reverse?: boolean\n}\n\nexport interface RangeTransformOptions {\n affinity?: RangeDirection | null\n}\n\nexport interface RangeInterface {\n /**\n * Get the start and end points of a range, in the order in which they appear\n * in the document.\n */\n edges: (range: Range, options?: RangeEdgesOptions) => [Point, Point]\n\n /**\n * Get the end point of a range.\n */\n end: (range: Range) => Point\n\n /**\n * Check if a range is exactly equal to another.\n */\n equals: (range: Range, another: Range) => boolean\n\n /**\n * Check if a range includes a path, a point or part of another range.\n */\n includes: (range: Range, target: Path | Point | Range) => boolean\n\n /**\n * Check if a range includes another range.\n */\n surrounds: (range: Range, target: Range) => boolean\n\n /**\n * Get the intersection of a range with another.\n */\n intersection: (range: Range, another: Range) => Range | null\n\n /**\n * Check if a range is backward, meaning that its anchor point appears in the\n * document _after_ its focus point.\n */\n isBackward: (range: Range) => boolean\n\n /**\n * Check if a range is collapsed, meaning that both its anchor and focus\n * points refer to the exact same position in the document.\n */\n isCollapsed: (range: Range) => boolean\n\n /**\n * Check if a range is expanded.\n *\n * This is the opposite of [[Range.isCollapsed]] and is provided for legibility.\n */\n isExpanded: (range: Range) => boolean\n\n /**\n * Check if a range is forward.\n *\n * This is the opposite of [[Range.isBackward]] and is provided for legibility.\n */\n isForward: (range: Range) => boolean\n\n /**\n * Check if a value implements the [[Range]] interface.\n */\n isRange: (value: any) => value is Range\n\n /**\n * Iterate through all of the point entries in a range.\n */\n points: (range: Range) => Generator<PointEntry, void, undefined>\n\n /**\n * Get the start point of a range.\n */\n start: (range: Range) => Point\n\n /**\n * Transform a range by an operation.\n */\n transform: (\n range: Range,\n op: Operation,\n options?: RangeTransformOptions\n ) => Range | null\n}\n\n// eslint-disable-next-line no-redeclare\nexport const Range: RangeInterface = {\n edges(range: Range, options: RangeEdgesOptions = {}): [Point, Point] {\n const { reverse = false } = options\n const { anchor, focus } = range\n return Range.isBackward(range) === reverse\n ? [anchor, focus]\n : [focus, anchor]\n },\n\n end(range: Range): Point {\n const [, end] = Range.edges(range)\n return end\n },\n\n equals(range: Range, another: Range): boolean {\n return (\n Point.equals(range.anchor, another.anchor) &&\n Point.equals(range.focus, another.focus)\n )\n },\n\n surrounds(range: Range, target: Range): boolean {\n const intersectionRange = Range.intersection(range, target)\n if (!intersectionRange) {\n return false\n }\n return Range.equals(intersectionRange, target)\n },\n\n includes(range: Range, target: Path | Point | Range): boolean {\n if (Range.isRange(target)) {\n if (\n Range.includes(range, target.anchor) ||\n Range.includes(range, target.focus)\n ) {\n return true\n }\n\n const [rs, re] = Range.edges(range)\n const [ts, te] = Range.edges(target)\n return Point.isBefore(rs, ts) && Point.isAfter(re, te)\n }\n\n const [start, end] = Range.edges(range)\n let isAfterStart = false\n let isBeforeEnd = false\n\n if (Point.isPoint(target)) {\n isAfterStart = Point.compare(target, start) >= 0\n isBeforeEnd = Point.compare(target, end) <= 0\n } else {\n isAfterStart = Path.compare(target, start.path) >= 0\n isBeforeEnd = Path.compare(target, end.path) <= 0\n }\n\n return isAfterStart && isBeforeEnd\n },\n\n intersection(range: Range, another: Range): Range | null {\n const { anchor, focus, ...rest } = range\n const [s1, e1] = Range.edges(range)\n const [s2, e2] = Range.edges(another)\n const start = Point.isBefore(s1, s2) ? s2 : s1\n const end = Point.isBefore(e1, e2) ? e1 : e2\n\n if (Point.isBefore(end, start)) {\n return null\n } else {\n return { anchor: start, focus: end, ...rest }\n }\n },\n\n isBackward(range: Range): boolean {\n const { anchor, focus } = range\n return Point.isAfter(anchor, focus)\n },\n\n isCollapsed(range: Range): boolean {\n const { anchor, focus } = range\n return Point.equals(anchor, focus)\n },\n\n isExpanded(range: Range): boolean {\n return !Range.isCollapsed(range)\n },\n\n isForward(range: Range): boolean {\n return !Range.isBackward(range)\n },\n\n isRange(value: any): value is Range {\n return (\n isPlainObject(value) &&\n Point.isPoint(value.anchor) &&\n Point.isPoint(value.focus)\n )\n },\n\n *points(range: Range): Generator<PointEntry, void, undefined> {\n yield [range.anchor, 'anchor']\n yield [range.focus, 'focus']\n },\n\n start(range: Range): Point {\n const [start] = Range.edges(range)\n return start\n },\n\n transform(\n range: Range | null,\n op: Operation,\n options: RangeTransformOptions = {}\n ): Range | null {\n return produce(range, r => {\n if (r === null) {\n return null\n }\n const { affinity = 'inward' } = options\n let affinityAnchor: 'forward' | 'backward' | null\n let affinityFocus: 'forward' | 'backward' | null\n\n if (affinity === 'inward') {\n // If the range is collapsed, make sure to use the same affinity to\n // avoid the two points passing each other and expanding in the opposite\n // direction\n const isCollapsed = Range.isCollapsed(r)\n if (Range.isForward(r)) {\n affinityAnchor = 'forward'\n affinityFocus = isCollapsed ? affinityAnchor : 'backward'\n } else {\n affinityAnchor = 'backward'\n affinityFocus = isCollapsed ? affinityAnchor : 'forward'\n }\n } else if (affinity === 'outward') {\n if (Range.isForward(r)) {\n affinityAnchor = 'backward'\n affinityFocus = 'forward'\n } else {\n affinityAnchor = 'forward'\n affinityFocus = 'backward'\n }\n } else {\n affinityAnchor = affinity\n affinityFocus = affinity\n }\n const anchor = Point.transform(r.anchor, op, { affinity: affinityAnchor })\n const focus = Point.transform(r.focus, op, { affinity: affinityFocus })\n\n if (!anchor || !focus) {\n return null\n }\n\n r.anchor = anchor\n r.focus = focus\n })\n },\n}\n","import { isPlainObject } from 'is-plain-object'\nimport { Ancestor, Descendant, Editor, ExtendedType, Node, Path } from '..'\n\n/**\n * `Element` objects are a type of node in a Slate document that contain other\n * element nodes or text nodes. They can be either \"blocks\" or \"inlines\"\n * depending on the Slate editor's configuration.\n */\n\nexport interface BaseElement {\n children: Descendant[]\n}\n\nexport type Element = ExtendedType<'Element', BaseElement>\n\nexport interface ElementInterface {\n /**\n * Check if a value implements the 'Ancestor' interface.\n */\n isAncestor: (value: any) => value is Ancestor\n\n /**\n * Check if a value implements the `Element` interface.\n */\n isElement: (value: any) => value is Element\n\n /**\n * Check if a value is an array of `Element` objects.\n */\n isElementList: (value: any) => value is Element[]\n\n /**\n * Check if a set of props is a partial of Element.\n */\n isElementProps: (props: any) => props is Partial<Element>\n\n /**\n * Check if a value implements the `Element` interface and has elementKey with selected value.\n * Default it check to `type` key value\n */\n isElementType: <T extends Element>(\n value: any,\n elementVal: string,\n elementKey?: string\n ) => value is T\n\n /**\n * Check if an element matches set of properties.\n *\n * Note: this checks custom properties, and it does not ensure that any\n * children are equivalent.\n */\n matches: (element: Element, props: Partial<Element>) => boolean\n}\n\n/**\n * Shared the function with isElementType utility\n */\nconst isElement = (value: any): value is Element => {\n return (\n isPlainObject(value) &&\n Node.isNodeList(value.children) &&\n !Editor.isEditor(value)\n )\n}\n\n// eslint-disable-next-line no-redeclare\nexport const Element: ElementInterface = {\n isAncestor(value: any): value is Ancestor {\n return isPlainObject(value) && Node.isNodeList(value.children)\n },\n\n isElement,\n\n isElementList(value: any): value is Element[] {\n return Array.isArray(value) && value.every(val => Element.isElement(val))\n },\n\n isElementProps(props: any): props is Partial<Element> {\n return (props as Partial<Element>).children !== undefined\n },\n\n isElementType: <T extends Element>(\n value: any,\n elementVal: string,\n elementKey: string = 'type'\n ): value is T => {\n return (\n isElement(value) && value[<keyof Descendant>elementKey] === elementVal\n )\n },\n\n matches(element: Element, props: Partial<Element>): boolean {\n for (const key in props) {\n if (key === 'children') {\n continue\n }\n\n if (element[<keyof Descendant>key] !== props[<keyof Descendant>key]) {\n return false\n }\n }\n\n return true\n },\n}\n\n/**\n * `ElementEntry` objects refer to an `Element` and the `Path` where it can be\n * found inside a root node.\n */\nexport type ElementEntry = [Element, Path]\n","import { produce } from 'immer'\nimport { Editor, Path, Range, Scrubber, Text } from '..'\nimport { Element, ElementEntry } from './element'\n\n/**\n * The `Node` union type represents all of the different types of nodes that\n * occur in a Slate document tree.\n */\n\nexport type BaseNode = Editor | Element | Text\nexport type Node = Editor | Element | Text\n\nexport interface NodeAncestorsOptions {\n reverse?: boolean\n}\n\nexport interface NodeChildrenOptions {\n reverse?: boolean\n}\n\nexport interface NodeDescendantsOptions {\n from?: Path\n to?: Path\n reverse?: boolean\n pass?: (node: NodeEntry) => boolean\n}\n\nexport interface NodeElementsOptions {\n from?: Path\n to?: Path\n reverse?: boolean\n pass?: (node: NodeEntry) => boolean\n}\n\nexport interface NodeLevelsOptions {\n reverse?: boolean\n}\n\nexport interface NodeNodesOptions {\n from?: Path\n to?: Path\n reverse?: boolean\n pass?: (entry: NodeEntry) => boolean\n}\n\nexport interface NodeTextsOptions {\n from?: Path\n to?: Path\n reverse?: boolean\n pass?: (node: NodeEntry) => boolean\n}\n\nexport interface NodeInterface {\n /**\n * Get the node at a specific path, asserting that it's an ancestor node.\n */\n ancestor: (root: Node, path: Path) => Ancestor\n\n /**\n * Return a generator of all the ancestor nodes above a specific path.\n *\n * By default the order is top-down, from highest to lowest ancestor in\n * the tree, but you can pass the `reverse: true` option to go bottom-up.\n */\n ancestors: (\n root: Node,\n path: Path,\n options?: NodeAncestorsOptions\n ) => Generator<NodeEntry<Ancestor>, void, undefined>\n\n /**\n * Get the child of a node at a specific index.\n */\n child: (root: Node, index: number) => Descendant\n\n /**\n * Iterate over the children of a node at a specific path.\n */\n children: (\n root: Node,\n path: Path,\n options?: NodeChildrenOptions\n ) => Generator<NodeEntry<Descendant>, void, undefined>\n\n /**\n * Get an entry for the common ancesetor node of two paths.\n */\n common: (root: Node, path: Path, another: Path) => NodeEntry\n\n /**\n * Get the node at a specific path, asserting that it's a descendant node.\n */\n descendant: (root: Node, path: Path) => Descendant\n\n /**\n * Return a generator of all the descendant node entries inside a root node.\n */\n descendants: (\n root: Node,\n options?: NodeDescendantsOptions\n ) => Generator<NodeEntry<Descendant>, void, undefined>\n\n /**\n * Return a generator of all the element nodes inside a root node. Each iteration\n * will return an `ElementEntry` tuple consisting of `[Element, Path]`. If the\n * root node is an element it will be included in the iteration as well.\n */\n elements: (\n root: Node,\n options?: NodeElementsOptions\n ) => Generator<ElementEntry, void, undefined>\n\n /**\n * Extract props from a Node.\n */\n extractProps: (node: Node) => NodeProps\n\n /**\n * Get the first node entry in a root node from a path.\n */\n first: (root: Node, path: Path) => NodeEntry\n\n /**\n * Get the sliced fragment represented by a range inside a root node.\n */\n fragment: (root: Node, range: Range) => Descendant[]\n\n /**\n * Get the descendant node referred to by a specific path. If the path is an\n * empty array, it refers to the root node itself.\n */\n get: (root: Node, path: Path) => Node\n\n /**\n * Similar to get, but returns undefined if the node does not exist.\n */\n getIf: (root: Node, path: Path) => Node | undefined\n\n /**\n * Check if a descendant node exists at a specific path.\n */\n has: (root: Node, path: Path) => boolean\n\n /**\n * Check if a value implements the `Node` interface.\n */\n isNode: (value: any) => value is Node\n\n /**\n * Check if a value is a list of `Node` objects.\n */\n isNodeList: (value: any) => value is Node[]\n\n /**\n * Get the last node entry in a root node from a path.\n */\n last: (root: Node, path: Path) => NodeEntry\n\n /**\n * Get the node at a specific path, ensuring it's a leaf text node.\n */\n leaf: (root: Node, path: Path) => Text\n\n /**\n * Return a generator of the in a branch of the tree, from a specific path.\n *\n * By default the order is top-down, from highest to lowest node in the tree,\n * but you can pass the `reverse: true` option to go bottom-up.\n */\n levels: (\n root: Node,\n path: Path,\n options?: NodeLevelsOptions\n ) => Generator<NodeEntry, void, undefined>\n\n /**\n * Check if a node matches a set of props.\n */\n matches: (node: Node, props: Partial<Node>) => boolean\n\n /**\n * Return a generator of all the node entries of a root node. Each entry is\n * returned as a `[Node, Path]` tuple, with the path referring to the node's\n * position inside the root node.\n */\n nodes: (\n root: Node,\n options?: NodeNodesOptions\n ) => Generator<NodeEntry, void, undefined>\n\n /**\n * Get the parent of a node at a specific path.\n */\n parent: (root: Node, path: Path) => Ancestor\n\n /**\n * Get the concatenated text string of a node's content.\n *\n * Note that this will not include spaces or line breaks between block nodes.\n * It is not a user-facing string, but a string for performing offset-related\n * computations for a node.\n */\n string: (node: Node) => string\n\n /**\n * Return a generator of all leaf text nodes in a root node.\n */\n texts: (\n root: Node,\n options?: NodeTextsOptions\n ) => Generator<NodeEntry<Text>, void, undefined>\n}\n\nconst IS_NODE_LIST_CACHE = new WeakMap<any[], boolean>()\n\n// eslint-disable-next-line no-redeclare\nexport const Node: NodeInterface = {\n ancestor(root: Node, path: Path): Ancestor {\n const node = Node.get(root, path)\n\n if (Text.isText(node)) {\n throw new Error(\n `Cannot get the ancestor node at path [${path}] because it refers to a text node instead: ${Scrubber.stringify(\n node\n )}`\n )\n }\n\n return node\n },\n\n *ancestors(\n root: Node,\n path: Path,\n options: NodeAncestorsOptions = {}\n ): Generator<NodeEntry<Ancestor>, void, undefined> {\n for (const p of Path.ancestors(path, options)) {\n const n = Node.ancestor(root, p)\n const entry: NodeEntry<Ancestor> = [n, p]\n yield entry\n }\n },\n\n child(root: Node, index: number): Descendant {\n if (Text.isText(root)) {\n throw new Error(\n `Cannot get the child of a text node: ${Scrubber.stringify(root)}`\n )\n }\n\n const c = root.children[index] as Descendant\n\n if (c == null) {\n throw new Error(\n `Cannot get child at index \\`${index}\\` in node: ${Scrubber.stringify(\n root\n )}`\n )\n }\n\n return c\n },\n\n *children(\n root: Node,\n path: Path,\n options: NodeChildrenOptions = {}\n ): Generator<NodeEntry<Descendant>, void, undefined> {\n const { reverse = false } = options\n const ancestor = Node.ancestor(root, path)\n const { children } = ancestor\n let index = reverse ? children.length - 1 : 0\n\n while (reverse ? index >= 0 : index < children.length) {\n const child = Node.child(ancestor, index)\n const childPath = path.concat(index)\n yield [child, childPath]\n index = reverse ? index - 1 : index + 1\n }\n },\n\n common(root: Node, path: Path, another: Path): NodeEntry {\n const p = Path.common(path, another)\n const n = Node.get(root, p)\n return [n, p]\n },\n\n descendant(root: Node, path: Path): Descendant {\n const node = Node.get(root, path)\n\n if (Editor.isEditor(node)) {\n throw new Error(\n `Cannot get the descendant node at path [${path}] because it refers to the root editor node instead: ${Scrubber.stringify(\n node\n )}`\n )\n }\n\n return node\n },\n\n *descendants(\n root: Node,\n options: NodeDescendantsOptions = {}\n ): Generator<NodeEntry<Descendant>, void, undefined> {\n for (const [node, path] of Node.nodes(root, options)) {\n if (path.length !== 0) {\n // NOTE: we have to coerce here because checking the path's length does\n // guarantee that `node` is not a `Editor`, but TypeScript doesn't know.\n yield [node, path] as NodeEntry<Descendant>\n }\n }\n },\n\n *elements(\n root: Node,\n options: NodeElementsOptions = {}\n ): Generator<ElementEntry, void, undefined> {\n for (const [node, path] of Node.nodes(root, options)) {\n if (Element.isElement(node)) {\n yield [node, path]\n }\n }\n },\n\n extractProps(node: Node): NodeProps {\n if (Element.isAncestor(node)) {\n const { children, ...properties } = node\n\n return properties\n } else {\n const { text, ...properties } = node\n\n return properties\n }\n },\n\n first(root: Node, path: Path): NodeEntry {\n const p = path.slice()\n let n = Node.get(root, p)\n\n while (n) {\n if (Text.isText(n) || n.children.length === 0) {\n break\n } else {\n n = n.children[0]\n p.push(0)\n }\n }\n\n return [n, p]\n },\n\n fragment(root: Node, range: Range): Descendant[] {\n if (Text.isText(root)) {\n throw new Error(\n `Cannot get a fragment starting from a root text node: ${Scrubber.stringify(\n root\n )}`\n )\n }\n\n const newRoot = produce({ children: root.children }, r => {\n const [start, end] = Range.edges(range)\n const nodeEntries = Node.nodes(r, {\n reverse: true,\n pass: ([, path]) => !Range.includes(range, path),\n })\n\n for (const [, path] of nodeEntries) {\n if (!Range.includes(range, path)) {\n const parent = Node.parent(r, path)\n const index = path[path.length - 1]\n parent.children.splice(index, 1)\n }\n\n if (Path.equals(path, end.path)) {\n const leaf = Node.leaf(r, path)\n leaf.text = leaf.text.slice(0, end.offset)\n }\n\n if (Path.equals(path, start.path)) {\n const leaf = Node.leaf(r, path)\n leaf.text = leaf.text.slice(start.offset)\n }\n }\n\n if (Editor.isEditor(r)) {\n r.selection = null\n }\n })\n\n return newRoot.children\n },\n\n get(root: Node, path: Path): Node {\n const node = Node.getIf(root, path)\n if (node === undefined) {\n throw new Error(\n `Cannot find a descendant at path [${path}] in node: ${Scrubber.stringify(\n root\n )}`\n )\n }\n return node\n },\n\n getIf(root: Node, path: Path): Node | undefined {\n let node = root\n\n for (let i = 0; i < path.length; i++) {\n const p = path[i]\n\n if (Text.isText(node) || !node.children[p]) {\n return\n }\n\n node = node.children[p]\n }\n\n return node\n },\n\n has(root: Node, path: Path): boolean {\n let node = root\n\n for (let i = 0; i < path.length; i++) {\n const p = path[i]\n\n if (Text.isText(node) || !node.children[p]) {\n return false\n }\n\n node = node.children[p]\n }\n\n return true\n },\n\n isNode(value: any): value is Node {\n return (\n Text.isText(value) || Element.isElement(value) || Editor.isEditor(value)\n )\n },\n\n isNodeList(value: any): value is Node[] {\n if (!Array.isArray(value)) {\n return false\n }\n const cachedResult = IS_NODE_LIST_CACHE.get(value)\n if (cachedResult !== undefined) {\n return cachedResult\n }\n const isNodeList = value.every(val => Node.isNode(val))\n IS_NODE_LIST_CACHE.set(value, isNodeList)\n return isNodeList\n },\n\n last(root: Node, path: Path): NodeEntry {\n const p = path.slice()\n let n = Node.get(root, p)\n\n while (n) {\n if (Text.isText(n) || n.children.length === 0) {\n break\n } else {\n const i = n.children.length - 1\n n = n.children[i]\n p.push(i)\n }\n }\n\n return [n, p]\n },\n\n leaf(root: Node, path: Path): Text {\n const node = Node.get(root, path)\n\n if (!Text.isText(node)) {\n throw new Error(\n `Cannot get the leaf node at path [${path}] because it refers to a non-leaf node: ${Scrubber.stringify(\n node\n )}`\n )\n }\n\n return node\n },\n\n *levels(\n root: Node,\n path: Path,\n options: NodeLevelsOptions = {}\n ): Generator<NodeEntry, void, undefined> {\n for (const p of Path.levels(path, options)) {\n const n = Node.get(root, p)\n yield [n, p]\n }\n },\n\n matches(node: Node, props: Partial<Node>): boolean {\n return (\n (Element.isElement(node) &&\n Element.isElementProps(props) &&\n Element.matches(node, props)) ||\n (Text.isText(node) &&\n Text.isTextProps(props) &&\n Text.matches(node, props))\n )\n },\n\n *nodes(\n root: Node,\n options: NodeNodesOptions = {}\n ): Generator<NodeEntry, void, undefined> {\n const { pass, reverse = false } = options\n const { from = [], to } = options\n const visited = new Set()\n let p: Path = []\n let n = root\n\n while (true) {\n if (to && (reverse ? Path.isBefore(p, to) : Path.isAfter(p, to))) {\n break\n }\n\n if (!visited.has(n)) {\n yield [n, p]\n }\n\n // If we're allowed to go downward and we haven't descended yet, do.\n if (\n !visited.has(n) &&\n !Text.isText(n) &&\n n.children.length !== 0 &&\n (pass == null || pass([n, p]) === false)\n ) {\n visited.add(n)\n let nextIndex = reverse ? n.children.length - 1 : 0\n\n if (Path.isAncestor(p, from)) {\n nextIndex = from[p.length]\n }\n\n p = p.concat(nextIndex)\n n = Node.get(root, p)\n continue\n }\n\n // If we're at the root and we can't go down, we're done.\n if (p.length === 0) {\n break\n }\n\n // If we're going forward...\n if (!reverse) {\n const newPath = Path.next(p)\n\n if (Node.has(root, newPath)) {\n p = newPath\n n = Node.get(root, p)\n continue\n }\n }\n\n // If we're going backward...\n if (reverse && p[p.length - 1] !== 0) {\n const newPath = Path.previous(p)\n p = newPath\n n = Node.get(root, p)\n continue\n }\n\n // Otherwise we're going upward...\n p = Path.parent(p)\n n = Node.get(root, p)\n visited.add(n)\n }\n },\n\n parent(root: Node, path: Path): Ancestor {\n const parentPath = Path.parent(path)\n const p = Node.get(root, parentPath)\n\n if (Text.isText(p)) {\n throw new Error(\n `Cannot get the parent of path [${path}] because it does not exist in the root.`\n )\n }\n\n return p\n },\n\n string(node: Node): string {\n if (Text.isText(node)) {\n return node.text\n } else {\n return node.children.map(Node.string).join('')\n }\n },\n\n *texts(\n root: Node,\n options: NodeTextsOptions = {}\n ): Generator<NodeEntry<Text>, void, undefined> {\n for (const [node, path] of Node.nodes(root, options)) {\n if (Text.isText(node)) {\n yield [node, path]\n }\n }\n },\n}\n\n/**\n * The `Descendant` union type represents nodes that are descendants in the\n * tree. It is returned as a convenience in certain cases to narrow a value\n * further than the more generic `Node` union.\n */\n\nexport type Descendant = Element | Text\n\n/**\n * The `Ancestor` union type represents nodes that are ancestors in the tree.\n * It is returned as a convenience in certain cases to narrow a value further\n * than the more generic `Node` union.\n */\n\nexport type Ancestor = Editor | Element\n\n/**\n * `NodeEntry` objects are returned when iterating over the nodes in a Slate\n * document tree. They consist of the node and its `Path` relative to the root\n * node in the document.\n */\n\nexport type NodeEntry<T extends Node = Node> = [T, Path]\n\n/**\n * Convenience type for returning the props of a node.\n */\nexport type NodeProps =\n | Omit<Editor, 'children'>\n | Omit<Element, 'children'>\n | Omit<Text, 'text'>\n","import { ExtendedType, Node, Path, Range } from '..'\nimport { isPlainObject } from 'is-plain-object'\n\nexport type BaseInsertNodeOperation = {\n type: 'insert_node'\n path: Path\n node: Node\n}\n\nexport type InsertNodeOperation = ExtendedType<\n 'InsertNodeOperation',\n BaseInsertNodeOperation\n>\n\nexport type BaseInsertTextOperation = {\n type: 'insert_text'\n path: Path\n offset: number\n text: string\n}\n\nexport type InsertTextOperation = ExtendedType<\n 'InsertTextOperation',\n BaseInsertTextOperation\n>\n\nexport type BaseMergeNodeOperation = {\n type: 'merge_node'\n path: Path\n position: number\n properties: Partial<Node>\n}\n\nexport type MergeNodeOperation = ExtendedType<\n 'MergeNodeOperation',\n BaseMergeNodeOperation\n>\n\nexport type BaseMoveNodeOperation = {\n type: 'move_node'\n path: Path\n newPath: Path\n}\n\nexport type MoveNodeOperation = ExtendedType<\n 'MoveNodeOperation',\n BaseMoveNodeOperation\n>\n\nexport type BaseRemoveNodeOperation = {\n type: 'remove_node'\n path: Path\n node: Node\n}\n\nexport type RemoveNodeOperation = ExtendedType<\n 'RemoveNodeOperation',\n BaseRemoveNodeOperation\n>\n\nexport type BaseRemoveTextOperation = {\n type: 'remove_text'\n path: Path\n offset: number\n text: string\n}\n\nexport type RemoveTextOperation = ExtendedType<\n 'RemoveTextOperation',\n BaseRemoveTextOperation\n>\n\nexport type BaseSetNodeOperation = {\n type: 'set_node'\n path: Path\n properties: Partial<Node>\n newProperties: Partial<Node>\n}\n\nexport type SetNodeOperation = ExtendedType<\n 'SetNodeOperation',\n BaseSetNodeOperation\n>\n\nexport type BaseSetSelectionOperation =\n | {\n type: 'set_selection'\n properties: null\n newProperties: Range\n }\n | {\n type: 'set_selection'\n properties: Partial<Range>\n newProperties: Partial<Range>\n }\n | {\n type: 'set_selection'\n properties: Range\n newProperties: null\n }\n\nexport type SetSelectionOperation = ExtendedType<\n 'SetSelectionOperation',\n BaseSetSelectionOperation\n>\n\nexport type BaseSplitNodeOperation = {\n type: 'split_node'\n path: Path\n position: number\n properties: Partial<Node>\n}\n\nexport type SplitNodeOperation = ExtendedType<\n 'SplitNodeOperation',\n BaseSplitNodeOperation\n>\n\nexport type NodeOperation =\n | InsertNodeOperation\n | MergeNodeOperation\n | MoveNodeOperation\n | RemoveNodeOperation\n | SetNodeOperation\n | SplitNodeOperation\n\nexport type SelectionOperation = SetSelectionOperation\n\nexport type TextOperation = InsertTextOperation | RemoveTextOperation\n\n/**\n * `Operation` objects define the low-level instructions that Slate editors use\n * to apply changes to their internal state. Representing all changes as\n * operations is what allows Slate editors to easily implement history,\n * collaboration, and other features.\n */\n\nexport type BaseOperation = NodeOperation | SelectionOperation | TextOperation\nexport type Operation = ExtendedType<'Operation', BaseOperation>\n\nexport interface OperationInterface {\n /**\n * Check if a value is a `NodeOperation` object.\n */\n isNodeOperation: (value: any) => value is NodeOperation\n\n /**\n * Check if a value is an `Operation` object.\n */\n isOperation: (value: any) => value is Operation\n\n /**\n * Check if a value is a list of `Operation` objects.\n */\n isOperationList: (value: any) => value is Operation[]\n\n /**\n * Check if a value is a `SelectionOperation` object.\n */\n isSelectionOperation: (value: any) => value is SelectionOperation\n\n /**\n * Check if a value is a `TextOperation` object.\n */\n isTextOperation: (value: any) => value is TextOperation\n\n /**\n * Invert an operation, returning a new operation that will exactly undo the\n * original when applied.\n */\n inverse: (op: Operation) => Operation\n}\n\n// eslint-disable-next-line no-redeclare\nexport const Operation: OperationInterface = {\n isNodeOperation(value: any): value is NodeOperation {\n return Operation.isOperation(value) && value.type.endsWith('_node')\n },\n\n isOperation(value: any): value is Operation {\n if (!isPlainObject(value)) {\n return false\n }\n\n switch (value.type) {\n case 'insert_node':\n return Path.isPath(value.path) && Node.isNode(value.node)\n case 'insert_text':\n return (\n typeof value.offset === 'number' &&\n typeof value.text === 'string' &&\n Path.isPath(value.path)\n )\n case 'merge_node':\n return (\n typeof value.position === 'number' &&\n Path.isPath(value.path) &&\n isPlainObject(value.properties)\n )\n case 'move_node':\n return Path.isPath(value.path) && Path.isPath(value.newPath)\n case 'remove_node':\n return Path.isPath(value.path) && Node.isNode(value.node)\n case 'remove_text':\n return (\n typeof value.offset === 'number' &&\n typeof value.text === 'string' &&\n Path.isPath(value.path)\n )\n case 'set_node':\n return (\n Path.isPath(value.path) &&\n isPlainObject(value.properties) &&\n isPlainObject(value.newProperties)\n )\n case 'set_selection':\n return (\n (value.properties === null && Range.isRange(value.newProperties)) ||\n (value.newProperties === null && Range.isRange(value.properties)) ||\n (isPlainObject(value.properties) &&\n isPlainObject(value.newProperties))\n )\n case 'split_node':\n return (\n Path.isPath(value.path) &&\n typeof value.position === 'number' &&\n isPlainObject(value.properties)\n )\n default:\n return false\n }\n },\n\n isOperationList(value: any): value is Operation[] {\n return (\n Array.isArray(value) && value.every(val => Operation.isOperation(val))\n )\n },\n\n isSelectionOperation(value: any): value is SelectionOperation {\n return Operation.isOperation(value) && value.type.endsWith('_selection')\n },\n\n isTextOperation(value: any): value is TextOperation {\n return Operation.isOperation(value) && value.type.endsWith('_text')\n },\n\n inverse(op: Operation): Operation {\n switch (op.type) {\n case 'insert_node': {\n return { ...op, type: 'remove_node' }\n }\n\n case 'insert_text': {\n return { ...op, type: 'remove_text' }\n }\n\n case 'merge_node': {\n return { ...op, type: 'split_node', path: Path.previous(op.path) }\n }\n\n case 'move_node': {\n const { newPath, path } = op\n\n // PERF: in this case the move operation is a no-op anyways.\n if (Path.equals(newPath, path)) {\n return op\n }\n\n // If the move happens completely within a single parent the path and\n // newPath are stable with respect to each other.\n if (Path.isSibling(path, newPath)) {\n return { ...op, path: newPath, newPath: path }\n }\n\n // If the move does not happen within a single parent it is possible\n // for the move to impact the true path to the location where the node\n // was removed from and where it was inserted. We have to adjust for this\n // and find the original path. We can accomplish this (only in non-sibling)\n // moves by looking at the impact of the move operation on the node\n // after the original move path.\n const inversePath = Path.transform(path, op)!\n const inverseNewPath = Path.transform(Path.next(path), op)!\n return { ...op, path: inversePath, newPath: inverseNewPath }\n }\n\n case 'remove_node': {\n return { ...op, type: 'insert_node' }\n }\n\n case 'remove_text': {\n return { ...op, type: 'insert_text' }\n }\n\n case 'set_node': {\n const { properties, newProperties } = op\n return { ...op, properties: newProperties, newProperties: properties }\n }\n\n case 'set_selection': {\n const { properties, newProperties } = op\n\n if (properties == null) {\n return {\n ...op,\n properties: newProperties as Range,\n newProperties: null,\n }\n } else if (newProperties == null) {\n return {\n ...op,\n properties: null,\n newProperties: properties as Range,\n }\n } else {\n return { ...op, properties: newProperties, newProperties: properties }\n }\n }\n\n case 'split_node': {\n return { ...op, type: 'merge_node', path: Path.next(op.path) }\n }\n }\n },\n}\n","import { Editor, EditorInterface } from '../interfaces/editor'\nimport { isPlainObject } from 'is-plain-object'\nimport { Range } from '../interfaces/range'\nimport { Node } from '../interfaces/node'\nimport { Operation } from '../interfaces/operation'\n\nconst IS_EDITOR_CACHE = new WeakMap<object, boolean>()\n\nexport const isEditor: EditorInterface['isEditor'] = (\n value: any\n): value is Editor => {\n const cachedIsEditor = IS_EDITOR_CACHE.get(value)\n if (cachedIsEditor !== undefined) {\n return cachedIsEditor\n }\n\n if (!isPlainObject(value)) {\n return false\n }\n\n const isEditor =\n typeof value.addMark === 'function' &&\n typeof value.apply === 'function' &&\n typeof value.deleteFragment === 'function' &&\n typeof value.insertBreak === 'function' &&\n typeof value.insertSoftBreak === 'function' &&\n typeof value.insertFragment === 'function' &&\n typeof value.insertNode === 'function' &&\n typeof value.insertText === 'function' &&\n typeof value.isElementReadOnly === 'function' &&\n typeof value.isInline === 'function' &&\n typeof value.isSelectable === 'function' &&\n typeof value.isVoid === 'function' &&\n typeof value.normalizeNode === 'function' &&\n typeof value.onChange === 'function' &&\n typeof value.removeMark === 'function' &&\n typeof value.getDirtyPaths === 'function' &&\n (value.marks === null || isPlainObject(value.marks)) &&\n (value.selection === null || Range.isRange(value.selection)) &&\n Node.isNodeList(value.children) &&\n Operation.isOperationList(value.operations)\n IS_EDITOR_CACHE.set(value, isEditor)\n return isEditor\n}\n","import {\n Ancestor,\n Descendant,\n Element,\n ExtendedType,\n Location,\n Node,\n NodeEntry,\n Operation,\n Path,\n PathRef,\n Point,\n PointRef,\n Range,\n RangeRef,\n Span,\n Text,\n Transforms,\n} from '..'\nimport {\n LeafEdge,\n MaximizeMode,\n RangeDirection,\n SelectionMode,\n TextDirection,\n TextUnit,\n TextUnitAdjustment,\n} from '../types/types'\nimport { OmitFirstArg } from '../utils/types'\nimport { isEditor } from '../editor/is-editor'\nimport {\n TextInsertFragmentOptions,\n TextInsertTextOptions,\n} from './transforms/text'\nimport { NodeInsertNodesOptions } from './transforms/node'\n\n/**\n * The `Editor` interface stores all the state of a Slate editor. It is extended\n * by plugins that wish to add their own helpers and implement new behaviors.\n */\nexport interface BaseEditor {\n // Core state.\n\n children: Descendant[]\n selection: Selection\n operations: Operation[]\n marks: EditorMarks | null\n\n // Overrideable core methods.\n\n apply: (operation: Operation) => void\n getDirtyPaths: (operation: Operation) => Path[]\n getFragment: () => Descendant[]\n isElementReadOnly: (element: Element) => boolean\n isSelectable: (element: Element) => boolean\n markableVoid: (element: Element) => boolean\n normalizeNode: (entry: NodeEntry, options?: { operation?: Operation }) => void\n onChange: (options?: { operation?: Operation }) => void\n shouldNormalize: ({\n iteration,\n dirtyPaths,\n operation,\n }: {\n iteration: number\n initialDirtyPathsLength: number\n dirtyPaths: Path[]\n operation?: Operation\n }) => boolean\n\n // Overrideable core transforms.\n\n addMark: OmitFirstArg<typeof Editor.addMark>\n collapse: OmitFirstArg<typeof Transforms.collapse>\n delete: OmitFirstArg<typeof Transforms.delete>\n deleteBackward: (unit: TextUnit) => void\n deleteForward: (unit: TextUnit) => void\n deleteFragment: OmitFirstArg<typeof Editor.deleteFragment>\n deselect: OmitFirstArg<typeof Transforms.deselect>\n insertBreak: OmitFirstArg<typeof Editor.insertBreak>\n insertFragment: OmitFirstArg<typeof Transforms.insertFragment>\n insertNode: OmitFirstArg<typeof Editor.insertNode>\n insertNodes: OmitFirstArg<typeof Transforms.insertNodes>\n insertSoftBreak: OmitFirstArg<typeof Editor.insertSoftBreak>\n insertText: OmitFirstArg<typeof Transforms.insertText>\n liftNodes: OmitFirstArg<typeof Transforms.liftNodes>\n mergeNodes: OmitFirstArg<typeof Transforms.mergeNodes>\n move: OmitFirstArg<typeof Transforms.move>\n moveNodes: OmitFirstArg<typeof Transforms.moveNodes>\n normalize: OmitFirstArg<typeof Editor.normalize>\n removeMark: OmitFirstArg<typeof Editor.removeMark>\n removeNodes: OmitFirstArg<typeof Transforms.removeNodes>\n select: OmitFirstArg<typeof Transforms.select>\n setNodes: <T extends Node>(\n props: Partial<T>,\n options?: {\n at?: Location\n match?: NodeMatch<T>\n mode?: MaximizeMode\n hanging?: boolean\n split?: boolean\n voids?: boolean\n compare?: PropsCompare\n merge?: PropsMerge\n }\n ) => void\n setNormalizing: OmitFirstArg<typeof Editor.setNormalizing>\n setPoint: OmitFirstArg<typeof Transforms.setPoint>\n setSelection: OmitFirstArg<typeof Transforms.setSelection>\n splitNodes: OmitFirstArg<typeof Transforms.splitNodes>\n unsetNodes: OmitFirstArg<typeof Transforms.unsetNodes>\n unwrapNodes: OmitFirstArg<typeof Transforms.unwrapNodes>\n withoutNormalizing: OmitFirstArg<typeof Editor.withoutNormalizing>\n wrapNodes: OmitFirstArg<typeof Transforms.wrapNodes>\n\n // Overrideable core queries.\n\n above: <T extends Ancestor>(\n options?: EditorAboveOptions<T>\n ) => NodeEntry<T> | undefined\n after: OmitFirstArg<typeof Editor.after>\n before: OmitFirstArg<typeof Editor.before>\n edges: OmitFirstArg<typeof Editor.edges>\n elementReadOnly: OmitFirstArg<typeof Editor.elementReadOnly>\n end: OmitFirstArg<typeof Editor.end>\n first: OmitFirstArg<typeof Editor.first>\n fragment: OmitFirstArg<typeof Editor.fragment>\n getMarks: OmitFirstArg<typeof Editor.marks>\n hasBlocks: OmitFirstArg<typeof Editor.hasBlocks>\n hasInlines: OmitFirstArg<typeof Editor.hasInlines>\n hasPath: OmitFirstArg<typeof Editor.hasPath>\n hasTexts: OmitFirstArg<typeof Editor.hasTexts>\n isBlock: OmitFirstArg<typeof Editor.isBlock>\n isEdge: OmitFirstArg<typeof Editor.isEdge>\n isEmpty: OmitFirstArg<typeof Editor.isEmpty>\n isEnd: OmitFirstArg<typeof Editor.isEnd>\n isInline: OmitFirstArg<typeof Editor.isInline>\n isNormalizing: OmitFirstArg<typeof Editor.isNormalizing>\n isStart: OmitFirstArg<typeof Editor.isStart>\n isVoid: OmitFirstArg<typeof Editor.isVoid>\n last: OmitFirstArg<typeof Editor.last>\n leaf: OmitFirstArg<typeof Editor.leaf>\n levels: <T extends Node>(\n options?: EditorLevelsOptions<T>\n ) => Generator<NodeEntry<T>, void, undefined>\n next: <T extends Descendant>(\n options?: EditorNextOptions<T>\n ) => NodeEntry<T> | undefined\n node: OmitFirstArg<typeof Editor.node>\n nodes: <T extends Node>(\n options?: EditorNodesOptions<T>\n ) => Generator<NodeEntry<T>, void, undefined>\n parent: OmitFirstArg<typeof Editor.parent>\n path: OmitFirstArg<typeof Editor.path>\n pathRef: OmitFirstArg<typeof Editor.pathRef>\n pathRefs: OmitFirstArg<typeof Editor.pathRefs>\n point: OmitFirstArg<typeof Editor.point>\n pointRef: OmitFirstArg<typeof Editor.pointRef>\n pointRefs: OmitFirstArg<typeof Editor.pointRefs>\n positions: OmitFirstArg<typeof Editor.positions>\n previous: <T extends Node>(\n options?: EditorPreviousOptions<T>\n ) => NodeEntry<T> | undefined\n range: OmitFirstArg<typeof Editor.range>\n rangeRef: OmitFirstArg<typeof Editor.rangeRef>\n rangeRefs: OmitFirstArg<typeof Editor.rangeRefs>\n start: OmitFirstArg<typeof Editor.start>\n string: OmitFirstArg<typeof Editor.string>\n unhangRange: OmitFirstArg<typeof Editor.unhangRange>\n void: OmitFirstArg<typeof Editor.void>\n shouldMergeNodesRemovePrevNode: OmitFirstArg<\n typeof Editor.shouldMergeNodesRemovePrevNode\n >\n}\n\nexport type Editor = ExtendedType<'Editor', BaseEditor>\n\nexport type BaseSelection = Range | null\n\nexport type Selection = ExtendedType<'Selection', BaseSelection>\n\nexport type EditorMarks = Omit<Text, 'text'>\n\nexport interface EditorAboveOptions<T extends Ancestor> {\n at?: Location\n match?: NodeMatch<T>\n mode?: MaximizeMode\n voids?: boolean\n}\n\nexport interface EditorAfterOptions {\n distance?: number\n unit?: TextUnitAdjustment\n voids?: boolean\n}\n\nexport interface EditorBeforeOptions {\n distance?: number\n unit?: TextUnitAdjustment\n voids?: boolean\n}\n\nexport interface EditorDirectedDeletionOptions {\n unit?: TextUnit\n}\n\nexport interface EditorElementReadOnlyOptions {\n at?: Location\n mode?: MaximizeMode\n voids?: boolean\n}\n\nexport interface EditorFragmentDeletionOptions {\n direction?: TextDirection\n}\n\nexport interface EditorLeafOptions {\n depth?: number\n edge?: LeafEdge\n}\n\nexport interface EditorLevelsOptions<T extends Node> {\n at?: Location\n match?: NodeMatch<T>\n reverse?: boolean\n voids?: boolean\n}\n\nexport interface EditorNextOptions<T extends Descendant> {\n at?: Location\n match?: NodeMatch<T>\n mode?: SelectionMode\n voids?: boolean\n}\n\nexport interface EditorNodeOptions {\n depth?: number\n edge?: LeafEdge\n}\n\nexport interface EditorNodesOptions<T extends Node> {\n at?: Location | Span\n match?: NodeMatch<T>\n mode?: SelectionMode\n universal?: boolean\n reverse?: boolean\n voids?: boolean\n pass?: (entry: NodeEntry) => boolean\n ignoreNonSelectable?: boolean\n}\n\nexport interface EditorNormalizeOptions {\n force?: boolean\n operation?: Operation\n}\n\nexport interface EditorParentOptions {\n depth?: number\n edge?: LeafEdge\n}\n\nexport interface EditorPathOptions {\n depth?: number\n edge?: LeafEdge\n}\n\nexport interface EditorPathRefOptions {\n affinity?: TextDirection | null\n}\n\nexport interface EditorPointOptions {\n edge?: LeafEdge\n}\n\nexport interface EditorPointRefOptions {\n affinity?: TextDirection | null\n}\n\nexport interface EditorPositionsOptions {\n at?: Location\n unit?: TextUnitAdjustment\n reverse?: boolean\n voids?: boolean\n ignoreNonSelectable?: boolean\n}\n\nexport interface EditorPreviousOptions<T extends Node> {\n at?: Location\n match?: NodeMatch<T>\n mode?: SelectionMode\n voids?: boolean\n}\n\nexport interface EditorRangeRefOptions {\n affinity?: RangeDirection | null\n}\n\nexport interface EditorStringOptions {\n voids?: boolean\n}\n\nexport interface EditorUnhangRangeOptions {\n voids?: boolean\n}\n\nexport interface EditorVoidOptions {\n at?: Location\n mode?: MaximizeMode\n voids?: boolean\n}\n\nexport interface EditorInterface {\n /**\n * Get the ancestor above a location in the document.\n */\n above: <T extends Ancestor>(\n editor: Editor,\n options?: EditorAboveOptions<T>\n ) => NodeEntry<T> | undefined\n\n /**\n * Add a custom property to the leaf text nodes in the current selection.\n *\n * If the selection is currently collapsed, the marks will be added to the\n * `editor.marks` property instead, and applied when text is inserted next.\n */\n addMark: (editor: Editor, key: string, value: any) => void\n\n /**\n * Get the point after a location.\n */\n after: (\n editor: Editor,\n at: Location,\n options?: EditorAfterOptions\n ) => Point | undefined\n\n /**\n * Get the point before a location.\n */\n before: (\n editor: Editor,\n at: Location,\n options?: EditorBeforeOptions\n ) => Point | undefined\n\n /**\n * Delete content in the editor backward from the current selection.\n */\n deleteBackward: (\n editor: Editor,\n options?: EditorDirectedDeletionOptions\n ) => void\n\n /**\n * Delete content in the editor forward from the current selection.\n */\n deleteForward: (\n editor: Editor,\n options?: EditorDirectedDeletionOptions\n ) => void\n\n /**\n * Delete the content in the current selection.\n */\n deleteFragment: (\n editor: Editor,\n options?: EditorFragmentDeletionOptions\n ) => void\n\n /**\n * Get the start and end points of a location.\n */\n edges: (editor: Editor, at: Location) => [Point, Point]\n\n /**\n * Match a read-only element in the current branch of the editor.\n */\n elementReadOnly: (\n editor: Editor,\n options?: EditorElementReadOnlyOptions\n ) => NodeEntry<Element> | undefined\n\n /**\n * Get the end point of a location.\n */\n end: (editor: Editor, at: Location) => Point\n\n /**\n * Get the first node at a location.\n */\n first: (editor: Editor, at: Location) => NodeEntry\n\n /**\n * Get the fragment at a location.\n */\n fragment: (editor: Editor, at: Location) => Descendant[]\n\n /**\n * Check if a node has block children.\n */\n hasBlocks: (editor: Editor, element: Element) => boolean\n\n /**\n * Check if a node has inline and text children.\n */\n hasInlines: (editor: Editor, element: Element) => boolean\n\n hasPath: (editor: Editor, path: Path) => boolean\n\n /**\n * Check if a node has text children.\n */\n hasTexts: (editor: Editor, element: Element) => boolean\n\n /**\n * Insert a block break at the current selection.\n *\n * If the selection is currently expanded, it will be deleted first.\n */\n insertBreak: (editor: Editor) => void\n\n /**\n * Inserts a fragment\n * at the specified location or (if not defined) the current selection or (if not defined) the end of the document.\n */\n insertFragment: (\n editor: Editor,\n fragment: Node[],\n options?: TextInsertFragmentOptions\n ) => void\n\n /**\n * Atomically inserts `nodes`\n * at the specified location or (if not defined) the current selection or (if not defined) the end of the document.\n */\n insertNode: <T extends Node>(\n editor: Editor,\n node: Node,\n options?: NodeInsertNodesOptions<T>\n ) => void\n\n /**\n * Insert a soft break at the current selection.\n *\n * If the selection is currently expanded, it will be deleted first.\n */\n insertSoftBreak: (editor: Editor) => void\n\n /**\n * Insert a string of text\n * at the specified location or (if not defined) the current selection or (if not defined) the end of the document.\n */\n insertText: (\n editor: Editor,\n text: string,\n options?: TextInsertTextOptions\n ) => void\n\n /**\n * Check if a value is a block `Element` object.\n */\n isBlock: (editor: Editor, value: Element) => boolean\n\n /**\n * Check if a point is an edge of a location.\n */\n isEdge: (editor: Editor, point: Point, at: Location) => boolean\n\n /**\n * Check if a value is an `Editor` object.\n */\n isEditor: (value: any) => value is Editor\n\n /**\n * Check if a value is a read-only `Element` object.\n */\n isElementReadOnly: (editor: Editor, element: Element) => boolean\n\n /**\n * Check if an element is empty, accounting for void nodes.\n */\n isEmpty: (editor: Editor, element: Element) => boolean\n\n /**\n * Check if a point is the end point of a location.\n */\n isEnd: (editor: Editor, point: Point, at: Location) => boolean\n\n /**\n * Check if a value is an inline `Element` object.\n */\n isInline: (editor: Editor, value: Element) => boolean\n\n /**\n * Check if the editor is currently normalizing after each operation.\n */\n isNormalizing: (editor: Editor) => boolean\n\n /**\n * Check if a value is a selectable `Element` object.\n */\n isSelectable: (editor: Editor, element: Element) => boolean\n\n /**\n * Check if a point is the start point of a location.\n */\n isStart: (editor: Editor, point: Point, at: Location) => boolean\n\n /**\n * Check if a value is a void `Element` object.\n */\n isVoid: (editor: Editor, value: Element) => boolean\n\n /**\n * Get the last node at a location.\n */\n last: (editor: Editor, at: Location) => NodeEntry\n\n /**\n * Get the leaf text node at a location.\n */\n leaf: (\n editor: Editor,\n at: Location,\n options?: EditorLeafOptions\n ) => NodeEntry<Text>\n\n /**\n * Iterate through all of the levels at a location.\n */\n levels: <T extends Node>(\n editor: Editor,\n options?: EditorLevelsOptions<T>\n ) => Generator<NodeEntry<T>, void, undefined>\n\n /**\n * Get the marks that would be added to text at the current selection.\n */\n marks: (editor: Editor) => Omit<Text, 'text'> | null\n\n /**\n * Get the matching node in the branch of the document after a location.\n */\n next: <T extends Descendant>(\n editor: Editor,\n options?: EditorNextOptions<T>\n ) => NodeEntry<T> | undefined\n\n /**\n * Get the node at a location.\n */\n node: (editor: Editor, at: Location, options?: EditorNodeOptions) => NodeEntry\n\n /**\n * Iterate through all of the nodes in the Editor.\n */\n nodes: <T extends Node>(\n editor: Editor,\n options?: EditorNodesOptions<T>\n ) => Generator<NodeEntry<T>, void, undefined>\n\n /**\n * Normalize any dirty objects in the editor.\n */\n normalize: (editor: Editor, options?: EditorNormalizeOptions) => void\n\n /**\n * Get the parent node of a location.\n */\n parent: (\n editor: Editor,\n at: Location,\n options?: EditorParentOptions\n ) => NodeEntry<Ancestor>\n\n /**\n * Get the path of a location.\n */\n path: (editor: Editor, at: Location, options?: EditorPathOptions) => Path\n\n /**\n * Create a mutable ref for a `Path` object, which will stay in sync as new\n * operations are applied to the editor.\n */\n pathRef: (\n editor: Editor,\n path: Path,\n options?: EditorPathRefOptions\n ) => PathRef\n\n /**\n * Get the set of currently tracked path refs of the editor.\n */\n pathRefs: (editor: Editor) => Set<PathRef>\n\n /**\n * Get the start or end point of a location.\n */\n point: (editor: Editor, at: Location, options?: EditorPointOptions) => Point\n\n /**\n * Create a mutable ref for a `Point` object, which will stay in sync as new\n * operations are applied to the editor.\n */\n pointRef: (\n editor: Editor,\n point: Point,\n options?: EditorPointRefOptions\n ) => PointRef\n\n /**\n * Get the set of currently tracked point refs of the editor.\n */\n pointRefs: (editor: Editor) => Set<PointRef>\n\n /**\n * Return all the positions in `at` range where a `Point` can be placed.\n *\n * By default, moves forward by individual offsets at a time, but\n * the `unit` option can be used to to move by character, word, line, or block.\n *\n * The `reverse` option can be used to change iteration direction.\n *\n * Note: By default void nodes are treated as a single point and iteration\n * will not happen inside their content unless you pass in true for the\n * `voids` option, then iteration will occur.\n */\n positions: (\n editor: Editor,\n options?: EditorPositionsOptions\n ) => Generator<Point, void, undefined>\n\n /**\n * Get the matching node in the branch of the document before a location.\n */\n previous: <T extends Node>(\n editor: Editor,\n options?: EditorPreviousOptions<T>\n ) => NodeEntry<T> | undefined\n\n /**\n * Get a range of a location.\n */\n range: (editor: Editor, at: Location, to?: Location) => Range\n\n /**\n * Create a mutable ref for a `Range` object, which will stay in sync as new\n * operations are applied to the editor.\n */\n rangeRef: (\n editor: Editor,\n range: Range,\n options?: EditorRangeRefOptions\n ) => RangeRef\n\n /**\n * Get the set of currently tracked range refs of the editor.\n */\n rangeRefs: (editor: Editor) => Set<RangeRef>\n\n /**\n * Remove a custom property from all of the leaf text nodes in the current\n * selection.\n *\n * If the selection is currently collapsed, the removal will be stored on\n * `editor.marks` and applied to the text inserted next.\n */\n removeMark: (editor: Editor, key: string) => void\n\n /**\n * Manually set if the editor should currently be normalizing.\n *\n * Note: Using this incorrectly can leave the editor in an invalid state.\n *\n */\n setNormalizing: (editor: Editor, isNormalizing: boolean) => void\n\n /**\n * Get the start point of a location.\n */\n start: (editor: Editor, at: Location) => Point\n\n /**\n * Get the text string content of a location.\n *\n * Note: by default the text of void nodes is considered to be an empty\n * string, regardless of content, unless you pass in true for the voids option\n */\n string: (\n editor: Editor,\n at: Location,\n options?: EditorStringOptions\n ) => string\n\n /**\n * Convert a range into a non-hanging one.\n */\n unhangRange: (\n editor: Editor,\n range: Range,\n options?: EditorUnhangRangeOptions\n ) => Range\n\n /**\n * Match a void node in the current branch of the editor.\n */\n void: (\n editor: Editor,\n options?: EditorVoidOptions\n ) => NodeEntry<Element> | undefined\n\n /**\n * Call a function, deferring normalization until after it completes.\n */\n withoutNormalizing: (editor: Editor, fn: () => void) => void\n\n /**\n * Call a function, Determine whether or not remove the previous node when merge.\n */\n shouldMergeNodesRemovePrevNode: (\n editor: Editor,\n prevNodeEntry: NodeEntry,\n curNodeEntry: NodeEntry\n ) => boolean\n}\n\n// eslint-disable-next-line no-redeclare\nexport const Editor: EditorInterface = {\n above(editor, options) {\n return editor.above(options)\n },\n\n addMark(editor, key, value) {\n editor.addMark(key, value)\n },\n\n after(editor, at, options) {\n return editor.after(at, options)\n },\n\n before(editor, at, options) {\n return editor.before(at, options)\n },\n\n deleteBackward(editor, options = {}) {\n const { unit = 'character' } = options\n editor.deleteBackward(unit)\n },\n\n deleteForward(editor, options = {}) {\n const { unit = 'character' } = options\n editor.deleteForward(unit)\n },\n\n deleteFragment(editor, options) {\n editor.deleteFragment(options)\n },\n\n edges(editor, at) {\n return editor.edges(at)\n },\n\n elementReadOnly(editor: Editor, options: EditorElementReadOnlyOptions = {}) {\n return editor.elementReadOnly(options)\n },\n\n end(editor, at) {\n return editor.end(at)\n },\n\n first(editor, at) {\n return editor.first(at)\n },\n\n fragment(editor, at) {\n return editor.fragment(at)\n },\n\n hasBlocks(editor, element) {\n return editor.hasBlocks(element)\n },\n\n hasInlines(editor, element) {\n return editor.hasInlines(element)\n },\n\n hasPath(editor, path) {\n return editor.hasPath(path)\n },\n\n hasTexts(editor, element) {\n return editor.hasTexts(element)\n },\n\n insertBreak(editor) {\n editor.insertBreak()\n },\n\n insertFragment(editor, fragment, options) {\n editor.insertFragment(fragment, options)\n },\n\n insertNode(editor, node) {\n editor.insertNode(node)\n },\n\n insertSoftBreak(editor) {\n editor.insertSoftBreak()\n },\n\n insertText(editor, text) {\n editor.insertText(text)\n },\n\n isBlock(editor, value) {\n return editor.isBlock(value)\n },\n\n isEdge(editor, point, at) {\n return editor.isEdge(point, at)\n },\n\n isEditor(value: any): value is Editor {\n return isEditor(value)\n },\n\n isElementReadOnly(editor, element) {\n return editor.isElementReadOnly(element)\n },\n\n isEmpty(editor, element) {\n return editor.isEmpty(element)\n },\n\n isEnd(editor, point, at) {\n return editor.isEnd(point, at)\n },\n\n isInline(editor, value) {\n return editor.isInline(value)\n },\n\n isNormalizing(editor) {\n return editor.isNormalizing()\n },\n\n isSelectable(editor: Editor, value: Element) {\n return editor.isSelectable(value)\n },\n\n isStart(editor, point, at) {\n return editor.isStart(point, at)\n },\n\n isVoid(editor, value) {\n return editor.isVoid(value)\n },\n\n last(editor, at) {\n return editor.last(at)\n },\n\n leaf(editor, at, options) {\n return editor.leaf(at, options)\n },\n\n levels(editor, options) {\n return editor.levels(options)\n },\n\n marks(editor) {\n return editor.getMarks()\n },\n\n next<T extends Descendant>(\n editor: Editor,\n options?: EditorNextOptions<T>\n ): NodeEntry<T> | undefined {\n return editor.next(options)\n },\n\n node(editor, at, options) {\n return editor.node(at, options)\n },\n\n nodes(editor, options) {\n return editor.nodes(options)\n },\n\n normalize(editor, options) {\n editor.normalize(options)\n },\n\n parent(editor, at, options) {\n return editor.parent(at, options)\n },\n\n path(editor, at, options) {\n return editor.path(at, options)\n },\n\n pathRef(editor, path, options) {\n return editor.pathRef(path, options)\n },\n\n pathRefs(editor) {\n return editor.pathRefs()\n },\n\n point(editor, at, options) {\n return editor.point(at, options)\n },\n\n pointRef(editor, point, options) {\n return editor.pointRef(point, options)\n },\n\n pointRefs(editor) {\n return editor.pointRefs()\n },\n\n positions(editor, options) {\n return editor.positions(options)\n },\n\n previous(editor, options) {\n return editor.previous(options)\n },\n\n range(editor, at, to) {\n return editor.range(at, to)\n },\n\n rangeRef(editor, range, options) {\n return editor.rangeRef(range, options)\n },\n\n rangeRefs(editor) {\n return editor.rangeRefs()\n },\n\n removeMark(editor, key) {\n editor.removeMark(key)\n },\n\n setNormalizing(editor, isNormalizing) {\n editor.setNormalizing(isNormalizing)\n },\n\n start(editor, at) {\n return editor.start(at)\n },\n\n string(editor, at, options) {\n return editor.string(at, options)\n },\n\n unhangRange(editor, range, options) {\n return editor.unhangRange(range, options)\n },\n\n void(editor, options) {\n return editor.void(options)\n },\n\n withoutNormalizing(editor, fn: () => void) {\n editor.withoutNormalizing(fn)\n },\n shouldMergeNodesRemovePrevNode: (editor, prevNode, curNode) => {\n return editor.shouldMergeNodesRemovePrevNode(prevNode, curNode)\n },\n}\n\n/**\n * A helper type for narrowing matched nodes with a predicate.\n */\n\nexport type NodeMatch<T extends Node> =\n | ((node: Node, path: Path) => node is T)\n | ((node: Node, path: Path) => boolean)\n\nexport type PropsCompare = (prop: Partial<Node>, node: Partial<Node>) => boolean\nexport type PropsMerge = (prop: Partial<Node>, node: Partial<Node>) => object\n","import { Path, Point, Range } from '..'\n\n/**\n * The `Location` interface is a union of the ways to refer to a specific\n * location in a Slate document: paths, points or ranges.\n *\n * Methods will often accept a `Location` instead of requiring only a `Path`,\n * `Point` or `Range`. This eliminates the need for developers to manage\n * converting between the different interfaces in their own code base.\n */\n\nexport type Location = Path | Point | Range\n\nexport interface LocationInterface {\n /**\n * Check if a value implements the `Location` interface.\n */\n isLocation: (value: any) => value is Location\n}\n\n// eslint-disable-next-line no-redeclare\nexport const Location: LocationInterface = {\n isLocation(value: any): value is Location {\n return Path.isPath(value) || Point.isPoint(value) || Range.isRange(value)\n },\n}\n\n/**\n * The `Span` interface is a low-level way to refer to locations in nodes\n * without using `Point` which requires leaf text nodes to be present.\n */\n\nexport type Span = [Path, Path]\n\nexport interface SpanInterface {\n /**\n * Check if a value implements the `Span` interface.\n */\n isSpan: (value: any) => value is Span\n}\n\n// eslint-disable-next-line no-redeclare\nexport const Span: SpanInterface = {\n isSpan(value: any): value is Span {\n return (\n Array.isArray(value) && value.length === 2 && value.every(Path.isPath)\n )\n },\n}\n","import { isPlainObject } from 'is-plain-object'\nimport { produce } from 'immer'\nimport { ExtendedType, Operation, Path } from '..'\nimport { TextDirection } from '../types/types'\n\n/**\n * `Point` objects refer to a specific location in a text node in a Slate\n * document. Its path refers to the location of the node in the tree, and its\n * offset refers to the distance into the node's string of text. Points can\n * only refer to `Text` nodes.\n */\n\nexport interface BasePoint {\n path: Path\n offset: number\n}\n\nexport type Point = ExtendedType<'Point', BasePoint>\n\nexport interface PointTransformOptions {\n affinity?: TextDirection | null\n}\n\nexport interface PointInterface {\n /**\n * Compare a point to another, returning an integer indicating whether the\n * point was before, at, or after the other.\n */\n compare: (point: Point, another: Point) => -1 | 0 | 1\n\n /**\n * Check if a point is after another.\n */\n isAfter: (point: Point, another: Point) => boolean\n\n /**\n * Check if a point is before another.\n */\n isBefore: (point: Point, another: Point) => boolean\n\n /**\n * Check if a point is exactly equal to another.\n */\n equals: (point: Point, another: Point) => boolean\n\n /**\n * Check if a value implements the `Point` interface.\n */\n isPoint: (value: any) => value is Point\n\n /**\n * Transform a point by an operation.\n */\n transform: (\n point: Point,\n op: Operation,\n options?: PointTransformOptions\n ) => Point | null\n}\n\n// eslint-disable-next-line no-redeclare\nexport const Point: PointInterface = {\n compare(point: Point, another: Point): -1 | 0 | 1 {\n const result = Path.compare(point.path, another.path)\n\n if (result === 0) {\n if (point.offset < another.offset) return -1\n if (point.offset > another.offset) return 1\n return 0\n }\n\n return result\n },\n\n isAfter(point: Point, another: Point): boolean {\n return Point.compare(point, another) === 1\n },\n\n isBefore(point: Point, another: Point): boolean {\n return Point.compare(point, another) === -1\n },\n\n equals(point: Point, another: Point): boolean {\n // PERF: ensure the offsets are equal first since they are cheaper to check.\n return (\n point.offset === another.offset && Path.equals(point.path, another.path)\n )\n },\n\n isPoint(value: any): value is Point {\n return (\n isPlainObject(value) &&\n typeof value.offset === 'number' &&\n Path.isPath(value.path)\n )\n },\n\n transform(\n point: Point | null,\n op: Operation,\n options: PointTransformOptions = {}\n ): Point | null {\n return produce(point, p => {\n if (p === null) {\n return null\n }\n const { affinity = 'forward' } = options\n const { path, offset } = p\n\n switch (op.type) {\n case 'insert_node':\n case 'move_node': {\n p.path = Path.transform(path, op, options)!\n break\n }\n\n case 'insert_text': {\n if (\n Path.equals(op.path, path) &&\n (op.offset < offset ||\n (op.offset === offset && affinity === 'forward'))\n ) {\n p.offset += op.text.length\n }\n\n break\n }\n\n case 'merge_node': {\n if (Path.equals(op.path, path)) {\n p.offset += op.position\n }\n\n p.path = Path.transform(path, op, options)!\n break\n }\n\n case 'remove_text': {\n if (Path.equals(op.path, path) && op.offset <= offset) {\n p.offset -= Math.min(offset - op.offset, op.text.length)\n }\n\n break\n }\n\n case 'remove_node': {\n if (Path.equals(op.path, path) || Path.isAncestor(op.path, path)) {\n return null\n }\n\n p.path = Path.transform(path, op, options)!\n break\n }\n\n case 'split_node': {\n if (Path.equals(op.path, path)) {\n if (op.position === offset && affinity == null) {\n return null\n } else if (\n op.position < offset ||\n (op.position === offset && affinity === 'forward')\n ) {\n p.offset -= op.position\n\n p.path = Path.transform(path, op, {\n ...options,\n affinity: 'forward',\n })!\n }\n } else {\n p.path = Path.transform(path, op, options)!\n }\n\n break\n }\n }\n })\n },\n}\n\n/**\n * `PointEntry` objects are returned when iterating over `Point` objects that\n * belong to a range.\n */\n\nexport type PointEntry = [Point, 'anchor' | 'focus']\n","export type Scrubber = (key: string, value: unknown) => unknown\n\nexport interface ScrubberInterface {\n setScrubber(scrubber: Scrubber | undefined): void\n stringify(value: any): string\n}\n\nlet _scrubber: Scrubber | undefined = undefined\n\n/**\n * This interface implements a stringify() function, which is used by Slate\n * internally when generating exceptions containing end user data. Developers\n * using Slate may call Scrubber.setScrubber() to alter the behavior of this\n * stringify() function.\n *\n * For example, to prevent the cleartext logging of 'text' fields within Nodes:\n *\n * import { Scrubber } from 'slate';\n * Scrubber.setScrubber((key, val) => {\n * if (key === 'text') return '...scrubbed...'\n * return val\n * });\n *\n */\n// eslint-disable-next-line no-redeclare\nexport const Scrubber: ScrubberInterface = {\n setScrubber(scrubber: Scrubber | undefined): void {\n _scrubber = scrubber\n },\n\n stringify(value: any): string {\n return JSON.stringify(value, _scrubber)\n },\n}\n","import { isPlainObject } from 'is-plain-object'\nimport { Path, Range } from '..'\nimport { ExtendedType } from '../types/custom-types'\nimport { isDeepEqual } from '../utils/deep-equal'\n\n/**\n * `Text` objects represent the nodes that contain the actual text content of a\n * Slate document along with any formatting properties. They are always leaf\n * nodes in the document tree as they cannot contain any children.\n */\n\nexport interface BaseText {\n text: string\n}\n\nexport type Text = ExtendedType<'Text', BaseText>\n\nexport interface LeafPosition {\n start: number\n end: number\n isFirst?: true\n isLast?: true\n}\n\nexport interface TextEqualsOptions {\n loose?: boolean\n}\n\nexport type DecoratedRange = Range & {\n /**\n * Customize how another decoration is merged into a text node. If not specified, `Object.assign` would be used.\n * It is useful for overlapping decorations with the same key but different values.\n */\n merge?: (leaf: Text, decoration: object) => void\n}\n\nexport interface TextInterface {\n /**\n * Check if two text nodes are equal.\n *\n * When loose is set, the text is not compared. This is\n * used to check whether sibling text nodes can be merged.\n */\n equals: (text: Text, another: Text, options?: TextEqualsOptions) => boolean\n\n /**\n * Check if a value implements the `Text` interface.\n */\n isText: (value: any) => value is Text\n\n /**\n * Check if a value is a list of `Text` objects.\n */\n isTextList: (value: any) => value is Text[]\n\n /**\n * Check if some props are a partial of Text.\n */\n isTextProps: (props: any) => props is Partial<Text>\n\n /**\n * Check if an text matches set of properties.\n *\n * Note: this is for matching custom properties, and it does not ensure that\n * the `text` property are two nodes equal.\n */\n matches: (text: Text, props: Partial<Text>) => boolean\n\n /**\n * Get the leaves for a text node given decorations.\n */\n decorations: (\n node: Text,\n decorations: DecoratedRange[]\n ) => { leaf: Text; position?: LeafPosition }[]\n}\n\n// eslint-disable-next-line no-redeclare\nexport const Text: TextInterface = {\n equals(text: Text, another: Text, options: TextEqualsOptions = {}): boolean {\n const { loose = false } = options\n\n function omitText(obj: Record<any, any>) {\n const { text, ...rest } = obj\n\n return rest\n }\n\n return isDeepEqual(\n loose ? omitText(text) : text,\n loose ? omitText(another) : another\n )\n },\n\n isText(value: any): value is Text {\n return isPlainObject(value) && typeof value.text === 'string'\n },\n\n isTextList(value: any): value is Text[] {\n return Array.isArray(value) && value.every(val => Text.isText(val))\n },\n\n isTextProps(props: any): props is Partial<Text> {\n return (props as Partial<Text>).text !== undefined\n },\n\n matches(text: Text, props: Partial<Text>): boolean {\n for (const key in props) {\n if (key === 'text') {\n continue\n }\n\n if (\n !text.hasOwnProperty(key) ||\n text[<keyof Text>key] !== props[<keyof Text>key]\n ) {\n return false\n }\n }\n\n return true\n },\n\n decorations(\n node: Text,\n decorations: DecoratedRange[]\n ): { leaf: Text; position?: LeafPosition }[] {\n let leaves: { leaf: Text; position?: LeafPosition }[] = [\n { leaf: { ...node } },\n ]\n\n for (const dec of decorations) {\n const { anchor, focus, merge: mergeDecoration, ...rest } = dec\n const [start, end] = Range.edges(dec)\n const next = []\n let leafEnd = 0\n const decorationStart = start.offset\n const decorationEnd = end.offset\n const merge = mergeDecoration ?? Object.assign\n\n for (const { leaf } of leaves) {\n const { length } = leaf.text\n const leafStart = leafEnd\n leafEnd += length\n\n // If the range encompasses the entire leaf, add the range.\n if (decorationStart <= leafStart && leafEnd <= decorationEnd) {\n merge(leaf, rest)\n next.push({ leaf })\n continue\n }\n\n // If the range expanded and match the leaf, or starts after, or ends before it, continue.\n if (\n (decorationStart !== decorationEnd &&\n (decorationStart === leafEnd || decorationEnd === leafStart)) ||\n decorationStart > leafEnd ||\n decorationEnd < leafStart ||\n (decorationEnd === leafStart && leafStart !== 0)\n ) {\n next.push({ leaf })\n continue\n }\n\n // Otherwise we need to split the leaf, at the start, end, or both,\n // and add the range to the middle intersecting section. Do the end\n // split first since we don't need to update the offset that way.\n let middle = leaf\n let before\n let after\n\n if (decorationEnd < leafEnd) {\n const off = decorationEnd - leafStart\n after = { leaf: { ...middle, text: middle.text.slice(off) } }\n middle = { ...middle, text: middle.text.slice(0, off) }\n }\n\n if (decorationStart > leafStart) {\n const off = decorationStart - leafStart\n before = { leaf: { ...middle, text: middle.text.slice(0, off) } }\n middle = { ...middle, text: middle.text.slice(off) }\n }\n\n merge(middle, rest)\n\n if (before) {\n next.push(before)\n }\n\n next.push({ leaf: middle })\n\n if (after) {\n next.push(after)\n }\n }\n\n leaves = next\n }\n\n if (leaves.length > 1) {\n let currentOffset = 0\n for (const [index, item] of leaves.entries()) {\n const start = currentOffset\n const end = start + item.leaf.text.length\n const position: LeafPosition = { start, end }\n\n if (index === 0) position.isFirst = true\n if (index === leaves.length - 1) position.isLast = true\n\n item.position = position\n currentOffset = end\n }\n }\n\n return leaves\n },\n}\n","import { Editor, Location } from '../interfaces'\n\n/**\n * Get the default location to insert content into the editor.\n * By default, use the selection as the target location. But if there is\n * no selection, insert at the end of the document since that is such a\n * common use case when inserting from a non-selected state.\n */\nexport const getDefaultInsertLocation = (editor: Editor): Location => {\n if (editor.selection) {\n return editor.selection\n } else if (editor.children.length > 0) {\n return Editor.end(editor, [])\n } else {\n return [0]\n }\n}\n","import { Editor } from '../interfaces/editor'\nimport { Path } from '../interfaces/path'\nimport { Node } from '../interfaces/node'\n\nexport const matchPath = (\n editor: Editor,\n path: Path\n): ((node: Node) => boolean) => {\n const [node] = Editor.node(editor, path)\n return n => n === node\n}\n","// Character (grapheme cluster) boundaries are determined according to\n// the default grapheme cluster boundary specification, extended grapheme clusters variant[1].\n//\n// References:\n//\n// [1] https://www.unicode.org/reports/tr29/#Default_Grapheme_Cluster_Table\n// [2] https://www.unicode.org/Public/UCD/latest/ucd/auxiliary/GraphemeBreakProperty.txt\n// [3] https://www.unicode.org/Public/UCD/latest/ucd/auxiliary/GraphemeBreakTest.html\n// [4] https://www.unicode.org/Public/UCD/latest/ucd/auxiliary/GraphemeBreakTest.txt\n\n/**\n * Get the distance to the end of the first character in a string of text.\n */\n\nexport const getCharacterDistance = (str: string, isRTL = false): number => {\n const isLTR = !isRTL\n const codepoints = isRTL ? codepointsIteratorRTL(str) : str\n\n let left: CodepointType = CodepointType.None\n let right: CodepointType = CodepointType.None\n let distance = 0\n // Evaluation of these conditions are deferred.\n let gb11: boolean | null = null // Is GB11 applicable?\n let gb12Or13: boolean | null = null // Is GB12 or GB13 applicable?\n\n for (const char of codepoints) {\n const code = char.codePointAt(0)\n if (!code) break\n\n const type = getCodepointType(char, code)\n ;[left, right] = isLTR ? [right, type] : [type, left]\n\n if (\n intersects(left, CodepointType.ZWJ) &&\n intersects(right, CodepointType.ExtPict)\n ) {\n if (isLTR) {\n gb11 = endsWithEmojiZWJ(str.substring(0, distance))\n } else {\n gb11 = endsWithEmojiZWJ(str.substring(0, str.length - distance))\n }\n if (!gb11) break\n }\n\n if (\n intersects(left, CodepointType.RI) &&\n intersects(right, CodepointType.RI)\n ) {\n if (gb12Or13 !== null) {\n gb12Or13 = !gb12Or13\n } else {\n if (isLTR) {\n gb12Or13 = true\n } else {\n gb12Or13 = endsWithOddNumberOfRIs(\n str.substring(0, str.length - distance)\n )\n }\n }\n if (!gb12Or13) break\n }\n\n if (\n left !== CodepointType.None &&\n right !== CodepointType.None &&\n isBoundaryPair(left, right)\n ) {\n break\n }\n\n distance += char.length\n }\n\n return distance || 1\n}\n\nconst SPACE = /\\s/\nconst PUNCTUATION =\n /[\\u002B\\u0021-\\u0023\\u0025-\\u002A\\u002C-\\u002F\\u003A\\u003B\\u003F\\u0040\\u005B-\\u005D\\u005F\\u007B\\u007D\\u00A1\\u00A7\\u00AB\\u00B6\\u00B7\\u00BB\\u00BF\\u037E\\u0387\\u055A-\\u055F\\u0589\\u058A\\u05BE\\u05C0\\u05C3\\u05C6\\u05F3\\u05F4\\u0609\\u060A\\u060C\\u060D\\u061B\\u061E\\u061F\\u066A-\\u066D\\u06D4\\u0700-\\u070D\\u07F7-\\u07F9\\u0830-\\u083E\\u085E\\u0964\\u0965\\u0970\\u0AF0\\u0DF4\\u0E4F\\u0E5A\\u0E5B\\u0F04-\\u0F12\\u0F14\\u0F3A-\\u0F3D\\u0F85\\u0FD0-\\u0FD4\\u0FD9\\u0FDA\\u104A-\\u104F\\u10FB\\u1360-\\u1368\\u1400\\u166D\\u166E\\u169B\\u169C\\u16EB-\\u16ED\\u1735\\u1736\\u17D4-\\u17D6\\u17D8-\\u17DA\\u1800-\\u180A\\u1944\\u1945\\u1A1E\\u1A1F\\u1AA0-\\u1AA6\\u1AA8-\\u1AAD\\u1B5A-\\u1B60\\u1BFC-\\u1BFF\\u1C3B-\\u1C3F\\u1C7E\\u1C7F\\u1CC0-\\u1CC7\\u1CD3\\u2010-\\u2027\\u2030-\\u2043\\u2045-\\u2051\\u2053-\\u205E\\u207D\\u207E\\u208D\\u208E\\u2329\\u232A\\u2768-\\u2775\\u27C5\\u27C6\\u27E6-\\u27EF\\u2983-\\u2998\\u29D8-\\u29DB\\u29FC\\u29FD\\u2CF9-\\u2CFC\\u2CFE\\u2CFF\\u2D70\\u2E00-\\u2E2E\\u2E30-\\u2E3B\\u3001-\\u3003\\u3008-\\u3011\\u3014-\\u301F\\u3030\\u303D\\u30A0\\u30FB\\uA4FE\\uA4FF\\uA60D-\\uA60F\\uA673\\uA67E\\uA6F2-\\uA6F7\\uA874-\\uA877\\uA8CE\\uA8CF\\uA8F8-\\uA8FA\\uA92E\\uA92F\\uA95F\\uA9C1-\\uA9CD\\uA9DE\\uA9DF\\uAA5C-\\uAA5F\\uAADE\\uAADF\\uAAF0\\uAAF1\\uABEB\\uFD3E\\uFD3F\\uFE10-\\uFE19\\uFE30-\\uFE52\\uFE54-\\uFE61\\uFE63\\uFE68\\uFE6A\\uFE6B\\uFF01-\\uFF03\\uFF05-\\uFF0A\\uFF0C-\\uFF0F\\uFF1A\\uFF1B\\uFF1F\\uFF20\\uFF3B-\\uFF3D\\uFF3F\\uFF5B\\uFF5D\\uFF5F-\\uFF65]/\nconst CHAMELEON = /['\\u2018\\u2019]/\n\n/**\n * Get the distance to the end of the first word in a string of text.\n */\n\nexport const getWordDistance = (text: string, isRTL = false): number => {\n let dist = 0\n let started = false\n\n while (text.length > 0) {\n const charDist = getCharacterDistance(text, isRTL)\n const [char, remaining] = splitByCharacterDistance(text, charDist, isRTL)\n\n if (isWordCharacter(char, remaining, isRTL)) {\n started = true\n dist += charDist\n } else if (!started) {\n dist += charDist\n } else {\n break\n }\n\n text = remaining\n }\n\n return dist\n}\n\n/**\n * Split a string in two parts at a given distance starting from the end when\n * `isRTL` is set to `true`.\n */\n\nexport const splitByCharacterDistance = (\n str: string,\n dist: number,\n isRTL?: boolean\n): [string, string] => {\n if (isRTL) {\n const at = str.length - dist\n return [str.slice(at, str.length), str.slice(0, at)]\n }\n\n return [str.slice(0, dist), str.slice(dist)]\n}\n\n/**\n * Check if a character is a word character. The `remaining` argument is used\n * because sometimes you must read subsequent characters to truly determine it.\n */\n\nconst isWordCharacter = (\n char: string,\n remaining: string,\n isRTL = false\n): boolean => {\n if (SPACE.test(char)) {\n return false\n }\n\n // Chameleons count as word characters as long as they're in a word, so\n // recurse to see if the next one is a word character or not.\n if (CHAMELEON.test(char)) {\n const charDist = getCharacterDistance(remaining, isRTL)\n const [nextChar, nextRemaining] = splitByCharacterDistance(\n remaining,\n charDist,\n isRTL\n )\n\n if (isWordCharacter(nextChar, nextRemaining, isRTL)) {\n return true\n }\n }\n\n if (PUNCTUATION.test(char)) {\n return false\n }\n\n return true\n}\n\n/**\n * Iterate on codepoints from right to left.\n */\n\nexport const codepointsIteratorRTL = function* (str: string) {\n const end = str.length - 1\n\n for (let i = 0; i < str.length; i++) {\n const char1 = str.charAt(end - i)\n\n if (isLowSurrogate(char1.charCodeAt(0))) {\n const char2 = str.charAt(end - i - 1)\n if (isHighSurrogate(char2.charCodeAt(0))) {\n yield char2 + char1\n\n i++\n continue\n }\n }\n\n yield char1\n }\n}\n\n/**\n * Is `charCode` a high surrogate.\n *\n * https://en.wikipedia.org/wiki/Universal_Character_Set_characters#Surrogates\n */\n\nconst isHighSurrogate = (charCode: number) => {\n return charCode >= 0xd800 && charCode <= 0xdbff\n}\n\n/**\n * Is `charCode` a low surrogate.\n *\n * https://en.wikipedia.org/wiki/Universal_Character_Set_characters#Surrogates\n */\n\nconst isLowSurrogate = (charCode: number) => {\n return charCode >= 0xdc00 && charCode <= 0xdfff\n}\n\nenum CodepointType {\n None = 0,\n Extend = 1 << 0,\n ZWJ = 1 << 1,\n RI = 1 << 2,\n Prepend = 1 << 3,\n SpacingMark = 1 << 4,\n L = 1 << 5,\n V = 1 << 6,\n T = 1 << 7,\n LV = 1 << 8,\n LVT = 1 << 9,\n ExtPict = 1 << 10,\n Any = 1 << 11,\n}\n\nconst reExtend = /^[\\p{Gr_Ext}\\p{EMod}]$/u\nconst rePrepend =\n /^[\\u0600-\\u0605\\u06DD\\u070F\\u0890-\\u0891\\u08E2\\u0D4E\\u{110BD}\\u{110CD}\\u{111C2}-\\u{111C3}\\u{1193F}\\u{11941}\\u{11A3A}\\u{11A84}-\\u{11A89}\\u{11D46}]$/u\nconst reSpacingMark =\n /^[\\u0903\\u093B\\u093E-\\u0940\\u0949-\\u094C\\u094E-\\u094F\\u0982-\\u0983\\u09BF-\\u09C0\\u09C7-\\u09C8\\u09CB-\\u09CC\\u0A03\\u0A3E-\\u0A40\\u0A83\\u0ABE-\\u0AC0\\u0AC9\\u0ACB-\\u0ACC\\u0B02-\\u0B03\\u0B40\\u0B47-\\u0B48\\u0B4B-\\u0B4C\\u0BBF\\u0BC1-\\u0BC2\\u0BC6-\\u0BC8\\u0BCA-\\u0BCC\\u0C01-\\u0C03\\u0C41-\\u0C44\\u0C82-\\u0C83\\u0CBE\\u0CC0-\\u0CC1\\u0CC3-\\u0CC4\\u0CC7-\\u0CC8\\u0CCA-\\u0CCB\\u0D02-\\u0D03\\u0D3F-\\u0D40\\u0D46-\\u0D48\\u0D4A-\\u0D4C\\u0D82-\\u0D83\\u0DD0-\\u0DD1\\u0DD8-\\u0DDE\\u0DF2-\\u0DF3\\u0E33\\u0EB3\\u0F3E-\\u0F3F\\u0F7F\\u1031\\u103B-\\u103C\\u1056-\\u1057\\u1084\\u1715\\u1734\\u17B6\\u17BE-\\u17C5\\u17C7-\\u17C8\\u1923-\\u1926\\u1929-\\u192B\\u1930-\\u1931\\u1933-\\u1938\\u1A19-\\u1A1A\\u1A55\\u1A57\\u1A6D-\\u1A72\\u1B04\\u1B3B\\u1B3D-\\u1B41\\u1B43-\\u1B44\\u1B82\\u1BA1\\u1BA6-\\u1BA7\\u1BAA\\u1BE7\\u1BEA-\\u1BEC\\u1BEE\\u1BF2-\\u1BF3\\u1C24-\\u1C2B\\u1C34-\\u1C35\\u1CE1\\u1CF7\\uA823-\\uA824\\uA827\\uA880-\\uA881\\uA8B4-\\uA8C3\\uA952-\\uA953\\uA983\\uA9B4-\\uA9B5\\uA9BA-\\uA9BB\\uA9BE-\\uA9C0\\uAA2F-\\uAA30\\uAA33-\\uAA34\\uAA4D\\uAAEB\\uAAEE-\\uAAEF\\uAAF5\\uABE3-\\uABE4\\uABE6-\\uABE7\\uABE9-\\uABEA\\uABEC\\u{11000}\\u{11002}\\u{11082}\\u{110B0}-\\u{110B2}\\u{110B7}-\\u{110B8}\\u{1112C}\\u{11145}-\\u{11146}\\u{11182}\\u{111B3}-\\u{111B5}\\u{111BF}-\\u{111C0}\\u{111CE}\\u{1122C}-\\u{1122E}\\u{11232}-\\u{11233}\\u{11235}\\u{112E0}-\\u{112E2}\\u{11302}-\\u{11303}\\u{1133F}\\u{11341}-\\u{11344}\\u{11347}-\\u{11348}\\u{1134B}-\\u{1134D}\\u{11362}-\\u{11363}\\u{11435}-\\u{11437}\\u{11440}-\\u{11441}\\u{11445}\\u{114B1}-\\u{114B2}\\u{114B9}\\u{114BB}-\\u{114BC}\\u{114BE}\\u{114C1}\\u{115B0}-\\u{115B1}\\u{115B8}-\\u{115BB}\\u{115BE}\\u{11630}-\\u{11632}\\u{1163B}-\\u{1163C}\\u{1163E}\\u{116AC}\\u{116AE}-\\u{116AF}\\u{116B6}\\u{11726}\\u{1182C}-\\u{1182E}\\u{11838}\\u{11931}-\\u{11935}\\u{11937}-\\u{11938}\\u{1193D}\\u{11940}\\u{11942}\\u{119D1}-\\u{119D3}\\u{119DC}-\\u{119DF}\\u{119E4}\\u{11A39}\\u{11A57}-\\u{11A58}\\u{11A97}\\u{11C2F}\\u{11C3E}\\u{11CA9}\\u{11CB1}\\u{11CB4}\\u{11D8A}-\\u{11D8E}\\u{11D93}-\\u{11D94}\\u{11D96}\\u{11EF5}-\\u{11EF6}\\u{16F51}-\\u{16F87}\\u{16FF0}-\\u{16FF1}\\u{1D166}\\u{1D16D}]$/u\nconst reL = /^[\\u1100-\\u115F\\uA960-\\uA97C]$/u\nconst reV = /^[\\u1160-\\u11A7\\uD7B0-\\uD7C6]$/u\nconst reT = /^[\\u11A8-\\u11FF\\uD7CB-\\uD7FB]$/u\nconst reLV =\n /^[\\uAC00\\uAC1C\\uAC38\\uAC54\\uAC70\\uAC8C\\uACA8\\uACC4\\uACE0\\uACFC\\uAD18\\uAD34\\uAD50\\uAD6C\\uAD88\\uADA4\\uADC0\\uADDC\\uADF8\\uAE14\\uAE30\\uAE4C\\uAE68\\uAE84\\uAEA0\\uAEBC\\uAED8\\uAEF4\\uAF10\\uAF2C\\uAF48\\uAF64\\uAF80\\uAF9C\\uAFB8\\uAFD4\\uAFF0\\uB00C\\uB028\\uB044\\uB060\\uB07C\\uB098\\uB0B4\\uB0D0\\uB0EC\\uB108\\uB124\\uB140\\uB15C\\uB178\\uB194\\uB1B0\\uB1CC\\uB1E8\\uB204\\uB220\\uB23C\\uB258\\uB274\\uB290\\uB2AC\\uB2C8\\uB2E4\\uB300\\uB31C\\uB338\\uB354\\uB370\\uB38C\\uB3A8\\uB3C4\\uB3E0\\uB3FC\\uB418\\uB434\\uB450\\uB46C\\uB488\\uB4A4\\uB4C0\\uB4DC\\uB4F8\\uB514\\uB530\\uB54C\\uB568\\uB584\\uB5A0\\uB5BC\\uB5D8\\uB5F4\\uB610\\uB62C\\uB648\\uB664\\uB680\\uB69C\\uB6B8\\uB6D4\\uB6F0\\uB70C\\uB728\\uB744\\uB760\\uB77C\\uB798\\uB7B4\\uB7D0\\uB7EC\\uB808\\uB824\\uB840\\uB85C\\uB878\\uB894\\uB8B0\\uB8CC\\uB8E8\\uB904\\uB920\\uB93C\\uB958\\uB974\\uB990\\uB9AC\\uB9C8\\uB9E4\\uBA00\\uBA1C\\uBA38\\uBA54\\uBA70\\uBA8C\\uBAA8\\uBAC4\\uBAE0\\uBAFC\\uBB18\\uBB34\\uBB50\\uBB6C\\uBB88\\uBBA4\\uBBC0\\uBBDC\\uBBF8\\uBC14\\uBC30\\uBC4C\\uBC68\\uBC84\\uBCA0\\uBCBC\\uBCD8\\uBCF4\\uBD10\\uBD2C\\uBD48\\uBD64\\uBD80\\uBD9C\\uBDB8\\uBDD4\\uBDF0\\uBE0C\\uBE28\\uBE44\\uBE60\\uBE7C\\uBE98\\uBEB4\\uBED0\\uBEEC\\uBF08\\uBF24\\uBF40\\uBF5C\\uBF78\\uBF94\\uBFB0\\uBFCC\\uBFE8\\uC004\\uC020\\uC03C\\uC058\\uC074\\uC090\\uC0AC\\uC0C8\\uC0E4\\uC100\\uC11C\\uC138\\uC154\\uC170\\uC18C\\uC1A8\\uC1C4\\uC1E0\\uC1FC\\uC218\\uC234\\uC250\\uC26C\\uC288\\uC2A4\\uC2C0\\uC2DC\\uC2F8\\uC314\\uC330\\uC34C\\uC368\\uC384\\uC3A0\\uC3BC\\uC3D8\\uC3F4\\uC410\\uC42C\\uC448\\uC464\\uC480\\uC49C\\uC4B8\\uC4D4\\uC4F0\\uC50C\\uC528\\uC544\\uC560\\uC57C\\uC598\\uC5B4\\uC5D0\\uC5EC\\uC608\\uC624\\uC640\\uC65C\\uC678\\uC694\\uC6B0\\uC6CC\\uC6E8\\uC704\\uC720\\uC73C\\uC758\\uC774\\uC790\\uC7AC\\uC7C8\\uC7E4\\uC800\\uC81C\\uC838\\uC854\\uC870\\uC88C\\uC8A8\\uC8C4\\uC8E0\\uC8FC\\uC918\\uC934\\uC950\\uC96C\\uC988\\uC9A4\\uC9C0\\uC9DC\\uC9F8\\uCA14\\uCA30\\uCA4C\\uCA68\\uCA84\\uCAA0\\uCABC\\uCAD8\\uCAF4\\uCB10\\uCB2C\\uCB48\\uCB64\\uCB80\\uCB9C\\uCBB8\\uCBD4\\uCBF0\\uCC0C\\uCC28\\uCC44\\uCC60\\uCC7C\\uCC98\\uCCB4\\uCCD0\\uCCEC\\uCD08\\uCD24\\uCD40\\uCD5C\\uCD78\\uCD94\\uCDB0\\uCDCC\\uCDE8\\uCE04\\uCE20\\uCE3C\\uCE58\\uCE74\\uCE90\\uCEAC\\uCEC8\\uCEE4\\uCF00\\uCF1C\\uCF38\\uCF54\\uCF70\\uCF8C\\uCFA8\\uCFC4\\uCFE0\\uCFFC\\uD018\\uD034\\uD050\\uD06C\\uD088\\uD0A4\\uD0C0\\uD0DC\\uD0F8\\uD114\\uD130\\uD14C\\uD168\\uD184\\uD1A0\\uD1BC\\uD1D8\\uD1F4\\uD210\\uD22C\\uD248\\uD264\\uD280\\uD29C\\uD2B8\\uD2D4\\uD2F0\\uD30C\\uD328\\uD344\\uD360\\uD37C\\uD398\\uD3B4\\uD3D0\\uD3EC\\uD408\\uD424\\uD440\\uD45C\\uD478\\uD494\\uD4B0\\uD4CC\\uD4E8\\uD504\\uD520\\uD53C\\uD558\\uD574\\uD590\\uD5AC\\uD5C8\\uD5E4\\uD600\\uD61C\\uD638\\uD654\\uD670\\uD68C\\uD6A8\\uD6C4\\uD6E0\\uD6FC\\uD718\\uD734\\uD750\\uD76C\\uD788]$/u\nconst reLVT =\n /^[\\uAC01-\\uAC1B\\uAC1D-\\uAC37\\uAC39-\\uAC53\\uAC55-\\uAC6F\\uAC71-\\uAC8B\\uAC8D-\\uACA7\\uACA9-\\uACC3\\uACC5-\\uACDF\\uACE1-\\uACFB\\uACFD-\\uAD17\\uAD19-\\uAD33\\uAD35-\\uAD4F\\uAD51-\\uAD6B\\uAD6D-\\uAD87\\uAD89-\\uADA3\\uADA5-\\uADBF\\uADC1-\\uADDB\\uADDD-\\uADF7\\uADF9-\\uAE13\\uAE15-\\uAE2F\\uAE31-\\uAE4B\\uAE4D-\\uAE67\\uAE69-\\uAE83\\uAE85-\\uAE9F\\uAEA1-\\uAEBB\\uAEBD-\\uAED7\\uAED9-\\uAEF3\\uAEF5-\\uAF0F\\uAF11-\\uAF2B\\uAF2D-\\uAF47\\uAF49-\\uAF63\\uAF65-\\uAF7F\\uAF81-\\uAF9B\\uAF9D-\\uAFB7\\uAFB9-\\uAFD3\\uAFD5-\\uAFEF\\uAFF1-\\uB00B\\uB00D-\\uB027\\uB029-\\uB043\\uB045-\\uB05F\\uB061-\\uB07B\\uB07D-\\uB097\\uB099-\\uB0B3\\uB0B5-\\uB0CF\\uB0D1-\\uB0EB\\uB0ED-\\uB107\\uB109-\\uB123\\uB125-\\uB13F\\uB141-\\uB15B\\uB15D-\\uB177\\uB179-\\uB193\\uB195-\\uB1AF\\uB1B1-\\uB1CB\\uB1CD-\\uB1E7\\uB1E9-\\uB203\\uB205-\\uB21F\\uB221-\\uB23B\\uB23D-\\uB257\\uB259-\\uB273\\uB275-\\uB28F\\uB291-\\uB2AB\\uB2AD-\\uB2C7\\uB2C9-\\uB2E3\\uB2E5-\\uB2FF\\uB301-\\uB31B\\uB31D-\\uB337\\uB339-\\uB353\\uB355-\\uB36F\\uB371-\\uB38B\\uB38D-\\uB3A7\\uB3A9-\\uB3C3\\uB3C5-\\uB3DF\\uB3E1-\\uB3FB\\uB3FD-\\uB417\\uB419-\\uB433\\uB435-\\uB44F\\uB451-\\uB46B\\uB46D-\\uB487\\uB489-\\uB4A3\\uB4A5-\\uB4BF\\uB4C1-\\uB4DB\\uB4DD-\\uB4F7\\uB4F9-\\uB513\\uB515-\\uB52F\\uB531-\\uB54B\\uB54D-\\uB567\\uB569-\\uB583\\uB585-\\uB59F\\uB5A1-\\uB5BB\\uB5BD-\\uB5D7\\uB5D9-\\uB5F3\\uB5F5-\\uB60F\\uB611-\\uB62B\\uB62D-\\uB647\\uB649-\\uB663\\uB665-\\uB67F\\uB681-\\uB69B\\uB69D-\\uB6B7\\uB6B9-\\uB6D3\\uB6D5-\\uB6EF\\uB6F1-\\uB70B\\uB70D-\\uB727\\uB729-\\uB743\\uB745-\\uB75F\\uB761-\\uB77B\\uB77D-\\uB797\\uB799-\\uB7B3\\uB7B5-\\uB7CF\\uB7D1-\\uB7EB\\uB7ED-\\uB807\\uB809-\\uB823\\uB825-\\uB83F\\uB841-\\uB85B\\uB85D-\\uB877\\uB879-\\uB893\\uB895-\\uB8AF\\uB8B1-\\uB8CB\\uB8CD-\\uB8E7\\uB8E9-\\uB903\\uB905-\\uB91F\\uB921-\\uB93B\\uB93D-\\uB957\\uB959-\\uB973\\uB975-\\uB98F\\uB991-\\uB9AB\\uB9AD-\\uB9C7\\uB9C9-\\uB9E3\\uB9E5-\\uB9FF\\uBA01-\\uBA1B\\uBA1D-\\uBA37\\uBA39-\\uBA53\\uBA55-\\uBA6F\\uBA71-\\uBA8B\\uBA8D-\\uBAA7\\uBAA9-\\uBAC3\\uBAC5-\\uBADF\\uBAE1-\\uBAFB\\uBAFD-\\uBB17\\uBB19-\\uBB33\\uBB35-\\uBB4F\\uBB51-\\uBB6B\\uBB6D-\\uBB87\\uBB89-\\uBBA3\\uBBA5-\\uBBBF\\uBBC1-\\uBBDB\\uBBDD-\\uBBF7\\uBBF9-\\uBC13\\uBC15-\\uBC2F\\uBC31-\\uBC4B\\uBC4D-\\uBC67\\uBC69-\\uBC83\\uBC85-\\uBC9F\\uBCA1-\\uBCBB\\uBCBD-\\uBCD7\\uBCD9-\\uBCF3\\uBCF5-\\uBD0F\\uBD11-\\uBD2B\\uBD2D-\\uBD47\\uBD49-\\uBD63\\uBD65-\\uBD7F\\uBD81-\\uBD9B\\uBD9D-\\uBDB7\\uBDB9-\\uBDD3\\uBDD5-\\uBDEF\\uBDF1-\\uBE0B\\uBE0D-\\uBE27\\uBE29-\\uBE43\\uBE45-\\uBE5F\\uBE61-\\uBE7B\\uBE7D-\\uBE97\\uBE99-\\uBEB3\\uBEB5-\\uBECF\\uBED1-\\uBEEB\\uBEED-\\uBF07\\uBF09-\\uBF23\\uBF25-\\uBF3F\\uBF41-\\uBF5B\\uBF5D-\\uBF77\\uBF79-\\uBF93\\uBF95-\\uBFAF\\uBFB1-\\uBFCB\\uBFCD-\\uBFE7\\uBFE9-\\uC003\\uC005-\\uC01F\\uC021-\\uC03B\\uC03D-\\uC057\\uC059-\\uC073\\uC075-\\uC08F\\uC091-\\uC0AB\\uC0AD-\\uC0C7\\uC0C9-\\uC0E3\\uC0E5-\\uC0FF\\uC101-\\uC11B\\uC11D-\\uC137\\uC139-\\uC153\\uC155-\\uC16F\\uC171-\\uC18B\\uC18D-\\uC1A7\\uC1A9-\\uC1C3\\uC1C5-\\uC1DF\\uC1E1-\\uC1FB\\uC1FD-\\uC217\\uC219-\\uC233\\uC235-\\uC24F\\uC251-\\uC26B\\uC26D-\\uC287\\uC289-\\uC2A3\\uC2A5-\\uC2BF\\uC2C1-\\uC2DB\\uC2DD-\\uC2F7\\uC2F9-\\uC313\\uC315-\\uC32F\\uC331-\\uC34B\\uC34D-\\uC367\\uC369-\\uC383\\uC385-\\uC39F\\uC3A1-\\uC3BB\\uC3BD-\\uC3D7\\uC3D9-\\uC3F3\\uC3F5-\\uC40F\\uC411-\\uC42B\\uC42D-\\uC447\\uC449-\\uC463\\uC465-\\uC47F\\uC481-\\uC49B\\uC49D-\\uC4B7\\uC4B9-\\uC4D3\\uC4D5-\\uC4EF\\uC4F1-\\uC50B\\uC50D-\\uC527\\uC529-\\uC543\\uC545-\\uC55F\\uC561-\\uC57B\\uC57D-\\uC597\\uC599-\\uC5B3\\uC5B5-\\uC5CF\\uC5D1-\\uC5EB\\uC5ED-\\uC607\\uC609-\\uC623\\uC625-\\uC63F\\uC641-\\uC65B\\uC65D-\\uC677\\uC679-\\uC693\\uC695-\\uC6AF\\uC6B1-\\uC6CB\\uC6CD-\\uC6E7\\uC6E9-\\uC703\\uC705-\\uC71F\\uC721-\\uC73B\\uC73D-\\uC757\\uC759-\\uC773\\uC775-\\uC78F\\uC791-\\uC7AB\\uC7AD-\\uC7C7\\uC7C9-\\uC7E3\\uC7E5-\\uC7FF\\uC801-\\uC81B\\uC81D-\\uC837\\uC839-\\uC853\\uC855-\\uC86F\\uC871-\\uC88B\\uC88D-\\uC8A7\\uC8A9-\\uC8C3\\uC8C5-\\uC8DF\\uC8E1-\\uC8FB\\uC8FD-\\uC917\\uC919-\\uC933\\uC935-\\uC94F\\uC951-\\uC96B\\uC96D-\\uC987\\uC989-\\uC9A3\\uC9A5-\\uC9BF\\uC9C1-\\uC9DB\\uC9DD-\\uC9F7\\uC9F9-\\uCA13\\uCA15-\\uCA2F\\uCA31-\\uCA4B\\uCA4D-\\uCA67\\uCA69-\\uCA83\\uCA85-\\uCA9F\\uCAA1-\\uCABB\\uCABD-\\uCAD7\\uCAD9-\\uCAF3\\uCAF5-\\uCB0F\\uCB11-\\uCB2B\\uCB2D-\\uCB47\\uCB49-\\uCB63\\uCB65-\\uCB7F\\uCB81-\\uCB9B\\uCB9D-\\uCBB7\\uCBB9-\\uCBD3\\uCBD5-\\uCBEF\\uCBF1-\\uCC0B\\uCC0D-\\uCC27\\uCC29-\\uCC43\\uCC45-\\uCC5F\\uCC61-\\uCC7B\\uCC7D-\\uCC97\\uCC99-\\uCCB3\\uCCB5-\\uCCCF\\uCCD1-\\uCCEB\\uCCED-\\uCD07\\uCD09-\\uCD23\\uCD25-\\uCD3F\\uCD41-\\uCD5B\\uCD5D-\\uCD77\\uCD79-\\uCD93\\uCD95-\\uCDAF\\uCDB1-\\uCDCB\\uCDCD-\\uCDE7\\uCDE9-\\uCE03\\uCE05-\\uCE1F\\uCE21-\\uCE3B\\uCE3D-\\uCE57\\uCE59-\\uCE73\\uCE75-\\uCE8F\\uCE91-\\uCEAB\\uCEAD-\\uCEC7\\uCEC9-\\uCEE3\\uCEE5-\\uCEFF\\uCF01-\\uCF1B\\uCF1D-\\uCF37\\uCF39-\\uCF53\\uCF55-\\uCF6F\\uCF71-\\uCF8B\\uCF8D-\\uCFA7\\uCFA9-\\uCFC3\\uCFC5-\\uCFDF\\uCFE1-\\uCFFB\\uCFFD-\\uD017\\uD019-\\uD033\\uD035-\\uD04F\\uD051-\\uD06B\\uD06D-\\uD087\\uD089-\\uD0A3\\uD0A5-\\uD0BF\\uD0C1-\\uD0DB\\uD0DD-\\uD0F7\\uD0F9-\\uD113\\uD115-\\uD12F\\uD131-\\uD14B\\uD14D-\\uD167\\uD169-\\uD183\\uD185-\\uD19F\\uD1A1-\\uD1BB\\uD1BD-\\uD1D7\\uD1D9-\\uD1F3\\uD1F5-\\uD20F\\uD211-\\uD22B\\uD22D-\\uD247\\uD249-\\uD263\\uD265-\\uD27F\\uD281-\\uD29B\\uD29D-\\uD2B7\\uD2B9-\\uD2D3\\uD2D5-\\uD2EF\\uD2F1-\\uD30B\\uD30D-\\uD327\\uD329-\\uD343\\uD345-\\uD35F\\uD361-\\uD37B\\uD37D-\\uD397\\uD399-\\uD3B3\\uD3B5-\\uD3CF\\uD3D1-\\uD3EB\\uD3ED-\\uD407\\uD409-\\uD423\\uD425-\\uD43F\\uD441-\\uD45B\\uD45D-\\uD477\\uD479-\\uD493\\uD495-\\uD4AF\\uD4B1-\\uD4CB\\uD4CD-\\uD4E7\\uD4E9-\\uD503\\uD505-\\uD51F\\uD521-\\uD53B\\uD53D-\\uD557\\uD559-\\uD573\\uD575-\\uD58F\\uD591-\\uD5AB\\uD5AD-\\uD5C7\\uD5C9-\\uD5E3\\uD5E5-\\uD5FF\\uD601-\\uD61B\\uD61D-\\uD637\\uD639-\\uD653\\uD655-\\uD66F\\uD671-\\uD68B\\uD68D-\\uD6A7\\uD6A9-\\uD6C3\\uD6C5-\\uD6DF\\uD6E1-\\uD6FB\\uD6FD-\\uD717\\uD719-\\uD733\\uD735-\\uD74F\\uD751-\\uD76B\\uD76D-\\uD787\\uD789-\\uD7A3]$/u\nconst reExtPict = /^\\p{ExtPict}$/u\n\nconst getCodepointType = (char: string, code: number): CodepointType => {\n let type = CodepointType.Any\n if (char.search(reExtend) !== -1) {\n type |= CodepointType.Extend\n }\n if (code === 0x200d) {\n type |= CodepointType.ZWJ\n }\n if (code >= 0x1f1e6 && code <= 0x1f1ff) {\n type |= CodepointType.RI\n }\n if (char.search(rePrepend) !== -1) {\n type |= CodepointType.Prepend\n }\n if (char.search(reSpacingMark) !== -1) {\n type |= CodepointType.SpacingMark\n }\n if (char.search(reL) !== -1) {\n type |= CodepointType.L\n }\n if (char.search(reV) !== -1) {\n type |= CodepointType.V\n }\n if (char.search(reT) !== -1) {\n type |= CodepointType.T\n }\n if (char.search(reLV) !== -1) {\n type |= CodepointType.LV\n }\n if (char.search(reLVT) !== -1) {\n type |= CodepointType.LVT\n }\n if (char.search(reExtPict) !== -1) {\n type |= CodepointType.ExtPict\n }\n\n return type\n}\n\nfunction intersects(x: CodepointType, y: CodepointType) {\n return (x & y) !== 0\n}\n\nconst NonBoundaryPairs: [CodepointType, CodepointType][] = [\n // GB6\n [\n CodepointType.L,\n CodepointType.L | CodepointType.V | CodepointType.LV | CodepointType.LVT,\n ],\n // GB7\n [CodepointType.LV | CodepointType.V, CodepointType.V | CodepointType.T],\n // GB8\n [CodepointType.LVT | CodepointType.T, CodepointType.T],\n // GB9\n [CodepointType.Any, CodepointType.Extend | CodepointType.ZWJ],\n // GB9a\n [CodepointType.Any, CodepointType.SpacingMark],\n // GB9b\n [CodepointType.Prepend, CodepointType.Any],\n // GB11\n [CodepointType.ZWJ, CodepointType.ExtPict],\n // GB12 and GB13\n [CodepointType.RI, CodepointType.RI],\n]\n\nfunction isBoundaryPair(left: CodepointType, right: CodepointType) {\n return (\n NonBoundaryPairs.findIndex(\n r => intersects(left, r[0]) && intersects(right, r[1])\n ) === -1\n )\n}\n\nconst endingEmojiZWJ = /\\p{ExtPict}[\\p{Gr_Ext}\\p{EMod}]*\\u200D$/u\nconst endsWithEmojiZWJ = (str: string): boolean => {\n return str.search(endingEmojiZWJ) !== -1\n}\n\nconst endingRIs = /\\p{RI}+$/gu\nconst endsWithOddNumberOfRIs = (str: string): boolean => {\n const match = str.match(endingRIs)\n if (match === null) {\n return false\n } else {\n // A RI is represented by a surrogate pair.\n const numRIs = match[0].length / 2\n return numRIs % 2 === 1\n }\n}\n","import { Editor, Location, Node, Path, Range, Transforms } from '../../index'\nimport { TextUnit } from '../../types/types'\nimport { getDefaultInsertLocation } from '../../utils'\n\nexport interface TextDeleteOptions {\n at?: Location\n distance?: number\n unit?: TextUnit\n reverse?: boolean\n hanging?: boolean\n voids?: boolean\n}\n\nexport interface TextInsertFragmentOptions {\n at?: Location\n hanging?: boolean\n voids?: boolean\n batchDirty?: boolean\n}\n\nexport interface TextInsertTextOptions {\n at?: Location\n voids?: boolean\n}\n\nexport interface TextTransforms {\n /**\n * Delete content in the editor.\n */\n delete: (editor: Editor, options?: TextDeleteOptions) => void\n\n /**\n * Insert a fragment in the editor\n * at the specified location or (if not defined) the current selection or (if not defined) the end of the document.\n */\n insertFragment: (\n editor: Editor,\n fragment: Node[],\n options?: TextInsertFragmentOptions\n ) => void\n\n /**\n * Insert a string of text in the editor\n * at the specified location or (if not defined) the current selection or (if not defined) the end of the document.\n */\n insertText: (\n editor: Editor,\n text: string,\n options?: TextInsertTextOptions\n ) => void\n}\n\n// eslint-disable-next-line no-redeclare\nexport const TextTransforms: TextTransforms = {\n delete(editor, options) {\n editor.delete(options)\n },\n insertFragment(editor, fragment, options) {\n editor.insertFragment(fragment, options)\n },\n insertText(\n editor: Editor,\n text: string,\n options: TextInsertTextOptions = {}\n ): void {\n Editor.withoutNormalizing(editor, () => {\n const { voids = false } = options\n let { at = getDefaultInsertLocation(editor) } = options\n\n if (Path.isPath(at)) {\n at = Editor.range(editor, at)\n }\n\n if (Range.isRange(at)) {\n if (Range.isCollapsed(at)) {\n at = at.anchor\n } else {\n const end = Range.end(at)\n if (!voids && Editor.void(editor, { at: end })) {\n return\n }\n const start = Range.start(at)\n const startRef = Editor.pointRef(editor, start)\n const endRef = Editor.pointRef(editor, end)\n Transforms.delete(editor, { at, voids })\n const startPoint = startRef.unref()\n const endPoint = endRef.unref()\n\n at = startPoint || endPoint!\n Transforms.setSelection(editor, { anchor: at, focus: at })\n }\n }\n\n if (\n (!voids && Editor.void(editor, { at })) ||\n Editor.elementReadOnly(editor, { at })\n ) {\n return\n }\n\n const { path, offset } = at\n if (text.length > 0)\n editor.apply({ type: 'insert_text', path, offset, text })\n })\n },\n}\n","import { GeneralTransforms } from './general'\nimport { NodeTransforms } from './node'\nimport { SelectionTransforms } from './selection'\nimport { TextTransforms } from './text'\n\nexport const Transforms: GeneralTransforms &\n NodeTransforms &\n SelectionTransforms &\n TextTransforms = {\n ...GeneralTransforms,\n ...NodeTransforms,\n ...SelectionTransforms,\n ...TextTransforms,\n}\n","// perf\n\nimport { Editor } from '../interfaces/editor'\n\nconst BATCHING_DIRTY_PATHS: WeakMap<Editor, boolean> = new WeakMap()\n\nexport const isBatchingDirtyPaths = (editor: Editor) => {\n return BATCHING_DIRTY_PATHS.get(editor) || false\n}\n\nexport const batchDirtyPaths = (\n editor: Editor,\n fn: () => void,\n update: () => void\n) => {\n const value = BATCHING_DIRTY_PATHS.get(editor) || false\n BATCHING_DIRTY_PATHS.set(editor, true)\n try {\n fn()\n update()\n } finally {\n BATCHING_DIRTY_PATHS.set(editor, value)\n }\n}\n","import { DIRTY_PATH_KEYS, DIRTY_PATHS } from '../utils/weak-maps'\nimport { Path } from '../interfaces/path'\nimport { Editor } from '../interfaces/editor'\n\n/**\n * update editor dirty paths\n *\n * @param newDirtyPaths: Path[]; new dirty paths\n * @param transform: (p: Path) => Path | null; how to transform existing dirty paths\n */\nexport function updateDirtyPaths(\n editor: Editor,\n newDirtyPaths: Path[],\n transform?: (p: Path) => Path | null\n) {\n const oldDirtyPaths = DIRTY_PATHS.get(editor) || []\n const oldDirtyPathKeys = DIRTY_PATH_KEYS.get(editor) || new Set()\n let dirtyPaths: Path[]\n let dirtyPathKeys: Set<string>\n\n const add = (path: Path | null) => {\n if (path) {\n const key = path.join(',')\n\n if (!dirtyPathKeys.has(key)) {\n dirtyPathKeys.add(key)\n dirtyPaths.push(path)\n }\n }\n }\n\n if (transform) {\n dirtyPaths = []\n dirtyPathKeys = new Set()\n for (const path of oldDirtyPaths) {\n const newPath = transform(path)\n add(newPath)\n }\n } else {\n dirtyPaths = oldDirtyPaths\n dirtyPathKeys = oldDirtyPathKeys\n }\n\n for (const path of newDirtyPaths) {\n add(path)\n }\n\n DIRTY_PATHS.set(editor, dirtyPaths)\n DIRTY_PATH_KEYS.set(editor, dirtyPathKeys)\n}\n","import { PathRef } from '../interfaces/path-ref'\nimport { PointRef } from '../interfaces/point-ref'\nimport { RangeRef } from '../interfaces/range-ref'\nimport { FLUSHING } from '../utils/weak-maps'\nimport { Path } from '../interfaces/path'\nimport { Transforms } from '../interfaces/transforms'\nimport { WithEditorFirstArg } from '../utils/types'\nimport { Editor } from '../interfaces/editor'\nimport { isBatchingDirtyPaths } from './batch-dirty-paths'\nimport { updateDirtyPaths } from './update-dirty-paths'\n\nexport const apply: WithEditorFirstArg<Editor['apply']> = (editor, op) => {\n for (const ref of Editor.pathRefs(editor)) {\n PathRef.transform(ref, op)\n }\n\n for (const ref of Editor.pointRefs(editor)) {\n PointRef.transform(ref, op)\n }\n\n for (const ref of Editor.rangeRefs(editor)) {\n RangeRef.transform(ref, op)\n }\n\n // update dirty paths\n if (!isBatchingDirtyPaths(editor)) {\n const transform = Path.operationCanTransformPath(op)\n ? (p: Path) => Path.transform(p, op)\n : undefined\n updateDirtyPaths(editor, editor.getDirtyPaths(op), transform)\n }\n\n Transforms.transform(editor, op)\n editor.operations.push(op)\n Editor.normalize(editor, {\n operation: op,\n })\n\n // Clear any formats applied to the cursor if the selection changes.\n if (op.type === 'set_selection') {\n editor.marks = null\n }\n\n if (!FLUSHING.get(editor)) {\n FLUSHING.set(editor, true)\n\n Promise.resolve().then(() => {\n FLUSHING.set(editor, false)\n editor.onChange({ operation: op })\n editor.operations = []\n })\n }\n}\n","import { WithEditorFirstArg } from '../utils/types'\nimport { Path } from '../interfaces/path'\nimport { Text } from '../interfaces/text'\nimport { Node } from '../interfaces/node'\nimport { Editor } from '../interfaces/editor'\n\n/**\n * Get the \"dirty\" paths generated from an operation.\n */\nexport const getDirtyPaths: WithEditorFirstArg<Editor['getDirtyPaths']> = (\n editor,\n op\n) => {\n switch (op.type) {\n case 'insert_text':\n case 'remove_text':\n case 'set_node': {\n const { path } = op\n return Path.levels(path)\n }\n\n case 'insert_node': {\n const { node, path } = op\n const levels = Path.levels(path)\n const descendants = Text.isText(node)\n ? []\n : Array.from(Node.nodes(node), ([, p]) => path.concat(p))\n\n return [...levels, ...descendants]\n }\n\n case 'merge_node': {\n const { path } = op\n const ancestors = Path.ancestors(path)\n const previousPath = Path.previous(path)\n return [...ancestors, previousPath]\n }\n\n case 'move_node': {\n const { path, newPath } = op\n\n if (Path.equals(path, newPath)) {\n return []\n }\n\n const oldAncestors: Path[] = []\n const newAncestors: Path[] = []\n\n for (const ancestor of Path.ancestors(path)) {\n const p = Path.transform(ancestor, op)\n oldAncestors.push(p!)\n }\n\n for (const ancestor of Path.ancestors(newPath)) {\n const p = Path.transform(ancestor, op)\n newAncestors.push(p!)\n }\n\n const newParent = newAncestors[newAncestors.length - 1]\n const newIndex = newPath[newPath.length - 1]\n const resultPath = newParent.concat(newIndex)\n\n return [...oldAncestors, ...newAncestors, resultPath]\n }\n\n case 'remove_node': {\n const { path } = op\n const ancestors = Path.ancestors(path)\n return [...ancestors]\n }\n\n case 'split_node': {\n const { path } = op\n const levels = Path.levels(path)\n const nextPath = Path.next(path)\n return [...levels, nextPath]\n }\n\n default: {\n return []\n }\n }\n}\n","import { Editor, Node } from '../interfaces'\nimport { WithEditorFirstArg } from '../utils'\n\nexport const getFragment: WithEditorFirstArg<\n Editor['getFragment']\n> = editor => {\n const { selection } = editor\n\n if (selection) {\n return Node.fragment(editor, selection)\n }\n return []\n}\n","import { WithEditorFirstArg } from '../utils/types'\nimport { Text } from '../interfaces/text'\nimport { Element } from '../interfaces/element'\nimport { Transforms } from '../interfaces/transforms'\nimport { Descendant, Node } from '../interfaces/node'\nimport { Editor } from '../interfaces/editor'\n\nexport const normalizeNode: WithEditorFirstArg<Editor['normalizeNode']> = (\n editor,\n entry\n) => {\n const [node, path] = entry\n\n // There are no core normalizations for text nodes.\n if (Text.isText(node)) {\n return\n }\n\n // Ensure that block and inline nodes have at least one text child.\n if (Element.isElement(node) && node.children.length === 0) {\n const child = { text: '' }\n Transforms.insertNodes(editor, child, {\n at: path.concat(0),\n voids: true,\n })\n return\n }\n\n // Determine whether the node should have block or inline children.\n const shouldHaveInlines = Editor.isEditor(node)\n ? false\n : Element.isElement(node) &&\n (editor.isInline(node) ||\n node.children.length === 0 ||\n Text.isText(node.children[0]) ||\n editor.isInline(node.children[0]))\n\n // Since we'll be applying operations while iterating, keep track of an\n // index that accounts for any added/removed nodes.\n let n = 0\n\n for (let i = 0; i < node.children.length; i++, n++) {\n const currentNode = Node.get(editor, path)\n if (Text.isText(currentNode)) continue\n const child = currentNode.children[n] as Descendant\n const prev = currentNode.children[n - 1] as Descendant\n const isLast = i === node.children.length - 1\n const isInlineOrText =\n Text.isText(child) || (Element.isElement(child) && editor.isInline(child))\n\n // Only allow block nodes in the top-level children and parent blocks\n // that only contain block nodes. Similarly, only allow inline nodes in\n // other inline nodes, or parent blocks that only contain inlines and\n // text.\n if (isInlineOrText !== shouldHaveInlines) {\n if (isInlineOrText) {\n Transforms.removeNodes(editor, { at: path.concat(n), voids: true })\n } else {\n Transforms.unwrapNodes(editor, { at: path.concat(n), voids: true })\n }\n n--\n } else if (Element.isElement(child)) {\n // Ensure that inline nodes are surrounded by text nodes.\n if (editor.isInline(child)) {\n if (prev == null || !Text.isText(prev)) {\n const newChild = { text: '' }\n Transforms.insertNodes(editor, newChild, {\n at: path.concat(n),\n voids: true,\n })\n n++\n } else if (isLast) {\n const newChild = { text: '' }\n Transforms.insertNodes(editor, newChild, {\n at: path.concat(n + 1),\n voids: true,\n })\n n++\n }\n }\n } else {\n // If the child is not a text node, and doesn't have a `children` field,\n // then we have an invalid node that will upset slate.\n //\n // eg: `{ type: 'some_node' }`.\n //\n // To prevent slate from breaking, we can add the `children` field,\n // and now that it is valid, we can to many more operations easily,\n // such as extend normalizers to fix erronous structure.\n if (!Text.isText(child) && !('children' in child)) {\n const elementChild = child as Element\n elementChild.children = []\n }\n\n // Merge adjacent text nodes that are empty or match.\n if (prev != null && Text.isText(prev)) {\n if (Text.equals(child, prev, { loose: true })) {\n Transforms.mergeNodes(editor, { at: path.concat(n), voids: true })\n n--\n } else if (prev.text === '') {\n Transforms.removeNodes(editor, {\n at: path.concat(n - 1),\n voids: true,\n })\n n--\n } else if (child.text === '') {\n Transforms.removeNodes(editor, {\n at: path.concat(n),\n voids: true,\n })\n n--\n }\n }\n }\n }\n}\n","import { WithEditorFirstArg } from '../utils/types'\nimport { Editor } from '../interfaces/editor'\n\nexport const shouldNormalize: WithEditorFirstArg<Editor['shouldNormalize']> = (\n editor,\n { iteration, initialDirtyPathsLength }\n) => {\n const maxIterations = initialDirtyPathsLength * 42 // HACK: better way?\n\n if (iteration > maxIterations) {\n throw new Error(\n `Could not completely normalize the editor after ${maxIterations} iterations! This is usually due to incorrect normalization logic that leaves a node in an invalid state.`\n )\n }\n\n return true\n}\n","import { Editor, EditorInterface } from '../interfaces/editor'\nimport { Text } from '../interfaces/text'\nimport { Range } from '../interfaces/range'\nimport { Path } from '../interfaces/path'\n\nexport const above: EditorInterface['above'] = (editor, options = {}) => {\n const {\n voids = false,\n mode = 'lowest',\n at = editor.selection,\n match,\n } = options\n\n if (!at) {\n return\n }\n\n const path = Editor.path(editor, at)\n const reverse = mode === 'lowest'\n\n for (const [n, p] of Editor.levels(editor, {\n at: path,\n voids,\n match,\n reverse,\n })) {\n if (Text.isText(n)) continue\n if (Range.isRange(at)) {\n if (\n Path.isAncestor(p, at.anchor.path) &&\n Path.isAncestor(p, at.focus.path)\n ) {\n return [n, p]\n }\n } else {\n if (!Path.equals(path, p)) {\n return [n, p]\n }\n }\n }\n}\n","import { Node } from '../interfaces/node'\nimport { Path } from '../interfaces/path'\nimport { Text } from '../interfaces/text'\nimport { Range } from '../interfaces/range'\nimport { Transforms } from '../interfaces/transforms'\nimport { FLUSHING } from '../utils/weak-maps'\nimport { Editor, EditorInterface } from '../interfaces/editor'\n\nexport const addMark: EditorInterface['addMark'] = (editor, key, value) => {\n const { selection } = editor\n\n if (selection) {\n const match = (node: Node, path: Path) => {\n if (!Text.isText(node)) {\n return false // marks can only be applied to text\n }\n const [parentNode, parentPath] = Editor.parent(editor, path)\n return !editor.isVoid(parentNode) || editor.markableVoid(parentNode)\n }\n const expandedSelection = Range.isExpanded(selection)\n let markAcceptingVoidSelected = false\n if (!expandedSelection) {\n const [selectedNode, selectedPath] = Editor.node(editor, selection)\n if (selectedNode && match(selectedNode, selectedPath)) {\n const [parentNode] = Editor.parent(editor, selectedPath)\n markAcceptingVoidSelected =\n parentNode && editor.markableVoid(parentNode)\n }\n }\n if (expandedSelection || markAcceptingVoidSelected) {\n Transforms.setNodes(\n editor,\n { [key]: value },\n {\n match,\n split: true,\n voids: true,\n }\n )\n } else {\n const marks = {\n ...(Editor.marks(editor) || {}),\n [key]: value,\n }\n\n editor.marks = marks\n if (!FLUSHING.get(editor)) {\n editor.onChange()\n }\n }\n }\n}\n","import { Editor, EditorInterface } from '../interfaces/editor'\n\nexport const after: EditorInterface['after'] = (editor, at, options = {}) => {\n const anchor = Editor.point(editor, at, { edge: 'end' })\n const focus = Editor.end(editor, [])\n const range = { anchor, focus }\n const { distance = 1 } = options\n let d = 0\n let target\n\n for (const p of Editor.positions(editor, {\n ...options,\n at: range,\n })) {\n if (d > distance) {\n break\n }\n\n if (d !== 0) {\n target = p\n }\n\n d++\n }\n\n return target\n}\n","import { Editor, EditorInterface } from '../interfaces/editor'\n\nexport const before: EditorInterface['before'] = (editor, at, options = {}) => {\n const anchor = Editor.start(editor, [])\n const focus = Editor.point(editor, at, { edge: 'start' })\n const range = { anchor, focus }\n const { distance = 1 } = options\n let d = 0\n let target\n\n for (const p of Editor.positions(editor, {\n ...options,\n at: range,\n reverse: true,\n })) {\n if (d > distance) {\n break\n }\n\n if (d !== 0) {\n target = p\n }\n\n d++\n }\n\n return target\n}\n","import { Editor } from '../interfaces/editor'\nimport { Transforms } from '../interfaces/transforms'\nimport { Range } from '../interfaces/range'\nimport { WithEditorFirstArg } from '../utils/types'\n\nexport const deleteBackward: WithEditorFirstArg<Editor['deleteBackward']> = (\n editor,\n unit\n) => {\n const { selection } = editor\n\n if (selection && Range.isCollapsed(selection)) {\n Transforms.delete(editor, { unit, reverse: true })\n }\n}\n","import { Editor } from '../interfaces/editor'\nimport { Transforms } from '../interfaces/transforms'\nimport { Range } from '../interfaces/range'\nimport { WithEditorFirstArg } from '../utils/types'\n\nexport const deleteForward: WithEditorFirstArg<Editor['deleteForward']> = (\n editor,\n unit\n) => {\n const { selection } = editor\n\n if (selection && Range.isCollapsed(selection)) {\n Transforms.delete(editor, { unit })\n }\n}\n","import { Range } from '../interfaces/range'\nimport { Transforms } from '../interfaces/transforms'\nimport { EditorInterface } from '../interfaces/editor'\n\nexport const deleteFragment: EditorInterface['deleteFragment'] = (\n editor,\n { direction = 'forward' } = {}\n) => {\n const { selection } = editor\n\n if (selection && Range.isExpanded(selection)) {\n Transforms.delete(editor, { reverse: direction === 'backward' })\n }\n}\n","import { Editor, EditorInterface } from '../interfaces/editor'\n\nexport const edges: EditorInterface['edges'] = (editor, at) => {\n return [Editor.start(editor, at), Editor.end(editor, at)]\n}\n","import { Element } from '../interfaces/element'\nimport { Editor, EditorInterface } from '../interfaces/editor'\n\nexport const elementReadOnly: EditorInterface['elementReadOnly'] = (\n editor,\n options = {}\n) => {\n return Editor.above(editor, {\n ...options,\n match: n => Element.isElement(n) && Editor.isElementReadOnly(editor, n),\n })\n}\n","import { Editor, EditorInterface } from '../interfaces/editor'\n\nexport const end: EditorInterface['end'] = (editor, at) => {\n return Editor.point(editor, at, { edge: 'end' })\n}\n","import { Editor, EditorInterface } from '../interfaces/editor'\n\nexport const first: EditorInterface['first'] = (editor, at) => {\n const path = Editor.path(editor, at, { edge: 'start' })\n return Editor.node(editor, path)\n}\n","import { Editor, EditorInterface } from '../interfaces/editor'\nimport { Node } from '../interfaces/node'\n\nexport const fragment: EditorInterface['fragment'] = (editor, at) => {\n const range = Editor.range(editor, at)\n return Node.fragment(editor, range)\n}\n","import { Editor, EditorInterface } from '../interfaces/editor'\nimport { Element } from '../interfaces/element'\n\nexport const getVoid: EditorInterface['void'] = (editor, options = {}) => {\n return Editor.above(editor, {\n ...options,\n match: n => Element.isElement(n) && Editor.isVoid(editor, n),\n })\n}\n","import { Editor, EditorInterface } from '../interfaces/editor'\nimport { Element } from '../interfaces/element'\n\nexport const hasBlocks: EditorInterface['hasBlocks'] = (editor, element) => {\n return element.children.some(\n n => Element.isElement(n) && Editor.isBlock(editor, n)\n )\n}\n","import { Editor, EditorInterface } from '../interfaces/editor'\nimport { Text } from '../interfaces/text'\n\nexport const hasInlines: EditorInterface['hasInlines'] = (editor, element) => {\n return element.children.some(\n n => Text.isText(n) || Editor.isInline(editor, n)\n )\n}\n","import { EditorInterface } from '../interfaces/editor'\nimport { Node } from '../interfaces/node'\n\nexport const hasPath: EditorInterface['hasPath'] = (editor, path) => {\n return Node.has(editor, path)\n}\n","import { EditorInterface } from '../interfaces/editor'\nimport { Text } from '../interfaces/text'\n\nexport const hasTexts: EditorInterface['hasTexts'] = (editor, element) => {\n return element.children.every(n => Text.isText(n))\n}\n","import { Transforms } from '../interfaces/transforms'\nimport { EditorInterface } from '../interfaces/editor'\n\nexport const insertBreak: EditorInterface['insertBreak'] = editor => {\n Transforms.splitNodes(editor, { always: true })\n}\n","import { Transforms } from '../interfaces/transforms'\nimport { EditorInterface } from '../interfaces/editor'\n\nexport const insertNode: EditorInterface['insertNode'] = (\n editor,\n node,\n options\n) => {\n Transforms.insertNodes(editor, node, options)\n}\n","import { Transforms } from '../interfaces/transforms'\nimport { EditorInterface } from '../interfaces/editor'\n\nexport const insertSoftBreak: EditorInterface['insertSoftBreak'] = editor => {\n Transforms.splitNodes(editor, { always: true })\n}\n","import { Transforms } from '../interfaces/transforms'\nimport { EditorInterface } from '../interfaces/editor'\n\nexport const insertText: EditorInterface['insertText'] = (\n editor,\n text,\n options = {}\n) => {\n const { selection, marks } = editor\n\n if (selection) {\n if (marks) {\n const node = { text, ...marks }\n Transforms.insertNodes(editor, node, {\n at: options.at,\n voids: options.voids,\n })\n } else {\n Transforms.insertText(editor, text, options)\n }\n\n editor.marks = null\n }\n}\n","import { EditorInterface } from '../interfaces/editor'\n\nexport const isBlock: EditorInterface['isBlock'] = (editor, value) => {\n return !editor.isInline(value)\n}\n","import { Editor, EditorInterface } from '../interfaces/editor'\n\nexport const isEdge: EditorInterface['isEdge'] = (editor, point, at) => {\n return Editor.isStart(editor, point, at) || Editor.isEnd(editor, point, at)\n}\n","import { EditorInterface } from '../interfaces/editor'\nimport { Text } from '../interfaces/text'\n\nexport const isEmpty: EditorInterface['isEmpty'] = (editor, element) => {\n const { children } = element\n const [first] = children\n return (\n children.length === 0 ||\n (children.length === 1 &&\n Text.isText(first) &&\n first.text === '' &&\n !editor.isVoid(element))\n )\n}\n","import { Editor, EditorInterface } from '../interfaces/editor'\nimport { Point } from '../interfaces/point'\n\nexport const isEnd: EditorInterface['isEnd'] = (editor, point, at) => {\n const end = Editor.end(editor, at)\n return Point.equals(point, end)\n}\n","import { EditorInterface } from '../interfaces/editor'\nimport { NORMALIZING } from '../utils/weak-maps'\n\nexport const isNormalizing: EditorInterface['isNormalizing'] = editor => {\n const isNormalizing = NORMALIZING.get(editor)\n return isNormalizing === undefined ? true : isNormalizing\n}\n","import { Editor, EditorInterface } from '../interfaces/editor'\nimport { Point } from '../interfaces/point'\n\nexport const isStart: EditorInterface['isStart'] = (editor, point, at) => {\n // PERF: If the offset isn't `0` we know it's not the start.\n if (point.offset !== 0) {\n return false\n }\n\n const start = Editor.start(editor, at)\n return Point.equals(point, start)\n}\n","import { Editor, EditorInterface } from '../interfaces/editor'\n\nexport const last: EditorInterface['last'] = (editor, at) => {\n const path = Editor.path(editor, at, { edge: 'end' })\n return Editor.node(editor, path)\n}\n","import { Editor, EditorInterface } from '../interfaces/editor'\nimport { Node } from '../interfaces/node'\n\nexport const leaf: EditorInterface['leaf'] = (editor, at, options = {}) => {\n const path = Editor.path(editor, at, options)\n const node = Node.leaf(editor, path)\n return [node, path]\n}\n","import { Node, NodeEntry } from '../interfaces/node'\nimport { Editor, EditorLevelsOptions } from '../interfaces/editor'\nimport { Element } from '../interfaces/element'\n\nexport function* levels<T extends Node>(\n editor: Editor,\n options: EditorLevelsOptions<T> = {}\n): Generator<NodeEntry<T>, void, undefined> {\n const { at = editor.selection, reverse = false, voids = false } = options\n let { match } = options\n\n if (match == null) {\n match = () => true\n }\n\n if (!at) {\n return\n }\n\n const levels: NodeEntry<T>[] = []\n const path = Editor.path(editor, at)\n\n for (const [n, p] of Node.levels(editor, path)) {\n if (!match(n, p)) {\n continue\n }\n\n levels.push([n, p] as NodeEntry<T>)\n\n if (!voids && Element.isElement(n) && Editor.isVoid(editor, n)) {\n break\n }\n }\n\n if (reverse) {\n levels.reverse()\n }\n\n yield* levels\n}\n","import { Editor, EditorInterface } from '../interfaces/editor'\nimport { NodeEntry } from '../interfaces/node'\nimport { Range } from '../interfaces/range'\nimport { Path } from '../interfaces/path'\nimport { Text } from '../interfaces/text'\nimport { Element } from '../interfaces/element'\nimport { Point } from '../interfaces'\n\nexport const marks: EditorInterface['marks'] = (editor, options = {}) => {\n const { marks, selection } = editor\n\n if (!selection) {\n return null\n }\n let { anchor, focus } = selection\n\n if (marks) {\n return marks\n }\n\n if (Range.isExpanded(selection)) {\n const isBackward = Range.isBackward(selection)\n if (isBackward) {\n ;[focus, anchor] = [anchor, focus]\n }\n /**\n * COMPAT: Make sure hanging ranges (caused by double clicking in Firefox)\n * do not adversely affect the returned marks.\n */\n const isEnd = Editor.isEnd(editor, anchor, anchor.path)\n if (isEnd) {\n const after = Editor.after(editor, anchor as Point)\n if (after) {\n anchor = after\n }\n }\n\n const [match] = Editor.nodes(editor, {\n match: Text.isText,\n at: {\n anchor,\n focus,\n },\n })\n\n if (match) {\n const [node] = match as NodeEntry<Text>\n const { text, ...rest } = node\n return rest\n } else {\n return {}\n }\n }\n\n const { path } = anchor\n\n let [node] = Editor.leaf(editor, path)\n\n if (anchor.offset === 0) {\n const prev = Editor.previous(editor, { at: path, match: Text.isText })\n const markedVoid = Editor.above(editor, {\n match: n =>\n Element.isElement(n) &&\n Editor.isVoid(editor, n) &&\n editor.markableVoid(n),\n })\n if (!markedVoid) {\n const block = Editor.above(editor, {\n match: n => Element.isElement(n) && Editor.isBlock(editor, n),\n })\n\n if (prev && block) {\n const [prevNode, prevPath] = prev\n const [, blockPath] = block\n\n if (Path.isAncestor(blockPath, prevPath)) {\n node = prevNode as Text\n }\n }\n }\n }\n\n const { text, ...rest } = node\n return rest\n}\n","import { Editor, EditorInterface } from '../interfaces/editor'\nimport { Span } from '../interfaces/location'\nimport { Path } from '../interfaces/path'\n\nexport const next: EditorInterface['next'] = (editor, options = {}) => {\n const { mode = 'lowest', voids = false } = options\n let { match, at = editor.selection } = options\n\n if (!at) {\n return\n }\n\n const pointAfterLocation = Editor.after(editor, at, { voids })\n\n if (!pointAfterLocation) return\n\n const [, to] = Editor.last(editor, [])\n\n const span: Span = [pointAfterLocation.path, to]\n\n if (Path.isPath(at) && at.length === 0) {\n throw new Error(`Cannot get the next node from the root node!`)\n }\n\n if (match == null) {\n if (Path.isPath(at)) {\n const [parent] = Editor.parent(editor, at)\n match = n => parent.children.includes(n)\n } else {\n match = () => true\n }\n }\n\n const [next] = Editor.nodes(editor, { at: span, match, mode, voids })\n return next\n}\n","import { Editor, EditorInterface } from '../interfaces/editor'\nimport { Node } from '../interfaces/node'\n\nexport const node: EditorInterface['node'] = (editor, at, options = {}) => {\n const path = Editor.path(editor, at, options)\n const node = Node.get(editor, path)\n return [node, path]\n}\n","import { Node, NodeEntry } from '../interfaces/node'\nimport { Editor, EditorNodesOptions } from '../interfaces/editor'\nimport { Span } from '../interfaces/location'\nimport { Element } from '../interfaces/element'\nimport { Path } from '../interfaces/path'\nimport { Text } from '../interfaces/text'\n\nexport function* nodes<T extends Node>(\n editor: Editor,\n options: EditorNodesOptions<T> = {}\n): Generator<NodeEntry<T>, void, undefined> {\n const {\n at = editor.selection,\n mode = 'all',\n universal = false,\n reverse = false,\n voids = false,\n pass,\n ignoreNonSelectable = false,\n } = options\n let { match } = options\n\n if (!match) {\n match = () => true\n }\n\n if (!at) {\n return\n }\n\n let from\n let to\n\n if (Span.isSpan(at)) {\n from = at[0]\n to = at[1]\n } else {\n const first = Editor.path(editor, at, { edge: 'start' })\n const last = Editor.path(editor, at, { edge: 'end' })\n from = reverse ? last : first\n to = reverse ? first : last\n }\n\n const nodeEntries = Node.nodes(editor, {\n reverse,\n from,\n to,\n pass: ([node, path]) => {\n if (pass && pass([node, path])) return true\n if (!Element.isElement(node)) return false\n if (\n !voids &&\n (Editor.isVoid(editor, node) || Editor.isElementReadOnly(editor, node))\n )\n return true\n if (ignoreNonSelectable && !Editor.isSelectable(editor, node)) return true\n return false\n },\n })\n\n const matches: NodeEntry<T>[] = []\n let hit: NodeEntry<T> | undefined\n\n for (const [node, path] of nodeEntries) {\n if (\n ignoreNonSelectable &&\n Element.isElement(node) &&\n !Editor.isSelectable(editor, node)\n ) {\n continue\n }\n\n const isLower = hit && Path.compare(path, hit[1]) === 0\n\n // In highest mode any node lower than the last hit is not a match.\n if (mode === 'highest' && isLower) {\n continue\n }\n\n if (!match(node, path)) {\n // If we've arrived at a leaf text node that is not lower than the last\n // hit, then we've found a branch that doesn't include a match, which\n // means the match is not universal.\n if (universal && !isLower && Text.isText(node)) {\n return\n } else {\n continue\n }\n }\n\n // If there's a match and it's lower than the last, update the hit.\n if (mode === 'lowest' && isLower) {\n hit = [node, path] as NodeEntry<T>\n continue\n }\n\n // In lowest mode we emit the last hit, once it's guaranteed lowest.\n const emit: NodeEntry<T> | undefined =\n mode === 'lowest' ? hit : ([node, path] as NodeEntry<T>)\n\n if (emit) {\n if (universal) {\n matches.push(emit)\n } else {\n yield emit\n }\n }\n\n hit = [node, path] as NodeEntry<T>\n }\n\n // Since lowest is always emitting one behind, catch up at the end.\n if (mode === 'lowest' && hit) {\n if (universal) {\n matches.push(hit)\n } else {\n yield hit\n }\n }\n\n // Universal defers to ensure that the match occurs in every branch, so we\n // yield all of the matches after iterating.\n if (universal) {\n yield* matches\n }\n}\n","import { Editor, EditorInterface } from '../interfaces/editor'\nimport { DIRTY_PATH_KEYS, DIRTY_PATHS } from '../utils/weak-maps'\nimport { Path } from '../interfaces/path'\nimport { Node } from '../interfaces/node'\nimport { Element } from '../interfaces/element'\n\nexport const normalize: EditorInterface['normalize'] = (\n editor,\n options = {}\n) => {\n const { force = false, operation } = options\n const getDirtyPaths = (editor: Editor) => {\n return DIRTY_PATHS.get(editor) || []\n }\n\n const getDirtyPathKeys = (editor: Editor) => {\n return DIRTY_PATH_KEYS.get(editor) || new Set()\n }\n\n const popDirtyPath = (editor: Editor): Path => {\n const path = getDirtyPaths(editor).pop()!\n const key = path.join(',')\n getDirtyPathKeys(editor).delete(key)\n return path\n }\n\n if (!Editor.isNormalizing(editor)) {\n return\n }\n\n if (force) {\n const allPaths = Array.from(Node.nodes(editor), ([, p]) => p)\n const allPathKeys = new Set(allPaths.map(p => p.join(',')))\n DIRTY_PATHS.set(editor, allPaths)\n DIRTY_PATH_KEYS.set(editor, allPathKeys)\n }\n\n if (getDirtyPaths(editor).length === 0) {\n return\n }\n\n Editor.withoutNormalizing(editor, () => {\n /*\n Fix dirty elements with no children.\n editor.normalizeNode() does fix this, but some normalization fixes also require it to work.\n Running an initial pass avoids the catch-22 race condition.\n */\n for (const dirtyPath of getDirtyPaths(editor)) {\n if (Node.has(editor, dirtyPath)) {\n const entry = Editor.node(editor, dirtyPath)\n const [node, _] = entry\n\n /*\n The default normalizer inserts an empty text node in this scenario, but it can be customised.\n So there is some risk here.\n\n As long as the normalizer only inserts child nodes for this case it is safe to do in any order;\n by definition adding children to an empty node can't cause other paths to change.\n */\n if (Element.isElement(node) && node.children.length === 0) {\n editor.normalizeNode(entry, { operation })\n }\n }\n }\n\n let dirtyPaths = getDirtyPaths(editor)\n const initialDirtyPathsLength = dirtyPaths.length\n let iteration = 0\n\n while (dirtyPaths.length !== 0) {\n if (\n !editor.shouldNormalize({\n dirtyPaths,\n iteration,\n initialDirtyPathsLength,\n operation,\n })\n ) {\n return\n }\n\n const dirtyPath = popDirtyPath(editor)\n\n // If the node doesn't exist in the tree, it does not need to be normalized.\n if (Node.has(editor, dirtyPath)) {\n const entry = Editor.node(editor, dirtyPath)\n editor.normalizeNode(entry, { operation })\n }\n iteration++\n dirtyPaths = getDirtyPaths(editor)\n }\n })\n}\n","import { Editor, EditorInterface } from '../interfaces/editor'\nimport { Path } from '../interfaces/path'\nimport { Ancestor, NodeEntry } from '../interfaces/node'\n\nexport const parent: EditorInterface['parent'] = (editor, at, options = {}) => {\n const path = Editor.path(editor, at, options)\n const parentPath = Path.parent(path)\n const entry = Editor.node(editor, parentPath)\n return entry as NodeEntry<Ancestor>\n}\n","import { Editor, EditorInterface } from '../interfaces/editor'\nimport { PathRef } from '../interfaces/path-ref'\n\nexport const pathRef: EditorInterface['pathRef'] = (\n editor,\n path,\n options = {}\n) => {\n const { affinity = 'forward' } = options\n const ref: PathRef = {\n current: path,\n affinity,\n unref() {\n const { current } = ref\n const pathRefs = Editor.pathRefs(editor)\n pathRefs.delete(ref)\n ref.current = null\n return current\n },\n }\n\n const refs = Editor.pathRefs(editor)\n refs.add(ref)\n return ref\n}\n","import { EditorInterface } from '../interfaces/editor'\nimport { PATH_REFS } from '../utils/weak-maps'\n\nexport const pathRefs: EditorInterface['pathRefs'] = editor => {\n let refs = PATH_REFS.get(editor)\n\n if (!refs) {\n refs = new Set()\n PATH_REFS.set(editor, refs)\n }\n\n return refs\n}\n","import { EditorInterface, Node, Path, Point, Range } from '../interfaces'\n\nexport const path: EditorInterface['path'] = (editor, at, options = {}) => {\n const { depth, edge } = options\n\n if (Path.isPath(at)) {\n if (edge === 'start') {\n const [, firstPath] = Node.first(editor, at)\n at = firstPath\n } else if (edge === 'end') {\n const [, lastPath] = Node.last(editor, at)\n at = lastPath\n }\n }\n\n if (Range.isRange(at)) {\n if (edge === 'start') {\n at = Range.start(at)\n } else if (edge === 'end') {\n at = Range.end(at)\n } else {\n at = Path.common(at.anchor.path, at.focus.path)\n }\n }\n\n if (Point.isPoint(at)) {\n at = at.path\n }\n\n if (depth != null) {\n at = at.slice(0, depth)\n }\n\n return at\n}\n","import { Editor, EditorInterface } from '../interfaces/editor'\nimport { PointRef } from '../interfaces/point-ref'\n\nexport const pointRef: EditorInterface['pointRef'] = (\n editor,\n point,\n options = {}\n) => {\n const { affinity = 'forward' } = options\n const ref: PointRef = {\n current: point,\n affinity,\n unref() {\n const { current } = ref\n const pointRefs = Editor.pointRefs(editor)\n pointRefs.delete(ref)\n ref.current = null\n return current\n },\n }\n\n const refs = Editor.pointRefs(editor)\n refs.add(ref)\n return ref\n}\n","import { EditorInterface } from '../interfaces/editor'\nimport { POINT_REFS } from '../utils/weak-maps'\n\nexport const pointRefs: EditorInterface['pointRefs'] = editor => {\n let refs = POINT_REFS.get(editor)\n\n if (!refs) {\n refs = new Set()\n POINT_REFS.set(editor, refs)\n }\n\n return refs\n}\n","import { EditorInterface } from '../interfaces/editor'\nimport { Path } from '../interfaces/path'\nimport { Node } from '../interfaces/node'\nimport { Text } from '../interfaces/text'\nimport { Range } from '../interfaces/range'\n\nexport const point: EditorInterface['point'] = (editor, at, options = {}) => {\n const { edge = 'start' } = options\n\n if (Path.isPath(at)) {\n let path\n\n if (edge === 'end') {\n const [, lastPath] = Node.last(editor, at)\n path = lastPath\n } else {\n const [, firstPath] = Node.first(editor, at)\n path = firstPath\n }\n\n const node = Node.get(editor, path)\n\n if (!Text.isText(node)) {\n throw new Error(\n `Cannot get the ${edge} point in the node at path [${at}] because it has no ${edge} text node.`\n )\n }\n\n return { path, offset: edge === 'end' ? node.text.length : 0 }\n }\n\n if (Range.isRange(at)) {\n const [start, end] = Range.edges(at)\n return edge === 'start' ? start : end\n }\n\n return at\n}\n","import { Editor, EditorPositionsOptions } from '../interfaces/editor'\nimport { Point } from '../interfaces/point'\nimport { Range } from '../interfaces/range'\nimport { Element } from '../interfaces/element'\nimport { Path } from '../interfaces/path'\nimport { Text } from '../interfaces/text'\nimport {\n getCharacterDistance,\n getWordDistance,\n splitByCharacterDistance,\n} from '../utils/string'\n\nexport function* positions(\n editor: Editor,\n options: EditorPositionsOptions = {}\n): Generator<Point, void, undefined> {\n const {\n at = editor.selection,\n unit = 'offset',\n reverse = false,\n voids = false,\n ignoreNonSelectable = false,\n } = options\n\n if (!at) {\n return\n }\n\n /**\n * Algorithm notes:\n *\n * Each step `distance` is dynamic depending on the underlying text\n * and the `unit` specified. Each step, e.g., a line or word, may\n * span multiple text nodes, so we iterate through the text both on\n * two levels in step-sync:\n *\n * `leafText` stores the text on a text leaf level, and is advanced\n * through using the counters `leafTextOffset` and `leafTextRemaining`.\n *\n * `blockText` stores the text on a block level, and is shortened\n * by `distance` every time it is advanced.\n *\n * We only maintain a window of one blockText and one leafText because\n * a block node always appears before all of its leaf nodes.\n */\n\n const range = Editor.range(editor, at)\n const [start, end] = Range.edges(range)\n const first = reverse ? end : start\n let isNewBlock = false\n let blockText = ''\n let distance = 0 // Distance for leafText to catch up to blockText.\n let leafTextRemaining = 0\n let leafTextOffset = 0\n\n // Iterate through all nodes in range, grabbing entire textual content\n // of block nodes in blockText, and text nodes in leafText.\n // Exploits the fact that nodes are sequenced in such a way that we first\n // encounter the block node, then all of its text nodes, so when iterating\n // through the blockText and leafText we just need to remember a window of\n // one block node and leaf node, respectively.\n for (const [node, path] of Editor.nodes(editor, {\n at,\n reverse,\n voids,\n ignoreNonSelectable,\n })) {\n /*\n * ELEMENT NODE - Yield position(s) for voids, collect blockText for blocks\n */\n if (Element.isElement(node)) {\n // Void nodes are a special case, so by default we will always\n // yield their first point. If the `voids` option is set to true,\n // then we will iterate over their content.\n if (!voids && (editor.isVoid(node) || editor.isElementReadOnly(node))) {\n yield Editor.start(editor, path)\n continue\n }\n\n // Inline element nodes are ignored as they don't themselves\n // contribute to `blockText` or `leafText` - their parent and\n // children do.\n if (editor.isInline(node)) continue\n\n // Block element node - set `blockText` to its text content.\n if (Editor.hasInlines(editor, node)) {\n // We always exhaust block nodes before encountering a new one:\n // console.assert(blockText === '',\n // `blockText='${blockText}' - `+\n // `not exhausted before new block node`, path)\n\n // Ensure range considered is capped to `range`, in the\n // start/end edge cases where block extends beyond range.\n // Equivalent to this, but presumably more performant:\n // blockRange = Editor.range(editor, ...Editor.edges(editor, path))\n // blockRange = Range.intersection(range, blockRange) // intersect\n // blockText = Editor.string(editor, blockRange, { voids })\n const e = Path.isAncestor(path, end.path)\n ? end\n : Editor.end(editor, path)\n const s = Path.isAncestor(path, start.path)\n ? start\n : Editor.start(editor, path)\n\n blockText = Editor.string(editor, { anchor: s, focus: e }, { voids })\n isNewBlock = true\n }\n }\n\n /*\n * TEXT LEAF NODE - Iterate through text content, yielding\n * positions every `distance` offset according to `unit`.\n */\n if (Text.isText(node)) {\n const isFirst = Path.equals(path, first.path)\n\n // Proof that we always exhaust text nodes before encountering a new one:\n // console.assert(leafTextRemaining <= 0,\n // `leafTextRemaining=${leafTextRemaining} - `+\n // `not exhausted before new leaf text node`, path)\n\n // Reset `leafText` counters for new text node.\n if (isFirst) {\n leafTextRemaining = reverse\n ? first.offset\n : node.text.length - first.offset\n leafTextOffset = first.offset // Works for reverse too.\n } else {\n leafTextRemaining = node.text.length\n leafTextOffset = reverse ? leafTextRemaining : 0\n }\n\n // Yield position at the start of node (potentially).\n if (isFirst || isNewBlock || unit === 'offset') {\n yield { path, offset: leafTextOffset }\n isNewBlock = false\n }\n\n // Yield positions every (dynamically calculated) `distance` offset.\n while (true) {\n // If `leafText` has caught up with `blockText` (distance=0),\n // and if blockText is exhausted, break to get another block node,\n // otherwise advance blockText forward by the new `distance`.\n if (distance === 0) {\n if (blockText === '') break\n distance = calcDistance(blockText, unit, reverse)\n // Split the string at the previously found distance and use the\n // remaining string for the next iteration.\n blockText = splitByCharacterDistance(blockText, distance, reverse)[1]\n }\n\n // Advance `leafText` by the current `distance`.\n leafTextOffset = reverse\n ? leafTextOffset - distance\n : leafTextOffset + distance\n leafTextRemaining = leafTextRemaining - distance\n\n // If `leafText` is exhausted, break to get a new leaf node\n // and set distance to the overflow amount, so we'll (maybe)\n // catch up to blockText in the next leaf text node.\n if (leafTextRemaining < 0) {\n distance = -leafTextRemaining\n break\n }\n\n // Successfully walked `distance` offsets through `leafText`\n // to catch up with `blockText`, so we can reset `distance`\n // and yield this position in this node.\n distance = 0\n yield { path, offset: leafTextOffset }\n }\n }\n }\n // Proof that upon completion, we've exahusted both leaf and block text:\n // console.assert(leafTextRemaining <= 0, \"leafText wasn't exhausted\")\n // console.assert(blockText === '', \"blockText wasn't exhausted\")\n\n // Helper:\n // Return the distance in offsets for a step of size `unit` on given string.\n function calcDistance(text: string, unit: string, reverse?: boolean) {\n if (unit === 'character') {\n return getCharacterDistance(text, reverse)\n } else if (unit === 'word') {\n return getWordDistance(text, reverse)\n } else if (unit === 'line' || unit === 'block') {\n return text.length\n }\n return 1\n }\n}\n","import { Editor, EditorInterface } from '../interfaces/editor'\nimport { Span } from '../interfaces/location'\nimport { Path } from '../interfaces/path'\n\nexport const previous: EditorInterface['previous'] = (editor, options = {}) => {\n const { mode = 'lowest', voids = false } = options\n let { match, at = editor.selection } = options\n\n if (!at) {\n return\n }\n\n const pointBeforeLocation = Editor.before(editor, at, { voids })\n\n if (!pointBeforeLocation) {\n return\n }\n\n const [, to] = Editor.first(editor, [])\n\n // The search location is from the start of the document to the path of\n // the point before the location passed in\n const span: Span = [pointBeforeLocation.path, to]\n\n if (Path.isPath(at) && at.length === 0) {\n throw new Error(`Cannot get the previous node from the root node!`)\n }\n\n if (match == null) {\n if (Path.isPath(at)) {\n const [parent] = Editor.parent(editor, at)\n match = n => parent.children.includes(n)\n } else {\n match = () => true\n }\n }\n\n const [previous] = Editor.nodes(editor, {\n reverse: true,\n at: span,\n match,\n mode,\n voids,\n })\n\n return previous\n}\n","import { Editor, EditorInterface } from '../interfaces/editor'\nimport { RangeRef } from '../interfaces/range-ref'\n\nexport const rangeRef: EditorInterface['rangeRef'] = (\n editor,\n range,\n options = {}\n) => {\n const { affinity = 'forward' } = options\n const ref: RangeRef = {\n current: range,\n affinity,\n unref() {\n const { current } = ref\n const rangeRefs = Editor.rangeRefs(editor)\n rangeRefs.delete(ref)\n ref.current = null\n return current\n },\n }\n\n const refs = Editor.rangeRefs(editor)\n refs.add(ref)\n return ref\n}\n","import { EditorInterface } from '../interfaces/editor'\nimport { RANGE_REFS } from '../utils/weak-maps'\n\nexport const rangeRefs: EditorInterface['rangeRefs'] = editor => {\n let refs = RANGE_REFS.get(editor)\n\n if (!refs) {\n refs = new Set()\n RANGE_REFS.set(editor, refs)\n }\n\n return refs\n}\n","import { Editor, EditorInterface } from '../interfaces/editor'\nimport { Range } from '../interfaces/range'\n\nexport const range: EditorInterface['range'] = (editor, at, to) => {\n if (Range.isRange(at) && !to) {\n return at\n }\n\n const start = Editor.start(editor, at)\n const end = Editor.end(editor, to || at)\n return { anchor: start, focus: end }\n}\n","import { Node } from '../interfaces/node'\nimport { Path } from '../interfaces/path'\nimport { Text } from '../interfaces/text'\nimport { Range } from '../interfaces/range'\nimport { Transforms } from '../interfaces/transforms'\nimport { FLUSHING } from '../utils/weak-maps'\nimport { Editor, EditorInterface } from '../interfaces/editor'\n\nexport const removeMark: EditorInterface['removeMark'] = (editor, key) => {\n const { selection } = editor\n\n if (selection) {\n const match = (node: Node, path: Path) => {\n if (!Text.isText(node)) {\n return false // marks can only be applied to text\n }\n const [parentNode, parentPath] = Editor.parent(editor, path)\n return !editor.isVoid(parentNode) || editor.markableVoid(parentNode)\n }\n const expandedSelection = Range.isExpanded(selection)\n let markAcceptingVoidSelected = false\n if (!expandedSelection) {\n const [selectedNode, selectedPath] = Editor.node(editor, selection)\n if (selectedNode && match(selectedNode, selectedPath)) {\n const [parentNode] = Editor.parent(editor, selectedPath)\n markAcceptingVoidSelected =\n parentNode && editor.markableVoid(parentNode)\n }\n }\n if (expandedSelection || markAcceptingVoidSelected) {\n Transforms.unsetNodes(editor, key, {\n match,\n split: true,\n voids: true,\n })\n } else {\n const marks = { ...(Editor.marks(editor) || {}) }\n delete marks[<keyof Node>key]\n editor.marks = marks\n if (!FLUSHING.get(editor)) {\n editor.onChange()\n }\n }\n }\n}\n","import { EditorInterface } from '../interfaces/editor'\nimport { NORMALIZING } from '../utils/weak-maps'\n\nexport const setNormalizing: EditorInterface['setNormalizing'] = (\n editor,\n isNormalizing\n) => {\n NORMALIZING.set(editor, isNormalizing)\n}\n","import { Editor, EditorInterface } from '../interfaces/editor'\n\nexport const start: EditorInterface['start'] = (editor, at) => {\n return Editor.point(editor, at, { edge: 'start' })\n}\n","import { Editor, EditorInterface } from '../interfaces/editor'\nimport { Range } from '../interfaces/range'\nimport { Text } from '../interfaces/text'\nimport { Path } from '../interfaces/path'\n\nexport const string: EditorInterface['string'] = (editor, at, options = {}) => {\n const { voids = false } = options\n const range = Editor.range(editor, at)\n const [start, end] = Range.edges(range)\n let text = ''\n\n for (const [node, path] of Editor.nodes(editor, {\n at: range,\n match: Text.isText,\n voids,\n })) {\n let t = node.text\n\n if (Path.equals(path, end.path)) {\n t = t.slice(0, end.offset)\n }\n\n if (Path.equals(path, start.path)) {\n t = t.slice(start.offset)\n }\n\n text += t\n }\n\n return text\n}\n","import { Editor, EditorInterface } from '../interfaces/editor'\nimport { Range } from '../interfaces/range'\nimport { Path } from '../interfaces/path'\nimport { Element } from '../interfaces/element'\nimport { Text } from '../interfaces/text'\n\nexport const unhangRange: EditorInterface['unhangRange'] = (\n editor,\n range,\n options = {}\n) => {\n const { voids = false } = options\n let [start, end] = Range.edges(range)\n\n // PERF: exit early if we can guarantee that the range isn't hanging.\n if (\n start.offset !== 0 ||\n end.offset !== 0 ||\n Range.isCollapsed(range) ||\n Path.hasPrevious(end.path)\n ) {\n return range\n }\n\n const endBlock = Editor.above(editor, {\n at: end,\n match: n => Element.isElement(n) && Editor.isBlock(editor, n),\n voids,\n })\n const blockPath = endBlock ? endBlock[1] : []\n const first = Editor.start(editor, start)\n const before = { anchor: first, focus: end }\n let skip = true\n\n for (const [node, path] of Editor.nodes(editor, {\n at: before,\n match: Text.isText,\n reverse: true,\n voids,\n })) {\n if (skip) {\n skip = false\n continue\n }\n\n if (node.text !== '' || Path.isBefore(path, blockPath)) {\n end = { path, offset: node.text.length }\n break\n }\n }\n\n return { anchor: start, focus: end }\n}\n","import { Editor, EditorInterface } from '../interfaces/editor'\n\nexport const withoutNormalizing: EditorInterface['withoutNormalizing'] = (\n editor,\n fn\n) => {\n const value = Editor.isNormalizing(editor)\n Editor.setNormalizing(editor, false)\n try {\n fn()\n } finally {\n Editor.setNormalizing(editor, value)\n }\n Editor.normalize(editor)\n}\n","import { EditorInterface, Element, Editor, Text } from '../interfaces'\n\nexport const shouldMergeNodesRemovePrevNode: EditorInterface['shouldMergeNodesRemovePrevNode'] =\n (editor, [prevNode, prevPath], [curNode, curNodePath]) => {\n // If the target node that we're merging with is empty, remove it instead\n // of merging the two. This is a common rich text editor behavior to\n // prevent losing formatting when deleting entire nodes when you have a\n // hanging selection.\n // if prevNode is first child in parent,don't remove it.\n\n return (\n (Element.isElement(prevNode) && Editor.isEmpty(editor, prevNode)) ||\n (Text.isText(prevNode) &&\n prevNode.text === '' &&\n prevPath[prevPath.length - 1] !== 0)\n )\n }\n","import { TextTransforms } from '../interfaces/transforms/text'\nimport { Editor } from '../interfaces/editor'\nimport { Range } from '../interfaces/range'\nimport { Point } from '../interfaces/point'\nimport { Path } from '../interfaces/path'\nimport { Transforms } from '../interfaces/transforms'\nimport { Element } from '../interfaces/element'\nimport { NodeEntry } from '../interfaces/node'\n\nexport const deleteText: TextTransforms['delete'] = (editor, options = {}) => {\n Editor.withoutNormalizing(editor, () => {\n const {\n reverse = false,\n unit = 'character',\n distance = 1,\n voids = false,\n } = options\n let { at = editor.selection, hanging = false } = options\n\n if (!at) {\n return\n }\n\n let isCollapsed = false\n if (Range.isRange(at) && Range.isCollapsed(at)) {\n isCollapsed = true\n at = at.anchor\n }\n\n if (Point.isPoint(at)) {\n const furthestVoid = Editor.void(editor, { at, mode: 'highest' })\n\n if (!voids && furthestVoid) {\n const [, voidPath] = furthestVoid\n at = voidPath\n } else {\n const opts = { unit, distance }\n const target = reverse\n ? Editor.before(editor, at, opts) || Editor.start(editor, [])\n : Editor.after(editor, at, opts) || Editor.end(editor, [])\n at = { anchor: at, focus: target }\n hanging = true\n }\n }\n\n if (Path.isPath(at)) {\n Transforms.removeNodes(editor, { at, voids })\n return\n }\n\n if (Range.isCollapsed(at)) {\n return\n }\n\n if (!hanging) {\n const [, end] = Range.edges(at)\n const endOfDoc = Editor.end(editor, [])\n\n if (!Point.equals(end, endOfDoc)) {\n at = Editor.unhangRange(editor, at, { voids })\n }\n }\n\n let [start, end] = Range.edges(at)\n const startBlock = Editor.above(editor, {\n match: n => Element.isElement(n) && Editor.isBlock(editor, n),\n at: start,\n voids,\n })\n const endBlock = Editor.above(editor, {\n match: n => Element.isElement(n) && Editor.isBlock(editor, n),\n at: end,\n voids,\n })\n const isAcrossBlocks =\n startBlock && endBlock && !Path.equals(startBlock[1], endBlock[1])\n const isSingleText = Path.equals(start.path, end.path)\n const startNonEditable = voids\n ? null\n : Editor.void(editor, { at: start, mode: 'highest' }) ??\n Editor.elementReadOnly(editor, { at: start, mode: 'highest' })\n const endNonEditable = voids\n ? null\n : Editor.void(editor, { at: end, mode: 'highest' }) ??\n Editor.elementReadOnly(editor, { at: end, mode: 'highest' })\n\n // If the start or end points are inside an inline void, nudge them out.\n if (startNonEditable) {\n const before = Editor.before(editor, start)\n\n if (before && startBlock && Path.isAncestor(startBlock[1], before.path)) {\n start = before\n }\n }\n\n if (endNonEditable) {\n const after = Editor.after(editor, end)\n\n if (after && endBlock && Path.isAncestor(endBlock[1], after.path)) {\n end = after\n }\n }\n\n // Get the highest nodes that are completely inside the range, as well as\n // the start and end nodes.\n const matches: NodeEntry[] = []\n let lastPath: Path | undefined\n\n for (const entry of Editor.nodes(editor, { at, voids })) {\n const [node, path] = entry\n\n if (lastPath && Path.compare(path, lastPath) === 0) {\n continue\n }\n\n if (\n (!voids &&\n Element.isElement(node) &&\n (Editor.isVoid(editor, node) ||\n Editor.isElementReadOnly(editor, node))) ||\n (!Path.isCommon(path, start.path) && !Path.isCommon(path, end.path))\n ) {\n matches.push(entry)\n lastPath = path\n }\n }\n\n const pathRefs = Array.from(matches, ([, p]) => Editor.pathRef(editor, p))\n const startRef = Editor.pointRef(editor, start)\n const endRef = Editor.pointRef(editor, end)\n\n let removedText = ''\n\n if (!isSingleText && !startNonEditable) {\n const point = startRef.current!\n const [node] = Editor.leaf(editor, point)\n const { path } = point\n const { offset } = start\n const text = node.text.slice(offset)\n if (text.length > 0) {\n editor.apply({ type: 'remove_text', path, offset, text })\n removedText = text\n }\n }\n\n pathRefs\n .reverse()\n .map(r => r.unref())\n .filter((r): r is Path => r !== null)\n .forEach(p => Transforms.removeNodes(editor, { at: p, voids }))\n\n if (!endNonEditable) {\n const point = endRef.current!\n const [node] = Editor.leaf(editor, point)\n const { path } = point\n const offset = isSingleText ? start.offset : 0\n const text = node.text.slice(offset, end.offset)\n if (text.length > 0) {\n editor.apply({ type: 'remove_text', path, offset, text })\n removedText = text\n }\n }\n\n if (!isSingleText && isAcrossBlocks && endRef.current && startRef.current) {\n Transforms.mergeNodes(editor, {\n at: endRef.current,\n hanging: true,\n voids,\n })\n }\n\n // For Thai script, deleting N character(s) backward should delete\n // N code point(s) instead of an entire grapheme cluster.\n // Therefore, the remaining code points should be inserted back.\n if (\n isCollapsed &&\n reverse &&\n unit === 'character' &&\n removedText.length > 1 &&\n removedText.match(/[\\u0E00-\\u0E7F]+/)\n ) {\n Transforms.insertText(\n editor,\n removedText.slice(0, removedText.length - distance)\n )\n }\n\n const startUnref = startRef.unref()\n const endUnref = endRef.unref()\n const point = reverse ? startUnref || endUnref : endUnref || startUnref\n\n if (options.at == null && point) {\n Transforms.select(editor, point)\n }\n })\n}\n","import { Transforms } from '../interfaces/transforms'\nimport { Editor } from '../interfaces/editor'\nimport { Range } from '../interfaces/range'\nimport { Path } from '../interfaces/path'\nimport { Element } from '../interfaces/element'\nimport { Node, NodeEntry } from '../interfaces/node'\nimport { Text } from '../interfaces/text'\nimport { TextTransforms } from '../interfaces/transforms/text'\nimport { getDefaultInsertLocation } from '../utils'\n\nexport const insertFragment: TextTransforms['insertFragment'] = (\n editor,\n fragment,\n options = {}\n) => {\n Editor.withoutNormalizing(editor, () => {\n const { hanging = false, voids = false } = options\n let { at = getDefaultInsertLocation(editor), batchDirty = true } = options\n\n if (!fragment.length) {\n return\n }\n\n if (Range.isRange(at)) {\n if (!hanging) {\n at = Editor.unhangRange(editor, at, { voids })\n }\n\n if (Range.isCollapsed(at)) {\n at = at.anchor\n } else {\n const [, end] = Range.edges(at)\n\n if (!voids && Editor.void(editor, { at: end })) {\n return\n }\n\n const pointRef = Editor.pointRef(editor, end)\n Transforms.delete(editor, { at })\n at = pointRef.unref()!\n }\n } else if (Path.isPath(at)) {\n at = Editor.start(editor, at)\n }\n\n if (!voids && Editor.void(editor, { at })) {\n return\n }\n\n // If the insert point is at the edge of an inline node, move it outside\n // instead since it will need to be split otherwise.\n const inlineElementMatch = Editor.above(editor, {\n at,\n match: n => Element.isElement(n) && Editor.isInline(editor, n),\n mode: 'highest',\n voids,\n })\n\n if (inlineElementMatch) {\n const [, inlinePath] = inlineElementMatch\n\n if (Editor.isEnd(editor, at, inlinePath)) {\n const after = Editor.after(editor, inlinePath)!\n at = after\n } else if (Editor.isStart(editor, at, inlinePath)) {\n const before = Editor.before(editor, inlinePath)!\n at = before\n }\n }\n\n const blockMatch = Editor.above(editor, {\n match: n => Element.isElement(n) && Editor.isBlock(editor, n),\n at,\n voids,\n })!\n const [, blockPath] = blockMatch\n const isBlockStart = Editor.isStart(editor, at, blockPath)\n const isBlockEnd = Editor.isEnd(editor, at, blockPath)\n const isBlockEmpty = isBlockStart && isBlockEnd\n const mergeStart = !isBlockStart || (isBlockStart && isBlockEnd)\n const mergeEnd = !isBlockEnd\n const [, firstPath] = Node.first({ children: fragment }, [])\n const [, lastPath] = Node.last({ children: fragment }, [])\n\n const matches: NodeEntry[] = []\n const matcher = ([n, p]: NodeEntry) => {\n const isRoot = p.length === 0\n if (isRoot) {\n return false\n }\n\n if (isBlockEmpty) {\n return true\n }\n\n if (\n mergeStart &&\n Path.isAncestor(p, firstPath) &&\n Element.isElement(n) &&\n !editor.isVoid(n) &&\n !editor.isInline(n)\n ) {\n return false\n }\n\n if (\n mergeEnd &&\n Path.isAncestor(p, lastPath) &&\n Element.isElement(n) &&\n !editor.isVoid(n) &&\n !editor.isInline(n)\n ) {\n return false\n }\n\n return true\n }\n\n for (const entry of Node.nodes({ children: fragment }, { pass: matcher })) {\n if (matcher(entry)) {\n matches.push(entry)\n }\n }\n\n const starts = []\n const middles = []\n const ends = []\n let starting = true\n let hasBlocks = false\n\n for (const [node] of matches) {\n if (Element.isElement(node) && !editor.isInline(node)) {\n starting = false\n hasBlocks = true\n middles.push(node)\n } else if (starting) {\n starts.push(node)\n } else {\n ends.push(node)\n }\n }\n\n const [inlineMatch] = Editor.nodes(editor, {\n at,\n match: n => Text.isText(n) || Editor.isInline(editor, n),\n mode: 'highest',\n voids,\n })!\n\n const [, inlinePath] = inlineMatch\n const isInlineStart = Editor.isStart(editor, at, inlinePath)\n const isInlineEnd = Editor.isEnd(editor, at, inlinePath)\n\n const middleRef = Editor.pathRef(\n editor,\n isBlockEnd && !ends.length ? Path.next(blockPath) : blockPath\n )\n\n const endRef = Editor.pathRef(\n editor,\n isInlineEnd ? Path.next(inlinePath) : inlinePath\n )\n\n Transforms.splitNodes(editor, {\n at,\n match: n =>\n hasBlocks\n ? Element.isElement(n) && Editor.isBlock(editor, n)\n : Text.isText(n) || Editor.isInline(editor, n),\n mode: hasBlocks ? 'lowest' : 'highest',\n always:\n hasBlocks &&\n (!isBlockStart || starts.length > 0) &&\n (!isBlockEnd || ends.length > 0),\n voids,\n })\n\n const startRef = Editor.pathRef(\n editor,\n !isInlineStart || (isInlineStart && isInlineEnd)\n ? Path.next(inlinePath)\n : inlinePath\n )\n\n Transforms.insertNodes(editor, starts, {\n at: startRef.current!,\n match: n => Text.isText(n) || Editor.isInline(editor, n),\n mode: 'highest',\n voids,\n batchDirty,\n })\n\n if (isBlockEmpty && !starts.length && middles.length && !ends.length) {\n Transforms.delete(editor, { at: blockPath, voids })\n }\n\n Transforms.insertNodes(editor, middles, {\n at: middleRef.current!,\n match: n => Element.isElement(n) && Editor.isBlock(editor, n),\n mode: 'lowest',\n voids,\n batchDirty,\n })\n\n Transforms.insertNodes(editor, ends, {\n at: endRef.current!,\n match: n => Text.isText(n) || Editor.isInline(editor, n),\n mode: 'highest',\n voids,\n batchDirty,\n })\n\n if (!options.at) {\n let path\n\n if (ends.length > 0 && endRef.current) {\n path = Path.previous(endRef.current)\n } else if (middles.length > 0 && middleRef.current) {\n path = Path.previous(middleRef.current)\n } else if (startRef.current) {\n path = Path.previous(startRef.current)\n }\n\n if (path) {\n const end = Editor.end(editor, path)\n Transforms.select(editor, end)\n }\n }\n\n startRef.unref()\n middleRef.unref()\n endRef.unref()\n })\n}\n","import { SelectionTransforms } from '../interfaces/transforms/selection'\nimport { Transforms } from '../interfaces/transforms'\nimport { Range } from '../interfaces/range'\n\nexport const collapse: SelectionTransforms['collapse'] = (\n editor,\n options = {}\n) => {\n const { edge = 'anchor' } = options\n const { selection } = editor\n\n if (!selection) {\n return\n } else if (edge === 'anchor') {\n Transforms.select(editor, selection.anchor)\n } else if (edge === 'focus') {\n Transforms.select(editor, selection.focus)\n } else if (edge === 'start') {\n const [start] = Range.edges(selection)\n Transforms.select(editor, start)\n } else if (edge === 'end') {\n const [, end] = Range.edges(selection)\n Transforms.select(editor, end)\n }\n}\n","import { SelectionTransforms } from '../interfaces/transforms/selection'\n\nexport const deselect: SelectionTransforms['deselect'] = editor => {\n const { selection } = editor\n\n if (selection) {\n editor.apply({\n type: 'set_selection',\n properties: selection,\n newProperties: null,\n })\n }\n}\n","import { SelectionTransforms } from '../interfaces/transforms/selection'\nimport { Range } from '../interfaces/range'\nimport { Editor } from '../interfaces/editor'\nimport { Transforms } from '../interfaces/transforms'\n\nexport const move: SelectionTransforms['move'] = (editor, options = {}) => {\n const { selection } = editor\n const { distance = 1, unit = 'character', reverse = false } = options\n let { edge = null } = options\n\n if (!selection) {\n return\n }\n\n if (edge === 'start') {\n edge = Range.isBackward(selection) ? 'focus' : 'anchor'\n }\n\n if (edge === 'end') {\n edge = Range.isBackward(selection) ? 'anchor' : 'focus'\n }\n\n const { anchor, focus } = selection\n const opts = { distance, unit, ignoreNonSelectable: true }\n const props: Partial<Range> = {}\n\n if (edge == null || edge === 'anchor') {\n const point = reverse\n ? Editor.before(editor, anchor, opts)\n : Editor.after(editor, anchor, opts)\n\n if (point) {\n props.anchor = point\n }\n }\n\n if (edge == null || edge === 'focus') {\n const point = reverse\n ? Editor.before(editor, focus, opts)\n : Editor.after(editor, focus, opts)\n\n if (point) {\n props.focus = point\n }\n }\n\n Transforms.setSelection(editor, props)\n}\n","import { SelectionTransforms } from '../interfaces/transforms/selection'\nimport { Editor } from '../interfaces/editor'\nimport { Transforms } from '../interfaces/transforms'\nimport { Range } from '../interfaces/range'\nimport { Scrubber } from '../interfaces/scrubber'\n\nexport const select: SelectionTransforms['select'] = (editor, target) => {\n const { selection } = editor\n target = Editor.range(editor, target)\n\n if (selection) {\n Transforms.setSelection(editor, target)\n return\n }\n\n if (!Range.isRange(target)) {\n throw new Error(\n `When setting the selection and the current selection is \\`null\\` you must provide at least an \\`anchor\\` and \\`focus\\`, but you passed: ${Scrubber.stringify(\n target\n )}`\n )\n }\n\n editor.apply({\n type: 'set_selection',\n properties: selection,\n newProperties: target,\n })\n}\n","import { SelectionTransforms } from '../interfaces/transforms/selection'\nimport { Range } from '../interfaces/range'\nimport { Transforms } from '../interfaces/transforms'\n\nexport const setPoint: SelectionTransforms['setPoint'] = (\n editor,\n props,\n options = {}\n) => {\n const { selection } = editor\n let { edge = 'both' } = options\n\n if (!selection) {\n return\n }\n\n if (edge === 'start') {\n edge = Range.isBackward(selection) ? 'focus' : 'anchor'\n }\n\n if (edge === 'end') {\n edge = Range.isBackward(selection) ? 'anchor' : 'focus'\n }\n\n const { anchor, focus } = selection\n const point = edge === 'anchor' ? anchor : focus\n\n Transforms.setSelection(editor, {\n [edge === 'anchor' ? 'anchor' : 'focus']: { ...point, ...props },\n })\n}\n","import { SelectionTransforms } from '../interfaces/transforms/selection'\nimport { Range } from '../interfaces/range'\nimport { Point } from '../interfaces/point'\n\nexport const setSelection: SelectionTransforms['setSelection'] = (\n editor,\n props\n) => {\n const { selection } = editor\n const oldProps: Partial<Range> | null = {}\n const newProps: Partial<Range> = {}\n\n if (!selection) {\n return\n }\n\n for (const k in props) {\n if (\n (k === 'anchor' &&\n props.anchor != null &&\n !Point.equals(props.anchor, selection.anchor)) ||\n (k === 'focus' &&\n props.focus != null &&\n !Point.equals(props.focus, selection.focus)) ||\n (k !== 'anchor' &&\n k !== 'focus' &&\n props[<keyof Range>k] !== selection[<keyof Range>k])\n ) {\n oldProps[<keyof Range>k] = selection[<keyof Range>k]\n newProps[<keyof Range>k] = props[<keyof Range>k]\n }\n }\n\n if (Object.keys(oldProps).length > 0) {\n editor.apply({\n type: 'set_selection',\n properties: oldProps,\n newProperties: newProps,\n })\n }\n}\n","import { NodeTransforms } from '../interfaces/transforms/node'\nimport { Editor } from '../interfaces/editor'\nimport { Node } from '../interfaces/node'\nimport { Range } from '../interfaces/range'\nimport { Transforms } from '../interfaces/transforms'\nimport { Point } from '../interfaces/point'\nimport { Text } from '../interfaces/text'\nimport { Element } from '../interfaces/element'\nimport { Path } from '../interfaces/path'\nimport { getDefaultInsertLocation } from '../utils'\nimport { batchDirtyPaths } from '../core/batch-dirty-paths'\nimport { BaseInsertNodeOperation } from '../interfaces'\nimport { updateDirtyPaths } from '../core/update-dirty-paths'\n\nexport const insertNodes: NodeTransforms['insertNodes'] = (\n editor,\n nodes,\n options = {}\n) => {\n Editor.withoutNormalizing(editor, () => {\n const {\n hanging = false,\n voids = false,\n mode = 'lowest',\n batchDirty = true,\n } = options\n let { at, match, select } = options\n\n if (Node.isNode(nodes)) {\n nodes = [nodes]\n }\n\n if (nodes.length === 0) {\n return\n }\n\n const [node] = nodes\n\n if (!at) {\n at = getDefaultInsertLocation(editor)\n if (select !== false) {\n select = true\n }\n }\n\n if (select == null) {\n select = false\n }\n\n if (Range.isRange(at)) {\n if (!hanging) {\n at = Editor.unhangRange(editor, at, { voids })\n }\n\n if (Range.isCollapsed(at)) {\n at = at.anchor\n } else {\n const [, end] = Range.edges(at)\n const pointRef = Editor.pointRef(editor, end)\n Transforms.delete(editor, { at })\n at = pointRef.unref()!\n }\n }\n\n if (Point.isPoint(at)) {\n if (match == null) {\n if (Text.isText(node)) {\n match = n => Text.isText(n)\n } else if (editor.isInline(node)) {\n match = n => Text.isText(n) || Editor.isInline(editor, n)\n } else {\n match = n => Element.isElement(n) && Editor.isBlock(editor, n)\n }\n }\n\n const [entry] = Editor.nodes(editor, {\n at: at.path,\n match,\n mode,\n voids,\n })\n\n if (entry) {\n const [, matchPath] = entry\n const pathRef = Editor.pathRef(editor, matchPath)\n const isAtEnd = Editor.isEnd(editor, at, matchPath)\n Transforms.splitNodes(editor, { at, match, mode, voids })\n const path = pathRef.unref()!\n at = isAtEnd ? Path.next(path) : path\n } else {\n return\n }\n }\n\n const parentPath = Path.parent(at)\n let index = at[at.length - 1]\n\n if (!voids && Editor.void(editor, { at: parentPath })) {\n return\n }\n\n if (batchDirty) {\n // PERF: batch update dirty paths\n // batched ops used to transform existing dirty paths\n const batchedOps: BaseInsertNodeOperation[] = []\n const newDirtyPaths: Path[] = Path.levels(parentPath)\n batchDirtyPaths(\n editor,\n () => {\n for (const node of nodes as Node[]) {\n const path = parentPath.concat(index)\n index++\n\n const op: BaseInsertNodeOperation = {\n type: 'insert_node',\n path,\n node,\n }\n editor.apply(op)\n at = Path.next(at as Path)\n\n batchedOps.push(op)\n if (Text.isText(node)) {\n newDirtyPaths.push(path)\n } else {\n newDirtyPaths.push(\n ...Array.from(Node.nodes(node), ([, p]) => path.concat(p))\n )\n }\n }\n },\n () => {\n updateDirtyPaths(editor, newDirtyPaths, p => {\n let newPath: Path | null = p\n for (const op of batchedOps) {\n if (Path.operationCanTransformPath(op)) {\n newPath = Path.transform(newPath, op)\n if (!newPath) {\n return null\n }\n }\n }\n return newPath\n })\n }\n )\n } else {\n for (const node of nodes as Node[]) {\n const path = parentPath.concat(index)\n index++\n\n editor.apply({ type: 'insert_node', path, node })\n at = Path.next(at as Path)\n }\n }\n\n at = Path.previous(at)\n\n if (select) {\n const point = Editor.end(editor, at)\n\n if (point) {\n Transforms.select(editor, point)\n }\n }\n })\n}\n","import { NodeTransforms } from '../interfaces/transforms/node'\nimport { Editor } from '../interfaces/editor'\nimport { Path } from '../interfaces/path'\nimport { matchPath } from '../utils/match-path'\nimport { Element } from '../interfaces/element'\nimport { Ancestor, NodeEntry } from '../interfaces/node'\nimport { Transforms } from '../interfaces/transforms'\n\nexport const liftNodes: NodeTransforms['liftNodes'] = (\n editor,\n options = {}\n) => {\n Editor.withoutNormalizing(editor, () => {\n const { at = editor.selection, mode = 'lowest', voids = false } = options\n let { match } = options\n\n if (match == null) {\n match = Path.isPath(at)\n ? matchPath(editor, at)\n : n => Element.isElement(n) && Editor.isBlock(editor, n)\n }\n\n if (!at) {\n return\n }\n\n const matches = Editor.nodes(editor, { at, match, mode, voids })\n const pathRefs = Array.from(matches, ([, p]) => Editor.pathRef(editor, p))\n\n for (const pathRef of pathRefs) {\n const path = pathRef.unref()!\n\n if (path.length < 2) {\n throw new Error(\n `Cannot lift node at a path [${path}] because it has a depth of less than \\`2\\`.`\n )\n }\n\n const parentNodeEntry = Editor.node(editor, Path.parent(path))\n const [parent, parentPath] = parentNodeEntry as NodeEntry<Ancestor>\n const index = path[path.length - 1]\n const { length } = parent.children\n\n if (length === 1) {\n const toPath = Path.next(parentPath)\n Transforms.moveNodes(editor, { at: path, to: toPath, voids })\n Transforms.removeNodes(editor, { at: parentPath, voids })\n } else if (index === 0) {\n Transforms.moveNodes(editor, { at: path, to: parentPath, voids })\n } else if (index === length - 1) {\n const toPath = Path.next(parentPath)\n Transforms.moveNodes(editor, { at: path, to: toPath, voids })\n } else {\n const splitPath = Path.next(path)\n const toPath = Path.next(parentPath)\n Transforms.splitNodes(editor, { at: splitPath, voids })\n Transforms.moveNodes(editor, { at: path, to: toPath, voids })\n }\n }\n })\n}\n","import { NodeTransforms } from '../interfaces/transforms/node'\nimport { Editor } from '../interfaces/editor'\nimport { Path } from '../interfaces/path'\nimport { Element } from '../interfaces/element'\nimport { Range } from '../interfaces/range'\nimport { Transforms } from '../interfaces/transforms'\nimport { Text } from '../interfaces/text'\nimport { Scrubber } from '../interfaces/scrubber'\nimport { Node } from '../interfaces/node'\n\nconst hasSingleChildNest = (editor: Editor, node: Node): boolean => {\n if (Element.isElement(node)) {\n const element = node as Element\n if (Editor.isVoid(editor, node)) {\n return true\n } else if (element.children.length === 1) {\n return hasSingleChildNest(editor, element.children[0])\n } else {\n return false\n }\n } else if (Editor.isEditor(node)) {\n return false\n } else {\n return true\n }\n}\n\nexport const mergeNodes: NodeTransforms['mergeNodes'] = (\n editor,\n options = {}\n) => {\n Editor.withoutNormalizing(editor, () => {\n let { match, at = editor.selection } = options\n const { hanging = false, voids = false, mode = 'lowest' } = options\n\n if (!at) {\n return\n }\n\n if (match == null) {\n if (Path.isPath(at)) {\n const [parent] = Editor.parent(editor, at)\n match = n => parent.children.includes(n)\n } else {\n match = n => Element.isElement(n) && Editor.isBlock(editor, n)\n }\n }\n\n if (!hanging && Range.isRange(at)) {\n at = Editor.unhangRange(editor, at, { voids })\n }\n\n if (Range.isRange(at)) {\n if (Range.isCollapsed(at)) {\n at = at.anchor\n } else {\n const [, end] = Range.edges(at)\n const pointRef = Editor.pointRef(editor, end)\n Transforms.delete(editor, { at })\n at = pointRef.unref()!\n\n if (options.at == null) {\n Transforms.select(editor, at)\n }\n }\n }\n\n const [current] = Editor.nodes(editor, { at, match, voids, mode })\n const prev = Editor.previous(editor, { at, match, voids, mode })\n\n if (!current || !prev) {\n return\n }\n\n const [node, path] = current\n const [prevNode, prevPath] = prev\n\n if (path.length === 0 || prevPath.length === 0) {\n return\n }\n\n const newPath = Path.next(prevPath)\n const commonPath = Path.common(path, prevPath)\n const isPreviousSibling = Path.isSibling(path, prevPath)\n const levels = Array.from(Editor.levels(editor, { at: path }), ([n]) => n)\n .slice(commonPath.length)\n .slice(0, -1)\n\n // Determine if the merge will leave an ancestor of the path empty as a\n // result, in which case we'll want to remove it after merging.\n const emptyAncestor = Editor.above(editor, {\n at: path,\n mode: 'highest',\n match: n => levels.includes(n) && hasSingleChildNest(editor, n),\n })\n\n const emptyRef = emptyAncestor && Editor.pathRef(editor, emptyAncestor[1])\n let properties\n let position\n\n // Ensure that the nodes are equivalent, and figure out what the position\n // and extra properties of the merge will be.\n if (Text.isText(node) && Text.isText(prevNode)) {\n const { text, ...rest } = node\n position = prevNode.text.length\n properties = rest as Partial<Text>\n } else if (Element.isElement(node) && Element.isElement(prevNode)) {\n const { children, ...rest } = node\n position = prevNode.children.length\n properties = rest as Partial<Element>\n } else {\n throw new Error(\n `Cannot merge the node at path [${path}] with the previous sibling because it is not the same kind: ${Scrubber.stringify(\n node\n )} ${Scrubber.stringify(prevNode)}`\n )\n }\n\n // If the node isn't already the next sibling of the previous node, move\n // it so that it is before merging.\n if (!isPreviousSibling) {\n Transforms.moveNodes(editor, { at: path, to: newPath, voids })\n }\n\n // If there was going to be an empty ancestor of the node that was merged,\n // we remove it from the tree.\n if (emptyRef) {\n Transforms.removeNodes(editor, { at: emptyRef.current!, voids })\n }\n\n if (Editor.shouldMergeNodesRemovePrevNode(editor, prev, current)) {\n Transforms.removeNodes(editor, { at: prevPath, voids })\n } else {\n editor.apply({\n type: 'merge_node',\n path: newPath,\n position,\n properties,\n })\n }\n\n if (emptyRef) {\n emptyRef.unref()\n }\n })\n}\n","import { NodeTransforms } from '../interfaces/transforms/node'\nimport { Editor } from '../interfaces/editor'\nimport { Path } from '../interfaces/path'\nimport { matchPath } from '../utils/match-path'\nimport { Element } from '../interfaces/element'\n\nexport const moveNodes: NodeTransforms['moveNodes'] = (editor, options) => {\n Editor.withoutNormalizing(editor, () => {\n const {\n to,\n at = editor.selection,\n mode = 'lowest',\n voids = false,\n } = options\n let { match } = options\n\n if (!at) {\n return\n }\n\n if (match == null) {\n match = Path.isPath(at)\n ? matchPath(editor, at)\n : n => Element.isElement(n) && Editor.isBlock(editor, n)\n }\n\n const toRef = Editor.pathRef(editor, to)\n const targets = Editor.nodes(editor, { at, match, mode, voids })\n const pathRefs = Array.from(targets, ([, p]) => Editor.pathRef(editor, p))\n\n for (const pathRef of pathRefs) {\n const path = pathRef.unref()!\n const newPath = toRef.current!\n\n if (path.length !== 0) {\n editor.apply({ type: 'move_node', path, newPath })\n }\n\n if (\n toRef.current &&\n Path.isSibling(newPath, path) &&\n Path.isAfter(newPath, path)\n ) {\n // When performing a sibling move to a later index, the path at the destination is shifted\n // to before the insertion point instead of after. To ensure our group of nodes are inserted\n // in the correct order we increment toRef to account for that\n toRef.current = Path.next(toRef.current)\n }\n }\n\n toRef.unref()\n })\n}\n","import { NodeTransforms } from '../interfaces/transforms/node'\nimport { Editor } from '../interfaces/editor'\nimport { Path } from '../interfaces/path'\nimport { matchPath } from '../utils/match-path'\nimport { Element } from '../interfaces/element'\nimport { Range } from '../interfaces/range'\n\nexport const removeNodes: NodeTransforms['removeNodes'] = (\n editor,\n options = {}\n) => {\n Editor.withoutNormalizing(editor, () => {\n const { hanging = false, voids = false, mode = 'lowest' } = options\n let { at = editor.selection, match } = options\n\n if (!at) {\n return\n }\n\n if (match == null) {\n match = Path.isPath(at)\n ? matchPath(editor, at)\n : n => Element.isElement(n) && Editor.isBlock(editor, n)\n }\n\n if (!hanging && Range.isRange(at)) {\n at = Editor.unhangRange(editor, at, { voids })\n }\n\n const depths = Editor.nodes(editor, { at, match, mode, voids })\n const pathRefs = Array.from(depths, ([, p]) => Editor.pathRef(editor, p))\n\n for (const pathRef of pathRefs) {\n const path = pathRef.unref()!\n\n if (path) {\n const [node] = Editor.node(editor, path)\n editor.apply({ type: 'remove_node', path, node })\n }\n }\n })\n}\n","import { NodeTransforms } from '../interfaces/transforms/node'\nimport { Editor } from '../interfaces/editor'\nimport { Path } from '../interfaces/path'\nimport { matchPath } from '../utils/match-path'\nimport { Element } from '../interfaces/element'\nimport { Range } from '../interfaces/range'\nimport { Transforms } from '../interfaces/transforms'\nimport { Node } from '../interfaces/node'\n\nexport const setNodes: NodeTransforms['setNodes'] = (\n editor,\n props: Partial<Node>,\n options = {}\n) => {\n Editor.withoutNormalizing(editor, () => {\n let { match, at = editor.selection, compare, merge } = options\n const {\n hanging = false,\n mode = 'lowest',\n split = false,\n voids = false,\n } = options\n\n if (!at) {\n return\n }\n\n if (match == null) {\n match = Path.isPath(at)\n ? matchPath(editor, at)\n : n => Element.isElement(n) && Editor.isBlock(editor, n)\n }\n\n if (!hanging && Range.isRange(at)) {\n at = Editor.unhangRange(editor, at, { voids })\n }\n\n if (split && Range.isRange(at)) {\n if (\n Range.isCollapsed(at) &&\n Editor.leaf(editor, at.anchor)[0].text.length > 0\n ) {\n // If the range is collapsed in a non-empty node and 'split' is true, there's nothing to\n // set that won't get normalized away\n return\n }\n const rangeRef = Editor.rangeRef(editor, at, { affinity: 'inward' })\n const [start, end] = Range.edges(at)\n const splitMode = mode === 'lowest' ? 'lowest' : 'highest'\n const endAtEndOfNode = Editor.isEnd(editor, end, end.path)\n Transforms.splitNodes(editor, {\n at: end,\n match,\n mode: splitMode,\n voids,\n always: !endAtEndOfNode,\n })\n const startAtStartOfNode = Editor.isStart(editor, start, start.path)\n Transforms.splitNodes(editor, {\n at: start,\n match,\n mode: splitMode,\n voids,\n always: !startAtStartOfNode,\n })\n at = rangeRef.unref()!\n\n if (options.at == null) {\n Transforms.select(editor, at)\n }\n }\n\n if (!compare) {\n compare = (prop, nodeProp) => prop !== nodeProp\n }\n\n for (const [node, path] of Editor.nodes(editor, {\n at,\n match,\n mode,\n voids,\n })) {\n const properties: Partial<Node> = {}\n // FIXME: is this correct?\n const newProperties: Partial<Node> & { [key: string]: unknown } = {}\n\n // You can't set properties on the editor node.\n if (path.length === 0) {\n continue\n }\n\n let hasChanges = false\n\n for (const k in props) {\n if (k === 'children' || k === 'text') {\n continue\n }\n\n if (compare(props[<keyof Node>k], node[<keyof Node>k])) {\n hasChanges = true\n // Omit new properties from the old properties list\n if (node.hasOwnProperty(k))\n properties[<keyof Node>k] = node[<keyof Node>k]\n // Omit properties that have been removed from the new properties list\n if (merge) {\n if (props[<keyof Node>k] != null)\n newProperties[<keyof Node>k] = merge(\n node[<keyof Node>k],\n props[<keyof Node>k]\n )\n } else {\n if (props[<keyof Node>k] != null)\n newProperties[<keyof Node>k] = props[<keyof Node>k]\n }\n }\n }\n\n if (hasChanges) {\n editor.apply({\n type: 'set_node',\n path,\n properties,\n newProperties,\n })\n }\n }\n })\n}\n","import { NodeTransforms } from '../interfaces/transforms/node'\nimport { Editor } from '../interfaces/editor'\nimport { Element } from '../interfaces/element'\nimport { Range } from '../interfaces/range'\nimport { Path } from '../interfaces/path'\nimport { PointRef } from '../interfaces/point-ref'\nimport { Transforms } from '../interfaces/transforms'\nimport { Node } from '../interfaces/node'\nimport { Point } from '../interfaces/point'\n\n/**\n * Convert a range into a point by deleting it's content.\n */\nconst deleteRange = (editor: Editor, range: Range): Point | null => {\n if (Range.isCollapsed(range)) {\n return range.anchor\n } else {\n const [, end] = Range.edges(range)\n const pointRef = Editor.pointRef(editor, end)\n Transforms.delete(editor, { at: range })\n return pointRef.unref()\n }\n}\n\nexport const splitNodes: NodeTransforms['splitNodes'] = (\n editor,\n options = {}\n) => {\n Editor.withoutNormalizing(editor, () => {\n const { mode = 'lowest', voids = false } = options\n let { match, at = editor.selection, height = 0, always = false } = options\n\n if (match == null) {\n match = n => Element.isElement(n) && Editor.isBlock(editor, n)\n }\n\n if (Range.isRange(at)) {\n at = deleteRange(editor, at)\n }\n\n // If the target is a path, the default height-skipping and position\n // counters need to account for us potentially splitting at a non-leaf.\n if (Path.isPath(at)) {\n const path = at\n const point = Editor.point(editor, path)\n const [parent] = Editor.parent(editor, path)\n match = n => n === parent\n height = point.path.length - path.length + 1\n at = point\n always = true\n }\n\n if (!at) {\n return\n }\n\n const beforeRef = Editor.pointRef(editor, at, {\n affinity: 'backward',\n })\n let afterRef: PointRef | undefined\n try {\n const [highest] = Editor.nodes(editor, { at, match, mode, voids })\n\n if (!highest) {\n return\n }\n\n const voidMatch = Editor.void(editor, { at, mode: 'highest' })\n const nudge = 0\n\n if (!voids && voidMatch) {\n const [voidNode, voidPath] = voidMatch\n\n if (Element.isElement(voidNode) && editor.isInline(voidNode)) {\n let after = Editor.after(editor, voidPath)\n\n if (!after) {\n const text = { text: '' }\n const afterPath = Path.next(voidPath)\n Transforms.insertNodes(editor, text, { at: afterPath, voids })\n after = Editor.point(editor, afterPath)!\n }\n\n at = after\n always = true\n }\n\n const siblingHeight = at.path.length - voidPath.length\n height = siblingHeight + 1\n always = true\n }\n\n afterRef = Editor.pointRef(editor, at)\n const depth = at.path.length - height\n const [, highestPath] = highest\n const lowestPath = at.path.slice(0, depth)\n let position = height === 0 ? at.offset : at.path[depth] + nudge\n\n for (const [node, path] of Editor.levels(editor, {\n at: lowestPath,\n reverse: true,\n voids,\n })) {\n let split = false\n\n if (\n path.length < highestPath.length ||\n path.length === 0 ||\n (!voids && Element.isElement(node) && Editor.isVoid(editor, node))\n ) {\n break\n }\n\n const point = beforeRef.current!\n const isEnd = Editor.isEnd(editor, point, path)\n\n if (always || !beforeRef || !Editor.isEdge(editor, point, path)) {\n split = true\n const properties = Node.extractProps(node)\n editor.apply({\n type: 'split_node',\n path,\n position,\n properties,\n })\n }\n\n position = path[path.length - 1] + (split || isEnd ? 1 : 0)\n }\n\n if (options.at == null) {\n const point = afterRef.current || Editor.end(editor, [])\n Transforms.select(editor, point)\n }\n } finally {\n beforeRef.unref()\n afterRef?.unref()\n }\n })\n}\n","import { NodeTransforms } from '../interfaces/transforms/node'\nimport { Transforms } from '../interfaces/transforms'\n\nexport const unsetNodes: NodeTransforms['unsetNodes'] = (\n editor,\n props,\n options = {}\n) => {\n if (!Array.isArray(props)) {\n props = [props]\n }\n\n const obj: any = {}\n\n for (const key of props) {\n obj[key] = null\n }\n\n Transforms.setNodes(editor, obj, options)\n}\n","import { NodeTransforms } from '../interfaces/transforms/node'\nimport { Editor } from '../interfaces/editor'\nimport { Path } from '../interfaces/path'\nimport { matchPath } from '../utils/match-path'\nimport { Element } from '../interfaces/element'\nimport { Range } from '../interfaces/range'\nimport { Transforms } from '../interfaces/transforms'\n\nexport const unwrapNodes: NodeTransforms['unwrapNodes'] = (\n editor,\n options = {}\n) => {\n Editor.withoutNormalizing(editor, () => {\n const { mode = 'lowest', split = false, voids = false } = options\n let { at = editor.selection, match } = options\n\n if (!at) {\n return\n }\n\n if (match == null) {\n match = Path.isPath(at)\n ? matchPath(editor, at)\n : n => Element.isElement(n) && Editor.isBlock(editor, n)\n }\n\n if (Path.isPath(at)) {\n at = Editor.range(editor, at)\n }\n\n const rangeRef = Range.isRange(at) ? Editor.rangeRef(editor, at) : null\n const matches = Editor.nodes(editor, { at, match, mode, voids })\n const pathRefs = Array.from(\n matches,\n ([, p]) => Editor.pathRef(editor, p)\n // unwrapNode will call liftNode which does not support splitting the node when nested.\n // If we do not reverse the order and call it from top to the bottom, it will remove all blocks\n // that wrap target node. So we reverse the order.\n ).reverse()\n\n for (const pathRef of pathRefs) {\n const path = pathRef.unref()!\n const [node] = Editor.node(editor, path)\n let range = Editor.range(editor, path)\n\n if (split && rangeRef) {\n range = Range.intersection(rangeRef.current!, range)!\n }\n\n Transforms.liftNodes(editor, {\n at: range,\n match: n => Element.isAncestor(node) && node.children.includes(n),\n voids,\n })\n }\n\n if (rangeRef) {\n rangeRef.unref()\n }\n })\n}\n","import { NodeTransforms } from '../interfaces/transforms/node'\nimport { Editor } from '../interfaces/editor'\nimport { Path } from '../interfaces/path'\nimport { matchPath } from '../utils/match-path'\nimport { Element } from '../interfaces/element'\nimport { Text } from '../interfaces/text'\nimport { Range } from '../interfaces/range'\nimport { Transforms } from '../interfaces/transforms'\n\nexport const wrapNodes: NodeTransforms['wrapNodes'] = (\n editor,\n element,\n options = {}\n) => {\n Editor.withoutNormalizing(editor, () => {\n const { mode = 'lowest', split = false, voids = false } = options\n let { match, at = editor.selection } = options\n\n if (!at) {\n return\n }\n\n if (match == null) {\n if (Path.isPath(at)) {\n match = matchPath(editor, at)\n } else if (editor.isInline(element)) {\n match = n =>\n (Element.isElement(n) && Editor.isInline(editor, n)) || Text.isText(n)\n } else {\n match = n => Element.isElement(n) && Editor.isBlock(editor, n)\n }\n }\n\n if (split && Range.isRange(at)) {\n const [start, end] = Range.edges(at)\n const rangeRef = Editor.rangeRef(editor, at, {\n affinity: 'inward',\n })\n Transforms.splitNodes(editor, { at: end, match, voids })\n Transforms.splitNodes(editor, { at: start, match, voids })\n at = rangeRef.unref()!\n\n if (options.at == null) {\n Transforms.select(editor, at)\n }\n }\n\n const roots = Array.from(\n Editor.nodes(editor, {\n at,\n match: editor.isInline(element)\n ? n => Element.isElement(n) && Editor.isBlock(editor, n)\n : n => Editor.isEditor(n),\n mode: 'lowest',\n voids,\n })\n )\n\n for (const [, rootPath] of roots) {\n const a = Range.isRange(at)\n ? Range.intersection(at, Editor.range(editor, rootPath))\n : at\n\n if (!a) {\n continue\n }\n\n const matches = Array.from(\n Editor.nodes(editor, { at: a, match, mode, voids })\n )\n\n if (matches.length > 0) {\n const [first] = matches\n const last = matches[matches.length - 1]\n const [, firstPath] = first\n const [, lastPath] = last\n\n if (firstPath.length === 0 && lastPath.length === 0) {\n // if there's no matching parent - usually means the node is an editor - don't do anything\n continue\n }\n\n const commonPath = Path.equals(firstPath, lastPath)\n ? Path.parent(firstPath)\n : Path.common(firstPath, lastPath)\n\n const range = Editor.range(editor, firstPath, lastPath)\n const commonNodeEntry = Editor.node(editor, commonPath)\n const [commonNode] = commonNodeEntry\n const depth = commonPath.length + 1\n const wrapperPath = Path.next(lastPath.slice(0, depth))\n const wrapper = { ...element, children: [] }\n Transforms.insertNodes(editor, wrapper, { at: wrapperPath, voids })\n\n Transforms.moveNodes(editor, {\n at: range,\n match: n =>\n Element.isAncestor(commonNode) && commonNode.children.includes(n),\n to: wrapperPath.concat(0),\n voids,\n })\n }\n }\n })\n}\n","import {\n addMark,\n deleteFragment,\n Editor,\n getDirtyPaths,\n getFragment,\n insertBreak,\n insertFragment,\n insertNode,\n insertSoftBreak,\n insertText,\n normalizeNode,\n removeMark,\n shouldNormalize,\n} from './'\nimport { apply } from './core'\nimport {\n above,\n after,\n before,\n deleteBackward,\n deleteForward,\n edges,\n elementReadOnly,\n end,\n first,\n fragment,\n getVoid,\n hasBlocks,\n hasInlines,\n hasPath,\n hasTexts,\n isBlock,\n isEdge,\n isEmpty,\n isEnd,\n isNormalizing,\n isStart,\n last,\n leaf,\n levels,\n marks,\n next,\n node,\n nodes,\n normalize,\n parent,\n path,\n pathRef,\n pathRefs,\n point,\n pointRef,\n pointRefs,\n positions,\n previous,\n range,\n rangeRef,\n rangeRefs,\n setNormalizing,\n shouldMergeNodesRemovePrevNode,\n start,\n string,\n unhangRange,\n withoutNormalizing,\n} from './editor'\nimport { deleteText } from './transforms-text'\nimport {\n collapse,\n deselect,\n move,\n select,\n setPoint,\n setSelection,\n} from './transforms-selection'\nimport {\n insertNodes,\n liftNodes,\n mergeNodes,\n moveNodes,\n removeNodes,\n setNodes,\n splitNodes,\n unsetNodes,\n unwrapNodes,\n wrapNodes,\n} from './transforms-node'\n\n/**\n * Create a new Slate `Editor` object.\n */\nexport const createEditor = (): Editor => {\n const editor: Editor = {\n children: [],\n operations: [],\n selection: null,\n marks: null,\n isElementReadOnly: () => false,\n isInline: () => false,\n isSelectable: () => true,\n isVoid: () => false,\n markableVoid: () => false,\n onChange: () => {},\n\n // Core\n apply: (...args) => apply(editor, ...args),\n\n // Editor\n addMark: (...args) => addMark(editor, ...args),\n deleteBackward: (...args) => deleteBackward(editor, ...args),\n deleteForward: (...args) => deleteForward(editor, ...args),\n deleteFragment: (...args) => deleteFragment(editor, ...args),\n getFragment: (...args) => getFragment(editor, ...args),\n insertBreak: (...args) => insertBreak(editor, ...args),\n insertSoftBreak: (...args) => insertSoftBreak(editor, ...args),\n insertFragment: (...args) => insertFragment(editor, ...args),\n insertNode: (...args) => insertNode(editor, ...args),\n insertText: (...args) => insertText(editor, ...args),\n normalizeNode: (...args) => normalizeNode(editor, ...args),\n removeMark: (...args) => removeMark(editor, ...args),\n getDirtyPaths: (...args) => getDirtyPaths(editor, ...args),\n shouldNormalize: (...args) => shouldNormalize(editor, ...args),\n\n // Editor interface\n above: (...args) => above(editor, ...args),\n after: (...args) => after(editor, ...args),\n before: (...args) => before(editor, ...args),\n collapse: (...args) => collapse(editor, ...args),\n delete: (...args) => deleteText(editor, ...args),\n deselect: (...args) => deselect(editor, ...args),\n edges: (...args) => edges(editor, ...args),\n elementReadOnly: (...args) => elementReadOnly(editor, ...args),\n end: (...args) => end(editor, ...args),\n first: (...args) => first(editor, ...args),\n fragment: (...args) => fragment(editor, ...args),\n getMarks: (...args) => marks(editor, ...args),\n hasBlocks: (...args) => hasBlocks(editor, ...args),\n hasInlines: (...args) => hasInlines(editor, ...args),\n hasPath: (...args) => hasPath(editor, ...args),\n hasTexts: (...args) => hasTexts(editor, ...args),\n insertNodes: (...args) => insertNodes(editor, ...args),\n isBlock: (...args) => isBlock(editor, ...args),\n isEdge: (...args) => isEdge(editor, ...args),\n isEmpty: (...args) => isEmpty(editor, ...args),\n isEnd: (...args) => isEnd(editor, ...args),\n isNormalizing: (...args) => isNormalizing(editor, ...args),\n isStart: (...args) => isStart(editor, ...args),\n last: (...args) => last(editor, ...args),\n leaf: (...args) => leaf(editor, ...args),\n levels: (...args) => levels(editor, ...args),\n liftNodes: (...args) => liftNodes(editor, ...args),\n mergeNodes: (...args) => mergeNodes(editor, ...args),\n move: (...args) => move(editor, ...args),\n moveNodes: (...args) => moveNodes(editor, ...args),\n next: (...args) => next(editor, ...args),\n node: (...args) => node(editor, ...args),\n nodes: (...args) => nodes(editor, ...args),\n normalize: (...args) => normalize(editor, ...args),\n parent: (...args) => parent(editor, ...args),\n path: (...args) => path(editor, ...args),\n pathRef: (...args) => pathRef(editor, ...args),\n pathRefs: (...args) => pathRefs(editor, ...args),\n point: (...args) => point(editor, ...args),\n pointRef: (...args) => pointRef(editor, ...args),\n pointRefs: (...args) => pointRefs(editor, ...args),\n positions: (...args) => positions(editor, ...args),\n previous: (...args) => previous(editor, ...args),\n range: (...args) => range(editor, ...args),\n rangeRef: (...args) => rangeRef(editor, ...args),\n rangeRefs: (...args) => rangeRefs(editor, ...args),\n removeNodes: (...args) => removeNodes(editor, ...args),\n select: (...args) => select(editor, ...args),\n setNodes: (...args) => setNodes(editor, ...args),\n setNormalizing: (...args) => setNormalizing(editor, ...args),\n setPoint: (...args) => setPoint(editor, ...args),\n setSelection: (...args) => setSelection(editor, ...args),\n splitNodes: (...args) => splitNodes(editor, ...args),\n start: (...args) => start(editor, ...args),\n string: (...args) => string(editor, ...args),\n unhangRange: (...args) => unhangRange(editor, ...args),\n unsetNodes: (...args) => unsetNodes(editor, ...args),\n unwrapNodes: (...args) => unwrapNodes(editor, ...args),\n void: (...args) => getVoid(editor, ...args),\n withoutNormalizing: (...args) => withoutNormalizing(editor, ...args),\n wrapNodes: (...args) => wrapNodes(editor, ...args),\n shouldMergeNodesRemovePrevNode: (...args) =>\n shouldMergeNodesRemovePrevNode(editor, ...args),\n }\n\n return editor\n}\n"],"names":["PathRef","transform","ref","op","current","affinity","path","Path","unref","PointRef","point","Point","RangeRef","Range","DIRTY_PATHS","WeakMap","DIRTY_PATH_KEYS","FLUSHING","NORMALIZING","PATH_REFS","POINT_REFS","RANGE_REFS","ancestors","options","arguments","length","undefined","_options$reverse","reverse","paths","levels","slice","common","another","i","av","bv","push","compare","min","Math","endsAfter","as","bs","equals","endsAt","endsBefore","every","n","hasPrevious","isAfter","isAncestor","isBefore","isChild","isCommon","isDescendant","isParent","isPath","value","Array","isArray","isSibling","al","bl","_options$reverse2","list","next","Error","concat","last","operationCanTransformPath","operation","type","parent","previous","relative","ancestor","p","_toConsumableArray","_options$affinity","position","onp","newPath","copy","require$$0","applyToDraft","editor","selection","node","Node","index","children","splice","_iterator","_createForOfIteratorHelper","points","_step","s","done","_step$value","_slicedToArray","key","err","e","f","offset","text","leaf","before","after","_iterator2","_step2","_step2$value","get","prevPath","prev","Text","isText","_prev$children","apply","Scrubber","stringify","_iterator3","_step3","_step3$value","truePath","newParent","newIndex","_iterator4","_step4","_step4$value","_iterator5","_step5","_step5$value","result","_iterator6","texts","_step6","_step6$value","preferNext","_iterator7","_step7","_step7$value","properties","newProperties","hasOwnProperty","isRange","_objectSpread","newNode","_iterator8","_step8","_step8$value","GeneralTransforms","createDraft","finishDraft","isDraft","NodeTransforms","insertNodes","nodes","liftNodes","mergeNodes","moveNodes","removeNodes","setNodes","props","splitNodes","unsetNodes","unwrapNodes","wrapNodes","element","SelectionTransforms","collapse","deselect","move","select","target","setPoint","setSelection","isDeepEqual","a","b","isPlainObject","edges","range","anchor","focus","isBackward","end","_Range$edges","_Range$edges2","surrounds","intersectionRange","intersection","includes","_Range$edges3","_Range$edges4","rs","re","_Range$edges5","_Range$edges6","ts","te","_Range$edges7","_Range$edges8","start","isAfterStart","isBeforeEnd","isPoint","rest","_objectWithoutProperties","_excluded","_Range$edges9","_Range$edges10","s1","e1","_Range$edges11","_Range$edges12","s2","e2","isCollapsed","isExpanded","isForward","_Range$edges13","_Range$edges14","produce","r","affinityAnchor","affinityFocus","isElement","isNodeList","Editor","isEditor","Element","isElementList","val","isElementProps","isElementType","elementVal","elementKey","matches","IS_NODE_LIST_CACHE","root","entry","child","c","childPath","descendant","descendants","elements","extractProps","_excluded2","first","fragment","newRoot","nodeEntries","pass","_ref","_ref2","getIf","has","isNode","cachedResult","set","isTextProps","_options$from","from","to","visited","Set","add","nextIndex","parentPath","string","map","join","Operation","isNodeOperation","isOperation","endsWith","isOperationList","isSelectionOperation","isTextOperation","inverse","inversePath","inverseNewPath","IS_EDITOR_CACHE","cachedIsEditor","addMark","deleteFragment","insertBreak","insertSoftBreak","insertFragment","insertNode","insertText","isElementReadOnly","isInline","isSelectable","isVoid","normalizeNode","onChange","removeMark","getDirtyPaths","marks","operations","above","at","deleteBackward","_options$unit","unit","deleteForward","_options$unit2","elementReadOnly","hasBlocks","hasInlines","hasPath","hasTexts","isBlock","isEdge","isEmpty","isEnd","isNormalizing","isStart","getMarks","normalize","pathRef","pathRefs","pointRef","pointRefs","positions","rangeRef","rangeRefs","setNormalizing","unhangRange","_void","withoutNormalizing","fn","shouldMergeNodesRemovePrevNode","prevNode","curNode","Location","isLocation","Span","isSpan","_scrubber","setScrubber","scrubber","JSON","_options$loose","loose","omitText","obj","isTextList","decorations","leaves","dec","mergeDecoration","merge","leafEnd","decorationStart","decorationEnd","Object","assign","leafStart","middle","off","currentOffset","entries","item","isFirst","isLast","getDefaultInsertLocation","matchPath","_Editor$node","_Editor$node2","getCharacterDistance","str","isRTL","isLTR","codepoints","codepointsIteratorRTL","left","CodepointType","None","right","distance","gb11","gb12Or13","char","code","codePointAt","getCodepointType","intersects","ZWJ","ExtPict","endsWithEmojiZWJ","substring","RI","endsWithOddNumberOfRIs","isBoundaryPair","SPACE","PUNCTUATION","CHAMELEON","getWordDistance","dist","started","charDist","_splitByCharacterDist","splitByCharacterDistance","_splitByCharacterDist2","remaining","isWordCharacter","test","_splitByCharacterDist3","_splitByCharacterDist4","nextChar","nextRemaining","char1","charAt","isLowSurrogate","charCodeAt","char2","isHighSurrogate","charCode","reExtend","rePrepend","reSpacingMark","reL","reV","reT","reLV","reLVT","reExtPict","Any","search","Extend","Prepend","SpacingMark","L","V","T","LV","LVT","x","y","NonBoundaryPairs","findIndex","endingEmojiZWJ","endingRIs","match","numRIs","TextTransforms","_delete","_options$voids","voids","_options$at","startRef","endRef","Transforms","startPoint","endPoint","_at","BATCHING_DIRTY_PATHS","isBatchingDirtyPaths","batchDirtyPaths","update","updateDirtyPaths","newDirtyPaths","oldDirtyPaths","oldDirtyPathKeys","dirtyPaths","dirtyPathKeys","Promise","resolve","then","previousPath","oldAncestors","newAncestors","resultPath","nextPath","getFragment","_entry","shouldHaveInlines","currentNode","isInlineOrText","newChild","elementChild","shouldNormalize","iteration","initialDirtyPathsLength","maxIterations","_options$mode","mode","_Editor$parent","_Editor$parent2","parentNode","markableVoid","expandedSelection","markAcceptingVoidSelected","selectedNode","selectedPath","_Editor$parent3","_Editor$parent4","_defineProperty","split","edge","_options$distance","d","_ref$direction","direction","getVoid","some","always","_children","_Editor$nodes","_Editor$nodes2","_match","_anchor","_Editor$leaf","_Editor$leaf2","markedVoid","block","_prev","_block","blockPath","_node2","pointAfterLocation","_Editor$last","_Editor$last2","span","_options$universal","universal","_options$ignoreNonSel","ignoreNonSelectable","hit","isLower","emit","_options$force","force","getDirtyPathKeys","popDirtyPath","pop","allPaths","allPathKeys","dirtyPath","_entry2","_","refs","depth","_Node$first","_Node$first2","firstPath","_Node$last","_Node$last2","lastPath","_options$edge","isNewBlock","blockText","leafTextRemaining","leafTextOffset","calcDistance","pointBeforeLocation","_Editor$first","_Editor$first2","t","endBlock","skip","_ref3","_ref4","curNodePath","deleteText","_Editor$void","_Editor$void2","_options$hanging","hanging","furthestVoid","_furthestVoid","voidPath","opts","endOfDoc","startBlock","isAcrossBlocks","isSingleText","startNonEditable","endNonEditable","removedText","_start","filter","forEach","_Editor$leaf3","_Editor$leaf4","startUnref","endUnref","_options$batchDirty","batchDirty","inlineElementMatch","_inlineElementMatch","inlinePath","blockMatch","_blockMatch","isBlockStart","isBlockEnd","isBlockEmpty","mergeStart","mergeEnd","matcher","isRoot","starts","middles","ends","starting","_i","_matches","_matches$_i","inlineMatch","_inlineMatch","isInlineStart","isInlineEnd","middleRef","oldProps","newProps","k","keys","_nodes","_nodes2","isAtEnd","batchedOps","_loop","_batchedOps","_pathRefs","parentNodeEntry","_parentNodeEntry","toPath","splitPath","hasSingleChildNest","_current","commonPath","isPreviousSibling","emptyAncestor","emptyRef","toRef","targets","depths","_options$split","splitMode","endAtEndOfNode","startAtStartOfNode","prop","nodeProp","hasChanges","deleteRange","_options$height","height","_options$always","beforeRef","afterRef","highest","voidMatch","nudge","_voidMatch","voidNode","afterPath","siblingHeight","_highest","highestPath","lowestPath","_afterRef","roots","_roots$_i","_roots","rootPath","_first","_last","commonNodeEntry","_commonNodeEntry","commonNode","wrapperPath","wrapper","_ret","createEditor","_len","args","_key","_len2","_key2","_len3","_key3","_len4","_key4","_len5","_key5","_len6","_key6","_len7","_key7","_len8","_key8","_len9","_key9","_len10","_key10","_len11","_key11","_len12","_key12","_len13","_key13","_len14","_key14","_len15","_key15","_len16","_key16","_len17","_key17","_len18","_key18","_len19","_key19","_len20","_key20","_len21","_key21","_len22","_key22","_len23","_key23","_len24","_key24","_len25","_key25","_len26","_key26","_len27","_key27","_len28","_key28","_len29","_key29","_len30","_key30","_len31","_key31","_len32","_key32","_len33","_key33","_len34","_key34","_len35","_key35","_len36","_key36","_len37","_key37","_len38","_key38","_len39","_key39","_len40","_key40","_len41","_key41","_len42","_key42","_len43","_key43","_len44","_key44","_len45","_key45","_len46","_key46","_len47","_key47","_len48","_key48","_len49","_key49","_len50","_key50","_len51","_key51","_len52","_key52","_len53","_key53","_len54","_key54","_len55","_key55","_len56","_key56","_len57","_key57","_len58","_key58","_len59","_key59","_len60","_key60","_len61","_key61","_len62","_key62","_len63","_key63","_len64","_key64","_len65","_key65","_len66","_key66","_len67","_key67","_len68","_key68","_len69","_key69","_len70","_key70","_len71","_key71","_len72","_key72","_len73","_key73","_len74","_key74","_len75","_key75","_len76","_key76","_len77","_key77"],"mappings":"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","x_google_ignoreList":[4,5,6,7,8,9,11,12,13,14,15,16,17,18,23,24]}
|