{"version":3,"file":"static/js/3624_1b5e01df5f3200aa772f.js","mappings":"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","sources":["file:////home/runner/work/platform/platform/common/temp/node_modules/.pnpm/slate@0.110.2/node_modules/slate/dist/index.es.js","file:////home/runner/work/platform/platform/common/temp/node_modules/.pnpm/style-to-js@1.1.16/node_modules/style-to-js/cjs/index.js","file:////home/runner/work/platform/platform/common/temp/node_modules/.pnpm/style-to-js@1.1.16/node_modules/style-to-js/cjs/utilities.js","file:////home/runner/work/platform/platform/common/temp/node_modules/.pnpm/style-to-object@0.4.4/node_modules/style-to-object/index.js","file:////home/runner/work/platform/platform/common/temp/node_modules/.pnpm/style-to-object@1.0.8/node_modules/style-to-object/cjs/index.js","file:////home/runner/work/platform/platform/common/temp/node_modules/.pnpm/space-separated-tokens@2.0.2/node_modules/space-separated-tokens/index.js","file:////home/runner/work/platform/platform/common/temp/node_modules/.pnpm/style-to-object@0.4.4/node_modules/style-to-object/index.mjs"],"sourcesContent":["import { isPlainObject } from 'is-plain-object';\nimport { createDraft, finishDraft, isDraft, produce } from 'immer';\n\n// eslint-disable-next-line no-redeclare\nvar PathRef = {\n transform(ref, op) {\n var {\n current,\n affinity\n } = ref;\n if (current == null) {\n return;\n }\n var path = Path.transform(current, op, {\n affinity\n });\n ref.current = path;\n if (path == null) {\n ref.unref();\n }\n }\n};\n\n// eslint-disable-next-line no-redeclare\nvar PointRef = {\n transform(ref, op) {\n var {\n current,\n affinity\n } = ref;\n if (current == null) {\n return;\n }\n var point = Point.transform(current, op, {\n affinity\n });\n ref.current = point;\n if (point == null) {\n ref.unref();\n }\n }\n};\n\n// eslint-disable-next-line no-redeclare\nvar RangeRef = {\n transform(ref, op) {\n var {\n current,\n affinity\n } = ref;\n if (current == null) {\n return;\n }\n var path = Range.transform(current, op, {\n affinity\n });\n ref.current = path;\n if (path == null) {\n ref.unref();\n }\n }\n};\n\nvar DIRTY_PATHS = new WeakMap();\nvar DIRTY_PATH_KEYS = new WeakMap();\nvar FLUSHING = new WeakMap();\nvar NORMALIZING = new WeakMap();\nvar PATH_REFS = new WeakMap();\nvar POINT_REFS = new WeakMap();\nvar RANGE_REFS = new WeakMap();\n\n// eslint-disable-next-line no-redeclare\nvar Path = {\n ancestors(path) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var {\n reverse = false\n } = options;\n var paths = Path.levels(path, options);\n if (reverse) {\n paths = paths.slice(1);\n } else {\n paths = paths.slice(0, -1);\n }\n return paths;\n },\n common(path, another) {\n var common = [];\n for (var i = 0; i < path.length && i < another.length; i++) {\n var av = path[i];\n var bv = another[i];\n if (av !== bv) {\n break;\n }\n common.push(av);\n }\n return common;\n },\n compare(path, another) {\n var min = Math.min(path.length, another.length);\n for (var i = 0; i < min; i++) {\n if (path[i] < another[i]) return -1;\n if (path[i] > another[i]) return 1;\n }\n return 0;\n },\n endsAfter(path, another) {\n var i = path.length - 1;\n var as = path.slice(0, i);\n var bs = another.slice(0, i);\n var av = path[i];\n var bv = another[i];\n return Path.equals(as, bs) && av > bv;\n },\n endsAt(path, another) {\n var i = path.length;\n var as = path.slice(0, i);\n var bs = another.slice(0, i);\n return Path.equals(as, bs);\n },\n endsBefore(path, another) {\n var i = path.length - 1;\n var as = path.slice(0, i);\n var bs = another.slice(0, i);\n var av = path[i];\n var bv = another[i];\n return Path.equals(as, bs) && av < bv;\n },\n equals(path, another) {\n return path.length === another.length && path.every((n, i) => n === another[i]);\n },\n hasPrevious(path) {\n return path[path.length - 1] > 0;\n },\n isAfter(path, another) {\n return Path.compare(path, another) === 1;\n },\n isAncestor(path, another) {\n return path.length < another.length && Path.compare(path, another) === 0;\n },\n isBefore(path, another) {\n return Path.compare(path, another) === -1;\n },\n isChild(path, another) {\n return path.length === another.length + 1 && Path.compare(path, another) === 0;\n },\n isCommon(path, another) {\n return path.length <= another.length && Path.compare(path, another) === 0;\n },\n isDescendant(path, another) {\n return path.length > another.length && Path.compare(path, another) === 0;\n },\n isParent(path, another) {\n return path.length + 1 === another.length && Path.compare(path, another) === 0;\n },\n isPath(value) {\n return Array.isArray(value) && (value.length === 0 || typeof value[0] === 'number');\n },\n isSibling(path, another) {\n if (path.length !== another.length) {\n return false;\n }\n var as = path.slice(0, -1);\n var bs = another.slice(0, -1);\n var al = path[path.length - 1];\n var bl = another[another.length - 1];\n return al !== bl && Path.equals(as, bs);\n },\n levels(path) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var {\n reverse = false\n } = options;\n var list = [];\n for (var i = 0; i <= path.length; i++) {\n list.push(path.slice(0, i));\n }\n if (reverse) {\n list.reverse();\n }\n return list;\n },\n next(path) {\n if (path.length === 0) {\n throw new Error(\"Cannot get the next path of a root path [\".concat(path, \"], because it has no next index.\"));\n }\n var last = path[path.length - 1];\n return path.slice(0, -1).concat(last + 1);\n },\n operationCanTransformPath(operation) {\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 parent(path) {\n if (path.length === 0) {\n throw new Error(\"Cannot get the parent path of the root path [\".concat(path, \"].\"));\n }\n return path.slice(0, -1);\n },\n previous(path) {\n if (path.length === 0) {\n throw new Error(\"Cannot get the previous path of a root path [\".concat(path, \"], because it has no previous index.\"));\n }\n var last = path[path.length - 1];\n if (last <= 0) {\n throw new Error(\"Cannot get the previous path of a first child path [\".concat(path, \"] because it would result in a negative index.\"));\n }\n return path.slice(0, -1).concat(last - 1);\n },\n relative(path, ancestor) {\n if (!Path.isAncestor(ancestor, path) && !Path.equals(path, ancestor)) {\n throw new Error(\"Cannot get the relative path of [\".concat(path, \"] inside ancestor [\").concat(ancestor, \"], because it is not above or equal to the path.\"));\n }\n return path.slice(ancestor.length);\n },\n transform(path, operation) {\n var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n if (!path) return null;\n // PERF: use destructing instead of immer\n var p = [...path];\n var {\n affinity = 'forward'\n } = options;\n // PERF: Exit early if the operation is guaranteed not to have an effect.\n if (path.length === 0) {\n return p;\n }\n switch (operation.type) {\n case 'insert_node':\n {\n var {\n path: op\n } = operation;\n if (Path.equals(op, p) || Path.endsBefore(op, p) || Path.isAncestor(op, p)) {\n p[op.length - 1] += 1;\n }\n break;\n }\n case 'remove_node':\n {\n var {\n path: _op\n } = operation;\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 break;\n }\n case 'merge_node':\n {\n var {\n path: _op2,\n position\n } = operation;\n if (Path.equals(_op2, p) || Path.endsBefore(_op2, p)) {\n p[_op2.length - 1] -= 1;\n } else if (Path.isAncestor(_op2, p)) {\n p[_op2.length - 1] -= 1;\n p[_op2.length] += position;\n }\n break;\n }\n case 'split_node':\n {\n var {\n path: _op3,\n position: _position\n } = operation;\n if (Path.equals(_op3, p)) {\n if (affinity === 'forward') {\n p[p.length - 1] += 1;\n } else if (affinity === 'backward') ; else {\n return null;\n }\n } else if (Path.endsBefore(_op3, p)) {\n p[_op3.length - 1] += 1;\n } else if (Path.isAncestor(_op3, p) && path[_op3.length] >= _position) {\n p[_op3.length - 1] += 1;\n p[_op3.length] -= _position;\n }\n break;\n }\n case 'move_node':\n {\n var {\n path: _op4,\n newPath: onp\n } = operation;\n // If the old and new path are the same, it's a no-op.\n if (Path.equals(_op4, onp)) {\n return p;\n }\n if (Path.isAncestor(_op4, p) || Path.equals(_op4, p)) {\n var copy = onp.slice();\n if (Path.endsBefore(_op4, onp) && _op4.length < onp.length) {\n copy[_op4.length - 1] -= 1;\n }\n return copy.concat(p.slice(_op4.length));\n } else if (Path.isSibling(_op4, onp) && (Path.isAncestor(onp, p) || Path.equals(onp, p))) {\n if (Path.endsBefore(_op4, p)) {\n p[_op4.length - 1] -= 1;\n } else {\n p[_op4.length - 1] += 1;\n }\n } else if (Path.endsBefore(onp, p) || Path.equals(onp, p) || Path.isAncestor(onp, p)) {\n if (Path.endsBefore(_op4, p)) {\n p[_op4.length - 1] -= 1;\n }\n p[onp.length - 1] += 1;\n } else if (Path.endsBefore(_op4, p)) {\n if (Path.equals(onp, p)) {\n p[onp.length - 1] += 1;\n }\n p[_op4.length - 1] -= 1;\n }\n break;\n }\n }\n return p;\n }\n};\n\nfunction _typeof(o) {\n \"@babel/helpers - typeof\";\n\n return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) {\n return typeof o;\n } : function (o) {\n return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o;\n }, _typeof(o);\n}\n\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}\n\nfunction _toPropertyKey(arg) {\n var key = _toPrimitive(arg, \"string\");\n return _typeof(key) === \"symbol\" ? key : String(key);\n}\n\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}\n\nfunction ownKeys$e(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }\nfunction _objectSpread$e(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$e(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$e(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }\nvar applyToDraft = (editor, selection, op) => {\n switch (op.type) {\n case 'insert_node':\n {\n var {\n path,\n node\n } = op;\n var parent = Node.parent(editor, path);\n var index = path[path.length - 1];\n if (index > parent.children.length) {\n throw new Error(\"Cannot apply an \\\"insert_node\\\" operation at path [\".concat(path, \"] because the destination is past the end of the node.\"));\n }\n parent.children.splice(index, 0, node);\n if (selection) {\n for (var [point, key] of Range.points(selection)) {\n selection[key] = Point.transform(point, op);\n }\n }\n break;\n }\n case 'insert_text':\n {\n var {\n path: _path,\n offset,\n text\n } = op;\n if (text.length === 0) break;\n var _node = Node.leaf(editor, _path);\n var before = _node.text.slice(0, offset);\n var after = _node.text.slice(offset);\n _node.text = before + text + after;\n if (selection) {\n for (var [_point, _key] of Range.points(selection)) {\n selection[_key] = Point.transform(_point, op);\n }\n }\n break;\n }\n case 'merge_node':\n {\n var {\n path: _path2\n } = op;\n var _node2 = Node.get(editor, _path2);\n var prevPath = Path.previous(_path2);\n var prev = Node.get(editor, prevPath);\n var _parent = Node.parent(editor, _path2);\n var _index = _path2[_path2.length - 1];\n if (Text.isText(_node2) && Text.isText(prev)) {\n prev.text += _node2.text;\n } else if (!Text.isText(_node2) && !Text.isText(prev)) {\n prev.children.push(..._node2.children);\n } else {\n throw new Error(\"Cannot apply a \\\"merge_node\\\" operation at path [\".concat(_path2, \"] to nodes of different interfaces: \").concat(Scrubber.stringify(_node2), \" \").concat(Scrubber.stringify(prev)));\n }\n _parent.children.splice(_index, 1);\n if (selection) {\n for (var [_point2, _key2] of Range.points(selection)) {\n selection[_key2] = Point.transform(_point2, op);\n }\n }\n break;\n }\n case 'move_node':\n {\n var {\n path: _path3,\n newPath\n } = op;\n if (Path.isAncestor(_path3, newPath)) {\n throw new Error(\"Cannot move a path [\".concat(_path3, \"] to new path [\").concat(newPath, \"] because the destination is inside itself.\"));\n }\n var _node3 = Node.get(editor, _path3);\n var _parent2 = Node.parent(editor, _path3);\n var _index2 = _path3[_path3.length - 1];\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 _parent2.children.splice(_index2, 1);\n var truePath = Path.transform(_path3, op);\n var newParent = Node.get(editor, Path.parent(truePath));\n var newIndex = truePath[truePath.length - 1];\n newParent.children.splice(newIndex, 0, _node3);\n if (selection) {\n for (var [_point3, _key3] of Range.points(selection)) {\n selection[_key3] = Point.transform(_point3, op);\n }\n }\n break;\n }\n case 'remove_node':\n {\n var {\n path: _path4\n } = op;\n var _index3 = _path4[_path4.length - 1];\n var _parent3 = Node.parent(editor, _path4);\n _parent3.children.splice(_index3, 1);\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 (var [_point4, _key4] of Range.points(selection)) {\n var result = Point.transform(_point4, op);\n if (selection != null && result != null) {\n selection[_key4] = result;\n } else {\n var _prev = void 0;\n var next = void 0;\n for (var [n, p] of Node.texts(editor)) {\n if (Path.compare(p, _path4) === -1) {\n _prev = [n, p];\n } else {\n next = [n, p];\n break;\n }\n }\n var preferNext = false;\n if (_prev && next) {\n if (Path.equals(next[1], _path4)) {\n preferNext = !Path.hasPrevious(next[1]);\n } else {\n preferNext = Path.common(_prev[1], _path4).length < Path.common(next[1], _path4).length;\n }\n }\n if (_prev && !preferNext) {\n _point4.path = _prev[1];\n _point4.offset = _prev[0].text.length;\n } else if (next) {\n _point4.path = next[1];\n _point4.offset = 0;\n } else {\n selection = null;\n }\n }\n }\n }\n break;\n }\n case 'remove_text':\n {\n var {\n path: _path5,\n offset: _offset,\n text: _text\n } = op;\n if (_text.length === 0) break;\n var _node4 = Node.leaf(editor, _path5);\n var _before = _node4.text.slice(0, _offset);\n var _after = _node4.text.slice(_offset + _text.length);\n _node4.text = _before + _after;\n if (selection) {\n for (var [_point5, _key5] of Range.points(selection)) {\n selection[_key5] = Point.transform(_point5, op);\n }\n }\n break;\n }\n case 'set_node':\n {\n var {\n path: _path6,\n properties,\n newProperties\n } = op;\n if (_path6.length === 0) {\n throw new Error(\"Cannot set properties on the root node!\");\n }\n var _node5 = Node.get(editor, _path6);\n for (var _key6 in newProperties) {\n if (_key6 === 'children' || _key6 === 'text') {\n throw new Error(\"Cannot set the \\\"\".concat(_key6, \"\\\" property of nodes!\"));\n }\n var value = newProperties[_key6];\n if (value == null) {\n delete _node5[_key6];\n } else {\n _node5[_key6] = value;\n }\n }\n // properties that were previously defined, but are now missing, must be deleted\n for (var _key7 in properties) {\n if (!newProperties.hasOwnProperty(_key7)) {\n delete _node5[_key7];\n }\n }\n break;\n }\n case 'set_selection':\n {\n var {\n newProperties: _newProperties\n } = op;\n if (_newProperties == null) {\n selection = _newProperties;\n } else {\n if (selection == null) {\n if (!Range.isRange(_newProperties)) {\n throw new Error(\"Cannot apply an incomplete \\\"set_selection\\\" operation properties \".concat(Scrubber.stringify(_newProperties), \" when there is no current selection.\"));\n }\n selection = _objectSpread$e({}, _newProperties);\n }\n for (var _key8 in _newProperties) {\n var _value = _newProperties[_key8];\n if (_value == null) {\n if (_key8 === 'anchor' || _key8 === 'focus') {\n throw new Error(\"Cannot remove the \\\"\".concat(_key8, \"\\\" selection property\"));\n }\n delete selection[_key8];\n } else {\n selection[_key8] = _value;\n }\n }\n }\n break;\n }\n case 'split_node':\n {\n var {\n path: _path7,\n position,\n properties: _properties\n } = op;\n if (_path7.length === 0) {\n throw new Error(\"Cannot apply a \\\"split_node\\\" operation at path [\".concat(_path7, \"] because the root node cannot be split.\"));\n }\n var _node6 = Node.get(editor, _path7);\n var _parent4 = Node.parent(editor, _path7);\n var _index4 = _path7[_path7.length - 1];\n var newNode;\n if (Text.isText(_node6)) {\n var _before2 = _node6.text.slice(0, position);\n var _after2 = _node6.text.slice(position);\n _node6.text = _before2;\n newNode = _objectSpread$e(_objectSpread$e({}, _properties), {}, {\n text: _after2\n });\n } else {\n var _before3 = _node6.children.slice(0, position);\n var _after3 = _node6.children.slice(position);\n _node6.children = _before3;\n newNode = _objectSpread$e(_objectSpread$e({}, _properties), {}, {\n children: _after3\n });\n }\n _parent4.children.splice(_index4 + 1, 0, newNode);\n if (selection) {\n for (var [_point6, _key9] of Range.points(selection)) {\n selection[_key9] = Point.transform(_point6, op);\n }\n }\n break;\n }\n }\n return selection;\n};\n// eslint-disable-next-line no-redeclare\nvar GeneralTransforms = {\n transform(editor, op) {\n editor.children = createDraft(editor.children);\n var selection = editor.selection && createDraft(editor.selection);\n try {\n selection = applyToDraft(editor, selection, op);\n } finally {\n editor.children = finishDraft(editor.children);\n if (selection) {\n editor.selection = isDraft(selection) ? finishDraft(selection) : selection;\n } else {\n editor.selection = null;\n }\n }\n }\n};\n\n// eslint-disable-next-line no-redeclare\nvar 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\n// eslint-disable-next-line no-redeclare\nvar 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\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 */\nvar isDeepEqual = (node, another) => {\n for (var key in node) {\n var a = node[key];\n var 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 (var 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 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 for (var _key in another) {\n if (node[_key] === undefined && another[_key] !== undefined) {\n return false;\n }\n }\n return true;\n};\n\nfunction _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}\n\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}\n\nvar _excluded$4 = [\"anchor\", \"focus\"];\nfunction ownKeys$d(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }\nfunction _objectSpread$d(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$d(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$d(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }\n// eslint-disable-next-line no-redeclare\nvar Range = {\n edges(range) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var {\n reverse = false\n } = options;\n var {\n anchor,\n focus\n } = range;\n return Range.isBackward(range) === reverse ? [anchor, focus] : [focus, anchor];\n },\n end(range) {\n var [, end] = Range.edges(range);\n return end;\n },\n equals(range, another) {\n return Point.equals(range.anchor, another.anchor) && Point.equals(range.focus, another.focus);\n },\n surrounds(range, target) {\n var intersectionRange = Range.intersection(range, target);\n if (!intersectionRange) {\n return false;\n }\n return Range.equals(intersectionRange, target);\n },\n includes(range, target) {\n if (Range.isRange(target)) {\n if (Range.includes(range, target.anchor) || Range.includes(range, target.focus)) {\n return true;\n }\n var [rs, re] = Range.edges(range);\n var [ts, te] = Range.edges(target);\n return Point.isBefore(rs, ts) && Point.isAfter(re, te);\n }\n var [start, end] = Range.edges(range);\n var isAfterStart = false;\n var isBeforeEnd = false;\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 return isAfterStart && isBeforeEnd;\n },\n intersection(range, another) {\n var rest = _objectWithoutProperties(range, _excluded$4);\n var [s1, e1] = Range.edges(range);\n var [s2, e2] = Range.edges(another);\n var start = Point.isBefore(s1, s2) ? s2 : s1;\n var end = Point.isBefore(e1, e2) ? e1 : e2;\n if (Point.isBefore(end, start)) {\n return null;\n } else {\n return _objectSpread$d({\n anchor: start,\n focus: end\n }, rest);\n }\n },\n isBackward(range) {\n var {\n anchor,\n focus\n } = range;\n return Point.isAfter(anchor, focus);\n },\n isCollapsed(range) {\n var {\n anchor,\n focus\n } = range;\n return Point.equals(anchor, focus);\n },\n isExpanded(range) {\n return !Range.isCollapsed(range);\n },\n isForward(range) {\n return !Range.isBackward(range);\n },\n isRange(value) {\n return isPlainObject(value) && Point.isPoint(value.anchor) && Point.isPoint(value.focus);\n },\n *points(range) {\n yield [range.anchor, 'anchor'];\n yield [range.focus, 'focus'];\n },\n start(range) {\n var [start] = Range.edges(range);\n return start;\n },\n transform(range, op) {\n var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n return produce(range, r => {\n if (r === null) {\n return null;\n }\n var {\n affinity = 'inward'\n } = options;\n var affinityAnchor;\n var affinityFocus;\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 var 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 var anchor = Point.transform(r.anchor, op, {\n affinity: affinityAnchor\n });\n var focus = Point.transform(r.focus, op, {\n affinity: affinityFocus\n });\n if (!anchor || !focus) {\n return null;\n }\n r.anchor = anchor;\n r.focus = focus;\n });\n }\n};\n\n/**\n * Shared the function with isElementType utility\n */\nvar isElement = value => {\n return isPlainObject(value) && Node.isNodeList(value.children) && !Editor.isEditor(value);\n};\n// eslint-disable-next-line no-redeclare\nvar Element = {\n isAncestor(value) {\n return isPlainObject(value) && Node.isNodeList(value.children);\n },\n isElement,\n isElementList(value) {\n return Array.isArray(value) && value.every(val => Element.isElement(val));\n },\n isElementProps(props) {\n return props.children !== undefined;\n },\n isElementType: function isElementType(value, elementVal) {\n var elementKey = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 'type';\n return isElement(value) && value[elementKey] === elementVal;\n },\n matches(element, props) {\n for (var key in props) {\n if (key === 'children') {\n continue;\n }\n if (element[key] !== props[key]) {\n return false;\n }\n }\n return true;\n }\n};\n\nvar _excluded$3 = [\"children\"],\n _excluded2$3 = [\"text\"];\nvar IS_NODE_LIST_CACHE = new WeakMap();\n// eslint-disable-next-line no-redeclare\nvar Node = {\n ancestor(root, path) {\n var node = Node.get(root, path);\n if (Text.isText(node)) {\n throw new Error(\"Cannot get the ancestor node at path [\".concat(path, \"] because it refers to a text node instead: \").concat(Scrubber.stringify(node)));\n }\n return node;\n },\n ancestors(root, path) {\n var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n return function* () {\n for (var p of Path.ancestors(path, options)) {\n var n = Node.ancestor(root, p);\n var entry = [n, p];\n yield entry;\n }\n }();\n },\n child(root, index) {\n if (Text.isText(root)) {\n throw new Error(\"Cannot get the child of a text node: \".concat(Scrubber.stringify(root)));\n }\n var c = root.children[index];\n if (c == null) {\n throw new Error(\"Cannot get child at index `\".concat(index, \"` in node: \").concat(Scrubber.stringify(root)));\n }\n return c;\n },\n children(root, path) {\n var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n return function* () {\n var {\n reverse = false\n } = options;\n var ancestor = Node.ancestor(root, path);\n var {\n children\n } = ancestor;\n var index = reverse ? children.length - 1 : 0;\n while (reverse ? index >= 0 : index < children.length) {\n var child = Node.child(ancestor, index);\n var childPath = path.concat(index);\n yield [child, childPath];\n index = reverse ? index - 1 : index + 1;\n }\n }();\n },\n common(root, path, another) {\n var p = Path.common(path, another);\n var n = Node.get(root, p);\n return [n, p];\n },\n descendant(root, path) {\n var node = Node.get(root, path);\n if (Editor.isEditor(node)) {\n throw new Error(\"Cannot get the descendant node at path [\".concat(path, \"] because it refers to the root editor node instead: \").concat(Scrubber.stringify(node)));\n }\n return node;\n },\n descendants(root) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n return function* () {\n for (var [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];\n }\n }\n }();\n },\n elements(root) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n return function* () {\n for (var [node, path] of Node.nodes(root, options)) {\n if (Element.isElement(node)) {\n yield [node, path];\n }\n }\n }();\n },\n extractProps(node) {\n if (Element.isAncestor(node)) {\n var properties = _objectWithoutProperties(node, _excluded$3);\n return properties;\n } else {\n var properties = _objectWithoutProperties(node, _excluded2$3);\n return properties;\n }\n },\n first(root, path) {\n var p = path.slice();\n var n = Node.get(root, p);\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 return [n, p];\n },\n fragment(root, range) {\n if (Text.isText(root)) {\n throw new Error(\"Cannot get a fragment starting from a root text node: \".concat(Scrubber.stringify(root)));\n }\n var newRoot = produce({\n children: root.children\n }, r => {\n var [start, end] = Range.edges(range);\n var nodeEntries = Node.nodes(r, {\n reverse: true,\n pass: _ref => {\n var [, path] = _ref;\n return !Range.includes(range, path);\n }\n });\n for (var [, path] of nodeEntries) {\n if (!Range.includes(range, path)) {\n var parent = Node.parent(r, path);\n var index = path[path.length - 1];\n parent.children.splice(index, 1);\n }\n if (Path.equals(path, end.path)) {\n var leaf = Node.leaf(r, path);\n leaf.text = leaf.text.slice(0, end.offset);\n }\n if (Path.equals(path, start.path)) {\n var _leaf = Node.leaf(r, path);\n _leaf.text = _leaf.text.slice(start.offset);\n }\n }\n if (Editor.isEditor(r)) {\n r.selection = null;\n }\n });\n return newRoot.children;\n },\n get(root, path) {\n var node = Node.getIf(root, path);\n if (node === undefined) {\n throw new Error(\"Cannot find a descendant at path [\".concat(path, \"] in node: \").concat(Scrubber.stringify(root)));\n }\n return node;\n },\n getIf(root, path) {\n var node = root;\n for (var i = 0; i < path.length; i++) {\n var p = path[i];\n if (Text.isText(node) || !node.children[p]) {\n return;\n }\n node = node.children[p];\n }\n return node;\n },\n has(root, path) {\n var node = root;\n for (var i = 0; i < path.length; i++) {\n var p = path[i];\n if (Text.isText(node) || !node.children[p]) {\n return false;\n }\n node = node.children[p];\n }\n return true;\n },\n isNode(value) {\n return Text.isText(value) || Element.isElement(value) || Editor.isEditor(value);\n },\n isNodeList(value) {\n if (!Array.isArray(value)) {\n return false;\n }\n var cachedResult = IS_NODE_LIST_CACHE.get(value);\n if (cachedResult !== undefined) {\n return cachedResult;\n }\n var isNodeList = value.every(val => Node.isNode(val));\n IS_NODE_LIST_CACHE.set(value, isNodeList);\n return isNodeList;\n },\n last(root, path) {\n var p = path.slice();\n var n = Node.get(root, p);\n while (n) {\n if (Text.isText(n) || n.children.length === 0) {\n break;\n } else {\n var i = n.children.length - 1;\n n = n.children[i];\n p.push(i);\n }\n }\n return [n, p];\n },\n leaf(root, path) {\n var node = Node.get(root, path);\n if (!Text.isText(node)) {\n throw new Error(\"Cannot get the leaf node at path [\".concat(path, \"] because it refers to a non-leaf node: \").concat(Scrubber.stringify(node)));\n }\n return node;\n },\n levels(root, path) {\n var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n return function* () {\n for (var p of Path.levels(path, options)) {\n var n = Node.get(root, p);\n yield [n, p];\n }\n }();\n },\n matches(node, props) {\n return Element.isElement(node) && Element.isElementProps(props) && Element.matches(node, props) || Text.isText(node) && Text.isTextProps(props) && Text.matches(node, props);\n },\n nodes(root) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n return function* () {\n var {\n pass,\n reverse = false\n } = options;\n var {\n from = [],\n to\n } = options;\n var visited = new Set();\n var p = [];\n var n = root;\n while (true) {\n if (to && (reverse ? Path.isBefore(p, to) : Path.isAfter(p, to))) {\n break;\n }\n if (!visited.has(n)) {\n yield [n, p];\n }\n // If we're allowed to go downward and we haven't descended yet, do.\n if (!visited.has(n) && !Text.isText(n) && n.children.length !== 0 && (pass == null || pass([n, p]) === false)) {\n visited.add(n);\n var nextIndex = reverse ? n.children.length - 1 : 0;\n if (Path.isAncestor(p, from)) {\n nextIndex = from[p.length];\n }\n p = p.concat(nextIndex);\n n = Node.get(root, p);\n continue;\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 // If we're going forward...\n if (!reverse) {\n var newPath = Path.next(p);\n if (Node.has(root, newPath)) {\n p = newPath;\n n = Node.get(root, p);\n continue;\n }\n }\n // If we're going backward...\n if (reverse && p[p.length - 1] !== 0) {\n var _newPath = Path.previous(p);\n p = _newPath;\n n = Node.get(root, p);\n continue;\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, path) {\n var parentPath = Path.parent(path);\n var p = Node.get(root, parentPath);\n if (Text.isText(p)) {\n throw new Error(\"Cannot get the parent of path [\".concat(path, \"] because it does not exist in the root.\"));\n }\n return p;\n },\n string(node) {\n if (Text.isText(node)) {\n return node.text;\n } else {\n return node.children.map(Node.string).join('');\n }\n },\n texts(root) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n return function* () {\n for (var [node, path] of Node.nodes(root, options)) {\n if (Text.isText(node)) {\n yield [node, path];\n }\n }\n }();\n }\n};\n\nfunction ownKeys$c(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }\nfunction _objectSpread$c(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$c(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$c(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }\n// eslint-disable-next-line no-redeclare\nvar Operation = {\n isNodeOperation(value) {\n return Operation.isOperation(value) && value.type.endsWith('_node');\n },\n isOperation(value) {\n if (!isPlainObject(value)) {\n return false;\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 typeof value.offset === 'number' && typeof value.text === 'string' && Path.isPath(value.path);\n case 'merge_node':\n return typeof value.position === 'number' && Path.isPath(value.path) && isPlainObject(value.properties);\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 typeof value.offset === 'number' && typeof value.text === 'string' && Path.isPath(value.path);\n case 'set_node':\n return Path.isPath(value.path) && isPlainObject(value.properties) && isPlainObject(value.newProperties);\n case 'set_selection':\n return value.properties === null && Range.isRange(value.newProperties) || value.newProperties === null && Range.isRange(value.properties) || isPlainObject(value.properties) && isPlainObject(value.newProperties);\n case 'split_node':\n return Path.isPath(value.path) && typeof value.position === 'number' && isPlainObject(value.properties);\n default:\n return false;\n }\n },\n isOperationList(value) {\n return Array.isArray(value) && value.every(val => Operation.isOperation(val));\n },\n isSelectionOperation(value) {\n return Operation.isOperation(value) && value.type.endsWith('_selection');\n },\n isTextOperation(value) {\n return Operation.isOperation(value) && value.type.endsWith('_text');\n },\n inverse(op) {\n switch (op.type) {\n case 'insert_node':\n {\n return _objectSpread$c(_objectSpread$c({}, op), {}, {\n type: 'remove_node'\n });\n }\n case 'insert_text':\n {\n return _objectSpread$c(_objectSpread$c({}, op), {}, {\n type: 'remove_text'\n });\n }\n case 'merge_node':\n {\n return _objectSpread$c(_objectSpread$c({}, op), {}, {\n type: 'split_node',\n path: Path.previous(op.path)\n });\n }\n case 'move_node':\n {\n var {\n newPath,\n path\n } = op;\n // PERF: in this case the move operation is a no-op anyways.\n if (Path.equals(newPath, path)) {\n return op;\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 _objectSpread$c(_objectSpread$c({}, op), {}, {\n path: newPath,\n 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 var inversePath = Path.transform(path, op);\n var inverseNewPath = Path.transform(Path.next(path), op);\n return _objectSpread$c(_objectSpread$c({}, op), {}, {\n path: inversePath,\n newPath: inverseNewPath\n });\n }\n case 'remove_node':\n {\n return _objectSpread$c(_objectSpread$c({}, op), {}, {\n type: 'insert_node'\n });\n }\n case 'remove_text':\n {\n return _objectSpread$c(_objectSpread$c({}, op), {}, {\n type: 'insert_text'\n });\n }\n case 'set_node':\n {\n var {\n properties,\n newProperties\n } = op;\n return _objectSpread$c(_objectSpread$c({}, op), {}, {\n properties: newProperties,\n newProperties: properties\n });\n }\n case 'set_selection':\n {\n var {\n properties: _properties,\n newProperties: _newProperties\n } = op;\n if (_properties == null) {\n return _objectSpread$c(_objectSpread$c({}, op), {}, {\n properties: _newProperties,\n newProperties: null\n });\n } else if (_newProperties == null) {\n return _objectSpread$c(_objectSpread$c({}, op), {}, {\n properties: null,\n newProperties: _properties\n });\n } else {\n return _objectSpread$c(_objectSpread$c({}, op), {}, {\n properties: _newProperties,\n newProperties: _properties\n });\n }\n }\n case 'split_node':\n {\n return _objectSpread$c(_objectSpread$c({}, op), {}, {\n type: 'merge_node',\n path: Path.next(op.path)\n });\n }\n }\n }\n};\n\nvar IS_EDITOR_CACHE = new WeakMap();\nvar isEditor = value => {\n var cachedIsEditor = IS_EDITOR_CACHE.get(value);\n if (cachedIsEditor !== undefined) {\n return cachedIsEditor;\n }\n if (!isPlainObject(value)) {\n return false;\n }\n var isEditor = typeof value.addMark === 'function' && typeof value.apply === 'function' && typeof value.deleteFragment === 'function' && typeof value.insertBreak === 'function' && typeof value.insertSoftBreak === 'function' && typeof value.insertFragment === 'function' && typeof value.insertNode === 'function' && typeof value.insertText === 'function' && typeof value.isElementReadOnly === 'function' && typeof value.isInline === 'function' && typeof value.isSelectable === 'function' && typeof value.isVoid === 'function' && typeof value.normalizeNode === 'function' && typeof value.onChange === 'function' && typeof value.removeMark === 'function' && typeof value.getDirtyPaths === 'function' && (value.marks === null || isPlainObject(value.marks)) && (value.selection === null || Range.isRange(value.selection)) && Node.isNodeList(value.children) && Operation.isOperationList(value.operations);\n IS_EDITOR_CACHE.set(value, isEditor);\n return isEditor;\n};\n\n// eslint-disable-next-line no-redeclare\nvar Editor = {\n above(editor, options) {\n return editor.above(options);\n },\n addMark(editor, key, value) {\n editor.addMark(key, value);\n },\n after(editor, at, options) {\n return editor.after(at, options);\n },\n before(editor, at, options) {\n return editor.before(at, options);\n },\n deleteBackward(editor) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var {\n unit = 'character'\n } = options;\n editor.deleteBackward(unit);\n },\n deleteForward(editor) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var {\n unit = 'character'\n } = options;\n editor.deleteForward(unit);\n },\n deleteFragment(editor, options) {\n editor.deleteFragment(options);\n },\n edges(editor, at) {\n return editor.edges(at);\n },\n elementReadOnly(editor) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n return editor.elementReadOnly(options);\n },\n end(editor, at) {\n return editor.end(at);\n },\n first(editor, at) {\n return editor.first(at);\n },\n fragment(editor, at) {\n return editor.fragment(at);\n },\n hasBlocks(editor, element) {\n return editor.hasBlocks(element);\n },\n hasInlines(editor, element) {\n return editor.hasInlines(element);\n },\n hasPath(editor, path) {\n return editor.hasPath(path);\n },\n hasTexts(editor, element) {\n return editor.hasTexts(element);\n },\n insertBreak(editor) {\n editor.insertBreak();\n },\n insertFragment(editor, fragment, options) {\n editor.insertFragment(fragment, options);\n },\n insertNode(editor, node) {\n editor.insertNode(node);\n },\n insertSoftBreak(editor) {\n editor.insertSoftBreak();\n },\n insertText(editor, text) {\n editor.insertText(text);\n },\n isBlock(editor, value) {\n return editor.isBlock(value);\n },\n isEdge(editor, point, at) {\n return editor.isEdge(point, at);\n },\n isEditor(value) {\n return isEditor(value);\n },\n isElementReadOnly(editor, element) {\n return editor.isElementReadOnly(element);\n },\n isEmpty(editor, element) {\n return editor.isEmpty(element);\n },\n isEnd(editor, point, at) {\n return editor.isEnd(point, at);\n },\n isInline(editor, value) {\n return editor.isInline(value);\n },\n isNormalizing(editor) {\n return editor.isNormalizing();\n },\n isSelectable(editor, value) {\n return editor.isSelectable(value);\n },\n isStart(editor, point, at) {\n return editor.isStart(point, at);\n },\n isVoid(editor, value) {\n return editor.isVoid(value);\n },\n last(editor, at) {\n return editor.last(at);\n },\n leaf(editor, at, options) {\n return editor.leaf(at, options);\n },\n levels(editor, options) {\n return editor.levels(options);\n },\n marks(editor) {\n return editor.getMarks();\n },\n next(editor, options) {\n return editor.next(options);\n },\n node(editor, at, options) {\n return editor.node(at, options);\n },\n nodes(editor, options) {\n return editor.nodes(options);\n },\n normalize(editor, options) {\n editor.normalize(options);\n },\n parent(editor, at, options) {\n return editor.parent(at, options);\n },\n path(editor, at, options) {\n return editor.path(at, options);\n },\n pathRef(editor, path, options) {\n return editor.pathRef(path, options);\n },\n pathRefs(editor) {\n return editor.pathRefs();\n },\n point(editor, at, options) {\n return editor.point(at, options);\n },\n pointRef(editor, point, options) {\n return editor.pointRef(point, options);\n },\n pointRefs(editor) {\n return editor.pointRefs();\n },\n positions(editor, options) {\n return editor.positions(options);\n },\n previous(editor, options) {\n return editor.previous(options);\n },\n range(editor, at, to) {\n return editor.range(at, to);\n },\n rangeRef(editor, range, options) {\n return editor.rangeRef(range, options);\n },\n rangeRefs(editor) {\n return editor.rangeRefs();\n },\n removeMark(editor, key) {\n editor.removeMark(key);\n },\n setNormalizing(editor, isNormalizing) {\n editor.setNormalizing(isNormalizing);\n },\n start(editor, at) {\n return editor.start(at);\n },\n string(editor, at, options) {\n return editor.string(at, options);\n },\n unhangRange(editor, range, options) {\n return editor.unhangRange(range, options);\n },\n void(editor, options) {\n return editor.void(options);\n },\n withoutNormalizing(editor, fn) {\n editor.withoutNormalizing(fn);\n },\n shouldMergeNodesRemovePrevNode: (editor, prevNode, curNode) => {\n return editor.shouldMergeNodesRemovePrevNode(prevNode, curNode);\n }\n};\n\n// eslint-disable-next-line no-redeclare\nvar Location = {\n isLocation(value) {\n return Path.isPath(value) || Point.isPoint(value) || Range.isRange(value);\n }\n};\n// eslint-disable-next-line no-redeclare\nvar Span = {\n isSpan(value) {\n return Array.isArray(value) && value.length === 2 && value.every(Path.isPath);\n }\n};\n\nfunction ownKeys$b(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }\nfunction _objectSpread$b(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$b(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$b(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }\n// eslint-disable-next-line no-redeclare\nvar Point = {\n compare(point, another) {\n var result = Path.compare(point.path, another.path);\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 return result;\n },\n isAfter(point, another) {\n return Point.compare(point, another) === 1;\n },\n isBefore(point, another) {\n return Point.compare(point, another) === -1;\n },\n equals(point, another) {\n // PERF: ensure the offsets are equal first since they are cheaper to check.\n return point.offset === another.offset && Path.equals(point.path, another.path);\n },\n isPoint(value) {\n return isPlainObject(value) && typeof value.offset === 'number' && Path.isPath(value.path);\n },\n transform(point, op) {\n var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n return produce(point, p => {\n if (p === null) {\n return null;\n }\n var {\n affinity = 'forward'\n } = options;\n var {\n path,\n offset\n } = p;\n switch (op.type) {\n case 'insert_node':\n case 'move_node':\n {\n p.path = Path.transform(path, op, options);\n break;\n }\n case 'insert_text':\n {\n if (Path.equals(op.path, path) && (op.offset < offset || op.offset === offset && affinity === 'forward')) {\n p.offset += op.text.length;\n }\n break;\n }\n case 'merge_node':\n {\n if (Path.equals(op.path, path)) {\n p.offset += op.position;\n }\n p.path = Path.transform(path, op, options);\n break;\n }\n case 'remove_text':\n {\n if (Path.equals(op.path, path) && op.offset <= offset) {\n p.offset -= Math.min(offset - op.offset, op.text.length);\n }\n break;\n }\n case 'remove_node':\n {\n if (Path.equals(op.path, path) || Path.isAncestor(op.path, path)) {\n return null;\n }\n p.path = Path.transform(path, op, options);\n break;\n }\n case 'split_node':\n {\n if (Path.equals(op.path, path)) {\n if (op.position === offset && affinity == null) {\n return null;\n } else if (op.position < offset || op.position === offset && affinity === 'forward') {\n p.offset -= op.position;\n p.path = Path.transform(path, op, _objectSpread$b(_objectSpread$b({}, options), {}, {\n affinity: 'forward'\n }));\n }\n } else {\n p.path = Path.transform(path, op, options);\n }\n break;\n }\n }\n });\n }\n};\n\nvar _scrubber = undefined;\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\nvar Scrubber = {\n setScrubber(scrubber) {\n _scrubber = scrubber;\n },\n stringify(value) {\n return JSON.stringify(value, _scrubber);\n }\n};\n\nvar _excluded$2 = [\"text\"],\n _excluded2$2 = [\"anchor\", \"focus\"];\nfunction ownKeys$a(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }\nfunction _objectSpread$a(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$a(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$a(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }\n// eslint-disable-next-line no-redeclare\nvar Text = {\n equals(text, another) {\n var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n var {\n loose = false\n } = options;\n function omitText(obj) {\n var rest = _objectWithoutProperties(obj, _excluded$2);\n return rest;\n }\n return isDeepEqual(loose ? omitText(text) : text, loose ? omitText(another) : another);\n },\n isText(value) {\n return isPlainObject(value) && typeof value.text === 'string';\n },\n isTextList(value) {\n return Array.isArray(value) && value.every(val => Text.isText(val));\n },\n isTextProps(props) {\n return props.text !== undefined;\n },\n matches(text, props) {\n for (var key in props) {\n if (key === 'text') {\n continue;\n }\n if (!text.hasOwnProperty(key) || text[key] !== props[key]) {\n return false;\n }\n }\n return true;\n },\n decorations(node, decorations) {\n var leaves = [_objectSpread$a({}, node)];\n for (var dec of decorations) {\n var rest = _objectWithoutProperties(dec, _excluded2$2);\n var [start, end] = Range.edges(dec);\n var next = [];\n var leafEnd = 0;\n var decorationStart = start.offset;\n var decorationEnd = end.offset;\n for (var leaf of leaves) {\n var {\n length\n } = leaf.text;\n var leafStart = leafEnd;\n leafEnd += length;\n // If the range encompasses the entire leaf, add the range.\n if (decorationStart <= leafStart && leafEnd <= decorationEnd) {\n Object.assign(leaf, rest);\n next.push(leaf);\n continue;\n }\n // If the range expanded and match the leaf, or starts after, or ends before it, continue.\n if (decorationStart !== decorationEnd && (decorationStart === leafEnd || decorationEnd === leafStart) || decorationStart > leafEnd || decorationEnd < leafStart || decorationEnd === leafStart && leafStart !== 0) {\n next.push(leaf);\n continue;\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 var middle = leaf;\n var before = void 0;\n var after = void 0;\n if (decorationEnd < leafEnd) {\n var off = decorationEnd - leafStart;\n after = _objectSpread$a(_objectSpread$a({}, middle), {}, {\n text: middle.text.slice(off)\n });\n middle = _objectSpread$a(_objectSpread$a({}, middle), {}, {\n text: middle.text.slice(0, off)\n });\n }\n if (decorationStart > leafStart) {\n var _off = decorationStart - leafStart;\n before = _objectSpread$a(_objectSpread$a({}, middle), {}, {\n text: middle.text.slice(0, _off)\n });\n middle = _objectSpread$a(_objectSpread$a({}, middle), {}, {\n text: middle.text.slice(_off)\n });\n }\n Object.assign(middle, rest);\n if (before) {\n next.push(before);\n }\n next.push(middle);\n if (after) {\n next.push(after);\n }\n }\n leaves = next;\n }\n return leaves;\n }\n};\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 */\nvar getDefaultInsertLocation = editor => {\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\nvar matchPath = (editor, path) => {\n var [node] = Editor.node(editor, path);\n return n => n === node;\n};\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 * Get the distance to the end of the first character in a string of text.\n */\nvar getCharacterDistance = function getCharacterDistance(str) {\n var isRTL = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n var isLTR = !isRTL;\n var codepoints = isRTL ? codepointsIteratorRTL(str) : str;\n var left = CodepointType.None;\n var right = CodepointType.None;\n var distance = 0;\n // Evaluation of these conditions are deferred.\n var gb11 = null; // Is GB11 applicable?\n var gb12Or13 = null; // Is GB12 or GB13 applicable?\n for (var char of codepoints) {\n var code = char.codePointAt(0);\n if (!code) break;\n var type = getCodepointType(char, code);\n [left, right] = isLTR ? [right, type] : [type, left];\n if (intersects(left, CodepointType.ZWJ) && intersects(right, CodepointType.ExtPict)) {\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 if (intersects(left, CodepointType.RI) && intersects(right, CodepointType.RI)) {\n if (gb12Or13 !== null) {\n gb12Or13 = !gb12Or13;\n } else {\n if (isLTR) {\n gb12Or13 = true;\n } else {\n gb12Or13 = endsWithOddNumberOfRIs(str.substring(0, str.length - distance));\n }\n }\n if (!gb12Or13) break;\n }\n if (left !== CodepointType.None && right !== CodepointType.None && isBoundaryPair(left, right)) {\n break;\n }\n distance += char.length;\n }\n return distance || 1;\n};\nvar SPACE = /\\s/;\nvar PUNCTUATION = /[\\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]/;\nvar CHAMELEON = /['\\u2018\\u2019]/;\n/**\n * Get the distance to the end of the first word in a string of text.\n */\nvar getWordDistance = function getWordDistance(text) {\n var isRTL = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n var dist = 0;\n var started = false;\n while (text.length > 0) {\n var charDist = getCharacterDistance(text, isRTL);\n var [char, remaining] = splitByCharacterDistance(text, charDist, isRTL);\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 text = remaining;\n }\n return dist;\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 */\nvar splitByCharacterDistance = (str, dist, isRTL) => {\n if (isRTL) {\n var at = str.length - dist;\n return [str.slice(at, str.length), str.slice(0, at)];\n }\n return [str.slice(0, dist), str.slice(dist)];\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 */\nvar isWordCharacter = function isWordCharacter(char, remaining) {\n var isRTL = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n if (SPACE.test(char)) {\n return false;\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 var charDist = getCharacterDistance(remaining, isRTL);\n var [nextChar, nextRemaining] = splitByCharacterDistance(remaining, charDist, isRTL);\n if (isWordCharacter(nextChar, nextRemaining, isRTL)) {\n return true;\n }\n }\n if (PUNCTUATION.test(char)) {\n return false;\n }\n return true;\n};\n/**\n * Iterate on codepoints from right to left.\n */\nvar codepointsIteratorRTL = function* codepointsIteratorRTL(str) {\n var end = str.length - 1;\n for (var i = 0; i < str.length; i++) {\n var char1 = str.charAt(end - i);\n if (isLowSurrogate(char1.charCodeAt(0))) {\n var char2 = str.charAt(end - i - 1);\n if (isHighSurrogate(char2.charCodeAt(0))) {\n yield char2 + char1;\n i++;\n continue;\n }\n }\n yield char1;\n }\n};\n/**\n * Is `charCode` a high surrogate.\n *\n * https://en.wikipedia.org/wiki/Universal_Character_Set_characters#Surrogates\n */\nvar isHighSurrogate = charCode => {\n return charCode >= 0xd800 && charCode <= 0xdbff;\n};\n/**\n * Is `charCode` a low surrogate.\n *\n * https://en.wikipedia.org/wiki/Universal_Character_Set_characters#Surrogates\n */\nvar isLowSurrogate = charCode => {\n return charCode >= 0xdc00 && charCode <= 0xdfff;\n};\nvar CodepointType;\n(function (CodepointType) {\n CodepointType[CodepointType[\"None\"] = 0] = \"None\";\n CodepointType[CodepointType[\"Extend\"] = 1] = \"Extend\";\n CodepointType[CodepointType[\"ZWJ\"] = 2] = \"ZWJ\";\n CodepointType[CodepointType[\"RI\"] = 4] = \"RI\";\n CodepointType[CodepointType[\"Prepend\"] = 8] = \"Prepend\";\n CodepointType[CodepointType[\"SpacingMark\"] = 16] = \"SpacingMark\";\n CodepointType[CodepointType[\"L\"] = 32] = \"L\";\n CodepointType[CodepointType[\"V\"] = 64] = \"V\";\n CodepointType[CodepointType[\"T\"] = 128] = \"T\";\n CodepointType[CodepointType[\"LV\"] = 256] = \"LV\";\n CodepointType[CodepointType[\"LVT\"] = 512] = \"LVT\";\n CodepointType[CodepointType[\"ExtPict\"] = 1024] = \"ExtPict\";\n CodepointType[CodepointType[\"Any\"] = 2048] = \"Any\";\n})(CodepointType || (CodepointType = {}));\nvar reExtend = /^(?:[\\u0300-\\u036F\\u0483-\\u0489\\u0591-\\u05BD\\u05BF\\u05C1\\u05C2\\u05C4\\u05C5\\u05C7\\u0610-\\u061A\\u064B-\\u065F\\u0670\\u06D6-\\u06DC\\u06DF-\\u06E4\\u06E7\\u06E8\\u06EA-\\u06ED\\u0711\\u0730-\\u074A\\u07A6-\\u07B0\\u07EB-\\u07F3\\u07FD\\u0816-\\u0819\\u081B-\\u0823\\u0825-\\u0827\\u0829-\\u082D\\u0859-\\u085B\\u0898-\\u089F\\u08CA-\\u08E1\\u08E3-\\u0902\\u093A\\u093C\\u0941-\\u0948\\u094D\\u0951-\\u0957\\u0962\\u0963\\u0981\\u09BC\\u09BE\\u09C1-\\u09C4\\u09CD\\u09D7\\u09E2\\u09E3\\u09FE\\u0A01\\u0A02\\u0A3C\\u0A41\\u0A42\\u0A47\\u0A48\\u0A4B-\\u0A4D\\u0A51\\u0A70\\u0A71\\u0A75\\u0A81\\u0A82\\u0ABC\\u0AC1-\\u0AC5\\u0AC7\\u0AC8\\u0ACD\\u0AE2\\u0AE3\\u0AFA-\\u0AFF\\u0B01\\u0B3C\\u0B3E\\u0B3F\\u0B41-\\u0B44\\u0B4D\\u0B55-\\u0B57\\u0B62\\u0B63\\u0B82\\u0BBE\\u0BC0\\u0BCD\\u0BD7\\u0C00\\u0C04\\u0C3C\\u0C3E-\\u0C40\\u0C46-\\u0C48\\u0C4A-\\u0C4D\\u0C55\\u0C56\\u0C62\\u0C63\\u0C81\\u0CBC\\u0CBF\\u0CC2\\u0CC6\\u0CCC\\u0CCD\\u0CD5\\u0CD6\\u0CE2\\u0CE3\\u0D00\\u0D01\\u0D3B\\u0D3C\\u0D3E\\u0D41-\\u0D44\\u0D4D\\u0D57\\u0D62\\u0D63\\u0D81\\u0DCA\\u0DCF\\u0DD2-\\u0DD4\\u0DD6\\u0DDF\\u0E31\\u0E34-\\u0E3A\\u0E47-\\u0E4E\\u0EB1\\u0EB4-\\u0EBC\\u0EC8-\\u0ECE\\u0F18\\u0F19\\u0F35\\u0F37\\u0F39\\u0F71-\\u0F7E\\u0F80-\\u0F84\\u0F86\\u0F87\\u0F8D-\\u0F97\\u0F99-\\u0FBC\\u0FC6\\u102D-\\u1030\\u1032-\\u1037\\u1039\\u103A\\u103D\\u103E\\u1058\\u1059\\u105E-\\u1060\\u1071-\\u1074\\u1082\\u1085\\u1086\\u108D\\u109D\\u135D-\\u135F\\u1712-\\u1714\\u1732\\u1733\\u1752\\u1753\\u1772\\u1773\\u17B4\\u17B5\\u17B7-\\u17BD\\u17C6\\u17C9-\\u17D3\\u17DD\\u180B-\\u180D\\u180F\\u1885\\u1886\\u18A9\\u1920-\\u1922\\u1927\\u1928\\u1932\\u1939-\\u193B\\u1A17\\u1A18\\u1A1B\\u1A56\\u1A58-\\u1A5E\\u1A60\\u1A62\\u1A65-\\u1A6C\\u1A73-\\u1A7C\\u1A7F\\u1AB0-\\u1ACE\\u1B00-\\u1B03\\u1B34-\\u1B3A\\u1B3C\\u1B42\\u1B6B-\\u1B73\\u1B80\\u1B81\\u1BA2-\\u1BA5\\u1BA8\\u1BA9\\u1BAB-\\u1BAD\\u1BE6\\u1BE8\\u1BE9\\u1BED\\u1BEF-\\u1BF1\\u1C2C-\\u1C33\\u1C36\\u1C37\\u1CD0-\\u1CD2\\u1CD4-\\u1CE0\\u1CE2-\\u1CE8\\u1CED\\u1CF4\\u1CF8\\u1CF9\\u1DC0-\\u1DFF\\u200C\\u20D0-\\u20F0\\u2CEF-\\u2CF1\\u2D7F\\u2DE0-\\u2DFF\\u302A-\\u302F\\u3099\\u309A\\uA66F-\\uA672\\uA674-\\uA67D\\uA69E\\uA69F\\uA6F0\\uA6F1\\uA802\\uA806\\uA80B\\uA825\\uA826\\uA82C\\uA8C4\\uA8C5\\uA8E0-\\uA8F1\\uA8FF\\uA926-\\uA92D\\uA947-\\uA951\\uA980-\\uA982\\uA9B3\\uA9B6-\\uA9B9\\uA9BC\\uA9BD\\uA9E5\\uAA29-\\uAA2E\\uAA31\\uAA32\\uAA35\\uAA36\\uAA43\\uAA4C\\uAA7C\\uAAB0\\uAAB2-\\uAAB4\\uAAB7\\uAAB8\\uAABE\\uAABF\\uAAC1\\uAAEC\\uAAED\\uAAF6\\uABE5\\uABE8\\uABED\\uFB1E\\uFE00-\\uFE0F\\uFE20-\\uFE2F\\uFF9E\\uFF9F]|\\uD800[\\uDDFD\\uDEE0\\uDF76-\\uDF7A]|\\uD802[\\uDE01-\\uDE03\\uDE05\\uDE06\\uDE0C-\\uDE0F\\uDE38-\\uDE3A\\uDE3F\\uDEE5\\uDEE6]|\\uD803[\\uDD24-\\uDD27\\uDEAB\\uDEAC\\uDEFD-\\uDEFF\\uDF46-\\uDF50\\uDF82-\\uDF85]|\\uD804[\\uDC01\\uDC38-\\uDC46\\uDC70\\uDC73\\uDC74\\uDC7F-\\uDC81\\uDCB3-\\uDCB6\\uDCB9\\uDCBA\\uDCC2\\uDD00-\\uDD02\\uDD27-\\uDD2B\\uDD2D-\\uDD34\\uDD73\\uDD80\\uDD81\\uDDB6-\\uDDBE\\uDDC9-\\uDDCC\\uDDCF\\uDE2F-\\uDE31\\uDE34\\uDE36\\uDE37\\uDE3E\\uDE41\\uDEDF\\uDEE3-\\uDEEA\\uDF00\\uDF01\\uDF3B\\uDF3C\\uDF3E\\uDF40\\uDF57\\uDF66-\\uDF6C\\uDF70-\\uDF74]|\\uD805[\\uDC38-\\uDC3F\\uDC42-\\uDC44\\uDC46\\uDC5E\\uDCB0\\uDCB3-\\uDCB8\\uDCBA\\uDCBD\\uDCBF\\uDCC0\\uDCC2\\uDCC3\\uDDAF\\uDDB2-\\uDDB5\\uDDBC\\uDDBD\\uDDBF\\uDDC0\\uDDDC\\uDDDD\\uDE33-\\uDE3A\\uDE3D\\uDE3F\\uDE40\\uDEAB\\uDEAD\\uDEB0-\\uDEB5\\uDEB7\\uDF1D-\\uDF1F\\uDF22-\\uDF25\\uDF27-\\uDF2B]|\\uD806[\\uDC2F-\\uDC37\\uDC39\\uDC3A\\uDD30\\uDD3B\\uDD3C\\uDD3E\\uDD43\\uDDD4-\\uDDD7\\uDDDA\\uDDDB\\uDDE0\\uDE01-\\uDE0A\\uDE33-\\uDE38\\uDE3B-\\uDE3E\\uDE47\\uDE51-\\uDE56\\uDE59-\\uDE5B\\uDE8A-\\uDE96\\uDE98\\uDE99]|\\uD807[\\uDC30-\\uDC36\\uDC38-\\uDC3D\\uDC3F\\uDC92-\\uDCA7\\uDCAA-\\uDCB0\\uDCB2\\uDCB3\\uDCB5\\uDCB6\\uDD31-\\uDD36\\uDD3A\\uDD3C\\uDD3D\\uDD3F-\\uDD45\\uDD47\\uDD90\\uDD91\\uDD95\\uDD97\\uDEF3\\uDEF4\\uDF00\\uDF01\\uDF36-\\uDF3A\\uDF40\\uDF42]|\\uD80D[\\uDC40\\uDC47-\\uDC55]|\\uD81A[\\uDEF0-\\uDEF4\\uDF30-\\uDF36]|\\uD81B[\\uDF4F\\uDF8F-\\uDF92\\uDFE4]|\\uD82F[\\uDC9D\\uDC9E]|\\uD833[\\uDF00-\\uDF2D\\uDF30-\\uDF46]|\\uD834[\\uDD65\\uDD67-\\uDD69\\uDD6E-\\uDD72\\uDD7B-\\uDD82\\uDD85-\\uDD8B\\uDDAA-\\uDDAD\\uDE42-\\uDE44]|\\uD836[\\uDE00-\\uDE36\\uDE3B-\\uDE6C\\uDE75\\uDE84\\uDE9B-\\uDE9F\\uDEA1-\\uDEAF]|\\uD838[\\uDC00-\\uDC06\\uDC08-\\uDC18\\uDC1B-\\uDC21\\uDC23\\uDC24\\uDC26-\\uDC2A\\uDC8F\\uDD30-\\uDD36\\uDEAE\\uDEEC-\\uDEEF]|\\uD839[\\uDCEC-\\uDCEF]|\\uD83A[\\uDCD0-\\uDCD6\\uDD44-\\uDD4A]|\\uD83C[\\uDFFB-\\uDFFF]|\\uDB40[\\uDC20-\\uDC7F\\uDD00-\\uDDEF])$/;\nvar rePrepend = /^(?:[\\u0600-\\u0605\\u06DD\\u070F\\u0890\\u0891\\u08E2\\u0D4E]|\\uD804[\\uDCBD\\uDCCD\\uDDC2\\uDDC3]|\\uD806[\\uDD3F\\uDD41\\uDE3A\\uDE84-\\uDE89]|\\uD807\\uDD46)$/;\nvar reSpacingMark = /^(?:[\\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]|\\uD804[\\uDC00\\uDC02\\uDC82\\uDCB0-\\uDCB2\\uDCB7\\uDCB8\\uDD2C\\uDD45\\uDD46\\uDD82\\uDDB3-\\uDDB5\\uDDBF\\uDDC0\\uDDCE\\uDE2C-\\uDE2E\\uDE32\\uDE33\\uDE35\\uDEE0-\\uDEE2\\uDF02\\uDF03\\uDF3F\\uDF41-\\uDF44\\uDF47\\uDF48\\uDF4B-\\uDF4D\\uDF62\\uDF63]|\\uD805[\\uDC35-\\uDC37\\uDC40\\uDC41\\uDC45\\uDCB1\\uDCB2\\uDCB9\\uDCBB\\uDCBC\\uDCBE\\uDCC1\\uDDB0\\uDDB1\\uDDB8-\\uDDBB\\uDDBE\\uDE30-\\uDE32\\uDE3B\\uDE3C\\uDE3E\\uDEAC\\uDEAE\\uDEAF\\uDEB6\\uDF26]|\\uD806[\\uDC2C-\\uDC2E\\uDC38\\uDD31-\\uDD35\\uDD37\\uDD38\\uDD3D\\uDD40\\uDD42\\uDDD1-\\uDDD3\\uDDDC-\\uDDDF\\uDDE4\\uDE39\\uDE57\\uDE58\\uDE97]|\\uD807[\\uDC2F\\uDC3E\\uDCA9\\uDCB1\\uDCB4\\uDD8A-\\uDD8E\\uDD93\\uDD94\\uDD96\\uDEF5\\uDEF6]|\\uD81B[\\uDF51-\\uDF87\\uDFF0\\uDFF1]|\\uD834[\\uDD66\\uDD6D])$/;\nvar reL = /^[\\u1100-\\u115F\\uA960-\\uA97C]$/;\nvar reV = /^[\\u1160-\\u11A7\\uD7B0-\\uD7C6]$/;\nvar reT = /^[\\u11A8-\\u11FF\\uD7CB-\\uD7FB]$/;\nvar reLV = /^[\\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]$/;\nvar reLVT = /^[\\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]$/;\nvar reExtPict = /^(?:[\\xA9\\xAE\\u203C\\u2049\\u2122\\u2139\\u2194-\\u2199\\u21A9\\u21AA\\u231A\\u231B\\u2328\\u2388\\u23CF\\u23E9-\\u23F3\\u23F8-\\u23FA\\u24C2\\u25AA\\u25AB\\u25B6\\u25C0\\u25FB-\\u25FE\\u2600-\\u2605\\u2607-\\u2612\\u2614-\\u2685\\u2690-\\u2705\\u2708-\\u2712\\u2714\\u2716\\u271D\\u2721\\u2728\\u2733\\u2734\\u2744\\u2747\\u274C\\u274E\\u2753-\\u2755\\u2757\\u2763-\\u2767\\u2795-\\u2797\\u27A1\\u27B0\\u27BF\\u2934\\u2935\\u2B05-\\u2B07\\u2B1B\\u2B1C\\u2B50\\u2B55\\u3030\\u303D\\u3297\\u3299]|\\uD83C[\\uDC00-\\uDCFF\\uDD0D-\\uDD0F\\uDD2F\\uDD6C-\\uDD71\\uDD7E\\uDD7F\\uDD8E\\uDD91-\\uDD9A\\uDDAD-\\uDDE5\\uDE01-\\uDE0F\\uDE1A\\uDE2F\\uDE32-\\uDE3A\\uDE3C-\\uDE3F\\uDE49-\\uDFFA]|\\uD83D[\\uDC00-\\uDD3D\\uDD46-\\uDE4F\\uDE80-\\uDEFF\\uDF74-\\uDF7F\\uDFD5-\\uDFFF]|\\uD83E[\\uDC0C-\\uDC0F\\uDC48-\\uDC4F\\uDC5A-\\uDC5F\\uDC88-\\uDC8F\\uDCAE-\\uDCFF\\uDD0C-\\uDD3A\\uDD3C-\\uDD45\\uDD47-\\uDEFF]|\\uD83F[\\uDC00-\\uDFFD])$/;\nvar getCodepointType = (char, code) => {\n var 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 return type;\n};\nfunction intersects(x, y) {\n return (x & y) !== 0;\n}\nvar NonBoundaryPairs = [\n// GB6\n[CodepointType.L, CodepointType.L | CodepointType.V | CodepointType.LV | CodepointType.LVT],\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]];\nfunction isBoundaryPair(left, right) {\n return NonBoundaryPairs.findIndex(r => intersects(left, r[0]) && intersects(right, r[1])) === -1;\n}\nvar endingEmojiZWJ = /(?:[\\xA9\\xAE\\u203C\\u2049\\u2122\\u2139\\u2194-\\u2199\\u21A9\\u21AA\\u231A\\u231B\\u2328\\u2388\\u23CF\\u23E9-\\u23F3\\u23F8-\\u23FA\\u24C2\\u25AA\\u25AB\\u25B6\\u25C0\\u25FB-\\u25FE\\u2600-\\u2605\\u2607-\\u2612\\u2614-\\u2685\\u2690-\\u2705\\u2708-\\u2712\\u2714\\u2716\\u271D\\u2721\\u2728\\u2733\\u2734\\u2744\\u2747\\u274C\\u274E\\u2753-\\u2755\\u2757\\u2763-\\u2767\\u2795-\\u2797\\u27A1\\u27B0\\u27BF\\u2934\\u2935\\u2B05-\\u2B07\\u2B1B\\u2B1C\\u2B50\\u2B55\\u3030\\u303D\\u3297\\u3299]|\\uD83C[\\uDC00-\\uDCFF\\uDD0D-\\uDD0F\\uDD2F\\uDD6C-\\uDD71\\uDD7E\\uDD7F\\uDD8E\\uDD91-\\uDD9A\\uDDAD-\\uDDE5\\uDE01-\\uDE0F\\uDE1A\\uDE2F\\uDE32-\\uDE3A\\uDE3C-\\uDE3F\\uDE49-\\uDFFA]|\\uD83D[\\uDC00-\\uDD3D\\uDD46-\\uDE4F\\uDE80-\\uDEFF\\uDF74-\\uDF7F\\uDFD5-\\uDFFF]|\\uD83E[\\uDC0C-\\uDC0F\\uDC48-\\uDC4F\\uDC5A-\\uDC5F\\uDC88-\\uDC8F\\uDCAE-\\uDCFF\\uDD0C-\\uDD3A\\uDD3C-\\uDD45\\uDD47-\\uDEFF]|\\uD83F[\\uDC00-\\uDFFD])(?:[\\u0300-\\u036F\\u0483-\\u0489\\u0591-\\u05BD\\u05BF\\u05C1\\u05C2\\u05C4\\u05C5\\u05C7\\u0610-\\u061A\\u064B-\\u065F\\u0670\\u06D6-\\u06DC\\u06DF-\\u06E4\\u06E7\\u06E8\\u06EA-\\u06ED\\u0711\\u0730-\\u074A\\u07A6-\\u07B0\\u07EB-\\u07F3\\u07FD\\u0816-\\u0819\\u081B-\\u0823\\u0825-\\u0827\\u0829-\\u082D\\u0859-\\u085B\\u0898-\\u089F\\u08CA-\\u08E1\\u08E3-\\u0902\\u093A\\u093C\\u0941-\\u0948\\u094D\\u0951-\\u0957\\u0962\\u0963\\u0981\\u09BC\\u09BE\\u09C1-\\u09C4\\u09CD\\u09D7\\u09E2\\u09E3\\u09FE\\u0A01\\u0A02\\u0A3C\\u0A41\\u0A42\\u0A47\\u0A48\\u0A4B-\\u0A4D\\u0A51\\u0A70\\u0A71\\u0A75\\u0A81\\u0A82\\u0ABC\\u0AC1-\\u0AC5\\u0AC7\\u0AC8\\u0ACD\\u0AE2\\u0AE3\\u0AFA-\\u0AFF\\u0B01\\u0B3C\\u0B3E\\u0B3F\\u0B41-\\u0B44\\u0B4D\\u0B55-\\u0B57\\u0B62\\u0B63\\u0B82\\u0BBE\\u0BC0\\u0BCD\\u0BD7\\u0C00\\u0C04\\u0C3C\\u0C3E-\\u0C40\\u0C46-\\u0C48\\u0C4A-\\u0C4D\\u0C55\\u0C56\\u0C62\\u0C63\\u0C81\\u0CBC\\u0CBF\\u0CC2\\u0CC6\\u0CCC\\u0CCD\\u0CD5\\u0CD6\\u0CE2\\u0CE3\\u0D00\\u0D01\\u0D3B\\u0D3C\\u0D3E\\u0D41-\\u0D44\\u0D4D\\u0D57\\u0D62\\u0D63\\u0D81\\u0DCA\\u0DCF\\u0DD2-\\u0DD4\\u0DD6\\u0DDF\\u0E31\\u0E34-\\u0E3A\\u0E47-\\u0E4E\\u0EB1\\u0EB4-\\u0EBC\\u0EC8-\\u0ECE\\u0F18\\u0F19\\u0F35\\u0F37\\u0F39\\u0F71-\\u0F7E\\u0F80-\\u0F84\\u0F86\\u0F87\\u0F8D-\\u0F97\\u0F99-\\u0FBC\\u0FC6\\u102D-\\u1030\\u1032-\\u1037\\u1039\\u103A\\u103D\\u103E\\u1058\\u1059\\u105E-\\u1060\\u1071-\\u1074\\u1082\\u1085\\u1086\\u108D\\u109D\\u135D-\\u135F\\u1712-\\u1714\\u1732\\u1733\\u1752\\u1753\\u1772\\u1773\\u17B4\\u17B5\\u17B7-\\u17BD\\u17C6\\u17C9-\\u17D3\\u17DD\\u180B-\\u180D\\u180F\\u1885\\u1886\\u18A9\\u1920-\\u1922\\u1927\\u1928\\u1932\\u1939-\\u193B\\u1A17\\u1A18\\u1A1B\\u1A56\\u1A58-\\u1A5E\\u1A60\\u1A62\\u1A65-\\u1A6C\\u1A73-\\u1A7C\\u1A7F\\u1AB0-\\u1ACE\\u1B00-\\u1B03\\u1B34-\\u1B3A\\u1B3C\\u1B42\\u1B6B-\\u1B73\\u1B80\\u1B81\\u1BA2-\\u1BA5\\u1BA8\\u1BA9\\u1BAB-\\u1BAD\\u1BE6\\u1BE8\\u1BE9\\u1BED\\u1BEF-\\u1BF1\\u1C2C-\\u1C33\\u1C36\\u1C37\\u1CD0-\\u1CD2\\u1CD4-\\u1CE0\\u1CE2-\\u1CE8\\u1CED\\u1CF4\\u1CF8\\u1CF9\\u1DC0-\\u1DFF\\u200C\\u20D0-\\u20F0\\u2CEF-\\u2CF1\\u2D7F\\u2DE0-\\u2DFF\\u302A-\\u302F\\u3099\\u309A\\uA66F-\\uA672\\uA674-\\uA67D\\uA69E\\uA69F\\uA6F0\\uA6F1\\uA802\\uA806\\uA80B\\uA825\\uA826\\uA82C\\uA8C4\\uA8C5\\uA8E0-\\uA8F1\\uA8FF\\uA926-\\uA92D\\uA947-\\uA951\\uA980-\\uA982\\uA9B3\\uA9B6-\\uA9B9\\uA9BC\\uA9BD\\uA9E5\\uAA29-\\uAA2E\\uAA31\\uAA32\\uAA35\\uAA36\\uAA43\\uAA4C\\uAA7C\\uAAB0\\uAAB2-\\uAAB4\\uAAB7\\uAAB8\\uAABE\\uAABF\\uAAC1\\uAAEC\\uAAED\\uAAF6\\uABE5\\uABE8\\uABED\\uFB1E\\uFE00-\\uFE0F\\uFE20-\\uFE2F\\uFF9E\\uFF9F]|\\uD800[\\uDDFD\\uDEE0\\uDF76-\\uDF7A]|\\uD802[\\uDE01-\\uDE03\\uDE05\\uDE06\\uDE0C-\\uDE0F\\uDE38-\\uDE3A\\uDE3F\\uDEE5\\uDEE6]|\\uD803[\\uDD24-\\uDD27\\uDEAB\\uDEAC\\uDEFD-\\uDEFF\\uDF46-\\uDF50\\uDF82-\\uDF85]|\\uD804[\\uDC01\\uDC38-\\uDC46\\uDC70\\uDC73\\uDC74\\uDC7F-\\uDC81\\uDCB3-\\uDCB6\\uDCB9\\uDCBA\\uDCC2\\uDD00-\\uDD02\\uDD27-\\uDD2B\\uDD2D-\\uDD34\\uDD73\\uDD80\\uDD81\\uDDB6-\\uDDBE\\uDDC9-\\uDDCC\\uDDCF\\uDE2F-\\uDE31\\uDE34\\uDE36\\uDE37\\uDE3E\\uDE41\\uDEDF\\uDEE3-\\uDEEA\\uDF00\\uDF01\\uDF3B\\uDF3C\\uDF3E\\uDF40\\uDF57\\uDF66-\\uDF6C\\uDF70-\\uDF74]|\\uD805[\\uDC38-\\uDC3F\\uDC42-\\uDC44\\uDC46\\uDC5E\\uDCB0\\uDCB3-\\uDCB8\\uDCBA\\uDCBD\\uDCBF\\uDCC0\\uDCC2\\uDCC3\\uDDAF\\uDDB2-\\uDDB5\\uDDBC\\uDDBD\\uDDBF\\uDDC0\\uDDDC\\uDDDD\\uDE33-\\uDE3A\\uDE3D\\uDE3F\\uDE40\\uDEAB\\uDEAD\\uDEB0-\\uDEB5\\uDEB7\\uDF1D-\\uDF1F\\uDF22-\\uDF25\\uDF27-\\uDF2B]|\\uD806[\\uDC2F-\\uDC37\\uDC39\\uDC3A\\uDD30\\uDD3B\\uDD3C\\uDD3E\\uDD43\\uDDD4-\\uDDD7\\uDDDA\\uDDDB\\uDDE0\\uDE01-\\uDE0A\\uDE33-\\uDE38\\uDE3B-\\uDE3E\\uDE47\\uDE51-\\uDE56\\uDE59-\\uDE5B\\uDE8A-\\uDE96\\uDE98\\uDE99]|\\uD807[\\uDC30-\\uDC36\\uDC38-\\uDC3D\\uDC3F\\uDC92-\\uDCA7\\uDCAA-\\uDCB0\\uDCB2\\uDCB3\\uDCB5\\uDCB6\\uDD31-\\uDD36\\uDD3A\\uDD3C\\uDD3D\\uDD3F-\\uDD45\\uDD47\\uDD90\\uDD91\\uDD95\\uDD97\\uDEF3\\uDEF4\\uDF00\\uDF01\\uDF36-\\uDF3A\\uDF40\\uDF42]|\\uD80D[\\uDC40\\uDC47-\\uDC55]|\\uD81A[\\uDEF0-\\uDEF4\\uDF30-\\uDF36]|\\uD81B[\\uDF4F\\uDF8F-\\uDF92\\uDFE4]|\\uD82F[\\uDC9D\\uDC9E]|\\uD833[\\uDF00-\\uDF2D\\uDF30-\\uDF46]|\\uD834[\\uDD65\\uDD67-\\uDD69\\uDD6E-\\uDD72\\uDD7B-\\uDD82\\uDD85-\\uDD8B\\uDDAA-\\uDDAD\\uDE42-\\uDE44]|\\uD836[\\uDE00-\\uDE36\\uDE3B-\\uDE6C\\uDE75\\uDE84\\uDE9B-\\uDE9F\\uDEA1-\\uDEAF]|\\uD838[\\uDC00-\\uDC06\\uDC08-\\uDC18\\uDC1B-\\uDC21\\uDC23\\uDC24\\uDC26-\\uDC2A\\uDC8F\\uDD30-\\uDD36\\uDEAE\\uDEEC-\\uDEEF]|\\uD839[\\uDCEC-\\uDCEF]|\\uD83A[\\uDCD0-\\uDCD6\\uDD44-\\uDD4A]|\\uD83C[\\uDFFB-\\uDFFF]|\\uDB40[\\uDC20-\\uDC7F\\uDD00-\\uDDEF])*\\u200D$/;\nvar endsWithEmojiZWJ = str => {\n return str.search(endingEmojiZWJ) !== -1;\n};\nvar endingRIs = /(?:\\uD83C[\\uDDE6-\\uDDFF])+$/g;\nvar endsWithOddNumberOfRIs = str => {\n var match = str.match(endingRIs);\n if (match === null) {\n return false;\n } else {\n // A RI is represented by a surrogate pair.\n var numRIs = match[0].length / 2;\n return numRIs % 2 === 1;\n }\n};\n\n// eslint-disable-next-line no-redeclare\nvar TextTransforms = {\n delete(editor, options) {\n editor.delete(options);\n },\n insertFragment(editor, fragment, options) {\n editor.insertFragment(fragment, options);\n },\n insertText(editor, text) {\n var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n Editor.withoutNormalizing(editor, () => {\n var {\n voids = false\n } = options;\n var {\n at = getDefaultInsertLocation(editor)\n } = options;\n if (Path.isPath(at)) {\n at = Editor.range(editor, at);\n }\n if (Range.isRange(at)) {\n if (Range.isCollapsed(at)) {\n at = at.anchor;\n } else {\n var end = Range.end(at);\n if (!voids && Editor.void(editor, {\n at: end\n })) {\n return;\n }\n var start = Range.start(at);\n var startRef = Editor.pointRef(editor, start);\n var endRef = Editor.pointRef(editor, end);\n Transforms.delete(editor, {\n at,\n voids\n });\n var startPoint = startRef.unref();\n var endPoint = endRef.unref();\n at = startPoint || endPoint;\n Transforms.setSelection(editor, {\n anchor: at,\n focus: at\n });\n }\n }\n if (!voids && Editor.void(editor, {\n at\n }) || Editor.elementReadOnly(editor, {\n at\n })) {\n return;\n }\n var {\n path,\n offset\n } = at;\n if (text.length > 0) editor.apply({\n type: 'insert_text',\n path,\n offset,\n text\n });\n });\n }\n};\n\nfunction ownKeys$9(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }\nfunction _objectSpread$9(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$9(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$9(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }\nvar Transforms = _objectSpread$9(_objectSpread$9(_objectSpread$9(_objectSpread$9({}, GeneralTransforms), NodeTransforms), SelectionTransforms), TextTransforms);\n\n// perf\nvar BATCHING_DIRTY_PATHS = new WeakMap();\nvar isBatchingDirtyPaths = editor => {\n return BATCHING_DIRTY_PATHS.get(editor) || false;\n};\nvar batchDirtyPaths = (editor, fn, update) => {\n var 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\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 */\nfunction updateDirtyPaths(editor, newDirtyPaths, transform) {\n var oldDirtyPaths = DIRTY_PATHS.get(editor) || [];\n var oldDirtyPathKeys = DIRTY_PATH_KEYS.get(editor) || new Set();\n var dirtyPaths;\n var dirtyPathKeys;\n var add = path => {\n if (path) {\n var key = path.join(',');\n if (!dirtyPathKeys.has(key)) {\n dirtyPathKeys.add(key);\n dirtyPaths.push(path);\n }\n }\n };\n if (transform) {\n dirtyPaths = [];\n dirtyPathKeys = new Set();\n for (var path of oldDirtyPaths) {\n var newPath = transform(path);\n add(newPath);\n }\n } else {\n dirtyPaths = oldDirtyPaths;\n dirtyPathKeys = oldDirtyPathKeys;\n }\n for (var _path of newDirtyPaths) {\n add(_path);\n }\n DIRTY_PATHS.set(editor, dirtyPaths);\n DIRTY_PATH_KEYS.set(editor, dirtyPathKeys);\n}\n\nvar apply = (editor, op) => {\n for (var ref of Editor.pathRefs(editor)) {\n PathRef.transform(ref, op);\n }\n for (var _ref of Editor.pointRefs(editor)) {\n PointRef.transform(_ref, op);\n }\n for (var _ref2 of Editor.rangeRefs(editor)) {\n RangeRef.transform(_ref2, op);\n }\n // update dirty paths\n if (!isBatchingDirtyPaths(editor)) {\n var transform = Path.operationCanTransformPath(op) ? p => Path.transform(p, op) : undefined;\n updateDirtyPaths(editor, editor.getDirtyPaths(op), transform);\n }\n Transforms.transform(editor, op);\n editor.operations.push(op);\n Editor.normalize(editor, {\n operation: op\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 if (!FLUSHING.get(editor)) {\n FLUSHING.set(editor, true);\n Promise.resolve().then(() => {\n FLUSHING.set(editor, false);\n editor.onChange({\n operation: op\n });\n editor.operations = [];\n });\n }\n};\n\n/**\n * Get the \"dirty\" paths generated from an operation.\n */\nvar getDirtyPaths = (editor, op) => {\n switch (op.type) {\n case 'insert_text':\n case 'remove_text':\n case 'set_node':\n {\n var {\n path\n } = op;\n return Path.levels(path);\n }\n case 'insert_node':\n {\n var {\n node,\n path: _path\n } = op;\n var levels = Path.levels(_path);\n var descendants = Text.isText(node) ? [] : Array.from(Node.nodes(node), _ref => {\n var [, p] = _ref;\n return _path.concat(p);\n });\n return [...levels, ...descendants];\n }\n case 'merge_node':\n {\n var {\n path: _path2\n } = op;\n var ancestors = Path.ancestors(_path2);\n var previousPath = Path.previous(_path2);\n return [...ancestors, previousPath];\n }\n case 'move_node':\n {\n var {\n path: _path3,\n newPath\n } = op;\n if (Path.equals(_path3, newPath)) {\n return [];\n }\n var oldAncestors = [];\n var newAncestors = [];\n for (var ancestor of Path.ancestors(_path3)) {\n var p = Path.transform(ancestor, op);\n oldAncestors.push(p);\n }\n for (var _ancestor of Path.ancestors(newPath)) {\n var _p = Path.transform(_ancestor, op);\n newAncestors.push(_p);\n }\n var newParent = newAncestors[newAncestors.length - 1];\n var newIndex = newPath[newPath.length - 1];\n var resultPath = newParent.concat(newIndex);\n return [...oldAncestors, ...newAncestors, resultPath];\n }\n case 'remove_node':\n {\n var {\n path: _path4\n } = op;\n var _ancestors = Path.ancestors(_path4);\n return [..._ancestors];\n }\n case 'split_node':\n {\n var {\n path: _path5\n } = op;\n var _levels = Path.levels(_path5);\n var nextPath = Path.next(_path5);\n return [..._levels, nextPath];\n }\n default:\n {\n return [];\n }\n }\n};\n\nvar getFragment = editor => {\n var {\n selection\n } = editor;\n if (selection) {\n return Node.fragment(editor, selection);\n }\n return [];\n};\n\nvar normalizeNode = (editor, entry) => {\n var [node, path] = entry;\n // There are no core normalizations for text nodes.\n if (Text.isText(node)) {\n return;\n }\n // Ensure that block and inline nodes have at least one text child.\n if (Element.isElement(node) && node.children.length === 0) {\n var child = {\n text: ''\n };\n Transforms.insertNodes(editor, child, {\n at: path.concat(0),\n voids: true\n });\n return;\n }\n // Determine whether the node should have block or inline children.\n var shouldHaveInlines = Editor.isEditor(node) ? false : Element.isElement(node) && (editor.isInline(node) || node.children.length === 0 || Text.isText(node.children[0]) || editor.isInline(node.children[0]));\n // Since we'll be applying operations while iterating, keep track of an\n // index that accounts for any added/removed nodes.\n var n = 0;\n for (var i = 0; i < node.children.length; i++, n++) {\n var currentNode = Node.get(editor, path);\n if (Text.isText(currentNode)) continue;\n var _child = currentNode.children[n];\n var prev = currentNode.children[n - 1];\n var isLast = i === node.children.length - 1;\n var isInlineOrText = Text.isText(_child) || Element.isElement(_child) && editor.isInline(_child);\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 Transforms.removeNodes(editor, {\n at: path.concat(n),\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 var newChild = {\n text: ''\n };\n Transforms.insertNodes(editor, newChild, {\n at: path.concat(n),\n voids: true\n });\n n++;\n } else if (isLast) {\n var _newChild = {\n text: ''\n };\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 var elementChild = _child;\n elementChild.children = [];\n }\n // Merge adjacent text nodes that are empty or match.\n if (prev != null && Text.isText(prev)) {\n if (Text.equals(_child, prev, {\n loose: true\n })) {\n Transforms.mergeNodes(editor, {\n at: path.concat(n),\n voids: true\n });\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\nvar shouldNormalize = (editor, _ref) => {\n var {\n iteration,\n initialDirtyPathsLength\n } = _ref;\n var maxIterations = initialDirtyPathsLength * 42; // HACK: better way?\n if (iteration > maxIterations) {\n throw new Error(\"Could not completely normalize the editor after \".concat(maxIterations, \" iterations! This is usually due to incorrect normalization logic that leaves a node in an invalid state.\"));\n }\n return true;\n};\n\nvar above = function above(editor) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var {\n voids = false,\n mode = 'lowest',\n at = editor.selection,\n match\n } = options;\n if (!at) {\n return;\n }\n var path = Editor.path(editor, at);\n var reverse = mode === 'lowest';\n for (var [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 (Path.isAncestor(p, at.anchor.path) && Path.isAncestor(p, at.focus.path)) {\n return [n, p];\n }\n } else {\n if (!Path.equals(path, p)) {\n return [n, p];\n }\n }\n }\n};\n\nfunction ownKeys$8(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }\nfunction _objectSpread$8(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$8(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$8(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }\nvar addMark = (editor, key, value) => {\n var {\n selection\n } = editor;\n if (selection) {\n var match = (node, path) => {\n if (!Text.isText(node)) {\n return false; // marks can only be applied to text\n }\n\n var [parentNode, parentPath] = Editor.parent(editor, path);\n return !editor.isVoid(parentNode) || editor.markableVoid(parentNode);\n };\n var expandedSelection = Range.isExpanded(selection);\n var markAcceptingVoidSelected = false;\n if (!expandedSelection) {\n var [selectedNode, selectedPath] = Editor.node(editor, selection);\n if (selectedNode && match(selectedNode, selectedPath)) {\n var [parentNode] = Editor.parent(editor, selectedPath);\n markAcceptingVoidSelected = parentNode && editor.markableVoid(parentNode);\n }\n }\n if (expandedSelection || markAcceptingVoidSelected) {\n Transforms.setNodes(editor, {\n [key]: value\n }, {\n match,\n split: true,\n voids: true\n });\n } else {\n var marks = _objectSpread$8(_objectSpread$8({}, Editor.marks(editor) || {}), {}, {\n [key]: value\n });\n editor.marks = marks;\n if (!FLUSHING.get(editor)) {\n editor.onChange();\n }\n }\n }\n};\n\nfunction ownKeys$7(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }\nfunction _objectSpread$7(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$7(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$7(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }\nvar after = function after(editor, at) {\n var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n var anchor = Editor.point(editor, at, {\n edge: 'end'\n });\n var focus = Editor.end(editor, []);\n var range = {\n anchor,\n focus\n };\n var {\n distance = 1\n } = options;\n var d = 0;\n var target;\n for (var p of Editor.positions(editor, _objectSpread$7(_objectSpread$7({}, options), {}, {\n at: range\n }))) {\n if (d > distance) {\n break;\n }\n if (d !== 0) {\n target = p;\n }\n d++;\n }\n return target;\n};\n\nfunction ownKeys$6(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }\nfunction _objectSpread$6(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$6(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$6(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }\nvar before = function before(editor, at) {\n var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n var anchor = Editor.start(editor, []);\n var focus = Editor.point(editor, at, {\n edge: 'start'\n });\n var range = {\n anchor,\n focus\n };\n var {\n distance = 1\n } = options;\n var d = 0;\n var target;\n for (var p of Editor.positions(editor, _objectSpread$6(_objectSpread$6({}, options), {}, {\n at: range,\n reverse: true\n }))) {\n if (d > distance) {\n break;\n }\n if (d !== 0) {\n target = p;\n }\n d++;\n }\n return target;\n};\n\nvar deleteBackward = (editor, unit) => {\n var {\n selection\n } = editor;\n if (selection && Range.isCollapsed(selection)) {\n Transforms.delete(editor, {\n unit,\n reverse: true\n });\n }\n};\n\nvar deleteForward = (editor, unit) => {\n var {\n selection\n } = editor;\n if (selection && Range.isCollapsed(selection)) {\n Transforms.delete(editor, {\n unit\n });\n }\n};\n\nvar deleteFragment = function deleteFragment(editor) {\n var {\n direction = 'forward'\n } = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var {\n selection\n } = editor;\n if (selection && Range.isExpanded(selection)) {\n Transforms.delete(editor, {\n reverse: direction === 'backward'\n });\n }\n};\n\nvar edges = (editor, at) => {\n return [Editor.start(editor, at), Editor.end(editor, at)];\n};\n\nfunction ownKeys$5(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }\nfunction _objectSpread$5(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$5(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$5(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }\nvar elementReadOnly = function elementReadOnly(editor) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n return Editor.above(editor, _objectSpread$5(_objectSpread$5({}, options), {}, {\n match: n => Element.isElement(n) && Editor.isElementReadOnly(editor, n)\n }));\n};\n\nvar end = (editor, at) => {\n return Editor.point(editor, at, {\n edge: 'end'\n });\n};\n\nvar first = (editor, at) => {\n var path = Editor.path(editor, at, {\n edge: 'start'\n });\n return Editor.node(editor, path);\n};\n\nvar fragment = (editor, at) => {\n var range = Editor.range(editor, at);\n return Node.fragment(editor, range);\n};\n\nfunction ownKeys$4(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }\nfunction _objectSpread$4(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$4(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$4(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }\nvar getVoid = function getVoid(editor) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n return Editor.above(editor, _objectSpread$4(_objectSpread$4({}, options), {}, {\n match: n => Element.isElement(n) && Editor.isVoid(editor, n)\n }));\n};\n\nvar hasBlocks = (editor, element) => {\n return element.children.some(n => Element.isElement(n) && Editor.isBlock(editor, n));\n};\n\nvar hasInlines = (editor, element) => {\n return element.children.some(n => Text.isText(n) || Editor.isInline(editor, n));\n};\n\nvar hasPath = (editor, path) => {\n return Node.has(editor, path);\n};\n\nvar hasTexts = (editor, element) => {\n return element.children.every(n => Text.isText(n));\n};\n\nvar insertBreak = editor => {\n Transforms.splitNodes(editor, {\n always: true\n });\n};\n\nvar insertNode = (editor, node, options) => {\n Transforms.insertNodes(editor, node, options);\n};\n\nvar insertSoftBreak = editor => {\n Transforms.splitNodes(editor, {\n always: true\n });\n};\n\nfunction ownKeys$3(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }\nfunction _objectSpread$3(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$3(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$3(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }\nvar insertText = function insertText(editor, text) {\n var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n var {\n selection,\n marks\n } = editor;\n if (selection) {\n if (marks) {\n var node = _objectSpread$3({\n text\n }, 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 editor.marks = null;\n }\n};\n\nvar isBlock = (editor, value) => {\n return !editor.isInline(value);\n};\n\nvar isEdge = (editor, point, at) => {\n return Editor.isStart(editor, point, at) || Editor.isEnd(editor, point, at);\n};\n\nvar isEmpty = (editor, element) => {\n var {\n children\n } = element;\n var [first] = children;\n return children.length === 0 || children.length === 1 && Text.isText(first) && first.text === '' && !editor.isVoid(element);\n};\n\nvar isEnd = (editor, point, at) => {\n var end = Editor.end(editor, at);\n return Point.equals(point, end);\n};\n\nvar isNormalizing = editor => {\n var isNormalizing = NORMALIZING.get(editor);\n return isNormalizing === undefined ? true : isNormalizing;\n};\n\nvar 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 var start = Editor.start(editor, at);\n return Point.equals(point, start);\n};\n\nvar last = (editor, at) => {\n var path = Editor.path(editor, at, {\n edge: 'end'\n });\n return Editor.node(editor, path);\n};\n\nvar leaf = function leaf(editor, at) {\n var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n var path = Editor.path(editor, at, options);\n var node = Node.leaf(editor, path);\n return [node, path];\n};\n\nfunction levels(editor) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n return function* () {\n var {\n at = editor.selection,\n reverse = false,\n voids = false\n } = options;\n var {\n match\n } = options;\n if (match == null) {\n match = () => true;\n }\n if (!at) {\n return;\n }\n var levels = [];\n var path = Editor.path(editor, at);\n for (var [n, p] of Node.levels(editor, path)) {\n if (!match(n, p)) {\n continue;\n }\n levels.push([n, p]);\n if (!voids && Element.isElement(n) && Editor.isVoid(editor, n)) {\n break;\n }\n }\n if (reverse) {\n levels.reverse();\n }\n yield* levels;\n }();\n}\n\nvar _excluded$1 = [\"text\"],\n _excluded2$1 = [\"text\"];\nvar marks = function marks(editor) {\n var {\n marks,\n selection\n } = editor;\n if (!selection) {\n return null;\n }\n var {\n anchor,\n focus\n } = selection;\n if (marks) {\n return marks;\n }\n if (Range.isExpanded(selection)) {\n var 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 var isEnd = Editor.isEnd(editor, anchor, anchor.path);\n if (isEnd) {\n var after = Editor.after(editor, anchor);\n if (after) {\n anchor = after;\n }\n }\n var [match] = Editor.nodes(editor, {\n match: Text.isText,\n at: {\n anchor,\n focus\n }\n });\n if (match) {\n var [_node] = match;\n var _rest = _objectWithoutProperties(_node, _excluded$1);\n return _rest;\n } else {\n return {};\n }\n }\n var {\n path\n } = anchor;\n var [node] = Editor.leaf(editor, path);\n if (anchor.offset === 0) {\n var prev = Editor.previous(editor, {\n at: path,\n match: Text.isText\n });\n var markedVoid = Editor.above(editor, {\n match: n => Element.isElement(n) && Editor.isVoid(editor, n) && editor.markableVoid(n)\n });\n if (!markedVoid) {\n var block = Editor.above(editor, {\n match: n => Element.isElement(n) && Editor.isBlock(editor, n)\n });\n if (prev && block) {\n var [prevNode, prevPath] = prev;\n var [, blockPath] = block;\n if (Path.isAncestor(blockPath, prevPath)) {\n node = prevNode;\n }\n }\n }\n }\n var rest = _objectWithoutProperties(node, _excluded2$1);\n return rest;\n};\n\nvar next = function next(editor) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var {\n mode = 'lowest',\n voids = false\n } = options;\n var {\n match,\n at = editor.selection\n } = options;\n if (!at) {\n return;\n }\n var pointAfterLocation = Editor.after(editor, at, {\n voids\n });\n if (!pointAfterLocation) return;\n var [, to] = Editor.last(editor, []);\n var span = [pointAfterLocation.path, to];\n if (Path.isPath(at) && at.length === 0) {\n throw new Error(\"Cannot get the next node from the root node!\");\n }\n if (match == null) {\n if (Path.isPath(at)) {\n var [parent] = Editor.parent(editor, at);\n match = n => parent.children.includes(n);\n } else {\n match = () => true;\n }\n }\n var [next] = Editor.nodes(editor, {\n at: span,\n match,\n mode,\n voids\n });\n return next;\n};\n\nvar node = function node(editor, at) {\n var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n var path = Editor.path(editor, at, options);\n var node = Node.get(editor, path);\n return [node, path];\n};\n\nfunction nodes(editor) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n return function* () {\n var {\n at = editor.selection,\n mode = 'all',\n universal = false,\n reverse = false,\n voids = false,\n ignoreNonSelectable = false\n } = options;\n var {\n match\n } = options;\n if (!match) {\n match = () => true;\n }\n if (!at) {\n return;\n }\n var from;\n var to;\n if (Span.isSpan(at)) {\n from = at[0];\n to = at[1];\n } else {\n var first = Editor.path(editor, at, {\n edge: 'start'\n });\n var last = Editor.path(editor, at, {\n edge: 'end'\n });\n from = reverse ? last : first;\n to = reverse ? first : last;\n }\n var nodeEntries = Node.nodes(editor, {\n reverse,\n from,\n to,\n pass: _ref => {\n var [node] = _ref;\n if (!Element.isElement(node)) return false;\n if (!voids && (Editor.isVoid(editor, node) || Editor.isElementReadOnly(editor, node))) return true;\n if (ignoreNonSelectable && !Editor.isSelectable(editor, node)) return true;\n return false;\n }\n });\n var matches = [];\n var hit;\n for (var [node, path] of nodeEntries) {\n if (ignoreNonSelectable && Element.isElement(node) && !Editor.isSelectable(editor, node)) {\n continue;\n }\n var isLower = hit && Path.compare(path, hit[1]) === 0;\n // In highest mode any node lower than the last hit is not a match.\n if (mode === 'highest' && isLower) {\n continue;\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 // If there's a match and it's lower than the last, update the hit.\n if (mode === 'lowest' && isLower) {\n hit = [node, path];\n continue;\n }\n // In lowest mode we emit the last hit, once it's guaranteed lowest.\n var emit = mode === 'lowest' ? hit : [node, path];\n if (emit) {\n if (universal) {\n matches.push(emit);\n } else {\n yield emit;\n }\n }\n hit = [node, path];\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 // 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}\n\nvar normalize = function normalize(editor) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var {\n force = false,\n operation\n } = options;\n var getDirtyPaths = editor => {\n return DIRTY_PATHS.get(editor) || [];\n };\n var getDirtyPathKeys = editor => {\n return DIRTY_PATH_KEYS.get(editor) || new Set();\n };\n var popDirtyPath = editor => {\n var path = getDirtyPaths(editor).pop();\n var key = path.join(',');\n getDirtyPathKeys(editor).delete(key);\n return path;\n };\n if (!Editor.isNormalizing(editor)) {\n return;\n }\n if (force) {\n var allPaths = Array.from(Node.nodes(editor), _ref => {\n var [, p] = _ref;\n return p;\n });\n var allPathKeys = new Set(allPaths.map(p => p.join(',')));\n DIRTY_PATHS.set(editor, allPaths);\n DIRTY_PATH_KEYS.set(editor, allPathKeys);\n }\n if (getDirtyPaths(editor).length === 0) {\n return;\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 (var dirtyPath of getDirtyPaths(editor)) {\n if (Node.has(editor, dirtyPath)) {\n var entry = Editor.node(editor, dirtyPath);\n var [node, _] = entry;\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 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, {\n operation\n });\n }\n }\n }\n var dirtyPaths = getDirtyPaths(editor);\n var initialDirtyPathsLength = dirtyPaths.length;\n var iteration = 0;\n while (dirtyPaths.length !== 0) {\n if (!editor.shouldNormalize({\n dirtyPaths,\n iteration,\n initialDirtyPathsLength,\n operation\n })) {\n return;\n }\n var _dirtyPath = popDirtyPath(editor);\n // If the node doesn't exist in the tree, it does not need to be normalized.\n if (Node.has(editor, _dirtyPath)) {\n var _entry = Editor.node(editor, _dirtyPath);\n editor.normalizeNode(_entry, {\n operation\n });\n }\n iteration++;\n dirtyPaths = getDirtyPaths(editor);\n }\n });\n};\n\nvar parent = function parent(editor, at) {\n var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n var path = Editor.path(editor, at, options);\n var parentPath = Path.parent(path);\n var entry = Editor.node(editor, parentPath);\n return entry;\n};\n\nvar pathRef = function pathRef(editor, path) {\n var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n var {\n affinity = 'forward'\n } = options;\n var ref = {\n current: path,\n affinity,\n unref() {\n var {\n current\n } = ref;\n var pathRefs = Editor.pathRefs(editor);\n pathRefs.delete(ref);\n ref.current = null;\n return current;\n }\n };\n var refs = Editor.pathRefs(editor);\n refs.add(ref);\n return ref;\n};\n\nvar pathRefs = editor => {\n var refs = PATH_REFS.get(editor);\n if (!refs) {\n refs = new Set();\n PATH_REFS.set(editor, refs);\n }\n return refs;\n};\n\nvar path = function path(editor, at) {\n var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n var {\n depth,\n edge\n } = options;\n if (Path.isPath(at)) {\n if (edge === 'start') {\n var [, firstPath] = Node.first(editor, at);\n at = firstPath;\n } else if (edge === 'end') {\n var [, lastPath] = Node.last(editor, at);\n at = lastPath;\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 if (Point.isPoint(at)) {\n at = at.path;\n }\n if (depth != null) {\n at = at.slice(0, depth);\n }\n return at;\n};\n\nvar pointRef = function pointRef(editor, point) {\n var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n var {\n affinity = 'forward'\n } = options;\n var ref = {\n current: point,\n affinity,\n unref() {\n var {\n current\n } = ref;\n var pointRefs = Editor.pointRefs(editor);\n pointRefs.delete(ref);\n ref.current = null;\n return current;\n }\n };\n var refs = Editor.pointRefs(editor);\n refs.add(ref);\n return ref;\n};\n\nvar pointRefs = editor => {\n var refs = POINT_REFS.get(editor);\n if (!refs) {\n refs = new Set();\n POINT_REFS.set(editor, refs);\n }\n return refs;\n};\n\nvar point = function point(editor, at) {\n var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n var {\n edge = 'start'\n } = options;\n if (Path.isPath(at)) {\n var path;\n if (edge === 'end') {\n var [, lastPath] = Node.last(editor, at);\n path = lastPath;\n } else {\n var [, firstPath] = Node.first(editor, at);\n path = firstPath;\n }\n var node = Node.get(editor, path);\n if (!Text.isText(node)) {\n throw new Error(\"Cannot get the \".concat(edge, \" point in the node at path [\").concat(at, \"] because it has no \").concat(edge, \" text node.\"));\n }\n return {\n path,\n offset: edge === 'end' ? node.text.length : 0\n };\n }\n if (Range.isRange(at)) {\n var [start, end] = Range.edges(at);\n return edge === 'start' ? start : end;\n }\n return at;\n};\n\nfunction positions(editor) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n return function* () {\n var {\n at = editor.selection,\n unit = 'offset',\n reverse = false,\n voids = false,\n ignoreNonSelectable = false\n } = options;\n if (!at) {\n return;\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 var range = Editor.range(editor, at);\n var [start, end] = Range.edges(range);\n var first = reverse ? end : start;\n var isNewBlock = false;\n var blockText = '';\n var distance = 0; // Distance for leafText to catch up to blockText.\n var leafTextRemaining = 0;\n var leafTextOffset = 0;\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 (var [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 // 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 // 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 // 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 var e = Path.isAncestor(path, end.path) ? end : Editor.end(editor, path);\n var s = Path.isAncestor(path, start.path) ? start : Editor.start(editor, path);\n blockText = Editor.string(editor, {\n anchor: s,\n focus: e\n }, {\n voids\n });\n isNewBlock = true;\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 var isFirst = Path.equals(path, first.path);\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 // Reset `leafText` counters for new text node.\n if (isFirst) {\n leafTextRemaining = reverse ? first.offset : 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 // Yield position at the start of node (potentially).\n if (isFirst || isNewBlock || unit === 'offset') {\n yield {\n path,\n offset: leafTextOffset\n };\n isNewBlock = false;\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 // Advance `leafText` by the current `distance`.\n leafTextOffset = reverse ? leafTextOffset - distance : leafTextOffset + distance;\n leafTextRemaining = leafTextRemaining - distance;\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 // 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 {\n path,\n offset: leafTextOffset\n };\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 // Helper:\n // Return the distance in offsets for a step of size `unit` on given string.\n function calcDistance(text, unit, reverse) {\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}\n\nvar previous = function previous(editor) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var {\n mode = 'lowest',\n voids = false\n } = options;\n var {\n match,\n at = editor.selection\n } = options;\n if (!at) {\n return;\n }\n var pointBeforeLocation = Editor.before(editor, at, {\n voids\n });\n if (!pointBeforeLocation) {\n return;\n }\n var [, to] = Editor.first(editor, []);\n // The search location is from the start of the document to the path of\n // the point before the location passed in\n var span = [pointBeforeLocation.path, to];\n if (Path.isPath(at) && at.length === 0) {\n throw new Error(\"Cannot get the previous node from the root node!\");\n }\n if (match == null) {\n if (Path.isPath(at)) {\n var [parent] = Editor.parent(editor, at);\n match = n => parent.children.includes(n);\n } else {\n match = () => true;\n }\n }\n var [previous] = Editor.nodes(editor, {\n reverse: true,\n at: span,\n match,\n mode,\n voids\n });\n return previous;\n};\n\nvar rangeRef = function rangeRef(editor, range) {\n var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n var {\n affinity = 'forward'\n } = options;\n var ref = {\n current: range,\n affinity,\n unref() {\n var {\n current\n } = ref;\n var rangeRefs = Editor.rangeRefs(editor);\n rangeRefs.delete(ref);\n ref.current = null;\n return current;\n }\n };\n var refs = Editor.rangeRefs(editor);\n refs.add(ref);\n return ref;\n};\n\nvar rangeRefs = editor => {\n var refs = RANGE_REFS.get(editor);\n if (!refs) {\n refs = new Set();\n RANGE_REFS.set(editor, refs);\n }\n return refs;\n};\n\nvar range = (editor, at, to) => {\n if (Range.isRange(at) && !to) {\n return at;\n }\n var start = Editor.start(editor, at);\n var end = Editor.end(editor, to || at);\n return {\n anchor: start,\n focus: end\n };\n};\n\nfunction ownKeys$2(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }\nfunction _objectSpread$2(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$2(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$2(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }\nvar removeMark = (editor, key) => {\n var {\n selection\n } = editor;\n if (selection) {\n var match = (node, path) => {\n if (!Text.isText(node)) {\n return false; // marks can only be applied to text\n }\n\n var [parentNode, parentPath] = Editor.parent(editor, path);\n return !editor.isVoid(parentNode) || editor.markableVoid(parentNode);\n };\n var expandedSelection = Range.isExpanded(selection);\n var markAcceptingVoidSelected = false;\n if (!expandedSelection) {\n var [selectedNode, selectedPath] = Editor.node(editor, selection);\n if (selectedNode && match(selectedNode, selectedPath)) {\n var [parentNode] = Editor.parent(editor, selectedPath);\n markAcceptingVoidSelected = 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 var marks = _objectSpread$2({}, Editor.marks(editor) || {});\n delete marks[key];\n editor.marks = marks;\n if (!FLUSHING.get(editor)) {\n editor.onChange();\n }\n }\n }\n};\n\nvar setNormalizing = (editor, isNormalizing) => {\n NORMALIZING.set(editor, isNormalizing);\n};\n\nvar start = (editor, at) => {\n return Editor.point(editor, at, {\n edge: 'start'\n });\n};\n\nvar string = function string(editor, at) {\n var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n var {\n voids = false\n } = options;\n var range = Editor.range(editor, at);\n var [start, end] = Range.edges(range);\n var text = '';\n for (var [node, path] of Editor.nodes(editor, {\n at: range,\n match: Text.isText,\n voids\n })) {\n var t = node.text;\n if (Path.equals(path, end.path)) {\n t = t.slice(0, end.offset);\n }\n if (Path.equals(path, start.path)) {\n t = t.slice(start.offset);\n }\n text += t;\n }\n return text;\n};\n\nvar unhangRange = function unhangRange(editor, range) {\n var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n var {\n voids = false\n } = options;\n var [start, end] = Range.edges(range);\n // PERF: exit early if we can guarantee that the range isn't hanging.\n if (start.offset !== 0 || end.offset !== 0 || Range.isCollapsed(range) || Path.hasPrevious(end.path)) {\n return range;\n }\n var endBlock = Editor.above(editor, {\n at: end,\n match: n => Element.isElement(n) && Editor.isBlock(editor, n),\n voids\n });\n var blockPath = endBlock ? endBlock[1] : [];\n var first = Editor.start(editor, start);\n var before = {\n anchor: first,\n focus: end\n };\n var skip = true;\n for (var [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 if (node.text !== '' || Path.isBefore(path, blockPath)) {\n end = {\n path,\n offset: node.text.length\n };\n break;\n }\n }\n return {\n anchor: start,\n focus: end\n };\n};\n\nvar withoutNormalizing = (editor, fn) => {\n var 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\nvar shouldMergeNodesRemovePrevNode = (editor, _ref, _ref2) => {\n var [prevNode, prevPath] = _ref;\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 return Element.isElement(prevNode) && Editor.isEmpty(editor, prevNode) || Text.isText(prevNode) && prevNode.text === '' && prevPath[prevPath.length - 1] !== 0;\n};\n\nvar deleteText = function deleteText(editor) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n Editor.withoutNormalizing(editor, () => {\n var _Editor$void, _Editor$void2;\n var {\n reverse = false,\n unit = 'character',\n distance = 1,\n voids = false\n } = options;\n var {\n at = editor.selection,\n hanging = false\n } = options;\n if (!at) {\n return;\n }\n var isCollapsed = false;\n if (Range.isRange(at) && Range.isCollapsed(at)) {\n isCollapsed = true;\n at = at.anchor;\n }\n if (Point.isPoint(at)) {\n var furthestVoid = Editor.void(editor, {\n at,\n mode: 'highest'\n });\n if (!voids && furthestVoid) {\n var [, voidPath] = furthestVoid;\n at = voidPath;\n } else {\n var opts = {\n unit,\n distance\n };\n var target = reverse ? Editor.before(editor, at, opts) || Editor.start(editor, []) : Editor.after(editor, at, opts) || Editor.end(editor, []);\n at = {\n anchor: at,\n focus: target\n };\n hanging = true;\n }\n }\n if (Path.isPath(at)) {\n Transforms.removeNodes(editor, {\n at,\n voids\n });\n return;\n }\n if (Range.isCollapsed(at)) {\n return;\n }\n if (!hanging) {\n var [, _end] = Range.edges(at);\n var endOfDoc = Editor.end(editor, []);\n if (!Point.equals(_end, endOfDoc)) {\n at = Editor.unhangRange(editor, at, {\n voids\n });\n }\n }\n var [start, end] = Range.edges(at);\n var startBlock = Editor.above(editor, {\n match: n => Element.isElement(n) && Editor.isBlock(editor, n),\n at: start,\n voids\n });\n var endBlock = Editor.above(editor, {\n match: n => Element.isElement(n) && Editor.isBlock(editor, n),\n at: end,\n voids\n });\n var isAcrossBlocks = startBlock && endBlock && !Path.equals(startBlock[1], endBlock[1]);\n var isSingleText = Path.equals(start.path, end.path);\n var startNonEditable = voids ? null : (_Editor$void = Editor.void(editor, {\n at: start,\n mode: 'highest'\n })) !== null && _Editor$void !== void 0 ? _Editor$void : Editor.elementReadOnly(editor, {\n at: start,\n mode: 'highest'\n });\n var endNonEditable = voids ? null : (_Editor$void2 = Editor.void(editor, {\n at: end,\n mode: 'highest'\n })) !== null && _Editor$void2 !== void 0 ? _Editor$void2 : Editor.elementReadOnly(editor, {\n at: end,\n mode: 'highest'\n });\n // If the start or end points are inside an inline void, nudge them out.\n if (startNonEditable) {\n var before = Editor.before(editor, start);\n if (before && startBlock && Path.isAncestor(startBlock[1], before.path)) {\n start = before;\n }\n }\n if (endNonEditable) {\n var after = Editor.after(editor, end);\n if (after && endBlock && Path.isAncestor(endBlock[1], after.path)) {\n end = after;\n }\n }\n // Get the highest nodes that are completely inside the range, as well as\n // the start and end nodes.\n var matches = [];\n var lastPath;\n for (var entry of Editor.nodes(editor, {\n at,\n voids\n })) {\n var [node, path] = entry;\n if (lastPath && Path.compare(path, lastPath) === 0) {\n continue;\n }\n if (!voids && Element.isElement(node) && (Editor.isVoid(editor, node) || Editor.isElementReadOnly(editor, node)) || !Path.isCommon(path, start.path) && !Path.isCommon(path, end.path)) {\n matches.push(entry);\n lastPath = path;\n }\n }\n var pathRefs = Array.from(matches, _ref => {\n var [, p] = _ref;\n return Editor.pathRef(editor, p);\n });\n var startRef = Editor.pointRef(editor, start);\n var endRef = Editor.pointRef(editor, end);\n var removedText = '';\n if (!isSingleText && !startNonEditable) {\n var _point = startRef.current;\n var [_node] = Editor.leaf(editor, _point);\n var {\n path: _path\n } = _point;\n var {\n offset\n } = start;\n var text = _node.text.slice(offset);\n if (text.length > 0) {\n editor.apply({\n type: 'remove_text',\n path: _path,\n offset,\n text\n });\n removedText = text;\n }\n }\n pathRefs.reverse().map(r => r.unref()).filter(r => r !== null).forEach(p => Transforms.removeNodes(editor, {\n at: p,\n voids\n }));\n if (!endNonEditable) {\n var _point2 = endRef.current;\n var [_node2] = Editor.leaf(editor, _point2);\n var {\n path: _path2\n } = _point2;\n var _offset = isSingleText ? start.offset : 0;\n var _text = _node2.text.slice(_offset, end.offset);\n if (_text.length > 0) {\n editor.apply({\n type: 'remove_text',\n path: _path2,\n offset: _offset,\n text: _text\n });\n removedText = _text;\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 // 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 (isCollapsed && reverse && unit === 'character' && removedText.length > 1 && removedText.match(/[\\u0E00-\\u0E7F]+/)) {\n Transforms.insertText(editor, removedText.slice(0, removedText.length - distance));\n }\n var startUnref = startRef.unref();\n var endUnref = endRef.unref();\n var point = reverse ? startUnref || endUnref : endUnref || startUnref;\n if (options.at == null && point) {\n Transforms.select(editor, point);\n }\n });\n};\n\nvar insertFragment = function insertFragment(editor, fragment) {\n var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n Editor.withoutNormalizing(editor, () => {\n var {\n hanging = false,\n voids = false\n } = options;\n var {\n at = getDefaultInsertLocation(editor),\n batchDirty = true\n } = options;\n if (!fragment.length) {\n return;\n }\n if (Range.isRange(at)) {\n if (!hanging) {\n at = Editor.unhangRange(editor, at, {\n voids\n });\n }\n if (Range.isCollapsed(at)) {\n at = at.anchor;\n } else {\n var [, end] = Range.edges(at);\n if (!voids && Editor.void(editor, {\n at: end\n })) {\n return;\n }\n var pointRef = Editor.pointRef(editor, end);\n Transforms.delete(editor, {\n at\n });\n at = pointRef.unref();\n }\n } else if (Path.isPath(at)) {\n at = Editor.start(editor, at);\n }\n if (!voids && Editor.void(editor, {\n at\n })) {\n return;\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 var inlineElementMatch = Editor.above(editor, {\n at,\n match: n => Element.isElement(n) && Editor.isInline(editor, n),\n mode: 'highest',\n voids\n });\n if (inlineElementMatch) {\n var [, _inlinePath] = inlineElementMatch;\n if (Editor.isEnd(editor, at, _inlinePath)) {\n var after = Editor.after(editor, _inlinePath);\n at = after;\n } else if (Editor.isStart(editor, at, _inlinePath)) {\n var before = Editor.before(editor, _inlinePath);\n at = before;\n }\n }\n var blockMatch = Editor.above(editor, {\n match: n => Element.isElement(n) && Editor.isBlock(editor, n),\n at,\n voids\n });\n var [, blockPath] = blockMatch;\n var isBlockStart = Editor.isStart(editor, at, blockPath);\n var isBlockEnd = Editor.isEnd(editor, at, blockPath);\n var isBlockEmpty = isBlockStart && isBlockEnd;\n var mergeStart = !isBlockStart || isBlockStart && isBlockEnd;\n var mergeEnd = !isBlockEnd;\n var [, firstPath] = Node.first({\n children: fragment\n }, []);\n var [, lastPath] = Node.last({\n children: fragment\n }, []);\n var matches = [];\n var matcher = _ref => {\n var [n, p] = _ref;\n var isRoot = p.length === 0;\n if (isRoot) {\n return false;\n }\n if (isBlockEmpty) {\n return true;\n }\n if (mergeStart && Path.isAncestor(p, firstPath) && Element.isElement(n) && !editor.isVoid(n) && !editor.isInline(n)) {\n return false;\n }\n if (mergeEnd && Path.isAncestor(p, lastPath) && Element.isElement(n) && !editor.isVoid(n) && !editor.isInline(n)) {\n return false;\n }\n return true;\n };\n for (var entry of Node.nodes({\n children: fragment\n }, {\n pass: matcher\n })) {\n if (matcher(entry)) {\n matches.push(entry);\n }\n }\n var starts = [];\n var middles = [];\n var ends = [];\n var starting = true;\n var hasBlocks = false;\n for (var [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 var [inlineMatch] = Editor.nodes(editor, {\n at,\n match: n => Text.isText(n) || Editor.isInline(editor, n),\n mode: 'highest',\n voids\n });\n var [, inlinePath] = inlineMatch;\n var isInlineStart = Editor.isStart(editor, at, inlinePath);\n var isInlineEnd = Editor.isEnd(editor, at, inlinePath);\n var middleRef = Editor.pathRef(editor, isBlockEnd && !ends.length ? Path.next(blockPath) : blockPath);\n var endRef = Editor.pathRef(editor, isInlineEnd ? Path.next(inlinePath) : inlinePath);\n Transforms.splitNodes(editor, {\n at,\n match: n => hasBlocks ? Element.isElement(n) && Editor.isBlock(editor, n) : Text.isText(n) || Editor.isInline(editor, n),\n mode: hasBlocks ? 'lowest' : 'highest',\n always: hasBlocks && (!isBlockStart || starts.length > 0) && (!isBlockEnd || ends.length > 0),\n voids\n });\n var startRef = Editor.pathRef(editor, !isInlineStart || isInlineStart && isInlineEnd ? Path.next(inlinePath) : inlinePath);\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 if (isBlockEmpty && !starts.length && middles.length && !ends.length) {\n Transforms.delete(editor, {\n at: blockPath,\n 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 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 if (!options.at) {\n var path;\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 if (path) {\n var _end = Editor.end(editor, path);\n Transforms.select(editor, _end);\n }\n }\n startRef.unref();\n middleRef.unref();\n endRef.unref();\n });\n};\n\nvar collapse = function collapse(editor) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var {\n edge = 'anchor'\n } = options;\n var {\n selection\n } = editor;\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 var [start] = Range.edges(selection);\n Transforms.select(editor, start);\n } else if (edge === 'end') {\n var [, end] = Range.edges(selection);\n Transforms.select(editor, end);\n }\n};\n\nvar deselect = editor => {\n var {\n selection\n } = editor;\n if (selection) {\n editor.apply({\n type: 'set_selection',\n properties: selection,\n newProperties: null\n });\n }\n};\n\nvar move = function move(editor) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var {\n selection\n } = editor;\n var {\n distance = 1,\n unit = 'character',\n reverse = false\n } = options;\n var {\n edge = null\n } = options;\n if (!selection) {\n return;\n }\n if (edge === 'start') {\n edge = Range.isBackward(selection) ? 'focus' : 'anchor';\n }\n if (edge === 'end') {\n edge = Range.isBackward(selection) ? 'anchor' : 'focus';\n }\n var {\n anchor,\n focus\n } = selection;\n var opts = {\n distance,\n unit,\n ignoreNonSelectable: true\n };\n var props = {};\n if (edge == null || edge === 'anchor') {\n var point = reverse ? Editor.before(editor, anchor, opts) : Editor.after(editor, anchor, opts);\n if (point) {\n props.anchor = point;\n }\n }\n if (edge == null || edge === 'focus') {\n var _point = reverse ? Editor.before(editor, focus, opts) : Editor.after(editor, focus, opts);\n if (_point) {\n props.focus = _point;\n }\n }\n Transforms.setSelection(editor, props);\n};\n\nvar select = (editor, target) => {\n var {\n selection\n } = editor;\n target = Editor.range(editor, target);\n if (selection) {\n Transforms.setSelection(editor, target);\n return;\n }\n if (!Range.isRange(target)) {\n throw new Error(\"When setting the selection and the current selection is `null` you must provide at least an `anchor` and `focus`, but you passed: \".concat(Scrubber.stringify(target)));\n }\n editor.apply({\n type: 'set_selection',\n properties: selection,\n newProperties: target\n });\n};\n\nfunction ownKeys$1(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }\nfunction _objectSpread$1(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$1(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$1(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }\nvar setPoint = function setPoint(editor, props) {\n var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n var {\n selection\n } = editor;\n var {\n edge = 'both'\n } = options;\n if (!selection) {\n return;\n }\n if (edge === 'start') {\n edge = Range.isBackward(selection) ? 'focus' : 'anchor';\n }\n if (edge === 'end') {\n edge = Range.isBackward(selection) ? 'anchor' : 'focus';\n }\n var {\n anchor,\n focus\n } = selection;\n var point = edge === 'anchor' ? anchor : focus;\n Transforms.setSelection(editor, {\n [edge === 'anchor' ? 'anchor' : 'focus']: _objectSpread$1(_objectSpread$1({}, point), props)\n });\n};\n\nvar setSelection = (editor, props) => {\n var {\n selection\n } = editor;\n var oldProps = {};\n var newProps = {};\n if (!selection) {\n return;\n }\n for (var k in props) {\n if (k === 'anchor' && props.anchor != null && !Point.equals(props.anchor, selection.anchor) || k === 'focus' && props.focus != null && !Point.equals(props.focus, selection.focus) || k !== 'anchor' && k !== 'focus' && props[k] !== selection[k]) {\n oldProps[k] = selection[k];\n newProps[k] = props[k];\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\nvar insertNodes = function insertNodes(editor, nodes) {\n var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n Editor.withoutNormalizing(editor, () => {\n var {\n hanging = false,\n voids = false,\n mode = 'lowest',\n batchDirty = true\n } = options;\n var {\n at,\n match,\n select\n } = options;\n if (Node.isNode(nodes)) {\n nodes = [nodes];\n }\n if (nodes.length === 0) {\n return;\n }\n var [node] = nodes;\n if (!at) {\n at = getDefaultInsertLocation(editor);\n if (select !== false) {\n select = true;\n }\n }\n if (select == null) {\n select = false;\n }\n if (Range.isRange(at)) {\n if (!hanging) {\n at = Editor.unhangRange(editor, at, {\n voids\n });\n }\n if (Range.isCollapsed(at)) {\n at = at.anchor;\n } else {\n var [, end] = Range.edges(at);\n var pointRef = Editor.pointRef(editor, end);\n Transforms.delete(editor, {\n at\n });\n at = pointRef.unref();\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 var [entry] = Editor.nodes(editor, {\n at: at.path,\n match,\n mode,\n voids\n });\n if (entry) {\n var [, matchPath] = entry;\n var pathRef = Editor.pathRef(editor, matchPath);\n var isAtEnd = Editor.isEnd(editor, at, matchPath);\n Transforms.splitNodes(editor, {\n at,\n match,\n mode,\n voids\n });\n var path = pathRef.unref();\n at = isAtEnd ? Path.next(path) : path;\n } else {\n return;\n }\n }\n var parentPath = Path.parent(at);\n var index = at[at.length - 1];\n if (!voids && Editor.void(editor, {\n at: parentPath\n })) {\n return;\n }\n if (batchDirty) {\n // PERF: batch update dirty paths\n // batched ops used to transform existing dirty paths\n var batchedOps = [];\n var newDirtyPaths = Path.levels(parentPath);\n batchDirtyPaths(editor, () => {\n var _loop = function _loop() {\n var path = parentPath.concat(index);\n index++;\n var op = {\n type: 'insert_node',\n path,\n node: _node\n };\n editor.apply(op);\n at = Path.next(at);\n batchedOps.push(op);\n if (!Text.isText) {\n newDirtyPaths.push(path);\n } else {\n newDirtyPaths.push(...Array.from(Node.nodes(_node), _ref => {\n var [, p] = _ref;\n return path.concat(p);\n }));\n }\n };\n for (var _node of nodes) {\n _loop();\n }\n }, () => {\n updateDirtyPaths(editor, newDirtyPaths, p => {\n var newPath = p;\n for (var 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 } else {\n for (var _node2 of nodes) {\n var _path = parentPath.concat(index);\n index++;\n editor.apply({\n type: 'insert_node',\n path: _path,\n node: _node2\n });\n at = Path.next(at);\n }\n }\n at = Path.previous(at);\n if (select) {\n var point = Editor.end(editor, at);\n if (point) {\n Transforms.select(editor, point);\n }\n }\n });\n};\n\nvar liftNodes = function liftNodes(editor) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n Editor.withoutNormalizing(editor, () => {\n var {\n at = editor.selection,\n mode = 'lowest',\n voids = false\n } = options;\n var {\n match\n } = options;\n if (match == null) {\n match = Path.isPath(at) ? matchPath(editor, at) : n => Element.isElement(n) && Editor.isBlock(editor, n);\n }\n if (!at) {\n return;\n }\n var matches = Editor.nodes(editor, {\n at,\n match,\n mode,\n voids\n });\n var pathRefs = Array.from(matches, _ref => {\n var [, p] = _ref;\n return Editor.pathRef(editor, p);\n });\n for (var pathRef of pathRefs) {\n var path = pathRef.unref();\n if (path.length < 2) {\n throw new Error(\"Cannot lift node at a path [\".concat(path, \"] because it has a depth of less than `2`.\"));\n }\n var parentNodeEntry = Editor.node(editor, Path.parent(path));\n var [parent, parentPath] = parentNodeEntry;\n var index = path[path.length - 1];\n var {\n length\n } = parent.children;\n if (length === 1) {\n var toPath = Path.next(parentPath);\n Transforms.moveNodes(editor, {\n at: path,\n to: toPath,\n voids\n });\n Transforms.removeNodes(editor, {\n at: parentPath,\n voids\n });\n } else if (index === 0) {\n Transforms.moveNodes(editor, {\n at: path,\n to: parentPath,\n voids\n });\n } else if (index === length - 1) {\n var _toPath = Path.next(parentPath);\n Transforms.moveNodes(editor, {\n at: path,\n to: _toPath,\n voids\n });\n } else {\n var splitPath = Path.next(path);\n var _toPath2 = Path.next(parentPath);\n Transforms.splitNodes(editor, {\n at: splitPath,\n voids\n });\n Transforms.moveNodes(editor, {\n at: path,\n to: _toPath2,\n voids\n });\n }\n }\n });\n};\n\nvar _excluded = [\"text\"],\n _excluded2 = [\"children\"];\nvar hasSingleChildNest = (editor, node) => {\n if (Element.isElement(node)) {\n var element = node;\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};\nvar mergeNodes = function mergeNodes(editor) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n Editor.withoutNormalizing(editor, () => {\n var {\n match,\n at = editor.selection\n } = options;\n var {\n hanging = false,\n voids = false,\n mode = 'lowest'\n } = options;\n if (!at) {\n return;\n }\n if (match == null) {\n if (Path.isPath(at)) {\n var [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 if (!hanging && Range.isRange(at)) {\n at = Editor.unhangRange(editor, at, {\n voids\n });\n }\n if (Range.isRange(at)) {\n if (Range.isCollapsed(at)) {\n at = at.anchor;\n } else {\n var [, end] = Range.edges(at);\n var pointRef = Editor.pointRef(editor, end);\n Transforms.delete(editor, {\n at\n });\n at = pointRef.unref();\n if (options.at == null) {\n Transforms.select(editor, at);\n }\n }\n }\n var [current] = Editor.nodes(editor, {\n at,\n match,\n voids,\n mode\n });\n var prev = Editor.previous(editor, {\n at,\n match,\n voids,\n mode\n });\n if (!current || !prev) {\n return;\n }\n var [node, path] = current;\n var [prevNode, prevPath] = prev;\n if (path.length === 0 || prevPath.length === 0) {\n return;\n }\n var newPath = Path.next(prevPath);\n var commonPath = Path.common(path, prevPath);\n var isPreviousSibling = Path.isSibling(path, prevPath);\n var levels = Array.from(Editor.levels(editor, {\n at: path\n }), _ref => {\n var [n] = _ref;\n return n;\n }).slice(commonPath.length).slice(0, -1);\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 var emptyAncestor = Editor.above(editor, {\n at: path,\n mode: 'highest',\n match: n => levels.includes(n) && hasSingleChildNest(editor, n)\n });\n var emptyRef = emptyAncestor && Editor.pathRef(editor, emptyAncestor[1]);\n var properties;\n var position;\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 var rest = _objectWithoutProperties(node, _excluded);\n position = prevNode.text.length;\n properties = rest;\n } else if (Element.isElement(node) && Element.isElement(prevNode)) {\n var rest = _objectWithoutProperties(node, _excluded2);\n position = prevNode.children.length;\n properties = rest;\n } else {\n throw new Error(\"Cannot merge the node at path [\".concat(path, \"] with the previous sibling because it is not the same kind: \").concat(Scrubber.stringify(node), \" \").concat(Scrubber.stringify(prevNode)));\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, {\n at: path,\n to: newPath,\n 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, {\n at: emptyRef.current,\n voids\n });\n }\n if (Editor.shouldMergeNodesRemovePrevNode(editor, prev, current)) {\n Transforms.removeNodes(editor, {\n at: prevPath,\n voids\n });\n } else {\n editor.apply({\n type: 'merge_node',\n path: newPath,\n position,\n properties\n });\n }\n if (emptyRef) {\n emptyRef.unref();\n }\n });\n};\n\nvar moveNodes = (editor, options) => {\n Editor.withoutNormalizing(editor, () => {\n var {\n to,\n at = editor.selection,\n mode = 'lowest',\n voids = false\n } = options;\n var {\n match\n } = options;\n if (!at) {\n return;\n }\n if (match == null) {\n match = Path.isPath(at) ? matchPath(editor, at) : n => Element.isElement(n) && Editor.isBlock(editor, n);\n }\n var toRef = Editor.pathRef(editor, to);\n var targets = Editor.nodes(editor, {\n at,\n match,\n mode,\n voids\n });\n var pathRefs = Array.from(targets, _ref => {\n var [, p] = _ref;\n return Editor.pathRef(editor, p);\n });\n for (var pathRef of pathRefs) {\n var path = pathRef.unref();\n var newPath = toRef.current;\n if (path.length !== 0) {\n editor.apply({\n type: 'move_node',\n path,\n newPath\n });\n }\n if (toRef.current && Path.isSibling(newPath, path) && Path.isAfter(newPath, path)) {\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 toRef.unref();\n });\n};\n\nvar removeNodes = function removeNodes(editor) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n Editor.withoutNormalizing(editor, () => {\n var {\n hanging = false,\n voids = false,\n mode = 'lowest'\n } = options;\n var {\n at = editor.selection,\n match\n } = options;\n if (!at) {\n return;\n }\n if (match == null) {\n match = Path.isPath(at) ? matchPath(editor, at) : n => Element.isElement(n) && Editor.isBlock(editor, n);\n }\n if (!hanging && Range.isRange(at)) {\n at = Editor.unhangRange(editor, at, {\n voids\n });\n }\n var depths = Editor.nodes(editor, {\n at,\n match,\n mode,\n voids\n });\n var pathRefs = Array.from(depths, _ref => {\n var [, p] = _ref;\n return Editor.pathRef(editor, p);\n });\n for (var pathRef of pathRefs) {\n var path = pathRef.unref();\n if (path) {\n var [node] = Editor.node(editor, path);\n editor.apply({\n type: 'remove_node',\n path,\n node\n });\n }\n }\n });\n};\n\nvar setNodes = function setNodes(editor, props) {\n var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n Editor.withoutNormalizing(editor, () => {\n var {\n match,\n at = editor.selection,\n compare,\n merge\n } = options;\n var {\n hanging = false,\n mode = 'lowest',\n split = false,\n voids = false\n } = options;\n if (!at) {\n return;\n }\n if (match == null) {\n match = Path.isPath(at) ? matchPath(editor, at) : n => Element.isElement(n) && Editor.isBlock(editor, n);\n }\n if (!hanging && Range.isRange(at)) {\n at = Editor.unhangRange(editor, at, {\n voids\n });\n }\n if (split && Range.isRange(at)) {\n if (Range.isCollapsed(at) && Editor.leaf(editor, at.anchor)[0].text.length > 0) {\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 var rangeRef = Editor.rangeRef(editor, at, {\n affinity: 'inward'\n });\n var [start, end] = Range.edges(at);\n var splitMode = mode === 'lowest' ? 'lowest' : 'highest';\n var 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 var 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 if (options.at == null) {\n Transforms.select(editor, at);\n }\n }\n if (!compare) {\n compare = (prop, nodeProp) => prop !== nodeProp;\n }\n for (var [node, path] of Editor.nodes(editor, {\n at,\n match,\n mode,\n voids\n })) {\n var properties = {};\n // FIXME: is this correct?\n var newProperties = {};\n // You can't set properties on the editor node.\n if (path.length === 0) {\n continue;\n }\n var hasChanges = false;\n for (var k in props) {\n if (k === 'children' || k === 'text') {\n continue;\n }\n if (compare(props[k], node[k])) {\n hasChanges = true;\n // Omit new properties from the old properties list\n if (node.hasOwnProperty(k)) properties[k] = node[k];\n // Omit properties that have been removed from the new properties list\n if (merge) {\n if (props[k] != null) newProperties[k] = merge(node[k], props[k]);\n } else {\n if (props[k] != null) newProperties[k] = props[k];\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\n/**\n * Convert a range into a point by deleting it's content.\n */\nvar deleteRange = (editor, range) => {\n if (Range.isCollapsed(range)) {\n return range.anchor;\n } else {\n var [, end] = Range.edges(range);\n var pointRef = Editor.pointRef(editor, end);\n Transforms.delete(editor, {\n at: range\n });\n return pointRef.unref();\n }\n};\nvar splitNodes = function splitNodes(editor) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n Editor.withoutNormalizing(editor, () => {\n var {\n mode = 'lowest',\n voids = false\n } = options;\n var {\n match,\n at = editor.selection,\n height = 0,\n always = false\n } = options;\n if (match == null) {\n match = n => Element.isElement(n) && Editor.isBlock(editor, n);\n }\n if (Range.isRange(at)) {\n at = deleteRange(editor, at);\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 var path = at;\n var point = Editor.point(editor, path);\n var [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 if (!at) {\n return;\n }\n var beforeRef = Editor.pointRef(editor, at, {\n affinity: 'backward'\n });\n var afterRef;\n try {\n var [highest] = Editor.nodes(editor, {\n at,\n match,\n mode,\n voids\n });\n if (!highest) {\n return;\n }\n var voidMatch = Editor.void(editor, {\n at,\n mode: 'highest'\n });\n var nudge = 0;\n if (!voids && voidMatch) {\n var [voidNode, voidPath] = voidMatch;\n if (Element.isElement(voidNode) && editor.isInline(voidNode)) {\n var after = Editor.after(editor, voidPath);\n if (!after) {\n var text = {\n text: ''\n };\n var afterPath = Path.next(voidPath);\n Transforms.insertNodes(editor, text, {\n at: afterPath,\n voids\n });\n after = Editor.point(editor, afterPath);\n }\n at = after;\n always = true;\n }\n var siblingHeight = at.path.length - voidPath.length;\n height = siblingHeight + 1;\n always = true;\n }\n afterRef = Editor.pointRef(editor, at);\n var depth = at.path.length - height;\n var [, highestPath] = highest;\n var lowestPath = at.path.slice(0, depth);\n var position = height === 0 ? at.offset : at.path[depth] + nudge;\n for (var [node, _path] of Editor.levels(editor, {\n at: lowestPath,\n reverse: true,\n voids\n })) {\n var split = false;\n if (_path.length < highestPath.length || _path.length === 0 || !voids && Element.isElement(node) && Editor.isVoid(editor, node)) {\n break;\n }\n var _point = beforeRef.current;\n var isEnd = Editor.isEnd(editor, _point, _path);\n if (always || !beforeRef || !Editor.isEdge(editor, _point, _path)) {\n split = true;\n var properties = Node.extractProps(node);\n editor.apply({\n type: 'split_node',\n path: _path,\n position,\n properties\n });\n }\n position = _path[_path.length - 1] + (split || isEnd ? 1 : 0);\n }\n if (options.at == null) {\n var _point2 = afterRef.current || Editor.end(editor, []);\n Transforms.select(editor, _point2);\n }\n } finally {\n var _afterRef;\n beforeRef.unref();\n (_afterRef = afterRef) === null || _afterRef === void 0 || _afterRef.unref();\n }\n });\n};\n\nvar unsetNodes = function unsetNodes(editor, props) {\n var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n if (!Array.isArray(props)) {\n props = [props];\n }\n var obj = {};\n for (var key of props) {\n obj[key] = null;\n }\n Transforms.setNodes(editor, obj, options);\n};\n\nvar unwrapNodes = function unwrapNodes(editor) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n Editor.withoutNormalizing(editor, () => {\n var {\n mode = 'lowest',\n split = false,\n voids = false\n } = options;\n var {\n at = editor.selection,\n match\n } = options;\n if (!at) {\n return;\n }\n if (match == null) {\n match = Path.isPath(at) ? matchPath(editor, at) : n => Element.isElement(n) && Editor.isBlock(editor, n);\n }\n if (Path.isPath(at)) {\n at = Editor.range(editor, at);\n }\n var rangeRef = Range.isRange(at) ? Editor.rangeRef(editor, at) : null;\n var matches = Editor.nodes(editor, {\n at,\n match,\n mode,\n voids\n });\n var pathRefs = Array.from(matches, _ref => {\n var [, p] = _ref;\n return Editor.pathRef(editor, p);\n }\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 var _loop = function _loop() {\n var path = pathRef.unref();\n var [node] = Editor.node(editor, path);\n var range = Editor.range(editor, path);\n if (split && rangeRef) {\n range = Range.intersection(rangeRef.current, range);\n }\n Transforms.liftNodes(editor, {\n at: range,\n match: n => Element.isAncestor(node) && node.children.includes(n),\n voids\n });\n };\n for (var pathRef of pathRefs) {\n _loop();\n }\n if (rangeRef) {\n rangeRef.unref();\n }\n });\n};\n\nfunction ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }\nfunction _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }\nvar wrapNodes = function wrapNodes(editor, element) {\n var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n Editor.withoutNormalizing(editor, () => {\n var {\n mode = 'lowest',\n split = false,\n voids = false\n } = options;\n var {\n match,\n at = editor.selection\n } = options;\n if (!at) {\n return;\n }\n if (match == null) {\n if (Path.isPath(at)) {\n match = matchPath(editor, at);\n } else if (editor.isInline(element)) {\n match = 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 if (split && Range.isRange(at)) {\n var [start, end] = Range.edges(at);\n var rangeRef = Editor.rangeRef(editor, at, {\n affinity: 'inward'\n });\n Transforms.splitNodes(editor, {\n at: end,\n match,\n voids\n });\n Transforms.splitNodes(editor, {\n at: start,\n match,\n voids\n });\n at = rangeRef.unref();\n if (options.at == null) {\n Transforms.select(editor, at);\n }\n }\n var roots = Array.from(Editor.nodes(editor, {\n at,\n match: editor.isInline(element) ? n => Element.isElement(n) && Editor.isBlock(editor, n) : n => Editor.isEditor(n),\n mode: 'lowest',\n voids\n }));\n var _loop = function _loop() {\n var a = Range.isRange(at) ? Range.intersection(at, Editor.range(editor, rootPath)) : at;\n if (!a) {\n return 0; // continue\n }\n var matches = Array.from(Editor.nodes(editor, {\n at: a,\n match,\n mode,\n voids\n }));\n if (matches.length > 0) {\n var [first] = matches;\n var last = matches[matches.length - 1];\n var [, firstPath] = first;\n var [, lastPath] = last;\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 return 0; // continue\n }\n var commonPath = Path.equals(firstPath, lastPath) ? Path.parent(firstPath) : Path.common(firstPath, lastPath);\n var range = Editor.range(editor, firstPath, lastPath);\n var commonNodeEntry = Editor.node(editor, commonPath);\n var [commonNode] = commonNodeEntry;\n var depth = commonPath.length + 1;\n var wrapperPath = Path.next(lastPath.slice(0, depth));\n var wrapper = _objectSpread(_objectSpread({}, element), {}, {\n children: []\n });\n Transforms.insertNodes(editor, wrapper, {\n at: wrapperPath,\n voids\n });\n Transforms.moveNodes(editor, {\n at: range,\n match: n => Element.isAncestor(commonNode) && commonNode.children.includes(n),\n to: wrapperPath.concat(0),\n voids\n });\n }\n },\n _ret;\n for (var [, rootPath] of roots) {\n _ret = _loop();\n if (_ret === 0) continue;\n }\n });\n};\n\n/**\n * Create a new Slate `Editor` object.\n */\nvar createEditor = () => {\n var 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 // Core\n apply: function apply$1() {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n return apply(editor, ...args);\n },\n // Editor\n addMark: function addMark$1() {\n for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n args[_key2] = arguments[_key2];\n }\n return addMark(editor, ...args);\n },\n deleteBackward: function deleteBackward$1() {\n for (var _len3 = arguments.length, args = new Array(_len3), _key3 = 0; _key3 < _len3; _key3++) {\n args[_key3] = arguments[_key3];\n }\n return deleteBackward(editor, ...args);\n },\n deleteForward: function deleteForward$1() {\n for (var _len4 = arguments.length, args = new Array(_len4), _key4 = 0; _key4 < _len4; _key4++) {\n args[_key4] = arguments[_key4];\n }\n return deleteForward(editor, ...args);\n },\n deleteFragment: function deleteFragment$1() {\n for (var _len5 = arguments.length, args = new Array(_len5), _key5 = 0; _key5 < _len5; _key5++) {\n args[_key5] = arguments[_key5];\n }\n return deleteFragment(editor, ...args);\n },\n getFragment: function getFragment$1() {\n for (var _len6 = arguments.length, args = new Array(_len6), _key6 = 0; _key6 < _len6; _key6++) {\n args[_key6] = arguments[_key6];\n }\n return getFragment(editor, ...args);\n },\n insertBreak: function insertBreak$1() {\n for (var _len7 = arguments.length, args = new Array(_len7), _key7 = 0; _key7 < _len7; _key7++) {\n args[_key7] = arguments[_key7];\n }\n return insertBreak(editor, ...args);\n },\n insertSoftBreak: function insertSoftBreak$1() {\n for (var _len8 = arguments.length, args = new Array(_len8), _key8 = 0; _key8 < _len8; _key8++) {\n args[_key8] = arguments[_key8];\n }\n return insertSoftBreak(editor, ...args);\n },\n insertFragment: function insertFragment$1() {\n for (var _len9 = arguments.length, args = new Array(_len9), _key9 = 0; _key9 < _len9; _key9++) {\n args[_key9] = arguments[_key9];\n }\n return insertFragment(editor, ...args);\n },\n insertNode: function insertNode$1() {\n for (var _len10 = arguments.length, args = new Array(_len10), _key10 = 0; _key10 < _len10; _key10++) {\n args[_key10] = arguments[_key10];\n }\n return insertNode(editor, ...args);\n },\n insertText: function insertText$1() {\n for (var _len11 = arguments.length, args = new Array(_len11), _key11 = 0; _key11 < _len11; _key11++) {\n args[_key11] = arguments[_key11];\n }\n return insertText(editor, ...args);\n },\n normalizeNode: function normalizeNode$1() {\n for (var _len12 = arguments.length, args = new Array(_len12), _key12 = 0; _key12 < _len12; _key12++) {\n args[_key12] = arguments[_key12];\n }\n return normalizeNode(editor, ...args);\n },\n removeMark: function removeMark$1() {\n for (var _len13 = arguments.length, args = new Array(_len13), _key13 = 0; _key13 < _len13; _key13++) {\n args[_key13] = arguments[_key13];\n }\n return removeMark(editor, ...args);\n },\n getDirtyPaths: function getDirtyPaths$1() {\n for (var _len14 = arguments.length, args = new Array(_len14), _key14 = 0; _key14 < _len14; _key14++) {\n args[_key14] = arguments[_key14];\n }\n return getDirtyPaths(editor, ...args);\n },\n shouldNormalize: function shouldNormalize$1() {\n for (var _len15 = arguments.length, args = new Array(_len15), _key15 = 0; _key15 < _len15; _key15++) {\n args[_key15] = arguments[_key15];\n }\n return shouldNormalize(editor, ...args);\n },\n // Editor interface\n above: function above$1() {\n for (var _len16 = arguments.length, args = new Array(_len16), _key16 = 0; _key16 < _len16; _key16++) {\n args[_key16] = arguments[_key16];\n }\n return above(editor, ...args);\n },\n after: function after$1() {\n for (var _len17 = arguments.length, args = new Array(_len17), _key17 = 0; _key17 < _len17; _key17++) {\n args[_key17] = arguments[_key17];\n }\n return after(editor, ...args);\n },\n before: function before$1() {\n for (var _len18 = arguments.length, args = new Array(_len18), _key18 = 0; _key18 < _len18; _key18++) {\n args[_key18] = arguments[_key18];\n }\n return before(editor, ...args);\n },\n collapse: function collapse$1() {\n for (var _len19 = arguments.length, args = new Array(_len19), _key19 = 0; _key19 < _len19; _key19++) {\n args[_key19] = arguments[_key19];\n }\n return collapse(editor, ...args);\n },\n delete: function _delete() {\n for (var _len20 = arguments.length, args = new Array(_len20), _key20 = 0; _key20 < _len20; _key20++) {\n args[_key20] = arguments[_key20];\n }\n return deleteText(editor, ...args);\n },\n deselect: function deselect$1() {\n for (var _len21 = arguments.length, args = new Array(_len21), _key21 = 0; _key21 < _len21; _key21++) {\n args[_key21] = arguments[_key21];\n }\n return deselect(editor, ...args);\n },\n edges: function edges$1() {\n for (var _len22 = arguments.length, args = new Array(_len22), _key22 = 0; _key22 < _len22; _key22++) {\n args[_key22] = arguments[_key22];\n }\n return edges(editor, ...args);\n },\n elementReadOnly: function elementReadOnly$1() {\n for (var _len23 = arguments.length, args = new Array(_len23), _key23 = 0; _key23 < _len23; _key23++) {\n args[_key23] = arguments[_key23];\n }\n return elementReadOnly(editor, ...args);\n },\n end: function end$1() {\n for (var _len24 = arguments.length, args = new Array(_len24), _key24 = 0; _key24 < _len24; _key24++) {\n args[_key24] = arguments[_key24];\n }\n return end(editor, ...args);\n },\n first: function first$1() {\n for (var _len25 = arguments.length, args = new Array(_len25), _key25 = 0; _key25 < _len25; _key25++) {\n args[_key25] = arguments[_key25];\n }\n return first(editor, ...args);\n },\n fragment: function fragment$1() {\n for (var _len26 = arguments.length, args = new Array(_len26), _key26 = 0; _key26 < _len26; _key26++) {\n args[_key26] = arguments[_key26];\n }\n return fragment(editor, ...args);\n },\n getMarks: function getMarks() {\n for (var _len27 = arguments.length, args = new Array(_len27), _key27 = 0; _key27 < _len27; _key27++) {\n args[_key27] = arguments[_key27];\n }\n return marks(editor, ...args);\n },\n hasBlocks: function hasBlocks$1() {\n for (var _len28 = arguments.length, args = new Array(_len28), _key28 = 0; _key28 < _len28; _key28++) {\n args[_key28] = arguments[_key28];\n }\n return hasBlocks(editor, ...args);\n },\n hasInlines: function hasInlines$1() {\n for (var _len29 = arguments.length, args = new Array(_len29), _key29 = 0; _key29 < _len29; _key29++) {\n args[_key29] = arguments[_key29];\n }\n return hasInlines(editor, ...args);\n },\n hasPath: function hasPath$1() {\n for (var _len30 = arguments.length, args = new Array(_len30), _key30 = 0; _key30 < _len30; _key30++) {\n args[_key30] = arguments[_key30];\n }\n return hasPath(editor, ...args);\n },\n hasTexts: function hasTexts$1() {\n for (var _len31 = arguments.length, args = new Array(_len31), _key31 = 0; _key31 < _len31; _key31++) {\n args[_key31] = arguments[_key31];\n }\n return hasTexts(editor, ...args);\n },\n insertNodes: function insertNodes$1() {\n for (var _len32 = arguments.length, args = new Array(_len32), _key32 = 0; _key32 < _len32; _key32++) {\n args[_key32] = arguments[_key32];\n }\n return insertNodes(editor, ...args);\n },\n isBlock: function isBlock$1() {\n for (var _len33 = arguments.length, args = new Array(_len33), _key33 = 0; _key33 < _len33; _key33++) {\n args[_key33] = arguments[_key33];\n }\n return isBlock(editor, ...args);\n },\n isEdge: function isEdge$1() {\n for (var _len34 = arguments.length, args = new Array(_len34), _key34 = 0; _key34 < _len34; _key34++) {\n args[_key34] = arguments[_key34];\n }\n return isEdge(editor, ...args);\n },\n isEmpty: function isEmpty$1() {\n for (var _len35 = arguments.length, args = new Array(_len35), _key35 = 0; _key35 < _len35; _key35++) {\n args[_key35] = arguments[_key35];\n }\n return isEmpty(editor, ...args);\n },\n isEnd: function isEnd$1() {\n for (var _len36 = arguments.length, args = new Array(_len36), _key36 = 0; _key36 < _len36; _key36++) {\n args[_key36] = arguments[_key36];\n }\n return isEnd(editor, ...args);\n },\n isNormalizing: function isNormalizing$1() {\n for (var _len37 = arguments.length, args = new Array(_len37), _key37 = 0; _key37 < _len37; _key37++) {\n args[_key37] = arguments[_key37];\n }\n return isNormalizing(editor, ...args);\n },\n isStart: function isStart$1() {\n for (var _len38 = arguments.length, args = new Array(_len38), _key38 = 0; _key38 < _len38; _key38++) {\n args[_key38] = arguments[_key38];\n }\n return isStart(editor, ...args);\n },\n last: function last$1() {\n for (var _len39 = arguments.length, args = new Array(_len39), _key39 = 0; _key39 < _len39; _key39++) {\n args[_key39] = arguments[_key39];\n }\n return last(editor, ...args);\n },\n leaf: function leaf$1() {\n for (var _len40 = arguments.length, args = new Array(_len40), _key40 = 0; _key40 < _len40; _key40++) {\n args[_key40] = arguments[_key40];\n }\n return leaf(editor, ...args);\n },\n levels: function levels$1() {\n for (var _len41 = arguments.length, args = new Array(_len41), _key41 = 0; _key41 < _len41; _key41++) {\n args[_key41] = arguments[_key41];\n }\n return levels(editor, ...args);\n },\n liftNodes: function liftNodes$1() {\n for (var _len42 = arguments.length, args = new Array(_len42), _key42 = 0; _key42 < _len42; _key42++) {\n args[_key42] = arguments[_key42];\n }\n return liftNodes(editor, ...args);\n },\n mergeNodes: function mergeNodes$1() {\n for (var _len43 = arguments.length, args = new Array(_len43), _key43 = 0; _key43 < _len43; _key43++) {\n args[_key43] = arguments[_key43];\n }\n return mergeNodes(editor, ...args);\n },\n move: function move$1() {\n for (var _len44 = arguments.length, args = new Array(_len44), _key44 = 0; _key44 < _len44; _key44++) {\n args[_key44] = arguments[_key44];\n }\n return move(editor, ...args);\n },\n moveNodes: function moveNodes$1() {\n for (var _len45 = arguments.length, args = new Array(_len45), _key45 = 0; _key45 < _len45; _key45++) {\n args[_key45] = arguments[_key45];\n }\n return moveNodes(editor, ...args);\n },\n next: function next$1() {\n for (var _len46 = arguments.length, args = new Array(_len46), _key46 = 0; _key46 < _len46; _key46++) {\n args[_key46] = arguments[_key46];\n }\n return next(editor, ...args);\n },\n node: function node$1() {\n for (var _len47 = arguments.length, args = new Array(_len47), _key47 = 0; _key47 < _len47; _key47++) {\n args[_key47] = arguments[_key47];\n }\n return node(editor, ...args);\n },\n nodes: function nodes$1() {\n for (var _len48 = arguments.length, args = new Array(_len48), _key48 = 0; _key48 < _len48; _key48++) {\n args[_key48] = arguments[_key48];\n }\n return nodes(editor, ...args);\n },\n normalize: function normalize$1() {\n for (var _len49 = arguments.length, args = new Array(_len49), _key49 = 0; _key49 < _len49; _key49++) {\n args[_key49] = arguments[_key49];\n }\n return normalize(editor, ...args);\n },\n parent: function parent$1() {\n for (var _len50 = arguments.length, args = new Array(_len50), _key50 = 0; _key50 < _len50; _key50++) {\n args[_key50] = arguments[_key50];\n }\n return parent(editor, ...args);\n },\n path: function path$1() {\n for (var _len51 = arguments.length, args = new Array(_len51), _key51 = 0; _key51 < _len51; _key51++) {\n args[_key51] = arguments[_key51];\n }\n return path(editor, ...args);\n },\n pathRef: function pathRef$1() {\n for (var _len52 = arguments.length, args = new Array(_len52), _key52 = 0; _key52 < _len52; _key52++) {\n args[_key52] = arguments[_key52];\n }\n return pathRef(editor, ...args);\n },\n pathRefs: function pathRefs$1() {\n for (var _len53 = arguments.length, args = new Array(_len53), _key53 = 0; _key53 < _len53; _key53++) {\n args[_key53] = arguments[_key53];\n }\n return pathRefs(editor, ...args);\n },\n point: function point$1() {\n for (var _len54 = arguments.length, args = new Array(_len54), _key54 = 0; _key54 < _len54; _key54++) {\n args[_key54] = arguments[_key54];\n }\n return point(editor, ...args);\n },\n pointRef: function pointRef$1() {\n for (var _len55 = arguments.length, args = new Array(_len55), _key55 = 0; _key55 < _len55; _key55++) {\n args[_key55] = arguments[_key55];\n }\n return pointRef(editor, ...args);\n },\n pointRefs: function pointRefs$1() {\n for (var _len56 = arguments.length, args = new Array(_len56), _key56 = 0; _key56 < _len56; _key56++) {\n args[_key56] = arguments[_key56];\n }\n return pointRefs(editor, ...args);\n },\n positions: function positions$1() {\n for (var _len57 = arguments.length, args = new Array(_len57), _key57 = 0; _key57 < _len57; _key57++) {\n args[_key57] = arguments[_key57];\n }\n return positions(editor, ...args);\n },\n previous: function previous$1() {\n for (var _len58 = arguments.length, args = new Array(_len58), _key58 = 0; _key58 < _len58; _key58++) {\n args[_key58] = arguments[_key58];\n }\n return previous(editor, ...args);\n },\n range: function range$1() {\n for (var _len59 = arguments.length, args = new Array(_len59), _key59 = 0; _key59 < _len59; _key59++) {\n args[_key59] = arguments[_key59];\n }\n return range(editor, ...args);\n },\n rangeRef: function rangeRef$1() {\n for (var _len60 = arguments.length, args = new Array(_len60), _key60 = 0; _key60 < _len60; _key60++) {\n args[_key60] = arguments[_key60];\n }\n return rangeRef(editor, ...args);\n },\n rangeRefs: function rangeRefs$1() {\n for (var _len61 = arguments.length, args = new Array(_len61), _key61 = 0; _key61 < _len61; _key61++) {\n args[_key61] = arguments[_key61];\n }\n return rangeRefs(editor, ...args);\n },\n removeNodes: function removeNodes$1() {\n for (var _len62 = arguments.length, args = new Array(_len62), _key62 = 0; _key62 < _len62; _key62++) {\n args[_key62] = arguments[_key62];\n }\n return removeNodes(editor, ...args);\n },\n select: function select$1() {\n for (var _len63 = arguments.length, args = new Array(_len63), _key63 = 0; _key63 < _len63; _key63++) {\n args[_key63] = arguments[_key63];\n }\n return select(editor, ...args);\n },\n setNodes: function setNodes$1() {\n for (var _len64 = arguments.length, args = new Array(_len64), _key64 = 0; _key64 < _len64; _key64++) {\n args[_key64] = arguments[_key64];\n }\n return setNodes(editor, ...args);\n },\n setNormalizing: function setNormalizing$1() {\n for (var _len65 = arguments.length, args = new Array(_len65), _key65 = 0; _key65 < _len65; _key65++) {\n args[_key65] = arguments[_key65];\n }\n return setNormalizing(editor, ...args);\n },\n setPoint: function setPoint$1() {\n for (var _len66 = arguments.length, args = new Array(_len66), _key66 = 0; _key66 < _len66; _key66++) {\n args[_key66] = arguments[_key66];\n }\n return setPoint(editor, ...args);\n },\n setSelection: function setSelection$1() {\n for (var _len67 = arguments.length, args = new Array(_len67), _key67 = 0; _key67 < _len67; _key67++) {\n args[_key67] = arguments[_key67];\n }\n return setSelection(editor, ...args);\n },\n splitNodes: function splitNodes$1() {\n for (var _len68 = arguments.length, args = new Array(_len68), _key68 = 0; _key68 < _len68; _key68++) {\n args[_key68] = arguments[_key68];\n }\n return splitNodes(editor, ...args);\n },\n start: function start$1() {\n for (var _len69 = arguments.length, args = new Array(_len69), _key69 = 0; _key69 < _len69; _key69++) {\n args[_key69] = arguments[_key69];\n }\n return start(editor, ...args);\n },\n string: function string$1() {\n for (var _len70 = arguments.length, args = new Array(_len70), _key70 = 0; _key70 < _len70; _key70++) {\n args[_key70] = arguments[_key70];\n }\n return string(editor, ...args);\n },\n unhangRange: function unhangRange$1() {\n for (var _len71 = arguments.length, args = new Array(_len71), _key71 = 0; _key71 < _len71; _key71++) {\n args[_key71] = arguments[_key71];\n }\n return unhangRange(editor, ...args);\n },\n unsetNodes: function unsetNodes$1() {\n for (var _len72 = arguments.length, args = new Array(_len72), _key72 = 0; _key72 < _len72; _key72++) {\n args[_key72] = arguments[_key72];\n }\n return unsetNodes(editor, ...args);\n },\n unwrapNodes: function unwrapNodes$1() {\n for (var _len73 = arguments.length, args = new Array(_len73), _key73 = 0; _key73 < _len73; _key73++) {\n args[_key73] = arguments[_key73];\n }\n return unwrapNodes(editor, ...args);\n },\n void: function _void() {\n for (var _len74 = arguments.length, args = new Array(_len74), _key74 = 0; _key74 < _len74; _key74++) {\n args[_key74] = arguments[_key74];\n }\n return getVoid(editor, ...args);\n },\n withoutNormalizing: function withoutNormalizing$1() {\n for (var _len75 = arguments.length, args = new Array(_len75), _key75 = 0; _key75 < _len75; _key75++) {\n args[_key75] = arguments[_key75];\n }\n return withoutNormalizing(editor, ...args);\n },\n wrapNodes: function wrapNodes$1() {\n for (var _len76 = arguments.length, args = new Array(_len76), _key76 = 0; _key76 < _len76; _key76++) {\n args[_key76] = arguments[_key76];\n }\n return wrapNodes(editor, ...args);\n },\n shouldMergeNodesRemovePrevNode: function shouldMergeNodesRemovePrevNode$1() {\n for (var _len77 = arguments.length, args = new Array(_len77), _key77 = 0; _key77 < _len77; _key77++) {\n args[_key77] = arguments[_key77];\n }\n return shouldMergeNodesRemovePrevNode(editor, ...args);\n }\n };\n return editor;\n};\n\nexport { Editor, Element, Location, Node, Operation, Path, PathRef, Point, PointRef, Range, RangeRef, Scrubber, Span, Text, Transforms, above, addMark, after, apply, before, collapse, createEditor, deleteBackward, deleteForward, deleteFragment, deleteText, deselect, edges, elementReadOnly, end, first, fragment, getDirtyPaths, getFragment, getVoid, hasBlocks, hasInlines, hasPath, hasTexts, insertBreak, insertFragment, insertNode, insertNodes, insertSoftBreak, insertText, isBlock, isEdge, isEditor, isEmpty, isEnd, isNormalizing, isStart, last, leaf, levels, liftNodes, marks, mergeNodes, move, moveNodes, next, node, nodes, normalize, normalizeNode, parent, path, pathRef, pathRefs, point, pointRef, pointRefs, positions, previous, range, rangeRef, rangeRefs, removeMark, removeNodes, select, setNodes, setNormalizing, setPoint, setSelection, shouldMergeNodesRemovePrevNode, shouldNormalize, splitNodes, start, string, unhangRange, unsetNodes, unwrapNodes, withoutNormalizing, wrapNodes };\n//# sourceMappingURL=index.es.js.map\n","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nvar style_to_object_1 = __importDefault(require(\"style-to-object\"));\nvar utilities_1 = require(\"./utilities\");\n/**\n * Parses CSS inline style to JavaScript object (camelCased).\n */\nfunction StyleToJS(style, options) {\n var output = {};\n if (!style || typeof style !== 'string') {\n return output;\n }\n (0, style_to_object_1.default)(style, function (property, value) {\n // skip CSS comment\n if (property && value) {\n output[(0, utilities_1.camelCase)(property, options)] = value;\n }\n });\n return output;\n}\nStyleToJS.default = StyleToJS;\nmodule.exports = StyleToJS;\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.camelCase = void 0;\nvar CUSTOM_PROPERTY_REGEX = /^--[a-zA-Z0-9_-]+$/;\nvar HYPHEN_REGEX = /-([a-z])/g;\nvar NO_HYPHEN_REGEX = /^[^-]+$/;\nvar VENDOR_PREFIX_REGEX = /^-(webkit|moz|ms|o|khtml)-/;\nvar MS_VENDOR_PREFIX_REGEX = /^-(ms)-/;\n/**\n * Checks whether to skip camelCase.\n */\nvar skipCamelCase = function (property) {\n return !property ||\n NO_HYPHEN_REGEX.test(property) ||\n CUSTOM_PROPERTY_REGEX.test(property);\n};\n/**\n * Replacer that capitalizes first character.\n */\nvar capitalize = function (match, character) {\n return character.toUpperCase();\n};\n/**\n * Replacer that removes beginning hyphen of vendor prefix property.\n */\nvar trimHyphen = function (match, prefix) { return \"\".concat(prefix, \"-\"); };\n/**\n * CamelCases a CSS property.\n */\nvar camelCase = function (property, options) {\n if (options === void 0) { options = {}; }\n if (skipCamelCase(property)) {\n return property;\n }\n property = property.toLowerCase();\n if (options.reactCompat) {\n // `-ms` vendor prefix should not be capitalized\n property = property.replace(MS_VENDOR_PREFIX_REGEX, trimHyphen);\n }\n else {\n // for non-React, remove first hyphen so vendor prefix is not capitalized\n property = property.replace(VENDOR_PREFIX_REGEX, trimHyphen);\n }\n return property.replace(HYPHEN_REGEX, capitalize);\n};\nexports.camelCase = camelCase;\n//# sourceMappingURL=utilities.js.map","var parse = require('inline-style-parser');\n\n/**\n * Parses inline style to object.\n *\n * @example\n * // returns { 'line-height': '42' }\n * StyleToObject('line-height: 42;');\n *\n * @param {String} style - The inline style.\n * @param {Function} [iterator] - The iterator function.\n * @return {null|Object}\n */\nfunction StyleToObject(style, iterator) {\n var output = null;\n if (!style || typeof style !== 'string') {\n return output;\n }\n\n var declaration;\n var declarations = parse(style);\n var hasIterator = typeof iterator === 'function';\n var property;\n var value;\n\n for (var i = 0, len = declarations.length; i < len; i++) {\n declaration = declarations[i];\n property = declaration.property;\n value = declaration.value;\n\n if (hasIterator) {\n iterator(property, value, declaration);\n } else if (value) {\n output || (output = {});\n output[property] = value;\n }\n }\n\n return output;\n}\n\nmodule.exports = StyleToObject;\nmodule.exports.default = StyleToObject; // ESM support\n","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.default = StyleToObject;\nvar inline_style_parser_1 = __importDefault(require(\"inline-style-parser\"));\n/**\n * Parses inline style to object.\n *\n * @param style - Inline style.\n * @param iterator - Iterator.\n * @returns - Style object or null.\n *\n * @example Parsing inline style to object:\n *\n * ```js\n * import parse from 'style-to-object';\n * parse('line-height: 42;'); // { 'line-height': '42' }\n * ```\n */\nfunction StyleToObject(style, iterator) {\n var styleObject = null;\n if (!style || typeof style !== 'string') {\n return styleObject;\n }\n var declarations = (0, inline_style_parser_1.default)(style);\n var hasIterator = typeof iterator === 'function';\n declarations.forEach(function (declaration) {\n if (declaration.type !== 'declaration') {\n return;\n }\n var property = declaration.property, value = declaration.value;\n if (hasIterator) {\n iterator(property, value, declaration);\n }\n else if (value) {\n styleObject = styleObject || {};\n styleObject[property] = value;\n }\n });\n return styleObject;\n}\n//# sourceMappingURL=index.js.map","/**\n * Parse space-separated tokens to an array of strings.\n *\n * @param {string} value\n * Space-separated tokens.\n * @returns {Array}\n * List of tokens.\n */\nexport function parse(value) {\n const input = String(value || '').trim()\n return input ? input.split(/[ \\t\\n\\r\\f]+/g) : []\n}\n\n/**\n * Serialize an array of strings as space separated-tokens.\n *\n * @param {Array} values\n * List of tokens.\n * @returns {string}\n * Space-separated tokens.\n */\nexport function stringify(values) {\n return values.join(' ').trim()\n}\n","import StyleToObject from './index.js';\n\nexport default StyleToObject;\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","reverse","paths","levels","slice","common","another","i","av","push","compare","min","Math","endsAfter","as","bs","bv","equals","endsAt","endsBefore","every","n","hasPrevious","isAfter","isAncestor","isBefore","isChild","isCommon","isDescendant","isParent","isPath","value","Array","isArray","isSibling","list","next","Error","concat","last","operationCanTransformPath","operation","type","parent","previous","relative","ancestor","p","_op","_op2","position","_op3","_position","_op4","newPath","onp","copy","_typeof","o","Symbol","iterator","constructor","prototype","_toPropertyKey","arg","key","input","hint","prim","toPrimitive","res","call","TypeError","String","Number","_toPrimitive","_defineProperty","obj","Object","defineProperty","enumerable","configurable","writable","ownKeys$e","e","r","t","keys","getOwnPropertySymbols","filter","getOwnPropertyDescriptor","apply","_objectSpread$e","forEach","getOwnPropertyDescriptors","defineProperties","GeneralTransforms","editor","children","selection","node","Node","index","splice","points","_path","offset","text","_node","leaf","before","after","_point","_key","_path2","_node2","get","prevPath","prev","_parent","_index","Text","isText","Scrubber","stringify","_point2","_key2","_path3","_node3","_parent2","_index2","truePath","newParent","newIndex","_point3","_key3","_path4","_index3","_point4","_key4","result","_prev","texts","preferNext","_path5","_offset","_text","_node4","_before","_after","_point5","_key5","_path6","properties","newProperties","_node5","_key6","_key7","hasOwnProperty","_newProperties","isRange","_key8","_value","_path7","_properties","newNode","_node6","_parent4","_index4","_before2","_after2","_before3","_after3","_point6","_key9","applyToDraft","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","_objectWithoutProperties","source","excluded","sourceKeys","indexOf","_objectWithoutPropertiesLoose","sourceSymbolKeys","propertyIsEnumerable","_excluded$4","ownKeys$d","edges","range","anchor","focus","isBackward","end","surrounds","intersectionRange","intersection","includes","rs","re","ts","te","start","isAfterStart","isBeforeEnd","isPoint","rest","s1","e1","s2","e2","_objectSpread$d","isCollapsed","isExpanded","isForward","affinityAnchor","affinityFocus","isElement","isNodeList","Editor","isEditor","Element","isElementList","val","isElementProps","isElementType","elementVal","elementKey","matches","_excluded$3","_excluded2$3","IS_NODE_LIST_CACHE","root","entry","child","c","childPath","descendant","descendants","elements","extractProps","first","fragment","newRoot","nodeEntries","pass","_ref","_leaf","getIf","has","isNode","cachedResult","set","isTextProps","from","to","visited","Set","add","nextIndex","parentPath","string","map","join","ownKeys$c","_objectSpread$c","Operation","isNodeOperation","isOperation","endsWith","isOperationList","isSelectionOperation","isTextOperation","inverse","inversePath","inverseNewPath","IS_EDITOR_CACHE","above","addMark","at","deleteBackward","unit","deleteForward","deleteFragment","elementReadOnly","hasBlocks","hasInlines","hasPath","hasTexts","insertBreak","insertFragment","insertNode","insertSoftBreak","insertText","isBlock","isEdge","cachedIsEditor","isElementReadOnly","isInline","isSelectable","isVoid","normalizeNode","onChange","removeMark","getDirtyPaths","marks","operations","isEmpty","isEnd","isNormalizing","isStart","getMarks","normalize","pathRef","pathRefs","pointRef","pointRefs","positions","rangeRef","rangeRefs","setNormalizing","unhangRange","void","withoutNormalizing","fn","shouldMergeNodesRemovePrevNode","prevNode","curNode","Span","isSpan","ownKeys$b","_objectSpread$b","_scrubber","setScrubber","scrubber","JSON","_excluded$2","_excluded2$2","ownKeys$a","_objectSpread$a","CodepointType","loose","omitText","isTextList","decorations","leaves","dec","leafEnd","decorationStart","decorationEnd","leafStart","assign","middle","off","_off","getDefaultInsertLocation","matchPath","getCharacterDistance","str","isRTL","isLTR","codepoints","codepointsIteratorRTL","left","None","right","distance","gb12Or13","char","code","codePointAt","getCodepointType","intersects","ZWJ","ExtPict","endsWithEmojiZWJ","substring","RI","endsWithOddNumberOfRIs","isBoundaryPair","SPACE","PUNCTUATION","CHAMELEON","splitByCharacterDistance","dist","isWordCharacter","remaining","test","charDist","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","TextTransforms","delete","voids","startRef","endRef","Transforms","startPoint","endPoint","ownKeys$9","_objectSpread$9","BATCHING_DIRTY_PATHS","updateDirtyPaths","newDirtyPaths","dirtyPaths","dirtyPathKeys","oldDirtyPaths","oldDirtyPathKeys","_ref2","isBatchingDirtyPaths","Promise","resolve","then","ownKeys$8","_objectSpread$8","ownKeys$7","_objectSpread$7","ownKeys$6","_objectSpread$6","ownKeys$5","_objectSpread$5","ownKeys$4","_objectSpread$4","ownKeys$3","_objectSpread$3","_excluded$1","_excluded2$1","force","popDirtyPath","pop","getDirtyPathKeys","allPaths","allPathKeys","dirtyPath","_","initialDirtyPathsLength","iteration","shouldNormalize","_dirtyPath","_entry","ignoreNonSelectable","isNewBlock","blockText","leafTextRemaining","leafTextOffset","s","isFirst","calcDistance","started","getWordDistance","ownKeys$2","parentNode","markableVoid","expandedSelection","markAcceptingVoidSelected","selectedNode","selectedPath","split","_objectSpread$2","ownKeys$1","_objectSpread$1","hanging","mode","batchDirty","isAtEnd","batchedOps","update","batchDirtyPaths","_loop","_excluded","_excluded2","hasSingleChildNest","height","always","deleteRange","afterRef","beforeRef","highest","voidMatch","voidNode","voidPath","afterPath","depth","highestPath","lowestPath","_afterRef","ownKeys","_objectSpread","createEditor","_len","args","_len2","_len3","_len4","_len5","direction","getFragment","_len6","_len7","_len8","_len9","inlineElementMatch","_inlinePath","blockMatch","blockPath","isBlockStart","isBlockEnd","isBlockEmpty","mergeStart","mergeEnd","firstPath","lastPath","matcher","starts","middles","ends","starting","inlineMatch","inlinePath","isInlineStart","isInlineEnd","middleRef","_end","_len10","_key10","_len11","_key11","_len12","_key12","shouldHaveInlines","currentNode","_child","isLast","_len13","_key13","_len14","_key14","oldAncestors","newAncestors","_ancestor","_p","resultPath","_len15","_key15","maxIterations","_len16","_key16","_len17","_key17","edge","d","_len18","_key18","_len19","_key19","_len20","_key20","_Editor$void","_Editor$void2","furthestVoid","opts","endOfDoc","startBlock","endBlock","isAcrossBlocks","isSingleText","startNonEditable","endNonEditable","removedText","startUnref","endUnref","deleteText","_len21","_key21","_len22","_key22","_len23","_key23","_len24","_key24","_len25","_key25","_len26","_key26","_len27","_key27","block","_len28","_key28","some","_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","parentNodeEntry","toPath","_toPath","splitPath","_toPath2","_len43","_key43","commonPath","isPreviousSibling","emptyAncestor","emptyRef","_len44","_key44","_len45","_key45","toRef","targets","_len46","_key46","pointAfterLocation","span","_len47","_key47","_len48","_key48","universal","hit","isLower","emit","_len49","_key49","_len50","_key50","_len51","_key51","_len52","_key52","_len53","_key53","refs","_len54","_key54","_len55","_key55","_len56","_key56","_len57","_key57","_len58","_key58","pointBeforeLocation","_len59","_key59","_len60","_key60","_len61","_key61","_len62","_key62","depths","_len63","_key63","_len64","_key64","merge","splitMode","endAtEndOfNode","startAtStartOfNode","prop","nodeProp","hasChanges","k","_len65","_key65","_len66","_key66","_len67","_key67","oldProps","newProps","_len68","_key68","_len69","_key69","_len70","_key70","_len71","_key71","skip","_len72","_key72","_len73","_key73","_len74","_key74","getVoid","_len75","_key75","_len76","_key76","roots","rootPath","commonNodeEntry","commonNode","wrapperPath","wrapper","_len77","_key77","style_to_object_1","this","__importDefault","mod","__esModule","utilities_1","StyleToJS","style","output","default","property","camelCase","module","exports","CUSTOM_PROPERTY_REGEX","HYPHEN_REGEX","NO_HYPHEN_REGEX","VENDOR_PREFIX_REGEX","MS_VENDOR_PREFIX_REGEX","capitalize","character","toUpperCase","trimHyphen","prefix","skipCamelCase","toLowerCase","reactCompat","replace","parse","StyleToObject","declaration","declarations","hasIterator","len","styleObject","inline_style_parser_1","values","trim"],"sourceRoot":""}