| Server IP : 34.87.99.72 / Your IP : 216.73.217.31 Web Server : Apache/2.4.46 (Unix) OpenSSL/1.1.1n System : Linux zlock-bitnami-lamp-prod-v2-vm 4.19.0-16-cloud-amd64 #1 SMP Debian 4.19.181-1 (2021-03-19) x86_64 User : bitnami ( 1000) PHP Version : 7.4.18 Disable Function : NONE MySQL : OFF | cURL : ON | WGET : ON | Perl : ON | Python : ON | Sudo : ON | Pkexec : OFF Directory : /home/bitnami/htdocs/app/node_modules/prosemirror-model/dist/ |
Upload File : |
{"version":3,"file":"index.es.js","sources":["../src/diff.js","../src/fragment.js","../src/comparedeep.js","../src/mark.js","../src/replace.js","../src/resolvedpos.js","../src/node.js","../src/content.js","../src/schema.js","../src/from_dom.js","../src/to_dom.js"],"sourcesContent":["export function findDiffStart(a, b, pos) {\n for (let i = 0;; i++) {\n if (i == a.childCount || i == b.childCount)\n return a.childCount == b.childCount ? null : pos\n\n let childA = a.child(i), childB = b.child(i)\n if (childA == childB) { pos += childA.nodeSize; continue }\n\n if (!childA.sameMarkup(childB)) return pos\n\n if (childA.isText && childA.text != childB.text) {\n for (let j = 0; childA.text[j] == childB.text[j]; j++)\n pos++\n return pos\n }\n if (childA.content.size || childB.content.size) {\n let inner = findDiffStart(childA.content, childB.content, pos + 1)\n if (inner != null) return inner\n }\n pos += childA.nodeSize\n }\n}\n\nexport function findDiffEnd(a, b, posA, posB) {\n for (let iA = a.childCount, iB = b.childCount;;) {\n if (iA == 0 || iB == 0)\n return iA == iB ? null : {a: posA, b: posB}\n\n let childA = a.child(--iA), childB = b.child(--iB), size = childA.nodeSize\n if (childA == childB) {\n posA -= size; posB -= size\n continue\n }\n\n if (!childA.sameMarkup(childB)) return {a: posA, b: posB}\n\n if (childA.isText && childA.text != childB.text) {\n let same = 0, minSize = Math.min(childA.text.length, childB.text.length)\n while (same < minSize && childA.text[childA.text.length - same - 1] == childB.text[childB.text.length - same - 1]) {\n same++; posA--; posB--\n }\n return {a: posA, b: posB}\n }\n if (childA.content.size || childB.content.size) {\n let inner = findDiffEnd(childA.content, childB.content, posA - 1, posB - 1)\n if (inner) return inner\n }\n posA -= size; posB -= size\n }\n}\n","import {findDiffStart, findDiffEnd} from \"./diff\"\n\n// ::- A fragment represents a node's collection of child nodes.\n//\n// Like nodes, fragments are persistent data structures, and you\n// should not mutate them or their content. Rather, you create new\n// instances whenever needed. The API tries to make this easy.\nexport class Fragment {\n constructor(content, size) {\n this.content = content\n // :: number\n // The size of the fragment, which is the total of the size of its\n // content nodes.\n this.size = size || 0\n if (size == null) for (let i = 0; i < content.length; i++)\n this.size += content[i].nodeSize\n }\n\n // :: (number, number, (node: Node, start: number, parent: Node, index: number) → ?bool, ?number)\n // Invoke a callback for all descendant nodes between the given two\n // positions (relative to start of this fragment). Doesn't descend\n // into a node when the callback returns `false`.\n nodesBetween(from, to, f, nodeStart = 0, parent) {\n for (let i = 0, pos = 0; pos < to; i++) {\n let child = this.content[i], end = pos + child.nodeSize\n if (end > from && f(child, nodeStart + pos, parent, i) !== false && child.content.size) {\n let start = pos + 1\n child.nodesBetween(Math.max(0, from - start),\n Math.min(child.content.size, to - start),\n f, nodeStart + start)\n }\n pos = end\n }\n }\n\n // :: ((node: Node, pos: number, parent: Node) → ?bool)\n // Call the given callback for every descendant node. The callback\n // may return `false` to prevent traversal of a given node's children.\n descendants(f) {\n this.nodesBetween(0, this.size, f)\n }\n\n // :: (number, number, ?string, ?string) → string\n // Extract the text between `from` and `to`. See the same method on\n // [`Node`](#model.Node.textBetween).\n textBetween(from, to, blockSeparator, leafText) {\n let text = \"\", separated = true\n this.nodesBetween(from, to, (node, pos) => {\n if (node.isText) {\n text += node.text.slice(Math.max(from, pos) - pos, to - pos)\n separated = !blockSeparator\n } else if (node.isLeaf && leafText) {\n text += leafText\n separated = !blockSeparator\n } else if (!separated && node.isBlock) {\n text += blockSeparator\n separated = true\n }\n }, 0)\n return text\n }\n\n // :: (Fragment) → Fragment\n // Create a new fragment containing the combined content of this\n // fragment and the other.\n append(other) {\n if (!other.size) return this\n if (!this.size) return other\n let last = this.lastChild, first = other.firstChild, content = this.content.slice(), i = 0\n if (last.isText && last.sameMarkup(first)) {\n content[content.length - 1] = last.withText(last.text + first.text)\n i = 1\n }\n for (; i < other.content.length; i++) content.push(other.content[i])\n return new Fragment(content, this.size + other.size)\n }\n\n // :: (number, ?number) → Fragment\n // Cut out the sub-fragment between the two given positions.\n cut(from, to) {\n if (to == null) to = this.size\n if (from == 0 && to == this.size) return this\n let result = [], size = 0\n if (to > from) for (let i = 0, pos = 0; pos < to; i++) {\n let child = this.content[i], end = pos + child.nodeSize\n if (end > from) {\n if (pos < from || end > to) {\n if (child.isText)\n child = child.cut(Math.max(0, from - pos), Math.min(child.text.length, to - pos))\n else\n child = child.cut(Math.max(0, from - pos - 1), Math.min(child.content.size, to - pos - 1))\n }\n result.push(child)\n size += child.nodeSize\n }\n pos = end\n }\n return new Fragment(result, size)\n }\n\n cutByIndex(from, to) {\n if (from == to) return Fragment.empty\n if (from == 0 && to == this.content.length) return this\n return new Fragment(this.content.slice(from, to))\n }\n\n // :: (number, Node) → Fragment\n // Create a new fragment in which the node at the given index is\n // replaced by the given node.\n replaceChild(index, node) {\n let current = this.content[index]\n if (current == node) return this\n let copy = this.content.slice()\n let size = this.size + node.nodeSize - current.nodeSize\n copy[index] = node\n return new Fragment(copy, size)\n }\n\n // : (Node) → Fragment\n // Create a new fragment by prepending the given node to this\n // fragment.\n addToStart(node) {\n return new Fragment([node].concat(this.content), this.size + node.nodeSize)\n }\n\n // : (Node) → Fragment\n // Create a new fragment by appending the given node to this\n // fragment.\n addToEnd(node) {\n return new Fragment(this.content.concat(node), this.size + node.nodeSize)\n }\n\n // :: (Fragment) → bool\n // Compare this fragment to another one.\n eq(other) {\n if (this.content.length != other.content.length) return false\n for (let i = 0; i < this.content.length; i++)\n if (!this.content[i].eq(other.content[i])) return false\n return true\n }\n\n // :: ?Node\n // The first child of the fragment, or `null` if it is empty.\n get firstChild() { return this.content.length ? this.content[0] : null }\n\n // :: ?Node\n // The last child of the fragment, or `null` if it is empty.\n get lastChild() { return this.content.length ? this.content[this.content.length - 1] : null }\n\n // :: number\n // The number of child nodes in this fragment.\n get childCount() { return this.content.length }\n\n // :: (number) → Node\n // Get the child node at the given index. Raise an error when the\n // index is out of range.\n child(index) {\n let found = this.content[index]\n if (!found) throw new RangeError(\"Index \" + index + \" out of range for \" + this)\n return found\n }\n\n // :: (number) → ?Node\n // Get the child node at the given index, if it exists.\n maybeChild(index) {\n return this.content[index]\n }\n\n // :: ((node: Node, offset: number, index: number))\n // Call `f` for every child node, passing the node, its offset\n // into this parent node, and its index.\n forEach(f) {\n for (let i = 0, p = 0; i < this.content.length; i++) {\n let child = this.content[i]\n f(child, p, i)\n p += child.nodeSize\n }\n }\n\n // :: (Fragment) → ?number\n // Find the first position at which this fragment and another\n // fragment differ, or `null` if they are the same.\n findDiffStart(other, pos = 0) {\n return findDiffStart(this, other, pos)\n }\n\n // :: (Fragment) → ?{a: number, b: number}\n // Find the first position, searching from the end, at which this\n // fragment and the given fragment differ, or `null` if they are the\n // same. Since this position will not be the same in both nodes, an\n // object with two separate positions is returned.\n findDiffEnd(other, pos = this.size, otherPos = other.size) {\n return findDiffEnd(this, other, pos, otherPos)\n }\n\n // : (number, ?number) → {index: number, offset: number}\n // Find the index and inner offset corresponding to a given relative\n // position in this fragment. The result object will be reused\n // (overwritten) the next time the function is called. (Not public.)\n findIndex(pos, round = -1) {\n if (pos == 0) return retIndex(0, pos)\n if (pos == this.size) return retIndex(this.content.length, pos)\n if (pos > this.size || pos < 0) throw new RangeError(`Position ${pos} outside of fragment (${this})`)\n for (let i = 0, curPos = 0;; i++) {\n let cur = this.child(i), end = curPos + cur.nodeSize\n if (end >= pos) {\n if (end == pos || round > 0) return retIndex(i + 1, end)\n return retIndex(i, curPos)\n }\n curPos = end\n }\n }\n\n // :: () → string\n // Return a debugging string that describes this fragment.\n toString() { return \"<\" + this.toStringInner() + \">\" }\n\n toStringInner() { return this.content.join(\", \") }\n\n // :: () → ?Object\n // Create a JSON-serializeable representation of this fragment.\n toJSON() {\n return this.content.length ? this.content.map(n => n.toJSON()) : null\n }\n\n // :: (Schema, ?Object) → Fragment\n // Deserialize a fragment from its JSON representation.\n static fromJSON(schema, value) {\n if (!value) return Fragment.empty\n if (!Array.isArray(value)) throw new RangeError(\"Invalid input for Fragment.fromJSON\")\n return new Fragment(value.map(schema.nodeFromJSON))\n }\n\n // :: ([Node]) → Fragment\n // Build a fragment from an array of nodes. Ensures that adjacent\n // text nodes with the same marks are joined together.\n static fromArray(array) {\n if (!array.length) return Fragment.empty\n let joined, size = 0\n for (let i = 0; i < array.length; i++) {\n let node = array[i]\n size += node.nodeSize\n if (i && node.isText && array[i - 1].sameMarkup(node)) {\n if (!joined) joined = array.slice(0, i)\n joined[joined.length - 1] = node.withText(joined[joined.length - 1].text + node.text)\n } else if (joined) {\n joined.push(node)\n }\n }\n return new Fragment(joined || array, size)\n }\n\n // :: (?union<Fragment, Node, [Node]>) → Fragment\n // Create a fragment from something that can be interpreted as a set\n // of nodes. For `null`, it returns the empty fragment. For a\n // fragment, the fragment itself. For a node or array of nodes, a\n // fragment containing those nodes.\n static from(nodes) {\n if (!nodes) return Fragment.empty\n if (nodes instanceof Fragment) return nodes\n if (Array.isArray(nodes)) return this.fromArray(nodes)\n if (nodes.attrs) return new Fragment([nodes], nodes.nodeSize)\n throw new RangeError(\"Can not convert \" + nodes + \" to a Fragment\" +\n (nodes.nodesBetween ? \" (looks like multiple versions of prosemirror-model were loaded)\" : \"\"))\n }\n}\n\nconst found = {index: 0, offset: 0}\nfunction retIndex(index, offset) {\n found.index = index\n found.offset = offset\n return found\n}\n\n// :: Fragment\n// An empty fragment. Intended to be reused whenever a node doesn't\n// contain anything (rather than allocating a new empty fragment for\n// each leaf node).\nFragment.empty = new Fragment([], 0)\n","export function compareDeep(a, b) {\n if (a === b) return true\n if (!(a && typeof a == \"object\") ||\n !(b && typeof b == \"object\")) return false\n let array = Array.isArray(a)\n if (Array.isArray(b) != array) return false\n if (array) {\n if (a.length != b.length) return false\n for (let i = 0; i < a.length; i++) if (!compareDeep(a[i], b[i])) return false\n } else {\n for (let p in a) if (!(p in b) || !compareDeep(a[p], b[p])) return false\n for (let p in b) if (!(p in a)) return false\n }\n return true\n}\n","import {compareDeep} from \"./comparedeep\"\n\n// ::- A mark is a piece of information that can be attached to a node,\n// such as it being emphasized, in code font, or a link. It has a type\n// and optionally a set of attributes that provide further information\n// (such as the target of the link). Marks are created through a\n// `Schema`, which controls which types exist and which\n// attributes they have.\nexport class Mark {\n constructor(type, attrs) {\n // :: MarkType\n // The type of this mark.\n this.type = type\n // :: Object\n // The attributes associated with this mark.\n this.attrs = attrs\n }\n\n // :: ([Mark]) → [Mark]\n // Given a set of marks, create a new set which contains this one as\n // well, in the right position. If this mark is already in the set,\n // the set itself is returned. If any marks that are set to be\n // [exclusive](#model.MarkSpec.excludes) with this mark are present,\n // those are replaced by this one.\n addToSet(set) {\n let copy, placed = false\n for (let i = 0; i < set.length; i++) {\n let other = set[i]\n if (this.eq(other)) return set\n if (this.type.excludes(other.type)) {\n if (!copy) copy = set.slice(0, i)\n } else if (other.type.excludes(this.type)) {\n return set\n } else {\n if (!placed && other.type.rank > this.type.rank) {\n if (!copy) copy = set.slice(0, i)\n copy.push(this)\n placed = true\n }\n if (copy) copy.push(other)\n }\n }\n if (!copy) copy = set.slice()\n if (!placed) copy.push(this)\n return copy\n }\n\n // :: ([Mark]) → [Mark]\n // Remove this mark from the given set, returning a new set. If this\n // mark is not in the set, the set itself is returned.\n removeFromSet(set) {\n for (let i = 0; i < set.length; i++)\n if (this.eq(set[i]))\n return set.slice(0, i).concat(set.slice(i + 1))\n return set\n }\n\n // :: ([Mark]) → bool\n // Test whether this mark is in the given set of marks.\n isInSet(set) {\n for (let i = 0; i < set.length; i++)\n if (this.eq(set[i])) return true\n return false\n }\n\n // :: (Mark) → bool\n // Test whether this mark has the same type and attributes as\n // another mark.\n eq(other) {\n return this == other ||\n (this.type == other.type && compareDeep(this.attrs, other.attrs))\n }\n\n // :: () → Object\n // Convert this mark to a JSON-serializeable representation.\n toJSON() {\n let obj = {type: this.type.name}\n for (let _ in this.attrs) {\n obj.attrs = this.attrs\n break\n }\n return obj\n }\n\n // :: (Schema, Object) → Mark\n static fromJSON(schema, json) {\n if (!json) throw new RangeError(\"Invalid input for Mark.fromJSON\")\n let type = schema.marks[json.type]\n if (!type) throw new RangeError(`There is no mark type ${json.type} in this schema`)\n return type.create(json.attrs)\n }\n\n // :: ([Mark], [Mark]) → bool\n // Test whether two sets of marks are identical.\n static sameSet(a, b) {\n if (a == b) return true\n if (a.length != b.length) return false\n for (let i = 0; i < a.length; i++)\n if (!a[i].eq(b[i])) return false\n return true\n }\n\n // :: (?union<Mark, [Mark]>) → [Mark]\n // Create a properly sorted mark set from null, a single mark, or an\n // unsorted array of marks.\n static setFrom(marks) {\n if (!marks || marks.length == 0) return Mark.none\n if (marks instanceof Mark) return [marks]\n let copy = marks.slice()\n copy.sort((a, b) => a.type.rank - b.type.rank)\n return copy\n }\n}\n\n// :: [Mark] The empty set of marks.\nMark.none = []\n","import {Fragment} from \"./fragment\"\n\n// ReplaceError:: class extends Error\n// Error type raised by [`Node.replace`](#model.Node.replace) when\n// given an invalid replacement.\n\nexport function ReplaceError(message) {\n let err = Error.call(this, message)\n err.__proto__ = ReplaceError.prototype\n return err\n}\n\nReplaceError.prototype = Object.create(Error.prototype)\nReplaceError.prototype.constructor = ReplaceError\nReplaceError.prototype.name = \"ReplaceError\"\n\n// ::- A slice represents a piece cut out of a larger document. It\n// stores not only a fragment, but also the depth up to which nodes on\n// both side are ‘open’ (cut through).\nexport class Slice {\n // :: (Fragment, number, number)\n // Create a slice. When specifying a non-zero open depth, you must\n // make sure that there are nodes of at least that depth at the\n // appropriate side of the fragment—i.e. if the fragment is an empty\n // paragraph node, `openStart` and `openEnd` can't be greater than 1.\n //\n // It is not necessary for the content of open nodes to conform to\n // the schema's content constraints, though it should be a valid\n // start/end/middle for such a node, depending on which sides are\n // open.\n constructor(content, openStart, openEnd) {\n // :: Fragment The slice's content.\n this.content = content\n // :: number The open depth at the start.\n this.openStart = openStart\n // :: number The open depth at the end.\n this.openEnd = openEnd\n }\n\n // :: number\n // The size this slice would add when inserted into a document.\n get size() {\n return this.content.size - this.openStart - this.openEnd\n }\n\n insertAt(pos, fragment) {\n let content = insertInto(this.content, pos + this.openStart, fragment, null)\n return content && new Slice(content, this.openStart, this.openEnd)\n }\n\n removeBetween(from, to) {\n return new Slice(removeRange(this.content, from + this.openStart, to + this.openStart), this.openStart, this.openEnd)\n }\n\n // :: (Slice) → bool\n // Tests whether this slice is equal to another slice.\n eq(other) {\n return this.content.eq(other.content) && this.openStart == other.openStart && this.openEnd == other.openEnd\n }\n\n toString() {\n return this.content + \"(\" + this.openStart + \",\" + this.openEnd + \")\"\n }\n\n // :: () → ?Object\n // Convert a slice to a JSON-serializable representation.\n toJSON() {\n if (!this.content.size) return null\n let json = {content: this.content.toJSON()}\n if (this.openStart > 0) json.openStart = this.openStart\n if (this.openEnd > 0) json.openEnd = this.openEnd\n return json\n }\n\n // :: (Schema, ?Object) → Slice\n // Deserialize a slice from its JSON representation.\n static fromJSON(schema, json) {\n if (!json) return Slice.empty\n let openStart = json.openStart || 0, openEnd = json.openEnd || 0\n if (typeof openStart != \"number\" || typeof openEnd != \"number\")\n throw new RangeError(\"Invalid input for Slice.fromJSON\")\n return new Slice(Fragment.fromJSON(schema, json.content), openStart, openEnd)\n }\n\n // :: (Fragment, ?bool) → Slice\n // Create a slice from a fragment by taking the maximum possible\n // open value on both side of the fragment.\n static maxOpen(fragment, openIsolating=true) {\n let openStart = 0, openEnd = 0\n for (let n = fragment.firstChild; n && !n.isLeaf && (openIsolating || !n.type.spec.isolating); n = n.firstChild) openStart++\n for (let n = fragment.lastChild; n && !n.isLeaf && (openIsolating || !n.type.spec.isolating); n = n.lastChild) openEnd++\n return new Slice(fragment, openStart, openEnd)\n }\n}\n\nfunction removeRange(content, from, to) {\n let {index, offset} = content.findIndex(from), child = content.maybeChild(index)\n let {index: indexTo, offset: offsetTo} = content.findIndex(to)\n if (offset == from || child.isText) {\n if (offsetTo != to && !content.child(indexTo).isText) throw new RangeError(\"Removing non-flat range\")\n return content.cut(0, from).append(content.cut(to))\n }\n if (index != indexTo) throw new RangeError(\"Removing non-flat range\")\n return content.replaceChild(index, child.copy(removeRange(child.content, from - offset - 1, to - offset - 1)))\n}\n\nfunction insertInto(content, dist, insert, parent) {\n let {index, offset} = content.findIndex(dist), child = content.maybeChild(index)\n if (offset == dist || child.isText) {\n if (parent && !parent.canReplace(index, index, insert)) return null\n return content.cut(0, dist).append(insert).append(content.cut(dist))\n }\n let inner = insertInto(child.content, dist - offset - 1, insert)\n return inner && content.replaceChild(index, child.copy(inner))\n}\n\n// :: Slice\n// The empty slice.\nSlice.empty = new Slice(Fragment.empty, 0, 0)\n\nexport function replace($from, $to, slice) {\n if (slice.openStart > $from.depth)\n throw new ReplaceError(\"Inserted content deeper than insertion position\")\n if ($from.depth - slice.openStart != $to.depth - slice.openEnd)\n throw new ReplaceError(\"Inconsistent open depths\")\n return replaceOuter($from, $to, slice, 0)\n}\n\nfunction replaceOuter($from, $to, slice, depth) {\n let index = $from.index(depth), node = $from.node(depth)\n if (index == $to.index(depth) && depth < $from.depth - slice.openStart) {\n let inner = replaceOuter($from, $to, slice, depth + 1)\n return node.copy(node.content.replaceChild(index, inner))\n } else if (!slice.content.size) {\n return close(node, replaceTwoWay($from, $to, depth))\n } else if (!slice.openStart && !slice.openEnd && $from.depth == depth && $to.depth == depth) { // Simple, flat case\n let parent = $from.parent, content = parent.content\n return close(parent, content.cut(0, $from.parentOffset).append(slice.content).append(content.cut($to.parentOffset)))\n } else {\n let {start, end} = prepareSliceForReplace(slice, $from)\n return close(node, replaceThreeWay($from, start, end, $to, depth))\n }\n}\n\nfunction checkJoin(main, sub) {\n if (!sub.type.compatibleContent(main.type))\n throw new ReplaceError(\"Cannot join \" + sub.type.name + \" onto \" + main.type.name)\n}\n\nfunction joinable($before, $after, depth) {\n let node = $before.node(depth)\n checkJoin(node, $after.node(depth))\n return node\n}\n\nfunction addNode(child, target) {\n let last = target.length - 1\n if (last >= 0 && child.isText && child.sameMarkup(target[last]))\n target[last] = child.withText(target[last].text + child.text)\n else\n target.push(child)\n}\n\nfunction addRange($start, $end, depth, target) {\n let node = ($end || $start).node(depth)\n let startIndex = 0, endIndex = $end ? $end.index(depth) : node.childCount\n if ($start) {\n startIndex = $start.index(depth)\n if ($start.depth > depth) {\n startIndex++\n } else if ($start.textOffset) {\n addNode($start.nodeAfter, target)\n startIndex++\n }\n }\n for (let i = startIndex; i < endIndex; i++) addNode(node.child(i), target)\n if ($end && $end.depth == depth && $end.textOffset)\n addNode($end.nodeBefore, target)\n}\n\nfunction close(node, content) {\n if (!node.type.validContent(content))\n throw new ReplaceError(\"Invalid content for node \" + node.type.name)\n return node.copy(content)\n}\n\nfunction replaceThreeWay($from, $start, $end, $to, depth) {\n let openStart = $from.depth > depth && joinable($from, $start, depth + 1)\n let openEnd = $to.depth > depth && joinable($end, $to, depth + 1)\n\n let content = []\n addRange(null, $from, depth, content)\n if (openStart && openEnd && $start.index(depth) == $end.index(depth)) {\n checkJoin(openStart, openEnd)\n addNode(close(openStart, replaceThreeWay($from, $start, $end, $to, depth + 1)), content)\n } else {\n if (openStart)\n addNode(close(openStart, replaceTwoWay($from, $start, depth + 1)), content)\n addRange($start, $end, depth, content)\n if (openEnd)\n addNode(close(openEnd, replaceTwoWay($end, $to, depth + 1)), content)\n }\n addRange($to, null, depth, content)\n return new Fragment(content)\n}\n\nfunction replaceTwoWay($from, $to, depth) {\n let content = []\n addRange(null, $from, depth, content)\n if ($from.depth > depth) {\n let type = joinable($from, $to, depth + 1)\n addNode(close(type, replaceTwoWay($from, $to, depth + 1)), content)\n }\n addRange($to, null, depth, content)\n return new Fragment(content)\n}\n\nfunction prepareSliceForReplace(slice, $along) {\n let extra = $along.depth - slice.openStart, parent = $along.node(extra)\n let node = parent.copy(slice.content)\n for (let i = extra - 1; i >= 0; i--)\n node = $along.node(i).copy(Fragment.from(node))\n return {start: node.resolveNoCache(slice.openStart + extra),\n end: node.resolveNoCache(node.content.size - slice.openEnd - extra)}\n}\n","import {Mark} from \"./mark\"\n\n// ::- You can [_resolve_](#model.Node.resolve) a position to get more\n// information about it. Objects of this class represent such a\n// resolved position, providing various pieces of context information,\n// and some helper methods.\n//\n// Throughout this interface, methods that take an optional `depth`\n// parameter will interpret undefined as `this.depth` and negative\n// numbers as `this.depth + value`.\nexport class ResolvedPos {\n constructor(pos, path, parentOffset) {\n // :: number The position that was resolved.\n this.pos = pos\n this.path = path\n // :: number\n // The number of levels the parent node is from the root. If this\n // position points directly into the root node, it is 0. If it\n // points into a top-level paragraph, 1, and so on.\n this.depth = path.length / 3 - 1\n // :: number The offset this position has into its parent node.\n this.parentOffset = parentOffset\n }\n\n resolveDepth(val) {\n if (val == null) return this.depth\n if (val < 0) return this.depth + val\n return val\n }\n\n // :: Node\n // The parent node that the position points into. Note that even if\n // a position points into a text node, that node is not considered\n // the parent—text nodes are ‘flat’ in this model, and have no content.\n get parent() { return this.node(this.depth) }\n\n // :: Node\n // The root node in which the position was resolved.\n get doc() { return this.node(0) }\n\n // :: (?number) → Node\n // The ancestor node at the given level. `p.node(p.depth)` is the\n // same as `p.parent`.\n node(depth) { return this.path[this.resolveDepth(depth) * 3] }\n\n // :: (?number) → number\n // The index into the ancestor at the given level. If this points at\n // the 3rd node in the 2nd paragraph on the top level, for example,\n // `p.index(0)` is 1 and `p.index(1)` is 2.\n index(depth) { return this.path[this.resolveDepth(depth) * 3 + 1] }\n\n // :: (?number) → number\n // The index pointing after this position into the ancestor at the\n // given level.\n indexAfter(depth) {\n depth = this.resolveDepth(depth)\n return this.index(depth) + (depth == this.depth && !this.textOffset ? 0 : 1)\n }\n\n // :: (?number) → number\n // The (absolute) position at the start of the node at the given\n // level.\n start(depth) {\n depth = this.resolveDepth(depth)\n return depth == 0 ? 0 : this.path[depth * 3 - 1] + 1\n }\n\n // :: (?number) → number\n // The (absolute) position at the end of the node at the given\n // level.\n end(depth) {\n depth = this.resolveDepth(depth)\n return this.start(depth) + this.node(depth).content.size\n }\n\n // :: (?number) → number\n // The (absolute) position directly before the wrapping node at the\n // given level, or, when `depth` is `this.depth + 1`, the original\n // position.\n before(depth) {\n depth = this.resolveDepth(depth)\n if (!depth) throw new RangeError(\"There is no position before the top-level node\")\n return depth == this.depth + 1 ? this.pos : this.path[depth * 3 - 1]\n }\n\n // :: (?number) → number\n // The (absolute) position directly after the wrapping node at the\n // given level, or the original position when `depth` is `this.depth + 1`.\n after(depth) {\n depth = this.resolveDepth(depth)\n if (!depth) throw new RangeError(\"There is no position after the top-level node\")\n return depth == this.depth + 1 ? this.pos : this.path[depth * 3 - 1] + this.path[depth * 3].nodeSize\n }\n\n // :: number\n // When this position points into a text node, this returns the\n // distance between the position and the start of the text node.\n // Will be zero for positions that point between nodes.\n get textOffset() { return this.pos - this.path[this.path.length - 1] }\n\n // :: ?Node\n // Get the node directly after the position, if any. If the position\n // points into a text node, only the part of that node after the\n // position is returned.\n get nodeAfter() {\n let parent = this.parent, index = this.index(this.depth)\n if (index == parent.childCount) return null\n let dOff = this.pos - this.path[this.path.length - 1], child = parent.child(index)\n return dOff ? parent.child(index).cut(dOff) : child\n }\n\n // :: ?Node\n // Get the node directly before the position, if any. If the\n // position points into a text node, only the part of that node\n // before the position is returned.\n get nodeBefore() {\n let index = this.index(this.depth)\n let dOff = this.pos - this.path[this.path.length - 1]\n if (dOff) return this.parent.child(index).cut(0, dOff)\n return index == 0 ? null : this.parent.child(index - 1)\n }\n\n // :: (number, ?number) → number\n // Get the position at the given index in the parent node at the\n // given depth (which defaults to `this.depth`).\n posAtIndex(index, depth) {\n depth = this.resolveDepth(depth)\n let node = this.path[depth * 3], pos = depth == 0 ? 0 : this.path[depth * 3 - 1] + 1\n for (let i = 0; i < index; i++) pos += node.child(i).nodeSize\n return pos\n }\n\n // :: () → [Mark]\n // Get the marks at this position, factoring in the surrounding\n // marks' [`inclusive`](#model.MarkSpec.inclusive) property. If the\n // position is at the start of a non-empty node, the marks of the\n // node after it (if any) are returned.\n marks() {\n let parent = this.parent, index = this.index()\n\n // In an empty parent, return the empty array\n if (parent.content.size == 0) return Mark.none\n\n // When inside a text node, just return the text node's marks\n if (this.textOffset) return parent.child(index).marks\n\n let main = parent.maybeChild(index - 1), other = parent.maybeChild(index)\n // If the `after` flag is true of there is no node before, make\n // the node after this position the main reference.\n if (!main) { let tmp = main; main = other; other = tmp }\n\n // Use all marks in the main node, except those that have\n // `inclusive` set to false and are not present in the other node.\n let marks = main.marks\n for (var i = 0; i < marks.length; i++)\n if (marks[i].type.spec.inclusive === false && (!other || !marks[i].isInSet(other.marks)))\n marks = marks[i--].removeFromSet(marks)\n\n return marks\n }\n\n // :: (ResolvedPos) → ?[Mark]\n // Get the marks after the current position, if any, except those\n // that are non-inclusive and not present at position `$end`. This\n // is mostly useful for getting the set of marks to preserve after a\n // deletion. Will return `null` if this position is at the end of\n // its parent node or its parent node isn't a textblock (in which\n // case no marks should be preserved).\n marksAcross($end) {\n let after = this.parent.maybeChild(this.index())\n if (!after || !after.isInline) return null\n\n let marks = after.marks, next = $end.parent.maybeChild($end.index())\n for (var i = 0; i < marks.length; i++)\n if (marks[i].type.spec.inclusive === false && (!next || !marks[i].isInSet(next.marks)))\n marks = marks[i--].removeFromSet(marks)\n return marks\n }\n\n // :: (number) → number\n // The depth up to which this position and the given (non-resolved)\n // position share the same parent nodes.\n sharedDepth(pos) {\n for (let depth = this.depth; depth > 0; depth--)\n if (this.start(depth) <= pos && this.end(depth) >= pos) return depth\n return 0\n }\n\n // :: (?ResolvedPos, ?(Node) → bool) → ?NodeRange\n // Returns a range based on the place where this position and the\n // given position diverge around block content. If both point into\n // the same textblock, for example, a range around that textblock\n // will be returned. If they point into different blocks, the range\n // around those blocks in their shared ancestor is returned. You can\n // pass in an optional predicate that will be called with a parent\n // node to see if a range into that parent is acceptable.\n blockRange(other = this, pred) {\n if (other.pos < this.pos) return other.blockRange(this)\n for (let d = this.depth - (this.parent.inlineContent || this.pos == other.pos ? 1 : 0); d >= 0; d--)\n if (other.pos <= this.end(d) && (!pred || pred(this.node(d))))\n return new NodeRange(this, other, d)\n }\n\n // :: (ResolvedPos) → bool\n // Query whether the given position shares the same parent node.\n sameParent(other) {\n return this.pos - this.parentOffset == other.pos - other.parentOffset\n }\n\n // :: (ResolvedPos) → ResolvedPos\n // Return the greater of this and the given position.\n max(other) {\n return other.pos > this.pos ? other : this\n }\n\n // :: (ResolvedPos) → ResolvedPos\n // Return the smaller of this and the given position.\n min(other) {\n return other.pos < this.pos ? other : this\n }\n\n toString() {\n let str = \"\"\n for (let i = 1; i <= this.depth; i++)\n str += (str ? \"/\" : \"\") + this.node(i).type.name + \"_\" + this.index(i - 1)\n return str + \":\" + this.parentOffset\n }\n\n static resolve(doc, pos) {\n if (!(pos >= 0 && pos <= doc.content.size)) throw new RangeError(\"Position \" + pos + \" out of range\")\n let path = []\n let start = 0, parentOffset = pos\n for (let node = doc;;) {\n let {index, offset} = node.content.findIndex(parentOffset)\n let rem = parentOffset - offset\n path.push(node, index, start + offset)\n if (!rem) break\n node = node.child(index)\n if (node.isText) break\n parentOffset = rem - 1\n start += offset + 1\n }\n return new ResolvedPos(pos, path, parentOffset)\n }\n\n static resolveCached(doc, pos) {\n for (let i = 0; i < resolveCache.length; i++) {\n let cached = resolveCache[i]\n if (cached.pos == pos && cached.doc == doc) return cached\n }\n let result = resolveCache[resolveCachePos] = ResolvedPos.resolve(doc, pos)\n resolveCachePos = (resolveCachePos + 1) % resolveCacheSize\n return result\n }\n}\n\nlet resolveCache = [], resolveCachePos = 0, resolveCacheSize = 12\n\n// ::- Represents a flat range of content, i.e. one that starts and\n// ends in the same node.\nexport class NodeRange {\n // :: (ResolvedPos, ResolvedPos, number)\n // Construct a node range. `$from` and `$to` should point into the\n // same node until at least the given `depth`, since a node range\n // denotes an adjacent set of nodes in a single parent node.\n constructor($from, $to, depth) {\n // :: ResolvedPos A resolved position along the start of the\n // content. May have a `depth` greater than this object's `depth`\n // property, since these are the positions that were used to\n // compute the range, not re-resolved positions directly at its\n // boundaries.\n this.$from = $from\n // :: ResolvedPos A position along the end of the content. See\n // caveat for [`$from`](#model.NodeRange.$from).\n this.$to = $to\n // :: number The depth of the node that this range points into.\n this.depth = depth\n }\n\n // :: number The position at the start of the range.\n get start() { return this.$from.before(this.depth + 1) }\n // :: number The position at the end of the range.\n get end() { return this.$to.after(this.depth + 1) }\n\n // :: Node The parent node that the range points into.\n get parent() { return this.$from.node(this.depth) }\n // :: number The start index of the range in the parent node.\n get startIndex() { return this.$from.index(this.depth) }\n // :: number The end index of the range in the parent node.\n get endIndex() { return this.$to.indexAfter(this.depth) }\n}\n","import {Fragment} from \"./fragment\"\nimport {Mark} from \"./mark\"\nimport {Slice, replace} from \"./replace\"\nimport {ResolvedPos} from \"./resolvedpos\"\nimport {compareDeep} from \"./comparedeep\"\n\nconst emptyAttrs = Object.create(null)\n\n// ::- This class represents a node in the tree that makes up a\n// ProseMirror document. So a document is an instance of `Node`, with\n// children that are also instances of `Node`.\n//\n// Nodes are persistent data structures. Instead of changing them, you\n// create new ones with the content you want. Old ones keep pointing\n// at the old document shape. This is made cheaper by sharing\n// structure between the old and new data as much as possible, which a\n// tree shape like this (without back pointers) makes easy.\n//\n// **Do not** directly mutate the properties of a `Node` object. See\n// [the guide](/docs/guide/#doc) for more information.\nexport class Node {\n constructor(type, attrs, content, marks) {\n // :: NodeType\n // The type of node that this is.\n this.type = type\n\n // :: Object\n // An object mapping attribute names to values. The kind of\n // attributes allowed and required are\n // [determined](#model.NodeSpec.attrs) by the node type.\n this.attrs = attrs\n\n // :: Fragment\n // A container holding the node's children.\n this.content = content || Fragment.empty\n\n // :: [Mark]\n // The marks (things like whether it is emphasized or part of a\n // link) applied to this node.\n this.marks = marks || Mark.none\n }\n\n // text:: ?string\n // For text nodes, this contains the node's text content.\n\n // :: number\n // The size of this node, as defined by the integer-based [indexing\n // scheme](/docs/guide/#doc.indexing). For text nodes, this is the\n // amount of characters. For other leaf nodes, it is one. For\n // non-leaf nodes, it is the size of the content plus two (the start\n // and end token).\n get nodeSize() { return this.isLeaf ? 1 : 2 + this.content.size }\n\n // :: number\n // The number of children that the node has.\n get childCount() { return this.content.childCount }\n\n // :: (number) → Node\n // Get the child node at the given index. Raises an error when the\n // index is out of range.\n child(index) { return this.content.child(index) }\n\n // :: (number) → ?Node\n // Get the child node at the given index, if it exists.\n maybeChild(index) { return this.content.maybeChild(index) }\n\n // :: ((node: Node, offset: number, index: number))\n // Call `f` for every child node, passing the node, its offset\n // into this parent node, and its index.\n forEach(f) { this.content.forEach(f) }\n\n // :: (number, number, (node: Node, pos: number, parent: Node, index: number) → ?bool, ?number)\n // Invoke a callback for all descendant nodes recursively between\n // the given two positions that are relative to start of this node's\n // content. The callback is invoked with the node, its\n // parent-relative position, its parent node, and its child index.\n // When the callback returns false for a given node, that node's\n // children will not be recursed over. The last parameter can be\n // used to specify a starting position to count from.\n nodesBetween(from, to, f, startPos = 0) {\n this.content.nodesBetween(from, to, f, startPos, this)\n }\n\n // :: ((node: Node, pos: number, parent: Node) → ?bool)\n // Call the given callback for every descendant node. Doesn't\n // descend into a node when the callback returns `false`.\n descendants(f) {\n this.nodesBetween(0, this.content.size, f)\n }\n\n // :: string\n // Concatenates all the text nodes found in this fragment and its\n // children.\n get textContent() { return this.textBetween(0, this.content.size, \"\") }\n\n // :: (number, number, ?string, ?string) → string\n // Get all text between positions `from` and `to`. When\n // `blockSeparator` is given, it will be inserted whenever a new\n // block node is started. When `leafText` is given, it'll be\n // inserted for every non-text leaf node encountered.\n textBetween(from, to, blockSeparator, leafText) {\n return this.content.textBetween(from, to, blockSeparator, leafText)\n }\n\n // :: ?Node\n // Returns this node's first child, or `null` if there are no\n // children.\n get firstChild() { return this.content.firstChild }\n\n // :: ?Node\n // Returns this node's last child, or `null` if there are no\n // children.\n get lastChild() { return this.content.lastChild }\n\n // :: (Node) → bool\n // Test whether two nodes represent the same piece of document.\n eq(other) {\n return this == other || (this.sameMarkup(other) && this.content.eq(other.content))\n }\n\n // :: (Node) → bool\n // Compare the markup (type, attributes, and marks) of this node to\n // those of another. Returns `true` if both have the same markup.\n sameMarkup(other) {\n return this.hasMarkup(other.type, other.attrs, other.marks)\n }\n\n // :: (NodeType, ?Object, ?[Mark]) → bool\n // Check whether this node's markup correspond to the given type,\n // attributes, and marks.\n hasMarkup(type, attrs, marks) {\n return this.type == type &&\n compareDeep(this.attrs, attrs || type.defaultAttrs || emptyAttrs) &&\n Mark.sameSet(this.marks, marks || Mark.none)\n }\n\n // :: (?Fragment) → Node\n // Create a new node with the same markup as this node, containing\n // the given content (or empty, if no content is given).\n copy(content = null) {\n if (content == this.content) return this\n return new this.constructor(this.type, this.attrs, content, this.marks)\n }\n\n // :: ([Mark]) → Node\n // Create a copy of this node, with the given set of marks instead\n // of the node's own marks.\n mark(marks) {\n return marks == this.marks ? this : new this.constructor(this.type, this.attrs, this.content, marks)\n }\n\n // :: (number, ?number) → Node\n // Create a copy of this node with only the content between the\n // given positions. If `to` is not given, it defaults to the end of\n // the node.\n cut(from, to) {\n if (from == 0 && to == this.content.size) return this\n return this.copy(this.content.cut(from, to))\n }\n\n // :: (number, ?number) → Slice\n // Cut out the part of the document between the given positions, and\n // return it as a `Slice` object.\n slice(from, to = this.content.size, includeParents = false) {\n if (from == to) return Slice.empty\n\n let $from = this.resolve(from), $to = this.resolve(to)\n let depth = includeParents ? 0 : $from.sharedDepth(to)\n let start = $from.start(depth), node = $from.node(depth)\n let content = node.content.cut($from.pos - start, $to.pos - start)\n return new Slice(content, $from.depth - depth, $to.depth - depth)\n }\n\n // :: (number, number, Slice) → Node\n // Replace the part of the document between the given positions with\n // the given slice. The slice must 'fit', meaning its open sides\n // must be able to connect to the surrounding content, and its\n // content nodes must be valid children for the node they are placed\n // into. If any of this is violated, an error of type\n // [`ReplaceError`](#model.ReplaceError) is thrown.\n replace(from, to, slice) {\n return replace(this.resolve(from), this.resolve(to), slice)\n }\n\n // :: (number) → ?Node\n // Find the node directly after the given position.\n nodeAt(pos) {\n for (let node = this;;) {\n let {index, offset} = node.content.findIndex(pos)\n node = node.maybeChild(index)\n if (!node) return null\n if (offset == pos || node.isText) return node\n pos -= offset + 1\n }\n }\n\n // :: (number) → {node: ?Node, index: number, offset: number}\n // Find the (direct) child node after the given offset, if any,\n // and return it along with its index and offset relative to this\n // node.\n childAfter(pos) {\n let {index, offset} = this.content.findIndex(pos)\n return {node: this.content.maybeChild(index), index, offset}\n }\n\n // :: (number) → {node: ?Node, index: number, offset: number}\n // Find the (direct) child node before the given offset, if any,\n // and return it along with its index and offset relative to this\n // node.\n childBefore(pos) {\n if (pos == 0) return {node: null, index: 0, offset: 0}\n let {index, offset} = this.content.findIndex(pos)\n if (offset < pos) return {node: this.content.child(index), index, offset}\n let node = this.content.child(index - 1)\n return {node, index: index - 1, offset: offset - node.nodeSize}\n }\n\n // :: (number) → ResolvedPos\n // Resolve the given position in the document, returning an\n // [object](#model.ResolvedPos) with information about its context.\n resolve(pos) { return ResolvedPos.resolveCached(this, pos) }\n\n resolveNoCache(pos) { return ResolvedPos.resolve(this, pos) }\n\n // :: (number, number, union<Mark, MarkType>) → bool\n // Test whether a given mark or mark type occurs in this document\n // between the two given positions.\n rangeHasMark(from, to, type) {\n let found = false\n if (to > from) this.nodesBetween(from, to, node => {\n if (type.isInSet(node.marks)) found = true\n return !found\n })\n return found\n }\n\n // :: bool\n // True when this is a block (non-inline node)\n get isBlock() { return this.type.isBlock }\n\n // :: bool\n // True when this is a textblock node, a block node with inline\n // content.\n get isTextblock() { return this.type.isTextblock }\n\n // :: bool\n // True when this node allows inline content.\n get inlineContent() { return this.type.inlineContent }\n\n // :: bool\n // True when this is an inline node (a text node or a node that can\n // appear among text).\n get isInline() { return this.type.isInline }\n\n // :: bool\n // True when this is a text node.\n get isText() { return this.type.isText }\n\n // :: bool\n // True when this is a leaf node.\n get isLeaf() { return this.type.isLeaf }\n\n // :: bool\n // True when this is an atom, i.e. when it does not have directly\n // editable content. This is usually the same as `isLeaf`, but can\n // be configured with the [`atom` property](#model.NodeSpec.atom) on\n // a node's spec (typically used when the node is displayed as an\n // uneditable [node view](#view.NodeView)).\n get isAtom() { return this.type.isAtom }\n\n // :: () → string\n // Return a string representation of this node for debugging\n // purposes.\n toString() {\n if (this.type.spec.toDebugString) return this.type.spec.toDebugString(this)\n let name = this.type.name\n if (this.content.size)\n name += \"(\" + this.content.toStringInner() + \")\"\n return wrapMarks(this.marks, name)\n }\n\n // :: (number) → ContentMatch\n // Get the content match in this node at the given index.\n contentMatchAt(index) {\n let match = this.type.contentMatch.matchFragment(this.content, 0, index)\n if (!match) throw new Error(\"Called contentMatchAt on a node with invalid content\")\n return match\n }\n\n // :: (number, number, ?Fragment, ?number, ?number) → bool\n // Test whether replacing the range between `from` and `to` (by\n // child index) with the given replacement fragment (which defaults\n // to the empty fragment) would leave the node's content valid. You\n // can optionally pass `start` and `end` indices into the\n // replacement fragment.\n canReplace(from, to, replacement = Fragment.empty, start = 0, end = replacement.childCount) {\n let one = this.contentMatchAt(from).matchFragment(replacement, start, end)\n let two = one && one.matchFragment(this.content, to)\n if (!two || !two.validEnd) return false\n for (let i = start; i < end; i++) if (!this.type.allowsMarks(replacement.child(i).marks)) return false\n return true\n }\n\n // :: (number, number, NodeType, ?[Mark]) → bool\n // Test whether replacing the range `from` to `to` (by index) with a\n // node of the given type would leave the node's content valid.\n canReplaceWith(from, to, type, marks) {\n if (marks && !this.type.allowsMarks(marks)) return false\n let start = this.contentMatchAt(from).matchType(type)\n let end = start && start.matchFragment(this.content, to)\n return end ? end.validEnd : false\n }\n\n // :: (Node) → bool\n // Test whether the given node's content could be appended to this\n // node. If that node is empty, this will only return true if there\n // is at least one node type that can appear in both nodes (to avoid\n // merging completely incompatible nodes).\n canAppend(other) {\n if (other.content.size) return this.canReplace(this.childCount, this.childCount, other.content)\n else return this.type.compatibleContent(other.type)\n }\n\n // :: ()\n // Check whether this node and its descendants conform to the\n // schema, and raise error when they do not.\n check() {\n if (!this.type.validContent(this.content))\n throw new RangeError(`Invalid content for node ${this.type.name}: ${this.content.toString().slice(0, 50)}`)\n let copy = Mark.none\n for (let i = 0; i < this.marks.length; i++) copy = this.marks[i].addToSet(copy)\n if (!Mark.sameSet(copy, this.marks))\n throw new RangeError(`Invalid collection of marks for node ${this.type.name}: ${this.marks.map(m => m.type.name)}`)\n this.content.forEach(node => node.check())\n }\n\n // :: () → Object\n // Return a JSON-serializeable representation of this node.\n toJSON() {\n let obj = {type: this.type.name}\n for (let _ in this.attrs) {\n obj.attrs = this.attrs\n break\n }\n if (this.content.size)\n obj.content = this.content.toJSON()\n if (this.marks.length)\n obj.marks = this.marks.map(n => n.toJSON())\n return obj\n }\n\n // :: (Schema, Object) → Node\n // Deserialize a node from its JSON representation.\n static fromJSON(schema, json) {\n if (!json) throw new RangeError(\"Invalid input for Node.fromJSON\")\n let marks = null\n if (json.marks) {\n if (!Array.isArray(json.marks)) throw new RangeError(\"Invalid mark data for Node.fromJSON\")\n marks = json.marks.map(schema.markFromJSON)\n }\n if (json.type == \"text\") {\n if (typeof json.text != \"string\") throw new RangeError(\"Invalid text node in JSON\")\n return schema.text(json.text, marks)\n }\n let content = Fragment.fromJSON(schema, json.content)\n return schema.nodeType(json.type).create(json.attrs, content, marks)\n }\n}\n\nexport class TextNode extends Node {\n constructor(type, attrs, content, marks) {\n super(type, attrs, null, marks)\n\n if (!content) throw new RangeError(\"Empty text nodes are not allowed\")\n\n this.text = content\n }\n\n toString() {\n if (this.type.spec.toDebugString) return this.type.spec.toDebugString(this)\n return wrapMarks(this.marks, JSON.stringify(this.text))\n }\n\n get textContent() { return this.text }\n\n textBetween(from, to) { return this.text.slice(from, to) }\n\n get nodeSize() { return this.text.length }\n\n mark(marks) {\n return marks == this.marks ? this : new TextNode(this.type, this.attrs, this.text, marks)\n }\n\n withText(text) {\n if (text == this.text) return this\n return new TextNode(this.type, this.attrs, text, this.marks)\n }\n\n cut(from = 0, to = this.text.length) {\n if (from == 0 && to == this.text.length) return this\n return this.withText(this.text.slice(from, to))\n }\n\n eq(other) {\n return this.sameMarkup(other) && this.text == other.text\n }\n\n toJSON() {\n let base = super.toJSON()\n base.text = this.text\n return base\n }\n}\n\nfunction wrapMarks(marks, str) {\n for (let i = marks.length - 1; i >= 0; i--)\n str = marks[i].type.name + \"(\" + str + \")\"\n return str\n}\n","import {Fragment} from \"./fragment\"\n\n// ::- Instances of this class represent a match state of a node\n// type's [content expression](#model.NodeSpec.content), and can be\n// used to find out whether further content matches here, and whether\n// a given position is a valid end of the node.\nexport class ContentMatch {\n constructor(validEnd) {\n // :: bool\n // True when this match state represents a valid end of the node.\n this.validEnd = validEnd\n this.next = []\n this.wrapCache = []\n }\n\n static parse(string, nodeTypes) {\n let stream = new TokenStream(string, nodeTypes)\n if (stream.next == null) return ContentMatch.empty\n let expr = parseExpr(stream)\n if (stream.next) stream.err(\"Unexpected trailing text\")\n let match = dfa(nfa(expr))\n checkForDeadEnds(match, stream)\n return match\n }\n\n // :: (NodeType) → ?ContentMatch\n // Match a node type, returning a match after that node if\n // successful.\n matchType(type) {\n for (let i = 0; i < this.next.length; i += 2)\n if (this.next[i] == type) return this.next[i + 1]\n return null\n }\n\n // :: (Fragment, ?number, ?number) → ?ContentMatch\n // Try to match a fragment. Returns the resulting match when\n // successful.\n matchFragment(frag, start = 0, end = frag.childCount) {\n let cur = this\n for (let i = start; cur && i < end; i++)\n cur = cur.matchType(frag.child(i).type)\n return cur\n }\n\n get inlineContent() {\n let first = this.next[0]\n return first ? first.isInline : false\n }\n\n // :: ?NodeType\n // Get the first matching node type at this match position that can\n // be generated.\n get defaultType() {\n for (let i = 0; i < this.next.length; i += 2) {\n let type = this.next[i]\n if (!(type.isText || type.hasRequiredAttrs())) return type\n }\n }\n\n compatible(other) {\n for (let i = 0; i < this.next.length; i += 2)\n for (let j = 0; j < other.next.length; j += 2)\n if (this.next[i] == other.next[j]) return true\n return false\n }\n\n // :: (Fragment, bool, ?number) → ?Fragment\n // Try to match the given fragment, and if that fails, see if it can\n // be made to match by inserting nodes in front of it. When\n // successful, return a fragment of inserted nodes (which may be\n // empty if nothing had to be inserted). When `toEnd` is true, only\n // return a fragment if the resulting match goes to the end of the\n // content expression.\n fillBefore(after, toEnd = false, startIndex = 0) {\n let seen = [this]\n function search(match, types) {\n let finished = match.matchFragment(after, startIndex)\n if (finished && (!toEnd || finished.validEnd))\n return Fragment.from(types.map(tp => tp.createAndFill()))\n\n for (let i = 0; i < match.next.length; i += 2) {\n let type = match.next[i], next = match.next[i + 1]\n if (!(type.isText || type.hasRequiredAttrs()) && seen.indexOf(next) == -1) {\n seen.push(next)\n let found = search(next, types.concat(type))\n if (found) return found\n }\n }\n }\n\n return search(this, [])\n }\n\n // :: (NodeType) → ?[NodeType]\n // Find a set of wrapping node types that would allow a node of the\n // given type to appear at this position. The result may be empty\n // (when it fits directly) and will be null when no such wrapping\n // exists.\n findWrapping(target) {\n for (let i = 0; i < this.wrapCache.length; i += 2)\n if (this.wrapCache[i] == target) return this.wrapCache[i + 1]\n let computed = this.computeWrapping(target)\n this.wrapCache.push(target, computed)\n return computed\n }\n\n computeWrapping(target) {\n let seen = Object.create(null), active = [{match: this, type: null, via: null}]\n while (active.length) {\n let current = active.shift(), match = current.match\n if (match.matchType(target)) {\n let result = []\n for (let obj = current; obj.type; obj = obj.via)\n result.push(obj.type)\n return result.reverse()\n }\n for (let i = 0; i < match.next.length; i += 2) {\n let type = match.next[i]\n if (!type.isLeaf && !type.hasRequiredAttrs() && !(type.name in seen) && (!current.type || match.next[i + 1].validEnd)) {\n active.push({match: type.contentMatch, type, via: current})\n seen[type.name] = true\n }\n }\n }\n }\n\n // :: number\n // The number of outgoing edges this node has in the finite\n // automaton that describes the content expression.\n get edgeCount() {\n return this.next.length >> 1\n }\n\n // :: (number) → {type: NodeType, next: ContentMatch}\n // Get the _n_th outgoing edge from this node in the finite\n // automaton that describes the content expression.\n edge(n) {\n let i = n << 1\n if (i >= this.next.length) throw new RangeError(`There's no ${n}th edge in this content match`)\n return {type: this.next[i], next: this.next[i + 1]}\n }\n\n toString() {\n let seen = []\n function scan(m) {\n seen.push(m)\n for (let i = 1; i < m.next.length; i += 2)\n if (seen.indexOf(m.next[i]) == -1) scan(m.next[i])\n }\n scan(this)\n return seen.map((m, i) => {\n let out = i + (m.validEnd ? \"*\" : \" \") + \" \"\n for (let i = 0; i < m.next.length; i += 2)\n out += (i ? \", \" : \"\") + m.next[i].name + \"->\" + seen.indexOf(m.next[i + 1])\n return out\n }).join(\"\\n\")\n }\n}\n\nContentMatch.empty = new ContentMatch(true)\n\nclass TokenStream {\n constructor(string, nodeTypes) {\n this.string = string\n this.nodeTypes = nodeTypes\n this.inline = null\n this.pos = 0\n this.tokens = string.split(/\\s*(?=\\b|\\W|$)/)\n if (this.tokens[this.tokens.length - 1] == \"\") this.tokens.pop()\n if (this.tokens[0] == \"\") this.tokens.shift()\n }\n\n get next() { return this.tokens[this.pos] }\n\n eat(tok) { return this.next == tok && (this.pos++ || true) }\n\n err(str) { throw new SyntaxError(str + \" (in content expression '\" + this.string + \"')\") }\n}\n\nfunction parseExpr(stream) {\n let exprs = []\n do { exprs.push(parseExprSeq(stream)) }\n while (stream.eat(\"|\"))\n return exprs.length == 1 ? exprs[0] : {type: \"choice\", exprs}\n}\n\nfunction parseExprSeq(stream) {\n let exprs = []\n do { exprs.push(parseExprSubscript(stream)) }\n while (stream.next && stream.next != \")\" && stream.next != \"|\")\n return exprs.length == 1 ? exprs[0] : {type: \"seq\", exprs}\n}\n\nfunction parseExprSubscript(stream) {\n let expr = parseExprAtom(stream)\n for (;;) {\n if (stream.eat(\"+\"))\n expr = {type: \"plus\", expr}\n else if (stream.eat(\"*\"))\n expr = {type: \"star\", expr}\n else if (stream.eat(\"?\"))\n expr = {type: \"opt\", expr}\n else if (stream.eat(\"{\"))\n expr = parseExprRange(stream, expr)\n else break\n }\n return expr\n}\n\nfunction parseNum(stream) {\n if (/\\D/.test(stream.next)) stream.err(\"Expected number, got '\" + stream.next + \"'\")\n let result = Number(stream.next)\n stream.pos++\n return result\n}\n\nfunction parseExprRange(stream, expr) {\n let min = parseNum(stream), max = min\n if (stream.eat(\",\")) {\n if (stream.next != \"}\") max = parseNum(stream)\n else max = -1\n }\n if (!stream.eat(\"}\")) stream.err(\"Unclosed braced range\")\n return {type: \"range\", min, max, expr}\n}\n\nfunction resolveName(stream, name) {\n let types = stream.nodeTypes, type = types[name]\n if (type) return [type]\n let result = []\n for (let typeName in types) {\n let type = types[typeName]\n if (type.groups.indexOf(name) > -1) result.push(type)\n }\n if (result.length == 0) stream.err(\"No node type or group '\" + name + \"' found\")\n return result\n}\n\nfunction parseExprAtom(stream) {\n if (stream.eat(\"(\")) {\n let expr = parseExpr(stream)\n if (!stream.eat(\")\")) stream.err(\"Missing closing paren\")\n return expr\n } else if (!/\\W/.test(stream.next)) {\n let exprs = resolveName(stream, stream.next).map(type => {\n if (stream.inline == null) stream.inline = type.isInline\n else if (stream.inline != type.isInline) stream.err(\"Mixing inline and block content\")\n return {type: \"name\", value: type}\n })\n stream.pos++\n return exprs.length == 1 ? exprs[0] : {type: \"choice\", exprs}\n } else {\n stream.err(\"Unexpected token '\" + stream.next + \"'\")\n }\n}\n\n// The code below helps compile a regular-expression-like language\n// into a deterministic finite automaton. For a good introduction to\n// these concepts, see https://swtch.com/~rsc/regexp/regexp1.html\n\n// : (Object) → [[{term: ?any, to: number}]]\n// Construct an NFA from an expression as returned by the parser. The\n// NFA is represented as an array of states, which are themselves\n// arrays of edges, which are `{term, to}` objects. The first state is\n// the entry state and the last node is the success state.\n//\n// Note that unlike typical NFAs, the edge ordering in this one is\n// significant, in that it is used to contruct filler content when\n// necessary.\nfunction nfa(expr) {\n let nfa = [[]]\n connect(compile(expr, 0), node())\n return nfa\n\n function node() { return nfa.push([]) - 1 }\n function edge(from, to, term) {\n let edge = {term, to}\n nfa[from].push(edge)\n return edge\n }\n function connect(edges, to) { edges.forEach(edge => edge.to = to) }\n\n function compile(expr, from) {\n if (expr.type == \"choice\") {\n return expr.exprs.reduce((out, expr) => out.concat(compile(expr, from)), [])\n } else if (expr.type == \"seq\") {\n for (let i = 0;; i++) {\n let next = compile(expr.exprs[i], from)\n if (i == expr.exprs.length - 1) return next\n connect(next, from = node())\n }\n } else if (expr.type == \"star\") {\n let loop = node()\n edge(from, loop)\n connect(compile(expr.expr, loop), loop)\n return [edge(loop)]\n } else if (expr.type == \"plus\") {\n let loop = node()\n connect(compile(expr.expr, from), loop)\n connect(compile(expr.expr, loop), loop)\n return [edge(loop)]\n } else if (expr.type == \"opt\") {\n return [edge(from)].concat(compile(expr.expr, from))\n } else if (expr.type == \"range\") {\n let cur = from\n for (let i = 0; i < expr.min; i++) {\n let next = node()\n connect(compile(expr.expr, cur), next)\n cur = next\n }\n if (expr.max == -1) {\n connect(compile(expr.expr, cur), cur)\n } else {\n for (let i = expr.min; i < expr.max; i++) {\n let next = node()\n edge(cur, next)\n connect(compile(expr.expr, cur), next)\n cur = next\n }\n }\n return [edge(cur)]\n } else if (expr.type == \"name\") {\n return [edge(from, null, expr.value)]\n }\n }\n}\n\nfunction cmp(a, b) { return b - a }\n\n// Get the set of nodes reachable by null edges from `node`. Omit\n// nodes with only a single null-out-edge, since they may lead to\n// needless duplicated nodes.\nfunction nullFrom(nfa, node) {\n let result = []\n scan(node)\n return result.sort(cmp)\n\n function scan(node) {\n let edges = nfa[node]\n if (edges.length == 1 && !edges[0].term) return scan(edges[0].to)\n result.push(node)\n for (let i = 0; i < edges.length; i++) {\n let {term, to} = edges[i]\n if (!term && result.indexOf(to) == -1) scan(to)\n }\n }\n}\n\n// : ([[{term: ?any, to: number}]]) → ContentMatch\n// Compiles an NFA as produced by `nfa` into a DFA, modeled as a set\n// of state objects (`ContentMatch` instances) with transitions\n// between them.\nfunction dfa(nfa) {\n let labeled = Object.create(null)\n return explore(nullFrom(nfa, 0))\n\n function explore(states) {\n let out = []\n states.forEach(node => {\n nfa[node].forEach(({term, to}) => {\n if (!term) return\n let known = out.indexOf(term), set = known > -1 && out[known + 1]\n nullFrom(nfa, to).forEach(node => {\n if (!set) out.push(term, set = [])\n if (set.indexOf(node) == -1) set.push(node)\n })\n })\n })\n let state = labeled[states.join(\",\")] = new ContentMatch(states.indexOf(nfa.length - 1) > -1)\n for (let i = 0; i < out.length; i += 2) {\n let states = out[i + 1].sort(cmp)\n state.next.push(out[i], labeled[states.join(\",\")] || explore(states))\n }\n return state\n }\n}\n\nfunction checkForDeadEnds(match, stream) {\n for (let i = 0, work = [match]; i < work.length; i++) {\n let state = work[i], dead = !state.validEnd, nodes = []\n for (let j = 0; j < state.next.length; j += 2) {\n let node = state.next[j], next = state.next[j + 1]\n nodes.push(node.name)\n if (dead && !(node.isText || node.hasRequiredAttrs())) dead = false\n if (work.indexOf(next) == -1) work.push(next)\n }\n if (dead) stream.err(\"Only non-generatable nodes (\" + nodes.join(\", \") + \") in a required position (see https://prosemirror.net/docs/guide/#generatable)\")\n }\n}\n","import OrderedMap from \"orderedmap\"\n\nimport {Node, TextNode} from \"./node\"\nimport {Fragment} from \"./fragment\"\nimport {Mark} from \"./mark\"\nimport {ContentMatch} from \"./content\"\n\n// For node types where all attrs have a default value (or which don't\n// have any attributes), build up a single reusable default attribute\n// object, and use it for all nodes that don't specify specific\n// attributes.\nfunction defaultAttrs(attrs) {\n let defaults = Object.create(null)\n for (let attrName in attrs) {\n let attr = attrs[attrName]\n if (!attr.hasDefault) return null\n defaults[attrName] = attr.default\n }\n return defaults\n}\n\nfunction computeAttrs(attrs, value) {\n let built = Object.create(null)\n for (let name in attrs) {\n let given = value && value[name]\n if (given === undefined) {\n let attr = attrs[name]\n if (attr.hasDefault) given = attr.default\n else throw new RangeError(\"No value supplied for attribute \" + name)\n }\n built[name] = given\n }\n return built\n}\n\nfunction initAttrs(attrs) {\n let result = Object.create(null)\n if (attrs) for (let name in attrs) result[name] = new Attribute(attrs[name])\n return result\n}\n\n// ::- Node types are objects allocated once per `Schema` and used to\n// [tag](#model.Node.type) `Node` instances. They contain information\n// about the node type, such as its name and what kind of node it\n// represents.\nexport class NodeType {\n constructor(name, schema, spec) {\n // :: string\n // The name the node type has in this schema.\n this.name = name\n\n // :: Schema\n // A link back to the `Schema` the node type belongs to.\n this.schema = schema\n\n // :: NodeSpec\n // The spec that this type is based on\n this.spec = spec\n\n this.groups = spec.group ? spec.group.split(\" \") : []\n this.attrs = initAttrs(spec.attrs)\n\n this.defaultAttrs = defaultAttrs(this.attrs)\n\n // :: ContentMatch\n // The starting match of the node type's content expression.\n this.contentMatch = null\n\n // : ?[MarkType]\n // The set of marks allowed in this node. `null` means all marks\n // are allowed.\n this.markSet = null\n\n // :: bool\n // True if this node type has inline content.\n this.inlineContent = null\n\n // :: bool\n // True if this is a block type\n this.isBlock = !(spec.inline || name == \"text\")\n\n // :: bool\n // True if this is the text node type.\n this.isText = name == \"text\"\n }\n\n // :: bool\n // True if this is an inline type.\n get isInline() { return !this.isBlock }\n\n // :: bool\n // True if this is a textblock type, a block that contains inline\n // content.\n get isTextblock() { return this.isBlock && this.inlineContent }\n\n // :: bool\n // True for node types that allow no content.\n get isLeaf() { return this.contentMatch == ContentMatch.empty }\n\n // :: bool\n // True when this node is an atom, i.e. when it does not have\n // directly editable content.\n get isAtom() { return this.isLeaf || this.spec.atom }\n\n // :: () → bool\n // Tells you whether this node type has any required attributes.\n hasRequiredAttrs() {\n for (let n in this.attrs) if (this.attrs[n].isRequired) return true\n return false\n }\n\n compatibleContent(other) {\n return this == other || this.contentMatch.compatible(other.contentMatch)\n }\n\n computeAttrs(attrs) {\n if (!attrs && this.defaultAttrs) return this.defaultAttrs\n else return computeAttrs(this.attrs, attrs)\n }\n\n // :: (?Object, ?union<Fragment, Node, [Node]>, ?[Mark]) → Node\n // Create a `Node` of this type. The given attributes are\n // checked and defaulted (you can pass `null` to use the type's\n // defaults entirely, if no required attributes exist). `content`\n // may be a `Fragment`, a node, an array of nodes, or\n // `null`. Similarly `marks` may be `null` to default to the empty\n // set of marks.\n create(attrs, content, marks) {\n if (this.isText) throw new Error(\"NodeType.create can't construct text nodes\")\n return new Node(this, this.computeAttrs(attrs), Fragment.from(content), Mark.setFrom(marks))\n }\n\n // :: (?Object, ?union<Fragment, Node, [Node]>, ?[Mark]) → Node\n // Like [`create`](#model.NodeType.create), but check the given content\n // against the node type's content restrictions, and throw an error\n // if it doesn't match.\n createChecked(attrs, content, marks) {\n content = Fragment.from(content)\n if (!this.validContent(content))\n throw new RangeError(\"Invalid content for node \" + this.name)\n return new Node(this, this.computeAttrs(attrs), content, Mark.setFrom(marks))\n }\n\n // :: (?Object, ?union<Fragment, Node, [Node]>, ?[Mark]) → ?Node\n // Like [`create`](#model.NodeType.create), but see if it is necessary to\n // add nodes to the start or end of the given fragment to make it\n // fit the node. If no fitting wrapping can be found, return null.\n // Note that, due to the fact that required nodes can always be\n // created, this will always succeed if you pass null or\n // `Fragment.empty` as content.\n createAndFill(attrs, content, marks) {\n attrs = this.computeAttrs(attrs)\n content = Fragment.from(content)\n if (content.size) {\n let before = this.contentMatch.fillBefore(content)\n if (!before) return null\n content = before.append(content)\n }\n let after = this.contentMatch.matchFragment(content).fillBefore(Fragment.empty, true)\n if (!after) return null\n return new Node(this, attrs, content.append(after), Mark.setFrom(marks))\n }\n\n // :: (Fragment) → bool\n // Returns true if the given fragment is valid content for this node\n // type with the given attributes.\n validContent(content) {\n let result = this.contentMatch.matchFragment(content)\n if (!result || !result.validEnd) return false\n for (let i = 0; i < content.childCount; i++)\n if (!this.allowsMarks(content.child(i).marks)) return false\n return true\n }\n\n // :: (MarkType) → bool\n // Check whether the given mark type is allowed in this node.\n allowsMarkType(markType) {\n return this.markSet == null || this.markSet.indexOf(markType) > -1\n }\n\n // :: ([Mark]) → bool\n // Test whether the given set of marks are allowed in this node.\n allowsMarks(marks) {\n if (this.markSet == null) return true\n for (let i = 0; i < marks.length; i++) if (!this.allowsMarkType(marks[i].type)) return false\n return true\n }\n\n // :: ([Mark]) → [Mark]\n // Removes the marks that are not allowed in this node from the given set.\n allowedMarks(marks) {\n if (this.markSet == null) return marks\n let copy\n for (let i = 0; i < marks.length; i++) {\n if (!this.allowsMarkType(marks[i].type)) {\n if (!copy) copy = marks.slice(0, i)\n } else if (copy) {\n copy.push(marks[i])\n }\n }\n return !copy ? marks : copy.length ? copy : Mark.empty\n }\n\n static compile(nodes, schema) {\n let result = Object.create(null)\n nodes.forEach((name, spec) => result[name] = new NodeType(name, schema, spec))\n\n let topType = schema.spec.topNode || \"doc\"\n if (!result[topType]) throw new RangeError(\"Schema is missing its top node type ('\" + topType + \"')\")\n if (!result.text) throw new RangeError(\"Every schema needs a 'text' type\")\n for (let _ in result.text.attrs) throw new RangeError(\"The text node type should not have attributes\")\n\n return result\n }\n}\n\n// Attribute descriptors\n\nclass Attribute {\n constructor(options) {\n this.hasDefault = Object.prototype.hasOwnProperty.call(options, \"default\")\n this.default = options.default\n }\n\n get isRequired() {\n return !this.hasDefault\n }\n}\n\n// Marks\n\n// ::- Like nodes, marks (which are associated with nodes to signify\n// things like emphasis or being part of a link) are\n// [tagged](#model.Mark.type) with type objects, which are\n// instantiated once per `Schema`.\nexport class MarkType {\n constructor(name, rank, schema, spec) {\n // :: string\n // The name of the mark type.\n this.name = name\n\n // :: Schema\n // The schema that this mark type instance is part of.\n this.schema = schema\n\n // :: MarkSpec\n // The spec on which the type is based.\n this.spec = spec\n\n this.attrs = initAttrs(spec.attrs)\n\n this.rank = rank\n this.excluded = null\n let defaults = defaultAttrs(this.attrs)\n this.instance = defaults && new Mark(this, defaults)\n }\n\n // :: (?Object) → Mark\n // Create a mark of this type. `attrs` may be `null` or an object\n // containing only some of the mark's attributes. The others, if\n // they have defaults, will be added.\n create(attrs) {\n if (!attrs && this.instance) return this.instance\n return new Mark(this, computeAttrs(this.attrs, attrs))\n }\n\n static compile(marks, schema) {\n let result = Object.create(null), rank = 0\n marks.forEach((name, spec) => result[name] = new MarkType(name, rank++, schema, spec))\n return result\n }\n\n // :: ([Mark]) → [Mark]\n // When there is a mark of this type in the given set, a new set\n // without it is returned. Otherwise, the input set is returned.\n removeFromSet(set) {\n for (var i = 0; i < set.length; i++) if (set[i].type == this) {\n set = set.slice(0, i).concat(set.slice(i + 1))\n i--\n }\n return set\n }\n\n // :: ([Mark]) → ?Mark\n // Tests whether there is a mark of this type in the given set.\n isInSet(set) {\n for (let i = 0; i < set.length; i++)\n if (set[i].type == this) return set[i]\n }\n\n // :: (MarkType) → bool\n // Queries whether a given mark type is\n // [excluded](#model.MarkSpec.excludes) by this one.\n excludes(other) {\n return this.excluded.indexOf(other) > -1\n }\n}\n\n// SchemaSpec:: interface\n// An object describing a schema, as passed to the [`Schema`](#model.Schema)\n// constructor.\n//\n// nodes:: union<Object<NodeSpec>, OrderedMap<NodeSpec>>\n// The node types in this schema. Maps names to\n// [`NodeSpec`](#model.NodeSpec) objects that describe the node type\n// associated with that name. Their order is significant—it\n// determines which [parse rules](#model.NodeSpec.parseDOM) take\n// precedence by default, and which nodes come first in a given\n// [group](#model.NodeSpec.group).\n//\n// marks:: ?union<Object<MarkSpec>, OrderedMap<MarkSpec>>\n// The mark types that exist in this schema. The order in which they\n// are provided determines the order in which [mark\n// sets](#model.Mark.addToSet) are sorted and in which [parse\n// rules](#model.MarkSpec.parseDOM) are tried.\n//\n// topNode:: ?string\n// The name of the default top-level node for the schema. Defaults\n// to `\"doc\"`.\n\n// NodeSpec:: interface\n//\n// content:: ?string\n// The content expression for this node, as described in the [schema\n// guide](/docs/guide/#schema.content_expressions). When not given,\n// the node does not allow any content.\n//\n// marks:: ?string\n// The marks that are allowed inside of this node. May be a\n// space-separated string referring to mark names or groups, `\"_\"`\n// to explicitly allow all marks, or `\"\"` to disallow marks. When\n// not given, nodes with inline content default to allowing all\n// marks, other nodes default to not allowing marks.\n//\n// group:: ?string\n// The group or space-separated groups to which this node belongs,\n// which can be referred to in the content expressions for the\n// schema.\n//\n// inline:: ?bool\n// Should be set to true for inline nodes. (Implied for text nodes.)\n//\n// atom:: ?bool\n// Can be set to true to indicate that, though this isn't a [leaf\n// node](#model.NodeType.isLeaf), it doesn't have directly editable\n// content and should be treated as a single unit in the view.\n//\n// attrs:: ?Object<AttributeSpec>\n// The attributes that nodes of this type get.\n//\n// selectable:: ?bool\n// Controls whether nodes of this type can be selected as a [node\n// selection](#state.NodeSelection). Defaults to true for non-text\n// nodes.\n//\n// draggable:: ?bool\n// Determines whether nodes of this type can be dragged without\n// being selected. Defaults to false.\n//\n// code:: ?bool\n// Can be used to indicate that this node contains code, which\n// causes some commands to behave differently.\n//\n// defining:: ?bool\n// Determines whether this node is considered an important parent\n// node during replace operations (such as paste). Non-defining (the\n// default) nodes get dropped when their entire content is replaced,\n// whereas defining nodes persist and wrap the inserted content.\n// Likewise, in _inserted_ content the defining parents of the\n// content are preserved when possible. Typically,\n// non-default-paragraph textblock types, and possibly list items,\n// are marked as defining.\n//\n// isolating:: ?bool\n// When enabled (default is false), the sides of nodes of this type\n// count as boundaries that regular editing operations, like\n// backspacing or lifting, won't cross. An example of a node that\n// should probably have this enabled is a table cell.\n//\n// toDOM:: ?(node: Node) → DOMOutputSpec\n// Defines the default way a node of this type should be serialized\n// to DOM/HTML (as used by\n// [`DOMSerializer.fromSchema`](#model.DOMSerializer^fromSchema)).\n// Should return a DOM node or an [array\n// structure](#model.DOMOutputSpec) that describes one, with an\n// optional number zero (“hole”) in it to indicate where the node's\n// content should be inserted.\n//\n// For text nodes, the default is to create a text DOM node. Though\n// it is possible to create a serializer where text is rendered\n// differently, this is not supported inside the editor, so you\n// shouldn't override that in your text node spec.\n//\n// parseDOM:: ?[ParseRule]\n// Associates DOM parser information with this node, which can be\n// used by [`DOMParser.fromSchema`](#model.DOMParser^fromSchema) to\n// automatically derive a parser. The `node` field in the rules is\n// implied (the name of this node will be filled in automatically).\n// If you supply your own parser, you do not need to also specify\n// parsing rules in your schema.\n//\n// toDebugString:: ?(node: Node) -> string\n// Defines the default way a node of this type should be serialized\n// to a string representation for debugging (e.g. in error messages).\n\n// MarkSpec:: interface\n//\n// attrs:: ?Object<AttributeSpec>\n// The attributes that marks of this type get.\n//\n// inclusive:: ?bool\n// Whether this mark should be active when the cursor is positioned\n// at its end (or at its start when that is also the start of the\n// parent node). Defaults to true.\n//\n// excludes:: ?string\n// Determines which other marks this mark can coexist with. Should\n// be a space-separated strings naming other marks or groups of marks.\n// When a mark is [added](#model.Mark.addToSet) to a set, all marks\n// that it excludes are removed in the process. If the set contains\n// any mark that excludes the new mark but is not, itself, excluded\n// by the new mark, the mark can not be added an the set. You can\n// use the value `\"_\"` to indicate that the mark excludes all\n// marks in the schema.\n//\n// Defaults to only being exclusive with marks of the same type. You\n// can set it to an empty string (or any string not containing the\n// mark's own name) to allow multiple marks of a given type to\n// coexist (as long as they have different attributes).\n//\n// group:: ?string\n// The group or space-separated groups to which this mark belongs.\n//\n// spanning:: ?bool\n// Determines whether marks of this type can span multiple adjacent\n// nodes when serialized to DOM/HTML. Defaults to true.\n//\n// toDOM:: ?(mark: Mark, inline: bool) → DOMOutputSpec\n// Defines the default way marks of this type should be serialized\n// to DOM/HTML. When the resulting spec contains a hole, that is\n// where the marked content is placed. Otherwise, it is appended to\n// the top node.\n//\n// parseDOM:: ?[ParseRule]\n// Associates DOM parser information with this mark (see the\n// corresponding [node spec field](#model.NodeSpec.parseDOM)). The\n// `mark` field in the rules is implied.\n\n// AttributeSpec:: interface\n//\n// Used to [define](#model.NodeSpec.attrs) attributes on nodes or\n// marks.\n//\n// default:: ?any\n// The default value for this attribute, to use when no explicit\n// value is provided. Attributes that have no default must be\n// provided whenever a node or mark of a type that has them is\n// created.\n\n// ::- A document schema. Holds [node](#model.NodeType) and [mark\n// type](#model.MarkType) objects for the nodes and marks that may\n// occur in conforming documents, and provides functionality for\n// creating and deserializing such documents.\nexport class Schema {\n // :: (SchemaSpec)\n // Construct a schema from a schema [specification](#model.SchemaSpec).\n constructor(spec) {\n // :: SchemaSpec\n // The [spec](#model.SchemaSpec) on which the schema is based,\n // with the added guarantee that its `nodes` and `marks`\n // properties are\n // [`OrderedMap`](https://github.com/marijnh/orderedmap) instances\n // (not raw objects).\n this.spec = {}\n for (let prop in spec) this.spec[prop] = spec[prop]\n this.spec.nodes = OrderedMap.from(spec.nodes)\n this.spec.marks = OrderedMap.from(spec.marks)\n\n // :: Object<NodeType>\n // An object mapping the schema's node names to node type objects.\n this.nodes = NodeType.compile(this.spec.nodes, this)\n\n // :: Object<MarkType>\n // A map from mark names to mark type objects.\n this.marks = MarkType.compile(this.spec.marks, this)\n\n let contentExprCache = Object.create(null)\n for (let prop in this.nodes) {\n if (prop in this.marks)\n throw new RangeError(prop + \" can not be both a node and a mark\")\n let type = this.nodes[prop], contentExpr = type.spec.content || \"\", markExpr = type.spec.marks\n type.contentMatch = contentExprCache[contentExpr] ||\n (contentExprCache[contentExpr] = ContentMatch.parse(contentExpr, this.nodes))\n type.inlineContent = type.contentMatch.inlineContent\n type.markSet = markExpr == \"_\" ? null :\n markExpr ? gatherMarks(this, markExpr.split(\" \")) :\n markExpr == \"\" || !type.inlineContent ? [] : null\n }\n for (let prop in this.marks) {\n let type = this.marks[prop], excl = type.spec.excludes\n type.excluded = excl == null ? [type] : excl == \"\" ? [] : gatherMarks(this, excl.split(\" \"))\n }\n\n this.nodeFromJSON = this.nodeFromJSON.bind(this)\n this.markFromJSON = this.markFromJSON.bind(this)\n\n // :: NodeType\n // The type of the [default top node](#model.SchemaSpec.topNode)\n // for this schema.\n this.topNodeType = this.nodes[this.spec.topNode || \"doc\"]\n\n // :: Object\n // An object for storing whatever values modules may want to\n // compute and cache per schema. (If you want to store something\n // in it, try to use property names unlikely to clash.)\n this.cached = Object.create(null)\n this.cached.wrappings = Object.create(null)\n }\n\n // :: (union<string, NodeType>, ?Object, ?union<Fragment, Node, [Node]>, ?[Mark]) → Node\n // Create a node in this schema. The `type` may be a string or a\n // `NodeType` instance. Attributes will be extended\n // with defaults, `content` may be a `Fragment`,\n // `null`, a `Node`, or an array of nodes.\n node(type, attrs, content, marks) {\n if (typeof type == \"string\")\n type = this.nodeType(type)\n else if (!(type instanceof NodeType))\n throw new RangeError(\"Invalid node type: \" + type)\n else if (type.schema != this)\n throw new RangeError(\"Node type from different schema used (\" + type.name + \")\")\n\n return type.createChecked(attrs, content, marks)\n }\n\n // :: (string, ?[Mark]) → Node\n // Create a text node in the schema. Empty text nodes are not\n // allowed.\n text(text, marks) {\n let type = this.nodes.text\n return new TextNode(type, type.defaultAttrs, text, Mark.setFrom(marks))\n }\n\n // :: (union<string, MarkType>, ?Object) → Mark\n // Create a mark with the given type and attributes.\n mark(type, attrs) {\n if (typeof type == \"string\") type = this.marks[type]\n return type.create(attrs)\n }\n\n // :: (Object) → Node\n // Deserialize a node from its JSON representation. This method is\n // bound.\n nodeFromJSON(json) {\n return Node.fromJSON(this, json)\n }\n\n // :: (Object) → Mark\n // Deserialize a mark from its JSON representation. This method is\n // bound.\n markFromJSON(json) {\n return Mark.fromJSON(this, json)\n }\n\n nodeType(name) {\n let found = this.nodes[name]\n if (!found) throw new RangeError(\"Unknown node type: \" + name)\n return found\n }\n}\n\nfunction gatherMarks(schema, marks) {\n let found = []\n for (let i = 0; i < marks.length; i++) {\n let name = marks[i], mark = schema.marks[name], ok = mark\n if (mark) {\n found.push(mark)\n } else {\n for (let prop in schema.marks) {\n let mark = schema.marks[prop]\n if (name == \"_\" || (mark.spec.group && mark.spec.group.split(\" \").indexOf(name) > -1))\n found.push(ok = mark)\n }\n }\n if (!ok) throw new SyntaxError(\"Unknown mark type: '\" + marks[i] + \"'\")\n }\n return found\n}\n","import {Fragment} from \"./fragment\"\nimport {Slice} from \"./replace\"\nimport {Mark} from \"./mark\"\n\n// ParseOptions:: interface\n// These are the options recognized by the\n// [`parse`](#model.DOMParser.parse) and\n// [`parseSlice`](#model.DOMParser.parseSlice) methods.\n//\n// preserveWhitespace:: ?union<bool, \"full\">\n// By default, whitespace is collapsed as per HTML's rules. Pass\n// `true` to preserve whitespace, but normalize newlines to\n// spaces, and `\"full\"` to preserve whitespace entirely.\n//\n// findPositions:: ?[{node: dom.Node, offset: number}]\n// When given, the parser will, beside parsing the content,\n// record the document positions of the given DOM positions. It\n// will do so by writing to the objects, adding a `pos` property\n// that holds the document position. DOM positions that are not\n// in the parsed content will not be written to.\n//\n// from:: ?number\n// The child node index to start parsing from.\n//\n// to:: ?number\n// The child node index to stop parsing at.\n//\n// topNode:: ?Node\n// By default, the content is parsed into the schema's default\n// [top node type](#model.Schema.topNodeType). You can pass this\n// option to use the type and attributes from a different node\n// as the top container.\n//\n// topMatch:: ?ContentMatch\n// Provide the starting content match that content parsed into the\n// top node is matched against.\n//\n// context:: ?ResolvedPos\n// A set of additional nodes to count as\n// [context](#model.ParseRule.context) when parsing, above the\n// given [top node](#model.ParseOptions.topNode).\n\n// ParseRule:: interface\n// A value that describes how to parse a given DOM node or inline\n// style as a ProseMirror node or mark.\n//\n// tag:: ?string\n// A CSS selector describing the kind of DOM elements to match. A\n// single rule should have _either_ a `tag` or a `style` property.\n//\n// namespace:: ?string\n// The namespace to match. This should be used with `tag`.\n// Nodes are only matched when the namespace matches or this property\n// is null.\n//\n// style:: ?string\n// A CSS property name to match. When given, this rule matches\n// inline styles that list that property. May also have the form\n// `\"property=value\"`, in which case the rule only matches if the\n// property's value exactly matches the given value. (For more\n// complicated filters, use [`getAttrs`](#model.ParseRule.getAttrs)\n// and return false to indicate that the match failed.) Rules\n// matching styles may only produce [marks](#model.ParseRule.mark),\n// not nodes.\n//\n// priority:: ?number\n// Can be used to change the order in which the parse rules in a\n// schema are tried. Those with higher priority come first. Rules\n// without a priority are counted as having priority 50. This\n// property is only meaningful in a schema—when directly\n// constructing a parser, the order of the rule array is used.\n//\n// consuming:: ?boolean\n// By default, when a rule matches an element or style, no further\n// rules get a chance to match it. By setting this to `false`, you\n// indicate that even when this rule matches, other rules that come\n// after it should also run.\n//\n// context:: ?string\n// When given, restricts this rule to only match when the current\n// context—the parent nodes into which the content is being\n// parsed—matches this expression. Should contain one or more node\n// names or node group names followed by single or double slashes.\n// For example `\"paragraph/\"` means the rule only matches when the\n// parent node is a paragraph, `\"blockquote/paragraph/\"` restricts\n// it to be in a paragraph that is inside a blockquote, and\n// `\"section//\"` matches any position inside a section—a double\n// slash matches any sequence of ancestor nodes. To allow multiple\n// different contexts, they can be separated by a pipe (`|`)\n// character, as in `\"blockquote/|list_item/\"`.\n//\n// node:: ?string\n// The name of the node type to create when this rule matches. Only\n// valid for rules with a `tag` property, not for style rules. Each\n// rule should have one of a `node`, `mark`, or `ignore` property\n// (except when it appears in a [node](#model.NodeSpec.parseDOM) or\n// [mark spec](#model.MarkSpec.parseDOM), in which case the `node`\n// or `mark` property will be derived from its position).\n//\n// mark:: ?string\n// The name of the mark type to wrap the matched content in.\n//\n// ignore:: ?bool\n// When true, ignore content that matches this rule.\n//\n// closeParent:: ?bool\n// When true, finding an element that matches this rule will close\n// the current node.\n//\n// skip:: ?bool\n// When true, ignore the node that matches this rule, but do parse\n// its content.\n//\n// attrs:: ?Object\n// Attributes for the node or mark created by this rule. When\n// `getAttrs` is provided, it takes precedence.\n//\n// getAttrs:: ?(union<dom.Node, string>) → ?union<Object, false>\n// A function used to compute the attributes for the node or mark\n// created by this rule. Can also be used to describe further\n// conditions the DOM element or style must match. When it returns\n// `false`, the rule won't match. When it returns null or undefined,\n// that is interpreted as an empty/default set of attributes.\n//\n// Called with a DOM Element for `tag` rules, and with a string (the\n// style's value) for `style` rules.\n//\n// contentElement:: ?union<string, (dom.Node) → dom.Node>\n// For `tag` rules that produce non-leaf nodes or marks, by default\n// the content of the DOM element is parsed as content of the mark\n// or node. If the child nodes are in a descendent node, this may be\n// a CSS selector string that the parser must use to find the actual\n// content element, or a function that returns the actual content\n// element to the parser.\n//\n// getContent:: ?(dom.Node, schema: Schema) → Fragment\n// Can be used to override the content of a matched node. When\n// present, instead of parsing the node's child nodes, the result of\n// this function is used.\n//\n// preserveWhitespace:: ?union<bool, \"full\">\n// Controls whether whitespace should be preserved when parsing the\n// content inside the matched element. `false` means whitespace may\n// be collapsed, `true` means that whitespace should be preserved\n// but newlines normalized to spaces, and `\"full\"` means that\n// newlines should also be preserved.\n\n// ::- A DOM parser represents a strategy for parsing DOM content into\n// a ProseMirror document conforming to a given schema. Its behavior\n// is defined by an array of [rules](#model.ParseRule).\nexport class DOMParser {\n // :: (Schema, [ParseRule])\n // Create a parser that targets the given schema, using the given\n // parsing rules.\n constructor(schema, rules) {\n // :: Schema\n // The schema into which the parser parses.\n this.schema = schema\n // :: [ParseRule]\n // The set of [parse rules](#model.ParseRule) that the parser\n // uses, in order of precedence.\n this.rules = rules\n this.tags = []\n this.styles = []\n\n rules.forEach(rule => {\n if (rule.tag) this.tags.push(rule)\n else if (rule.style) this.styles.push(rule)\n })\n\n // Only normalize list elements when lists in the schema can't directly contain themselves\n this.normalizeLists = !this.tags.some(r => {\n if (!/^(ul|ol)\\b/.test(r.tag) || !r.node) return false\n let node = schema.nodes[r.node]\n return node.contentMatch.matchType(node)\n })\n }\n\n // :: (dom.Node, ?ParseOptions) → Node\n // Parse a document from the content of a DOM node.\n parse(dom, options = {}) {\n let context = new ParseContext(this, options, false)\n context.addAll(dom, null, options.from, options.to)\n return context.finish()\n }\n\n // :: (dom.Node, ?ParseOptions) → Slice\n // Parses the content of the given DOM node, like\n // [`parse`](#model.DOMParser.parse), and takes the same set of\n // options. But unlike that method, which produces a whole node,\n // this one returns a slice that is open at the sides, meaning that\n // the schema constraints aren't applied to the start of nodes to\n // the left of the input and the end of nodes at the end.\n parseSlice(dom, options = {}) {\n let context = new ParseContext(this, options, true)\n context.addAll(dom, null, options.from, options.to)\n return Slice.maxOpen(context.finish())\n }\n\n matchTag(dom, context, after) {\n for (let i = after ? this.tags.indexOf(after) + 1 : 0; i < this.tags.length; i++) {\n let rule = this.tags[i]\n if (matches(dom, rule.tag) &&\n (rule.namespace === undefined || dom.namespaceURI == rule.namespace) &&\n (!rule.context || context.matchesContext(rule.context))) {\n if (rule.getAttrs) {\n let result = rule.getAttrs(dom)\n if (result === false) continue\n rule.attrs = result\n }\n return rule\n }\n }\n }\n\n matchStyle(prop, value, context, after) {\n for (let i = after ? this.styles.indexOf(after) + 1 : 0; i < this.styles.length; i++) {\n let rule = this.styles[i]\n if (rule.style.indexOf(prop) != 0 ||\n rule.context && !context.matchesContext(rule.context) ||\n // Test that the style string either precisely matches the prop,\n // or has an '=' sign after the prop, followed by the given\n // value.\n rule.style.length > prop.length &&\n (rule.style.charCodeAt(prop.length) != 61 || rule.style.slice(prop.length + 1) != value))\n continue\n if (rule.getAttrs) {\n let result = rule.getAttrs(value)\n if (result === false) continue\n rule.attrs = result\n }\n return rule\n }\n }\n\n // : (Schema) → [ParseRule]\n static schemaRules(schema) {\n let result = []\n function insert(rule) {\n let priority = rule.priority == null ? 50 : rule.priority, i = 0\n for (; i < result.length; i++) {\n let next = result[i], nextPriority = next.priority == null ? 50 : next.priority\n if (nextPriority < priority) break\n }\n result.splice(i, 0, rule)\n }\n\n for (let name in schema.marks) {\n let rules = schema.marks[name].spec.parseDOM\n if (rules) rules.forEach(rule => {\n insert(rule = copy(rule))\n rule.mark = name\n })\n }\n for (let name in schema.nodes) {\n let rules = schema.nodes[name].spec.parseDOM\n if (rules) rules.forEach(rule => {\n insert(rule = copy(rule))\n rule.node = name\n })\n }\n return result\n }\n\n // :: (Schema) → DOMParser\n // Construct a DOM parser using the parsing rules listed in a\n // schema's [node specs](#model.NodeSpec.parseDOM), reordered by\n // [priority](#model.ParseRule.priority).\n static fromSchema(schema) {\n return schema.cached.domParser ||\n (schema.cached.domParser = new DOMParser(schema, DOMParser.schemaRules(schema)))\n }\n}\n\n// : Object<bool> The block-level tags in HTML5\nconst blockTags = {\n address: true, article: true, aside: true, blockquote: true, canvas: true,\n dd: true, div: true, dl: true, fieldset: true, figcaption: true, figure: true,\n footer: true, form: true, h1: true, h2: true, h3: true, h4: true, h5: true,\n h6: true, header: true, hgroup: true, hr: true, li: true, noscript: true, ol: true,\n output: true, p: true, pre: true, section: true, table: true, tfoot: true, ul: true\n}\n\n// : Object<bool> The tags that we normally ignore.\nconst ignoreTags = {\n head: true, noscript: true, object: true, script: true, style: true, title: true\n}\n\n// : Object<bool> List tags.\nconst listTags = {ol: true, ul: true}\n\n// Using a bitfield for node context options\nconst OPT_PRESERVE_WS = 1, OPT_PRESERVE_WS_FULL = 2, OPT_OPEN_LEFT = 4\n\nfunction wsOptionsFor(preserveWhitespace) {\n return (preserveWhitespace ? OPT_PRESERVE_WS : 0) | (preserveWhitespace === \"full\" ? OPT_PRESERVE_WS_FULL : 0)\n}\n\nclass NodeContext {\n constructor(type, attrs, marks, pendingMarks, solid, match, options) {\n this.type = type\n this.attrs = attrs\n this.solid = solid\n this.match = match || (options & OPT_OPEN_LEFT ? null : type.contentMatch)\n this.options = options\n this.content = []\n // Marks applied to this node itself\n this.marks = marks\n // Marks applied to its children\n this.activeMarks = Mark.none\n // Marks that can't apply here, but will be used in children if possible\n this.pendingMarks = pendingMarks\n // Nested Marks with same type\n this.stashMarks = []\n }\n\n findWrapping(node) {\n if (!this.match) {\n if (!this.type) return []\n let fill = this.type.contentMatch.fillBefore(Fragment.from(node))\n if (fill) {\n this.match = this.type.contentMatch.matchFragment(fill)\n } else {\n let start = this.type.contentMatch, wrap\n if (wrap = start.findWrapping(node.type)) {\n this.match = start\n return wrap\n } else {\n return null\n }\n }\n }\n return this.match.findWrapping(node.type)\n }\n\n finish(openEnd) {\n if (!(this.options & OPT_PRESERVE_WS)) { // Strip trailing whitespace\n let last = this.content[this.content.length - 1], m\n if (last && last.isText && (m = /[ \\t\\r\\n\\u000c]+$/.exec(last.text))) {\n if (last.text.length == m[0].length) this.content.pop()\n else this.content[this.content.length - 1] = last.withText(last.text.slice(0, last.text.length - m[0].length))\n }\n }\n let content = Fragment.from(this.content)\n if (!openEnd && this.match)\n content = content.append(this.match.fillBefore(Fragment.empty, true))\n return this.type ? this.type.create(this.attrs, content, this.marks) : content\n }\n\n popFromStashMark(mark) {\n for (let i = this.stashMarks.length - 1; i >= 0; i--)\n if (mark.eq(this.stashMarks[i])) return this.stashMarks.splice(i, 1)[0]\n }\n\n applyPending(nextType) {\n for (let i = 0, pending = this.pendingMarks; i < pending.length; i++) {\n let mark = pending[i]\n if ((this.type ? this.type.allowsMarkType(mark.type) : markMayApply(mark.type, nextType)) &&\n !mark.isInSet(this.activeMarks)) {\n this.activeMarks = mark.addToSet(this.activeMarks)\n this.pendingMarks = mark.removeFromSet(this.pendingMarks)\n }\n }\n }\n}\n\nclass ParseContext {\n // : (DOMParser, Object)\n constructor(parser, options, open) {\n // : DOMParser The parser we are using.\n this.parser = parser\n // : Object The options passed to this parse.\n this.options = options\n this.isOpen = open\n let topNode = options.topNode, topContext\n let topOptions = wsOptionsFor(options.preserveWhitespace) | (open ? OPT_OPEN_LEFT : 0)\n if (topNode)\n topContext = new NodeContext(topNode.type, topNode.attrs, Mark.none, Mark.none, true,\n options.topMatch || topNode.type.contentMatch, topOptions)\n else if (open)\n topContext = new NodeContext(null, null, Mark.none, Mark.none, true, null, topOptions)\n else\n topContext = new NodeContext(parser.schema.topNodeType, null, Mark.none, Mark.none, true, null, topOptions)\n this.nodes = [topContext]\n // : [Mark] The current set of marks\n this.open = 0\n this.find = options.findPositions\n this.needsBlock = false\n }\n\n get top() {\n return this.nodes[this.open]\n }\n\n // : (dom.Node)\n // Add a DOM node to the content. Text is inserted as text node,\n // otherwise, the node is passed to `addElement` or, if it has a\n // `style` attribute, `addElementWithStyles`.\n addDOM(dom) {\n if (dom.nodeType == 3) {\n this.addTextNode(dom)\n } else if (dom.nodeType == 1) {\n let style = dom.getAttribute(\"style\")\n let marks = style ? this.readStyles(parseStyles(style)) : null, top = this.top\n if (marks != null) for (let i = 0; i < marks.length; i++) this.addPendingMark(marks[i])\n this.addElement(dom)\n if (marks != null) for (let i = 0; i < marks.length; i++) this.removePendingMark(marks[i], top)\n }\n }\n\n addTextNode(dom) {\n let value = dom.nodeValue\n let top = this.top\n if (top.options & OPT_PRESERVE_WS_FULL ||\n (top.type ? top.type.inlineContent : top.content.length && top.content[0].isInline) ||\n /[^ \\t\\r\\n\\u000c]/.test(value)) {\n if (!(top.options & OPT_PRESERVE_WS)) {\n value = value.replace(/[ \\t\\r\\n\\u000c]+/g, \" \")\n // If this starts with whitespace, and there is no node before it, or\n // a hard break, or a text node that ends with whitespace, strip the\n // leading space.\n if (/^[ \\t\\r\\n\\u000c]/.test(value) && this.open == this.nodes.length - 1) {\n let nodeBefore = top.content[top.content.length - 1]\n let domNodeBefore = dom.previousSibling\n if (!nodeBefore ||\n (domNodeBefore && domNodeBefore.nodeName == 'BR') ||\n (nodeBefore.isText && /[ \\t\\r\\n\\u000c]$/.test(nodeBefore.text)))\n value = value.slice(1)\n }\n } else if (!(top.options & OPT_PRESERVE_WS_FULL)) {\n value = value.replace(/\\r?\\n|\\r/g, \" \")\n } else {\n value = value.replace(/\\r\\n?/g, \"\\n\")\n }\n if (value) this.insertNode(this.parser.schema.text(value))\n this.findInText(dom)\n } else {\n this.findInside(dom)\n }\n }\n\n // : (dom.Element, ?ParseRule)\n // Try to find a handler for the given tag and use that to parse. If\n // none is found, the element's content nodes are added directly.\n addElement(dom, matchAfter) {\n let name = dom.nodeName.toLowerCase(), ruleID\n if (listTags.hasOwnProperty(name) && this.parser.normalizeLists) normalizeList(dom)\n let rule = (this.options.ruleFromNode && this.options.ruleFromNode(dom)) ||\n (ruleID = this.parser.matchTag(dom, this, matchAfter))\n if (rule ? rule.ignore : ignoreTags.hasOwnProperty(name)) {\n this.findInside(dom)\n this.ignoreFallback(dom)\n } else if (!rule || rule.skip || rule.closeParent) {\n if (rule && rule.closeParent) this.open = Math.max(0, this.open - 1)\n else if (rule && rule.skip.nodeType) dom = rule.skip\n let sync, top = this.top, oldNeedsBlock = this.needsBlock\n if (blockTags.hasOwnProperty(name)) {\n sync = true\n if (!top.type) this.needsBlock = true\n } else if (!dom.firstChild) {\n this.leafFallback(dom)\n return\n }\n this.addAll(dom)\n if (sync) this.sync(top)\n this.needsBlock = oldNeedsBlock\n } else {\n this.addElementByRule(dom, rule, rule.consuming === false ? ruleID : null)\n }\n }\n\n // Called for leaf DOM nodes that would otherwise be ignored\n leafFallback(dom) {\n if (dom.nodeName == \"BR\" && this.top.type && this.top.type.inlineContent)\n this.addTextNode(dom.ownerDocument.createTextNode(\"\\n\"))\n }\n\n // Called for ignored nodes\n ignoreFallback(dom) {\n // Ignored BR nodes should at least create an inline context\n if (dom.nodeName == \"BR\" && (!this.top.type || !this.top.type.inlineContent))\n this.findPlace(this.parser.schema.text(\"-\"))\n }\n\n // Run any style parser associated with the node's styles. Either\n // return an array of marks, or null to indicate some of the styles\n // had a rule with `ignore` set.\n readStyles(styles) {\n let marks = Mark.none\n style: for (let i = 0; i < styles.length; i += 2) {\n for (let after = null;;) {\n let rule = this.parser.matchStyle(styles[i], styles[i + 1], this, after)\n if (!rule) continue style\n if (rule.ignore) return null\n marks = this.parser.schema.marks[rule.mark].create(rule.attrs).addToSet(marks)\n if (rule.consuming === false) after = rule\n else break\n }\n }\n return marks\n }\n\n // : (dom.Element, ParseRule) → bool\n // Look up a handler for the given node. If none are found, return\n // false. Otherwise, apply it, use its return value to drive the way\n // the node's content is wrapped, and return true.\n addElementByRule(dom, rule, continueAfter) {\n let sync, nodeType, markType, mark\n if (rule.node) {\n nodeType = this.parser.schema.nodes[rule.node]\n if (!nodeType.isLeaf) {\n sync = this.enter(nodeType, rule.attrs, rule.preserveWhitespace)\n } else if (!this.insertNode(nodeType.create(rule.attrs))) {\n this.leafFallback(dom)\n }\n } else {\n markType = this.parser.schema.marks[rule.mark]\n mark = markType.create(rule.attrs)\n this.addPendingMark(mark)\n }\n let startIn = this.top\n\n if (nodeType && nodeType.isLeaf) {\n this.findInside(dom)\n } else if (continueAfter) {\n this.addElement(dom, continueAfter)\n } else if (rule.getContent) {\n this.findInside(dom)\n rule.getContent(dom, this.parser.schema).forEach(node => this.insertNode(node))\n } else {\n let contentDOM = rule.contentElement\n if (typeof contentDOM == \"string\") contentDOM = dom.querySelector(contentDOM)\n else if (typeof contentDOM == \"function\") contentDOM = contentDOM(dom)\n if (!contentDOM) contentDOM = dom\n this.findAround(dom, contentDOM, true)\n this.addAll(contentDOM, sync)\n }\n if (sync) { this.sync(startIn); this.open-- }\n if (mark) this.removePendingMark(mark, startIn)\n }\n\n // : (dom.Node, ?NodeBuilder, ?number, ?number)\n // Add all child nodes between `startIndex` and `endIndex` (or the\n // whole node, if not given). If `sync` is passed, use it to\n // synchronize after every block element.\n addAll(parent, sync, startIndex, endIndex) {\n let index = startIndex || 0\n for (let dom = startIndex ? parent.childNodes[startIndex] : parent.firstChild,\n end = endIndex == null ? null : parent.childNodes[endIndex];\n dom != end; dom = dom.nextSibling, ++index) {\n this.findAtPoint(parent, index)\n this.addDOM(dom)\n if (sync && blockTags.hasOwnProperty(dom.nodeName.toLowerCase()))\n this.sync(sync)\n }\n this.findAtPoint(parent, index)\n }\n\n // Try to find a way to fit the given node type into the current\n // context. May add intermediate wrappers and/or leave non-solid\n // nodes that we're in.\n findPlace(node) {\n let route, sync\n for (let depth = this.open; depth >= 0; depth--) {\n let cx = this.nodes[depth]\n let found = cx.findWrapping(node)\n if (found && (!route || route.length > found.length)) {\n route = found\n sync = cx\n if (!found.length) break\n }\n if (cx.solid) break\n }\n if (!route) return false\n this.sync(sync)\n for (let i = 0; i < route.length; i++)\n this.enterInner(route[i], null, false)\n return true\n }\n\n // : (Node) → ?Node\n // Try to insert the given node, adjusting the context when needed.\n insertNode(node) {\n if (node.isInline && this.needsBlock && !this.top.type) {\n let block = this.textblockFromContext()\n if (block) this.enterInner(block)\n }\n if (this.findPlace(node)) {\n this.closeExtra()\n let top = this.top\n top.applyPending(node.type)\n if (top.match) top.match = top.match.matchType(node.type)\n let marks = top.activeMarks\n for (let i = 0; i < node.marks.length; i++)\n if (!top.type || top.type.allowsMarkType(node.marks[i].type))\n marks = node.marks[i].addToSet(marks)\n top.content.push(node.mark(marks))\n return true\n }\n return false\n }\n\n // : (NodeType, ?Object) → bool\n // Try to start a node of the given type, adjusting the context when\n // necessary.\n enter(type, attrs, preserveWS) {\n let ok = this.findPlace(type.create(attrs))\n if (ok) this.enterInner(type, attrs, true, preserveWS)\n return ok\n }\n\n // Open a node of the given type\n enterInner(type, attrs, solid, preserveWS) {\n this.closeExtra()\n let top = this.top\n top.applyPending(type)\n top.match = top.match && top.match.matchType(type, attrs)\n let options = preserveWS == null ? top.options & ~OPT_OPEN_LEFT : wsOptionsFor(preserveWS)\n if ((top.options & OPT_OPEN_LEFT) && top.content.length == 0) options |= OPT_OPEN_LEFT\n this.nodes.push(new NodeContext(type, attrs, top.activeMarks, top.pendingMarks, solid, null, options))\n this.open++\n }\n\n // Make sure all nodes above this.open are finished and added to\n // their parents\n closeExtra(openEnd) {\n let i = this.nodes.length - 1\n if (i > this.open) {\n for (; i > this.open; i--) this.nodes[i - 1].content.push(this.nodes[i].finish(openEnd))\n this.nodes.length = this.open + 1\n }\n }\n\n finish() {\n this.open = 0\n this.closeExtra(this.isOpen)\n return this.nodes[0].finish(this.isOpen || this.options.topOpen)\n }\n\n sync(to) {\n for (let i = this.open; i >= 0; i--) if (this.nodes[i] == to) {\n this.open = i\n return\n }\n }\n\n get currentPos() {\n this.closeExtra()\n let pos = 0\n for (let i = this.open; i >= 0; i--) {\n let content = this.nodes[i].content\n for (let j = content.length - 1; j >= 0; j--)\n pos += content[j].nodeSize\n if (i) pos++\n }\n return pos\n }\n\n findAtPoint(parent, offset) {\n if (this.find) for (let i = 0; i < this.find.length; i++) {\n if (this.find[i].node == parent && this.find[i].offset == offset)\n this.find[i].pos = this.currentPos\n }\n }\n\n findInside(parent) {\n if (this.find) for (let i = 0; i < this.find.length; i++) {\n if (this.find[i].pos == null && parent.nodeType == 1 && parent.contains(this.find[i].node))\n this.find[i].pos = this.currentPos\n }\n }\n\n findAround(parent, content, before) {\n if (parent != content && this.find) for (let i = 0; i < this.find.length; i++) {\n if (this.find[i].pos == null && parent.nodeType == 1 && parent.contains(this.find[i].node)) {\n let pos = content.compareDocumentPosition(this.find[i].node)\n if (pos & (before ? 2 : 4))\n this.find[i].pos = this.currentPos\n }\n }\n }\n\n findInText(textNode) {\n if (this.find) for (let i = 0; i < this.find.length; i++) {\n if (this.find[i].node == textNode)\n this.find[i].pos = this.currentPos - (textNode.nodeValue.length - this.find[i].offset)\n }\n }\n\n // : (string) → bool\n // Determines whether the given [context\n // string](#ParseRule.context) matches this context.\n matchesContext(context) {\n if (context.indexOf(\"|\") > -1)\n return context.split(/\\s*\\|\\s*/).some(this.matchesContext, this)\n\n let parts = context.split(\"/\")\n let option = this.options.context\n let useRoot = !this.isOpen && (!option || option.parent.type == this.nodes[0].type)\n let minDepth = -(option ? option.depth + 1 : 0) + (useRoot ? 0 : 1)\n let match = (i, depth) => {\n for (; i >= 0; i--) {\n let part = parts[i]\n if (part == \"\") {\n if (i == parts.length - 1 || i == 0) continue\n for (; depth >= minDepth; depth--)\n if (match(i - 1, depth)) return true\n return false\n } else {\n let next = depth > 0 || (depth == 0 && useRoot) ? this.nodes[depth].type\n : option && depth >= minDepth ? option.node(depth - minDepth).type\n : null\n if (!next || (next.name != part && next.groups.indexOf(part) == -1))\n return false\n depth--\n }\n }\n return true\n }\n return match(parts.length - 1, this.open)\n }\n\n textblockFromContext() {\n let $context = this.options.context\n if ($context) for (let d = $context.depth; d >= 0; d--) {\n let deflt = $context.node(d).contentMatchAt($context.indexAfter(d)).defaultType\n if (deflt && deflt.isTextblock && deflt.defaultAttrs) return deflt\n }\n for (let name in this.parser.schema.nodes) {\n let type = this.parser.schema.nodes[name]\n if (type.isTextblock && type.defaultAttrs) return type\n }\n }\n\n addPendingMark(mark) {\n let found = findSameMarkInSet(mark, this.top.pendingMarks)\n if (found) this.top.stashMarks.push(found)\n this.top.pendingMarks = mark.addToSet(this.top.pendingMarks)\n }\n\n removePendingMark(mark, upto) {\n for (let depth = this.open; depth >= 0; depth--) {\n let level = this.nodes[depth]\n let found = level.pendingMarks.lastIndexOf(mark)\n if (found > -1) {\n level.pendingMarks = mark.removeFromSet(level.pendingMarks)\n } else {\n level.activeMarks = mark.removeFromSet(level.activeMarks)\n let stashMark = level.popFromStashMark(mark)\n if (stashMark && level.type && level.type.allowsMarkType(stashMark.type))\n level.activeMarks = stashMark.addToSet(level.activeMarks)\n }\n if (level == upto) break\n }\n }\n}\n\n// Kludge to work around directly nested list nodes produced by some\n// tools and allowed by browsers to mean that the nested list is\n// actually part of the list item above it.\nfunction normalizeList(dom) {\n for (let child = dom.firstChild, prevItem = null; child; child = child.nextSibling) {\n let name = child.nodeType == 1 ? child.nodeName.toLowerCase() : null\n if (name && listTags.hasOwnProperty(name) && prevItem) {\n prevItem.appendChild(child)\n child = prevItem\n } else if (name == \"li\") {\n prevItem = child\n } else if (name) {\n prevItem = null\n }\n }\n}\n\n// Apply a CSS selector.\nfunction matches(dom, selector) {\n return (dom.matches || dom.msMatchesSelector || dom.webkitMatchesSelector || dom.mozMatchesSelector).call(dom, selector)\n}\n\n// : (string) → [string]\n// Tokenize a style attribute into property/value pairs.\nfunction parseStyles(style) {\n let re = /\\s*([\\w-]+)\\s*:\\s*([^;]+)/g, m, result = []\n while (m = re.exec(style)) result.push(m[1], m[2].trim())\n return result\n}\n\nfunction copy(obj) {\n let copy = {}\n for (let prop in obj) copy[prop] = obj[prop]\n return copy\n}\n\n// Used when finding a mark at the top level of a fragment parse.\n// Checks whether it would be reasonable to apply a given mark type to\n// a given node, by looking at the way the mark occurs in the schema.\nfunction markMayApply(markType, nodeType) {\n let nodes = nodeType.schema.nodes\n for (let name in nodes) {\n let parent = nodes[name]\n if (!parent.allowsMarkType(markType)) continue\n let seen = [], scan = match => {\n seen.push(match)\n for (let i = 0; i < match.edgeCount; i++) {\n let {type, next} = match.edge(i)\n if (type == nodeType) return true\n if (seen.indexOf(next) < 0 && scan(next)) return true\n }\n }\n if (scan(parent.contentMatch)) return true\n }\n}\n\nfunction findSameMarkInSet(mark, set) {\n for (let i = 0; i < set.length; i++) {\n if (mark.eq(set[i])) return set[i]\n }\n}\n","// DOMOutputSpec:: interface\n// A description of a DOM structure. Can be either a string, which is\n// interpreted as a text node, a DOM node, which is interpreted as\n// itself, a `{dom: Node, contentDOM: ?Node}` object, or an array.\n//\n// An array describes a DOM element. The first value in the array\n// should be a string—the name of the DOM element, optionally prefixed\n// by a namespace URL and a space. If the second element is plain\n// object, it is interpreted as a set of attributes for the element.\n// Any elements after that (including the 2nd if it's not an attribute\n// object) are interpreted as children of the DOM elements, and must\n// either be valid `DOMOutputSpec` values, or the number zero.\n//\n// The number zero (pronounced “hole”) is used to indicate the place\n// where a node's child nodes should be inserted. If it occurs in an\n// output spec, it should be the only child element in its parent\n// node.\n\n// ::- A DOM serializer knows how to convert ProseMirror nodes and\n// marks of various types to DOM nodes.\nexport class DOMSerializer {\n // :: (Object<(node: Node) → DOMOutputSpec>, Object<?(mark: Mark, inline: bool) → DOMOutputSpec>)\n // Create a serializer. `nodes` should map node names to functions\n // that take a node and return a description of the corresponding\n // DOM. `marks` does the same for mark names, but also gets an\n // argument that tells it whether the mark's content is block or\n // inline content (for typical use, it'll always be inline). A mark\n // serializer may be `null` to indicate that marks of that type\n // should not be serialized.\n constructor(nodes, marks) {\n // :: Object<(node: Node) → DOMOutputSpec>\n // The node serialization functions.\n this.nodes = nodes || {}\n // :: Object<?(mark: Mark, inline: bool) → DOMOutputSpec>\n // The mark serialization functions.\n this.marks = marks || {}\n }\n\n // :: (Fragment, ?Object) → dom.DocumentFragment\n // Serialize the content of this fragment to a DOM fragment. When\n // not in the browser, the `document` option, containing a DOM\n // document, should be passed so that the serializer can create\n // nodes.\n serializeFragment(fragment, options = {}, target) {\n if (!target) target = doc(options).createDocumentFragment()\n\n let top = target, active = null\n fragment.forEach(node => {\n if (active || node.marks.length) {\n if (!active) active = []\n let keep = 0, rendered = 0\n while (keep < active.length && rendered < node.marks.length) {\n let next = node.marks[rendered]\n if (!this.marks[next.type.name]) { rendered++; continue }\n if (!next.eq(active[keep]) || next.type.spec.spanning === false) break\n keep += 2; rendered++\n }\n while (keep < active.length) {\n top = active.pop()\n active.pop()\n }\n while (rendered < node.marks.length) {\n let add = node.marks[rendered++]\n let markDOM = this.serializeMark(add, node.isInline, options)\n if (markDOM) {\n active.push(add, top)\n top.appendChild(markDOM.dom)\n top = markDOM.contentDOM || markDOM.dom\n }\n }\n }\n top.appendChild(this.serializeNode(node, options))\n })\n\n return target\n }\n\n // :: (Node, ?Object) → dom.Node\n // Serialize this node to a DOM node. This can be useful when you\n // need to serialize a part of a document, as opposed to the whole\n // document. To serialize a whole document, use\n // [`serializeFragment`](#model.DOMSerializer.serializeFragment) on\n // its [content](#model.Node.content).\n serializeNode(node, options = {}) {\n let {dom, contentDOM} =\n DOMSerializer.renderSpec(doc(options), this.nodes[node.type.name](node))\n if (contentDOM) {\n if (node.isLeaf)\n throw new RangeError(\"Content hole not allowed in a leaf node spec\")\n if (options.onContent)\n options.onContent(node, contentDOM, options)\n else\n this.serializeFragment(node.content, options, contentDOM)\n }\n return dom\n }\n\n serializeNodeAndMarks(node, options = {}) {\n let dom = this.serializeNode(node, options)\n for (let i = node.marks.length - 1; i >= 0; i--) {\n let wrap = this.serializeMark(node.marks[i], node.isInline, options)\n if (wrap) {\n ;(wrap.contentDOM || wrap.dom).appendChild(dom)\n dom = wrap.dom\n }\n }\n return dom\n }\n\n serializeMark(mark, inline, options = {}) {\n let toDOM = this.marks[mark.type.name]\n return toDOM && DOMSerializer.renderSpec(doc(options), toDOM(mark, inline))\n }\n\n // :: (dom.Document, DOMOutputSpec) → {dom: dom.Node, contentDOM: ?dom.Node}\n // Render an [output spec](#model.DOMOutputSpec) to a DOM node. If\n // the spec has a hole (zero) in it, `contentDOM` will point at the\n // node with the hole.\n static renderSpec(doc, structure, xmlNS = null) {\n if (typeof structure == \"string\")\n return {dom: doc.createTextNode(structure)}\n if (structure.nodeType != null)\n return {dom: structure}\n if (structure.dom && structure.dom.nodeType != null)\n return structure\n let tagName = structure[0], space = tagName.indexOf(\" \")\n if (space > 0) {\n xmlNS = tagName.slice(0, space)\n tagName = tagName.slice(space + 1)\n }\n let contentDOM = null, dom = xmlNS ? doc.createElementNS(xmlNS, tagName) : doc.createElement(tagName)\n let attrs = structure[1], start = 1\n if (attrs && typeof attrs == \"object\" && attrs.nodeType == null && !Array.isArray(attrs)) {\n start = 2\n for (let name in attrs) if (attrs[name] != null) {\n let space = name.indexOf(\" \")\n if (space > 0) dom.setAttributeNS(name.slice(0, space), name.slice(space + 1), attrs[name])\n else dom.setAttribute(name, attrs[name])\n }\n }\n for (let i = start; i < structure.length; i++) {\n let child = structure[i]\n if (child === 0) {\n if (i < structure.length - 1 || i > start)\n throw new RangeError(\"Content hole must be the only child of its parent node\")\n return {dom, contentDOM: dom}\n } else {\n let {dom: inner, contentDOM: innerContent} = DOMSerializer.renderSpec(doc, child, xmlNS)\n dom.appendChild(inner)\n if (innerContent) {\n if (contentDOM) throw new RangeError(\"Multiple content holes\")\n contentDOM = innerContent\n }\n }\n }\n return {dom, contentDOM}\n }\n\n // :: (Schema) → DOMSerializer\n // Build a serializer using the [`toDOM`](#model.NodeSpec.toDOM)\n // properties in a schema's node and mark specs.\n static fromSchema(schema) {\n return schema.cached.domSerializer ||\n (schema.cached.domSerializer = new DOMSerializer(this.nodesFromSchema(schema), this.marksFromSchema(schema)))\n }\n\n // : (Schema) → Object<(node: Node) → DOMOutputSpec>\n // Gather the serializers in a schema's node specs into an object.\n // This can be useful as a base to build a custom serializer from.\n static nodesFromSchema(schema) {\n let result = gatherToDOM(schema.nodes)\n if (!result.text) result.text = node => node.text\n return result\n }\n\n // : (Schema) → Object<(mark: Mark) → DOMOutputSpec>\n // Gather the serializers in a schema's mark specs into an object.\n static marksFromSchema(schema) {\n return gatherToDOM(schema.marks)\n }\n}\n\nfunction gatherToDOM(obj) {\n let result = {}\n for (let name in obj) {\n let toDOM = obj[name].spec.toDOM\n if (toDOM) result[name] = toDOM\n }\n return result\n}\n\nfunction doc(options) {\n // declare global: window\n return options.document || window.document\n}\n"],"names":["let","const","p","prototypeAccessors","n","prototypeAccessors$1","super","i","type","loop","next","states","prop","text","mark","this","rules","name","space"],"mappings":"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A;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;IACa,MAAM,GAGjB,eAAW,CAAC,IAAI,EAAE;AACpB;AACA;AACA;AACA;AACA;AACA;AACA,EAAI,IAAI,CAAC,IAAI,GAAG,GAAE;AAClB,EAAI,KAAKA,IAAI,IAAI,IAAI,IAAI,IAAE,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,IAAI,IAAC;AACvD,EAAI,IAAI,CAAC,IAAI,CAAC,KAAK,GAAG,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,EAAC;AACjD,EAAI,IAAI,CAAC,IAAI,CAAC,KAAK,GAAG,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,EAAC;AACjD;AACA;AACA;AACA,EAAI,IAAI,CAAC,KAAK,GAAG,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,EAAC;AACxD;AACA;AACA;AACA,EAAI,IAAI,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AAE,MAAM,IAAI,WAAW,CAAC,sBAAsB,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,GAAG,GAAC;AAC3E,GAAG;AACH,EAAE,OAAO,KAAK;AACd;;ACvkBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;IACa,SAAS,GAIpB,kBAAW,CAAC,MAAM,EAAE,KAAK,EAAE;;AAAC;AAC9B;AACA;AACA,EAAI,IAAI,CAAC,MAAM,GAAG,OAAM;AACxB;AACA;AACA;AACA,EAAI,IAAI,CAAC,KAAK,GAAG,MAAK;AACtB,EAAI,IAAI,CAAC,IAAI,GAAG,GAAE;AAClB,EAAI,IAAI,CAAC,MAAM,GAAG,GAAE;AACpB;AACA,EAAI,KAAK,CAAC,OAAO,WAAC,MAAQ;AAC1B,IAAM,IAAI,IAAI,CAAC,GAAG,IAAEC,MAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,IAAC;AACxC,SAAW,IAAI,IAAI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"}