miyuan-editor 0.0.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (58) hide show
  1. package/README.md +525 -0
  2. package/dist/core/index.cjs.js +40 -0
  3. package/dist/core/index.esm.js +4 -0
  4. package/dist/dist-5Q_Z9Ell.js +6390 -0
  5. package/dist/dist-5Q_Z9Ell.js.map +1 -0
  6. package/dist/dist-CMM6n8DO.cjs +4629 -0
  7. package/dist/dist-CMM6n8DO.cjs.map +1 -0
  8. package/dist/dist-CRSJDo2G.cjs +6617 -0
  9. package/dist/dist-CRSJDo2G.cjs.map +1 -0
  10. package/dist/dist-CZw77IJK.js +4612 -0
  11. package/dist/dist-CZw77IJK.js.map +1 -0
  12. package/dist/dist-CnVrDtsI.js +556 -0
  13. package/dist/dist-CnVrDtsI.js.map +1 -0
  14. package/dist/dist-rItBfhNb.cjs +591 -0
  15. package/dist/dist-rItBfhNb.cjs.map +1 -0
  16. package/dist/export-utils-CYaNoyVg.cjs +167 -0
  17. package/dist/export-utils-CYaNoyVg.cjs.map +1 -0
  18. package/dist/export-utils-DN0Gu8Vu.js +144 -0
  19. package/dist/export-utils-DN0Gu8Vu.js.map +1 -0
  20. package/dist/extension-BPFuYyzN.cjs +338 -0
  21. package/dist/extension-BPFuYyzN.cjs.map +1 -0
  22. package/dist/extension-Cl6x5MDR.js +321 -0
  23. package/dist/extension-Cl6x5MDR.js.map +1 -0
  24. package/dist/extensions/index.cjs.js +3462 -0
  25. package/dist/extensions/index.cjs.js.map +1 -0
  26. package/dist/extensions/index.esm.js +3412 -0
  27. package/dist/extensions/index.esm.js.map +1 -0
  28. package/dist/prompt-B4AOP8f_.js +24143 -0
  29. package/dist/prompt-B4AOP8f_.js.map +1 -0
  30. package/dist/prompt-CGLw2O21.cjs +25530 -0
  31. package/dist/prompt-CGLw2O21.cjs.map +1 -0
  32. package/dist/react/index.cjs.js +839 -0
  33. package/dist/react/index.cjs.js.map +1 -0
  34. package/dist/react/index.esm.js +820 -0
  35. package/dist/react/index.esm.js.map +1 -0
  36. package/dist/shortcut-panel-BskGXV8n.js +49468 -0
  37. package/dist/shortcut-panel-BskGXV8n.js.map +1 -0
  38. package/dist/shortcut-panel-yP4RPTFt.cjs +49563 -0
  39. package/dist/shortcut-panel-yP4RPTFt.cjs.map +1 -0
  40. package/dist/toc-extension-BESc0uEW.js +150 -0
  41. package/dist/toc-extension-BESc0uEW.js.map +1 -0
  42. package/dist/toc-extension-SRvSuskn.cjs +173 -0
  43. package/dist/toc-extension-SRvSuskn.cjs.map +1 -0
  44. package/dist/toolbar-config-Cgc9mV2v.js +243 -0
  45. package/dist/toolbar-config-Cgc9mV2v.js.map +1 -0
  46. package/dist/toolbar-config-Cjt_fPMi.cjs +260 -0
  47. package/dist/toolbar-config-Cjt_fPMi.cjs.map +1 -0
  48. package/dist/ui/index.cjs.js +18 -0
  49. package/dist/ui/index.esm.js +3 -0
  50. package/dist/vue/index.cjs.js +323 -0
  51. package/dist/vue/index.cjs.js.map +1 -0
  52. package/dist/vue/index.esm.js +307 -0
  53. package/dist/vue/index.esm.js.map +1 -0
  54. package/dist/vue2/index.cjs.js +323 -0
  55. package/dist/vue2/index.cjs.js.map +1 -0
  56. package/dist/vue2/index.esm.js +307 -0
  57. package/dist/vue2/index.esm.js.map +1 -0
  58. package/package.json +116 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dist-CnVrDtsI.js","names":[],"sources":["../node_modules/.pnpm/prosemirror-schema-list@1.5.1/node_modules/prosemirror-schema-list/dist/index.js","../node_modules/.pnpm/rope-sequence@1.3.4/node_modules/rope-sequence/dist/index.js","../node_modules/.pnpm/prosemirror-history@1.5.0/node_modules/prosemirror-history/dist/index.js"],"sourcesContent":["import { findWrapping, ReplaceAroundStep, canSplit, liftTarget, canJoin } from 'prosemirror-transform';\nimport { NodeRange, Fragment, Slice } from 'prosemirror-model';\nimport { Selection } from 'prosemirror-state';\n\nconst olDOM = [\"ol\", 0], ulDOM = [\"ul\", 0], liDOM = [\"li\", 0];\n/**\nAn ordered list [node spec](https://prosemirror.net/docs/ref/#model.NodeSpec). Has a single\nattribute, `order`, which determines the number at which the list\nstarts counting, and defaults to 1. Represented as an `<ol>`\nelement.\n*/\nconst orderedList = {\n attrs: { order: { default: 1, validate: \"number\" } },\n parseDOM: [{ tag: \"ol\", getAttrs(dom) {\n return { order: dom.hasAttribute(\"start\") ? +dom.getAttribute(\"start\") : 1 };\n } }],\n toDOM(node) {\n return node.attrs.order == 1 ? olDOM : [\"ol\", { start: node.attrs.order }, 0];\n }\n};\n/**\nA bullet list node spec, represented in the DOM as `<ul>`.\n*/\nconst bulletList = {\n parseDOM: [{ tag: \"ul\" }],\n toDOM() { return ulDOM; }\n};\n/**\nA list item (`<li>`) spec.\n*/\nconst listItem = {\n parseDOM: [{ tag: \"li\" }],\n toDOM() { return liDOM; },\n defining: true\n};\nfunction add(obj, props) {\n let copy = {};\n for (let prop in obj)\n copy[prop] = obj[prop];\n for (let prop in props)\n copy[prop] = props[prop];\n return copy;\n}\n/**\nConvenience function for adding list-related node types to a map\nspecifying the nodes for a schema. Adds\n[`orderedList`](https://prosemirror.net/docs/ref/#schema-list.orderedList) as `\"ordered_list\"`,\n[`bulletList`](https://prosemirror.net/docs/ref/#schema-list.bulletList) as `\"bullet_list\"`, and\n[`listItem`](https://prosemirror.net/docs/ref/#schema-list.listItem) as `\"list_item\"`.\n\n`itemContent` determines the content expression for the list items.\nIf you want the commands defined in this module to apply to your\nlist structure, it should have a shape like `\"paragraph block*\"` or\n`\"paragraph (ordered_list | bullet_list)*\"`. `listGroup` can be\ngiven to assign a group name to the list node types, for example\n`\"block\"`.\n*/\nfunction addListNodes(nodes, itemContent, listGroup) {\n return nodes.append({\n ordered_list: add(orderedList, { content: \"list_item+\", group: listGroup }),\n bullet_list: add(bulletList, { content: \"list_item+\", group: listGroup }),\n list_item: add(listItem, { content: itemContent })\n });\n}\n/**\nReturns a command function that wraps the selection in a list with\nthe given type an attributes. If `dispatch` is null, only return a\nvalue to indicate whether this is possible, but don't actually\nperform the change.\n*/\nfunction wrapInList(listType, attrs = null) {\n return function (state, dispatch) {\n let { $from, $to } = state.selection;\n let range = $from.blockRange($to);\n if (!range)\n return false;\n let tr = dispatch ? state.tr : null;\n if (!wrapRangeInList(tr, range, listType, attrs))\n return false;\n if (dispatch)\n dispatch(tr.scrollIntoView());\n return true;\n };\n}\n/**\nTry to wrap the given node range in a list of the given type.\nReturn `true` when this is possible, `false` otherwise. When `tr`\nis non-null, the wrapping is added to that transaction. When it is\n`null`, the function only queries whether the wrapping is\npossible.\n*/\nfunction wrapRangeInList(tr, range, listType, attrs = null) {\n let doJoin = false, outerRange = range, doc = range.$from.doc;\n // This is at the top of an existing list item\n if (range.depth >= 2 && range.$from.node(range.depth - 1).type.compatibleContent(listType) && range.startIndex == 0) {\n // Don't do anything if this is the top of the list\n if (range.$from.index(range.depth - 1) == 0)\n return false;\n let $insert = doc.resolve(range.start - 2);\n outerRange = new NodeRange($insert, $insert, range.depth);\n if (range.endIndex < range.parent.childCount)\n range = new NodeRange(range.$from, doc.resolve(range.$to.end(range.depth)), range.depth);\n doJoin = true;\n }\n let wrap = findWrapping(outerRange, listType, attrs, range);\n if (!wrap)\n return false;\n if (tr)\n doWrapInList(tr, range, wrap, doJoin, listType);\n return true;\n}\nfunction doWrapInList(tr, range, wrappers, joinBefore, listType) {\n let content = Fragment.empty;\n for (let i = wrappers.length - 1; i >= 0; i--)\n content = Fragment.from(wrappers[i].type.create(wrappers[i].attrs, content));\n tr.step(new ReplaceAroundStep(range.start - (joinBefore ? 2 : 0), range.end, range.start, range.end, new Slice(content, 0, 0), wrappers.length, true));\n let found = 0;\n for (let i = 0; i < wrappers.length; i++)\n if (wrappers[i].type == listType)\n found = i + 1;\n let splitDepth = wrappers.length - found;\n let splitPos = range.start + wrappers.length - (joinBefore ? 2 : 0), parent = range.parent;\n for (let i = range.startIndex, e = range.endIndex, first = true; i < e; i++, first = false) {\n if (!first && canSplit(tr.doc, splitPos, splitDepth)) {\n tr.split(splitPos, splitDepth);\n splitPos += 2 * splitDepth;\n }\n splitPos += parent.child(i).nodeSize;\n }\n return tr;\n}\n/**\nBuild a command that splits a non-empty textblock at the top level\nof a list item by also splitting that list item.\n*/\nfunction splitListItem(itemType, itemAttrs) {\n return function (state, dispatch) {\n let { $from, $to, node } = state.selection;\n if ((node && node.isBlock) || $from.depth < 2 || !$from.sameParent($to))\n return false;\n let grandParent = $from.node(-1);\n if (grandParent.type != itemType)\n return false;\n if ($from.parent.content.size == 0 && $from.node(-1).childCount == $from.indexAfter(-1)) {\n // In an empty block. If this is a nested list, the wrapping\n // list item should be split. Otherwise, bail out and let next\n // command handle lifting.\n if ($from.depth == 3 || $from.node(-3).type != itemType ||\n $from.index(-2) != $from.node(-2).childCount - 1)\n return false;\n if (dispatch) {\n let wrap = Fragment.empty;\n let depthBefore = $from.index(-1) ? 1 : $from.index(-2) ? 2 : 3;\n // Build a fragment containing empty versions of the structure\n // from the outer list item to the parent node of the cursor\n for (let d = $from.depth - depthBefore; d >= $from.depth - 3; d--)\n wrap = Fragment.from($from.node(d).copy(wrap));\n let depthAfter = $from.indexAfter(-1) < $from.node(-2).childCount ? 1\n : $from.indexAfter(-2) < $from.node(-3).childCount ? 2 : 3;\n // Add a second list item with an empty default start node\n wrap = wrap.append(Fragment.from(itemType.createAndFill()));\n let start = $from.before($from.depth - (depthBefore - 1));\n let tr = state.tr.replace(start, $from.after(-depthAfter), new Slice(wrap, 4 - depthBefore, 0));\n let sel = -1;\n tr.doc.nodesBetween(start, tr.doc.content.size, (node, pos) => {\n if (sel > -1)\n return false;\n if (node.isTextblock && node.content.size == 0)\n sel = pos + 1;\n });\n if (sel > -1)\n tr.setSelection(Selection.near(tr.doc.resolve(sel)));\n dispatch(tr.scrollIntoView());\n }\n return true;\n }\n let nextType = $to.pos == $from.end() ? grandParent.contentMatchAt(0).defaultType : null;\n let tr = state.tr.delete($from.pos, $to.pos);\n let types = nextType ? [itemAttrs ? { type: itemType, attrs: itemAttrs } : null, { type: nextType }] : undefined;\n if (!canSplit(tr.doc, $from.pos, 2, types))\n return false;\n if (dispatch)\n dispatch(tr.split($from.pos, 2, types).scrollIntoView());\n return true;\n };\n}\n/**\nActs like [`splitListItem`](https://prosemirror.net/docs/ref/#schema-list.splitListItem), but\nwithout resetting the set of active marks at the cursor.\n*/\nfunction splitListItemKeepMarks(itemType, itemAttrs) {\n let split = splitListItem(itemType, itemAttrs);\n return (state, dispatch) => {\n return split(state, dispatch && (tr => {\n let marks = state.storedMarks || (state.selection.$to.parentOffset && state.selection.$from.marks());\n if (marks)\n tr.ensureMarks(marks);\n dispatch(tr);\n }));\n };\n}\n/**\nCreate a command to lift the list item around the selection up into\na wrapping list.\n*/\nfunction liftListItem(itemType) {\n return function (state, dispatch) {\n let { $from, $to } = state.selection;\n let range = $from.blockRange($to, node => node.childCount > 0 && node.firstChild.type == itemType);\n if (!range)\n return false;\n if (!dispatch)\n return true;\n if ($from.node(range.depth - 1).type == itemType) // Inside a parent list\n return liftToOuterList(state, dispatch, itemType, range);\n else // Outer list node\n return liftOutOfList(state, dispatch, range);\n };\n}\nfunction liftToOuterList(state, dispatch, itemType, range) {\n let tr = state.tr, end = range.end, endOfList = range.$to.end(range.depth);\n if (end < endOfList) {\n // There are siblings after the lifted items, which must become\n // children of the last item\n tr.step(new ReplaceAroundStep(end - 1, endOfList, end, endOfList, new Slice(Fragment.from(itemType.create(null, range.parent.copy())), 1, 0), 1, true));\n range = new NodeRange(tr.doc.resolve(range.$from.pos), tr.doc.resolve(endOfList), range.depth);\n }\n const target = liftTarget(range);\n if (target == null)\n return false;\n tr.lift(range, target);\n let $after = tr.doc.resolve(tr.mapping.map(end, -1) - 1);\n if (canJoin(tr.doc, $after.pos) && $after.nodeBefore.type == $after.nodeAfter.type)\n tr.join($after.pos);\n dispatch(tr.scrollIntoView());\n return true;\n}\nfunction liftOutOfList(state, dispatch, range) {\n let tr = state.tr, list = range.parent;\n // Merge the list items into a single big item\n for (let pos = range.end, i = range.endIndex - 1, e = range.startIndex; i > e; i--) {\n pos -= list.child(i).nodeSize;\n tr.delete(pos - 1, pos + 1);\n }\n let $start = tr.doc.resolve(range.start), item = $start.nodeAfter;\n if (tr.mapping.map(range.end) != range.start + $start.nodeAfter.nodeSize)\n return false;\n let atStart = range.startIndex == 0, atEnd = range.endIndex == list.childCount;\n let parent = $start.node(-1), indexBefore = $start.index(-1);\n if (!parent.canReplace(indexBefore + (atStart ? 0 : 1), indexBefore + 1, item.content.append(atEnd ? Fragment.empty : Fragment.from(list))))\n return false;\n let start = $start.pos, end = start + item.nodeSize;\n // Strip off the surrounding list. At the sides where we're not at\n // the end of the list, the existing list is closed. At sides where\n // this is the end, it is overwritten to its end.\n tr.step(new ReplaceAroundStep(start - (atStart ? 1 : 0), end + (atEnd ? 1 : 0), start + 1, end - 1, new Slice((atStart ? Fragment.empty : Fragment.from(list.copy(Fragment.empty)))\n .append(atEnd ? Fragment.empty : Fragment.from(list.copy(Fragment.empty))), atStart ? 0 : 1, atEnd ? 0 : 1), atStart ? 0 : 1));\n dispatch(tr.scrollIntoView());\n return true;\n}\n/**\nCreate a command to sink the list item around the selection down\ninto an inner list.\n*/\nfunction sinkListItem(itemType) {\n return function (state, dispatch) {\n let { $from, $to } = state.selection;\n let range = $from.blockRange($to, node => node.childCount > 0 && node.firstChild.type == itemType);\n if (!range)\n return false;\n let startIndex = range.startIndex;\n if (startIndex == 0)\n return false;\n let parent = range.parent, nodeBefore = parent.child(startIndex - 1);\n if (nodeBefore.type != itemType)\n return false;\n if (dispatch) {\n let nestedBefore = nodeBefore.lastChild && nodeBefore.lastChild.type == parent.type;\n let inner = Fragment.from(nestedBefore ? itemType.create() : null);\n let slice = new Slice(Fragment.from(itemType.create(null, Fragment.from(parent.type.create(null, inner)))), nestedBefore ? 3 : 1, 0);\n let before = range.start, after = range.end;\n dispatch(state.tr.step(new ReplaceAroundStep(before - (nestedBefore ? 3 : 1), after, before, after, slice, 1, true))\n .scrollIntoView());\n }\n return true;\n };\n}\n\nexport { addListNodes, bulletList, liftListItem, listItem, orderedList, sinkListItem, splitListItem, splitListItemKeepMarks, wrapInList, wrapRangeInList };\n","var GOOD_LEAF_SIZE = 200;\n\n// :: class<T> A rope sequence is a persistent sequence data structure\n// that supports appending, prepending, and slicing without doing a\n// full copy. It is represented as a mostly-balanced tree.\nvar RopeSequence = function RopeSequence () {};\n\nRopeSequence.prototype.append = function append (other) {\n if (!other.length) { return this }\n other = RopeSequence.from(other);\n\n return (!this.length && other) ||\n (other.length < GOOD_LEAF_SIZE && this.leafAppend(other)) ||\n (this.length < GOOD_LEAF_SIZE && other.leafPrepend(this)) ||\n this.appendInner(other)\n};\n\n// :: (union<[T], RopeSequence<T>>) → RopeSequence<T>\n// Prepend an array or other rope to this one, returning a new rope.\nRopeSequence.prototype.prepend = function prepend (other) {\n if (!other.length) { return this }\n return RopeSequence.from(other).append(this)\n};\n\nRopeSequence.prototype.appendInner = function appendInner (other) {\n return new Append(this, other)\n};\n\n// :: (?number, ?number) → RopeSequence<T>\n// Create a rope repesenting a sub-sequence of this rope.\nRopeSequence.prototype.slice = function slice (from, to) {\n if ( from === void 0 ) from = 0;\n if ( to === void 0 ) to = this.length;\n\n if (from >= to) { return RopeSequence.empty }\n return this.sliceInner(Math.max(0, from), Math.min(this.length, to))\n};\n\n// :: (number) → T\n// Retrieve the element at the given position from this rope.\nRopeSequence.prototype.get = function get (i) {\n if (i < 0 || i >= this.length) { return undefined }\n return this.getInner(i)\n};\n\n// :: ((element: T, index: number) → ?bool, ?number, ?number)\n// Call the given function for each element between the given\n// indices. This tends to be more efficient than looping over the\n// indices and calling `get`, because it doesn't have to descend the\n// tree for every element.\nRopeSequence.prototype.forEach = function forEach (f, from, to) {\n if ( from === void 0 ) from = 0;\n if ( to === void 0 ) to = this.length;\n\n if (from <= to)\n { this.forEachInner(f, from, to, 0); }\n else\n { this.forEachInvertedInner(f, from, to, 0); }\n};\n\n// :: ((element: T, index: number) → U, ?number, ?number) → [U]\n// Map the given functions over the elements of the rope, producing\n// a flat array.\nRopeSequence.prototype.map = function map (f, from, to) {\n if ( from === void 0 ) from = 0;\n if ( to === void 0 ) to = this.length;\n\n var result = [];\n this.forEach(function (elt, i) { return result.push(f(elt, i)); }, from, to);\n return result\n};\n\n// :: (?union<[T], RopeSequence<T>>) → RopeSequence<T>\n// Create a rope representing the given array, or return the rope\n// itself if a rope was given.\nRopeSequence.from = function from (values) {\n if (values instanceof RopeSequence) { return values }\n return values && values.length ? new Leaf(values) : RopeSequence.empty\n};\n\nvar Leaf = /*@__PURE__*/(function (RopeSequence) {\n function Leaf(values) {\n RopeSequence.call(this);\n this.values = values;\n }\n\n if ( RopeSequence ) Leaf.__proto__ = RopeSequence;\n Leaf.prototype = Object.create( RopeSequence && RopeSequence.prototype );\n Leaf.prototype.constructor = Leaf;\n\n var prototypeAccessors = { length: { configurable: true },depth: { configurable: true } };\n\n Leaf.prototype.flatten = function flatten () {\n return this.values\n };\n\n Leaf.prototype.sliceInner = function sliceInner (from, to) {\n if (from == 0 && to == this.length) { return this }\n return new Leaf(this.values.slice(from, to))\n };\n\n Leaf.prototype.getInner = function getInner (i) {\n return this.values[i]\n };\n\n Leaf.prototype.forEachInner = function forEachInner (f, from, to, start) {\n for (var i = from; i < to; i++)\n { if (f(this.values[i], start + i) === false) { return false } }\n };\n\n Leaf.prototype.forEachInvertedInner = function forEachInvertedInner (f, from, to, start) {\n for (var i = from - 1; i >= to; i--)\n { if (f(this.values[i], start + i) === false) { return false } }\n };\n\n Leaf.prototype.leafAppend = function leafAppend (other) {\n if (this.length + other.length <= GOOD_LEAF_SIZE)\n { return new Leaf(this.values.concat(other.flatten())) }\n };\n\n Leaf.prototype.leafPrepend = function leafPrepend (other) {\n if (this.length + other.length <= GOOD_LEAF_SIZE)\n { return new Leaf(other.flatten().concat(this.values)) }\n };\n\n prototypeAccessors.length.get = function () { return this.values.length };\n\n prototypeAccessors.depth.get = function () { return 0 };\n\n Object.defineProperties( Leaf.prototype, prototypeAccessors );\n\n return Leaf;\n}(RopeSequence));\n\n// :: RopeSequence\n// The empty rope sequence.\nRopeSequence.empty = new Leaf([]);\n\nvar Append = /*@__PURE__*/(function (RopeSequence) {\n function Append(left, right) {\n RopeSequence.call(this);\n this.left = left;\n this.right = right;\n this.length = left.length + right.length;\n this.depth = Math.max(left.depth, right.depth) + 1;\n }\n\n if ( RopeSequence ) Append.__proto__ = RopeSequence;\n Append.prototype = Object.create( RopeSequence && RopeSequence.prototype );\n Append.prototype.constructor = Append;\n\n Append.prototype.flatten = function flatten () {\n return this.left.flatten().concat(this.right.flatten())\n };\n\n Append.prototype.getInner = function getInner (i) {\n return i < this.left.length ? this.left.get(i) : this.right.get(i - this.left.length)\n };\n\n Append.prototype.forEachInner = function forEachInner (f, from, to, start) {\n var leftLen = this.left.length;\n if (from < leftLen &&\n this.left.forEachInner(f, from, Math.min(to, leftLen), start) === false)\n { return false }\n if (to > leftLen &&\n this.right.forEachInner(f, Math.max(from - leftLen, 0), Math.min(this.length, to) - leftLen, start + leftLen) === false)\n { return false }\n };\n\n Append.prototype.forEachInvertedInner = function forEachInvertedInner (f, from, to, start) {\n var leftLen = this.left.length;\n if (from > leftLen &&\n this.right.forEachInvertedInner(f, from - leftLen, Math.max(to, leftLen) - leftLen, start + leftLen) === false)\n { return false }\n if (to < leftLen &&\n this.left.forEachInvertedInner(f, Math.min(from, leftLen), to, start) === false)\n { return false }\n };\n\n Append.prototype.sliceInner = function sliceInner (from, to) {\n if (from == 0 && to == this.length) { return this }\n var leftLen = this.left.length;\n if (to <= leftLen) { return this.left.slice(from, to) }\n if (from >= leftLen) { return this.right.slice(from - leftLen, to - leftLen) }\n return this.left.slice(from, leftLen).append(this.right.slice(0, to - leftLen))\n };\n\n Append.prototype.leafAppend = function leafAppend (other) {\n var inner = this.right.leafAppend(other);\n if (inner) { return new Append(this.left, inner) }\n };\n\n Append.prototype.leafPrepend = function leafPrepend (other) {\n var inner = this.left.leafPrepend(other);\n if (inner) { return new Append(inner, this.right) }\n };\n\n Append.prototype.appendInner = function appendInner (other) {\n if (this.left.depth >= Math.max(this.right.depth, other.depth) + 1)\n { return new Append(this.left, new Append(this.right, other)) }\n return new Append(this, other)\n };\n\n return Append;\n}(RopeSequence));\n\nexport default RopeSequence;\n","import RopeSequence from 'rope-sequence';\nimport { Mapping } from 'prosemirror-transform';\nimport { PluginKey, Plugin } from 'prosemirror-state';\n\n// ProseMirror's history isn't simply a way to roll back to a previous\n// state, because ProseMirror supports applying changes without adding\n// them to the history (for example during collaboration).\n//\n// To this end, each 'Branch' (one for the undo history and one for\n// the redo history) keeps an array of 'Items', which can optionally\n// hold a step (an actual undoable change), and always hold a position\n// map (which is needed to move changes below them to apply to the\n// current document).\n//\n// An item that has both a step and a selection bookmark is the start\n// of an 'event' — a group of changes that will be undone or redone at\n// once. (It stores only the bookmark, since that way we don't have to\n// provide a document until the selection is actually applied, which\n// is useful when compressing.)\n// Used to schedule history compression\nconst max_empty_items = 500;\nclass Branch {\n constructor(items, eventCount) {\n this.items = items;\n this.eventCount = eventCount;\n }\n // Pop the latest event off the branch's history and apply it\n // to a document transform.\n popEvent(state, preserveItems) {\n if (this.eventCount == 0)\n return null;\n let end = this.items.length;\n for (;; end--) {\n let next = this.items.get(end - 1);\n if (next.selection) {\n --end;\n break;\n }\n }\n let remap, mapFrom;\n if (preserveItems) {\n remap = this.remapping(end, this.items.length);\n mapFrom = remap.maps.length;\n }\n let transform = state.tr;\n let selection, remaining;\n let addAfter = [], addBefore = [];\n this.items.forEach((item, i) => {\n if (!item.step) {\n if (!remap) {\n remap = this.remapping(end, i + 1);\n mapFrom = remap.maps.length;\n }\n mapFrom--;\n addBefore.push(item);\n return;\n }\n if (remap) {\n addBefore.push(new Item(item.map));\n let step = item.step.map(remap.slice(mapFrom)), map;\n if (step && transform.maybeStep(step).doc) {\n map = transform.mapping.maps[transform.mapping.maps.length - 1];\n addAfter.push(new Item(map, undefined, undefined, addAfter.length + addBefore.length));\n }\n mapFrom--;\n if (map)\n remap.appendMap(map, mapFrom);\n }\n else {\n transform.maybeStep(item.step);\n }\n if (item.selection) {\n selection = remap ? item.selection.map(remap.slice(mapFrom)) : item.selection;\n remaining = new Branch(this.items.slice(0, end).append(addBefore.reverse().concat(addAfter)), this.eventCount - 1);\n return false;\n }\n }, this.items.length, 0);\n return { remaining: remaining, transform, selection: selection };\n }\n // Create a new branch with the given transform added.\n addTransform(transform, selection, histOptions, preserveItems) {\n let newItems = [], eventCount = this.eventCount;\n let oldItems = this.items, lastItem = !preserveItems && oldItems.length ? oldItems.get(oldItems.length - 1) : null;\n for (let i = 0; i < transform.steps.length; i++) {\n let step = transform.steps[i].invert(transform.docs[i]);\n let item = new Item(transform.mapping.maps[i], step, selection), merged;\n if (merged = lastItem && lastItem.merge(item)) {\n item = merged;\n if (i)\n newItems.pop();\n else\n oldItems = oldItems.slice(0, oldItems.length - 1);\n }\n newItems.push(item);\n if (selection) {\n eventCount++;\n selection = undefined;\n }\n if (!preserveItems)\n lastItem = item;\n }\n let overflow = eventCount - histOptions.depth;\n if (overflow > DEPTH_OVERFLOW) {\n oldItems = cutOffEvents(oldItems, overflow);\n eventCount -= overflow;\n }\n return new Branch(oldItems.append(newItems), eventCount);\n }\n remapping(from, to) {\n let maps = new Mapping;\n this.items.forEach((item, i) => {\n let mirrorPos = item.mirrorOffset != null && i - item.mirrorOffset >= from\n ? maps.maps.length - item.mirrorOffset : undefined;\n maps.appendMap(item.map, mirrorPos);\n }, from, to);\n return maps;\n }\n addMaps(array) {\n if (this.eventCount == 0)\n return this;\n return new Branch(this.items.append(array.map(map => new Item(map))), this.eventCount);\n }\n // When the collab module receives remote changes, the history has\n // to know about those, so that it can adjust the steps that were\n // rebased on top of the remote changes, and include the position\n // maps for the remote changes in its array of items.\n rebased(rebasedTransform, rebasedCount) {\n if (!this.eventCount)\n return this;\n let rebasedItems = [], start = Math.max(0, this.items.length - rebasedCount);\n let mapping = rebasedTransform.mapping;\n let newUntil = rebasedTransform.steps.length;\n let eventCount = this.eventCount;\n this.items.forEach(item => { if (item.selection)\n eventCount--; }, start);\n let iRebased = rebasedCount;\n this.items.forEach(item => {\n let pos = mapping.getMirror(--iRebased);\n if (pos == null)\n return;\n newUntil = Math.min(newUntil, pos);\n let map = mapping.maps[pos];\n if (item.step) {\n let step = rebasedTransform.steps[pos].invert(rebasedTransform.docs[pos]);\n let selection = item.selection && item.selection.map(mapping.slice(iRebased + 1, pos));\n if (selection)\n eventCount++;\n rebasedItems.push(new Item(map, step, selection));\n }\n else {\n rebasedItems.push(new Item(map));\n }\n }, start);\n let newMaps = [];\n for (let i = rebasedCount; i < newUntil; i++)\n newMaps.push(new Item(mapping.maps[i]));\n let items = this.items.slice(0, start).append(newMaps).append(rebasedItems);\n let branch = new Branch(items, eventCount);\n if (branch.emptyItemCount() > max_empty_items)\n branch = branch.compress(this.items.length - rebasedItems.length);\n return branch;\n }\n emptyItemCount() {\n let count = 0;\n this.items.forEach(item => { if (!item.step)\n count++; });\n return count;\n }\n // Compressing a branch means rewriting it to push the air (map-only\n // items) out. During collaboration, these naturally accumulate\n // because each remote change adds one. The `upto` argument is used\n // to ensure that only the items below a given level are compressed,\n // because `rebased` relies on a clean, untouched set of items in\n // order to associate old items with rebased steps.\n compress(upto = this.items.length) {\n let remap = this.remapping(0, upto), mapFrom = remap.maps.length;\n let items = [], events = 0;\n this.items.forEach((item, i) => {\n if (i >= upto) {\n items.push(item);\n if (item.selection)\n events++;\n }\n else if (item.step) {\n let step = item.step.map(remap.slice(mapFrom)), map = step && step.getMap();\n mapFrom--;\n if (map)\n remap.appendMap(map, mapFrom);\n if (step) {\n let selection = item.selection && item.selection.map(remap.slice(mapFrom));\n if (selection)\n events++;\n let newItem = new Item(map.invert(), step, selection), merged, last = items.length - 1;\n if (merged = items.length && items[last].merge(newItem))\n items[last] = merged;\n else\n items.push(newItem);\n }\n }\n else if (item.map) {\n mapFrom--;\n }\n }, this.items.length, 0);\n return new Branch(RopeSequence.from(items.reverse()), events);\n }\n}\nBranch.empty = new Branch(RopeSequence.empty, 0);\nfunction cutOffEvents(items, n) {\n let cutPoint;\n items.forEach((item, i) => {\n if (item.selection && (n-- == 0)) {\n cutPoint = i;\n return false;\n }\n });\n return items.slice(cutPoint);\n}\nclass Item {\n constructor(\n // The (forward) step map for this item.\n map, \n // The inverted step\n step, \n // If this is non-null, this item is the start of a group, and\n // this selection is the starting selection for the group (the one\n // that was active before the first step was applied)\n selection, \n // If this item is the inverse of a previous mapping on the stack,\n // this points at the inverse's offset\n mirrorOffset) {\n this.map = map;\n this.step = step;\n this.selection = selection;\n this.mirrorOffset = mirrorOffset;\n }\n merge(other) {\n if (this.step && other.step && !other.selection) {\n let step = other.step.merge(this.step);\n if (step)\n return new Item(step.getMap().invert(), step, this.selection);\n }\n }\n}\n// The value of the state field that tracks undo/redo history for that\n// state. Will be stored in the plugin state when the history plugin\n// is active.\nclass HistoryState {\n constructor(done, undone, prevRanges, prevTime, prevComposition) {\n this.done = done;\n this.undone = undone;\n this.prevRanges = prevRanges;\n this.prevTime = prevTime;\n this.prevComposition = prevComposition;\n }\n}\nconst DEPTH_OVERFLOW = 20;\n// Record a transformation in undo history.\nfunction applyTransaction(history, state, tr, options) {\n let historyTr = tr.getMeta(historyKey), rebased;\n if (historyTr)\n return historyTr.historyState;\n if (tr.getMeta(closeHistoryKey))\n history = new HistoryState(history.done, history.undone, null, 0, -1);\n let appended = tr.getMeta(\"appendedTransaction\");\n if (tr.steps.length == 0) {\n return history;\n }\n else if (appended && appended.getMeta(historyKey)) {\n if (appended.getMeta(historyKey).redo)\n return new HistoryState(history.done.addTransform(tr, undefined, options, mustPreserveItems(state)), history.undone, rangesFor(tr.mapping.maps), history.prevTime, history.prevComposition);\n else\n return new HistoryState(history.done, history.undone.addTransform(tr, undefined, options, mustPreserveItems(state)), null, history.prevTime, history.prevComposition);\n }\n else if (tr.getMeta(\"addToHistory\") !== false && !(appended && appended.getMeta(\"addToHistory\") === false)) {\n // Group transforms that occur in quick succession into one event.\n let composition = tr.getMeta(\"composition\");\n let newGroup = history.prevTime == 0 ||\n (!appended && history.prevComposition != composition &&\n (history.prevTime < (tr.time || 0) - options.newGroupDelay || !isAdjacentTo(tr, history.prevRanges)));\n let prevRanges = appended ? mapRanges(history.prevRanges, tr.mapping) : rangesFor(tr.mapping.maps);\n return new HistoryState(history.done.addTransform(tr, newGroup ? state.selection.getBookmark() : undefined, options, mustPreserveItems(state)), Branch.empty, prevRanges, tr.time, composition == null ? history.prevComposition : composition);\n }\n else if (rebased = tr.getMeta(\"rebased\")) {\n // Used by the collab module to tell the history that some of its\n // content has been rebased.\n return new HistoryState(history.done.rebased(tr, rebased), history.undone.rebased(tr, rebased), mapRanges(history.prevRanges, tr.mapping), history.prevTime, history.prevComposition);\n }\n else {\n return new HistoryState(history.done.addMaps(tr.mapping.maps), history.undone.addMaps(tr.mapping.maps), mapRanges(history.prevRanges, tr.mapping), history.prevTime, history.prevComposition);\n }\n}\nfunction isAdjacentTo(transform, prevRanges) {\n if (!prevRanges)\n return false;\n if (!transform.docChanged)\n return true;\n let adjacent = false;\n transform.mapping.maps[0].forEach((start, end) => {\n for (let i = 0; i < prevRanges.length; i += 2)\n if (start <= prevRanges[i + 1] && end >= prevRanges[i])\n adjacent = true;\n });\n return adjacent;\n}\nfunction rangesFor(maps) {\n let result = [];\n for (let i = maps.length - 1; i >= 0 && result.length == 0; i--)\n maps[i].forEach((_from, _to, from, to) => result.push(from, to));\n return result;\n}\nfunction mapRanges(ranges, mapping) {\n if (!ranges)\n return null;\n let result = [];\n for (let i = 0; i < ranges.length; i += 2) {\n let from = mapping.map(ranges[i], 1), to = mapping.map(ranges[i + 1], -1);\n if (from <= to)\n result.push(from, to);\n }\n return result;\n}\n// Apply the latest event from one branch to the document and shift the event\n// onto the other branch.\nfunction histTransaction(history, state, redo) {\n let preserveItems = mustPreserveItems(state);\n let histOptions = historyKey.get(state).spec.config;\n let pop = (redo ? history.undone : history.done).popEvent(state, preserveItems);\n if (!pop)\n return null;\n let selection = pop.selection.resolve(pop.transform.doc);\n let added = (redo ? history.done : history.undone).addTransform(pop.transform, state.selection.getBookmark(), histOptions, preserveItems);\n let newHist = new HistoryState(redo ? added : pop.remaining, redo ? pop.remaining : added, null, 0, -1);\n return pop.transform.setSelection(selection).setMeta(historyKey, { redo, historyState: newHist });\n}\nlet cachedPreserveItems = false, cachedPreserveItemsPlugins = null;\n// Check whether any plugin in the given state has a\n// `historyPreserveItems` property in its spec, in which case we must\n// preserve steps exactly as they came in, so that they can be\n// rebased.\nfunction mustPreserveItems(state) {\n let plugins = state.plugins;\n if (cachedPreserveItemsPlugins != plugins) {\n cachedPreserveItems = false;\n cachedPreserveItemsPlugins = plugins;\n for (let i = 0; i < plugins.length; i++)\n if (plugins[i].spec.historyPreserveItems) {\n cachedPreserveItems = true;\n break;\n }\n }\n return cachedPreserveItems;\n}\n/**\nSet a flag on the given transaction that will prevent further steps\nfrom being appended to an existing history event (so that they\nrequire a separate undo command to undo).\n*/\nfunction closeHistory(tr) {\n return tr.setMeta(closeHistoryKey, true);\n}\nconst historyKey = new PluginKey(\"history\");\nconst closeHistoryKey = new PluginKey(\"closeHistory\");\n/**\nReturns a plugin that enables the undo history for an editor. The\nplugin will track undo and redo stacks, which can be used with the\n[`undo`](https://prosemirror.net/docs/ref/#history.undo) and [`redo`](https://prosemirror.net/docs/ref/#history.redo) commands.\n\nYou can set an `\"addToHistory\"` [metadata\nproperty](https://prosemirror.net/docs/ref/#state.Transaction.setMeta) of `false` on a transaction\nto prevent it from being rolled back by undo.\n*/\nfunction history(config = {}) {\n config = { depth: config.depth || 100,\n newGroupDelay: config.newGroupDelay || 500 };\n return new Plugin({\n key: historyKey,\n state: {\n init() {\n return new HistoryState(Branch.empty, Branch.empty, null, 0, -1);\n },\n apply(tr, hist, state) {\n return applyTransaction(hist, state, tr, config);\n }\n },\n config,\n props: {\n handleDOMEvents: {\n beforeinput(view, e) {\n let inputType = e.inputType;\n let command = inputType == \"historyUndo\" ? undo : inputType == \"historyRedo\" ? redo : null;\n if (!command || !view.editable)\n return false;\n e.preventDefault();\n return command(view.state, view.dispatch);\n }\n }\n }\n });\n}\nfunction buildCommand(redo, scroll) {\n return (state, dispatch) => {\n let hist = historyKey.getState(state);\n if (!hist || (redo ? hist.undone : hist.done).eventCount == 0)\n return false;\n if (dispatch) {\n let tr = histTransaction(hist, state, redo);\n if (tr)\n dispatch(scroll ? tr.scrollIntoView() : tr);\n }\n return true;\n };\n}\n/**\nA command function that undoes the last change, if any.\n*/\nconst undo = buildCommand(false, true);\n/**\nA command function that redoes the last undone change, if any.\n*/\nconst redo = buildCommand(true, true);\n/**\nA command function that undoes the last change. Don't scroll the\nselection into view.\n*/\nconst undoNoScroll = buildCommand(false, false);\n/**\nA command function that redoes the last undone change. Don't\nscroll the selection into view.\n*/\nconst redoNoScroll = buildCommand(true, false);\n/**\nThe amount of undoable events available in a given state.\n*/\nfunction undoDepth(state) {\n let hist = historyKey.getState(state);\n return hist ? hist.done.eventCount : 0;\n}\n/**\nThe amount of redoable events available in a given editor state.\n*/\nfunction redoDepth(state) {\n let hist = historyKey.getState(state);\n return hist ? hist.undone.eventCount : 0;\n}\n/**\nReturns true if the given transaction was generated by the history\nplugin.\n*/\nfunction isHistoryTransaction(tr) {\n return tr.getMeta(historyKey) != null;\n}\n\nexport { closeHistory, history, isHistoryTransaction, redo, redoDepth, redoNoScroll, undo, undoDepth, undoNoScroll };\n"],"x_google_ignoreList":[0,1,2],"mappings":"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"}