@bigbinary/neeto-editor 1.38.12 → 1.39.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/Editor.js +10 -9
- package/dist/Editor.js.map +1 -1
- package/dist/FormikEditor.js +2 -2
- package/dist/Menu.js +2 -2
- package/dist/{chunk-17c1b4e1.js → chunk-1888361f.js} +2369 -2252
- package/dist/chunk-1888361f.js.map +1 -0
- package/dist/cjs/Editor.cjs.js +10 -9
- package/dist/cjs/Editor.cjs.js.map +1 -1
- package/dist/cjs/FormikEditor.cjs.js +2 -2
- package/dist/cjs/Menu.cjs.js +2 -2
- package/dist/cjs/{chunk-fd7976a0.cjs.js → chunk-bdbd1ab4.cjs.js} +2362 -2245
- package/dist/cjs/chunk-bdbd1ab4.cjs.js.map +1 -0
- package/dist/cjs/index.cjs.js +1 -1
- package/dist/editor-stats.html +1 -1
- package/dist/index.js +1 -1
- package/package.json +1 -1
- package/dist/chunk-17c1b4e1.js.map +0 -1
- package/dist/cjs/chunk-fd7976a0.cjs.js.map +0 -1
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"chunk-17c1b4e1.js","sources":["../node_modules/prosemirror-view/dist/index.js","../node_modules/w3c-keyname/index.js","../node_modules/prosemirror-keymap/dist/index.js","../node_modules/prosemirror-commands/dist/index.js","../node_modules/prosemirror-schema-list/dist/index.js","../node_modules/@tiptap/core/dist/index.js","../node_modules/@tiptap/extension-bubble-menu/dist/index.js","../node_modules/@tiptap/react/dist/index.js","../src/components/Editor/CustomExtensions/Embeds/utils.js","../src/components/Editor/CustomExtensions/Embeds/index.jsx","../src/apis/emoji_picker.js","../src/components/Editor/CustomExtensions/Emoji/EmojiPicker/EmojiPickerMenu.jsx","../src/utils/focusHighlighter.js","../src/components/Editor/Menu/Fixed/components/Button.jsx","../src/components/Editor/Menu/Fixed/components/SecondaryMenuTarget.jsx","../src/components/Editor/Menu/Fixed/components/EmojiOption.jsx","../src/components/Editor/Menu/Fixed/components/FontSizeOption.jsx","../src/components/Editor/Menu/Fixed/components/TableOption.jsx","../src/components/Editor/Menu/Fixed/components/TextColorOption.jsx","../src/components/Editor/CustomExtensions/Mention/index.jsx","../src/components/Editor/Menu/Fixed/constants.js","../src/components/Editor/Menu/Fixed/utils.js","../src/components/Editor/MediaUploader/Progress.jsx","../src/components/Editor/MediaUploader/LocalUploader.jsx","../node_modules/bricks.js/dist/bricks.module.js","../node_modules/react-infinite-scroller/dist/InfiniteScroll.js","../node_modules/react-infinite-scroller/index.js","../node_modules/react-masonry-infinite/lib/index.js","../src/apis/unsplash.js","../src/hooks/useDebounce.js","../src/components/Editor/MediaUploader/UnsplashImagePicker.jsx","../src/components/Editor/MediaUploader/URLForm.jsx","../src/components/Editor/MediaUploader/index.jsx","../src/components/Editor/Menu/Bubble/LinkOption.jsx","../src/components/Editor/Menu/Bubble/TableOption.jsx","../src/components/Editor/Menu/Bubble/utils.jsx","../src/components/Editor/Menu/Bubble/Options.jsx","../src/components/Editor/Menu/Bubble/index.jsx","../src/components/Editor/Menu/Fixed/components/LinkAddPopOver.jsx","../src/components/Editor/Menu/Fixed/components/MoreMenu.jsx","../src/components/Editor/Menu/Fixed/index.jsx","../src/components/Editor/Menu/Headless/Option/UI/Button.jsx","../src/components/Editor/Menu/Headless/Option/UI/Dropdown.jsx","../src/components/Editor/Menu/Headless/Option/Emoji.jsx","../src/components/Editor/Menu/Headless/Option/index.jsx","../src/components/Editor/Menu/Headless/utils.js","../src/components/Editor/Menu/Headless/index.jsx","../src/components/Editor/Menu/index.jsx"],"sourcesContent":["import { TextSelection, NodeSelection, AllSelection, Selection } from 'prosemirror-state';\nimport { DOMSerializer, Fragment, Mark, Slice, DOMParser } from 'prosemirror-model';\nimport { dropPoint } from 'prosemirror-transform';\n\nconst domIndex = function (node) {\n for (var index = 0;; index++) {\n node = node.previousSibling;\n if (!node)\n return index;\n }\n};\nconst parentNode = function (node) {\n let parent = node.assignedSlot || node.parentNode;\n return parent && parent.nodeType == 11 ? parent.host : parent;\n};\nlet reusedRange = null;\n// Note that this will always return the same range, because DOM range\n// objects are every expensive, and keep slowing down subsequent DOM\n// updates, for some reason.\nconst textRange = function (node, from, to) {\n let range = reusedRange || (reusedRange = document.createRange());\n range.setEnd(node, to == null ? node.nodeValue.length : to);\n range.setStart(node, from || 0);\n return range;\n};\nconst clearReusedRange = function () {\n reusedRange = null;\n};\n// Scans forward and backward through DOM positions equivalent to the\n// given one to see if the two are in the same place (i.e. after a\n// text node vs at the end of that text node)\nconst isEquivalentPosition = function (node, off, targetNode, targetOff) {\n return targetNode && (scanFor(node, off, targetNode, targetOff, -1) ||\n scanFor(node, off, targetNode, targetOff, 1));\n};\nconst atomElements = /^(img|br|input|textarea|hr)$/i;\nfunction scanFor(node, off, targetNode, targetOff, dir) {\n for (;;) {\n if (node == targetNode && off == targetOff)\n return true;\n if (off == (dir < 0 ? 0 : nodeSize(node))) {\n let parent = node.parentNode;\n if (!parent || parent.nodeType != 1 || hasBlockDesc(node) || atomElements.test(node.nodeName) ||\n node.contentEditable == \"false\")\n return false;\n off = domIndex(node) + (dir < 0 ? 0 : 1);\n node = parent;\n }\n else if (node.nodeType == 1) {\n node = node.childNodes[off + (dir < 0 ? -1 : 0)];\n if (node.contentEditable == \"false\")\n return false;\n off = dir < 0 ? nodeSize(node) : 0;\n }\n else {\n return false;\n }\n }\n}\nfunction nodeSize(node) {\n return node.nodeType == 3 ? node.nodeValue.length : node.childNodes.length;\n}\nfunction textNodeBefore$1(node, offset) {\n for (;;) {\n if (node.nodeType == 3 && offset)\n return node;\n if (node.nodeType == 1 && offset > 0) {\n if (node.contentEditable == \"false\")\n return null;\n node = node.childNodes[offset - 1];\n offset = nodeSize(node);\n }\n else if (node.parentNode && !hasBlockDesc(node)) {\n offset = domIndex(node);\n node = node.parentNode;\n }\n else {\n return null;\n }\n }\n}\nfunction textNodeAfter$1(node, offset) {\n for (;;) {\n if (node.nodeType == 3 && offset < node.nodeValue.length)\n return node;\n if (node.nodeType == 1 && offset < node.childNodes.length) {\n if (node.contentEditable == \"false\")\n return null;\n node = node.childNodes[offset];\n offset = 0;\n }\n else if (node.parentNode && !hasBlockDesc(node)) {\n offset = domIndex(node) + 1;\n node = node.parentNode;\n }\n else {\n return null;\n }\n }\n}\nfunction isOnEdge(node, offset, parent) {\n for (let atStart = offset == 0, atEnd = offset == nodeSize(node); atStart || atEnd;) {\n if (node == parent)\n return true;\n let index = domIndex(node);\n node = node.parentNode;\n if (!node)\n return false;\n atStart = atStart && index == 0;\n atEnd = atEnd && index == nodeSize(node);\n }\n}\nfunction hasBlockDesc(dom) {\n let desc;\n for (let cur = dom; cur; cur = cur.parentNode)\n if (desc = cur.pmViewDesc)\n break;\n return desc && desc.node && desc.node.isBlock && (desc.dom == dom || desc.contentDOM == dom);\n}\n// Work around Chrome issue https://bugs.chromium.org/p/chromium/issues/detail?id=447523\n// (isCollapsed inappropriately returns true in shadow dom)\nconst selectionCollapsed = function (domSel) {\n return domSel.focusNode && isEquivalentPosition(domSel.focusNode, domSel.focusOffset, domSel.anchorNode, domSel.anchorOffset);\n};\nfunction keyEvent(keyCode, key) {\n let event = document.createEvent(\"Event\");\n event.initEvent(\"keydown\", true, true);\n event.keyCode = keyCode;\n event.key = event.code = key;\n return event;\n}\nfunction deepActiveElement(doc) {\n let elt = doc.activeElement;\n while (elt && elt.shadowRoot)\n elt = elt.shadowRoot.activeElement;\n return elt;\n}\nfunction caretFromPoint(doc, x, y) {\n if (doc.caretPositionFromPoint) {\n try { // Firefox throws for this call in hard-to-predict circumstances (#994)\n let pos = doc.caretPositionFromPoint(x, y);\n if (pos)\n return { node: pos.offsetNode, offset: pos.offset };\n }\n catch (_) { }\n }\n if (doc.caretRangeFromPoint) {\n let range = doc.caretRangeFromPoint(x, y);\n if (range)\n return { node: range.startContainer, offset: range.startOffset };\n }\n}\n\nconst nav = typeof navigator != \"undefined\" ? navigator : null;\nconst doc = typeof document != \"undefined\" ? document : null;\nconst agent = (nav && nav.userAgent) || \"\";\nconst ie_edge = /Edge\\/(\\d+)/.exec(agent);\nconst ie_upto10 = /MSIE \\d/.exec(agent);\nconst ie_11up = /Trident\\/(?:[7-9]|\\d{2,})\\..*rv:(\\d+)/.exec(agent);\nconst ie = !!(ie_upto10 || ie_11up || ie_edge);\nconst ie_version = ie_upto10 ? document.documentMode : ie_11up ? +ie_11up[1] : ie_edge ? +ie_edge[1] : 0;\nconst gecko = !ie && /gecko\\/(\\d+)/i.test(agent);\ngecko && +(/Firefox\\/(\\d+)/.exec(agent) || [0, 0])[1];\nconst _chrome = !ie && /Chrome\\/(\\d+)/.exec(agent);\nconst chrome = !!_chrome;\nconst chrome_version = _chrome ? +_chrome[1] : 0;\nconst safari = !ie && !!nav && /Apple Computer/.test(nav.vendor);\n// Is true for both iOS and iPadOS for convenience\nconst ios = safari && (/Mobile\\/\\w+/.test(agent) || !!nav && nav.maxTouchPoints > 2);\nconst mac = ios || (nav ? /Mac/.test(nav.platform) : false);\nconst windows = nav ? /Win/.test(nav.platform) : false;\nconst android = /Android \\d/.test(agent);\nconst webkit = !!doc && \"webkitFontSmoothing\" in doc.documentElement.style;\nconst webkit_version = webkit ? +(/\\bAppleWebKit\\/(\\d+)/.exec(navigator.userAgent) || [0, 0])[1] : 0;\n\nfunction windowRect(doc) {\n let vp = doc.defaultView && doc.defaultView.visualViewport;\n if (vp)\n return {\n left: 0, right: vp.width,\n top: 0, bottom: vp.height\n };\n return { left: 0, right: doc.documentElement.clientWidth,\n top: 0, bottom: doc.documentElement.clientHeight };\n}\nfunction getSide(value, side) {\n return typeof value == \"number\" ? value : value[side];\n}\nfunction clientRect(node) {\n let rect = node.getBoundingClientRect();\n // Adjust for elements with style \"transform: scale()\"\n let scaleX = (rect.width / node.offsetWidth) || 1;\n let scaleY = (rect.height / node.offsetHeight) || 1;\n // Make sure scrollbar width isn't included in the rectangle\n return { left: rect.left, right: rect.left + node.clientWidth * scaleX,\n top: rect.top, bottom: rect.top + node.clientHeight * scaleY };\n}\nfunction scrollRectIntoView(view, rect, startDOM) {\n let scrollThreshold = view.someProp(\"scrollThreshold\") || 0, scrollMargin = view.someProp(\"scrollMargin\") || 5;\n let doc = view.dom.ownerDocument;\n for (let parent = startDOM || view.dom;; parent = parentNode(parent)) {\n if (!parent)\n break;\n if (parent.nodeType != 1)\n continue;\n let elt = parent;\n let atTop = elt == doc.body;\n let bounding = atTop ? windowRect(doc) : clientRect(elt);\n let moveX = 0, moveY = 0;\n if (rect.top < bounding.top + getSide(scrollThreshold, \"top\"))\n moveY = -(bounding.top - rect.top + getSide(scrollMargin, \"top\"));\n else if (rect.bottom > bounding.bottom - getSide(scrollThreshold, \"bottom\"))\n moveY = rect.bottom - rect.top > bounding.bottom - bounding.top\n ? rect.top + getSide(scrollMargin, \"top\") - bounding.top\n : rect.bottom - bounding.bottom + getSide(scrollMargin, \"bottom\");\n if (rect.left < bounding.left + getSide(scrollThreshold, \"left\"))\n moveX = -(bounding.left - rect.left + getSide(scrollMargin, \"left\"));\n else if (rect.right > bounding.right - getSide(scrollThreshold, \"right\"))\n moveX = rect.right - bounding.right + getSide(scrollMargin, \"right\");\n if (moveX || moveY) {\n if (atTop) {\n doc.defaultView.scrollBy(moveX, moveY);\n }\n else {\n let startX = elt.scrollLeft, startY = elt.scrollTop;\n if (moveY)\n elt.scrollTop += moveY;\n if (moveX)\n elt.scrollLeft += moveX;\n let dX = elt.scrollLeft - startX, dY = elt.scrollTop - startY;\n rect = { left: rect.left - dX, top: rect.top - dY, right: rect.right - dX, bottom: rect.bottom - dY };\n }\n }\n if (atTop || /^(fixed|sticky)$/.test(getComputedStyle(parent).position))\n break;\n }\n}\n// Store the scroll position of the editor's parent nodes, along with\n// the top position of an element near the top of the editor, which\n// will be used to make sure the visible viewport remains stable even\n// when the size of the content above changes.\nfunction storeScrollPos(view) {\n let rect = view.dom.getBoundingClientRect(), startY = Math.max(0, rect.top);\n let refDOM, refTop;\n for (let x = (rect.left + rect.right) / 2, y = startY + 1; y < Math.min(innerHeight, rect.bottom); y += 5) {\n let dom = view.root.elementFromPoint(x, y);\n if (!dom || dom == view.dom || !view.dom.contains(dom))\n continue;\n let localRect = dom.getBoundingClientRect();\n if (localRect.top >= startY - 20) {\n refDOM = dom;\n refTop = localRect.top;\n break;\n }\n }\n return { refDOM: refDOM, refTop: refTop, stack: scrollStack(view.dom) };\n}\nfunction scrollStack(dom) {\n let stack = [], doc = dom.ownerDocument;\n for (let cur = dom; cur; cur = parentNode(cur)) {\n stack.push({ dom: cur, top: cur.scrollTop, left: cur.scrollLeft });\n if (dom == doc)\n break;\n }\n return stack;\n}\n// Reset the scroll position of the editor's parent nodes to that what\n// it was before, when storeScrollPos was called.\nfunction resetScrollPos({ refDOM, refTop, stack }) {\n let newRefTop = refDOM ? refDOM.getBoundingClientRect().top : 0;\n restoreScrollStack(stack, newRefTop == 0 ? 0 : newRefTop - refTop);\n}\nfunction restoreScrollStack(stack, dTop) {\n for (let i = 0; i < stack.length; i++) {\n let { dom, top, left } = stack[i];\n if (dom.scrollTop != top + dTop)\n dom.scrollTop = top + dTop;\n if (dom.scrollLeft != left)\n dom.scrollLeft = left;\n }\n}\nlet preventScrollSupported = null;\n// Feature-detects support for .focus({preventScroll: true}), and uses\n// a fallback kludge when not supported.\nfunction focusPreventScroll(dom) {\n if (dom.setActive)\n return dom.setActive(); // in IE\n if (preventScrollSupported)\n return dom.focus(preventScrollSupported);\n let stored = scrollStack(dom);\n dom.focus(preventScrollSupported == null ? {\n get preventScroll() {\n preventScrollSupported = { preventScroll: true };\n return true;\n }\n } : undefined);\n if (!preventScrollSupported) {\n preventScrollSupported = false;\n restoreScrollStack(stored, 0);\n }\n}\nfunction findOffsetInNode(node, coords) {\n let closest, dxClosest = 2e8, coordsClosest, offset = 0;\n let rowBot = coords.top, rowTop = coords.top;\n let firstBelow, coordsBelow;\n for (let child = node.firstChild, childIndex = 0; child; child = child.nextSibling, childIndex++) {\n let rects;\n if (child.nodeType == 1)\n rects = child.getClientRects();\n else if (child.nodeType == 3)\n rects = textRange(child).getClientRects();\n else\n continue;\n for (let i = 0; i < rects.length; i++) {\n let rect = rects[i];\n if (rect.top <= rowBot && rect.bottom >= rowTop) {\n rowBot = Math.max(rect.bottom, rowBot);\n rowTop = Math.min(rect.top, rowTop);\n let dx = rect.left > coords.left ? rect.left - coords.left\n : rect.right < coords.left ? coords.left - rect.right : 0;\n if (dx < dxClosest) {\n closest = child;\n dxClosest = dx;\n coordsClosest = dx && closest.nodeType == 3 ? {\n left: rect.right < coords.left ? rect.right : rect.left,\n top: coords.top\n } : coords;\n if (child.nodeType == 1 && dx)\n offset = childIndex + (coords.left >= (rect.left + rect.right) / 2 ? 1 : 0);\n continue;\n }\n }\n else if (rect.top > coords.top && !firstBelow && rect.left <= coords.left && rect.right >= coords.left) {\n firstBelow = child;\n coordsBelow = { left: Math.max(rect.left, Math.min(rect.right, coords.left)), top: rect.top };\n }\n if (!closest && (coords.left >= rect.right && coords.top >= rect.top ||\n coords.left >= rect.left && coords.top >= rect.bottom))\n offset = childIndex + 1;\n }\n }\n if (!closest && firstBelow) {\n closest = firstBelow;\n coordsClosest = coordsBelow;\n dxClosest = 0;\n }\n if (closest && closest.nodeType == 3)\n return findOffsetInText(closest, coordsClosest);\n if (!closest || (dxClosest && closest.nodeType == 1))\n return { node, offset };\n return findOffsetInNode(closest, coordsClosest);\n}\nfunction findOffsetInText(node, coords) {\n let len = node.nodeValue.length;\n let range = document.createRange();\n for (let i = 0; i < len; i++) {\n range.setEnd(node, i + 1);\n range.setStart(node, i);\n let rect = singleRect(range, 1);\n if (rect.top == rect.bottom)\n continue;\n if (inRect(coords, rect))\n return { node, offset: i + (coords.left >= (rect.left + rect.right) / 2 ? 1 : 0) };\n }\n return { node, offset: 0 };\n}\nfunction inRect(coords, rect) {\n return coords.left >= rect.left - 1 && coords.left <= rect.right + 1 &&\n coords.top >= rect.top - 1 && coords.top <= rect.bottom + 1;\n}\nfunction targetKludge(dom, coords) {\n let parent = dom.parentNode;\n if (parent && /^li$/i.test(parent.nodeName) && coords.left < dom.getBoundingClientRect().left)\n return parent;\n return dom;\n}\nfunction posFromElement(view, elt, coords) {\n let { node, offset } = findOffsetInNode(elt, coords), bias = -1;\n if (node.nodeType == 1 && !node.firstChild) {\n let rect = node.getBoundingClientRect();\n bias = rect.left != rect.right && coords.left > (rect.left + rect.right) / 2 ? 1 : -1;\n }\n return view.docView.posFromDOM(node, offset, bias);\n}\nfunction posFromCaret(view, node, offset, coords) {\n // Browser (in caretPosition/RangeFromPoint) will agressively\n // normalize towards nearby inline nodes. Since we are interested in\n // positions between block nodes too, we first walk up the hierarchy\n // of nodes to see if there are block nodes that the coordinates\n // fall outside of. If so, we take the position before/after that\n // block. If not, we call `posFromDOM` on the raw node/offset.\n let outsideBlock = -1;\n for (let cur = node, sawBlock = false;;) {\n if (cur == view.dom)\n break;\n let desc = view.docView.nearestDesc(cur, true);\n if (!desc)\n return null;\n if (desc.dom.nodeType == 1 && (desc.node.isBlock && desc.parent && !sawBlock || !desc.contentDOM)) {\n let rect = desc.dom.getBoundingClientRect();\n if (desc.node.isBlock && desc.parent && !sawBlock) {\n sawBlock = true;\n if (rect.left > coords.left || rect.top > coords.top)\n outsideBlock = desc.posBefore;\n else if (rect.right < coords.left || rect.bottom < coords.top)\n outsideBlock = desc.posAfter;\n }\n if (!desc.contentDOM && outsideBlock < 0 && !desc.node.isText) {\n // If we are inside a leaf, return the side of the leaf closer to the coords\n let before = desc.node.isBlock ? coords.top < (rect.top + rect.bottom) / 2\n : coords.left < (rect.left + rect.right) / 2;\n return before ? desc.posBefore : desc.posAfter;\n }\n }\n cur = desc.dom.parentNode;\n }\n return outsideBlock > -1 ? outsideBlock : view.docView.posFromDOM(node, offset, -1);\n}\nfunction elementFromPoint(element, coords, box) {\n let len = element.childNodes.length;\n if (len && box.top < box.bottom) {\n for (let startI = Math.max(0, Math.min(len - 1, Math.floor(len * (coords.top - box.top) / (box.bottom - box.top)) - 2)), i = startI;;) {\n let child = element.childNodes[i];\n if (child.nodeType == 1) {\n let rects = child.getClientRects();\n for (let j = 0; j < rects.length; j++) {\n let rect = rects[j];\n if (inRect(coords, rect))\n return elementFromPoint(child, coords, rect);\n }\n }\n if ((i = (i + 1) % len) == startI)\n break;\n }\n }\n return element;\n}\n// Given an x,y position on the editor, get the position in the document.\nfunction posAtCoords(view, coords) {\n let doc = view.dom.ownerDocument, node, offset = 0;\n let caret = caretFromPoint(doc, coords.left, coords.top);\n if (caret)\n ({ node, offset } = caret);\n let elt = (view.root.elementFromPoint ? view.root : doc)\n .elementFromPoint(coords.left, coords.top);\n let pos;\n if (!elt || !view.dom.contains(elt.nodeType != 1 ? elt.parentNode : elt)) {\n let box = view.dom.getBoundingClientRect();\n if (!inRect(coords, box))\n return null;\n elt = elementFromPoint(view.dom, coords, box);\n if (!elt)\n return null;\n }\n // Safari's caretRangeFromPoint returns nonsense when on a draggable element\n if (safari) {\n for (let p = elt; node && p; p = parentNode(p))\n if (p.draggable)\n node = undefined;\n }\n elt = targetKludge(elt, coords);\n if (node) {\n if (gecko && node.nodeType == 1) {\n // Firefox will sometimes return offsets into <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 let prev;\n // When clicking above the right side of an uneditable node, Chrome will report a cursor position after that node.\n if (webkit && offset && node.nodeType == 1 && (prev = node.childNodes[offset - 1]).nodeType == 1 &&\n prev.contentEditable == \"false\" && prev.getBoundingClientRect().top >= coords.top)\n offset--;\n // Suspiciously specific kludge to work around caret*FromPoint\n // never returning a position at the end of the document\n if (node == view.dom && offset == node.childNodes.length - 1 && node.lastChild.nodeType == 1 &&\n coords.top > node.lastChild.getBoundingClientRect().bottom)\n pos = view.state.doc.content.size;\n // Ignore positions directly after a BR, since caret*FromPoint\n // 'round up' positions that would be more accurately placed\n // before the BR node.\n else if (offset == 0 || node.nodeType != 1 || node.childNodes[offset - 1].nodeName != \"BR\")\n pos = posFromCaret(view, node, offset, coords);\n }\n if (pos == null)\n pos = posFromElement(view, elt, coords);\n let desc = view.docView.nearestDesc(elt, true);\n return { pos, inside: desc ? desc.posAtStart - desc.border : -1 };\n}\nfunction nonZero(rect) {\n return rect.top < rect.bottom || rect.left < rect.right;\n}\nfunction singleRect(target, bias) {\n let rects = target.getClientRects();\n if (rects.length) {\n let first = rects[bias < 0 ? 0 : rects.length - 1];\n if (nonZero(first))\n return first;\n }\n return Array.prototype.find.call(rects, nonZero) || target.getBoundingClientRect();\n}\nconst BIDI = /[\\u0590-\\u05f4\\u0600-\\u06ff\\u0700-\\u08ac]/;\n// Given a position in the document model, get a bounding box of the\n// character at that position, relative to the window.\nfunction coordsAtPos(view, pos, side) {\n let { node, offset, atom } = view.docView.domFromPos(pos, side < 0 ? -1 : 1);\n let supportEmptyRange = webkit || gecko;\n if (node.nodeType == 3) {\n // These browsers support querying empty text ranges. Prefer that in\n // bidi context or when at the end of a node.\n if (supportEmptyRange && (BIDI.test(node.nodeValue) || (side < 0 ? !offset : offset == node.nodeValue.length))) {\n let rect = singleRect(textRange(node, offset, offset), side);\n // Firefox returns bad results (the position before the space)\n // when querying a position directly after line-broken\n // whitespace. Detect this situation and and kludge around it\n if (gecko && offset && /\\s/.test(node.nodeValue[offset - 1]) && offset < node.nodeValue.length) {\n let rectBefore = singleRect(textRange(node, offset - 1, offset - 1), -1);\n if (rectBefore.top == rect.top) {\n let rectAfter = singleRect(textRange(node, offset, offset + 1), -1);\n if (rectAfter.top != rect.top)\n return flattenV(rectAfter, rectAfter.left < rectBefore.left);\n }\n }\n return rect;\n }\n else {\n let from = offset, to = offset, takeSide = side < 0 ? 1 : -1;\n if (side < 0 && !offset) {\n to++;\n takeSide = -1;\n }\n else if (side >= 0 && offset == node.nodeValue.length) {\n from--;\n takeSide = 1;\n }\n else if (side < 0) {\n from--;\n }\n else {\n to++;\n }\n return flattenV(singleRect(textRange(node, from, to), takeSide), takeSide < 0);\n }\n }\n let $dom = view.state.doc.resolve(pos - (atom || 0));\n // Return a horizontal line in block context\n if (!$dom.parent.inlineContent) {\n if (atom == null && offset && (side < 0 || offset == nodeSize(node))) {\n let before = node.childNodes[offset - 1];\n if (before.nodeType == 1)\n return flattenH(before.getBoundingClientRect(), false);\n }\n if (atom == null && offset < nodeSize(node)) {\n let after = node.childNodes[offset];\n if (after.nodeType == 1)\n return flattenH(after.getBoundingClientRect(), true);\n }\n return flattenH(node.getBoundingClientRect(), side >= 0);\n }\n // Inline, not in text node (this is not Bidi-safe)\n if (atom == null && offset && (side < 0 || offset == nodeSize(node))) {\n let before = node.childNodes[offset - 1];\n let target = before.nodeType == 3 ? textRange(before, nodeSize(before) - (supportEmptyRange ? 0 : 1))\n // BR nodes tend to only return the rectangle before them.\n // Only use them if they are the last element in their parent\n : before.nodeType == 1 && (before.nodeName != \"BR\" || !before.nextSibling) ? before : null;\n if (target)\n return flattenV(singleRect(target, 1), false);\n }\n if (atom == null && offset < nodeSize(node)) {\n let after = node.childNodes[offset];\n while (after.pmViewDesc && after.pmViewDesc.ignoreForCoords)\n after = after.nextSibling;\n let target = !after ? null : after.nodeType == 3 ? textRange(after, 0, (supportEmptyRange ? 0 : 1))\n : after.nodeType == 1 ? after : null;\n if (target)\n return flattenV(singleRect(target, -1), true);\n }\n // All else failed, just try to get a rectangle for the target node\n return flattenV(singleRect(node.nodeType == 3 ? textRange(node) : node, -side), side >= 0);\n}\nfunction flattenV(rect, left) {\n if (rect.width == 0)\n return rect;\n let x = left ? rect.left : rect.right;\n return { top: rect.top, bottom: rect.bottom, left: x, right: x };\n}\nfunction flattenH(rect, top) {\n if (rect.height == 0)\n return rect;\n let y = top ? rect.top : rect.bottom;\n return { top: y, bottom: y, left: rect.left, right: rect.right };\n}\nfunction withFlushedState(view, state, f) {\n let viewState = view.state, active = view.root.activeElement;\n if (viewState != state)\n view.updateState(state);\n if (active != view.dom)\n view.focus();\n try {\n return f();\n }\n finally {\n if (viewState != state)\n view.updateState(viewState);\n if (active != view.dom && active)\n active.focus();\n }\n}\n// Whether vertical position motion in a given direction\n// from a position would leave a text block.\nfunction endOfTextblockVertical(view, state, dir) {\n let sel = state.selection;\n let $pos = dir == \"up\" ? sel.$from : sel.$to;\n return withFlushedState(view, state, () => {\n let { node: dom } = view.docView.domFromPos($pos.pos, dir == \"up\" ? -1 : 1);\n for (;;) {\n let nearest = view.docView.nearestDesc(dom, true);\n if (!nearest)\n break;\n if (nearest.node.isBlock) {\n dom = nearest.contentDOM || nearest.dom;\n break;\n }\n dom = nearest.dom.parentNode;\n }\n let coords = coordsAtPos(view, $pos.pos, 1);\n for (let child = dom.firstChild; child; child = child.nextSibling) {\n let boxes;\n if (child.nodeType == 1)\n boxes = child.getClientRects();\n else if (child.nodeType == 3)\n boxes = textRange(child, 0, child.nodeValue.length).getClientRects();\n else\n continue;\n for (let i = 0; i < boxes.length; i++) {\n let box = boxes[i];\n if (box.bottom > box.top + 1 &&\n (dir == \"up\" ? coords.top - box.top > (box.bottom - coords.top) * 2\n : box.bottom - coords.bottom > (coords.bottom - box.top) * 2))\n return false;\n }\n }\n return true;\n });\n}\nconst maybeRTL = /[\\u0590-\\u08ac]/;\nfunction endOfTextblockHorizontal(view, state, dir) {\n let { $head } = state.selection;\n if (!$head.parent.isTextblock)\n return false;\n let offset = $head.parentOffset, atStart = !offset, atEnd = offset == $head.parent.content.size;\n let sel = view.domSelection();\n // If the textblock is all LTR, or the browser doesn't support\n // Selection.modify (Edge), fall back to a primitive approach\n if (!maybeRTL.test($head.parent.textContent) || !sel.modify)\n return dir == \"left\" || dir == \"backward\" ? atStart : atEnd;\n return withFlushedState(view, state, () => {\n // This is a huge hack, but appears to be the best we can\n // currently do: use `Selection.modify` to move the selection by\n // one character, and see if that moves the cursor out of the\n // textblock (or doesn't move it at all, when at the start/end of\n // the document).\n let { focusNode: oldNode, focusOffset: oldOff, anchorNode, anchorOffset } = view.domSelectionRange();\n let oldBidiLevel = sel.caretBidiLevel // Only for Firefox\n ;\n sel.modify(\"move\", dir, \"character\");\n let parentDOM = $head.depth ? view.docView.domAfterPos($head.before()) : view.dom;\n let { focusNode: newNode, focusOffset: newOff } = view.domSelectionRange();\n let result = newNode && !parentDOM.contains(newNode.nodeType == 1 ? newNode : newNode.parentNode) ||\n (oldNode == newNode && oldOff == newOff);\n // Restore the previous selection\n try {\n sel.collapse(anchorNode, anchorOffset);\n if (oldNode && (oldNode != anchorNode || oldOff != anchorOffset) && sel.extend)\n sel.extend(oldNode, oldOff);\n }\n catch (_) { }\n if (oldBidiLevel != null)\n sel.caretBidiLevel = oldBidiLevel;\n return result;\n });\n}\nlet cachedState = null;\nlet cachedDir = null;\nlet cachedResult = false;\nfunction endOfTextblock(view, state, dir) {\n if (cachedState == state && cachedDir == dir)\n return cachedResult;\n cachedState = state;\n cachedDir = dir;\n return cachedResult = dir == \"up\" || dir == \"down\"\n ? endOfTextblockVertical(view, state, dir)\n : endOfTextblockHorizontal(view, state, dir);\n}\n\n// View descriptions are data structures that describe the DOM that is\n// used to represent the editor's content. They are used for:\n//\n// - Incremental redrawing when the document changes\n//\n// - Figuring out what part of the document a given DOM position\n// corresponds to\n//\n// - Wiring in custom implementations of the editing interface for a\n// given node\n//\n// They form a doubly-linked mutable tree, starting at `view.docView`.\nconst NOT_DIRTY = 0, CHILD_DIRTY = 1, CONTENT_DIRTY = 2, NODE_DIRTY = 3;\n// Superclass for the various kinds of descriptions. Defines their\n// basic structure and shared methods.\nclass ViewDesc {\n constructor(parent, children, dom, \n // This is the node that holds the child views. It may be null for\n // descs that don't have children.\n contentDOM) {\n this.parent = parent;\n this.children = children;\n this.dom = dom;\n this.contentDOM = contentDOM;\n this.dirty = NOT_DIRTY;\n // An expando property on the DOM node provides a link back to its\n // description.\n dom.pmViewDesc = this;\n }\n // Used to check whether a given description corresponds to a\n // widget/mark/node.\n matchesWidget(widget) { return false; }\n matchesMark(mark) { return false; }\n matchesNode(node, outerDeco, innerDeco) { return false; }\n matchesHack(nodeName) { return false; }\n // When parsing in-editor content (in domchange.js), we allow\n // descriptions to determine the parse rules that should be used to\n // parse them.\n parseRule() { return null; }\n // Used by the editor's event handler to ignore events that come\n // from certain descs.\n stopEvent(event) { return false; }\n // The size of the content represented by this desc.\n get size() {\n let size = 0;\n for (let i = 0; i < this.children.length; i++)\n size += this.children[i].size;\n return size;\n }\n // For block nodes, this represents the space taken up by their\n // start/end tokens.\n get border() { return 0; }\n destroy() {\n this.parent = undefined;\n if (this.dom.pmViewDesc == this)\n this.dom.pmViewDesc = undefined;\n for (let i = 0; i < this.children.length; i++)\n this.children[i].destroy();\n }\n posBeforeChild(child) {\n for (let i = 0, pos = this.posAtStart;; i++) {\n let cur = this.children[i];\n if (cur == child)\n return pos;\n pos += cur.size;\n }\n }\n get posBefore() {\n return this.parent.posBeforeChild(this);\n }\n get posAtStart() {\n return this.parent ? this.parent.posBeforeChild(this) + this.border : 0;\n }\n get posAfter() {\n return this.posBefore + this.size;\n }\n get posAtEnd() {\n return this.posAtStart + this.size - 2 * this.border;\n }\n localPosFromDOM(dom, offset, bias) {\n // If the DOM position is in the content, use the child desc after\n // it to figure out a position.\n if (this.contentDOM && this.contentDOM.contains(dom.nodeType == 1 ? dom : dom.parentNode)) {\n if (bias < 0) {\n let domBefore, desc;\n if (dom == this.contentDOM) {\n domBefore = dom.childNodes[offset - 1];\n }\n else {\n while (dom.parentNode != this.contentDOM)\n dom = dom.parentNode;\n domBefore = dom.previousSibling;\n }\n while (domBefore && !((desc = domBefore.pmViewDesc) && desc.parent == this))\n domBefore = domBefore.previousSibling;\n return domBefore ? this.posBeforeChild(desc) + desc.size : this.posAtStart;\n }\n else {\n let domAfter, desc;\n if (dom == this.contentDOM) {\n domAfter = dom.childNodes[offset];\n }\n else {\n while (dom.parentNode != this.contentDOM)\n dom = dom.parentNode;\n domAfter = dom.nextSibling;\n }\n while (domAfter && !((desc = domAfter.pmViewDesc) && desc.parent == this))\n domAfter = domAfter.nextSibling;\n return domAfter ? this.posBeforeChild(desc) : this.posAtEnd;\n }\n }\n // Otherwise, use various heuristics, falling back on the bias\n // parameter, to determine whether to return the position at the\n // start or at the end of this view desc.\n let atEnd;\n if (dom == this.dom && this.contentDOM) {\n atEnd = offset > domIndex(this.contentDOM);\n }\n else if (this.contentDOM && this.contentDOM != this.dom && this.dom.contains(this.contentDOM)) {\n atEnd = dom.compareDocumentPosition(this.contentDOM) & 2;\n }\n else if (this.dom.firstChild) {\n if (offset == 0)\n for (let search = dom;; search = search.parentNode) {\n if (search == this.dom) {\n atEnd = false;\n break;\n }\n if (search.previousSibling)\n break;\n }\n if (atEnd == null && offset == dom.childNodes.length)\n for (let search = dom;; search = search.parentNode) {\n if (search == this.dom) {\n atEnd = true;\n break;\n }\n if (search.nextSibling)\n break;\n }\n }\n return (atEnd == null ? bias > 0 : atEnd) ? this.posAtEnd : this.posAtStart;\n }\n nearestDesc(dom, onlyNodes = false) {\n for (let first = true, cur = dom; cur; cur = cur.parentNode) {\n let desc = this.getDesc(cur), nodeDOM;\n if (desc && (!onlyNodes || desc.node)) {\n // If dom is outside of this desc's nodeDOM, don't count it.\n if (first && (nodeDOM = desc.nodeDOM) &&\n !(nodeDOM.nodeType == 1 ? nodeDOM.contains(dom.nodeType == 1 ? dom : dom.parentNode) : nodeDOM == dom))\n first = false;\n else\n return desc;\n }\n }\n }\n getDesc(dom) {\n let desc = dom.pmViewDesc;\n for (let cur = desc; cur; cur = cur.parent)\n if (cur == this)\n return desc;\n }\n posFromDOM(dom, offset, bias) {\n for (let scan = dom; scan; scan = scan.parentNode) {\n let desc = this.getDesc(scan);\n if (desc)\n return desc.localPosFromDOM(dom, offset, bias);\n }\n return -1;\n }\n // Find the desc for the node after the given pos, if any. (When a\n // parent node overrode rendering, there might not be one.)\n descAt(pos) {\n for (let i = 0, offset = 0; i < this.children.length; i++) {\n let child = this.children[i], end = offset + child.size;\n if (offset == pos && end != offset) {\n while (!child.border && child.children.length)\n child = child.children[0];\n return child;\n }\n if (pos < end)\n return child.descAt(pos - offset - child.border);\n offset = end;\n }\n }\n domFromPos(pos, side) {\n if (!this.contentDOM)\n return { node: this.dom, offset: 0, atom: pos + 1 };\n // First find the position in the child array\n let i = 0, offset = 0;\n for (let curPos = 0; i < this.children.length; i++) {\n let child = this.children[i], end = curPos + child.size;\n if (end > pos || child instanceof TrailingHackViewDesc) {\n offset = pos - curPos;\n break;\n }\n curPos = end;\n }\n // If this points into the middle of a child, call through\n if (offset)\n return this.children[i].domFromPos(offset - this.children[i].border, side);\n // Go back if there were any zero-length widgets with side >= 0 before this point\n for (let prev; i && !(prev = this.children[i - 1]).size && prev instanceof WidgetViewDesc && prev.side >= 0; i--) { }\n // Scan towards the first useable node\n if (side <= 0) {\n let prev, enter = true;\n for (;; i--, enter = false) {\n prev = i ? this.children[i - 1] : null;\n if (!prev || prev.dom.parentNode == this.contentDOM)\n break;\n }\n if (prev && side && enter && !prev.border && !prev.domAtom)\n return prev.domFromPos(prev.size, side);\n return { node: this.contentDOM, offset: prev ? domIndex(prev.dom) + 1 : 0 };\n }\n else {\n let next, enter = true;\n for (;; i++, enter = false) {\n next = i < this.children.length ? this.children[i] : null;\n if (!next || next.dom.parentNode == this.contentDOM)\n break;\n }\n if (next && enter && !next.border && !next.domAtom)\n return next.domFromPos(0, side);\n return { node: this.contentDOM, offset: next ? domIndex(next.dom) : this.contentDOM.childNodes.length };\n }\n }\n // Used to find a DOM range in a single parent for a given changed\n // range.\n parseRange(from, to, base = 0) {\n if (this.children.length == 0)\n return { node: this.contentDOM, from, to, fromOffset: 0, toOffset: this.contentDOM.childNodes.length };\n let fromOffset = -1, toOffset = -1;\n for (let offset = base, i = 0;; i++) {\n let child = this.children[i], end = offset + child.size;\n if (fromOffset == -1 && from <= end) {\n let childBase = offset + child.border;\n // FIXME maybe descend mark views to parse a narrower range?\n if (from >= childBase && to <= end - child.border && child.node &&\n child.contentDOM && this.contentDOM.contains(child.contentDOM))\n return child.parseRange(from, to, childBase);\n from = offset;\n for (let j = i; j > 0; j--) {\n let prev = this.children[j - 1];\n if (prev.size && prev.dom.parentNode == this.contentDOM && !prev.emptyChildAt(1)) {\n fromOffset = domIndex(prev.dom) + 1;\n break;\n }\n from -= prev.size;\n }\n if (fromOffset == -1)\n fromOffset = 0;\n }\n if (fromOffset > -1 && (end > to || i == this.children.length - 1)) {\n to = end;\n for (let j = i + 1; j < this.children.length; j++) {\n let next = this.children[j];\n if (next.size && next.dom.parentNode == this.contentDOM && !next.emptyChildAt(-1)) {\n toOffset = domIndex(next.dom);\n break;\n }\n to += next.size;\n }\n if (toOffset == -1)\n toOffset = this.contentDOM.childNodes.length;\n break;\n }\n offset = end;\n }\n return { node: this.contentDOM, from, to, fromOffset, toOffset };\n }\n emptyChildAt(side) {\n if (this.border || !this.contentDOM || !this.children.length)\n return false;\n let child = this.children[side < 0 ? 0 : this.children.length - 1];\n return child.size == 0 || child.emptyChildAt(side);\n }\n domAfterPos(pos) {\n let { node, offset } = this.domFromPos(pos, 0);\n if (node.nodeType != 1 || offset == node.childNodes.length)\n throw new RangeError(\"No node after pos \" + pos);\n return node.childNodes[offset];\n }\n // View descs are responsible for setting any selection that falls\n // entirely inside of them, so that custom implementations can do\n // custom things with the selection. Note that this falls apart when\n // a selection starts in such a node and ends in another, in which\n // case we just use whatever domFromPos produces as a best effort.\n setSelection(anchor, head, root, force = false) {\n // If the selection falls entirely in a child, give it to that child\n let from = Math.min(anchor, head), to = Math.max(anchor, head);\n for (let i = 0, offset = 0; i < this.children.length; i++) {\n let child = this.children[i], end = offset + child.size;\n if (from > offset && to < end)\n return child.setSelection(anchor - offset - child.border, head - offset - child.border, root, force);\n offset = end;\n }\n let anchorDOM = this.domFromPos(anchor, anchor ? -1 : 1);\n let headDOM = head == anchor ? anchorDOM : this.domFromPos(head, head ? -1 : 1);\n let domSel = root.getSelection();\n let brKludge = false;\n // On Firefox, using Selection.collapse to put the cursor after a\n // BR node for some reason doesn't always work (#1073). On Safari,\n // the cursor sometimes inexplicable visually lags behind its\n // reported position in such situations (#1092).\n if ((gecko || safari) && anchor == head) {\n let { node, offset } = anchorDOM;\n if (node.nodeType == 3) {\n brKludge = !!(offset && node.nodeValue[offset - 1] == \"\\n\");\n // Issue #1128\n if (brKludge && offset == node.nodeValue.length) {\n for (let scan = node, after; scan; scan = scan.parentNode) {\n if (after = scan.nextSibling) {\n if (after.nodeName == \"BR\")\n anchorDOM = headDOM = { node: after.parentNode, offset: domIndex(after) + 1 };\n break;\n }\n let desc = scan.pmViewDesc;\n if (desc && desc.node && desc.node.isBlock)\n break;\n }\n }\n }\n else {\n let prev = node.childNodes[offset - 1];\n brKludge = prev && (prev.nodeName == \"BR\" || prev.contentEditable == \"false\");\n }\n }\n // Firefox can act strangely when the selection is in front of an\n // uneditable node. See #1163 and https://bugzilla.mozilla.org/show_bug.cgi?id=1709536\n if (gecko && domSel.focusNode && domSel.focusNode != headDOM.node && domSel.focusNode.nodeType == 1) {\n let after = domSel.focusNode.childNodes[domSel.focusOffset];\n if (after && after.contentEditable == \"false\")\n force = true;\n }\n if (!(force || brKludge && safari) &&\n isEquivalentPosition(anchorDOM.node, anchorDOM.offset, domSel.anchorNode, domSel.anchorOffset) &&\n isEquivalentPosition(headDOM.node, headDOM.offset, domSel.focusNode, domSel.focusOffset))\n return;\n // Selection.extend can be used to create an 'inverted' selection\n // (one where the focus is before the anchor), but not all\n // browsers support it yet.\n let domSelExtended = false;\n if ((domSel.extend || anchor == head) && !brKludge) {\n domSel.collapse(anchorDOM.node, anchorDOM.offset);\n try {\n if (anchor != head)\n domSel.extend(headDOM.node, headDOM.offset);\n domSelExtended = true;\n }\n catch (_) {\n // In some cases with Chrome the selection is empty after calling\n // collapse, even when it should be valid. This appears to be a bug, but\n // it is difficult to isolate. If this happens fallback to the old path\n // without using extend.\n // Similarly, this could crash on Safari if the editor is hidden, and\n // there was no selection.\n }\n }\n if (!domSelExtended) {\n if (anchor > head) {\n let tmp = anchorDOM;\n anchorDOM = headDOM;\n headDOM = tmp;\n }\n let range = document.createRange();\n range.setEnd(headDOM.node, headDOM.offset);\n range.setStart(anchorDOM.node, anchorDOM.offset);\n domSel.removeAllRanges();\n domSel.addRange(range);\n }\n }\n ignoreMutation(mutation) {\n return !this.contentDOM && mutation.type != \"selection\";\n }\n get contentLost() {\n return this.contentDOM && this.contentDOM != this.dom && !this.dom.contains(this.contentDOM);\n }\n // Remove a subtree of the element tree that has been touched\n // by a DOM change, so that the next update will redraw it.\n markDirty(from, to) {\n for (let offset = 0, i = 0; i < this.children.length; i++) {\n let child = this.children[i], end = offset + child.size;\n if (offset == end ? from <= end && to >= offset : from < end && to > offset) {\n let startInside = offset + child.border, endInside = end - child.border;\n if (from >= startInside && to <= endInside) {\n this.dirty = from == offset || to == end ? CONTENT_DIRTY : CHILD_DIRTY;\n if (from == startInside && to == endInside &&\n (child.contentLost || child.dom.parentNode != this.contentDOM))\n child.dirty = NODE_DIRTY;\n else\n child.markDirty(from - startInside, to - startInside);\n return;\n }\n else {\n child.dirty = child.dom == child.contentDOM && child.dom.parentNode == this.contentDOM && !child.children.length\n ? CONTENT_DIRTY : NODE_DIRTY;\n }\n }\n offset = end;\n }\n this.dirty = CONTENT_DIRTY;\n }\n markParentsDirty() {\n let level = 1;\n for (let node = this.parent; node; node = node.parent, level++) {\n let dirty = level == 1 ? CONTENT_DIRTY : CHILD_DIRTY;\n if (node.dirty < dirty)\n node.dirty = dirty;\n }\n }\n get domAtom() { return false; }\n get ignoreForCoords() { return false; }\n isText(text) { return false; }\n}\n// A widget desc represents a widget decoration, which is a DOM node\n// drawn between the document nodes.\nclass WidgetViewDesc extends ViewDesc {\n constructor(parent, widget, view, pos) {\n let self, dom = widget.type.toDOM;\n if (typeof dom == \"function\")\n dom = dom(view, () => {\n if (!self)\n return pos;\n if (self.parent)\n return self.parent.posBeforeChild(self);\n });\n if (!widget.type.spec.raw) {\n if (dom.nodeType != 1) {\n let wrap = document.createElement(\"span\");\n wrap.appendChild(dom);\n dom = wrap;\n }\n dom.contentEditable = \"false\";\n dom.classList.add(\"ProseMirror-widget\");\n }\n super(parent, [], dom, null);\n this.widget = widget;\n this.widget = widget;\n self = this;\n }\n matchesWidget(widget) {\n return this.dirty == NOT_DIRTY && widget.type.eq(this.widget.type);\n }\n parseRule() { return { ignore: true }; }\n stopEvent(event) {\n let stop = this.widget.spec.stopEvent;\n return stop ? stop(event) : false;\n }\n ignoreMutation(mutation) {\n return mutation.type != \"selection\" || this.widget.spec.ignoreSelection;\n }\n destroy() {\n this.widget.type.destroy(this.dom);\n super.destroy();\n }\n get domAtom() { return true; }\n get side() { return this.widget.type.side; }\n}\nclass CompositionViewDesc extends ViewDesc {\n constructor(parent, dom, textDOM, text) {\n super(parent, [], dom, null);\n this.textDOM = textDOM;\n this.text = text;\n }\n get size() { return this.text.length; }\n localPosFromDOM(dom, offset) {\n if (dom != this.textDOM)\n return this.posAtStart + (offset ? this.size : 0);\n return this.posAtStart + offset;\n }\n domFromPos(pos) {\n return { node: this.textDOM, offset: pos };\n }\n ignoreMutation(mut) {\n return mut.type === 'characterData' && mut.target.nodeValue == mut.oldValue;\n }\n}\n// A mark desc represents a mark. May have multiple children,\n// depending on how the mark is split. Note that marks are drawn using\n// a fixed nesting order, for simplicity and predictability, so in\n// some cases they will be split more often than would appear\n// necessary.\nclass MarkViewDesc extends ViewDesc {\n constructor(parent, mark, dom, contentDOM) {\n super(parent, [], dom, contentDOM);\n this.mark = mark;\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 parseRule() {\n if ((this.dirty & NODE_DIRTY) || this.mark.type.spec.reparseInView)\n return null;\n return { mark: this.mark.type.name, attrs: this.mark.attrs, contentElement: this.contentDOM };\n }\n matchesMark(mark) { return this.dirty != NODE_DIRTY && this.mark.eq(mark); }\n markDirty(from, to) {\n super.markDirty(from, to);\n // Move dirty info to nearest node view\n if (this.dirty != NOT_DIRTY) {\n let parent = this.parent;\n while (!parent.node)\n parent = parent.parent;\n if (parent.dirty < this.dirty)\n parent.dirty = this.dirty;\n this.dirty = NOT_DIRTY;\n }\n }\n slice(from, to, view) {\n let copy = MarkViewDesc.create(this.parent, this.mark, true, view);\n let nodes = this.children, size = this.size;\n if (to < size)\n nodes = replaceNodes(nodes, to, size, view);\n if (from > 0)\n nodes = replaceNodes(nodes, 0, from, view);\n for (let i = 0; i < nodes.length; i++)\n nodes[i].parent = copy;\n copy.children = nodes;\n return copy;\n }\n}\n// Node view descs are the main, most common type of view desc, and\n// correspond to an actual node in the document. Unlike mark descs,\n// they populate their child array themselves.\nclass NodeViewDesc extends ViewDesc {\n constructor(parent, node, outerDeco, innerDeco, dom, contentDOM, nodeDOM, view, pos) {\n super(parent, [], dom, contentDOM);\n this.node = node;\n this.outerDeco = outerDeco;\n this.innerDeco = innerDeco;\n this.nodeDOM = nodeDOM;\n }\n // By default, a node is rendered using the `toDOM` method from the\n // node type spec. But client code can use the `nodeViews` spec to\n // supply a custom node view, which can influence various aspects of\n // the way the node works.\n //\n // (Using subclassing for this was intentionally decided against,\n // since it'd require exposing a whole slew of finicky\n // implementation details to the user code that they probably will\n // never need.)\n static create(parent, node, outerDeco, innerDeco, view, pos) {\n let custom = view.nodeViews[node.type.name], descObj;\n let spec = custom && custom(node, view, () => {\n // (This is a function that allows the custom view to find its\n // own position)\n if (!descObj)\n return pos;\n if (descObj.parent)\n return descObj.parent.posBeforeChild(descObj);\n }, outerDeco, innerDeco);\n let dom = spec && spec.dom, contentDOM = spec && spec.contentDOM;\n if (node.isText) {\n if (!dom)\n dom = document.createTextNode(node.text);\n else if (dom.nodeType != 3)\n throw new RangeError(\"Text must be rendered as a DOM text node\");\n }\n else if (!dom) {\n ({ 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\"))\n dom.contentEditable = \"false\";\n if (node.type.spec.draggable)\n dom.draggable = true;\n }\n let nodeDOM = dom;\n dom = applyOuterDeco(dom, outerDeco, node);\n if (spec)\n return descObj = new CustomNodeViewDesc(parent, node, outerDeco, innerDeco, dom, contentDOM || null, nodeDOM, spec, view, pos + 1);\n else if (node.isText)\n return new TextViewDesc(parent, node, outerDeco, innerDeco, dom, nodeDOM, view);\n else\n return new NodeViewDesc(parent, node, outerDeco, innerDeco, dom, contentDOM || null, nodeDOM, view, pos + 1);\n }\n parseRule() {\n // Experimental kludge to allow opt-in re-parsing of nodes\n if (this.node.type.spec.reparseInView)\n return null;\n // FIXME the assumption that this can always return the current\n // attrs means that if the user somehow manages to change the\n // attrs in the dom, that won't be picked up. Not entirely sure\n // whether this is a problem\n let rule = { node: this.node.type.name, attrs: this.node.attrs };\n if (this.node.type.whitespace == \"pre\")\n rule.preserveWhitespace = \"full\";\n if (!this.contentDOM) {\n rule.getContent = () => this.node.content;\n }\n else if (!this.contentLost) {\n rule.contentElement = this.contentDOM;\n }\n else {\n // Chrome likes to randomly recreate parent nodes when\n // backspacing things. When that happens, this tries to find the\n // new parent.\n for (let i = this.children.length - 1; i >= 0; i--) {\n let child = this.children[i];\n if (this.dom.contains(child.dom.parentNode)) {\n rule.contentElement = child.dom.parentNode;\n break;\n }\n }\n if (!rule.contentElement)\n rule.getContent = () => Fragment.empty;\n }\n return rule;\n }\n matchesNode(node, outerDeco, innerDeco) {\n return this.dirty == NOT_DIRTY && node.eq(this.node) &&\n sameOuterDeco(outerDeco, this.outerDeco) && innerDeco.eq(this.innerDeco);\n }\n get size() { return this.node.nodeSize; }\n get border() { return this.node.isLeaf ? 0 : 1; }\n // Syncs `this.children` to match `this.node.content` and the local\n // decorations, possibly introducing nesting for marks. Then, in a\n // separate step, syncs the DOM inside `this.contentDOM` to\n // `this.children`.\n updateChildren(view, pos) {\n let inline = this.node.inlineContent, off = pos;\n let composition = view.composing ? this.localCompositionInfo(view, pos) : null;\n let localComposition = composition && composition.pos > -1 ? composition : null;\n let compositionInChild = composition && composition.pos < 0;\n let updater = new ViewTreeUpdater(this, localComposition && localComposition.node, view);\n iterDeco(this.node, this.innerDeco, (widget, i, insideNode) => {\n if (widget.spec.marks)\n updater.syncToMarks(widget.spec.marks, inline, view);\n else if (widget.type.side >= 0 && !insideNode)\n updater.syncToMarks(i == this.node.childCount ? Mark.none : this.node.child(i).marks, inline, view);\n // If the next node is a desc matching this widget, reuse it,\n // otherwise insert the widget as a new view desc.\n updater.placeWidget(widget, view, off);\n }, (child, outerDeco, innerDeco, i) => {\n // Make sure the wrapping mark descs match the node's marks.\n updater.syncToMarks(child.marks, inline, view);\n // Try several strategies for drawing this node\n let compIndex;\n if (updater.findNodeMatch(child, outerDeco, innerDeco, i)) ;\n else if (compositionInChild && view.state.selection.from > off &&\n view.state.selection.to < off + child.nodeSize &&\n (compIndex = updater.findIndexWithChild(composition.node)) > -1 &&\n updater.updateNodeAt(child, outerDeco, innerDeco, compIndex, view)) ;\n else if (updater.updateNextNode(child, outerDeco, innerDeco, view, i, off)) ;\n else {\n // Add it as a new view\n updater.addNode(child, outerDeco, innerDeco, view, off);\n }\n off += child.nodeSize;\n });\n // Drop all remaining descs after the current position.\n updater.syncToMarks([], inline, view);\n if (this.node.isTextblock)\n updater.addTextblockHacks();\n updater.destroyRest();\n // Sync the DOM if anything changed\n if (updater.changed || this.dirty == CONTENT_DIRTY) {\n // May have to protect focused DOM from being changed if a composition is active\n if (localComposition)\n this.protectLocalComposition(view, localComposition);\n renderDescs(this.contentDOM, this.children, view);\n if (ios)\n iosHacks(this.dom);\n }\n }\n localCompositionInfo(view, pos) {\n // Only do something if both the selection and a focused text node\n // are inside of this node\n let { from, to } = view.state.selection;\n if (!(view.state.selection instanceof TextSelection) || from < pos || to > pos + this.node.content.size)\n return null;\n let textNode = view.input.compositionNode;\n if (!textNode || !this.dom.contains(textNode.parentNode))\n return null;\n if (this.node.inlineContent) {\n // Find the text in the focused node in the node, stop if it's not\n // there (may have been modified through other means, in which\n // case it should overwritten)\n let text = textNode.nodeValue;\n let textPos = findTextInFragment(this.node.content, text, from - pos, to - pos);\n return textPos < 0 ? null : { node: textNode, pos: textPos, text };\n }\n else {\n return { node: textNode, pos: -1, text: \"\" };\n }\n }\n protectLocalComposition(view, { node, pos, text }) {\n // The node is already part of a local view desc, leave it there\n if (this.getDesc(node))\n return;\n // Create a composition view for the orphaned nodes\n let topNode = node;\n for (;; topNode = topNode.parentNode) {\n if (topNode.parentNode == this.contentDOM)\n break;\n while (topNode.previousSibling)\n topNode.parentNode.removeChild(topNode.previousSibling);\n while (topNode.nextSibling)\n topNode.parentNode.removeChild(topNode.nextSibling);\n if (topNode.pmViewDesc)\n topNode.pmViewDesc = undefined;\n }\n let desc = new CompositionViewDesc(this, topNode, node, text);\n view.input.compositionNodes.push(desc);\n // Patch up this.children to contain the composition view\n this.children = replaceNodes(this.children, pos, pos + text.length, view, desc);\n }\n // If this desc must be updated to match the given node decoration,\n // do so and return true.\n update(node, outerDeco, innerDeco, view) {\n if (this.dirty == NODE_DIRTY ||\n !node.sameMarkup(this.node))\n return false;\n this.updateInner(node, outerDeco, innerDeco, view);\n return true;\n }\n updateInner(node, outerDeco, innerDeco, view) {\n this.updateOuterDeco(outerDeco);\n this.node = node;\n this.innerDeco = innerDeco;\n if (this.contentDOM)\n this.updateChildren(view, this.posAtStart);\n this.dirty = NOT_DIRTY;\n }\n updateOuterDeco(outerDeco) {\n if (sameOuterDeco(outerDeco, this.outerDeco))\n return;\n let needsWrap = this.nodeDOM.nodeType != 1;\n let oldDOM = this.dom;\n this.dom = patchOuterDeco(this.dom, this.nodeDOM, computeOuterDeco(this.outerDeco, this.node, needsWrap), computeOuterDeco(outerDeco, this.node, needsWrap));\n if (this.dom != oldDOM) {\n oldDOM.pmViewDesc = undefined;\n this.dom.pmViewDesc = this;\n }\n this.outerDeco = outerDeco;\n }\n // Mark this node as being the selected node.\n selectNode() {\n if (this.nodeDOM.nodeType == 1)\n this.nodeDOM.classList.add(\"ProseMirror-selectednode\");\n if (this.contentDOM || !this.node.type.spec.draggable)\n this.dom.draggable = true;\n }\n // Remove selected node marking from this node.\n deselectNode() {\n if (this.nodeDOM.nodeType == 1)\n this.nodeDOM.classList.remove(\"ProseMirror-selectednode\");\n if (this.contentDOM || !this.node.type.spec.draggable)\n this.dom.removeAttribute(\"draggable\");\n }\n get domAtom() { return this.node.isAtom; }\n}\n// Create a view desc for the top-level document node, to be exported\n// and used by the view class.\nfunction docViewDesc(doc, outerDeco, innerDeco, dom, view) {\n applyOuterDeco(dom, outerDeco, doc);\n let docView = new NodeViewDesc(undefined, doc, outerDeco, innerDeco, dom, dom, dom, view, 0);\n if (docView.contentDOM)\n docView.updateChildren(view, 0);\n return docView;\n}\nclass TextViewDesc extends NodeViewDesc {\n constructor(parent, node, outerDeco, innerDeco, dom, nodeDOM, view) {\n super(parent, node, outerDeco, innerDeco, dom, null, nodeDOM, view, 0);\n }\n parseRule() {\n let skip = this.nodeDOM.parentNode;\n while (skip && skip != this.dom && !skip.pmIsDeco)\n skip = skip.parentNode;\n return { skip: (skip || true) };\n }\n update(node, outerDeco, innerDeco, view) {\n if (this.dirty == NODE_DIRTY || (this.dirty != NOT_DIRTY && !this.inParent()) ||\n !node.sameMarkup(this.node))\n return false;\n this.updateOuterDeco(outerDeco);\n if ((this.dirty != NOT_DIRTY || node.text != this.node.text) && node.text != this.nodeDOM.nodeValue) {\n this.nodeDOM.nodeValue = node.text;\n if (view.trackWrites == this.nodeDOM)\n view.trackWrites = null;\n }\n this.node = node;\n this.dirty = NOT_DIRTY;\n return true;\n }\n inParent() {\n let parentDOM = this.parent.contentDOM;\n for (let n = this.nodeDOM; n; n = n.parentNode)\n if (n == parentDOM)\n return true;\n return false;\n }\n domFromPos(pos) {\n return { node: this.nodeDOM, offset: pos };\n }\n localPosFromDOM(dom, offset, bias) {\n if (dom == this.nodeDOM)\n return this.posAtStart + Math.min(offset, this.node.text.length);\n return super.localPosFromDOM(dom, offset, bias);\n }\n ignoreMutation(mutation) {\n return mutation.type != \"characterData\" && mutation.type != \"selection\";\n }\n slice(from, to, view) {\n let node = this.node.cut(from, to), dom = document.createTextNode(node.text);\n return new TextViewDesc(this.parent, node, this.outerDeco, this.innerDeco, dom, dom, view);\n }\n markDirty(from, to) {\n super.markDirty(from, to);\n if (this.dom != this.nodeDOM && (from == 0 || to == this.nodeDOM.nodeValue.length))\n this.dirty = NODE_DIRTY;\n }\n get domAtom() { return false; }\n isText(text) { return this.node.text == text; }\n}\n// A dummy desc used to tag trailing BR or IMG nodes created to work\n// around contentEditable terribleness.\nclass TrailingHackViewDesc extends ViewDesc {\n parseRule() { return { ignore: true }; }\n matchesHack(nodeName) { return this.dirty == NOT_DIRTY && this.dom.nodeName == nodeName; }\n get domAtom() { return true; }\n get ignoreForCoords() { return this.dom.nodeName == \"IMG\"; }\n}\n// A separate subclass is used for customized node views, so that the\n// extra checks only have to be made for nodes that are actually\n// customized.\nclass CustomNodeViewDesc extends NodeViewDesc {\n constructor(parent, node, outerDeco, innerDeco, dom, contentDOM, nodeDOM, spec, view, pos) {\n super(parent, node, outerDeco, innerDeco, dom, contentDOM, nodeDOM, view, pos);\n this.spec = spec;\n }\n // A custom `update` method gets to decide whether the update goes\n // through. If it does, and there's a `contentDOM` node, our logic\n // updates the children.\n update(node, outerDeco, innerDeco, view) {\n if (this.dirty == NODE_DIRTY)\n return false;\n if (this.spec.update) {\n let result = this.spec.update(node, outerDeco, innerDeco);\n if (result)\n this.updateInner(node, outerDeco, innerDeco, view);\n return result;\n }\n else if (!this.contentDOM && !node.isLeaf) {\n return false;\n }\n else {\n return super.update(node, outerDeco, innerDeco, view);\n }\n }\n selectNode() {\n this.spec.selectNode ? this.spec.selectNode() : super.selectNode();\n }\n deselectNode() {\n this.spec.deselectNode ? this.spec.deselectNode() : super.deselectNode();\n }\n setSelection(anchor, head, root, force) {\n this.spec.setSelection ? this.spec.setSelection(anchor, head, root)\n : super.setSelection(anchor, head, root, force);\n }\n destroy() {\n if (this.spec.destroy)\n this.spec.destroy();\n super.destroy();\n }\n stopEvent(event) {\n return this.spec.stopEvent ? this.spec.stopEvent(event) : false;\n }\n ignoreMutation(mutation) {\n return this.spec.ignoreMutation ? this.spec.ignoreMutation(mutation) : super.ignoreMutation(mutation);\n }\n}\n// Sync the content of the given DOM node with the nodes associated\n// with the given array of view descs, recursing into mark descs\n// because this should sync the subtree for a whole node at a time.\nfunction renderDescs(parentDOM, descs, view) {\n let dom = parentDOM.firstChild, written = false;\n for (let i = 0; i < descs.length; i++) {\n let desc = descs[i], childDOM = desc.dom;\n if (childDOM.parentNode == parentDOM) {\n while (childDOM != dom) {\n dom = rm(dom);\n written = true;\n }\n dom = dom.nextSibling;\n }\n else {\n written = true;\n parentDOM.insertBefore(childDOM, dom);\n }\n if (desc instanceof MarkViewDesc) {\n let pos = dom ? dom.previousSibling : parentDOM.lastChild;\n renderDescs(desc.contentDOM, desc.children, view);\n dom = pos ? pos.nextSibling : parentDOM.firstChild;\n }\n }\n while (dom) {\n dom = rm(dom);\n written = true;\n }\n if (written && view.trackWrites == parentDOM)\n view.trackWrites = null;\n}\nconst OuterDecoLevel = function (nodeName) {\n if (nodeName)\n this.nodeName = nodeName;\n};\nOuterDecoLevel.prototype = Object.create(null);\nconst noDeco = [new OuterDecoLevel];\nfunction computeOuterDeco(outerDeco, node, needsWrap) {\n if (outerDeco.length == 0)\n return noDeco;\n let top = needsWrap ? noDeco[0] : new OuterDecoLevel, result = [top];\n for (let i = 0; i < outerDeco.length; i++) {\n let attrs = outerDeco[i].type.attrs;\n if (!attrs)\n continue;\n if (attrs.nodeName)\n result.push(top = new OuterDecoLevel(attrs.nodeName));\n for (let name in attrs) {\n let val = attrs[name];\n if (val == null)\n continue;\n if (needsWrap && result.length == 1)\n result.push(top = new OuterDecoLevel(node.isInline ? \"span\" : \"div\"));\n if (name == \"class\")\n top.class = (top.class ? top.class + \" \" : \"\") + val;\n else if (name == \"style\")\n top.style = (top.style ? top.style + \";\" : \"\") + val;\n else if (name != \"nodeName\")\n top[name] = val;\n }\n }\n return result;\n}\nfunction patchOuterDeco(outerDOM, nodeDOM, prevComputed, curComputed) {\n // Shortcut for trivial case\n if (prevComputed == noDeco && curComputed == noDeco)\n return nodeDOM;\n let curDOM = nodeDOM;\n for (let i = 0; i < curComputed.length; i++) {\n let deco = curComputed[i], prev = prevComputed[i];\n if (i) {\n let parent;\n if (prev && prev.nodeName == deco.nodeName && curDOM != outerDOM &&\n (parent = curDOM.parentNode) && parent.nodeName.toLowerCase() == deco.nodeName) {\n curDOM = parent;\n }\n else {\n parent = document.createElement(deco.nodeName);\n parent.pmIsDeco = true;\n parent.appendChild(curDOM);\n prev = noDeco[0];\n curDOM = parent;\n }\n }\n patchAttributes(curDOM, prev || noDeco[0], deco);\n }\n return curDOM;\n}\nfunction patchAttributes(dom, prev, cur) {\n for (let name in prev)\n if (name != \"class\" && name != \"style\" && name != \"nodeName\" && !(name in cur))\n dom.removeAttribute(name);\n for (let name in cur)\n if (name != \"class\" && name != \"style\" && name != \"nodeName\" && cur[name] != prev[name])\n dom.setAttribute(name, cur[name]);\n if (prev.class != cur.class) {\n let prevList = prev.class ? prev.class.split(\" \").filter(Boolean) : [];\n let curList = cur.class ? cur.class.split(\" \").filter(Boolean) : [];\n for (let i = 0; i < prevList.length; i++)\n if (curList.indexOf(prevList[i]) == -1)\n dom.classList.remove(prevList[i]);\n for (let i = 0; i < curList.length; i++)\n if (prevList.indexOf(curList[i]) == -1)\n dom.classList.add(curList[i]);\n if (dom.classList.length == 0)\n dom.removeAttribute(\"class\");\n }\n if (prev.style != cur.style) {\n if (prev.style) {\n let prop = /\\s*([\\w\\-\\xa1-\\uffff]+)\\s*:(?:\"(?:\\\\.|[^\"])*\"|'(?:\\\\.|[^'])*'|\\(.*?\\)|[^;])*/g, m;\n while (m = prop.exec(prev.style))\n dom.style.removeProperty(m[1]);\n }\n if (cur.style)\n dom.style.cssText += cur.style;\n }\n}\nfunction applyOuterDeco(dom, deco, node) {\n return patchOuterDeco(dom, dom, noDeco, computeOuterDeco(deco, node, dom.nodeType != 1));\n}\nfunction sameOuterDeco(a, b) {\n if (a.length != b.length)\n return false;\n for (let i = 0; i < a.length; i++)\n if (!a[i].type.eq(b[i].type))\n return false;\n return true;\n}\n// Remove a DOM node and return its next sibling.\nfunction rm(dom) {\n let next = dom.nextSibling;\n dom.parentNode.removeChild(dom);\n return next;\n}\n// Helper class for incrementally updating a tree of mark descs and\n// the widget and node descs inside of them.\nclass ViewTreeUpdater {\n constructor(top, lock, view) {\n this.lock = lock;\n this.view = view;\n // Index into `this.top`'s child array, represents the current\n // update position.\n this.index = 0;\n // When entering a mark, the current top and index are pushed\n // onto this.\n this.stack = [];\n // Tracks whether anything was changed\n this.changed = false;\n this.top = top;\n this.preMatch = preMatch(top.node.content, top);\n }\n // Destroy and remove the children between the given indices in\n // `this.top`.\n destroyBetween(start, end) {\n if (start == end)\n return;\n for (let i = start; i < end; i++)\n this.top.children[i].destroy();\n this.top.children.splice(start, end - start);\n this.changed = true;\n }\n // Destroy all remaining children in `this.top`.\n destroyRest() {\n this.destroyBetween(this.index, this.top.children.length);\n }\n // Sync the current stack of mark descs with the given array of\n // marks, reusing existing mark descs when possible.\n syncToMarks(marks, inline, view) {\n let keep = 0, depth = this.stack.length >> 1;\n let maxKeep = Math.min(depth, marks.length);\n while (keep < maxKeep &&\n (keep == depth - 1 ? this.top : this.stack[(keep + 1) << 1])\n .matchesMark(marks[keep]) && marks[keep].type.spec.spanning !== false)\n keep++;\n while (keep < depth) {\n this.destroyRest();\n this.top.dirty = NOT_DIRTY;\n this.index = this.stack.pop();\n this.top = this.stack.pop();\n depth--;\n }\n while (depth < marks.length) {\n this.stack.push(this.top, this.index + 1);\n let found = -1;\n for (let i = this.index; i < Math.min(this.index + 3, this.top.children.length); i++) {\n let next = this.top.children[i];\n if (next.matchesMark(marks[depth]) && !this.isLocked(next.dom)) {\n found = i;\n break;\n }\n }\n if (found > -1) {\n if (found > this.index) {\n this.changed = true;\n this.destroyBetween(this.index, found);\n }\n this.top = this.top.children[this.index];\n }\n else {\n let markDesc = MarkViewDesc.create(this.top, marks[depth], inline, view);\n this.top.children.splice(this.index, 0, markDesc);\n this.top = markDesc;\n this.changed = true;\n }\n this.index = 0;\n depth++;\n }\n }\n // Try to find a node desc matching the given data. Skip over it and\n // return true when successful.\n findNodeMatch(node, outerDeco, innerDeco, index) {\n let found = -1, targetDesc;\n if (index >= this.preMatch.index &&\n (targetDesc = this.preMatch.matches[index - this.preMatch.index]).parent == this.top &&\n targetDesc.matchesNode(node, outerDeco, innerDeco)) {\n found = this.top.children.indexOf(targetDesc, this.index);\n }\n else {\n for (let i = this.index, e = Math.min(this.top.children.length, i + 5); i < e; i++) {\n let child = this.top.children[i];\n if (child.matchesNode(node, outerDeco, innerDeco) && !this.preMatch.matched.has(child)) {\n found = i;\n break;\n }\n }\n }\n if (found < 0)\n return false;\n this.destroyBetween(this.index, found);\n this.index++;\n return true;\n }\n updateNodeAt(node, outerDeco, innerDeco, index, view) {\n let child = this.top.children[index];\n if (child.dirty == NODE_DIRTY && child.dom == child.contentDOM)\n child.dirty = CONTENT_DIRTY;\n if (!child.update(node, outerDeco, innerDeco, view))\n return false;\n this.destroyBetween(this.index, index);\n this.index++;\n return true;\n }\n findIndexWithChild(domNode) {\n for (;;) {\n let parent = domNode.parentNode;\n if (!parent)\n return -1;\n if (parent == this.top.contentDOM) {\n let desc = domNode.pmViewDesc;\n if (desc)\n for (let i = this.index; i < this.top.children.length; i++) {\n if (this.top.children[i] == desc)\n return i;\n }\n return -1;\n }\n domNode = parent;\n }\n }\n // Try to update the next node, if any, to the given data. Checks\n // pre-matches to avoid overwriting nodes that could still be used.\n updateNextNode(node, outerDeco, innerDeco, view, index, pos) {\n for (let i = this.index; i < this.top.children.length; i++) {\n let next = this.top.children[i];\n if (next instanceof NodeViewDesc) {\n let preMatch = this.preMatch.matched.get(next);\n if (preMatch != null && preMatch != index)\n return false;\n let nextDOM = next.dom, updated;\n // Can't update if nextDOM is or contains this.lock, except if\n // it's a text node whose content already matches the new text\n // and whose decorations match the new ones.\n let locked = this.isLocked(nextDOM) &&\n !(node.isText && next.node && next.node.isText && next.nodeDOM.nodeValue == node.text &&\n next.dirty != NODE_DIRTY && sameOuterDeco(outerDeco, next.outerDeco));\n if (!locked && next.update(node, outerDeco, innerDeco, view)) {\n this.destroyBetween(this.index, i);\n if (next.dom != nextDOM)\n this.changed = true;\n this.index++;\n return true;\n }\n else if (!locked && (updated = this.recreateWrapper(next, node, outerDeco, innerDeco, view, pos))) {\n this.top.children[this.index] = updated;\n if (updated.contentDOM) {\n updated.dirty = CONTENT_DIRTY;\n updated.updateChildren(view, pos + 1);\n updated.dirty = NOT_DIRTY;\n }\n this.changed = true;\n this.index++;\n return true;\n }\n break;\n }\n }\n return false;\n }\n // When a node with content is replaced by a different node with\n // identical content, move over its children.\n recreateWrapper(next, node, outerDeco, innerDeco, view, pos) {\n if (next.dirty || node.isAtom || !next.children.length ||\n !next.node.content.eq(node.content))\n return null;\n let wrapper = NodeViewDesc.create(this.top, node, outerDeco, innerDeco, view, pos);\n if (wrapper.contentDOM) {\n wrapper.children = next.children;\n next.children = [];\n for (let ch of wrapper.children)\n ch.parent = wrapper;\n }\n next.destroy();\n return wrapper;\n }\n // Insert the node as a newly created node desc.\n addNode(node, outerDeco, innerDeco, view, pos) {\n let desc = NodeViewDesc.create(this.top, node, outerDeco, innerDeco, view, pos);\n if (desc.contentDOM)\n desc.updateChildren(view, pos + 1);\n this.top.children.splice(this.index++, 0, desc);\n this.changed = true;\n }\n placeWidget(widget, view, pos) {\n let next = this.index < this.top.children.length ? this.top.children[this.index] : null;\n if (next && next.matchesWidget(widget) &&\n (widget == next.widget || !next.widget.type.toDOM.parentNode)) {\n this.index++;\n }\n else {\n let desc = new WidgetViewDesc(this.top, widget, view, pos);\n this.top.children.splice(this.index++, 0, desc);\n this.changed = true;\n }\n }\n // Make sure a textblock looks and behaves correctly in\n // contentEditable.\n addTextblockHacks() {\n let lastChild = this.top.children[this.index - 1], parent = this.top;\n while (lastChild instanceof MarkViewDesc) {\n parent = lastChild;\n lastChild = parent.children[parent.children.length - 1];\n }\n if (!lastChild || // Empty textblock\n !(lastChild instanceof TextViewDesc) ||\n /\\n$/.test(lastChild.node.text) ||\n (this.view.requiresGeckoHackNode && /\\s$/.test(lastChild.node.text))) {\n // Avoid bugs in Safari's cursor drawing (#1165) and Chrome's mouse selection (#1152)\n if ((safari || chrome) && lastChild && lastChild.dom.contentEditable == \"false\")\n this.addHackNode(\"IMG\", parent);\n this.addHackNode(\"BR\", this.top);\n }\n }\n addHackNode(nodeName, parent) {\n if (parent == this.top && this.index < parent.children.length && parent.children[this.index].matchesHack(nodeName)) {\n this.index++;\n }\n else {\n let dom = document.createElement(nodeName);\n if (nodeName == \"IMG\") {\n dom.className = \"ProseMirror-separator\";\n dom.alt = \"\";\n }\n if (nodeName == \"BR\")\n dom.className = \"ProseMirror-trailingBreak\";\n let hack = new TrailingHackViewDesc(this.top, [], dom, null);\n if (parent != this.top)\n parent.children.push(hack);\n else\n parent.children.splice(this.index++, 0, hack);\n this.changed = true;\n }\n }\n isLocked(node) {\n return this.lock && (node == this.lock || node.nodeType == 1 && node.contains(this.lock.parentNode));\n }\n}\n// Iterate from the end of the fragment and array of descs to find\n// directly matching ones, in order to avoid overeagerly reusing those\n// for other nodes. Returns the fragment index of the first node that\n// is part of the sequence of matched nodes at the end of the\n// fragment.\nfunction preMatch(frag, parentDesc) {\n let curDesc = parentDesc, descI = curDesc.children.length;\n let fI = frag.childCount, matched = new Map, matches = [];\n outer: while (fI > 0) {\n let desc;\n for (;;) {\n if (descI) {\n let next = curDesc.children[descI - 1];\n if (next instanceof MarkViewDesc) {\n curDesc = next;\n descI = next.children.length;\n }\n else {\n desc = next;\n descI--;\n break;\n }\n }\n else if (curDesc == parentDesc) {\n break outer;\n }\n else {\n // FIXME\n descI = curDesc.parent.children.indexOf(curDesc);\n curDesc = curDesc.parent;\n }\n }\n let node = desc.node;\n if (!node)\n continue;\n if (node != frag.child(fI - 1))\n break;\n --fI;\n matched.set(desc, fI);\n matches.push(desc);\n }\n return { index: fI, matched, matches: matches.reverse() };\n}\nfunction compareSide(a, b) {\n return a.type.side - b.type.side;\n}\n// This function abstracts iterating over the nodes and decorations in\n// a fragment. Calls `onNode` for each node, with its local and child\n// decorations. Splits text nodes when there is a decoration starting\n// or ending inside of them. Calls `onWidget` for each widget.\nfunction iterDeco(parent, deco, onWidget, onNode) {\n let locals = deco.locals(parent), offset = 0;\n // Simple, cheap variant for when there are no local decorations\n if (locals.length == 0) {\n for (let i = 0; i < parent.childCount; i++) {\n let child = parent.child(i);\n onNode(child, locals, deco.forChild(offset, child), i);\n offset += child.nodeSize;\n }\n return;\n }\n let decoIndex = 0, active = [], restNode = null;\n for (let parentIndex = 0;;) {\n let widget, widgets;\n while (decoIndex < locals.length && locals[decoIndex].to == offset) {\n let next = locals[decoIndex++];\n if (next.widget) {\n if (!widget)\n widget = next;\n else\n (widgets || (widgets = [widget])).push(next);\n }\n }\n if (widget) {\n if (widgets) {\n widgets.sort(compareSide);\n for (let i = 0; i < widgets.length; i++)\n onWidget(widgets[i], parentIndex, !!restNode);\n }\n else {\n onWidget(widget, parentIndex, !!restNode);\n }\n }\n let child, index;\n if (restNode) {\n index = -1;\n child = restNode;\n restNode = null;\n }\n else if (parentIndex < parent.childCount) {\n index = parentIndex;\n child = parent.child(parentIndex++);\n }\n else {\n break;\n }\n for (let i = 0; i < active.length; i++)\n if (active[i].to <= offset)\n active.splice(i--, 1);\n while (decoIndex < locals.length && locals[decoIndex].from <= offset && locals[decoIndex].to > offset)\n active.push(locals[decoIndex++]);\n let end = offset + child.nodeSize;\n if (child.isText) {\n let cutAt = end;\n if (decoIndex < locals.length && locals[decoIndex].from < cutAt)\n cutAt = locals[decoIndex].from;\n for (let i = 0; i < active.length; i++)\n if (active[i].to < cutAt)\n cutAt = active[i].to;\n if (cutAt < end) {\n restNode = child.cut(cutAt - offset);\n child = child.cut(0, cutAt - offset);\n end = cutAt;\n index = -1;\n }\n }\n else {\n while (decoIndex < locals.length && locals[decoIndex].to < end)\n decoIndex++;\n }\n let outerDeco = child.isInline && !child.isLeaf ? active.filter(d => !d.inline) : active.slice();\n onNode(child, outerDeco, deco.forChild(offset, child), index);\n offset = end;\n }\n}\n// List markers in Mobile Safari will mysteriously disappear\n// sometimes. This works around that.\nfunction iosHacks(dom) {\n if (dom.nodeName == \"UL\" || dom.nodeName == \"OL\") {\n let oldCSS = dom.style.cssText;\n dom.style.cssText = oldCSS + \"; list-style: square !important\";\n window.getComputedStyle(dom).listStyle;\n dom.style.cssText = oldCSS;\n }\n}\n// Find a piece of text in an inline fragment, overlapping from-to\nfunction findTextInFragment(frag, text, from, to) {\n for (let i = 0, pos = 0; i < frag.childCount && pos <= to;) {\n let child = frag.child(i++), childStart = pos;\n pos += child.nodeSize;\n if (!child.isText)\n continue;\n let str = child.text;\n while (i < frag.childCount) {\n let next = frag.child(i++);\n pos += next.nodeSize;\n if (!next.isText)\n break;\n str += next.text;\n }\n if (pos >= from) {\n if (pos >= to && str.slice(to - text.length - childStart, to - childStart) == text)\n return to - text.length;\n let found = childStart < to ? str.lastIndexOf(text, to - childStart - 1) : -1;\n if (found >= 0 && found + text.length + childStart >= from)\n return childStart + found;\n if (from == to && str.length >= (to + text.length) - childStart &&\n str.slice(to - childStart, to - childStart + text.length) == text)\n return to;\n }\n }\n return -1;\n}\n// Replace range from-to in an array of view descs with replacement\n// (may be null to just delete). This goes very much against the grain\n// of the rest of this code, which tends to create nodes with the\n// right shape in one go, rather than messing with them after\n// creation, but is necessary in the composition hack.\nfunction replaceNodes(nodes, from, to, view, replacement) {\n let result = [];\n for (let i = 0, off = 0; i < nodes.length; i++) {\n let child = nodes[i], start = off, end = off += child.size;\n if (start >= to || end <= from) {\n result.push(child);\n }\n else {\n if (start < from)\n result.push(child.slice(0, from - start, view));\n if (replacement) {\n result.push(replacement);\n replacement = undefined;\n }\n if (end > to)\n result.push(child.slice(to - start, child.size, view));\n }\n }\n return result;\n}\n\nfunction selectionFromDOM(view, origin = null) {\n let domSel = view.domSelectionRange(), doc = view.state.doc;\n if (!domSel.focusNode)\n return null;\n let nearestDesc = view.docView.nearestDesc(domSel.focusNode), inWidget = nearestDesc && nearestDesc.size == 0;\n let head = view.docView.posFromDOM(domSel.focusNode, domSel.focusOffset, 1);\n if (head < 0)\n return null;\n let $head = doc.resolve(head), $anchor, selection;\n if (selectionCollapsed(domSel)) {\n $anchor = $head;\n while (nearestDesc && !nearestDesc.node)\n nearestDesc = nearestDesc.parent;\n let nearestDescNode = nearestDesc.node;\n if (nearestDesc && nearestDescNode.isAtom && NodeSelection.isSelectable(nearestDescNode) && nearestDesc.parent\n && !(nearestDescNode.isInline && isOnEdge(domSel.focusNode, domSel.focusOffset, nearestDesc.dom))) {\n let pos = nearestDesc.posBefore;\n selection = new NodeSelection(head == pos ? $head : doc.resolve(pos));\n }\n }\n else {\n let anchor = view.docView.posFromDOM(domSel.anchorNode, domSel.anchorOffset, 1);\n if (anchor < 0)\n return null;\n $anchor = doc.resolve(anchor);\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}\nfunction editorOwnsSelection(view) {\n return view.editable ? view.hasFocus() :\n hasSelection(view) && document.activeElement && document.activeElement.contains(view.dom);\n}\nfunction selectionToDOM(view, force = false) {\n let sel = view.state.selection;\n syncNodeSelection(view, sel);\n if (!editorOwnsSelection(view))\n return;\n // The delayed drag selection causes issues with Cell Selections\n // in Safari. And the drag selection delay is to workarond issues\n // which only present in Chrome.\n if (!force && view.input.mouseDown && view.input.mouseDown.allowDefault && chrome) {\n let domSel = view.domSelectionRange(), curSel = view.domObserver.currentSelection;\n if (domSel.anchorNode && curSel.anchorNode &&\n isEquivalentPosition(domSel.anchorNode, domSel.anchorOffset, curSel.anchorNode, curSel.anchorOffset)) {\n view.input.mouseDown.delayedSelectionSync = true;\n view.domObserver.setCurSelection();\n return;\n }\n }\n view.domObserver.disconnectSelection();\n if (view.cursorWrapper) {\n selectCursorWrapper(view);\n }\n else {\n let { anchor, head } = sel, resetEditableFrom, resetEditableTo;\n if (brokenSelectBetweenUneditable && !(sel instanceof TextSelection)) {\n if (!sel.$from.parent.inlineContent)\n resetEditableFrom = temporarilyEditableNear(view, sel.from);\n if (!sel.empty && !sel.$from.parent.inlineContent)\n resetEditableTo = temporarilyEditableNear(view, sel.to);\n }\n view.docView.setSelection(anchor, head, view.root, force);\n if (brokenSelectBetweenUneditable) {\n if (resetEditableFrom)\n resetEditable(resetEditableFrom);\n if (resetEditableTo)\n resetEditable(resetEditableTo);\n }\n if (sel.visible) {\n view.dom.classList.remove(\"ProseMirror-hideselection\");\n }\n else {\n view.dom.classList.add(\"ProseMirror-hideselection\");\n if (\"onselectionchange\" in document)\n removeClassOnSelectionChange(view);\n }\n }\n view.domObserver.setCurSelection();\n view.domObserver.connectSelection();\n}\n// Kludge to work around Webkit not allowing a selection to start/end\n// between non-editable block nodes. We briefly make something\n// editable, set the selection, then set it uneditable again.\nconst brokenSelectBetweenUneditable = safari || chrome && chrome_version < 63;\nfunction temporarilyEditableNear(view, pos) {\n let { node, offset } = view.docView.domFromPos(pos, 0);\n let after = offset < node.childNodes.length ? node.childNodes[offset] : null;\n let before = offset ? node.childNodes[offset - 1] : null;\n if (safari && after && after.contentEditable == \"false\")\n return setEditable(after);\n if ((!after || after.contentEditable == \"false\") &&\n (!before || before.contentEditable == \"false\")) {\n if (after)\n return setEditable(after);\n else if (before)\n return setEditable(before);\n }\n}\nfunction setEditable(element) {\n element.contentEditable = \"true\";\n if (safari && element.draggable) {\n element.draggable = false;\n element.wasDraggable = true;\n }\n return element;\n}\nfunction resetEditable(element) {\n element.contentEditable = \"false\";\n if (element.wasDraggable) {\n element.draggable = true;\n element.wasDraggable = null;\n }\n}\nfunction removeClassOnSelectionChange(view) {\n let doc = view.dom.ownerDocument;\n doc.removeEventListener(\"selectionchange\", view.input.hideSelectionGuard);\n let domSel = view.domSelectionRange();\n let node = domSel.anchorNode, offset = domSel.anchorOffset;\n doc.addEventListener(\"selectionchange\", view.input.hideSelectionGuard = () => {\n if (domSel.anchorNode != node || domSel.anchorOffset != offset) {\n doc.removeEventListener(\"selectionchange\", view.input.hideSelectionGuard);\n setTimeout(() => {\n if (!editorOwnsSelection(view) || view.state.selection.visible)\n view.dom.classList.remove(\"ProseMirror-hideselection\");\n }, 20);\n }\n });\n}\nfunction selectCursorWrapper(view) {\n let domSel = view.domSelection(), range = document.createRange();\n let node = view.cursorWrapper.dom, img = node.nodeName == \"IMG\";\n if (img)\n range.setEnd(node.parentNode, domIndex(node) + 1);\n else\n 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 && ie && ie_version <= 11) {\n node.disabled = true;\n node.disabled = false;\n }\n}\nfunction syncNodeSelection(view, sel) {\n if (sel instanceof NodeSelection) {\n let desc = view.docView.descAt(sel.from);\n if (desc != view.lastSelectedViewDesc) {\n clearNodeSelection(view);\n if (desc)\n desc.selectNode();\n view.lastSelectedViewDesc = desc;\n }\n }\n else {\n clearNodeSelection(view);\n }\n}\n// Clear all DOM statefulness of the last node selection.\nfunction clearNodeSelection(view) {\n if (view.lastSelectedViewDesc) {\n if (view.lastSelectedViewDesc.parent)\n view.lastSelectedViewDesc.deselectNode();\n view.lastSelectedViewDesc = undefined;\n }\n}\nfunction selectionBetween(view, $anchor, $head, bias) {\n return view.someProp(\"createSelectionBetween\", f => f(view, $anchor, $head))\n || TextSelection.between($anchor, $head, bias);\n}\nfunction hasFocusAndSelection(view) {\n if (view.editable && !view.hasFocus())\n return false;\n return hasSelection(view);\n}\nfunction hasSelection(view) {\n let sel = view.domSelectionRange();\n if (!sel.anchorNode)\n return false;\n try {\n // Firefox will raise 'permission denied' errors when accessing\n // properties of `sel.anchorNode` when it's in a generated CSS\n // element.\n return view.dom.contains(sel.anchorNode.nodeType == 3 ? sel.anchorNode.parentNode : sel.anchorNode) &&\n (view.editable || view.dom.contains(sel.focusNode.nodeType == 3 ? sel.focusNode.parentNode : sel.focusNode));\n }\n catch (_) {\n return false;\n }\n}\nfunction anchorInRightPlace(view) {\n let anchorDOM = view.docView.domFromPos(view.state.selection.anchor, 0);\n let domSel = view.domSelectionRange();\n return isEquivalentPosition(anchorDOM.node, anchorDOM.offset, domSel.anchorNode, domSel.anchorOffset);\n}\n\nfunction moveSelectionBlock(state, dir) {\n let { $anchor, $head } = state.selection;\n let $side = dir > 0 ? $anchor.max($head) : $anchor.min($head);\n let $start = !$side.parent.inlineContent ? $side : $side.depth ? state.doc.resolve(dir > 0 ? $side.after() : $side.before()) : null;\n return $start && Selection.findFrom($start, dir);\n}\nfunction apply(view, sel) {\n view.dispatch(view.state.tr.setSelection(sel).scrollIntoView());\n return true;\n}\nfunction selectHorizontally(view, dir, mods) {\n let sel = view.state.selection;\n if (sel instanceof TextSelection) {\n if (mods.indexOf(\"s\") > -1) {\n let { $head } = sel, node = $head.textOffset ? null : dir < 0 ? $head.nodeBefore : $head.nodeAfter;\n if (!node || node.isText || !node.isLeaf)\n return false;\n let $newHead = view.state.doc.resolve($head.pos + node.nodeSize * (dir < 0 ? -1 : 1));\n return apply(view, new TextSelection(sel.$anchor, $newHead));\n }\n else if (!sel.empty) {\n return false;\n }\n else if (view.endOfTextblock(dir > 0 ? \"forward\" : \"backward\")) {\n let next = moveSelectionBlock(view.state, dir);\n if (next && (next instanceof NodeSelection))\n return apply(view, next);\n return false;\n }\n else if (!(mac && mods.indexOf(\"m\") > -1)) {\n let $head = sel.$head, node = $head.textOffset ? null : dir < 0 ? $head.nodeBefore : $head.nodeAfter, desc;\n if (!node || node.isText)\n return false;\n let nodePos = dir < 0 ? $head.pos - node.nodeSize : $head.pos;\n if (!(node.isAtom || (desc = view.docView.descAt(nodePos)) && !desc.contentDOM))\n return false;\n if (NodeSelection.isSelectable(node)) {\n return apply(view, new NodeSelection(dir < 0 ? view.state.doc.resolve($head.pos - node.nodeSize) : $head));\n }\n else if (webkit) {\n // Chrome and Safari will introduce extra pointless cursor\n // positions around inline uneditable nodes, so we have to\n // take over and move the cursor past them (#937)\n return apply(view, new TextSelection(view.state.doc.resolve(dir < 0 ? nodePos : nodePos + node.nodeSize)));\n }\n else {\n return false;\n }\n }\n }\n else if (sel instanceof NodeSelection && sel.node.isInline) {\n return apply(view, new TextSelection(dir > 0 ? sel.$to : sel.$from));\n }\n else {\n let next = moveSelectionBlock(view.state, dir);\n if (next)\n return apply(view, next);\n return false;\n }\n}\nfunction nodeLen(node) {\n return node.nodeType == 3 ? node.nodeValue.length : node.childNodes.length;\n}\nfunction isIgnorable(dom, dir) {\n let desc = dom.pmViewDesc;\n return desc && desc.size == 0 && (dir < 0 || dom.nextSibling || dom.nodeName != \"BR\");\n}\nfunction skipIgnoredNodes(view, dir) {\n return dir < 0 ? skipIgnoredNodesBefore(view) : skipIgnoredNodesAfter(view);\n}\n// Make sure the cursor isn't directly after one or more ignored\n// nodes, which will confuse the browser's cursor motion logic.\nfunction skipIgnoredNodesBefore(view) {\n let sel = view.domSelectionRange();\n let node = sel.focusNode, offset = sel.focusOffset;\n if (!node)\n return;\n let moveNode, moveOffset, force = false;\n // Gecko will do odd things when the selection is directly in front\n // of a non-editable node, so in that case, move it into the next\n // node if possible. Issue prosemirror/prosemirror#832.\n if (gecko && node.nodeType == 1 && offset < nodeLen(node) && isIgnorable(node.childNodes[offset], -1))\n force = true;\n for (;;) {\n if (offset > 0) {\n if (node.nodeType != 1) {\n break;\n }\n else {\n let before = node.childNodes[offset - 1];\n if (isIgnorable(before, -1)) {\n moveNode = node;\n moveOffset = --offset;\n }\n else if (before.nodeType == 3) {\n node = before;\n offset = node.nodeValue.length;\n }\n else\n break;\n }\n }\n else if (isBlockNode(node)) {\n break;\n }\n else {\n let prev = node.previousSibling;\n while (prev && isIgnorable(prev, -1)) {\n moveNode = node.parentNode;\n moveOffset = domIndex(prev);\n prev = prev.previousSibling;\n }\n if (!prev) {\n node = node.parentNode;\n if (node == view.dom)\n break;\n offset = 0;\n }\n else {\n node = prev;\n offset = nodeLen(node);\n }\n }\n }\n if (force)\n setSelFocus(view, node, offset);\n else if (moveNode)\n setSelFocus(view, moveNode, moveOffset);\n}\n// Make sure the cursor isn't directly before one or more ignored\n// nodes.\nfunction skipIgnoredNodesAfter(view) {\n let sel = view.domSelectionRange();\n let node = sel.focusNode, offset = sel.focusOffset;\n if (!node)\n return;\n let len = nodeLen(node);\n let moveNode, moveOffset;\n for (;;) {\n if (offset < len) {\n if (node.nodeType != 1)\n break;\n let after = node.childNodes[offset];\n if (isIgnorable(after, 1)) {\n moveNode = node;\n moveOffset = ++offset;\n }\n else\n break;\n }\n else if (isBlockNode(node)) {\n break;\n }\n else {\n let next = node.nextSibling;\n while (next && isIgnorable(next, 1)) {\n moveNode = next.parentNode;\n moveOffset = domIndex(next) + 1;\n next = next.nextSibling;\n }\n if (!next) {\n node = node.parentNode;\n if (node == view.dom)\n break;\n offset = len = 0;\n }\n else {\n node = next;\n offset = 0;\n len = nodeLen(node);\n }\n }\n }\n if (moveNode)\n setSelFocus(view, moveNode, moveOffset);\n}\nfunction isBlockNode(dom) {\n let desc = dom.pmViewDesc;\n return desc && desc.node && desc.node.isBlock;\n}\nfunction textNodeAfter(node, offset) {\n while (node && offset == node.childNodes.length && !hasBlockDesc(node)) {\n offset = domIndex(node) + 1;\n node = node.parentNode;\n }\n while (node && offset < node.childNodes.length) {\n let next = node.childNodes[offset];\n if (next.nodeType == 3)\n return next;\n if (next.nodeType == 1 && next.contentEditable == \"false\")\n break;\n node = next;\n offset = 0;\n }\n}\nfunction textNodeBefore(node, offset) {\n while (node && !offset && !hasBlockDesc(node)) {\n offset = domIndex(node);\n node = node.parentNode;\n }\n while (node && offset) {\n let next = node.childNodes[offset - 1];\n if (next.nodeType == 3)\n return next;\n if (next.nodeType == 1 && next.contentEditable == \"false\")\n break;\n node = next;\n offset = node.childNodes.length;\n }\n}\nfunction setSelFocus(view, node, offset) {\n if (node.nodeType != 3) {\n let before, after;\n if (after = textNodeAfter(node, offset)) {\n node = after;\n offset = 0;\n }\n else if (before = textNodeBefore(node, offset)) {\n node = before;\n offset = before.nodeValue.length;\n }\n }\n let sel = view.domSelection();\n if (selectionCollapsed(sel)) {\n let range = document.createRange();\n range.setEnd(node, offset);\n range.setStart(node, offset);\n sel.removeAllRanges();\n sel.addRange(range);\n }\n else if (sel.extend) {\n sel.extend(node, offset);\n }\n view.domObserver.setCurSelection();\n let { state } = view;\n // If no state update ends up happening, reset the selection.\n setTimeout(() => {\n if (view.state == state)\n selectionToDOM(view);\n }, 50);\n}\nfunction findDirection(view, pos) {\n let $pos = view.state.doc.resolve(pos);\n if (!(chrome || windows) && $pos.parent.inlineContent) {\n let coords = view.coordsAtPos(pos);\n if (pos > $pos.start()) {\n let before = view.coordsAtPos(pos - 1);\n let mid = (before.top + before.bottom) / 2;\n if (mid > coords.top && mid < coords.bottom && Math.abs(before.left - coords.left) > 1)\n return before.left < coords.left ? \"ltr\" : \"rtl\";\n }\n if (pos < $pos.end()) {\n let after = view.coordsAtPos(pos + 1);\n let mid = (after.top + after.bottom) / 2;\n if (mid > coords.top && mid < coords.bottom && Math.abs(after.left - coords.left) > 1)\n return after.left > coords.left ? \"ltr\" : \"rtl\";\n }\n }\n let computed = getComputedStyle(view.dom).direction;\n return computed == \"rtl\" ? \"rtl\" : \"ltr\";\n}\n// Check whether vertical selection motion would involve node\n// selections. If so, apply it (if not, the result is left to the\n// browser)\nfunction selectVertically(view, dir, mods) {\n let sel = view.state.selection;\n if (sel instanceof TextSelection && !sel.empty || mods.indexOf(\"s\") > -1)\n return false;\n if (mac && mods.indexOf(\"m\") > -1)\n return false;\n let { $from, $to } = sel;\n if (!$from.parent.inlineContent || view.endOfTextblock(dir < 0 ? \"up\" : \"down\")) {\n let next = moveSelectionBlock(view.state, dir);\n if (next && (next instanceof NodeSelection))\n return apply(view, next);\n }\n if (!$from.parent.inlineContent) {\n let side = dir < 0 ? $from : $to;\n let beyond = sel instanceof AllSelection ? Selection.near(side, dir) : Selection.findFrom(side, dir);\n return beyond ? apply(view, beyond) : false;\n }\n return false;\n}\nfunction stopNativeHorizontalDelete(view, dir) {\n if (!(view.state.selection instanceof TextSelection))\n return true;\n let { $head, $anchor, empty } = view.state.selection;\n if (!$head.sameParent($anchor))\n return true;\n if (!empty)\n return false;\n if (view.endOfTextblock(dir > 0 ? \"forward\" : \"backward\"))\n return true;\n let nextNode = !$head.textOffset && (dir < 0 ? $head.nodeBefore : $head.nodeAfter);\n if (nextNode && !nextNode.isText) {\n let tr = view.state.tr;\n if (dir < 0)\n tr.delete($head.pos - nextNode.nodeSize, $head.pos);\n else\n tr.delete($head.pos, $head.pos + nextNode.nodeSize);\n view.dispatch(tr);\n return true;\n }\n return false;\n}\nfunction switchEditable(view, node, state) {\n view.domObserver.stop();\n node.contentEditable = state;\n view.domObserver.start();\n}\n// Issue #867 / #1090 / https://bugs.chromium.org/p/chromium/issues/detail?id=903821\n// In which Safari (and at some point in the past, Chrome) does really\n// wrong things when the down arrow is pressed when the cursor is\n// directly at the start of a textblock and has an uneditable node\n// after it\nfunction safariDownArrowBug(view) {\n if (!safari || view.state.selection.$head.parentOffset > 0)\n return false;\n let { focusNode, focusOffset } = view.domSelectionRange();\n if (focusNode && focusNode.nodeType == 1 && focusOffset == 0 &&\n focusNode.firstChild && focusNode.firstChild.contentEditable == \"false\") {\n let child = focusNode.firstChild;\n switchEditable(view, child, \"true\");\n setTimeout(() => switchEditable(view, child, \"false\"), 20);\n }\n return false;\n}\n// A backdrop key mapping used to make sure we always suppress keys\n// that have a dangerous default effect, even if the commands they are\n// bound to return false, and to make sure that cursor-motion keys\n// find a cursor (as opposed to a node selection) when pressed. For\n// cursor-motion keys, the code in the handlers also takes care of\n// block selections.\nfunction getMods(event) {\n let result = \"\";\n if (event.ctrlKey)\n result += \"c\";\n if (event.metaKey)\n result += \"m\";\n if (event.altKey)\n result += \"a\";\n if (event.shiftKey)\n result += \"s\";\n return result;\n}\nfunction captureKeyDown(view, event) {\n let code = event.keyCode, mods = getMods(event);\n if (code == 8 || (mac && code == 72 && mods == \"c\")) { // Backspace, Ctrl-h on Mac\n return stopNativeHorizontalDelete(view, -1) || skipIgnoredNodes(view, -1);\n }\n else if ((code == 46 && !event.shiftKey) || (mac && code == 68 && mods == \"c\")) { // Delete, Ctrl-d on Mac\n return stopNativeHorizontalDelete(view, 1) || skipIgnoredNodes(view, 1);\n }\n else if (code == 13 || code == 27) { // Enter, Esc\n return true;\n }\n else if (code == 37 || (mac && code == 66 && mods == \"c\")) { // Left arrow, Ctrl-b on Mac\n let dir = code == 37 ? (findDirection(view, view.state.selection.from) == \"ltr\" ? -1 : 1) : -1;\n return selectHorizontally(view, dir, mods) || skipIgnoredNodes(view, dir);\n }\n else if (code == 39 || (mac && code == 70 && mods == \"c\")) { // Right arrow, Ctrl-f on Mac\n let dir = code == 39 ? (findDirection(view, view.state.selection.from) == \"ltr\" ? 1 : -1) : 1;\n return selectHorizontally(view, dir, mods) || skipIgnoredNodes(view, dir);\n }\n else if (code == 38 || (mac && code == 80 && mods == \"c\")) { // Up arrow, Ctrl-p on Mac\n return selectVertically(view, -1, mods) || skipIgnoredNodes(view, -1);\n }\n else if (code == 40 || (mac && code == 78 && mods == \"c\")) { // Down arrow, Ctrl-n on Mac\n return safariDownArrowBug(view) || selectVertically(view, 1, mods) || skipIgnoredNodes(view, 1);\n }\n else if (mods == (mac ? \"m\" : \"c\") &&\n (code == 66 || code == 73 || code == 89 || code == 90)) { // Mod-[biyz]\n return true;\n }\n return false;\n}\n\nfunction serializeForClipboard(view, slice) {\n view.someProp(\"transformCopied\", f => { slice = f(slice, view); });\n let context = [], { content, openStart, openEnd } = slice;\n while (openStart > 1 && openEnd > 1 && content.childCount == 1 && content.firstChild.childCount == 1) {\n openStart--;\n openEnd--;\n let node = content.firstChild;\n context.push(node.type.name, node.attrs != node.type.defaultAttrs ? node.attrs : null);\n content = node.content;\n }\n let serializer = view.someProp(\"clipboardSerializer\") || DOMSerializer.fromSchema(view.state.schema);\n let doc = detachedDoc(), wrap = doc.createElement(\"div\");\n wrap.appendChild(serializer.serializeFragment(content, { document: doc }));\n let firstChild = wrap.firstChild, needsWrap, wrappers = 0;\n while (firstChild && firstChild.nodeType == 1 && (needsWrap = wrapMap[firstChild.nodeName.toLowerCase()])) {\n for (let i = needsWrap.length - 1; i >= 0; i--) {\n let wrapper = doc.createElement(needsWrap[i]);\n while (wrap.firstChild)\n wrapper.appendChild(wrap.firstChild);\n wrap.appendChild(wrapper);\n wrappers++;\n }\n firstChild = wrap.firstChild;\n }\n if (firstChild && firstChild.nodeType == 1)\n firstChild.setAttribute(\"data-pm-slice\", `${openStart} ${openEnd}${wrappers ? ` -${wrappers}` : \"\"} ${JSON.stringify(context)}`);\n let text = view.someProp(\"clipboardTextSerializer\", f => f(slice, view)) ||\n slice.content.textBetween(0, slice.content.size, \"\\n\\n\");\n return { dom: wrap, text };\n}\n// Read a slice of content from the clipboard (or drop data).\nfunction parseFromClipboard(view, text, html, plainText, $context) {\n let inCode = $context.parent.type.spec.code;\n let dom, slice;\n if (!html && !text)\n return null;\n let asText = text && (plainText || inCode || !html);\n if (asText) {\n view.someProp(\"transformPastedText\", f => { text = f(text, inCode || plainText, view); });\n if (inCode)\n return text ? new Slice(Fragment.from(view.state.schema.text(text.replace(/\\r\\n?/g, \"\\n\"))), 0, 0) : Slice.empty;\n let parsed = view.someProp(\"clipboardTextParser\", f => f(text, $context, plainText, view));\n if (parsed) {\n slice = parsed;\n }\n else {\n let marks = $context.marks();\n let { schema } = view.state, serializer = DOMSerializer.fromSchema(schema);\n dom = document.createElement(\"div\");\n text.split(/(?:\\r\\n?|\\n)+/).forEach(block => {\n let p = dom.appendChild(document.createElement(\"p\"));\n if (block)\n p.appendChild(serializer.serializeNode(schema.text(block, marks)));\n });\n }\n }\n else {\n view.someProp(\"transformPastedHTML\", f => { html = f(html, view); });\n dom = readHTML(html);\n if (webkit)\n restoreReplacedSpaces(dom);\n }\n let contextNode = dom && dom.querySelector(\"[data-pm-slice]\");\n let sliceData = contextNode && /^(\\d+) (\\d+)(?: -(\\d+))? (.*)/.exec(contextNode.getAttribute(\"data-pm-slice\") || \"\");\n if (sliceData && sliceData[3])\n for (let i = +sliceData[3]; i > 0; i--) {\n let child = dom.firstChild;\n while (child && child.nodeType != 1)\n child = child.nextSibling;\n if (!child)\n break;\n dom = child;\n }\n if (!slice) {\n let parser = view.someProp(\"clipboardParser\") || view.someProp(\"domParser\") || DOMParser.fromSchema(view.state.schema);\n slice = parser.parseSlice(dom, {\n preserveWhitespace: !!(asText || sliceData),\n context: $context,\n ruleFromNode(dom) {\n if (dom.nodeName == \"BR\" && !dom.nextSibling &&\n dom.parentNode && !inlineParents.test(dom.parentNode.nodeName))\n return { ignore: true };\n return null;\n }\n });\n }\n if (sliceData) {\n slice = addContext(closeSlice(slice, +sliceData[1], +sliceData[2]), sliceData[4]);\n }\n else { // HTML wasn't created by ProseMirror. Make sure top-level siblings are coherent\n slice = Slice.maxOpen(normalizeSiblings(slice.content, $context), true);\n if (slice.openStart || slice.openEnd) {\n let openStart = 0, openEnd = 0;\n for (let node = slice.content.firstChild; openStart < slice.openStart && !node.type.spec.isolating; openStart++, node = node.firstChild) { }\n for (let node = slice.content.lastChild; openEnd < slice.openEnd && !node.type.spec.isolating; openEnd++, node = node.lastChild) { }\n slice = closeSlice(slice, openStart, openEnd);\n }\n }\n view.someProp(\"transformPasted\", f => { slice = f(slice, view); });\n return slice;\n}\nconst inlineParents = /^(a|abbr|acronym|b|cite|code|del|em|i|ins|kbd|label|output|q|ruby|s|samp|span|strong|sub|sup|time|u|tt|var)$/i;\n// Takes a slice parsed with parseSlice, which means there hasn't been\n// any content-expression checking done on the top nodes, tries to\n// find a parent node in the current context that might fit the nodes,\n// and if successful, rebuilds the slice so that it fits into that parent.\n//\n// This addresses the problem that Transform.replace expects a\n// coherent slice, and will fail to place a set of siblings that don't\n// fit anywhere in the schema.\nfunction normalizeSiblings(fragment, $context) {\n if (fragment.childCount < 2)\n return fragment;\n for (let d = $context.depth; d >= 0; d--) {\n let parent = $context.node(d);\n let match = parent.contentMatchAt($context.index(d));\n let lastWrap, result = [];\n fragment.forEach(node => {\n if (!result)\n return;\n let wrap = match.findWrapping(node.type), inLast;\n if (!wrap)\n return result = null;\n if (inLast = result.length && lastWrap.length && addToSibling(wrap, lastWrap, node, result[result.length - 1], 0)) {\n result[result.length - 1] = inLast;\n }\n else {\n if (result.length)\n result[result.length - 1] = closeRight(result[result.length - 1], lastWrap.length);\n let wrapped = withWrappers(node, wrap);\n result.push(wrapped);\n match = match.matchType(wrapped.type);\n lastWrap = wrap;\n }\n });\n if (result)\n return Fragment.from(result);\n }\n return fragment;\n}\nfunction withWrappers(node, wrap, from = 0) {\n for (let i = wrap.length - 1; i >= from; i--)\n node = wrap[i].create(null, Fragment.from(node));\n return node;\n}\n// Used to group adjacent nodes wrapped in similar parents by\n// normalizeSiblings into the same parent node\nfunction addToSibling(wrap, lastWrap, node, sibling, depth) {\n if (depth < wrap.length && depth < lastWrap.length && wrap[depth] == lastWrap[depth]) {\n let inner = addToSibling(wrap, lastWrap, node, sibling.lastChild, depth + 1);\n if (inner)\n return sibling.copy(sibling.content.replaceChild(sibling.childCount - 1, inner));\n let match = sibling.contentMatchAt(sibling.childCount);\n if (match.matchType(depth == wrap.length - 1 ? node.type : wrap[depth + 1]))\n return sibling.copy(sibling.content.append(Fragment.from(withWrappers(node, wrap, depth + 1))));\n }\n}\nfunction closeRight(node, depth) {\n if (depth == 0)\n return node;\n let fragment = node.content.replaceChild(node.childCount - 1, closeRight(node.lastChild, depth - 1));\n let fill = node.contentMatchAt(node.childCount).fillBefore(Fragment.empty, true);\n return node.copy(fragment.append(fill));\n}\nfunction closeRange(fragment, side, from, to, depth, openEnd) {\n let node = side < 0 ? fragment.firstChild : fragment.lastChild, inner = node.content;\n if (fragment.childCount > 1)\n openEnd = 0;\n if (depth < to - 1)\n inner = closeRange(inner, side, from, to, depth + 1, openEnd);\n if (depth >= from)\n inner = side < 0 ? node.contentMatchAt(0).fillBefore(inner, openEnd <= depth).append(inner)\n : inner.append(node.contentMatchAt(node.childCount).fillBefore(Fragment.empty, true));\n return fragment.replaceChild(side < 0 ? 0 : fragment.childCount - 1, node.copy(inner));\n}\nfunction closeSlice(slice, openStart, openEnd) {\n if (openStart < slice.openStart)\n slice = new Slice(closeRange(slice.content, -1, openStart, slice.openStart, 0, slice.openEnd), openStart, slice.openEnd);\n if (openEnd < slice.openEnd)\n slice = new Slice(closeRange(slice.content, 1, openEnd, slice.openEnd, 0, 0), slice.openStart, openEnd);\n return slice;\n}\n// Trick from jQuery -- some elements must be wrapped in other\n// elements for innerHTML to work. I.e. if you do `div.innerHTML =\n// \"<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};\nlet _detachedDoc = null;\nfunction detachedDoc() {\n return _detachedDoc || (_detachedDoc = document.implementation.createHTMLDocument(\"title\"));\n}\nfunction readHTML(html) {\n let metas = /^(\\s*<meta [^>]*>)*/.exec(html);\n if (metas)\n 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)\n for (let i = 0; i < wrap.length; i++)\n elt = elt.querySelector(wrap[i]) || elt;\n return elt;\n}\n// Webkit browsers do some hard-to-predict replacement of regular\n// spaces with non-breaking spaces when putting content on the\n// clipboard. This tries to convert such non-breaking spaces (which\n// will be wrapped in a plain span on Chrome, a span with class\n// Apple-converted-space on Safari) back to regular spaces.\nfunction restoreReplacedSpaces(dom) {\n let nodes = dom.querySelectorAll(chrome ? \"span:not([class]):not([style])\" : \"span.Apple-converted-space\");\n for (let i = 0; i < nodes.length; i++) {\n let node = nodes[i];\n if (node.childNodes.length == 1 && node.textContent == \"\\u00a0\" && node.parentNode)\n node.parentNode.replaceChild(dom.ownerDocument.createTextNode(\" \"), node);\n }\n}\nfunction addContext(slice, context) {\n if (!slice.size)\n return slice;\n let schema = slice.content.firstChild.type.schema, array;\n try {\n array = JSON.parse(context);\n }\n catch (e) {\n return slice;\n }\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())\n break;\n content = Fragment.from(type.create(array[i + 1], content));\n openStart++;\n openEnd++;\n }\n return new Slice(content, openStart, openEnd);\n}\n\n// A collection of DOM events that occur within the editor, and callback functions\n// to invoke when the event fires.\nconst handlers = {};\nconst editHandlers = {};\nconst passiveHandlers = { touchstart: true, touchmove: true };\nclass InputState {\n constructor() {\n this.shiftKey = false;\n this.mouseDown = null;\n this.lastKeyCode = null;\n this.lastKeyCodeTime = 0;\n this.lastClick = { time: 0, x: 0, y: 0, type: \"\" };\n this.lastSelectionOrigin = null;\n this.lastSelectionTime = 0;\n this.lastIOSEnter = 0;\n this.lastIOSEnterFallbackTimeout = -1;\n this.lastFocus = 0;\n this.lastTouch = 0;\n this.lastAndroidDelete = 0;\n this.composing = false;\n this.compositionNode = null;\n this.composingTimeout = -1;\n this.compositionNodes = [];\n this.compositionEndedAt = -2e8;\n this.compositionID = 1;\n // Set to a composition ID when there are pending changes at compositionend\n this.compositionPendingChanges = 0;\n this.domChangeCount = 0;\n this.eventHandlers = Object.create(null);\n this.hideSelectionGuard = null;\n }\n}\nfunction initInput(view) {\n for (let event in handlers) {\n let handler = handlers[event];\n view.dom.addEventListener(event, view.input.eventHandlers[event] = (event) => {\n if (eventBelongsToView(view, event) && !runCustomHandler(view, event) &&\n (view.editable || !(event.type in editHandlers)))\n handler(view, event);\n }, passiveHandlers[event] ? { passive: true } : undefined);\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 (safari)\n view.dom.addEventListener(\"input\", () => null);\n ensureListeners(view);\n}\nfunction setSelectionOrigin(view, origin) {\n view.input.lastSelectionOrigin = origin;\n view.input.lastSelectionTime = Date.now();\n}\nfunction destroyInput(view) {\n view.domObserver.stop();\n for (let type in view.input.eventHandlers)\n view.dom.removeEventListener(type, view.input.eventHandlers[type]);\n clearTimeout(view.input.composingTimeout);\n clearTimeout(view.input.lastIOSEnterFallbackTimeout);\n}\nfunction ensureListeners(view) {\n view.someProp(\"handleDOMEvents\", currentHandlers => {\n for (let type in currentHandlers)\n if (!view.input.eventHandlers[type])\n view.dom.addEventListener(type, view.input.eventHandlers[type] = event => runCustomHandler(view, event));\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}\nfunction eventBelongsToView(view, event) {\n if (!event.bubbles)\n return true;\n if (event.defaultPrevented)\n 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}\nfunction 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}\neditHandlers.keydown = (view, _event) => {\n let event = _event;\n view.input.shiftKey = event.keyCode == 16 || event.shiftKey;\n if (inOrNearComposition(view, event))\n return;\n view.input.lastKeyCode = event.keyCode;\n view.input.lastKeyCodeTime = Date.now();\n // Suppress enter key events on Chrome Android, because those tend\n // to be part of a confused sequence of composition events fired,\n // and handling them eagerly tends to corrupt the input.\n if (android && chrome && event.keyCode == 13)\n return;\n if (event.keyCode != 229)\n view.domObserver.forceFlush();\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 (ios && event.keyCode == 13 && !event.ctrlKey && !event.altKey && !event.metaKey) {\n let now = Date.now();\n view.input.lastIOSEnter = now;\n view.input.lastIOSEnterFallbackTimeout = setTimeout(() => {\n if (view.input.lastIOSEnter == now) {\n view.someProp(\"handleKeyDown\", f => f(view, keyEvent(13, \"Enter\")));\n view.input.lastIOSEnter = 0;\n }\n }, 200);\n }\n else if (view.someProp(\"handleKeyDown\", f => f(view, event)) || captureKeyDown(view, event)) {\n event.preventDefault();\n }\n else {\n setSelectionOrigin(view, \"key\");\n }\n};\neditHandlers.keyup = (view, event) => {\n if (event.keyCode == 16)\n view.input.shiftKey = false;\n};\neditHandlers.keypress = (view, _event) => {\n let event = _event;\n if (inOrNearComposition(view, event) || !event.charCode ||\n event.ctrlKey && !event.altKey || mac && event.metaKey)\n return;\n if (view.someProp(\"handleKeyPress\", f => f(view, event))) {\n event.preventDefault();\n return;\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 (!/[\\r\\n]/.test(text) && !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};\nfunction eventCoords(event) { return { left: event.clientX, top: event.clientY }; }\nfunction isNear(event, click) {\n let dx = click.x - event.clientX, dy = click.y - event.clientY;\n return dx * dx + dy * dy < 100;\n}\nfunction runHandlerOnContext(view, propName, pos, inside, event) {\n if (inside == -1)\n 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}\nfunction updateSelection(view, selection, origin) {\n if (!view.focused)\n view.focus();\n let tr = view.state.tr.setSelection(selection);\n if (origin == \"pointer\")\n tr.setMeta(\"pointer\", true);\n view.dispatch(tr);\n}\nfunction selectClickedLeaf(view, inside) {\n if (inside == -1)\n 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}\nfunction selectClickedNode(view, inside) {\n if (inside == -1)\n return false;\n let sel = view.state.selection, selectedNode, selectAt;\n if (sel instanceof NodeSelection)\n selectedNode = sel.node;\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 if (selectAt != null) {\n updateSelection(view, NodeSelection.create(view.state.doc, selectAt), \"pointer\");\n return true;\n }\n else {\n return false;\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}\nfunction handleDoubleClick(view, pos, inside, event) {\n return runHandlerOnContext(view, \"handleDoubleClickOn\", pos, inside, event) ||\n view.someProp(\"handleDoubleClick\", f => f(view, pos, event));\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, event);\n}\nfunction defaultTripleClick(view, inside, event) {\n if (event.button != 0)\n return false;\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 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}\nfunction forceDOMFlush(view) {\n return endComposition(view);\n}\nconst selectNodeModifier = mac ? \"metaKey\" : \"ctrlKey\";\nhandlers.mousedown = (view, _event) => {\n let event = _event;\n view.input.shiftKey = event.shiftKey;\n let flushed = forceDOMFlush(view);\n let now = Date.now(), type = \"singleClick\";\n if (now - view.input.lastClick.time < 500 && isNear(event, view.input.lastClick) && !event[selectNodeModifier]) {\n if (view.input.lastClick.type == \"singleClick\")\n type = \"doubleClick\";\n else if (view.input.lastClick.type == \"doubleClick\")\n type = \"tripleClick\";\n }\n view.input.lastClick = { time: now, x: event.clientX, y: event.clientY, type };\n let pos = view.posAtCoords(eventCoords(event));\n if (!pos)\n return;\n if (type == \"singleClick\") {\n if (view.input.mouseDown)\n view.input.mouseDown.done();\n view.input.mouseDown = new MouseDown(view, pos, event, !!flushed);\n }\n else if ((type == \"doubleClick\" ? handleDoubleClick : handleTripleClick)(view, pos.pos, pos.inside, event)) {\n event.preventDefault();\n }\n else {\n setSelectionOrigin(view, \"pointer\");\n }\n};\nclass MouseDown {\n constructor(view, pos, event, flushed) {\n this.view = view;\n this.pos = pos;\n this.event = event;\n this.flushed = flushed;\n this.delayedSelectionSync = false;\n this.mightDrag = null;\n this.startDoc = view.state.doc;\n this.selectNode = !!event[selectNodeModifier];\n this.allowDefault = event.shiftKey;\n let targetNode, targetPos;\n if (pos.inside > -1) {\n targetNode = view.state.doc.nodeAt(pos.inside);\n targetPos = pos.inside;\n }\n else {\n let $pos = view.state.doc.resolve(pos.pos);\n targetNode = $pos.parent;\n targetPos = $pos.depth ? $pos.before() : 0;\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 let { selection } = view.state;\n if (event.button == 0 &&\n targetNode.type.spec.draggable && targetNode.type.spec.selectable !== false ||\n selection instanceof NodeSelection && selection.from <= targetPos && selection.to > targetPos)\n this.mightDrag = {\n node: targetNode,\n pos: targetPos,\n addAttr: !!(this.target && !this.target.draggable),\n setUneditable: !!(this.target && 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)\n this.target.draggable = true;\n if (this.mightDrag.setUneditable)\n setTimeout(() => {\n if (this.view.input.mouseDown == this)\n this.target.setAttribute(\"contentEditable\", \"false\");\n }, 20);\n this.view.domObserver.start();\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 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)\n this.target.removeAttribute(\"draggable\");\n if (this.mightDrag.setUneditable)\n this.target.removeAttribute(\"contentEditable\");\n this.view.domObserver.start();\n }\n if (this.delayedSelectionSync)\n setTimeout(() => selectionToDOM(this.view));\n this.view.input.mouseDown = null;\n }\n up(event) {\n this.done();\n if (!this.view.dom.contains(event.target))\n return;\n let pos = this.pos;\n if (this.view.state.doc != this.startDoc)\n pos = this.view.posAtCoords(eventCoords(event));\n this.updateAllowDefault(event);\n if (this.allowDefault || !pos) {\n setSelectionOrigin(this.view, \"pointer\");\n }\n else if (handleSingleClick(this.view, pos.pos, pos.inside, event, this.selectNode)) {\n event.preventDefault();\n }\n else if (event.button == 0 &&\n (this.flushed ||\n // Safari ignores clicks on draggable elements\n (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 (chrome && !this.view.state.selection.visible &&\n Math.min(Math.abs(pos.pos - this.view.state.selection.from), 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 }\n else {\n setSelectionOrigin(this.view, \"pointer\");\n }\n }\n move(event) {\n this.updateAllowDefault(event);\n setSelectionOrigin(this.view, \"pointer\");\n if (event.buttons == 0)\n this.done();\n }\n updateAllowDefault(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 }\n}\nhandlers.touchstart = view => {\n view.input.lastTouch = Date.now();\n forceDOMFlush(view);\n setSelectionOrigin(view, \"pointer\");\n};\nhandlers.touchmove = view => {\n view.input.lastTouch = Date.now();\n setSelectionOrigin(view, \"pointer\");\n};\nhandlers.contextmenu = view => forceDOMFlush(view);\nfunction inOrNearComposition(view, event) {\n if (view.composing)\n 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 (safari && Math.abs(event.timeStamp - view.input.compositionEndedAt) < 500) {\n view.input.compositionEndedAt = -2e8;\n return true;\n }\n return false;\n}\n// Drop active composition after 5 seconds of inactivity on Android\nconst timeoutComposition = android ? 5000 : -1;\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 }\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 (gecko && state.selection.empty && $pos.parentOffset && !$pos.textOffset && $pos.nodeBefore.marks.length) {\n let sel = view.domSelectionRange();\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)\n break;\n if (before.nodeType == 3) {\n view.domSelection().collapse(before, before.nodeValue.length);\n break;\n }\n else {\n node = before;\n offset = -1;\n }\n }\n }\n }\n view.input.composing = true;\n }\n scheduleComposeEnd(view, timeoutComposition);\n};\neditHandlers.compositionend = (view, event) => {\n if (view.composing) {\n view.input.composing = false;\n view.input.compositionEndedAt = event.timeStamp;\n view.input.compositionPendingChanges = view.domObserver.pendingRecords().length ? view.input.compositionID : 0;\n view.input.compositionNode = null;\n if (view.input.compositionPendingChanges)\n Promise.resolve().then(() => view.domObserver.flush());\n view.input.compositionID++;\n scheduleComposeEnd(view, 20);\n }\n};\nfunction scheduleComposeEnd(view, delay) {\n clearTimeout(view.input.composingTimeout);\n if (delay > -1)\n view.input.composingTimeout = setTimeout(() => endComposition(view), delay);\n}\nfunction clearComposition(view) {\n if (view.composing) {\n view.input.composing = false;\n view.input.compositionEndedAt = timestampFromCustomEvent();\n }\n while (view.input.compositionNodes.length > 0)\n view.input.compositionNodes.pop().markParentsDirty();\n}\nfunction findCompositionNode(view) {\n let sel = view.domSelectionRange();\n if (!sel.focusNode)\n return null;\n let textBefore = textNodeBefore$1(sel.focusNode, sel.focusOffset);\n let textAfter = textNodeAfter$1(sel.focusNode, sel.focusOffset);\n if (textBefore && textAfter && textBefore != textAfter) {\n let descAfter = textAfter.pmViewDesc;\n if (!descAfter || !descAfter.isText(textAfter.nodeValue)) {\n return textAfter;\n }\n else if (view.input.compositionNode == textAfter) {\n let descBefore = textBefore.pmViewDesc;\n if (!(!descBefore || !descBefore.isText(textBefore.nodeValue)))\n return textAfter;\n }\n }\n return textBefore;\n}\nfunction timestampFromCustomEvent() {\n let event = document.createEvent(\"Event\");\n event.initEvent(\"event\", true, true);\n return event.timeStamp;\n}\n/**\n@internal\n*/\nfunction endComposition(view, forceUpdate = false) {\n if (android && view.domObserver.flushingSoon >= 0)\n return;\n view.domObserver.forceFlush();\n clearComposition(view);\n if (forceUpdate || view.docView && view.docView.dirty) {\n let sel = selectionFromDOM(view);\n if (sel && !sel.eq(view.state.selection))\n view.dispatch(view.state.tr.setSelection(sel));\n else\n view.updateState(view.state);\n return true;\n }\n return false;\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)\n 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)\n wrap.parentNode.removeChild(wrap);\n view.focus();\n }, 50);\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 = (ie && ie_version < 15) ||\n (ios && webkit_version < 604);\nhandlers.copy = editHandlers.cut = (view, _event) => {\n let event = _event;\n let sel = view.state.selection, cut = event.type == \"cut\";\n if (sel.empty)\n return;\n // IE and Edge's clipboard interface is completely broken\n let data = brokenClipboardAPI ? null : event.clipboardData;\n let slice = sel.content(), { dom, text } = serializeForClipboard(view, slice);\n if (data) {\n event.preventDefault();\n data.clearData();\n data.setData(\"text/html\", dom.innerHTML);\n data.setData(\"text/plain\", text);\n }\n else {\n captureCopy(view, dom);\n }\n if (cut)\n view.dispatch(view.state.tr.deleteSelection().scrollIntoView().setMeta(\"uiEvent\", \"cut\"));\n};\nfunction sliceSingleNode(slice) {\n return slice.openStart == 0 && slice.openEnd == 0 && slice.content.childCount == 1 ? slice.content.firstChild : null;\n}\nfunction capturePaste(view, event) {\n if (!view.dom.parentNode)\n return;\n let plainText = view.input.shiftKey || view.state.selection.$from.parent.type.spec.code;\n let target = view.dom.parentNode.appendChild(document.createElement(plainText ? \"textarea\" : \"div\"));\n if (!plainText)\n target.contentEditable = \"true\";\n target.style.cssText = \"position: fixed; left: -10000px; top: 10px\";\n target.focus();\n let plain = view.input.shiftKey && view.input.lastKeyCode != 45;\n setTimeout(() => {\n view.focus();\n if (target.parentNode)\n target.parentNode.removeChild(target);\n if (plainText)\n doPaste(view, target.value, null, plain, event);\n else\n doPaste(view, target.textContent, target.innerHTML, plain, event);\n }, 50);\n}\nfunction doPaste(view, text, html, preferPlain, event) {\n let slice = parseFromClipboard(view, text, html, preferPlain, view.state.selection.$from);\n if (view.someProp(\"handlePaste\", f => f(view, event, slice || Slice.empty)))\n return true;\n if (!slice)\n return false;\n let singleNode = sliceSingleNode(slice);\n let tr = singleNode\n ? view.state.tr.replaceSelectionWith(singleNode, preferPlain)\n : view.state.tr.replaceSelection(slice);\n view.dispatch(tr.scrollIntoView().setMeta(\"paste\", true).setMeta(\"uiEvent\", \"paste\"));\n return true;\n}\nfunction getText(clipboardData) {\n let text = clipboardData.getData(\"text/plain\") || clipboardData.getData(\"Text\");\n if (text)\n return text;\n let uris = clipboardData.getData(\"text/uri-list\");\n return uris ? uris.replace(/\\r?\\n/g, \" \") : \"\";\n}\neditHandlers.paste = (view, _event) => {\n let event = _event;\n // Handling paste from JavaScript during composition is very poorly\n // handled by browsers, so as a dodgy but preferable kludge, we just\n // let the browser do its native thing there, except on Android,\n // where the editor is almost always composing.\n if (view.composing && !android)\n return;\n let data = brokenClipboardAPI ? null : event.clipboardData;\n let plain = view.input.shiftKey && view.input.lastKeyCode != 45;\n if (data && doPaste(view, getText(data), data.getData(\"text/html\"), plain, event))\n event.preventDefault();\n else\n capturePaste(view, event);\n};\nclass Dragging {\n constructor(slice, move, node) {\n this.slice = slice;\n this.move = move;\n this.node = node;\n }\n}\nconst dragCopyModifier = mac ? \"altKey\" : \"ctrlKey\";\nhandlers.dragstart = (view, _event) => {\n let event = _event;\n let mouseDown = view.input.mouseDown;\n if (mouseDown)\n mouseDown.done();\n if (!event.dataTransfer)\n return;\n let sel = view.state.selection;\n let pos = sel.empty ? null : view.posAtCoords(eventCoords(event));\n let node;\n if (pos && pos.pos >= sel.from && pos.pos <= (sel instanceof NodeSelection ? sel.to - 1 : sel.to)) ;\n else if (mouseDown && mouseDown.mightDrag) {\n node = NodeSelection.create(view.state.doc, mouseDown.mightDrag.pos);\n }\n else if (event.target && event.target.nodeType == 1) {\n let desc = view.docView.nearestDesc(event.target, true);\n if (desc && desc.node.type.spec.draggable && desc != view.docView)\n node = NodeSelection.create(view.state.doc, desc.posBefore);\n }\n let slice = (node || view.state.selection).content(), { dom, text } = serializeForClipboard(view, slice);\n event.dataTransfer.clearData();\n event.dataTransfer.setData(brokenClipboardAPI ? \"Text\" : \"text/html\", dom.innerHTML);\n // See https://github.com/ProseMirror/prosemirror/issues/1156\n event.dataTransfer.effectAllowed = \"copyMove\";\n if (!brokenClipboardAPI)\n event.dataTransfer.setData(\"text/plain\", text);\n view.dragging = new Dragging(slice, !event[dragCopyModifier], node);\n};\nhandlers.dragend = view => {\n let dragging = view.dragging;\n window.setTimeout(() => {\n if (view.dragging == dragging)\n view.dragging = null;\n }, 50);\n};\neditHandlers.dragover = editHandlers.dragenter = (_, e) => e.preventDefault();\neditHandlers.drop = (view, _event) => {\n let event = _event;\n let dragging = view.dragging;\n view.dragging = null;\n if (!event.dataTransfer)\n return;\n let eventPos = view.posAtCoords(eventCoords(event));\n if (!eventPos)\n return;\n let $mouse = view.state.doc.resolve(eventPos.pos);\n let slice = dragging && dragging.slice;\n if (slice) {\n view.someProp(\"transformPasted\", f => { slice = f(slice, view); });\n }\n else {\n slice = parseFromClipboard(view, getText(event.dataTransfer), brokenClipboardAPI ? null : event.dataTransfer.getData(\"text/html\"), false, $mouse);\n }\n let move = !!(dragging && !event[dragCopyModifier]);\n if (view.someProp(\"handleDrop\", f => f(view, event, slice || Slice.empty, move))) {\n event.preventDefault();\n return;\n }\n if (!slice)\n return;\n event.preventDefault();\n let insertPos = slice ? dropPoint(view.state.doc, $mouse.pos, slice) : $mouse.pos;\n if (insertPos == null)\n insertPos = $mouse.pos;\n let tr = view.state.tr;\n if (move) {\n let { node } = dragging;\n if (node)\n node.replace(tr);\n else\n 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))\n return;\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 }\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};\nhandlers.focus = view => {\n view.input.lastFocus = Date.now();\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.domSelectionRange()))\n selectionToDOM(view);\n }, 20);\n }\n};\nhandlers.blur = (view, _event) => {\n let event = _event;\n if (view.focused) {\n view.domObserver.stop();\n view.dom.classList.remove(\"ProseMirror-focused\");\n view.domObserver.start();\n if (event.relatedTarget && view.dom.contains(event.relatedTarget))\n view.domObserver.currentSelection.clear();\n view.focused = false;\n }\n};\nhandlers.beforeinput = (view, _event) => {\n let event = _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 // Very specific hack to deal with backspace sometimes failing on\n // Chrome Android when after an uneditable node.\n if (chrome && android && event.inputType == \"deleteContentBackward\") {\n view.domObserver.flushSoon();\n let { domChangeCount } = view.input;\n setTimeout(() => {\n if (view.input.domChangeCount != domChangeCount)\n 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\"))))\n return;\n let { $cursor } = view.state.selection;\n // Crude approximation of backspace behavior when no command handled it\n if ($cursor && $cursor.pos > 0)\n view.dispatch(view.state.tr.delete($cursor.pos - 1, $cursor.pos).scrollIntoView());\n }, 50);\n }\n};\n// Make sure all handlers get registered\nfor (let prop in editHandlers)\n handlers[prop] = editHandlers[prop];\n\nfunction compareObjs(a, b) {\n if (a == b)\n return true;\n for (let p in a)\n if (a[p] !== b[p])\n return false;\n for (let p in b)\n if (!(p in a))\n return false;\n return true;\n}\nclass WidgetType {\n constructor(toDOM, spec) {\n this.toDOM = toDOM;\n this.spec = spec || noSpec;\n this.side = this.spec.side || 0;\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 valid() { return true; }\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 destroy(node) {\n if (this.spec.destroy)\n this.spec.destroy(node);\n }\n}\nclass InlineType {\n constructor(attrs, spec) {\n this.attrs = attrs;\n this.spec = spec || noSpec;\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 valid(_, span) { return span.from < span.to; }\n eq(other) {\n return this == other ||\n (other instanceof InlineType && compareObjs(this.attrs, other.attrs) &&\n compareObjs(this.spec, other.spec));\n }\n static is(span) { return span.type instanceof InlineType; }\n destroy() { }\n}\nclass NodeType {\n constructor(attrs, spec) {\n this.attrs = attrs;\n this.spec = spec || noSpec;\n }\n map(mapping, span, offset, oldOffset) {\n let from = mapping.mapResult(span.from + oldOffset, 1);\n if (from.deleted)\n return null;\n let to = mapping.mapResult(span.to + oldOffset, -1);\n if (to.deleted || to.pos <= from.pos)\n return null;\n return new Decoration(from.pos - offset, to.pos - offset, this);\n }\n valid(node, span) {\n let { index, offset } = node.content.findIndex(span.from), child;\n return offset == span.from && !(child = node.child(index)).isText && offset + child.nodeSize == span.to;\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 destroy() { }\n}\n/**\nDecoration objects can be provided to the view through the\n[`decorations` prop](https://prosemirror.net/docs/ref/#view.EditorProps.decorations). They come in\nseveral variants—see the static members of this class for details.\n*/\nclass Decoration {\n /**\n @internal\n */\n constructor(\n /**\n The start position of the decoration.\n */\n from, \n /**\n The end position. Will be the same as `from` for [widget\n decorations](https://prosemirror.net/docs/ref/#view.Decoration^widget).\n */\n to, \n /**\n @internal\n */\n type) {\n this.from = from;\n this.to = to;\n this.type = type;\n }\n /**\n @internal\n */\n copy(from, to) {\n return new Decoration(from, to, this.type);\n }\n /**\n @internal\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 @internal\n */\n map(mapping, offset, oldOffset) {\n return this.type.map(mapping, this, offset, oldOffset);\n }\n /**\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 static widget(pos, toDOM, spec) {\n return new Decoration(pos, pos, new WidgetType(toDOM, spec));\n }\n /**\n Creates an inline decoration, which adds the given attributes to\n each inline node between `from` and `to`.\n */\n static inline(from, to, attrs, spec) {\n return new Decoration(from, to, new InlineType(attrs, spec));\n }\n /**\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 static node(from, to, attrs, spec) {\n return new Decoration(from, to, new NodeType(attrs, spec));\n }\n /**\n The spec provided when creating this decoration. Can be useful\n if you've stored extra information in that object.\n */\n get spec() { return this.type.spec; }\n /**\n @internal\n */\n get inline() { return this.type instanceof InlineType; }\n /**\n @internal\n */\n get widget() { return this.type instanceof WidgetType; }\n}\nconst none = [], noSpec = {};\n/**\nA collection of [decorations](https://prosemirror.net/docs/ref/#view.Decoration), organized in such\na way that the drawing algorithm can efficiently use and compare\nthem. This is a persistent data structure—it is not modified,\nupdates create a new value.\n*/\nclass DecorationSet {\n /**\n @internal\n */\n constructor(local, children) {\n this.local = local.length ? local : none;\n this.children = children.length ? children : none;\n }\n /**\n Create a set of decorations, using the structure of the given\n document. This will consume (modify) the `decorations` array, so\n you must make a copy if you want need to preserve that.\n */\n static create(doc, decorations) {\n return decorations.length ? buildTree(decorations, doc, 0, noSpec) : empty;\n }\n /**\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 */\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 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 Map the set of decorations in response to a change in the\n document.\n */\n map(mapping, doc, options) {\n if (this == empty || mapping.maps.length == 0)\n return this;\n return this.mapInner(mapping, doc, 0, 0, options || noSpec);\n }\n /**\n @internal\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))\n (newLocal || (newLocal = [])).push(mapped);\n else if (options.onRemove)\n options.onRemove(this.local[i].spec);\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), none) : empty;\n }\n /**\n Add the given array of decorations to the ones in the set,\n producing a new set. Consumes the `decorations` array. Needs\n access to the current document to create the appropriate tree\n structure.\n */\n add(doc, decorations) {\n if (!decorations.length)\n return this;\n if (this == empty)\n return DecorationSet.create(doc, decorations);\n return this.addInner(doc, decorations, 0);\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)))\n return;\n if (!children)\n children = this.children.slice();\n while (childIndex < children.length && children[childIndex] < childOffset)\n 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 let local = moveSpans(childIndex ? withoutNulls(decorations) : decorations, -offset);\n for (let i = 0; i < local.length; i++)\n if (!local[i].type.valid(doc, local[i]))\n local.splice(i--, 1);\n return new DecorationSet(local.length ? this.local.concat(local).sort(byPos) : this.local, children || this.children);\n }\n /**\n Create a new set that contains the decorations in this set, minus\n the ones in the given array.\n */\n remove(decorations) {\n if (decorations.length == 0 || this == empty)\n return this;\n return this.removeInner(decorations, 0);\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;\n let from = children[i] + offset, to = children[i + 1] + offset;\n for (let j = 0, span; j < decorations.length; j++)\n 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)\n continue;\n if (children == this.children)\n children = this.children.slice();\n let removed = children[i + 2].removeInner(found, from + 1);\n if (removed != empty) {\n children[i + 2] = removed;\n }\n else {\n children.splice(i, 3);\n i -= 3;\n }\n }\n if (local.length)\n for (let i = 0, span; i < decorations.length; i++)\n if (span = decorations[i]) {\n for (let j = 0; j < local.length; j++)\n if (local[j].eq(span, offset)) {\n if (local == this.local)\n local = this.local.slice();\n local.splice(j--, 1);\n }\n }\n if (children == this.children && local == this.local)\n return this;\n return local.length || children.length ? new DecorationSet(local, children) : empty;\n }\n forChild(offset, node) {\n if (this == empty)\n return this;\n if (node.isLeaf)\n return DecorationSet.empty;\n let child, local;\n for (let i = 0; i < this.children.length; i += 3)\n if (this.children[i] >= offset) {\n if (this.children[i] == offset)\n 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)\n (local || (local = [])).push(dec.copy(from, to));\n }\n }\n if (local) {\n let localSet = new DecorationSet(local.sort(byPos), none);\n return child ? new DecorationGroup([localSet, child]) : localSet;\n }\n return child || empty;\n }\n /**\n @internal\n */\n eq(other) {\n if (this == other)\n return true;\n if (!(other instanceof DecorationSet) ||\n this.local.length != other.local.length ||\n this.children.length != other.children.length)\n return false;\n for (let i = 0; i < this.local.length; i++)\n if (!this.local[i].eq(other.local[i]))\n 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]))\n return false;\n return true;\n }\n /**\n @internal\n */\n locals(node) {\n return removeOverlap(this.localsInner(node));\n }\n /**\n @internal\n */\n localsInner(node) {\n if (this == empty)\n return none;\n if (node.inlineContent || !this.local.some(InlineType.is))\n 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/**\nThe empty set of decorations.\n*/\nDecorationSet.empty = new DecorationSet([], []);\n/**\n@internal\n*/\nDecorationSet.removeOverlap = removeOverlap;\nconst empty = DecorationSet.empty;\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 map(mapping, doc) {\n const mappedDecos = this.members.map(member => member.map(mapping, doc, noSpec));\n return DecorationGroup.from(mappedDecos);\n }\n forChild(offset, child) {\n if (child.isLeaf)\n 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)\n continue;\n if (result instanceof DecorationGroup)\n found = found.concat(result.members);\n else\n found.push(result);\n }\n return DecorationGroup.from(found);\n }\n eq(other) {\n if (!(other instanceof DecorationGroup) ||\n other.members.length != this.members.length)\n return false;\n for (let i = 0; i < this.members.length; i++)\n if (!this.members[i].eq(other.members[i]))\n return false;\n return true;\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)\n continue;\n if (!result) {\n result = locals;\n }\n else {\n if (sorted) {\n result = result.slice();\n sorted = false;\n }\n for (let j = 0; j < locals.length; j++)\n result.push(locals[j]);\n }\n }\n return result ? removeOverlap(sorted ? result : result.sort(byPos)) : none;\n }\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.every(m => m instanceof DecorationSet) ? members :\n members.reduce((r, m) => r.concat(m instanceof DecorationSet ? m : m.members), []));\n }\n }\n}\nfunction mapChildren(oldChildren, newLocal, mapping, node, offset, oldOffset, options) {\n let children = oldChildren.slice();\n // Mark the children that are directly touched by changes, and\n // move those that are after the changes.\n for (let i = 0, baseOffset = oldOffset; i < mapping.maps.length; i++) {\n let moved = 0;\n mapping.maps[i].forEach((oldStart, oldEnd, newStart, newEnd) => {\n let dSize = (newEnd - newStart) - (oldEnd - oldStart);\n for (let i = 0; i < children.length; i += 3) {\n let end = children[i + 1];\n if (end < 0 || oldStart > end + baseOffset - moved)\n continue;\n let start = children[i] + baseOffset - moved;\n if (oldEnd >= start) {\n children[i + 1] = oldStart <= start ? -2 : -1;\n }\n else if (oldStart >= baseOffset && dSize) {\n children[i] += dSize;\n children[i + 1] += dSize;\n }\n }\n moved += dSize;\n });\n baseOffset = mapping.maps[i].map(baseOffset, -1);\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)\n if (children[i + 1] < 0) { // Touched nodes\n if (children[i + 1] == -2) {\n mustRebuild = true;\n children[i + 1] = -1;\n continue;\n }\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]\n .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 }\n else {\n children[i + 1] = -2;\n mustRebuild = true;\n }\n }\n else {\n mustRebuild = true;\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, 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)\n 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)\n j += 3;\n children.splice(j, 0, built.children[i], built.children[i + 1], built.children[i + 2]);\n }\n }\n return new DecorationSet(newLocal.sort(byPos), children);\n}\nfunction moveSpans(spans, offset) {\n if (!offset || !spans.length)\n 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}\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)\n decorations.push(mapped);\n else if (options.onRemove)\n 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)\n if (children[i + 1] == -1)\n gather(children[i + 2], oldChildren[i] + oldOffset + 1);\n return decorations;\n}\nfunction takeSpansForNode(spans, node, offset) {\n if (node.isLeaf)\n 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}\nfunction withoutNulls(array) {\n let result = [];\n for (let i = 0; i < array.length; i++)\n if (array[i] != null)\n result.push(array[i]);\n return result;\n}\n// Build up a tree that corresponds to a set of decorations. `offset`\n// is a base offset that should be subtracted 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++)\n if (!locals[i].type.valid(node, locals[i])) {\n if (options.onRemove)\n options.onRemove(locals[i].spec);\n locals.splice(i--, 1);\n }\n return locals.length || children.length ? new DecorationSet(locals, children) : empty;\n}\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// 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)\n 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)\n 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 }\n else {\n if (next.from < span.to) {\n if (working == spans)\n 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}\nfunction insertAhead(array, i, deco) {\n while (i < array.length && byPos(deco, array[i]) > 0)\n i++;\n array.splice(i, 0, deco);\n}\n// Get the decorations associated with the current props of a view.\nfunction viewDecorations(view) {\n let found = [];\n view.someProp(\"decorations\", f => {\n let result = f(view.state);\n if (result && result != empty)\n 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\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 = ie && ie_version <= 11;\nclass SelectionState {\n constructor() {\n this.anchorNode = null;\n this.anchorOffset = 0;\n this.focusNode = null;\n this.focusOffset = 0;\n }\n set(sel) {\n this.anchorNode = sel.anchorNode;\n this.anchorOffset = sel.anchorOffset;\n this.focusNode = sel.focusNode;\n this.focusOffset = sel.focusOffset;\n }\n clear() {\n this.anchorNode = this.focusNode = null;\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}\nclass DOMObserver {\n constructor(view, handleDOMChange) {\n this.view = view;\n this.handleDOMChange = handleDOMChange;\n this.queue = [];\n this.flushingSoon = -1;\n this.observer = null;\n this.currentSelection = new SelectionState;\n this.onCharData = null;\n this.suppressingSelectionUpdates = false;\n this.observer = window.MutationObserver &&\n new window.MutationObserver(mutations => {\n for (let i = 0; i < mutations.length; i++)\n 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 (ie && ie_version <= 11 && mutations.some(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 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 }\n flushSoon() {\n if (this.flushingSoon < 0)\n this.flushingSoon = window.setTimeout(() => { this.flushingSoon = -1; this.flush(); }, 20);\n }\n forceFlush() {\n if (this.flushingSoon > -1) {\n window.clearTimeout(this.flushingSoon);\n this.flushingSoon = -1;\n this.flush();\n }\n }\n start() {\n if (this.observer) {\n this.observer.takeRecords();\n this.observer.observe(this.view.dom, observeOptions);\n }\n if (this.onCharData)\n this.view.dom.addEventListener(\"DOMCharacterDataModified\", this.onCharData);\n this.connectSelection();\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++)\n this.queue.push(take[i]);\n window.setTimeout(() => this.flush(), 20);\n }\n this.observer.disconnect();\n }\n if (this.onCharData)\n this.view.dom.removeEventListener(\"DOMCharacterDataModified\", this.onCharData);\n this.disconnectSelection();\n }\n connectSelection() {\n this.view.dom.ownerDocument.addEventListener(\"selectionchange\", this.onSelectionChange);\n }\n disconnectSelection() {\n this.view.dom.ownerDocument.removeEventListener(\"selectionchange\", this.onSelectionChange);\n }\n suppressSelectionUpdates() {\n this.suppressingSelectionUpdates = true;\n setTimeout(() => this.suppressingSelectionUpdates = false, 50);\n }\n onSelectionChange() {\n if (!hasFocusAndSelection(this.view))\n return;\n if (this.suppressingSelectionUpdates)\n 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 (ie && ie_version <= 11 && !this.view.state.selection.empty) {\n let sel = this.view.domSelectionRange();\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 setCurSelection() {\n this.currentSelection.set(this.view.domSelectionRange());\n }\n ignoreSelectionChange(sel) {\n if (!sel.focusNode)\n return true;\n let ancestors = new Set, container;\n for (let scan = sel.focusNode; scan; scan = parentNode(scan))\n ancestors.add(scan);\n for (let scan = sel.anchorNode; scan; scan = parentNode(scan))\n if (ancestors.has(scan)) {\n container = scan;\n break;\n }\n let desc = container && this.view.docView.nearestDesc(container);\n if (desc && desc.ignoreMutation({\n type: \"selection\",\n target: container.nodeType == 3 ? container.parentNode : container\n })) {\n this.setCurSelection();\n return true;\n }\n }\n pendingRecords() {\n if (this.observer)\n for (let mut of this.observer.takeRecords())\n this.queue.push(mut);\n return this.queue;\n }\n flush() {\n let { view } = this;\n if (!view.docView || this.flushingSoon > -1)\n return;\n let mutations = this.pendingRecords();\n if (mutations.length)\n this.queue = [];\n let sel = view.domSelectionRange();\n let newSel = !this.suppressingSelectionUpdates && !this.currentSelection.eq(sel) && hasFocusAndSelection(view) && !this.ignoreSelectionChange(sel);\n let from = -1, to = -1, typeOver = false, added = [];\n if (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)\n typeOver = true;\n }\n }\n }\n if (gecko && added.length > 1) {\n let brs = added.filter(n => n.nodeName == \"BR\");\n if (brs.length == 2) {\n let a = brs[0], b = brs[1];\n if (a.parentNode && a.parentNode.parentNode == b.parentNode)\n b.remove();\n else\n a.remove();\n }\n }\n let readSel = null;\n // If it looks like the browser has reset the selection to the\n // start of the document after focus, restore the selection from\n // the state\n if (from < 0 && newSel && view.input.lastFocus > Date.now() - 200 &&\n Math.max(view.input.lastTouch, view.input.lastClick.time) < Date.now() - 300 &&\n selectionCollapsed(sel) && (readSel = selectionFromDOM(view)) &&\n readSel.eq(Selection.near(view.state.doc.resolve(0), 1))) {\n view.input.lastFocus = 0;\n selectionToDOM(view);\n this.currentSelection.set(sel);\n view.scrollToSelection();\n }\n else if (from > -1 || newSel) {\n if (from > -1) {\n view.docView.markDirty(from, to);\n checkCSS(view);\n }\n this.handleDOMChange(from, to, typeOver, added);\n if (view.docView && view.docView.dirty)\n view.updateState(view.state);\n else if (!this.currentSelection.eq(sel))\n selectionToDOM(view);\n this.currentSelection.set(sel);\n }\n }\n registerMutation(mut, added) {\n // Ignore mutations inside nodes that were already noted as inserted\n if (added.indexOf(mut.target) > -1)\n 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))\n return null;\n if (mut.type == \"childList\") {\n for (let i = 0; i < mut.addedNodes.length; i++)\n 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 (ie && 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)\n prev = previousSibling;\n if (!nextSibling || Array.prototype.indexOf.call(mut.addedNodes, nextSibling) < 0)\n 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 }\n else if (mut.type == \"attributes\") {\n return { from: desc.posAtStart - desc.border, to: desc.posAtEnd + desc.border };\n }\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}\nlet cssChecked = new WeakMap();\nlet cssCheckWarned = false;\nfunction checkCSS(view) {\n if (cssChecked.has(view))\n return;\n cssChecked.set(view, null);\n if (['normal', 'nowrap', 'pre-line'].indexOf(getComputedStyle(view.dom).whiteSpace) !== -1) {\n view.requiresGeckoHackNode = gecko;\n if (cssCheckWarned)\n return;\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 cssCheckWarned = true;\n }\n}\nfunction rangeToSelectionRange(view, range) {\n let anchorNode = range.startContainer, anchorOffset = range.startOffset;\n let focusNode = range.endContainer, focusOffset = range.endOffset;\n let currentAnchor = view.domAtPos(view.state.selection.anchor);\n // Since such a range doesn't distinguish between anchor and head,\n // use a heuristic that flips it around if its end matches the\n // current anchor.\n if (isEquivalentPosition(currentAnchor.node, currentAnchor.offset, focusNode, focusOffset))\n [anchorNode, anchorOffset, focusNode, focusOffset] = [focusNode, focusOffset, anchorNode, anchorOffset];\n return { anchorNode, anchorOffset, focusNode, focusOffset };\n}\n// Used to work around a Safari Selection/shadow DOM bug\n// Based on https://github.com/codemirror/dev/issues/414 fix\nfunction safariShadowSelectionRange(view, selection) {\n if (selection.getComposedRanges) {\n let range = selection.getComposedRanges(view.root)[0];\n if (range)\n return rangeToSelectionRange(view, range);\n }\n let found;\n function read(event) {\n event.preventDefault();\n event.stopImmediatePropagation();\n found = event.getTargetRanges()[0];\n }\n // Because Safari (at least in 2018-2022) doesn't provide regular\n // access to the selection inside a shadowRoot, we have to perform a\n // ridiculous hack to get at it—using `execCommand` to trigger a\n // `beforeInput` event so that we can read the target range from the\n // event.\n view.dom.addEventListener(\"beforeinput\", read, true);\n document.execCommand(\"indent\");\n view.dom.removeEventListener(\"beforeinput\", read, true);\n return found ? rangeToSelectionRange(view, found) : null;\n}\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.\nfunction parseBetween(view, from_, to_) {\n let { node: parent, fromOffset, toOffset, from, to } = view.docView.parseRange(from_, to_);\n let domSel = view.domSelectionRange();\n let find;\n let 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 (chrome && view.input.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) {\n toOffset = off;\n break;\n }\n if (!desc || desc.size)\n 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 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.whitespace == \"pre\" ? \"full\" : 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)\n head = anchor;\n sel = { anchor: anchor + from, head: head + from };\n }\n return { doc, sel, from, to };\n}\nfunction ruleFromNode(dom) {\n let desc = dom.pmViewDesc;\n if (desc) {\n return desc.parseRule();\n }\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 (safari && /^(ul|ol)$/i.test(dom.parentNode.nodeName)) {\n let skip = document.createElement(\"div\");\n skip.appendChild(document.createElement(\"li\"));\n return { skip };\n }\n else if (dom.parentNode.lastChild == dom || safari && /^(tr|table)$/i.test(dom.parentNode.nodeName)) {\n return { ignore: true };\n }\n }\n else if (dom.nodeName == \"IMG\" && dom.getAttribute(\"mark-placeholder\")) {\n return { ignore: true };\n }\n return null;\n}\nconst isInline = /^(a|abbr|acronym|b|bd[io]|big|br|button|cite|code|data(list)?|del|dfn|em|i|ins|kbd|label|map|mark|meter|output|q|ruby|s|samp|small|span|strong|su[bp]|time|u|tt|var)$/i;\nfunction readDOMChange(view, from, to, typeOver, addedNodes) {\n let compositionID = view.input.compositionPendingChanges || (view.composing ? view.input.compositionID : 0);\n view.input.compositionPendingChanges = 0;\n if (from < 0) {\n let origin = view.input.lastSelectionTime > Date.now() - 50 ? view.input.lastSelectionOrigin : null;\n let newSel = selectionFromDOM(view, origin);\n if (newSel && !view.state.selection.eq(newSel)) {\n if (chrome && android &&\n view.input.lastKeyCode === 13 && Date.now() - 100 < view.input.lastKeyCodeTime &&\n view.someProp(\"handleKeyDown\", f => f(view, keyEvent(13, \"Enter\"))))\n return;\n let tr = view.state.tr.setSelection(newSel);\n if (origin == \"pointer\")\n tr.setMeta(\"pointer\", true);\n else if (origin == \"key\")\n tr.scrollIntoView();\n if (compositionID)\n tr.setMeta(\"composition\", compositionID);\n view.dispatch(tr);\n }\n return;\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 let sel = view.state.selection;\n let parse = parseBetween(view, from, to);\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.input.lastKeyCode === 8 && Date.now() - 100 < view.input.lastKeyCodeTime) {\n preferredPos = view.state.selection.to;\n preferredSide = \"end\";\n }\n else {\n preferredPos = view.state.selection.from;\n preferredSide = \"start\";\n }\n view.input.lastKeyCode = null;\n let change = findDiff(compare.content, parse.doc.content, parse.from, preferredPos, preferredSide);\n if ((ios && view.input.lastIOSEnter > Date.now() - 225 || android) &&\n addedNodes.some(n => n.nodeType == 1 && !isInline.test(n.nodeName)) &&\n (!change || change.endA >= change.endB) &&\n view.someProp(\"handleKeyDown\", f => f(view, keyEvent(13, \"Enter\")))) {\n view.input.lastIOSEnter = 0;\n return;\n }\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 }\n else {\n if (parse.sel) {\n let sel = resolveSelection(view, view.state.doc, parse.sel);\n if (sel && !sel.eq(view.state.selection)) {\n let tr = view.state.tr.setSelection(sel);\n if (compositionID)\n tr.setMeta(\"composition\", compositionID);\n view.dispatch(tr);\n }\n }\n return;\n }\n }\n view.input.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 view.state.selection.from >= parse.from) {\n change.start = view.state.selection.from;\n }\n else if (change.endA < view.state.selection.to && change.endA >= view.state.selection.to - 2 &&\n view.state.selection.to <= parse.to) {\n change.endB += (view.state.selection.to - change.endA);\n change.endA = view.state.selection.to;\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 (ie && 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 let $from = parse.doc.resolveNoCache(change.start - parse.from);\n let $to = parse.doc.resolveNoCache(change.endB - parse.from);\n let $fromA = doc.resolve(change.start);\n let inlineChange = $from.sameParent($to) && $from.parent.inlineContent && $fromA.end() >= change.endA;\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 (((ios && view.input.lastIOSEnter > Date.now() - 225 &&\n (!inlineChange || addedNodes.some(n => n.nodeName == \"DIV\" || n.nodeName == \"P\"))) ||\n (!inlineChange && $from.pos < parse.doc.content.size && !$from.sameParent($to) &&\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.input.lastIOSEnter = 0;\n return;\n }\n // Same for backspace\n if (view.state.selection.anchor > change.start &&\n looksLikeBackspace(doc, change.start, change.endA, $from, $to) &&\n view.someProp(\"handleKeyDown\", f => f(view, keyEvent(8, \"Backspace\")))) {\n if (android && chrome)\n view.domObserver.suppressSelectionUpdates(); // #820\n return;\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 (chrome && android && change.endB == change.start)\n view.input.lastAndroidDelete = Date.now();\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 (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 let chFrom = change.start, chTo = change.endA;\n let tr, storedMarks, markChange;\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 (ie && 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 }\n else if ( // Adding or removing a mark\n change.endA == change.endB &&\n (markChange = isMarkChange($from.parent.content.cut($from.parentOffset, $to.parentOffset), $fromA.parent.content.cut($fromA.parentOffset, change.endA - $fromA.start())))) {\n tr = view.state.tr;\n if (markChange.type == \"add\")\n tr.addMark(chFrom, chTo, markChange.mark);\n else\n tr.removeMark(chFrom, chTo, markChange.mark);\n }\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)))\n return;\n tr = view.state.tr.insertText(text, chFrom, chTo);\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 && !(chrome && android && view.composing && sel.empty &&\n (change.start != change.endB || view.input.lastAndroidDelete < Date.now() - 100) &&\n (sel.head == chFrom || sel.head == tr.mapping.map(chTo) - 1) ||\n ie && sel.empty && sel.head == chFrom))\n tr.setSelection(sel);\n }\n if (storedMarks)\n tr.ensureMarks(storedMarks);\n if (compositionID)\n tr.setMeta(\"composition\", compositionID);\n view.dispatch(tr.scrollIntoView());\n}\nfunction resolveSelection(view, doc, parsedSel) {\n if (Math.max(parsedSel.anchor, parsedSel.head) > doc.content.size)\n return null;\n return selectionBetween(view, doc.resolve(parsedSel.anchor), doc.resolve(parsedSel.head));\n}\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++)\n added = prevMarks[i].removeFromSet(added);\n for (let i = 0; i < curMarks.length; i++)\n 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 }\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 }\n else {\n return null;\n }\n let updated = [];\n for (let i = 0; i < prev.childCount; i++)\n updated.push(update(prev.child(i)));\n if (Fragment.from(updated).eq(cur))\n return { mark, type };\n}\nfunction looksLikeBackspace(old, start, end, $newStart, $newEnd) {\n if ( // 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 let $start = old.resolve(start);\n // Handle the case where, rather than joining blocks, the change just removed an entire block\n if (!$newStart.parent.isTextblock) {\n let after = $start.nodeAfter;\n return after != null && end == start + after.nodeSize;\n }\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 // The fragments after the join point must match\n return $newStart.parent.content.cut($newStart.parentOffset).eq($next.parent.content);\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}\nfunction findDiff(a, b, pos, preferredPos, preferredSide) {\n let start = a.findDiffStart(b, pos);\n if (start == null)\n 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 if (start && start < b.size && isSurrogatePair(b.textBetween(start - 1, start + 1)))\n start += move ? 1 : -1;\n endB = start + (endB - endA);\n endA = start;\n }\n else if (endB < start) {\n let move = preferredPos <= start && preferredPos >= endB ? start - preferredPos : 0;\n start -= move;\n if (start && start < a.size && isSurrogatePair(a.textBetween(start - 1, start + 1)))\n start += move ? 1 : -1;\n endA = start + (endA - endB);\n endB = start;\n }\n return { start, endA, endB };\n}\nfunction isSurrogatePair(str) {\n if (str.length != 2)\n return false;\n let a = str.charCodeAt(0), b = str.charCodeAt(1);\n return a >= 0xDC00 && a <= 0xDFFF && b >= 0xD800 && b <= 0xDBFF;\n}\n\n/**\n@internal\n*/\nconst __serializeForClipboard = serializeForClipboard;\n/**\n@internal\n*/\nconst __parseFromClipboard = parseFromClipboard;\n/**\n@internal\n*/\nconst __endComposition = endComposition;\n/**\nAn editor view manages the DOM structure that represents an\neditable document. Its state and behavior are determined by its\n[props](https://prosemirror.net/docs/ref/#view.DirectEditorProps).\n*/\nclass EditorView {\n /**\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\n added to the document.\n */\n constructor(place, props) {\n this._root = null;\n /**\n @internal\n */\n this.focused = false;\n /**\n Kludge used to work around a Chrome bug @internal\n */\n this.trackWrites = null;\n this.mounted = false;\n /**\n @internal\n */\n this.markCursor = null;\n /**\n @internal\n */\n this.cursorWrapper = null;\n /**\n @internal\n */\n this.lastSelectedViewDesc = undefined;\n /**\n @internal\n */\n this.input = new InputState;\n this.prevDirectPlugins = [];\n this.pluginViews = [];\n /**\n Holds `true` when a hack node is needed in Firefox to prevent the\n [space is eaten issue](https://github.com/ProseMirror/prosemirror/issues/651)\n @internal\n */\n this.requiresGeckoHackNode = false;\n /**\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 */\n this.dragging = null;\n this._props = props;\n this.state = props.state;\n this.directPlugins = props.plugins || [];\n this.directPlugins.forEach(checkStateComponent);\n this.dispatch = this.dispatch.bind(this);\n this.dom = (place && place.mount) || document.createElement(\"div\");\n if (place) {\n if (place.appendChild)\n place.appendChild(this.dom);\n else if (typeof place == \"function\")\n place(this.dom);\n else if (place.mount)\n this.mounted = true;\n }\n this.editable = getEditable(this);\n updateCursorWrapper(this);\n this.nodeViews = buildNodeViews(this);\n this.docView = docViewDesc(this.state.doc, computeDocDeco(this), viewDecorations(this), this.dom, this);\n this.domObserver = new DOMObserver(this, (from, to, typeOver, added) => readDOMChange(this, from, to, typeOver, added));\n this.domObserver.start();\n initInput(this);\n this.updatePluginViews();\n }\n /**\n Holds `true` when a\n [composition](https://w3c.github.io/uievents/#events-compositionevents)\n is active.\n */\n get composing() { return this.input.composing; }\n /**\n The view's current [props](https://prosemirror.net/docs/ref/#view.EditorProps).\n */\n get props() {\n if (this._props.state != this.state) {\n let prev = this._props;\n this._props = {};\n for (let name in prev)\n this._props[name] = prev[name];\n this._props.state = this.state;\n }\n return this._props;\n }\n /**\n Update the view's props. Will immediately cause an update to\n the DOM.\n */\n update(props) {\n if (props.handleDOMEvents != this._props.handleDOMEvents)\n ensureListeners(this);\n let prevProps = this._props;\n this._props = props;\n if (props.plugins) {\n props.plugins.forEach(checkStateComponent);\n this.directPlugins = props.plugins;\n }\n this.updateStateInner(props.state, prevProps);\n }\n /**\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 */\n setProps(props) {\n let updated = {};\n for (let name in this._props)\n updated[name] = this._props[name];\n updated.state = this.state;\n for (let name in props)\n updated[name] = props[name];\n this.update(updated);\n }\n /**\n Update the editor's `state` prop, without touching any of the\n other props.\n */\n updateState(state) {\n this.updateStateInner(state, this._props);\n }\n updateStateInner(state, prevProps) {\n var _a;\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 let pluginsChanged = prev.plugins != state.plugins || this._props.plugins != prevProps.plugins;\n if (pluginsChanged || this._props.plugins != prevProps.plugins || this._props.nodeViews != prevProps.nodeViews) {\n let nodeViews = buildNodeViews(this);\n if (changedNodeViews(nodeViews, this.nodeViews)) {\n this.nodeViews = nodeViews;\n redraw = true;\n }\n }\n if (pluginsChanged || prevProps.handleDOMEvents != this._props.handleDOMEvents) {\n ensureListeners(this);\n }\n this.editable = getEditable(this);\n updateCursorWrapper(this);\n let innerDeco = viewDecorations(this), outerDeco = computeDocDeco(this);\n let scroll = prev.plugins != state.plugins && !prev.doc.eq(state.doc) ? \"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))\n updateSel = true;\n let oldScrollPos = scroll == \"preserve\" && updateSel && this.dom.style.overflowAnchor == null && storeScrollPos(this);\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 && (ie || 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 = chrome ? (this.trackWrites = this.domSelectionRange().focusNode) : null;\n if (this.composing)\n this.input.compositionNode = findCompositionNode(this);\n if (redraw || !this.docView.update(state.doc, outerDeco, innerDeco, this)) {\n this.docView.updateOuterDeco(outerDeco);\n this.docView.destroy();\n this.docView = docViewDesc(state.doc, outerDeco, innerDeco, this.dom, this);\n }\n if (chromeKludge && !this.trackWrites)\n 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.input.mouseDown && this.domObserver.currentSelection.eq(this.domSelectionRange()) &&\n anchorInRightPlace(this))) {\n selectionToDOM(this, forceSelUpdate);\n }\n else {\n syncNodeSelection(this, state.selection);\n this.domObserver.setCurSelection();\n }\n this.domObserver.start();\n }\n this.updatePluginViews(prev);\n if (((_a = this.dragging) === null || _a === void 0 ? void 0 : _a.node) && !prev.doc.eq(state.doc))\n this.updateDraggedNode(this.dragging, prev);\n if (scroll == \"reset\") {\n this.dom.scrollTop = 0;\n }\n else if (scroll == \"to selection\") {\n this.scrollToSelection();\n }\n else if (oldScrollPos) {\n resetScrollPos(oldScrollPos);\n }\n }\n /**\n @internal\n */\n scrollToSelection() {\n let startDOM = this.domSelectionRange().focusNode;\n if (this.someProp(\"handleScrollToSelection\", f => f(this))) ;\n else if (this.state.selection instanceof NodeSelection) {\n let target = this.docView.domAfterPos(this.state.selection.from);\n if (target.nodeType == 1)\n scrollRectIntoView(this, target.getBoundingClientRect(), startDOM);\n }\n else {\n scrollRectIntoView(this, this.coordsAtPos(this.state.selection.head, 1), startDOM);\n }\n }\n destroyPluginViews() {\n let view;\n while (view = this.pluginViews.pop())\n if (view.destroy)\n view.destroy();\n }\n updatePluginViews(prevState) {\n if (!prevState || prevState.plugins != this.state.plugins || this.directPlugins != this.prevDirectPlugins) {\n this.prevDirectPlugins = this.directPlugins;\n this.destroyPluginViews();\n for (let i = 0; i < this.directPlugins.length; i++) {\n let plugin = this.directPlugins[i];\n if (plugin.spec.view)\n this.pluginViews.push(plugin.spec.view(this));\n }\n for (let i = 0; i < this.state.plugins.length; i++) {\n let plugin = this.state.plugins[i];\n if (plugin.spec.view)\n this.pluginViews.push(plugin.spec.view(this));\n }\n }\n else {\n for (let i = 0; i < this.pluginViews.length; i++) {\n let pluginView = this.pluginViews[i];\n if (pluginView.update)\n pluginView.update(this, prevState);\n }\n }\n }\n updateDraggedNode(dragging, prev) {\n let sel = dragging.node, found = -1;\n if (this.state.doc.nodeAt(sel.from) == sel.node) {\n found = sel.from;\n }\n else {\n let movedPos = sel.from + (this.state.doc.content.size - prev.doc.content.size);\n let moved = movedPos > 0 && this.state.doc.nodeAt(movedPos);\n if (moved == sel.node)\n found = movedPos;\n }\n this.dragging = new Dragging(dragging.slice, dragging.move, found < 0 ? undefined : NodeSelection.create(this.state.doc, found));\n }\n someProp(propName, f) {\n let prop = this._props && this._props[propName], value;\n if (prop != null && (value = f ? f(prop) : prop))\n return value;\n for (let i = 0; i < this.directPlugins.length; i++) {\n let prop = this.directPlugins[i].props[propName];\n if (prop != null && (value = f ? f(prop) : prop))\n return value;\n }\n let plugins = this.state.plugins;\n if (plugins)\n for (let i = 0; i < plugins.length; i++) {\n let prop = plugins[i].props[propName];\n if (prop != null && (value = f ? f(prop) : prop))\n return value;\n }\n }\n /**\n Query whether the view has focus.\n */\n hasFocus() {\n // Work around IE not handling focus correctly if resize handles are shown.\n // If the cursor is inside an element with resize handles, activeElement\n // will be that element instead of this.dom.\n if (ie) {\n // If activeElement is within this.dom, and there are no other elements\n // setting `contenteditable` to false in between, treat it as focused.\n let node = this.root.activeElement;\n if (node == this.dom)\n return true;\n if (!node || !this.dom.contains(node))\n return false;\n while (node && this.dom != node && this.dom.contains(node)) {\n if (node.contentEditable == 'false')\n return false;\n node = node.parentElement;\n }\n return true;\n }\n return this.root.activeElement == this.dom;\n }\n /**\n Focus the editor.\n */\n focus() {\n this.domObserver.stop();\n if (this.editable)\n focusPreventScroll(this.dom);\n selectionToDOM(this);\n this.domObserver.start();\n }\n /**\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 */\n get root() {\n let cached = this._root;\n if (cached == null)\n for (let search = this.dom.parentNode; search; search = search.parentNode) {\n if (search.nodeType == 9 || (search.nodeType == 11 && search.host)) {\n if (!search.getSelection)\n Object.getPrototypeOf(search).getSelection = () => search.ownerDocument.getSelection();\n return this._root = search;\n }\n }\n return cached || document;\n }\n /**\n When an existing editor view is moved to a new document or\n shadow tree, call this to make it recompute its root.\n */\n updateRoot() {\n this._root = null;\n }\n /**\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 */\n posAtCoords(coords) {\n return posAtCoords(this, coords);\n }\n /**\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\n is used. When < 0, the element before the position is used,\n otherwise the element after.\n */\n coordsAtPos(pos, side = 1) {\n return coordsAtPos(this, pos, side);\n }\n /**\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 */\n domAtPos(pos, side = 0) {\n return this.docView.domFromPos(pos, side);\n }\n /**\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 */\n nodeDOM(pos) {\n let desc = this.docView.descAt(pos);\n return desc ? desc.nodeDOM : null;\n }\n /**\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 */\n posAtDOM(node, offset, bias = -1) {\n let pos = this.docView.posFromDOM(node, offset, bias);\n if (pos == null)\n throw new RangeError(\"DOM position not inside the editor\");\n return pos;\n }\n /**\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 */\n endOfTextblock(dir, state) {\n return endOfTextblock(this, state || this.state, dir);\n }\n /**\n Run the editor's paste logic with the given HTML string. The\n `event`, if given, will be passed to the\n [`handlePaste`](https://prosemirror.net/docs/ref/#view.EditorProps.handlePaste) hook.\n */\n pasteHTML(html, event) {\n return doPaste(this, \"\", html, false, event || new ClipboardEvent(\"paste\"));\n }\n /**\n Run the editor's paste logic with the given plain-text input.\n */\n pasteText(text, event) {\n return doPaste(this, text, null, true, event || new ClipboardEvent(\"paste\"));\n }\n /**\n Removes the editor from the DOM and destroys all [node\n views](https://prosemirror.net/docs/ref/#view.NodeView).\n */\n destroy() {\n if (!this.docView)\n 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 }\n else if (this.dom.parentNode) {\n this.dom.parentNode.removeChild(this.dom);\n }\n this.docView.destroy();\n this.docView = null;\n clearReusedRange();\n }\n /**\n This is true when the view has been\n [destroyed](https://prosemirror.net/docs/ref/#view.EditorView.destroy) (and thus should not be\n used anymore).\n */\n get isDestroyed() {\n return this.docView == null;\n }\n /**\n Used for testing.\n */\n dispatchEvent(event) {\n return dispatchEvent(this, event);\n }\n /**\n Dispatch a transaction. Will call\n [`dispatchTransaction`](https://prosemirror.net/docs/ref/#view.DirectEditorProps.dispatchTransaction)\n when given, and otherwise defaults to applying the transaction to\n the current state and calling\n [`updateState`](https://prosemirror.net/docs/ref/#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 */\n dispatch(tr) {\n let dispatchTransaction = this._props.dispatchTransaction;\n if (dispatchTransaction)\n dispatchTransaction.call(this, tr);\n else\n this.updateState(this.state.apply(tr));\n }\n /**\n @internal\n */\n domSelectionRange() {\n let sel = this.domSelection();\n return safari && this.root.nodeType === 11 &&\n deepActiveElement(this.dom.ownerDocument) == this.dom && safariShadowSelectionRange(this, sel) || sel;\n }\n /**\n @internal\n */\n domSelection() {\n return this.root.getSelection();\n }\n}\nfunction computeDocDeco(view) {\n let attrs = Object.create(null);\n attrs.class = \"ProseMirror\";\n attrs.contenteditable = String(view.editable);\n view.someProp(\"attributes\", value => {\n if (typeof value == \"function\")\n value = value(view.state);\n if (value)\n for (let attr in value) {\n if (attr == \"class\")\n attrs.class += \" \" + value[attr];\n else if (attr == \"style\")\n attrs.style = (attrs.style ? attrs.style + \";\" : \"\") + value[attr];\n else if (!attrs[attr] && attr != \"contenteditable\" && attr != \"nodeName\")\n attrs[attr] = String(value[attr]);\n }\n });\n if (!attrs.translate)\n attrs.translate = \"no\";\n return [Decoration.node(0, view.state.doc.content.size, attrs)];\n}\nfunction updateCursorWrapper(view) {\n if (view.markCursor) {\n let dom = document.createElement(\"img\");\n dom.className = \"ProseMirror-separator\";\n dom.setAttribute(\"mark-placeholder\", \"true\");\n dom.setAttribute(\"alt\", \"\");\n view.cursorWrapper = { dom, deco: Decoration.widget(view.state.selection.head, dom, { raw: true, marks: view.markCursor }) };\n }\n else {\n view.cursorWrapper = null;\n }\n}\nfunction getEditable(view) {\n return !view.someProp(\"editable\", value => value(view.state) === false);\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}\nfunction buildNodeViews(view) {\n let result = Object.create(null);\n function add(obj) {\n for (let prop in obj)\n if (!Object.prototype.hasOwnProperty.call(result, prop))\n result[prop] = obj[prop];\n }\n view.someProp(\"nodeViews\", add);\n view.someProp(\"markViews\", add);\n return result;\n}\nfunction changedNodeViews(a, b) {\n let nA = 0, nB = 0;\n for (let prop in a) {\n if (a[prop] != b[prop])\n return true;\n nA++;\n }\n for (let _ in b)\n nB++;\n return nA != nB;\n}\nfunction checkStateComponent(plugin) {\n if (plugin.spec.state || plugin.spec.filterTransaction || plugin.spec.appendTransaction)\n throw new RangeError(\"Plugins passed directly to the view must not have a state component\");\n}\n\nexport { Decoration, DecorationSet, EditorView, __endComposition, __parseFromClipboard, __serializeForClipboard };\n","export var base = {\n 8: \"Backspace\",\n 9: \"Tab\",\n 10: \"Enter\",\n 12: \"NumLock\",\n 13: \"Enter\",\n 16: \"Shift\",\n 17: \"Control\",\n 18: \"Alt\",\n 20: \"CapsLock\",\n 27: \"Escape\",\n 32: \" \",\n 33: \"PageUp\",\n 34: \"PageDown\",\n 35: \"End\",\n 36: \"Home\",\n 37: \"ArrowLeft\",\n 38: \"ArrowUp\",\n 39: \"ArrowRight\",\n 40: \"ArrowDown\",\n 44: \"PrintScreen\",\n 45: \"Insert\",\n 46: \"Delete\",\n 59: \";\",\n 61: \"=\",\n 91: \"Meta\",\n 92: \"Meta\",\n 106: \"*\",\n 107: \"+\",\n 108: \",\",\n 109: \"-\",\n 110: \".\",\n 111: \"/\",\n 144: \"NumLock\",\n 145: \"ScrollLock\",\n 160: \"Shift\",\n 161: \"Shift\",\n 162: \"Control\",\n 163: \"Control\",\n 164: \"Alt\",\n 165: \"Alt\",\n 173: \"-\",\n 186: \";\",\n 187: \"=\",\n 188: \",\",\n 189: \"-\",\n 190: \".\",\n 191: \"/\",\n 192: \"`\",\n 219: \"[\",\n 220: \"\\\\\",\n 221: \"]\",\n 222: \"'\"\n}\n\nexport var shift = {\n 48: \")\",\n 49: \"!\",\n 50: \"@\",\n 51: \"#\",\n 52: \"$\",\n 53: \"%\",\n 54: \"^\",\n 55: \"&\",\n 56: \"*\",\n 57: \"(\",\n 59: \":\",\n 61: \"+\",\n 173: \"_\",\n 186: \":\",\n 187: \"+\",\n 188: \"<\",\n 189: \"_\",\n 190: \">\",\n 191: \"?\",\n 192: \"~\",\n 219: \"{\",\n 220: \"|\",\n 221: \"}\",\n 222: \"\\\"\"\n}\n\nvar mac = typeof navigator != \"undefined\" && /Mac/.test(navigator.platform)\nvar ie = typeof navigator != \"undefined\" && /MSIE \\d|Trident\\/(?:[7-9]|\\d{2,})\\..*rv:(\\d+)/.exec(navigator.userAgent)\n\n// Fill in the digit keys\nfor (var i = 0; i < 10; i++) base[48 + i] = base[96 + i] = String(i)\n\n// The function keys\nfor (var i = 1; i <= 24; i++) base[i + 111] = \"F\" + i\n\n// And the alphabetic keys\nfor (var i = 65; i <= 90; i++) {\n base[i] = String.fromCharCode(i + 32)\n shift[i] = String.fromCharCode(i)\n}\n\n// For each code that doesn't have a shift-equivalent, copy the base name\nfor (var code in base) if (!shift.hasOwnProperty(code)) shift[code] = base[code]\n\nexport function keyName(event) {\n // On macOS, keys held with Shift and Cmd don't reflect the effect of Shift in `.key`.\n // On IE, shift effect is never included in `.key`.\n var ignoreKey = mac && event.metaKey && event.shiftKey && !event.ctrlKey && !event.altKey ||\n ie && event.shiftKey && event.key && event.key.length == 1 ||\n event.key == \"Unidentified\"\n var name = (!ignoreKey && event.key) ||\n (event.shiftKey ? shift : base)[event.keyCode] ||\n event.key || \"Unidentified\"\n // Edge sometimes produces wrong names (Issue #3)\n if (name == \"Esc\") name = \"Escape\"\n if (name == \"Del\") name = \"Delete\"\n // https://developer.microsoft.com/en-us/microsoft-edge/platform/issues/8860571/\n if (name == \"Left\") name = \"ArrowLeft\"\n if (name == \"Up\") name = \"ArrowUp\"\n if (name == \"Right\") name = \"ArrowRight\"\n if (name == \"Down\") name = \"ArrowDown\"\n return name\n}\n","import { keyName, base } from 'w3c-keyname';\nimport { Plugin } from 'prosemirror-state';\n\nconst mac = typeof navigator != \"undefined\" ? /Mac|iP(hone|[oa]d)/.test(navigator.platform) : false;\nfunction normalizeKeyName(name) {\n let parts = name.split(/-(?!$)/), result = parts[parts.length - 1];\n if (result == \"Space\")\n result = \" \";\n let alt, ctrl, shift, meta;\n for (let i = 0; i < parts.length - 1; i++) {\n let mod = parts[i];\n if (/^(cmd|meta|m)$/i.test(mod))\n meta = true;\n else if (/^a(lt)?$/i.test(mod))\n alt = true;\n else if (/^(c|ctrl|control)$/i.test(mod))\n ctrl = true;\n else if (/^s(hift)?$/i.test(mod))\n shift = true;\n else if (/^mod$/i.test(mod)) {\n if (mac)\n meta = true;\n else\n ctrl = true;\n }\n else\n throw new Error(\"Unrecognized modifier name: \" + mod);\n }\n if (alt)\n result = \"Alt-\" + result;\n if (ctrl)\n result = \"Ctrl-\" + result;\n if (meta)\n result = \"Meta-\" + result;\n if (shift)\n result = \"Shift-\" + result;\n return result;\n}\nfunction normalize(map) {\n let copy = Object.create(null);\n for (let prop in map)\n copy[normalizeKeyName(prop)] = map[prop];\n return copy;\n}\nfunction modifiers(name, event, shift = true) {\n if (event.altKey)\n name = \"Alt-\" + name;\n if (event.ctrlKey)\n name = \"Ctrl-\" + name;\n if (event.metaKey)\n name = \"Meta-\" + name;\n if (shift && event.shiftKey)\n name = \"Shift-\" + name;\n return name;\n}\n/**\nCreate a keymap plugin for the given set of bindings.\n\nBindings should map key names to [command](https://prosemirror.net/docs/ref/#commands)-style\nfunctions, which will be called with `(EditorState, dispatch,\nEditorView)` arguments, and should return true when they've handled\nthe key. Note that the view argument isn't part of the command\nprotocol, but can be used as an escape hatch if a binding needs to\ndirectly interact with the UI.\n\nKey names may be strings like `\"Shift-Ctrl-Enter\"`—a key\nidentifier prefixed with zero or more modifiers. Key identifiers\nare based on the strings that can appear in\n[`KeyEvent.key`](https:developer.mozilla.org/en-US/docs/Web/API/KeyboardEvent/key).\nUse lowercase letters to refer to letter keys (or uppercase letters\nif you want shift to be held). You may use `\"Space\"` as an alias\nfor the `\" \"` name.\n\nModifiers can be given in any order. `Shift-` (or `s-`), `Alt-` (or\n`a-`), `Ctrl-` (or `c-` or `Control-`) and `Cmd-` (or `m-` or\n`Meta-`) are recognized. For characters that are created by holding\nshift, the `Shift-` prefix is implied, and should not be added\nexplicitly.\n\nYou can use `Mod-` as a shorthand for `Cmd-` on Mac and `Ctrl-` on\nother platforms.\n\nYou can add multiple keymap plugins to an editor. The order in\nwhich they appear determines their precedence (the ones early in\nthe array get to dispatch first).\n*/\nfunction keymap(bindings) {\n return new Plugin({ props: { handleKeyDown: keydownHandler(bindings) } });\n}\n/**\nGiven a set of bindings (using the same format as\n[`keymap`](https://prosemirror.net/docs/ref/#keymap.keymap)), return a [keydown\nhandler](https://prosemirror.net/docs/ref/#view.EditorProps.handleKeyDown) that handles them.\n*/\nfunction keydownHandler(bindings) {\n let map = normalize(bindings);\n return function (view, event) {\n let name = keyName(event), baseName, direct = map[modifiers(name, event)];\n if (direct && direct(view.state, view.dispatch, view))\n return true;\n // A character key\n if (name.length == 1 && name != \" \") {\n if (event.shiftKey) {\n // In case the name was already modified by shift, try looking\n // it up without its shift modifier\n let noShift = map[modifiers(name, event, false)];\n if (noShift && noShift(view.state, view.dispatch, view))\n return true;\n }\n if ((event.shiftKey || event.altKey || event.metaKey || name.charCodeAt(0) > 127) &&\n (baseName = base[event.keyCode]) && baseName != name) {\n // Try falling back to the keyCode when there's a modifier\n // active or the character produced isn't ASCII, and our table\n // produces a different name from the the keyCode. See #668,\n // #1060\n let fromCode = map[modifiers(baseName, event)];\n if (fromCode && fromCode(view.state, view.dispatch, view))\n return true;\n }\n }\n return false;\n };\n}\n\nexport { keydownHandler, keymap };\n","import { liftTarget, replaceStep, ReplaceStep, canJoin, joinPoint, canSplit, ReplaceAroundStep, findWrapping } from 'prosemirror-transform';\nimport { Slice, Fragment } from 'prosemirror-model';\nimport { NodeSelection, Selection, TextSelection, AllSelection } from 'prosemirror-state';\n\n/**\nDelete the selection, if there is one.\n*/\nconst deleteSelection = (state, dispatch) => {\n if (state.selection.empty)\n return false;\n if (dispatch)\n dispatch(state.tr.deleteSelection().scrollIntoView());\n return true;\n};\nfunction atBlockStart(state, view) {\n let { $cursor } = state.selection;\n if (!$cursor || (view ? !view.endOfTextblock(\"backward\", state)\n : $cursor.parentOffset > 0))\n return null;\n return $cursor;\n}\n/**\nIf the selection is empty and at the start of a textblock, try to\nreduce the distance between that block and the one before it—if\nthere's a block directly before it that can be joined, join them.\nIf not, try to move the selected block closer to the next one in\nthe document structure by lifting it out of its parent or moving it\ninto a parent of the previous block. Will use the view for accurate\n(bidi-aware) start-of-textblock detection if given.\n*/\nconst joinBackward = (state, dispatch, view) => {\n let $cursor = atBlockStart(state, view);\n if (!$cursor)\n return false;\n let $cut = findCutBefore($cursor);\n // If there is no node before this, try to lift\n if (!$cut) {\n let range = $cursor.blockRange(), target = range && liftTarget(range);\n if (target == null)\n return false;\n if (dispatch)\n dispatch(state.tr.lift(range, target).scrollIntoView());\n return true;\n }\n let before = $cut.nodeBefore;\n // Apply the joining algorithm\n if (!before.type.spec.isolating && deleteBarrier(state, $cut, dispatch))\n return true;\n // If the node below has no content and the node above is\n // selectable, delete the node below and select the one above.\n if ($cursor.parent.content.size == 0 &&\n (textblockAt(before, \"end\") || NodeSelection.isSelectable(before))) {\n let delStep = replaceStep(state.doc, $cursor.before(), $cursor.after(), Slice.empty);\n if (delStep && delStep.slice.size < delStep.to - delStep.from) {\n if (dispatch) {\n let tr = state.tr.step(delStep);\n tr.setSelection(textblockAt(before, \"end\") ? Selection.findFrom(tr.doc.resolve(tr.mapping.map($cut.pos, -1)), -1)\n : NodeSelection.create(tr.doc, $cut.pos - before.nodeSize));\n dispatch(tr.scrollIntoView());\n }\n return true;\n }\n }\n // If the node before is an atom, delete it\n if (before.isAtom && $cut.depth == $cursor.depth - 1) {\n if (dispatch)\n dispatch(state.tr.delete($cut.pos - before.nodeSize, $cut.pos).scrollIntoView());\n return true;\n }\n return false;\n};\n/**\nA more limited form of [`joinBackward`]($commands.joinBackward)\nthat only tries to join the current textblock to the one before\nit, if the cursor is at the start of a textblock.\n*/\nconst joinTextblockBackward = (state, dispatch, view) => {\n let $cursor = atBlockStart(state, view);\n if (!$cursor)\n return false;\n let $cut = findCutBefore($cursor);\n return $cut ? joinTextblocksAround(state, $cut, dispatch) : false;\n};\n/**\nA more limited form of [`joinForward`]($commands.joinForward)\nthat only tries to join the current textblock to the one after\nit, if the cursor is at the end of a textblock.\n*/\nconst joinTextblockForward = (state, dispatch, view) => {\n let $cursor = atBlockEnd(state, view);\n if (!$cursor)\n return false;\n let $cut = findCutAfter($cursor);\n return $cut ? joinTextblocksAround(state, $cut, dispatch) : false;\n};\nfunction joinTextblocksAround(state, $cut, dispatch) {\n let before = $cut.nodeBefore, beforeText = before, beforePos = $cut.pos - 1;\n for (; !beforeText.isTextblock; beforePos--) {\n if (beforeText.type.spec.isolating)\n return false;\n let child = beforeText.lastChild;\n if (!child)\n return false;\n beforeText = child;\n }\n let after = $cut.nodeAfter, afterText = after, afterPos = $cut.pos + 1;\n for (; !afterText.isTextblock; afterPos++) {\n if (afterText.type.spec.isolating)\n return false;\n let child = afterText.firstChild;\n if (!child)\n return false;\n afterText = child;\n }\n let step = replaceStep(state.doc, beforePos, afterPos, Slice.empty);\n if (!step || step.from != beforePos ||\n step instanceof ReplaceStep && step.slice.size >= afterPos - beforePos)\n return false;\n if (dispatch) {\n let tr = state.tr.step(step);\n tr.setSelection(TextSelection.create(tr.doc, beforePos));\n dispatch(tr.scrollIntoView());\n }\n return true;\n}\nfunction textblockAt(node, side, only = false) {\n for (let scan = node; scan; scan = (side == \"start\" ? scan.firstChild : scan.lastChild)) {\n if (scan.isTextblock)\n return true;\n if (only && scan.childCount != 1)\n return false;\n }\n return false;\n}\n/**\nWhen the selection is empty and at the start of a textblock, select\nthe node before that textblock, if possible. This is intended to be\nbound to keys like backspace, after\n[`joinBackward`](https://prosemirror.net/docs/ref/#commands.joinBackward) or other deleting\ncommands, as a fall-back behavior when the schema doesn't allow\ndeletion at the selected point.\n*/\nconst selectNodeBackward = (state, dispatch, view) => {\n let { $head, empty } = state.selection, $cut = $head;\n if (!empty)\n return false;\n if ($head.parent.isTextblock) {\n if (view ? !view.endOfTextblock(\"backward\", state) : $head.parentOffset > 0)\n return false;\n $cut = findCutBefore($head);\n }\n let node = $cut && $cut.nodeBefore;\n if (!node || !NodeSelection.isSelectable(node))\n return false;\n if (dispatch)\n dispatch(state.tr.setSelection(NodeSelection.create(state.doc, $cut.pos - node.nodeSize)).scrollIntoView());\n return true;\n};\nfunction findCutBefore($pos) {\n if (!$pos.parent.type.spec.isolating)\n for (let i = $pos.depth - 1; i >= 0; i--) {\n if ($pos.index(i) > 0)\n return $pos.doc.resolve($pos.before(i + 1));\n if ($pos.node(i).type.spec.isolating)\n break;\n }\n return null;\n}\nfunction atBlockEnd(state, view) {\n let { $cursor } = state.selection;\n if (!$cursor || (view ? !view.endOfTextblock(\"forward\", state)\n : $cursor.parentOffset < $cursor.parent.content.size))\n return null;\n return $cursor;\n}\n/**\nIf the selection is empty and the cursor is at the end of a\ntextblock, try to reduce or remove the boundary between that block\nand the one after it, either by joining them or by moving the other\nblock closer to this one in the tree structure. Will use the view\nfor accurate start-of-textblock detection if given.\n*/\nconst joinForward = (state, dispatch, view) => {\n let $cursor = atBlockEnd(state, view);\n if (!$cursor)\n return false;\n let $cut = findCutAfter($cursor);\n // If there is no node after this, there's nothing to do\n if (!$cut)\n return false;\n let after = $cut.nodeAfter;\n // Try the joining algorithm\n if (deleteBarrier(state, $cut, dispatch))\n return true;\n // If the node above has no content and the node below is\n // selectable, delete the node above and select the one below.\n if ($cursor.parent.content.size == 0 &&\n (textblockAt(after, \"start\") || NodeSelection.isSelectable(after))) {\n let delStep = replaceStep(state.doc, $cursor.before(), $cursor.after(), Slice.empty);\n if (delStep && delStep.slice.size < delStep.to - delStep.from) {\n if (dispatch) {\n let tr = state.tr.step(delStep);\n tr.setSelection(textblockAt(after, \"start\") ? Selection.findFrom(tr.doc.resolve(tr.mapping.map($cut.pos)), 1)\n : NodeSelection.create(tr.doc, tr.mapping.map($cut.pos)));\n dispatch(tr.scrollIntoView());\n }\n return true;\n }\n }\n // If the next node is an atom, delete it\n if (after.isAtom && $cut.depth == $cursor.depth - 1) {\n if (dispatch)\n dispatch(state.tr.delete($cut.pos, $cut.pos + after.nodeSize).scrollIntoView());\n return true;\n }\n return false;\n};\n/**\nWhen the selection is empty and at the end of a textblock, select\nthe node coming after that textblock, if possible. This is intended\nto be bound to keys like delete, after\n[`joinForward`](https://prosemirror.net/docs/ref/#commands.joinForward) and similar deleting\ncommands, to provide a fall-back behavior when the schema doesn't\nallow deletion at the selected point.\n*/\nconst selectNodeForward = (state, dispatch, view) => {\n let { $head, empty } = state.selection, $cut = $head;\n if (!empty)\n return false;\n if ($head.parent.isTextblock) {\n if (view ? !view.endOfTextblock(\"forward\", state) : $head.parentOffset < $head.parent.content.size)\n return false;\n $cut = findCutAfter($head);\n }\n let node = $cut && $cut.nodeAfter;\n if (!node || !NodeSelection.isSelectable(node))\n return false;\n if (dispatch)\n dispatch(state.tr.setSelection(NodeSelection.create(state.doc, $cut.pos)).scrollIntoView());\n return true;\n};\nfunction findCutAfter($pos) {\n if (!$pos.parent.type.spec.isolating)\n for (let i = $pos.depth - 1; i >= 0; i--) {\n let parent = $pos.node(i);\n if ($pos.index(i) + 1 < parent.childCount)\n return $pos.doc.resolve($pos.after(i + 1));\n if (parent.type.spec.isolating)\n break;\n }\n return null;\n}\n/**\nJoin the selected block or, if there is a text selection, the\nclosest ancestor block of the selection that can be joined, with\nthe sibling above it.\n*/\nconst joinUp = (state, dispatch) => {\n let sel = state.selection, nodeSel = sel instanceof NodeSelection, point;\n if (nodeSel) {\n if (sel.node.isTextblock || !canJoin(state.doc, sel.from))\n return false;\n point = sel.from;\n }\n else {\n point = joinPoint(state.doc, sel.from, -1);\n if (point == null)\n return false;\n }\n if (dispatch) {\n let tr = state.tr.join(point);\n if (nodeSel)\n tr.setSelection(NodeSelection.create(tr.doc, point - state.doc.resolve(point).nodeBefore.nodeSize));\n dispatch(tr.scrollIntoView());\n }\n return true;\n};\n/**\nJoin the selected block, or the closest ancestor of the selection\nthat can be joined, with the sibling after it.\n*/\nconst joinDown = (state, dispatch) => {\n let sel = state.selection, point;\n if (sel instanceof NodeSelection) {\n if (sel.node.isTextblock || !canJoin(state.doc, sel.to))\n return false;\n point = sel.to;\n }\n else {\n point = joinPoint(state.doc, sel.to, 1);\n if (point == null)\n return false;\n }\n if (dispatch)\n dispatch(state.tr.join(point).scrollIntoView());\n return true;\n};\n/**\nLift the selected block, or the closest ancestor block of the\nselection that can be lifted, out of its parent node.\n*/\nconst lift = (state, dispatch) => {\n let { $from, $to } = state.selection;\n let range = $from.blockRange($to), target = range && liftTarget(range);\n if (target == null)\n return false;\n if (dispatch)\n dispatch(state.tr.lift(range, target).scrollIntoView());\n return true;\n};\n/**\nIf the selection is in a node whose type has a truthy\n[`code`](https://prosemirror.net/docs/ref/#model.NodeSpec.code) property in its spec, replace the\nselection with a newline character.\n*/\nconst newlineInCode = (state, dispatch) => {\n let { $head, $anchor } = state.selection;\n if (!$head.parent.type.spec.code || !$head.sameParent($anchor))\n return false;\n if (dispatch)\n dispatch(state.tr.insertText(\"\\n\").scrollIntoView());\n return true;\n};\nfunction defaultBlockAt(match) {\n for (let i = 0; i < match.edgeCount; i++) {\n let { type } = match.edge(i);\n if (type.isTextblock && !type.hasRequiredAttrs())\n return type;\n }\n return null;\n}\n/**\nWhen the selection is in a node with a truthy\n[`code`](https://prosemirror.net/docs/ref/#model.NodeSpec.code) property in its spec, create a\ndefault block after the code block, and move the cursor there.\n*/\nconst exitCode = (state, dispatch) => {\n let { $head, $anchor } = state.selection;\n if (!$head.parent.type.spec.code || !$head.sameParent($anchor))\n return false;\n let above = $head.node(-1), after = $head.indexAfter(-1), type = defaultBlockAt(above.contentMatchAt(after));\n if (!type || !above.canReplaceWith(after, after, type))\n return false;\n if (dispatch) {\n let pos = $head.after(), tr = state.tr.replaceWith(pos, pos, type.createAndFill());\n tr.setSelection(Selection.near(tr.doc.resolve(pos), 1));\n dispatch(tr.scrollIntoView());\n }\n return true;\n};\n/**\nIf a block node is selected, create an empty paragraph before (if\nit is its parent's first child) or after it.\n*/\nconst createParagraphNear = (state, dispatch) => {\n let sel = state.selection, { $from, $to } = sel;\n if (sel instanceof AllSelection || $from.parent.inlineContent || $to.parent.inlineContent)\n return false;\n let type = defaultBlockAt($to.parent.contentMatchAt($to.indexAfter()));\n if (!type || !type.isTextblock)\n return false;\n if (dispatch) {\n let side = (!$from.parentOffset && $to.index() < $to.parent.childCount ? $from : $to).pos;\n let tr = state.tr.insert(side, type.createAndFill());\n tr.setSelection(TextSelection.create(tr.doc, side + 1));\n dispatch(tr.scrollIntoView());\n }\n return true;\n};\n/**\nIf the cursor is in an empty textblock that can be lifted, lift the\nblock.\n*/\nconst liftEmptyBlock = (state, dispatch) => {\n let { $cursor } = state.selection;\n if (!$cursor || $cursor.parent.content.size)\n return false;\n if ($cursor.depth > 1 && $cursor.after() != $cursor.end(-1)) {\n let before = $cursor.before();\n if (canSplit(state.doc, before)) {\n if (dispatch)\n dispatch(state.tr.split(before).scrollIntoView());\n return true;\n }\n }\n let range = $cursor.blockRange(), target = range && liftTarget(range);\n if (target == null)\n return false;\n if (dispatch)\n dispatch(state.tr.lift(range, target).scrollIntoView());\n return true;\n};\n/**\nCreate a variant of [`splitBlock`](https://prosemirror.net/docs/ref/#commands.splitBlock) that uses\na custom function to determine the type of the newly split off block.\n*/\nfunction splitBlockAs(splitNode) {\n return (state, dispatch) => {\n let { $from, $to } = state.selection;\n if (state.selection instanceof NodeSelection && state.selection.node.isBlock) {\n if (!$from.parentOffset || !canSplit(state.doc, $from.pos))\n return false;\n if (dispatch)\n dispatch(state.tr.split($from.pos).scrollIntoView());\n return true;\n }\n if (!$from.parent.isBlock)\n return false;\n if (dispatch) {\n let atEnd = $to.parentOffset == $to.parent.content.size;\n let tr = state.tr;\n if (state.selection instanceof TextSelection || state.selection instanceof AllSelection)\n tr.deleteSelection();\n let deflt = $from.depth == 0 ? null : defaultBlockAt($from.node(-1).contentMatchAt($from.indexAfter(-1)));\n let splitType = splitNode && splitNode($to.parent, atEnd);\n let types = splitType ? [splitType] : atEnd && deflt ? [{ type: deflt }] : undefined;\n let can = canSplit(tr.doc, tr.mapping.map($from.pos), 1, types);\n if (!types && !can && canSplit(tr.doc, tr.mapping.map($from.pos), 1, deflt ? [{ type: deflt }] : undefined)) {\n if (deflt)\n types = [{ type: deflt }];\n can = true;\n }\n if (can) {\n tr.split(tr.mapping.map($from.pos), 1, types);\n if (!atEnd && !$from.parentOffset && $from.parent.type != deflt) {\n let first = tr.mapping.map($from.before()), $first = tr.doc.resolve(first);\n if (deflt && $from.node(-1).canReplaceWith($first.index(), $first.index() + 1, deflt))\n tr.setNodeMarkup(tr.mapping.map($from.before()), deflt);\n }\n }\n dispatch(tr.scrollIntoView());\n }\n return true;\n };\n}\n/**\nSplit the parent block of the selection. If the selection is a text\nselection, also delete its content.\n*/\nconst splitBlock = splitBlockAs();\n/**\nActs like [`splitBlock`](https://prosemirror.net/docs/ref/#commands.splitBlock), but without\nresetting the set of active marks at the cursor.\n*/\nconst splitBlockKeepMarks = (state, dispatch) => {\n return splitBlock(state, dispatch && (tr => {\n let marks = state.storedMarks || (state.selection.$to.parentOffset && state.selection.$from.marks());\n if (marks)\n tr.ensureMarks(marks);\n dispatch(tr);\n }));\n};\n/**\nMove the selection to the node wrapping the current selection, if\nany. (Will not select the document node.)\n*/\nconst selectParentNode = (state, dispatch) => {\n let { $from, to } = state.selection, pos;\n let same = $from.sharedDepth(to);\n if (same == 0)\n return false;\n pos = $from.before(same);\n if (dispatch)\n dispatch(state.tr.setSelection(NodeSelection.create(state.doc, pos)));\n return true;\n};\n/**\nSelect the whole document.\n*/\nconst selectAll = (state, dispatch) => {\n if (dispatch)\n dispatch(state.tr.setSelection(new AllSelection(state.doc)));\n return true;\n};\nfunction joinMaybeClear(state, $pos, dispatch) {\n let before = $pos.nodeBefore, after = $pos.nodeAfter, index = $pos.index();\n if (!before || !after || !before.type.compatibleContent(after.type))\n return false;\n if (!before.content.size && $pos.parent.canReplace(index - 1, index)) {\n if (dispatch)\n dispatch(state.tr.delete($pos.pos - before.nodeSize, $pos.pos).scrollIntoView());\n return true;\n }\n if (!$pos.parent.canReplace(index, index + 1) || !(after.isTextblock || canJoin(state.doc, $pos.pos)))\n return false;\n if (dispatch)\n dispatch(state.tr\n .clearIncompatible($pos.pos, before.type, before.contentMatchAt(before.childCount))\n .join($pos.pos)\n .scrollIntoView());\n return true;\n}\nfunction deleteBarrier(state, $cut, dispatch) {\n let before = $cut.nodeBefore, after = $cut.nodeAfter, conn, match;\n if (before.type.spec.isolating || after.type.spec.isolating)\n return false;\n if (joinMaybeClear(state, $cut, dispatch))\n return true;\n let canDelAfter = $cut.parent.canReplace($cut.index(), $cut.index() + 1);\n if (canDelAfter &&\n (conn = (match = before.contentMatchAt(before.childCount)).findWrapping(after.type)) &&\n match.matchType(conn[0] || after.type).validEnd) {\n if (dispatch) {\n let end = $cut.pos + after.nodeSize, wrap = Fragment.empty;\n for (let i = conn.length - 1; i >= 0; i--)\n wrap = Fragment.from(conn[i].create(null, wrap));\n wrap = Fragment.from(before.copy(wrap));\n let tr = state.tr.step(new ReplaceAroundStep($cut.pos - 1, end, $cut.pos, end, new Slice(wrap, 1, 0), conn.length, true));\n let joinAt = end + 2 * conn.length;\n if (canJoin(tr.doc, joinAt))\n tr.join(joinAt);\n dispatch(tr.scrollIntoView());\n }\n return true;\n }\n let selAfter = Selection.findFrom($cut, 1);\n let range = selAfter && selAfter.$from.blockRange(selAfter.$to), target = range && liftTarget(range);\n if (target != null && target >= $cut.depth) {\n if (dispatch)\n dispatch(state.tr.lift(range, target).scrollIntoView());\n return true;\n }\n if (canDelAfter && textblockAt(after, \"start\", true) && textblockAt(before, \"end\")) {\n let at = before, wrap = [];\n for (;;) {\n wrap.push(at);\n if (at.isTextblock)\n break;\n at = at.lastChild;\n }\n let afterText = after, afterDepth = 1;\n for (; !afterText.isTextblock; afterText = afterText.firstChild)\n afterDepth++;\n if (at.canReplace(at.childCount, at.childCount, afterText.content)) {\n if (dispatch) {\n let end = Fragment.empty;\n for (let i = wrap.length - 1; i >= 0; i--)\n end = Fragment.from(wrap[i].copy(end));\n let tr = state.tr.step(new ReplaceAroundStep($cut.pos - wrap.length, $cut.pos + after.nodeSize, $cut.pos + afterDepth, $cut.pos + after.nodeSize - afterDepth, new Slice(end, wrap.length, 0), 0, true));\n dispatch(tr.scrollIntoView());\n }\n return true;\n }\n }\n return false;\n}\nfunction selectTextblockSide(side) {\n return function (state, dispatch) {\n let sel = state.selection, $pos = side < 0 ? sel.$from : sel.$to;\n let depth = $pos.depth;\n while ($pos.node(depth).isInline) {\n if (!depth)\n return false;\n depth--;\n }\n if (!$pos.node(depth).isTextblock)\n return false;\n if (dispatch)\n dispatch(state.tr.setSelection(TextSelection.create(state.doc, side < 0 ? $pos.start(depth) : $pos.end(depth))));\n return true;\n };\n}\n/**\nMoves the cursor to the start of current text block.\n*/\nconst selectTextblockStart = selectTextblockSide(-1);\n/**\nMoves the cursor to the end of current text block.\n*/\nconst selectTextblockEnd = selectTextblockSide(1);\n// Parameterized commands\n/**\nWrap the selection in a node of the given type with the given\nattributes.\n*/\nfunction wrapIn(nodeType, attrs = null) {\n return function (state, dispatch) {\n let { $from, $to } = state.selection;\n let range = $from.blockRange($to), wrapping = range && findWrapping(range, nodeType, attrs);\n if (!wrapping)\n return false;\n if (dispatch)\n dispatch(state.tr.wrap(range, wrapping).scrollIntoView());\n return true;\n };\n}\n/**\nReturns a command that tries to set the selected textblocks to the\ngiven node type with the given attributes.\n*/\nfunction setBlockType(nodeType, attrs = null) {\n return function (state, dispatch) {\n let applicable = false;\n for (let i = 0; i < state.selection.ranges.length && !applicable; i++) {\n let { $from: { pos: from }, $to: { pos: to } } = state.selection.ranges[i];\n state.doc.nodesBetween(from, to, (node, pos) => {\n if (applicable)\n return false;\n if (!node.isTextblock || node.hasMarkup(nodeType, attrs))\n return;\n if (node.type == nodeType) {\n applicable = true;\n }\n else {\n let $pos = state.doc.resolve(pos), index = $pos.index();\n applicable = $pos.parent.canReplaceWith(index, index + 1, nodeType);\n }\n });\n }\n if (!applicable)\n return false;\n if (dispatch) {\n let tr = state.tr;\n for (let i = 0; i < state.selection.ranges.length; i++) {\n let { $from: { pos: from }, $to: { pos: to } } = state.selection.ranges[i];\n tr.setBlockType(from, to, nodeType, attrs);\n }\n dispatch(tr.scrollIntoView());\n }\n return true;\n };\n}\nfunction markApplies(doc, ranges, type) {\n for (let i = 0; i < ranges.length; i++) {\n let { $from, $to } = ranges[i];\n let can = $from.depth == 0 ? doc.inlineContent && doc.type.allowsMarkType(type) : false;\n doc.nodesBetween($from.pos, $to.pos, node => {\n if (can)\n return false;\n can = node.inlineContent && node.type.allowsMarkType(type);\n });\n if (can)\n return true;\n }\n return false;\n}\n/**\nCreate a command function that toggles the given mark with the\ngiven attributes. Will return `false` when the current selection\ndoesn't support that mark. This will remove the mark if any marks\nof that type exist in the selection, or add it otherwise. If the\nselection is empty, this applies to the [stored\nmarks](https://prosemirror.net/docs/ref/#state.EditorState.storedMarks) instead of a range of the\ndocument.\n*/\nfunction toggleMark(markType, attrs = null) {\n return function (state, dispatch) {\n let { empty, $cursor, ranges } = state.selection;\n if ((empty && !$cursor) || !markApplies(state.doc, ranges, markType))\n return false;\n if (dispatch) {\n if ($cursor) {\n if (markType.isInSet(state.storedMarks || $cursor.marks()))\n dispatch(state.tr.removeStoredMark(markType));\n else\n dispatch(state.tr.addStoredMark(markType.create(attrs)));\n }\n else {\n let has = false, tr = state.tr;\n for (let i = 0; !has && i < ranges.length; i++) {\n let { $from, $to } = ranges[i];\n has = state.doc.rangeHasMark($from.pos, $to.pos, markType);\n }\n for (let i = 0; i < ranges.length; i++) {\n let { $from, $to } = ranges[i];\n if (has) {\n tr.removeMark($from.pos, $to.pos, markType);\n }\n else {\n let from = $from.pos, to = $to.pos, start = $from.nodeAfter, end = $to.nodeBefore;\n let spaceStart = start && start.isText ? /^\\s*/.exec(start.text)[0].length : 0;\n let spaceEnd = end && end.isText ? /\\s*$/.exec(end.text)[0].length : 0;\n if (from + spaceStart < to) {\n from += spaceStart;\n to -= spaceEnd;\n }\n tr.addMark(from, to, markType.create(attrs));\n }\n }\n dispatch(tr.scrollIntoView());\n }\n }\n return true;\n };\n}\nfunction wrapDispatchForJoin(dispatch, isJoinable) {\n return (tr) => {\n if (!tr.isGeneric)\n return dispatch(tr);\n let ranges = [];\n for (let i = 0; i < tr.mapping.maps.length; i++) {\n let map = tr.mapping.maps[i];\n for (let j = 0; j < ranges.length; j++)\n ranges[j] = map.map(ranges[j]);\n map.forEach((_s, _e, from, to) => ranges.push(from, to));\n }\n // Figure out which joinable points exist inside those ranges,\n // by checking all node boundaries in their parent nodes.\n let joinable = [];\n for (let i = 0; i < ranges.length; i += 2) {\n let from = ranges[i], to = ranges[i + 1];\n let $from = tr.doc.resolve(from), depth = $from.sharedDepth(to), parent = $from.node(depth);\n for (let index = $from.indexAfter(depth), pos = $from.after(depth + 1); pos <= to; ++index) {\n let after = parent.maybeChild(index);\n if (!after)\n break;\n if (index && joinable.indexOf(pos) == -1) {\n let before = parent.child(index - 1);\n if (before.type == after.type && isJoinable(before, after))\n joinable.push(pos);\n }\n pos += after.nodeSize;\n }\n }\n // Join the joinable points\n joinable.sort((a, b) => a - b);\n for (let i = joinable.length - 1; i >= 0; i--) {\n if (canJoin(tr.doc, joinable[i]))\n tr.join(joinable[i]);\n }\n dispatch(tr);\n };\n}\n/**\nWrap a command so that, when it produces a transform that causes\ntwo joinable nodes to end up next to each other, those are joined.\nNodes are considered joinable when they are of the same type and\nwhen the `isJoinable` predicate returns true for them or, if an\narray of strings was passed, if their node type name is in that\narray.\n*/\nfunction autoJoin(command, isJoinable) {\n let canJoin = Array.isArray(isJoinable) ? (node) => isJoinable.indexOf(node.type.name) > -1\n : isJoinable;\n return (state, dispatch, view) => command(state, dispatch && wrapDispatchForJoin(dispatch, canJoin), view);\n}\n/**\nCombine a number of command functions into a single function (which\ncalls them one by one until one returns true).\n*/\nfunction chainCommands(...commands) {\n return function (state, dispatch, view) {\n for (let i = 0; i < commands.length; i++)\n if (commands[i](state, dispatch, view))\n return true;\n return false;\n };\n}\nlet backspace = chainCommands(deleteSelection, joinBackward, selectNodeBackward);\nlet del = chainCommands(deleteSelection, joinForward, selectNodeForward);\n/**\nA basic keymap containing bindings not specific to any schema.\nBinds the following keys (when multiple commands are listed, they\nare chained with [`chainCommands`](https://prosemirror.net/docs/ref/#commands.chainCommands)):\n\n* **Enter** to `newlineInCode`, `createParagraphNear`, `liftEmptyBlock`, `splitBlock`\n* **Mod-Enter** to `exitCode`\n* **Backspace** and **Mod-Backspace** to `deleteSelection`, `joinBackward`, `selectNodeBackward`\n* **Delete** and **Mod-Delete** to `deleteSelection`, `joinForward`, `selectNodeForward`\n* **Mod-Delete** to `deleteSelection`, `joinForward`, `selectNodeForward`\n* **Mod-a** to `selectAll`\n*/\nconst pcBaseKeymap = {\n \"Enter\": chainCommands(newlineInCode, createParagraphNear, liftEmptyBlock, splitBlock),\n \"Mod-Enter\": exitCode,\n \"Backspace\": backspace,\n \"Mod-Backspace\": backspace,\n \"Shift-Backspace\": backspace,\n \"Delete\": del,\n \"Mod-Delete\": del,\n \"Mod-a\": selectAll\n};\n/**\nA copy of `pcBaseKeymap` that also binds **Ctrl-h** like Backspace,\n**Ctrl-d** like Delete, **Alt-Backspace** like Ctrl-Backspace, and\n**Ctrl-Alt-Backspace**, **Alt-Delete**, and **Alt-d** like\nCtrl-Delete.\n*/\nconst macBaseKeymap = {\n \"Ctrl-h\": pcBaseKeymap[\"Backspace\"],\n \"Alt-Backspace\": pcBaseKeymap[\"Mod-Backspace\"],\n \"Ctrl-d\": pcBaseKeymap[\"Delete\"],\n \"Ctrl-Alt-Backspace\": pcBaseKeymap[\"Mod-Delete\"],\n \"Alt-Delete\": pcBaseKeymap[\"Mod-Delete\"],\n \"Alt-d\": pcBaseKeymap[\"Mod-Delete\"],\n \"Ctrl-a\": selectTextblockStart,\n \"Ctrl-e\": selectTextblockEnd\n};\nfor (let key in pcBaseKeymap)\n macBaseKeymap[key] = pcBaseKeymap[key];\nconst mac = typeof navigator != \"undefined\" ? /Mac|iP(hone|[oa]d)/.test(navigator.platform)\n // @ts-ignore\n : typeof os != \"undefined\" && os.platform ? os.platform() == \"darwin\" : false;\n/**\nDepending on the detected platform, this will hold\n[`pcBasekeymap`](https://prosemirror.net/docs/ref/#commands.pcBaseKeymap) or\n[`macBaseKeymap`](https://prosemirror.net/docs/ref/#commands.macBaseKeymap).\n*/\nconst baseKeymap = mac ? macBaseKeymap : pcBaseKeymap;\n\nexport { autoJoin, baseKeymap, chainCommands, createParagraphNear, deleteSelection, exitCode, joinBackward, joinDown, joinForward, joinTextblockBackward, joinTextblockForward, joinUp, lift, liftEmptyBlock, macBaseKeymap, newlineInCode, pcBaseKeymap, selectAll, selectNodeBackward, selectNodeForward, selectParentNode, selectTextblockEnd, selectTextblockStart, setBlockType, splitBlock, splitBlockAs, splitBlockKeepMarks, toggleMark, wrapIn };\n","import { findWrapping, ReplaceAroundStep, canSplit, liftTarget, canJoin } from 'prosemirror-transform';\nimport { NodeRange, Fragment, Slice } from 'prosemirror-model';\nimport { Selection } from 'prosemirror-state';\n\nconst olDOM = [\"ol\", 0], ulDOM = [\"ul\", 0], liDOM = [\"li\", 0];\n/**\nAn ordered list [node spec](https://prosemirror.net/docs/ref/#model.NodeSpec). Has a single\nattribute, `order`, which determines the number at which the list\nstarts counting, and defaults to 1. Represented as an `<ol>`\nelement.\n*/\nconst orderedList = {\n attrs: { order: { default: 1 } },\n parseDOM: [{ tag: \"ol\", getAttrs(dom) {\n return { order: dom.hasAttribute(\"start\") ? +dom.getAttribute(\"start\") : 1 };\n } }],\n toDOM(node) {\n return node.attrs.order == 1 ? olDOM : [\"ol\", { start: node.attrs.order }, 0];\n }\n};\n/**\nA bullet list node spec, represented in the DOM as `<ul>`.\n*/\nconst bulletList = {\n parseDOM: [{ tag: \"ul\" }],\n toDOM() { return ulDOM; }\n};\n/**\nA list item (`<li>`) spec.\n*/\nconst listItem = {\n parseDOM: [{ tag: \"li\" }],\n toDOM() { return liDOM; },\n defining: true\n};\nfunction add(obj, props) {\n let copy = {};\n for (let prop in obj)\n copy[prop] = obj[prop];\n for (let prop in props)\n copy[prop] = props[prop];\n return copy;\n}\n/**\nConvenience function for adding list-related node types to a map\nspecifying the nodes for a schema. Adds\n[`orderedList`](https://prosemirror.net/docs/ref/#schema-list.orderedList) as `\"ordered_list\"`,\n[`bulletList`](https://prosemirror.net/docs/ref/#schema-list.bulletList) as `\"bullet_list\"`, and\n[`listItem`](https://prosemirror.net/docs/ref/#schema-list.listItem) as `\"list_item\"`.\n\n`itemContent` determines the content expression for the list items.\nIf you want the commands defined in this module to apply to your\nlist structure, it should have a shape like `\"paragraph block*\"` or\n`\"paragraph (ordered_list | bullet_list)*\"`. `listGroup` can be\ngiven to assign a group name to the list node types, for example\n`\"block\"`.\n*/\nfunction addListNodes(nodes, itemContent, listGroup) {\n return nodes.append({\n ordered_list: add(orderedList, { content: \"list_item+\", group: listGroup }),\n bullet_list: add(bulletList, { content: \"list_item+\", group: listGroup }),\n list_item: add(listItem, { content: itemContent })\n });\n}\n/**\nReturns a command function that wraps the selection in a list with\nthe given type an attributes. If `dispatch` is null, only return a\nvalue to indicate whether this is possible, but don't actually\nperform the change.\n*/\nfunction wrapInList(listType, attrs = null) {\n return function (state, dispatch) {\n let { $from, $to } = state.selection;\n let range = $from.blockRange($to), doJoin = false, outerRange = range;\n if (!range)\n return false;\n // This is at the top of an existing list item\n if (range.depth >= 2 && $from.node(range.depth - 1).type.compatibleContent(listType) && range.startIndex == 0) {\n // Don't do anything if this is the top of the list\n if ($from.index(range.depth - 1) == 0)\n return false;\n let $insert = state.doc.resolve(range.start - 2);\n outerRange = new NodeRange($insert, $insert, range.depth);\n if (range.endIndex < range.parent.childCount)\n range = new NodeRange($from, state.doc.resolve($to.end(range.depth)), range.depth);\n doJoin = true;\n }\n let wrap = findWrapping(outerRange, listType, attrs, range);\n if (!wrap)\n return false;\n if (dispatch)\n dispatch(doWrapInList(state.tr, range, wrap, doJoin, listType).scrollIntoView());\n return true;\n };\n}\nfunction doWrapInList(tr, range, wrappers, joinBefore, listType) {\n let content = Fragment.empty;\n for (let i = wrappers.length - 1; i >= 0; i--)\n content = Fragment.from(wrappers[i].type.create(wrappers[i].attrs, content));\n tr.step(new ReplaceAroundStep(range.start - (joinBefore ? 2 : 0), range.end, range.start, range.end, new Slice(content, 0, 0), wrappers.length, true));\n let found = 0;\n for (let i = 0; i < wrappers.length; i++)\n if (wrappers[i].type == listType)\n found = i + 1;\n let splitDepth = wrappers.length - found;\n let splitPos = range.start + wrappers.length - (joinBefore ? 2 : 0), parent = range.parent;\n for (let i = range.startIndex, e = range.endIndex, first = true; i < e; i++, first = false) {\n if (!first && canSplit(tr.doc, splitPos, splitDepth)) {\n tr.split(splitPos, splitDepth);\n splitPos += 2 * splitDepth;\n }\n splitPos += parent.child(i).nodeSize;\n }\n return tr;\n}\n/**\nBuild a command that splits a non-empty textblock at the top level\nof a list item by also splitting that list item.\n*/\nfunction splitListItem(itemType, itemAttrs) {\n return function (state, dispatch) {\n let { $from, $to, node } = state.selection;\n if ((node && node.isBlock) || $from.depth < 2 || !$from.sameParent($to))\n return false;\n let grandParent = $from.node(-1);\n if (grandParent.type != itemType)\n return false;\n if ($from.parent.content.size == 0 && $from.node(-1).childCount == $from.indexAfter(-1)) {\n // In an empty block. If this is a nested list, the wrapping\n // list item should be split. Otherwise, bail out and let next\n // command handle lifting.\n if ($from.depth == 3 || $from.node(-3).type != itemType ||\n $from.index(-2) != $from.node(-2).childCount - 1)\n return false;\n if (dispatch) {\n let wrap = Fragment.empty;\n let depthBefore = $from.index(-1) ? 1 : $from.index(-2) ? 2 : 3;\n // Build a fragment containing empty versions of the structure\n // from the outer list item to the parent node of the cursor\n for (let d = $from.depth - depthBefore; d >= $from.depth - 3; d--)\n wrap = Fragment.from($from.node(d).copy(wrap));\n let depthAfter = $from.indexAfter(-1) < $from.node(-2).childCount ? 1\n : $from.indexAfter(-2) < $from.node(-3).childCount ? 2 : 3;\n // Add a second list item with an empty default start node\n wrap = wrap.append(Fragment.from(itemType.createAndFill()));\n let start = $from.before($from.depth - (depthBefore - 1));\n let tr = state.tr.replace(start, $from.after(-depthAfter), new Slice(wrap, 4 - depthBefore, 0));\n let sel = -1;\n tr.doc.nodesBetween(start, tr.doc.content.size, (node, pos) => {\n if (sel > -1)\n return false;\n if (node.isTextblock && node.content.size == 0)\n sel = pos + 1;\n });\n if (sel > -1)\n tr.setSelection(Selection.near(tr.doc.resolve(sel)));\n dispatch(tr.scrollIntoView());\n }\n return true;\n }\n let nextType = $to.pos == $from.end() ? grandParent.contentMatchAt(0).defaultType : null;\n let tr = state.tr.delete($from.pos, $to.pos);\n let types = nextType ? [itemAttrs ? { type: itemType, attrs: itemAttrs } : null, { type: nextType }] : undefined;\n if (!canSplit(tr.doc, $from.pos, 2, types))\n return false;\n if (dispatch)\n dispatch(tr.split($from.pos, 2, types).scrollIntoView());\n return true;\n };\n}\n/**\nCreate a command to lift the list item around the selection up into\na wrapping list.\n*/\nfunction liftListItem(itemType) {\n return function (state, dispatch) {\n let { $from, $to } = state.selection;\n let range = $from.blockRange($to, node => node.childCount > 0 && node.firstChild.type == itemType);\n if (!range)\n return false;\n if (!dispatch)\n return true;\n if ($from.node(range.depth - 1).type == itemType) // Inside a parent list\n return liftToOuterList(state, dispatch, itemType, range);\n else // Outer list node\n return liftOutOfList(state, dispatch, range);\n };\n}\nfunction liftToOuterList(state, dispatch, itemType, range) {\n let tr = state.tr, end = range.end, endOfList = range.$to.end(range.depth);\n if (end < endOfList) {\n // There are siblings after the lifted items, which must become\n // children of the last item\n tr.step(new ReplaceAroundStep(end - 1, endOfList, end, endOfList, new Slice(Fragment.from(itemType.create(null, range.parent.copy())), 1, 0), 1, true));\n range = new NodeRange(tr.doc.resolve(range.$from.pos), tr.doc.resolve(endOfList), range.depth);\n }\n const target = liftTarget(range);\n if (target == null)\n return false;\n tr.lift(range, target);\n let after = tr.mapping.map(end, -1) - 1;\n if (canJoin(tr.doc, after))\n tr.join(after);\n dispatch(tr.scrollIntoView());\n return true;\n}\nfunction liftOutOfList(state, dispatch, range) {\n let tr = state.tr, list = range.parent;\n // Merge the list items into a single big item\n for (let pos = range.end, i = range.endIndex - 1, e = range.startIndex; i > e; i--) {\n pos -= list.child(i).nodeSize;\n tr.delete(pos - 1, pos + 1);\n }\n let $start = tr.doc.resolve(range.start), item = $start.nodeAfter;\n if (tr.mapping.map(range.end) != range.start + $start.nodeAfter.nodeSize)\n return false;\n let atStart = range.startIndex == 0, atEnd = range.endIndex == list.childCount;\n let parent = $start.node(-1), indexBefore = $start.index(-1);\n if (!parent.canReplace(indexBefore + (atStart ? 0 : 1), indexBefore + 1, item.content.append(atEnd ? Fragment.empty : Fragment.from(list))))\n return false;\n let start = $start.pos, end = start + item.nodeSize;\n // Strip off the surrounding list. At the sides where we're not at\n // the end of the list, the existing list is closed. At sides where\n // this is the end, it is overwritten to its end.\n tr.step(new ReplaceAroundStep(start - (atStart ? 1 : 0), end + (atEnd ? 1 : 0), start + 1, end - 1, new Slice((atStart ? Fragment.empty : Fragment.from(list.copy(Fragment.empty)))\n .append(atEnd ? Fragment.empty : Fragment.from(list.copy(Fragment.empty))), atStart ? 0 : 1, atEnd ? 0 : 1), atStart ? 0 : 1));\n dispatch(tr.scrollIntoView());\n return true;\n}\n/**\nCreate a command to sink the list item around the selection down\ninto an inner list.\n*/\nfunction sinkListItem(itemType) {\n return function (state, dispatch) {\n let { $from, $to } = state.selection;\n let range = $from.blockRange($to, node => node.childCount > 0 && node.firstChild.type == itemType);\n if (!range)\n return false;\n let startIndex = range.startIndex;\n if (startIndex == 0)\n return false;\n let parent = range.parent, nodeBefore = parent.child(startIndex - 1);\n if (nodeBefore.type != itemType)\n return false;\n if (dispatch) {\n let nestedBefore = nodeBefore.lastChild && nodeBefore.lastChild.type == parent.type;\n let inner = Fragment.from(nestedBefore ? itemType.create() : null);\n let slice = new Slice(Fragment.from(itemType.create(null, Fragment.from(parent.type.create(null, inner)))), nestedBefore ? 3 : 1, 0);\n let before = range.start, after = range.end;\n dispatch(state.tr.step(new ReplaceAroundStep(before - (nestedBefore ? 3 : 1), after, before, after, slice, 1, true))\n .scrollIntoView());\n }\n return true;\n };\n}\n\nexport { addListNodes, bulletList, liftListItem, listItem, orderedList, sinkListItem, splitListItem, wrapInList };\n","import { Plugin, PluginKey, TextSelection, Selection, NodeSelection, EditorState } from '@tiptap/pm/state';\nimport { EditorView } from '@tiptap/pm/view';\nimport { keymap } from '@tiptap/pm/keymap';\nimport { Schema, Fragment, DOMParser, DOMSerializer, Node as Node$1, Slice } from '@tiptap/pm/model';\nimport { liftTarget, ReplaceStep, ReplaceAroundStep, joinPoint, Transform, canSplit, canJoin, findWrapping } from '@tiptap/pm/transform';\nimport { createParagraphNear as createParagraphNear$1, deleteSelection as deleteSelection$1, exitCode as exitCode$1, joinUp as joinUp$1, joinDown as joinDown$1, joinBackward as joinBackward$1, joinForward as joinForward$1, joinTextblockBackward as joinTextblockBackward$1, joinTextblockForward as joinTextblockForward$1, lift as lift$1, liftEmptyBlock as liftEmptyBlock$1, newlineInCode as newlineInCode$1, selectNodeBackward as selectNodeBackward$1, selectNodeForward as selectNodeForward$1, selectParentNode as selectParentNode$1, selectTextblockEnd as selectTextblockEnd$1, selectTextblockStart as selectTextblockStart$1, setBlockType, wrapIn as wrapIn$1 } from '@tiptap/pm/commands';\nimport { liftListItem as liftListItem$1, sinkListItem as sinkListItem$1, wrapInList as wrapInList$1 } from '@tiptap/pm/schema-list';\n\n/**\r\n * Takes a Transaction & Editor State and turns it into a chainable state object\r\n * @param config The transaction and state to create the chainable state from\r\n * @returns A chainable Editor state object\r\n */\r\nfunction createChainableState(config) {\r\n const { state, transaction } = config;\r\n let { selection } = transaction;\r\n let { doc } = transaction;\r\n let { storedMarks } = transaction;\r\n return {\r\n ...state,\r\n apply: state.apply.bind(state),\r\n applyTransaction: state.applyTransaction.bind(state),\r\n plugins: state.plugins,\r\n schema: state.schema,\r\n reconfigure: state.reconfigure.bind(state),\r\n toJSON: state.toJSON.bind(state),\r\n get storedMarks() {\r\n return storedMarks;\r\n },\r\n get selection() {\r\n return selection;\r\n },\r\n get doc() {\r\n return doc;\r\n },\r\n get tr() {\r\n selection = transaction.selection;\r\n doc = transaction.doc;\r\n storedMarks = transaction.storedMarks;\r\n return transaction;\r\n },\r\n };\r\n}\n\nclass CommandManager {\r\n constructor(props) {\r\n this.editor = props.editor;\r\n this.rawCommands = this.editor.extensionManager.commands;\r\n this.customState = props.state;\r\n }\r\n get hasCustomState() {\r\n return !!this.customState;\r\n }\r\n get state() {\r\n return this.customState || this.editor.state;\r\n }\r\n get commands() {\r\n const { rawCommands, editor, state } = this;\r\n const { view } = editor;\r\n const { tr } = state;\r\n const props = this.buildProps(tr);\r\n return Object.fromEntries(Object.entries(rawCommands).map(([name, command]) => {\r\n const method = (...args) => {\r\n const callback = command(...args)(props);\r\n if (!tr.getMeta('preventDispatch') && !this.hasCustomState) {\r\n view.dispatch(tr);\r\n }\r\n return callback;\r\n };\r\n return [name, method];\r\n }));\r\n }\r\n get chain() {\r\n return () => this.createChain();\r\n }\r\n get can() {\r\n return () => this.createCan();\r\n }\r\n createChain(startTr, shouldDispatch = true) {\r\n const { rawCommands, editor, state } = this;\r\n const { view } = editor;\r\n const callbacks = [];\r\n const hasStartTransaction = !!startTr;\r\n const tr = startTr || state.tr;\r\n const run = () => {\r\n if (!hasStartTransaction\r\n && shouldDispatch\r\n && !tr.getMeta('preventDispatch')\r\n && !this.hasCustomState) {\r\n view.dispatch(tr);\r\n }\r\n return callbacks.every(callback => callback === true);\r\n };\r\n const chain = {\r\n ...Object.fromEntries(Object.entries(rawCommands).map(([name, command]) => {\r\n const chainedCommand = (...args) => {\r\n const props = this.buildProps(tr, shouldDispatch);\r\n const callback = command(...args)(props);\r\n callbacks.push(callback);\r\n return chain;\r\n };\r\n return [name, chainedCommand];\r\n })),\r\n run,\r\n };\r\n return chain;\r\n }\r\n createCan(startTr) {\r\n const { rawCommands, state } = this;\r\n const dispatch = false;\r\n const tr = startTr || state.tr;\r\n const props = this.buildProps(tr, dispatch);\r\n const formattedCommands = Object.fromEntries(Object.entries(rawCommands).map(([name, command]) => {\r\n return [name, (...args) => command(...args)({ ...props, dispatch: undefined })];\r\n }));\r\n return {\r\n ...formattedCommands,\r\n chain: () => this.createChain(tr, dispatch),\r\n };\r\n }\r\n buildProps(tr, shouldDispatch = true) {\r\n const { rawCommands, editor, state } = this;\r\n const { view } = editor;\r\n const props = {\r\n tr,\r\n editor,\r\n view,\r\n state: createChainableState({\r\n state,\r\n transaction: tr,\r\n }),\r\n dispatch: shouldDispatch ? () => undefined : undefined,\r\n chain: () => this.createChain(tr, shouldDispatch),\r\n can: () => this.createCan(tr),\r\n get commands() {\r\n return Object.fromEntries(Object.entries(rawCommands).map(([name, command]) => {\r\n return [name, (...args) => command(...args)(props)];\r\n }));\r\n },\r\n };\r\n return props;\r\n }\r\n}\n\nclass EventEmitter {\r\n constructor() {\r\n this.callbacks = {};\r\n }\r\n on(event, fn) {\r\n if (!this.callbacks[event]) {\r\n this.callbacks[event] = [];\r\n }\r\n this.callbacks[event].push(fn);\r\n return this;\r\n }\r\n emit(event, ...args) {\r\n const callbacks = this.callbacks[event];\r\n if (callbacks) {\r\n callbacks.forEach(callback => callback.apply(this, args));\r\n }\r\n return this;\r\n }\r\n off(event, fn) {\r\n const callbacks = this.callbacks[event];\r\n if (callbacks) {\r\n if (fn) {\r\n this.callbacks[event] = callbacks.filter(callback => callback !== fn);\r\n }\r\n else {\r\n delete this.callbacks[event];\r\n }\r\n }\r\n return this;\r\n }\r\n removeAllListeners() {\r\n this.callbacks = {};\r\n }\r\n}\n\n/**\r\n * Returns a field from an extension\r\n * @param extension The Tiptap extension\r\n * @param field The field, for example `renderHTML` or `priority`\r\n * @param context The context object that should be passed as `this` into the function\r\n * @returns The field value\r\n */\r\nfunction getExtensionField(extension, field, context) {\r\n if (extension.config[field] === undefined && extension.parent) {\r\n return getExtensionField(extension.parent, field, context);\r\n }\r\n if (typeof extension.config[field] === 'function') {\r\n const value = extension.config[field].bind({\r\n ...context,\r\n parent: extension.parent\r\n ? getExtensionField(extension.parent, field, context)\r\n : null,\r\n });\r\n return value;\r\n }\r\n return extension.config[field];\r\n}\n\nfunction splitExtensions(extensions) {\r\n const baseExtensions = extensions.filter(extension => extension.type === 'extension');\r\n const nodeExtensions = extensions.filter(extension => extension.type === 'node');\r\n const markExtensions = extensions.filter(extension => extension.type === 'mark');\r\n return {\r\n baseExtensions,\r\n nodeExtensions,\r\n markExtensions,\r\n };\r\n}\n\n/**\r\n * Get a list of all extension attributes defined in `addAttribute` and `addGlobalAttribute`.\r\n * @param extensions List of extensions\r\n */\r\nfunction getAttributesFromExtensions(extensions) {\r\n const extensionAttributes = [];\r\n const { nodeExtensions, markExtensions } = splitExtensions(extensions);\r\n const nodeAndMarkExtensions = [...nodeExtensions, ...markExtensions];\r\n const defaultAttribute = {\r\n default: null,\r\n rendered: true,\r\n renderHTML: null,\r\n parseHTML: null,\r\n keepOnSplit: true,\r\n isRequired: false,\r\n };\r\n extensions.forEach(extension => {\r\n const context = {\r\n name: extension.name,\r\n options: extension.options,\r\n storage: extension.storage,\r\n };\r\n const addGlobalAttributes = getExtensionField(extension, 'addGlobalAttributes', context);\r\n if (!addGlobalAttributes) {\r\n return;\r\n }\r\n // TODO: remove `as GlobalAttributes`\r\n const globalAttributes = addGlobalAttributes();\r\n globalAttributes.forEach(globalAttribute => {\r\n globalAttribute.types.forEach(type => {\r\n Object\r\n .entries(globalAttribute.attributes)\r\n .forEach(([name, attribute]) => {\r\n extensionAttributes.push({\r\n type,\r\n name,\r\n attribute: {\r\n ...defaultAttribute,\r\n ...attribute,\r\n },\r\n });\r\n });\r\n });\r\n });\r\n });\r\n nodeAndMarkExtensions.forEach(extension => {\r\n const context = {\r\n name: extension.name,\r\n options: extension.options,\r\n storage: extension.storage,\r\n };\r\n const addAttributes = getExtensionField(extension, 'addAttributes', context);\r\n if (!addAttributes) {\r\n return;\r\n }\r\n // TODO: remove `as Attributes`\r\n const attributes = addAttributes();\r\n Object\r\n .entries(attributes)\r\n .forEach(([name, attribute]) => {\r\n const mergedAttr = {\r\n ...defaultAttribute,\r\n ...attribute,\r\n };\r\n if (typeof (mergedAttr === null || mergedAttr === void 0 ? void 0 : mergedAttr.default) === 'function') {\r\n mergedAttr.default = mergedAttr.default();\r\n }\r\n if ((mergedAttr === null || mergedAttr === void 0 ? void 0 : mergedAttr.isRequired) && (mergedAttr === null || mergedAttr === void 0 ? void 0 : mergedAttr.default) === undefined) {\r\n delete mergedAttr.default;\r\n }\r\n extensionAttributes.push({\r\n type: extension.name,\r\n name,\r\n attribute: mergedAttr,\r\n });\r\n });\r\n });\r\n return extensionAttributes;\r\n}\n\nfunction getNodeType(nameOrType, schema) {\r\n if (typeof nameOrType === 'string') {\r\n if (!schema.nodes[nameOrType]) {\r\n throw Error(`There is no node type named '${nameOrType}'. Maybe you forgot to add the extension?`);\r\n }\r\n return schema.nodes[nameOrType];\r\n }\r\n return nameOrType;\r\n}\n\nfunction mergeAttributes(...objects) {\r\n return objects\r\n .filter(item => !!item)\r\n .reduce((items, item) => {\r\n const mergedAttributes = { ...items };\r\n Object.entries(item).forEach(([key, value]) => {\r\n const exists = mergedAttributes[key];\r\n if (!exists) {\r\n mergedAttributes[key] = value;\r\n return;\r\n }\r\n if (key === 'class') {\r\n const valueClasses = value ? value.split(' ') : [];\r\n const existingClasses = mergedAttributes[key] ? mergedAttributes[key].split(' ') : [];\r\n const insertClasses = valueClasses.filter(valueClass => !existingClasses.includes(valueClass));\r\n mergedAttributes[key] = [...existingClasses, ...insertClasses].join(' ');\r\n }\r\n else if (key === 'style') {\r\n mergedAttributes[key] = [mergedAttributes[key], value].join('; ');\r\n }\r\n else {\r\n mergedAttributes[key] = value;\r\n }\r\n });\r\n return mergedAttributes;\r\n }, {});\r\n}\n\nfunction getRenderedAttributes(nodeOrMark, extensionAttributes) {\r\n return extensionAttributes\r\n .filter(item => item.attribute.rendered)\r\n .map(item => {\r\n if (!item.attribute.renderHTML) {\r\n return {\r\n [item.name]: nodeOrMark.attrs[item.name],\r\n };\r\n }\r\n return item.attribute.renderHTML(nodeOrMark.attrs) || {};\r\n })\r\n .reduce((attributes, attribute) => mergeAttributes(attributes, attribute), {});\r\n}\n\nfunction isFunction(value) {\r\n return typeof value === 'function';\r\n}\n\n/**\r\n * Optionally calls `value` as a function.\r\n * Otherwise it is returned directly.\r\n * @param value Function or any value.\r\n * @param context Optional context to bind to function.\r\n * @param props Optional props to pass to function.\r\n */\r\nfunction callOrReturn(value, context = undefined, ...props) {\r\n if (isFunction(value)) {\r\n if (context) {\r\n return value.bind(context)(...props);\r\n }\r\n return value(...props);\r\n }\r\n return value;\r\n}\n\nfunction isEmptyObject(value = {}) {\r\n return Object.keys(value).length === 0 && value.constructor === Object;\r\n}\n\nfunction fromString(value) {\r\n if (typeof value !== 'string') {\r\n return value;\r\n }\r\n if (value.match(/^[+-]?(?:\\d*\\.)?\\d+$/)) {\r\n return Number(value);\r\n }\r\n if (value === 'true') {\r\n return true;\r\n }\r\n if (value === 'false') {\r\n return false;\r\n }\r\n return value;\r\n}\n\n/**\r\n * This function merges extension attributes into parserule attributes (`attrs` or `getAttrs`).\r\n * Cancels when `getAttrs` returned `false`.\r\n * @param parseRule ProseMirror ParseRule\r\n * @param extensionAttributes List of attributes to inject\r\n */\r\nfunction injectExtensionAttributesToParseRule(parseRule, extensionAttributes) {\r\n if (parseRule.style) {\r\n return parseRule;\r\n }\r\n return {\r\n ...parseRule,\r\n getAttrs: node => {\r\n const oldAttributes = parseRule.getAttrs ? parseRule.getAttrs(node) : parseRule.attrs;\r\n if (oldAttributes === false) {\r\n return false;\r\n }\r\n const newAttributes = extensionAttributes.reduce((items, item) => {\r\n const value = item.attribute.parseHTML\r\n ? item.attribute.parseHTML(node)\r\n : fromString(node.getAttribute(item.name));\r\n if (value === null || value === undefined) {\r\n return items;\r\n }\r\n return {\r\n ...items,\r\n [item.name]: value,\r\n };\r\n }, {});\r\n return { ...oldAttributes, ...newAttributes };\r\n },\r\n };\r\n}\n\nfunction cleanUpSchemaItem(data) {\r\n return Object.fromEntries(\r\n // @ts-ignore\r\n Object.entries(data).filter(([key, value]) => {\r\n if (key === 'attrs' && isEmptyObject(value)) {\r\n return false;\r\n }\r\n return value !== null && value !== undefined;\r\n }));\r\n}\r\n/**\r\n * Creates a new Prosemirror schema based on the given extensions.\r\n * @param extensions An array of Tiptap extensions\r\n * @param editor The editor instance\r\n * @returns A Prosemirror schema\r\n */\r\nfunction getSchemaByResolvedExtensions(extensions, editor) {\r\n var _a;\r\n const allAttributes = getAttributesFromExtensions(extensions);\r\n const { nodeExtensions, markExtensions } = splitExtensions(extensions);\r\n const topNode = (_a = nodeExtensions.find(extension => getExtensionField(extension, 'topNode'))) === null || _a === void 0 ? void 0 : _a.name;\r\n const nodes = Object.fromEntries(nodeExtensions.map(extension => {\r\n const extensionAttributes = allAttributes.filter(attribute => attribute.type === extension.name);\r\n const context = {\r\n name: extension.name,\r\n options: extension.options,\r\n storage: extension.storage,\r\n editor,\r\n };\r\n const extraNodeFields = extensions.reduce((fields, e) => {\r\n const extendNodeSchema = getExtensionField(e, 'extendNodeSchema', context);\r\n return {\r\n ...fields,\r\n ...(extendNodeSchema ? extendNodeSchema(extension) : {}),\r\n };\r\n }, {});\r\n const schema = cleanUpSchemaItem({\r\n ...extraNodeFields,\r\n content: callOrReturn(getExtensionField(extension, 'content', context)),\r\n marks: callOrReturn(getExtensionField(extension, 'marks', context)),\r\n group: callOrReturn(getExtensionField(extension, 'group', context)),\r\n inline: callOrReturn(getExtensionField(extension, 'inline', context)),\r\n atom: callOrReturn(getExtensionField(extension, 'atom', context)),\r\n selectable: callOrReturn(getExtensionField(extension, 'selectable', context)),\r\n draggable: callOrReturn(getExtensionField(extension, 'draggable', context)),\r\n code: callOrReturn(getExtensionField(extension, 'code', context)),\r\n defining: callOrReturn(getExtensionField(extension, 'defining', context)),\r\n isolating: callOrReturn(getExtensionField(extension, 'isolating', context)),\r\n attrs: Object.fromEntries(extensionAttributes.map(extensionAttribute => {\r\n var _a;\r\n return [extensionAttribute.name, { default: (_a = extensionAttribute === null || extensionAttribute === void 0 ? void 0 : extensionAttribute.attribute) === null || _a === void 0 ? void 0 : _a.default }];\r\n })),\r\n });\r\n const parseHTML = callOrReturn(getExtensionField(extension, 'parseHTML', context));\r\n if (parseHTML) {\r\n schema.parseDOM = parseHTML.map(parseRule => injectExtensionAttributesToParseRule(parseRule, extensionAttributes));\r\n }\r\n const renderHTML = getExtensionField(extension, 'renderHTML', context);\r\n if (renderHTML) {\r\n schema.toDOM = node => renderHTML({\r\n node,\r\n HTMLAttributes: getRenderedAttributes(node, extensionAttributes),\r\n });\r\n }\r\n const renderText = getExtensionField(extension, 'renderText', context);\r\n if (renderText) {\r\n schema.toText = renderText;\r\n }\r\n return [extension.name, schema];\r\n }));\r\n const marks = Object.fromEntries(markExtensions.map(extension => {\r\n const extensionAttributes = allAttributes.filter(attribute => attribute.type === extension.name);\r\n const context = {\r\n name: extension.name,\r\n options: extension.options,\r\n storage: extension.storage,\r\n editor,\r\n };\r\n const extraMarkFields = extensions.reduce((fields, e) => {\r\n const extendMarkSchema = getExtensionField(e, 'extendMarkSchema', context);\r\n return {\r\n ...fields,\r\n ...(extendMarkSchema ? extendMarkSchema(extension) : {}),\r\n };\r\n }, {});\r\n const schema = cleanUpSchemaItem({\r\n ...extraMarkFields,\r\n inclusive: callOrReturn(getExtensionField(extension, 'inclusive', context)),\r\n excludes: callOrReturn(getExtensionField(extension, 'excludes', context)),\r\n group: callOrReturn(getExtensionField(extension, 'group', context)),\r\n spanning: callOrReturn(getExtensionField(extension, 'spanning', context)),\r\n code: callOrReturn(getExtensionField(extension, 'code', context)),\r\n attrs: Object.fromEntries(extensionAttributes.map(extensionAttribute => {\r\n var _a;\r\n return [extensionAttribute.name, { default: (_a = extensionAttribute === null || extensionAttribute === void 0 ? void 0 : extensionAttribute.attribute) === null || _a === void 0 ? void 0 : _a.default }];\r\n })),\r\n });\r\n const parseHTML = callOrReturn(getExtensionField(extension, 'parseHTML', context));\r\n if (parseHTML) {\r\n schema.parseDOM = parseHTML.map(parseRule => injectExtensionAttributesToParseRule(parseRule, extensionAttributes));\r\n }\r\n const renderHTML = getExtensionField(extension, 'renderHTML', context);\r\n if (renderHTML) {\r\n schema.toDOM = mark => renderHTML({\r\n mark,\r\n HTMLAttributes: getRenderedAttributes(mark, extensionAttributes),\r\n });\r\n }\r\n return [extension.name, schema];\r\n }));\r\n return new Schema({\r\n topNode,\r\n nodes,\r\n marks,\r\n });\r\n}\n\n/**\r\n * Tries to get a node or mark type by its name.\r\n * @param name The name of the node or mark type\r\n * @param schema The Prosemiror schema to search in\r\n * @returns The node or mark type, or null if it doesn't exist\r\n */\r\nfunction getSchemaTypeByName(name, schema) {\r\n return schema.nodes[name] || schema.marks[name] || null;\r\n}\n\nfunction isExtensionRulesEnabled(extension, enabled) {\r\n if (Array.isArray(enabled)) {\r\n return enabled.some(enabledExtension => {\r\n const name = typeof enabledExtension === 'string'\r\n ? enabledExtension\r\n : enabledExtension.name;\r\n return name === extension.name;\r\n });\r\n }\r\n return enabled;\r\n}\n\n/**\r\n * Returns the text content of a resolved prosemirror position\r\n * @param $from The resolved position to get the text content from\r\n * @param maxMatch The maximum number of characters to match\r\n * @returns The text content\r\n */\r\nconst getTextContentFromNodes = ($from, maxMatch = 500) => {\r\n let textBefore = '';\r\n const sliceEndPos = $from.parentOffset;\r\n $from.parent.nodesBetween(Math.max(0, sliceEndPos - maxMatch), sliceEndPos, (node, pos, parent, index) => {\r\n var _a, _b;\r\n const chunk = ((_b = (_a = node.type.spec).toText) === null || _b === void 0 ? void 0 : _b.call(_a, {\r\n node,\r\n pos,\r\n parent,\r\n index,\r\n }))\r\n || node.textContent\r\n || '%leaf%';\r\n textBefore += chunk.slice(0, Math.max(0, sliceEndPos - pos));\r\n });\r\n return textBefore;\r\n};\n\nfunction isRegExp(value) {\r\n return Object.prototype.toString.call(value) === '[object RegExp]';\r\n}\n\nclass InputRule {\r\n constructor(config) {\r\n this.find = config.find;\r\n this.handler = config.handler;\r\n }\r\n}\r\nconst inputRuleMatcherHandler = (text, find) => {\r\n if (isRegExp(find)) {\r\n return find.exec(text);\r\n }\r\n const inputRuleMatch = find(text);\r\n if (!inputRuleMatch) {\r\n return null;\r\n }\r\n const result = [inputRuleMatch.text];\r\n result.index = inputRuleMatch.index;\r\n result.input = text;\r\n result.data = inputRuleMatch.data;\r\n if (inputRuleMatch.replaceWith) {\r\n if (!inputRuleMatch.text.includes(inputRuleMatch.replaceWith)) {\r\n console.warn('[tiptap warn]: \"inputRuleMatch.replaceWith\" must be part of \"inputRuleMatch.text\".');\r\n }\r\n result.push(inputRuleMatch.replaceWith);\r\n }\r\n return result;\r\n};\r\nfunction run$1(config) {\r\n var _a;\r\n const { editor, from, to, text, rules, plugin, } = config;\r\n const { view } = editor;\r\n if (view.composing) {\r\n return false;\r\n }\r\n const $from = view.state.doc.resolve(from);\r\n if (\r\n // check for code node\r\n $from.parent.type.spec.code\r\n // check for code mark\r\n || !!((_a = ($from.nodeBefore || $from.nodeAfter)) === null || _a === void 0 ? void 0 : _a.marks.find(mark => mark.type.spec.code))) {\r\n return false;\r\n }\r\n let matched = false;\r\n const textBefore = getTextContentFromNodes($from) + text;\r\n rules.forEach(rule => {\r\n if (matched) {\r\n return;\r\n }\r\n const match = inputRuleMatcherHandler(textBefore, rule.find);\r\n if (!match) {\r\n return;\r\n }\r\n const tr = view.state.tr;\r\n const state = createChainableState({\r\n state: view.state,\r\n transaction: tr,\r\n });\r\n const range = {\r\n from: from - (match[0].length - text.length),\r\n to,\r\n };\r\n const { commands, chain, can } = new CommandManager({\r\n editor,\r\n state,\r\n });\r\n const handler = rule.handler({\r\n state,\r\n range,\r\n match,\r\n commands,\r\n chain,\r\n can,\r\n });\r\n // stop if there are no changes\r\n if (handler === null || !tr.steps.length) {\r\n return;\r\n }\r\n // store transform as meta data\r\n // so we can undo input rules within the `undoInputRules` command\r\n tr.setMeta(plugin, {\r\n transform: tr,\r\n from,\r\n to,\r\n text,\r\n });\r\n view.dispatch(tr);\r\n matched = true;\r\n });\r\n return matched;\r\n}\r\n/**\r\n * Create an input rules plugin. When enabled, it will cause text\r\n * input that matches any of the given rules to trigger the rule’s\r\n * action.\r\n */\r\nfunction inputRulesPlugin(props) {\r\n const { editor, rules } = props;\r\n const plugin = new Plugin({\r\n state: {\r\n init() {\r\n return null;\r\n },\r\n apply(tr, prev) {\r\n const stored = tr.getMeta(plugin);\r\n if (stored) {\r\n return stored;\r\n }\r\n // if InputRule is triggered by insertContent()\r\n const simulatedInputMeta = tr.getMeta('applyInputRules');\r\n const isSimulatedInput = !!simulatedInputMeta;\r\n if (isSimulatedInput) {\r\n setTimeout(() => {\r\n const { from, text } = simulatedInputMeta;\r\n const to = from + text.length;\r\n run$1({\r\n editor,\r\n from,\r\n to,\r\n text,\r\n rules,\r\n plugin,\r\n });\r\n });\r\n }\r\n return tr.selectionSet || tr.docChanged ? null : prev;\r\n },\r\n },\r\n props: {\r\n handleTextInput(view, from, to, text) {\r\n return run$1({\r\n editor,\r\n from,\r\n to,\r\n text,\r\n rules,\r\n plugin,\r\n });\r\n },\r\n handleDOMEvents: {\r\n compositionend: view => {\r\n setTimeout(() => {\r\n const { $cursor } = view.state.selection;\r\n if ($cursor) {\r\n run$1({\r\n editor,\r\n from: $cursor.pos,\r\n to: $cursor.pos,\r\n text: '',\r\n rules,\r\n plugin,\r\n });\r\n }\r\n });\r\n return false;\r\n },\r\n },\r\n // add support for input rules to trigger on enter\r\n // this is useful for example for code blocks\r\n handleKeyDown(view, event) {\r\n if (event.key !== 'Enter') {\r\n return false;\r\n }\r\n const { $cursor } = view.state.selection;\r\n if ($cursor) {\r\n return run$1({\r\n editor,\r\n from: $cursor.pos,\r\n to: $cursor.pos,\r\n text: '\\n',\r\n rules,\r\n plugin,\r\n });\r\n }\r\n return false;\r\n },\r\n },\r\n // @ts-ignore\r\n isInputRules: true,\r\n });\r\n return plugin;\r\n}\n\nfunction isNumber(value) {\r\n return typeof value === 'number';\r\n}\n\n/**\r\n * Paste rules are used to react to pasted content.\r\n * @see https://tiptap.dev/guide/custom-extensions/#paste-rules\r\n */\r\nclass PasteRule {\r\n constructor(config) {\r\n this.find = config.find;\r\n this.handler = config.handler;\r\n }\r\n}\r\nconst pasteRuleMatcherHandler = (text, find, event) => {\r\n if (isRegExp(find)) {\r\n return [...text.matchAll(find)];\r\n }\r\n const matches = find(text, event);\r\n if (!matches) {\r\n return [];\r\n }\r\n return matches.map(pasteRuleMatch => {\r\n const result = [pasteRuleMatch.text];\r\n result.index = pasteRuleMatch.index;\r\n result.input = text;\r\n result.data = pasteRuleMatch.data;\r\n if (pasteRuleMatch.replaceWith) {\r\n if (!pasteRuleMatch.text.includes(pasteRuleMatch.replaceWith)) {\r\n console.warn('[tiptap warn]: \"pasteRuleMatch.replaceWith\" must be part of \"pasteRuleMatch.text\".');\r\n }\r\n result.push(pasteRuleMatch.replaceWith);\r\n }\r\n return result;\r\n });\r\n};\r\nfunction run(config) {\r\n const { editor, state, from, to, rule, pasteEvent, dropEvent, } = config;\r\n const { commands, chain, can } = new CommandManager({\r\n editor,\r\n state,\r\n });\r\n const handlers = [];\r\n state.doc.nodesBetween(from, to, (node, pos) => {\r\n if (!node.isTextblock || node.type.spec.code) {\r\n return;\r\n }\r\n const resolvedFrom = Math.max(from, pos);\r\n const resolvedTo = Math.min(to, pos + node.content.size);\r\n const textToMatch = node.textBetween(resolvedFrom - pos, resolvedTo - pos, undefined, '\\ufffc');\r\n const matches = pasteRuleMatcherHandler(textToMatch, rule.find, pasteEvent);\r\n matches.forEach(match => {\r\n if (match.index === undefined) {\r\n return;\r\n }\r\n const start = resolvedFrom + match.index + 1;\r\n const end = start + match[0].length;\r\n const range = {\r\n from: state.tr.mapping.map(start),\r\n to: state.tr.mapping.map(end),\r\n };\r\n const handler = rule.handler({\r\n state,\r\n range,\r\n match,\r\n commands,\r\n chain,\r\n can,\r\n pasteEvent,\r\n dropEvent,\r\n });\r\n handlers.push(handler);\r\n });\r\n });\r\n const success = handlers.every(handler => handler !== null);\r\n return success;\r\n}\r\nconst createClipboardPasteEvent = (text) => {\r\n var _a;\r\n const event = new ClipboardEvent('paste', {\r\n clipboardData: new DataTransfer(),\r\n });\r\n (_a = event.clipboardData) === null || _a === void 0 ? void 0 : _a.setData('text/html', text);\r\n return event;\r\n};\r\n/**\r\n * Create an paste rules plugin. When enabled, it will cause pasted\r\n * text that matches any of the given rules to trigger the rule’s\r\n * action.\r\n */\r\nfunction pasteRulesPlugin(props) {\r\n const { editor, rules } = props;\r\n let dragSourceElement = null;\r\n let isPastedFromProseMirror = false;\r\n let isDroppedFromProseMirror = false;\r\n let pasteEvent = typeof ClipboardEvent !== 'undefined' ? new ClipboardEvent('paste') : null;\r\n let dropEvent = typeof DragEvent !== 'undefined' ? new DragEvent('drop') : null;\r\n const processEvent = ({ state, from, to, rule, pasteEvt, }) => {\r\n const tr = state.tr;\r\n const chainableState = createChainableState({\r\n state,\r\n transaction: tr,\r\n });\r\n const handler = run({\r\n editor,\r\n state: chainableState,\r\n from: Math.max(from - 1, 0),\r\n to: to.b - 1,\r\n rule,\r\n pasteEvent: pasteEvt,\r\n dropEvent,\r\n });\r\n if (!handler || !tr.steps.length) {\r\n return;\r\n }\r\n dropEvent = typeof DragEvent !== 'undefined' ? new DragEvent('drop') : null;\r\n pasteEvent = typeof ClipboardEvent !== 'undefined' ? new ClipboardEvent('paste') : null;\r\n return tr;\r\n };\r\n const plugins = rules.map(rule => {\r\n return new Plugin({\r\n // we register a global drag handler to track the current drag source element\r\n view(view) {\r\n const handleDragstart = (event) => {\r\n var _a;\r\n dragSourceElement = ((_a = view.dom.parentElement) === null || _a === void 0 ? void 0 : _a.contains(event.target))\r\n ? view.dom.parentElement\r\n : null;\r\n };\r\n window.addEventListener('dragstart', handleDragstart);\r\n return {\r\n destroy() {\r\n window.removeEventListener('dragstart', handleDragstart);\r\n },\r\n };\r\n },\r\n props: {\r\n handleDOMEvents: {\r\n drop: (view, event) => {\r\n isDroppedFromProseMirror = dragSourceElement === view.dom.parentElement;\r\n dropEvent = event;\r\n return false;\r\n },\r\n paste: (_view, event) => {\r\n var _a;\r\n const html = (_a = event.clipboardData) === null || _a === void 0 ? void 0 : _a.getData('text/html');\r\n pasteEvent = event;\r\n isPastedFromProseMirror = !!(html === null || html === void 0 ? void 0 : html.includes('data-pm-slice'));\r\n return false;\r\n },\r\n },\r\n },\r\n appendTransaction: (transactions, oldState, state) => {\r\n const transaction = transactions[0];\r\n const isPaste = transaction.getMeta('uiEvent') === 'paste' && !isPastedFromProseMirror;\r\n const isDrop = transaction.getMeta('uiEvent') === 'drop' && !isDroppedFromProseMirror;\r\n // if PasteRule is triggered by insertContent()\r\n const simulatedPasteMeta = transaction.getMeta('applyPasteRules');\r\n const isSimulatedPaste = !!simulatedPasteMeta;\r\n if (!isPaste && !isDrop && !isSimulatedPaste) {\r\n return;\r\n }\r\n // Handle simulated paste\r\n if (isSimulatedPaste) {\r\n const { from, text } = simulatedPasteMeta;\r\n const to = from + text.length;\r\n const pasteEvt = createClipboardPasteEvent(text);\r\n return processEvent({\r\n rule,\r\n state,\r\n from,\r\n to: { b: to },\r\n pasteEvt,\r\n });\r\n }\r\n // handle actual paste/drop\r\n const from = oldState.doc.content.findDiffStart(state.doc.content);\r\n const to = oldState.doc.content.findDiffEnd(state.doc.content);\r\n // stop if there is no changed range\r\n if (!isNumber(from) || !to || from === to.b) {\r\n return;\r\n }\r\n return processEvent({\r\n rule,\r\n state,\r\n from,\r\n to,\r\n pasteEvt: pasteEvent,\r\n });\r\n },\r\n });\r\n });\r\n return plugins;\r\n}\n\nfunction findDuplicates(items) {\r\n const filtered = items.filter((el, index) => items.indexOf(el) !== index);\r\n return [...new Set(filtered)];\r\n}\n\nclass ExtensionManager {\r\n constructor(extensions, editor) {\r\n this.splittableMarks = [];\r\n this.editor = editor;\r\n this.extensions = ExtensionManager.resolve(extensions);\r\n this.schema = getSchemaByResolvedExtensions(this.extensions, editor);\r\n this.setupExtensions();\r\n }\r\n /**\r\n * Returns a flattened and sorted extension list while\r\n * also checking for duplicated extensions and warns the user.\r\n * @param extensions An array of Tiptap extensions\r\n * @returns An flattened and sorted array of Tiptap extensions\r\n */\r\n static resolve(extensions) {\r\n const resolvedExtensions = ExtensionManager.sort(ExtensionManager.flatten(extensions));\r\n const duplicatedNames = findDuplicates(resolvedExtensions.map(extension => extension.name));\r\n if (duplicatedNames.length) {\r\n console.warn(`[tiptap warn]: Duplicate extension names found: [${duplicatedNames\r\n .map(item => `'${item}'`)\r\n .join(', ')}]. This can lead to issues.`);\r\n }\r\n return resolvedExtensions;\r\n }\r\n /**\r\n * Create a flattened array of extensions by traversing the `addExtensions` field.\r\n * @param extensions An array of Tiptap extensions\r\n * @returns A flattened array of Tiptap extensions\r\n */\r\n static flatten(extensions) {\r\n return (extensions\r\n .map(extension => {\r\n const context = {\r\n name: extension.name,\r\n options: extension.options,\r\n storage: extension.storage,\r\n };\r\n const addExtensions = getExtensionField(extension, 'addExtensions', context);\r\n if (addExtensions) {\r\n return [extension, ...this.flatten(addExtensions())];\r\n }\r\n return extension;\r\n })\r\n // `Infinity` will break TypeScript so we set a number that is probably high enough\r\n .flat(10));\r\n }\r\n /**\r\n * Sort extensions by priority.\r\n * @param extensions An array of Tiptap extensions\r\n * @returns A sorted array of Tiptap extensions by priority\r\n */\r\n static sort(extensions) {\r\n const defaultPriority = 100;\r\n return extensions.sort((a, b) => {\r\n const priorityA = getExtensionField(a, 'priority') || defaultPriority;\r\n const priorityB = getExtensionField(b, 'priority') || defaultPriority;\r\n if (priorityA > priorityB) {\r\n return -1;\r\n }\r\n if (priorityA < priorityB) {\r\n return 1;\r\n }\r\n return 0;\r\n });\r\n }\r\n /**\r\n * Get all commands from the extensions.\r\n * @returns An object with all commands where the key is the command name and the value is the command function\r\n */\r\n get commands() {\r\n return this.extensions.reduce((commands, extension) => {\r\n const context = {\r\n name: extension.name,\r\n options: extension.options,\r\n storage: extension.storage,\r\n editor: this.editor,\r\n type: getSchemaTypeByName(extension.name, this.schema),\r\n };\r\n const addCommands = getExtensionField(extension, 'addCommands', context);\r\n if (!addCommands) {\r\n return commands;\r\n }\r\n return {\r\n ...commands,\r\n ...addCommands(),\r\n };\r\n }, {});\r\n }\r\n /**\r\n * Get all registered Prosemirror plugins from the extensions.\r\n * @returns An array of Prosemirror plugins\r\n */\r\n get plugins() {\r\n const { editor } = this;\r\n // With ProseMirror, first plugins within an array are executed first.\r\n // In Tiptap, we provide the ability to override plugins,\r\n // so it feels more natural to run plugins at the end of an array first.\r\n // That’s why we have to reverse the `extensions` array and sort again\r\n // based on the `priority` option.\r\n const extensions = ExtensionManager.sort([...this.extensions].reverse());\r\n const inputRules = [];\r\n const pasteRules = [];\r\n const allPlugins = extensions\r\n .map(extension => {\r\n const context = {\r\n name: extension.name,\r\n options: extension.options,\r\n storage: extension.storage,\r\n editor,\r\n type: getSchemaTypeByName(extension.name, this.schema),\r\n };\r\n const plugins = [];\r\n const addKeyboardShortcuts = getExtensionField(extension, 'addKeyboardShortcuts', context);\r\n let defaultBindings = {};\r\n // bind exit handling\r\n if (extension.type === 'mark' && extension.config.exitable) {\r\n defaultBindings.ArrowRight = () => Mark.handleExit({ editor, mark: extension });\r\n }\r\n if (addKeyboardShortcuts) {\r\n const bindings = Object.fromEntries(Object.entries(addKeyboardShortcuts()).map(([shortcut, method]) => {\r\n return [shortcut, () => method({ editor })];\r\n }));\r\n defaultBindings = { ...defaultBindings, ...bindings };\r\n }\r\n const keyMapPlugin = keymap(defaultBindings);\r\n plugins.push(keyMapPlugin);\r\n const addInputRules = getExtensionField(extension, 'addInputRules', context);\r\n if (isExtensionRulesEnabled(extension, editor.options.enableInputRules) && addInputRules) {\r\n inputRules.push(...addInputRules());\r\n }\r\n const addPasteRules = getExtensionField(extension, 'addPasteRules', context);\r\n if (isExtensionRulesEnabled(extension, editor.options.enablePasteRules) && addPasteRules) {\r\n pasteRules.push(...addPasteRules());\r\n }\r\n const addProseMirrorPlugins = getExtensionField(extension, 'addProseMirrorPlugins', context);\r\n if (addProseMirrorPlugins) {\r\n const proseMirrorPlugins = addProseMirrorPlugins();\r\n plugins.push(...proseMirrorPlugins);\r\n }\r\n return plugins;\r\n })\r\n .flat();\r\n return [\r\n inputRulesPlugin({\r\n editor,\r\n rules: inputRules,\r\n }),\r\n ...pasteRulesPlugin({\r\n editor,\r\n rules: pasteRules,\r\n }),\r\n ...allPlugins,\r\n ];\r\n }\r\n /**\r\n * Get all attributes from the extensions.\r\n * @returns An array of attributes\r\n */\r\n get attributes() {\r\n return getAttributesFromExtensions(this.extensions);\r\n }\r\n /**\r\n * Get all node views from the extensions.\r\n * @returns An object with all node views where the key is the node name and the value is the node view function\r\n */\r\n get nodeViews() {\r\n const { editor } = this;\r\n const { nodeExtensions } = splitExtensions(this.extensions);\r\n return Object.fromEntries(nodeExtensions\r\n .filter(extension => !!getExtensionField(extension, 'addNodeView'))\r\n .map(extension => {\r\n const extensionAttributes = this.attributes.filter(attribute => attribute.type === extension.name);\r\n const context = {\r\n name: extension.name,\r\n options: extension.options,\r\n storage: extension.storage,\r\n editor,\r\n type: getNodeType(extension.name, this.schema),\r\n };\r\n const addNodeView = getExtensionField(extension, 'addNodeView', context);\r\n if (!addNodeView) {\r\n return [];\r\n }\r\n const nodeview = (node, view, getPos, decorations) => {\r\n const HTMLAttributes = getRenderedAttributes(node, extensionAttributes);\r\n return addNodeView()({\r\n editor,\r\n node,\r\n getPos,\r\n decorations,\r\n HTMLAttributes,\r\n extension,\r\n });\r\n };\r\n return [extension.name, nodeview];\r\n }));\r\n }\r\n /**\r\n * Go through all extensions, create extension storages & setup marks\r\n * & bind editor event listener.\r\n */\r\n setupExtensions() {\r\n this.extensions.forEach(extension => {\r\n var _a;\r\n // store extension storage in editor\r\n this.editor.extensionStorage[extension.name] = extension.storage;\r\n const context = {\r\n name: extension.name,\r\n options: extension.options,\r\n storage: extension.storage,\r\n editor: this.editor,\r\n type: getSchemaTypeByName(extension.name, this.schema),\r\n };\r\n if (extension.type === 'mark') {\r\n const keepOnSplit = (_a = callOrReturn(getExtensionField(extension, 'keepOnSplit', context))) !== null && _a !== void 0 ? _a : true;\r\n if (keepOnSplit) {\r\n this.splittableMarks.push(extension.name);\r\n }\r\n }\r\n const onBeforeCreate = getExtensionField(extension, 'onBeforeCreate', context);\r\n const onCreate = getExtensionField(extension, 'onCreate', context);\r\n const onUpdate = getExtensionField(extension, 'onUpdate', context);\r\n const onSelectionUpdate = getExtensionField(extension, 'onSelectionUpdate', context);\r\n const onTransaction = getExtensionField(extension, 'onTransaction', context);\r\n const onFocus = getExtensionField(extension, 'onFocus', context);\r\n const onBlur = getExtensionField(extension, 'onBlur', context);\r\n const onDestroy = getExtensionField(extension, 'onDestroy', context);\r\n if (onBeforeCreate) {\r\n this.editor.on('beforeCreate', onBeforeCreate);\r\n }\r\n if (onCreate) {\r\n this.editor.on('create', onCreate);\r\n }\r\n if (onUpdate) {\r\n this.editor.on('update', onUpdate);\r\n }\r\n if (onSelectionUpdate) {\r\n this.editor.on('selectionUpdate', onSelectionUpdate);\r\n }\r\n if (onTransaction) {\r\n this.editor.on('transaction', onTransaction);\r\n }\r\n if (onFocus) {\r\n this.editor.on('focus', onFocus);\r\n }\r\n if (onBlur) {\r\n this.editor.on('blur', onBlur);\r\n }\r\n if (onDestroy) {\r\n this.editor.on('destroy', onDestroy);\r\n }\r\n });\r\n }\r\n}\n\n// see: https://github.com/mesqueeb/is-what/blob/88d6e4ca92fb2baab6003c54e02eedf4e729e5ab/src/index.ts\r\nfunction getType(value) {\r\n return Object.prototype.toString.call(value).slice(8, -1);\r\n}\r\nfunction isPlainObject(value) {\r\n if (getType(value) !== 'Object') {\r\n return false;\r\n }\r\n return value.constructor === Object && Object.getPrototypeOf(value) === Object.prototype;\r\n}\n\nfunction mergeDeep(target, source) {\r\n const output = { ...target };\r\n if (isPlainObject(target) && isPlainObject(source)) {\r\n Object.keys(source).forEach(key => {\r\n if (isPlainObject(source[key])) {\r\n if (!(key in target)) {\r\n Object.assign(output, { [key]: source[key] });\r\n }\r\n else {\r\n output[key] = mergeDeep(target[key], source[key]);\r\n }\r\n }\r\n else {\r\n Object.assign(output, { [key]: source[key] });\r\n }\r\n });\r\n }\r\n return output;\r\n}\n\n/**\r\n * The Extension class is the base class for all extensions.\r\n * @see https://tiptap.dev/api/extensions#create-a-new-extension\r\n */\r\nclass Extension {\r\n constructor(config = {}) {\r\n this.type = 'extension';\r\n this.name = 'extension';\r\n this.parent = null;\r\n this.child = null;\r\n this.config = {\r\n name: this.name,\r\n defaultOptions: {},\r\n };\r\n this.config = {\r\n ...this.config,\r\n ...config,\r\n };\r\n this.name = this.config.name;\r\n if (config.defaultOptions && Object.keys(config.defaultOptions).length > 0) {\r\n console.warn(`[tiptap warn]: BREAKING CHANGE: \"defaultOptions\" is deprecated. Please use \"addOptions\" instead. Found in extension: \"${this.name}\".`);\r\n }\r\n // TODO: remove `addOptions` fallback\r\n this.options = this.config.defaultOptions;\r\n if (this.config.addOptions) {\r\n this.options = callOrReturn(getExtensionField(this, 'addOptions', {\r\n name: this.name,\r\n }));\r\n }\r\n this.storage = callOrReturn(getExtensionField(this, 'addStorage', {\r\n name: this.name,\r\n options: this.options,\r\n })) || {};\r\n }\r\n static create(config = {}) {\r\n return new Extension(config);\r\n }\r\n configure(options = {}) {\r\n // return a new instance so we can use the same extension\r\n // with different calls of `configure`\r\n const extension = this.extend();\r\n extension.parent = this.parent;\r\n extension.options = mergeDeep(this.options, options);\r\n extension.storage = callOrReturn(getExtensionField(extension, 'addStorage', {\r\n name: extension.name,\r\n options: extension.options,\r\n }));\r\n return extension;\r\n }\r\n extend(extendedConfig = {}) {\r\n const extension = new Extension({ ...this.config, ...extendedConfig });\r\n extension.parent = this;\r\n this.child = extension;\r\n extension.name = extendedConfig.name ? extendedConfig.name : extension.parent.name;\r\n if (extendedConfig.defaultOptions) {\r\n console.warn(`[tiptap warn]: BREAKING CHANGE: \"defaultOptions\" is deprecated. Please use \"addOptions\" instead. Found in extension: \"${extension.name}\".`);\r\n }\r\n extension.options = callOrReturn(getExtensionField(extension, 'addOptions', {\r\n name: extension.name,\r\n }));\r\n extension.storage = callOrReturn(getExtensionField(extension, 'addStorage', {\r\n name: extension.name,\r\n options: extension.options,\r\n }));\r\n return extension;\r\n }\r\n}\n\n/**\r\n * Gets the text between two positions in a Prosemirror node\r\n * and serializes it using the given text serializers and block separator (see getText)\r\n * @param startNode The Prosemirror node to start from\r\n * @param range The range of the text to get\r\n * @param options Options for the text serializer & block separator\r\n * @returns The text between the two positions\r\n */\r\nfunction getTextBetween(startNode, range, options) {\r\n const { from, to } = range;\r\n const { blockSeparator = '\\n\\n', textSerializers = {} } = options || {};\r\n let text = '';\r\n startNode.nodesBetween(from, to, (node, pos, parent, index) => {\r\n var _a;\r\n if (node.isBlock && pos > from) {\r\n text += blockSeparator;\r\n }\r\n const textSerializer = textSerializers === null || textSerializers === void 0 ? void 0 : textSerializers[node.type.name];\r\n if (textSerializer) {\r\n if (parent) {\r\n text += textSerializer({\r\n node,\r\n pos,\r\n parent,\r\n index,\r\n range,\r\n });\r\n }\r\n // do not descend into child nodes when there exists a serializer\r\n return false;\r\n }\r\n if (node.isText) {\r\n text += (_a = node === null || node === void 0 ? void 0 : node.text) === null || _a === void 0 ? void 0 : _a.slice(Math.max(from, pos) - pos, to - pos); // eslint-disable-line\r\n }\r\n });\r\n return text;\r\n}\n\n/**\r\n * Find text serializers `toText` in a Prosemirror schema\r\n * @param schema The Prosemirror schema to search in\r\n * @returns A record of text serializers by node name\r\n */\r\nfunction getTextSerializersFromSchema(schema) {\r\n return Object.fromEntries(Object.entries(schema.nodes)\r\n .filter(([, node]) => node.spec.toText)\r\n .map(([name, node]) => [name, node.spec.toText]));\r\n}\n\nconst ClipboardTextSerializer = Extension.create({\r\n name: 'clipboardTextSerializer',\r\n addOptions() {\r\n return {\r\n blockSeparator: undefined,\r\n };\r\n },\r\n addProseMirrorPlugins() {\r\n return [\r\n new Plugin({\r\n key: new PluginKey('clipboardTextSerializer'),\r\n props: {\r\n clipboardTextSerializer: () => {\r\n const { editor } = this;\r\n const { state, schema } = editor;\r\n const { doc, selection } = state;\r\n const { ranges } = selection;\r\n const from = Math.min(...ranges.map(range => range.$from.pos));\r\n const to = Math.max(...ranges.map(range => range.$to.pos));\r\n const textSerializers = getTextSerializersFromSchema(schema);\r\n const range = { from, to };\r\n return getTextBetween(doc, range, {\r\n ...(this.options.blockSeparator !== undefined\r\n ? { blockSeparator: this.options.blockSeparator }\r\n : {}),\r\n textSerializers,\r\n });\r\n },\r\n },\r\n }),\r\n ];\r\n },\r\n});\n\nconst blur = () => ({ editor, view }) => {\r\n requestAnimationFrame(() => {\r\n var _a;\r\n if (!editor.isDestroyed) {\r\n view.dom.blur();\r\n // Browsers should remove the caret on blur but safari does not.\r\n // See: https://github.com/ueberdosis/tiptap/issues/2405\r\n (_a = window === null || window === void 0 ? void 0 : window.getSelection()) === null || _a === void 0 ? void 0 : _a.removeAllRanges();\r\n }\r\n });\r\n return true;\r\n};\n\nconst clearContent = (emitUpdate = false) => ({ commands }) => {\r\n return commands.setContent('', emitUpdate);\r\n};\n\nconst clearNodes = () => ({ state, tr, dispatch }) => {\r\n const { selection } = tr;\r\n const { ranges } = selection;\r\n if (!dispatch) {\r\n return true;\r\n }\r\n ranges.forEach(({ $from, $to }) => {\r\n state.doc.nodesBetween($from.pos, $to.pos, (node, pos) => {\r\n if (node.type.isText) {\r\n return;\r\n }\r\n const { doc, mapping } = tr;\r\n const $mappedFrom = doc.resolve(mapping.map(pos));\r\n const $mappedTo = doc.resolve(mapping.map(pos + node.nodeSize));\r\n const nodeRange = $mappedFrom.blockRange($mappedTo);\r\n if (!nodeRange) {\r\n return;\r\n }\r\n const targetLiftDepth = liftTarget(nodeRange);\r\n if (node.type.isTextblock) {\r\n const { defaultType } = $mappedFrom.parent.contentMatchAt($mappedFrom.index());\r\n tr.setNodeMarkup(nodeRange.start, defaultType);\r\n }\r\n if (targetLiftDepth || targetLiftDepth === 0) {\r\n tr.lift(nodeRange, targetLiftDepth);\r\n }\r\n });\r\n });\r\n return true;\r\n};\n\nconst command = fn => props => {\r\n return fn(props);\r\n};\n\nconst createParagraphNear = () => ({ state, dispatch }) => {\r\n return createParagraphNear$1(state, dispatch);\r\n};\n\nconst cut = (originRange, targetPos) => ({ editor, tr }) => {\r\n const { state } = editor;\r\n const contentSlice = state.doc.slice(originRange.from, originRange.to);\r\n tr.deleteRange(originRange.from, originRange.to);\r\n const newPos = tr.mapping.map(targetPos);\r\n tr.insert(newPos, contentSlice.content);\r\n tr.setSelection(new TextSelection(tr.doc.resolve(newPos - 1)));\r\n return true;\r\n};\n\nconst deleteCurrentNode = () => ({ tr, dispatch }) => {\r\n const { selection } = tr;\r\n const currentNode = selection.$anchor.node();\r\n // if there is content inside the current node, break out of this command\r\n if (currentNode.content.size > 0) {\r\n return false;\r\n }\r\n const $pos = tr.selection.$anchor;\r\n for (let depth = $pos.depth; depth > 0; depth -= 1) {\r\n const node = $pos.node(depth);\r\n if (node.type === currentNode.type) {\r\n if (dispatch) {\r\n const from = $pos.before(depth);\r\n const to = $pos.after(depth);\r\n tr.delete(from, to).scrollIntoView();\r\n }\r\n return true;\r\n }\r\n }\r\n return false;\r\n};\n\nconst deleteNode = typeOrName => ({ tr, state, dispatch }) => {\r\n const type = getNodeType(typeOrName, state.schema);\r\n const $pos = tr.selection.$anchor;\r\n for (let depth = $pos.depth; depth > 0; depth -= 1) {\r\n const node = $pos.node(depth);\r\n if (node.type === type) {\r\n if (dispatch) {\r\n const from = $pos.before(depth);\r\n const to = $pos.after(depth);\r\n tr.delete(from, to).scrollIntoView();\r\n }\r\n return true;\r\n }\r\n }\r\n return false;\r\n};\n\nconst deleteRange = range => ({ tr, dispatch }) => {\r\n const { from, to } = range;\r\n if (dispatch) {\r\n tr.delete(from, to);\r\n }\r\n return true;\r\n};\n\nconst deleteSelection = () => ({ state, dispatch }) => {\r\n return deleteSelection$1(state, dispatch);\r\n};\n\nconst enter = () => ({ commands }) => {\r\n return commands.keyboardShortcut('Enter');\r\n};\n\nconst exitCode = () => ({ state, dispatch }) => {\r\n return exitCode$1(state, dispatch);\r\n};\n\n/**\r\n * Check if object1 includes object2\r\n * @param object1 Object\r\n * @param object2 Object\r\n */\r\nfunction objectIncludes(object1, object2, options = { strict: true }) {\r\n const keys = Object.keys(object2);\r\n if (!keys.length) {\r\n return true;\r\n }\r\n return keys.every(key => {\r\n if (options.strict) {\r\n return object2[key] === object1[key];\r\n }\r\n if (isRegExp(object2[key])) {\r\n return object2[key].test(object1[key]);\r\n }\r\n return object2[key] === object1[key];\r\n });\r\n}\n\nfunction findMarkInSet(marks, type, attributes = {}) {\r\n return marks.find(item => {\r\n return item.type === type && objectIncludes(item.attrs, attributes);\r\n });\r\n}\r\nfunction isMarkInSet(marks, type, attributes = {}) {\r\n return !!findMarkInSet(marks, type, attributes);\r\n}\r\nfunction getMarkRange($pos, type, attributes = {}) {\r\n if (!$pos || !type) {\r\n return;\r\n }\r\n let start = $pos.parent.childAfter($pos.parentOffset);\r\n if ($pos.parentOffset === start.offset && start.offset !== 0) {\r\n start = $pos.parent.childBefore($pos.parentOffset);\r\n }\r\n if (!start.node) {\r\n return;\r\n }\r\n const mark = findMarkInSet([...start.node.marks], type, attributes);\r\n if (!mark) {\r\n return;\r\n }\r\n let startIndex = start.index;\r\n let startPos = $pos.start() + start.offset;\r\n let endIndex = startIndex + 1;\r\n let endPos = startPos + start.node.nodeSize;\r\n findMarkInSet([...start.node.marks], type, attributes);\r\n while (startIndex > 0 && mark.isInSet($pos.parent.child(startIndex - 1).marks)) {\r\n startIndex -= 1;\r\n startPos -= $pos.parent.child(startIndex).nodeSize;\r\n }\r\n while (endIndex < $pos.parent.childCount\r\n && isMarkInSet([...$pos.parent.child(endIndex).marks], type, attributes)) {\r\n endPos += $pos.parent.child(endIndex).nodeSize;\r\n endIndex += 1;\r\n }\r\n return {\r\n from: startPos,\r\n to: endPos,\r\n };\r\n}\n\nfunction getMarkType(nameOrType, schema) {\r\n if (typeof nameOrType === 'string') {\r\n if (!schema.marks[nameOrType]) {\r\n throw Error(`There is no mark type named '${nameOrType}'. Maybe you forgot to add the extension?`);\r\n }\r\n return schema.marks[nameOrType];\r\n }\r\n return nameOrType;\r\n}\n\nconst extendMarkRange = (typeOrName, attributes = {}) => ({ tr, state, dispatch }) => {\r\n const type = getMarkType(typeOrName, state.schema);\r\n const { doc, selection } = tr;\r\n const { $from, from, to } = selection;\r\n if (dispatch) {\r\n const range = getMarkRange($from, type, attributes);\r\n if (range && range.from <= from && range.to >= to) {\r\n const newSelection = TextSelection.create(doc, range.from, range.to);\r\n tr.setSelection(newSelection);\r\n }\r\n }\r\n return true;\r\n};\n\nconst first = commands => props => {\r\n const items = typeof commands === 'function'\r\n ? commands(props)\r\n : commands;\r\n for (let i = 0; i < items.length; i += 1) {\r\n if (items[i](props)) {\r\n return true;\r\n }\r\n }\r\n return false;\r\n};\n\nfunction isTextSelection(value) {\r\n return value instanceof TextSelection;\r\n}\n\nfunction minMax(value = 0, min = 0, max = 0) {\r\n return Math.min(Math.max(value, min), max);\r\n}\n\nfunction resolveFocusPosition(doc, position = null) {\r\n if (!position) {\r\n return null;\r\n }\r\n const selectionAtStart = Selection.atStart(doc);\r\n const selectionAtEnd = Selection.atEnd(doc);\r\n if (position === 'start' || position === true) {\r\n return selectionAtStart;\r\n }\r\n if (position === 'end') {\r\n return selectionAtEnd;\r\n }\r\n const minPos = selectionAtStart.from;\r\n const maxPos = selectionAtEnd.to;\r\n if (position === 'all') {\r\n return TextSelection.create(doc, minMax(0, minPos, maxPos), minMax(doc.content.size, minPos, maxPos));\r\n }\r\n return TextSelection.create(doc, minMax(position, minPos, maxPos), minMax(position, minPos, maxPos));\r\n}\n\nfunction isiOS() {\r\n return [\r\n 'iPad Simulator',\r\n 'iPhone Simulator',\r\n 'iPod Simulator',\r\n 'iPad',\r\n 'iPhone',\r\n 'iPod',\r\n ].includes(navigator.platform)\r\n // iPad on iOS 13 detection\r\n || (navigator.userAgent.includes('Mac') && 'ontouchend' in document);\r\n}\n\nconst focus = (position = null, options = {}) => ({ editor, view, tr, dispatch, }) => {\r\n options = {\r\n scrollIntoView: true,\r\n ...options,\r\n };\r\n const delayedFocus = () => {\r\n // focus within `requestAnimationFrame` breaks focus on iOS\r\n // so we have to call this\r\n if (isiOS()) {\r\n view.dom.focus();\r\n }\r\n // For React we have to focus asynchronously. Otherwise wild things happen.\r\n // see: https://github.com/ueberdosis/tiptap/issues/1520\r\n requestAnimationFrame(() => {\r\n if (!editor.isDestroyed) {\r\n view.focus();\r\n if (options === null || options === void 0 ? void 0 : options.scrollIntoView) {\r\n editor.commands.scrollIntoView();\r\n }\r\n }\r\n });\r\n };\r\n if ((view.hasFocus() && position === null) || position === false) {\r\n return true;\r\n }\r\n // we don’t try to resolve a NodeSelection or CellSelection\r\n if (dispatch && position === null && !isTextSelection(editor.state.selection)) {\r\n delayedFocus();\r\n return true;\r\n }\r\n // pass through tr.doc instead of editor.state.doc\r\n // since transactions could change the editors state before this command has been run\r\n const selection = resolveFocusPosition(tr.doc, position) || editor.state.selection;\r\n const isSameSelection = editor.state.selection.eq(selection);\r\n if (dispatch) {\r\n if (!isSameSelection) {\r\n tr.setSelection(selection);\r\n }\r\n // `tr.setSelection` resets the stored marks\r\n // so we’ll restore them if the selection is the same as before\r\n if (isSameSelection && tr.storedMarks) {\r\n tr.setStoredMarks(tr.storedMarks);\r\n }\r\n delayedFocus();\r\n }\r\n return true;\r\n};\n\nconst forEach = (items, fn) => props => {\r\n return items.every((item, index) => fn(item, { ...props, index }));\r\n};\n\nconst insertContent = (value, options) => ({ tr, commands }) => {\r\n return commands.insertContentAt({ from: tr.selection.from, to: tr.selection.to }, value, options);\r\n};\n\nconst removeWhitespaces = (node) => {\r\n const children = node.childNodes;\r\n for (let i = children.length - 1; i >= 0; i -= 1) {\r\n const child = children[i];\r\n if (child.nodeType === 3 && child.nodeValue && /^(\\n\\s\\s|\\n)$/.test(child.nodeValue)) {\r\n node.removeChild(child);\r\n }\r\n else if (child.nodeType === 1) {\r\n removeWhitespaces(child);\r\n }\r\n }\r\n return node;\r\n};\r\nfunction elementFromString(value) {\r\n // add a wrapper to preserve leading and trailing whitespace\r\n const wrappedValue = `<body>${value}</body>`;\r\n const html = new window.DOMParser().parseFromString(wrappedValue, 'text/html').body;\r\n return removeWhitespaces(html);\r\n}\n\n/**\r\n * Takes a JSON or HTML content and creates a Prosemirror node or fragment from it.\r\n * @param content The JSON or HTML content to create the node from\r\n * @param schema The Prosemirror schema to use for the node\r\n * @param options Options for the parser\r\n * @returns The created Prosemirror node or fragment\r\n */\r\nfunction createNodeFromContent(content, schema, options) {\r\n options = {\r\n slice: true,\r\n parseOptions: {},\r\n ...options,\r\n };\r\n const isJSONContent = typeof content === 'object' && content !== null;\r\n const isTextContent = typeof content === 'string';\r\n if (isJSONContent) {\r\n try {\r\n const isArrayContent = Array.isArray(content) && content.length > 0;\r\n // if the JSON Content is an array of nodes, create a fragment for each node\r\n if (isArrayContent) {\r\n return Fragment.fromArray(content.map(item => schema.nodeFromJSON(item)));\r\n }\r\n return schema.nodeFromJSON(content);\r\n }\r\n catch (error) {\r\n console.warn('[tiptap warn]: Invalid content.', 'Passed value:', content, 'Error:', error);\r\n return createNodeFromContent('', schema, options);\r\n }\r\n }\r\n if (isTextContent) {\r\n const parser = DOMParser.fromSchema(schema);\r\n return options.slice\r\n ? parser.parseSlice(elementFromString(content), options.parseOptions).content\r\n : parser.parse(elementFromString(content), options.parseOptions);\r\n }\r\n return createNodeFromContent('', schema, options);\r\n}\n\n// source: https://github.com/ProseMirror/prosemirror-state/blob/master/src/selection.js#L466\r\nfunction selectionToInsertionEnd(tr, startLen, bias) {\r\n const last = tr.steps.length - 1;\r\n if (last < startLen) {\r\n return;\r\n }\r\n const step = tr.steps[last];\r\n if (!(step instanceof ReplaceStep || step instanceof ReplaceAroundStep)) {\r\n return;\r\n }\r\n const map = tr.mapping.maps[last];\r\n let end = 0;\r\n map.forEach((_from, _to, _newFrom, newTo) => {\r\n if (end === 0) {\r\n end = newTo;\r\n }\r\n });\r\n tr.setSelection(Selection.near(tr.doc.resolve(end), bias));\r\n}\n\nconst isFragment = (nodeOrFragment) => {\r\n return nodeOrFragment.toString().startsWith('<');\r\n};\r\nconst insertContentAt = (position, value, options) => ({ tr, dispatch, editor }) => {\r\n if (dispatch) {\r\n options = {\r\n parseOptions: {},\r\n updateSelection: true,\r\n applyInputRules: false,\r\n applyPasteRules: false,\r\n ...options,\r\n };\r\n const content = createNodeFromContent(value, editor.schema, {\r\n parseOptions: {\r\n preserveWhitespace: 'full',\r\n ...options.parseOptions,\r\n },\r\n });\r\n // don’t dispatch an empty fragment because this can lead to strange errors\r\n if (content.toString() === '<>') {\r\n return true;\r\n }\r\n let { from, to } = typeof position === 'number' ? { from: position, to: position } : { from: position.from, to: position.to };\r\n let isOnlyTextContent = true;\r\n let isOnlyBlockContent = true;\r\n const nodes = isFragment(content) ? content : [content];\r\n nodes.forEach(node => {\r\n // check if added node is valid\r\n node.check();\r\n isOnlyTextContent = isOnlyTextContent ? node.isText && node.marks.length === 0 : false;\r\n isOnlyBlockContent = isOnlyBlockContent ? node.isBlock : false;\r\n });\r\n // check if we can replace the wrapping node by\r\n // the newly inserted content\r\n // example:\r\n // replace an empty paragraph by an inserted image\r\n // instead of inserting the image below the paragraph\r\n if (from === to && isOnlyBlockContent) {\r\n const { parent } = tr.doc.resolve(from);\r\n const isEmptyTextBlock = parent.isTextblock && !parent.type.spec.code && !parent.childCount;\r\n if (isEmptyTextBlock) {\r\n from -= 1;\r\n to += 1;\r\n }\r\n }\r\n let newContent;\r\n // if there is only plain text we have to use `insertText`\r\n // because this will keep the current marks\r\n if (isOnlyTextContent) {\r\n // if value is string, we can use it directly\r\n // otherwise if it is an array, we have to join it\r\n if (Array.isArray(value)) {\r\n newContent = value.map(v => v.text || '').join('');\r\n }\r\n else if (typeof value === 'object' && !!value && !!value.text) {\r\n newContent = value.text;\r\n }\r\n else {\r\n newContent = value;\r\n }\r\n tr.insertText(newContent, from, to);\r\n }\r\n else {\r\n newContent = content;\r\n tr.replaceWith(from, to, newContent);\r\n }\r\n // set cursor at end of inserted content\r\n if (options.updateSelection) {\r\n selectionToInsertionEnd(tr, tr.steps.length - 1, -1);\r\n }\r\n if (options.applyInputRules) {\r\n tr.setMeta('applyInputRules', { from, text: newContent });\r\n }\r\n if (options.applyPasteRules) {\r\n tr.setMeta('applyPasteRules', { from, text: newContent });\r\n }\r\n }\r\n return true;\r\n};\n\nconst joinUp = () => ({ state, dispatch }) => {\r\n return joinUp$1(state, dispatch);\r\n};\r\nconst joinDown = () => ({ state, dispatch }) => {\r\n return joinDown$1(state, dispatch);\r\n};\r\nconst joinBackward = () => ({ state, dispatch }) => {\r\n return joinBackward$1(state, dispatch);\r\n};\r\nconst joinForward = () => ({ state, dispatch }) => {\r\n return joinForward$1(state, dispatch);\r\n};\n\nconst joinItemBackward = () => ({ tr, state, dispatch, }) => {\r\n try {\r\n const point = joinPoint(state.doc, state.selection.$from.pos, -1);\r\n if (point === null || point === undefined) {\r\n return false;\r\n }\r\n tr.join(point, 2);\r\n if (dispatch) {\r\n dispatch(tr);\r\n }\r\n return true;\r\n }\r\n catch {\r\n return false;\r\n }\r\n};\n\nconst joinItemForward = () => ({ state, dispatch, tr, }) => {\r\n try {\r\n const point = joinPoint(state.doc, state.selection.$from.pos, +1);\r\n if (point === null || point === undefined) {\r\n return false;\r\n }\r\n tr.join(point, 2);\r\n if (dispatch) {\r\n dispatch(tr);\r\n }\r\n return true;\r\n }\r\n catch (e) {\r\n return false;\r\n }\r\n};\n\nconst joinTextblockBackward = () => ({ state, dispatch }) => {\r\n return joinTextblockBackward$1(state, dispatch);\r\n};\n\nconst joinTextblockForward = () => ({ state, dispatch }) => {\r\n return joinTextblockForward$1(state, dispatch);\r\n};\n\nfunction isMacOS() {\r\n return typeof navigator !== 'undefined'\r\n ? /Mac/.test(navigator.platform)\r\n : false;\r\n}\n\nfunction normalizeKeyName(name) {\r\n const parts = name.split(/-(?!$)/);\r\n let result = parts[parts.length - 1];\r\n if (result === 'Space') {\r\n result = ' ';\r\n }\r\n let alt;\r\n let ctrl;\r\n let shift;\r\n let meta;\r\n for (let i = 0; i < parts.length - 1; i += 1) {\r\n const mod = parts[i];\r\n if (/^(cmd|meta|m)$/i.test(mod)) {\r\n meta = true;\r\n }\r\n else if (/^a(lt)?$/i.test(mod)) {\r\n alt = true;\r\n }\r\n else if (/^(c|ctrl|control)$/i.test(mod)) {\r\n ctrl = true;\r\n }\r\n else if (/^s(hift)?$/i.test(mod)) {\r\n shift = true;\r\n }\r\n else if (/^mod$/i.test(mod)) {\r\n if (isiOS() || isMacOS()) {\r\n meta = true;\r\n }\r\n else {\r\n ctrl = true;\r\n }\r\n }\r\n else {\r\n throw new Error(`Unrecognized modifier name: ${mod}`);\r\n }\r\n }\r\n if (alt) {\r\n result = `Alt-${result}`;\r\n }\r\n if (ctrl) {\r\n result = `Ctrl-${result}`;\r\n }\r\n if (meta) {\r\n result = `Meta-${result}`;\r\n }\r\n if (shift) {\r\n result = `Shift-${result}`;\r\n }\r\n return result;\r\n}\r\nconst keyboardShortcut = name => ({ editor, view, tr, dispatch, }) => {\r\n const keys = normalizeKeyName(name).split(/-(?!$)/);\r\n const key = keys.find(item => !['Alt', 'Ctrl', 'Meta', 'Shift'].includes(item));\r\n const event = new KeyboardEvent('keydown', {\r\n key: key === 'Space'\r\n ? ' '\r\n : key,\r\n altKey: keys.includes('Alt'),\r\n ctrlKey: keys.includes('Ctrl'),\r\n metaKey: keys.includes('Meta'),\r\n shiftKey: keys.includes('Shift'),\r\n bubbles: true,\r\n cancelable: true,\r\n });\r\n const capturedTransaction = editor.captureTransaction(() => {\r\n view.someProp('handleKeyDown', f => f(view, event));\r\n });\r\n capturedTransaction === null || capturedTransaction === void 0 ? void 0 : capturedTransaction.steps.forEach(step => {\r\n const newStep = step.map(tr.mapping);\r\n if (newStep && dispatch) {\r\n tr.maybeStep(newStep);\r\n }\r\n });\r\n return true;\r\n};\n\nfunction isNodeActive(state, typeOrName, attributes = {}) {\r\n const { from, to, empty } = state.selection;\r\n const type = typeOrName ? getNodeType(typeOrName, state.schema) : null;\r\n const nodeRanges = [];\r\n state.doc.nodesBetween(from, to, (node, pos) => {\r\n if (node.isText) {\r\n return;\r\n }\r\n const relativeFrom = Math.max(from, pos);\r\n const relativeTo = Math.min(to, pos + node.nodeSize);\r\n nodeRanges.push({\r\n node,\r\n from: relativeFrom,\r\n to: relativeTo,\r\n });\r\n });\r\n const selectionRange = to - from;\r\n const matchedNodeRanges = nodeRanges\r\n .filter(nodeRange => {\r\n if (!type) {\r\n return true;\r\n }\r\n return type.name === nodeRange.node.type.name;\r\n })\r\n .filter(nodeRange => objectIncludes(nodeRange.node.attrs, attributes, { strict: false }));\r\n if (empty) {\r\n return !!matchedNodeRanges.length;\r\n }\r\n const range = matchedNodeRanges.reduce((sum, nodeRange) => sum + nodeRange.to - nodeRange.from, 0);\r\n return range >= selectionRange;\r\n}\n\nconst lift = (typeOrName, attributes = {}) => ({ state, dispatch }) => {\r\n const type = getNodeType(typeOrName, state.schema);\r\n const isActive = isNodeActive(state, type, attributes);\r\n if (!isActive) {\r\n return false;\r\n }\r\n return lift$1(state, dispatch);\r\n};\n\nconst liftEmptyBlock = () => ({ state, dispatch }) => {\r\n return liftEmptyBlock$1(state, dispatch);\r\n};\n\nconst liftListItem = typeOrName => ({ state, dispatch }) => {\r\n const type = getNodeType(typeOrName, state.schema);\r\n return liftListItem$1(type)(state, dispatch);\r\n};\n\nconst newlineInCode = () => ({ state, dispatch }) => {\r\n return newlineInCode$1(state, dispatch);\r\n};\n\n/**\r\n * Get the type of a schema item by its name.\r\n * @param name The name of the schema item\r\n * @param schema The Prosemiror schema to search in\r\n * @returns The type of the schema item (`node` or `mark`), or null if it doesn't exist\r\n */\r\nfunction getSchemaTypeNameByName(name, schema) {\r\n if (schema.nodes[name]) {\r\n return 'node';\r\n }\r\n if (schema.marks[name]) {\r\n return 'mark';\r\n }\r\n return null;\r\n}\n\n/**\r\n * Remove a property or an array of properties from an object\r\n * @param obj Object\r\n * @param key Key to remove\r\n */\r\nfunction deleteProps(obj, propOrProps) {\r\n const props = typeof propOrProps === 'string'\r\n ? [propOrProps]\r\n : propOrProps;\r\n return Object\r\n .keys(obj)\r\n .reduce((newObj, prop) => {\r\n if (!props.includes(prop)) {\r\n newObj[prop] = obj[prop];\r\n }\r\n return newObj;\r\n }, {});\r\n}\n\nconst resetAttributes = (typeOrName, attributes) => ({ tr, state, dispatch }) => {\r\n let nodeType = null;\r\n let markType = null;\r\n const schemaType = getSchemaTypeNameByName(typeof typeOrName === 'string' ? typeOrName : typeOrName.name, state.schema);\r\n if (!schemaType) {\r\n return false;\r\n }\r\n if (schemaType === 'node') {\r\n nodeType = getNodeType(typeOrName, state.schema);\r\n }\r\n if (schemaType === 'mark') {\r\n markType = getMarkType(typeOrName, state.schema);\r\n }\r\n if (dispatch) {\r\n tr.selection.ranges.forEach(range => {\r\n state.doc.nodesBetween(range.$from.pos, range.$to.pos, (node, pos) => {\r\n if (nodeType && nodeType === node.type) {\r\n tr.setNodeMarkup(pos, undefined, deleteProps(node.attrs, attributes));\r\n }\r\n if (markType && node.marks.length) {\r\n node.marks.forEach(mark => {\r\n if (markType === mark.type) {\r\n tr.addMark(pos, pos + node.nodeSize, markType.create(deleteProps(mark.attrs, attributes)));\r\n }\r\n });\r\n }\r\n });\r\n });\r\n }\r\n return true;\r\n};\n\nconst scrollIntoView = () => ({ tr, dispatch }) => {\r\n if (dispatch) {\r\n tr.scrollIntoView();\r\n }\r\n return true;\r\n};\n\nconst selectAll = () => ({ tr, commands }) => {\r\n return commands.setTextSelection({\r\n from: 0,\r\n to: tr.doc.content.size,\r\n });\r\n};\n\nconst selectNodeBackward = () => ({ state, dispatch }) => {\r\n return selectNodeBackward$1(state, dispatch);\r\n};\n\nconst selectNodeForward = () => ({ state, dispatch }) => {\r\n return selectNodeForward$1(state, dispatch);\r\n};\n\nconst selectParentNode = () => ({ state, dispatch }) => {\r\n return selectParentNode$1(state, dispatch);\r\n};\n\n// @ts-ignore\r\nconst selectTextblockEnd = () => ({ state, dispatch }) => {\r\n return selectTextblockEnd$1(state, dispatch);\r\n};\n\n// @ts-ignore\r\nconst selectTextblockStart = () => ({ state, dispatch }) => {\r\n return selectTextblockStart$1(state, dispatch);\r\n};\n\n/**\r\n * Create a new Prosemirror document node from content.\r\n * @param content The JSON or HTML content to create the document from\r\n * @param schema The Prosemirror schema to use for the document\r\n * @param parseOptions Options for the parser\r\n * @returns The created Prosemirror document node\r\n */\r\nfunction createDocument(content, schema, parseOptions = {}) {\r\n return createNodeFromContent(content, schema, { slice: false, parseOptions });\r\n}\n\nconst setContent = (content, emitUpdate = false, parseOptions = {}) => ({ tr, editor, dispatch }) => {\r\n const { doc } = tr;\r\n const document = createDocument(content, editor.schema, parseOptions);\r\n if (dispatch) {\r\n tr.replaceWith(0, doc.content.size, document).setMeta('preventUpdate', !emitUpdate);\r\n }\r\n return true;\r\n};\n\nfunction getMarkAttributes(state, typeOrName) {\r\n const type = getMarkType(typeOrName, state.schema);\r\n const { from, to, empty } = state.selection;\r\n const marks = [];\r\n if (empty) {\r\n if (state.storedMarks) {\r\n marks.push(...state.storedMarks);\r\n }\r\n marks.push(...state.selection.$head.marks());\r\n }\r\n else {\r\n state.doc.nodesBetween(from, to, node => {\r\n marks.push(...node.marks);\r\n });\r\n }\r\n const mark = marks.find(markItem => markItem.type.name === type.name);\r\n if (!mark) {\r\n return {};\r\n }\r\n return { ...mark.attrs };\r\n}\n\n/**\r\n * Returns a new `Transform` based on all steps of the passed transactions.\r\n * @param oldDoc The Prosemirror node to start from\r\n * @param transactions The transactions to combine\r\n * @returns A new `Transform` with all steps of the passed transactions\r\n */\r\nfunction combineTransactionSteps(oldDoc, transactions) {\r\n const transform = new Transform(oldDoc);\r\n transactions.forEach(transaction => {\r\n transaction.steps.forEach(step => {\r\n transform.step(step);\r\n });\r\n });\r\n return transform;\r\n}\n\n/**\r\n * Gets the default block type at a given match\r\n * @param match The content match to get the default block type from\r\n * @returns The default block type or null\r\n */\r\nfunction defaultBlockAt(match) {\r\n for (let i = 0; i < match.edgeCount; i += 1) {\r\n const { type } = match.edge(i);\r\n if (type.isTextblock && !type.hasRequiredAttrs()) {\r\n return type;\r\n }\r\n }\r\n return null;\r\n}\n\n/**\r\n * Find children inside a Prosemirror node that match a predicate.\r\n * @param node The Prosemirror node to search in\r\n * @param predicate The predicate to match\r\n * @returns An array of nodes with their positions\r\n */\r\nfunction findChildren(node, predicate) {\r\n const nodesWithPos = [];\r\n node.descendants((child, pos) => {\r\n if (predicate(child)) {\r\n nodesWithPos.push({\r\n node: child,\r\n pos,\r\n });\r\n }\r\n });\r\n return nodesWithPos;\r\n}\n\n/**\r\n * Same as `findChildren` but searches only within a `range`.\r\n * @param node The Prosemirror node to search in\r\n * @param range The range to search in\r\n * @param predicate The predicate to match\r\n * @returns An array of nodes with their positions\r\n */\r\nfunction findChildrenInRange(node, range, predicate) {\r\n const nodesWithPos = [];\r\n // if (range.from === range.to) {\r\n // const nodeAt = node.nodeAt(range.from)\r\n // if (nodeAt) {\r\n // nodesWithPos.push({\r\n // node: nodeAt,\r\n // pos: range.from,\r\n // })\r\n // }\r\n // }\r\n node.nodesBetween(range.from, range.to, (child, pos) => {\r\n if (predicate(child)) {\r\n nodesWithPos.push({\r\n node: child,\r\n pos,\r\n });\r\n }\r\n });\r\n return nodesWithPos;\r\n}\n\n/**\r\n * Finds the closest parent node to a resolved position that matches a predicate.\r\n * @param $pos The resolved position to search from\r\n * @param predicate The predicate to match\r\n * @returns The closest parent node to the resolved position that matches the predicate\r\n * @example ```js\r\n * findParentNodeClosestToPos($from, node => node.type.name === 'paragraph')\r\n * ```\r\n */\r\nfunction findParentNodeClosestToPos($pos, predicate) {\r\n for (let i = $pos.depth; i > 0; i -= 1) {\r\n const node = $pos.node(i);\r\n if (predicate(node)) {\r\n return {\r\n pos: i > 0 ? $pos.before(i) : 0,\r\n start: $pos.start(i),\r\n depth: i,\r\n node,\r\n };\r\n }\r\n }\r\n}\n\n/**\r\n * Finds the closest parent node to the current selection that matches a predicate.\r\n * @param predicate The predicate to match\r\n * @returns A command that finds the closest parent node to the current selection that matches the predicate\r\n * @example ```js\r\n * findParentNode(node => node.type.name === 'paragraph')\r\n * ```\r\n */\r\nfunction findParentNode(predicate) {\r\n return (selection) => findParentNodeClosestToPos(selection.$from, predicate);\r\n}\n\nfunction getHTMLFromFragment(fragment, schema) {\r\n const documentFragment = DOMSerializer.fromSchema(schema).serializeFragment(fragment);\r\n const temporaryDocument = document.implementation.createHTMLDocument();\r\n const container = temporaryDocument.createElement('div');\r\n container.appendChild(documentFragment);\r\n return container.innerHTML;\r\n}\n\nfunction getSchema(extensions, editor) {\r\n const resolvedExtensions = ExtensionManager.resolve(extensions);\r\n return getSchemaByResolvedExtensions(resolvedExtensions, editor);\r\n}\n\n/**\r\n * Generate HTML from a JSONContent\r\n * @param doc The JSONContent to generate HTML from\r\n * @param extensions The extensions to use for the schema\r\n * @returns The generated HTML\r\n */\r\nfunction generateHTML(doc, extensions) {\r\n const schema = getSchema(extensions);\r\n const contentNode = Node$1.fromJSON(schema, doc);\r\n return getHTMLFromFragment(contentNode.content, schema);\r\n}\n\n/**\r\n * Generate JSONContent from HTML\r\n * @param html The HTML to generate JSONContent from\r\n * @param extensions The extensions to use for the schema\r\n * @returns The generated JSONContent\r\n */\r\nfunction generateJSON(html, extensions) {\r\n const schema = getSchema(extensions);\r\n const dom = elementFromString(html);\r\n return DOMParser.fromSchema(schema).parse(dom).toJSON();\r\n}\n\n/**\r\n * Gets the text of a Prosemirror node\r\n * @param node The Prosemirror node\r\n * @param options Options for the text serializer & block separator\r\n * @returns The text of the node\r\n * @example ```js\r\n * const text = getText(node, { blockSeparator: '\\n' })\r\n * ```\r\n */\r\nfunction getText(node, options) {\r\n const range = {\r\n from: 0,\r\n to: node.content.size,\r\n };\r\n return getTextBetween(node, range, options);\r\n}\n\n/**\r\n * Generate raw text from a JSONContent\r\n * @param doc The JSONContent to generate text from\r\n * @param extensions The extensions to use for the schema\r\n * @param options Options for the text generation f.e. blockSeparator or textSerializers\r\n * @returns The generated text\r\n */\r\nfunction generateText(doc, extensions, options) {\r\n const { blockSeparator = '\\n\\n', textSerializers = {} } = options || {};\r\n const schema = getSchema(extensions);\r\n const contentNode = Node$1.fromJSON(schema, doc);\r\n return getText(contentNode, {\r\n blockSeparator,\r\n textSerializers: {\r\n ...getTextSerializersFromSchema(schema),\r\n ...textSerializers,\r\n },\r\n });\r\n}\n\nfunction getNodeAttributes(state, typeOrName) {\r\n const type = getNodeType(typeOrName, state.schema);\r\n const { from, to } = state.selection;\r\n const nodes = [];\r\n state.doc.nodesBetween(from, to, node => {\r\n nodes.push(node);\r\n });\r\n const node = nodes.reverse().find(nodeItem => nodeItem.type.name === type.name);\r\n if (!node) {\r\n return {};\r\n }\r\n return { ...node.attrs };\r\n}\n\n/**\r\n * Get node or mark attributes by type or name on the current editor state\r\n * @param state The current editor state\r\n * @param typeOrName The node or mark type or name\r\n * @returns The attributes of the node or mark or an empty object\r\n */\r\nfunction getAttributes(state, typeOrName) {\r\n const schemaType = getSchemaTypeNameByName(typeof typeOrName === 'string' ? typeOrName : typeOrName.name, state.schema);\r\n if (schemaType === 'node') {\r\n return getNodeAttributes(state, typeOrName);\r\n }\r\n if (schemaType === 'mark') {\r\n return getMarkAttributes(state, typeOrName);\r\n }\r\n return {};\r\n}\n\n/**\r\n * Removes duplicated values within an array.\r\n * Supports numbers, strings and objects.\r\n */\r\nfunction removeDuplicates(array, by = JSON.stringify) {\r\n const seen = {};\r\n return array.filter(item => {\r\n const key = by(item);\r\n return Object.prototype.hasOwnProperty.call(seen, key)\r\n ? false\r\n : (seen[key] = true);\r\n });\r\n}\n\n/**\r\n * Removes duplicated ranges and ranges that are\r\n * fully captured by other ranges.\r\n */\r\nfunction simplifyChangedRanges(changes) {\r\n const uniqueChanges = removeDuplicates(changes);\r\n return uniqueChanges.length === 1\r\n ? uniqueChanges\r\n : uniqueChanges.filter((change, index) => {\r\n const rest = uniqueChanges.filter((_, i) => i !== index);\r\n return !rest.some(otherChange => {\r\n return change.oldRange.from >= otherChange.oldRange.from\r\n && change.oldRange.to <= otherChange.oldRange.to\r\n && change.newRange.from >= otherChange.newRange.from\r\n && change.newRange.to <= otherChange.newRange.to;\r\n });\r\n });\r\n}\r\n/**\r\n * Returns a list of changed ranges\r\n * based on the first and last state of all steps.\r\n */\r\nfunction getChangedRanges(transform) {\r\n const { mapping, steps } = transform;\r\n const changes = [];\r\n mapping.maps.forEach((stepMap, index) => {\r\n const ranges = [];\r\n // This accounts for step changes where no range was actually altered\r\n // e.g. when setting a mark, node attribute, etc.\r\n // @ts-ignore\r\n if (!stepMap.ranges.length) {\r\n const { from, to } = steps[index];\r\n if (from === undefined || to === undefined) {\r\n return;\r\n }\r\n ranges.push({ from, to });\r\n }\r\n else {\r\n stepMap.forEach((from, to) => {\r\n ranges.push({ from, to });\r\n });\r\n }\r\n ranges.forEach(({ from, to }) => {\r\n const newStart = mapping.slice(index).map(from, -1);\r\n const newEnd = mapping.slice(index).map(to);\r\n const oldStart = mapping.invert().map(newStart, -1);\r\n const oldEnd = mapping.invert().map(newEnd);\r\n changes.push({\r\n oldRange: {\r\n from: oldStart,\r\n to: oldEnd,\r\n },\r\n newRange: {\r\n from: newStart,\r\n to: newEnd,\r\n },\r\n });\r\n });\r\n });\r\n return simplifyChangedRanges(changes);\r\n}\n\nfunction getDebugJSON(node, startOffset = 0) {\r\n const isTopNode = node.type === node.type.schema.topNodeType;\r\n const increment = isTopNode ? 0 : 1;\r\n const from = startOffset;\r\n const to = from + node.nodeSize;\r\n const marks = node.marks.map(mark => {\r\n const output = {\r\n type: mark.type.name,\r\n };\r\n if (Object.keys(mark.attrs).length) {\r\n output.attrs = { ...mark.attrs };\r\n }\r\n return output;\r\n });\r\n const attrs = { ...node.attrs };\r\n const output = {\r\n type: node.type.name,\r\n from,\r\n to,\r\n };\r\n if (Object.keys(attrs).length) {\r\n output.attrs = attrs;\r\n }\r\n if (marks.length) {\r\n output.marks = marks;\r\n }\r\n if (node.content.childCount) {\r\n output.content = [];\r\n node.forEach((child, offset) => {\r\n var _a;\r\n (_a = output.content) === null || _a === void 0 ? void 0 : _a.push(getDebugJSON(child, startOffset + offset + increment));\r\n });\r\n }\r\n if (node.text) {\r\n output.text = node.text;\r\n }\r\n return output;\r\n}\n\nfunction getMarksBetween(from, to, doc) {\r\n const marks = [];\r\n // get all inclusive marks on empty selection\r\n if (from === to) {\r\n doc\r\n .resolve(from)\r\n .marks()\r\n .forEach(mark => {\r\n const $pos = doc.resolve(from - 1);\r\n const range = getMarkRange($pos, mark.type);\r\n if (!range) {\r\n return;\r\n }\r\n marks.push({\r\n mark,\r\n ...range,\r\n });\r\n });\r\n }\r\n else {\r\n doc.nodesBetween(from, to, (node, pos) => {\r\n if (!node || (node === null || node === void 0 ? void 0 : node.nodeSize) === undefined) {\r\n return;\r\n }\r\n marks.push(...node.marks.map(mark => ({\r\n from: pos,\r\n to: pos + node.nodeSize,\r\n mark,\r\n })));\r\n });\r\n }\r\n return marks;\r\n}\n\n/**\r\n * Finds the first node of a given type or name in the current selection.\r\n * @param state The editor state.\r\n * @param typeOrName The node type or name.\r\n * @param pos The position to start searching from.\r\n * @param maxDepth The maximum depth to search.\r\n * @returns The node and the depth as an array.\r\n */\r\nconst getNodeAtPosition = (state, typeOrName, pos, maxDepth = 20) => {\r\n const $pos = state.doc.resolve(pos);\r\n let currentDepth = maxDepth;\r\n let node = null;\r\n while (currentDepth > 0 && node === null) {\r\n const currentNode = $pos.node(currentDepth);\r\n if ((currentNode === null || currentNode === void 0 ? void 0 : currentNode.type.name) === typeOrName) {\r\n node = currentNode;\r\n }\r\n else {\r\n currentDepth -= 1;\r\n }\r\n }\r\n return [node, currentDepth];\r\n};\n\n/**\r\n * Return attributes of an extension that should be splitted by keepOnSplit flag\r\n * @param extensionAttributes Array of extension attributes\r\n * @param typeName The type of the extension\r\n * @param attributes The attributes of the extension\r\n * @returns The splitted attributes\r\n */\r\nfunction getSplittedAttributes(extensionAttributes, typeName, attributes) {\r\n return Object.fromEntries(Object\r\n .entries(attributes)\r\n .filter(([name]) => {\r\n const extensionAttribute = extensionAttributes.find(item => {\r\n return item.type === typeName && item.name === name;\r\n });\r\n if (!extensionAttribute) {\r\n return false;\r\n }\r\n return extensionAttribute.attribute.keepOnSplit;\r\n }));\r\n}\n\nfunction isMarkActive(state, typeOrName, attributes = {}) {\r\n const { empty, ranges } = state.selection;\r\n const type = typeOrName ? getMarkType(typeOrName, state.schema) : null;\r\n if (empty) {\r\n return !!(state.storedMarks || state.selection.$from.marks())\r\n .filter(mark => {\r\n if (!type) {\r\n return true;\r\n }\r\n return type.name === mark.type.name;\r\n })\r\n .find(mark => objectIncludes(mark.attrs, attributes, { strict: false }));\r\n }\r\n let selectionRange = 0;\r\n const markRanges = [];\r\n ranges.forEach(({ $from, $to }) => {\r\n const from = $from.pos;\r\n const to = $to.pos;\r\n state.doc.nodesBetween(from, to, (node, pos) => {\r\n if (!node.isText && !node.marks.length) {\r\n return;\r\n }\r\n const relativeFrom = Math.max(from, pos);\r\n const relativeTo = Math.min(to, pos + node.nodeSize);\r\n const range = relativeTo - relativeFrom;\r\n selectionRange += range;\r\n markRanges.push(...node.marks.map(mark => ({\r\n mark,\r\n from: relativeFrom,\r\n to: relativeTo,\r\n })));\r\n });\r\n });\r\n if (selectionRange === 0) {\r\n return false;\r\n }\r\n // calculate range of matched mark\r\n const matchedRange = markRanges\r\n .filter(markRange => {\r\n if (!type) {\r\n return true;\r\n }\r\n return type.name === markRange.mark.type.name;\r\n })\r\n .filter(markRange => objectIncludes(markRange.mark.attrs, attributes, { strict: false }))\r\n .reduce((sum, markRange) => sum + markRange.to - markRange.from, 0);\r\n // calculate range of marks that excludes the searched mark\r\n // for example `code` doesn’t allow any other marks\r\n const excludedRange = markRanges\r\n .filter(markRange => {\r\n if (!type) {\r\n return true;\r\n }\r\n return markRange.mark.type !== type && markRange.mark.type.excludes(type);\r\n })\r\n .reduce((sum, markRange) => sum + markRange.to - markRange.from, 0);\r\n // we only include the result of `excludedRange`\r\n // if there is a match at all\r\n const range = matchedRange > 0 ? matchedRange + excludedRange : matchedRange;\r\n return range >= selectionRange;\r\n}\n\nfunction isActive(state, name, attributes = {}) {\r\n if (!name) {\r\n return isNodeActive(state, null, attributes) || isMarkActive(state, null, attributes);\r\n }\r\n const schemaType = getSchemaTypeNameByName(name, state.schema);\r\n if (schemaType === 'node') {\r\n return isNodeActive(state, name, attributes);\r\n }\r\n if (schemaType === 'mark') {\r\n return isMarkActive(state, name, attributes);\r\n }\r\n return false;\r\n}\n\nconst isAtEndOfNode = (state, nodeType) => {\r\n const { $from, $to, $anchor } = state.selection;\r\n if (nodeType) {\r\n const parentNode = findParentNode(node => node.type.name === nodeType)(state.selection);\r\n if (!parentNode) {\r\n return false;\r\n }\r\n const $parentPos = state.doc.resolve(parentNode.pos + 1);\r\n if ($anchor.pos + 1 === $parentPos.end()) {\r\n return true;\r\n }\r\n return false;\r\n }\r\n if ($to.parentOffset < $to.parent.nodeSize - 2 || $from.pos !== $to.pos) {\r\n return false;\r\n }\r\n return true;\r\n};\n\nconst isAtStartOfNode = (state) => {\r\n const { $from, $to } = state.selection;\r\n if ($from.parentOffset > 0 || $from.pos !== $to.pos) {\r\n return false;\r\n }\r\n return true;\r\n};\n\nfunction isList(name, extensions) {\r\n const { nodeExtensions } = splitExtensions(extensions);\r\n const extension = nodeExtensions.find(item => item.name === name);\r\n if (!extension) {\r\n return false;\r\n }\r\n const context = {\r\n name: extension.name,\r\n options: extension.options,\r\n storage: extension.storage,\r\n };\r\n const group = callOrReturn(getExtensionField(extension, 'group', context));\r\n if (typeof group !== 'string') {\r\n return false;\r\n }\r\n return group.split(' ').includes('list');\r\n}\n\nfunction isNodeEmpty(node) {\r\n var _a;\r\n const defaultContent = (_a = node.type.createAndFill()) === null || _a === void 0 ? void 0 : _a.toJSON();\r\n const content = node.toJSON();\r\n return JSON.stringify(defaultContent) === JSON.stringify(content);\r\n}\n\nfunction isNodeSelection(value) {\r\n return value instanceof NodeSelection;\r\n}\n\nfunction posToDOMRect(view, from, to) {\r\n const minPos = 0;\r\n const maxPos = view.state.doc.content.size;\r\n const resolvedFrom = minMax(from, minPos, maxPos);\r\n const resolvedEnd = minMax(to, minPos, maxPos);\r\n const start = view.coordsAtPos(resolvedFrom);\r\n const end = view.coordsAtPos(resolvedEnd, -1);\r\n const top = Math.min(start.top, end.top);\r\n const bottom = Math.max(start.bottom, end.bottom);\r\n const left = Math.min(start.left, end.left);\r\n const right = Math.max(start.right, end.right);\r\n const width = right - left;\r\n const height = bottom - top;\r\n const x = left;\r\n const y = top;\r\n const data = {\r\n top,\r\n bottom,\r\n left,\r\n right,\r\n width,\r\n height,\r\n x,\r\n y,\r\n };\r\n return {\r\n ...data,\r\n toJSON: () => data,\r\n };\r\n}\n\nfunction canSetMark(state, tr, newMarkType) {\r\n var _a;\r\n const { selection } = tr;\r\n let cursor = null;\r\n if (isTextSelection(selection)) {\r\n cursor = selection.$cursor;\r\n }\r\n if (cursor) {\r\n const currentMarks = (_a = state.storedMarks) !== null && _a !== void 0 ? _a : cursor.marks();\r\n // There can be no current marks that exclude the new mark\r\n return (!!newMarkType.isInSet(currentMarks)\r\n || !currentMarks.some(mark => mark.type.excludes(newMarkType)));\r\n }\r\n const { ranges } = selection;\r\n return ranges.some(({ $from, $to }) => {\r\n let someNodeSupportsMark = $from.depth === 0\r\n ? state.doc.inlineContent && state.doc.type.allowsMarkType(newMarkType)\r\n : false;\r\n state.doc.nodesBetween($from.pos, $to.pos, (node, _pos, parent) => {\r\n // If we already found a mark that we can enable, return false to bypass the remaining search\r\n if (someNodeSupportsMark) {\r\n return false;\r\n }\r\n if (node.isInline) {\r\n const parentAllowsMarkType = !parent || parent.type.allowsMarkType(newMarkType);\r\n const currentMarksAllowMarkType = !!newMarkType.isInSet(node.marks)\r\n || !node.marks.some(otherMark => otherMark.type.excludes(newMarkType));\r\n someNodeSupportsMark = parentAllowsMarkType && currentMarksAllowMarkType;\r\n }\r\n return !someNodeSupportsMark;\r\n });\r\n return someNodeSupportsMark;\r\n });\r\n}\r\nconst setMark = (typeOrName, attributes = {}) => ({ tr, state, dispatch }) => {\r\n const { selection } = tr;\r\n const { empty, ranges } = selection;\r\n const type = getMarkType(typeOrName, state.schema);\r\n if (dispatch) {\r\n if (empty) {\r\n const oldAttributes = getMarkAttributes(state, type);\r\n tr.addStoredMark(type.create({\r\n ...oldAttributes,\r\n ...attributes,\r\n }));\r\n }\r\n else {\r\n ranges.forEach(range => {\r\n const from = range.$from.pos;\r\n const to = range.$to.pos;\r\n state.doc.nodesBetween(from, to, (node, pos) => {\r\n const trimmedFrom = Math.max(pos, from);\r\n const trimmedTo = Math.min(pos + node.nodeSize, to);\r\n const someHasMark = node.marks.find(mark => mark.type === type);\r\n // if there is already a mark of this type\r\n // we know that we have to merge its attributes\r\n // otherwise we add a fresh new mark\r\n if (someHasMark) {\r\n node.marks.forEach(mark => {\r\n if (type === mark.type) {\r\n tr.addMark(trimmedFrom, trimmedTo, type.create({\r\n ...mark.attrs,\r\n ...attributes,\r\n }));\r\n }\r\n });\r\n }\r\n else {\r\n tr.addMark(trimmedFrom, trimmedTo, type.create(attributes));\r\n }\r\n });\r\n });\r\n }\r\n }\r\n return canSetMark(state, tr, type);\r\n};\n\nconst setMeta = (key, value) => ({ tr }) => {\r\n tr.setMeta(key, value);\r\n return true;\r\n};\n\nconst setNode = (typeOrName, attributes = {}) => ({ state, dispatch, chain }) => {\r\n const type = getNodeType(typeOrName, state.schema);\r\n // TODO: use a fallback like insertContent?\r\n if (!type.isTextblock) {\r\n console.warn('[tiptap warn]: Currently \"setNode()\" only supports text block nodes.');\r\n return false;\r\n }\r\n return (chain()\r\n // try to convert node to default node if needed\r\n .command(({ commands }) => {\r\n const canSetBlock = setBlockType(type, attributes)(state);\r\n if (canSetBlock) {\r\n return true;\r\n }\r\n return commands.clearNodes();\r\n })\r\n .command(({ state: updatedState }) => {\r\n return setBlockType(type, attributes)(updatedState, dispatch);\r\n })\r\n .run());\r\n};\n\nconst setNodeSelection = position => ({ tr, dispatch }) => {\r\n if (dispatch) {\r\n const { doc } = tr;\r\n const from = minMax(position, 0, doc.content.size);\r\n const selection = NodeSelection.create(doc, from);\r\n tr.setSelection(selection);\r\n }\r\n return true;\r\n};\n\nconst setTextSelection = position => ({ tr, dispatch }) => {\r\n if (dispatch) {\r\n const { doc } = tr;\r\n const { from, to } = typeof position === 'number' ? { from: position, to: position } : position;\r\n const minPos = TextSelection.atStart(doc).from;\r\n const maxPos = TextSelection.atEnd(doc).to;\r\n const resolvedFrom = minMax(from, minPos, maxPos);\r\n const resolvedEnd = minMax(to, minPos, maxPos);\r\n const selection = TextSelection.create(doc, resolvedFrom, resolvedEnd);\r\n tr.setSelection(selection);\r\n }\r\n return true;\r\n};\n\nconst sinkListItem = typeOrName => ({ state, dispatch }) => {\r\n const type = getNodeType(typeOrName, state.schema);\r\n return sinkListItem$1(type)(state, dispatch);\r\n};\n\nfunction ensureMarks(state, splittableMarks) {\r\n const marks = state.storedMarks || (state.selection.$to.parentOffset && state.selection.$from.marks());\r\n if (marks) {\r\n const filteredMarks = marks.filter(mark => splittableMarks === null || splittableMarks === void 0 ? void 0 : splittableMarks.includes(mark.type.name));\r\n state.tr.ensureMarks(filteredMarks);\r\n }\r\n}\r\nconst splitBlock = ({ keepMarks = true } = {}) => ({ tr, state, dispatch, editor, }) => {\r\n const { selection, doc } = tr;\r\n const { $from, $to } = selection;\r\n const extensionAttributes = editor.extensionManager.attributes;\r\n const newAttributes = getSplittedAttributes(extensionAttributes, $from.node().type.name, $from.node().attrs);\r\n if (selection instanceof NodeSelection && selection.node.isBlock) {\r\n if (!$from.parentOffset || !canSplit(doc, $from.pos)) {\r\n return false;\r\n }\r\n if (dispatch) {\r\n if (keepMarks) {\r\n ensureMarks(state, editor.extensionManager.splittableMarks);\r\n }\r\n tr.split($from.pos).scrollIntoView();\r\n }\r\n return true;\r\n }\r\n if (!$from.parent.isBlock) {\r\n return false;\r\n }\r\n if (dispatch) {\r\n const atEnd = $to.parentOffset === $to.parent.content.size;\r\n if (selection instanceof TextSelection) {\r\n tr.deleteSelection();\r\n }\r\n const deflt = $from.depth === 0\r\n ? undefined\r\n : defaultBlockAt($from.node(-1).contentMatchAt($from.indexAfter(-1)));\r\n let types = atEnd && deflt\r\n ? [\r\n {\r\n type: deflt,\r\n attrs: newAttributes,\r\n },\r\n ]\r\n : undefined;\r\n let can = canSplit(tr.doc, tr.mapping.map($from.pos), 1, types);\r\n if (!types\r\n && !can\r\n && canSplit(tr.doc, tr.mapping.map($from.pos), 1, deflt ? [{ type: deflt }] : undefined)) {\r\n can = true;\r\n types = deflt\r\n ? [\r\n {\r\n type: deflt,\r\n attrs: newAttributes,\r\n },\r\n ]\r\n : undefined;\r\n }\r\n if (can) {\r\n tr.split(tr.mapping.map($from.pos), 1, types);\r\n if (deflt && !atEnd && !$from.parentOffset && $from.parent.type !== deflt) {\r\n const first = tr.mapping.map($from.before());\r\n const $first = tr.doc.resolve(first);\r\n if ($from.node(-1).canReplaceWith($first.index(), $first.index() + 1, deflt)) {\r\n tr.setNodeMarkup(tr.mapping.map($from.before()), deflt);\r\n }\r\n }\r\n }\r\n if (keepMarks) {\r\n ensureMarks(state, editor.extensionManager.splittableMarks);\r\n }\r\n tr.scrollIntoView();\r\n }\r\n return true;\r\n};\n\nconst splitListItem = typeOrName => ({ tr, state, dispatch, editor, }) => {\r\n var _a;\r\n const type = getNodeType(typeOrName, state.schema);\r\n const { $from, $to } = state.selection;\r\n // @ts-ignore\r\n // eslint-disable-next-line\r\n const node = state.selection.node;\r\n if ((node && node.isBlock) || $from.depth < 2 || !$from.sameParent($to)) {\r\n return false;\r\n }\r\n const grandParent = $from.node(-1);\r\n if (grandParent.type !== type) {\r\n return false;\r\n }\r\n const extensionAttributes = editor.extensionManager.attributes;\r\n if ($from.parent.content.size === 0 && $from.node(-1).childCount === $from.indexAfter(-1)) {\r\n // In an empty block. If this is a nested list, the wrapping\r\n // list item should be split. Otherwise, bail out and let next\r\n // command handle lifting.\r\n if ($from.depth === 2\r\n || $from.node(-3).type !== type\r\n || $from.index(-2) !== $from.node(-2).childCount - 1) {\r\n return false;\r\n }\r\n if (dispatch) {\r\n let wrap = Fragment.empty;\r\n // eslint-disable-next-line\r\n const depthBefore = $from.index(-1) ? 1 : $from.index(-2) ? 2 : 3;\r\n // Build a fragment containing empty versions of the structure\r\n // from the outer list item to the parent node of the cursor\r\n for (let d = $from.depth - depthBefore; d >= $from.depth - 3; d -= 1) {\r\n wrap = Fragment.from($from.node(d).copy(wrap));\r\n }\r\n // eslint-disable-next-line\r\n const depthAfter = $from.indexAfter(-1) < $from.node(-2).childCount ? 1 : $from.indexAfter(-2) < $from.node(-3).childCount ? 2 : 3;\r\n // Add a second list item with an empty default start node\r\n const newNextTypeAttributes = getSplittedAttributes(extensionAttributes, $from.node().type.name, $from.node().attrs);\r\n const nextType = ((_a = type.contentMatch.defaultType) === null || _a === void 0 ? void 0 : _a.createAndFill(newNextTypeAttributes)) || undefined;\r\n wrap = wrap.append(Fragment.from(type.createAndFill(null, nextType) || undefined));\r\n const start = $from.before($from.depth - (depthBefore - 1));\r\n tr.replace(start, $from.after(-depthAfter), new Slice(wrap, 4 - depthBefore, 0));\r\n let sel = -1;\r\n tr.doc.nodesBetween(start, tr.doc.content.size, (n, pos) => {\r\n if (sel > -1) {\r\n return false;\r\n }\r\n if (n.isTextblock && n.content.size === 0) {\r\n sel = pos + 1;\r\n }\r\n });\r\n if (sel > -1) {\r\n tr.setSelection(TextSelection.near(tr.doc.resolve(sel)));\r\n }\r\n tr.scrollIntoView();\r\n }\r\n return true;\r\n }\r\n const nextType = $to.pos === $from.end() ? grandParent.contentMatchAt(0).defaultType : null;\r\n const newTypeAttributes = getSplittedAttributes(extensionAttributes, grandParent.type.name, grandParent.attrs);\r\n const newNextTypeAttributes = getSplittedAttributes(extensionAttributes, $from.node().type.name, $from.node().attrs);\r\n tr.delete($from.pos, $to.pos);\r\n const types = nextType\r\n ? [\r\n { type, attrs: newTypeAttributes },\r\n { type: nextType, attrs: newNextTypeAttributes },\r\n ]\r\n : [{ type, attrs: newTypeAttributes }];\r\n if (!canSplit(tr.doc, $from.pos, 2)) {\r\n return false;\r\n }\r\n if (dispatch) {\r\n const { selection, storedMarks } = state;\r\n const { splittableMarks } = editor.extensionManager;\r\n const marks = storedMarks || (selection.$to.parentOffset && selection.$from.marks());\r\n tr.split($from.pos, 2, types).scrollIntoView();\r\n if (!marks || !dispatch) {\r\n return true;\r\n }\r\n const filteredMarks = marks.filter(mark => splittableMarks.includes(mark.type.name));\r\n tr.ensureMarks(filteredMarks);\r\n }\r\n return true;\r\n};\n\nconst joinListBackwards = (tr, listType) => {\r\n const list = findParentNode(node => node.type === listType)(tr.selection);\r\n if (!list) {\r\n return true;\r\n }\r\n const before = tr.doc.resolve(Math.max(0, list.pos - 1)).before(list.depth);\r\n if (before === undefined) {\r\n return true;\r\n }\r\n const nodeBefore = tr.doc.nodeAt(before);\r\n const canJoinBackwards = list.node.type === (nodeBefore === null || nodeBefore === void 0 ? void 0 : nodeBefore.type) && canJoin(tr.doc, list.pos);\r\n if (!canJoinBackwards) {\r\n return true;\r\n }\r\n tr.join(list.pos);\r\n return true;\r\n};\r\nconst joinListForwards = (tr, listType) => {\r\n const list = findParentNode(node => node.type === listType)(tr.selection);\r\n if (!list) {\r\n return true;\r\n }\r\n const after = tr.doc.resolve(list.start).after(list.depth);\r\n if (after === undefined) {\r\n return true;\r\n }\r\n const nodeAfter = tr.doc.nodeAt(after);\r\n const canJoinForwards = list.node.type === (nodeAfter === null || nodeAfter === void 0 ? void 0 : nodeAfter.type) && canJoin(tr.doc, after);\r\n if (!canJoinForwards) {\r\n return true;\r\n }\r\n tr.join(after);\r\n return true;\r\n};\r\nconst toggleList = (listTypeOrName, itemTypeOrName, keepMarks, attributes = {}) => ({ editor, tr, state, dispatch, chain, commands, can, }) => {\r\n const { extensions, splittableMarks } = editor.extensionManager;\r\n const listType = getNodeType(listTypeOrName, state.schema);\r\n const itemType = getNodeType(itemTypeOrName, state.schema);\r\n const { selection, storedMarks } = state;\r\n const { $from, $to } = selection;\r\n const range = $from.blockRange($to);\r\n const marks = storedMarks || (selection.$to.parentOffset && selection.$from.marks());\r\n if (!range) {\r\n return false;\r\n }\r\n const parentList = findParentNode(node => isList(node.type.name, extensions))(selection);\r\n if (range.depth >= 1 && parentList && range.depth - parentList.depth <= 1) {\r\n // remove list\r\n if (parentList.node.type === listType) {\r\n return commands.liftListItem(itemType);\r\n }\r\n // change list type\r\n if (isList(parentList.node.type.name, extensions)\r\n && listType.validContent(parentList.node.content)\r\n && dispatch) {\r\n return chain()\r\n .command(() => {\r\n tr.setNodeMarkup(parentList.pos, listType);\r\n return true;\r\n })\r\n .command(() => joinListBackwards(tr, listType))\r\n .command(() => joinListForwards(tr, listType))\r\n .run();\r\n }\r\n }\r\n if (!keepMarks || !marks || !dispatch) {\r\n return chain()\r\n // try to convert node to default node if needed\r\n .command(() => {\r\n const canWrapInList = can().wrapInList(listType, attributes);\r\n if (canWrapInList) {\r\n return true;\r\n }\r\n return commands.clearNodes();\r\n })\r\n .wrapInList(listType, attributes)\r\n .command(() => joinListBackwards(tr, listType))\r\n .command(() => joinListForwards(tr, listType))\r\n .run();\r\n }\r\n return (chain()\r\n // try to convert node to default node if needed\r\n .command(() => {\r\n const canWrapInList = can().wrapInList(listType, attributes);\r\n const filteredMarks = marks.filter(mark => splittableMarks.includes(mark.type.name));\r\n tr.ensureMarks(filteredMarks);\r\n if (canWrapInList) {\r\n return true;\r\n }\r\n return commands.clearNodes();\r\n })\r\n .wrapInList(listType, attributes)\r\n .command(() => joinListBackwards(tr, listType))\r\n .command(() => joinListForwards(tr, listType))\r\n .run());\r\n};\n\nconst toggleMark = (typeOrName, attributes = {}, options = {}) => ({ state, commands }) => {\r\n const { extendEmptyMarkRange = false } = options;\r\n const type = getMarkType(typeOrName, state.schema);\r\n const isActive = isMarkActive(state, type, attributes);\r\n if (isActive) {\r\n return commands.unsetMark(type, { extendEmptyMarkRange });\r\n }\r\n return commands.setMark(type, attributes);\r\n};\n\nconst toggleNode = (typeOrName, toggleTypeOrName, attributes = {}) => ({ state, commands }) => {\r\n const type = getNodeType(typeOrName, state.schema);\r\n const toggleType = getNodeType(toggleTypeOrName, state.schema);\r\n const isActive = isNodeActive(state, type, attributes);\r\n if (isActive) {\r\n return commands.setNode(toggleType);\r\n }\r\n return commands.setNode(type, attributes);\r\n};\n\nconst toggleWrap = (typeOrName, attributes = {}) => ({ state, commands }) => {\r\n const type = getNodeType(typeOrName, state.schema);\r\n const isActive = isNodeActive(state, type, attributes);\r\n if (isActive) {\r\n return commands.lift(type);\r\n }\r\n return commands.wrapIn(type, attributes);\r\n};\n\nconst undoInputRule = () => ({ state, dispatch }) => {\r\n const plugins = state.plugins;\r\n for (let i = 0; i < plugins.length; i += 1) {\r\n const plugin = plugins[i];\r\n let undoable;\r\n // @ts-ignore\r\n // eslint-disable-next-line\r\n if (plugin.spec.isInputRules && (undoable = plugin.getState(state))) {\r\n if (dispatch) {\r\n const tr = state.tr;\r\n const toUndo = undoable.transform;\r\n for (let j = toUndo.steps.length - 1; j >= 0; j -= 1) {\r\n tr.step(toUndo.steps[j].invert(toUndo.docs[j]));\r\n }\r\n if (undoable.text) {\r\n const marks = tr.doc.resolve(undoable.from).marks();\r\n tr.replaceWith(undoable.from, undoable.to, state.schema.text(undoable.text, marks));\r\n }\r\n else {\r\n tr.delete(undoable.from, undoable.to);\r\n }\r\n }\r\n return true;\r\n }\r\n }\r\n return false;\r\n};\n\nconst unsetAllMarks = () => ({ tr, dispatch }) => {\r\n const { selection } = tr;\r\n const { empty, ranges } = selection;\r\n if (empty) {\r\n return true;\r\n }\r\n if (dispatch) {\r\n ranges.forEach(range => {\r\n tr.removeMark(range.$from.pos, range.$to.pos);\r\n });\r\n }\r\n return true;\r\n};\n\nconst unsetMark = (typeOrName, options = {}) => ({ tr, state, dispatch }) => {\r\n var _a;\r\n const { extendEmptyMarkRange = false } = options;\r\n const { selection } = tr;\r\n const type = getMarkType(typeOrName, state.schema);\r\n const { $from, empty, ranges } = selection;\r\n if (!dispatch) {\r\n return true;\r\n }\r\n if (empty && extendEmptyMarkRange) {\r\n let { from, to } = selection;\r\n const attrs = (_a = $from.marks().find(mark => mark.type === type)) === null || _a === void 0 ? void 0 : _a.attrs;\r\n const range = getMarkRange($from, type, attrs);\r\n if (range) {\r\n from = range.from;\r\n to = range.to;\r\n }\r\n tr.removeMark(from, to, type);\r\n }\r\n else {\r\n ranges.forEach(range => {\r\n tr.removeMark(range.$from.pos, range.$to.pos, type);\r\n });\r\n }\r\n tr.removeStoredMark(type);\r\n return true;\r\n};\n\nconst updateAttributes = (typeOrName, attributes = {}) => ({ tr, state, dispatch }) => {\r\n let nodeType = null;\r\n let markType = null;\r\n const schemaType = getSchemaTypeNameByName(typeof typeOrName === 'string' ? typeOrName : typeOrName.name, state.schema);\r\n if (!schemaType) {\r\n return false;\r\n }\r\n if (schemaType === 'node') {\r\n nodeType = getNodeType(typeOrName, state.schema);\r\n }\r\n if (schemaType === 'mark') {\r\n markType = getMarkType(typeOrName, state.schema);\r\n }\r\n if (dispatch) {\r\n tr.selection.ranges.forEach(range => {\r\n const from = range.$from.pos;\r\n const to = range.$to.pos;\r\n state.doc.nodesBetween(from, to, (node, pos) => {\r\n if (nodeType && nodeType === node.type) {\r\n tr.setNodeMarkup(pos, undefined, {\r\n ...node.attrs,\r\n ...attributes,\r\n });\r\n }\r\n if (markType && node.marks.length) {\r\n node.marks.forEach(mark => {\r\n if (markType === mark.type) {\r\n const trimmedFrom = Math.max(pos, from);\r\n const trimmedTo = Math.min(pos + node.nodeSize, to);\r\n tr.addMark(trimmedFrom, trimmedTo, markType.create({\r\n ...mark.attrs,\r\n ...attributes,\r\n }));\r\n }\r\n });\r\n }\r\n });\r\n });\r\n }\r\n return true;\r\n};\n\nconst wrapIn = (typeOrName, attributes = {}) => ({ state, dispatch }) => {\r\n const type = getNodeType(typeOrName, state.schema);\r\n return wrapIn$1(type, attributes)(state, dispatch);\r\n};\n\nconst wrapInList = (typeOrName, attributes = {}) => ({ state, dispatch }) => {\r\n const type = getNodeType(typeOrName, state.schema);\r\n return wrapInList$1(type, attributes)(state, dispatch);\r\n};\n\nvar commands = /*#__PURE__*/Object.freeze({\n __proto__: null,\n blur: blur,\n clearContent: clearContent,\n clearNodes: clearNodes,\n command: command,\n createParagraphNear: createParagraphNear,\n cut: cut,\n deleteCurrentNode: deleteCurrentNode,\n deleteNode: deleteNode,\n deleteRange: deleteRange,\n deleteSelection: deleteSelection,\n enter: enter,\n exitCode: exitCode,\n extendMarkRange: extendMarkRange,\n first: first,\n focus: focus,\n forEach: forEach,\n insertContent: insertContent,\n insertContentAt: insertContentAt,\n joinUp: joinUp,\n joinDown: joinDown,\n joinBackward: joinBackward,\n joinForward: joinForward,\n joinItemBackward: joinItemBackward,\n joinItemForward: joinItemForward,\n joinTextblockBackward: joinTextblockBackward,\n joinTextblockForward: joinTextblockForward,\n keyboardShortcut: keyboardShortcut,\n lift: lift,\n liftEmptyBlock: liftEmptyBlock,\n liftListItem: liftListItem,\n newlineInCode: newlineInCode,\n resetAttributes: resetAttributes,\n scrollIntoView: scrollIntoView,\n selectAll: selectAll,\n selectNodeBackward: selectNodeBackward,\n selectNodeForward: selectNodeForward,\n selectParentNode: selectParentNode,\n selectTextblockEnd: selectTextblockEnd,\n selectTextblockStart: selectTextblockStart,\n setContent: setContent,\n setMark: setMark,\n setMeta: setMeta,\n setNode: setNode,\n setNodeSelection: setNodeSelection,\n setTextSelection: setTextSelection,\n sinkListItem: sinkListItem,\n splitBlock: splitBlock,\n splitListItem: splitListItem,\n toggleList: toggleList,\n toggleMark: toggleMark,\n toggleNode: toggleNode,\n toggleWrap: toggleWrap,\n undoInputRule: undoInputRule,\n unsetAllMarks: unsetAllMarks,\n unsetMark: unsetMark,\n updateAttributes: updateAttributes,\n wrapIn: wrapIn,\n wrapInList: wrapInList\n});\n\nconst Commands = Extension.create({\r\n name: 'commands',\r\n addCommands() {\r\n return {\r\n ...commands,\r\n };\r\n },\r\n});\n\nconst Editable = Extension.create({\r\n name: 'editable',\r\n addProseMirrorPlugins() {\r\n return [\r\n new Plugin({\r\n key: new PluginKey('editable'),\r\n props: {\r\n editable: () => this.editor.options.editable,\r\n },\r\n }),\r\n ];\r\n },\r\n});\n\nconst FocusEvents = Extension.create({\r\n name: 'focusEvents',\r\n addProseMirrorPlugins() {\r\n const { editor } = this;\r\n return [\r\n new Plugin({\r\n key: new PluginKey('focusEvents'),\r\n props: {\r\n handleDOMEvents: {\r\n focus: (view, event) => {\r\n editor.isFocused = true;\r\n const transaction = editor.state.tr\r\n .setMeta('focus', { event })\r\n .setMeta('addToHistory', false);\r\n view.dispatch(transaction);\r\n return false;\r\n },\r\n blur: (view, event) => {\r\n editor.isFocused = false;\r\n const transaction = editor.state.tr\r\n .setMeta('blur', { event })\r\n .setMeta('addToHistory', false);\r\n view.dispatch(transaction);\r\n return false;\r\n },\r\n },\r\n },\r\n }),\r\n ];\r\n },\r\n});\n\nconst Keymap = Extension.create({\r\n name: 'keymap',\r\n addKeyboardShortcuts() {\r\n const handleBackspace = () => this.editor.commands.first(({ commands }) => [\r\n () => commands.undoInputRule(),\r\n // maybe convert first text block node to default node\r\n () => commands.command(({ tr }) => {\r\n const { selection, doc } = tr;\r\n const { empty, $anchor } = selection;\r\n const { pos, parent } = $anchor;\r\n const $parentPos = $anchor.parent.isTextblock && pos > 0 ? tr.doc.resolve(pos - 1) : $anchor;\r\n const parentIsIsolating = $parentPos.parent.type.spec.isolating;\r\n const parentPos = $anchor.pos - $anchor.parentOffset;\r\n const isAtStart = (parentIsIsolating && $parentPos.parent.childCount === 1)\r\n ? parentPos === $anchor.pos\r\n : Selection.atStart(doc).from === pos;\r\n if (!empty\r\n || !parent.type.isTextblock\r\n || parent.textContent.length\r\n || !isAtStart\r\n || (isAtStart && $anchor.parent.type.name === 'paragraph') // prevent clearNodes when no nodes to clear, otherwise history stack is appended\r\n ) {\r\n return false;\r\n }\r\n return commands.clearNodes();\r\n }),\r\n () => commands.deleteSelection(),\r\n () => commands.joinBackward(),\r\n () => commands.selectNodeBackward(),\r\n ]);\r\n const handleDelete = () => this.editor.commands.first(({ commands }) => [\r\n () => commands.deleteSelection(),\r\n () => commands.deleteCurrentNode(),\r\n () => commands.joinForward(),\r\n () => commands.selectNodeForward(),\r\n ]);\r\n const handleEnter = () => this.editor.commands.first(({ commands }) => [\r\n () => commands.newlineInCode(),\r\n () => commands.createParagraphNear(),\r\n () => commands.liftEmptyBlock(),\r\n () => commands.splitBlock(),\r\n ]);\r\n const baseKeymap = {\r\n Enter: handleEnter,\r\n 'Mod-Enter': () => this.editor.commands.exitCode(),\r\n Backspace: handleBackspace,\r\n 'Mod-Backspace': handleBackspace,\r\n 'Shift-Backspace': handleBackspace,\r\n Delete: handleDelete,\r\n 'Mod-Delete': handleDelete,\r\n 'Mod-a': () => this.editor.commands.selectAll(),\r\n };\r\n const pcKeymap = {\r\n ...baseKeymap,\r\n };\r\n const macKeymap = {\r\n ...baseKeymap,\r\n 'Ctrl-h': handleBackspace,\r\n 'Alt-Backspace': handleBackspace,\r\n 'Ctrl-d': handleDelete,\r\n 'Ctrl-Alt-Backspace': handleDelete,\r\n 'Alt-Delete': handleDelete,\r\n 'Alt-d': handleDelete,\r\n 'Ctrl-a': () => this.editor.commands.selectTextblockStart(),\r\n 'Ctrl-e': () => this.editor.commands.selectTextblockEnd(),\r\n };\r\n if (isiOS() || isMacOS()) {\r\n return macKeymap;\r\n }\r\n return pcKeymap;\r\n },\r\n addProseMirrorPlugins() {\r\n return [\r\n // With this plugin we check if the whole document was selected and deleted.\r\n // In this case we will additionally call `clearNodes()` to convert e.g. a heading\r\n // to a paragraph if necessary.\r\n // This is an alternative to ProseMirror's `AllSelection`, which doesn’t work well\r\n // with many other commands.\r\n new Plugin({\r\n key: new PluginKey('clearDocument'),\r\n appendTransaction: (transactions, oldState, newState) => {\r\n const docChanges = transactions.some(transaction => transaction.docChanged)\r\n && !oldState.doc.eq(newState.doc);\r\n if (!docChanges) {\r\n return;\r\n }\r\n const { empty, from, to } = oldState.selection;\r\n const allFrom = Selection.atStart(oldState.doc).from;\r\n const allEnd = Selection.atEnd(oldState.doc).to;\r\n const allWasSelected = from === allFrom && to === allEnd;\r\n if (empty || !allWasSelected) {\r\n return;\r\n }\r\n const isEmpty = newState.doc.textBetween(0, newState.doc.content.size, ' ', ' ').length === 0;\r\n if (!isEmpty) {\r\n return;\r\n }\r\n const tr = newState.tr;\r\n const state = createChainableState({\r\n state: newState,\r\n transaction: tr,\r\n });\r\n const { commands } = new CommandManager({\r\n editor: this.editor,\r\n state,\r\n });\r\n commands.clearNodes();\r\n if (!tr.steps.length) {\r\n return;\r\n }\r\n return tr;\r\n },\r\n }),\r\n ];\r\n },\r\n});\n\nconst Tabindex = Extension.create({\r\n name: 'tabindex',\r\n addProseMirrorPlugins() {\r\n return [\r\n new Plugin({\r\n key: new PluginKey('tabindex'),\r\n props: {\r\n attributes: this.editor.isEditable ? { tabindex: '0' } : {},\r\n },\r\n }),\r\n ];\r\n },\r\n});\n\nvar index = /*#__PURE__*/Object.freeze({\n __proto__: null,\n ClipboardTextSerializer: ClipboardTextSerializer,\n Commands: Commands,\n Editable: Editable,\n FocusEvents: FocusEvents,\n Keymap: Keymap,\n Tabindex: Tabindex\n});\n\nclass NodePos {\r\n constructor(pos, editor, isBlock = false, node = null) {\r\n this.currentNode = null;\r\n this.actualDepth = null;\r\n this.isBlock = isBlock;\r\n this.resolvedPos = pos;\r\n this.editor = editor;\r\n this.currentNode = node;\r\n }\r\n get name() {\r\n return this.node.type.name;\r\n }\r\n get node() {\r\n return this.currentNode || this.resolvedPos.node();\r\n }\r\n get element() {\r\n return this.editor.view.domAtPos(this.pos).node;\r\n }\r\n get depth() {\r\n var _a;\r\n return (_a = this.actualDepth) !== null && _a !== void 0 ? _a : this.resolvedPos.depth;\r\n }\r\n get pos() {\r\n return this.resolvedPos.pos;\r\n }\r\n get content() {\r\n return this.node.content;\r\n }\r\n set content(content) {\r\n let from = this.from;\r\n let to = this.to;\r\n if (this.isBlock) {\r\n if (this.content.size === 0) {\r\n console.error(`You can’t set content on a block node. Tried to set content on ${this.name} at ${this.pos}`);\r\n return;\r\n }\r\n from = this.from + 1;\r\n to = this.to - 1;\r\n }\r\n this.editor.commands.insertContentAt({ from, to }, content);\r\n }\r\n get attributes() {\r\n return this.node.attrs;\r\n }\r\n get textContent() {\r\n return this.node.textContent;\r\n }\r\n get size() {\r\n return this.node.nodeSize;\r\n }\r\n get from() {\r\n if (this.isBlock) {\r\n return this.pos;\r\n }\r\n return this.resolvedPos.start(this.resolvedPos.depth);\r\n }\r\n get range() {\r\n return {\r\n from: this.from,\r\n to: this.to,\r\n };\r\n }\r\n get to() {\r\n if (this.isBlock) {\r\n return this.pos + this.size;\r\n }\r\n return this.resolvedPos.end(this.resolvedPos.depth) + (this.node.isText ? 0 : 1);\r\n }\r\n get parent() {\r\n if (this.depth === 0) {\r\n return null;\r\n }\r\n const parentPos = this.resolvedPos.start(this.resolvedPos.depth - 1);\r\n const $pos = this.resolvedPos.doc.resolve(parentPos);\r\n return new NodePos($pos, this.editor);\r\n }\r\n get before() {\r\n let $pos = this.resolvedPos.doc.resolve(this.from - (this.isBlock ? 1 : 2));\r\n if ($pos.depth !== this.depth) {\r\n $pos = this.resolvedPos.doc.resolve(this.from - 3);\r\n }\r\n return new NodePos($pos, this.editor);\r\n }\r\n get after() {\r\n let $pos = this.resolvedPos.doc.resolve(this.to + (this.isBlock ? 2 : 1));\r\n if ($pos.depth !== this.depth) {\r\n $pos = this.resolvedPos.doc.resolve(this.to + 3);\r\n }\r\n return new NodePos($pos, this.editor);\r\n }\r\n get children() {\r\n const children = [];\r\n this.node.content.forEach((node, offset) => {\r\n const isBlock = node.isBlock && !node.isTextblock;\r\n const targetPos = this.pos + offset + 1;\r\n const $pos = this.resolvedPos.doc.resolve(targetPos);\r\n if (!isBlock && $pos.depth <= this.depth) {\r\n return;\r\n }\r\n const childNodePos = new NodePos($pos, this.editor, isBlock, isBlock ? node : null);\r\n if (isBlock) {\r\n childNodePos.actualDepth = this.depth + 1;\r\n }\r\n children.push(new NodePos($pos, this.editor, isBlock, isBlock ? node : null));\r\n });\r\n return children;\r\n }\r\n get firstChild() {\r\n return this.children[0] || null;\r\n }\r\n get lastChild() {\r\n const children = this.children;\r\n return children[children.length - 1] || null;\r\n }\r\n closest(selector, attributes = {}) {\r\n let node = null;\r\n let currentNode = this.parent;\r\n while (currentNode && !node) {\r\n if (currentNode.node.type.name === selector) {\r\n if (Object.keys(attributes).length > 0) {\r\n const nodeAttributes = currentNode.node.attrs;\r\n const attrKeys = Object.keys(attributes);\r\n for (let index = 0; index < attrKeys.length; index += 1) {\r\n const key = attrKeys[index];\r\n if (nodeAttributes[key] !== attributes[key]) {\r\n break;\r\n }\r\n }\r\n }\r\n else {\r\n node = currentNode;\r\n }\r\n }\r\n currentNode = currentNode.parent;\r\n }\r\n return node;\r\n }\r\n querySelector(selector, attributes = {}) {\r\n return this.querySelectorAll(selector, attributes, true)[0] || null;\r\n }\r\n querySelectorAll(selector, attributes = {}, firstItemOnly = false) {\r\n let nodes = [];\r\n if (!this.children || this.children.length === 0) {\r\n return nodes;\r\n }\r\n const attrKeys = Object.keys(attributes);\r\n /**\r\n * Finds all children recursively that match the selector and attributes\r\n * If firstItemOnly is true, it will return the first item found\r\n */\r\n this.children.forEach(childPos => {\r\n // If we already found a node and we only want the first item, we dont need to keep going\r\n if (firstItemOnly && nodes.length > 0) {\r\n return;\r\n }\r\n if (childPos.node.type.name === selector) {\r\n const doesAllAttributesMatch = attrKeys.every(key => attributes[key] === childPos.node.attrs[key]);\r\n if (doesAllAttributesMatch) {\r\n nodes.push(childPos);\r\n }\r\n }\r\n // If we already found a node and we only want the first item, we can stop here and skip the recursion\r\n if (firstItemOnly && nodes.length > 0) {\r\n return;\r\n }\r\n nodes = nodes.concat(childPos.querySelectorAll(selector, attributes, firstItemOnly));\r\n });\r\n return nodes;\r\n }\r\n setAttribute(attributes) {\r\n const oldSelection = this.editor.state.selection;\r\n this.editor.chain().setTextSelection(this.from).updateAttributes(this.node.type.name, attributes).setTextSelection(oldSelection.from)\r\n .run();\r\n }\r\n}\n\nconst style = `.ProseMirror {\n position: relative;\n}\n\n.ProseMirror {\n word-wrap: break-word;\n white-space: pre-wrap;\n white-space: break-spaces;\n -webkit-font-variant-ligatures: none;\n font-variant-ligatures: none;\n font-feature-settings: \"liga\" 0; /* the above doesn't seem to work in Edge */\n}\n\n.ProseMirror [contenteditable=\"false\"] {\n white-space: normal;\n}\n\n.ProseMirror [contenteditable=\"false\"] [contenteditable=\"true\"] {\n white-space: pre-wrap;\n}\n\n.ProseMirror pre {\n white-space: pre-wrap;\n}\n\nimg.ProseMirror-separator {\n display: inline !important;\n border: none !important;\n margin: 0 !important;\n width: 1px !important;\n height: 1px !important;\n}\n\n.ProseMirror-gapcursor {\n display: none;\n pointer-events: none;\n position: absolute;\n margin: 0;\n}\n\n.ProseMirror-gapcursor:after {\n content: \"\";\n display: block;\n position: absolute;\n top: -2px;\n width: 20px;\n border-top: 1px solid black;\n animation: ProseMirror-cursor-blink 1.1s steps(2, start) infinite;\n}\n\n@keyframes ProseMirror-cursor-blink {\n to {\n visibility: hidden;\n }\n}\n\n.ProseMirror-hideselection *::selection {\n background: transparent;\n}\n\n.ProseMirror-hideselection *::-moz-selection {\n background: transparent;\n}\n\n.ProseMirror-hideselection * {\n caret-color: transparent;\n}\n\n.ProseMirror-focused .ProseMirror-gapcursor {\n display: block;\n}\n\n.tippy-box[data-animation=fade][data-state=hidden] {\n opacity: 0\n}`;\n\nfunction createStyleTag(style, nonce, suffix) {\r\n const tiptapStyleTag = document.querySelector(`style[data-tiptap-style${suffix ? `-${suffix}` : ''}]`);\r\n if (tiptapStyleTag !== null) {\r\n return tiptapStyleTag;\r\n }\r\n const styleNode = document.createElement('style');\r\n if (nonce) {\r\n styleNode.setAttribute('nonce', nonce);\r\n }\r\n styleNode.setAttribute(`data-tiptap-style${suffix ? `-${suffix}` : ''}`, '');\r\n styleNode.innerHTML = style;\r\n document.getElementsByTagName('head')[0].appendChild(styleNode);\r\n return styleNode;\r\n}\n\nclass Editor extends EventEmitter {\r\n constructor(options = {}) {\r\n super();\r\n this.isFocused = false;\r\n this.extensionStorage = {};\r\n this.options = {\r\n element: document.createElement('div'),\r\n content: '',\r\n injectCSS: true,\r\n injectNonce: undefined,\r\n extensions: [],\r\n autofocus: false,\r\n editable: true,\r\n editorProps: {},\r\n parseOptions: {},\r\n coreExtensionOptions: {},\r\n enableInputRules: true,\r\n enablePasteRules: true,\r\n enableCoreExtensions: true,\r\n onBeforeCreate: () => null,\r\n onCreate: () => null,\r\n onUpdate: () => null,\r\n onSelectionUpdate: () => null,\r\n onTransaction: () => null,\r\n onFocus: () => null,\r\n onBlur: () => null,\r\n onDestroy: () => null,\r\n };\r\n this.isCapturingTransaction = false;\r\n this.capturedTransaction = null;\r\n this.setOptions(options);\r\n this.createExtensionManager();\r\n this.createCommandManager();\r\n this.createSchema();\r\n this.on('beforeCreate', this.options.onBeforeCreate);\r\n this.emit('beforeCreate', { editor: this });\r\n this.createView();\r\n this.injectCSS();\r\n this.on('create', this.options.onCreate);\r\n this.on('update', this.options.onUpdate);\r\n this.on('selectionUpdate', this.options.onSelectionUpdate);\r\n this.on('transaction', this.options.onTransaction);\r\n this.on('focus', this.options.onFocus);\r\n this.on('blur', this.options.onBlur);\r\n this.on('destroy', this.options.onDestroy);\r\n window.setTimeout(() => {\r\n if (this.isDestroyed) {\r\n return;\r\n }\r\n this.commands.focus(this.options.autofocus);\r\n this.emit('create', { editor: this });\r\n }, 0);\r\n }\r\n /**\r\n * Returns the editor storage.\r\n */\r\n get storage() {\r\n return this.extensionStorage;\r\n }\r\n /**\r\n * An object of all registered commands.\r\n */\r\n get commands() {\r\n return this.commandManager.commands;\r\n }\r\n /**\r\n * Create a command chain to call multiple commands at once.\r\n */\r\n chain() {\r\n return this.commandManager.chain();\r\n }\r\n /**\r\n * Check if a command or a command chain can be executed. Without executing it.\r\n */\r\n can() {\r\n return this.commandManager.can();\r\n }\r\n /**\r\n * Inject CSS styles.\r\n */\r\n injectCSS() {\r\n if (this.options.injectCSS && document) {\r\n this.css = createStyleTag(style, this.options.injectNonce);\r\n }\r\n }\r\n /**\r\n * Update editor options.\r\n *\r\n * @param options A list of options\r\n */\r\n setOptions(options = {}) {\r\n this.options = {\r\n ...this.options,\r\n ...options,\r\n };\r\n if (!this.view || !this.state || this.isDestroyed) {\r\n return;\r\n }\r\n if (this.options.editorProps) {\r\n this.view.setProps(this.options.editorProps);\r\n }\r\n this.view.updateState(this.state);\r\n }\r\n /**\r\n * Update editable state of the editor.\r\n */\r\n setEditable(editable, emitUpdate = true) {\r\n this.setOptions({ editable });\r\n if (emitUpdate) {\r\n this.emit('update', { editor: this, transaction: this.state.tr });\r\n }\r\n }\r\n /**\r\n * Returns whether the editor is editable.\r\n */\r\n get isEditable() {\r\n // since plugins are applied after creating the view\r\n // `editable` is always `true` for one tick.\r\n // that’s why we also have to check for `options.editable`\r\n return this.options.editable && this.view && this.view.editable;\r\n }\r\n /**\r\n * Returns the editor state.\r\n */\r\n get state() {\r\n return this.view.state;\r\n }\r\n /**\r\n * Register a ProseMirror plugin.\r\n *\r\n * @param plugin A ProseMirror plugin\r\n * @param handlePlugins Control how to merge the plugin into the existing plugins.\r\n */\r\n registerPlugin(plugin, handlePlugins) {\r\n const plugins = isFunction(handlePlugins)\r\n ? handlePlugins(plugin, [...this.state.plugins])\r\n : [...this.state.plugins, plugin];\r\n const state = this.state.reconfigure({ plugins });\r\n this.view.updateState(state);\r\n }\r\n /**\r\n * Unregister a ProseMirror plugin.\r\n *\r\n * @param nameOrPluginKey The plugins name\r\n */\r\n unregisterPlugin(nameOrPluginKey) {\r\n if (this.isDestroyed) {\r\n return;\r\n }\r\n // @ts-ignore\r\n const name = typeof nameOrPluginKey === 'string' ? `${nameOrPluginKey}$` : nameOrPluginKey.key;\r\n const state = this.state.reconfigure({\r\n // @ts-ignore\r\n plugins: this.state.plugins.filter(plugin => !plugin.key.startsWith(name)),\r\n });\r\n this.view.updateState(state);\r\n }\r\n /**\r\n * Creates an extension manager.\r\n */\r\n createExtensionManager() {\r\n var _a, _b;\r\n const coreExtensions = this.options.enableCoreExtensions ? [\r\n Editable,\r\n ClipboardTextSerializer.configure({\r\n blockSeparator: (_b = (_a = this.options.coreExtensionOptions) === null || _a === void 0 ? void 0 : _a.clipboardTextSerializer) === null || _b === void 0 ? void 0 : _b.blockSeparator,\r\n }),\r\n Commands,\r\n FocusEvents,\r\n Keymap,\r\n Tabindex,\r\n ] : [];\r\n const allExtensions = [...coreExtensions, ...this.options.extensions].filter(extension => {\r\n return ['extension', 'node', 'mark'].includes(extension === null || extension === void 0 ? void 0 : extension.type);\r\n });\r\n this.extensionManager = new ExtensionManager(allExtensions, this);\r\n }\r\n /**\r\n * Creates an command manager.\r\n */\r\n createCommandManager() {\r\n this.commandManager = new CommandManager({\r\n editor: this,\r\n });\r\n }\r\n /**\r\n * Creates a ProseMirror schema.\r\n */\r\n createSchema() {\r\n this.schema = this.extensionManager.schema;\r\n }\r\n /**\r\n * Creates a ProseMirror view.\r\n */\r\n createView() {\r\n const doc = createDocument(this.options.content, this.schema, this.options.parseOptions);\r\n const selection = resolveFocusPosition(doc, this.options.autofocus);\r\n this.view = new EditorView(this.options.element, {\r\n ...this.options.editorProps,\r\n dispatchTransaction: this.dispatchTransaction.bind(this),\r\n state: EditorState.create({\r\n doc,\r\n selection: selection || undefined,\r\n }),\r\n });\r\n // `editor.view` is not yet available at this time.\r\n // Therefore we will add all plugins and node views directly afterwards.\r\n const newState = this.state.reconfigure({\r\n plugins: this.extensionManager.plugins,\r\n });\r\n this.view.updateState(newState);\r\n this.createNodeViews();\r\n this.prependClass();\r\n // Let’s store the editor instance in the DOM element.\r\n // So we’ll have access to it for tests.\r\n const dom = this.view.dom;\r\n dom.editor = this;\r\n }\r\n /**\r\n * Creates all node views.\r\n */\r\n createNodeViews() {\r\n this.view.setProps({\r\n nodeViews: this.extensionManager.nodeViews,\r\n });\r\n }\r\n /**\r\n * Prepend class name to element.\r\n */\r\n prependClass() {\r\n this.view.dom.className = `tiptap ${this.view.dom.className}`;\r\n }\r\n captureTransaction(fn) {\r\n this.isCapturingTransaction = true;\r\n fn();\r\n this.isCapturingTransaction = false;\r\n const tr = this.capturedTransaction;\r\n this.capturedTransaction = null;\r\n return tr;\r\n }\r\n /**\r\n * The callback over which to send transactions (state updates) produced by the view.\r\n *\r\n * @param transaction An editor state transaction\r\n */\r\n dispatchTransaction(transaction) {\r\n // if the editor / the view of the editor was destroyed\r\n // the transaction should not be dispatched as there is no view anymore.\r\n if (this.view.isDestroyed) {\r\n return;\r\n }\r\n if (this.isCapturingTransaction) {\r\n if (!this.capturedTransaction) {\r\n this.capturedTransaction = transaction;\r\n return;\r\n }\r\n transaction.steps.forEach(step => { var _a; return (_a = this.capturedTransaction) === null || _a === void 0 ? void 0 : _a.step(step); });\r\n return;\r\n }\r\n const state = this.state.apply(transaction);\r\n const selectionHasChanged = !this.state.selection.eq(state.selection);\r\n this.view.updateState(state);\r\n this.emit('transaction', {\r\n editor: this,\r\n transaction,\r\n });\r\n if (selectionHasChanged) {\r\n this.emit('selectionUpdate', {\r\n editor: this,\r\n transaction,\r\n });\r\n }\r\n const focus = transaction.getMeta('focus');\r\n const blur = transaction.getMeta('blur');\r\n if (focus) {\r\n this.emit('focus', {\r\n editor: this,\r\n event: focus.event,\r\n transaction,\r\n });\r\n }\r\n if (blur) {\r\n this.emit('blur', {\r\n editor: this,\r\n event: blur.event,\r\n transaction,\r\n });\r\n }\r\n if (!transaction.docChanged || transaction.getMeta('preventUpdate')) {\r\n return;\r\n }\r\n this.emit('update', {\r\n editor: this,\r\n transaction,\r\n });\r\n }\r\n /**\r\n * Get attributes of the currently selected node or mark.\r\n */\r\n getAttributes(nameOrType) {\r\n return getAttributes(this.state, nameOrType);\r\n }\r\n isActive(nameOrAttributes, attributesOrUndefined) {\r\n const name = typeof nameOrAttributes === 'string' ? nameOrAttributes : null;\r\n const attributes = typeof nameOrAttributes === 'string' ? attributesOrUndefined : nameOrAttributes;\r\n return isActive(this.state, name, attributes);\r\n }\r\n /**\r\n * Get the document as JSON.\r\n */\r\n getJSON() {\r\n return this.state.doc.toJSON();\r\n }\r\n /**\r\n * Get the document as HTML.\r\n */\r\n getHTML() {\r\n return getHTMLFromFragment(this.state.doc.content, this.schema);\r\n }\r\n /**\r\n * Get the document as text.\r\n */\r\n getText(options) {\r\n const { blockSeparator = '\\n\\n', textSerializers = {} } = options || {};\r\n return getText(this.state.doc, {\r\n blockSeparator,\r\n textSerializers: {\r\n ...getTextSerializersFromSchema(this.schema),\r\n ...textSerializers,\r\n },\r\n });\r\n }\r\n /**\r\n * Check if there is no content.\r\n */\r\n get isEmpty() {\r\n return isNodeEmpty(this.state.doc);\r\n }\r\n /**\r\n * Get the number of characters for the current document.\r\n *\r\n * @deprecated\r\n */\r\n getCharacterCount() {\r\n console.warn('[tiptap warn]: \"editor.getCharacterCount()\" is deprecated. Please use \"editor.storage.characterCount.characters()\" instead.');\r\n return this.state.doc.content.size - 2;\r\n }\r\n /**\r\n * Destroy the editor.\r\n */\r\n destroy() {\r\n this.emit('destroy');\r\n if (this.view) {\r\n this.view.destroy();\r\n }\r\n this.removeAllListeners();\r\n }\r\n /**\r\n * Check if the editor is already destroyed.\r\n */\r\n get isDestroyed() {\r\n var _a;\r\n // @ts-ignore\r\n return !((_a = this.view) === null || _a === void 0 ? void 0 : _a.docView);\r\n }\r\n $node(selector, attributes) {\r\n var _a;\r\n return ((_a = this.$doc) === null || _a === void 0 ? void 0 : _a.querySelector(selector, attributes)) || null;\r\n }\r\n $nodes(selector, attributes) {\r\n var _a;\r\n return ((_a = this.$doc) === null || _a === void 0 ? void 0 : _a.querySelectorAll(selector, attributes)) || null;\r\n }\r\n $pos(pos) {\r\n const $pos = this.state.doc.resolve(pos);\r\n return new NodePos($pos, this);\r\n }\r\n get $doc() {\r\n return this.$pos(0);\r\n }\r\n}\n\n/**\r\n * Build an input rule that adds a mark when the\r\n * matched text is typed into it.\r\n * @see https://tiptap.dev/guide/custom-extensions/#input-rules\r\n */\r\nfunction markInputRule(config) {\r\n return new InputRule({\r\n find: config.find,\r\n handler: ({ state, range, match }) => {\r\n const attributes = callOrReturn(config.getAttributes, undefined, match);\r\n if (attributes === false || attributes === null) {\r\n return null;\r\n }\r\n const { tr } = state;\r\n const captureGroup = match[match.length - 1];\r\n const fullMatch = match[0];\r\n if (captureGroup) {\r\n const startSpaces = fullMatch.search(/\\S/);\r\n const textStart = range.from + fullMatch.indexOf(captureGroup);\r\n const textEnd = textStart + captureGroup.length;\r\n const excludedMarks = getMarksBetween(range.from, range.to, state.doc)\r\n .filter(item => {\r\n // @ts-ignore\r\n const excluded = item.mark.type.excluded;\r\n return excluded.find(type => type === config.type && type !== item.mark.type);\r\n })\r\n .filter(item => item.to > textStart);\r\n if (excludedMarks.length) {\r\n return null;\r\n }\r\n if (textEnd < range.to) {\r\n tr.delete(textEnd, range.to);\r\n }\r\n if (textStart > range.from) {\r\n tr.delete(range.from + startSpaces, textStart);\r\n }\r\n const markEnd = range.from + startSpaces + captureGroup.length;\r\n tr.addMark(range.from + startSpaces, markEnd, config.type.create(attributes || {}));\r\n tr.removeStoredMark(config.type);\r\n }\r\n },\r\n });\r\n}\n\n/**\r\n * Build an input rule that adds a node when the\r\n * matched text is typed into it.\r\n * @see https://tiptap.dev/guide/custom-extensions/#input-rules\r\n */\r\nfunction nodeInputRule(config) {\r\n return new InputRule({\r\n find: config.find,\r\n handler: ({ state, range, match }) => {\r\n const attributes = callOrReturn(config.getAttributes, undefined, match) || {};\r\n const { tr } = state;\r\n const start = range.from;\r\n let end = range.to;\r\n const newNode = config.type.create(attributes);\r\n if (match[1]) {\r\n const offset = match[0].lastIndexOf(match[1]);\r\n let matchStart = start + offset;\r\n if (matchStart > end) {\r\n matchStart = end;\r\n }\r\n else {\r\n end = matchStart + match[1].length;\r\n }\r\n // insert last typed character\r\n const lastChar = match[0][match[0].length - 1];\r\n tr.insertText(lastChar, start + match[0].length - 1);\r\n // insert node from input rule\r\n tr.replaceWith(matchStart, end, newNode);\r\n }\r\n else if (match[0]) {\r\n tr.insert(start - 1, config.type.create(attributes)).delete(tr.mapping.map(start), tr.mapping.map(end));\r\n }\r\n tr.scrollIntoView();\r\n },\r\n });\r\n}\n\n/**\r\n * Build an input rule that changes the type of a textblock when the\r\n * matched text is typed into it. When using a regular expresion you’ll\r\n * probably want the regexp to start with `^`, so that the pattern can\r\n * only occur at the start of a textblock.\r\n * @see https://tiptap.dev/guide/custom-extensions/#input-rules\r\n */\r\nfunction textblockTypeInputRule(config) {\r\n return new InputRule({\r\n find: config.find,\r\n handler: ({ state, range, match }) => {\r\n const $start = state.doc.resolve(range.from);\r\n const attributes = callOrReturn(config.getAttributes, undefined, match) || {};\r\n if (!$start.node(-1).canReplaceWith($start.index(-1), $start.indexAfter(-1), config.type)) {\r\n return null;\r\n }\r\n state.tr\r\n .delete(range.from, range.to)\r\n .setBlockType(range.from, range.from, config.type, attributes);\r\n },\r\n });\r\n}\n\n/**\r\n * Build an input rule that replaces text when the\r\n * matched text is typed into it.\r\n * @see https://tiptap.dev/guide/custom-extensions/#input-rules\r\n */\r\nfunction textInputRule(config) {\r\n return new InputRule({\r\n find: config.find,\r\n handler: ({ state, range, match }) => {\r\n let insert = config.replace;\r\n let start = range.from;\r\n const end = range.to;\r\n if (match[1]) {\r\n const offset = match[0].lastIndexOf(match[1]);\r\n insert += match[0].slice(offset + match[1].length);\r\n start += offset;\r\n const cutOff = start - end;\r\n if (cutOff > 0) {\r\n insert = match[0].slice(offset - cutOff, offset) + insert;\r\n start = end;\r\n }\r\n }\r\n state.tr.insertText(insert, start, end);\r\n },\r\n });\r\n}\n\n/**\r\n * Build an input rule for automatically wrapping a textblock when a\r\n * given string is typed. When using a regular expresion you’ll\r\n * probably want the regexp to start with `^`, so that the pattern can\r\n * only occur at the start of a textblock.\r\n *\r\n * `type` is the type of node to wrap in.\r\n *\r\n * By default, if there’s a node with the same type above the newly\r\n * wrapped node, the rule will try to join those\r\n * two nodes. You can pass a join predicate, which takes a regular\r\n * expression match and the node before the wrapped node, and can\r\n * return a boolean to indicate whether a join should happen.\r\n * @see https://tiptap.dev/guide/custom-extensions/#input-rules\r\n */\r\nfunction wrappingInputRule(config) {\r\n return new InputRule({\r\n find: config.find,\r\n handler: ({ state, range, match, chain, }) => {\r\n const attributes = callOrReturn(config.getAttributes, undefined, match) || {};\r\n const tr = state.tr.delete(range.from, range.to);\r\n const $start = tr.doc.resolve(range.from);\r\n const blockRange = $start.blockRange();\r\n const wrapping = blockRange && findWrapping(blockRange, config.type, attributes);\r\n if (!wrapping) {\r\n return null;\r\n }\r\n tr.wrap(blockRange, wrapping);\r\n if (config.keepMarks && config.editor) {\r\n const { selection, storedMarks } = state;\r\n const { splittableMarks } = config.editor.extensionManager;\r\n const marks = storedMarks || (selection.$to.parentOffset && selection.$from.marks());\r\n if (marks) {\r\n const filteredMarks = marks.filter(mark => splittableMarks.includes(mark.type.name));\r\n tr.ensureMarks(filteredMarks);\r\n }\r\n }\r\n if (config.keepAttributes) {\r\n /** If the nodeType is `bulletList` or `orderedList` set the `nodeType` as `listItem` */\r\n const nodeType = config.type.name === 'bulletList' || config.type.name === 'orderedList' ? 'listItem' : 'taskList';\r\n chain().updateAttributes(nodeType, attributes).run();\r\n }\r\n const before = tr.doc.resolve(range.from - 1).nodeBefore;\r\n if (before\r\n && before.type === config.type\r\n && canJoin(tr.doc, range.from - 1)\r\n && (!config.joinPredicate || config.joinPredicate(match, before))) {\r\n tr.join(range.from - 1);\r\n }\r\n },\r\n });\r\n}\n\n/**\r\n * The Mark class is used to create custom mark extensions.\r\n * @see https://tiptap.dev/api/extensions#create-a-new-extension\r\n */\r\nclass Mark {\r\n constructor(config = {}) {\r\n this.type = 'mark';\r\n this.name = 'mark';\r\n this.parent = null;\r\n this.child = null;\r\n this.config = {\r\n name: this.name,\r\n defaultOptions: {},\r\n };\r\n this.config = {\r\n ...this.config,\r\n ...config,\r\n };\r\n this.name = this.config.name;\r\n if (config.defaultOptions && Object.keys(config.defaultOptions).length > 0) {\r\n console.warn(`[tiptap warn]: BREAKING CHANGE: \"defaultOptions\" is deprecated. Please use \"addOptions\" instead. Found in extension: \"${this.name}\".`);\r\n }\r\n // TODO: remove `addOptions` fallback\r\n this.options = this.config.defaultOptions;\r\n if (this.config.addOptions) {\r\n this.options = callOrReturn(getExtensionField(this, 'addOptions', {\r\n name: this.name,\r\n }));\r\n }\r\n this.storage = callOrReturn(getExtensionField(this, 'addStorage', {\r\n name: this.name,\r\n options: this.options,\r\n })) || {};\r\n }\r\n static create(config = {}) {\r\n return new Mark(config);\r\n }\r\n configure(options = {}) {\r\n // return a new instance so we can use the same extension\r\n // with different calls of `configure`\r\n const extension = this.extend();\r\n extension.options = mergeDeep(this.options, options);\r\n extension.storage = callOrReturn(getExtensionField(extension, 'addStorage', {\r\n name: extension.name,\r\n options: extension.options,\r\n }));\r\n return extension;\r\n }\r\n extend(extendedConfig = {}) {\r\n const extension = new Mark({ ...this.config, ...extendedConfig });\r\n extension.parent = this;\r\n this.child = extension;\r\n extension.name = extendedConfig.name ? extendedConfig.name : extension.parent.name;\r\n if (extendedConfig.defaultOptions) {\r\n console.warn(`[tiptap warn]: BREAKING CHANGE: \"defaultOptions\" is deprecated. Please use \"addOptions\" instead. Found in extension: \"${extension.name}\".`);\r\n }\r\n extension.options = callOrReturn(getExtensionField(extension, 'addOptions', {\r\n name: extension.name,\r\n }));\r\n extension.storage = callOrReturn(getExtensionField(extension, 'addStorage', {\r\n name: extension.name,\r\n options: extension.options,\r\n }));\r\n return extension;\r\n }\r\n static handleExit({ editor, mark }) {\r\n const { tr } = editor.state;\r\n const currentPos = editor.state.selection.$from;\r\n const isAtEnd = currentPos.pos === currentPos.end();\r\n if (isAtEnd) {\r\n const currentMarks = currentPos.marks();\r\n const isInMark = !!currentMarks.find(m => (m === null || m === void 0 ? void 0 : m.type.name) === mark.name);\r\n if (!isInMark) {\r\n return false;\r\n }\r\n const removeMark = currentMarks.find(m => (m === null || m === void 0 ? void 0 : m.type.name) === mark.name);\r\n if (removeMark) {\r\n tr.removeStoredMark(removeMark);\r\n }\r\n tr.insertText(' ', currentPos.pos);\r\n editor.view.dispatch(tr);\r\n return true;\r\n }\r\n return false;\r\n }\r\n}\n\n/**\r\n * The Node class is used to create custom node extensions.\r\n * @see https://tiptap.dev/api/extensions#create-a-new-extension\r\n */\r\nclass Node {\r\n constructor(config = {}) {\r\n this.type = 'node';\r\n this.name = 'node';\r\n this.parent = null;\r\n this.child = null;\r\n this.config = {\r\n name: this.name,\r\n defaultOptions: {},\r\n };\r\n this.config = {\r\n ...this.config,\r\n ...config,\r\n };\r\n this.name = this.config.name;\r\n if (config.defaultOptions && Object.keys(config.defaultOptions).length > 0) {\r\n console.warn(`[tiptap warn]: BREAKING CHANGE: \"defaultOptions\" is deprecated. Please use \"addOptions\" instead. Found in extension: \"${this.name}\".`);\r\n }\r\n // TODO: remove `addOptions` fallback\r\n this.options = this.config.defaultOptions;\r\n if (this.config.addOptions) {\r\n this.options = callOrReturn(getExtensionField(this, 'addOptions', {\r\n name: this.name,\r\n }));\r\n }\r\n this.storage = callOrReturn(getExtensionField(this, 'addStorage', {\r\n name: this.name,\r\n options: this.options,\r\n })) || {};\r\n }\r\n static create(config = {}) {\r\n return new Node(config);\r\n }\r\n configure(options = {}) {\r\n // return a new instance so we can use the same extension\r\n // with different calls of `configure`\r\n const extension = this.extend();\r\n extension.options = mergeDeep(this.options, options);\r\n extension.storage = callOrReturn(getExtensionField(extension, 'addStorage', {\r\n name: extension.name,\r\n options: extension.options,\r\n }));\r\n return extension;\r\n }\r\n extend(extendedConfig = {}) {\r\n const extension = new Node({ ...this.config, ...extendedConfig });\r\n extension.parent = this;\r\n this.child = extension;\r\n extension.name = extendedConfig.name ? extendedConfig.name : extension.parent.name;\r\n if (extendedConfig.defaultOptions) {\r\n console.warn(`[tiptap warn]: BREAKING CHANGE: \"defaultOptions\" is deprecated. Please use \"addOptions\" instead. Found in extension: \"${extension.name}\".`);\r\n }\r\n extension.options = callOrReturn(getExtensionField(extension, 'addOptions', {\r\n name: extension.name,\r\n }));\r\n extension.storage = callOrReturn(getExtensionField(extension, 'addStorage', {\r\n name: extension.name,\r\n options: extension.options,\r\n }));\r\n return extension;\r\n }\r\n}\n\nfunction isAndroid() {\r\n return navigator.platform === 'Android' || /android/i.test(navigator.userAgent);\r\n}\n\n/**\r\n * Node views are used to customize the rendered DOM structure of a node.\r\n * @see https://tiptap.dev/guide/node-views\r\n */\r\nclass NodeView {\r\n constructor(component, props, options) {\r\n this.isDragging = false;\r\n this.component = component;\r\n this.editor = props.editor;\r\n this.options = {\r\n stopEvent: null,\r\n ignoreMutation: null,\r\n ...options,\r\n };\r\n this.extension = props.extension;\r\n this.node = props.node;\r\n this.decorations = props.decorations;\r\n this.getPos = props.getPos;\r\n this.mount();\r\n }\r\n mount() {\r\n // eslint-disable-next-line\r\n return;\r\n }\r\n get dom() {\r\n return this.editor.view.dom;\r\n }\r\n get contentDOM() {\r\n return null;\r\n }\r\n onDragStart(event) {\r\n var _a, _b, _c, _d, _e, _f, _g;\r\n const { view } = this.editor;\r\n const target = event.target;\r\n // get the drag handle element\r\n // `closest` is not available for text nodes so we may have to use its parent\r\n const dragHandle = target.nodeType === 3\r\n ? (_a = target.parentElement) === null || _a === void 0 ? void 0 : _a.closest('[data-drag-handle]')\r\n : target.closest('[data-drag-handle]');\r\n if (!this.dom || ((_b = this.contentDOM) === null || _b === void 0 ? void 0 : _b.contains(target)) || !dragHandle) {\r\n return;\r\n }\r\n let x = 0;\r\n let y = 0;\r\n // calculate offset for drag element if we use a different drag handle element\r\n if (this.dom !== dragHandle) {\r\n const domBox = this.dom.getBoundingClientRect();\r\n const handleBox = dragHandle.getBoundingClientRect();\r\n // In React, we have to go through nativeEvent to reach offsetX/offsetY.\r\n const offsetX = (_c = event.offsetX) !== null && _c !== void 0 ? _c : (_d = event.nativeEvent) === null || _d === void 0 ? void 0 : _d.offsetX;\r\n const offsetY = (_e = event.offsetY) !== null && _e !== void 0 ? _e : (_f = event.nativeEvent) === null || _f === void 0 ? void 0 : _f.offsetY;\r\n x = handleBox.x - domBox.x + offsetX;\r\n y = handleBox.y - domBox.y + offsetY;\r\n }\r\n (_g = event.dataTransfer) === null || _g === void 0 ? void 0 : _g.setDragImage(this.dom, x, y);\r\n // we need to tell ProseMirror that we want to move the whole node\r\n // so we create a NodeSelection\r\n const selection = NodeSelection.create(view.state.doc, this.getPos());\r\n const transaction = view.state.tr.setSelection(selection);\r\n view.dispatch(transaction);\r\n }\r\n stopEvent(event) {\r\n var _a;\r\n if (!this.dom) {\r\n return false;\r\n }\r\n if (typeof this.options.stopEvent === 'function') {\r\n return this.options.stopEvent({ event });\r\n }\r\n const target = event.target;\r\n const isInElement = this.dom.contains(target) && !((_a = this.contentDOM) === null || _a === void 0 ? void 0 : _a.contains(target));\r\n // any event from child nodes should be handled by ProseMirror\r\n if (!isInElement) {\r\n return false;\r\n }\r\n const isDragEvent = event.type.startsWith('drag');\r\n const isDropEvent = event.type === 'drop';\r\n const isInput = ['INPUT', 'BUTTON', 'SELECT', 'TEXTAREA'].includes(target.tagName) || target.isContentEditable;\r\n // any input event within node views should be ignored by ProseMirror\r\n if (isInput && !isDropEvent && !isDragEvent) {\r\n return true;\r\n }\r\n const { isEditable } = this.editor;\r\n const { isDragging } = this;\r\n const isDraggable = !!this.node.type.spec.draggable;\r\n const isSelectable = NodeSelection.isSelectable(this.node);\r\n const isCopyEvent = event.type === 'copy';\r\n const isPasteEvent = event.type === 'paste';\r\n const isCutEvent = event.type === 'cut';\r\n const isClickEvent = event.type === 'mousedown';\r\n // ProseMirror tries to drag selectable nodes\r\n // even if `draggable` is set to `false`\r\n // this fix prevents that\r\n if (!isDraggable && isSelectable && isDragEvent) {\r\n event.preventDefault();\r\n }\r\n if (isDraggable && isDragEvent && !isDragging) {\r\n event.preventDefault();\r\n return false;\r\n }\r\n // we have to store that dragging started\r\n if (isDraggable && isEditable && !isDragging && isClickEvent) {\r\n const dragHandle = target.closest('[data-drag-handle]');\r\n const isValidDragHandle = dragHandle && (this.dom === dragHandle || this.dom.contains(dragHandle));\r\n if (isValidDragHandle) {\r\n this.isDragging = true;\r\n document.addEventListener('dragend', () => {\r\n this.isDragging = false;\r\n }, { once: true });\r\n document.addEventListener('drop', () => {\r\n this.isDragging = false;\r\n }, { once: true });\r\n document.addEventListener('mouseup', () => {\r\n this.isDragging = false;\r\n }, { once: true });\r\n }\r\n }\r\n // these events are handled by prosemirror\r\n if (isDragging\r\n || isDropEvent\r\n || isCopyEvent\r\n || isPasteEvent\r\n || isCutEvent\r\n || (isClickEvent && isSelectable)) {\r\n return false;\r\n }\r\n return true;\r\n }\r\n ignoreMutation(mutation) {\r\n if (!this.dom || !this.contentDOM) {\r\n return true;\r\n }\r\n if (typeof this.options.ignoreMutation === 'function') {\r\n return this.options.ignoreMutation({ mutation });\r\n }\r\n // a leaf/atom node is like a black box for ProseMirror\r\n // and should be fully handled by the node view\r\n if (this.node.isLeaf || this.node.isAtom) {\r\n return true;\r\n }\r\n // ProseMirror should handle any selections\r\n if (mutation.type === 'selection') {\r\n return false;\r\n }\r\n // try to prevent a bug on iOS and Android that will break node views on enter\r\n // this is because ProseMirror can’t preventDispatch on enter\r\n // this will lead to a re-render of the node view on enter\r\n // see: https://github.com/ueberdosis/tiptap/issues/1214\r\n // see: https://github.com/ueberdosis/tiptap/issues/2534\r\n if (this.dom.contains(mutation.target)\r\n && mutation.type === 'childList'\r\n && (isiOS() || isAndroid())\r\n && this.editor.isFocused) {\r\n const changedNodes = [\r\n ...Array.from(mutation.addedNodes),\r\n ...Array.from(mutation.removedNodes),\r\n ];\r\n // we’ll check if every changed node is contentEditable\r\n // to make sure it’s probably mutated by ProseMirror\r\n if (changedNodes.every(node => node.isContentEditable)) {\r\n return false;\r\n }\r\n }\r\n // we will allow mutation contentDOM with attributes\r\n // so we can for example adding classes within our node view\r\n if (this.contentDOM === mutation.target && mutation.type === 'attributes') {\r\n return true;\r\n }\r\n // ProseMirror should handle any changes within contentDOM\r\n if (this.contentDOM.contains(mutation.target)) {\r\n return false;\r\n }\r\n return true;\r\n }\r\n updateAttributes(attributes) {\r\n this.editor.commands.command(({ tr }) => {\r\n const pos = this.getPos();\r\n tr.setNodeMarkup(pos, undefined, {\r\n ...this.node.attrs,\r\n ...attributes,\r\n });\r\n return true;\r\n });\r\n }\r\n deleteNode() {\r\n const from = this.getPos();\r\n const to = from + this.node.nodeSize;\r\n this.editor.commands.deleteRange({ from, to });\r\n }\r\n}\n\n/**\r\n * Build an paste rule that adds a mark when the\r\n * matched text is pasted into it.\r\n * @see https://tiptap.dev/guide/custom-extensions/#paste-rules\r\n */\r\nfunction markPasteRule(config) {\r\n return new PasteRule({\r\n find: config.find,\r\n handler: ({ state, range, match, pasteEvent, }) => {\r\n const attributes = callOrReturn(config.getAttributes, undefined, match, pasteEvent);\r\n if (attributes === false || attributes === null) {\r\n return null;\r\n }\r\n const { tr } = state;\r\n const captureGroup = match[match.length - 1];\r\n const fullMatch = match[0];\r\n let markEnd = range.to;\r\n if (captureGroup) {\r\n const startSpaces = fullMatch.search(/\\S/);\r\n const textStart = range.from + fullMatch.indexOf(captureGroup);\r\n const textEnd = textStart + captureGroup.length;\r\n const excludedMarks = getMarksBetween(range.from, range.to, state.doc)\r\n .filter(item => {\r\n // @ts-ignore\r\n const excluded = item.mark.type.excluded;\r\n return excluded.find(type => type === config.type && type !== item.mark.type);\r\n })\r\n .filter(item => item.to > textStart);\r\n if (excludedMarks.length) {\r\n return null;\r\n }\r\n if (textEnd < range.to) {\r\n tr.delete(textEnd, range.to);\r\n }\r\n if (textStart > range.from) {\r\n tr.delete(range.from + startSpaces, textStart);\r\n }\r\n markEnd = range.from + startSpaces + captureGroup.length;\r\n tr.addMark(range.from + startSpaces, markEnd, config.type.create(attributes || {}));\r\n tr.removeStoredMark(config.type);\r\n }\r\n },\r\n });\r\n}\n\n// source: https://stackoverflow.com/a/6969486\r\nfunction escapeForRegEx(string) {\r\n return string.replace(/[-/\\\\^$*+?.()|[\\]{}]/g, '\\\\$&');\r\n}\n\nfunction isString(value) {\r\n return typeof value === 'string';\r\n}\n\n/**\r\n * Build an paste rule that adds a node when the\r\n * matched text is pasted into it.\r\n * @see https://tiptap.dev/guide/custom-extensions/#paste-rules\r\n */\r\nfunction nodePasteRule(config) {\r\n return new PasteRule({\r\n find: config.find,\r\n handler({ match, chain, range, pasteEvent, }) {\r\n const attributes = callOrReturn(config.getAttributes, undefined, match, pasteEvent);\r\n if (attributes === false || attributes === null) {\r\n return null;\r\n }\r\n if (match.input) {\r\n chain().deleteRange(range).insertContentAt(range.from, {\r\n type: config.type.name,\r\n attrs: attributes,\r\n });\r\n }\r\n },\r\n });\r\n}\n\n/**\r\n * Build an paste rule that replaces text when the\r\n * matched text is pasted into it.\r\n * @see https://tiptap.dev/guide/custom-extensions/#paste-rules\r\n */\r\nfunction textPasteRule(config) {\r\n return new PasteRule({\r\n find: config.find,\r\n handler: ({ state, range, match }) => {\r\n let insert = config.replace;\r\n let start = range.from;\r\n const end = range.to;\r\n if (match[1]) {\r\n const offset = match[0].lastIndexOf(match[1]);\r\n insert += match[0].slice(offset + match[1].length);\r\n start += offset;\r\n const cutOff = start - end;\r\n if (cutOff > 0) {\r\n insert = match[0].slice(offset - cutOff, offset) + insert;\r\n start = end;\r\n }\r\n }\r\n state.tr.insertText(insert, start, end);\r\n },\r\n });\r\n}\n\nclass Tracker {\r\n constructor(transaction) {\r\n this.transaction = transaction;\r\n this.currentStep = this.transaction.steps.length;\r\n }\r\n map(position) {\r\n let deleted = false;\r\n const mappedPosition = this.transaction.steps\r\n .slice(this.currentStep)\r\n .reduce((newPosition, step) => {\r\n const mapResult = step.getMap().mapResult(newPosition);\r\n if (mapResult.deleted) {\r\n deleted = true;\r\n }\r\n return mapResult.pos;\r\n }, position);\r\n return {\r\n position: mappedPosition,\r\n deleted,\r\n };\r\n }\r\n}\n\nexport { CommandManager, Editor, Extension, InputRule, Mark, Node, NodePos, NodeView, PasteRule, Tracker, callOrReturn, combineTransactionSteps, createChainableState, createDocument, createNodeFromContent, createStyleTag, defaultBlockAt, deleteProps, elementFromString, escapeForRegEx, index as extensions, findChildren, findChildrenInRange, findDuplicates, findParentNode, findParentNodeClosestToPos, fromString, generateHTML, generateJSON, generateText, getAttributes, getAttributesFromExtensions, getChangedRanges, getDebugJSON, getExtensionField, getHTMLFromFragment, getMarkAttributes, getMarkRange, getMarkType, getMarksBetween, getNodeAtPosition, getNodeAttributes, getNodeType, getRenderedAttributes, getSchema, getSchemaByResolvedExtensions, getSchemaTypeByName, getSchemaTypeNameByName, getSplittedAttributes, getText, getTextBetween, getTextContentFromNodes, getTextSerializersFromSchema, injectExtensionAttributesToParseRule, inputRulesPlugin, isActive, isAtEndOfNode, isAtStartOfNode, isEmptyObject, isExtensionRulesEnabled, isFunction, isList, isMacOS, isMarkActive, isNodeActive, isNodeEmpty, isNodeSelection, isNumber, isPlainObject, isRegExp, isString, isTextSelection, isiOS, markInputRule, markPasteRule, mergeAttributes, mergeDeep, minMax, nodeInputRule, nodePasteRule, objectIncludes, pasteRulesPlugin, posToDOMRect, removeDuplicates, resolveFocusPosition, selectionToInsertionEnd, splitExtensions, textInputRule, textPasteRule, textblockTypeInputRule, wrappingInputRule };\n//# sourceMappingURL=index.js.map\n","import { isTextSelection, isNodeSelection, posToDOMRect, Extension } from '@tiptap/core';\nimport { Plugin, PluginKey } from '@tiptap/pm/state';\nimport tippy from 'tippy.js';\n\nclass BubbleMenuView {\r\n constructor({ editor, element, view, tippyOptions = {}, updateDelay = 250, shouldShow, }) {\r\n this.preventHide = false;\r\n this.shouldShow = ({ view, state, from, to, }) => {\r\n const { doc, selection } = state;\r\n const { empty } = selection;\r\n // Sometime check for `empty` is not enough.\r\n // Doubleclick an empty paragraph returns a node size of 2.\r\n // So we check also for an empty text size.\r\n const isEmptyTextBlock = !doc.textBetween(from, to).length && isTextSelection(state.selection);\r\n // When clicking on a element inside the bubble menu the editor \"blur\" event\r\n // is called and the bubble menu item is focussed. In this case we should\r\n // consider the menu as part of the editor and keep showing the menu\r\n const isChildOfMenu = this.element.contains(document.activeElement);\r\n const hasEditorFocus = view.hasFocus() || isChildOfMenu;\r\n if (!hasEditorFocus || empty || isEmptyTextBlock || !this.editor.isEditable) {\r\n return false;\r\n }\r\n return true;\r\n };\r\n this.mousedownHandler = () => {\r\n this.preventHide = true;\r\n };\r\n this.dragstartHandler = () => {\r\n this.hide();\r\n };\r\n this.focusHandler = () => {\r\n // we use `setTimeout` to make sure `selection` is already updated\r\n setTimeout(() => this.update(this.editor.view));\r\n };\r\n this.blurHandler = ({ event }) => {\r\n var _a;\r\n if (this.preventHide) {\r\n this.preventHide = false;\r\n return;\r\n }\r\n if ((event === null || event === void 0 ? void 0 : event.relatedTarget) && ((_a = this.element.parentNode) === null || _a === void 0 ? void 0 : _a.contains(event.relatedTarget))) {\r\n return;\r\n }\r\n this.hide();\r\n };\r\n this.tippyBlurHandler = (event) => {\r\n this.blurHandler({ event });\r\n };\r\n this.handleDebouncedUpdate = (view, oldState) => {\r\n const selectionChanged = !(oldState === null || oldState === void 0 ? void 0 : oldState.selection.eq(view.state.selection));\r\n const docChanged = !(oldState === null || oldState === void 0 ? void 0 : oldState.doc.eq(view.state.doc));\r\n if (!selectionChanged && !docChanged) {\r\n return;\r\n }\r\n if (this.updateDebounceTimer) {\r\n clearTimeout(this.updateDebounceTimer);\r\n }\r\n this.updateDebounceTimer = window.setTimeout(() => {\r\n this.updateHandler(view, selectionChanged, docChanged, oldState);\r\n }, this.updateDelay);\r\n };\r\n this.updateHandler = (view, selectionChanged, docChanged, oldState) => {\r\n var _a, _b, _c;\r\n const { state, composing } = view;\r\n const { selection } = state;\r\n const isSame = !selectionChanged && !docChanged;\r\n if (composing || isSame) {\r\n return;\r\n }\r\n this.createTooltip();\r\n // support for CellSelections\r\n const { ranges } = selection;\r\n const from = Math.min(...ranges.map(range => range.$from.pos));\r\n const to = Math.max(...ranges.map(range => range.$to.pos));\r\n const shouldShow = (_a = this.shouldShow) === null || _a === void 0 ? void 0 : _a.call(this, {\r\n editor: this.editor,\r\n view,\r\n state,\r\n oldState,\r\n from,\r\n to,\r\n });\r\n if (!shouldShow) {\r\n this.hide();\r\n return;\r\n }\r\n (_b = this.tippy) === null || _b === void 0 ? void 0 : _b.setProps({\r\n getReferenceClientRect: ((_c = this.tippyOptions) === null || _c === void 0 ? void 0 : _c.getReferenceClientRect)\r\n || (() => {\r\n if (isNodeSelection(state.selection)) {\r\n let node = view.nodeDOM(from);\r\n const nodeViewWrapper = node.dataset.nodeViewWrapper ? node : node.querySelector('[data-node-view-wrapper]');\r\n if (nodeViewWrapper) {\r\n node = nodeViewWrapper.firstChild;\r\n }\r\n if (node) {\r\n return node.getBoundingClientRect();\r\n }\r\n }\r\n return posToDOMRect(view, from, to);\r\n }),\r\n });\r\n this.show();\r\n };\r\n this.editor = editor;\r\n this.element = element;\r\n this.view = view;\r\n this.updateDelay = updateDelay;\r\n if (shouldShow) {\r\n this.shouldShow = shouldShow;\r\n }\r\n this.element.addEventListener('mousedown', this.mousedownHandler, { capture: true });\r\n this.view.dom.addEventListener('dragstart', this.dragstartHandler);\r\n this.editor.on('focus', this.focusHandler);\r\n this.editor.on('blur', this.blurHandler);\r\n this.tippyOptions = tippyOptions;\r\n // Detaches menu content from its current parent\r\n this.element.remove();\r\n this.element.style.visibility = 'visible';\r\n }\r\n createTooltip() {\r\n const { element: editorElement } = this.editor.options;\r\n const editorIsAttached = !!editorElement.parentElement;\r\n if (this.tippy || !editorIsAttached) {\r\n return;\r\n }\r\n this.tippy = tippy(editorElement, {\r\n duration: 0,\r\n getReferenceClientRect: null,\r\n content: this.element,\r\n interactive: true,\r\n trigger: 'manual',\r\n placement: 'top',\r\n hideOnClick: 'toggle',\r\n ...this.tippyOptions,\r\n });\r\n // maybe we have to hide tippy on its own blur event as well\r\n if (this.tippy.popper.firstChild) {\r\n this.tippy.popper.firstChild.addEventListener('blur', this.tippyBlurHandler);\r\n }\r\n }\r\n update(view, oldState) {\r\n const { state } = view;\r\n const hasValidSelection = state.selection.$from.pos !== state.selection.$to.pos;\r\n if (this.updateDelay > 0 && hasValidSelection) {\r\n this.handleDebouncedUpdate(view, oldState);\r\n return;\r\n }\r\n const selectionChanged = !(oldState === null || oldState === void 0 ? void 0 : oldState.selection.eq(view.state.selection));\r\n const docChanged = !(oldState === null || oldState === void 0 ? void 0 : oldState.doc.eq(view.state.doc));\r\n this.updateHandler(view, selectionChanged, docChanged, oldState);\r\n }\r\n show() {\r\n var _a;\r\n (_a = this.tippy) === null || _a === void 0 ? void 0 : _a.show();\r\n }\r\n hide() {\r\n var _a;\r\n (_a = this.tippy) === null || _a === void 0 ? void 0 : _a.hide();\r\n }\r\n destroy() {\r\n var _a, _b;\r\n if ((_a = this.tippy) === null || _a === void 0 ? void 0 : _a.popper.firstChild) {\r\n this.tippy.popper.firstChild.removeEventListener('blur', this.tippyBlurHandler);\r\n }\r\n (_b = this.tippy) === null || _b === void 0 ? void 0 : _b.destroy();\r\n this.element.removeEventListener('mousedown', this.mousedownHandler, { capture: true });\r\n this.view.dom.removeEventListener('dragstart', this.dragstartHandler);\r\n this.editor.off('focus', this.focusHandler);\r\n this.editor.off('blur', this.blurHandler);\r\n }\r\n}\r\nconst BubbleMenuPlugin = (options) => {\r\n return new Plugin({\r\n key: typeof options.pluginKey === 'string' ? new PluginKey(options.pluginKey) : options.pluginKey,\r\n view: view => new BubbleMenuView({ view, ...options }),\r\n });\r\n};\n\n/**\r\n * This extension allows you to create a bubble menu.\r\n * @see https://tiptap.dev/api/extensions/bubble-menu\r\n */\r\nconst BubbleMenu = Extension.create({\r\n name: 'bubbleMenu',\r\n addOptions() {\r\n return {\r\n element: null,\r\n tippyOptions: {},\r\n pluginKey: 'bubbleMenu',\r\n updateDelay: undefined,\r\n shouldShow: null,\r\n };\r\n },\r\n addProseMirrorPlugins() {\r\n if (!this.options.element) {\r\n return [];\r\n }\r\n return [\r\n BubbleMenuPlugin({\r\n pluginKey: this.options.pluginKey,\r\n editor: this.editor,\r\n element: this.options.element,\r\n tippyOptions: this.options.tippyOptions,\r\n updateDelay: this.options.updateDelay,\r\n shouldShow: this.options.shouldShow,\r\n }),\r\n ];\r\n },\r\n});\n\nexport { BubbleMenu, BubbleMenuPlugin, BubbleMenuView, BubbleMenu as default };\n//# sourceMappingURL=index.js.map\n","import { BubbleMenuPlugin } from '@tiptap/extension-bubble-menu';\nimport React, { forwardRef, useRef, useState, useEffect, createContext, useContext } from 'react';\nimport ReactDOM, { flushSync } from 'react-dom';\nimport { Editor as Editor$1, NodeView } from '@tiptap/core';\nexport * from '@tiptap/core';\nimport { FloatingMenuPlugin } from '@tiptap/extension-floating-menu';\n\nconst mergeRefs = (...refs) => {\r\n return (node) => {\r\n refs.forEach(ref => {\r\n if (typeof ref === 'function') {\r\n ref(node);\r\n }\r\n else if (ref) {\r\n ref.current = node;\r\n }\r\n });\r\n };\r\n};\r\nconst Portals = ({ renderers }) => {\r\n return (React.createElement(React.Fragment, null, Object.entries(renderers).map(([key, renderer]) => {\r\n return ReactDOM.createPortal(renderer.reactElement, renderer.element, key);\r\n })));\r\n};\r\nclass PureEditorContent extends React.Component {\r\n constructor(props) {\r\n super(props);\r\n this.editorContentRef = React.createRef();\r\n this.initialized = false;\r\n this.state = {\r\n renderers: {},\r\n };\r\n }\r\n componentDidMount() {\r\n this.init();\r\n }\r\n componentDidUpdate() {\r\n this.init();\r\n }\r\n init() {\r\n const { editor } = this.props;\r\n if (editor && editor.options.element) {\r\n if (editor.contentComponent) {\r\n return;\r\n }\r\n const element = this.editorContentRef.current;\r\n element.append(...editor.options.element.childNodes);\r\n editor.setOptions({\r\n element,\r\n });\r\n editor.contentComponent = this;\r\n editor.createNodeViews();\r\n this.initialized = true;\r\n }\r\n }\r\n maybeFlushSync(fn) {\r\n // Avoid calling flushSync until the editor is initialized.\r\n // Initialization happens during the componentDidMount or componentDidUpdate\r\n // lifecycle methods, and React doesn't allow calling flushSync from inside\r\n // a lifecycle method.\r\n if (this.initialized) {\r\n flushSync(fn);\r\n }\r\n else {\r\n fn();\r\n }\r\n }\r\n setRenderer(id, renderer) {\r\n this.maybeFlushSync(() => {\r\n this.setState(({ renderers }) => ({\r\n renderers: {\r\n ...renderers,\r\n [id]: renderer,\r\n },\r\n }));\r\n });\r\n }\r\n removeRenderer(id) {\r\n this.maybeFlushSync(() => {\r\n this.setState(({ renderers }) => {\r\n const nextRenderers = { ...renderers };\r\n delete nextRenderers[id];\r\n return { renderers: nextRenderers };\r\n });\r\n });\r\n }\r\n componentWillUnmount() {\r\n const { editor } = this.props;\r\n if (!editor) {\r\n return;\r\n }\r\n this.initialized = false;\r\n if (!editor.isDestroyed) {\r\n editor.view.setProps({\r\n nodeViews: {},\r\n });\r\n }\r\n editor.contentComponent = null;\r\n if (!editor.options.element.firstChild) {\r\n return;\r\n }\r\n const newElement = document.createElement('div');\r\n newElement.append(...editor.options.element.childNodes);\r\n editor.setOptions({\r\n element: newElement,\r\n });\r\n }\r\n render() {\r\n const { editor, innerRef, ...rest } = this.props;\r\n return (React.createElement(React.Fragment, null,\r\n React.createElement(\"div\", { ref: mergeRefs(innerRef, this.editorContentRef), ...rest }),\r\n React.createElement(Portals, { renderers: this.state.renderers })));\r\n }\r\n}\r\n// EditorContent should be re-created whenever the Editor instance changes\r\nconst EditorContentWithKey = forwardRef((props, ref) => {\r\n const key = React.useMemo(() => {\r\n return Math.floor(Math.random() * 0xFFFFFFFF).toString();\r\n }, [props.editor]);\r\n // Can't use JSX here because it conflicts with the type definition of Vue's JSX, so use createElement\r\n return React.createElement(PureEditorContent, {\r\n key,\r\n innerRef: ref,\r\n ...props,\r\n });\r\n});\r\nconst EditorContent = React.memo(EditorContentWithKey);\n\nclass Editor extends Editor$1 {\r\n constructor() {\r\n super(...arguments);\r\n this.contentComponent = null;\r\n }\r\n}\n\n/**\r\n * This hook allows you to create an editor instance.\r\n * @param options The editor options\r\n * @param deps The dependencies to watch for changes\r\n * @returns The editor instance\r\n * @example const editor = useEditor({ extensions: [...] })\r\n */\r\nconst useEditor = (options = {}, deps = []) => {\r\n const editorRef = useRef(null);\r\n const [, forceUpdate] = useState({});\r\n const { onBeforeCreate, onBlur, onCreate, onDestroy, onFocus, onSelectionUpdate, onTransaction, onUpdate, } = options;\r\n const onBeforeCreateRef = useRef(onBeforeCreate);\r\n const onBlurRef = useRef(onBlur);\r\n const onCreateRef = useRef(onCreate);\r\n const onDestroyRef = useRef(onDestroy);\r\n const onFocusRef = useRef(onFocus);\r\n const onSelectionUpdateRef = useRef(onSelectionUpdate);\r\n const onTransactionRef = useRef(onTransaction);\r\n const onUpdateRef = useRef(onUpdate);\r\n // This effect will handle updating the editor instance\r\n // when the event handlers change.\r\n useEffect(() => {\r\n if (!editorRef.current) {\r\n return;\r\n }\r\n if (onBeforeCreate) {\r\n editorRef.current.off('beforeCreate', onBeforeCreateRef.current);\r\n editorRef.current.on('beforeCreate', onBeforeCreate);\r\n onBeforeCreateRef.current = onBeforeCreate;\r\n }\r\n if (onBlur) {\r\n editorRef.current.off('blur', onBlurRef.current);\r\n editorRef.current.on('blur', onBlur);\r\n onBlurRef.current = onBlur;\r\n }\r\n if (onCreate) {\r\n editorRef.current.off('create', onCreateRef.current);\r\n editorRef.current.on('create', onCreate);\r\n onCreateRef.current = onCreate;\r\n }\r\n if (onDestroy) {\r\n editorRef.current.off('destroy', onDestroyRef.current);\r\n editorRef.current.on('destroy', onDestroy);\r\n onDestroyRef.current = onDestroy;\r\n }\r\n if (onFocus) {\r\n editorRef.current.off('focus', onFocusRef.current);\r\n editorRef.current.on('focus', onFocus);\r\n onFocusRef.current = onFocus;\r\n }\r\n if (onSelectionUpdate) {\r\n editorRef.current.off('selectionUpdate', onSelectionUpdateRef.current);\r\n editorRef.current.on('selectionUpdate', onSelectionUpdate);\r\n onSelectionUpdateRef.current = onSelectionUpdate;\r\n }\r\n if (onTransaction) {\r\n editorRef.current.off('transaction', onTransactionRef.current);\r\n editorRef.current.on('transaction', onTransaction);\r\n onTransactionRef.current = onTransaction;\r\n }\r\n if (onUpdate) {\r\n editorRef.current.off('update', onUpdateRef.current);\r\n editorRef.current.on('update', onUpdate);\r\n onUpdateRef.current = onUpdate;\r\n }\r\n }, [onBeforeCreate, onBlur, onCreate, onDestroy, onFocus, onSelectionUpdate, onTransaction, onUpdate, editorRef.current]);\r\n useEffect(() => {\r\n let isMounted = true;\r\n const editor = new Editor(options);\r\n editorRef.current = editor;\r\n editorRef.current.on('transaction', () => {\r\n requestAnimationFrame(() => {\r\n requestAnimationFrame(() => {\r\n if (isMounted) {\r\n forceUpdate({});\r\n }\r\n });\r\n });\r\n });\r\n return () => {\r\n isMounted = false;\r\n editor.destroy();\r\n };\r\n }, deps);\r\n return editorRef.current;\r\n};\n\nconst EditorContext = createContext({\r\n editor: null,\r\n});\r\nconst EditorConsumer = EditorContext.Consumer;\r\nconst useCurrentEditor = () => useContext(EditorContext);\r\nconst EditorProvider = ({ children, slotAfter, slotBefore, ...editorOptions }) => {\r\n const editor = useEditor(editorOptions);\r\n if (!editor) {\r\n return null;\r\n }\r\n return (React.createElement(EditorContext.Provider, { value: { editor } },\r\n slotBefore,\r\n React.createElement(EditorConsumer, null, ({ editor: currentEditor }) => (React.createElement(EditorContent, { editor: currentEditor }))),\r\n children,\r\n slotAfter));\r\n};\n\nconst BubbleMenu = (props) => {\r\n const [element, setElement] = useState(null);\r\n const { editor: currentEditor } = useCurrentEditor();\r\n useEffect(() => {\r\n var _a;\r\n if (!element) {\r\n return;\r\n }\r\n if (((_a = props.editor) === null || _a === void 0 ? void 0 : _a.isDestroyed) || (currentEditor === null || currentEditor === void 0 ? void 0 : currentEditor.isDestroyed)) {\r\n return;\r\n }\r\n const { pluginKey = 'bubbleMenu', editor, tippyOptions = {}, updateDelay, shouldShow = null, } = props;\r\n const menuEditor = editor || currentEditor;\r\n if (!menuEditor) {\r\n console.warn('BubbleMenu component is not rendered inside of an editor component or does not have editor prop.');\r\n return;\r\n }\r\n const plugin = BubbleMenuPlugin({\r\n updateDelay,\r\n editor: menuEditor,\r\n element,\r\n pluginKey,\r\n shouldShow,\r\n tippyOptions,\r\n });\r\n menuEditor.registerPlugin(plugin);\r\n return () => menuEditor.unregisterPlugin(pluginKey);\r\n }, [props.editor, currentEditor, element]);\r\n return (React.createElement(\"div\", { ref: setElement, className: props.className, style: { visibility: 'hidden' } }, props.children));\r\n};\n\nconst FloatingMenu = (props) => {\r\n const [element, setElement] = useState(null);\r\n const { editor: currentEditor } = useCurrentEditor();\r\n useEffect(() => {\r\n var _a;\r\n if (!element) {\r\n return;\r\n }\r\n if (((_a = props.editor) === null || _a === void 0 ? void 0 : _a.isDestroyed) || (currentEditor === null || currentEditor === void 0 ? void 0 : currentEditor.isDestroyed)) {\r\n return;\r\n }\r\n const { pluginKey = 'floatingMenu', editor, tippyOptions = {}, shouldShow = null, } = props;\r\n const menuEditor = editor || currentEditor;\r\n if (!menuEditor) {\r\n console.warn('FloatingMenu component is not rendered inside of an editor component or does not have editor prop.');\r\n return;\r\n }\r\n const plugin = FloatingMenuPlugin({\r\n pluginKey,\r\n editor: menuEditor,\r\n element,\r\n tippyOptions,\r\n shouldShow,\r\n });\r\n menuEditor.registerPlugin(plugin);\r\n return () => menuEditor.unregisterPlugin(pluginKey);\r\n }, [\r\n props.editor,\r\n currentEditor,\r\n element,\r\n ]);\r\n return (React.createElement(\"div\", { ref: setElement, className: props.className, style: { visibility: 'hidden' } }, props.children));\r\n};\n\nconst ReactNodeViewContext = createContext({\r\n onDragStart: undefined,\r\n});\r\nconst useReactNodeView = () => useContext(ReactNodeViewContext);\n\nconst NodeViewContent = props => {\r\n const Tag = props.as || 'div';\r\n const { nodeViewContentRef } = useReactNodeView();\r\n return (React.createElement(Tag, { ...props, ref: nodeViewContentRef, \"data-node-view-content\": \"\", style: {\r\n whiteSpace: 'pre-wrap',\r\n ...props.style,\r\n } }));\r\n};\n\nconst NodeViewWrapper = React.forwardRef((props, ref) => {\r\n const { onDragStart } = useReactNodeView();\r\n const Tag = props.as || 'div';\r\n return (React.createElement(Tag, { ...props, ref: ref, \"data-node-view-wrapper\": \"\", onDragStart: onDragStart, style: {\r\n whiteSpace: 'normal',\r\n ...props.style,\r\n } }));\r\n});\n\n/**\r\n * Check if a component is a class component.\r\n * @param Component\r\n * @returns {boolean}\r\n */\r\nfunction isClassComponent(Component) {\r\n return !!(typeof Component === 'function'\r\n && Component.prototype\r\n && Component.prototype.isReactComponent);\r\n}\r\n/**\r\n * Check if a component is a forward ref component.\r\n * @param Component\r\n * @returns {boolean}\r\n */\r\nfunction isForwardRefComponent(Component) {\r\n var _a;\r\n return !!(typeof Component === 'object'\r\n && ((_a = Component.$$typeof) === null || _a === void 0 ? void 0 : _a.toString()) === 'Symbol(react.forward_ref)');\r\n}\r\n/**\r\n * The ReactRenderer class. It's responsible for rendering React components inside the editor.\r\n * @example\r\n * new ReactRenderer(MyComponent, {\r\n * editor,\r\n * props: {\r\n * foo: 'bar',\r\n * },\r\n * as: 'span',\r\n * })\r\n*/\r\nclass ReactRenderer {\r\n constructor(component, { editor, props = {}, as = 'div', className = '', attrs, }) {\r\n this.ref = null;\r\n this.id = Math.floor(Math.random() * 0xFFFFFFFF).toString();\r\n this.component = component;\r\n this.editor = editor;\r\n this.props = props;\r\n this.element = document.createElement(as);\r\n this.element.classList.add('react-renderer');\r\n if (className) {\r\n this.element.classList.add(...className.split(' '));\r\n }\r\n if (attrs) {\r\n Object.keys(attrs).forEach(key => {\r\n this.element.setAttribute(key, attrs[key]);\r\n });\r\n }\r\n this.render();\r\n }\r\n render() {\r\n var _a, _b;\r\n const Component = this.component;\r\n const props = this.props;\r\n if (isClassComponent(Component) || isForwardRefComponent(Component)) {\r\n props.ref = (ref) => {\r\n this.ref = ref;\r\n };\r\n }\r\n this.reactElement = React.createElement(Component, { ...props });\r\n (_b = (_a = this.editor) === null || _a === void 0 ? void 0 : _a.contentComponent) === null || _b === void 0 ? void 0 : _b.setRenderer(this.id, this);\r\n }\r\n updateProps(props = {}) {\r\n this.props = {\r\n ...this.props,\r\n ...props,\r\n };\r\n this.render();\r\n }\r\n destroy() {\r\n var _a, _b;\r\n (_b = (_a = this.editor) === null || _a === void 0 ? void 0 : _a.contentComponent) === null || _b === void 0 ? void 0 : _b.removeRenderer(this.id);\r\n }\r\n}\n\nclass ReactNodeView extends NodeView {\r\n mount() {\r\n const props = {\r\n editor: this.editor,\r\n node: this.node,\r\n decorations: this.decorations,\r\n selected: false,\r\n extension: this.extension,\r\n getPos: () => this.getPos(),\r\n updateAttributes: (attributes = {}) => this.updateAttributes(attributes),\r\n deleteNode: () => this.deleteNode(),\r\n };\r\n if (!this.component.displayName) {\r\n const capitalizeFirstChar = (string) => {\r\n return string.charAt(0).toUpperCase() + string.substring(1);\r\n };\r\n this.component.displayName = capitalizeFirstChar(this.extension.name);\r\n }\r\n const ReactNodeViewProvider = componentProps => {\r\n const Component = this.component;\r\n const onDragStart = this.onDragStart.bind(this);\r\n const nodeViewContentRef = element => {\r\n if (element && this.contentDOMElement && element.firstChild !== this.contentDOMElement) {\r\n element.appendChild(this.contentDOMElement);\r\n }\r\n };\r\n return (React.createElement(React.Fragment, null,\r\n React.createElement(ReactNodeViewContext.Provider, { value: { onDragStart, nodeViewContentRef } },\r\n React.createElement(Component, { ...componentProps }))));\r\n };\r\n ReactNodeViewProvider.displayName = 'ReactNodeView';\r\n if (this.node.isLeaf) {\r\n this.contentDOMElement = null;\r\n }\r\n else if (this.options.contentDOMElementTag) {\r\n this.contentDOMElement = document.createElement(this.options.contentDOMElementTag);\r\n }\r\n else {\r\n this.contentDOMElement = document.createElement(this.node.isInline ? 'span' : 'div');\r\n }\r\n if (this.contentDOMElement) {\r\n // For some reason the whiteSpace prop is not inherited properly in Chrome and Safari\r\n // With this fix it seems to work fine\r\n // See: https://github.com/ueberdosis/tiptap/issues/1197\r\n this.contentDOMElement.style.whiteSpace = 'inherit';\r\n }\r\n let as = this.node.isInline ? 'span' : 'div';\r\n if (this.options.as) {\r\n as = this.options.as;\r\n }\r\n const { className = '' } = this.options;\r\n this.handleSelectionUpdate = this.handleSelectionUpdate.bind(this);\r\n this.editor.on('selectionUpdate', this.handleSelectionUpdate);\r\n this.renderer = new ReactRenderer(ReactNodeViewProvider, {\r\n editor: this.editor,\r\n props,\r\n as,\r\n className: `node-${this.node.type.name} ${className}`.trim(),\r\n attrs: this.options.attrs,\r\n });\r\n }\r\n get dom() {\r\n var _a;\r\n if (this.renderer.element.firstElementChild\r\n && !((_a = this.renderer.element.firstElementChild) === null || _a === void 0 ? void 0 : _a.hasAttribute('data-node-view-wrapper'))) {\r\n throw Error('Please use the NodeViewWrapper component for your node view.');\r\n }\r\n return this.renderer.element;\r\n }\r\n get contentDOM() {\r\n if (this.node.isLeaf) {\r\n return null;\r\n }\r\n return this.contentDOMElement;\r\n }\r\n handleSelectionUpdate() {\r\n const { from, to } = this.editor.state.selection;\r\n if (from <= this.getPos() && to >= this.getPos() + this.node.nodeSize) {\r\n if (this.renderer.props.selected) {\r\n return;\r\n }\r\n this.selectNode();\r\n }\r\n else {\r\n if (!this.renderer.props.selected) {\r\n return;\r\n }\r\n this.deselectNode();\r\n }\r\n }\r\n update(node, decorations) {\r\n const updateProps = (props) => {\r\n this.renderer.updateProps(props);\r\n };\r\n if (node.type !== this.node.type) {\r\n return false;\r\n }\r\n if (typeof this.options.update === 'function') {\r\n const oldNode = this.node;\r\n const oldDecorations = this.decorations;\r\n this.node = node;\r\n this.decorations = decorations;\r\n return this.options.update({\r\n oldNode,\r\n oldDecorations,\r\n newNode: node,\r\n newDecorations: decorations,\r\n updateProps: () => updateProps({ node, decorations }),\r\n });\r\n }\r\n if (node === this.node && this.decorations === decorations) {\r\n return true;\r\n }\r\n this.node = node;\r\n this.decorations = decorations;\r\n updateProps({ node, decorations });\r\n return true;\r\n }\r\n selectNode() {\r\n this.renderer.updateProps({\r\n selected: true,\r\n });\r\n this.renderer.element.classList.add('ProseMirror-selectednode');\r\n }\r\n deselectNode() {\r\n this.renderer.updateProps({\r\n selected: false,\r\n });\r\n this.renderer.element.classList.remove('ProseMirror-selectednode');\r\n }\r\n destroy() {\r\n this.renderer.destroy();\r\n this.editor.off('selectionUpdate', this.handleSelectionUpdate);\r\n this.contentDOMElement = null;\r\n }\r\n}\r\nfunction ReactNodeViewRenderer(component, options) {\r\n return (props) => {\r\n // try to get the parent component\r\n // this is important for vue devtools to show the component hierarchy correctly\r\n // maybe it’s `undefined` because <editor-content> isn’t rendered yet\r\n if (!props.editor.contentComponent) {\r\n return {};\r\n }\r\n return new ReactNodeView(component, props, options);\r\n };\r\n}\n\nexport { BubbleMenu, Editor, EditorConsumer, EditorContent, EditorContext, EditorProvider, FloatingMenu, NodeViewContent, NodeViewWrapper, PureEditorContent, ReactNodeViewContext, ReactNodeViewRenderer, ReactRenderer, useCurrentEditor, useEditor, useReactNodeView };\n//# sourceMappingURL=index.js.map\n","import {\n YOUTUBE_URL_REGEXP,\n VIMEO_URL_REGEXP,\n LOOM_URL_REGEXP,\n NEETO_RECORD_URL_REGEXP,\n} from \"common/constants\";\n\nexport const validateUrl = url =>\n url\n ? validateNeetoRecordUrl(url) ||\n validateYouTubeUrl(url) ||\n validateLoomUrl(url) ||\n validateVimeoUrl(url)\n : false;\n\nexport const validateYouTubeUrl = url => {\n const match = url.match(YOUTUBE_URL_REGEXP);\n\n return match && `https://www.youtube.com/embed/${match[5]}`;\n};\n\nexport const validateVimeoUrl = url => {\n const match = url.match(VIMEO_URL_REGEXP);\n\n return match && `https://player.vimeo.com/video/${match[4]}?h=${match[5]}`;\n};\n\nexport const validateLoomUrl = url => {\n const match = url.match(LOOM_URL_REGEXP);\n\n return match && `https://www.loom.com/embed/${match[4]}?t=${match[5] || \"\"}`;\n};\n\nexport const validateNeetoRecordUrl = url => {\n const match = url.match(NEETO_RECORD_URL_REGEXP);\n\n return match && url.replace(\"watch\", \"embeds\");\n};\n","import React, { useRef, useState } from \"react\";\n\nimport { withEventTargetValue } from \"neetocommons/utils\";\nimport { Button, Input, Modal, Typography } from \"neetoui\";\nimport { isEmpty } from \"ramda\";\nimport { useTranslation } from \"react-i18next\";\n\nimport { validateUrl } from \"./utils\";\n\nconst EmbedOption = ({ isEmbedModalOpen, setIsEmbedModalOpen, editor }) => {\n const { t } = useTranslation();\n\n const [embedUrl, setEmbedUrl] = useState(\"\");\n const [error, setError] = useState(false);\n\n const inputRef = useRef(null);\n\n const handleEmbed = () => {\n const validatedUrl = validateUrl(embedUrl);\n\n if (validatedUrl) {\n editor\n .chain()\n .focus()\n .setExternalVideo({ src: validatedUrl })\n .command(({ tr, commands }) => {\n const { doc, selection } = tr;\n const position = doc.resolve(selection.to).end();\n\n return commands.insertContentAt(position, { type: \"paragraph\" });\n })\n .run();\n setEmbedUrl(\"\");\n setIsEmbedModalOpen(false);\n } else {\n setError(true);\n }\n };\n\n const handleChange = url => {\n if (validateUrl(url)) {\n setError(false);\n setEmbedUrl(url);\n } else {\n setError(true);\n setEmbedUrl(url);\n }\n };\n\n const handleClose = () => {\n setEmbedUrl(\"\");\n setError(false);\n setIsEmbedModalOpen(false);\n };\n\n const handleKeyDown = e => {\n if (e.key === \"Enter\") {\n handleEmbed();\n } else if (e.key === \"Escape\") {\n handleClose();\n }\n };\n\n return (\n <Modal\n className=\"ne-embed-modal-wrapper\"\n initialFocusRef={inputRef}\n isOpen={isEmbedModalOpen}\n onClose={handleClose}\n >\n <Modal.Header>\n <Typography style=\"h2\">{t(\"neetoEditor.menu.embedVideo\")}</Typography>\n </Modal.Header>\n <Modal.Body className=\"ne-embed-modal space-y-2\">\n <Input\n data-cy=\"neeto-editor-embed-input\"\n error={error && t(\"neetoEditor.error.invalidEmbedUrl\")}\n label={t(\"neetoEditor.common.videoUrl\")}\n ref={inputRef}\n size=\"medium\"\n type=\"text\"\n value={embedUrl}\n onChange={withEventTargetValue(handleChange)}\n onKeyDown={handleKeyDown}\n />\n </Modal.Body>\n <Modal.Footer className=\"space-x-2\">\n <Button\n data-cy=\"neeto-editor-embed-cancel\"\n disabled={error || isEmpty(embedUrl)}\n label={t(\"neetoEditor.common.embed\")}\n onClick={handleEmbed}\n />\n </Modal.Footer>\n </Modal>\n );\n};\n\nexport default EmbedOption;\n","import axios from \"axios\";\n\nconst fetch = () => axios.get(\"https://cdn.jsdelivr.net/npm/@emoji-mart/data\");\n\nconst emojiPickerApi = { fetch };\n\nexport default emojiPickerApi;\n","import React from \"react\";\n\nimport { Picker } from \"emoji-mart\";\nimport PropTypes from \"prop-types\";\n\nimport emojiPickerApi from \"apis/emoji_picker\";\n\nclass EmojiPickerMenu extends React.Component {\n ref = React.createRef();\n\n componentDidMount() {\n new Picker({\n ...this.props,\n onEmojiSelect: this.handleSelect,\n style: { maxWidth: \"100%\" },\n theme: \"light\",\n native: true,\n previewPosition: \"none\",\n showSkinTones: false,\n data: this.fetchEmojiData,\n ref: this.ref,\n });\n }\n\n fetchEmojiData = async () => {\n try {\n const { data } = await emojiPickerApi.fetch();\n\n return data;\n } catch {\n return {};\n }\n };\n\n onKeyDown = ({ event }) => {\n if (event.key === \"Escape\") {\n this.props.editor.chain().focus().deleteRange(this.props.range).run();\n\n return true;\n }\n\n return false;\n };\n\n handleSelect = emoji => {\n this.props.editor\n .chain()\n .focus()\n .deleteRange(this.props.range)\n .setEmoji(emoji)\n .run();\n this.props.setActive(false);\n };\n\n render() {\n return (\n <div\n data-cy=\"neeto-editor-emoji-picker\"\n ref={this.ref}\n style={{ minWidth: \"350px\" }}\n />\n );\n }\n}\n\nEmojiPickerMenu.defaultProps = { editor: {}, range: {} };\n\nEmojiPickerMenu.propTypes = {\n editor: PropTypes.object.isRequired,\n range: PropTypes.object,\n};\n\nexport default EmojiPickerMenu;\n","const highlightFocussedNode = () =>\n document.documentElement.style.setProperty(\n \"--focus-background-color\",\n \"rgba(234, 243, 252, 0.5)\"\n );\n\nconst resetFocussedNode = () =>\n document.documentElement.style.setProperty(\n \"--focus-background-color\",\n \"transparent\"\n );\n\nconst focusProps = {\n onMouseEnter: highlightFocussedNode,\n onMouseLeave: resetFocussedNode,\n};\n\nconst generateFocusProps = (highlight = false) => (highlight ? focusProps : {});\n\nexport {\n highlightFocussedNode,\n resetFocussedNode,\n focusProps,\n generateFocusProps,\n};\n","import React from \"react\";\n\nimport { Button } from \"neetoui\";\n\nimport { generateFocusProps } from \"utils/focusHighlighter\";\n\nconst MenuButton = ({\n icon,\n command,\n optionName,\n highlight,\n disabled,\n label,\n editor,\n}) => (\n <Button\n {...{ disabled, icon }}\n className=\"neeto-editor-fixed-menu__item\"\n data-cy={`neeto-editor-fixed-menu-${optionName}-option`}\n style={editor.isActive(optionName) ? \"secondary\" : \"text\"}\n tabIndex=\"-1\"\n tooltipProps={{ content: label, position: \"bottom\" }}\n onClick={command}\n {...generateFocusProps(highlight)}\n />\n);\n\nexport default MenuButton;\n","import React from \"react\";\n\nimport { hyphenate } from \"neetocist\";\nimport { Dropdown } from \"neetoui\";\n\nconst { MenuItem } = Dropdown;\n\nconst SecondaryMenuTarget = ({ icon: Icon, label }) => (\n <MenuItem.Button\n data-cy={`neeto-editor-fixed-menu-${hyphenate(label)}-option`}\n >\n <Icon /> {label}\n </MenuItem.Button>\n);\n\nexport default SecondaryMenuTarget;\n","import React from \"react\";\n\nimport { Smiley } from \"neetoicons\";\nimport { Dropdown } from \"neetoui\";\n\nimport SecondaryMenuTarget from \"./SecondaryMenuTarget\";\n\nimport EmojiPickerMenu from \"../../../CustomExtensions/Emoji/EmojiPicker/EmojiPickerMenu\";\n\nconst EmojiOption = ({\n editor,\n isActive,\n setActive,\n tooltipContent,\n isSecondaryMenu = false,\n label,\n}) => (\n <Dropdown\n buttonStyle=\"text\"\n closeOnSelect={false}\n dropdownProps={{ classNames: \"neeto-editor-fixed-menu__emoji-dropdown\" }}\n icon={Smiley}\n isOpen={isActive}\n position={isSecondaryMenu ? \"left-start\" : \"bottom-start\"}\n strategy=\"fixed\"\n buttonProps={{\n tabIndex: -1,\n tooltipProps: { content: tooltipContent ?? label, position: \"bottom\" },\n className: \"neeto-editor-fixed-menu__item\",\n \"data-cy\": \"neeto-editor-fixed-menu-emoji-option\",\n }}\n customTarget={\n isSecondaryMenu && <SecondaryMenuTarget {...{ label }} icon={Smiley} />\n }\n onClose={() => setActive(false)}\n onClick={e => {\n setActive(active => !active);\n isSecondaryMenu && e.stopPropagation();\n }}\n >\n <EmojiPickerMenu {...{ editor, setActive }} />\n </Dropdown>\n);\n\nexport default EmojiOption;\n","import React, { useRef } from \"react\";\n\nimport { Dropdown, Typography } from \"neetoui\";\nimport { last } from \"ramda\";\n\nimport { FONT_SIZE_OPTIONS } from \"../constants\";\n\nconst { Menu, MenuItem } = Dropdown;\n\nconst FontSizeOption = ({ editor, tooltipContent, label }) => {\n const dropdownRef = useRef(null);\n\n const isActive = level => editor.isActive(\"heading\", { level });\n const activeOption =\n FONT_SIZE_OPTIONS.find(({ value }) => isActive(value)) ||\n last(FONT_SIZE_OPTIONS);\n\n const handleClick = level =>\n level\n ? editor.chain().focus().toggleHeading({ level }).run()\n : editor.chain().focus().setNode(\"paragraph\").run();\n\n return (\n <Dropdown\n autoWidth\n data-cy=\"neeto-editor-fixed-menu-font-size-option\"\n label={activeOption?.label}\n placement=\"bottom-start\"\n strategy=\"fixed\"\n buttonProps={{\n ref: dropdownRef,\n onKeyDown: event =>\n event.key === \"ArrowDown\" && dropdownRef.current?.click(),\n tooltipProps: { content: tooltipContent ?? label, position: \"bottom\" },\n style: \"text\",\n size: \"small\",\n className:\n \"neeto-editor-fixed-menu__item neeto-editor-font-size__wrapper\",\n }}\n >\n <Menu\n onKeyDown={event => event.key === \"Escape\" && editor.commands?.focus()}\n >\n {FONT_SIZE_OPTIONS.map(({ label, value, key }) => (\n <MenuItem.Button\n data-cy={`neeto-editor-fixed-menu-font-size-option-${key}`}\n key={value}\n onClick={() => handleClick(value)}\n >\n <Typography style={key}>{label}</Typography>\n </MenuItem.Button>\n ))}\n </Menu>\n </Dropdown>\n );\n};\n\nexport default FontSizeOption;\n","import React, { useState } from \"react\";\n\nimport { withEventTargetValue } from \"neetocommons/utils\";\nimport { Column } from \"neetoicons\";\nimport { Button, Dropdown, Input } from \"neetoui\";\nimport { not } from \"ramda\";\nimport { useTranslation } from \"react-i18next\";\n\nimport SecondaryMenuTarget from \"./SecondaryMenuTarget\";\n\nconst { Menu } = Dropdown;\n\nconst TableOption = ({\n editor,\n tooltipContent,\n isSecondaryMenu = false,\n label,\n}) => {\n const { t } = useTranslation();\n\n const [isOpen, setIsOpen] = useState(false);\n const [rows, setRows] = useState(3);\n const [columns, setColumns] = useState(3);\n\n const handleClose = () => {\n setRows(3);\n setColumns(3);\n setIsOpen(false);\n };\n\n const handleSubmit = () => {\n editor\n .chain()\n .focus()\n .insertTable({ rows, cols: columns, withHeaderRow: true })\n .run();\n handleClose();\n };\n\n const handleDropdownClick = e => {\n isSecondaryMenu && e.stopPropagation();\n setIsOpen(not);\n };\n\n return (\n <Dropdown\n {...{ isOpen }}\n buttonStyle={isOpen ? \"secondary\" : \"text\"}\n closeOnSelect={false}\n data-cy=\"neeto-editor-fixed-menu-link-option\"\n icon={Column}\n position={isSecondaryMenu ? \"left-start\" : \"bottom\"}\n buttonProps={{\n tabIndex: -1,\n tooltipProps: { content: tooltipContent ?? label, position: \"bottom\" },\n className: \"neeto-editor-fixed-menu__item\",\n }}\n customTarget={\n isSecondaryMenu && <SecondaryMenuTarget {...{ label }} icon={Column} />\n }\n onClick={handleDropdownClick}\n onClose={handleClose}\n >\n <Menu className=\"neeto-editor-table__item\">\n <Input\n autoFocus\n data-cy=\"neeto-editor-fixed-menu-table-option-input\"\n label={t(\"neetoEditor.menu.rows\")}\n min=\"1\"\n placeholder={t(\"neetoEditor.placeholders.rows\")}\n size=\"small\"\n type=\"number\"\n value={rows}\n onChange={withEventTargetValue(setRows)}\n />\n <Input\n data-cy=\"neeto-editor-fixed-menu-table-option-input\"\n label={t(\"neetoEditor.menu.columns\")}\n min=\"1\"\n placeholder={t(\"neetoEditor.placeholders.rows\")}\n size=\"small\"\n type=\"number\"\n value={columns}\n onChange={withEventTargetValue(setColumns)}\n />\n <div className=\"neeto-editor-table-menu__button\">\n <Button\n className=\"mt-auto\"\n data-cy=\"neeto-editor-fixed-menu-table-option-create-button\"\n label={t(\"neetoEditor.common.create\")}\n size=\"small\"\n onClick={handleSubmit}\n />\n </div>\n </Menu>\n </Dropdown>\n );\n};\n\nexport default TableOption;\n","import React, { useEffect, useRef, useState } from \"react\";\n\nimport { useOnClickOutside } from \"neetocommons/react-utils\";\nimport { withEventTargetValue } from \"neetocommons/utils\";\nimport { Check, Close, Customize, Refresh } from \"neetoicons\";\nimport { Button, Dropdown, Input } from \"neetoui\";\nimport { not } from \"ramda\";\nimport { HexColorPicker } from \"react-colorful\";\nimport { useTranslation } from \"react-i18next\";\n\nimport SecondaryMenuTarget from \"./SecondaryMenuTarget\";\n\nconst TextColorOption = ({\n editor,\n tooltipContent,\n isSecondaryMenu = false,\n label,\n}) => {\n const [isOpen, setIsOpen] = useState(false);\n const [color, setColor] = useState(null);\n\n const dropdownWrapperRef = useRef(null);\n const { t } = useTranslation();\n\n const handleSave = () => {\n editor.chain().focus().setColor(color).run();\n setIsOpen(false);\n };\n\n const handleUnset = () => {\n editor.chain().focus().unsetColor().run();\n setColor(null);\n setIsOpen(false);\n };\n\n useOnClickOutside(dropdownWrapperRef, event => {\n if (!isOpen) return;\n event.preventDefault();\n editor.commands.focus();\n setIsOpen(false);\n });\n\n useEffect(() => {\n setColor(editor.getAttributes(\"textStyle\").color);\n }, [isOpen, editor.getAttributes(\"textStyle\").color]);\n\n const openColorPicker = e => {\n isSecondaryMenu && e.stopPropagation();\n setColor(editor.getAttributes(\"textStyle\").color);\n setIsOpen(not);\n };\n\n return (\n <Dropdown\n {...{ isOpen }}\n buttonStyle={isOpen || color ? \"secondary\" : \"text\"}\n icon={Customize}\n position={isSecondaryMenu ? \"left-start\" : \"bottom-start\"}\n buttonProps={{\n tabIndex: -1,\n tooltipProps: { content: tooltipContent ?? label },\n className:\n \"neeto-editor-fixed-menu__item neeto-editor-text-color-option\",\n }}\n customTarget={\n isSecondaryMenu && (\n <SecondaryMenuTarget {...{ label }} icon={Customize} />\n )\n }\n onClick={openColorPicker}\n >\n <div\n ref={dropdownWrapperRef}\n style={{ \"min-width\": \"236px\" }}\n onClick={e => {\n e.stopPropagation();\n }}\n >\n <HexColorPicker color={color || \"#000000\"} onChange={setColor} />\n <div className=\"neeto-editor-text-color-option__options-group\">\n <Input\n autoFocus\n className=\"neeto-editor-text-color-option__options-group__input\"\n placeholder={t(\"neetoEditor.placeholders.pickColor\")}\n size=\"small\"\n value={color}\n onChange={withEventTargetValue(setColor)}\n onClick={event => event.stopPropagation()}\n />\n <Button icon={Check} size=\"small\" onClick={handleSave} />\n <Button\n icon={Close}\n size=\"small\"\n style=\"text\"\n onClick={() => {\n editor.commands.focus();\n setIsOpen(false);\n }}\n />\n <Button\n icon={Refresh}\n size=\"small\"\n style=\"text\"\n tooltipProps={{\n content: t(\"neetoEditor.common.resetToDefault\"),\n position: \"top\",\n }}\n onClick={handleUnset}\n />\n </div>\n </div>\n </Dropdown>\n );\n};\n\nexport default TextColorOption;\n","import React from \"react\";\n\nimport { Email } from \"neetoicons\";\nimport { Avatar, Dropdown, Typography } from \"neetoui\";\nimport { isEmpty } from \"ramda\";\n\nimport SecondaryMenuTarget from \"components/Editor/Menu/Fixed/components/SecondaryMenuTarget\";\n\nconst { Menu, MenuItem } = Dropdown;\n\nconst Mentions = ({\n editor,\n mentions,\n tooltipContent,\n isSecondaryMenu = false,\n label,\n}) => {\n if (isEmpty(mentions)) return null;\n\n return (\n <Dropdown\n buttonStyle=\"text\"\n data-cy=\"neeto-editor-mention-option\"\n icon={Email}\n position={isSecondaryMenu ? \"left-start\" : \"bottom-start\"}\n strategy=\"fixed\"\n buttonProps={{\n tooltipProps: { content: tooltipContent ?? label, position: \"bottom\" },\n className: \"neeto-editor-fixed-menu__item\",\n }}\n customTarget={\n isSecondaryMenu && <SecondaryMenuTarget {...{ label }} icon={Email} />\n }\n onClick={e => isSecondaryMenu && e.stopPropagation()}\n >\n <Menu>\n {mentions.map(({ key, name, imageUrl }) => (\n <MenuItem.Button\n data-cy={`neeto-editor-mention-option-${key}`}\n key={key}\n onClick={() => editor.commands.setMention({ id: key, label: name })}\n >\n <Avatar size=\"small\" user={{ name, imageUrl }} />\n <Typography style=\"body2\">{name}</Typography>\n </MenuItem.Button>\n ))}\n </Menu>\n </Dropdown>\n );\n};\n\nexport default Mentions;\n","import { t } from \"i18next\";\n\nimport MenuButton from \"./components/Button\";\nimport EmojiOption from \"./components/EmojiOption\";\nimport FontSizeOption from \"./components/FontSizeOption\";\nimport TableOption from \"./components/TableOption\";\nimport TextColorOption from \"./components/TextColorOption\";\n\nimport Mentions from \"../../CustomExtensions/Mention\";\n\nexport const FONT_SIZE_OPTIONS = [\n { label: t(\"neetoEditor.menu.heading1\"), value: 1, key: \"h1\" },\n { label: t(\"neetoEditor.menu.heading2\"), value: 2, key: \"h2\" },\n { label: t(\"neetoEditor.menu.heading3\"), value: 3, key: \"h3\" },\n { label: t(\"neetoEditor.menu.heading4\"), value: 4, key: \"h4\" },\n { label: t(\"neetoEditor.menu.heading5\"), value: 5, key: \"h5\" },\n { label: t(\"neetoEditor.menu.normalText\"), value: 0, key: \"body2\" },\n];\n\nexport const MENU_ELEMENT_TYPES = {\n BUTTON: \"button\",\n FONT_SIZE: \"fontSize\",\n TABLE: \"table\",\n TEXT_COLOR: \"textColor\",\n EMOJI: \"emoji\",\n MENTIONS: \"mentions\",\n};\n\nexport const MENU_TYPES = {\n HISTORY: \"history\",\n FONT: \"font\",\n LIST: \"list\",\n BLOCK: \"block\",\n MISC: \"misc\",\n EXTRAS: \"extras\",\n CUSTOM: \"custom\",\n};\n\nexport const MENU_ELEMENTS = {\n [MENU_ELEMENT_TYPES.BUTTON]: MenuButton,\n [MENU_ELEMENT_TYPES.FONT_SIZE]: FontSizeOption,\n [MENU_ELEMENT_TYPES.TABLE]: TableOption,\n [MENU_ELEMENT_TYPES.TEXT_COLOR]: TextColorOption,\n [MENU_ELEMENT_TYPES.EMOJI]: EmojiOption,\n [MENU_ELEMENT_TYPES.MENTIONS]: Mentions,\n};\n\nexport const MENU_ELEMENT_WIDTHS = {\n [MENU_ELEMENT_TYPES.BUTTON]: 36,\n [MENU_ELEMENT_TYPES.FONT_SIZE]: 103,\n [MENU_ELEMENT_TYPES.TABLE]: 36,\n [MENU_ELEMENT_TYPES.TEXT_COLOR]: 36,\n [MENU_ELEMENT_TYPES.EMOJI]: 36,\n [MENU_ELEMENT_TYPES.MENTIONS]: 36,\n};\n","import { t } from \"i18next\";\nimport { isNotEmpty } from \"neetocist\";\nimport {\n TextBold,\n TextItalic,\n Underline,\n TextCross,\n Highlight,\n Code,\n ListDot,\n ListNumber,\n ImageUpload,\n Quote,\n Undo,\n Redo,\n MediaVideo,\n Video,\n CodeBlock,\n Attachment,\n Link,\n} from \"neetoicons\";\nimport { prop, not, assoc } from \"ramda\";\n\nimport { EDITOR_OPTIONS } from \"src/common/constants\";\n\nimport { MENU_ELEMENT_WIDTHS, MENU_ELEMENT_TYPES } from \"./constants\";\n\nconst createMenuOptions = ({\n tooltips,\n editor,\n setMediaUploader,\n attachmentProps,\n setIsEmbedModalOpen,\n setIsAddLinkActive,\n options,\n mentions,\n addonCommandOptions,\n setIsEmojiPickerActive,\n isEmojiPickerActive,\n}) => {\n const fontSizeOptions = options.filter(option => option.match(/^h[1-6]$/));\n\n return [\n // history\n [\n {\n icon: Undo,\n command: () => editor.chain().focus().undo().run(),\n isEnabled: options.includes(EDITOR_OPTIONS.UNDO),\n disabled: !editor.can().undo(),\n optionName: EDITOR_OPTIONS.UNDO,\n label: tooltips.undo ?? t(\"neetoEditor.menu.undo\"),\n type: MENU_ELEMENT_TYPES.BUTTON,\n },\n {\n icon: Redo,\n command: () => editor.chain().focus().redo().run(),\n isEnabled: options.includes(EDITOR_OPTIONS.REDO),\n disabled: !editor.can().redo(),\n optionName: EDITOR_OPTIONS.REDO,\n label: tooltips.redo ?? t(\"neetoEditor.menu.redo\"),\n type: MENU_ELEMENT_TYPES.BUTTON,\n },\n ],\n // font\n [\n {\n type: MENU_ELEMENT_TYPES.FONT_SIZE,\n options: fontSizeOptions,\n label: tooltips.fontSize ?? t(\"neetoEditor.menu.fontSize\"),\n isEnabled: isNotEmpty(fontSizeOptions),\n optionName: \"fontSizeOptions\",\n },\n {\n type: MENU_ELEMENT_TYPES.BUTTON,\n icon: TextBold,\n isEnabled: options.includes(EDITOR_OPTIONS.BOLD),\n command: () => editor.chain().focus().toggleBold().run(),\n optionName: EDITOR_OPTIONS.BOLD,\n label: tooltips.bold ?? t(\"neetoEditor.menu.bold\"),\n },\n {\n type: MENU_ELEMENT_TYPES.BUTTON,\n icon: TextItalic,\n isEnabled: options.includes(EDITOR_OPTIONS.ITALIC),\n command: () => editor.chain().focus().toggleItalic().run(),\n optionName: EDITOR_OPTIONS.ITALIC,\n label: tooltips.italic ?? t(\"neetoEditor.menu.italic\"),\n },\n {\n type: MENU_ELEMENT_TYPES.BUTTON,\n icon: Underline,\n isEnabled: options.includes(EDITOR_OPTIONS.UNDERLINE),\n command: () => editor.chain().focus().toggleUnderline().run(),\n optionName: EDITOR_OPTIONS.UNDERLINE,\n label: tooltips.underline ?? t(\"neetoEditor.menu.underline\"),\n },\n {\n type: MENU_ELEMENT_TYPES.BUTTON,\n icon: Link,\n isEnabled: options.includes(EDITOR_OPTIONS.LINK),\n command: () => setIsAddLinkActive(not),\n optionName: EDITOR_OPTIONS.LINK,\n label: tooltips.link ?? t(\"neetoEditor.menu.link\"),\n },\n {\n type: MENU_ELEMENT_TYPES.BUTTON,\n icon: TextCross,\n isEnabled: options.includes(EDITOR_OPTIONS.STRIKETHROUGH),\n command: () => editor.chain().focus().toggleStrike().run(),\n optionName: EDITOR_OPTIONS.STRIKETHROUGH,\n label: tooltips.strike ?? t(\"neetoEditor.menu.strike\"),\n },\n {\n type: MENU_ELEMENT_TYPES.BUTTON,\n icon: Highlight,\n isEnabled: options.includes(EDITOR_OPTIONS.HIGHLIGHT),\n command: () => editor.chain().focus().toggleHighlight().run(),\n optionName: EDITOR_OPTIONS.HIGHLIGHT,\n label: tooltips.highlight ?? t(\"neetoEditor.menu.highlight\"),\n },\n ],\n // list\n [\n {\n type: MENU_ELEMENT_TYPES.BUTTON,\n icon: ListDot,\n command: () => editor.chain().focus().toggleBulletList().run(),\n isEnabled: options.includes(EDITOR_OPTIONS.LIST_BULLETS),\n optionName: \"bulletList\",\n highlight: true,\n label: tooltips.bulletList ?? t(\"neetoEditor.menu.bulletedList\"),\n },\n {\n type: MENU_ELEMENT_TYPES.BUTTON,\n icon: ListNumber,\n command: () => editor.chain().focus().toggleOrderedList().run(),\n isEnabled: options.includes(EDITOR_OPTIONS.LIST_ORDERED),\n optionName: \"orderedList\",\n highlight: true,\n label: tooltips.orderedList ?? t(\"neetoEditor.menu.orderedList\"),\n },\n ],\n // block\n [\n {\n type: MENU_ELEMENT_TYPES.BUTTON,\n icon: Quote,\n command: () => editor.chain().focus().toggleBlockquote().run(),\n isEnabled: options.includes(EDITOR_OPTIONS.BLOCKQUOTE),\n optionName: \"blockquote\",\n highlight: true,\n label: tooltips.blockQuote ?? t(\"neetoEditor.menu.blockQuote\"),\n },\n {\n type: MENU_ELEMENT_TYPES.BUTTON,\n icon: Code,\n command: () => editor.chain().focus().toggleCode().run(),\n isEnabled: options.includes(EDITOR_OPTIONS.CODE),\n optionName: EDITOR_OPTIONS.CODE,\n label: tooltips.code ?? t(\"neetoEditor.menu.code\"),\n },\n {\n type: MENU_ELEMENT_TYPES.BUTTON,\n icon: CodeBlock,\n command: () => editor.chain().focus().toggleCodeBlock().run(),\n isEnabled: options.includes(EDITOR_OPTIONS.CODE_BLOCK),\n optionName: \"codeBlock\",\n label: tooltips.codeBlock ?? t(\"neetoEditor.menu.codeBlock\"),\n },\n ],\n // misc\n [\n {\n type: MENU_ELEMENT_TYPES.TABLE,\n label: tooltips.table ?? t(\"neetoEditor.menu.table\"),\n isEnabled: options.includes(EDITOR_OPTIONS.TABLE),\n optionName: EDITOR_OPTIONS.TABLE,\n },\n {\n type: MENU_ELEMENT_TYPES.BUTTON,\n icon: Attachment,\n command: () => attachmentProps?.handleUploadAttachments(),\n disabled: attachmentProps?.isDisabled,\n isEnabled: options.includes(EDITOR_OPTIONS.ATTACHMENTS),\n optionName: EDITOR_OPTIONS.ATTACHMENTS,\n label: tooltips.attachments ?? t(\"neetoEditor.menu.attachments\"),\n },\n {\n type: MENU_ELEMENT_TYPES.BUTTON,\n icon: ImageUpload,\n command: () => setMediaUploader(assoc(\"image\", true)),\n isEnabled: options.includes(EDITOR_OPTIONS.IMAGE_UPLOAD),\n optionName: EDITOR_OPTIONS.IMAGE_UPLOAD,\n label: tooltips.imageUpload ?? t(\"neetoEditor.menu.imageUpload\"),\n },\n {\n type: MENU_ELEMENT_TYPES.BUTTON,\n icon: Video,\n command: () => setMediaUploader(assoc(\"video\", true)),\n isEnabled: options.includes(EDITOR_OPTIONS.VIDEO_UPLOAD),\n optionName: EDITOR_OPTIONS.VIDEO_UPLOAD,\n label: tooltips.videoUpload ?? t(\"neetoEditor.menu.videoUpload\"),\n },\n {\n type: MENU_ELEMENT_TYPES.BUTTON,\n icon: MediaVideo,\n command: () => setIsEmbedModalOpen(true),\n isEnabled: options.includes(EDITOR_OPTIONS.VIDEO_EMBED),\n optionName: EDITOR_OPTIONS.VIDEO_EMBED,\n label: tooltips.videoEmbed ?? t(\"neetoEditor.menu.videoEmbed\"),\n },\n ],\n // extras\n [\n {\n type: MENU_ELEMENT_TYPES.TEXT_COLOR,\n label: tooltips.textColor ?? t(\"neetoEditor.menu.textColor\"),\n isEnabled: options.includes(EDITOR_OPTIONS.TEXT_COLOR),\n optionName: EDITOR_OPTIONS.TEXT_COLOR,\n },\n {\n type: MENU_ELEMENT_TYPES.EMOJI,\n label: tooltips.emoji ?? t(\"neetoEditor.menu.emoji\"),\n isEnabled: options.includes(EDITOR_OPTIONS.EMOJI),\n optionName: EDITOR_OPTIONS.EMOJI,\n setActive: setIsEmojiPickerActive,\n isActive: isEmojiPickerActive,\n },\n {\n type: MENU_ELEMENT_TYPES.MENTIONS,\n label: tooltips.mention ?? t(\"neetoEditor.menu.mention\"),\n isEnabled: isNotEmpty(mentions),\n optionName: \"mentions\",\n mentions,\n },\n ],\n //addons\n [...addonCommandOptions],\n ];\n};\n\nexport const buildMenuOptions = ({\n tooltips,\n editor,\n options,\n setMediaUploader,\n attachmentProps,\n setIsEmbedModalOpen,\n setIsAddLinkActive,\n mentions,\n addonCommands,\n setIsEmojiPickerActive,\n isEmojiPickerActive,\n}) => {\n if (!editor) return [];\n\n const addonCommandOptions = buildOptionsFromAddonCommands({\n editor,\n commands: addonCommands,\n });\n\n const menuOptions = createMenuOptions({\n tooltips,\n editor,\n setMediaUploader,\n attachmentProps,\n setIsEmbedModalOpen,\n setIsAddLinkActive,\n options,\n mentions,\n addonCommandOptions,\n setIsEmojiPickerActive,\n isEmojiPickerActive,\n });\n\n return menuOptions.map(option => option.filter(prop(\"isEnabled\")));\n};\n\nexport const buildOptionsFromAddonCommands = ({ editor, commands }) => {\n const { to } = editor.state.selection;\n\n return commands.map(option => ({\n ...option,\n type: MENU_ELEMENT_TYPES.BUTTON,\n active: option.active?.({ editor }),\n command: () => option.command?.({ editor, range: { from: to, to } }),\n }));\n};\n\nexport const getCursorPos = (editor, to) => editor?.view.coordsAtPos(to);\n\nexport const reGroupMenuItems = (menuRef, menuGroups) => {\n const toolbarWidth = menuRef.current.offsetWidth;\n let totalWidth = 0;\n const visibleMenuGroups = [];\n const invisibleMenuGroups = [];\n menuGroups.forEach((group, groupIndex) => {\n group.forEach((item, itemIndex) => {\n const width = MENU_ELEMENT_WIDTHS[item.type];\n\n if (totalWidth + width < toolbarWidth) {\n totalWidth += width;\n visibleMenuGroups[groupIndex] = visibleMenuGroups[groupIndex] ?? [];\n visibleMenuGroups[groupIndex][itemIndex] = item;\n } else {\n const visibleMenuGroupsLength = visibleMenuGroups.length;\n const index = groupIndex - visibleMenuGroupsLength + 1;\n invisibleMenuGroups[index] = invisibleMenuGroups[index] ?? [];\n invisibleMenuGroups[index][itemIndex] = item;\n }\n });\n });\n\n return { visibleMenuGroups, invisibleMenuGroups };\n};\n\nexport const getLinkPopoverPosition = (editor, popoverRef) => {\n const {\n selection: {\n $to: { pos: selectionEnd },\n $from: { pos: selectionStart },\n },\n } = editor.view.state;\n const selectionLength = selectionEnd - selectionStart;\n let offset = 0;\n if (selectionLength > 1) offset = Math.round(selectionLength / 2);\n\n if (selectionLength === 1) offset = 1;\n\n // Calculate the arrow position\n const arrowCoords = editor.view.coordsAtPos(selectionStart + offset);\n const arrowPosition = {\n top: `${arrowCoords.top + 21}px`,\n left: `${arrowCoords.left - 8.5}px`,\n };\n\n // Calculate the popover position\n const popoverCoords = editor.view.coordsAtPos(selectionStart);\n let adjustedLeft = popoverCoords?.left,\n adjustedTop = popoverCoords?.top;\n if (popoverRef?.current) {\n const popoverRect = popoverRef.current?.getBoundingClientRect();\n\n const screenWidth = window.innerWidth;\n const screenHeight = window.innerHeight;\n\n const maxLeft = screenWidth - popoverRect.width;\n const maxTop = screenHeight - popoverRect.height - 50;\n\n adjustedLeft = popoverCoords?.left\n ? Math.min(popoverCoords.left - 50, maxLeft)\n : 0;\n\n adjustedTop = popoverCoords?.top\n ? Math.min(popoverCoords.top - 22, maxTop)\n : 0;\n } else {\n adjustedLeft = popoverCoords.left - 50;\n adjustedTop = popoverCoords.top - 22;\n }\n\n const popoverPosition = {\n top: `${adjustedTop}px`,\n left: `${adjustedLeft}px`,\n };\n\n return { arrowPosition, popoverPosition };\n};\n","import React from \"react\";\n\nimport { withT } from \"neetocommons/react-utils\";\nimport { Close } from \"neetoicons\";\nimport { Button, Tooltip, Typography } from \"neetoui\";\n\nimport FileIcon from \"../../Common/FileIcon\";\n\nconst Progress = withT(({ t, queuedFiles, cancelUpload }) => (\n <div className=\"ne-media-uploader__wrapper\">\n {queuedFiles.map(({ id, filename, progress = 0 }) => (\n <div className=\"ne-media-uploader__media\" key={id}>\n <div className=\"ne-media-uploader__media__cancel-button-wrapper\">\n <Button\n data-cy=\"neeto-editor-image-upload-cancel-button\"\n icon={Close}\n iconSize={18}\n size=\"small\"\n style=\"text\"\n onClick={() => cancelUpload(id)}\n />\n </div>\n <FileIcon\n className=\"ne-media-uploader__media__info__icon\"\n fileName={filename}\n />\n <div className=\"ne-media-uploader__media__info\">\n <Typography style=\"nano\">\n {progress === 100 && t(\"neetoEditor.localUploader.completed\")}\n {progress !== 100 && <>{progress}%</>}\n </Typography>\n <div className=\"ne-media-uploader__media__progress\">\n <div\n className=\"ne-media-uploader__media__progress-bar\"\n style={{ width: `${progress}%` }}\n />\n </div>\n <Tooltip content={filename} position=\"top\">\n <Typography style=\"body3\">{filename}</Typography>\n </Tooltip>\n </div>\n </div>\n ))}\n </div>\n));\n\nexport default Progress;\n","import React, { useRef } from \"react\";\n\nimport { ImageUpload } from \"neetoicons\";\nimport { Typography } from \"neetoui\";\nimport { isEmpty } from \"ramda\";\nimport { useTranslation } from \"react-i18next\";\n\nimport useDropFiles from \"hooks/useDropFiles\";\nimport useFileUploader from \"hooks/useFileUploader\";\n\nimport {\n ALLOWED_IMAGE_TYPES,\n ALLOWED_VIDEO_TYPES,\n DEFAULT_IMAGE_UPLOAD_CONFIG,\n DEFAULT_VIDEO_UPLOAD_CONFIG,\n} from \"./constants\";\nimport Progress from \"./Progress\";\nimport { convertToFileSize } from \"./utils\";\n\nconst LocalUploader = ({\n isImage,\n onClose,\n insertMediaToEditor,\n setIsUploading,\n}) => {\n const { t } = useTranslation();\n\n const uploadConfig = isImage\n ? DEFAULT_IMAGE_UPLOAD_CONFIG\n : DEFAULT_VIDEO_UPLOAD_CONFIG;\n\n const fileInputRef = useRef(null);\n const dropTargetRef = useRef(null);\n\n const { addFiles, uploadFiles, queuedFiles, cancelUpload, isUploading } =\n useFileUploader({\n config: uploadConfig,\n setIsUploadingOnHost: setIsUploading,\n });\n\n const handleFilesDrop = async files => {\n addFiles(files);\n const uploadedFiles = await uploadFiles();\n uploadedFiles.forEach(insertMediaToEditor);\n onClose();\n };\n\n useDropFiles({ dropTargetRef, onDrop: handleFilesDrop });\n\n setIsUploading(isUploading);\n\n const handleAddFile = async ({ target: { files } }) => {\n addFiles(files);\n const uploadedFiles = await uploadFiles();\n uploadedFiles.forEach(insertMediaToEditor);\n onClose();\n };\n\n return !isEmpty(queuedFiles) || isUploading ? (\n <Progress {...{ cancelUpload, queuedFiles }} />\n ) : (\n <div\n className=\"ne-media-uploader__dnd\"\n data-cy=\"neeto-editor-media-uploader-dnd\"\n ref={dropTargetRef}\n tabIndex={0}\n onClick={() => fileInputRef.current?.click()}\n >\n <input\n multiple\n className=\"ne-media-uploader__dnd-input\"\n data-cy=\"neeto-editor-media-uploader-input\"\n ref={fileInputRef}\n type=\"file\"\n accept={\n isImage\n ? ALLOWED_IMAGE_TYPES.join(\",\")\n : ALLOWED_VIDEO_TYPES.join(\",\")\n }\n onChange={handleAddFile}\n />\n <ImageUpload className=\"ne-media-uploader__dnd-icon\" size={24} />\n <Typography style=\"body2\">\n {t(\"neetoEditor.localUploader.dropFilesHere\")}\n </Typography>\n <Typography style=\"body3\">\n {t(\"neetoEditor.localUploader.maxFileSize\", {\n entity: convertToFileSize(uploadConfig.restrictions.maxFileSize),\n })}\n </Typography>\n </div>\n );\n};\n\nexport default LocalUploader;\n","var _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n};\n\nvar knot = function knot() {\n var extended = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n var events = Object.create(null);\n\n function on(name, handler) {\n events[name] = events[name] || [];\n events[name].push(handler);\n return this;\n }\n\n function once(name, handler) {\n handler._once = true;\n on(name, handler);\n return this;\n }\n\n function off(name) {\n var handler = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n\n handler ? events[name].splice(events[name].indexOf(handler), 1) : delete events[name];\n\n return this;\n }\n\n function emit(name) {\n var _this = this;\n\n for (var _len = arguments.length, args = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n args[_key - 1] = arguments[_key];\n }\n\n // cache the events, to avoid consequences of mutation\n var cache = events[name] && events[name].slice();\n\n // only fire handlers if they exist\n cache && cache.forEach(function (handler) {\n // remove handlers added with 'once'\n handler._once && off(name, handler);\n\n // set 'this' context, pass args to handlers\n handler.apply(_this, args);\n });\n\n return this;\n }\n\n return _extends({}, extended, {\n\n on: on,\n once: once,\n off: off,\n emit: emit\n });\n};\n\nvar bricks = function bricks() {\n var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n // privates\n\n var persist = void 0; // packing new elements, or all elements?\n var ticking = void 0; // for debounced resize\n\n var sizeIndex = void 0;\n var sizeDetail = void 0;\n\n var columnTarget = void 0;\n var columnHeights = void 0;\n\n var nodeTop = void 0;\n var nodeLeft = void 0;\n var nodeWidth = void 0;\n var nodeHeight = void 0;\n\n var nodes = void 0;\n var nodesWidths = void 0;\n var nodesHeights = void 0;\n\n // resolve options\n\n var packed = options.packed.indexOf('data-') === 0 ? options.packed : 'data-' + options.packed;\n var sizes = options.sizes.slice().reverse();\n var position = options.position !== false;\n\n var container = options.container.nodeType ? options.container : document.querySelector(options.container);\n\n var selectors = {\n all: function all() {\n return toArray(container.children);\n },\n new: function _new() {\n return toArray(container.children).filter(function (node) {\n return !node.hasAttribute('' + packed);\n });\n }\n };\n\n // series\n\n var setup = [setSizeIndex, setSizeDetail, setColumns];\n\n var run = [setNodes, setNodesDimensions, setNodesStyles, setContainerStyles];\n\n // instance\n\n var instance = knot({\n pack: pack,\n update: update,\n resize: resize\n });\n\n return instance;\n\n // general helpers\n\n function runSeries(functions) {\n functions.forEach(function (func) {\n return func();\n });\n }\n\n // array helpers\n\n function toArray(input) {\n var scope = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : document;\n\n return Array.prototype.slice.call(input);\n }\n\n function fillArray(length) {\n return Array.apply(null, Array(length)).map(function () {\n return 0;\n });\n }\n\n // size helpers\n\n function getSizeIndex() {\n // find index of widest matching media query\n return sizes.map(function (size) {\n return size.mq && window.matchMedia('(min-width: ' + size.mq + ')').matches;\n }).indexOf(true);\n }\n\n function setSizeIndex() {\n sizeIndex = getSizeIndex();\n }\n\n function setSizeDetail() {\n // if no media queries matched, use the base case\n sizeDetail = sizeIndex === -1 ? sizes[sizes.length - 1] : sizes[sizeIndex];\n }\n\n // column helpers\n\n function setColumns() {\n columnHeights = fillArray(sizeDetail.columns);\n }\n\n // node helpers\n\n function setNodes() {\n nodes = selectors[persist ? 'new' : 'all']();\n }\n\n function setNodesDimensions() {\n // exit if empty container\n if (nodes.length === 0) {\n return;\n }\n\n nodesWidths = nodes.map(function (element) {\n return element.clientWidth;\n });\n nodesHeights = nodes.map(function (element) {\n return element.clientHeight;\n });\n }\n\n function setNodesStyles() {\n nodes.forEach(function (element, index) {\n columnTarget = columnHeights.indexOf(Math.min.apply(Math, columnHeights));\n\n element.style.position = 'absolute';\n\n nodeTop = columnHeights[columnTarget] + 'px';\n nodeLeft = columnTarget * nodesWidths[index] + columnTarget * sizeDetail.gutter + 'px';\n\n // support positioned elements (default) or transformed elements\n if (position) {\n element.style.top = nodeTop;\n element.style.left = nodeLeft;\n } else {\n element.style.transform = 'translate3d(' + nodeLeft + ', ' + nodeTop + ', 0)';\n }\n\n element.setAttribute(packed, '');\n\n // ignore nodes with no width and/or height\n nodeWidth = nodesWidths[index];\n nodeHeight = nodesHeights[index];\n\n if (nodeWidth && nodeHeight) {\n columnHeights[columnTarget] += nodeHeight + sizeDetail.gutter;\n }\n });\n }\n\n // container helpers\n\n function setContainerStyles() {\n container.style.position = 'relative';\n container.style.width = sizeDetail.columns * nodeWidth + (sizeDetail.columns - 1) * sizeDetail.gutter + 'px';\n container.style.height = Math.max.apply(Math, columnHeights) - sizeDetail.gutter + 'px';\n }\n\n // resize helpers\n\n function resizeFrame() {\n if (!ticking) {\n window.requestAnimationFrame(resizeHandler);\n ticking = true;\n }\n }\n\n function resizeHandler() {\n if (sizeIndex !== getSizeIndex()) {\n pack();\n instance.emit('resize', sizeDetail);\n }\n\n ticking = false;\n }\n\n // API\n\n function pack() {\n persist = false;\n runSeries(setup.concat(run));\n\n return instance.emit('pack');\n }\n\n function update() {\n persist = true;\n runSeries(run);\n\n return instance.emit('update');\n }\n\n function resize() {\n var flag = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : true;\n\n var action = flag ? 'addEventListener' : 'removeEventListener';\n\n window[action]('resize', resizeFrame);\n\n return instance;\n }\n};\n\nexport default bricks;\n","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _objectWithoutProperties(obj, keys) { var target = {}; for (var i in obj) { if (keys.indexOf(i) >= 0) continue; if (!Object.prototype.hasOwnProperty.call(obj, i)) continue; target[i] = obj[i]; } return target; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar InfiniteScroll = function (_Component) {\n _inherits(InfiniteScroll, _Component);\n\n function InfiniteScroll(props) {\n _classCallCheck(this, InfiniteScroll);\n\n var _this = _possibleConstructorReturn(this, (InfiniteScroll.__proto__ || Object.getPrototypeOf(InfiniteScroll)).call(this, props));\n\n _this.scrollListener = _this.scrollListener.bind(_this);\n _this.eventListenerOptions = _this.eventListenerOptions.bind(_this);\n _this.mousewheelListener = _this.mousewheelListener.bind(_this);\n return _this;\n }\n\n _createClass(InfiniteScroll, [{\n key: 'componentDidMount',\n value: function componentDidMount() {\n this.pageLoaded = this.props.pageStart;\n this.options = this.eventListenerOptions();\n this.attachScrollListener();\n }\n }, {\n key: 'componentDidUpdate',\n value: function componentDidUpdate() {\n if (this.props.isReverse && this.loadMore) {\n var parentElement = this.getParentElement(this.scrollComponent);\n parentElement.scrollTop = parentElement.scrollHeight - this.beforeScrollHeight + this.beforeScrollTop;\n this.loadMore = false;\n }\n this.attachScrollListener();\n }\n }, {\n key: 'componentWillUnmount',\n value: function componentWillUnmount() {\n this.detachScrollListener();\n this.detachMousewheelListener();\n }\n }, {\n key: 'isPassiveSupported',\n value: function isPassiveSupported() {\n var passive = false;\n\n var testOptions = {\n get passive() {\n passive = true;\n }\n };\n\n try {\n document.addEventListener('test', null, testOptions);\n document.removeEventListener('test', null, testOptions);\n } catch (e) {\n // ignore\n }\n return passive;\n }\n }, {\n key: 'eventListenerOptions',\n value: function eventListenerOptions() {\n var options = this.props.useCapture;\n\n if (this.isPassiveSupported()) {\n options = {\n useCapture: this.props.useCapture,\n passive: true\n };\n } else {\n options = {\n passive: false\n };\n }\n return options;\n }\n\n // Set a defaut loader for all your `InfiniteScroll` components\n\n }, {\n key: 'setDefaultLoader',\n value: function setDefaultLoader(loader) {\n this.defaultLoader = loader;\n }\n }, {\n key: 'detachMousewheelListener',\n value: function detachMousewheelListener() {\n var scrollEl = window;\n if (this.props.useWindow === false) {\n scrollEl = this.scrollComponent.parentNode;\n }\n\n scrollEl.removeEventListener('mousewheel', this.mousewheelListener, this.options ? this.options : this.props.useCapture);\n }\n }, {\n key: 'detachScrollListener',\n value: function detachScrollListener() {\n var scrollEl = window;\n if (this.props.useWindow === false) {\n scrollEl = this.getParentElement(this.scrollComponent);\n }\n\n scrollEl.removeEventListener('scroll', this.scrollListener, this.options ? this.options : this.props.useCapture);\n scrollEl.removeEventListener('resize', this.scrollListener, this.options ? this.options : this.props.useCapture);\n }\n }, {\n key: 'getParentElement',\n value: function getParentElement(el) {\n var scrollParent = this.props.getScrollParent && this.props.getScrollParent();\n if (scrollParent != null) {\n return scrollParent;\n }\n return el && el.parentNode;\n }\n }, {\n key: 'filterProps',\n value: function filterProps(props) {\n return props;\n }\n }, {\n key: 'attachScrollListener',\n value: function attachScrollListener() {\n var parentElement = this.getParentElement(this.scrollComponent);\n\n if (!this.props.hasMore || !parentElement) {\n return;\n }\n\n var scrollEl = window;\n if (this.props.useWindow === false) {\n scrollEl = parentElement;\n }\n\n scrollEl.addEventListener('mousewheel', this.mousewheelListener, this.options ? this.options : this.props.useCapture);\n scrollEl.addEventListener('scroll', this.scrollListener, this.options ? this.options : this.props.useCapture);\n scrollEl.addEventListener('resize', this.scrollListener, this.options ? this.options : this.props.useCapture);\n\n if (this.props.initialLoad) {\n this.scrollListener();\n }\n }\n }, {\n key: 'mousewheelListener',\n value: function mousewheelListener(e) {\n // Prevents Chrome hangups\n // See: https://stackoverflow.com/questions/47524205/random-high-content-download-time-in-chrome/47684257#47684257\n if (e.deltaY === 1 && !this.isPassiveSupported()) {\n e.preventDefault();\n }\n }\n }, {\n key: 'scrollListener',\n value: function scrollListener() {\n var el = this.scrollComponent;\n var scrollEl = window;\n var parentNode = this.getParentElement(el);\n\n var offset = void 0;\n if (this.props.useWindow) {\n var doc = document.documentElement || document.body.parentNode || document.body;\n var scrollTop = scrollEl.pageYOffset !== undefined ? scrollEl.pageYOffset : doc.scrollTop;\n if (this.props.isReverse) {\n offset = scrollTop;\n } else {\n offset = this.calculateOffset(el, scrollTop);\n }\n } else if (this.props.isReverse) {\n offset = parentNode.scrollTop;\n } else {\n offset = el.scrollHeight - parentNode.scrollTop - parentNode.clientHeight;\n }\n\n // Here we make sure the element is visible as well as checking the offset\n if (offset < Number(this.props.threshold) && el && el.offsetParent !== null) {\n this.detachScrollListener();\n this.beforeScrollHeight = parentNode.scrollHeight;\n this.beforeScrollTop = parentNode.scrollTop;\n // Call loadMore after detachScrollListener to allow for non-async loadMore functions\n if (typeof this.props.loadMore === 'function') {\n this.props.loadMore(this.pageLoaded += 1);\n this.loadMore = true;\n }\n }\n }\n }, {\n key: 'calculateOffset',\n value: function calculateOffset(el, scrollTop) {\n if (!el) {\n return 0;\n }\n\n return this.calculateTopPosition(el) + (el.offsetHeight - scrollTop - window.innerHeight);\n }\n }, {\n key: 'calculateTopPosition',\n value: function calculateTopPosition(el) {\n if (!el) {\n return 0;\n }\n return el.offsetTop + this.calculateTopPosition(el.offsetParent);\n }\n }, {\n key: 'render',\n value: function render() {\n var _this2 = this;\n\n var renderProps = this.filterProps(this.props);\n\n var children = renderProps.children,\n element = renderProps.element,\n hasMore = renderProps.hasMore,\n initialLoad = renderProps.initialLoad,\n isReverse = renderProps.isReverse,\n loader = renderProps.loader,\n loadMore = renderProps.loadMore,\n pageStart = renderProps.pageStart,\n ref = renderProps.ref,\n threshold = renderProps.threshold,\n useCapture = renderProps.useCapture,\n useWindow = renderProps.useWindow,\n getScrollParent = renderProps.getScrollParent,\n props = _objectWithoutProperties(renderProps, ['children', 'element', 'hasMore', 'initialLoad', 'isReverse', 'loader', 'loadMore', 'pageStart', 'ref', 'threshold', 'useCapture', 'useWindow', 'getScrollParent']);\n\n props.ref = function (node) {\n _this2.scrollComponent = node;\n if (ref) {\n ref(node);\n }\n };\n\n var childrenArray = [children];\n if (hasMore) {\n if (loader) {\n isReverse ? childrenArray.unshift(loader) : childrenArray.push(loader);\n } else if (this.defaultLoader) {\n isReverse ? childrenArray.unshift(this.defaultLoader) : childrenArray.push(this.defaultLoader);\n }\n }\n return _react2.default.createElement(element, props, childrenArray);\n }\n }]);\n\n return InfiniteScroll;\n}(_react.Component);\n\nInfiniteScroll.propTypes = {\n children: _propTypes2.default.node.isRequired,\n element: _propTypes2.default.node,\n hasMore: _propTypes2.default.bool,\n initialLoad: _propTypes2.default.bool,\n isReverse: _propTypes2.default.bool,\n loader: _propTypes2.default.node,\n loadMore: _propTypes2.default.func.isRequired,\n pageStart: _propTypes2.default.number,\n ref: _propTypes2.default.func,\n getScrollParent: _propTypes2.default.func,\n threshold: _propTypes2.default.number,\n useCapture: _propTypes2.default.bool,\n useWindow: _propTypes2.default.bool\n};\nInfiniteScroll.defaultProps = {\n element: 'div',\n hasMore: false,\n initialLoad: true,\n pageStart: 0,\n ref: null,\n threshold: 250,\n useWindow: true,\n isReverse: false,\n useCapture: false,\n loader: null,\n getScrollParent: null\n};\nexports.default = InfiniteScroll;\nmodule.exports = exports['default'];\n","module.exports = require('./dist/InfiniteScroll')\n","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = undefined;\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _class, _temp2;\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _bricks = require('bricks.js');\n\nvar _bricks2 = _interopRequireDefault(_bricks);\n\nvar _reactInfiniteScroller = require('react-infinite-scroller');\n\nvar _reactInfiniteScroller2 = _interopRequireDefault(_reactInfiniteScroller);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _objectWithoutProperties(obj, keys) { var target = {}; for (var i in obj) { if (keys.indexOf(i) >= 0) continue; if (!Object.prototype.hasOwnProperty.call(obj, i)) continue; target[i] = obj[i]; } return target; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar MasonryInfiniteScroller = (_temp2 = _class = function (_Component) {\n _inherits(MasonryInfiniteScroller, _Component);\n\n function MasonryInfiniteScroller() {\n var _ref;\n\n var _temp, _this, _ret;\n\n _classCallCheck(this, MasonryInfiniteScroller);\n\n for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n return _ret = (_temp = (_this = _possibleConstructorReturn(this, (_ref = MasonryInfiniteScroller.__proto__ || Object.getPrototypeOf(MasonryInfiniteScroller)).call.apply(_ref, [this].concat(args))), _this), _this.setContainerRef = function (component) {\n _this.masonryContainer = component;\n }, _this.forcePack = function () {\n if (_this.masonryContainer) {\n _this.state.instance.pack();\n }\n }, _this.forceUpdate = function () {\n if (_this.masonryContainer) {\n _this.state.instance.update();\n }\n }, _this.createNewInstance = function () {\n var _this$props = _this.props,\n packed = _this$props.packed,\n sizes = _this$props.sizes,\n children = _this$props.children,\n position = _this$props.position;\n\n var instance = (0, _bricks2.default)({\n container: _this.masonryContainer,\n packed: packed,\n sizes: sizes,\n position: position\n });\n\n instance.resize(true);\n\n if (children.length > 0) {\n instance.pack();\n }\n\n _this.setState(function () {\n return { instance: instance };\n });\n }, _temp), _possibleConstructorReturn(_this, _ret);\n }\n\n _createClass(MasonryInfiniteScroller, [{\n key: 'componentDidMount',\n value: function componentDidMount() {\n this.createNewInstance();\n }\n }, {\n key: 'componentDidUpdate',\n value: function componentDidUpdate(prevProps) {\n var children = this.props.children;\n var instance = this.state.instance;\n\n\n if (prevProps.children.length === 0 && children.length === 0) {\n return;\n }\n\n if (prevProps.children.length === 0 && children.length > 0) {\n return instance.pack();\n }\n\n if (prevProps.children.length !== children.length) {\n if (this.props.pack) {\n return instance.pack();\n } else {\n return instance.update();\n }\n }\n }\n }, {\n key: 'componentWillUnmount',\n value: function componentWillUnmount() {\n if (this.state) {\n this.state.instance.resize(false);\n }\n }\n }, {\n key: 'render',\n value: function render() {\n var _props = this.props,\n children = _props.children,\n className = _props.className,\n style = _props.style,\n pack = _props.pack,\n packed = _props.packed,\n position = _props.position,\n sizes = _props.sizes,\n props = _objectWithoutProperties(_props, ['children', 'className', 'style', 'pack', 'packed', 'position', 'sizes']);\n\n return _react2.default.createElement(\n _reactInfiniteScroller2.default,\n props,\n _react2.default.createElement(\n 'div',\n { ref: this.setContainerRef, className: className, style: style },\n children\n )\n );\n }\n }]);\n\n return MasonryInfiniteScroller;\n}(_react.Component), _class.propTypes = {\n children: _propTypes2.default.arrayOf(_propTypes2.default.element).isRequired,\n className: _propTypes2.default.string,\n initialLoad: _propTypes2.default.bool,\n pack: _propTypes2.default.bool,\n packed: _propTypes2.default.string,\n position: _propTypes2.default.bool,\n sizes: _propTypes2.default.array,\n style: _propTypes2.default.object\n}, _class.defaultProps = {\n className: '',\n initialLoad: true,\n pack: false,\n packed: 'data-packed',\n position: true,\n sizes: [{ columns: 1, gutter: 20 }, { mq: '768px', columns: 2, gutter: 20 }, { mq: '1024px', columns: 3, gutter: 20 }],\n style: {}\n}, _temp2);\nexports.default = MasonryInfiniteScroller;","import axios from \"axios\";\n\nimport { UNSPLASH_BASE_URL } from \"common/constants\";\n\nexport const searchUnsplashImages = ({ pageNo, query, apiKey }) =>\n axios.get(UNSPLASH_BASE_URL, {\n headers: { Authorization: `Client-ID ${apiKey}` },\n params: { page: pageNo, per_page: 30, query },\n });\n","import { useState, useEffect } from \"react\";\n\nconst useDebounce = (value, delay = 800) => {\n const [debouncedValue, setDebouncedValue] = useState(value);\n\n useEffect(() => {\n const timeout = setTimeout(() => {\n setDebouncedValue(value);\n }, delay);\n\n return () => {\n clearTimeout(timeout);\n };\n }, [value, delay]);\n\n return debouncedValue;\n};\n\nexport default useDebounce;\n","import React, { useEffect, useState, useRef } from \"react\";\n\nimport { isNotPresent } from \"neetocist\";\nimport { Input, Spinner } from \"neetoui\";\nimport { useTranslation } from \"react-i18next\";\nimport MasonryInfiniteScroller from \"react-masonry-infinite\";\n\nimport { searchUnsplashImages } from \"apis/unsplash\";\nimport useDebounce from \"hooks/useDebounce\";\n\nconst UnsplashImagePicker = ({ onSubmit, unsplashApiKey }) => {\n const { t } = useTranslation();\n const masonryRef = useRef(null);\n\n const [query, setQuery] = useState(\"\");\n const [error, setError] = useState(false);\n const [images, setImages] = useState([]);\n const [pageNo, setPageNo] = useState(1);\n const [hasMore, setHasMore] = useState(true);\n const [loading, setLoading] = useState(false);\n\n const debouncedQuery = useDebounce(query || \"latest\");\n\n useEffect(() => {\n fetchUnsplashPhotos(1);\n }, [debouncedQuery]);\n\n const fetchUnsplashPhotos = async page => {\n try {\n setLoading(true);\n setError(false);\n\n const response = await searchUnsplashImages({\n page,\n query: debouncedQuery,\n apiKey: unsplashApiKey,\n });\n const { results, total_pages } = response.data || response;\n\n if (page === 1) {\n setImages(results);\n } else {\n setImages([...images, ...results]);\n }\n\n setPageNo(page + 1);\n setHasMore(page < total_pages);\n } catch {\n setError(true);\n } finally {\n setLoading(false);\n }\n };\n\n const loadMore = () => {\n if (loading || !hasMore) return;\n\n pageNo > 1 && fetchUnsplashPhotos(pageNo);\n };\n\n const Loader = (\n <div className=\"neeto-editor-unsplash-gallery__loader\">\n <Spinner />\n </div>\n );\n\n return (\n <div className=\"neeto-editor-unsplash-wrapper\">\n <Input\n autoFocus\n className=\"neeto-editor-unsplash-search\"\n data-cy=\"neeto-editor-unsplash-image-picker-search-input\"\n name=\"text\"\n placeholder={t(\"neetoEditor.placeholders.searchUnsplash\")}\n value={query}\n onChange={({ target: { value } }) => {\n setQuery(value);\n }}\n />\n {error && (\n <p\n className=\"neeto-editor-unsplash-gallery__text\"\n data-cy=\"neeto-editor-unsplash-image-picker-error\"\n >\n {t(\"neetoEditor.unsplash.errorMessage\")}\n </p>\n )}\n {!error && !loading && isNotPresent(images) && (\n <p\n className=\"neeto-editor-unsplash-gallery__text\"\n data-cy=\"neeto-editor-unsplash-image-picker-no-results-error\"\n >\n {t(\"neetoEditor.unsplash.noResults\")}\n </p>\n )}\n {!error && (\n <div className=\"neeto-editor-unsplash-container\">\n <MasonryInfiniteScroller\n pack\n position\n className=\"neeto-editor-unsplash-gallery\"\n {...{ hasMore, loadMore }}\n loader={Loader}\n ref={masonryRef}\n style={{ width: \"100%\" }}\n useWindow={false}\n sizes={[\n { columns: 3, gutter: 0 },\n { mq: \"768px\", columns: 3, gutter: 0 },\n { mq: \"1024px\", columns: 3, gutter: 0 },\n ]}\n >\n {images &&\n images.map((image, index) => (\n <div\n className=\"neeto-editor-unsplash-gallery__item\"\n data-cy={`neeto-editor-unsplash-image-picker-result-${index}`}\n key={index}\n >\n <div\n className=\"neeto-editor-unsplash-gallery__item-placeholder\"\n style={{\n paddingBottom: `${(image.height / image.width) * 100}%`,\n }}\n >\n <div\n className=\"neeto-editor-unsplash-gallery__item-inner\"\n id={`unsplashImage${index}`}\n >\n <img\n src={image.urls.regular}\n onClick={() => onSubmit(image.urls.small)}\n />\n <a\n href={`https://unsplash.com/@${image.user.username}`}\n rel=\"noreferrer\"\n target=\"_blank\"\n >\n {image.user.name}{\" \"}\n </a>\n </div>\n </div>\n </div>\n ))}\n </MasonryInfiniteScroller>\n {!hasMore && (\n <p className=\"neeto-editor-unsplash-gallery__text\">\n {t(\"neetoEditor.unsplash.end\")}\n </p>\n )}\n </div>\n )}\n </div>\n );\n};\n\nexport default UnsplashImagePicker;\n","import React, { useState } from \"react\";\n\nimport classNames from \"classnames\";\nimport { Button, Input } from \"neetoui\";\nimport { useTranslation } from \"react-i18next\";\n\nimport { URL_REGEXP } from \"common/constants\";\n\nconst URLForm = ({\n buttonLabel = \"Submit\",\n placeholder,\n onSubmit,\n className = \"\",\n}) => {\n const { t } = useTranslation();\n\n const [urlString, setUrlString] = useState(\"\");\n const [error, setError] = useState(\"\");\n\n const handleSubmit = event => {\n event.preventDefault();\n URL_REGEXP.test(urlString)\n ? onSubmit(urlString)\n : setError(t(\"neetoEditor.error.invalidUrl\"));\n };\n\n return (\n <div\n className={classNames(\"neeto-editor-url-form__wrapper\", {\n [className]: className,\n })}\n >\n <Input\n autoFocus\n data-cy=\"neeto-editor-media-upload-url-input\"\n {...{ error, placeholder }}\n name=\"url\"\n value={urlString}\n onChange={({ target: { value } }) => setUrlString(value)}\n onFocus={() => setError(\"\")}\n />\n <Button\n data-cy=\"neeto-editor-media-upload-url-submit\"\n disabled={!urlString}\n label={buttonLabel}\n onClick={handleSubmit}\n />\n </div>\n );\n};\n\nexport default URLForm;\n","import React, { useEffect, useState } from \"react\";\n\nimport { isNotPresent } from \"neetocist\";\nimport { Modal, Tab } from \"neetoui\";\nimport { not } from \"ramda\";\nimport { useTranslation } from \"react-i18next\";\n\nimport LocalUploader from \"./LocalUploader\";\nimport UnsplashImagePicker from \"./UnsplashImagePicker\";\nimport URLForm from \"./URLForm\";\nimport { getTabs } from \"./utils\";\n\nconst MediaUploader = ({ mediaUploader, onClose, editor, unsplashApiKey }) => {\n const { t } = useTranslation();\n\n const [activeTab, setActiveTab] = useState(\"local\");\n const [isUploading, setIsUploading] = useState(false);\n const isOpen = mediaUploader.image || mediaUploader.video;\n const [tabs, setTabs] = useState([]);\n\n useEffect(() => {\n isOpen && setTabs(getTabs(mediaUploader, unsplashApiKey));\n }, [mediaUploader]);\n\n const handleClose = () => {\n onClose();\n setActiveTab(\"local\");\n editor.commands.focus();\n };\n\n const handleSubmit = url => {\n insertMediaToEditor({ url });\n handleClose();\n };\n\n const insertMediaToEditor = file => {\n const { url, filename = \"\", caption = \"\" } = file;\n const mediaAttrs = { src: url, caption, alt: filename };\n const setMedia = mediaUploader.image\n ? editor.chain().setFigure(mediaAttrs)\n : editor.chain().setVideo(mediaAttrs);\n\n setMedia\n .focus()\n .command(({ tr, commands }) => {\n const { doc, selection } = tr;\n const position = doc.resolve(selection.to).end() + 1;\n\n return commands.insertContentAt(position, \"<p></p>\");\n })\n .run();\n };\n\n const handleKeydown = event =>\n not(isUploading) && event.key === \"Escape\" && handleClose();\n\n return (\n <Modal\n {...{ isOpen }}\n className=\"ne-media-uploader-modal\"\n closeButton={false}\n closeOnOutsideClick={not(isUploading)}\n onClose={handleClose}\n onKeyDown={handleKeydown}\n >\n <div className=\"ne-media-uploader\">\n {!isNotPresent(tabs) && (\n <Tab>\n {tabs.map(({ key, title }) => (\n <Tab.Item\n active={activeTab === key}\n data-cy={`neeto-editor-media-uploader-${key}-tab`}\n key={key}\n onClick={() => setActiveTab(key)}\n >\n {title}\n </Tab.Item>\n ))}\n </Tab>\n )}\n <div className=\"ne-media-uploader__content\">\n {activeTab === \"local\" && (\n <LocalUploader\n {...{ insertMediaToEditor, setIsUploading }}\n isImage={mediaUploader.image}\n onClose={handleClose}\n />\n )}\n {activeTab === \"link\" && (\n <URLForm\n placeholder={t(\"neetoEditor.placeholders.pasteLink\")}\n buttonLabel={\n mediaUploader.image\n ? t(\"neetoEditor.localUploader.uploadImage\")\n : t(\"neetoEditor.localUploader.uploadVideo\")\n }\n onSubmit={handleSubmit}\n />\n )}\n {activeTab === \"unsplash\" && (\n <UnsplashImagePicker\n {...{ unsplashApiKey }}\n onSubmit={handleSubmit}\n />\n )}\n </div>\n </div>\n </Modal>\n );\n};\n\nexport default MediaUploader;\n","import React, { useEffect, useState } from \"react\";\n\nimport { URL_REGEXP } from \"common/constants\";\nimport { isNotPresent } from \"neetocist\";\nimport { Close } from \"neetoicons\";\nimport { Button } from \"neetoui\";\nimport { useTranslation } from \"react-i18next\";\n\nconst LinkOption = ({ editor, handleClose, handleAnimateInvalidLink }) => {\n const { t } = useTranslation();\n\n const [link, setLink] = useState(\"\");\n\n useEffect(() => {\n setLink(editor.getAttributes(\"link\").href || \"\");\n }, [editor]);\n\n const handleKeyDown = event => {\n if (event.key === \"Escape\") {\n handleClose();\n } else if (event.key === \"Enter\") {\n handleSubmit();\n }\n };\n\n const handleSubmit = () => {\n if (URL_REGEXP.test(link)) {\n editor.chain().focus().setLink({ href: link }).run();\n handleClose();\n } else if (isNotPresent(link)) {\n editor.chain().focus().unsetLink().run();\n handleClose();\n } else {\n setLink(\"\");\n handleAnimateInvalidLink();\n }\n };\n\n const handleReset = () => {\n if (link) {\n setLink(\"\");\n editor.chain().focus().unsetLink().run();\n } else {\n handleClose();\n }\n };\n\n return (\n <div className=\"neeto-editor-bubble-menu__link\" onKeyDown={handleKeyDown}>\n <input\n autoFocus\n className=\"neeto-editor-bubble-menu-link__input\"\n data-cy=\"neeto-editor-link-input\"\n name=\"url\"\n placeholder={t(\"neetoEditor.placeholders.linkInput\")}\n value={link}\n onChange={({ target: { value } }) => setLink(value)}\n />\n <Button\n data-cy=\"neeto-editor-link-cancel-button\"\n icon={Close}\n size=\"small\"\n style=\"secondary\"\n onClick={handleReset}\n />\n </div>\n );\n};\n\nexport default LinkOption;\n","import React, { useState } from \"react\";\n\nimport { withEventTargetValue } from \"neetocommons/utils\";\nimport { Check, Close } from \"neetoicons\";\nimport { Button, Label } from \"neetoui\";\nimport { useTranslation } from \"react-i18next\";\n\nconst TableOption = ({ editor, handleClose }) => {\n const { t } = useTranslation();\n\n const [rows, setRows] = useState(3);\n const [columns, setColumns] = useState(3);\n\n const handleSubmit = () => {\n editor\n .chain()\n .focus()\n .insertTable({ rows, cols: columns, withHeaderRow: true })\n .run(),\n setRows(3);\n setColumns(3);\n handleClose();\n };\n\n return (\n <div className=\"neeto-editor-bubble-menu__table\">\n <div className=\"neeto-editor-bubble-menu__table__menu-item\">\n <Label className=\"neeto-editor-bubble-menu__table__input-label\">\n {t(\"neetoEditor.menu.rows\")}\n </Label>\n <input\n autoFocus\n data-cy=\"neeto-editor-fixed-menu-table-option-input\"\n min=\"1\"\n placeholder={t(\"neetoEditor.placeholders.rows\")}\n type=\"number\"\n value={rows}\n onChange={withEventTargetValue(setRows)}\n />\n </div>\n <div className=\"neeto-editor-bubble-menu__table__menu-item\">\n <Label className=\"neeto-editor-bubble-menu__table__input-label\">\n {t(\"neetoEditor.menu.columns\")}\n </Label>\n <input\n data-cy=\"neeto-editor-bubble-menu-table-option-input\"\n min=\"1\"\n placeholder={t(\"neetoEditor.placeholders.columns\")}\n type=\"number\"\n value={columns}\n onChange={withEventTargetValue(setColumns)}\n />\n </div>\n <div className=\"neeto-editor-bubble-menu__table__buttons\">\n <Button\n data-cy=\"neeto-editor-bubble-menu-table-option-create-button\"\n icon={Check}\n style=\"secondary\"\n onClick={handleSubmit}\n />\n <Button\n data-cy=\"neeto-editor-bubble-menu-table-option-create-button\"\n icon={Close}\n style=\"secondary\"\n onClick={handleClose}\n />\n </div>\n </div>\n );\n};\n\nexport default TableOption;\n","import React from \"react\";\n\nimport { t } from \"i18next\";\nimport {\n Quote,\n Attachment,\n CodeBlock,\n Code,\n Highlight,\n Link,\n TextBold,\n TextCross,\n TextItalic,\n Underline,\n ListDot,\n ListNumber,\n ImageUpload,\n Video,\n MediaVideo,\n Undo,\n Redo,\n} from \"neetoicons\";\nimport { Button } from \"neetoui\";\nimport { assoc, fromPairs, not, prop } from \"ramda\";\n\nimport { generateFocusProps } from \"utils/focusHighlighter\";\n\nexport const createMenuOptions = ({\n tooltips,\n editor,\n setMediaUploader,\n attachmentProps,\n setIsEmbedModalOpen,\n setIsAddLinkActive,\n}) => ({\n font: [\n {\n Icon: TextBold,\n command: () => editor.chain().focus().toggleBold().run(),\n active: editor.isActive(\"bold\"),\n optionName: \"bold\",\n tooltip: tooltips.bold || t(\"neetoEditor.menu.bold\"),\n },\n {\n Icon: TextItalic,\n command: () => editor.chain().focus().toggleItalic().run(),\n active: editor.isActive(\"italic\"),\n optionName: \"italic\",\n tooltip: tooltips.italic || t(\"neetoEditor.menu.italic\"),\n },\n {\n Icon: Underline,\n command: () => editor.chain().focus().toggleUnderline().run(),\n active: editor.isActive(\"underline\"),\n optionName: \"underline\",\n tooltip: tooltips.underline || t(\"neetoEditor.menu.underline\"),\n },\n {\n Icon: Link,\n command: () => setIsAddLinkActive(not),\n optionName: \"link\",\n tooltip: \"Link\",\n },\n {\n Icon: TextCross,\n command: () => editor.chain().focus().toggleStrike().run(),\n active: editor.isActive(\"strike\"),\n optionName: \"strike\",\n tooltip: tooltips.strike || t(\"neetoEditor.menu.strike\"),\n },\n {\n Icon: Highlight,\n command: () => editor.chain().focus().toggleHighlight().run(),\n active: editor.isActive(\"highlight\"),\n optionName: \"highlight\",\n tooltip: tooltips.highlight || t(\"neetoEditor.menu.highlight\"),\n },\n ],\n block: [\n {\n Icon: Quote,\n command: () => editor.chain().focus().toggleBlockquote().run(),\n active: editor.isActive(\"blockquote\"),\n optionName: \"block-quote\",\n highlight: true,\n tooltip: tooltips.blockQuote || t(\"neetoEditor.menu.blockQuote\"),\n },\n {\n Icon: Code,\n command: () => editor.chain().focus().toggleCode().run(),\n active: editor.isActive(\"code\"),\n optionName: \"code\",\n tooltip: tooltips.code || t(\"neetoEditor.menu.code\"),\n },\n {\n Icon: CodeBlock,\n command: () => editor.chain().focus().toggleCodeBlock().run(),\n active: editor.isActive(\"codeBlock\"),\n optionName: \"code-block\",\n tooltip: tooltips.codeBlock || t(\"neetoEditor.menu.codeBlock\"),\n },\n ],\n list: [\n {\n Icon: ListDot,\n command: () => editor.chain().focus().toggleBulletList().run(),\n active: editor.isActive(\"bulletList\"),\n optionName: \"bullet-list\",\n highlight: true,\n tooltip: tooltips.bulletList || t(\"neetoEditor.menu.bulletedList\"),\n },\n {\n Icon: ListNumber,\n command: () => editor.chain().focus().toggleOrderedList().run(),\n active: editor.isActive(\"orderedList\"),\n optionName: \"ordered-list\",\n highlight: true,\n tooltip: tooltips.orderedList || t(\"neetoEditor.menu.orderedList\"),\n },\n ],\n misc: [\n {\n Icon: Attachment,\n command: attachmentProps?.handleUploadAttachments,\n disabled: attachmentProps?.isDisabled,\n active: false,\n optionName: \"attachments\",\n tooltip: tooltips.attachments || t(\"neetoEditor.menu.attachments\"),\n },\n {\n Icon: ImageUpload,\n command: () => setMediaUploader(assoc(\"image\", true)),\n optionName: \"image-upload\",\n tooltip: tooltips.imageUpload || t(\"neetoEditor.menu.imageUpload\"),\n },\n {\n Icon: Video,\n command: () => setMediaUploader(assoc(\"video\", true)),\n optionName: \"video-upload\",\n tooltip: tooltips.videoUpload || t(\"neetoEditor.menu.videoUpload\"),\n },\n {\n Icon: MediaVideo,\n command: () => setIsEmbedModalOpen(true),\n optionName: \"video-embed\",\n tooltip: tooltips.videoEmbed || t(\"neetoEditor.menu.videoEmbed\"),\n },\n ],\n right: [\n {\n Icon: Undo,\n command: () => editor.chain().focus().undo().run(),\n active: false,\n disabled: !editor.can().undo(),\n optionName: \"undo\",\n tooltip: tooltips.undo || t(\"neetoEditor.menu.undo\"),\n },\n {\n Icon: Redo,\n command: () => editor.chain().focus().redo().run(),\n active: false,\n disabled: !editor.can().redo(),\n optionName: \"redo\",\n tooltip: tooltips.redo || t(\"neetoEditor.menu.redo\"),\n },\n ],\n});\n\nexport const buildBubbleMenuOptions = ({\n tooltips,\n editor,\n options,\n setMediaUploader,\n attachmentProps,\n setIsEmbedModalOpen,\n setIsAddLinkActive,\n}) => {\n const menuOptions = createMenuOptions({\n tooltips,\n editor,\n setMediaUploader,\n attachmentProps,\n setIsEmbedModalOpen,\n setIsAddLinkActive,\n });\n\n return fromPairs(\n [\"font\", \"block\", \"list\", \"misc\", \"right\"].map(option => [\n option,\n menuOptions[option].filter(item => options.includes(item.optionName)),\n ])\n );\n};\n\nexport const getTextMenuDropdownOptions = ({ editor }) => [\n {\n optionName: \"Heading 1\",\n active: editor.isActive(\"heading\", { level: 1 }),\n command: () =>\n editor.chain().focus().setNode(\"heading\", { level: 1 }).run(),\n },\n {\n optionName: \"Heading 2\",\n active: editor.isActive(\"heading\", { level: 2 }),\n command: () =>\n editor.chain().focus().setNode(\"heading\", { level: 2 }).run(),\n },\n {\n optionName: \"Heading 3\",\n active: editor.isActive(\"heading\", { level: 3 }),\n command: () =>\n editor.chain().focus().setNode(\"heading\", { level: 3 }).run(),\n },\n {\n optionName: \"Ordered List\",\n active: editor.isActive(\"orderedList\"),\n command: () => editor.chain().focus().toggleOrderedList().run(),\n },\n {\n optionName: \"Bulleted List\",\n active: editor.isActive(\"bulletList\"),\n command: () => editor.chain().focus().toggleBulletList().run(),\n },\n {\n optionName: \"Text\",\n active: editor.isActive(\"paragraph\"),\n command: () => editor.chain().focus().setNode(\"paragraph\").run(),\n },\n];\n\nexport const getNodeType = options =>\n options.find(prop(\"active\"))?.optionName || \"Text\";\n\nexport const renderOptionButton = ({\n tooltip,\n Icon,\n command,\n active,\n optionName,\n highlight,\n}) => (\n <Button\n data-cy={`neeto-editor-bubble-menu-${optionName}-option`}\n icon={Icon}\n key={optionName}\n size=\"small\"\n style={active ? \"secondary\" : \"text\"}\n tooltipProps={{\n content: tooltip,\n position: \"bottom\",\n theme: \"dark\",\n delay: [500],\n }}\n onClick={command}\n {...generateFocusProps(highlight)}\n />\n);\n","import React from \"react\";\n\nimport { EDITOR_OPTIONS } from \"common/constants\";\nimport { Link, Column } from \"neetoicons\";\nimport { Dropdown } from \"neetoui\";\nimport { useTranslation } from \"react-i18next\";\n\nimport LinkOption from \"./LinkOption\";\nimport TableOption from \"./TableOption\";\nimport {\n getNodeType,\n getTextMenuDropdownOptions,\n renderOptionButton,\n buildBubbleMenuOptions,\n} from \"./utils\";\n\nimport Mentions from \"../../CustomExtensions/Mention\";\nimport EmojiOption from \"../Fixed/components/EmojiOption\";\nimport TextColorOption from \"../Fixed/components/TextColorOption\";\n\nconst Options = ({\n editor,\n options,\n mentions,\n tooltips,\n setIsInvalidLink,\n isLinkOptionActive,\n isTableOptionActive,\n setIsLinkOptionActive,\n setIsTableOptionActive,\n setMediaUploader,\n attachmentProps,\n isEmojiPickerActive,\n setIsEmojiPickerActive,\n setIsEmbedModalOpen,\n children,\n}) => {\n const { t } = useTranslation();\n const { Menu, MenuItem } = Dropdown;\n\n const dropdownOptions = getTextMenuDropdownOptions({ editor });\n const nodeType = getNodeType(dropdownOptions);\n const isEmojiActive = options.includes(EDITOR_OPTIONS.EMOJI);\n const isTextColorOptionActive = options.includes(EDITOR_OPTIONS.TEXT_COLOR);\n const isLinkActive = options.includes(EDITOR_OPTIONS.LINK);\n const isTableActive = options.includes(EDITOR_OPTIONS.TABLE);\n\n const {\n font: fontStyleOptions,\n block: blockStyleOptions,\n list: listStyleOptions,\n } = buildBubbleMenuOptions({\n editor,\n options,\n setMediaUploader,\n tooltips,\n attachmentProps,\n setIsEmbedModalOpen,\n setIsAddLinkActive: setIsLinkOptionActive,\n });\n\n const handleAnimateInvalidLink = () => {\n setIsInvalidLink(true);\n setTimeout(() => {\n setIsInvalidLink(false);\n }, 1000);\n };\n\n if (isLinkOptionActive) {\n return (\n <LinkOption\n {...{ editor, handleAnimateInvalidLink }}\n handleClose={() => setIsLinkOptionActive(false)}\n />\n );\n }\n\n if (isTableOptionActive) {\n return (\n <TableOption\n {...{ editor }}\n handleClose={() => setIsTableOptionActive(false)}\n />\n );\n }\n\n return (\n <>\n <Dropdown\n buttonSize=\"small\"\n buttonStyle=\"text\"\n label={nodeType}\n strategy=\"fixed\"\n >\n <Menu>\n {dropdownOptions.map(({ optionName, command }) => (\n <MenuItem.Button key={optionName} onClick={command}>\n {optionName}\n </MenuItem.Button>\n ))}\n </Menu>\n </Dropdown>\n {fontStyleOptions.map(renderOptionButton)}\n {blockStyleOptions.map(renderOptionButton)}\n {isTextColorOptionActive && (\n <TextColorOption\n {...{ editor }}\n tooltipContent={tooltips.textColor || t(\"neetoEditor.menu.textColor\")}\n />\n )}\n {isEmojiActive && (\n <EmojiOption\n {...{ editor }}\n isActive={isEmojiPickerActive}\n setActive={setIsEmojiPickerActive}\n tooltipContent={tooltips.emoji || t(\"neetoEditor.menu.emoji\")}\n />\n )}\n {listStyleOptions.map(renderOptionButton)}\n {isLinkActive &&\n renderOptionButton({\n Icon: Link,\n command: () => setIsLinkOptionActive(true),\n active: editor.isActive(\"link\"),\n optionName: \"link\",\n highlight: false,\n tooltip: tooltips.link || t(\"neetoEditor.menu.link\"),\n })}\n {isTableActive &&\n renderOptionButton({\n Icon: Column,\n command: () => setIsTableOptionActive(true),\n active: editor.isActive(\"table\"),\n optionName: \"table\",\n highlight: false,\n tooltip: tooltips.table || t(\"neetoEditor.menu.table\"),\n })}\n <Mentions\n {...{ editor, mentions }}\n tooltipContent={tooltips.mention || t(\"neetoEditor.menu.mention\")}\n />\n {children}\n </>\n );\n};\n\nexport default Options;\n","import React, { useState } from \"react\";\n\nimport { BubbleMenu as BubbleMenuTipTap } from \"@tiptap/react\";\nimport classnames from \"classnames\";\nimport { EDITOR_OPTIONS } from \"common/constants\";\nimport { isNotPresent } from \"neetocist\";\nimport { roundArrow } from \"tippy.js\";\nimport \"tippy.js/dist/svg-arrow.css\";\n\nimport Options from \"./Options\";\n\nconst Bubble = ({\n editor,\n options: textOptions,\n mentions = [],\n setMediaUploader,\n tooltips = {},\n attachmentProps,\n isEmojiPickerActive,\n setIsEmojiPickerActive,\n setIsEmbedModalOpen,\n children,\n}) => {\n const [isInvalidLink, setIsInvalidLink] = useState(false);\n const [isLinkOptionActive, setIsLinkOptionActive] = useState(false);\n const [isTableOptionActive, setIsTableOptionActive] = useState(false);\n const selectedNode = editor && editor.view.state.selection.node;\n const isImageNodeSelected =\n selectedNode && selectedNode.type.name === \"image\";\n\n const bubbleMenuOptions = [\n EDITOR_OPTIONS.BOLD,\n EDITOR_OPTIONS.ITALIC,\n EDITOR_OPTIONS.UNDERLINE,\n EDITOR_OPTIONS.STRIKETHROUGH,\n EDITOR_OPTIONS.LINK,\n ];\n\n const noTextOptions = isNotPresent(\n textOptions.filter(option => bubbleMenuOptions.includes(option))\n );\n if (!editor || (!isImageNodeSelected && noTextOptions)) {\n return null;\n }\n\n return (\n <div>\n <BubbleMenuTipTap\n {...{ editor }}\n className={classnames(\"neeto-editor-bubble-menu\", {\n \"neeto-editor-bubble-menu-animate-shake\": isInvalidLink,\n })}\n tippyOptions={{\n arrow: roundArrow,\n zIndex: 99999,\n onHide: () => {\n setIsLinkOptionActive(false);\n setIsTableOptionActive(false);\n },\n theme: \"neeto-editor-bubble-menu\",\n maxWidth: 500,\n }}\n >\n <Options\n {...{\n attachmentProps,\n editor,\n isEmojiPickerActive,\n isLinkOptionActive,\n isTableOptionActive,\n mentions,\n setIsEmbedModalOpen,\n setIsEmojiPickerActive,\n setIsInvalidLink,\n setIsLinkOptionActive,\n setIsTableOptionActive,\n setMediaUploader,\n tooltips,\n }}\n options={textOptions}\n >\n {children}\n </Options>\n </BubbleMenuTipTap>\n </div>\n );\n};\n\nexport default Bubble;\n","import React, { useState, useEffect, useRef } from \"react\";\n\nimport { isNotPresent } from \"neetocist\";\nimport { useOnClickOutside } from \"neetocommons/react-utils\";\nimport { Button, Checkbox, Input } from \"neetoui\";\nimport { not } from \"ramda\";\nimport { createPortal } from \"react-dom\";\nimport { useTranslation } from \"react-i18next\";\n\nimport { validateAndFormatUrl } from \"components/Editor/utils\";\nimport { URL_REGEXP } from \"src/common/constants\";\n\nimport { getLinkPopoverPosition, getCursorPos } from \"../utils\";\n\nconst LinkAddPopOver = ({\n isAddLinkActive,\n setIsAddLinkActive,\n editor,\n openLinkInNewTab,\n}) => {\n const { from, to } = editor.state.selection;\n const text = editor.state.doc.textBetween(from, to, \"\");\n\n const [linkText, setLinkText] = useState(text);\n const [linkUrl, setLinkUrl] = useState(\"\");\n const [openInNewTab, setOpenInNewTab] = useState(openLinkInNewTab);\n const [error, setError] = useState(\"\");\n const [popoverPosition, setPopoverPosition] = useState(\n getCursorPos(editor, to)\n );\n const [arrowPosition, setArrowPosition] = useState({ top: 0, left: 0 });\n\n const popoverRef = useRef(null);\n\n const { t } = useTranslation();\n\n const isLinkTextPresent = !isNotPresent(linkText);\n const isLinlUrlPresent = !isNotPresent(linkUrl);\n const isSubmitDisabled = !isLinkTextPresent || !isLinlUrlPresent;\n\n const popoverStyle = {\n display: \"block\",\n position: \"fixed\",\n top: popoverPosition.top,\n left: popoverPosition.left,\n transform: \"translateY(52px) translateX(8px)\",\n };\n\n const handleAddLink = () => {\n const { state, dispatch } = editor.view;\n const { from, to } = state.selection;\n const formattedUrl = validateAndFormatUrl(linkUrl);\n\n if (!URL_REGEXP.test(formattedUrl)) {\n setError(t(\"neetoEditor.error.invalidUrl\"));\n\n return;\n }\n\n const attrs = {\n href: formattedUrl,\n target: openInNewTab ? \"_blank\" : null,\n };\n\n const linkMark = state.schema.marks.link.create(attrs);\n const linkTextWithMark = state.schema.text(linkText, [linkMark]);\n\n const tr = state.tr.replaceWith(from, to, linkTextWithMark);\n dispatch(tr);\n removePopover();\n };\n\n const removePopover = () => {\n editor.view.focus();\n setIsAddLinkActive(false);\n };\n\n const handleKeyDown = e => {\n e.stopPropagation();\n if (e.key === \"Enter\") {\n e.preventDefault();\n handleAddLink();\n } else if (e.key === \"Escape\") {\n removePopover();\n }\n };\n\n const updatePopoverPosition = () => {\n const { arrowPosition, popoverPosition } = getLinkPopoverPosition(\n editor,\n popoverRef\n );\n setPopoverPosition(popoverPosition);\n setArrowPosition(arrowPosition);\n };\n\n useOnClickOutside(popoverRef, removePopover);\n\n useEffect(() => {\n if (editor && isAddLinkActive) {\n updatePopoverPosition();\n }\n window.addEventListener(\"resize\", removePopover);\n window.addEventListener(\"wheel\", removePopover);\n\n return () => {\n window.removeEventListener(\"resize\", removePopover);\n window.removeEventListener(\"wheel\", removePopover);\n };\n }, []);\n\n return isAddLinkActive\n ? createPortal(\n <>\n <div\n className=\"ne-link-arrow fade-in\"\n style={{ top: arrowPosition.top, left: arrowPosition.left }}\n />\n <div\n className=\"ne-link-popover fade-in\"\n id=\"ne-link-add-popover\"\n ref={popoverRef}\n style={popoverStyle}\n >\n <Input\n required\n autoFocus={!isLinkTextPresent}\n data-cy=\"neeto-editor-add-link-text-input\"\n label={t(\"neetoEditor.common.text\")}\n placeholder={t(\"neetoEditor.placeholders.enterText\")}\n size=\"small\"\n style={{ width: \"250px\" }}\n value={linkText}\n onChange={({ target: { value } }) => setLinkText(value)}\n onKeyDown={handleKeyDown}\n />\n <Input\n {...{ error }}\n required\n autoFocus={isLinkTextPresent}\n className=\"ne-link-popover__url-input\"\n data-cy=\"neeto-editor-add-link-url-input\"\n label={t(\"neetoEditor.common.url\")}\n placeholder={t(\"neetoEditor.placeholders.url\")}\n size=\"small\"\n style={{ width: \"250px\" }}\n value={linkUrl}\n onChange={({ target: { value } }) => setLinkUrl(value)}\n onFocus={() => setError(\"\")}\n onKeyDown={handleKeyDown}\n />\n <Checkbox\n checked={openInNewTab}\n className=\"ne-link-popover__checkbox\"\n data-cy=\"neeto-editor-add-link-open-in-new-tab-switch\"\n label={t(\"neetoEditor.common.openInNewTab\")}\n onChange={() => setOpenInNewTab(not)}\n />\n <div className=\"ne-link-popover__edit-prompt-buttons\">\n <Button\n data-cy=\"neeto-editor-add-link\"\n disabled={isSubmitDisabled}\n label={t(\"neetoEditor.common.done\")}\n size=\"small\"\n onClick={handleAddLink}\n />\n <Button\n data-cy=\"neeto-editor-link-popover-cancel\"\n label={t(\"neetoEditor.common.cancel\")}\n size=\"small\"\n style=\"text\"\n onClick={removePopover}\n />\n </div>\n </div>\n </>,\n document.body\n )\n : null;\n};\n\nexport default LinkAddPopOver;\n","import React from \"react\";\n\nimport { MenuHorizontal } from \"neetoicons\";\nimport { Dropdown } from \"neetoui\";\n\nimport { generateFocusProps } from \"utils/focusHighlighter\";\n\nimport { MENU_ELEMENTS, MENU_ELEMENT_TYPES } from \"../constants\";\n\nconst { Menu, MenuItem } = Dropdown;\n\nconst MoreMenu = ({ groups, editor }) => (\n <Dropdown\n buttonProps={{ className: \"flex-shrink-0\" }}\n buttonStyle=\"text\"\n icon={MenuHorizontal}\n strategy=\"fixed\"\n >\n <Menu>\n {groups.map(group =>\n group.map(({ type, ...props }) => {\n const Component = MENU_ELEMENTS[type];\n\n if (type === MENU_ELEMENT_TYPES.BUTTON) {\n const { icon: Icon } = props;\n\n return (\n <MenuItem.Button\n data-cy={`neeto-editor-fixed-menu-${props.optionName}-option`}\n isActive={editor.isActive(props.optionName)}\n key={props.optionName}\n tabIndex=\"-1\"\n onClick={props.command}\n {...{\n ...generateFocusProps(props.highlight),\n ...props,\n editor,\n }}\n >\n <Icon /> {props.label}\n </MenuItem.Button>\n );\n }\n\n return (\n <Component\n key={props.optionName}\n {...{ ...props, editor, ...generateFocusProps(props.highlight) }}\n isSecondaryMenu\n />\n );\n })\n )}\n </Menu>\n </Dropdown>\n);\n\nexport default MoreMenu;\n","import React, {\n useCallback,\n useEffect,\n useMemo,\n useRef,\n useState,\n} from \"react\";\n\nimport classNames from \"classnames\";\nimport { EDITOR_OPTIONS } from \"common/constants\";\nimport { isNotEmpty } from \"neetocist\";\nimport DynamicVariables from \"neetomolecules/DynamicVariables\";\nimport { isEmpty } from \"ramda\";\nimport { useTranslation } from \"react-i18next\";\n\nimport EmbedOption from \"components/Editor/CustomExtensions/Embeds\";\nimport MediaUploader from \"components/Editor/MediaUploader\";\n\nimport LinkAddPopOver from \"./components/LinkAddPopOver\";\nimport MoreMenu from \"./components/MoreMenu\";\nimport { MENU_ELEMENTS } from \"./constants\";\nimport { reGroupMenuItems, buildMenuOptions } from \"./utils\";\n\nconst Fixed = ({\n editor,\n options,\n mentions = [],\n variables = [],\n setMediaUploader,\n mediaUploader,\n unsplashApiKey,\n addonCommands = [],\n isIndependant = true,\n className,\n tooltips = {},\n attachmentProps,\n isEmojiPickerActive,\n setIsEmojiPickerActive,\n children,\n openLinkInNewTab,\n}) => {\n const [focusedButtonIndex, setFocusedButtonIndex] = useState(0);\n const [isEmbedModalOpen, setIsEmbedModalOpen] = useState(false);\n const [isAddLinkActive, setIsAddLinkActive] = useState(false);\n const [menuItems, setMenuItems] = useState([]);\n const [moreMenuItems, setMoreMenuItems] = useState([]);\n\n const menuRef = useRef(null);\n const menuContainerRef = useRef(null);\n\n const { t } = useTranslation();\n\n const handleArrowNavigation = event => {\n if (event.key === \"ArrowRight\") {\n event.preventDefault();\n setFocusedButtonIndex(prevIndex => (prevIndex + 1) % menuButtons.length);\n } else if (event.key === \"ArrowLeft\") {\n event.preventDefault();\n setFocusedButtonIndex(\n prevIndex => (prevIndex - 1 + menuButtons.length) % menuButtons.length\n );\n }\n };\n\n const menuButtons = useMemo(\n () => menuRef.current?.querySelectorAll(\".neeto-editor-fixed-menu__item\"),\n [menuRef.current]\n );\n\n useEffect(() => {\n menuButtons?.[focusedButtonIndex].focus();\n }, [focusedButtonIndex]);\n\n useEffect(() => {\n menuButtons?.forEach(menuItem =>\n menuItem.addEventListener(\"keydown\", handleArrowNavigation)\n );\n\n return () =>\n menuButtons?.forEach(menuItem =>\n menuItem.removeEventListener(\"keydown\", handleArrowNavigation)\n );\n }, [menuButtons]);\n\n const menuGroups = useMemo(\n () =>\n buildMenuOptions({\n tooltips,\n editor,\n options,\n setMediaUploader,\n attachmentProps,\n setIsEmbedModalOpen,\n setIsAddLinkActive,\n mentions,\n addonCommands,\n setIsEmojiPickerActive,\n isEmojiPickerActive,\n }),\n [editor, isEmojiPickerActive, mentions]\n );\n\n const handleResize = useCallback(() => {\n if (!menuRef.current) return;\n const { visibleMenuGroups, invisibleMenuGroups } = reGroupMenuItems(\n menuRef,\n menuGroups\n );\n setMenuItems(visibleMenuGroups);\n setMoreMenuItems(invisibleMenuGroups);\n }, [menuGroups]);\n\n useEffect(() => {\n handleResize();\n\n const menuContainer = menuContainerRef.current;\n const resizeObserver = new ResizeObserver(handleResize);\n if (menuContainer) {\n resizeObserver.observe(menuContainer);\n }\n\n return () => {\n if (menuContainer) resizeObserver.unobserve(menuContainer);\n };\n }, [menuContainerRef, handleResize, menuGroups]);\n\n if (!editor) return null;\n\n const isEmbedOptionActive = options.includes(EDITOR_OPTIONS.VIDEO_EMBED);\n const isMediaUploaderActive =\n options.includes(EDITOR_OPTIONS.IMAGE_UPLOAD) ||\n options.includes(EDITOR_OPTIONS.VIDEO_UPLOAD);\n\n const handleVariableClick = item => {\n const { category, key } = item;\n const variableName = category ? `${category}.${key}` : key;\n editor.chain().focus().setVariable({ label: variableName }).run();\n };\n\n return (\n <div\n ref={menuContainerRef}\n className={classNames(\"neeto-editor-fixed-menu\", {\n \"neeto-editor-fixed-menu--independant\": isIndependant,\n [className]: className,\n })}\n >\n <div\n className=\"neeto-editor-fixed-menu__wrapper\"\n data-cy=\"neeto-editor-fixed-menu-wrapper\"\n ref={menuRef}\n >\n {menuItems.map(group =>\n group.map(({ type, ...props }) => {\n const Component = MENU_ELEMENTS[type];\n\n if (!Component) return null;\n\n return (\n <Component key={props.optionName} {...{ ...props, editor }} />\n );\n })\n )}\n {isNotEmpty(moreMenuItems) && (\n <MoreMenu {...{ editor }} groups={moreMenuItems} />\n )}\n {children}\n </div>\n {!isEmpty(variables) && (\n <div\n className=\"neeto-editor-fixed-menu__variables\"\n data-cy=\"neeto-editor-fixed-menu-variables\"\n >\n <DynamicVariables\n {...{ variables }}\n dropdownProps={{\n buttonSize: \"small\",\n buttonProps: {\n tooltipProps: {\n content: t(\"neetoEditor.menu.dynamicVariables\"),\n position: \"bottom\",\n },\n },\n }}\n onVariableClick={handleVariableClick}\n />\n </div>\n )}\n {isAddLinkActive && (\n <LinkAddPopOver\n {...{\n editor,\n isAddLinkActive,\n openLinkInNewTab,\n setIsAddLinkActive,\n }}\n />\n )}\n {isMediaUploaderActive && (\n <MediaUploader\n {...{ editor, mediaUploader, unsplashApiKey }}\n onClose={() => setMediaUploader({ image: false, video: false })}\n />\n )}\n {isEmbedOptionActive && (\n <EmbedOption {...{ editor, isEmbedModalOpen, setIsEmbedModalOpen }} />\n )}\n </div>\n );\n};\n\nexport default Fixed;\n","import React from \"react\";\n\nimport classnames from \"classnames\";\nimport { noop } from \"neetocist\";\nimport { Tooltip } from \"neetoui\";\n\nconst Button = ({\n icon = null,\n onClick = noop,\n disabled = false,\n className,\n tooltipProps,\n ...otherProps\n}) => {\n const Icon = icon;\n\n return (\n <Tooltip\n disabled={!tooltipProps}\n onClick={() => onClick()}\n {...tooltipProps}\n >\n <button\n className={classnames(\"ne-headless-btn\", { [className]: className })}\n type=\"button\"\n {...{ disabled, onClick, ...otherProps }}\n >\n {icon && <Icon aria-hidden=\"true\" key=\"2\" size={18} />}\n </button>\n </Tooltip>\n );\n};\n\nexport default Button;\n","import React, { useState } from \"react\";\n\nimport Tippy from \"@tippyjs/react\";\nimport classnames from \"classnames\";\nimport { noop } from \"neetocist\";\n\nimport Button from \"./Button\";\n\nconst hideOnEsc = {\n name: \"hideOnEsc\",\n defaultValue: true,\n fn({ hide, props: { hideOnEsc, onClose } }) {\n function onKeyDown(event) {\n if (event.key.toLowerCase() === \"escape\" && hideOnEsc) {\n onClose();\n hide();\n }\n }\n\n return {\n onShow() {\n document.addEventListener(\"keydown\", onKeyDown);\n },\n onHide() {\n document.removeEventListener(\"keydown\", onKeyDown);\n },\n };\n },\n};\n\nconst Dropdown = ({\n icon,\n isOpen,\n onClose = noop,\n children,\n className,\n onClick,\n buttonProps = {},\n ...otherProps\n}) => {\n const [mounted, setMounted] = useState(false);\n\n return (\n <Tippy\n hideOnEsc\n interactive\n animation={false}\n arrow={false}\n duration={0}\n hideOnClick={false}\n maxWidth=\"none\"\n offset={0}\n plugins={[hideOnEsc]}\n popperOptions={{ strategy: \"fixed\" }}\n role=\"dropdown\"\n theme=\"light\"\n trigger=\"click\"\n visible={isOpen}\n className={classnames(\"ne-headless-dropdown\", {\n [className]: className,\n })}\n content={\n mounted && <div className=\"ne-headless-dropdown__popup\">{children}</div>\n }\n onClickOutside={onClose}\n {...{ onClose }}\n onHidden={() => setMounted(false)}\n onMount={() => setMounted(true)}\n {...otherProps}\n >\n <span>\n <Button {...{ icon, onClick, ...buttonProps }} />\n </span>\n </Tippy>\n );\n};\n\nexport default Dropdown;\n","import React from \"react\";\n\nimport { Smiley } from \"neetoicons\";\n\nimport EmojiPicker from \"components/Editor/CustomExtensions/Emoji/EmojiPicker/EmojiPickerMenu\";\n\nimport Dropdown from \"./UI/Dropdown\";\n\nconst Emoji = ({ editor, isActive, setActive, tooltipContent }) => (\n <Dropdown\n className=\"ne-headless__emoji\"\n icon={Smiley}\n isOpen={isActive}\n buttonProps={{\n tooltipProps: {\n content: tooltipContent,\n delay: [500],\n position: \"bottom\",\n },\n \"data-cy\": \"ne-emoji-picker\",\n }}\n onClick={() => setActive(active => !active)}\n onClose={() => setActive(false)}\n >\n <EmojiPicker {...{ editor, setActive }} />\n </Dropdown>\n);\nexport default Emoji;\n","import React from \"react\";\n\nimport { hyphenate } from \"neetocist\";\n\nimport { EDITOR_OPTIONS } from \"common/constants\";\n\nimport Emoji from \"./Emoji\";\nimport Button from \"./UI/Button\";\n\nconst Option = ({\n editor,\n optionName,\n command,\n disabled,\n Icon,\n isActive,\n setActive,\n tooltip,\n}) => {\n if (optionName === EDITOR_OPTIONS.EMOJI) {\n return (\n <Emoji\n {...{ editor, isActive, setActive }}\n tooltipContent={tooltip || \"Emoji\"}\n />\n );\n }\n\n return (\n <Button\n className={isActive ? \"ne-headless-btn--active\" : \"\"}\n {...{ disabled }}\n data-cy={hyphenate(optionName)}\n icon={Icon}\n tooltipProps={{\n content: tooltip,\n delay: [500],\n position: \"bottom\",\n }}\n onClick={command}\n />\n );\n};\n\nexport default Option;\n","import i18n from \"i18next\";\nimport { findBy, noop } from \"neetocist\";\nimport {\n TextBold,\n TextItalic,\n Underline,\n TextCross,\n Highlight,\n Quote,\n Code,\n ListDot,\n ListNumber,\n ImageUpload,\n MediaVideo,\n Undo,\n Redo,\n Smiley,\n File,\n Video,\n Column,\n CodeBlock,\n} from \"neetoicons\";\nimport { assoc } from \"ramda\";\n\nconst { t } = i18n;\n\nconst createMenuOptions = ({\n editor,\n tooltips,\n setMediaUploader,\n attachmentProps,\n isEmojiPickerActive,\n setIsEmojiPickerActive,\n setIsEmbedModalOpen,\n}) => [\n {\n Icon: TextBold,\n command: () => editor.chain().focus().toggleBold().run(),\n active: editor.isActive(\"bold\"),\n optionName: \"bold\",\n tooltip: tooltips.bold || t(\"neetoEditor.menu.bold\"),\n },\n {\n Icon: TextItalic,\n command: () => editor.chain().focus().toggleItalic().run(),\n active: editor.isActive(\"italic\"),\n optionName: \"italic\",\n tooltip: tooltips.italic || t(\"neetoEditor.menu.italic\"),\n },\n {\n Icon: Underline,\n command: () => editor.chain().focus().toggleUnderline().run(),\n active: editor.isActive(\"underline\"),\n optionName: \"underline\",\n tooltip: tooltips.underline || t(\"neetoEditor.menu.underline\"),\n },\n {\n Icon: TextCross,\n command: () => editor.chain().focus().toggleStrike().run(),\n active: editor.isActive(\"strike\"),\n optionName: \"strike\",\n tooltip: tooltips.strike || t(\"neetoEditor.menu.strike\"),\n },\n {\n Icon: Highlight,\n command: () => editor.chain().focus().toggleHighlight().run(),\n active: editor.isActive(\"highlight\"),\n optionName: \"highlight\",\n tooltip: tooltips.highlight || t(\"neetoEditor.menu.highlight\"),\n },\n {\n Icon: Quote,\n command: () => editor.chain().focus().toggleBlockquote().run(),\n active: editor.isActive(\"blockquote\"),\n optionName: \"block-quote\",\n tooltip: tooltips.blockQuote || t(\"neetoEditor.menu.blockQuote\"),\n },\n {\n Icon: Code,\n command: () => editor.chain().focus().toggleCode().run(),\n active: editor.isActive(\"code\"),\n optionName: \"code\",\n tooltip: tooltips.code || t(\"neetoEditor.menu.code\"),\n },\n {\n Icon: CodeBlock,\n command: () => editor.chain().focus().toggleCodeBlock().run(),\n active: editor.isActive(\"codeBlock\"),\n optionName: \"code-block\",\n tooltip: tooltips.codeBlock || t(\"neetoEditor.menu.codeBlock\"),\n },\n {\n Icon: ListDot,\n command: () => editor.chain().focus().toggleBulletList().run(),\n active: editor.isActive(\"bulletList\"),\n optionName: \"bullet-list\",\n tooltip: tooltips.bulletList || t(\"neetoEditor.menu.bulletedList\"),\n },\n {\n Icon: ListNumber,\n command: () => editor.chain().focus().toggleOrderedList().run(),\n active: editor.isActive(\"orderedList\"),\n optionName: \"ordered-list\",\n tooltip: tooltips.orderedList || t(\"neetoEditor.menu.orderedList\"),\n },\n {\n Icon: File,\n command: attachmentProps?.handleUploadAttachments,\n disabled: attachmentProps?.isDisabled,\n optionName: \"attachments\",\n tooltip: tooltips.attachments || t(\"neetoEditor.menu.attachments\"),\n },\n {\n Icon: ImageUpload,\n command: () => setMediaUploader(assoc(\"image\", true)),\n optionName: \"image-upload\",\n tooltip: tooltips.imageUpload || t(\"neetoEditor.menu.imageUpload\"),\n },\n {\n Icon: Video,\n command: () => setMediaUploader(assoc(\"video\", true)),\n optionName: \"video-upload\",\n tooltip: tooltips.videoUpload || t(\"neetoEditor.menu.videoUpload\"),\n },\n {\n Icon: MediaVideo,\n command: () => setIsEmbedModalOpen(true),\n optionName: \"video-embed\",\n tooltip: tooltips.videoEmbed || t(\"neetoEditor.menu.videoEmbed\"),\n },\n {\n Icon: Smiley,\n command: noop,\n optionName: \"emoji\",\n tooltip: tooltips.emoji || t(\"neetoEditor.menu.emoji\"),\n isActive: isEmojiPickerActive,\n setActive: setIsEmojiPickerActive,\n },\n {\n Icon: Column,\n command: () =>\n editor\n .chain()\n .focus()\n .insertTable({ rows: 3, cols: 3, withHeaderRow: true })\n .run(),\n optionName: \"table\",\n tooltip: tooltips.table || t(\"neetoEditor.menu.table\"),\n },\n {\n Icon: Undo,\n command: () => editor.chain().focus().undo().run(),\n disabled: !editor.can().undo(),\n optionName: \"undo\",\n tooltip: tooltips.undo || t(\"neetoEditor.menu.undo\"),\n },\n {\n Icon: Redo,\n command: () => editor.chain().focus().redo().run(),\n disabled: !editor.can().redo(),\n optionName: \"redo\",\n tooltip: tooltips.redo || t(\"neetoEditor.menu.redo\"),\n },\n];\n\nexport const buildMenuOptions = ({\n tooltips,\n editor,\n options,\n setMediaUploader,\n attachmentProps,\n isEmojiPickerActive,\n setIsEmojiPickerActive,\n setIsEmbedModalOpen,\n}) => {\n const menuOptions = createMenuOptions({\n editor,\n tooltips,\n setMediaUploader,\n attachmentProps,\n isEmojiPickerActive,\n setIsEmojiPickerActive,\n setIsEmbedModalOpen,\n });\n\n return options\n .map(option => findBy({ optionName: option }, menuOptions))\n .filter(Boolean);\n};\n","import React from \"react\";\n\nimport classnames from \"classnames\";\n\nimport { EDITOR_OPTIONS } from \"common/constants\";\nimport MediaUploader from \"components/Editor/MediaUploader\";\n\nimport Option from \"./Option\";\nimport { buildMenuOptions } from \"./utils\";\n\nimport { buildOptionsFromAddonCommands } from \"../Fixed/utils\";\n\nconst Headless = ({\n editor,\n options,\n tooltips = {},\n setMediaUploader,\n mediaUploader,\n unsplashApiKey,\n addonCommands = [],\n children,\n className,\n attachmentProps,\n isEmojiPickerActive,\n setIsEmojiPickerActive,\n setIsEmbedModalOpen,\n}) => {\n if (!editor) {\n return null;\n }\n\n const isMediaUploaderActive = options.includes(\n EDITOR_OPTIONS.IMAGE_UPLOAD || EDITOR_OPTIONS.VIDEO_UPLOAD\n );\n\n const menuOptions = buildMenuOptions({\n tooltips,\n editor,\n options,\n setMediaUploader,\n attachmentProps,\n isEmojiPickerActive,\n setIsEmojiPickerActive,\n setIsEmbedModalOpen,\n });\n\n const addonCommandOptions = buildOptionsFromAddonCommands({\n editor,\n commands: addonCommands,\n });\n const allOptions = [...menuOptions, ...addonCommandOptions];\n\n return (\n <div className={classnames(\"ne-headless\", { [className]: className })}>\n {allOptions.map(option => (\n <Option {...{ editor }} key={option.optionName} {...option} />\n ))}\n {children}\n {isMediaUploaderActive && (\n <MediaUploader\n {...{ editor, mediaUploader, unsplashApiKey }}\n onClose={() => setMediaUploader({ image: false, video: false })}\n />\n )}\n </div>\n );\n};\n\nexport default Headless;\n","import React, { useEffect, useState } from \"react\";\n\nimport { assoc, isEmpty, not } from \"ramda\";\n\nimport \"src/styles/editor/menu.scss\";\n\nimport BubbleMenu from \"./Bubble\";\nimport FixedMenu from \"./Fixed\";\nimport HeadlessMenu from \"./Headless\";\n\nimport { DEFAULT_EDITOR_OPTIONS } from \"../constants\";\n\nconst Menu = props => {\n const [isEmojiPickerActive, setIsEmojiPickerActive] = useState(false);\n const [mediaUploader, setMediaUploader] = useState({\n image: false,\n video: false,\n });\n\n const {\n menuType = \"fixed\",\n addons = [],\n options = [],\n editorSecrets = {},\n attachmentProps,\n defaults = DEFAULT_EDITOR_OPTIONS,\n } = props;\n\n const menuComponent = {\n fixed: FixedMenu,\n bubble: BubbleMenu,\n headless: HeadlessMenu,\n none: () => <div />,\n };\n\n const MenuComponent = menuComponent[menuType];\n const menuOptions = isEmpty(options) ? [...defaults, ...addons] : options;\n\n useEffect(() => {\n const handleKeyDown = e => {\n if ((e.metaKey || e.ctrlKey) && e.altKey) {\n if (e.code === \"KeyE\") {\n setIsEmojiPickerActive(prevState => !prevState);\n } else if (e.code === \"KeyA\") {\n not(attachmentProps?.isDisabled) &&\n attachmentProps?.handleUploadAttachments();\n } else if (e.code === \"KeyK\") {\n setMediaUploader(assoc(\"image\", true));\n } else if (e.code === \"KeyV\") {\n setMediaUploader(assoc(\"video\", true));\n }\n }\n };\n if (menuType !== \"none\") {\n document.addEventListener(\"keydown\", handleKeyDown);\n }\n\n return () => {\n document.removeEventListener(\"keydown\", handleKeyDown);\n };\n }, []);\n\n return (\n <MenuComponent\n {...{\n ...props,\n attachmentProps,\n isEmojiPickerActive,\n mediaUploader,\n setIsEmojiPickerActive,\n setMediaUploader,\n }}\n options={menuOptions}\n unsplashApiKey={editorSecrets.unsplash}\n />\n );\n};\n\nexport default Menu;\n"],"names":["ie","mac","Mark","getText","normalizeKeyName","deleteSelection","joinBackward","joinTextblockBackward","joinTextblockForward","selectNodeBackward","joinForward","selectNodeForward","joinUp","joinDown","lift","newlineInCode","defaultBlockAt","exitCode","createParagraphNear","liftEmptyBlock","selectParentNode","selectTextblockStart","selectTextblockEnd","wrapIn","wrapInList","liftListItem","sinkListItem","getNodeType","Editor","React","validateUrl","url","validateNeetoRecordUrl","validateYouTubeUrl","validateLoomUrl","validateVimeoUrl","match","YOUTUBE_URL_REGEXP","concat","VIMEO_URL_REGEXP","LOOM_URL_REGEXP","NEETO_RECORD_URL_REGEXP","replace","EmbedOption","_ref","isEmbedModalOpen","setIsEmbedModalOpen","editor","_useTranslation","useTranslation","t","_useState","useState","_useState2","_slicedToArray","embedUrl","setEmbedUrl","_useState3","_useState4","error","setError","inputRef","useRef","handleEmbed","validatedUrl","chain","focus","setExternalVideo","src","command","_ref2","tr","commands","doc","selection","position","resolve","to","end","insertContentAt","type","run","handleChange","handleClose","handleKeyDown","e","key","createElement","Modal","className","initialFocusRef","isOpen","onClose","Header","Typography","style","Body","Input","label","ref","size","value","onChange","withEventTargetValue","onKeyDown","Footer","Button","disabled","isEmpty","onClick","fetch","axios","get","emojiPickerApi","EmojiPickerMenu","_React$Component","_this","_classCallCheck","_len","arguments","length","args","Array","_key","_callSuper","_defineProperty","createRef","_asyncToGenerator","_regeneratorRuntime","mark","_callee","_yield$emojiPickerApi","data","wrap","_callee$","_context","prev","next","sent","abrupt","t0","stop","event","props","deleteRange","range","emoji","setEmoji","setActive","_inherits","_createClass","componentDidMount","Picker","_objectSpread","onEmojiSelect","handleSelect","maxWidth","theme","previewPosition","showSkinTones","fetchEmojiData","render","minWidth","Component","defaultProps","highlightFocussedNode","document","documentElement","setProperty","resetFocussedNode","focusProps","onMouseEnter","onMouseLeave","generateFocusProps","highlight","undefined","MenuButton","icon","optionName","_extends","isActive","tabIndex","tooltipProps","content","MenuItem","Dropdown","SecondaryMenuTarget","Icon","hyphenate","EmojiOption","tooltipContent","_ref$isSecondaryMenu","isSecondaryMenu","buttonStyle","closeOnSelect","dropdownProps","classNames","Smiley","strategy","buttonProps","customTarget","active","stopPropagation","Menu","FontSizeOption","dropdownRef","level","activeOption","FONT_SIZE_OPTIONS","find","last","handleClick","toggleHeading","setNode","autoWidth","placement","_dropdownRef$current","current","click","_editor$commands","map","_ref3","TableOption","setIsOpen","rows","setRows","_useState5","_useState6","columns","setColumns","handleSubmit","insertTable","cols","withHeaderRow","handleDropdownClick","not","Column","autoFocus","min","placeholder","TextColorOption","color","setColor","dropdownWrapperRef","handleSave","handleUnset","unsetColor","useOnClickOutside","preventDefault","useEffect","getAttributes","openColorPicker","Customize","HexColorPicker","Check","Close","Refresh","Mentions","mentions","Email","name","imageUrl","setMention","id","Avatar","user","MENU_ELEMENT_TYPES","BUTTON","FONT_SIZE","TABLE","TEXT_COLOR","EMOJI","MENTIONS","MENU_ELEMENTS","MENU_ELEMENT_WIDTHS","createMenuOptions","_tooltips$undo","_tooltips$redo","_tooltips$fontSize","_tooltips$bold","_tooltips$italic","_tooltips$underline","_tooltips$link","_tooltips$strike","_tooltips$highlight","_tooltips$bulletList","_tooltips$orderedList","_tooltips$blockQuote","_tooltips$code","_tooltips$codeBlock","_tooltips$table","_tooltips$attachments","_tooltips$imageUpload","_tooltips$videoUpload","_tooltips$videoEmbed","_tooltips$textColor","_tooltips$emoji","_tooltips$mention","tooltips","setMediaUploader","attachmentProps","setIsAddLinkActive","options","addonCommandOptions","setIsEmojiPickerActive","isEmojiPickerActive","fontSizeOptions","filter","option","Undo","undo","isEnabled","includes","EDITOR_OPTIONS","UNDO","can","Redo","redo","REDO","fontSize","isNotEmpty","TextBold","BOLD","toggleBold","bold","TextItalic","ITALIC","toggleItalic","italic","Underline","UNDERLINE","toggleUnderline","underline","Link","LINK","link","TextCross","STRIKETHROUGH","toggleStrike","strike","Highlight","HIGHLIGHT","toggleHighlight","ListDot","toggleBulletList","LIST_BULLETS","bulletList","ListNumber","toggleOrderedList","LIST_ORDERED","orderedList","Quote","toggleBlockquote","BLOCKQUOTE","blockQuote","Code","toggleCode","CODE","code","CodeBlock","toggleCodeBlock","CODE_BLOCK","codeBlock","table","Attachment","handleUploadAttachments","isDisabled","ATTACHMENTS","attachments","ImageUpload","assoc","IMAGE_UPLOAD","imageUpload","Video","VIDEO_UPLOAD","videoUpload","MediaVideo","VIDEO_EMBED","videoEmbed","textColor","mention","_toConsumableArray","buildMenuOptions","addonCommands","buildOptionsFromAddonCommands","menuOptions","prop","state","_option$active","call","_option$command","from","getCursorPos","view","coordsAtPos","reGroupMenuItems","menuRef","menuGroups","toolbarWidth","offsetWidth","totalWidth","visibleMenuGroups","invisibleMenuGroups","forEach","group","groupIndex","item","itemIndex","width","_visibleMenuGroups$gr","_invisibleMenuGroups$","visibleMenuGroupsLength","index","getLinkPopoverPosition","popoverRef","_editor$view$state$se","selectionEnd","$to","pos","selectionStart","$from","selectionLength","offset","Math","round","arrowCoords","arrowPosition","top","left","popoverCoords","adjustedLeft","adjustedTop","_popoverRef$current","popoverRect","getBoundingClientRect","screenWidth","window","innerWidth","screenHeight","innerHeight","maxLeft","maxTop","height","popoverPosition","Progress","withT","queuedFiles","cancelUpload","filename","_ref2$progress","progress","iconSize","FileIcon","fileName","Fragment","Tooltip","LocalUploader","isImage","insertMediaToEditor","setIsUploading","uploadConfig","DEFAULT_IMAGE_UPLOAD_CONFIG","DEFAULT_VIDEO_UPLOAD_CONFIG","fileInputRef","dropTargetRef","_useFileUploader","useFileUploader","config","setIsUploadingOnHost","addFiles","uploadFiles","isUploading","handleFilesDrop","files","uploadedFiles","_x","apply","useDropFiles","onDrop","handleAddFile","_ref4","_callee2","_callee2$","_context2","target","_x2","_fileInputRef$current","multiple","accept","ALLOWED_IMAGE_TYPES","join","ALLOWED_VIDEO_TYPES","entity","convertToFileSize","restrictions","maxFileSize","require$$0","require$$1","require$$3","searchUnsplashImages","pageNo","query","apiKey","UNSPLASH_BASE_URL","headers","Authorization","params","page","per_page","useDebounce","delay","debouncedValue","setDebouncedValue","timeout","setTimeout","clearTimeout","UnsplashImagePicker","onSubmit","unsplashApiKey","masonryRef","setQuery","images","setImages","_useState7","_useState8","setPageNo","_useState9","_useState10","hasMore","setHasMore","_useState11","_useState12","loading","setLoading","debouncedQuery","fetchUnsplashPhotos","response","results","total_pages","finish","loadMore","Loader","Spinner","isNotPresent","MasonryInfiniteScroller","pack","loader","useWindow","sizes","gutter","mq","image","paddingBottom","urls","regular","small","href","username","rel","URLForm","_ref$buttonLabel","buttonLabel","_ref$className","urlString","setUrlString","URL_REGEXP","test","onFocus","MediaUploader","mediaUploader","activeTab","setActiveTab","video","tabs","setTabs","getTabs","file","_file$filename","_file$caption","caption","mediaAttrs","alt","setMedia","setFigure","setVideo","handleKeydown","closeButton","closeOnOutsideClick","Tab","title","Item","LinkOption","handleAnimateInvalidLink","setLink","unsetLink","handleReset","Label","font","tooltip","block","list","misc","right","buildBubbleMenuOptions","fromPairs","getTextMenuDropdownOptions","_options$find","renderOptionButton","Options","setIsInvalidLink","isLinkOptionActive","isTableOptionActive","setIsLinkOptionActive","setIsTableOptionActive","children","dropdownOptions","nodeType","isEmojiActive","isTextColorOptionActive","isLinkActive","isTableActive","_buildBubbleMenuOptio","fontStyleOptions","blockStyleOptions","listStyleOptions","buttonSize","Bubble","textOptions","_ref$mentions","_ref$tooltips","isInvalidLink","selectedNode","node","isImageNodeSelected","bubbleMenuOptions","noTextOptions","BubbleMenuTipTap","classnames","tippyOptions","arrow","roundArrow","zIndex","onHide","LinkAddPopOver","isAddLinkActive","openLinkInNewTab","_editor$state$selecti","text","textBetween","linkText","setLinkText","linkUrl","setLinkUrl","openInNewTab","setOpenInNewTab","setPopoverPosition","setArrowPosition","isLinkTextPresent","isLinlUrlPresent","isSubmitDisabled","popoverStyle","display","transform","handleAddLink","_editor$view","dispatch","_state$selection","formattedUrl","validateAndFormatUrl","attrs","linkMark","schema","marks","create","linkTextWithMark","replaceWith","removePopover","updatePopoverPosition","_getLinkPopoverPositi","addEventListener","removeEventListener","createPortal","required","Checkbox","checked","body","MoreMenu","groups","MenuHorizontal","_objectWithoutProperties","_excluded","Fixed","_ref$variables","variables","_ref$addonCommands","_ref$isIndependant","isIndependant","focusedButtonIndex","setFocusedButtonIndex","menuItems","setMenuItems","moreMenuItems","setMoreMenuItems","menuContainerRef","handleArrowNavigation","prevIndex","menuButtons","useMemo","_menuRef$current","querySelectorAll","menuItem","handleResize","useCallback","_reGroupMenuItems","menuContainer","resizeObserver","ResizeObserver","observe","unobserve","isEmbedOptionActive","isMediaUploaderActive","handleVariableClick","category","variableName","setVariable","DynamicVariables","onVariableClick","_ref$icon","_ref$onClick","noop","_ref$disabled","otherProps","hideOnEsc","defaultValue","fn","hide","_ref$props","toLowerCase","onShow","_ref2$onClose","_ref2$buttonProps","mounted","setMounted","Tippy","interactive","animation","duration","hideOnClick","plugins","popperOptions","role","trigger","visible","onClickOutside","onHidden","onMount","Emoji","EmojiPicker","Option","i18n","File","findBy","Boolean","Headless","allOptions","_props$menuType","menuType","_props$addons","addons","_props$options","_props$editorSecrets","editorSecrets","_props$defaults","defaults","DEFAULT_EDITOR_OPTIONS","menuComponent","fixed","FixedMenu","bubble","BubbleMenu","headless","HeadlessMenu","none","MenuComponent","metaKey","ctrlKey","altKey","prevState","unsplash"],"mappings":"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"}
|