| Server IP : 34.87.99.72 / Your IP : 216.73.217.31 Web Server : Apache/2.4.46 (Unix) OpenSSL/1.1.1n System : Linux zlock-bitnami-lamp-prod-v2-vm 4.19.0-16-cloud-amd64 #1 SMP Debian 4.19.181-1 (2021-03-19) x86_64 User : bitnami ( 1000) PHP Version : 7.4.18 Disable Function : NONE MySQL : OFF | cURL : ON | WGET : ON | Perl : ON | Python : ON | Sudo : ON | Pkexec : OFF Directory : /opt/bitnami/apache/htdocs/app/node_modules/prosemirror-view/dist/ |
Upload File : |
{"version":3,"file":"index.js","sources":["../src/browser.js","../src/dom.js","../src/domcoords.js","../src/viewdesc.js","../src/selection.js","../src/capturekeys.js","../src/domchange.js","../src/clipboard.js","../src/domobserver.js","../src/input.js","../src/decoration.js","../src/index.js"],"sourcesContent":["const result = {}\nexport default result\n\nif (typeof navigator != \"undefined\" && typeof document != \"undefined\") {\n const ie_edge = /Edge\\/(\\d+)/.exec(navigator.userAgent)\n const ie_upto10 = /MSIE \\d/.test(navigator.userAgent)\n const ie_11up = /Trident\\/(?:[7-9]|\\d{2,})\\..*rv:(\\d+)/.exec(navigator.userAgent)\n\n result.mac = /Mac/.test(navigator.platform)\n let ie = result.ie = !!(ie_upto10 || ie_11up || ie_edge)\n result.ie_version = ie_upto10 ? document.documentMode || 6 : ie_11up ? +ie_11up[1] : ie_edge ? +ie_edge[1] : null\n result.gecko = !ie && /gecko\\/(\\d+)/i.test(navigator.userAgent)\n result.gecko_version = result.gecko && +(/Firefox\\/(\\d+)/.exec(navigator.userAgent) || [0, 0])[1]\n let chrome = !ie && /Chrome\\/(\\d+)/.exec(navigator.userAgent)\n result.chrome = !!chrome\n result.chrome_version = chrome && +chrome[1]\n // Is true for both iOS and iPadOS for convenience\n result.safari = !ie && /Apple Computer/.test(navigator.vendor)\n result.ios = result.safari && (/Mobile\\/\\w+/.test(navigator.userAgent) || navigator.maxTouchPoints > 2)\n result.android = /Android \\d/.test(navigator.userAgent)\n result.webkit = \"webkitFontSmoothing\" in document.documentElement.style\n result.webkit_version = result.webkit && +(/\\bAppleWebKit\\/(\\d+)/.exec(navigator.userAgent) || [0, 0])[1]\n}\n","import browser from \"./browser\"\n\nexport const domIndex = function(node) {\n for (var index = 0;; index++) {\n node = node.previousSibling\n if (!node) return index\n }\n}\n\nexport const parentNode = function(node) {\n let parent = node.assignedSlot || node.parentNode\n return parent && parent.nodeType == 11 ? parent.host : parent\n}\n\nlet reusedRange = null\n\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.\nexport const 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}\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)\nexport const isEquivalentPosition = function(node, off, targetNode, targetOff) {\n return targetNode && (scanFor(node, off, targetNode, targetOff, -1) ||\n scanFor(node, off, targetNode, targetOff, 1))\n}\n\nconst atomElements = /^(img|br|input|textarea|hr)$/i\n\nfunction scanFor(node, off, targetNode, targetOff, dir) {\n for (;;) {\n if (node == targetNode && off == targetOff) return true\n if (off == (dir < 0 ? 0 : nodeSize(node))) {\n let parent = node.parentNode\n if (parent.nodeType != 1 || hasBlockDesc(node) || atomElements.test(node.nodeName) || node.contentEditable == \"false\")\n return false\n off = domIndex(node) + (dir < 0 ? 0 : 1)\n node = parent\n } else if (node.nodeType == 1) {\n node = node.childNodes[off + (dir < 0 ? -1 : 0)]\n if (node.contentEditable == \"false\") return false\n off = dir < 0 ? nodeSize(node) : 0\n } else {\n return false\n }\n }\n}\n\nexport function nodeSize(node) {\n return node.nodeType == 3 ? node.nodeValue.length : node.childNodes.length\n}\n\nexport function isOnEdge(node, offset, parent) {\n for (let atStart = offset == 0, atEnd = offset == nodeSize(node); atStart || atEnd;) {\n if (node == parent) return true\n let index = domIndex(node)\n node = node.parentNode\n if (!node) return false\n atStart = atStart && index == 0\n atEnd = atEnd && index == nodeSize(node)\n }\n}\n\nfunction hasBlockDesc(dom) {\n let desc\n for (let cur = dom; cur; cur = cur.parentNode) if (desc = cur.pmViewDesc) break\n return desc && desc.node && desc.node.isBlock && (desc.dom == dom || desc.contentDOM == dom)\n}\n\n// Work around Chrome issue https://bugs.chromium.org/p/chromium/issues/detail?id=447523\n// (isCollapsed inappropriately returns true in shadow dom)\nexport const selectionCollapsed = function(domSel) {\n let collapsed = domSel.isCollapsed\n if (collapsed && browser.chrome && domSel.rangeCount && !domSel.getRangeAt(0).collapsed)\n collapsed = false\n return collapsed\n}\n\nexport function 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}\n","import {nodeSize, textRange, parentNode} from \"./dom\"\nimport browser from \"./browser\"\n\nfunction windowRect(doc) {\n return {left: 0, right: doc.documentElement.clientWidth,\n top: 0, bottom: doc.documentElement.clientHeight}\n}\n\nfunction getSide(value, side) {\n return typeof value == \"number\" ? value : value[side]\n}\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}\n\nexport function 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) break\n if (parent.nodeType != 1) continue\n let atTop = parent == doc.body || parent.nodeType != 1\n let bounding = atTop ? windowRect(doc) : clientRect(parent)\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 - 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 } else {\n let startX = parent.scrollLeft, startY = parent.scrollTop\n if (moveY) parent.scrollTop += moveY\n if (moveX) parent.scrollLeft += moveX\n let dX = parent.scrollLeft - startX, dY = parent.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) break\n }\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.\nexport function 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;\n y < Math.min(innerHeight, rect.bottom); y += 5) {\n let dom = view.root.elementFromPoint(x, y)\n if (dom == view.dom || !view.dom.contains(dom)) 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, refTop, stack: scrollStack(view.dom)}\n}\n\nfunction scrollStack(dom) {\n let stack = [], doc = dom.ownerDocument\n for (; dom; dom = parentNode(dom)) {\n stack.push({dom, top: dom.scrollTop, left: dom.scrollLeft})\n if (dom == doc) break\n }\n return stack\n}\n\n// Reset the scroll position of the editor's parent nodes to that what\n// it was before, when storeScrollPos was called.\nexport function resetScrollPos({refDOM, refTop, stack}) {\n let newRefTop = refDOM ? refDOM.getBoundingClientRect().top : 0\n restoreScrollStack(stack, newRefTop == 0 ? 0 : newRefTop - refTop)\n}\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) dom.scrollTop = top + dTop\n if (dom.scrollLeft != left) dom.scrollLeft = left\n }\n}\n\nlet preventScrollSupported = null\n// Feature-detects support for .focus({preventScroll: true}), and uses\n// a fallback kludge when not supported.\nexport function focusPreventScroll(dom) {\n if (dom.setActive) return dom.setActive() // in IE\n if (preventScrollSupported) return dom.focus(preventScrollSupported)\n\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}\n\nfunction findOffsetInNode(node, coords) {\n let closest, dxClosest = 2e8, coordsClosest, offset = 0\n let rowBot = coords.top, rowTop = coords.top\n for (let child = node.firstChild, childIndex = 0; child; child = child.nextSibling, childIndex++) {\n let rects\n if (child.nodeType == 1) rects = child.getClientRects()\n else if (child.nodeType == 3) rects = textRange(child).getClientRects()\n else continue\n\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 ? {left: rect.right < coords.left ? rect.right : rect.left, top: coords.top} : coords\n if (child.nodeType == 1 && dx)\n offset = childIndex + (coords.left >= (rect.left + rect.right) / 2 ? 1 : 0)\n continue\n }\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 && closest.nodeType == 3) return findOffsetInText(closest, coordsClosest)\n if (!closest || (dxClosest && closest.nodeType == 1)) return {node, offset}\n return findOffsetInNode(closest, coordsClosest)\n}\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) 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}\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}\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}\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}\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 outside = -1\n for (let cur = node;;) {\n if (cur == view.dom) break\n let desc = view.docView.nearestDesc(cur, true)\n if (!desc) return null\n if (desc.node.isBlock && desc.parent) {\n let rect = desc.dom.getBoundingClientRect()\n if (rect.left > coords.left || rect.top > coords.top) outside = desc.posBefore\n else if (rect.right < coords.left || rect.bottom < coords.top) outside = desc.posAfter\n else break\n }\n cur = desc.dom.parentNode\n }\n return outside > -1 ? outside : view.docView.posFromDOM(node, offset)\n}\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)) return elementFromPoint(child, coords, rect)\n }\n }\n if ((i = (i + 1) % len) == startI) break\n }\n }\n return element\n}\n\n// Given an x,y position on the editor, get the position in the document.\nexport function posAtCoords(view, coords) {\n let root = view.root, node, offset\n if (root.caretPositionFromPoint) {\n try { // Firefox throws for this call in hard-to-predict circumstances (#994)\n let pos = root.caretPositionFromPoint(coords.left, coords.top)\n if (pos) ({offsetNode: node, offset} = pos)\n } catch (_) {}\n }\n if (!node && root.caretRangeFromPoint) {\n let range = root.caretRangeFromPoint(coords.left, coords.top)\n if (range) ({startContainer: node, startOffset: offset} = range)\n }\n\n let elt = root.elementFromPoint(coords.left, coords.top + 1), pos\n if (!elt || !view.dom.contains(elt.nodeType != 1 ? elt.parentNode : elt)) {\n let box = view.dom.getBoundingClientRect()\n if (!inRect(coords, box)) return null\n elt = elementFromPoint(view.dom, coords, box)\n if (!elt) return null\n }\n // Safari's caretRangeFromPoint returns nonsense when on a draggable element\n if (browser.safari) {\n for (let p = elt; node && p; p = parentNode(p))\n if (p.draggable) node = offset = null\n }\n elt = targetKludge(elt, coords)\n if (node) {\n if (browser.gecko && node.nodeType == 1) {\n // Firefox will sometimes return offsets into <input> 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 // 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) pos = posFromElement(view, elt, coords)\n\n let desc = view.docView.nearestDesc(elt, true)\n return {pos, inside: desc ? desc.posAtStart - desc.border : -1}\n}\n\nfunction singleRect(object, bias) {\n let rects = object.getClientRects()\n return !rects.length ? object.getBoundingClientRect() : rects[bias < 0 ? 0 : rects.length - 1]\n}\n\nconst BIDI = /[\\u0590-\\u05f4\\u0600-\\u06ff\\u0700-\\u08ac]/\n\n// : (EditorView, number, number) → {left: number, top: number, right: number, bottom: number}\n// Given a position in the document model, get a bounding box of the\n// character at that position, relative to the window.\nexport function coordsAtPos(view, pos, side) {\n let {node, offset} = view.docView.domFromPos(pos, side < 0 ? -1 : 1)\n\n let supportEmptyRange = browser.webkit || browser.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 (browser.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 } else {\n let from = offset, to = offset, takeSide = side < 0 ? 1 : -1\n if (side < 0 && !offset) { to++; takeSide = -1 }\n else if (side >= 0 && offset == node.nodeValue.length) { from--; takeSide = 1 }\n else if (side < 0) { from-- }\n else { to ++ }\n return flattenV(singleRect(textRange(node, from, to), takeSide), takeSide < 0)\n }\n }\n\n // Return a horizontal line in block context\n if (!view.state.doc.resolve(pos).parent.inlineContent) {\n if (offset && (side < 0 || offset == nodeSize(node))) {\n let before = node.childNodes[offset - 1]\n if (before.nodeType == 1) return flattenH(before.getBoundingClientRect(), false)\n }\n if (offset < nodeSize(node)) {\n let after = node.childNodes[offset]\n if (after.nodeType == 1) return flattenH(after.getBoundingClientRect(), true)\n }\n return flattenH(node.getBoundingClientRect(), side >= 0)\n }\n\n // Inline, not in text node (this is not Bidi-safe)\n if (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) return flattenV(singleRect(target, 1), false)\n }\n if (offset < nodeSize(node)) {\n let after = node.childNodes[offset]\n let target = after.nodeType == 3 ? textRange(after, 0, (supportEmptyRange ? 0 : 1))\n : after.nodeType == 1 ? after : null\n if (target) 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}\n\nfunction flattenV(rect, left) {\n if (rect.width == 0) return rect\n let x = left ? rect.left : rect.right\n return {top: rect.top, bottom: rect.bottom, left: x, right: x}\n}\n\nfunction flattenH(rect, top) {\n if (rect.height == 0) return rect\n let y = top ? rect.top : rect.bottom\n return {top: y, bottom: y, left: rect.left, right: rect.right}\n}\n\nfunction withFlushedState(view, state, f) {\n let viewState = view.state, active = view.root.activeElement\n if (viewState != state) view.updateState(state)\n if (active != view.dom) view.focus()\n try {\n return f()\n } finally {\n if (viewState != state) view.updateState(viewState)\n if (active != view.dom && active) active.focus()\n }\n}\n\n// : (EditorView, number, number)\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) break\n if (nearest.node.isBlock) { dom = nearest.dom; break }\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) boxes = child.getClientRects()\n else if (child.nodeType == 3) boxes = textRange(child, 0, child.nodeValue.length).getClientRects()\n else continue\n for (let i = 0; i < boxes.length; i++) {\n let box = boxes[i]\n if (box.bottom > box.top && (dir == \"up\" ? box.bottom < coords.top + 1 : box.top > coords.bottom - 1))\n return false\n }\n }\n return true\n })\n}\n\nconst maybeRTL = /[\\u0590-\\u08ac]/\n\nfunction endOfTextblockHorizontal(view, state, dir) {\n let {$head} = state.selection\n if (!$head.parent.isTextblock) return false\n let offset = $head.parentOffset, atStart = !offset, atEnd = offset == $head.parent.content.size\n let sel = getSelection()\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\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 oldRange = sel.getRangeAt(0), oldNode = sel.focusNode, oldOff = sel.focusOffset\n let oldBidiLevel = sel.caretBidiLevel // Only for Firefox\n sel.modify(\"move\", dir, \"character\")\n let parentDOM = $head.depth ? view.docView.domAfterPos($head.before()) : view.dom\n let result = !parentDOM.contains(sel.focusNode.nodeType == 1 ? sel.focusNode : sel.focusNode.parentNode) ||\n (oldNode == sel.focusNode && oldOff == sel.focusOffset)\n // Restore the previous selection\n sel.removeAllRanges()\n sel.addRange(oldRange)\n if (oldBidiLevel != null) sel.caretBidiLevel = oldBidiLevel\n return result\n })\n}\n\nlet cachedState = null, cachedDir = null, cachedResult = false\nexport function endOfTextblock(view, state, dir) {\n if (cachedState == state && cachedDir == dir) return cachedResult\n cachedState = state; cachedDir = dir\n return cachedResult = dir == \"up\" || dir == \"down\"\n ? endOfTextblockVertical(view, state, dir)\n : endOfTextblockHorizontal(view, state, dir)\n}\n","import {DOMSerializer, Fragment, Mark} from \"prosemirror-model\"\nimport {TextSelection} from \"prosemirror-state\"\n\nimport {domIndex, isEquivalentPosition, nodeSize} from \"./dom\"\nimport browser from \"./browser\"\n\n// NodeView:: interface\n//\n// By default, document nodes are rendered using the result of the\n// [`toDOM`](#model.NodeSpec.toDOM) method of their spec, and managed\n// entirely by the editor. For some use cases, such as embedded\n// node-specific editing interfaces, you want more control over\n// the behavior of a node's in-editor representation, and need to\n// [define](#view.EditorProps.nodeViews) a custom node view.\n//\n// Mark views only support `dom` and `contentDOM`, and don't support\n// any of the node view methods.\n//\n// Objects returned as node views must conform to this interface.\n//\n// dom:: ?dom.Node\n// The outer DOM node that represents the document node. When not\n// given, the default strategy is used to create a DOM node.\n//\n// contentDOM:: ?dom.Node\n// The DOM node that should hold the node's content. Only meaningful\n// if the node view also defines a `dom` property and if its node\n// type is not a leaf node type. When this is present, ProseMirror\n// will take care of rendering the node's children into it. When it\n// is not present, the node view itself is responsible for rendering\n// (or deciding not to render) its child nodes.\n//\n// update:: ?(node: Node, decorations: [Decoration], innerDecorations: DecorationSource) → bool\n// When given, this will be called when the view is updating itself.\n// It will be given a node (possibly of a different type), an array\n// of active decorations around the node (which are automatically\n// drawn, and the node view may ignore if it isn't interested in\n// them), and a [decoration source](#view.DecorationSource) that\n// represents any decorations that apply to the content of the node\n// (which again may be ignored). It should return true if it was\n// able to update to that node, and false otherwise. If the node\n// view has a `contentDOM` property (or no `dom` property), updating\n// its child nodes will be handled by ProseMirror.\n//\n// selectNode:: ?()\n// Can be used to override the way the node's selected status (as a\n// node selection) is displayed.\n//\n// deselectNode:: ?()\n// When defining a `selectNode` method, you should also provide a\n// `deselectNode` method to remove the effect again.\n//\n// setSelection:: ?(anchor: number, head: number, root: dom.Document)\n// This will be called to handle setting the selection inside the\n// node. The `anchor` and `head` positions are relative to the start\n// of the node. By default, a DOM selection will be created between\n// the DOM positions corresponding to those positions, but if you\n// override it you can do something else.\n//\n// stopEvent:: ?(event: dom.Event) → bool\n// Can be used to prevent the editor view from trying to handle some\n// or all DOM events that bubble up from the node view. Events for\n// which this returns true are not handled by the editor.\n//\n// ignoreMutation:: ?(dom.MutationRecord) → bool\n// Called when a DOM\n// [mutation](https://developer.mozilla.org/en-US/docs/Web/API/MutationObserver)\n// or a selection change happens within the view. When the change is\n// a selection change, the record will have a `type` property of\n// `\"selection\"` (which doesn't occur for native mutation records).\n// Return false if the editor should re-read the selection or\n// re-parse the range around the mutation, true if it can safely be\n// ignored.\n//\n// destroy:: ?()\n// Called when the node view is removed from the editor or the whole\n// editor is destroyed. (Not available for marks.)\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`.\n\nconst NOT_DIRTY = 0, CHILD_DIRTY = 1, CONTENT_DIRTY = 2, NODE_DIRTY = 3\n\n// Superclass for the various kinds of descriptions. Defines their\n// basic structure and shared methods.\nclass ViewDesc {\n // : (?ViewDesc, [ViewDesc], dom.Node, ?dom.Node)\n constructor(parent, children, dom, contentDOM) {\n this.parent = parent\n this.children = children\n this.dom = dom\n // An expando property on the DOM node provides a link back to its\n // description.\n dom.pmViewDesc = this\n // This is the node that holds the child views. It may be null for\n // descs that don't have children.\n this.contentDOM = contentDOM\n this.dirty = NOT_DIRTY\n }\n\n // Used to check whether a given description corresponds to a\n // widget/mark/node.\n matchesWidget() { return false }\n matchesMark() { return false }\n matchesNode() { return false }\n matchesHack() { return false }\n\n get beforePosition() { return false }\n\n // : () → ?ParseRule\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\n // : (dom.Event) → bool\n // Used by the editor's event handler to ignore events that come\n // from certain descs.\n stopEvent() { return false }\n\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++) size += this.children[i].size\n return size\n }\n\n // For block nodes, this represents the space taken up by their\n // start/end tokens.\n get border() { return 0 }\n\n destroy() {\n this.parent = null\n if (this.dom.pmViewDesc == this) this.dom.pmViewDesc = null\n for (let i = 0; i < this.children.length; i++)\n this.children[i].destroy()\n }\n\n posBeforeChild(child) {\n for (let i = 0, pos = this.posAtStart; i < this.children.length; i++) {\n let cur = this.children[i]\n if (cur == child) return pos\n pos += cur.size\n }\n }\n\n get posBefore() {\n return this.parent.posBeforeChild(this)\n }\n\n get posAtStart() {\n return this.parent ? this.parent.posBeforeChild(this) + this.border : 0\n }\n\n get posAfter() {\n return this.posBefore + this.size\n }\n\n get posAtEnd() {\n return this.posAtStart + this.size - 2 * this.border\n }\n\n // : (dom.Node, number, ?number) → number\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 } else {\n while (dom.parentNode != this.contentDOM) dom = dom.parentNode\n domBefore = dom.previousSibling\n }\n while (domBefore && !((desc = domBefore.pmViewDesc) && desc.parent == this)) domBefore = domBefore.previousSibling\n return domBefore ? this.posBeforeChild(desc) + desc.size : this.posAtStart\n } else {\n let domAfter, desc\n if (dom == this.contentDOM) {\n domAfter = dom.childNodes[offset]\n } else {\n while (dom.parentNode != this.contentDOM) dom = dom.parentNode\n domAfter = dom.nextSibling\n }\n while (domAfter && !((desc = domAfter.pmViewDesc) && desc.parent == this)) 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 } else if (this.contentDOM && this.contentDOM != this.dom && this.dom.contains(this.contentDOM)) {\n atEnd = dom.compareDocumentPosition(this.contentDOM) & 2\n } else if (this.dom.firstChild) {\n if (offset == 0) for (let search = dom;; search = search.parentNode) {\n if (search == this.dom) { atEnd = false; break }\n if (search.parentNode.firstChild != search) break\n }\n if (atEnd == null && offset == dom.childNodes.length) for (let search = dom;; search = search.parentNode) {\n if (search == this.dom) { atEnd = true; break }\n if (search.parentNode.lastChild != search) break\n }\n }\n return (atEnd == null ? bias > 0 : atEnd) ? this.posAtEnd : this.posAtStart\n }\n\n // Scan up the dom finding the first desc that is a descendant of\n // this one.\n nearestDesc(dom, onlyNodes) {\n for (let first = true, cur = dom; cur; cur = cur.parentNode) {\n let desc = this.getDesc(cur)\n if (desc && (!onlyNodes || desc.node)) {\n // If dom is outside of this desc's nodeDOM, don't count it.\n if (first && desc.nodeDOM &&\n !(desc.nodeDOM.nodeType == 1 ? desc.nodeDOM.contains(dom.nodeType == 1 ? dom : dom.parentNode) : desc.nodeDOM == dom))\n first = false\n else\n return desc\n }\n }\n }\n\n getDesc(dom) {\n let desc = dom.pmViewDesc\n for (let cur = desc; cur; cur = cur.parent) if (cur == this) return desc\n }\n\n posFromDOM(dom, offset, bias) {\n for (let scan = dom; scan; scan = scan.parentNode) {\n let desc = this.getDesc(scan)\n if (desc) return desc.localPosFromDOM(dom, offset, bias)\n }\n return -1\n }\n\n // : (number) → ?NodeViewDesc\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) child = child.children[0]\n return child\n }\n if (pos < end) return child.descAt(pos - offset - child.border)\n offset = end\n }\n }\n\n // : (number, number) → {node: dom.Node, offset: number}\n domFromPos(pos, side) {\n if (!this.contentDOM) return {node: this.dom, offset: 0}\n for (let offset = 0, i = 0, first = true;; i++, first = false) {\n // Skip removed or always-before children\n while (i < this.children.length && (this.children[i].beforePosition ||\n this.children[i].dom.parentNode != this.contentDOM))\n offset += this.children[i++].size\n let child = i == this.children.length ? null : this.children[i]\n if (offset == pos && (side == 0 || !child || !child.size || child.border || (side < 0 && first)) ||\n child && child.domAtom && pos < offset + child.size) return {\n node: this.contentDOM,\n offset: child ? domIndex(child.dom) : this.contentDOM.childNodes.length\n }\n if (!child) throw new Error(\"Invalid position \" + pos)\n let end = offset + child.size\n if (!child.domAtom && (side < 0 && !child.border ? end >= pos : end > pos) &&\n (end > pos || i + 1 >= this.children.length || !this.children[i + 1].beforePosition))\n return child.domFromPos(pos - offset - child.border, side)\n offset = end\n }\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\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\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) 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) toOffset = this.contentDOM.childNodes.length\n break\n }\n offset = end\n }\n return {node: this.contentDOM, from, to, fromOffset, toOffset}\n }\n\n emptyChildAt(side) {\n if (this.border || !this.contentDOM || !this.children.length) return false\n let child = this.children[side < 0 ? 0 : this.children.length - 1]\n return child.size == 0 || child.emptyChildAt(side)\n }\n\n // : (number) → dom.Node\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\n // : (number, number, dom.Document)\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, root, force) {\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, root, force)\n offset = end\n }\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 = root.getSelection()\n\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 ((browser.gecko || browser.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 node.nextSibling && node.nextSibling.nodeName == \"BR\")\n anchorDOM = headDOM = {node: node.parentNode, offset: domIndex(node) + 1}\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 (browser.gecko && domSel.focusNode && domSel.focusNode != headDOM.node && domSel.focusNode.nodeType == 1) {\n let after = domSel.focusNode.childNodes[domSel.focusOffset]\n if (after && after.contentEditable == \"false\") force = true\n }\n\n if (!(force || brKludge && browser.safari) &&\n isEquivalentPosition(anchorDOM.node, anchorDOM.offset, domSel.anchorNode, domSel.anchorOffset) &&\n isEquivalentPosition(headDOM.node, headDOM.offset, domSel.focusNode, domSel.focusOffset))\n return\n\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) domSel.extend(headDOM.node, headDOM.offset)\n domSelExtended = true\n } catch (err) {\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 if (!(err instanceof DOMException)) throw err\n // declare global: DOMException\n }\n }\n if (!domSelExtended) {\n if (anchor > head) { let tmp = anchorDOM; anchorDOM = headDOM; headDOM = tmp }\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\n // : (dom.MutationRecord) → bool\n ignoreMutation(mutation) {\n return !this.contentDOM && mutation.type != \"selection\"\n }\n\n get contentLost() {\n return this.contentDOM && this.contentDOM != this.dom && !this.dom.contains(this.contentDOM)\n }\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)) child.dirty = NODE_DIRTY\n else child.markDirty(from - startInside, to - startInside)\n return\n } else {\n child.dirty = NODE_DIRTY\n }\n }\n offset = end\n }\n this.dirty = CONTENT_DIRTY\n }\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) node.dirty = dirty\n }\n }\n\n get domAtom() { return false }\n}\n\n// Reused array to avoid allocating fresh arrays for things that will\n// stay empty anyway.\nconst nothing = []\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 // : (ViewDesc, Decoration)\n constructor(parent, widget, view, pos) {\n let self, dom = widget.type.toDOM\n if (typeof dom == \"function\") dom = dom(view, () => {\n if (!self) return pos\n if (self.parent) 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, nothing, dom, null)\n this.widget = widget\n self = this\n }\n\n get beforePosition() {\n return this.widget.type.side < 0\n }\n\n matchesWidget(widget) {\n return this.dirty == NOT_DIRTY && widget.type.eq(this.widget.type)\n }\n\n parseRule() { return {ignore: true} }\n\n stopEvent(event) {\n let stop = this.widget.spec.stopEvent\n return stop ? stop(event) : false\n }\n\n ignoreMutation(mutation) {\n return mutation.type != \"selection\" || this.widget.spec.ignoreSelection\n }\n\n get domAtom() { return true }\n}\n\nclass CompositionViewDesc extends ViewDesc {\n constructor(parent, dom, textDOM, text) {\n super(parent, nothing, dom, null)\n this.textDOM = textDOM\n this.text = text\n }\n\n get size() { return this.text.length }\n\n localPosFromDOM(dom, offset) {\n if (dom != this.textDOM) return this.posAtStart + (offset ? this.size : 0)\n return this.posAtStart + offset\n }\n\n domFromPos(pos) {\n return {node: this.textDOM, offset: pos}\n }\n\n ignoreMutation(mut) {\n return mut.type === 'characterData' && mut.target.nodeValue == mut.oldValue\n }\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 // : (ViewDesc, Mark, dom.Node)\n constructor(parent, mark, dom, contentDOM) {\n super(parent, [], dom, contentDOM)\n this.mark = mark\n }\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))\n return new MarkViewDesc(parent, mark, spec.dom, spec.contentDOM || spec.dom)\n }\n\n parseRule() { 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\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) parent = parent.parent\n if (parent.dirty < this.dirty) parent.dirty = this.dirty\n this.dirty = NOT_DIRTY\n }\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) nodes = replaceNodes(nodes, to, size, view)\n if (from > 0) nodes = replaceNodes(nodes, 0, from, view)\n for (let i = 0; i < nodes.length; i++) nodes[i].parent = copy\n copy.children = nodes\n return copy\n }\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 // : (?ViewDesc, Node, [Decoration], DecorationSource, dom.Node, ?dom.Node, EditorView)\n constructor(parent, node, outerDeco, innerDeco, dom, contentDOM, nodeDOM, view, pos) {\n super(parent, node.isLeaf ? nothing : [], dom, contentDOM)\n this.nodeDOM = nodeDOM\n this.node = node\n this.outerDeco = outerDeco\n this.innerDeco = innerDeco\n if (contentDOM) this.updateChildren(view, pos)\n }\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 finnicky\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) return pos\n if (descObj.parent) return descObj.parent.posBeforeChild(descObj)\n }, outerDeco, innerDeco)\n\n let dom = spec && spec.dom, contentDOM = spec && spec.contentDOM\n if (node.isText) {\n if (!dom) dom = document.createTextNode(node.text)\n else if (dom.nodeType != 3) throw new RangeError(\"Text must be rendered as a DOM text node\")\n } else if (!dom) {\n ;({dom, contentDOM} = DOMSerializer.renderSpec(document, node.type.spec.toDOM(node)))\n }\n if (!contentDOM && !node.isText && dom.nodeName != \"BR\") { // Chrome gets confused by <br contenteditable=false>\n if (!dom.hasAttribute(\"contenteditable\")) dom.contentEditable = false\n if (node.type.spec.draggable) dom.draggable = true\n }\n\n let nodeDOM = dom\n dom = applyOuterDeco(dom, outerDeco, node)\n\n if (spec)\n return descObj = new CustomNodeViewDesc(parent, node, outerDeco, innerDeco, dom, contentDOM, nodeDOM,\n 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, nodeDOM, view, pos + 1)\n }\n\n parseRule() {\n // Experimental kludge to allow opt-in re-parsing of nodes\n if (this.node.type.spec.reparseInView) 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.spec.code) rule.preserveWhitespace = \"full\"\n if (this.contentDOM && !this.contentLost) rule.contentElement = this.contentDOM\n else rule.getContent = () => this.contentDOM ? Fragment.empty : this.node.content\n return rule\n }\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\n get size() { return this.node.nodeSize }\n\n get border() { return this.node.isLeaf ? 0 : 1 }\n\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 = inline && view.composing && this.localCompositionNode(view, pos)\n let updater = new ViewTreeUpdater(this, composition && composition.node)\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 // Either find an existing desc that exactly matches this node,\n // and drop the descs before it.\n updater.findNodeMatch(child, outerDeco, innerDeco, i) ||\n // Or try updating the next desc to reflect this node.\n updater.updateNextNode(child, outerDeco, innerDeco, view, i) ||\n // Or just add it as a new desc.\n updater.addNode(child, outerDeco, innerDeco, view, off)\n off += child.nodeSize\n })\n // Drop all remaining descs after the current position.\n updater.syncToMarks(nothing, inline, view)\n if (this.node.isTextblock) updater.addTextblockHacks()\n updater.destroyRest()\n\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 (composition) this.protectLocalComposition(view, composition)\n renderDescs(this.contentDOM, this.children, view)\n if (browser.ios) iosHacks(this.dom)\n }\n }\n\n localCompositionNode(view, pos) {\n // Only do something if both the selection and a focused text node\n // are inside of this node, and the node isn't already part of a\n // view that's a child of this view\n let {from, to} = view.state.selection\n if (!(view.state.selection instanceof TextSelection) || from < pos || to > pos + this.node.content.size) return\n let sel = view.root.getSelection()\n let textNode = nearbyTextNode(sel.focusNode, sel.focusOffset)\n if (!textNode || !this.dom.contains(textNode.parentNode)) return\n\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\n return textPos < 0 ? null : {node: textNode, pos: textPos, 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)) return\n\n // Create a composition view for the orphaned nodes\n let topNode = node\n for (;; topNode = topNode.parentNode) {\n if (topNode.parentNode == this.contentDOM) break\n while (topNode.previousSibling) topNode.parentNode.removeChild(topNode.previousSibling)\n while (topNode.nextSibling) topNode.parentNode.removeChild(topNode.nextSibling)\n if (topNode.pmViewDesc) topNode.pmViewDesc = null\n }\n let desc = new CompositionViewDesc(this, topNode, node, text)\n view.compositionNodes.push(desc)\n\n // Patch up this.children to contain the composition view\n this.children = replaceNodes(this.children, pos, pos + text.length, view, desc)\n }\n\n // : (Node, [Decoration], DecorationSource, EditorView) → bool\n // If this desc 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)) return false\n this.updateInner(node, outerDeco, innerDeco, view)\n return true\n }\n\n updateInner(node, outerDeco, innerDeco, view) {\n this.updateOuterDeco(outerDeco)\n this.node = node\n this.innerDeco = innerDeco\n if (this.contentDOM) this.updateChildren(view, this.posAtStart)\n this.dirty = NOT_DIRTY\n }\n\n updateOuterDeco(outerDeco) {\n if (sameOuterDeco(outerDeco, this.outerDeco)) return\n let needsWrap = this.nodeDOM.nodeType != 1\n let oldDOM = this.dom\n this.dom = patchOuterDeco(this.dom, this.nodeDOM,\n computeOuterDeco(this.outerDeco, this.node, needsWrap),\n computeOuterDeco(outerDeco, this.node, needsWrap))\n if (this.dom != oldDOM) {\n oldDOM.pmViewDesc = null\n this.dom.pmViewDesc = this\n }\n this.outerDeco = outerDeco\n }\n\n // Mark this node as being the selected node.\n selectNode() {\n this.nodeDOM.classList.add(\"ProseMirror-selectednode\")\n if (this.contentDOM || !this.node.type.spec.draggable) this.dom.draggable = true\n }\n\n // Remove selected node marking from this node.\n deselectNode() {\n this.nodeDOM.classList.remove(\"ProseMirror-selectednode\")\n if (this.contentDOM || !this.node.type.spec.draggable) this.dom.removeAttribute(\"draggable\")\n }\n\n get domAtom() { return this.node.isAtom }\n}\n\n// Create a view desc for the top-level document node, to be exported\n// and used by the view class.\nexport function docViewDesc(doc, outerDeco, innerDeco, dom, view) {\n applyOuterDeco(dom, outerDeco, doc)\n return new NodeViewDesc(null, doc, outerDeco, innerDeco, dom, dom, dom, view, 0)\n}\n\nclass TextViewDesc extends NodeViewDesc {\n constructor(parent, node, outerDeco, innerDeco, dom, nodeDOM, view) {\n super(parent, node, outerDeco, innerDeco, dom, null, nodeDOM, view)\n }\n\n parseRule() {\n let skip = this.nodeDOM.parentNode\n while (skip && skip != this.dom && !skip.pmIsDeco) skip = skip.parentNode\n return {skip: skip || true}\n }\n\n update(node, outerDeco, _, view) {\n if (this.dirty == NODE_DIRTY || (this.dirty != NOT_DIRTY && !this.inParent()) ||\n !node.sameMarkup(this.node)) 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) view.trackWrites = null\n }\n this.node = node\n this.dirty = NOT_DIRTY\n return true\n }\n\n inParent() {\n let parentDOM = this.parent.contentDOM\n for (let n = this.nodeDOM; n; n = n.parentNode) if (n == parentDOM) return true\n return false\n }\n\n domFromPos(pos) {\n return {node: this.nodeDOM, offset: pos}\n }\n\n localPosFromDOM(dom, offset, bias) {\n if (dom == this.nodeDOM) return this.posAtStart + Math.min(offset, this.node.text.length)\n return super.localPosFromDOM(dom, offset, bias)\n }\n\n ignoreMutation(mutation) {\n return mutation.type != \"characterData\" && mutation.type != \"selection\"\n }\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\n get domAtom() { return false }\n}\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() { return this.dirty == NOT_DIRTY }\n get domAtom() { return true }\n}\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 // : (?ViewDesc, Node, [Decoration], DecorationSource, dom.Node, ?dom.Node, NodeView, EditorView)\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\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) return false\n if (this.spec.update) {\n let result = this.spec.update(node, outerDeco, innerDeco)\n if (result) this.updateInner(node, outerDeco, innerDeco, view)\n return result\n } else if (!this.contentDOM && !node.isLeaf) {\n return false\n } else {\n return super.update(node, outerDeco, innerDeco, view)\n }\n }\n\n selectNode() {\n this.spec.selectNode ? this.spec.selectNode() : super.selectNode()\n }\n\n deselectNode() {\n this.spec.deselectNode ? this.spec.deselectNode() : super.deselectNode()\n }\n\n setSelection(anchor, head, root, force) {\n this.spec.setSelection ? this.spec.setSelection(anchor, head, root)\n : super.setSelection(anchor, head, root, force)\n }\n\n destroy() {\n if (this.spec.destroy) this.spec.destroy()\n super.destroy()\n }\n\n stopEvent(event) {\n return this.spec.stopEvent ? this.spec.stopEvent(event) : false\n }\n\n ignoreMutation(mutation) {\n return this.spec.ignoreMutation ? this.spec.ignoreMutation(mutation) : super.ignoreMutation(mutation)\n }\n}\n\n// : (dom.Node, [ViewDesc])\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) { dom = rm(dom); written = true }\n dom = dom.nextSibling\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) { dom = rm(dom); written = true }\n if (written && view.trackWrites == parentDOM) view.trackWrites = null\n}\n\nfunction OuterDecoLevel(nodeName) {\n if (nodeName) this.nodeName = nodeName\n}\nOuterDecoLevel.prototype = Object.create(null)\n\nconst noDeco = [new OuterDecoLevel]\n\nfunction computeOuterDeco(outerDeco, node, needsWrap) {\n if (outerDeco.length == 0) return noDeco\n\n let top = needsWrap ? noDeco[0] : new OuterDecoLevel, result = [top]\n\n for (let i = 0; i < outerDeco.length; i++) {\n let attrs = outerDeco[i].type.attrs\n if (!attrs) continue\n if (attrs.nodeName)\n result.push(top = new OuterDecoLevel(attrs.nodeName))\n\n for (let name in attrs) {\n let val = attrs[name]\n if (val == null) continue\n if (needsWrap && result.length == 1)\n result.push(top = new OuterDecoLevel(node.isInline ? \"span\" : \"div\"))\n if (name == \"class\") top.class = (top.class ? top.class + \" \" : \"\") + val\n else if (name == \"style\") top.style = (top.style ? top.style + \";\" : \"\") + val\n else if (name != \"nodeName\") top[name] = val\n }\n }\n\n return result\n}\n\nfunction patchOuterDeco(outerDOM, nodeDOM, prevComputed, curComputed) {\n // Shortcut for trivial case\n if (prevComputed == noDeco && curComputed == noDeco) return nodeDOM\n\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.tagName.toLowerCase() == deco.nodeName) {\n curDOM = parent\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}\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) : nothing\n let curList = cur.class ? cur.class.split(\" \").filter(Boolean) : nothing\n for (let i = 0; i < prevList.length; i++) if (curList.indexOf(prevList[i]) == -1)\n dom.classList.remove(prevList[i])\n for (let i = 0; i < curList.length; i++) if (prevList.indexOf(curList[i]) == -1)\n dom.classList.add(curList[i])\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}\n\nfunction applyOuterDeco(dom, deco, node) {\n return patchOuterDeco(dom, dom, noDeco, computeOuterDeco(deco, node, dom.nodeType != 1))\n}\n\n// : ([Decoration], [Decoration]) → bool\nfunction sameOuterDeco(a, b) {\n if (a.length != b.length) return false\n for (let i = 0; i < a.length; i++) if (!a[i].type.eq(b[i].type)) return false\n return true\n}\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\n// Helper class for incrementally updating a tree of mark descs and\n// the widget and node descs inside of them.\nclass ViewTreeUpdater {\n // : (NodeViewDesc)\n constructor(top, lockedNode) {\n this.top = top\n this.lock = lockedNode\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\n this.preMatch = preMatch(top.node.content, top.children)\n }\n\n // Destroy and remove the children between the given indices in\n // `this.top`.\n destroyBetween(start, end) {\n if (start == end) return\n for (let i = start; i < end; i++) this.top.children[i].destroy()\n this.top.children.splice(start, end - start)\n this.changed = true\n }\n\n // Destroy all remaining children in `this.top`.\n destroyRest() {\n this.destroyBetween(this.index, this.top.children.length)\n }\n\n // : ([Mark], EditorView)\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]).matchesMark(marks[keep]) && marks[keep].type.spec.spanning !== false)\n keep++\n\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 if (this.top.children[i].matchesMark(marks[depth])) { found = i; break }\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 } 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\n // : (Node, [Decoration], DecorationSource) → bool\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 children = this.top.children, found = -1\n if (index >= this.preMatch.index) {\n for (let i = this.index; i < children.length; i++) if (children[i].matchesNode(node, outerDeco, innerDeco)) {\n found = i\n break\n }\n } else {\n for (let i = this.index, e = Math.min(children.length, i + 1); i < e; i++) {\n let child = 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) return false\n this.destroyBetween(this.index, found)\n this.index++\n return true\n }\n\n // : (Node, [Decoration], DecorationSource, EditorView, Fragment, number) → bool\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) {\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) return false\n let nextDOM = next.dom\n\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.lock && (nextDOM == this.lock || nextDOM.nodeType == 1 && nextDOM.contains(this.lock.parentNode)) &&\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) this.changed = true\n this.index++\n return true\n }\n break\n }\n }\n return false\n }\n\n // : (Node, [Decoration], DecorationSource, EditorView)\n // Insert the node as a newly created node desc.\n addNode(node, outerDeco, innerDeco, view, pos) {\n this.top.children.splice(this.index++, 0, NodeViewDesc.create(this.top, node, outerDeco, innerDeco, view, pos))\n this.changed = true\n }\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) && (widget == next.widget || !next.widget.type.toDOM.parentNode)) {\n this.index++\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\n // Make sure a textblock looks and behaves correctly in\n // contentEditable.\n addTextblockHacks() {\n let lastChild = this.top.children[this.index - 1]\n while (lastChild instanceof MarkViewDesc) lastChild = lastChild.children[lastChild.children.length - 1]\n\n if (!lastChild || // Empty textblock\n !(lastChild instanceof TextViewDesc) ||\n /\\n$/.test(lastChild.node.text)) {\n if (this.index < this.top.children.length && this.top.children[this.index].matchesHack()) {\n this.index++\n } else {\n let dom = document.createElement(\"br\")\n this.top.children.splice(this.index++, 0, new TrailingHackViewDesc(this.top, nothing, dom, null))\n this.changed = true\n }\n }\n }\n}\n\n// : (Fragment, [ViewDesc]) → {index: number, matched: Map<ViewDesc, number>}\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, descs) {\n let fI = frag.childCount, dI = descs.length, matched = new Map\n for (; fI > 0 && dI > 0; dI--) {\n let desc = descs[dI - 1], node = desc.node\n if (!node) continue\n if (node != frag.child(fI - 1)) break\n --fI\n matched.set(desc, fI)\n }\n return {index: fI, matched}\n}\n\nfunction compareSide(a, b) { return a.type.side - b.type.side }\n\n// : (ViewDesc, DecorationSource, (Decoration, number), (Node, [Decoration], DecorationSource, number))\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\n let decoIndex = 0, active = [], restNode = null\n for (let parentIndex = 0;;) {\n if (decoIndex < locals.length && locals[decoIndex].to == offset) {\n let widget = locals[decoIndex++], widgets\n while (decoIndex < locals.length && locals[decoIndex].to == offset)\n (widgets || (widgets = [widget])).push(locals[decoIndex++])\n if (widgets) {\n widgets.sort(compareSide)\n for (let i = 0; i < widgets.length; i++) onWidget(widgets[i], parentIndex, !!restNode)\n } else {\n onWidget(widget, parentIndex, !!restNode)\n }\n }\n\n let child, index\n if (restNode) {\n index = -1\n child = restNode\n restNode = null\n } else if (parentIndex < parent.childCount) {\n index = parentIndex\n child = parent.child(parentIndex++)\n } else {\n break\n }\n\n for (let i = 0; i < active.length; i++) if (active[i].to <= offset) active.splice(i--, 1)\n while (decoIndex < locals.length && locals[decoIndex].from <= offset && locals[decoIndex].to > offset)\n active.push(locals[decoIndex++])\n\n let end = offset + child.nodeSize\n if (child.isText) {\n let cutAt = end\n if (decoIndex < locals.length && locals[decoIndex].from < cutAt) cutAt = locals[decoIndex].from\n for (let i = 0; i < active.length; i++) if (active[i].to < cutAt) 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\n let outerDeco = !active.length ? nothing\n : child.isInline && !child.isLeaf ? active.filter(d => !d.inline)\n : active.slice()\n onNode(child, outerDeco, deco.forChild(offset, child), index)\n offset = end\n }\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\nfunction nearbyTextNode(node, offset) {\n for (;;) {\n if (node.nodeType == 3) return node\n if (node.nodeType == 1 && offset > 0) {\n if (node.childNodes.length > offset && node.childNodes[offset].nodeType == 3)\n return node.childNodes[offset]\n node = node.childNodes[offset - 1]\n offset = nodeSize(node)\n } else if (node.nodeType == 1 && offset < node.childNodes.length) {\n node = node.childNodes[offset]\n offset = 0\n } else {\n return null\n }\n }\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) 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) break\n str += next.text\n }\n if (pos >= from) {\n let found = str.lastIndexOf(text, to - childStart)\n if (found >= 0 && found + text.length + childStart >= from)\n return childStart + found\n }\n }\n return -1\n}\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 } else {\n if (start < from) result.push(child.slice(0, from - start, view))\n if (replacement) {\n result.push(replacement)\n replacement = null\n }\n if (end > to) result.push(child.slice(to - start, child.size, view))\n }\n }\n return result\n}\n","import {TextSelection, NodeSelection} from \"prosemirror-state\"\n\nimport browser from \"./browser\"\nimport {selectionCollapsed, isEquivalentPosition, domIndex, isOnEdge} from \"./dom\"\n\nexport function selectionFromDOM(view, origin) {\n let domSel = view.root.getSelection(), doc = view.state.doc\n if (!domSel.focusNode) 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)\n if (head < 0) return null\n let $head = doc.resolve(head), $anchor, selection\n if (selectionCollapsed(domSel)) {\n $anchor = $head\n while (nearestDesc && !nearestDesc.node) nearestDesc = nearestDesc.parent\n if (nearestDesc && nearestDesc.node.isAtom && NodeSelection.isSelectable(nearestDesc.node) && nearestDesc.parent\n && !(nearestDesc.node.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 } else {\n let anchor = view.docView.posFromDOM(domSel.anchorNode, domSel.anchorOffset)\n if (anchor < 0) return null\n $anchor = doc.resolve(anchor)\n }\n\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}\n\nfunction editorOwnsSelection(view) {\n return view.editable ? view.hasFocus() :\n hasSelection(view) && document.activeElement && document.activeElement.contains(view.dom)\n}\n\nexport function selectionToDOM(view, force) {\n let sel = view.state.selection\n syncNodeSelection(view, sel)\n\n if (!editorOwnsSelection(view)) return\n\n view.domObserver.disconnectSelection()\n\n if (view.cursorWrapper) {\n selectCursorWrapper(view)\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.root, force)\n if (brokenSelectBetweenUneditable) {\n if (resetEditableFrom) resetEditable(resetEditableFrom)\n if (resetEditableTo) resetEditable(resetEditableTo)\n }\n if (sel.visible) {\n view.dom.classList.remove(\"ProseMirror-hideselection\")\n } else {\n view.dom.classList.add(\"ProseMirror-hideselection\")\n if (\"onselectionchange\" in document) removeClassOnSelectionChange(view)\n }\n }\n\n view.domObserver.setCurSelection()\n view.domObserver.connectSelection()\n}\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.\n\nconst brokenSelectBetweenUneditable = browser.safari || browser.chrome && browser.chrome_version < 63\n\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 (browser.safari && after && after.contentEditable == \"false\") return setEditable(after)\n if ((!after || after.contentEditable == \"false\") && (!before || before.contentEditable == \"false\")) {\n if (after) return setEditable(after)\n else if (before) return setEditable(before)\n }\n}\n\nfunction setEditable(element) {\n element.contentEditable = \"true\"\n if (browser.safari && element.draggable) { element.draggable = false; element.wasDraggable = true }\n return element\n}\n\nfunction resetEditable(element) {\n element.contentEditable = \"false\"\n if (element.wasDraggable) { element.draggable = true; element.wasDraggable = null }\n}\n\nfunction removeClassOnSelectionChange(view) {\n let doc = view.dom.ownerDocument\n doc.removeEventListener(\"selectionchange\", view.hideSelectionGuard)\n let domSel = view.root.getSelection()\n let node = domSel.anchorNode, offset = domSel.anchorOffset\n doc.addEventListener(\"selectionchange\", view.hideSelectionGuard = () => {\n if (domSel.anchorNode != node || domSel.anchorOffset != offset) {\n doc.removeEventListener(\"selectionchange\", view.hideSelectionGuard)\n setTimeout(() => {\n if (!editorOwnsSelection(view) || view.state.selection.visible)\n view.dom.classList.remove(\"ProseMirror-hideselection\")\n }, 20)\n }\n })\n}\n\nfunction selectCursorWrapper(view) {\n let domSel = view.root.getSelection(), range = document.createRange()\n let node = view.cursorWrapper.dom, img = node.nodeName == \"IMG\"\n if (img) range.setEnd(node.parentNode, domIndex(node) + 1)\n else range.setEnd(node, 0)\n range.collapse(false)\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 && browser.ie && browser.ie_version <= 11) {\n node.disabled = true\n node.disabled = false\n }\n}\n\nexport function 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) desc.selectNode()\n view.lastSelectedViewDesc = desc\n }\n } else {\n clearNodeSelection(view)\n }\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 = null\n }\n}\n\nexport function selectionBetween(view, $anchor, $head, bias) {\n return view.someProp(\"createSelectionBetween\", f => f(view, $anchor, $head))\n || TextSelection.between($anchor, $head, bias)\n}\n\nexport function hasFocusAndSelection(view) {\n if (view.editable && view.root.activeElement != view.dom) return false\n return hasSelection(view)\n}\n\nexport function hasSelection(view) {\n let sel = view.root.getSelection()\n if (!sel.anchorNode) 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 } catch(_) {\n return false\n }\n}\n\nexport function anchorInRightPlace(view) {\n let anchorDOM = view.docView.domFromPos(view.state.selection.anchor, 0)\n let domSel = view.root.getSelection()\n return isEquivalentPosition(anchorDOM.node, anchorDOM.offset, domSel.anchorNode, domSel.anchorOffset)\n}\n","import {Selection, NodeSelection, TextSelection, AllSelection} from \"prosemirror-state\"\nimport browser from \"./browser\"\nimport {domIndex, selectionCollapsed} from \"./dom\"\nimport {selectionToDOM} from \"./selection\"\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}\n\nfunction apply(view, sel) {\n view.dispatch(view.state.tr.setSelection(sel).scrollIntoView())\n return true\n}\n\nfunction selectHorizontally(view, dir, mods) {\n let sel = view.state.selection\n if (sel instanceof TextSelection) {\n if (!sel.empty || mods.indexOf(\"s\") > -1) {\n return false\n } else if (view.endOfTextblock(dir > 0 ? \"right\" : \"left\")) {\n let next = moveSelectionBlock(view.state, dir)\n if (next && (next instanceof NodeSelection)) return apply(view, next)\n return false\n } else if (!(browser.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) return false\n let nodePos = dir < 0 ? $head.pos - node.nodeSize : $head.pos\n if (!(node.isAtom || (desc = view.docView.descAt(nodePos)) && !desc.contentDOM)) 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 } else if (browser.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 } else {\n return false\n }\n }\n } else if (sel instanceof NodeSelection && sel.node.isInline) {\n return apply(view, new TextSelection(dir > 0 ? sel.$to : sel.$from))\n } else {\n let next = moveSelectionBlock(view.state, dir)\n if (next) return apply(view, next)\n return false\n }\n}\n\nfunction nodeLen(node) {\n return node.nodeType == 3 ? node.nodeValue.length : node.childNodes.length\n}\n\nfunction isIgnorable(dom) {\n let desc = dom.pmViewDesc\n return desc && desc.size == 0 && (dom.nextSibling || dom.nodeName != \"BR\")\n}\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 skipIgnoredNodesLeft(view) {\n let sel = view.root.getSelection()\n let node = sel.focusNode, offset = sel.focusOffset\n if (!node) 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 (browser.gecko && node.nodeType == 1 && offset < nodeLen(node) && isIgnorable(node.childNodes[offset])) force = true\n for (;;) {\n if (offset > 0) {\n if (node.nodeType != 1) {\n break\n } else {\n let before = node.childNodes[offset - 1]\n if (isIgnorable(before)) {\n moveNode = node\n moveOffset = --offset\n } else if (before.nodeType == 3) {\n node = before\n offset = node.nodeValue.length\n } else break\n }\n } else if (isBlockNode(node)) {\n break\n } else {\n let prev = node.previousSibling\n while (prev && isIgnorable(prev)) {\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) break\n offset = 0\n } else {\n node = prev\n offset = nodeLen(node)\n }\n }\n }\n if (force) setSelFocus(view, sel, node, offset)\n else if (moveNode) setSelFocus(view, sel, moveNode, moveOffset)\n}\n\n// Make sure the cursor isn't directly before one or more ignored\n// nodes.\nfunction skipIgnoredNodesRight(view) {\n let sel = view.root.getSelection()\n let node = sel.focusNode, offset = sel.focusOffset\n if (!node) return\n let len = nodeLen(node)\n let moveNode, moveOffset\n for (;;) {\n if (offset < len) {\n if (node.nodeType != 1) break\n let after = node.childNodes[offset]\n if (isIgnorable(after)) {\n moveNode = node\n moveOffset = ++offset\n }\n else break\n } else if (isBlockNode(node)) {\n break\n } else {\n let next = node.nextSibling\n while (next && isIgnorable(next)) {\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) break\n offset = len = 0\n } else {\n node = next\n offset = 0\n len = nodeLen(node)\n }\n }\n }\n if (moveNode) setSelFocus(view, sel, moveNode, moveOffset)\n}\n\nfunction isBlockNode(dom) {\n let desc = dom.pmViewDesc\n return desc && desc.node && desc.node.isBlock\n}\n\nfunction setSelFocus(view, sel, node, offset) {\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 } 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) selectionToDOM(view)\n }, 50)\n}\n\n// : (EditorState, number)\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) return false\n if (browser.mac && mods.indexOf(\"m\") > -1) return false\n let {$from, $to} = sel\n\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}\n\nfunction stopNativeHorizontalDelete(view, dir) {\n if (!(view.state.selection instanceof TextSelection)) return true\n let {$head, $anchor, empty} = view.state.selection\n if (!$head.sameParent($anchor)) return true\n if (!empty) return false\n if (view.endOfTextblock(dir > 0 ? \"forward\" : \"backward\")) 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) tr.delete($head.pos - nextNode.nodeSize, $head.pos)\n else tr.delete($head.pos, $head.pos + nextNode.nodeSize)\n view.dispatch(tr)\n return true\n }\n return false\n}\n\nfunction switchEditable(view, node, state) {\n view.domObserver.stop()\n node.contentEditable = state\n view.domObserver.start()\n}\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 (!browser.safari || view.state.selection.$head.parentOffset > 0) return\n let {focusNode, focusOffset} = view.root.getSelection()\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}\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.\n\nfunction getMods(event) {\n let result = \"\"\n if (event.ctrlKey) result += \"c\"\n if (event.metaKey) result += \"m\"\n if (event.altKey) result += \"a\"\n if (event.shiftKey) result += \"s\"\n return result\n}\n\nexport function captureKeyDown(view, event) {\n let code = event.keyCode, mods = getMods(event)\n if (code == 8 || (browser.mac && code == 72 && mods == \"c\")) { // Backspace, Ctrl-h on Mac\n return stopNativeHorizontalDelete(view, -1) || skipIgnoredNodesLeft(view)\n } else if (code == 46 || (browser.mac && code == 68 && mods == \"c\")) { // Delete, Ctrl-d on Mac\n return stopNativeHorizontalDelete(view, 1) || skipIgnoredNodesRight(view)\n } else if (code == 13 || code == 27) { // Enter, Esc\n return true\n } else if (code == 37) { // Left arrow\n return selectHorizontally(view, -1, mods) || skipIgnoredNodesLeft(view)\n } else if (code == 39) { // Right arrow\n return selectHorizontally(view, 1, mods) || skipIgnoredNodesRight(view)\n } else if (code == 38) { // Up arrow\n return selectVertically(view, -1, mods) || skipIgnoredNodesLeft(view)\n } else if (code == 40) { // Down arrow\n return safariDownArrowBug(view) || selectVertically(view, 1, mods) || skipIgnoredNodesRight(view)\n } else if (mods == (browser.mac ? \"m\" : \"c\") &&\n (code == 66 || code == 73 || code == 89 || code == 90)) { // Mod-[biyz]\n return true\n }\n return false\n}\n","import {Fragment, DOMParser} from \"prosemirror-model\"\nimport {Selection, TextSelection} from \"prosemirror-state\"\n\nimport {selectionBetween, selectionFromDOM, selectionToDOM} from \"./selection\"\nimport {selectionCollapsed, keyEvent} from \"./dom\"\nimport browser from \"./browser\"\n\n// Note that all referencing and parsing is done with the\n// start-of-operation selection and document, since that's the one\n// that the DOM represents. If any changes came in in the meantime,\n// the modification is mapped over those before it is applied, in\n// readDOMChange.\n\nfunction parseBetween(view, from_, to_) {\n let {node: parent, fromOffset, toOffset, from, to} = view.docView.parseRange(from_, to_)\n\n let domSel = view.root.getSelection(), find = null, anchor = domSel.anchorNode\n if (anchor && view.dom.contains(anchor.nodeType == 1 ? anchor : anchor.parentNode)) {\n find = [{node: anchor, offset: domSel.anchorOffset}]\n if (!selectionCollapsed(domSel))\n find.push({node: domSel.focusNode, offset: domSel.focusOffset})\n }\n // Work around issue in Chrome where backspacing sometimes replaces\n // the deleted content with a random BR node (issues #799, #831)\n if (browser.chrome && view.lastKeyCode === 8) {\n for (let off = toOffset; off > fromOffset; off--) {\n let node = parent.childNodes[off - 1], desc = node.pmViewDesc\n if (node.nodeName == \"BR\" && !desc) { toOffset = off; break }\n if (!desc || desc.size) break\n }\n }\n let startDoc = view.state.doc\n let parser = view.someProp(\"domParser\") || DOMParser.fromSchema(view.state.schema)\n let $from = startDoc.resolve(from)\n\n let sel = null, doc = parser.parse(parent, {\n topNode: $from.parent,\n topMatch: $from.parent.contentMatchAt($from.index()),\n topOpen: true,\n from: fromOffset,\n to: toOffset,\n preserveWhitespace: $from.parent.type.spec.code ? \"full\" : true,\n editableContent: true,\n findPositions: find,\n ruleFromNode,\n context: $from\n })\n if (find && find[0].pos != null) {\n let anchor = find[0].pos, head = find[1] && find[1].pos\n if (head == null) head = anchor\n sel = {anchor: anchor + from, head: head + from}\n }\n return {doc, sel, from, to}\n}\n\nfunction ruleFromNode(dom) {\n let desc = dom.pmViewDesc\n if (desc) {\n return desc.parseRule()\n } else if (dom.nodeName == \"BR\" && dom.parentNode) {\n // Safari replaces the list item or table cell with a BR\n // directly in the list node (?!) if you delete the last\n // character in a list item or table cell (#708, #862)\n if (browser.safari && /^(ul|ol)$/i.test(dom.parentNode.nodeName)) {\n let skip = document.createElement(\"div\")\n skip.appendChild(document.createElement(\"li\"))\n return {skip}\n } else if (dom.parentNode.lastChild == dom || browser.safari && /^(tr|table)$/i.test(dom.parentNode.nodeName)) {\n return {ignore: true}\n }\n } else if (dom.nodeName == \"IMG\" && dom.getAttribute(\"mark-placeholder\")) {\n return {ignore: true}\n }\n}\n\nexport function readDOMChange(view, from, to, typeOver, addedNodes) {\n if (from < 0) {\n let origin = view.lastSelectionTime > Date.now() - 50 ? view.lastSelectionOrigin : null\n let newSel = selectionFromDOM(view, origin)\n if (newSel && !view.state.selection.eq(newSel)) {\n let tr = view.state.tr.setSelection(newSel)\n if (origin == \"pointer\") tr.setMeta(\"pointer\", true)\n else if (origin == \"key\") tr.scrollIntoView()\n view.dispatch(tr)\n }\n return\n }\n\n let $before = view.state.doc.resolve(from)\n let shared = $before.sharedDepth(to)\n from = $before.before(shared + 1)\n to = view.state.doc.resolve(to).after(shared + 1)\n\n let sel = view.state.selection\n let parse = parseBetween(view, from, to)\n // Chrome sometimes leaves the cursor before the inserted text when\n // composing after a cursor wrapper. This moves it forward.\n if (browser.chrome && view.cursorWrapper && parse.sel && parse.sel.anchor == view.cursorWrapper.deco.from) {\n let text = view.cursorWrapper.deco.type.toDOM.nextSibling\n let size = text && text.nodeValue ? text.nodeValue.length : 1\n parse.sel = {anchor: parse.sel.anchor + size, head: parse.sel.anchor + size}\n }\n\n let doc = view.state.doc, compare = doc.slice(parse.from, parse.to)\n let preferredPos, preferredSide\n // Prefer anchoring to end when Backspace is pressed\n if (view.lastKeyCode === 8 && Date.now() - 100 < view.lastKeyCodeTime) {\n preferredPos = view.state.selection.to\n preferredSide = \"end\"\n } else {\n preferredPos = view.state.selection.from\n preferredSide = \"start\"\n }\n view.lastKeyCode = null\n\n let change = findDiff(compare.content, parse.doc.content, parse.from, preferredPos, preferredSide)\n if (!change) {\n if (typeOver && sel instanceof TextSelection && !sel.empty && sel.$head.sameParent(sel.$anchor) &&\n !view.composing && !(parse.sel && parse.sel.anchor != parse.sel.head)) {\n change = {start: sel.from, endA: sel.to, endB: sel.to}\n } else if ((browser.ios && view.lastIOSEnter > Date.now() - 225 || browser.android) &&\n addedNodes.some(n => n.nodeName == \"DIV\" || n.nodeName == \"P\") &&\n view.someProp(\"handleKeyDown\", f => f(view, keyEvent(13, \"Enter\")))) {\n view.lastIOSEnter = 0\n return\n } else {\n if (parse.sel) {\n let sel = resolveSelection(view, view.state.doc, parse.sel)\n if (sel && !sel.eq(view.state.selection)) view.dispatch(view.state.tr.setSelection(sel))\n }\n return\n }\n }\n view.domChangeCount++\n // Handle the case where overwriting a selection by typing matches\n // the start or end of the selected content, creating a change\n // that's smaller than what was actually overwritten.\n if (view.state.selection.from < view.state.selection.to &&\n change.start == change.endB &&\n view.state.selection instanceof TextSelection) {\n if (change.start > view.state.selection.from && change.start <= view.state.selection.from + 2) {\n change.start = view.state.selection.from\n } else if (change.endA < view.state.selection.to && change.endA >= view.state.selection.to - 2) {\n change.endB += (view.state.selection.to - change.endA)\n change.endA = view.state.selection.to\n }\n }\n\n // IE11 will insert a non-breaking space _ahead_ of the space after\n // the cursor space when adding a space before another space. When\n // that happened, adjust the change to cover the space instead.\n if (browser.ie && browser.ie_version <= 11 && change.endB == change.start + 1 &&\n change.endA == change.start && change.start > parse.from &&\n parse.doc.textBetween(change.start - parse.from - 1, change.start - parse.from + 1) == \" \\u00a0\") {\n change.start--\n change.endA--\n change.endB--\n }\n\n let $from = parse.doc.resolveNoCache(change.start - parse.from)\n let $to = parse.doc.resolveNoCache(change.endB - parse.from)\n let inlineChange = $from.sameParent($to) && $from.parent.inlineContent\n let nextSel\n // If this looks like the effect of pressing Enter (or was recorded\n // as being an iOS enter press), just dispatch an Enter key instead.\n if (((browser.ios && view.lastIOSEnter > Date.now() - 225 &&\n (!inlineChange || addedNodes.some(n => n.nodeName == \"DIV\" || n.nodeName == \"P\"))) ||\n (!inlineChange && $from.pos < parse.doc.content.size &&\n (nextSel = Selection.findFrom(parse.doc.resolve($from.pos + 1), 1, true)) &&\n nextSel.head == $to.pos)) &&\n view.someProp(\"handleKeyDown\", f => f(view, keyEvent(13, \"Enter\")))) {\n view.lastIOSEnter = 0\n return\n }\n // Same for backspace\n if (view.state.selection.anchor > change.start &&\n looksLikeJoin(doc, change.start, change.endA, $from, $to) &&\n view.someProp(\"handleKeyDown\", f => f(view, keyEvent(8, \"Backspace\")))) {\n if (browser.android && browser.chrome) view.domObserver.suppressSelectionUpdates() // #820\n return\n }\n\n // Chrome Android will occasionally, during composition, delete the\n // entire composition and then immediately insert it again. This is\n // used to detect that situation.\n if (browser.chrome && browser.android && change.toB == change.from)\n view.lastAndroidDelete = Date.now()\n\n // This tries to detect Android virtual keyboard\n // enter-and-pick-suggestion action. That sometimes (see issue\n // #1059) first fires a DOM mutation, before moving the selection to\n // the newly created block. And then, because ProseMirror cleans up\n // the DOM selection, it gives up moving the selection entirely,\n // leaving the cursor in the wrong place. When that happens, we drop\n // the new paragraph from the initial change, and fire a simulated\n // enter key afterwards.\n if (browser.android && !inlineChange && $from.start() != $to.start() && $to.parentOffset == 0 && $from.depth == $to.depth &&\n parse.sel && parse.sel.anchor == parse.sel.head && parse.sel.head == change.endA) {\n change.endB -= 2\n $to = parse.doc.resolveNoCache(change.endB - parse.from)\n setTimeout(() => {\n view.someProp(\"handleKeyDown\", function (f) { return f(view, keyEvent(13, \"Enter\")); })\n }, 20)\n }\n\n let chFrom = change.start, chTo = change.endA\n\n let tr, storedMarks, markChange, $from1\n if (inlineChange) {\n if ($from.pos == $to.pos) { // Deletion\n // IE11 sometimes weirdly moves the DOM selection around after\n // backspacing out the first element in a textblock\n if (browser.ie && browser.ie_version <= 11 && $from.parentOffset == 0) {\n view.domObserver.suppressSelectionUpdates()\n setTimeout(() => selectionToDOM(view), 20)\n }\n tr = view.state.tr.delete(chFrom, chTo)\n storedMarks = doc.resolve(change.start).marksAcross(doc.resolve(change.endA))\n } else if ( // Adding or removing a mark\n change.endA == change.endB && ($from1 = doc.resolve(change.start)) &&\n (markChange = isMarkChange($from.parent.content.cut($from.parentOffset, $to.parentOffset),\n $from1.parent.content.cut($from1.parentOffset, change.endA - $from1.start())))\n ) {\n tr = view.state.tr\n if (markChange.type == \"add\") tr.addMark(chFrom, chTo, markChange.mark)\n else tr.removeMark(chFrom, chTo, markChange.mark)\n } else if ($from.parent.child($from.index()).isText && $from.index() == $to.index() - ($to.textOffset ? 0 : 1)) {\n // Both positions in the same text node -- simply insert text\n let text = $from.parent.textBetween($from.parentOffset, $to.parentOffset)\n if (view.someProp(\"handleTextInput\", f => f(view, chFrom, chTo, text))) return\n tr = view.state.tr.insertText(text, chFrom, chTo)\n }\n }\n\n if (!tr)\n tr = view.state.tr.replace(chFrom, chTo, parse.doc.slice(change.start - parse.from, change.endB - parse.from))\n if (parse.sel) {\n let sel = resolveSelection(view, tr.doc, parse.sel)\n // Chrome Android will sometimes, during composition, report the\n // selection in the wrong place. If it looks like that is\n // happening, don't update the selection.\n // Edge just doesn't move the cursor forward when you start typing\n // in an empty block or between br nodes.\n if (sel && !(browser.chrome && browser.android && view.composing && sel.empty &&\n (change.start != change.endB || view.lastAndroidDelete < Date.now() - 100) &&\n (sel.head == chFrom || sel.head == tr.mapping.map(chTo) - 1) ||\n browser.ie && sel.empty && sel.head == chFrom))\n tr.setSelection(sel)\n }\n if (storedMarks) tr.ensureMarks(storedMarks)\n view.dispatch(tr.scrollIntoView())\n}\n\nfunction resolveSelection(view, doc, parsedSel) {\n if (Math.max(parsedSel.anchor, parsedSel.head) > doc.content.size) return null\n return selectionBetween(view, doc.resolve(parsedSel.anchor), doc.resolve(parsedSel.head))\n}\n\n// : (Fragment, Fragment) → ?{mark: Mark, type: string}\n// Given two same-length, non-empty fragments of inline content,\n// determine whether the first could be created from the second by\n// removing or adding a single mark type.\nfunction isMarkChange(cur, prev) {\n let curMarks = cur.firstChild.marks, prevMarks = prev.firstChild.marks\n let added = curMarks, removed = prevMarks, type, mark, update\n for (let i = 0; i < prevMarks.length; i++) added = prevMarks[i].removeFromSet(added)\n for (let i = 0; i < curMarks.length; i++) removed = curMarks[i].removeFromSet(removed)\n if (added.length == 1 && removed.length == 0) {\n mark = added[0]\n type = \"add\"\n update = node => node.mark(mark.addToSet(node.marks))\n } else if (added.length == 0 && removed.length == 1) {\n mark = removed[0]\n type = \"remove\"\n update = node => node.mark(mark.removeFromSet(node.marks))\n } else {\n return null\n }\n let updated = []\n for (let i = 0; i < prev.childCount; i++) updated.push(update(prev.child(i)))\n if (Fragment.from(updated).eq(cur)) return {mark, type}\n}\n\nfunction looksLikeJoin(old, start, end, $newStart, $newEnd) {\n if (!$newStart.parent.isTextblock ||\n // The content must have shrunk\n end - start <= $newEnd.pos - $newStart.pos ||\n // newEnd must point directly at or after the end of the block that newStart points into\n skipClosingAndOpening($newStart, true, false) < $newEnd.pos)\n return false\n\n let $start = old.resolve(start)\n // Start must be at the end of a block\n if ($start.parentOffset < $start.parent.content.size || !$start.parent.isTextblock)\n return false\n let $next = old.resolve(skipClosingAndOpening($start, true, true))\n // The next textblock must start before end and end near it\n if (!$next.parent.isTextblock || $next.pos > end ||\n skipClosingAndOpening($next, true, false) < end)\n return false\n\n // The fragments after the join point must match\n return $newStart.parent.content.cut($newStart.parentOffset).eq($next.parent.content)\n}\n\nfunction skipClosingAndOpening($pos, fromEnd, mayOpen) {\n let depth = $pos.depth, end = fromEnd ? $pos.end() : $pos.pos\n while (depth > 0 && (fromEnd || $pos.indexAfter(depth) == $pos.node(depth).childCount)) {\n depth--\n end++\n fromEnd = false\n }\n if (mayOpen) {\n let next = $pos.node(depth).maybeChild($pos.indexAfter(depth))\n while (next && !next.isLeaf) {\n next = next.firstChild\n end++\n }\n }\n return end\n}\n\nfunction findDiff(a, b, pos, preferredPos, preferredSide) {\n let start = a.findDiffStart(b, pos)\n if (start == null) return null\n let {a: endA, b: endB} = a.findDiffEnd(b, pos + a.size, pos + b.size)\n if (preferredSide == \"end\") {\n let adjust = Math.max(0, start - Math.min(endA, endB))\n preferredPos -= endA + adjust - start\n }\n if (endA < start && a.size < b.size) {\n let move = preferredPos <= start && preferredPos >= endA ? start - preferredPos : 0\n start -= move\n endB = start + (endB - endA)\n endA = start\n } else if (endB < start) {\n let move = preferredPos <= start && preferredPos >= endB ? start - preferredPos : 0\n start -= move\n endA = start + (endA - endB)\n endB = start\n }\n return {start, endA, endB}\n}\n","import {Slice, Fragment, DOMParser, DOMSerializer} from \"prosemirror-model\"\n\nexport function serializeForClipboard(view, slice) {\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\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\n let firstChild = wrap.firstChild, needsWrap\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) wrapper.appendChild(wrap.firstChild)\n wrap.appendChild(wrapper)\n }\n firstChild = wrap.firstChild\n }\n\n if (firstChild && firstChild.nodeType == 1)\n firstChild.setAttribute(\"data-pm-slice\", `${openStart} ${openEnd} ${JSON.stringify(context)}`)\n\n let text = view.someProp(\"clipboardTextSerializer\", f => f(slice)) ||\n slice.content.textBetween(0, slice.content.size, \"\\n\\n\")\n\n return {dom: wrap, text}\n}\n\n// : (EditorView, string, string, ?bool, ResolvedPos) → ?Slice\n// Read a slice of content from the clipboard (or drop data).\nexport function parseFromClipboard(view, text, html, plainText, $context) {\n let dom, inCode = $context.parent.type.spec.code, slice\n if (!html && !text) return null\n let asText = text && (plainText || inCode || !html)\n if (asText) {\n view.someProp(\"transformPastedText\", f => { text = f(text, inCode || plainText) })\n if (inCode) return new Slice(Fragment.from(view.state.schema.text(text.replace(/\\r\\n?/g, \"\\n\"))), 0, 0)\n let parsed = view.someProp(\"clipboardTextParser\", f => f(text, $context, plainText))\n if (parsed) {\n slice = parsed\n } else {\n dom = document.createElement(\"div\")\n text.trim().split(/(?:\\r\\n?|\\n)+/).forEach(block => {\n dom.appendChild(document.createElement(\"p\")).textContent = block\n })\n }\n } else {\n view.someProp(\"transformPastedHTML\", f => { html = f(html) })\n dom = readHTML(html)\n }\n\n let contextNode = dom && dom.querySelector(\"[data-pm-slice]\")\n let sliceData = contextNode && /^(\\d+) (\\d+) (.*)/.exec(contextNode.getAttribute(\"data-pm-slice\"))\n if (!slice) {\n let parser = view.someProp(\"clipboardParser\") || view.someProp(\"domParser\") || DOMParser.fromSchema(view.state.schema)\n slice = parser.parseSlice(dom, {preserveWhitespace: !!(asText || sliceData), context: $context})\n }\n if (sliceData)\n slice = addContext(closeSlice(slice, +sliceData[1], +sliceData[2]), sliceData[3])\n else // HTML wasn't created by ProseMirror. Make sure top-level siblings are coherent\n slice = Slice.maxOpen(normalizeSiblings(slice.content, $context), false)\n\n view.someProp(\"transformPasted\", f => { slice = f(slice) })\n return slice\n}\n\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) 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) return\n let wrap = match.findWrapping(node.type), inLast\n if (!wrap) 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 } else {\n if (result.length) 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, wrapped.attrs)\n lastWrap = wrap\n }\n })\n if (result) return Fragment.from(result)\n }\n return fragment\n}\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\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) 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}\n\nfunction closeRight(node, depth) {\n if (depth == 0) 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}\n\nfunction closeRange(fragment, side, from, to, depth, openEnd) {\n let node = side < 0 ? fragment.firstChild : fragment.lastChild, inner = node.content\n if (depth < to - 1) inner = closeRange(inner, side, from, to, depth + 1, openEnd)\n if (depth >= from)\n inner = side < 0 ? node.contentMatchAt(0).fillBefore(inner, fragment.childCount > 1 || 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}\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\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// \"<td>..</td>\"` the table cells are ignored.\nconst wrapMap = {\n thead: [\"table\"],\n tbody: [\"table\"],\n tfoot: [\"table\"],\n caption: [\"table\"],\n colgroup: [\"table\"],\n col: [\"table\", \"colgroup\"],\n tr: [\"table\", \"tbody\"],\n td: [\"table\", \"tbody\", \"tr\"],\n th: [\"table\", \"tbody\", \"tr\"]\n}\n\nlet _detachedDoc = null\nfunction detachedDoc() {\n return _detachedDoc || (_detachedDoc = document.implementation.createHTMLDocument(\"title\"))\n}\n\nfunction readHTML(html) {\n let metas = /^(\\s*<meta [^>]*>)*/.exec(html)\n if (metas) html = html.slice(metas[0].length)\n let elt = detachedDoc().createElement(\"div\")\n let firstTag = /<([a-z][^>\\s]+)/i.exec(html), wrap\n if (wrap = firstTag && wrapMap[firstTag[1].toLowerCase()])\n html = wrap.map(n => \"<\" + n + \">\").join(\"\") + html + wrap.map(n => \"</\" + n + \">\").reverse().join(\"\")\n elt.innerHTML = html\n if (wrap) for (let i = 0; i < wrap.length; i++) elt = elt.querySelector(wrap[i]) || elt\n return elt\n}\n\nfunction addContext(slice, context) {\n if (!slice.size) return slice\n let schema = slice.content.firstChild.type.schema, array\n try { array = JSON.parse(context) }\n catch(e) { return slice }\n let {content, openStart, openEnd} = slice\n for (let i = array.length - 2; i >= 0; i -= 2) {\n let type = schema.nodes[array[i]]\n if (!type || type.hasRequiredAttrs()) break\n content = Fragment.from(type.create(array[i + 1], content))\n openStart++; openEnd++\n }\n return new Slice(content, openStart, openEnd)\n}\n","import browser from \"./browser\"\nimport {domIndex, isEquivalentPosition} from \"./dom\"\nimport {hasFocusAndSelection, hasSelection, selectionToDOM} from \"./selection\"\n\nconst observeOptions = {\n childList: true,\n characterData: true,\n characterDataOldValue: true,\n attributes: true,\n attributeOldValue: true,\n subtree: true\n}\n// IE11 has very broken mutation observers, so we also listen to DOMCharacterDataModified\nconst useCharData = browser.ie && browser.ie_version <= 11\n\nclass SelectionState {\n constructor() {\n this.anchorNode = this.anchorOffset = this.focusNode = this.focusOffset = null\n }\n\n set(sel) {\n this.anchorNode = sel.anchorNode; this.anchorOffset = sel.anchorOffset\n this.focusNode = sel.focusNode; this.focusOffset = sel.focusOffset\n }\n\n eq(sel) {\n return sel.anchorNode == this.anchorNode && sel.anchorOffset == this.anchorOffset &&\n sel.focusNode == this.focusNode && sel.focusOffset == this.focusOffset\n }\n}\n\nexport class DOMObserver {\n constructor(view, handleDOMChange) {\n this.view = view\n this.handleDOMChange = handleDOMChange\n this.queue = []\n this.flushingSoon = -1\n this.observer = window.MutationObserver &&\n new window.MutationObserver(mutations => {\n for (let i = 0; i < mutations.length; i++) this.queue.push(mutations[i])\n // IE11 will sometimes (on backspacing out a single character\n // text node after a BR node) call the observer callback\n // before actually updating the DOM, which will cause\n // ProseMirror to miss the change (see #930)\n if (browser.ie && browser.ie_version <= 11 && mutations.some(\n m => m.type == \"childList\" && m.removedNodes.length ||\n m.type == \"characterData\" && m.oldValue.length > m.target.nodeValue.length))\n this.flushSoon()\n else\n this.flush()\n })\n this.currentSelection = new SelectionState\n if (useCharData) {\n this.onCharData = e => {\n this.queue.push({target: e.target, type: \"characterData\", oldValue: e.prevValue})\n this.flushSoon()\n }\n }\n this.onSelectionChange = this.onSelectionChange.bind(this)\n this.suppressingSelectionUpdates = false\n }\n\n flushSoon() {\n if (this.flushingSoon < 0)\n this.flushingSoon = window.setTimeout(() => { this.flushingSoon = -1; this.flush() }, 20)\n }\n\n forceFlush() {\n if (this.flushingSoon > -1) {\n window.clearTimeout(this.flushingSoon)\n this.flushingSoon = -1\n this.flush()\n }\n }\n\n start() {\n if (this.observer)\n this.observer.observe(this.view.dom, observeOptions)\n if (useCharData)\n this.view.dom.addEventListener(\"DOMCharacterDataModified\", this.onCharData)\n this.connectSelection()\n }\n\n stop() {\n if (this.observer) {\n let take = this.observer.takeRecords()\n if (take.length) {\n for (let i = 0; i < take.length; i++) this.queue.push(take[i])\n window.setTimeout(() => this.flush(), 20)\n }\n this.observer.disconnect()\n }\n if (useCharData) this.view.dom.removeEventListener(\"DOMCharacterDataModified\", this.onCharData)\n this.disconnectSelection()\n }\n\n connectSelection() {\n this.view.dom.ownerDocument.addEventListener(\"selectionchange\", this.onSelectionChange)\n }\n\n disconnectSelection() {\n this.view.dom.ownerDocument.removeEventListener(\"selectionchange\", this.onSelectionChange)\n }\n\n suppressSelectionUpdates() {\n this.suppressingSelectionUpdates = true\n setTimeout(() => this.suppressingSelectionUpdates = false, 50)\n }\n\n onSelectionChange() {\n if (!hasFocusAndSelection(this.view)) return\n if (this.suppressingSelectionUpdates) return selectionToDOM(this.view)\n // Deletions on IE11 fire their events in the wrong order, giving\n // us a selection change event before the DOM changes are\n // reported.\n if (browser.ie && browser.ie_version <= 11 && !this.view.state.selection.empty) {\n let sel = this.view.root.getSelection()\n // Selection.isCollapsed isn't reliable on IE\n if (sel.focusNode && isEquivalentPosition(sel.focusNode, sel.focusOffset, sel.anchorNode, sel.anchorOffset))\n return this.flushSoon()\n }\n this.flush()\n }\n\n setCurSelection() {\n this.currentSelection.set(this.view.root.getSelection())\n }\n\n ignoreSelectionChange(sel) {\n if (sel.rangeCount == 0) return true\n let container = sel.getRangeAt(0).commonAncestorContainer\n let desc = this.view.docView.nearestDesc(container)\n if (desc && desc.ignoreMutation({type: \"selection\", target: container.nodeType == 3 ? container.parentNode : container})) {\n this.setCurSelection()\n return true\n }\n }\n\n flush() {\n if (!this.view.docView || this.flushingSoon > -1) return\n let mutations = this.observer ? this.observer.takeRecords() : []\n if (this.queue.length) {\n mutations = this.queue.concat(mutations)\n this.queue.length = 0\n }\n\n let sel = this.view.root.getSelection()\n let newSel = !this.suppressingSelectionUpdates && !this.currentSelection.eq(sel) && hasSelection(this.view) && !this.ignoreSelectionChange(sel)\n\n let from = -1, to = -1, typeOver = false, added = []\n if (this.view.editable) {\n for (let i = 0; i < mutations.length; i++) {\n let result = this.registerMutation(mutations[i], added)\n if (result) {\n from = from < 0 ? result.from : Math.min(result.from, from)\n to = to < 0 ? result.to : Math.max(result.to, to)\n if (result.typeOver) typeOver = true\n }\n }\n }\n\n if (browser.gecko && added.length > 1) {\n let brs = added.filter(n => n.nodeName == \"BR\")\n if (brs.length == 2) {\n let [a, b] = brs\n if (a.parentNode && a.parentNode.parentNode == b.parentNode) b.remove()\n else a.remove()\n }\n }\n\n if (from > -1 || newSel) {\n if (from > -1) {\n this.view.docView.markDirty(from, to)\n checkCSS(this.view)\n }\n this.handleDOMChange(from, to, typeOver, added)\n if (this.view.docView.dirty) this.view.updateState(this.view.state)\n else if (!this.currentSelection.eq(sel)) selectionToDOM(this.view)\n this.currentSelection.set(sel)\n }\n }\n\n registerMutation(mut, added) {\n // Ignore mutations inside nodes that were already noted as inserted\n if (added.indexOf(mut.target) > -1) return null\n let desc = this.view.docView.nearestDesc(mut.target)\n if (mut.type == \"attributes\" &&\n (desc == this.view.docView || mut.attributeName == \"contenteditable\" ||\n // Firefox sometimes fires spurious events for null/empty styles\n (mut.attributeName == \"style\" && !mut.oldValue && !mut.target.getAttribute(\"style\"))))\n return null\n if (!desc || desc.ignoreMutation(mut)) return null\n\n if (mut.type == \"childList\") {\n for (let i = 0; i < mut.addedNodes.length; i++) added.push(mut.addedNodes[i])\n if (desc.contentDOM && desc.contentDOM != desc.dom && !desc.contentDOM.contains(mut.target))\n return {from: desc.posBefore, to: desc.posAfter}\n let prev = mut.previousSibling, next = mut.nextSibling\n if (browser.ie && browser.ie_version <= 11 && mut.addedNodes.length) {\n // IE11 gives us incorrect next/prev siblings for some\n // insertions, so if there are added nodes, recompute those\n for (let i = 0; i < mut.addedNodes.length; i++) {\n let {previousSibling, nextSibling} = mut.addedNodes[i]\n if (!previousSibling || Array.prototype.indexOf.call(mut.addedNodes, previousSibling) < 0) prev = previousSibling\n if (!nextSibling || Array.prototype.indexOf.call(mut.addedNodes, nextSibling) < 0) next = nextSibling\n }\n }\n let fromOffset = prev && prev.parentNode == mut.target\n ? domIndex(prev) + 1 : 0\n let from = desc.localPosFromDOM(mut.target, fromOffset, -1)\n let toOffset = next && next.parentNode == mut.target\n ? domIndex(next) : mut.target.childNodes.length\n let to = desc.localPosFromDOM(mut.target, toOffset, 1)\n return {from, to}\n } else if (mut.type == \"attributes\") {\n return {from: desc.posAtStart - desc.border, to: desc.posAtEnd + desc.border}\n } else { // \"characterData\"\n return {\n from: desc.posAtStart,\n to: desc.posAtEnd,\n // An event was generated for a text change that didn't change\n // any text. Mark the dom change to fall back to assuming the\n // selection was typed over with an identical value if it can't\n // find another change.\n typeOver: mut.target.nodeValue == mut.oldValue\n }\n }\n }\n}\n\nlet cssChecked = false\n\nfunction checkCSS(view) {\n if (cssChecked) return\n cssChecked = true\n if (getComputedStyle(view.dom).whiteSpace == \"normal\")\n console[\"warn\"](\"ProseMirror expects the CSS white-space property to be set, preferably to 'pre-wrap'. It is recommended to load style/prosemirror.css from the prosemirror-view package.\")\n}\n","import {Selection, NodeSelection, TextSelection} from \"prosemirror-state\"\nimport {dropPoint} from \"prosemirror-transform\"\nimport {Slice} from \"prosemirror-model\"\n\nimport browser from \"./browser\"\nimport {captureKeyDown} from \"./capturekeys\"\nimport {readDOMChange} from \"./domchange\"\nimport {parseFromClipboard, serializeForClipboard} from \"./clipboard\"\nimport {DOMObserver} from \"./domobserver\"\nimport {selectionBetween, selectionToDOM, selectionFromDOM} from \"./selection\"\nimport {keyEvent} from \"./dom\"\n\n// A collection of DOM events that occur within the editor, and callback functions\n// to invoke when the event fires.\nconst handlers = {}, editHandlers = {}\n\nexport function initInput(view) {\n view.shiftKey = false\n view.mouseDown = null\n view.lastKeyCode = null\n view.lastKeyCodeTime = 0\n view.lastClick = {time: 0, x: 0, y: 0, type: \"\"}\n view.lastSelectionOrigin = null\n view.lastSelectionTime = 0\n\n view.lastIOSEnter = 0\n view.lastIOSEnterFallbackTimeout = null\n view.lastAndroidDelete = 0\n\n view.composing = false\n view.composingTimeout = null\n view.compositionNodes = []\n view.compositionEndedAt = -2e8\n\n view.domObserver = new DOMObserver(view, (from, to, typeOver, added) => readDOMChange(view, from, to, typeOver, added))\n view.domObserver.start()\n // Used by hacks like the beforeinput handler to check whether anything happened in the DOM\n view.domChangeCount = 0\n\n view.eventHandlers = Object.create(null)\n for (let event in handlers) {\n let handler = handlers[event]\n view.dom.addEventListener(event, view.eventHandlers[event] = event => {\n if (eventBelongsToView(view, event) && !runCustomHandler(view, event) &&\n (view.editable || !(event.type in editHandlers)))\n handler(view, event)\n })\n }\n // On Safari, for reasons beyond my understanding, adding an input\n // event handler makes an issue where the composition vanishes when\n // you press enter go away.\n if (browser.safari) view.dom.addEventListener(\"input\", () => null)\n\n ensureListeners(view)\n}\n\nfunction setSelectionOrigin(view, origin) {\n view.lastSelectionOrigin = origin\n view.lastSelectionTime = Date.now()\n}\n\nexport function destroyInput(view) {\n view.domObserver.stop()\n for (let type in view.eventHandlers)\n view.dom.removeEventListener(type, view.eventHandlers[type])\n clearTimeout(view.composingTimeout)\n clearTimeout(view.lastIOSEnterFallbackTimeout)\n}\n\nexport function ensureListeners(view) {\n view.someProp(\"handleDOMEvents\", currentHandlers => {\n for (let type in currentHandlers) if (!view.eventHandlers[type])\n view.dom.addEventListener(type, view.eventHandlers[type] = event => runCustomHandler(view, event))\n })\n}\n\nfunction runCustomHandler(view, event) {\n return view.someProp(\"handleDOMEvents\", handlers => {\n let handler = handlers[event.type]\n return handler ? handler(view, event) || event.defaultPrevented : false\n })\n}\n\nfunction eventBelongsToView(view, event) {\n if (!event.bubbles) return true\n if (event.defaultPrevented) return false\n for (let node = event.target; node != view.dom; node = node.parentNode)\n if (!node || node.nodeType == 11 ||\n (node.pmViewDesc && node.pmViewDesc.stopEvent(event)))\n return false\n return true\n}\n\nexport function dispatchEvent(view, event) {\n if (!runCustomHandler(view, event) && handlers[event.type] &&\n (view.editable || !(event.type in editHandlers)))\n handlers[event.type](view, event)\n}\n\neditHandlers.keydown = (view, event) => {\n view.shiftKey = event.keyCode == 16 || event.shiftKey\n if (inOrNearComposition(view, event)) return\n view.domObserver.forceFlush()\n view.lastKeyCode = event.keyCode\n view.lastKeyCodeTime = Date.now()\n // On iOS, if we preventDefault enter key presses, the virtual\n // keyboard gets confused. So the hack here is to set a flag that\n // makes the DOM change code recognize that what just happens should\n // be replaced by whatever the Enter key handlers do.\n if (browser.ios && event.keyCode == 13 && !event.ctrlKey && !event.altKey && !event.metaKey) {\n let now = Date.now()\n view.lastIOSEnter = now\n view.lastIOSEnterFallbackTimeout = setTimeout(() => {\n if (view.lastIOSEnter == now) {\n view.someProp(\"handleKeyDown\", f => f(view, keyEvent(13, \"Enter\")))\n view.lastIOSEnter = 0\n }\n }, 200)\n } else if (view.someProp(\"handleKeyDown\", f => f(view, event)) || captureKeyDown(view, event)) {\n event.preventDefault()\n } else {\n setSelectionOrigin(view, \"key\")\n }\n}\n\neditHandlers.keyup = (view, e) => {\n if (e.keyCode == 16) view.shiftKey = false\n}\n\neditHandlers.keypress = (view, event) => {\n if (inOrNearComposition(view, event) || !event.charCode ||\n event.ctrlKey && !event.altKey || browser.mac && event.metaKey) return\n\n if (view.someProp(\"handleKeyPress\", f => f(view, event))) {\n event.preventDefault()\n return\n }\n\n let sel = view.state.selection\n if (!(sel instanceof TextSelection) || !sel.$from.sameParent(sel.$to)) {\n let text = String.fromCharCode(event.charCode)\n if (!view.someProp(\"handleTextInput\", f => f(view, sel.$from.pos, sel.$to.pos, text)))\n view.dispatch(view.state.tr.insertText(text).scrollIntoView())\n event.preventDefault()\n }\n}\n\nfunction eventCoords(event) { return {left: event.clientX, top: event.clientY} }\n\nfunction isNear(event, click) {\n let dx = click.x - event.clientX, dy = click.y - event.clientY\n return dx * dx + dy * dy < 100\n}\n\nfunction runHandlerOnContext(view, propName, pos, inside, event) {\n if (inside == -1) return false\n let $pos = view.state.doc.resolve(inside)\n for (let i = $pos.depth + 1; i > 0; i--) {\n if (view.someProp(propName, f => i > $pos.depth ? f(view, pos, $pos.nodeAfter, $pos.before(i), event, true)\n : f(view, pos, $pos.node(i), $pos.before(i), event, false)))\n return true\n }\n return false\n}\n\nfunction updateSelection(view, selection, origin) {\n if (!view.focused) view.focus()\n let tr = view.state.tr.setSelection(selection)\n if (origin == \"pointer\") tr.setMeta(\"pointer\", true)\n view.dispatch(tr)\n}\n\nfunction selectClickedLeaf(view, inside) {\n if (inside == -1) return false\n let $pos = view.state.doc.resolve(inside), node = $pos.nodeAfter\n if (node && node.isAtom && NodeSelection.isSelectable(node)) {\n updateSelection(view, new NodeSelection($pos), \"pointer\")\n return true\n }\n return false\n}\n\nfunction selectClickedNode(view, inside) {\n if (inside == -1) return false\n let sel = view.state.selection, selectedNode, selectAt\n if (sel instanceof NodeSelection) selectedNode = sel.node\n\n let $pos = view.state.doc.resolve(inside)\n for (let i = $pos.depth + 1; i > 0; i--) {\n let node = i > $pos.depth ? $pos.nodeAfter : $pos.node(i)\n if (NodeSelection.isSelectable(node)) {\n if (selectedNode && sel.$from.depth > 0 &&\n i >= sel.$from.depth && $pos.before(sel.$from.depth + 1) == sel.$from.pos)\n selectAt = $pos.before(sel.$from.depth)\n else\n selectAt = $pos.before(i)\n break\n }\n }\n\n if (selectAt != null) {\n updateSelection(view, NodeSelection.create(view.state.doc, selectAt), \"pointer\")\n return true\n } else {\n return false\n }\n}\n\nfunction handleSingleClick(view, pos, inside, event, selectNode) {\n return runHandlerOnContext(view, \"handleClickOn\", pos, inside, event) ||\n view.someProp(\"handleClick\", f => f(view, pos, event)) ||\n (selectNode ? selectClickedNode(view, inside) : selectClickedLeaf(view, inside))\n}\n\nfunction handleDoubleClick(view, pos, inside, event) {\n return runHandlerOnContext(view, \"handleDoubleClickOn\", pos, inside, event) ||\n view.someProp(\"handleDoubleClick\", f => f(view, pos, event))\n}\n\nfunction handleTripleClick(view, pos, inside, event) {\n return runHandlerOnContext(view, \"handleTripleClickOn\", pos, inside, event) ||\n view.someProp(\"handleTripleClick\", f => f(view, pos, event)) ||\n defaultTripleClick(view, inside)\n}\n\nfunction defaultTripleClick(view, inside) {\n let doc = view.state.doc\n if (inside == -1) {\n if (doc.inlineContent) {\n updateSelection(view, TextSelection.create(doc, 0, doc.content.size), \"pointer\")\n return true\n }\n return false\n }\n\n let $pos = doc.resolve(inside)\n for (let i = $pos.depth + 1; i > 0; i--) {\n let node = i > $pos.depth ? $pos.nodeAfter : $pos.node(i)\n let nodePos = $pos.before(i)\n if (node.inlineContent)\n updateSelection(view, TextSelection.create(doc, nodePos + 1, nodePos + 1 + node.content.size), \"pointer\")\n else if (NodeSelection.isSelectable(node))\n updateSelection(view, NodeSelection.create(doc, nodePos), \"pointer\")\n else\n continue\n return true\n }\n}\n\nfunction forceDOMFlush(view) {\n return endComposition(view)\n}\n\nconst selectNodeModifier = browser.mac ? \"metaKey\" : \"ctrlKey\"\n\nhandlers.mousedown = (view, event) => {\n view.shiftKey = event.shiftKey\n let flushed = forceDOMFlush(view)\n let now = Date.now(), type = \"singleClick\"\n if (now - view.lastClick.time < 500 && isNear(event, view.lastClick) && !event[selectNodeModifier]) {\n if (view.lastClick.type == \"singleClick\") type = \"doubleClick\"\n else if (view.lastClick.type == \"doubleClick\") type = \"tripleClick\"\n }\n view.lastClick = {time: now, x: event.clientX, y: event.clientY, type}\n\n let pos = view.posAtCoords(eventCoords(event))\n if (!pos) return\n\n if (type == \"singleClick\") {\n if (view.mouseDown) view.mouseDown.done()\n view.mouseDown = new MouseDown(view, pos, event, flushed)\n } else if ((type == \"doubleClick\" ? handleDoubleClick : handleTripleClick)(view, pos.pos, pos.inside, event)) {\n event.preventDefault()\n } else {\n setSelectionOrigin(view, \"pointer\")\n }\n}\n\nclass MouseDown {\n constructor(view, pos, event, flushed) {\n this.view = view\n this.startDoc = view.state.doc\n this.pos = pos\n this.event = event\n this.flushed = flushed\n this.selectNode = event[selectNodeModifier]\n this.allowDefault = event.shiftKey\n\n let targetNode, targetPos\n if (pos.inside > -1) {\n targetNode = view.state.doc.nodeAt(pos.inside)\n targetPos = pos.inside\n } else {\n let $pos = view.state.doc.resolve(pos.pos)\n targetNode = $pos.parent\n targetPos = $pos.depth ? $pos.before() : 0\n }\n\n this.mightDrag = null\n\n const target = flushed ? null : event.target\n const targetDesc = target ? view.docView.nearestDesc(target, true) : null\n this.target = targetDesc ? targetDesc.dom : null\n\n let {selection} = view.state\n if (targetNode.type.spec.draggable && targetNode.type.spec.selectable !== false ||\n selection instanceof NodeSelection && selection.from <= targetPos && selection.to > targetPos)\n this.mightDrag = {node: targetNode,\n pos: targetPos,\n addAttr: this.target && !this.target.draggable,\n setUneditable: this.target && browser.gecko && !this.target.hasAttribute(\"contentEditable\")}\n\n if (this.target && this.mightDrag && (this.mightDrag.addAttr || this.mightDrag.setUneditable)) {\n this.view.domObserver.stop()\n if (this.mightDrag.addAttr) this.target.draggable = true\n if (this.mightDrag.setUneditable)\n setTimeout(() => {\n if (this.view.mouseDown == this) this.target.setAttribute(\"contentEditable\", \"false\")\n }, 20)\n this.view.domObserver.start()\n }\n\n view.root.addEventListener(\"mouseup\", this.up = this.up.bind(this))\n view.root.addEventListener(\"mousemove\", this.move = this.move.bind(this))\n setSelectionOrigin(view, \"pointer\")\n }\n\n done() {\n this.view.root.removeEventListener(\"mouseup\", this.up)\n this.view.root.removeEventListener(\"mousemove\", this.move)\n if (this.mightDrag && this.target) {\n this.view.domObserver.stop()\n if (this.mightDrag.addAttr) this.target.removeAttribute(\"draggable\")\n if (this.mightDrag.setUneditable) this.target.removeAttribute(\"contentEditable\")\n this.view.domObserver.start()\n }\n this.view.mouseDown = null\n }\n\n up(event) {\n this.done()\n\n if (!this.view.dom.contains(event.target.nodeType == 3 ? event.target.parentNode : event.target))\n return\n\n let pos = this.pos\n if (this.view.state.doc != this.startDoc) pos = this.view.posAtCoords(eventCoords(event))\n\n if (this.allowDefault || !pos) {\n setSelectionOrigin(this.view, \"pointer\")\n } else if (handleSingleClick(this.view, pos.pos, pos.inside, event, this.selectNode)) {\n event.preventDefault()\n } else if (this.flushed ||\n // Safari ignores clicks on draggable elements\n (browser.safari && this.mightDrag && !this.mightDrag.node.isAtom) ||\n // Chrome will sometimes treat a node selection as a\n // cursor, but still report that the node is selected\n // when asked through getSelection. You'll then get a\n // situation where clicking at the point where that\n // (hidden) cursor is doesn't change the selection, and\n // thus doesn't get a reaction from ProseMirror. This\n // works around that.\n (browser.chrome && !(this.view.state.selection instanceof TextSelection) &&\n Math.min(Math.abs(pos.pos - this.view.state.selection.from),\n Math.abs(pos.pos - this.view.state.selection.to)) <= 2)) {\n updateSelection(this.view, Selection.near(this.view.state.doc.resolve(pos.pos)), \"pointer\")\n event.preventDefault()\n } else {\n setSelectionOrigin(this.view, \"pointer\")\n }\n }\n\n move(event) {\n if (!this.allowDefault && (Math.abs(this.event.x - event.clientX) > 4 ||\n Math.abs(this.event.y - event.clientY) > 4))\n this.allowDefault = true\n setSelectionOrigin(this.view, \"pointer\")\n if (event.buttons == 0) this.done()\n }\n}\n\nhandlers.touchdown = view => {\n forceDOMFlush(view)\n setSelectionOrigin(view, \"pointer\")\n}\n\nhandlers.contextmenu = view => forceDOMFlush(view)\n\nfunction inOrNearComposition(view, event) {\n if (view.composing) return true\n // See https://www.stum.de/2016/06/24/handling-ime-events-in-javascript/.\n // On Japanese input method editors (IMEs), the Enter key is used to confirm character\n // selection. On Safari, when Enter is pressed, compositionend and keydown events are\n // emitted. The keydown event triggers newline insertion, which we don't want.\n // This method returns true if the keydown event should be ignored.\n // We only ignore it once, as pressing Enter a second time *should* insert a newline.\n // Furthermore, the keydown event timestamp must be close to the compositionEndedAt timestamp.\n // This guards against the case where compositionend is triggered without the keyboard\n // (e.g. character confirmation may be done with the mouse), and keydown is triggered\n // afterwards- we wouldn't want to ignore the keydown event in this case.\n if (browser.safari && Math.abs(event.timeStamp - view.compositionEndedAt) < 500) {\n view.compositionEndedAt = -2e8\n return true\n }\n return false\n}\n\n// Drop active composition after 5 seconds of inactivity on Android\nconst timeoutComposition = browser.android ? 5000 : -1\n\neditHandlers.compositionstart = editHandlers.compositionupdate = view => {\n if (!view.composing) {\n view.domObserver.flush()\n let {state} = view, $pos = state.selection.$from\n if (state.selection.empty &&\n (state.storedMarks ||\n (!$pos.textOffset && $pos.parentOffset && $pos.nodeBefore.marks.some(m => m.type.spec.inclusive === false)))) {\n // Need to wrap the cursor in mark nodes different from the ones in the DOM context\n view.markCursor = view.state.storedMarks || $pos.marks()\n endComposition(view, true)\n view.markCursor = null\n } else {\n endComposition(view)\n // In firefox, if the cursor is after but outside a marked node,\n // the inserted text won't inherit the marks. So this moves it\n // inside if necessary.\n if (browser.gecko && state.selection.empty && $pos.parentOffset && !$pos.textOffset && $pos.nodeBefore.marks.length) {\n let sel = view.root.getSelection()\n for (let node = sel.focusNode, offset = sel.focusOffset; node && node.nodeType == 1 && offset != 0;) {\n let before = offset < 0 ? node.lastChild : node.childNodes[offset - 1]\n if (!before) break\n if (before.nodeType == 3) {\n sel.collapse(before, before.nodeValue.length)\n break\n } else {\n node = before\n offset = -1\n }\n }\n }\n }\n view.composing = true\n }\n scheduleComposeEnd(view, timeoutComposition)\n}\n\neditHandlers.compositionend = (view, event) => {\n if (view.composing) {\n view.composing = false\n view.compositionEndedAt = event.timeStamp\n scheduleComposeEnd(view, 20)\n }\n}\n\nfunction scheduleComposeEnd(view, delay) {\n clearTimeout(view.composingTimeout)\n if (delay > -1) view.composingTimeout = setTimeout(() => endComposition(view), delay)\n}\n\nexport function clearComposition(view) {\n view.composing = false\n while (view.compositionNodes.length > 0) view.compositionNodes.pop().markParentsDirty()\n}\n\nexport function endComposition(view, forceUpdate) {\n view.domObserver.forceFlush()\n clearComposition(view)\n if (forceUpdate || view.docView.dirty) {\n let sel = selectionFromDOM(view)\n if (sel && !sel.eq(view.state.selection)) view.dispatch(view.state.tr.setSelection(sel))\n else view.updateState(view.state)\n return true\n }\n return false\n}\n\nfunction captureCopy(view, dom) {\n // The extra wrapper is somehow necessary on IE/Edge to prevent the\n // content from being mangled when it is put onto the clipboard\n if (!view.dom.parentNode) return\n let wrap = view.dom.parentNode.appendChild(document.createElement(\"div\"))\n wrap.appendChild(dom)\n wrap.style.cssText = \"position: fixed; left: -10000px; top: 10px\"\n let sel = getSelection(), range = document.createRange()\n range.selectNodeContents(dom)\n // Done because IE will fire a selectionchange moving the selection\n // to its start when removeAllRanges is called and the editor still\n // has focus (which will mess up the editor's selection state).\n view.dom.blur()\n sel.removeAllRanges()\n sel.addRange(range)\n setTimeout(() => {\n if (wrap.parentNode) wrap.parentNode.removeChild(wrap)\n view.focus()\n }, 50)\n}\n\n// This is very crude, but unfortunately both these browsers _pretend_\n// that they have a clipboard API—all the objects and methods are\n// there, they just don't work, and they are hard to test.\nconst brokenClipboardAPI = (browser.ie && browser.ie_version < 15) ||\n (browser.ios && browser.webkit_version < 604)\n\nhandlers.copy = editHandlers.cut = (view, e) => {\n let sel = view.state.selection, cut = e.type == \"cut\"\n if (sel.empty) return\n\n // IE and Edge's clipboard interface is completely broken\n let data = brokenClipboardAPI ? null : e.clipboardData\n let slice = sel.content(), {dom, text} = serializeForClipboard(view, slice)\n if (data) {\n e.preventDefault()\n data.clearData()\n data.setData(\"text/html\", dom.innerHTML)\n data.setData(\"text/plain\", text)\n } else {\n captureCopy(view, dom)\n }\n if (cut) view.dispatch(view.state.tr.deleteSelection().scrollIntoView().setMeta(\"uiEvent\", \"cut\"))\n}\n\nfunction sliceSingleNode(slice) {\n return slice.openStart == 0 && slice.openEnd == 0 && slice.content.childCount == 1 ? slice.content.firstChild : null\n}\n\nfunction capturePaste(view, e) {\n if (!view.dom.parentNode) return\n let plainText = view.shiftKey || view.state.selection.$from.parent.type.spec.code\n let target = view.dom.parentNode.appendChild(document.createElement(plainText ? \"textarea\" : \"div\"))\n if (!plainText) target.contentEditable = \"true\"\n target.style.cssText = \"position: fixed; left: -10000px; top: 10px\"\n target.focus()\n setTimeout(() => {\n view.focus()\n if (target.parentNode) target.parentNode.removeChild(target)\n if (plainText) doPaste(view, target.value, null, e)\n else doPaste(view, target.textContent, target.innerHTML, e)\n }, 50)\n}\n\nfunction doPaste(view, text, html, e) {\n let slice = parseFromClipboard(view, text, html, view.shiftKey, view.state.selection.$from)\n if (view.someProp(\"handlePaste\", f => f(view, e, slice || Slice.empty))) return true\n if (!slice) return false\n\n let singleNode = sliceSingleNode(slice)\n let tr = singleNode ? view.state.tr.replaceSelectionWith(singleNode, view.shiftKey) : view.state.tr.replaceSelection(slice)\n view.dispatch(tr.scrollIntoView().setMeta(\"paste\", true).setMeta(\"uiEvent\", \"paste\"))\n return true\n}\n\neditHandlers.paste = (view, e) => {\n let data = brokenClipboardAPI ? null : e.clipboardData\n if (data && doPaste(view, data.getData(\"text/plain\"), data.getData(\"text/html\"), e)) e.preventDefault()\n else capturePaste(view, e)\n}\n\nclass Dragging {\n constructor(slice, move) {\n this.slice = slice\n this.move = move\n }\n}\n\nconst dragCopyModifier = browser.mac ? \"altKey\" : \"ctrlKey\"\n\nhandlers.dragstart = (view, e) => {\n let mouseDown = view.mouseDown\n if (mouseDown) mouseDown.done()\n if (!e.dataTransfer) return\n\n let sel = view.state.selection\n let pos = sel.empty ? null : view.posAtCoords(eventCoords(e))\n if (pos && pos.pos >= sel.from && pos.pos <= (sel instanceof NodeSelection ? sel.to - 1: sel.to)) {\n // In selection\n } else if (mouseDown && mouseDown.mightDrag) {\n view.dispatch(view.state.tr.setSelection(NodeSelection.create(view.state.doc, mouseDown.mightDrag.pos)))\n } else if (e.target && e.target.nodeType == 1) {\n let desc = view.docView.nearestDesc(e.target, true)\n if (!desc || !desc.node.type.spec.draggable || desc == view.docView) return\n view.dispatch(view.state.tr.setSelection(NodeSelection.create(view.state.doc, desc.posBefore)))\n }\n let slice = view.state.selection.content(), {dom, text} = serializeForClipboard(view, slice)\n e.dataTransfer.clearData()\n e.dataTransfer.setData(brokenClipboardAPI ? \"Text\" : \"text/html\", dom.innerHTML)\n // See https://github.com/ProseMirror/prosemirror/issues/1156\n e.dataTransfer.effectAllowed = \"copyMove\"\n if (!brokenClipboardAPI) e.dataTransfer.setData(\"text/plain\", text)\n view.dragging = new Dragging(slice, !e[dragCopyModifier])\n}\n\nhandlers.dragend = view => {\n let dragging = view.dragging\n window.setTimeout(() => {\n if (view.dragging == dragging) view.dragging = null\n }, 50)\n}\n\neditHandlers.dragover = editHandlers.dragenter = (_, e) => e.preventDefault()\n\neditHandlers.drop = (view, e) => {\n let dragging = view.dragging\n view.dragging = null\n\n if (!e.dataTransfer) return\n\n let eventPos = view.posAtCoords(eventCoords(e))\n if (!eventPos) return\n let $mouse = view.state.doc.resolve(eventPos.pos)\n if (!$mouse) return\n let slice = dragging && dragging.slice\n if (slice) {\n view.someProp(\"transformPasted\", f => { slice = f(slice) })\n } else {\n slice = parseFromClipboard(view, e.dataTransfer.getData(brokenClipboardAPI ? \"Text\" : \"text/plain\"),\n brokenClipboardAPI ? null : e.dataTransfer.getData(\"text/html\"), false, $mouse)\n }\n let move = dragging && !e[dragCopyModifier]\n if (view.someProp(\"handleDrop\", f => f(view, e, slice || Slice.empty, move))) {\n e.preventDefault()\n return\n }\n if (!slice) return\n\n e.preventDefault()\n let insertPos = slice ? dropPoint(view.state.doc, $mouse.pos, slice) : $mouse.pos\n if (insertPos == null) insertPos = $mouse.pos\n\n let tr = view.state.tr\n if (move) tr.deleteSelection()\n\n let pos = tr.mapping.map(insertPos)\n let isNode = slice.openStart == 0 && slice.openEnd == 0 && slice.content.childCount == 1\n let beforeInsert = tr.doc\n if (isNode)\n tr.replaceRangeWith(pos, pos, slice.content.firstChild)\n else\n tr.replaceRange(pos, pos, slice)\n if (tr.doc.eq(beforeInsert)) return\n\n let $pos = tr.doc.resolve(pos)\n if (isNode && NodeSelection.isSelectable(slice.content.firstChild) &&\n $pos.nodeAfter && $pos.nodeAfter.sameMarkup(slice.content.firstChild)) {\n tr.setSelection(new NodeSelection($pos))\n } else {\n let end = tr.mapping.map(insertPos)\n tr.mapping.maps[tr.mapping.maps.length - 1].forEach((_from, _to, _newFrom, newTo) => end = newTo)\n tr.setSelection(selectionBetween(view, $pos, tr.doc.resolve(end)))\n }\n view.focus()\n view.dispatch(tr.setMeta(\"uiEvent\", \"drop\"))\n}\n\nhandlers.focus = view => {\n if (!view.focused) {\n view.domObserver.stop()\n view.dom.classList.add(\"ProseMirror-focused\")\n view.domObserver.start()\n view.focused = true\n setTimeout(() => {\n if (view.docView && view.hasFocus() && !view.domObserver.currentSelection.eq(view.root.getSelection()))\n selectionToDOM(view)\n }, 20)\n }\n}\n\nhandlers.blur = view => {\n if (view.focused) {\n view.domObserver.stop()\n view.dom.classList.remove(\"ProseMirror-focused\")\n view.domObserver.start()\n view.domObserver.currentSelection.set({})\n view.focused = false\n }\n}\n\nhandlers.beforeinput = (view, event) => {\n // We should probably do more with beforeinput events, but support\n // is so spotty that I'm still waiting to see where they are going.\n\n // Very specific hack to deal with backspace sometimes failing on\n // Chrome Android when after an uneditable node.\n if (browser.chrome && browser.android && event.inputType == \"deleteContentBackward\") {\n let {domChangeCount} = view\n setTimeout(() => {\n if (view.domChangeCount != domChangeCount) return // Event already had some effect\n // This bug tends to close the virtual keyboard, so we refocus\n view.dom.blur()\n view.focus()\n if (view.someProp(\"handleKeyDown\", f => f(view, keyEvent(8, \"Backspace\")))) return\n let {$cursor} = view.state.selection\n // Crude approximation of backspace behavior when no command handled it\n if ($cursor && $cursor.pos > 0) view.dispatch(view.state.tr.delete($cursor.pos - 1, $cursor.pos).scrollIntoView())\n }, 50)\n }\n}\n\n// Make sure all handlers get registered\nfor (let prop in editHandlers) handlers[prop] = editHandlers[prop]\n","function compareObjs(a, b) {\n if (a == b) return true\n for (let p in a) if (a[p] !== b[p]) return false\n for (let p in b) if (!(p in a)) return false\n return true\n}\n\nclass WidgetType {\n constructor(toDOM, spec) {\n this.spec = spec || noSpec\n this.side = this.spec.side || 0\n this.toDOM = toDOM\n }\n\n map(mapping, span, offset, oldOffset) {\n let {pos, deleted} = mapping.mapResult(span.from + oldOffset, this.side < 0 ? -1 : 1)\n return deleted ? null : new Decoration(pos - offset, pos - offset, this)\n }\n\n valid() { return true }\n\n eq(other) {\n return this == other ||\n (other instanceof WidgetType &&\n (this.spec.key && this.spec.key == other.spec.key ||\n this.toDOM == other.toDOM && compareObjs(this.spec, other.spec)))\n }\n}\n\nclass InlineType {\n constructor(attrs, spec) {\n this.spec = spec || noSpec\n this.attrs = attrs\n }\n\n map(mapping, span, offset, oldOffset) {\n let from = mapping.map(span.from + oldOffset, this.spec.inclusiveStart ? -1 : 1) - offset\n let to = mapping.map(span.to + oldOffset, this.spec.inclusiveEnd ? 1 : -1) - offset\n return from >= to ? null : new Decoration(from, to, this)\n }\n\n valid(_, span) { return span.from < span.to }\n\n eq(other) {\n return this == other ||\n (other instanceof InlineType && compareObjs(this.attrs, other.attrs) &&\n compareObjs(this.spec, other.spec))\n }\n\n static is(span) { return span.type instanceof InlineType }\n}\n\nclass NodeType {\n constructor(attrs, spec) {\n this.spec = spec || noSpec\n this.attrs = attrs\n }\n\n map(mapping, span, offset, oldOffset) {\n let from = mapping.mapResult(span.from + oldOffset, 1)\n if (from.deleted) return null\n let to = mapping.mapResult(span.to + oldOffset, -1)\n if (to.deleted || to.pos <= from.pos) return null\n return new Decoration(from.pos - offset, to.pos - offset, this)\n }\n\n valid(node, span) {\n let {index, offset} = node.content.findIndex(span.from)\n return offset == span.from && offset + node.child(index).nodeSize == span.to\n }\n\n eq(other) {\n return this == other ||\n (other instanceof NodeType && compareObjs(this.attrs, other.attrs) &&\n compareObjs(this.spec, other.spec))\n }\n}\n\n// ::- Decoration objects can be provided to the view through the\n// [`decorations` prop](#view.EditorProps.decorations). They come in\n// several variants—see the static members of this class for details.\nexport class Decoration {\n constructor(from, to, type) {\n // :: number\n // The start position of the decoration.\n this.from = from\n // :: number\n // The end position. Will be the same as `from` for [widget\n // decorations](#view.Decoration^widget).\n this.to = to\n this.type = type\n }\n\n copy(from, to) {\n return new Decoration(from, to, this.type)\n }\n\n eq(other, offset = 0) {\n return this.type.eq(other.type) && this.from + offset == other.from && this.to + offset == other.to\n }\n\n map(mapping, offset, oldOffset) {\n return this.type.map(mapping, this, offset, oldOffset)\n }\n\n // :: (number, union<(view: EditorView, getPos: () → number) → dom.Node, dom.Node>, ?Object) → Decoration\n // Creates a widget decoration, which is a DOM node that's shown in\n // the document at the given position. It is recommended that you\n // delay rendering the widget by passing a function that will be\n // called when the widget is actually drawn in a view, but you can\n // also directly pass a DOM node. `getPos` can be used to find the\n // widget's current document position.\n //\n // spec::- These options are supported:\n //\n // side:: ?number\n // Controls which side of the document position this widget is\n // associated with. When negative, it is drawn before a cursor\n // at its position, and content inserted at that position ends\n // up after the widget. When zero (the default) or positive, the\n // widget is drawn after the cursor and content inserted there\n // ends up before the widget.\n //\n // When there are multiple widgets at a given position, their\n // `side` values determine the order in which they appear. Those\n // with lower values appear first. The ordering of widgets with\n // the same `side` value is unspecified.\n //\n // When `marks` is null, `side` also determines the marks that\n // the widget is wrapped in—those of the node before when\n // negative, those of the node after when positive.\n //\n // marks:: ?[Mark]\n // The precise set of marks to draw around the widget.\n //\n // stopEvent:: ?(event: dom.Event) → bool\n // Can be used to control which DOM events, when they bubble out\n // of this widget, the editor view should ignore.\n //\n // ignoreSelection:: ?bool\n // When set (defaults to false), selection changes inside the\n // widget are ignored, and don't cause ProseMirror to try and\n // re-sync the selection with its selection state.\n //\n // key:: ?string\n // When comparing decorations of this type (in order to decide\n // whether it needs to be redrawn), ProseMirror will by default\n // compare the widget DOM node by identity. If you pass a key,\n // that key will be compared instead, which can be useful when\n // you generate decorations on the fly and don't want to store\n // and reuse DOM nodes. Make sure that any widgets with the same\n // key are interchangeable—if widgets differ in, for example,\n // the behavior of some event handler, they should get\n // different keys.\n static widget(pos, toDOM, spec) {\n return new Decoration(pos, pos, new WidgetType(toDOM, spec))\n }\n\n // :: (number, number, DecorationAttrs, ?Object) → Decoration\n // Creates an inline decoration, which adds the given attributes to\n // each inline node between `from` and `to`.\n //\n // spec::- These options are recognized:\n //\n // inclusiveStart:: ?bool\n // Determines how the left side of the decoration is\n // [mapped](#transform.Position_Mapping) when content is\n // inserted directly at that position. By default, the decoration\n // won't include the new content, but you can set this to `true`\n // to make it inclusive.\n //\n // inclusiveEnd:: ?bool\n // Determines how the right side of the decoration is mapped.\n // See\n // [`inclusiveStart`](#view.Decoration^inline^spec.inclusiveStart).\n static inline(from, to, attrs, spec) {\n return new Decoration(from, to, new InlineType(attrs, spec))\n }\n\n // :: (number, number, DecorationAttrs, ?Object) → Decoration\n // Creates a node decoration. `from` and `to` should point precisely\n // before and after a node in the document. That node, and only that\n // node, will receive the given attributes.\n //\n // spec::-\n //\n // Optional information to store with the decoration. It\n // is also used when comparing decorators for equality.\n static node(from, to, attrs, spec) {\n return new Decoration(from, to, new NodeType(attrs, spec))\n }\n\n // :: Object\n // The spec provided when creating this decoration. Can be useful\n // if you've stored extra information in that object.\n get spec() { return this.type.spec }\n\n get inline() { return this.type instanceof InlineType }\n}\n\n// DecorationAttrs:: interface\n// A set of attributes to add to a decorated node. Most properties\n// simply directly correspond to DOM attributes of the same name,\n// which will be set to the property's value. These are exceptions:\n//\n// class:: ?string\n// A CSS class name or a space-separated set of class names to be\n// _added_ to the classes that the node already had.\n//\n// style:: ?string\n// A string of CSS to be _added_ to the node's existing `style` property.\n//\n// nodeName:: ?string\n// When non-null, the target node is wrapped in a DOM element of\n// this type (and the other attributes are applied to this element).\n\nconst none = [], noSpec = {}\n\n// :: class extends DecorationSource\n// A collection of [decorations](#view.Decoration), organized in\n// such a way that the drawing algorithm can efficiently use and\n// compare them. This is a persistent data structure—it is not\n// modified, updates create a new value.\nexport class DecorationSet {\n constructor(local, children) {\n this.local = local && local.length ? local : none\n this.children = children && children.length ? children : none\n }\n\n // :: (Node, [Decoration]) → DecorationSet\n // Create a set of decorations, using the structure of the given\n // document.\n static create(doc, decorations) {\n return decorations.length ? buildTree(decorations, doc, 0, noSpec) : empty\n }\n\n // :: (?number, ?number, ?(spec: Object) → bool) → [Decoration]\n // Find all decorations in this set which touch the given range\n // (including decorations that start or end directly at the\n // boundaries) and match the given predicate on their spec. When\n // `start` and `end` are omitted, all decorations in the set are\n // considered. When `predicate` isn't given, all decorations are\n // assumed to match.\n find(start, end, predicate) {\n let result = []\n this.findInner(start == null ? 0 : start, end == null ? 1e9 : end, result, 0, predicate)\n return result\n }\n\n findInner(start, end, result, offset, predicate) {\n for (let i = 0; i < this.local.length; i++) {\n let span = this.local[i]\n if (span.from <= end && span.to >= start && (!predicate || predicate(span.spec)))\n result.push(span.copy(span.from + offset, span.to + offset))\n }\n for (let i = 0; i < this.children.length; i += 3) {\n if (this.children[i] < end && this.children[i + 1] > start) {\n let childOff = this.children[i] + 1\n this.children[i + 2].findInner(start - childOff, end - childOff, result, offset + childOff, predicate)\n }\n }\n }\n\n // :: (Mapping, Node, ?Object) → DecorationSet\n // Map the set of decorations in response to a change in the\n // document.\n //\n // options::- An optional set of options.\n //\n // onRemove:: ?(decorationSpec: Object)\n // When given, this function will be called for each decoration\n // that gets dropped as a result of the mapping, passing the\n // spec of that decoration.\n map(mapping, doc, options) {\n if (this == empty || mapping.maps.length == 0) return this\n return this.mapInner(mapping, doc, 0, 0, options || noSpec)\n }\n\n mapInner(mapping, node, offset, oldOffset, options) {\n let newLocal\n for (let i = 0; i < this.local.length; i++) {\n let mapped = this.local[i].map(mapping, offset, oldOffset)\n if (mapped && mapped.type.valid(node, mapped)) (newLocal || (newLocal = [])).push(mapped)\n else if (options.onRemove) options.onRemove(this.local[i].spec)\n }\n\n if (this.children.length)\n return mapChildren(this.children, newLocal, mapping, node, offset, oldOffset, options)\n else\n return newLocal ? new DecorationSet(newLocal.sort(byPos)) : empty\n }\n\n // :: (Node, [Decoration]) → DecorationSet\n // Add the given array of decorations to the ones in the set,\n // producing a new set. Needs access to the current document to\n // create the appropriate tree structure.\n add(doc, decorations) {\n if (!decorations.length) return this\n if (this == empty) return DecorationSet.create(doc, decorations)\n return this.addInner(doc, decorations, 0)\n }\n\n addInner(doc, decorations, offset) {\n let children, childIndex = 0\n doc.forEach((childNode, childOffset) => {\n let baseOffset = childOffset + offset, found\n if (!(found = takeSpansForNode(decorations, childNode, baseOffset))) return\n\n if (!children) children = this.children.slice()\n while (childIndex < children.length && children[childIndex] < childOffset) childIndex += 3\n if (children[childIndex] == childOffset)\n children[childIndex + 2] = children[childIndex + 2].addInner(childNode, found, baseOffset + 1)\n else\n children.splice(childIndex, 0, childOffset, childOffset + childNode.nodeSize, buildTree(found, childNode, baseOffset + 1, noSpec))\n childIndex += 3\n })\n\n let local = moveSpans(childIndex ? withoutNulls(decorations) : decorations, -offset)\n for (let i = 0; i < local.length; i++) if (!local[i].type.valid(doc, local[i])) local.splice(i--, 1)\n\n return new DecorationSet(local.length ? this.local.concat(local).sort(byPos) : this.local,\n children || this.children)\n }\n\n // :: ([Decoration]) → DecorationSet\n // Create a new set that contains the decorations in this set, minus\n // the ones in the given array.\n remove(decorations) {\n if (decorations.length == 0 || this == empty) return this\n return this.removeInner(decorations, 0)\n }\n\n removeInner(decorations, offset) {\n let children = this.children, local = this.local\n for (let i = 0; i < children.length; i += 3) {\n let found, from = children[i] + offset, to = children[i + 1] + offset\n for (let j = 0, span; j < decorations.length; j++) if (span = decorations[j]) {\n if (span.from > from && span.to < to) {\n decorations[j] = null\n ;(found || (found = [])).push(span)\n }\n }\n if (!found) continue\n if (children == this.children) children = this.children.slice()\n let removed = children[i + 2].removeInner(found, from + 1)\n if (removed != empty) {\n children[i + 2] = removed\n } else {\n children.splice(i, 3)\n i -= 3\n }\n }\n if (local.length) for (let i = 0, span; i < decorations.length; i++) if (span = decorations[i]) {\n for (let j = 0; j < local.length; j++) if (local[j].eq(span, offset)) {\n if (local == this.local) local = this.local.slice()\n local.splice(j--, 1)\n }\n }\n if (children == this.children && local == this.local) return this\n return local.length || children.length ? new DecorationSet(local, children) : empty\n }\n\n forChild(offset, node) {\n if (this == empty) return this\n if (node.isLeaf) return DecorationSet.empty\n\n let child, local\n for (let i = 0; i < this.children.length; i += 3) if (this.children[i] >= offset) {\n if (this.children[i] == offset) child = this.children[i + 2]\n break\n }\n let start = offset + 1, end = start + node.content.size\n for (let i = 0; i < this.local.length; i++) {\n let dec = this.local[i]\n if (dec.from < end && dec.to > start && (dec.type instanceof InlineType)) {\n let from = Math.max(start, dec.from) - start, to = Math.min(end, dec.to) - start\n if (from < to) (local || (local = [])).push(dec.copy(from, to))\n }\n }\n if (local) {\n let localSet = new DecorationSet(local.sort(byPos))\n return child ? new DecorationGroup([localSet, child]) : localSet\n }\n return child || empty\n }\n\n eq(other) {\n if (this == other) return true\n if (!(other instanceof DecorationSet) ||\n this.local.length != other.local.length ||\n this.children.length != other.children.length) return false\n for (let i = 0; i < this.local.length; i++)\n if (!this.local[i].eq(other.local[i])) return false\n for (let i = 0; i < this.children.length; i += 3)\n if (this.children[i] != other.children[i] ||\n this.children[i + 1] != other.children[i + 1] ||\n !this.children[i + 2].eq(other.children[i + 2])) return false\n return true\n }\n\n locals(node) {\n return removeOverlap(this.localsInner(node))\n }\n\n localsInner(node) {\n if (this == empty) return none\n if (node.inlineContent || !this.local.some(InlineType.is)) return this.local\n let result = []\n for (let i = 0; i < this.local.length; i++) {\n if (!(this.local[i].type instanceof InlineType))\n result.push(this.local[i])\n }\n return result\n }\n}\n\n// DecorationSource:: interface\n// An object that can [provide](#view.EditorProps.decorations)\n// decorations. Implemented by [`DecorationSet`](#view.DecorationSet),\n// and passed to [node views](#view.EditorProps.nodeViews).\n\nconst empty = new DecorationSet()\n\n// :: DecorationSet\n// The empty set of decorations.\nDecorationSet.empty = empty\n\nDecorationSet.removeOverlap = removeOverlap\n\n// :- An abstraction that allows the code dealing with decorations to\n// treat multiple DecorationSet objects as if it were a single object\n// with (a subset of) the same interface.\nclass DecorationGroup {\n constructor(members) {\n this.members = members\n }\n\n forChild(offset, child) {\n if (child.isLeaf) return DecorationSet.empty\n let found = []\n for (let i = 0; i < this.members.length; i++) {\n let result = this.members[i].forChild(offset, child)\n if (result == empty) continue\n if (result instanceof DecorationGroup) found = found.concat(result.members)\n else found.push(result)\n }\n return DecorationGroup.from(found)\n }\n\n eq(other) {\n if (!(other instanceof DecorationGroup) ||\n other.members.length != this.members.length) return false\n for (let i = 0; i < this.members.length; i++)\n if (!this.members[i].eq(other.members[i])) return false\n return true\n }\n\n locals(node) {\n let result, sorted = true\n for (let i = 0; i < this.members.length; i++) {\n let locals = this.members[i].localsInner(node)\n if (!locals.length) continue\n if (!result) {\n result = locals\n } else {\n if (sorted) {\n result = result.slice()\n sorted = false\n }\n for (let j = 0; j < locals.length; j++) result.push(locals[j])\n }\n }\n return result ? removeOverlap(sorted ? result : result.sort(byPos)) : none\n }\n\n // : ([DecorationSet]) → union<DecorationSet, DecorationGroup>\n // Create a group for the given array of decoration sets, or return\n // a single set when possible.\n static from(members) {\n switch (members.length) {\n case 0: return empty\n case 1: return members[0]\n default: return new DecorationGroup(members)\n }\n }\n}\n\nfunction mapChildren(oldChildren, newLocal, mapping, node, offset, oldOffset, options) {\n let children = oldChildren.slice()\n\n // Mark the children that are directly touched by changes, and\n // move those that are after the changes.\n let shift = (oldStart, oldEnd, newStart, newEnd) => {\n for (let i = 0; i < children.length; i += 3) {\n let end = children[i + 1], dSize\n if (end == -1 || oldStart > end + oldOffset) continue\n if (oldEnd >= children[i] + oldOffset) {\n children[i + 1] = -1\n } else if (newStart >= offset && (dSize = (newEnd - newStart) - (oldEnd - oldStart))) {\n children[i] += dSize\n children[i + 1] += dSize\n }\n }\n }\n for (let i = 0; i < mapping.maps.length; i++) mapping.maps[i].forEach(shift)\n\n // Find the child nodes that still correspond to a single node,\n // recursively call mapInner on them and update their positions.\n let mustRebuild = false\n for (let i = 0; i < children.length; i += 3) if (children[i + 1] == -1) { // Touched nodes\n let from = mapping.map(oldChildren[i] + oldOffset), fromLocal = from - offset\n if (fromLocal < 0 || fromLocal >= node.content.size) {\n mustRebuild = true\n continue\n }\n // Must read oldChildren because children was tagged with -1\n let to = mapping.map(oldChildren[i + 1] + oldOffset, -1), toLocal = to - offset\n let {index, offset: childOffset} = node.content.findIndex(fromLocal)\n let childNode = node.maybeChild(index)\n if (childNode && childOffset == fromLocal && childOffset + childNode.nodeSize == toLocal) {\n let mapped = children[i + 2].mapInner(mapping, childNode, from + 1, oldChildren[i] + oldOffset + 1, options)\n if (mapped != empty) {\n children[i] = fromLocal\n children[i + 1] = toLocal\n children[i + 2] = mapped\n } else {\n children[i + 1] = -2\n mustRebuild = true\n }\n } else {\n mustRebuild = true\n }\n }\n\n // Remaining children must be collected and rebuilt into the appropriate structure\n if (mustRebuild) {\n let decorations = mapAndGatherRemainingDecorations(children, oldChildren, newLocal || [], mapping,\n offset, oldOffset, options)\n let built = buildTree(decorations, node, 0, options)\n newLocal = built.local\n for (let i = 0; i < children.length; i += 3) if (children[i + 1] < 0) {\n children.splice(i, 3)\n i -= 3\n }\n for (let i = 0, j = 0; i < built.children.length; i += 3) {\n let from = built.children[i]\n while (j < children.length && children[j] < from) j += 3\n children.splice(j, 0, built.children[i], built.children[i + 1], built.children[i + 2])\n }\n }\n\n return new DecorationSet(newLocal && newLocal.sort(byPos), children)\n}\n\nfunction moveSpans(spans, offset) {\n if (!offset || !spans.length) return spans\n let result = []\n for (let i = 0; i < spans.length; i++) {\n let span = spans[i]\n result.push(new Decoration(span.from + offset, span.to + offset, span.type))\n }\n return result\n}\n\nfunction mapAndGatherRemainingDecorations(children, oldChildren, decorations, mapping, offset, oldOffset, options) {\n // Gather all decorations from the remaining marked children\n function gather(set, oldOffset) {\n for (let i = 0; i < set.local.length; i++) {\n let mapped = set.local[i].map(mapping, offset, oldOffset)\n if (mapped) decorations.push(mapped)\n else if (options.onRemove) options.onRemove(set.local[i].spec)\n }\n for (let i = 0; i < set.children.length; i += 3)\n gather(set.children[i + 2], set.children[i] + oldOffset + 1)\n }\n for (let i = 0; i < children.length; i += 3) if (children[i + 1] == -1)\n gather(children[i + 2], oldChildren[i] + oldOffset + 1)\n\n return decorations\n}\n\nfunction takeSpansForNode(spans, node, offset) {\n if (node.isLeaf) return null\n let end = offset + node.nodeSize, found = null\n for (let i = 0, span; i < spans.length; i++) {\n if ((span = spans[i]) && span.from > offset && span.to < end) {\n ;(found || (found = [])).push(span)\n spans[i] = null\n }\n }\n return found\n}\n\nfunction withoutNulls(array) {\n let result = []\n for (let i = 0; i < array.length; i++)\n if (array[i] != null) result.push(array[i])\n return result\n}\n\n// : ([Decoration], Node, number) → DecorationSet\n// Build up a tree that corresponds to a set of decorations. `offset`\n// is a base offset that should be subtractet from the `from` and `to`\n// positions in the spans (so that we don't have to allocate new spans\n// for recursive calls).\nfunction buildTree(spans, node, offset, options) {\n let children = [], hasNulls = false\n node.forEach((childNode, localStart) => {\n let found = takeSpansForNode(spans, childNode, localStart + offset)\n if (found) {\n hasNulls = true\n let subtree = buildTree(found, childNode, offset + localStart + 1, options)\n if (subtree != empty)\n children.push(localStart, localStart + childNode.nodeSize, subtree)\n }\n })\n let locals = moveSpans(hasNulls ? withoutNulls(spans) : spans, -offset).sort(byPos)\n for (let i = 0; i < locals.length; i++) if (!locals[i].type.valid(node, locals[i])) {\n if (options.onRemove) options.onRemove(locals[i].spec)\n locals.splice(i--, 1)\n }\n return locals.length || children.length ? new DecorationSet(locals, children) : empty\n}\n\n// : (Decoration, Decoration) → number\n// Used to sort decorations so that ones with a low start position\n// come first, and within a set with the same start position, those\n// with an smaller end position come first.\nfunction byPos(a, b) {\n return a.from - b.from || a.to - b.to\n}\n\n// : ([Decoration]) → [Decoration]\n// Scan a sorted array of decorations for partially overlapping spans,\n// and split those so that only fully overlapping spans are left (to\n// make subsequent rendering easier). Will return the input array if\n// no partially overlapping spans are found (the common case).\nfunction removeOverlap(spans) {\n let working = spans\n for (let i = 0; i < working.length - 1; i++) {\n let span = working[i]\n if (span.from != span.to) for (let j = i + 1; j < working.length; j++) {\n let next = working[j]\n if (next.from == span.from) {\n if (next.to != span.to) {\n if (working == spans) working = spans.slice()\n // Followed by a partially overlapping larger span. Split that\n // span.\n working[j] = next.copy(next.from, span.to)\n insertAhead(working, j + 1, next.copy(span.to, next.to))\n }\n continue\n } else {\n if (next.from < span.to) {\n if (working == spans) working = spans.slice()\n // The end of this one overlaps with a subsequent span. Split\n // this one.\n working[i] = span.copy(span.from, next.from)\n insertAhead(working, j, span.copy(next.from, span.to))\n }\n break\n }\n }\n }\n return working\n}\n\nfunction insertAhead(array, i, deco) {\n while (i < array.length && byPos(deco, array[i]) > 0) i++\n array.splice(i, 0, deco)\n}\n\n// : (EditorView) → union<DecorationSet, DecorationGroup>\n// Get the decorations associated with the current props of a view.\nexport function viewDecorations(view) {\n let found = []\n view.someProp(\"decorations\", f => {\n let result = f(view.state)\n if (result && result != empty) found.push(result)\n })\n if (view.cursorWrapper)\n found.push(DecorationSet.create(view.state.doc, [view.cursorWrapper.deco]))\n return DecorationGroup.from(found)\n}\n","import {NodeSelection} from \"prosemirror-state\"\n\nimport {scrollRectIntoView, posAtCoords, coordsAtPos, endOfTextblock, storeScrollPos,\n resetScrollPos, focusPreventScroll} from \"./domcoords\"\nimport {docViewDesc} from \"./viewdesc\"\nimport {initInput, destroyInput, dispatchEvent, ensureListeners, clearComposition} from \"./input\"\nimport {selectionToDOM, anchorInRightPlace, syncNodeSelection} from \"./selection\"\nimport {Decoration, viewDecorations} from \"./decoration\"\nimport browser from \"./browser\"\n\nexport {Decoration, DecorationSet} from \"./decoration\"\n\n// Exported for testing\nexport {serializeForClipboard as __serializeForClipboard, parseFromClipboard as __parseFromClipboard} from \"./clipboard\"\nexport {endComposition as __endComposition} from \"./input\"\n\n// ::- An editor view manages the DOM structure that represents an\n// editable document. Its state and behavior are determined by its\n// [props](#view.DirectEditorProps).\nexport class EditorView {\n // :: (?union<dom.Node, (dom.Node), {mount: dom.Node}>, DirectEditorProps)\n // Create a view. `place` may be a DOM node that the editor should\n // be appended to, a function that will place it into the document,\n // or an object whose `mount` property holds the node to use as the\n // document container. If it is `null`, the editor will not be added\n // to the document.\n constructor(place, props) {\n this._props = props\n // :: EditorState\n // The view's current [state](#state.EditorState).\n this.state = props.state\n\n this.dispatch = this.dispatch.bind(this)\n\n this._root = null\n this.focused = false\n // Kludge used to work around a Chrome bug\n this.trackWrites = null\n\n // :: dom.Element\n // An editable DOM node containing the document. (You probably\n // should not directly interfere with its content.)\n this.dom = (place && place.mount) || document.createElement(\"div\")\n if (place) {\n if (place.appendChild) place.appendChild(this.dom)\n else if (place.apply) place(this.dom)\n else if (place.mount) this.mounted = true\n }\n\n // :: bool\n // Indicates whether the editor is currently [editable](#view.EditorProps.editable).\n this.editable = getEditable(this)\n this.markCursor = null\n this.cursorWrapper = null\n updateCursorWrapper(this)\n this.nodeViews = buildNodeViews(this)\n this.docView = docViewDesc(this.state.doc, computeDocDeco(this), viewDecorations(this), this.dom, this)\n\n this.lastSelectedViewDesc = null\n // :: ?{slice: Slice, move: bool}\n // When editor content is being dragged, this object contains\n // information about the dragged slice and whether it is being\n // copied or moved. At any other time, it is null.\n this.dragging = null\n\n initInput(this)\n\n this.pluginViews = []\n this.updatePluginViews()\n }\n\n // composing:: boolean\n // Holds `true` when a\n // [composition](https://developer.mozilla.org/en-US/docs/Mozilla/IME_handling_guide)\n // is active.\n\n // :: DirectEditorProps\n // The view's current [props](#view.EditorProps).\n get props() {\n if (this._props.state != this.state) {\n let prev = this._props\n this._props = {}\n for (let name in prev) this._props[name] = prev[name]\n this._props.state = this.state\n }\n return this._props\n }\n\n // :: (DirectEditorProps)\n // Update the view's props. Will immediately cause an update to\n // the DOM.\n update(props) {\n if (props.handleDOMEvents != this._props.handleDOMEvents) ensureListeners(this)\n this._props = props\n this.updateStateInner(props.state, true)\n }\n\n // :: (DirectEditorProps)\n // Update the view by updating existing props object with the object\n // given as argument. Equivalent to `view.update(Object.assign({},\n // view.props, props))`.\n setProps(props) {\n let updated = {}\n for (let name in this._props) updated[name] = this._props[name]\n updated.state = this.state\n for (let name in props) updated[name] = props[name]\n this.update(updated)\n }\n\n // :: (EditorState)\n // Update the editor's `state` prop, without touching any of the\n // other props.\n updateState(state) {\n this.updateStateInner(state, this.state.plugins != state.plugins)\n }\n\n updateStateInner(state, reconfigured) {\n let prev = this.state, redraw = false, updateSel = false\n // When stored marks are added, stop composition, so that they can\n // be displayed.\n if (state.storedMarks && this.composing) {\n clearComposition(this)\n updateSel = true\n }\n this.state = state\n if (reconfigured) {\n let nodeViews = buildNodeViews(this)\n if (changedNodeViews(nodeViews, this.nodeViews)) {\n this.nodeViews = nodeViews\n redraw = true\n }\n ensureListeners(this)\n }\n\n this.editable = getEditable(this)\n updateCursorWrapper(this)\n let innerDeco = viewDecorations(this), outerDeco = computeDocDeco(this)\n\n let scroll = reconfigured ? \"reset\"\n : state.scrollToSelection > prev.scrollToSelection ? \"to selection\" : \"preserve\"\n let updateDoc = redraw || !this.docView.matchesNode(state.doc, outerDeco, innerDeco)\n if (updateDoc || !state.selection.eq(prev.selection)) updateSel = true\n let oldScrollPos = scroll == \"preserve\" && updateSel && this.dom.style.overflowAnchor == null && storeScrollPos(this)\n\n if (updateSel) {\n this.domObserver.stop()\n // Work around an issue in Chrome, IE, and Edge where changing\n // the DOM around an active selection puts it into a broken\n // state where the thing the user sees differs from the\n // selection reported by the Selection object (#710, #973,\n // #1011, #1013, #1035).\n let forceSelUpdate = updateDoc && (browser.ie || browser.chrome) && !this.composing &&\n !prev.selection.empty && !state.selection.empty && selectionContextChanged(prev.selection, state.selection)\n if (updateDoc) {\n // If the node that the selection points into is written to,\n // Chrome sometimes starts misreporting the selection, so this\n // tracks that and forces a selection reset when our update\n // did write to the node.\n let chromeKludge = browser.chrome ? (this.trackWrites = this.root.getSelection().focusNode) : null\n if (redraw || !this.docView.update(state.doc, outerDeco, innerDeco, this)) {\n this.docView.updateOuterDeco([])\n this.docView.destroy()\n this.docView = docViewDesc(state.doc, outerDeco, innerDeco, this.dom, this)\n }\n if (chromeKludge && !this.trackWrites) forceSelUpdate = true\n }\n // Work around for an issue where an update arriving right between\n // a DOM selection change and the \"selectionchange\" event for it\n // can cause a spurious DOM selection update, disrupting mouse\n // drag selection.\n if (forceSelUpdate ||\n !(this.mouseDown && this.domObserver.currentSelection.eq(this.root.getSelection()) && anchorInRightPlace(this))) {\n selectionToDOM(this, forceSelUpdate)\n } else {\n syncNodeSelection(this, state.selection)\n this.domObserver.setCurSelection()\n }\n this.domObserver.start()\n }\n\n this.updatePluginViews(prev)\n\n if (scroll == \"reset\") {\n this.dom.scrollTop = 0\n } else if (scroll == \"to selection\") {\n let startDOM = this.root.getSelection().focusNode\n if (this.someProp(\"handleScrollToSelection\", f => f(this)))\n {} // Handled\n else if (state.selection instanceof NodeSelection)\n scrollRectIntoView(this, this.docView.domAfterPos(state.selection.from).getBoundingClientRect(), startDOM)\n else\n scrollRectIntoView(this, this.coordsAtPos(state.selection.head, 1), startDOM)\n } else if (oldScrollPos) {\n resetScrollPos(oldScrollPos)\n }\n }\n\n destroyPluginViews() {\n let view\n while (view = this.pluginViews.pop()) if (view.destroy) view.destroy()\n }\n\n updatePluginViews(prevState) {\n if (!prevState || prevState.plugins != this.state.plugins) {\n this.destroyPluginViews()\n for (let i = 0; i < this.state.plugins.length; i++) {\n let plugin = this.state.plugins[i]\n if (plugin.spec.view) this.pluginViews.push(plugin.spec.view(this))\n }\n } else {\n for (let i = 0; i < this.pluginViews.length; i++) {\n let pluginView = this.pluginViews[i]\n if (pluginView.update) pluginView.update(this, prevState)\n }\n }\n }\n\n // :: (string, ?(prop: *) → *) → *\n // Goes over the values of a prop, first those provided directly,\n // then those from plugins (in order), and calls `f` every time a\n // non-undefined value is found. When `f` returns a truthy value,\n // that is immediately returned. When `f` isn't provided, it is\n // treated as the identity function (the prop value is returned\n // directly).\n someProp(propName, f) {\n let prop = this._props && this._props[propName], value\n if (prop != null && (value = f ? f(prop) : prop)) return value\n let plugins = this.state.plugins\n if (plugins) for (let i = 0; i < plugins.length; i++) {\n let prop = plugins[i].props[propName]\n if (prop != null && (value = f ? f(prop) : prop)) return value\n }\n }\n\n // :: () → bool\n // Query whether the view has focus.\n hasFocus() {\n return this.root.activeElement == this.dom\n }\n\n // :: ()\n // Focus the editor.\n focus() {\n this.domObserver.stop()\n if (this.editable) focusPreventScroll(this.dom)\n selectionToDOM(this)\n this.domObserver.start()\n }\n\n // :: union<dom.Document, dom.DocumentFragment>\n // Get the document root in which the editor exists. This will\n // usually be the top-level `document`, but might be a [shadow\n // DOM](https://developer.mozilla.org/en-US/docs/Web/Web_Components/Shadow_DOM)\n // root if the editor is inside one.\n get root() {\n let cached = this._root\n if (cached == null) for (let search = this.dom.parentNode; search; search = search.parentNode) {\n if (search.nodeType == 9 || (search.nodeType == 11 && search.host)) {\n if (!search.getSelection) Object.getPrototypeOf(search).getSelection = () => document.getSelection()\n return this._root = search\n }\n }\n return cached || document\n }\n\n // :: ({left: number, top: number}) → ?{pos: number, inside: number}\n // Given a pair of viewport coordinates, return the document\n // position that corresponds to them. May return null if the given\n // coordinates aren't inside of the editor. When an object is\n // returned, its `pos` property is the position nearest to the\n // coordinates, and its `inside` property holds the position of the\n // inner node that the position falls inside of, or -1 if it is at\n // the top level, not in any node.\n posAtCoords(coords) {\n return posAtCoords(this, coords)\n }\n\n // :: (number, number) → {left: number, right: number, top: number, bottom: number}\n // Returns the viewport rectangle at a given document position.\n // `left` and `right` will be the same number, as this returns a\n // flat cursor-ish rectangle. If the position is between two things\n // that aren't directly adjacent, `side` determines which element is\n // used. When < 0, the element before the position is used,\n // otherwise the element after.\n coordsAtPos(pos, side = 1) {\n return coordsAtPos(this, pos, side)\n }\n\n // :: (number, number) → {node: dom.Node, offset: number}\n // Find the DOM position that corresponds to the given document\n // position. When `side` is negative, find the position as close as\n // possible to the content before the position. When positive,\n // prefer positions close to the content after the position. When\n // zero, prefer as shallow a position as possible.\n //\n // Note that you should **not** mutate the editor's internal DOM,\n // only inspect it (and even that is usually not necessary).\n domAtPos(pos, side = 0) {\n return this.docView.domFromPos(pos, side)\n }\n\n // :: (number) → ?dom.Node\n // Find the DOM node that represents the document node after the\n // given position. May return `null` when the position doesn't point\n // in front of a node or if the node is inside an opaque node view.\n //\n // This is intended to be able to call things like\n // `getBoundingClientRect` on that DOM node. Do **not** mutate the\n // editor DOM directly, or add styling this way, since that will be\n // immediately overriden by the editor as it redraws the node.\n nodeDOM(pos) {\n let desc = this.docView.descAt(pos)\n return desc ? desc.nodeDOM : null\n }\n\n // :: (dom.Node, number, ?number) → number\n // Find the document position that corresponds to a given DOM\n // position. (Whenever possible, it is preferable to inspect the\n // document structure directly, rather than poking around in the\n // DOM, but sometimes—for example when interpreting an event\n // target—you don't have a choice.)\n //\n // The `bias` parameter can be used to influence which side of a DOM\n // node to use when the position is inside a leaf node.\n posAtDOM(node, offset, bias = -1) {\n let pos = this.docView.posFromDOM(node, offset, bias)\n if (pos == null) throw new RangeError(\"DOM position not inside the editor\")\n return pos\n }\n\n // :: (union<\"up\", \"down\", \"left\", \"right\", \"forward\", \"backward\">, ?EditorState) → bool\n // Find out whether the selection is at the end of a textblock when\n // moving in a given direction. When, for example, given `\"left\"`,\n // it will return true if moving left from the current cursor\n // position would leave that position's parent textblock. Will apply\n // to the view's current state by default, but it is possible to\n // pass a different state.\n endOfTextblock(dir, state) {\n return endOfTextblock(this, state || this.state, dir)\n }\n\n // :: ()\n // Removes the editor from the DOM and destroys all [node\n // views](#view.NodeView).\n destroy() {\n if (!this.docView) return\n destroyInput(this)\n this.destroyPluginViews()\n if (this.mounted) {\n this.docView.update(this.state.doc, [], viewDecorations(this), this)\n this.dom.textContent = \"\"\n } else if (this.dom.parentNode) {\n this.dom.parentNode.removeChild(this.dom)\n }\n this.docView.destroy()\n this.docView = null\n }\n\n // Used for testing.\n dispatchEvent(event) {\n return dispatchEvent(this, event)\n }\n\n // :: (Transaction)\n // Dispatch a transaction. Will call\n // [`dispatchTransaction`](#view.DirectEditorProps.dispatchTransaction)\n // when given, and otherwise defaults to applying the transaction to\n // the current state and calling\n // [`updateState`](#view.EditorView.updateState) with the result.\n // This method is bound to the view instance, so that it can be\n // easily passed around.\n dispatch(tr) {\n let dispatchTransaction = this._props.dispatchTransaction\n if (dispatchTransaction) dispatchTransaction.call(this, tr)\n else this.updateState(this.state.apply(tr))\n }\n}\n\nfunction computeDocDeco(view) {\n let attrs = Object.create(null)\n attrs.class = \"ProseMirror\"\n attrs.contenteditable = String(view.editable)\n\n view.someProp(\"attributes\", value => {\n if (typeof value == \"function\") value = value(view.state)\n if (value) for (let attr in value) {\n if (attr == \"class\")\n attrs.class += \" \" + value[attr]\n else if (!attrs[attr] && attr != \"contenteditable\" && attr != \"nodeName\")\n attrs[attr] = String(value[attr])\n }\n })\n\n return [Decoration.node(0, view.state.doc.content.size, attrs)]\n}\n\nfunction updateCursorWrapper(view) {\n if (view.markCursor) {\n let dom = document.createElement(\"img\")\n dom.setAttribute(\"mark-placeholder\", \"true\")\n view.cursorWrapper = {dom, deco: Decoration.widget(view.state.selection.head, dom, {raw: true, marks: view.markCursor})}\n } else {\n view.cursorWrapper = null\n }\n}\n\nfunction getEditable(view) {\n return !view.someProp(\"editable\", value => value(view.state) === false)\n}\n\nfunction selectionContextChanged(sel1, sel2) {\n let depth = Math.min(sel1.$anchor.sharedDepth(sel1.head), sel2.$anchor.sharedDepth(sel2.head))\n return sel1.$anchor.start(depth) != sel2.$anchor.start(depth)\n}\n\nfunction buildNodeViews(view) {\n let result = {}\n view.someProp(\"nodeViews\", obj => {\n for (let prop in obj) if (!Object.prototype.hasOwnProperty.call(result, prop))\n result[prop] = obj[prop]\n })\n return result\n}\n\nfunction changedNodeViews(a, b) {\n let nA = 0, nB = 0\n for (let prop in a) {\n if (a[prop] != b[prop]) return true\n nA++\n }\n for (let _ in b) nB++\n return nA != nB\n}\n\n// EditorProps:: interface\n//\n// Props are configuration values that can be passed to an editor view\n// or included in a plugin. This interface lists the supported props.\n//\n// The various event-handling functions may all return `true` to\n// indicate that they handled the given event. The view will then take\n// care to call `preventDefault` on the event, except with\n// `handleDOMEvents`, where the handler itself is responsible for that.\n//\n// How a prop is resolved depends on the prop. Handler functions are\n// called one at a time, starting with the base props and then\n// searching through the plugins (in order of appearance) until one of\n// them returns true. For some props, the first plugin that yields a\n// value gets precedence.\n//\n// handleDOMEvents:: ?Object<(view: EditorView, event: dom.Event) → bool>\n// Can be an object mapping DOM event type names to functions that\n// handle them. Such functions will be called before any handling\n// ProseMirror does of events fired on the editable DOM element.\n// Contrary to the other event handling props, when returning true\n// from such a function, you are responsible for calling\n// `preventDefault` yourself (or not, if you want to allow the\n// default behavior).\n//\n// handleKeyDown:: ?(view: EditorView, event: dom.KeyboardEvent) → bool\n// Called when the editor receives a `keydown` event.\n//\n// handleKeyPress:: ?(view: EditorView, event: dom.KeyboardEvent) → bool\n// Handler for `keypress` events.\n//\n// handleTextInput:: ?(view: EditorView, from: number, to: number, text: string) → bool\n// Whenever the user directly input text, this handler is called\n// before the input is applied. If it returns `true`, the default\n// behavior of actually inserting the text is suppressed.\n//\n// handleClickOn:: ?(view: EditorView, pos: number, node: Node, nodePos: number, event: dom.MouseEvent, direct: bool) → bool\n// Called for each node around a click, from the inside out. The\n// `direct` flag will be true for the inner node.\n//\n// handleClick:: ?(view: EditorView, pos: number, event: dom.MouseEvent) → bool\n// Called when the editor is clicked, after `handleClickOn` handlers\n// have been called.\n//\n// handleDoubleClickOn:: ?(view: EditorView, pos: number, node: Node, nodePos: number, event: dom.MouseEvent, direct: bool) → bool\n// Called for each node around a double click.\n//\n// handleDoubleClick:: ?(view: EditorView, pos: number, event: dom.MouseEvent) → bool\n// Called when the editor is double-clicked, after `handleDoubleClickOn`.\n//\n// handleTripleClickOn:: ?(view: EditorView, pos: number, node: Node, nodePos: number, event: dom.MouseEvent, direct: bool) → bool\n// Called for each node around a triple click.\n//\n// handleTripleClick:: ?(view: EditorView, pos: number, event: dom.MouseEvent) → bool\n// Called when the editor is triple-clicked, after `handleTripleClickOn`.\n//\n// handlePaste:: ?(view: EditorView, event: dom.ClipboardEvent, slice: Slice) → bool\n// Can be used to override the behavior of pasting. `slice` is the\n// pasted content parsed by the editor, but you can directly access\n// the event to get at the raw content.\n//\n// handleDrop:: ?(view: EditorView, event: dom.Event, slice: Slice, moved: bool) → bool\n// Called when something is dropped on the editor. `moved` will be\n// true if this drop moves from the current selection (which should\n// thus be deleted).\n//\n// handleScrollToSelection:: ?(view: EditorView) → bool\n// Called when the view, after updating its state, tries to scroll\n// the selection into view. A handler function may return false to\n// indicate that it did not handle the scrolling and further\n// handlers or the default behavior should be tried.\n//\n// createSelectionBetween:: ?(view: EditorView, anchor: ResolvedPos, head: ResolvedPos) → ?Selection\n// Can be used to override the way a selection is created when\n// reading a DOM selection between the given anchor and head.\n//\n// domParser:: ?DOMParser\n// The [parser](#model.DOMParser) to use when reading editor changes\n// from the DOM. Defaults to calling\n// [`DOMParser.fromSchema`](#model.DOMParser^fromSchema) on the\n// editor's schema.\n//\n// transformPastedHTML:: ?(html: string) → string\n// Can be used to transform pasted HTML text, _before_ it is parsed,\n// for example to clean it up.\n//\n// clipboardParser:: ?DOMParser\n// The [parser](#model.DOMParser) to use when reading content from\n// the clipboard. When not given, the value of the\n// [`domParser`](#view.EditorProps.domParser) prop is used.\n//\n// transformPastedText:: ?(text: string, plain: bool) → string\n// Transform pasted plain text. The `plain` flag will be true when\n// the text is pasted as plain text.\n//\n// clipboardTextParser:: ?(text: string, $context: ResolvedPos, plain: bool) → Slice\n// A function to parse text from the clipboard into a document\n// slice. Called after\n// [`transformPastedText`](#view.EditorProps.transformPastedText).\n// The default behavior is to split the text into lines, wrap them\n// in `<p>` tags, and call\n// [`clipboardParser`](#view.EditorProps.clipboardParser) on it.\n// The `plain` flag will be true when the text is pasted as plain text.\n//\n// transformPasted:: ?(Slice) → Slice\n// Can be used to transform pasted content before it is applied to\n// the document.\n//\n// nodeViews:: ?Object<(node: Node, view: EditorView, getPos: () → number, decorations: [Decoration], innerDecorations: DecorationSource) → NodeView>\n// Allows you to pass custom rendering and behavior logic for nodes\n// and marks. Should map node and mark names to constructor\n// functions that produce a [`NodeView`](#view.NodeView) object\n// implementing the node's display behavior. For nodes, the third\n// argument `getPos` is a function that can be called to get the\n// node's current position, which can be useful when creating\n// transactions to update it. For marks, the third argument is a\n// boolean that indicates whether the mark's content is inline.\n//\n// `decorations` is an array of node or inline decorations that are\n// active around the node. They are automatically drawn in the\n// normal way, and you will usually just want to ignore this, but\n// they can also be used as a way to provide context information to\n// the node view without adding it to the document itself.\n//\n// `innerDecorations` holds the decorations for the node's content.\n// You can safely ignore this if your view has no content or a\n// `contentDOM` property, since the editor will draw the decorations\n// on the content. But if you, for example, want to create a nested\n// editor with the content, it may make sense to provide it with the\n// inner decorations.\n//\n// clipboardSerializer:: ?DOMSerializer\n// The DOM serializer to use when putting content onto the\n// clipboard. If not given, the result of\n// [`DOMSerializer.fromSchema`](#model.DOMSerializer^fromSchema)\n// will be used.\n//\n// clipboardTextSerializer:: ?(Slice) → string\n// A function that will be called to get the text for the current\n// selection when copying text to the clipboard. By default, the\n// editor will use [`textBetween`](#model.Node.textBetween) on the\n// selected range.\n//\n// decorations:: ?(state: EditorState) → ?DecorationSource\n// A set of [document decorations](#view.Decoration) to show in the\n// view.\n//\n// editable:: ?(state: EditorState) → bool\n// When this returns false, the content of the view is not directly\n// editable.\n//\n// attributes:: ?union<Object<string>, (EditorState) → ?Object<string>>\n// Control the DOM attributes of the editable element. May be either\n// an object or a function going from an editor state to an object.\n// By default, the element will get a class `\"ProseMirror\"`, and\n// will have its `contentEditable` attribute determined by the\n// [`editable` prop](#view.EditorProps.editable). Additional classes\n// provided here will be added to the class. For other attributes,\n// the value provided first (as in\n// [`someProp`](#view.EditorView.someProp)) will be used.\n//\n// scrollThreshold:: ?union<number, {top: number, right: number, bottom: number, left: number}>\n// Determines the distance (in pixels) between the cursor and the\n// end of the visible viewport at which point, when scrolling the\n// cursor into view, scrolling takes place. Defaults to 0.\n//\n// scrollMargin:: ?union<number, {top: number, right: number, bottom: number, left: number}>\n// Determines the extra space (in pixels) that is left above or\n// below the cursor when it is scrolled into view. Defaults to 5.\n\n// DirectEditorProps:: interface extends EditorProps\n//\n// The props object given directly to the editor view supports two\n// fields that can't be used in plugins:\n//\n// state:: EditorState\n// The current state of the editor.\n//\n// dispatchTransaction:: ?(tr: Transaction)\n// The callback over which to send transactions (state updates)\n// produced by the view. If you specify this, you probably want to\n// make sure this ends up calling the view's\n// [`updateState`](#view.EditorView.updateState) method with a new\n// state that has the transaction\n// [applied](#state.EditorState.apply). The callback will be bound to have\n// the view instance as its `this` binding.\n"],"names":["const","let","browser","pos","box","before","after","target","desc","search","j","offset","super","DOMSerializer","this","Fragment","Mark","TextSelection","name","i","child","NodeSelection","Selection","next","AllSelection","DOMParser","anchor","tr","sel","text","move","Slice","d","result","dropPoint","p","prototypeAccessors","span","from","prop"],"mappings":"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AM,MAAM,CAAC,IAAI,CAAC,GAAG,GAAG,CAAC,IAAI,MAAC;AAC9B,GAAG,EAAC;AACJ,EAAE,OAAO,MAAM;AACf,CAAC;AACD;AACA,SAAS,gBAAgB,CAAC,CAAC,EAAE,CAAC,EAAE;AAChC,EAAEA,IAAI,EAAE,GAAG,CAAC,EAAE,EAAE,GAAG,EAAC;AACpB,EAAE,KAAKA,IAAI,IAAI,IAAI,CAAC,EAAE;AACtB,IAAI,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAE,OAAO,MAAI;AACvC,IAAI,EAAE,GAAE;AACR,GAAG;AACH,EAAE,KAAKA,IAAI,CAAC,IAAI,CAAC,IAAE,EAAE,KAAE;AACvB,EAAE,OAAO,EAAE,IAAI,EAAE;AACjB,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;"}