{"version":3,"file":"static/js/vendors-5a94f17d.7e662a43.js","mappings":"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","sources":["../node_modules/raf-schd/dist/raf-schd.esm.js","../node_modules/raf/index.js","../node_modules/prosemirror-view/dist/index.js"],"sourcesContent":["var rafSchd = function rafSchd(fn) {\n var lastArgs = [];\n var frameId = null;\n\n var wrapperFn = function wrapperFn() {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n lastArgs = args;\n\n if (frameId) {\n return;\n }\n\n frameId = requestAnimationFrame(function () {\n frameId = null;\n fn.apply(void 0, lastArgs);\n });\n };\n\n wrapperFn.cancel = function () {\n if (!frameId) {\n return;\n }\n\n cancelAnimationFrame(frameId);\n frameId = null;\n };\n\n return wrapperFn;\n};\n\nexport default rafSchd;\n","var now = require('performance-now')\n , root = typeof window === 'undefined' ? global : window\n , vendors = ['moz', 'webkit']\n , suffix = 'AnimationFrame'\n , raf = root['request' + suffix]\n , caf = root['cancel' + suffix] || root['cancelRequest' + suffix]\n\nfor(var i = 0; !raf && i < vendors.length; i++) {\n raf = root[vendors[i] + 'Request' + suffix]\n caf = root[vendors[i] + 'Cancel' + suffix]\n || root[vendors[i] + 'CancelRequest' + suffix]\n}\n\n// Some versions of FF have rAF but not cAF\nif(!raf || !caf) {\n var last = 0\n , id = 0\n , queue = []\n , frameDuration = 1000 / 60\n\n raf = function(callback) {\n if(queue.length === 0) {\n var _now = now()\n , next = Math.max(0, frameDuration - (_now - last))\n last = next + _now\n setTimeout(function() {\n var cp = queue.slice(0)\n // Clear queue here to prevent\n // callbacks from appending listeners\n // to the current frame's queue\n queue.length = 0\n for(var i = 0; i < cp.length; i++) {\n if(!cp[i].cancelled) {\n try{\n cp[i].callback(last)\n } catch(e) {\n setTimeout(function() { throw e }, 0)\n }\n }\n }\n }, Math.round(next))\n }\n queue.push({\n handle: ++id,\n callback: callback,\n cancelled: false\n })\n return id\n }\n\n caf = function(handle) {\n for(var i = 0; i < queue.length; i++) {\n if(queue[i].handle === handle) {\n queue[i].cancelled = true\n }\n }\n }\n}\n\nmodule.exports = function(fn) {\n // Wrap in a new function to prevent\n // `cancel` potentially being assigned\n // to the native rAF function\n return raf.call(root, fn)\n}\nmodule.exports.cancel = function() {\n caf.apply(root, arguments)\n}\nmodule.exports.polyfill = function(object) {\n if (!object) {\n object = root;\n }\n object.requestAnimationFrame = raf\n object.cancelAnimationFrame = caf\n}\n","import { TextSelection, NodeSelection, AllSelection, Selection } from 'prosemirror-state';\nimport { DOMSerializer, Fragment, Mark, Slice, DOMParser } from 'prosemirror-model';\nimport { dropPoint } from 'prosemirror-transform';\n\nconst domIndex = function (node) {\n for (var index = 0;; index++) {\n node = node.previousSibling;\n if (!node)\n return index;\n }\n};\nconst parentNode = function (node) {\n let parent = node.assignedSlot || node.parentNode;\n return parent && parent.nodeType == 11 ? parent.host : parent;\n};\nlet reusedRange = null;\n// Note that this will always return the same range, because DOM range\n// objects are every expensive, and keep slowing down subsequent DOM\n// updates, for some reason.\nconst textRange = function (node, from, to) {\n let range = reusedRange || (reusedRange = document.createRange());\n range.setEnd(node, to == null ? node.nodeValue.length : to);\n range.setStart(node, from || 0);\n return range;\n};\nconst clearReusedRange = function () {\n reusedRange = null;\n};\n// Scans forward and backward through DOM positions equivalent to the\n// given one to see if the two are in the same place (i.e. after a\n// text node vs at the end of that text node)\nconst isEquivalentPosition = function (node, off, targetNode, targetOff) {\n return targetNode && (scanFor(node, off, targetNode, targetOff, -1) ||\n scanFor(node, off, targetNode, targetOff, 1));\n};\nconst atomElements = /^(img|br|input|textarea|hr)$/i;\nfunction scanFor(node, off, targetNode, targetOff, dir) {\n for (;;) {\n if (node == targetNode && off == targetOff)\n return true;\n if (off == (dir < 0 ? 0 : nodeSize(node))) {\n let parent = node.parentNode;\n if (!parent || parent.nodeType != 1 || hasBlockDesc(node) || atomElements.test(node.nodeName) ||\n node.contentEditable == \"false\")\n return false;\n off = domIndex(node) + (dir < 0 ? 0 : 1);\n node = parent;\n }\n else if (node.nodeType == 1) {\n node = node.childNodes[off + (dir < 0 ? -1 : 0)];\n if (node.contentEditable == \"false\")\n return false;\n off = dir < 0 ? nodeSize(node) : 0;\n }\n else {\n return false;\n }\n }\n}\nfunction nodeSize(node) {\n return node.nodeType == 3 ? node.nodeValue.length : node.childNodes.length;\n}\nfunction textNodeBefore$1(node, offset) {\n for (;;) {\n if (node.nodeType == 3 && offset)\n return node;\n if (node.nodeType == 1 && offset > 0) {\n if (node.contentEditable == \"false\")\n return null;\n node = node.childNodes[offset - 1];\n offset = nodeSize(node);\n }\n else if (node.parentNode && !hasBlockDesc(node)) {\n offset = domIndex(node);\n node = node.parentNode;\n }\n else {\n return null;\n }\n }\n}\nfunction textNodeAfter$1(node, offset) {\n for (;;) {\n if (node.nodeType == 3 && offset < node.nodeValue.length)\n return node;\n if (node.nodeType == 1 && offset < node.childNodes.length) {\n if (node.contentEditable == \"false\")\n return null;\n node = node.childNodes[offset];\n offset = 0;\n }\n else if (node.parentNode && !hasBlockDesc(node)) {\n offset = domIndex(node) + 1;\n node = node.parentNode;\n }\n else {\n return null;\n }\n }\n}\nfunction isOnEdge(node, offset, parent) {\n for (let atStart = offset == 0, atEnd = offset == nodeSize(node); atStart || atEnd;) {\n if (node == parent)\n return true;\n let index = domIndex(node);\n node = node.parentNode;\n if (!node)\n return false;\n atStart = atStart && index == 0;\n atEnd = atEnd && index == nodeSize(node);\n }\n}\nfunction hasBlockDesc(dom) {\n let desc;\n for (let cur = dom; cur; cur = cur.parentNode)\n if (desc = cur.pmViewDesc)\n break;\n return desc && desc.node && desc.node.isBlock && (desc.dom == dom || desc.contentDOM == dom);\n}\n// Work around Chrome issue https://bugs.chromium.org/p/chromium/issues/detail?id=447523\n// (isCollapsed inappropriately returns true in shadow dom)\nconst selectionCollapsed = function (domSel) {\n return domSel.focusNode && isEquivalentPosition(domSel.focusNode, domSel.focusOffset, domSel.anchorNode, domSel.anchorOffset);\n};\nfunction keyEvent(keyCode, key) {\n let event = document.createEvent(\"Event\");\n event.initEvent(\"keydown\", true, true);\n event.keyCode = keyCode;\n event.key = event.code = key;\n return event;\n}\nfunction deepActiveElement(doc) {\n let elt = doc.activeElement;\n while (elt && elt.shadowRoot)\n elt = elt.shadowRoot.activeElement;\n return elt;\n}\nfunction caretFromPoint(doc, x, y) {\n if (doc.caretPositionFromPoint) {\n try { // Firefox throws for this call in hard-to-predict circumstances (#994)\n let pos = doc.caretPositionFromPoint(x, y);\n // Clip the offset, because Chrome will return a text offset\n // into nodes, which can't be treated as a regular DOM\n // offset\n if (pos)\n return { node: pos.offsetNode, offset: Math.min(nodeSize(pos.offsetNode), pos.offset) };\n }\n catch (_) { }\n }\n if (doc.caretRangeFromPoint) {\n let range = doc.caretRangeFromPoint(x, y);\n if (range)\n return { node: range.startContainer, offset: Math.min(nodeSize(range.startContainer), range.startOffset) };\n }\n}\n\nconst nav = typeof navigator != \"undefined\" ? navigator : null;\nconst doc = typeof document != \"undefined\" ? document : null;\nconst agent = (nav && nav.userAgent) || \"\";\nconst ie_edge = /Edge\\/(\\d+)/.exec(agent);\nconst ie_upto10 = /MSIE \\d/.exec(agent);\nconst ie_11up = /Trident\\/(?:[7-9]|\\d{2,})\\..*rv:(\\d+)/.exec(agent);\nconst ie = !!(ie_upto10 || ie_11up || ie_edge);\nconst ie_version = ie_upto10 ? document.documentMode : ie_11up ? +ie_11up[1] : ie_edge ? +ie_edge[1] : 0;\nconst gecko = !ie && /gecko\\/(\\d+)/i.test(agent);\ngecko && +(/Firefox\\/(\\d+)/.exec(agent) || [0, 0])[1];\nconst _chrome = !ie && /Chrome\\/(\\d+)/.exec(agent);\nconst chrome = !!_chrome;\nconst chrome_version = _chrome ? +_chrome[1] : 0;\nconst safari = !ie && !!nav && /Apple Computer/.test(nav.vendor);\n// Is true for both iOS and iPadOS for convenience\nconst ios = safari && (/Mobile\\/\\w+/.test(agent) || !!nav && nav.maxTouchPoints > 2);\nconst mac = ios || (nav ? /Mac/.test(nav.platform) : false);\nconst windows = nav ? /Win/.test(nav.platform) : false;\nconst android = /Android \\d/.test(agent);\nconst webkit = !!doc && \"webkitFontSmoothing\" in doc.documentElement.style;\nconst webkit_version = webkit ? +(/\\bAppleWebKit\\/(\\d+)/.exec(navigator.userAgent) || [0, 0])[1] : 0;\n\nfunction windowRect(doc) {\n let vp = doc.defaultView && doc.defaultView.visualViewport;\n if (vp)\n return {\n left: 0, right: vp.width,\n top: 0, bottom: vp.height\n };\n return { left: 0, right: doc.documentElement.clientWidth,\n top: 0, bottom: doc.documentElement.clientHeight };\n}\nfunction getSide(value, side) {\n return typeof value == \"number\" ? value : value[side];\n}\nfunction clientRect(node) {\n let rect = node.getBoundingClientRect();\n // Adjust for elements with style \"transform: scale()\"\n let scaleX = (rect.width / node.offsetWidth) || 1;\n let scaleY = (rect.height / node.offsetHeight) || 1;\n // Make sure scrollbar width isn't included in the rectangle\n return { left: rect.left, right: rect.left + node.clientWidth * scaleX,\n top: rect.top, bottom: rect.top + node.clientHeight * scaleY };\n}\nfunction scrollRectIntoView(view, rect, startDOM) {\n let scrollThreshold = view.someProp(\"scrollThreshold\") || 0, scrollMargin = view.someProp(\"scrollMargin\") || 5;\n let doc = view.dom.ownerDocument;\n for (let parent = startDOM || view.dom;; parent = parentNode(parent)) {\n if (!parent)\n break;\n if (parent.nodeType != 1)\n continue;\n let elt = parent;\n let atTop = elt == doc.body;\n let bounding = atTop ? windowRect(doc) : clientRect(elt);\n let moveX = 0, moveY = 0;\n if (rect.top < bounding.top + getSide(scrollThreshold, \"top\"))\n moveY = -(bounding.top - rect.top + getSide(scrollMargin, \"top\"));\n else if (rect.bottom > bounding.bottom - getSide(scrollThreshold, \"bottom\"))\n moveY = rect.bottom - rect.top > bounding.bottom - bounding.top\n ? rect.top + getSide(scrollMargin, \"top\") - bounding.top\n : rect.bottom - bounding.bottom + getSide(scrollMargin, \"bottom\");\n if (rect.left < bounding.left + getSide(scrollThreshold, \"left\"))\n moveX = -(bounding.left - rect.left + getSide(scrollMargin, \"left\"));\n else if (rect.right > bounding.right - getSide(scrollThreshold, \"right\"))\n moveX = rect.right - bounding.right + getSide(scrollMargin, \"right\");\n if (moveX || moveY) {\n if (atTop) {\n doc.defaultView.scrollBy(moveX, moveY);\n }\n else {\n let startX = elt.scrollLeft, startY = elt.scrollTop;\n if (moveY)\n elt.scrollTop += moveY;\n if (moveX)\n elt.scrollLeft += moveX;\n let dX = elt.scrollLeft - startX, dY = elt.scrollTop - startY;\n rect = { left: rect.left - dX, top: rect.top - dY, right: rect.right - dX, bottom: rect.bottom - dY };\n }\n }\n if (atTop || /^(fixed|sticky)$/.test(getComputedStyle(parent).position))\n break;\n }\n}\n// Store the scroll position of the editor's parent nodes, along with\n// the top position of an element near the top of the editor, which\n// will be used to make sure the visible viewport remains stable even\n// when the size of the content above changes.\nfunction storeScrollPos(view) {\n let rect = view.dom.getBoundingClientRect(), startY = Math.max(0, rect.top);\n let refDOM, refTop;\n for (let x = (rect.left + rect.right) / 2, y = startY + 1; y < Math.min(innerHeight, rect.bottom); y += 5) {\n let dom = view.root.elementFromPoint(x, y);\n if (!dom || dom == view.dom || !view.dom.contains(dom))\n continue;\n let localRect = dom.getBoundingClientRect();\n if (localRect.top >= startY - 20) {\n refDOM = dom;\n refTop = localRect.top;\n break;\n }\n }\n return { refDOM: refDOM, refTop: refTop, stack: scrollStack(view.dom) };\n}\nfunction scrollStack(dom) {\n let stack = [], doc = dom.ownerDocument;\n for (let cur = dom; cur; cur = parentNode(cur)) {\n stack.push({ dom: cur, top: cur.scrollTop, left: cur.scrollLeft });\n if (dom == doc)\n break;\n }\n return stack;\n}\n// Reset the scroll position of the editor's parent nodes to that what\n// it was before, when storeScrollPos was called.\nfunction resetScrollPos({ refDOM, refTop, stack }) {\n let newRefTop = refDOM ? refDOM.getBoundingClientRect().top : 0;\n restoreScrollStack(stack, newRefTop == 0 ? 0 : newRefTop - refTop);\n}\nfunction restoreScrollStack(stack, dTop) {\n for (let i = 0; i < stack.length; i++) {\n let { dom, top, left } = stack[i];\n if (dom.scrollTop != top + dTop)\n dom.scrollTop = top + dTop;\n if (dom.scrollLeft != left)\n dom.scrollLeft = left;\n }\n}\nlet preventScrollSupported = null;\n// Feature-detects support for .focus({preventScroll: true}), and uses\n// a fallback kludge when not supported.\nfunction focusPreventScroll(dom) {\n if (dom.setActive)\n return dom.setActive(); // in IE\n if (preventScrollSupported)\n return dom.focus(preventScrollSupported);\n let stored = scrollStack(dom);\n dom.focus(preventScrollSupported == null ? {\n get preventScroll() {\n preventScrollSupported = { preventScroll: true };\n return true;\n }\n } : undefined);\n if (!preventScrollSupported) {\n preventScrollSupported = false;\n restoreScrollStack(stored, 0);\n }\n}\nfunction findOffsetInNode(node, coords) {\n let closest, dxClosest = 2e8, coordsClosest, offset = 0;\n let rowBot = coords.top, rowTop = coords.top;\n let firstBelow, coordsBelow;\n for (let child = node.firstChild, childIndex = 0; child; child = child.nextSibling, childIndex++) {\n let rects;\n if (child.nodeType == 1)\n rects = child.getClientRects();\n else if (child.nodeType == 3)\n rects = textRange(child).getClientRects();\n else\n continue;\n for (let i = 0; i < rects.length; i++) {\n let rect = rects[i];\n if (rect.top <= rowBot && rect.bottom >= rowTop) {\n rowBot = Math.max(rect.bottom, rowBot);\n rowTop = Math.min(rect.top, rowTop);\n let dx = rect.left > coords.left ? rect.left - coords.left\n : rect.right < coords.left ? coords.left - rect.right : 0;\n if (dx < dxClosest) {\n closest = child;\n dxClosest = dx;\n coordsClosest = dx && closest.nodeType == 3 ? {\n left: rect.right < coords.left ? rect.right : rect.left,\n top: coords.top\n } : coords;\n if (child.nodeType == 1 && dx)\n offset = childIndex + (coords.left >= (rect.left + rect.right) / 2 ? 1 : 0);\n continue;\n }\n }\n else if (rect.top > coords.top && !firstBelow && rect.left <= coords.left && rect.right >= coords.left) {\n firstBelow = child;\n coordsBelow = { left: Math.max(rect.left, Math.min(rect.right, coords.left)), top: rect.top };\n }\n if (!closest && (coords.left >= rect.right && coords.top >= rect.top ||\n coords.left >= rect.left && coords.top >= rect.bottom))\n offset = childIndex + 1;\n }\n }\n if (!closest && firstBelow) {\n closest = firstBelow;\n coordsClosest = coordsBelow;\n dxClosest = 0;\n }\n if (closest && closest.nodeType == 3)\n return findOffsetInText(closest, coordsClosest);\n if (!closest || (dxClosest && closest.nodeType == 1))\n return { node, offset };\n return findOffsetInNode(closest, coordsClosest);\n}\nfunction findOffsetInText(node, coords) {\n let len = node.nodeValue.length;\n let range = document.createRange();\n for (let i = 0; i < len; i++) {\n range.setEnd(node, i + 1);\n range.setStart(node, i);\n let rect = singleRect(range, 1);\n if (rect.top == rect.bottom)\n continue;\n if (inRect(coords, rect))\n return { node, offset: i + (coords.left >= (rect.left + rect.right) / 2 ? 1 : 0) };\n }\n return { node, offset: 0 };\n}\nfunction inRect(coords, rect) {\n return coords.left >= rect.left - 1 && coords.left <= rect.right + 1 &&\n coords.top >= rect.top - 1 && coords.top <= rect.bottom + 1;\n}\nfunction targetKludge(dom, coords) {\n let parent = dom.parentNode;\n if (parent && /^li$/i.test(parent.nodeName) && coords.left < dom.getBoundingClientRect().left)\n return parent;\n return dom;\n}\nfunction posFromElement(view, elt, coords) {\n let { node, offset } = findOffsetInNode(elt, coords), bias = -1;\n if (node.nodeType == 1 && !node.firstChild) {\n let rect = node.getBoundingClientRect();\n bias = rect.left != rect.right && coords.left > (rect.left + rect.right) / 2 ? 1 : -1;\n }\n return view.docView.posFromDOM(node, offset, bias);\n}\nfunction posFromCaret(view, node, offset, coords) {\n // Browser (in caretPosition/RangeFromPoint) will agressively\n // normalize towards nearby inline nodes. Since we are interested in\n // positions between block nodes too, we first walk up the hierarchy\n // of nodes to see if there are block nodes that the coordinates\n // fall outside of. If so, we take the position before/after that\n // block. If not, we call `posFromDOM` on the raw node/offset.\n let outsideBlock = -1;\n for (let cur = node, sawBlock = false;;) {\n if (cur == view.dom)\n break;\n let desc = view.docView.nearestDesc(cur, true), rect;\n if (!desc)\n return null;\n if (desc.dom.nodeType == 1 && (desc.node.isBlock && desc.parent || !desc.contentDOM) &&\n // Ignore elements with zero-size bounding rectangles\n ((rect = desc.dom.getBoundingClientRect()).width || rect.height)) {\n if (desc.node.isBlock && desc.parent) {\n // Only apply the horizontal test to the innermost block. Vertical for any parent.\n if (!sawBlock && rect.left > coords.left || rect.top > coords.top)\n outsideBlock = desc.posBefore;\n else if (!sawBlock && rect.right < coords.left || rect.bottom < coords.top)\n outsideBlock = desc.posAfter;\n sawBlock = true;\n }\n if (!desc.contentDOM && outsideBlock < 0 && !desc.node.isText) {\n // If we are inside a leaf, return the side of the leaf closer to the coords\n let before = desc.node.isBlock ? coords.top < (rect.top + rect.bottom) / 2\n : coords.left < (rect.left + rect.right) / 2;\n return before ? desc.posBefore : desc.posAfter;\n }\n }\n cur = desc.dom.parentNode;\n }\n return outsideBlock > -1 ? outsideBlock : view.docView.posFromDOM(node, offset, -1);\n}\nfunction elementFromPoint(element, coords, box) {\n let len = element.childNodes.length;\n if (len && box.top < box.bottom) {\n for (let startI = Math.max(0, Math.min(len - 1, Math.floor(len * (coords.top - box.top) / (box.bottom - box.top)) - 2)), i = startI;;) {\n let child = element.childNodes[i];\n if (child.nodeType == 1) {\n let rects = child.getClientRects();\n for (let j = 0; j < rects.length; j++) {\n let rect = rects[j];\n if (inRect(coords, rect))\n return elementFromPoint(child, coords, rect);\n }\n }\n if ((i = (i + 1) % len) == startI)\n break;\n }\n }\n return element;\n}\n// Given an x,y position on the editor, get the position in the document.\nfunction posAtCoords(view, coords) {\n let doc = view.dom.ownerDocument, node, offset = 0;\n let caret = caretFromPoint(doc, coords.left, coords.top);\n if (caret)\n ({ node, offset } = caret);\n let elt = (view.root.elementFromPoint ? view.root : doc)\n .elementFromPoint(coords.left, coords.top);\n let pos;\n if (!elt || !view.dom.contains(elt.nodeType != 1 ? elt.parentNode : elt)) {\n let box = view.dom.getBoundingClientRect();\n if (!inRect(coords, box))\n return null;\n elt = elementFromPoint(view.dom, coords, box);\n if (!elt)\n return null;\n }\n // Safari's caretRangeFromPoint returns nonsense when on a draggable element\n if (safari) {\n for (let p = elt; node && p; p = parentNode(p))\n if (p.draggable)\n node = undefined;\n }\n elt = targetKludge(elt, coords);\n if (node) {\n if (gecko && node.nodeType == 1) {\n // Firefox will sometimes return offsets into nodes, which\n // have no actual children, from caretPositionFromPoint (#953)\n offset = Math.min(offset, node.childNodes.length);\n // It'll also move the returned position before image nodes,\n // even if those are behind it.\n if (offset < node.childNodes.length) {\n let next = node.childNodes[offset], box;\n if (next.nodeName == \"IMG\" && (box = next.getBoundingClientRect()).right <= coords.left &&\n box.bottom > coords.top)\n offset++;\n }\n }\n let prev;\n // When clicking above the right side of an uneditable node, Chrome will report a cursor position after that node.\n if (webkit && offset && node.nodeType == 1 && (prev = node.childNodes[offset - 1]).nodeType == 1 &&\n prev.contentEditable == \"false\" && prev.getBoundingClientRect().top >= coords.top)\n offset--;\n // Suspiciously specific kludge to work around caret*FromPoint\n // never returning a position at the end of the document\n if (node == view.dom && offset == node.childNodes.length - 1 && node.lastChild.nodeType == 1 &&\n coords.top > node.lastChild.getBoundingClientRect().bottom)\n pos = view.state.doc.content.size;\n // Ignore positions directly after a BR, since caret*FromPoint\n // 'round up' positions that would be more accurately placed\n // before the BR node.\n else if (offset == 0 || node.nodeType != 1 || node.childNodes[offset - 1].nodeName != \"BR\")\n pos = posFromCaret(view, node, offset, coords);\n }\n if (pos == null)\n pos = posFromElement(view, elt, coords);\n let desc = view.docView.nearestDesc(elt, true);\n return { pos, inside: desc ? desc.posAtStart - desc.border : -1 };\n}\nfunction nonZero(rect) {\n return rect.top < rect.bottom || rect.left < rect.right;\n}\nfunction singleRect(target, bias) {\n let rects = target.getClientRects();\n if (rects.length) {\n let first = rects[bias < 0 ? 0 : rects.length - 1];\n if (nonZero(first))\n return first;\n }\n return Array.prototype.find.call(rects, nonZero) || target.getBoundingClientRect();\n}\nconst BIDI = /[\\u0590-\\u05f4\\u0600-\\u06ff\\u0700-\\u08ac]/;\n// Given a position in the document model, get a bounding box of the\n// character at that position, relative to the window.\nfunction coordsAtPos(view, pos, side) {\n let { node, offset, atom } = view.docView.domFromPos(pos, side < 0 ? -1 : 1);\n let supportEmptyRange = webkit || gecko;\n if (node.nodeType == 3) {\n // These browsers support querying empty text ranges. Prefer that in\n // bidi context or when at the end of a node.\n if (supportEmptyRange && (BIDI.test(node.nodeValue) || (side < 0 ? !offset : offset == node.nodeValue.length))) {\n let rect = singleRect(textRange(node, offset, offset), side);\n // Firefox returns bad results (the position before the space)\n // when querying a position directly after line-broken\n // whitespace. Detect this situation and and kludge around it\n if (gecko && offset && /\\s/.test(node.nodeValue[offset - 1]) && offset < node.nodeValue.length) {\n let rectBefore = singleRect(textRange(node, offset - 1, offset - 1), -1);\n if (rectBefore.top == rect.top) {\n let rectAfter = singleRect(textRange(node, offset, offset + 1), -1);\n if (rectAfter.top != rect.top)\n return flattenV(rectAfter, rectAfter.left < rectBefore.left);\n }\n }\n return rect;\n }\n else {\n let from = offset, to = offset, takeSide = side < 0 ? 1 : -1;\n if (side < 0 && !offset) {\n to++;\n takeSide = -1;\n }\n else if (side >= 0 && offset == node.nodeValue.length) {\n from--;\n takeSide = 1;\n }\n else if (side < 0) {\n from--;\n }\n else {\n to++;\n }\n return flattenV(singleRect(textRange(node, from, to), takeSide), takeSide < 0);\n }\n }\n let $dom = view.state.doc.resolve(pos - (atom || 0));\n // Return a horizontal line in block context\n if (!$dom.parent.inlineContent) {\n if (atom == null && offset && (side < 0 || offset == nodeSize(node))) {\n let before = node.childNodes[offset - 1];\n if (before.nodeType == 1)\n return flattenH(before.getBoundingClientRect(), false);\n }\n if (atom == null && offset < nodeSize(node)) {\n let after = node.childNodes[offset];\n if (after.nodeType == 1)\n return flattenH(after.getBoundingClientRect(), true);\n }\n return flattenH(node.getBoundingClientRect(), side >= 0);\n }\n // Inline, not in text node (this is not Bidi-safe)\n if (atom == null && offset && (side < 0 || offset == nodeSize(node))) {\n let before = node.childNodes[offset - 1];\n let target = before.nodeType == 3 ? textRange(before, nodeSize(before) - (supportEmptyRange ? 0 : 1))\n // BR nodes tend to only return the rectangle before them.\n // Only use them if they are the last element in their parent\n : before.nodeType == 1 && (before.nodeName != \"BR\" || !before.nextSibling) ? before : null;\n if (target)\n return flattenV(singleRect(target, 1), false);\n }\n if (atom == null && offset < nodeSize(node)) {\n let after = node.childNodes[offset];\n while (after.pmViewDesc && after.pmViewDesc.ignoreForCoords)\n after = after.nextSibling;\n let target = !after ? null : after.nodeType == 3 ? textRange(after, 0, (supportEmptyRange ? 0 : 1))\n : after.nodeType == 1 ? after : null;\n if (target)\n return flattenV(singleRect(target, -1), true);\n }\n // All else failed, just try to get a rectangle for the target node\n return flattenV(singleRect(node.nodeType == 3 ? textRange(node) : node, -side), side >= 0);\n}\nfunction flattenV(rect, left) {\n if (rect.width == 0)\n return rect;\n let x = left ? rect.left : rect.right;\n return { top: rect.top, bottom: rect.bottom, left: x, right: x };\n}\nfunction flattenH(rect, top) {\n if (rect.height == 0)\n return rect;\n let y = top ? rect.top : rect.bottom;\n return { top: y, bottom: y, left: rect.left, right: rect.right };\n}\nfunction withFlushedState(view, state, f) {\n let viewState = view.state, active = view.root.activeElement;\n if (viewState != state)\n view.updateState(state);\n if (active != view.dom)\n view.focus();\n try {\n return f();\n }\n finally {\n if (viewState != state)\n view.updateState(viewState);\n if (active != view.dom && active)\n active.focus();\n }\n}\n// Whether vertical position motion in a given direction\n// from a position would leave a text block.\nfunction endOfTextblockVertical(view, state, dir) {\n let sel = state.selection;\n let $pos = dir == \"up\" ? sel.$from : sel.$to;\n return withFlushedState(view, state, () => {\n let { node: dom } = view.docView.domFromPos($pos.pos, dir == \"up\" ? -1 : 1);\n for (;;) {\n let nearest = view.docView.nearestDesc(dom, true);\n if (!nearest)\n break;\n if (nearest.node.isBlock) {\n dom = nearest.contentDOM || nearest.dom;\n break;\n }\n dom = nearest.dom.parentNode;\n }\n let coords = coordsAtPos(view, $pos.pos, 1);\n for (let child = dom.firstChild; child; child = child.nextSibling) {\n let boxes;\n if (child.nodeType == 1)\n boxes = child.getClientRects();\n else if (child.nodeType == 3)\n boxes = textRange(child, 0, child.nodeValue.length).getClientRects();\n else\n continue;\n for (let i = 0; i < boxes.length; i++) {\n let box = boxes[i];\n if (box.bottom > box.top + 1 &&\n (dir == \"up\" ? coords.top - box.top > (box.bottom - coords.top) * 2\n : box.bottom - coords.bottom > (coords.bottom - box.top) * 2))\n return false;\n }\n }\n return true;\n });\n}\nconst maybeRTL = /[\\u0590-\\u08ac]/;\nfunction endOfTextblockHorizontal(view, state, dir) {\n let { $head } = state.selection;\n if (!$head.parent.isTextblock)\n return false;\n let offset = $head.parentOffset, atStart = !offset, atEnd = offset == $head.parent.content.size;\n let sel = view.domSelection();\n if (!sel)\n return $head.pos == $head.start() || $head.pos == $head.end();\n // If the textblock is all LTR, or the browser doesn't support\n // Selection.modify (Edge), fall back to a primitive approach\n if (!maybeRTL.test($head.parent.textContent) || !sel.modify)\n return dir == \"left\" || dir == \"backward\" ? atStart : atEnd;\n return withFlushedState(view, state, () => {\n // This is a huge hack, but appears to be the best we can\n // currently do: use `Selection.modify` to move the selection by\n // one character, and see if that moves the cursor out of the\n // textblock (or doesn't move it at all, when at the start/end of\n // the document).\n let { focusNode: oldNode, focusOffset: oldOff, anchorNode, anchorOffset } = view.domSelectionRange();\n let oldBidiLevel = sel.caretBidiLevel // Only for Firefox\n ;\n sel.modify(\"move\", dir, \"character\");\n let parentDOM = $head.depth ? view.docView.domAfterPos($head.before()) : view.dom;\n let { focusNode: newNode, focusOffset: newOff } = view.domSelectionRange();\n let result = newNode && !parentDOM.contains(newNode.nodeType == 1 ? newNode : newNode.parentNode) ||\n (oldNode == newNode && oldOff == newOff);\n // Restore the previous selection\n try {\n sel.collapse(anchorNode, anchorOffset);\n if (oldNode && (oldNode != anchorNode || oldOff != anchorOffset) && sel.extend)\n sel.extend(oldNode, oldOff);\n }\n catch (_) { }\n if (oldBidiLevel != null)\n sel.caretBidiLevel = oldBidiLevel;\n return result;\n });\n}\nlet cachedState = null;\nlet cachedDir = null;\nlet cachedResult = false;\nfunction endOfTextblock(view, state, dir) {\n if (cachedState == state && cachedDir == dir)\n return cachedResult;\n cachedState = state;\n cachedDir = dir;\n return cachedResult = dir == \"up\" || dir == \"down\"\n ? endOfTextblockVertical(view, state, dir)\n : endOfTextblockHorizontal(view, state, dir);\n}\n\n// View descriptions are data structures that describe the DOM that is\n// used to represent the editor's content. They are used for:\n//\n// - Incremental redrawing when the document changes\n//\n// - Figuring out what part of the document a given DOM position\n// corresponds to\n//\n// - Wiring in custom implementations of the editing interface for a\n// given node\n//\n// They form a doubly-linked mutable tree, starting at `view.docView`.\nconst NOT_DIRTY = 0, CHILD_DIRTY = 1, CONTENT_DIRTY = 2, NODE_DIRTY = 3;\n// Superclass for the various kinds of descriptions. Defines their\n// basic structure and shared methods.\nclass ViewDesc {\n constructor(parent, children, dom, \n // This is the node that holds the child views. It may be null for\n // descs that don't have children.\n contentDOM) {\n this.parent = parent;\n this.children = children;\n this.dom = dom;\n this.contentDOM = contentDOM;\n this.dirty = NOT_DIRTY;\n // An expando property on the DOM node provides a link back to its\n // description.\n dom.pmViewDesc = this;\n }\n // Used to check whether a given description corresponds to a\n // widget/mark/node.\n matchesWidget(widget) { return false; }\n matchesMark(mark) { return false; }\n matchesNode(node, outerDeco, innerDeco) { return false; }\n matchesHack(nodeName) { return false; }\n // When parsing in-editor content (in domchange.js), we allow\n // descriptions to determine the parse rules that should be used to\n // parse them.\n parseRule() { return null; }\n // Used by the editor's event handler to ignore events that come\n // from certain descs.\n stopEvent(event) { return false; }\n // The size of the content represented by this desc.\n get size() {\n let size = 0;\n for (let i = 0; i < this.children.length; i++)\n size += this.children[i].size;\n return size;\n }\n // For block nodes, this represents the space taken up by their\n // start/end tokens.\n get border() { return 0; }\n destroy() {\n this.parent = undefined;\n if (this.dom.pmViewDesc == this)\n this.dom.pmViewDesc = undefined;\n for (let i = 0; i < this.children.length; i++)\n this.children[i].destroy();\n }\n posBeforeChild(child) {\n for (let i = 0, pos = this.posAtStart;; i++) {\n let cur = this.children[i];\n if (cur == child)\n return pos;\n pos += cur.size;\n }\n }\n get posBefore() {\n return this.parent.posBeforeChild(this);\n }\n get posAtStart() {\n return this.parent ? this.parent.posBeforeChild(this) + this.border : 0;\n }\n get posAfter() {\n return this.posBefore + this.size;\n }\n get posAtEnd() {\n return this.posAtStart + this.size - 2 * this.border;\n }\n localPosFromDOM(dom, offset, bias) {\n // If the DOM position is in the content, use the child desc after\n // it to figure out a position.\n if (this.contentDOM && this.contentDOM.contains(dom.nodeType == 1 ? dom : dom.parentNode)) {\n if (bias < 0) {\n let domBefore, desc;\n if (dom == this.contentDOM) {\n domBefore = dom.childNodes[offset - 1];\n }\n else {\n while (dom.parentNode != this.contentDOM)\n dom = dom.parentNode;\n domBefore = dom.previousSibling;\n }\n while (domBefore && !((desc = domBefore.pmViewDesc) && desc.parent == this))\n domBefore = domBefore.previousSibling;\n return domBefore ? this.posBeforeChild(desc) + desc.size : this.posAtStart;\n }\n else {\n let domAfter, desc;\n if (dom == this.contentDOM) {\n domAfter = dom.childNodes[offset];\n }\n else {\n while (dom.parentNode != this.contentDOM)\n dom = dom.parentNode;\n domAfter = dom.nextSibling;\n }\n while (domAfter && !((desc = domAfter.pmViewDesc) && desc.parent == this))\n domAfter = domAfter.nextSibling;\n return domAfter ? this.posBeforeChild(desc) : this.posAtEnd;\n }\n }\n // Otherwise, use various heuristics, falling back on the bias\n // parameter, to determine whether to return the position at the\n // start or at the end of this view desc.\n let atEnd;\n if (dom == this.dom && this.contentDOM) {\n atEnd = offset > domIndex(this.contentDOM);\n }\n else if (this.contentDOM && this.contentDOM != this.dom && this.dom.contains(this.contentDOM)) {\n atEnd = dom.compareDocumentPosition(this.contentDOM) & 2;\n }\n else if (this.dom.firstChild) {\n if (offset == 0)\n for (let search = dom;; search = search.parentNode) {\n if (search == this.dom) {\n atEnd = false;\n break;\n }\n if (search.previousSibling)\n break;\n }\n if (atEnd == null && offset == dom.childNodes.length)\n for (let search = dom;; search = search.parentNode) {\n if (search == this.dom) {\n atEnd = true;\n break;\n }\n if (search.nextSibling)\n break;\n }\n }\n return (atEnd == null ? bias > 0 : atEnd) ? this.posAtEnd : this.posAtStart;\n }\n nearestDesc(dom, onlyNodes = false) {\n for (let first = true, cur = dom; cur; cur = cur.parentNode) {\n let desc = this.getDesc(cur), nodeDOM;\n if (desc && (!onlyNodes || desc.node)) {\n // If dom is outside of this desc's nodeDOM, don't count it.\n if (first && (nodeDOM = desc.nodeDOM) &&\n !(nodeDOM.nodeType == 1 ? nodeDOM.contains(dom.nodeType == 1 ? dom : dom.parentNode) : nodeDOM == dom))\n first = false;\n else\n return desc;\n }\n }\n }\n getDesc(dom) {\n let desc = dom.pmViewDesc;\n for (let cur = desc; cur; cur = cur.parent)\n if (cur == this)\n return desc;\n }\n posFromDOM(dom, offset, bias) {\n for (let scan = dom; scan; scan = scan.parentNode) {\n let desc = this.getDesc(scan);\n if (desc)\n return desc.localPosFromDOM(dom, offset, bias);\n }\n return -1;\n }\n // Find the desc for the node after the given pos, if any. (When a\n // parent node overrode rendering, there might not be one.)\n descAt(pos) {\n for (let i = 0, offset = 0; i < this.children.length; i++) {\n let child = this.children[i], end = offset + child.size;\n if (offset == pos && end != offset) {\n while (!child.border && child.children.length) {\n for (let i = 0; i < child.children.length; i++) {\n let inner = child.children[i];\n if (inner.size) {\n child = inner;\n break;\n }\n }\n }\n return child;\n }\n if (pos < end)\n return child.descAt(pos - offset - child.border);\n offset = end;\n }\n }\n domFromPos(pos, side) {\n if (!this.contentDOM)\n return { node: this.dom, offset: 0, atom: pos + 1 };\n // First find the position in the child array\n let i = 0, offset = 0;\n for (let curPos = 0; i < this.children.length; i++) {\n let child = this.children[i], end = curPos + child.size;\n if (end > pos || child instanceof TrailingHackViewDesc) {\n offset = pos - curPos;\n break;\n }\n curPos = end;\n }\n // If this points into the middle of a child, call through\n if (offset)\n return this.children[i].domFromPos(offset - this.children[i].border, side);\n // Go back if there were any zero-length widgets with side >= 0 before this point\n for (let prev; i && !(prev = this.children[i - 1]).size && prev instanceof WidgetViewDesc && prev.side >= 0; i--) { }\n // Scan towards the first useable node\n if (side <= 0) {\n let prev, enter = true;\n for (;; i--, enter = false) {\n prev = i ? this.children[i - 1] : null;\n if (!prev || prev.dom.parentNode == this.contentDOM)\n break;\n }\n if (prev && side && enter && !prev.border && !prev.domAtom)\n return prev.domFromPos(prev.size, side);\n return { node: this.contentDOM, offset: prev ? domIndex(prev.dom) + 1 : 0 };\n }\n else {\n let next, enter = true;\n for (;; i++, enter = false) {\n next = i < this.children.length ? this.children[i] : null;\n if (!next || next.dom.parentNode == this.contentDOM)\n break;\n }\n if (next && enter && !next.border && !next.domAtom)\n return next.domFromPos(0, side);\n return { node: this.contentDOM, offset: next ? domIndex(next.dom) : this.contentDOM.childNodes.length };\n }\n }\n // Used to find a DOM range in a single parent for a given changed\n // range.\n parseRange(from, to, base = 0) {\n if (this.children.length == 0)\n return { node: this.contentDOM, from, to, fromOffset: 0, toOffset: this.contentDOM.childNodes.length };\n let fromOffset = -1, toOffset = -1;\n for (let offset = base, i = 0;; i++) {\n let child = this.children[i], end = offset + child.size;\n if (fromOffset == -1 && from <= end) {\n let childBase = offset + child.border;\n // FIXME maybe descend mark views to parse a narrower range?\n if (from >= childBase && to <= end - child.border && child.node &&\n child.contentDOM && this.contentDOM.contains(child.contentDOM))\n return child.parseRange(from, to, childBase);\n from = offset;\n for (let j = i; j > 0; j--) {\n let prev = this.children[j - 1];\n if (prev.size && prev.dom.parentNode == this.contentDOM && !prev.emptyChildAt(1)) {\n fromOffset = domIndex(prev.dom) + 1;\n break;\n }\n from -= prev.size;\n }\n if (fromOffset == -1)\n fromOffset = 0;\n }\n if (fromOffset > -1 && (end > to || i == this.children.length - 1)) {\n to = end;\n for (let j = i + 1; j < this.children.length; j++) {\n let next = this.children[j];\n if (next.size && next.dom.parentNode == this.contentDOM && !next.emptyChildAt(-1)) {\n toOffset = domIndex(next.dom);\n break;\n }\n to += next.size;\n }\n if (toOffset == -1)\n toOffset = this.contentDOM.childNodes.length;\n break;\n }\n offset = end;\n }\n return { node: this.contentDOM, from, to, fromOffset, toOffset };\n }\n emptyChildAt(side) {\n if (this.border || !this.contentDOM || !this.children.length)\n return false;\n let child = this.children[side < 0 ? 0 : this.children.length - 1];\n return child.size == 0 || child.emptyChildAt(side);\n }\n domAfterPos(pos) {\n let { node, offset } = this.domFromPos(pos, 0);\n if (node.nodeType != 1 || offset == node.childNodes.length)\n throw new RangeError(\"No node after pos \" + pos);\n return node.childNodes[offset];\n }\n // View descs are responsible for setting any selection that falls\n // entirely inside of them, so that custom implementations can do\n // custom things with the selection. Note that this falls apart when\n // a selection starts in such a node and ends in another, in which\n // case we just use whatever domFromPos produces as a best effort.\n setSelection(anchor, head, view, force = false) {\n // If the selection falls entirely in a child, give it to that child\n let from = Math.min(anchor, head), to = Math.max(anchor, head);\n for (let i = 0, offset = 0; i < this.children.length; i++) {\n let child = this.children[i], end = offset + child.size;\n if (from > offset && to < end)\n return child.setSelection(anchor - offset - child.border, head - offset - child.border, view, force);\n offset = end;\n }\n let anchorDOM = this.domFromPos(anchor, anchor ? -1 : 1);\n let headDOM = head == anchor ? anchorDOM : this.domFromPos(head, head ? -1 : 1);\n let domSel = view.root.getSelection();\n let selRange = view.domSelectionRange();\n let brKludge = false;\n // On Firefox, using Selection.collapse to put the cursor after a\n // BR node for some reason doesn't always work (#1073). On Safari,\n // the cursor sometimes inexplicable visually lags behind its\n // reported position in such situations (#1092).\n if ((gecko || safari) && anchor == head) {\n let { node, offset } = anchorDOM;\n if (node.nodeType == 3) {\n brKludge = !!(offset && node.nodeValue[offset - 1] == \"\\n\");\n // Issue #1128\n if (brKludge && offset == node.nodeValue.length) {\n for (let scan = node, after; scan; scan = scan.parentNode) {\n if (after = scan.nextSibling) {\n if (after.nodeName == \"BR\")\n anchorDOM = headDOM = { node: after.parentNode, offset: domIndex(after) + 1 };\n break;\n }\n let desc = scan.pmViewDesc;\n if (desc && desc.node && desc.node.isBlock)\n break;\n }\n }\n }\n else {\n let prev = node.childNodes[offset - 1];\n brKludge = prev && (prev.nodeName == \"BR\" || prev.contentEditable == \"false\");\n }\n }\n // Firefox can act strangely when the selection is in front of an\n // uneditable node. See #1163 and https://bugzilla.mozilla.org/show_bug.cgi?id=1709536\n if (gecko && selRange.focusNode && selRange.focusNode != headDOM.node && selRange.focusNode.nodeType == 1) {\n let after = selRange.focusNode.childNodes[selRange.focusOffset];\n if (after && after.contentEditable == \"false\")\n force = true;\n }\n if (!(force || brKludge && safari) &&\n isEquivalentPosition(anchorDOM.node, anchorDOM.offset, selRange.anchorNode, selRange.anchorOffset) &&\n isEquivalentPosition(headDOM.node, headDOM.offset, selRange.focusNode, selRange.focusOffset))\n return;\n // Selection.extend can be used to create an 'inverted' selection\n // (one where the focus is before the anchor), but not all\n // browsers support it yet.\n let domSelExtended = false;\n if ((domSel.extend || anchor == head) && !brKludge) {\n domSel.collapse(anchorDOM.node, anchorDOM.offset);\n try {\n if (anchor != head)\n domSel.extend(headDOM.node, headDOM.offset);\n domSelExtended = true;\n }\n catch (_) {\n // In some cases with Chrome the selection is empty after calling\n // collapse, even when it should be valid. This appears to be a bug, but\n // it is difficult to isolate. If this happens fallback to the old path\n // without using extend.\n // Similarly, this could crash on Safari if the editor is hidden, and\n // there was no selection.\n }\n }\n if (!domSelExtended) {\n if (anchor > head) {\n let tmp = anchorDOM;\n anchorDOM = headDOM;\n headDOM = tmp;\n }\n let range = document.createRange();\n range.setEnd(headDOM.node, headDOM.offset);\n range.setStart(anchorDOM.node, anchorDOM.offset);\n domSel.removeAllRanges();\n domSel.addRange(range);\n }\n }\n ignoreMutation(mutation) {\n return !this.contentDOM && mutation.type != \"selection\";\n }\n get contentLost() {\n return this.contentDOM && this.contentDOM != this.dom && !this.dom.contains(this.contentDOM);\n }\n // Remove a subtree of the element tree that has been touched\n // by a DOM change, so that the next update will redraw it.\n markDirty(from, to) {\n for (let offset = 0, i = 0; i < this.children.length; i++) {\n let child = this.children[i], end = offset + child.size;\n if (offset == end ? from <= end && to >= offset : from < end && to > offset) {\n let startInside = offset + child.border, endInside = end - child.border;\n if (from >= startInside && to <= endInside) {\n this.dirty = from == offset || to == end ? CONTENT_DIRTY : CHILD_DIRTY;\n if (from == startInside && to == endInside &&\n (child.contentLost || child.dom.parentNode != this.contentDOM))\n child.dirty = NODE_DIRTY;\n else\n child.markDirty(from - startInside, to - startInside);\n return;\n }\n else {\n child.dirty = child.dom == child.contentDOM && child.dom.parentNode == this.contentDOM && !child.children.length\n ? CONTENT_DIRTY : NODE_DIRTY;\n }\n }\n offset = end;\n }\n this.dirty = CONTENT_DIRTY;\n }\n markParentsDirty() {\n let level = 1;\n for (let node = this.parent; node; node = node.parent, level++) {\n let dirty = level == 1 ? CONTENT_DIRTY : CHILD_DIRTY;\n if (node.dirty < dirty)\n node.dirty = dirty;\n }\n }\n get domAtom() { return false; }\n get ignoreForCoords() { return false; }\n isText(text) { return false; }\n}\n// A widget desc represents a widget decoration, which is a DOM node\n// drawn between the document nodes.\nclass WidgetViewDesc extends ViewDesc {\n constructor(parent, widget, view, pos) {\n let self, dom = widget.type.toDOM;\n if (typeof dom == \"function\")\n dom = dom(view, () => {\n if (!self)\n return pos;\n if (self.parent)\n return self.parent.posBeforeChild(self);\n });\n if (!widget.type.spec.raw) {\n if (dom.nodeType != 1) {\n let wrap = document.createElement(\"span\");\n wrap.appendChild(dom);\n dom = wrap;\n }\n dom.contentEditable = \"false\";\n dom.classList.add(\"ProseMirror-widget\");\n }\n super(parent, [], dom, null);\n this.widget = widget;\n this.widget = widget;\n self = this;\n }\n matchesWidget(widget) {\n return this.dirty == NOT_DIRTY && widget.type.eq(this.widget.type);\n }\n parseRule() { return { ignore: true }; }\n stopEvent(event) {\n let stop = this.widget.spec.stopEvent;\n return stop ? stop(event) : false;\n }\n ignoreMutation(mutation) {\n return mutation.type != \"selection\" || this.widget.spec.ignoreSelection;\n }\n destroy() {\n this.widget.type.destroy(this.dom);\n super.destroy();\n }\n get domAtom() { return true; }\n get side() { return this.widget.type.side; }\n}\nclass CompositionViewDesc extends ViewDesc {\n constructor(parent, dom, textDOM, text) {\n super(parent, [], dom, null);\n this.textDOM = textDOM;\n this.text = text;\n }\n get size() { return this.text.length; }\n localPosFromDOM(dom, offset) {\n if (dom != this.textDOM)\n return this.posAtStart + (offset ? this.size : 0);\n return this.posAtStart + offset;\n }\n domFromPos(pos) {\n return { node: this.textDOM, offset: pos };\n }\n ignoreMutation(mut) {\n return mut.type === 'characterData' && mut.target.nodeValue == mut.oldValue;\n }\n}\n// A mark desc represents a mark. May have multiple children,\n// depending on how the mark is split. Note that marks are drawn using\n// a fixed nesting order, for simplicity and predictability, so in\n// some cases they will be split more often than would appear\n// necessary.\nclass MarkViewDesc extends ViewDesc {\n constructor(parent, mark, dom, contentDOM, spec) {\n super(parent, [], dom, contentDOM);\n this.mark = mark;\n this.spec = spec;\n }\n static create(parent, mark, inline, view) {\n let custom = view.nodeViews[mark.type.name];\n let spec = custom && custom(mark, view, inline);\n if (!spec || !spec.dom)\n spec = DOMSerializer.renderSpec(document, mark.type.spec.toDOM(mark, inline), null, mark.attrs);\n return new MarkViewDesc(parent, mark, spec.dom, spec.contentDOM || spec.dom, spec);\n }\n parseRule() {\n if ((this.dirty & NODE_DIRTY) || this.mark.type.spec.reparseInView)\n return null;\n return { mark: this.mark.type.name, attrs: this.mark.attrs, contentElement: this.contentDOM };\n }\n matchesMark(mark) { return this.dirty != NODE_DIRTY && this.mark.eq(mark); }\n markDirty(from, to) {\n super.markDirty(from, to);\n // Move dirty info to nearest node view\n if (this.dirty != NOT_DIRTY) {\n let parent = this.parent;\n while (!parent.node)\n parent = parent.parent;\n if (parent.dirty < this.dirty)\n parent.dirty = this.dirty;\n this.dirty = NOT_DIRTY;\n }\n }\n slice(from, to, view) {\n let copy = MarkViewDesc.create(this.parent, this.mark, true, view);\n let nodes = this.children, size = this.size;\n if (to < size)\n nodes = replaceNodes(nodes, to, size, view);\n if (from > 0)\n nodes = replaceNodes(nodes, 0, from, view);\n for (let i = 0; i < nodes.length; i++)\n nodes[i].parent = copy;\n copy.children = nodes;\n return copy;\n }\n ignoreMutation(mutation) {\n return this.spec.ignoreMutation ? this.spec.ignoreMutation(mutation) : super.ignoreMutation(mutation);\n }\n destroy() {\n if (this.spec.destroy)\n this.spec.destroy();\n super.destroy();\n }\n}\n// Node view descs are the main, most common type of view desc, and\n// correspond to an actual node in the document. Unlike mark descs,\n// they populate their child array themselves.\nclass NodeViewDesc extends ViewDesc {\n constructor(parent, node, outerDeco, innerDeco, dom, contentDOM, nodeDOM, view, pos) {\n super(parent, [], dom, contentDOM);\n this.node = node;\n this.outerDeco = outerDeco;\n this.innerDeco = innerDeco;\n this.nodeDOM = nodeDOM;\n }\n // By default, a node is rendered using the `toDOM` method from the\n // node type spec. But client code can use the `nodeViews` spec to\n // supply a custom node view, which can influence various aspects of\n // the way the node works.\n //\n // (Using subclassing for this was intentionally decided against,\n // since it'd require exposing a whole slew of finicky\n // implementation details to the user code that they probably will\n // never need.)\n static create(parent, node, outerDeco, innerDeco, view, pos) {\n let custom = view.nodeViews[node.type.name], descObj;\n let spec = custom && custom(node, view, () => {\n // (This is a function that allows the custom view to find its\n // own position)\n if (!descObj)\n return pos;\n if (descObj.parent)\n return descObj.parent.posBeforeChild(descObj);\n }, outerDeco, innerDeco);\n let dom = spec && spec.dom, contentDOM = spec && spec.contentDOM;\n if (node.isText) {\n if (!dom)\n dom = document.createTextNode(node.text);\n else if (dom.nodeType != 3)\n throw new RangeError(\"Text must be rendered as a DOM text node\");\n }\n else if (!dom) {\n let spec = DOMSerializer.renderSpec(document, node.type.spec.toDOM(node), null, node.attrs);\n ({ dom, contentDOM } = spec);\n }\n if (!contentDOM && !node.isText && dom.nodeName != \"BR\") { // Chrome gets confused by
\n if (!dom.hasAttribute(\"contenteditable\"))\n dom.contentEditable = \"false\";\n if (node.type.spec.draggable)\n dom.draggable = true;\n }\n let nodeDOM = dom;\n dom = applyOuterDeco(dom, outerDeco, node);\n if (spec)\n return descObj = new CustomNodeViewDesc(parent, node, outerDeco, innerDeco, dom, contentDOM || null, nodeDOM, spec, view, pos + 1);\n else if (node.isText)\n return new TextViewDesc(parent, node, outerDeco, innerDeco, dom, nodeDOM, view);\n else\n return new NodeViewDesc(parent, node, outerDeco, innerDeco, dom, contentDOM || null, nodeDOM, view, pos + 1);\n }\n parseRule() {\n // Experimental kludge to allow opt-in re-parsing of nodes\n if (this.node.type.spec.reparseInView)\n return null;\n // FIXME the assumption that this can always return the current\n // attrs means that if the user somehow manages to change the\n // attrs in the dom, that won't be picked up. Not entirely sure\n // whether this is a problem\n let rule = { node: this.node.type.name, attrs: this.node.attrs };\n if (this.node.type.whitespace == \"pre\")\n rule.preserveWhitespace = \"full\";\n if (!this.contentDOM) {\n rule.getContent = () => this.node.content;\n }\n else if (!this.contentLost) {\n rule.contentElement = this.contentDOM;\n }\n else {\n // Chrome likes to randomly recreate parent nodes when\n // backspacing things. When that happens, this tries to find the\n // new parent.\n for (let i = this.children.length - 1; i >= 0; i--) {\n let child = this.children[i];\n if (this.dom.contains(child.dom.parentNode)) {\n rule.contentElement = child.dom.parentNode;\n break;\n }\n }\n if (!rule.contentElement)\n rule.getContent = () => Fragment.empty;\n }\n return rule;\n }\n matchesNode(node, outerDeco, innerDeco) {\n return this.dirty == NOT_DIRTY && node.eq(this.node) &&\n sameOuterDeco(outerDeco, this.outerDeco) && innerDeco.eq(this.innerDeco);\n }\n get size() { return this.node.nodeSize; }\n get border() { return this.node.isLeaf ? 0 : 1; }\n // Syncs `this.children` to match `this.node.content` and the local\n // decorations, possibly introducing nesting for marks. Then, in a\n // separate step, syncs the DOM inside `this.contentDOM` to\n // `this.children`.\n updateChildren(view, pos) {\n let inline = this.node.inlineContent, off = pos;\n let composition = view.composing ? this.localCompositionInfo(view, pos) : null;\n let localComposition = composition && composition.pos > -1 ? composition : null;\n let compositionInChild = composition && composition.pos < 0;\n let updater = new ViewTreeUpdater(this, localComposition && localComposition.node, view);\n iterDeco(this.node, this.innerDeco, (widget, i, insideNode) => {\n if (widget.spec.marks)\n updater.syncToMarks(widget.spec.marks, inline, view);\n else if (widget.type.side >= 0 && !insideNode)\n updater.syncToMarks(i == this.node.childCount ? Mark.none : this.node.child(i).marks, inline, view);\n // If the next node is a desc matching this widget, reuse it,\n // otherwise insert the widget as a new view desc.\n updater.placeWidget(widget, view, off);\n }, (child, outerDeco, innerDeco, i) => {\n // Make sure the wrapping mark descs match the node's marks.\n updater.syncToMarks(child.marks, inline, view);\n // Try several strategies for drawing this node\n let compIndex;\n if (updater.findNodeMatch(child, outerDeco, innerDeco, i)) ;\n else if (compositionInChild && view.state.selection.from > off &&\n view.state.selection.to < off + child.nodeSize &&\n (compIndex = updater.findIndexWithChild(composition.node)) > -1 &&\n updater.updateNodeAt(child, outerDeco, innerDeco, compIndex, view)) ;\n else if (updater.updateNextNode(child, outerDeco, innerDeco, view, i, off)) ;\n else {\n // Add it as a new view\n updater.addNode(child, outerDeco, innerDeco, view, off);\n }\n off += child.nodeSize;\n });\n // Drop all remaining descs after the current position.\n updater.syncToMarks([], inline, view);\n if (this.node.isTextblock)\n updater.addTextblockHacks();\n updater.destroyRest();\n // Sync the DOM if anything changed\n if (updater.changed || this.dirty == CONTENT_DIRTY) {\n // May have to protect focused DOM from being changed if a composition is active\n if (localComposition)\n this.protectLocalComposition(view, localComposition);\n renderDescs(this.contentDOM, this.children, view);\n if (ios)\n iosHacks(this.dom);\n }\n }\n localCompositionInfo(view, pos) {\n // Only do something if both the selection and a focused text node\n // are inside of this node\n let { from, to } = view.state.selection;\n if (!(view.state.selection instanceof TextSelection) || from < pos || to > pos + this.node.content.size)\n return null;\n let textNode = view.input.compositionNode;\n if (!textNode || !this.dom.contains(textNode.parentNode))\n return null;\n if (this.node.inlineContent) {\n // Find the text in the focused node in the node, stop if it's not\n // there (may have been modified through other means, in which\n // case it should overwritten)\n let text = textNode.nodeValue;\n let textPos = findTextInFragment(this.node.content, text, from - pos, to - pos);\n return textPos < 0 ? null : { node: textNode, pos: textPos, text };\n }\n else {\n return { node: textNode, pos: -1, text: \"\" };\n }\n }\n protectLocalComposition(view, { node, pos, text }) {\n // The node is already part of a local view desc, leave it there\n if (this.getDesc(node))\n return;\n // Create a composition view for the orphaned nodes\n let topNode = node;\n for (;; topNode = topNode.parentNode) {\n if (topNode.parentNode == this.contentDOM)\n break;\n while (topNode.previousSibling)\n topNode.parentNode.removeChild(topNode.previousSibling);\n while (topNode.nextSibling)\n topNode.parentNode.removeChild(topNode.nextSibling);\n if (topNode.pmViewDesc)\n topNode.pmViewDesc = undefined;\n }\n let desc = new CompositionViewDesc(this, topNode, node, text);\n view.input.compositionNodes.push(desc);\n // Patch up this.children to contain the composition view\n this.children = replaceNodes(this.children, pos, pos + text.length, view, desc);\n }\n // If this desc must be updated to match the given node decoration,\n // do so and return true.\n update(node, outerDeco, innerDeco, view) {\n if (this.dirty == NODE_DIRTY ||\n !node.sameMarkup(this.node))\n return false;\n this.updateInner(node, outerDeco, innerDeco, view);\n return true;\n }\n updateInner(node, outerDeco, innerDeco, view) {\n this.updateOuterDeco(outerDeco);\n this.node = node;\n this.innerDeco = innerDeco;\n if (this.contentDOM)\n this.updateChildren(view, this.posAtStart);\n this.dirty = NOT_DIRTY;\n }\n updateOuterDeco(outerDeco) {\n if (sameOuterDeco(outerDeco, this.outerDeco))\n return;\n let needsWrap = this.nodeDOM.nodeType != 1;\n let oldDOM = this.dom;\n this.dom = patchOuterDeco(this.dom, this.nodeDOM, computeOuterDeco(this.outerDeco, this.node, needsWrap), computeOuterDeco(outerDeco, this.node, needsWrap));\n if (this.dom != oldDOM) {\n oldDOM.pmViewDesc = undefined;\n this.dom.pmViewDesc = this;\n }\n this.outerDeco = outerDeco;\n }\n // Mark this node as being the selected node.\n selectNode() {\n if (this.nodeDOM.nodeType == 1)\n this.nodeDOM.classList.add(\"ProseMirror-selectednode\");\n if (this.contentDOM || !this.node.type.spec.draggable)\n this.dom.draggable = true;\n }\n // Remove selected node marking from this node.\n deselectNode() {\n if (this.nodeDOM.nodeType == 1) {\n this.nodeDOM.classList.remove(\"ProseMirror-selectednode\");\n if (this.contentDOM || !this.node.type.spec.draggable)\n this.dom.removeAttribute(\"draggable\");\n }\n }\n get domAtom() { return this.node.isAtom; }\n}\n// Create a view desc for the top-level document node, to be exported\n// and used by the view class.\nfunction docViewDesc(doc, outerDeco, innerDeco, dom, view) {\n applyOuterDeco(dom, outerDeco, doc);\n let docView = new NodeViewDesc(undefined, doc, outerDeco, innerDeco, dom, dom, dom, view, 0);\n if (docView.contentDOM)\n docView.updateChildren(view, 0);\n return docView;\n}\nclass TextViewDesc extends NodeViewDesc {\n constructor(parent, node, outerDeco, innerDeco, dom, nodeDOM, view) {\n super(parent, node, outerDeco, innerDeco, dom, null, nodeDOM, view, 0);\n }\n parseRule() {\n let skip = this.nodeDOM.parentNode;\n while (skip && skip != this.dom && !skip.pmIsDeco)\n skip = skip.parentNode;\n return { skip: (skip || true) };\n }\n update(node, outerDeco, innerDeco, view) {\n if (this.dirty == NODE_DIRTY || (this.dirty != NOT_DIRTY && !this.inParent()) ||\n !node.sameMarkup(this.node))\n return false;\n this.updateOuterDeco(outerDeco);\n if ((this.dirty != NOT_DIRTY || node.text != this.node.text) && node.text != this.nodeDOM.nodeValue) {\n this.nodeDOM.nodeValue = node.text;\n if (view.trackWrites == this.nodeDOM)\n view.trackWrites = null;\n }\n this.node = node;\n this.dirty = NOT_DIRTY;\n return true;\n }\n inParent() {\n let parentDOM = this.parent.contentDOM;\n for (let n = this.nodeDOM; n; n = n.parentNode)\n if (n == parentDOM)\n return true;\n return false;\n }\n domFromPos(pos) {\n return { node: this.nodeDOM, offset: pos };\n }\n localPosFromDOM(dom, offset, bias) {\n if (dom == this.nodeDOM)\n return this.posAtStart + Math.min(offset, this.node.text.length);\n return super.localPosFromDOM(dom, offset, bias);\n }\n ignoreMutation(mutation) {\n return mutation.type != \"characterData\" && mutation.type != \"selection\";\n }\n slice(from, to, view) {\n let node = this.node.cut(from, to), dom = document.createTextNode(node.text);\n return new TextViewDesc(this.parent, node, this.outerDeco, this.innerDeco, dom, dom, view);\n }\n markDirty(from, to) {\n super.markDirty(from, to);\n if (this.dom != this.nodeDOM && (from == 0 || to == this.nodeDOM.nodeValue.length))\n this.dirty = NODE_DIRTY;\n }\n get domAtom() { return false; }\n isText(text) { return this.node.text == text; }\n}\n// A dummy desc used to tag trailing BR or IMG nodes created to work\n// around contentEditable terribleness.\nclass TrailingHackViewDesc extends ViewDesc {\n parseRule() { return { ignore: true }; }\n matchesHack(nodeName) { return this.dirty == NOT_DIRTY && this.dom.nodeName == nodeName; }\n get domAtom() { return true; }\n get ignoreForCoords() { return this.dom.nodeName == \"IMG\"; }\n}\n// A separate subclass is used for customized node views, so that the\n// extra checks only have to be made for nodes that are actually\n// customized.\nclass CustomNodeViewDesc extends NodeViewDesc {\n constructor(parent, node, outerDeco, innerDeco, dom, contentDOM, nodeDOM, spec, view, pos) {\n super(parent, node, outerDeco, innerDeco, dom, contentDOM, nodeDOM, view, pos);\n this.spec = spec;\n }\n // A custom `update` method gets to decide whether the update goes\n // through. If it does, and there's a `contentDOM` node, our logic\n // updates the children.\n update(node, outerDeco, innerDeco, view) {\n if (this.dirty == NODE_DIRTY)\n return false;\n if (this.spec.update && (this.node.type == node.type || this.spec.multiType)) {\n let result = this.spec.update(node, outerDeco, innerDeco);\n if (result)\n this.updateInner(node, outerDeco, innerDeco, view);\n return result;\n }\n else if (!this.contentDOM && !node.isLeaf) {\n return false;\n }\n else {\n return super.update(node, outerDeco, innerDeco, view);\n }\n }\n selectNode() {\n this.spec.selectNode ? this.spec.selectNode() : super.selectNode();\n }\n deselectNode() {\n this.spec.deselectNode ? this.spec.deselectNode() : super.deselectNode();\n }\n setSelection(anchor, head, view, force) {\n this.spec.setSelection ? this.spec.setSelection(anchor, head, view.root)\n : super.setSelection(anchor, head, view, force);\n }\n destroy() {\n if (this.spec.destroy)\n this.spec.destroy();\n super.destroy();\n }\n stopEvent(event) {\n return this.spec.stopEvent ? this.spec.stopEvent(event) : false;\n }\n ignoreMutation(mutation) {\n return this.spec.ignoreMutation ? this.spec.ignoreMutation(mutation) : super.ignoreMutation(mutation);\n }\n}\n// Sync the content of the given DOM node with the nodes associated\n// with the given array of view descs, recursing into mark descs\n// because this should sync the subtree for a whole node at a time.\nfunction renderDescs(parentDOM, descs, view) {\n let dom = parentDOM.firstChild, written = false;\n for (let i = 0; i < descs.length; i++) {\n let desc = descs[i], childDOM = desc.dom;\n if (childDOM.parentNode == parentDOM) {\n while (childDOM != dom) {\n dom = rm(dom);\n written = true;\n }\n dom = dom.nextSibling;\n }\n else {\n written = true;\n parentDOM.insertBefore(childDOM, dom);\n }\n if (desc instanceof MarkViewDesc) {\n let pos = dom ? dom.previousSibling : parentDOM.lastChild;\n renderDescs(desc.contentDOM, desc.children, view);\n dom = pos ? pos.nextSibling : parentDOM.firstChild;\n }\n }\n while (dom) {\n dom = rm(dom);\n written = true;\n }\n if (written && view.trackWrites == parentDOM)\n view.trackWrites = null;\n}\nconst OuterDecoLevel = function (nodeName) {\n if (nodeName)\n this.nodeName = nodeName;\n};\nOuterDecoLevel.prototype = Object.create(null);\nconst noDeco = [new OuterDecoLevel];\nfunction computeOuterDeco(outerDeco, node, needsWrap) {\n if (outerDeco.length == 0)\n return noDeco;\n let top = needsWrap ? noDeco[0] : new OuterDecoLevel, result = [top];\n for (let i = 0; i < outerDeco.length; i++) {\n let attrs = outerDeco[i].type.attrs;\n if (!attrs)\n continue;\n if (attrs.nodeName)\n result.push(top = new OuterDecoLevel(attrs.nodeName));\n for (let name in attrs) {\n let val = attrs[name];\n if (val == null)\n continue;\n if (needsWrap && result.length == 1)\n result.push(top = new OuterDecoLevel(node.isInline ? \"span\" : \"div\"));\n if (name == \"class\")\n top.class = (top.class ? top.class + \" \" : \"\") + val;\n else if (name == \"style\")\n top.style = (top.style ? top.style + \";\" : \"\") + val;\n else if (name != \"nodeName\")\n top[name] = val;\n }\n }\n return result;\n}\nfunction patchOuterDeco(outerDOM, nodeDOM, prevComputed, curComputed) {\n // Shortcut for trivial case\n if (prevComputed == noDeco && curComputed == noDeco)\n return nodeDOM;\n let curDOM = nodeDOM;\n for (let i = 0; i < curComputed.length; i++) {\n let deco = curComputed[i], prev = prevComputed[i];\n if (i) {\n let parent;\n if (prev && prev.nodeName == deco.nodeName && curDOM != outerDOM &&\n (parent = curDOM.parentNode) && parent.nodeName.toLowerCase() == deco.nodeName) {\n curDOM = parent;\n }\n else {\n parent = document.createElement(deco.nodeName);\n parent.pmIsDeco = true;\n parent.appendChild(curDOM);\n prev = noDeco[0];\n curDOM = parent;\n }\n }\n patchAttributes(curDOM, prev || noDeco[0], deco);\n }\n return curDOM;\n}\nfunction patchAttributes(dom, prev, cur) {\n for (let name in prev)\n if (name != \"class\" && name != \"style\" && name != \"nodeName\" && !(name in cur))\n dom.removeAttribute(name);\n for (let name in cur)\n if (name != \"class\" && name != \"style\" && name != \"nodeName\" && cur[name] != prev[name])\n dom.setAttribute(name, cur[name]);\n if (prev.class != cur.class) {\n let prevList = prev.class ? prev.class.split(\" \").filter(Boolean) : [];\n let curList = cur.class ? cur.class.split(\" \").filter(Boolean) : [];\n for (let i = 0; i < prevList.length; i++)\n if (curList.indexOf(prevList[i]) == -1)\n dom.classList.remove(prevList[i]);\n for (let i = 0; i < curList.length; i++)\n if (prevList.indexOf(curList[i]) == -1)\n dom.classList.add(curList[i]);\n if (dom.classList.length == 0)\n dom.removeAttribute(\"class\");\n }\n if (prev.style != cur.style) {\n if (prev.style) {\n let prop = /\\s*([\\w\\-\\xa1-\\uffff]+)\\s*:(?:\"(?:\\\\.|[^\"])*\"|'(?:\\\\.|[^'])*'|\\(.*?\\)|[^;])*/g, m;\n while (m = prop.exec(prev.style))\n dom.style.removeProperty(m[1]);\n }\n if (cur.style)\n dom.style.cssText += cur.style;\n }\n}\nfunction applyOuterDeco(dom, deco, node) {\n return patchOuterDeco(dom, dom, noDeco, computeOuterDeco(deco, node, dom.nodeType != 1));\n}\nfunction sameOuterDeco(a, b) {\n if (a.length != b.length)\n return false;\n for (let i = 0; i < a.length; i++)\n if (!a[i].type.eq(b[i].type))\n return false;\n return true;\n}\n// Remove a DOM node and return its next sibling.\nfunction rm(dom) {\n let next = dom.nextSibling;\n dom.parentNode.removeChild(dom);\n return next;\n}\n// Helper class for incrementally updating a tree of mark descs and\n// the widget and node descs inside of them.\nclass ViewTreeUpdater {\n constructor(top, lock, view) {\n this.lock = lock;\n this.view = view;\n // Index into `this.top`'s child array, represents the current\n // update position.\n this.index = 0;\n // When entering a mark, the current top and index are pushed\n // onto this.\n this.stack = [];\n // Tracks whether anything was changed\n this.changed = false;\n this.top = top;\n this.preMatch = preMatch(top.node.content, top);\n }\n // Destroy and remove the children between the given indices in\n // `this.top`.\n destroyBetween(start, end) {\n if (start == end)\n return;\n for (let i = start; i < end; i++)\n this.top.children[i].destroy();\n this.top.children.splice(start, end - start);\n this.changed = true;\n }\n // Destroy all remaining children in `this.top`.\n destroyRest() {\n this.destroyBetween(this.index, this.top.children.length);\n }\n // Sync the current stack of mark descs with the given array of\n // marks, reusing existing mark descs when possible.\n syncToMarks(marks, inline, view) {\n let keep = 0, depth = this.stack.length >> 1;\n let maxKeep = Math.min(depth, marks.length);\n while (keep < maxKeep &&\n (keep == depth - 1 ? this.top : this.stack[(keep + 1) << 1])\n .matchesMark(marks[keep]) && marks[keep].type.spec.spanning !== false)\n keep++;\n while (keep < depth) {\n this.destroyRest();\n this.top.dirty = NOT_DIRTY;\n this.index = this.stack.pop();\n this.top = this.stack.pop();\n depth--;\n }\n while (depth < marks.length) {\n this.stack.push(this.top, this.index + 1);\n let found = -1;\n for (let i = this.index; i < Math.min(this.index + 3, this.top.children.length); i++) {\n let next = this.top.children[i];\n if (next.matchesMark(marks[depth]) && !this.isLocked(next.dom)) {\n found = i;\n break;\n }\n }\n if (found > -1) {\n if (found > this.index) {\n this.changed = true;\n this.destroyBetween(this.index, found);\n }\n this.top = this.top.children[this.index];\n }\n else {\n let markDesc = MarkViewDesc.create(this.top, marks[depth], inline, view);\n this.top.children.splice(this.index, 0, markDesc);\n this.top = markDesc;\n this.changed = true;\n }\n this.index = 0;\n depth++;\n }\n }\n // Try to find a node desc matching the given data. Skip over it and\n // return true when successful.\n findNodeMatch(node, outerDeco, innerDeco, index) {\n let found = -1, targetDesc;\n if (index >= this.preMatch.index &&\n (targetDesc = this.preMatch.matches[index - this.preMatch.index]).parent == this.top &&\n targetDesc.matchesNode(node, outerDeco, innerDeco)) {\n found = this.top.children.indexOf(targetDesc, this.index);\n }\n else {\n for (let i = this.index, e = Math.min(this.top.children.length, i + 5); i < e; i++) {\n let child = this.top.children[i];\n if (child.matchesNode(node, outerDeco, innerDeco) && !this.preMatch.matched.has(child)) {\n found = i;\n break;\n }\n }\n }\n if (found < 0)\n return false;\n this.destroyBetween(this.index, found);\n this.index++;\n return true;\n }\n updateNodeAt(node, outerDeco, innerDeco, index, view) {\n let child = this.top.children[index];\n if (child.dirty == NODE_DIRTY && child.dom == child.contentDOM)\n child.dirty = CONTENT_DIRTY;\n if (!child.update(node, outerDeco, innerDeco, view))\n return false;\n this.destroyBetween(this.index, index);\n this.index++;\n return true;\n }\n findIndexWithChild(domNode) {\n for (;;) {\n let parent = domNode.parentNode;\n if (!parent)\n return -1;\n if (parent == this.top.contentDOM) {\n let desc = domNode.pmViewDesc;\n if (desc)\n for (let i = this.index; i < this.top.children.length; i++) {\n if (this.top.children[i] == desc)\n return i;\n }\n return -1;\n }\n domNode = parent;\n }\n }\n // Try to update the next node, if any, to the given data. Checks\n // pre-matches to avoid overwriting nodes that could still be used.\n updateNextNode(node, outerDeco, innerDeco, view, index, pos) {\n for (let i = this.index; i < this.top.children.length; i++) {\n let next = this.top.children[i];\n if (next instanceof NodeViewDesc) {\n let preMatch = this.preMatch.matched.get(next);\n if (preMatch != null && preMatch != index)\n return false;\n let nextDOM = next.dom, updated;\n // Can't update if nextDOM is or contains this.lock, except if\n // it's a text node whose content already matches the new text\n // and whose decorations match the new ones.\n let locked = this.isLocked(nextDOM) &&\n !(node.isText && next.node && next.node.isText && next.nodeDOM.nodeValue == node.text &&\n next.dirty != NODE_DIRTY && sameOuterDeco(outerDeco, next.outerDeco));\n if (!locked && next.update(node, outerDeco, innerDeco, view)) {\n this.destroyBetween(this.index, i);\n if (next.dom != nextDOM)\n this.changed = true;\n this.index++;\n return true;\n }\n else if (!locked && (updated = this.recreateWrapper(next, node, outerDeco, innerDeco, view, pos))) {\n this.destroyBetween(this.index, i);\n this.top.children[this.index] = updated;\n if (updated.contentDOM) {\n updated.dirty = CONTENT_DIRTY;\n updated.updateChildren(view, pos + 1);\n updated.dirty = NOT_DIRTY;\n }\n this.changed = true;\n this.index++;\n return true;\n }\n break;\n }\n }\n return false;\n }\n // When a node with content is replaced by a different node with\n // identical content, move over its children.\n recreateWrapper(next, node, outerDeco, innerDeco, view, pos) {\n if (next.dirty || node.isAtom || !next.children.length ||\n !next.node.content.eq(node.content) ||\n !sameOuterDeco(outerDeco, next.outerDeco) || !innerDeco.eq(next.innerDeco))\n return null;\n let wrapper = NodeViewDesc.create(this.top, node, outerDeco, innerDeco, view, pos);\n if (wrapper.contentDOM) {\n wrapper.children = next.children;\n next.children = [];\n for (let ch of wrapper.children)\n ch.parent = wrapper;\n }\n next.destroy();\n return wrapper;\n }\n // Insert the node as a newly created node desc.\n addNode(node, outerDeco, innerDeco, view, pos) {\n let desc = NodeViewDesc.create(this.top, node, outerDeco, innerDeco, view, pos);\n if (desc.contentDOM)\n desc.updateChildren(view, pos + 1);\n this.top.children.splice(this.index++, 0, desc);\n this.changed = true;\n }\n placeWidget(widget, view, pos) {\n let next = this.index < this.top.children.length ? this.top.children[this.index] : null;\n if (next && next.matchesWidget(widget) &&\n (widget == next.widget || !next.widget.type.toDOM.parentNode)) {\n this.index++;\n }\n else {\n let desc = new WidgetViewDesc(this.top, widget, view, pos);\n this.top.children.splice(this.index++, 0, desc);\n this.changed = true;\n }\n }\n // Make sure a textblock looks and behaves correctly in\n // contentEditable.\n addTextblockHacks() {\n let lastChild = this.top.children[this.index - 1], parent = this.top;\n while (lastChild instanceof MarkViewDesc) {\n parent = lastChild;\n lastChild = parent.children[parent.children.length - 1];\n }\n if (!lastChild || // Empty textblock\n !(lastChild instanceof TextViewDesc) ||\n /\\n$/.test(lastChild.node.text) ||\n (this.view.requiresGeckoHackNode && /\\s$/.test(lastChild.node.text))) {\n // Avoid bugs in Safari's cursor drawing (#1165) and Chrome's mouse selection (#1152)\n if ((safari || chrome) && lastChild && lastChild.dom.contentEditable == \"false\")\n this.addHackNode(\"IMG\", parent);\n this.addHackNode(\"BR\", this.top);\n }\n }\n addHackNode(nodeName, parent) {\n if (parent == this.top && this.index < parent.children.length && parent.children[this.index].matchesHack(nodeName)) {\n this.index++;\n }\n else {\n let dom = document.createElement(nodeName);\n if (nodeName == \"IMG\") {\n dom.className = \"ProseMirror-separator\";\n dom.alt = \"\";\n }\n if (nodeName == \"BR\")\n dom.className = \"ProseMirror-trailingBreak\";\n let hack = new TrailingHackViewDesc(this.top, [], dom, null);\n if (parent != this.top)\n parent.children.push(hack);\n else\n parent.children.splice(this.index++, 0, hack);\n this.changed = true;\n }\n }\n isLocked(node) {\n return this.lock && (node == this.lock || node.nodeType == 1 && node.contains(this.lock.parentNode));\n }\n}\n// Iterate from the end of the fragment and array of descs to find\n// directly matching ones, in order to avoid overeagerly reusing those\n// for other nodes. Returns the fragment index of the first node that\n// is part of the sequence of matched nodes at the end of the\n// fragment.\nfunction preMatch(frag, parentDesc) {\n let curDesc = parentDesc, descI = curDesc.children.length;\n let fI = frag.childCount, matched = new Map, matches = [];\n outer: while (fI > 0) {\n let desc;\n for (;;) {\n if (descI) {\n let next = curDesc.children[descI - 1];\n if (next instanceof MarkViewDesc) {\n curDesc = next;\n descI = next.children.length;\n }\n else {\n desc = next;\n descI--;\n break;\n }\n }\n else if (curDesc == parentDesc) {\n break outer;\n }\n else {\n // FIXME\n descI = curDesc.parent.children.indexOf(curDesc);\n curDesc = curDesc.parent;\n }\n }\n let node = desc.node;\n if (!node)\n continue;\n if (node != frag.child(fI - 1))\n break;\n --fI;\n matched.set(desc, fI);\n matches.push(desc);\n }\n return { index: fI, matched, matches: matches.reverse() };\n}\nfunction compareSide(a, b) {\n return a.type.side - b.type.side;\n}\n// This function abstracts iterating over the nodes and decorations in\n// a fragment. Calls `onNode` for each node, with its local and child\n// decorations. Splits text nodes when there is a decoration starting\n// or ending inside of them. Calls `onWidget` for each widget.\nfunction iterDeco(parent, deco, onWidget, onNode) {\n let locals = deco.locals(parent), offset = 0;\n // Simple, cheap variant for when there are no local decorations\n if (locals.length == 0) {\n for (let i = 0; i < parent.childCount; i++) {\n let child = parent.child(i);\n onNode(child, locals, deco.forChild(offset, child), i);\n offset += child.nodeSize;\n }\n return;\n }\n let decoIndex = 0, active = [], restNode = null;\n for (let parentIndex = 0;;) {\n let widget, widgets;\n while (decoIndex < locals.length && locals[decoIndex].to == offset) {\n let next = locals[decoIndex++];\n if (next.widget) {\n if (!widget)\n widget = next;\n else\n (widgets || (widgets = [widget])).push(next);\n }\n }\n if (widget) {\n if (widgets) {\n widgets.sort(compareSide);\n for (let i = 0; i < widgets.length; i++)\n onWidget(widgets[i], parentIndex, !!restNode);\n }\n else {\n onWidget(widget, parentIndex, !!restNode);\n }\n }\n let child, index;\n if (restNode) {\n index = -1;\n child = restNode;\n restNode = null;\n }\n else if (parentIndex < parent.childCount) {\n index = parentIndex;\n child = parent.child(parentIndex++);\n }\n else {\n break;\n }\n for (let i = 0; i < active.length; i++)\n if (active[i].to <= offset)\n active.splice(i--, 1);\n while (decoIndex < locals.length && locals[decoIndex].from <= offset && locals[decoIndex].to > offset)\n active.push(locals[decoIndex++]);\n let end = offset + child.nodeSize;\n if (child.isText) {\n let cutAt = end;\n if (decoIndex < locals.length && locals[decoIndex].from < cutAt)\n cutAt = locals[decoIndex].from;\n for (let i = 0; i < active.length; i++)\n if (active[i].to < cutAt)\n cutAt = active[i].to;\n if (cutAt < end) {\n restNode = child.cut(cutAt - offset);\n child = child.cut(0, cutAt - offset);\n end = cutAt;\n index = -1;\n }\n }\n else {\n while (decoIndex < locals.length && locals[decoIndex].to < end)\n decoIndex++;\n }\n let outerDeco = child.isInline && !child.isLeaf ? active.filter(d => !d.inline) : active.slice();\n onNode(child, outerDeco, deco.forChild(offset, child), index);\n offset = end;\n }\n}\n// List markers in Mobile Safari will mysteriously disappear\n// sometimes. This works around that.\nfunction iosHacks(dom) {\n if (dom.nodeName == \"UL\" || dom.nodeName == \"OL\") {\n let oldCSS = dom.style.cssText;\n dom.style.cssText = oldCSS + \"; list-style: square !important\";\n window.getComputedStyle(dom).listStyle;\n dom.style.cssText = oldCSS;\n }\n}\n// Find a piece of text in an inline fragment, overlapping from-to\nfunction findTextInFragment(frag, text, from, to) {\n for (let i = 0, pos = 0; i < frag.childCount && pos <= to;) {\n let child = frag.child(i++), childStart = pos;\n pos += child.nodeSize;\n if (!child.isText)\n continue;\n let str = child.text;\n while (i < frag.childCount) {\n let next = frag.child(i++);\n pos += next.nodeSize;\n if (!next.isText)\n break;\n str += next.text;\n }\n if (pos >= from) {\n if (pos >= to && str.slice(to - text.length - childStart, to - childStart) == text)\n return to - text.length;\n let found = childStart < to ? str.lastIndexOf(text, to - childStart - 1) : -1;\n if (found >= 0 && found + text.length + childStart >= from)\n return childStart + found;\n if (from == to && str.length >= (to + text.length) - childStart &&\n str.slice(to - childStart, to - childStart + text.length) == text)\n return to;\n }\n }\n return -1;\n}\n// Replace range from-to in an array of view descs with replacement\n// (may be null to just delete). This goes very much against the grain\n// of the rest of this code, which tends to create nodes with the\n// right shape in one go, rather than messing with them after\n// creation, but is necessary in the composition hack.\nfunction replaceNodes(nodes, from, to, view, replacement) {\n let result = [];\n for (let i = 0, off = 0; i < nodes.length; i++) {\n let child = nodes[i], start = off, end = off += child.size;\n if (start >= to || end <= from) {\n result.push(child);\n }\n else {\n if (start < from)\n result.push(child.slice(0, from - start, view));\n if (replacement) {\n result.push(replacement);\n replacement = undefined;\n }\n if (end > to)\n result.push(child.slice(to - start, child.size, view));\n }\n }\n return result;\n}\n\nfunction selectionFromDOM(view, origin = null) {\n let domSel = view.domSelectionRange(), doc = view.state.doc;\n if (!domSel.focusNode)\n return null;\n let nearestDesc = view.docView.nearestDesc(domSel.focusNode), inWidget = nearestDesc && nearestDesc.size == 0;\n let head = view.docView.posFromDOM(domSel.focusNode, domSel.focusOffset, 1);\n if (head < 0)\n return null;\n let $head = doc.resolve(head), anchor, selection;\n if (selectionCollapsed(domSel)) {\n anchor = head;\n while (nearestDesc && !nearestDesc.node)\n nearestDesc = nearestDesc.parent;\n let nearestDescNode = nearestDesc.node;\n if (nearestDesc && nearestDescNode.isAtom && NodeSelection.isSelectable(nearestDescNode) && nearestDesc.parent\n && !(nearestDescNode.isInline && isOnEdge(domSel.focusNode, domSel.focusOffset, nearestDesc.dom))) {\n let pos = nearestDesc.posBefore;\n selection = new NodeSelection(head == pos ? $head : doc.resolve(pos));\n }\n }\n else {\n if (domSel instanceof view.dom.ownerDocument.defaultView.Selection && domSel.rangeCount > 1) {\n let min = head, max = head;\n for (let i = 0; i < domSel.rangeCount; i++) {\n let range = domSel.getRangeAt(i);\n min = Math.min(min, view.docView.posFromDOM(range.startContainer, range.startOffset, 1));\n max = Math.max(max, view.docView.posFromDOM(range.endContainer, range.endOffset, -1));\n }\n if (min < 0)\n return null;\n [anchor, head] = max == view.state.selection.anchor ? [max, min] : [min, max];\n $head = doc.resolve(head);\n }\n else {\n anchor = view.docView.posFromDOM(domSel.anchorNode, domSel.anchorOffset, 1);\n }\n if (anchor < 0)\n return null;\n }\n let $anchor = doc.resolve(anchor);\n if (!selection) {\n let bias = origin == \"pointer\" || (view.state.selection.head < $head.pos && !inWidget) ? 1 : -1;\n selection = selectionBetween(view, $anchor, $head, bias);\n }\n return selection;\n}\nfunction editorOwnsSelection(view) {\n return view.editable ? view.hasFocus() :\n hasSelection(view) && document.activeElement && document.activeElement.contains(view.dom);\n}\nfunction selectionToDOM(view, force = false) {\n let sel = view.state.selection;\n syncNodeSelection(view, sel);\n if (!editorOwnsSelection(view))\n return;\n // The delayed drag selection causes issues with Cell Selections\n // in Safari. And the drag selection delay is to workarond issues\n // which only present in Chrome.\n if (!force && view.input.mouseDown && view.input.mouseDown.allowDefault && chrome) {\n let domSel = view.domSelectionRange(), curSel = view.domObserver.currentSelection;\n if (domSel.anchorNode && curSel.anchorNode &&\n isEquivalentPosition(domSel.anchorNode, domSel.anchorOffset, curSel.anchorNode, curSel.anchorOffset)) {\n view.input.mouseDown.delayedSelectionSync = true;\n view.domObserver.setCurSelection();\n return;\n }\n }\n view.domObserver.disconnectSelection();\n if (view.cursorWrapper) {\n selectCursorWrapper(view);\n }\n else {\n let { anchor, head } = sel, resetEditableFrom, resetEditableTo;\n if (brokenSelectBetweenUneditable && !(sel instanceof TextSelection)) {\n if (!sel.$from.parent.inlineContent)\n resetEditableFrom = temporarilyEditableNear(view, sel.from);\n if (!sel.empty && !sel.$from.parent.inlineContent)\n resetEditableTo = temporarilyEditableNear(view, sel.to);\n }\n view.docView.setSelection(anchor, head, view, force);\n if (brokenSelectBetweenUneditable) {\n if (resetEditableFrom)\n resetEditable(resetEditableFrom);\n if (resetEditableTo)\n resetEditable(resetEditableTo);\n }\n if (sel.visible) {\n view.dom.classList.remove(\"ProseMirror-hideselection\");\n }\n else {\n view.dom.classList.add(\"ProseMirror-hideselection\");\n if (\"onselectionchange\" in document)\n removeClassOnSelectionChange(view);\n }\n }\n view.domObserver.setCurSelection();\n view.domObserver.connectSelection();\n}\n// Kludge to work around Webkit not allowing a selection to start/end\n// between non-editable block nodes. We briefly make something\n// editable, set the selection, then set it uneditable again.\nconst brokenSelectBetweenUneditable = safari || chrome && chrome_version < 63;\nfunction temporarilyEditableNear(view, pos) {\n let { node, offset } = view.docView.domFromPos(pos, 0);\n let after = offset < node.childNodes.length ? node.childNodes[offset] : null;\n let before = offset ? node.childNodes[offset - 1] : null;\n if (safari && after && after.contentEditable == \"false\")\n return setEditable(after);\n if ((!after || after.contentEditable == \"false\") &&\n (!before || before.contentEditable == \"false\")) {\n if (after)\n return setEditable(after);\n else if (before)\n return setEditable(before);\n }\n}\nfunction setEditable(element) {\n element.contentEditable = \"true\";\n if (safari && element.draggable) {\n element.draggable = false;\n element.wasDraggable = true;\n }\n return element;\n}\nfunction resetEditable(element) {\n element.contentEditable = \"false\";\n if (element.wasDraggable) {\n element.draggable = true;\n element.wasDraggable = null;\n }\n}\nfunction removeClassOnSelectionChange(view) {\n let doc = view.dom.ownerDocument;\n doc.removeEventListener(\"selectionchange\", view.input.hideSelectionGuard);\n let domSel = view.domSelectionRange();\n let node = domSel.anchorNode, offset = domSel.anchorOffset;\n doc.addEventListener(\"selectionchange\", view.input.hideSelectionGuard = () => {\n if (domSel.anchorNode != node || domSel.anchorOffset != offset) {\n doc.removeEventListener(\"selectionchange\", view.input.hideSelectionGuard);\n setTimeout(() => {\n if (!editorOwnsSelection(view) || view.state.selection.visible)\n view.dom.classList.remove(\"ProseMirror-hideselection\");\n }, 20);\n }\n });\n}\nfunction selectCursorWrapper(view) {\n let domSel = view.domSelection(), range = document.createRange();\n if (!domSel)\n return;\n let node = view.cursorWrapper.dom, img = node.nodeName == \"IMG\";\n if (img)\n range.setStart(node.parentNode, domIndex(node) + 1);\n else\n range.setStart(node, 0);\n range.collapse(true);\n domSel.removeAllRanges();\n domSel.addRange(range);\n // Kludge to kill 'control selection' in IE11 when selecting an\n // invisible cursor wrapper, since that would result in those weird\n // resize handles and a selection that considers the absolutely\n // positioned wrapper, rather than the root editable node, the\n // focused element.\n if (!img && !view.state.selection.visible && ie && ie_version <= 11) {\n node.disabled = true;\n node.disabled = false;\n }\n}\nfunction syncNodeSelection(view, sel) {\n if (sel instanceof NodeSelection) {\n let desc = view.docView.descAt(sel.from);\n if (desc != view.lastSelectedViewDesc) {\n clearNodeSelection(view);\n if (desc)\n desc.selectNode();\n view.lastSelectedViewDesc = desc;\n }\n }\n else {\n clearNodeSelection(view);\n }\n}\n// Clear all DOM statefulness of the last node selection.\nfunction clearNodeSelection(view) {\n if (view.lastSelectedViewDesc) {\n if (view.lastSelectedViewDesc.parent)\n view.lastSelectedViewDesc.deselectNode();\n view.lastSelectedViewDesc = undefined;\n }\n}\nfunction selectionBetween(view, $anchor, $head, bias) {\n return view.someProp(\"createSelectionBetween\", f => f(view, $anchor, $head))\n || TextSelection.between($anchor, $head, bias);\n}\nfunction hasFocusAndSelection(view) {\n if (view.editable && !view.hasFocus())\n return false;\n return hasSelection(view);\n}\nfunction hasSelection(view) {\n let sel = view.domSelectionRange();\n if (!sel.anchorNode)\n return false;\n try {\n // Firefox will raise 'permission denied' errors when accessing\n // properties of `sel.anchorNode` when it's in a generated CSS\n // element.\n return view.dom.contains(sel.anchorNode.nodeType == 3 ? sel.anchorNode.parentNode : sel.anchorNode) &&\n (view.editable || view.dom.contains(sel.focusNode.nodeType == 3 ? sel.focusNode.parentNode : sel.focusNode));\n }\n catch (_) {\n return false;\n }\n}\nfunction anchorInRightPlace(view) {\n let anchorDOM = view.docView.domFromPos(view.state.selection.anchor, 0);\n let domSel = view.domSelectionRange();\n return isEquivalentPosition(anchorDOM.node, anchorDOM.offset, domSel.anchorNode, domSel.anchorOffset);\n}\n\nfunction moveSelectionBlock(state, dir) {\n let { $anchor, $head } = state.selection;\n let $side = dir > 0 ? $anchor.max($head) : $anchor.min($head);\n let $start = !$side.parent.inlineContent ? $side : $side.depth ? state.doc.resolve(dir > 0 ? $side.after() : $side.before()) : null;\n return $start && Selection.findFrom($start, dir);\n}\nfunction apply(view, sel) {\n view.dispatch(view.state.tr.setSelection(sel).scrollIntoView());\n return true;\n}\nfunction selectHorizontally(view, dir, mods) {\n let sel = view.state.selection;\n if (sel instanceof TextSelection) {\n if (mods.indexOf(\"s\") > -1) {\n let { $head } = sel, node = $head.textOffset ? null : dir < 0 ? $head.nodeBefore : $head.nodeAfter;\n if (!node || node.isText || !node.isLeaf)\n return false;\n let $newHead = view.state.doc.resolve($head.pos + node.nodeSize * (dir < 0 ? -1 : 1));\n return apply(view, new TextSelection(sel.$anchor, $newHead));\n }\n else if (!sel.empty) {\n return false;\n }\n else if (view.endOfTextblock(dir > 0 ? \"forward\" : \"backward\")) {\n let next = moveSelectionBlock(view.state, dir);\n if (next && (next instanceof NodeSelection))\n return apply(view, next);\n return false;\n }\n else if (!(mac && mods.indexOf(\"m\") > -1)) {\n let $head = sel.$head, node = $head.textOffset ? null : dir < 0 ? $head.nodeBefore : $head.nodeAfter, desc;\n if (!node || node.isText)\n return false;\n let nodePos = dir < 0 ? $head.pos - node.nodeSize : $head.pos;\n if (!(node.isAtom || (desc = view.docView.descAt(nodePos)) && !desc.contentDOM))\n return false;\n if (NodeSelection.isSelectable(node)) {\n return apply(view, new NodeSelection(dir < 0 ? view.state.doc.resolve($head.pos - node.nodeSize) : $head));\n }\n else if (webkit) {\n // Chrome and Safari will introduce extra pointless cursor\n // positions around inline uneditable nodes, so we have to\n // take over and move the cursor past them (#937)\n return apply(view, new TextSelection(view.state.doc.resolve(dir < 0 ? nodePos : nodePos + node.nodeSize)));\n }\n else {\n return false;\n }\n }\n }\n else if (sel instanceof NodeSelection && sel.node.isInline) {\n return apply(view, new TextSelection(dir > 0 ? sel.$to : sel.$from));\n }\n else {\n let next = moveSelectionBlock(view.state, dir);\n if (next)\n return apply(view, next);\n return false;\n }\n}\nfunction nodeLen(node) {\n return node.nodeType == 3 ? node.nodeValue.length : node.childNodes.length;\n}\nfunction isIgnorable(dom, dir) {\n let desc = dom.pmViewDesc;\n return desc && desc.size == 0 && (dir < 0 || dom.nextSibling || dom.nodeName != \"BR\");\n}\nfunction skipIgnoredNodes(view, dir) {\n return dir < 0 ? skipIgnoredNodesBefore(view) : skipIgnoredNodesAfter(view);\n}\n// Make sure the cursor isn't directly after one or more ignored\n// nodes, which will confuse the browser's cursor motion logic.\nfunction skipIgnoredNodesBefore(view) {\n let sel = view.domSelectionRange();\n let node = sel.focusNode, offset = sel.focusOffset;\n if (!node)\n return;\n let moveNode, moveOffset, force = false;\n // Gecko will do odd things when the selection is directly in front\n // of a non-editable node, so in that case, move it into the next\n // node if possible. Issue prosemirror/prosemirror#832.\n if (gecko && node.nodeType == 1 && offset < nodeLen(node) && isIgnorable(node.childNodes[offset], -1))\n force = true;\n for (;;) {\n if (offset > 0) {\n if (node.nodeType != 1) {\n break;\n }\n else {\n let before = node.childNodes[offset - 1];\n if (isIgnorable(before, -1)) {\n moveNode = node;\n moveOffset = --offset;\n }\n else if (before.nodeType == 3) {\n node = before;\n offset = node.nodeValue.length;\n }\n else\n break;\n }\n }\n else if (isBlockNode(node)) {\n break;\n }\n else {\n let prev = node.previousSibling;\n while (prev && isIgnorable(prev, -1)) {\n moveNode = node.parentNode;\n moveOffset = domIndex(prev);\n prev = prev.previousSibling;\n }\n if (!prev) {\n node = node.parentNode;\n if (node == view.dom)\n break;\n offset = 0;\n }\n else {\n node = prev;\n offset = nodeLen(node);\n }\n }\n }\n if (force)\n setSelFocus(view, node, offset);\n else if (moveNode)\n setSelFocus(view, moveNode, moveOffset);\n}\n// Make sure the cursor isn't directly before one or more ignored\n// nodes.\nfunction skipIgnoredNodesAfter(view) {\n let sel = view.domSelectionRange();\n let node = sel.focusNode, offset = sel.focusOffset;\n if (!node)\n return;\n let len = nodeLen(node);\n let moveNode, moveOffset;\n for (;;) {\n if (offset < len) {\n if (node.nodeType != 1)\n break;\n let after = node.childNodes[offset];\n if (isIgnorable(after, 1)) {\n moveNode = node;\n moveOffset = ++offset;\n }\n else\n break;\n }\n else if (isBlockNode(node)) {\n break;\n }\n else {\n let next = node.nextSibling;\n while (next && isIgnorable(next, 1)) {\n moveNode = next.parentNode;\n moveOffset = domIndex(next) + 1;\n next = next.nextSibling;\n }\n if (!next) {\n node = node.parentNode;\n if (node == view.dom)\n break;\n offset = len = 0;\n }\n else {\n node = next;\n offset = 0;\n len = nodeLen(node);\n }\n }\n }\n if (moveNode)\n setSelFocus(view, moveNode, moveOffset);\n}\nfunction isBlockNode(dom) {\n let desc = dom.pmViewDesc;\n return desc && desc.node && desc.node.isBlock;\n}\nfunction textNodeAfter(node, offset) {\n while (node && offset == node.childNodes.length && !hasBlockDesc(node)) {\n offset = domIndex(node) + 1;\n node = node.parentNode;\n }\n while (node && offset < node.childNodes.length) {\n let next = node.childNodes[offset];\n if (next.nodeType == 3)\n return next;\n if (next.nodeType == 1 && next.contentEditable == \"false\")\n break;\n node = next;\n offset = 0;\n }\n}\nfunction textNodeBefore(node, offset) {\n while (node && !offset && !hasBlockDesc(node)) {\n offset = domIndex(node);\n node = node.parentNode;\n }\n while (node && offset) {\n let next = node.childNodes[offset - 1];\n if (next.nodeType == 3)\n return next;\n if (next.nodeType == 1 && next.contentEditable == \"false\")\n break;\n node = next;\n offset = node.childNodes.length;\n }\n}\nfunction setSelFocus(view, node, offset) {\n if (node.nodeType != 3) {\n let before, after;\n if (after = textNodeAfter(node, offset)) {\n node = after;\n offset = 0;\n }\n else if (before = textNodeBefore(node, offset)) {\n node = before;\n offset = before.nodeValue.length;\n }\n }\n let sel = view.domSelection();\n if (!sel)\n return;\n if (selectionCollapsed(sel)) {\n let range = document.createRange();\n range.setEnd(node, offset);\n range.setStart(node, offset);\n sel.removeAllRanges();\n sel.addRange(range);\n }\n else if (sel.extend) {\n sel.extend(node, offset);\n }\n view.domObserver.setCurSelection();\n let { state } = view;\n // If no state update ends up happening, reset the selection.\n setTimeout(() => {\n if (view.state == state)\n selectionToDOM(view);\n }, 50);\n}\nfunction findDirection(view, pos) {\n let $pos = view.state.doc.resolve(pos);\n if (!(chrome || windows) && $pos.parent.inlineContent) {\n let coords = view.coordsAtPos(pos);\n if (pos > $pos.start()) {\n let before = view.coordsAtPos(pos - 1);\n let mid = (before.top + before.bottom) / 2;\n if (mid > coords.top && mid < coords.bottom && Math.abs(before.left - coords.left) > 1)\n return before.left < coords.left ? \"ltr\" : \"rtl\";\n }\n if (pos < $pos.end()) {\n let after = view.coordsAtPos(pos + 1);\n let mid = (after.top + after.bottom) / 2;\n if (mid > coords.top && mid < coords.bottom && Math.abs(after.left - coords.left) > 1)\n return after.left > coords.left ? \"ltr\" : \"rtl\";\n }\n }\n let computed = getComputedStyle(view.dom).direction;\n return computed == \"rtl\" ? \"rtl\" : \"ltr\";\n}\n// Check whether vertical selection motion would involve node\n// selections. If so, apply it (if not, the result is left to the\n// browser)\nfunction selectVertically(view, dir, mods) {\n let sel = view.state.selection;\n if (sel instanceof TextSelection && !sel.empty || mods.indexOf(\"s\") > -1)\n return false;\n if (mac && mods.indexOf(\"m\") > -1)\n return false;\n let { $from, $to } = sel;\n if (!$from.parent.inlineContent || view.endOfTextblock(dir < 0 ? \"up\" : \"down\")) {\n let next = moveSelectionBlock(view.state, dir);\n if (next && (next instanceof NodeSelection))\n return apply(view, next);\n }\n if (!$from.parent.inlineContent) {\n let side = dir < 0 ? $from : $to;\n let beyond = sel instanceof AllSelection ? Selection.near(side, dir) : Selection.findFrom(side, dir);\n return beyond ? apply(view, beyond) : false;\n }\n return false;\n}\nfunction stopNativeHorizontalDelete(view, dir) {\n if (!(view.state.selection instanceof TextSelection))\n return true;\n let { $head, $anchor, empty } = view.state.selection;\n if (!$head.sameParent($anchor))\n return true;\n if (!empty)\n return false;\n if (view.endOfTextblock(dir > 0 ? \"forward\" : \"backward\"))\n return true;\n let nextNode = !$head.textOffset && (dir < 0 ? $head.nodeBefore : $head.nodeAfter);\n if (nextNode && !nextNode.isText) {\n let tr = view.state.tr;\n if (dir < 0)\n tr.delete($head.pos - nextNode.nodeSize, $head.pos);\n else\n tr.delete($head.pos, $head.pos + nextNode.nodeSize);\n view.dispatch(tr);\n return true;\n }\n return false;\n}\nfunction switchEditable(view, node, state) {\n view.domObserver.stop();\n node.contentEditable = state;\n view.domObserver.start();\n}\n// Issue #867 / #1090 / https://bugs.chromium.org/p/chromium/issues/detail?id=903821\n// In which Safari (and at some point in the past, Chrome) does really\n// wrong things when the down arrow is pressed when the cursor is\n// directly at the start of a textblock and has an uneditable node\n// after it\nfunction safariDownArrowBug(view) {\n if (!safari || view.state.selection.$head.parentOffset > 0)\n return false;\n let { focusNode, focusOffset } = view.domSelectionRange();\n if (focusNode && focusNode.nodeType == 1 && focusOffset == 0 &&\n focusNode.firstChild && focusNode.firstChild.contentEditable == \"false\") {\n let child = focusNode.firstChild;\n switchEditable(view, child, \"true\");\n setTimeout(() => switchEditable(view, child, \"false\"), 20);\n }\n return false;\n}\n// A backdrop key mapping used to make sure we always suppress keys\n// that have a dangerous default effect, even if the commands they are\n// bound to return false, and to make sure that cursor-motion keys\n// find a cursor (as opposed to a node selection) when pressed. For\n// cursor-motion keys, the code in the handlers also takes care of\n// block selections.\nfunction getMods(event) {\n let result = \"\";\n if (event.ctrlKey)\n result += \"c\";\n if (event.metaKey)\n result += \"m\";\n if (event.altKey)\n result += \"a\";\n if (event.shiftKey)\n result += \"s\";\n return result;\n}\nfunction captureKeyDown(view, event) {\n let code = event.keyCode, mods = getMods(event);\n if (code == 8 || (mac && code == 72 && mods == \"c\")) { // Backspace, Ctrl-h on Mac\n return stopNativeHorizontalDelete(view, -1) || skipIgnoredNodes(view, -1);\n }\n else if ((code == 46 && !event.shiftKey) || (mac && code == 68 && mods == \"c\")) { // Delete, Ctrl-d on Mac\n return stopNativeHorizontalDelete(view, 1) || skipIgnoredNodes(view, 1);\n }\n else if (code == 13 || code == 27) { // Enter, Esc\n return true;\n }\n else if (code == 37 || (mac && code == 66 && mods == \"c\")) { // Left arrow, Ctrl-b on Mac\n let dir = code == 37 ? (findDirection(view, view.state.selection.from) == \"ltr\" ? -1 : 1) : -1;\n return selectHorizontally(view, dir, mods) || skipIgnoredNodes(view, dir);\n }\n else if (code == 39 || (mac && code == 70 && mods == \"c\")) { // Right arrow, Ctrl-f on Mac\n let dir = code == 39 ? (findDirection(view, view.state.selection.from) == \"ltr\" ? 1 : -1) : 1;\n return selectHorizontally(view, dir, mods) || skipIgnoredNodes(view, dir);\n }\n else if (code == 38 || (mac && code == 80 && mods == \"c\")) { // Up arrow, Ctrl-p on Mac\n return selectVertically(view, -1, mods) || skipIgnoredNodes(view, -1);\n }\n else if (code == 40 || (mac && code == 78 && mods == \"c\")) { // Down arrow, Ctrl-n on Mac\n return safariDownArrowBug(view) || selectVertically(view, 1, mods) || skipIgnoredNodes(view, 1);\n }\n else if (mods == (mac ? \"m\" : \"c\") &&\n (code == 66 || code == 73 || code == 89 || code == 90)) { // Mod-[biyz]\n return true;\n }\n return false;\n}\n\nfunction serializeForClipboard(view, slice) {\n view.someProp(\"transformCopied\", f => { slice = f(slice, view); });\n let context = [], { content, openStart, openEnd } = slice;\n while (openStart > 1 && openEnd > 1 && content.childCount == 1 && content.firstChild.childCount == 1) {\n openStart--;\n openEnd--;\n let node = content.firstChild;\n context.push(node.type.name, node.attrs != node.type.defaultAttrs ? node.attrs : null);\n content = node.content;\n }\n let serializer = view.someProp(\"clipboardSerializer\") || DOMSerializer.fromSchema(view.state.schema);\n let doc = detachedDoc(), wrap = doc.createElement(\"div\");\n wrap.appendChild(serializer.serializeFragment(content, { document: doc }));\n let firstChild = wrap.firstChild, needsWrap, wrappers = 0;\n while (firstChild && firstChild.nodeType == 1 && (needsWrap = wrapMap[firstChild.nodeName.toLowerCase()])) {\n for (let i = needsWrap.length - 1; i >= 0; i--) {\n let wrapper = doc.createElement(needsWrap[i]);\n while (wrap.firstChild)\n wrapper.appendChild(wrap.firstChild);\n wrap.appendChild(wrapper);\n wrappers++;\n }\n firstChild = wrap.firstChild;\n }\n if (firstChild && firstChild.nodeType == 1)\n firstChild.setAttribute(\"data-pm-slice\", `${openStart} ${openEnd}${wrappers ? ` -${wrappers}` : \"\"} ${JSON.stringify(context)}`);\n let text = view.someProp(\"clipboardTextSerializer\", f => f(slice, view)) ||\n slice.content.textBetween(0, slice.content.size, \"\\n\\n\");\n return { dom: wrap, text, slice };\n}\n// Read a slice of content from the clipboard (or drop data).\nfunction parseFromClipboard(view, text, html, plainText, $context) {\n let inCode = $context.parent.type.spec.code;\n let dom, slice;\n if (!html && !text)\n return null;\n let asText = text && (plainText || inCode || !html);\n if (asText) {\n view.someProp(\"transformPastedText\", f => { text = f(text, inCode || plainText, view); });\n if (inCode)\n return text ? new Slice(Fragment.from(view.state.schema.text(text.replace(/\\r\\n?/g, \"\\n\"))), 0, 0) : Slice.empty;\n let parsed = view.someProp(\"clipboardTextParser\", f => f(text, $context, plainText, view));\n if (parsed) {\n slice = parsed;\n }\n else {\n let marks = $context.marks();\n let { schema } = view.state, serializer = DOMSerializer.fromSchema(schema);\n dom = document.createElement(\"div\");\n text.split(/(?:\\r\\n?|\\n)+/).forEach(block => {\n let p = dom.appendChild(document.createElement(\"p\"));\n if (block)\n p.appendChild(serializer.serializeNode(schema.text(block, marks)));\n });\n }\n }\n else {\n view.someProp(\"transformPastedHTML\", f => { html = f(html, view); });\n dom = readHTML(html);\n if (webkit)\n restoreReplacedSpaces(dom);\n }\n let contextNode = dom && dom.querySelector(\"[data-pm-slice]\");\n let sliceData = contextNode && /^(\\d+) (\\d+)(?: -(\\d+))? (.*)/.exec(contextNode.getAttribute(\"data-pm-slice\") || \"\");\n if (sliceData && sliceData[3])\n for (let i = +sliceData[3]; i > 0; i--) {\n let child = dom.firstChild;\n while (child && child.nodeType != 1)\n child = child.nextSibling;\n if (!child)\n break;\n dom = child;\n }\n if (!slice) {\n let parser = view.someProp(\"clipboardParser\") || view.someProp(\"domParser\") || DOMParser.fromSchema(view.state.schema);\n slice = parser.parseSlice(dom, {\n preserveWhitespace: !!(asText || sliceData),\n context: $context,\n ruleFromNode(dom) {\n if (dom.nodeName == \"BR\" && !dom.nextSibling &&\n dom.parentNode && !inlineParents.test(dom.parentNode.nodeName))\n return { ignore: true };\n return null;\n }\n });\n }\n if (sliceData) {\n slice = addContext(closeSlice(slice, +sliceData[1], +sliceData[2]), sliceData[4]);\n }\n else { // HTML wasn't created by ProseMirror. Make sure top-level siblings are coherent\n slice = Slice.maxOpen(normalizeSiblings(slice.content, $context), true);\n if (slice.openStart || slice.openEnd) {\n let openStart = 0, openEnd = 0;\n for (let node = slice.content.firstChild; openStart < slice.openStart && !node.type.spec.isolating; openStart++, node = node.firstChild) { }\n for (let node = slice.content.lastChild; openEnd < slice.openEnd && !node.type.spec.isolating; openEnd++, node = node.lastChild) { }\n slice = closeSlice(slice, openStart, openEnd);\n }\n }\n view.someProp(\"transformPasted\", f => { slice = f(slice, view); });\n return slice;\n}\nconst inlineParents = /^(a|abbr|acronym|b|cite|code|del|em|i|ins|kbd|label|output|q|ruby|s|samp|span|strong|sub|sup|time|u|tt|var)$/i;\n// Takes a slice parsed with parseSlice, which means there hasn't been\n// any content-expression checking done on the top nodes, tries to\n// find a parent node in the current context that might fit the nodes,\n// and if successful, rebuilds the slice so that it fits into that parent.\n//\n// This addresses the problem that Transform.replace expects a\n// coherent slice, and will fail to place a set of siblings that don't\n// fit anywhere in the schema.\nfunction normalizeSiblings(fragment, $context) {\n if (fragment.childCount < 2)\n return fragment;\n for (let d = $context.depth; d >= 0; d--) {\n let parent = $context.node(d);\n let match = parent.contentMatchAt($context.index(d));\n let lastWrap, result = [];\n fragment.forEach(node => {\n if (!result)\n return;\n let wrap = match.findWrapping(node.type), inLast;\n if (!wrap)\n return result = null;\n if (inLast = result.length && lastWrap.length && addToSibling(wrap, lastWrap, node, result[result.length - 1], 0)) {\n result[result.length - 1] = inLast;\n }\n else {\n if (result.length)\n result[result.length - 1] = closeRight(result[result.length - 1], lastWrap.length);\n let wrapped = withWrappers(node, wrap);\n result.push(wrapped);\n match = match.matchType(wrapped.type);\n lastWrap = wrap;\n }\n });\n if (result)\n return Fragment.from(result);\n }\n return fragment;\n}\nfunction withWrappers(node, wrap, from = 0) {\n for (let i = wrap.length - 1; i >= from; i--)\n node = wrap[i].create(null, Fragment.from(node));\n return node;\n}\n// Used to group adjacent nodes wrapped in similar parents by\n// normalizeSiblings into the same parent node\nfunction addToSibling(wrap, lastWrap, node, sibling, depth) {\n if (depth < wrap.length && depth < lastWrap.length && wrap[depth] == lastWrap[depth]) {\n let inner = addToSibling(wrap, lastWrap, node, sibling.lastChild, depth + 1);\n if (inner)\n return sibling.copy(sibling.content.replaceChild(sibling.childCount - 1, inner));\n let match = sibling.contentMatchAt(sibling.childCount);\n if (match.matchType(depth == wrap.length - 1 ? node.type : wrap[depth + 1]))\n return sibling.copy(sibling.content.append(Fragment.from(withWrappers(node, wrap, depth + 1))));\n }\n}\nfunction closeRight(node, depth) {\n if (depth == 0)\n return node;\n let fragment = node.content.replaceChild(node.childCount - 1, closeRight(node.lastChild, depth - 1));\n let fill = node.contentMatchAt(node.childCount).fillBefore(Fragment.empty, true);\n return node.copy(fragment.append(fill));\n}\nfunction closeRange(fragment, side, from, to, depth, openEnd) {\n let node = side < 0 ? fragment.firstChild : fragment.lastChild, inner = node.content;\n if (fragment.childCount > 1)\n openEnd = 0;\n if (depth < to - 1)\n inner = closeRange(inner, side, from, to, depth + 1, openEnd);\n if (depth >= from)\n inner = side < 0 ? node.contentMatchAt(0).fillBefore(inner, openEnd <= depth).append(inner)\n : inner.append(node.contentMatchAt(node.childCount).fillBefore(Fragment.empty, true));\n return fragment.replaceChild(side < 0 ? 0 : fragment.childCount - 1, node.copy(inner));\n}\nfunction closeSlice(slice, openStart, openEnd) {\n if (openStart < slice.openStart)\n slice = new Slice(closeRange(slice.content, -1, openStart, slice.openStart, 0, slice.openEnd), openStart, slice.openEnd);\n if (openEnd < slice.openEnd)\n slice = new Slice(closeRange(slice.content, 1, openEnd, slice.openEnd, 0, 0), slice.openStart, openEnd);\n return slice;\n}\n// Trick from jQuery -- some elements must be wrapped in other\n// elements for innerHTML to work. I.e. if you do `div.innerHTML =\n// \"