@blocknote/core 0.46.2 → 0.47.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (54) hide show
  1. package/dist/{BlockNoteSchema-DmFDeA0n.cjs → BlockNoteSchema-CwhtPpVC.cjs} +2 -2
  2. package/dist/{BlockNoteSchema-DmFDeA0n.cjs.map → BlockNoteSchema-CwhtPpVC.cjs.map} +1 -1
  3. package/dist/{BlockNoteSchema-BkXw8HJ6.js → BlockNoteSchema-dmbNkHA-.js} +2 -2
  4. package/dist/{BlockNoteSchema-BkXw8HJ6.js.map → BlockNoteSchema-dmbNkHA-.js.map} +1 -1
  5. package/dist/TrailingNode-DHOdUVUO.cjs +2 -0
  6. package/dist/TrailingNode-DHOdUVUO.cjs.map +1 -0
  7. package/dist/{TrailingNode-CxM966vN.js → TrailingNode-F9hX_UlQ.js} +451 -445
  8. package/dist/TrailingNode-F9hX_UlQ.js.map +1 -0
  9. package/dist/blocknote.cjs +4 -4
  10. package/dist/blocknote.cjs.map +1 -1
  11. package/dist/blocknote.js +1624 -1370
  12. package/dist/blocknote.js.map +1 -1
  13. package/dist/blocks.cjs +1 -1
  14. package/dist/blocks.js +2 -2
  15. package/dist/{defaultBlocks-DosClM5E.cjs → defaultBlocks-CSB5GiAu.cjs} +4 -4
  16. package/dist/defaultBlocks-CSB5GiAu.cjs.map +1 -0
  17. package/dist/{defaultBlocks-DE5GNdJH.js → defaultBlocks-Caw1U1oV.js} +49 -46
  18. package/dist/defaultBlocks-Caw1U1oV.js.map +1 -0
  19. package/dist/extensions.cjs +1 -1
  20. package/dist/extensions.js +3 -3
  21. package/dist/locales.cjs +1 -1
  22. package/dist/locales.cjs.map +1 -1
  23. package/dist/locales.js +813 -28
  24. package/dist/locales.js.map +1 -1
  25. package/dist/style.css +1 -1
  26. package/dist/tsconfig.tsbuildinfo +1 -1
  27. package/dist/webpack-stats.json +1 -1
  28. package/package.json +1 -1
  29. package/src/api/blockManipulation/commands/mergeBlocks/mergeBlocks.ts +30 -7
  30. package/src/blocks/ListItem/CheckListItem/block.test.ts +61 -0
  31. package/src/blocks/ListItem/CheckListItem/block.ts +4 -0
  32. package/src/editor/Block.css +2 -2
  33. package/src/editor/transformPasted.ts +69 -0
  34. package/src/extensions/Collaboration/YCursorPlugin.ts +3 -1
  35. package/src/extensions/SideMenu/SideMenu.ts +44 -0
  36. package/src/extensions/SuggestionMenu/SuggestionMenu.test.ts +191 -0
  37. package/src/extensions/SuggestionMenu/SuggestionMenu.ts +28 -11
  38. package/src/extensions/tiptap-extensions/KeyboardShortcuts/KeyboardShortcutsExtension.ts +470 -64
  39. package/src/i18n/locales/fa.ts +390 -0
  40. package/src/i18n/locales/index.ts +2 -0
  41. package/src/i18n/locales/uz.ts +421 -0
  42. package/src/schema/blocks/createSpec.ts +2 -0
  43. package/types/src/api/blockManipulation/commands/mergeBlocks/mergeBlocks.d.ts +5 -0
  44. package/types/src/blocks/ListItem/CheckListItem/block.test.d.ts +1 -0
  45. package/types/src/extensions/SuggestionMenu/SuggestionMenu.d.ts +12 -3
  46. package/types/src/extensions/SuggestionMenu/SuggestionMenu.test.d.ts +1 -0
  47. package/types/src/i18n/locales/fa.d.ts +320 -0
  48. package/types/src/i18n/locales/index.d.ts +2 -0
  49. package/types/src/i18n/locales/uz.d.ts +2 -0
  50. package/dist/TrailingNode-CxM966vN.js.map +0 -1
  51. package/dist/TrailingNode-D-CZ76FS.cjs +0 -2
  52. package/dist/TrailingNode-D-CZ76FS.cjs.map +0 -1
  53. package/dist/defaultBlocks-DE5GNdJH.js.map +0 -1
  54. package/dist/defaultBlocks-DosClM5E.cjs.map +0 -1
@@ -1,5 +1,5 @@
1
- "use strict";var Ee=Object.defineProperty;var Te=(o,e,t)=>e in o?Ee(o,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):o[e]=t;var k=(o,e,t)=>Te(o,typeof e!="symbol"?e+"":e,t);Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const x=require("prosemirror-model"),L=require("prosemirror-transform"),u=require("./blockToNode-CumVjgem.cjs"),c=require("./defaultBlocks-DosClM5E.cjs"),b=require("./TrailingNode-D-CZ76FS.cjs"),M=require("./BlockNoteSchema-DmFDeA0n.cjs"),B=require("@tiptap/core"),R=require("./EventEmitter-CLwfmbqG.cjs"),A=require("@tiptap/pm/model"),xe=require("./en-Cl87Uuyf.cjs"),K=require("@handlewithcare/prosemirror-inputrules"),Me=require("@tiptap/pm/keymap"),F=require("./BlockNoteExtension-BWw0r8Gy.cjs"),Ie=require("@tiptap/extensions/gap-cursor"),Pe=require("@tiptap/extension-link"),we=require("@tiptap/extension-text"),C=require("prosemirror-state"),N=require("prosemirror-tables"),ve=require("./ShowSelection-BxnbRvy4.cjs"),Ae=require("remark-gfm"),Ne=require("remark-parse"),H=require("remark-rehype"),Le=require("rehype-stringify"),_e=require("unified"),De=require("@tiptap/pm/state"),O=o=>o&&typeof o=="object"&&"default"in o?o:{default:o},Fe=O(Ae),Oe=O(Ne),He=O(H),$e=O(Le);function oe(o,e){const t=[{tag:`[data-inline-content-type="${o.type}"]`,contentElement:n=>{const r=n;return r.matches("[data-editable]")?r:r.querySelector("[data-editable]")||r}}];return e&&t.push({tag:"*",getAttrs(n){if(typeof n=="string")return!1;const r=e==null?void 0:e(n);return r===void 0?!1:r}}),t}function Ue(o,e){var n;const t=B.Node.create({name:o.type,inline:!0,group:"inline",draggable:(n=e.meta)==null?void 0:n.draggable,selectable:o.content==="styled",atom:o.content==="none",content:o.content==="styled"?"inline*":"",addAttributes(){return c.propsToAttributes(o.propSchema)},addKeyboardShortcuts(){return c.addInlineContentKeyboardShortcuts(o)},parseHTML(){return oe(o,e.parse)},renderHTML({node:r}){const s=this.options.editor,i=e.render.call({renderType:"dom",props:void 0},u.nodeToCustomInlineContent(r,s.schema.inlineContentSchema,s.schema.styleSchema),()=>{},s);return c.addInlineContentAttributes(i,o.type,r.attrs,o.propSchema)},addNodeView(){return r=>{const{node:s,getPos:i}=r,l=this.options.editor,a=e.render.call({renderType:"nodeView",props:r},u.nodeToCustomInlineContent(s,l.schema.inlineContentSchema,l.schema.styleSchema),d=>{const p=u.inlineContentToNodes([d],l.pmSchema),f=i();f&&l.transact(h=>h.replaceWith(f,f+s.nodeSize,p))},l);return c.addInlineContentAttributes(a,o.type,s.attrs,o.propSchema)}}});return c.createInlineContentSpecFromTipTapNode(t,o.propSchema,{...e,toExternalHTML:e.toExternalHTML,render(r,s,i){const l=e.render(r,s,i);return c.addInlineContentAttributes(l,o.type,r.props,o.propSchema)}})}function ne(o,e,t,n="before"){const r=typeof t=="string"?t:t.id,s=u.getPmSchema(o),i=e.map(p=>u.blockToNode(p,s)),l=c.getNodeById(r,o.doc);if(!l)throw new Error(`Block with ID ${r} not found`);let a=l.posBeforeNode;return n==="after"&&(a+=l.node.nodeSize),o.step(new L.ReplaceStep(a,a,new x.Slice(x.Fragment.from(i),0,0))),i.map(p=>u.nodeToBlock(p,s))}function _(o){if(!o||o.type.name!=="column")throw new Error("Invalid columnPos: does not point to column node.");const e=o.firstChild;if(!e)throw new Error("Invalid column: does not have child node.");const t=e.firstChild;if(!t)throw new Error("Invalid blockContainer: does not have child node.");return o.childCount===1&&e.childCount===1&&t.type.name==="paragraph"&&t.content.content.length===0}function re(o,e){const t=o.doc.resolve(e),n=t.nodeAfter;if(!n||n.type.name!=="columnList")throw new Error("Invalid columnListPos: does not point to columnList node.");for(let r=n.childCount-1;r>=0;r--){const s=o.doc.resolve(t.pos+1).posAtIndex(r),l=o.doc.resolve(s).nodeAfter;if(!l||l.type.name!=="column")throw new Error("Invalid columnPos: does not point to column node.");_(l)&&o.delete(s,s+l.nodeSize)}}function D(o,e){re(o,e);const n=o.doc.resolve(e).nodeAfter;if(!n||n.type.name!=="columnList")throw new Error("Invalid columnListPos: does not point to columnList node.");if(n.childCount>2)return;if(n.childCount<2)throw new Error("Invalid columnList: contains fewer than two children.");const r=e+1,i=o.doc.resolve(r).nodeAfter,l=e+n.nodeSize-1,d=o.doc.resolve(l).nodeBefore;if(!i||!d)throw new Error("Invalid columnList: does not contain children.");const p=_(i),f=_(d);if(p&&f){o.delete(e,e+n.nodeSize);return}if(p){o.step(new L.ReplaceAroundStep(e,e+n.nodeSize,l-d.nodeSize+1,l-1,x.Slice.empty,0,!1));return}if(f){o.step(new L.ReplaceAroundStep(e,e+n.nodeSize,r+1,r+i.nodeSize-1,x.Slice.empty,0,!1));return}}function $(o,e,t){const n=u.getPmSchema(o),r=t.map(f=>u.blockToNode(f,n)),s=new Set(e.map(f=>typeof f=="string"?f:f.id)),i=[],l=new Set,a=typeof e[0]=="string"?e[0]:e[0].id;let d=0;if(o.doc.descendants((f,h)=>{if(s.size===0)return!1;if(!f.type.isInGroup("bnBlock")||!s.has(f.attrs.id))return!0;if(i.push(u.nodeToBlock(f,n)),s.delete(f.attrs.id),t.length>0&&f.attrs.id===a){const y=o.doc.nodeSize;o.insert(h,r);const E=o.doc.nodeSize;d+=y-E}const g=o.doc.nodeSize,m=o.doc.resolve(h-d);m.node().type.name==="column"?l.add(m.before(-1)):m.node().type.name==="columnList"&&l.add(m.before()),m.node().type.name==="blockGroup"&&m.node(m.depth-1).type.name!=="doc"&&m.node().childCount===1?o.delete(m.before(),m.after()):o.delete(h-d,h-d+f.nodeSize);const S=o.doc.nodeSize;return d+=g-S,!1}),s.size>0){const f=[...s].join(`
2
- `);throw Error("Blocks with the following IDs could not be found in the editor: "+f)}return l.forEach(f=>D(o,f)),{insertedBlocks:r.map(f=>u.nodeToBlock(f,n)),removedBlocks:i}}function Ve(o,e,t,n,r){let s;if(e)if(typeof e=="string")s=u.inlineContentToNodes([e],o.pmSchema,n);else if(Array.isArray(e))s=u.inlineContentToNodes(e,o.pmSchema,n);else if(e.type==="tableContent")s=u.tableContentToNodes(e,o.pmSchema);else throw new u.UnreachableCaseError(e.type);else throw new Error("blockContent is required");const l=((r==null?void 0:r.document)??document).createDocumentFragment();for(const a of s)if(a.type.name!=="text"&&o.schema.inlineContentSchema[a.type.name]){const d=o.schema.inlineContentSpecs[a.type.name].implementation;if(d){const p=u.nodeToCustomInlineContent(a,o.schema.inlineContentSchema,o.schema.styleSchema),f=d.render.call({renderType:"dom",props:void 0},p,()=>{},o);if(f){if(l.appendChild(f.dom),f.contentDOM){const h=t.serializeFragment(a.content,r);f.contentDOM.dataset.editable="",f.contentDOM.appendChild(h)}continue}}}else if(a.type.name==="text"){let d=document.createTextNode(a.textContent);for(const p of a.marks.toReversed())if(p.type.name in o.schema.styleSpecs){const f=o.schema.styleSpecs[p.type.name].implementation.render(p.attrs.stringValue,o);f.contentDOM.appendChild(d),d=f.dom}else{const f=p.type.spec.toDOM(p,!0),h=x.DOMSerializer.renderSpec(document,f);h.contentDOM.appendChild(d),d=h.dom}l.appendChild(d)}else{const d=t.serializeFragment(x.Fragment.from([a]),r);l.appendChild(d)}return l}function Re(o,e,t,n){var f,h,g,m,S;const r=o.pmSchema.nodes.blockContainer,s=e.props||{};for(const[y,E]of Object.entries(o.schema.blockSchema[e.type].propSchema))!(y in s)&&E.default!==void 0&&(s[y]=E.default);const i=e.children||[],a=o.blockImplementations[e.type].implementation.render.call({renderType:"dom",props:void 0},{...e,props:s,children:i},o);if(a.contentDOM&&e.content){const y=Ve(o,e.content,t,e.type,n);a.contentDOM.appendChild(y)}if(o.pmSchema.nodes[e.type].isInGroup("bnBlock")){if(e.children&&e.children.length>0){const y=se(o,e.children,t,n);(f=a.contentDOM)==null||f.append(y)}return a.dom}const p=(g=(h=r.spec)==null?void 0:h.toDOM)==null?void 0:g.call(h,r.create({id:e.id,...s}));return(m=p.contentDOM)==null||m.appendChild(a.dom),e.children&&e.children.length>0&&((S=p.contentDOM)==null||S.appendChild(ie(o,e.children,t,n))),p.dom}function se(o,e,t,n){const s=((n==null?void 0:n.document)??document).createDocumentFragment();for(const i of e){const l=Re(o,i,t,n);s.appendChild(l)}return s}const ie=(o,e,t,n)=>{var l;const r=o.pmSchema.nodes.blockGroup,s=r.spec.toDOM(r.create({})),i=se(o,e,t,n);return(l=s.contentDOM)==null||l.appendChild(i),s.dom},ze=o=>(o.querySelectorAll('[data-content-type="numberedListItem"]').forEach(t=>{var r,s;const n=(s=(r=t.closest(".bn-block-outer"))==null?void 0:r.previousElementSibling)==null?void 0:s.querySelector('[data-content-type="numberedListItem"]');if(!n)t.setAttribute("data-index",t.getAttribute("data-start")||"1");else{const i=n.getAttribute("data-index");t.setAttribute("data-index",(parseInt(i||"0")+1).toString())}}),o),Ge=o=>(o.querySelectorAll('[data-content-type="checkListItem"] input').forEach(t=>{t.disabled=!0}),o),qe=o=>(o.querySelectorAll('.bn-toggle-wrapper[data-show-children="false"]').forEach(t=>{t.setAttribute("data-show-children","true")}),o),We=o=>(o.querySelectorAll('[data-content-type="table"] table').forEach(t=>{t.setAttribute("style",`--default-cell-min-width: ${c.EMPTY_CELL_WIDTH}px;`),t.setAttribute("data-show-children","true")}),o),je=o=>(o.querySelectorAll('[data-content-type="table"] table').forEach(t=>{var s;const n=document.createElement("div");n.className="tableWrapper";const r=document.createElement("div");r.className="tableWrapper-inner",n.appendChild(r),(s=t.parentElement)==null||s.appendChild(n),n.appendChild(t)}),o),Ke=o=>(o.querySelectorAll(".bn-inline-content:empty").forEach(t=>{const n=document.createElement("span");n.className="ProseMirror-trailingBreak",n.setAttribute("style","display: inline-block;"),t.appendChild(n)}),o),ce=(o,e)=>{const t=x.DOMSerializer.fromSchema(o),n=[ze,Ge,qe,We,je,Ke];return{serializeBlocks:(r,s)=>{let i=ie(e,r,t,s);for(const l of n)i=l(i);return i.outerHTML}}};function Ye(o){return o.transact(e=>{const t=u.getNearestBlockPos(e.doc,e.selection.anchor);if(e.selection instanceof N.CellSelection)return{type:"cell",anchorBlockId:t.node.attrs.id,anchorCellOffset:e.selection.$anchorCell.pos-t.posBeforeNode,headCellOffset:e.selection.$headCell.pos-t.posBeforeNode};if(e.selection instanceof C.NodeSelection)return{type:"node",anchorBlockId:t.node.attrs.id};{const n=u.getNearestBlockPos(e.doc,e.selection.head);return{type:"text",anchorBlockId:t.node.attrs.id,headBlockId:n.node.attrs.id,anchorOffset:e.selection.anchor-t.posBeforeNode,headOffset:e.selection.head-n.posBeforeNode}}})}function Je(o,e){var r,s;const t=(r=c.getNodeById(e.anchorBlockId,o.doc))==null?void 0:r.posBeforeNode;if(t===void 0)throw new Error(`Could not find block with ID ${e.anchorBlockId} to update selection`);let n;if(e.type==="cell")n=N.CellSelection.create(o.doc,t+e.anchorCellOffset,t+e.headCellOffset);else if(e.type==="node")n=C.NodeSelection.create(o.doc,t+1);else{const i=(s=c.getNodeById(e.headBlockId,o.doc))==null?void 0:s.posBeforeNode;if(i===void 0)throw new Error(`Could not find block with ID ${e.headBlockId} to update selection`);n=C.TextSelection.create(o.doc,t+e.anchorOffset,i+e.headOffset)}o.setSelection(n)}function U(o){return o.map(e=>e.type==="columnList"?e.children.map(t=>U(t.children)).flat():{...e,children:U(e.children)}).flat()}function ae(o,e,t){o.transact(n=>{var i;const r=((i=o.getSelection())==null?void 0:i.blocks)||[o.getTextCursorPosition().block],s=Ye(o);o.removeBlocks(r),o.insertBlocks(U(r),e,t),Je(n,s)})}function le(o){return!o||o.type!=="columnList"}function de(o,e,t){let n,r;if(e?e.children.length>0?(n=e.children[e.children.length-1],r="after"):(n=e,r="before"):t&&(n=t,r="before"),!n||!r)return;const s=o.getParentBlock(n);return le(s)?{referenceBlock:n,placement:r}:de(o,r==="after"?n:o.getPrevBlock(n),s)}function ue(o,e,t){let n,r;if(e?e.children.length>0?(n=e.children[0],r="before"):(n=e,r="after"):t&&(n=t,r="after"),!n||!r)return;const s=o.getParentBlock(n);return le(s)?{referenceBlock:n,placement:r}:ue(o,r==="before"?n:o.getNextBlock(n),s)}function Qe(o){o.transact(()=>{const e=o.getSelection(),t=(e==null?void 0:e.blocks[0])||o.getTextCursorPosition().block,n=de(o,o.getPrevBlock(t),o.getParentBlock(t));n&&ae(o,n.referenceBlock,n.placement)})}function Xe(o){o.transact(()=>{const e=o.getSelection(),t=(e==null?void 0:e.blocks[(e==null?void 0:e.blocks.length)-1])||o.getTextCursorPosition().block,n=ue(o,o.getNextBlock(t),o.getParentBlock(t));n&&ae(o,n.referenceBlock,n.placement)})}function Ze(o,e,t){const{$from:n,$to:r}=o.selection,s=n.blockRange(r,m=>m.childCount>0&&(m.type.name==="blockGroup"||m.type.name==="column"));if(!s)return!1;const i=s.startIndex;if(i===0)return!1;const a=s.parent.child(i-1);if(a.type!==e)return!1;const d=a.lastChild&&a.lastChild.type===t,p=x.Fragment.from(d?e.create():null),f=new x.Slice(x.Fragment.from(e.create(null,x.Fragment.from(t.create(null,p)))),d?3:1,0),h=s.start,g=s.end;return o.step(new L.ReplaceAroundStep(h-(d?3:1),g,h,g,f,1,!0)).scrollIntoView(),!0}function pe(o){return o.transact(e=>Ze(e,o.pmSchema.nodes.blockContainer,o.pmSchema.nodes.blockGroup))}function et(o){o._tiptapEditor.commands.liftListItem("blockContainer")}function tt(o){return o.transact(e=>{const{bnBlock:t}=u.getBlockInfoFromTransaction(e);return e.doc.resolve(t.beforePos).nodeBefore!==null})}function ot(o){return o.transact(e=>{const{bnBlock:t}=u.getBlockInfoFromTransaction(e);return e.doc.resolve(t.beforePos).depth>1})}function fe(o,e){const t=typeof e=="string"?e:e.id,n=u.getPmSchema(o),r=c.getNodeById(t,o);if(r)return u.nodeToBlock(r.node,n)}function he(o,e){const t=typeof e=="string"?e:e.id,n=c.getNodeById(t,o),r=u.getPmSchema(o);if(!n)return;const i=o.resolve(n.posBeforeNode).nodeBefore;if(i)return u.nodeToBlock(i,r)}function me(o,e){const t=typeof e=="string"?e:e.id,n=c.getNodeById(t,o),r=u.getPmSchema(o);if(!n)return;const i=o.resolve(n.posBeforeNode+n.node.nodeSize).nodeAfter;if(i)return u.nodeToBlock(i,r)}function ke(o,e){const t=typeof e=="string"?e:e.id,n=u.getPmSchema(o),r=c.getNodeById(t,o);if(!r)return;const s=o.resolve(r.posBeforeNode),i=s.node(),l=s.node(-1),a=l.type.name!=="doc"?i.type.name==="blockGroup"?l:i:void 0;if(a)return u.nodeToBlock(a,n)}class nt{constructor(e){this.editor=e}get document(){return this.editor.transact(e=>u.docToBlocks(e.doc,this.editor.pmSchema))}getBlock(e){return this.editor.transact(t=>fe(t.doc,e))}getPrevBlock(e){return this.editor.transact(t=>he(t.doc,e))}getNextBlock(e){return this.editor.transact(t=>me(t.doc,e))}getParentBlock(e){return this.editor.transact(t=>ke(t.doc,e))}forEachBlock(e,t=!1){const n=this.document.slice();t&&n.reverse();function r(s){for(const i of s){if(e(i)===!1)return!1;const l=t?i.children.slice().reverse():i.children;if(!r(l))return!1}return!0}r(n)}insertBlocks(e,t,n="before"){return this.editor.transact(r=>ne(r,e,t,n))}updateBlock(e,t){return this.editor.transact(n=>c.updateBlock(n,e,t))}removeBlocks(e){return this.editor.transact(t=>$(t,e,[]).removedBlocks)}replaceBlocks(e,t){return this.editor.transact(n=>$(n,e,t))}canNestBlock(){return tt(this.editor)}nestBlock(){pe(this.editor)}canUnnestBlock(){return ot(this.editor)}unnestBlock(){et(this.editor)}moveBlocksUp(){return Qe(this.editor)}moveBlocksDown(){return Xe(this.editor)}}class rt extends R.EventEmitter{constructor(e){super(),this.editor=e,e.on("create",()=>{e._tiptapEditor.on("update",({transaction:t,appendedTransactions:n})=>{this.emit("onChange",{editor:e,transaction:t,appendedTransactions:n})}),e._tiptapEditor.on("selectionUpdate",({transaction:t})=>{this.emit("onSelectionChange",{editor:e,transaction:t})}),e._tiptapEditor.on("mount",()=>{this.emit("onMount",{editor:e})}),e._tiptapEditor.on("unmount",()=>{this.emit("onUnmount",{editor:e})})})}onChange(e,t=!0){const n=({transaction:r,appendedTransactions:s})=>{!t&&Y(r)||e(this.editor,{getChanges(){return b.getBlocksChangedByTransaction(r,s)}})};return this.on("onChange",n),()=>{this.off("onChange",n)}}onSelectionChange(e,t=!1){const n=r=>{!t&&Y(r.transaction)||e(this.editor)};return this.on("onSelectionChange",n),()=>{this.off("onSelectionChange",n)}}onMount(e){return this.on("onMount",e),()=>{this.off("onMount",e)}}onUnmount(e){return this.on("onUnmount",e),()=>{this.off("onUnmount",e)}}}function Y(o){return!!o.getMeta("y-sync$")}function st(o){return Array.prototype.indexOf.call(o.parentElement.childNodes,o)}function it(o){return o.nodeType===3&&!/\S/.test(o.nodeValue||"")}function ct(o){o.querySelectorAll("li > ul, li > ol").forEach(e=>{const t=st(e),n=e.parentElement,r=Array.from(n.childNodes).slice(t+1);e.remove(),r.forEach(s=>{s.remove()}),n.insertAdjacentElement("afterend",e),r.reverse().forEach(s=>{if(it(s))return;const i=document.createElement("li");i.append(s),e.insertAdjacentElement("afterend",i)}),n.childNodes.length===0&&n.remove()})}function at(o){o.querySelectorAll("li + ul, li + ol").forEach(e=>{var s,i;const t=e.previousElementSibling,n=document.createElement("div");t.insertAdjacentElement("afterend",n),n.append(t);const r=document.createElement("div");for(r.setAttribute("data-node-type","blockGroup"),n.append(r);((s=n.nextElementSibling)==null?void 0:s.nodeName)==="UL"||((i=n.nextElementSibling)==null?void 0:i.nodeName)==="OL";)r.append(n.nextElementSibling)})}let J=null;function lt(){return J||(J=document.implementation.createHTMLDocument("title"))}function dt(o){if(typeof o=="string"){const e=lt().createElement("div");e.innerHTML=o,o=e}return ct(o),at(o),o}function z(o,e){const t=dt(o),r=x.DOMParser.fromSchema(e).parse(t,{topNode:e.nodes.blockGroup.create()}),s=[];for(let i=0;i<r.childCount;i++)s.push(u.nodeToBlock(r.child(i),e));return s}function ut(o,e){const t=e.value?e.value:"",n={};e.lang&&(n["data-language"]=e.lang);let r={type:"element",tagName:"code",properties:n,children:[{type:"text",value:t}]};return e.meta&&(r.data={meta:e.meta}),o.patch(e,r),r=o.applyData(e,r),r={type:"element",tagName:"pre",properties:{},children:[r]},o.patch(e,r),r}function pt(o,e){var s;const t=String((e==null?void 0:e.url)||""),n=e!=null&&e.title?String(e.title):void 0;let r={type:"element",tagName:"video",properties:{src:t,"data-name":n,"data-url":t,controls:!0},children:[]};return(s=o.patch)==null||s.call(o,e,r),r=o.applyData?o.applyData(e,r):r,r}function G(o){return _e.unified().use(Oe.default).use(Fe.default).use(He.default,{handlers:{...H.defaultHandlers,image:(t,n)=>{const r=String((n==null?void 0:n.url)||"");return c.isVideoUrl(r)?pt(t,n):H.defaultHandlers.image(t,n)},code:ut,blockquote:(t,n)=>{const r={type:"element",tagName:"blockquote",properties:{},children:t.wrap(t.all(n),!1)};return t.patch(n,r),t.applyData(n,r)}}}).use($e.default).processSync(o).value}function ge(o,e){const t=G(o);return z(t,e)}class ft{constructor(e){this.editor=e}blocksToHTMLLossy(e=this.editor.document){return b.createExternalHTMLExporter(this.editor.pmSchema,this.editor).exportBlocks(e,{})}blocksToFullHTML(e=this.editor.document){return ce(this.editor.pmSchema,this.editor).serializeBlocks(e,{})}tryParseHTMLToBlocks(e){return z(e,this.editor.pmSchema)}blocksToMarkdownLossy(e=this.editor.document){return b.blocksToMarkdown(e,this.editor.pmSchema,this.editor,{})}tryParseMarkdownToBlocks(e){return ge(e,this.editor.pmSchema)}pasteHTML(e,t=!1){var r;let n=e;if(!t){const s=this.tryParseHTMLToBlocks(e);n=this.blocksToFullHTML(s)}n&&((r=this.editor.prosemirrorView)==null||r.pasteHTML(n))}pasteText(e){var t;return(t=this.editor.prosemirrorView)==null?void 0:t.pasteText(e)}pasteMarkdown(e){const t=G(e);return this.pasteHTML(t)}}const q=["vscode-editor-data","blocknote/html","text/markdown","text/html","text/plain","Files"];function ht(o,e){if(!o.startsWith(".")||!e.startsWith("."))throw new Error("The strings provided are not valid file extensions.");return o===e}function mt(o,e){const t=o.split("/"),n=e.split("/");if(t.length!==2)throw new Error(`The string ${o} is not a valid MIME type.`);if(n.length!==2)throw new Error(`The string ${e} is not a valid MIME type.`);return t[1]==="*"||n[1]==="*"?t[0]===n[0]:(t[0]==="*"||n[0]==="*"||t[0]===n[0])&&t[1]===n[1]}function Q(o,e,t,n="after"){let r;return Array.isArray(e.content)&&e.content.length===0?r=o.updateBlock(e,t).id:r=o.insertBlocks([t],e,n)[0].id,r}async function be(o,e){var s;if(!e.uploadFile){console.warn("Attempted ot insert file, but uploadFile is not set in the BlockNote editor options");return}const t="dataTransfer"in o?o.dataTransfer:o.clipboardData;if(t===null)return;let n=null;for(const i of q)if(t.types.includes(i)){n=i;break}if(n!=="Files")return;const r=t.items;if(r){o.preventDefault();for(let i=0;i<r.length;i++){let l="file";for(const d of Object.values(e.schema.blockSpecs))for(const p of((s=d.implementation.meta)==null?void 0:s.fileBlockAccept)||[]){const f=p.startsWith("."),h=r[i].getAsFile();if(h&&(!f&&h.type&&mt(r[i].type,p)||f&&ht("."+h.name.split(".").pop(),p))){l=d.config.type;break}}const a=r[i].getAsFile();if(a){const d={type:l,props:{name:a.name}};let p;if(o.type==="paste"){const g=e.getTextCursorPosition().block;p=Q(e,g,d)}else if(o.type==="drop"){const g={left:o.clientX,top:o.clientY},m=e.prosemirrorView.posAtCoords(g);if(!m)return;p=e.transact(S=>{var T;const y=u.getNearestBlockPos(S.doc,m.pos),E=(T=e.domElement)==null?void 0:T.querySelector(`[data-id="${y.node.attrs.id}"]`),P=E==null?void 0:E.getBoundingClientRect();return Q(e,e.getBlock(y.node.attrs.id),d,P&&(P.top+P.bottom)/2>g.top?"before":"after")})}else return;const f=await e.uploadFile(a,p),h=typeof f=="string"?{props:{url:f}}:{...f};e.updateBlock(p,h)}}}}const kt=o=>B.Extension.create({name:"dropFile",addProseMirrorPlugins(){return[new C.Plugin({props:{handleDOMEvents:{drop(e,t){if(!o.isEditable)return;let n=null;for(const r of q)if(t.dataTransfer.types.includes(r)){n=r;break}return n===null?!0:n==="Files"?(be(t,o),!0):!1}}}})]}}),gt=/(^|\n) {0,3}#{1,6} {1,8}[^\n]{1,64}\r?\n\r?\n\s{0,32}\S/,bt=/(_|__|\*|\*\*|~~|==|\+\+)(?!\s)(?:[^\s](?:.{0,62}[^\s])?|\S)(?=\1)/,St=/\[[^\]]{1,128}\]\(https?:\/\/\S{1,999}\)/,Bt=/(?:\s|^)`(?!\s)(?:[^\s`](?:[^`]{0,46}[^\s`])?|[^\s`])`([^\w]|$)/,yt=/(?:^|\n)\s{0,5}-\s{1}[^\n]+\n\s{0,15}-\s/,Ct=/(?:^|\n)\s{0,5}\d+\.\s{1}[^\n]+\n\s{0,15}\d+\.\s/,Et=/\n{2} {0,3}-{2,48}\n{2}/,Tt=/(?:\n|^)(```|~~~|\$\$)(?!`|~)[^\s]{0,64} {0,64}[^\n]{0,64}\n[\s\S]{0,9999}?\s*\1 {0,64}(?:\n+|$)/,xt=/(?:\n|^)(?!\s)\w[^\n]{0,64}\r?\n(-|=)\1{0,64}\n\n\s{0,64}(\w|$)/,Mt=/(?:^|(\r?\n\r?\n))( {0,3}>[^\n]{1,333}\n){1,999}($|(\r?\n))/,It=/^\s*\|(.+\|)+\s*$/m,Pt=/^\s*\|(\s*[-:]+[-:]\s*\|)+\s*$/m,wt=/^\s*\|(.+\|)+\s*$/m,vt=o=>gt.test(o)||bt.test(o)||St.test(o)||Bt.test(o)||yt.test(o)||Ct.test(o)||Et.test(o)||Tt.test(o)||xt.test(o)||Mt.test(o)||It.test(o)||Pt.test(o)||wt.test(o);async function At(o,e){const{schema:t}=e.state;if(!o.clipboardData)return!1;const n=o.clipboardData.getData("text/plain");if(!n)return!1;if(!t.nodes.codeBlock)return e.pasteText(n),!0;const r=o.clipboardData.getData("vscode-editor-data"),s=r?JSON.parse(r):void 0,i=s==null?void 0:s.mode;return i?(e.pasteHTML(`<pre><code class="language-${i}">${n.replace(/\r\n?/g,`
3
- `)}</code></pre>`),!0):!1}function Nt({event:o,editor:e,prioritizeMarkdownOverHTML:t,plainTextAsMarkdown:n}){var l;if(e.transact(a=>a.selection.$from.parent.type.spec.code&&a.selection.$to.parent.type.spec.code)){const a=(l=o.clipboardData)==null?void 0:l.getData("text/plain");if(a)return e.pasteText(a),!0}let s;for(const a of q)if(o.clipboardData.types.includes(a)){s=a;break}if(!s)return!0;if(s==="vscode-editor-data")return At(o,e.prosemirrorView),!0;if(s==="Files")return be(o,e),!0;const i=o.clipboardData.getData(s);if(s==="blocknote/html")return e.pasteHTML(i,!0),!0;if(s==="text/markdown")return e.pasteMarkdown(i),!0;if(t){const a=o.clipboardData.getData("text/plain");if(vt(a))return e.pasteMarkdown(a),!0}return s==="text/html"?(e.pasteHTML(i),!0):n?(e.pasteMarkdown(i),!0):(e.pasteText(i),!0)}const Lt=(o,e)=>B.Extension.create({name:"pasteFromClipboard",addProseMirrorPlugins(){return[new C.Plugin({props:{handleDOMEvents:{paste(t,n){if(n.preventDefault(),!!o.isEditable)return e({event:n,editor:o,defaultPasteHandler:({prioritizeMarkdownOverHTML:r=!0,plainTextAsMarkdown:s=!0}={})=>Nt({event:n,editor:o,prioritizeMarkdownOverHTML:r,plainTextAsMarkdown:s})})}}}})]}});function _t(o,e,t){var l;let n=!1;const r=o.state.selection instanceof N.CellSelection;if(!r){const a=o.state.doc.slice(o.state.selection.from,o.state.selection.to,!1).content,d=[];for(let p=0;p<a.childCount;p++)d.push(a.child(p));n=d.find(p=>p.type.isInGroup("bnBlock")||p.type.name==="blockGroup"||p.type.spec.group==="blockContent")===void 0,n&&(e=a)}let s;const i=b.createExternalHTMLExporter(o.state.schema,t);if(r){((l=e.firstChild)==null?void 0:l.type.name)==="table"&&(e=e.firstChild.content);const a=u.contentNodeToTableContent(e,t.schema.inlineContentSchema,t.schema.styleSchema);s=`<table>${i.exportInlineContent(a,{})}</table>`}else if(n){const a=u.contentNodeToInlineContent(e,t.schema.inlineContentSchema,t.schema.styleSchema);s=i.exportInlineContent(a,{})}else{const a=b.fragmentToBlocks(e);s=i.exportBlocks(a,{})}return s}function W(o,e){"node"in o.state.selection&&o.state.selection.node.type.spec.group==="blockContent"&&e.transact(i=>i.setSelection(new C.NodeSelection(i.doc.resolve(o.state.selection.from-1))));const t=o.serializeForClipboard(o.state.selection.content()).dom.innerHTML,n=o.state.selection.content().content,r=_t(o,n,e),s=b.cleanHTMLToMarkdown(r);return{clipboardHTML:t,externalHTML:r,markdown:s}}const X=()=>{const o=window.getSelection();if(!o||o.isCollapsed)return!0;let e=o.focusNode;for(;e;){if(e instanceof HTMLElement&&e.getAttribute("contenteditable")==="false")return!0;e=e.parentElement}return!1},Z=(o,e,t)=>{t.preventDefault(),t.clipboardData.clearData();const{clipboardHTML:n,externalHTML:r,markdown:s}=W(e,o);t.clipboardData.setData("blocknote/html",n),t.clipboardData.setData("text/html",r),t.clipboardData.setData("text/plain",s)},Dt=o=>B.Extension.create({name:"copyToClipboard",addProseMirrorPlugins(){return[new C.Plugin({props:{handleDOMEvents:{copy(e,t){return X()||Z(o,e,t),!0},cut(e,t){return X()||(Z(o,e,t),e.editable&&e.dispatch(e.state.tr.deleteSelection())),!0},dragstart(e,t){if(!("node"in e.state.selection)||e.state.selection.node.type.spec.group!=="blockContent")return;o.transact(i=>i.setSelection(new C.NodeSelection(i.doc.resolve(e.state.selection.from-1)))),t.preventDefault(),t.dataTransfer.clearData();const{clipboardHTML:n,externalHTML:r,markdown:s}=W(e,o);return t.dataTransfer.setData("blocknote/html",n),t.dataTransfer.setData("text/html",r),t.dataTransfer.setData("text/plain",s),!0}}}})]}}),Ft=B.Extension.create({name:"blockBackgroundColor",addGlobalAttributes(){return[{types:["tableCell","tableHeader"],attributes:{backgroundColor:c.getBackgroundColorAttribute()}}]}}),Ot=B.Node.create({name:"hardBreak",inline:!0,group:"inline",selectable:!1,linebreakReplacement:!0,priority:10,parseHTML(){return[{tag:"br"}]},renderHTML({HTMLAttributes:o}){return["br",B.mergeAttributes(this.options.HTMLAttributes,o)]},renderText(){return`
4
- `}}),V=(o,e)=>{const t=o.resolve(e),n=t.index();if(n===0)return;const r=t.posAtIndex(n-1);return u.getBlockInfoFromResolvedPos(o.resolve(r))},Se=(o,e)=>{for(;e.childContainer;){const t=e.childContainer.node,n=o.resolve(e.childContainer.beforePos+1).posAtIndex(t.childCount-1);e=u.getBlockInfoFromResolvedPos(o.resolve(n))}return e},Ht=(o,e)=>o.isBlockContainer&&o.blockContent.node.type.spec.content==="inline*"&&o.blockContent.node.childCount>0&&e.isBlockContainer&&e.blockContent.node.type.spec.content==="inline*",$t=(o,e,t,n)=>{if(!n.isBlockContainer)throw new Error(`Attempted to merge block at position ${n.bnBlock.beforePos} into previous block at position ${t.bnBlock.beforePos}, but next block is not a block container`);if(n.childContainer){const r=o.doc.resolve(n.childContainer.beforePos+1),s=o.doc.resolve(n.childContainer.afterPos-1),i=r.blockRange(s);if(e){const l=o.doc.resolve(n.bnBlock.beforePos);o.tr.lift(i,l.depth)}}if(e){if(!t.isBlockContainer)throw new Error(`Attempted to merge block at position ${n.bnBlock.beforePos} into previous block at position ${t.bnBlock.beforePos}, but previous block is not a block container`);e(o.tr.delete(t.blockContent.afterPos-1,n.blockContent.beforePos+1))}return!0},ee=o=>({state:e,dispatch:t})=>{const n=e.doc.resolve(o),r=u.getBlockInfoFromResolvedPos(n),s=V(e.doc,r.bnBlock.beforePos);if(!s)return!1;const i=Se(e.doc,s);return Ht(i,r)?$t(e,t,i,r):!1},Ut=B.Extension.create({priority:50,addKeyboardShortcuts(){const o=()=>this.editor.commands.first(({chain:n,commands:r})=>[()=>r.deleteSelection(),()=>r.undoInputRule(),()=>r.command(({state:s})=>{const i=u.getBlockInfoFromSelection(s);if(!i.isBlockContainer)return!1;const l=s.selection.from===i.blockContent.beforePos+1,a=i.blockContent.node.type.name==="paragraph";return l&&!a?r.command(c.updateBlockCommand(i.bnBlock.beforePos,{type:"paragraph",props:{}})):!1}),()=>r.command(({state:s})=>{const i=u.getBlockInfoFromSelection(s);if(!i.isBlockContainer)return!1;const{blockContent:l}=i;return s.selection.from===l.beforePos+1?r.liftListItem("blockContainer"):!1}),()=>r.command(({state:s})=>{const i=u.getBlockInfoFromSelection(s);if(!i.isBlockContainer)return!1;const{bnBlock:l,blockContent:a}=i,d=s.selection.from===a.beforePos+1,p=s.selection.empty,f=l.beforePos;return d&&p?n().command(ee(f)).scrollIntoView().run():!1}),()=>r.command(({state:s,tr:i,dispatch:l})=>{const a=u.getBlockInfoFromSelection(s);if(!a.isBlockContainer||!(i.selection.from===a.blockContent.beforePos+1))return!1;const p=i.doc.resolve(a.bnBlock.beforePos);if(p.nodeBefore||p.node().type.name!=="column")return!1;const g=i.doc.resolve(a.bnBlock.beforePos),m=i.doc.resolve(g.before()),S=m.before();if(l){const y=i.doc.slice(a.bnBlock.beforePos,a.bnBlock.afterPos).content;i.delete(a.bnBlock.beforePos,a.bnBlock.afterPos),m.index()===0?(D(i,S),i.insert(S,y),i.setSelection(C.TextSelection.near(i.doc.resolve(S)))):(i.insert(m.pos-1,y),i.setSelection(C.TextSelection.near(i.doc.resolve(m.pos-1))),D(i,S))}return!0}),()=>r.command(({state:s})=>{const i=u.getBlockInfoFromSelection(s);if(!i.isBlockContainer)return!1;if(i.blockContent.node.childCount===0&&i.blockContent.node.type.spec.content==="inline*"){const a=V(s.doc,i.bnBlock.beforePos);if(!a||!a.isBlockContainer)return!1;let d=n();if(a.blockContent.node.type.spec.content==="tableRow+"){const m=i.bnBlock.beforePos-1-1-1-1-1;d=d.setTextSelection(m)}else if(a.blockContent.node.type.spec.content===""){const p=a.blockContent.afterPos-a.blockContent.node.nodeSize;d=d.setNodeSelection(p)}else{const p=a.blockContent.afterPos-a.blockContent.node.nodeSize;d=d.setTextSelection(p)}return d.deleteRange({from:i.bnBlock.beforePos,to:i.bnBlock.afterPos}).scrollIntoView().run()}return!1}),()=>r.command(({state:s})=>{const i=u.getBlockInfoFromSelection(s);if(!i.isBlockContainer)throw new Error("todo");const l=s.selection.from===i.blockContent.beforePos+1,a=s.selection.empty,d=V(s.doc,i.bnBlock.beforePos);if(d&&l&&a){const p=Se(s.doc,d);if(!p.isBlockContainer)throw new Error("todo");if(p.blockContent.node.type.spec.content===""||p.blockContent.node.type.spec.content==="inline*"&&p.blockContent.node.childCount===0)return n().cut({from:i.bnBlock.beforePos,to:i.bnBlock.afterPos},p.bnBlock.afterPos).deleteRange({from:p.bnBlock.beforePos,to:p.bnBlock.afterPos}).run()}return!1})]),e=()=>this.editor.commands.first(({commands:n})=>[()=>n.deleteSelection(),()=>n.command(({state:r})=>{const s=u.getBlockInfoFromSelection(r);if(!s.isBlockContainer)return!1;const{bnBlock:i,blockContent:l,childContainer:a}=s,{depth:d}=r.doc.resolve(i.beforePos),p=i.afterPos===r.doc.nodeSize-3,f=r.selection.from===l.afterPos-1,h=r.selection.empty;if(!p&&f&&h&&!(a!==void 0)){let m=d,S=i.afterPos+1,y=r.doc.resolve(S).depth;for(;y<m;)m=y,S+=2,y=r.doc.resolve(S).depth;return n.command(ee(S-1))}return!1})]),t=(n=!1)=>this.editor.commands.first(({commands:r,tr:s})=>[()=>r.command(({state:i})=>{const l=u.getBlockInfoFromSelection(i);if(!l.isBlockContainer)return!1;const{bnBlock:a,blockContent:d}=l,{depth:p}=i.doc.resolve(a.beforePos),f=i.selection.$anchor.parentOffset===0,h=i.selection.anchor===i.selection.head,g=d.node.childCount===0,m=p>1;return f&&h&&g&&m?r.liftListItem("blockContainer"):!1}),()=>r.command(({state:i})=>{var d;const l=u.getBlockInfoFromSelection(i),a=((d=this.options.editor.schema.blockSchema[l.blockNoteType].meta)==null?void 0:d.hardBreakShortcut)??"shift+enter";if(a==="none")return!1;if(a==="shift+enter"&&n||a==="enter"){const p=s.storedMarks||s.selection.$head.marks().filter(f=>this.editor.extensionManager.splittableMarks.includes(f.type.name));return s.insert(s.selection.head,s.doc.type.schema.nodes.hardBreak.create()).ensureMarks(p),!0}return!1}),()=>r.command(({state:i,dispatch:l})=>{const a=u.getBlockInfoFromSelection(i);if(!a.isBlockContainer)return!1;const{bnBlock:d,blockContent:p}=a,f=i.selection.$anchor.parentOffset===0,h=i.selection.anchor===i.selection.head,g=p.node.childCount===0;if(f&&h&&g){const m=d.afterPos,S=m+2;if(l){const y=i.schema.nodes.blockContainer.createAndFill();i.tr.insert(m,y).scrollIntoView(),i.tr.setSelection(new C.TextSelection(i.doc.resolve(S)))}return!0}return!1}),()=>r.command(({state:i,chain:l})=>{const a=u.getBlockInfoFromSelection(i);if(!a.isBlockContainer)return!1;const{blockContent:d}=a,p=i.selection.$anchor.parentOffset===0;return d.node.childCount===0?!1:(l().deleteSelection().command(c.splitBlockCommand(i.selection.from,p,p)).run(),!0)})]);return{Backspace:o,Delete:e,Enter:()=>t(),"Shift-Enter":()=>t(!0),Tab:()=>{var n,r;return this.options.tabBehavior!=="prefer-indent"&&((n=this.options.editor.getExtension(b.FormattingToolbarExtension))!=null&&n.store.state||((r=this.options.editor.getExtension(c.FilePanelExtension))==null?void 0:r.store.state)!==void 0)?!1:pe(this.options.editor)},"Shift-Tab":()=>{var n,r;return this.options.tabBehavior!=="prefer-indent"&&((n=this.options.editor.getExtension(b.FormattingToolbarExtension))!=null&&n.store.state||((r=this.options.editor.getExtension(c.FilePanelExtension))==null?void 0:r.store.state)!==void 0)?!1:this.editor.commands.liftListItem("blockContainer")},"Shift-Mod-ArrowUp":()=>(this.options.editor.moveBlocksUp(),!0),"Shift-Mod-ArrowDown":()=>(this.options.editor.moveBlocksDown(),!0),"Mod-z":()=>this.options.editor.undo(),"Mod-y":()=>this.options.editor.redo(),"Shift-Mod-z":()=>this.options.editor.redo()}}}),Vt=B.Mark.create({name:"insertion",inclusive:!1,excludes:"deletion modification insertion",addAttributes(){return{id:{default:null,validate:"number"}}},extendMarkSchema(o){return o.name!=="insertion"?{}:{blocknoteIgnore:!0,inclusive:!1,toDOM(e,t){return["ins",{"data-id":String(e.attrs.id),"data-inline":String(t),...!t&&{style:"display: contents"}},0]},parseDOM:[{tag:"ins",getAttrs(e){return e.dataset.id?{id:parseInt(e.dataset.id,10)}:!1}}]}}}),Rt=B.Mark.create({name:"deletion",inclusive:!1,excludes:"insertion modification deletion",addAttributes(){return{id:{default:null,validate:"number"}}},extendMarkSchema(o){return o.name!=="deletion"?{}:{blocknoteIgnore:!0,inclusive:!1,toDOM(e,t){return["del",{"data-id":String(e.attrs.id),"data-inline":String(t),...!t&&{style:"display: contents"}},0]},parseDOM:[{tag:"del",getAttrs(e){return e.dataset.id?{id:parseInt(e.dataset.id,10)}:!1}}]}}}),zt=B.Mark.create({name:"modification",inclusive:!1,excludes:"deletion insertion",addAttributes(){return{id:{default:null,validate:"number"},type:{validate:"string"},attrName:{default:null,validate:"string|null"},previousValue:{default:null},newValue:{default:null}}},extendMarkSchema(o){return o.name!=="modification"?{}:{blocknoteIgnore:!0,inclusive:!1,toDOM(e,t){return[t?"span":"div",{"data-type":"modification","data-id":String(e.attrs.id),"data-mod-type":e.attrs.type,"data-mod-prev-val":JSON.stringify(e.attrs.previousValue),"data-mod-new-val":JSON.stringify(e.attrs.newValue)},0]},parseDOM:[{tag:"span[data-type='modification']",getAttrs(e){return e.dataset.id?{id:parseInt(e.dataset.id,10),type:e.dataset.modType,previousValue:e.dataset.modPrevVal,newValue:e.dataset.modNewVal}:!1}},{tag:"div[data-type='modification']",getAttrs(e){return e.dataset.id?{id:parseInt(e.dataset.id,10),type:e.dataset.modType,previousValue:e.dataset.modPrevVal}:!1}}]}}}),Gt=B.Extension.create({name:"textAlignment",addGlobalAttributes(){return[{types:["tableCell","tableHeader"],attributes:{textAlignment:{default:"left",parseHTML:o=>o.getAttribute("data-text-alignment"),renderHTML:o=>o.textAlignment==="left"?{}:{"data-text-alignment":o.textAlignment}}}}]}}),qt=B.Extension.create({name:"blockTextColor",addGlobalAttributes(){return[{types:["table","tableCell","tableHeader"],attributes:{textColor:c.getTextColorAttribute()}}]}}),Wt={blockColor:"data-block-color",blockStyle:"data-block-style",id:"data-id",depth:"data-depth",depthChange:"data-depth-change"},jt=B.Node.create({name:"blockContainer",group:"blockGroupChild bnBlock",content:"blockContent blockGroup?",priority:50,defining:!0,marks:"insertion modification deletion",parseHTML(){return[{tag:"div[data-node-type="+this.name+"]",getAttrs:o=>{if(typeof o=="string")return!1;const e={};for(const[t,n]of Object.entries(Wt))o.getAttribute(n)&&(e[t]=o.getAttribute(n));return e}},{tag:'div[data-node-type="blockOuter"]',skip:!0}]},renderHTML({HTMLAttributes:o}){var r;const e=document.createElement("div");e.className="bn-block-outer",e.setAttribute("data-node-type","blockOuter");for(const[s,i]of Object.entries(o))s!=="class"&&e.setAttribute(s,i);const t={...((r=this.options.domAttributes)==null?void 0:r.block)||{},...o},n=document.createElement("div");n.className=c.mergeCSSClasses("bn-block",t.class),n.setAttribute("data-node-type",this.name);for(const[s,i]of Object.entries(t))s!=="class"&&n.setAttribute(s,i);return e.appendChild(n),{dom:e,contentDOM:n}}}),Kt=B.Node.create({name:"blockGroup",group:"childContainer",content:"blockGroupChild+",marks:"deletion insertion modification",parseHTML(){return[{tag:"div",getAttrs:o=>typeof o=="string"?!1:o.getAttribute("data-node-type")==="blockGroup"?null:!1}]},renderHTML({HTMLAttributes:o}){var n;const e={...((n=this.options.domAttributes)==null?void 0:n.blockGroup)||{},...o},t=document.createElement("div");t.className=c.mergeCSSClasses("bn-block-group",e.class),t.setAttribute("data-node-type","blockGroup");for(const[r,s]of Object.entries(e))r!=="class"&&t.setAttribute(r,s);return{dom:t,contentDOM:t}}}),Yt=B.Node.create({name:"doc",topNode:!0,content:"blockGroup",marks:"insertion modification deletion"}),Jt=F.createExtension(({options:o})=>({key:"collaboration",blockNoteExtensions:[b.ForkYDocExtension(o),b.YCursorExtension(o),b.YSyncExtension(o),b.YUndoExtension(),b.SchemaMigration(o)]}));let te=!1;function Qt(o,e){const t=[B.extensions.ClipboardTextSerializer,B.extensions.Commands,B.extensions.Editable,B.extensions.FocusEvents,B.extensions.Tabindex,Ie.Gapcursor,u.UniqueID.configure({types:["blockContainer","columnList","column"],setIdAttribute:e.setIdAttribute}),Ot,we.Text,Vt,Rt,zt,Pe.Link.extend({inclusive:!1}).configure({defaultProtocol:b.DEFAULT_LINK_PROTOCOL,protocols:te?[]:b.VALID_LINK_PROTOCOLS}),...Object.values(o.schema.styleSpecs).map(n=>n.implementation.mark.configure({editor:o})),qt,Ft,Gt,B.Extension.create({name:"OverrideEscape",addKeyboardShortcuts:()=>({Escape:()=>{var n;return(n=o.getExtension(c.SuggestionMenu))!=null&&n.shown()?!1:(o.blur(),!0)}})}),Yt,jt.configure({editor:o,domAttributes:e.domAttributes}),Ut.configure({editor:o,tabBehavior:e.tabBehavior}),Kt.configure({domAttributes:e.domAttributes}),...Object.values(o.schema.inlineContentSpecs).filter(n=>n.config!=="link"&&n.config!=="text").map(n=>n.implementation.node.configure({editor:o})),...Object.values(o.schema.blockSpecs).flatMap(n=>[..."node"in n.implementation?[n.implementation.node.configure({editor:o,domAttributes:e.domAttributes})]:[]]),Dt(o),Lt(o,e.pasteHandler||(n=>n.defaultPasteHandler())),kt(o)];return te=!0,t}function Xt(o,e){const t=[b.BlockChangeExtension(),b.DropCursorExtension(e),c.FilePanelExtension(e),b.FormattingToolbarExtension(e),b.LinkToolbarExtension(e),b.NodeSelectionKeyboardExtension(),b.PlaceholderExtension(e),ve.ShowSelectionExtension(e),b.SideMenuExtension(e),c.SuggestionMenu(e),...e.trailingBlock!==!1?[b.TrailingNodeExtension()]:[]];return e.collaboration?t.push(Jt(e.collaboration)):t.push(b.HistoryExtension()),"table"in o.schema.blockSpecs&&t.push(b.TableHandlesExtension(e)),e.animations!==!1&&t.push(b.PreviousBlockTypeExtension()),t}class Zt{constructor(e,t){k(this,"disabledExtensions",new Set);k(this,"extensions",[]);k(this,"abortMap",new Map);k(this,"extensionFactories",new Map);k(this,"extensionPlugins",new Map);this.editor=e,this.options=t,e.onMount(()=>{for(const n of this.extensions)if(n.mount){const r=new window.AbortController,s=n.mount({dom:e.prosemirrorView.dom,root:e.prosemirrorView.root,signal:r.signal});s&&r.signal.addEventListener("abort",()=>{s()}),this.abortMap.set(n,r)}}),e.onUnmount(()=>{for(const[n,r]of this.abortMap.entries())this.abortMap.delete(n),r.abort()}),this.disabledExtensions=new Set(t.disableExtensions||[]);for(const n of Xt(this.editor,this.options))this.addExtension(n);for(const n of this.options.extensions??[])this.addExtension(n);for(const n of Object.values(this.editor.schema.blockSpecs))for(const r of n.extensions??[])this.addExtension(r)}registerExtension(e){var s;const t=[].concat(e).filter(Boolean);if(!t.length){console.warn("No extensions found to register",e);return}const n=t.map(i=>this.addExtension(i)).filter(Boolean),r=new Set;for(const i of n)i!=null&&i.tiptapExtensions&&console.warn(`Extension ${i.key} has tiptap extensions, but these cannot be changed after initializing the editor. Please separate the extension into multiple extensions if you want to add them, or re-initialize the editor.`,i),(s=i==null?void 0:i.inputRules)!=null&&s.length&&console.warn(`Extension ${i.key} has input rules, but these cannot be changed after initializing the editor. Please separate the extension into multiple extensions if you want to add them, or re-initialize the editor.`,i),this.getProsemirrorPluginsFromExtension(i).plugins.forEach(l=>{r.add(l)});this.updatePlugins(i=>[...i,...r])}addExtension(e){let t;if(typeof e=="function"?t=e({editor:this.editor}):t=e,!(!t||this.disabledExtensions.has(t.key))){if(typeof e=="function"){const n=t[F.originalFactorySymbol];typeof n=="function"&&this.extensionFactories.set(n,t)}if(this.extensions.push(t),t.blockNoteExtensions)for(const n of t.blockNoteExtensions)this.addExtension(n);return t}}resolveExtensions(e){const t=[];if(typeof e=="function"){const n=this.extensionFactories.get(e);n&&t.push(n)}else if(Array.isArray(e))for(const n of e)t.push(...this.resolveExtensions(n));else if(typeof e=="object"&&"key"in e)t.push(e);else if(typeof e=="string"){const n=this.extensions.find(r=>r.key===e);n&&t.push(n)}return t}unregisterExtension(e){var s;const t=this.resolveExtensions(e);if(!t.length){console.warn("No extensions found to unregister",e);return}let n=!1;const r=new Set;for(const i of t){this.extensions=this.extensions.filter(a=>a!==i),this.extensionFactories.forEach((a,d)=>{a===i&&this.extensionFactories.delete(d)}),(s=this.abortMap.get(i))==null||s.abort(),this.abortMap.delete(i);const l=this.extensionPlugins.get(i);l==null||l.forEach(a=>{r.add(a)}),this.extensionPlugins.delete(i),i.tiptapExtensions&&!n&&(n=!0,console.warn(`Extension ${i.key} has tiptap extensions, but they will not be removed. Please separate the extension into multiple extensions if you want to remove them, or re-initialize the editor.`,e))}this.updatePlugins(i=>i.filter(l=>!r.has(l)))}updatePlugins(e){const t=this.editor.prosemirrorState,n=t.reconfigure({plugins:e(t.plugins.slice())});this.editor.prosemirrorView.updateState(n)}getTiptapExtensions(){var r;const e=Qt(this.editor,this.options).filter(s=>!this.disabledExtensions.has(s.name)),t=M.sortByDependencies(this.extensions),n=new Map;for(const s of this.extensions){s.tiptapExtensions&&e.push(...s.tiptapExtensions);const i=t(s.key),{plugins:l,inputRules:a}=this.getProsemirrorPluginsFromExtension(s);l.length&&e.push(B.Extension.create({name:s.key,priority:i,addProseMirrorPlugins:()=>l})),a.length&&(n.has(i)||n.set(i,[]),n.get(i).push(...a))}e.push(B.Extension.create({name:"blocknote-input-rules",addProseMirrorPlugins(){const s=[];return Array.from(n.keys()).sort().reverse().forEach(i=>{s.push(...n.get(i))}),[K.inputRules({rules:s})]}}));for(const s of((r=this.options._tiptapOptions)==null?void 0:r.extensions)??[])e.push(s);return e}getProsemirrorPluginsFromExtension(e){var r,s,i;const t=[...e.prosemirrorPlugins??[]],n=[];return!((r=e.prosemirrorPlugins)!=null&&r.length)&&!Object.keys(e.keyboardShortcuts||{}).length&&!((s=e.inputRules)!=null&&s.length)?{plugins:t,inputRules:n}:(this.extensionPlugins.set(e,t),(i=e.inputRules)!=null&&i.length&&n.push(...e.inputRules.map(l=>new K.InputRule(l.find,(a,d,p,f)=>{const h=l.replace({match:d,range:{from:p,to:f},editor:this.editor});if(h){const g=this.editor.getTextCursorPosition();if(this.editor.schema.blockSchema[g.block.type].content!=="inline")return null;const m=u.getBlockInfoFromTransaction(a.tr),S=a.tr.deleteRange(p,f);return c.updateBlockTr(S,m.bnBlock.beforePos,h),S}return null}))),Object.keys(e.keyboardShortcuts||{}).length&&t.push(Me.keymap(Object.fromEntries(Object.entries(e.keyboardShortcuts).map(([l,a])=>[l,()=>a({editor:this.editor})])))),{plugins:t,inputRules:n})}getExtensions(){return new Map(this.extensions.map(e=>[e.key,e]))}getExtension(e){if(typeof e=="string"){const t=this.extensions.find(n=>n.key===e);return t||void 0}else if(typeof e=="function"){const t=this.extensionFactories.get(e);return t||void 0}throw new Error(`Invalid extension type: ${typeof e}`)}hasExtension(e){return typeof e=="string"?this.extensions.some(t=>t.key===e):typeof e=="object"&&"key"in e?this.extensions.some(t=>t.key===e.key):typeof e=="function"?this.extensionFactories.has(e):!1}}function Be(o,e){let{$from:t,$to:n}=e;if(t.pos>t.start()&&t.pos<o.content.size){const r=o.textBetween(t.pos,t.pos+1);if(/^[\w\p{P}]$/u.test(r)){const i=o.textBetween(t.start(),t.pos).match(/[\w\p{P}]+$/u);i&&(t=o.resolve(t.pos-i[0].length))}}if(n.pos<n.end()&&n.pos>0){const r=o.textBetween(n.pos-1,n.pos);if(/^[\w\p{P}]$/u.test(r)){const i=o.textBetween(n.pos,n.end()).match(/^[\w\p{P}]+/u);i&&(n=o.resolve(n.pos+i[0].length))}}return{$from:t,$to:n,from:t.pos,to:n.pos}}function eo(o){const e=u.getPmSchema(o);if(o.selection.empty||"node"in o.selection)return;const t=o.doc.resolve(u.getNearestBlockPos(o.doc,o.selection.from).posBeforeNode),n=o.doc.resolve(u.getNearestBlockPos(o.doc,o.selection.to).posBeforeNode),r=(d,p)=>{const f=t.posAtIndex(d,p),h=o.doc.resolve(f).nodeAfter;if(!h)throw new Error(`Error getting selection - node not found at position ${f}`);return u.nodeToBlock(h,e)},s=[],i=t.sharedDepth(n.pos),l=t.index(i),a=n.index(i);if(t.depth>i){s.push(u.nodeToBlock(t.nodeAfter,e));for(let d=t.depth;d>i;d--)if(t.node(d).type.isInGroup("childContainer")){const f=t.index(d)+1,h=t.node(d).childCount;for(let g=f;g<h;g++)s.push(r(g,d))}}else s.push(r(l,i));for(let d=l+1;d<=a;d++)s.push(r(d,i));if(s.length===0)throw new Error(`Error getting selection - selection doesn't span any blocks (${o.selection})`);return{blocks:s}}function to(o,e,t){const n=typeof e=="string"?e:e.id,r=typeof t=="string"?t:t.id,s=u.getPmSchema(o),i=u.getBlockNoteSchema(s);if(n===r)throw new Error(`Attempting to set selection with the same anchor and head blocks (id ${n})`);const l=c.getNodeById(n,o.doc);if(!l)throw new Error(`Block with ID ${n} not found`);const a=c.getNodeById(r,o.doc);if(!a)throw new Error(`Block with ID ${r} not found`);const d=u.getBlockInfo(l),p=u.getBlockInfo(a),f=i.blockSchema[d.blockNoteType],h=i.blockSchema[p.blockNoteType];if(!d.isBlockContainer||f.content==="none")throw new Error(`Attempting to set selection anchor in block without content (id ${n})`);if(!p.isBlockContainer||h.content==="none")throw new Error(`Attempting to set selection anchor in block without content (id ${r})`);let g,m;if(f.content==="table"){const S=N.TableMap.get(d.blockContent.node);g=d.blockContent.beforePos+S.positionAt(0,0,d.blockContent.node)+1+2}else g=d.blockContent.beforePos+1;if(h.content==="table"){const S=N.TableMap.get(p.blockContent.node),y=p.blockContent.beforePos+S.positionAt(S.height-1,S.width-1,p.blockContent.node)+1,E=o.doc.resolve(y).nodeAfter.nodeSize;m=y+E-2}else m=p.blockContent.afterPos-1;o.setSelection(C.TextSelection.create(o.doc,g,m))}function oo(o,e=!1){const t=u.getPmSchema(o),n=e?Be(o.doc,o.selection):o.selection;let r=n.$from,s=n.$to;for(;s.parentOffset>=s.parent.nodeSize-2&&s.depth>0;)s=o.doc.resolve(s.pos+1);for(;s.parentOffset===0&&s.depth>0;)s=o.doc.resolve(s.pos-1);for(;r.parentOffset===0&&r.depth>0;)r=o.doc.resolve(r.pos-1);for(;r.parentOffset>=r.parent.nodeSize-2&&r.depth>0;)r=o.doc.resolve(r.pos+1);const i=u.prosemirrorSliceToSlicedBlocks(o.doc.slice(r.pos,s.pos,!0),t);return{_meta:{startPos:r.pos,endPos:s.pos},...i}}function no(o){const{bnBlock:e}=u.getBlockInfoFromTransaction(o),t=u.getPmSchema(o.doc),n=o.doc.resolve(e.beforePos),r=n.nodeBefore,s=o.doc.resolve(e.afterPos).nodeAfter;let i;return n.depth>1&&(i=n.node(),i.type.isInGroup("bnBlock")||(i=n.node(n.depth-1))),{block:u.nodeToBlock(e.node,t),prevBlock:r===null?void 0:u.nodeToBlock(r,t),nextBlock:s===null?void 0:u.nodeToBlock(s,t),parentBlock:i===void 0?void 0:u.nodeToBlock(i,t)}}function ye(o,e,t="start"){const n=typeof e=="string"?e:e.id,r=u.getPmSchema(o.doc),s=u.getBlockNoteSchema(r),i=c.getNodeById(n,o.doc);if(!i)throw new Error(`Block with ID ${n} not found`);const l=u.getBlockInfo(i),a=s.blockSchema[l.blockNoteType].content;if(l.isBlockContainer){const d=l.blockContent;if(a==="none"){o.setSelection(C.NodeSelection.create(o.doc,d.beforePos));return}if(a==="inline")t==="start"?o.setSelection(C.TextSelection.create(o.doc,d.beforePos+1)):o.setSelection(C.TextSelection.create(o.doc,d.afterPos-1));else if(a==="table")t==="start"?o.setSelection(C.TextSelection.create(o.doc,d.beforePos+4)):o.setSelection(C.TextSelection.create(o.doc,d.afterPos-4));else throw new u.UnreachableCaseError(a)}else{const d=t==="start"?l.childContainer.node.firstChild:l.childContainer.node.lastChild;ye(o,d.attrs.id,t)}}class ro{constructor(e){this.editor=e}getSelection(){return this.editor.transact(e=>eo(e))}getSelectionCutBlocks(e=!1){return this.editor.transact(t=>oo(t,e))}setSelection(e,t){return this.editor.transact(n=>to(n,e,t))}getTextCursorPosition(){return this.editor.transact(e=>no(e))}setTextCursorPosition(e,t="start"){return this.editor.transact(n=>ye(n,e,t))}getSelectionBoundingBox(){if(!this.editor.prosemirrorView)return;const{selection:e}=this.editor.prosemirrorState,{ranges:t}=e,n=Math.min(...t.map(s=>s.$from.pos)),r=Math.max(...t.map(s=>s.$to.pos));if(B.isNodeSelection(e)){const s=this.editor.prosemirrorView.nodeDOM(n);if(s)return s.getBoundingClientRect()}return B.posToDOMRect(this.editor.prosemirrorView,n,r).toJSON()}}class so{constructor(e){k(this,"activeTransaction",null);k(this,"isInCan",!1);this.editor=e}can(e){try{return this.isInCan=!0,e()}finally{this.isInCan=!1}}exec(e){if(this.activeTransaction)throw new Error("`exec` should not be called within a `transact` call, move the `exec` call outside of the `transact` call");if(this.isInCan)return this.canExec(e);const t=this.prosemirrorState,n=this.prosemirrorView;return e(t,s=>this.prosemirrorView.dispatch(s),n)}canExec(e){if(this.activeTransaction)throw new Error("`canExec` should not be called within a `transact` call, move the `canExec` call outside of the `transact` call");const t=this.prosemirrorState,n=this.prosemirrorView;return e(t,void 0,n)}transact(e){if(this.activeTransaction)return e(this.activeTransaction);try{this.activeTransaction=this.editor._tiptapEditor.state.tr;const t=e(this.activeTransaction),n=this.activeTransaction;return this.activeTransaction=null,n&&(n.docChanged||n.selectionSet||n.scrolledIntoView||n.storedMarksSet||!n.isGeneric)&&this.prosemirrorView.dispatch(n),t}finally{this.activeTransaction=null}}get prosemirrorState(){if(this.activeTransaction)throw new Error("`prosemirrorState` should not be called within a `transact` call, move the `prosemirrorState` call outside of the `transact` call or use `editor.transact` to read the current editor state");return this.editor._tiptapEditor.state}get prosemirrorView(){return this.editor._tiptapEditor.view}isFocused(){var e;return((e=this.prosemirrorView)==null?void 0:e.hasFocus())||!1}focus(){var e;(e=this.prosemirrorView)==null||e.focus()}get isEditable(){if(!this.editor._tiptapEditor){if(!this.editor.headless)throw new Error("no editor, but also not headless?");return!1}return this.editor._tiptapEditor.isEditable===void 0?!0:this.editor._tiptapEditor.isEditable}set isEditable(e){if(!this.editor._tiptapEditor){if(!this.editor.headless)throw new Error("no editor, but also not headless?");return}this.editor._tiptapEditor.options.editable!==e&&this.editor._tiptapEditor.setEditable(e)}undo(){const e=this.editor.getExtension("yUndo");if(e)return this.exec(e.undoCommand);const t=this.editor.getExtension("history");if(t)return this.exec(t.undoCommand);throw new Error("No undo plugin found")}redo(){const e=this.editor.getExtension("yUndo");if(e)return this.exec(e.redoCommand);const t=this.editor.getExtension("history");if(t)return this.exec(t.redoCommand);throw new Error("No redo plugin found")}}function io(o,e,t,n={updateSelection:!0}){let{from:r,to:s}=typeof e=="number"?{from:e,to:e}:{from:e.from,to:e.to},i=!0,l=!0,a="";if(t.forEach(d=>{d.check(),i&&d.isText&&d.marks.length===0?a+=d.text:i=!1,l=l?d.isBlock:!1}),r===s&&l){const{parent:d}=o.doc.resolve(r);d.isTextblock&&!d.type.spec.code&&!d.childCount&&(r-=1,s+=1)}return i?o.insertText(a,r,s):o.replaceWith(r,s,t),n.updateSelection&&B.selectionToInsertionEnd(o,o.steps.length-1,-1),!0}class co{constructor(e){this.editor=e}insertInlineContent(e,{updateSelection:t=!1}={}){const n=u.inlineContentToNodes(e,this.editor.pmSchema);this.editor.transact(r=>{io(r,{from:r.selection.from,to:r.selection.to},n,{updateSelection:t})})}getActiveStyles(){return this.editor.transact(e=>{const t={},n=e.selection.$to.marks();for(const r of n){const s=this.editor.schema.styleSchema[r.type.name];if(!s){r.type.name!=="link"&&!r.type.spec.blocknoteIgnore&&console.warn("mark not found in styleschema",r.type.name);continue}s.propSchema==="boolean"?t[s.type]=!0:t[s.type]=r.attrs.stringValue}return t})}addStyles(e){for(const[t,n]of Object.entries(e)){const r=this.editor.schema.styleSchema[t];if(!r)throw new Error(`style ${t} not found in styleSchema`);if(r.propSchema==="boolean")this.editor._tiptapEditor.commands.setMark(t);else if(r.propSchema==="string")this.editor._tiptapEditor.commands.setMark(t,{stringValue:n});else throw new u.UnreachableCaseError(r.propSchema)}}removeStyles(e){for(const t of Object.keys(e))this.editor._tiptapEditor.commands.unsetMark(t)}toggleStyles(e){for(const[t,n]of Object.entries(e)){const r=this.editor.schema.styleSchema[t];if(!r)throw new Error(`style ${t} not found in styleSchema`);if(r.propSchema==="boolean")this.editor._tiptapEditor.commands.toggleMark(t);else if(r.propSchema==="string")this.editor._tiptapEditor.commands.toggleMark(t,{stringValue:n});else throw new u.UnreachableCaseError(r.propSchema)}}getSelectedText(){return this.editor.transact(e=>e.doc.textBetween(e.selection.from,e.selection.to))}getSelectedLinkUrl(){return this.editor._tiptapEditor.getAttributes("link").href}createLink(e,t){if(e==="")return;const n=this.editor.pmSchema.mark("link",{href:e});this.editor.transact(r=>{const{from:s,to:i}=r.selection;t?r.insertText(t,s,i).addMark(s,s+t.length,n):r.setSelection(De.TextSelection.create(r.doc,i)).addMark(s,i,n)})}}function ao(o,e){const t=[];return o.forEach((n,r,s)=>{s!==e&&t.push(n)}),A.Fragment.from(t)}function lo(o,e){const t=[];for(let n=0;n<o.childCount;n++)if(o.child(n).type.name==="tableRow")if(t.length>0&&t[t.length-1].type.name==="table"){const r=t[t.length-1],s=r.copy(r.content.addToEnd(o.child(n)));t[t.length-1]=s}else{const r=e.nodes.table.createChecked(void 0,o.child(n));t.push(r)}else t.push(o.child(n));return o=A.Fragment.from(t),o}function uo(o,e){let t=A.Fragment.from(o.content);if(t=lo(t,e.state.schema),!po(t,e))return new A.Slice(t,o.openStart,o.openEnd);for(let n=0;n<t.childCount;n++)if(t.child(n).type.spec.group==="blockContent"){const r=[t.child(n)];if(n+1<t.childCount&&t.child(n+1).type.name==="blockGroup"){const i=t.child(n+1).child(0).child(0);(i.type.name==="bulletListItem"||i.type.name==="numberedListItem"||i.type.name==="checkListItem")&&(r.push(t.child(n+1)),t=ao(t,n+1))}const s=e.state.schema.nodes.blockContainer.createChecked(void 0,r);t=t.replaceChild(n,s)}return new A.Slice(t,o.openStart,o.openEnd)}function po(o,e){var s,i;const t=o.childCount===1,n=((s=o.firstChild)==null?void 0:s.type.spec.content)==="inline*",r=((i=o.firstChild)==null?void 0:i.type.spec.content)==="tableRow+";if(t){if(n)return!1;if(r){const l=u.getBlockInfoFromSelection(e.state);if(l.isBlockContainer)return!(l.blockContent.node.type.spec.content==="tableRow+")}}return!0}const fo={enableInputRules:!0,enablePasteRules:!0,enableCoreExtensions:!1};class j extends R.EventEmitter{constructor(t){var d,p,f,h,g,m,S,y,E,P;super();k(this,"pmSchema");k(this,"_tiptapEditor");k(this,"elementRenderer",null);k(this,"blockCache",new WeakMap);k(this,"dictionary");k(this,"schema");k(this,"blockImplementations");k(this,"inlineContentImplementations");k(this,"styleImplementations");k(this,"uploadFile");k(this,"onUploadStartCallbacks",[]);k(this,"onUploadEndCallbacks",[]);k(this,"resolveFileUrl");k(this,"settings");k(this,"_blockManager");k(this,"_eventManager");k(this,"_exportManager");k(this,"_extensionManager");k(this,"_selectionManager");k(this,"_stateManager");k(this,"_styleManager");k(this,"unregisterExtension",(...t)=>this._extensionManager.unregisterExtension(...t));k(this,"registerExtension",(...t)=>this._extensionManager.registerExtension(...t));k(this,"getExtension",(...t)=>this._extensionManager.getExtension(...t));k(this,"mount",t=>{this._tiptapEditor.mount({mount:t})});k(this,"unmount",()=>{this._tiptapEditor.unmount()});this.options=t,this.dictionary=t.dictionary||xe.en,this.settings={tables:{splitCells:((d=t==null?void 0:t.tables)==null?void 0:d.splitCells)??!1,cellBackgroundColor:((p=t==null?void 0:t.tables)==null?void 0:p.cellBackgroundColor)??!1,cellTextColor:((f=t==null?void 0:t.tables)==null?void 0:f.cellTextColor)??!1,headers:((h=t==null?void 0:t.tables)==null?void 0:h.headers)??!1}};const n={defaultStyles:!0,schema:t.schema||M.BlockNoteSchema.create(),...t,placeholders:{...this.dictionary.placeholders,...t.placeholders}};if(this.schema=n.schema,this.blockImplementations=n.schema.blockSpecs,this.inlineContentImplementations=n.schema.inlineContentSpecs,this.styleImplementations=n.schema.styleSpecs,n.uploadFile){const T=n.uploadFile;this.uploadFile=async(w,I)=>{this.onUploadStartCallbacks.forEach(v=>v.apply(this,[I]));try{return await T(w,I)}finally{this.onUploadEndCallbacks.forEach(v=>v.apply(this,[I]))}}}this.resolveFileUrl=n.resolveFileUrl,this._eventManager=new rt(this),this._extensionManager=new Zt(this,n);const r=this._extensionManager.getTiptapExtensions(),s=this._extensionManager.hasExtension("ySync")||this._extensionManager.hasExtension("liveblocksExtension");s&&n.initialContent&&console.warn("When using Collaboration, initialContent might cause conflicts, because changes should come from the collaboration provider");const i={...fo,...n._tiptapOptions,element:null,autofocus:n.autofocus??!1,extensions:r,editorProps:{...(g=n._tiptapOptions)==null?void 0:g.editorProps,attributes:{tabIndex:"0",...(S=(m=n._tiptapOptions)==null?void 0:m.editorProps)==null?void 0:S.attributes,...(y=n.domAttributes)==null?void 0:y.editor,class:c.mergeCSSClasses("bn-editor",n.defaultStyles?"bn-default-styles":"",((P=(E=n.domAttributes)==null?void 0:E.editor)==null?void 0:P.class)||"")},transformPasted:uo}};try{const T=n.initialContent||(s?[{type:"paragraph",id:"initialBlockId"}]:[{type:"paragraph",id:u.UniqueID.options.generateID()}]);if(!Array.isArray(T)||T.length===0)throw new Error("initialContent must be a non-empty array of blocks, received: "+T);const w=B.getSchema(i.extensions),I=T.map(Ce=>u.blockToNode(Ce,w,this.schema.styleSchema).toJSON()),v=B.createDocument({type:"doc",content:[{type:"blockGroup",content:I}]},w,i.parseOptions);this._tiptapEditor=new B.Editor({...i,content:v.toJSON()}),this.pmSchema=this._tiptapEditor.schema}catch(T){throw new Error("Error creating document from blocks passed as `initialContent`",{cause:T})}let l;const a=this.pmSchema.nodes.doc.createAndFill;this.pmSchema.nodes.doc.createAndFill=(...T)=>{if(l)return l;const w=a.apply(this.pmSchema.nodes.doc,T),I=JSON.parse(JSON.stringify(w.toJSON()));return I.content[0].content[0].attrs.id="initialBlockId",l=x.Node.fromJSON(this.pmSchema,I),l},this.pmSchema.cached.blockNoteEditor=this,this._blockManager=new nt(this),this._exportManager=new ft(this),this._selectionManager=new ro(this),this._stateManager=new so(this),this._styleManager=new co(this),this.emit("create")}static create(t){return new j(t??{})}get extensions(){return this._extensionManager.getExtensions()}exec(t){return this._stateManager.exec(t)}canExec(t){return this._stateManager.canExec(t)}transact(t){return this._stateManager.transact(t)}get prosemirrorState(){return this._stateManager.prosemirrorState}get prosemirrorView(){return this._stateManager.prosemirrorView}get domElement(){var t;if(!this.headless)return(t=this.prosemirrorView)==null?void 0:t.dom}isFocused(){var t;return this.headless?!1:((t=this.prosemirrorView)==null?void 0:t.hasFocus())||!1}get headless(){return!this._tiptapEditor.isInitialized}focus(){this.headless||this.prosemirrorView.focus()}blur(){var t;this.headless||(t=this.domElement)==null||t.blur()}onUploadStart(t){return this.onUploadStartCallbacks.push(t),()=>{const n=this.onUploadStartCallbacks.indexOf(t);n>-1&&this.onUploadStartCallbacks.splice(n,1)}}onUploadEnd(t){return this.onUploadEndCallbacks.push(t),()=>{const n=this.onUploadEndCallbacks.indexOf(t);n>-1&&this.onUploadEndCallbacks.splice(n,1)}}get topLevelBlocks(){return this.document}get document(){return this._blockManager.document}getBlock(t){return this._blockManager.getBlock(t)}getPrevBlock(t){return this._blockManager.getPrevBlock(t)}getNextBlock(t){return this._blockManager.getNextBlock(t)}getParentBlock(t){return this._blockManager.getParentBlock(t)}forEachBlock(t,n=!1){this._blockManager.forEachBlock(t,n)}onEditorContentChange(t){this._tiptapEditor.on("update",t)}onEditorSelectionChange(t){this._tiptapEditor.on("selectionUpdate",t)}onBeforeChange(t){return this._extensionManager.getExtension(b.BlockChangeExtension).subscribe(t)}getTextCursorPosition(){return this._selectionManager.getTextCursorPosition()}setTextCursorPosition(t,n="start"){return this._selectionManager.setTextCursorPosition(t,n)}getSelection(){return this._selectionManager.getSelection()}getSelectionCutBlocks(t=!1){return this._selectionManager.getSelectionCutBlocks(t)}setSelection(t,n){return this._selectionManager.setSelection(t,n)}get isEditable(){return this._stateManager.isEditable}set isEditable(t){this._stateManager.isEditable=t}insertBlocks(t,n,r="before"){return this._blockManager.insertBlocks(t,n,r)}updateBlock(t,n){return this._blockManager.updateBlock(t,n)}removeBlocks(t){return this._blockManager.removeBlocks(t)}replaceBlocks(t,n){return this._blockManager.replaceBlocks(t,n)}undo(){return this._stateManager.undo()}redo(){return this._stateManager.redo()}insertInlineContent(t,{updateSelection:n=!1}={}){this._styleManager.insertInlineContent(t,{updateSelection:n})}getActiveStyles(){return this._styleManager.getActiveStyles()}addStyles(t){this._styleManager.addStyles(t)}removeStyles(t){this._styleManager.removeStyles(t)}toggleStyles(t){this._styleManager.toggleStyles(t)}getSelectedText(){return this._styleManager.getSelectedText()}getSelectedLinkUrl(){return this._styleManager.getSelectedLinkUrl()}createLink(t,n){this._styleManager.createLink(t,n)}canNestBlock(){return this._blockManager.canNestBlock()}nestBlock(){this._blockManager.nestBlock()}canUnnestBlock(){return this._blockManager.canUnnestBlock()}unnestBlock(){this._blockManager.unnestBlock()}moveBlocksUp(){return this._blockManager.moveBlocksUp()}moveBlocksDown(){return this._blockManager.moveBlocksDown()}blocksToHTMLLossy(t=this.document){return this._exportManager.blocksToHTMLLossy(t)}blocksToFullHTML(t=this.document){return this._exportManager.blocksToFullHTML(t)}tryParseHTMLToBlocks(t){return this._exportManager.tryParseHTMLToBlocks(t)}blocksToMarkdownLossy(t=this.document){return this._exportManager.blocksToMarkdownLossy(t)}tryParseMarkdownToBlocks(t){return this._exportManager.tryParseMarkdownToBlocks(t)}onChange(t,n){return this._eventManager.onChange(t,n)}onSelectionChange(t,n){return this._eventManager.onSelectionChange(t,n)}onMount(t){this._eventManager.onMount(t)}onUnmount(t){this._eventManager.onUnmount(t)}getSelectionBoundingBox(){return this._selectionManager.getSelectionBoundingBox()}get isEmpty(){const t=this.document;return t.length===0||t.length===1&&t[0].type==="paragraph"&&t[0].content.length===0}pasteHTML(t,n=!1){this._exportManager.pasteHTML(t,n)}pasteText(t){return this._exportManager.pasteText(t)}pasteMarkdown(t){return this._exportManager.pasteMarkdown(t)}}class ho{constructor(e,t,n){this.mappings=t,this.options=n}async resolveFile(e){var n;if(!((n=this.options)!=null&&n.resolveFileUrl))return(await fetch(e)).blob();const t=await this.options.resolveFileUrl(e);return t instanceof Blob?t:(await fetch(t)).blob()}mapStyles(e){return Object.entries(e).map(([n,r])=>this.mappings.styleMapping[n](r,this))}mapInlineContent(e){return this.mappings.inlineContentMapping[e.type](e,this)}transformInlineContent(e){return e.map(t=>this.mapInlineContent(t))}async mapBlock(e,t,n,r){return this.mappings.blockMapping[e.type](e,this,t,n,r)}}function mo(o){return{createBlockMapping:e=>e,createInlineContentMapping:e=>e,createStyleMapping:e=>e}}function ko(o,...e){const t=[...o];for(const n of e)for(const r of n){const s=t.findLastIndex(i=>i.group===r.group);s===-1?t.push(r):t.splice(s+1,0,r)}return t}exports.UniqueID=u.UniqueID;exports.UnreachableCaseError=u.UnreachableCaseError;exports.assertEmpty=u.assertEmpty;exports.blockToNode=u.blockToNode;exports.contentNodeToInlineContent=u.contentNodeToInlineContent;exports.contentNodeToTableContent=u.contentNodeToTableContent;exports.docToBlocks=u.docToBlocks;exports.getBlockCache=u.getBlockCache;exports.getBlockInfo=u.getBlockInfo;exports.getBlockInfoFromResolvedPos=u.getBlockInfoFromResolvedPos;exports.getBlockInfoFromSelection=u.getBlockInfoFromSelection;exports.getBlockInfoFromTransaction=u.getBlockInfoFromTransaction;exports.getBlockInfoWithManualOffset=u.getBlockInfoWithManualOffset;exports.getBlockNoteSchema=u.getBlockNoteSchema;exports.getBlockSchema=u.getBlockSchema;exports.getColspan=u.getColspan;exports.getInlineContentSchema=u.getInlineContentSchema;exports.getNearestBlockPos=u.getNearestBlockPos;exports.getPmSchema=u.getPmSchema;exports.getRowspan=u.getRowspan;exports.getStyleSchema=u.getStyleSchema;exports.inlineContentToNodes=u.inlineContentToNodes;exports.isLinkInlineContent=u.isLinkInlineContent;exports.isPartialLinkInlineContent=u.isPartialLinkInlineContent;exports.isPartialTableCell=u.isPartialTableCell;exports.isStyledTextInlineContent=u.isStyledTextInlineContent;exports.isTableCell=u.isTableCell;exports.mapTableCell=u.mapTableCell;exports.nodeToBlock=u.nodeToBlock;exports.nodeToCustomInlineContent=u.nodeToCustomInlineContent;exports.prosemirrorSliceToSlicedBlocks=u.prosemirrorSliceToSlicedBlocks;exports.tableContentToNodes=u.tableContentToNodes;exports.COLORS_DARK_MODE_DEFAULT=c.COLORS_DARK_MODE_DEFAULT;exports.COLORS_DEFAULT=c.COLORS_DEFAULT;exports.EMPTY_CELL_HEIGHT=c.EMPTY_CELL_HEIGHT;exports.EMPTY_CELL_WIDTH=c.EMPTY_CELL_WIDTH;exports.FILE_AUDIO_ICON_SVG=c.FILE_AUDIO_ICON_SVG;exports.FILE_IMAGE_ICON_SVG=c.FILE_IMAGE_ICON_SVG;exports.FILE_VIDEO_ICON_SVG=c.FILE_VIDEO_ICON_SVG;exports.addDefaultPropsExternalHTML=c.addDefaultPropsExternalHTML;exports.addInlineContentAttributes=c.addInlineContentAttributes;exports.addInlineContentKeyboardShortcuts=c.addInlineContentKeyboardShortcuts;exports.addNodeAndExtensionsToSpec=c.addNodeAndExtensionsToSpec;exports.addStyleAttributes=c.addStyleAttributes;exports.applyNonSelectableBlockFix=c.applyNonSelectableBlockFix;exports.audioParse=c.audioParse;exports.audioRender=c.audioRender;exports.audioToExternalHTML=c.audioToExternalHTML;exports.blockHasType=c.blockHasType;exports.camelToDataKebab=c.camelToDataKebab;exports.captureCellAnchor=c.captureCellAnchor;exports.createAudioBlockConfig=c.createAudioBlockConfig;exports.createAudioBlockSpec=c.createAudioBlockSpec;exports.createBlockConfig=c.createBlockConfig;exports.createBlockSpec=c.createBlockSpec;exports.createBlockSpecFromTiptapNode=c.createBlockSpecFromTiptapNode;exports.createBulletListItemBlockConfig=c.createBulletListItemBlockConfig;exports.createBulletListItemBlockSpec=c.createBulletListItemBlockSpec;exports.createCheckListItemBlockSpec=c.createCheckListItemBlockSpec;exports.createCheckListItemConfig=c.createCheckListItemConfig;exports.createCodeBlockConfig=c.createCodeBlockConfig;exports.createCodeBlockSpec=c.createCodeBlockSpec;exports.createDefaultBlockDOMOutputSpec=c.createDefaultBlockDOMOutputSpec;exports.createDividerBlockConfig=c.createDividerBlockConfig;exports.createDividerBlockSpec=c.createDividerBlockSpec;exports.createFileBlockConfig=c.createFileBlockConfig;exports.createFileBlockSpec=c.createFileBlockSpec;exports.createHeadingBlockConfig=c.createHeadingBlockConfig;exports.createHeadingBlockSpec=c.createHeadingBlockSpec;exports.createImageBlockConfig=c.createImageBlockConfig;exports.createImageBlockSpec=c.createImageBlockSpec;exports.createInlineContentSpecFromTipTapNode=c.createInlineContentSpecFromTipTapNode;exports.createInternalInlineContentSpec=c.createInternalInlineContentSpec;exports.createInternalStyleSpec=c.createInternalStyleSpec;exports.createNumberedListItemBlockConfig=c.createNumberedListItemBlockConfig;exports.createNumberedListItemBlockSpec=c.createNumberedListItemBlockSpec;exports.createParagraphBlockConfig=c.createParagraphBlockConfig;exports.createParagraphBlockSpec=c.createParagraphBlockSpec;exports.createQuoteBlockConfig=c.createQuoteBlockConfig;exports.createQuoteBlockSpec=c.createQuoteBlockSpec;exports.createStyleSpec=c.createStyleSpec;exports.createStyleSpecFromTipTapMark=c.createStyleSpecFromTipTapMark;exports.createTableBlockSpec=c.createTableBlockSpec;exports.createToggleListItemBlockConfig=c.createToggleListItemBlockConfig;exports.createToggleListItemBlockSpec=c.createToggleListItemBlockSpec;exports.createToggleWrapper=c.createToggleWrapper;exports.createVideoBlockConfig=c.createVideoBlockConfig;exports.createVideoBlockSpec=c.createVideoBlockSpec;exports.defaultBlockSpecs=c.defaultBlockSpecs;exports.defaultBlockToHTML=c.defaultBlockToHTML;exports.defaultInlineContentSchema=c.defaultInlineContentSchema;exports.defaultInlineContentSpecs=c.defaultInlineContentSpecs;exports.defaultProps=c.defaultProps;exports.defaultStyleSchema=c.defaultStyleSchema;exports.defaultStyleSpecs=c.defaultStyleSpecs;exports.defaultToggledState=c.defaultToggledState;exports.editorHasBlockWithType=c.editorHasBlockWithType;exports.fileParse=c.fileParse;exports.filenameFromURL=c.filenameFromURL;exports.formatKeyboardShortcut=c.formatKeyboardShortcut;exports.getBackgroundColorAttribute=c.getBackgroundColorAttribute;exports.getBlockFromPos=c.getBlockFromPos;exports.getInlineContentSchemaFromSpecs=c.getInlineContentSchemaFromSpecs;exports.getLanguageId=c.getLanguageId;exports.getNodeById=c.getNodeById;exports.getParseRules=c.getParseRules;exports.getStyleParseRules=c.getStyleParseRules;exports.getStyleSchemaFromSpecs=c.getStyleSchemaFromSpecs;exports.getTextAlignmentAttribute=c.getTextAlignmentAttribute;exports.getTextColorAttribute=c.getTextColorAttribute;exports.imageParse=c.imageParse;exports.imageRender=c.imageRender;exports.imageToExternalHTML=c.imageToExternalHTML;exports.isAppleOS=c.isAppleOS;exports.isNodeBlock=c.isNodeBlock;exports.isSafari=c.isSafari;exports.isTableCellSelection=c.isTableCellSelection;exports.isVideoUrl=c.isVideoUrl;exports.mergeCSSClasses=c.mergeCSSClasses;exports.mergeParagraphs=c.mergeParagraphs;exports.parseAudioElement=c.parseAudioElement;exports.parseDefaultProps=c.parseDefaultProps;exports.propsToAttributes=c.propsToAttributes;exports.stylePropsToAttributes=c.stylePropsToAttributes;exports.tablePropSchema=c.tablePropSchema;exports.trackPosition=c.trackPosition;exports.updateBlock=c.updateBlock;exports.updateBlockCommand=c.updateBlockCommand;exports.updateBlockTr=c.updateBlockTr;exports.videoParse=c.videoParse;exports.wrapInBlockStructure=c.wrapInBlockStructure;exports.blocksToMarkdown=b.blocksToMarkdown;exports.cleanHTMLToMarkdown=b.cleanHTMLToMarkdown;exports.createExternalHTMLExporter=b.createExternalHTMLExporter;exports.getBlocksChangedByTransaction=b.getBlocksChangedByTransaction;exports.BlockNoteSchema=M.BlockNoteSchema;exports.CustomBlockNoteSchema=M.CustomBlockNoteSchema;exports.checkPageBreakBlocksInSchema=M.checkPageBreakBlocksInSchema;exports.createPageBreakBlockConfig=M.createPageBreakBlockConfig;exports.createPageBreakBlockSpec=M.createPageBreakBlockSpec;exports.getPageBreakSlashMenuItems=M.getPageBreakSlashMenuItems;exports.uploadToTmpFilesDotOrg_DEV_ONLY=M.uploadToTmpFilesDotOrg_DEV_ONLY;exports.withPageBreak=M.withPageBreak;exports.EventEmitter=R.EventEmitter;exports.createExtension=F.createExtension;exports.createStore=F.createStore;exports.BlockNoteEditor=j;exports.Exporter=ho;exports.HTMLToBlocks=z;exports.combineByGroup=ko;exports.createInlineContentSpec=Ue;exports.createInternalHTMLSerializer=ce;exports.expandPMRangeToWords=Be;exports.fixColumnList=D;exports.getBlock=fe;exports.getInlineContentParseRules=oe;exports.getNextBlock=me;exports.getParentBlock=ke;exports.getPrevBlock=he;exports.insertBlocks=ne;exports.isEmptyColumn=_;exports.mappingFactory=mo;exports.markdownToBlocks=ge;exports.markdownToHTML=G;exports.removeAndInsertBlocks=$;exports.removeEmptyColumns=re;exports.selectedFragmentToHTML=W;
1
+ "use strict";var Pe=Object.defineProperty;var Ie=(o,e,t)=>e in o?Pe(o,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):o[e]=t;var b=(o,e,t)=>Ie(o,typeof e!="symbol"?e+"":e,t);Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const E=require("prosemirror-model"),F=require("prosemirror-transform"),u=require("./blockToNode-CumVjgem.cjs"),d=require("./defaultBlocks-CSB5GiAu.cjs"),B=require("./TrailingNode-DHOdUVUO.cjs"),I=require("./BlockNoteSchema-CwhtPpVC.cjs"),S=require("@tiptap/core"),z=require("./EventEmitter-CLwfmbqG.cjs"),w=require("@tiptap/pm/model"),Me=require("./en-Cl87Uuyf.cjs"),Y=require("@handlewithcare/prosemirror-inputrules"),we=require("@tiptap/pm/keymap"),H=require("./BlockNoteExtension-BWw0r8Gy.cjs"),ve=require("@tiptap/extensions/gap-cursor"),Ae=require("@tiptap/extension-link"),Ne=require("@tiptap/extension-text"),T=require("prosemirror-state"),D=require("prosemirror-tables"),Le=require("./ShowSelection-BxnbRvy4.cjs"),_e=require("remark-gfm"),De=require("remark-parse"),R=require("remark-rehype"),Fe=require("rehype-stringify"),Oe=require("unified"),He=require("@tiptap/pm/state"),$=o=>o&&typeof o=="object"&&"default"in o?o:{default:o},$e=$(_e),Re=$(De),Ve=$(R),Ue=$(Fe);function ne(o,e){const t=[{tag:`[data-inline-content-type="${o.type}"]`,contentElement:n=>{const r=n;return r.matches("[data-editable]")?r:r.querySelector("[data-editable]")||r}}];return e&&t.push({tag:"*",getAttrs(n){if(typeof n=="string")return!1;const r=e==null?void 0:e(n);return r===void 0?!1:r}}),t}function ze(o,e){var n;const t=S.Node.create({name:o.type,inline:!0,group:"inline",draggable:(n=e.meta)==null?void 0:n.draggable,selectable:o.content==="styled",atom:o.content==="none",content:o.content==="styled"?"inline*":"",addAttributes(){return d.propsToAttributes(o.propSchema)},addKeyboardShortcuts(){return d.addInlineContentKeyboardShortcuts(o)},parseHTML(){return ne(o,e.parse)},renderHTML({node:r}){const s=this.options.editor,i=e.render.call({renderType:"dom",props:void 0},u.nodeToCustomInlineContent(r,s.schema.inlineContentSchema,s.schema.styleSchema),()=>{},s);return d.addInlineContentAttributes(i,o.type,r.attrs,o.propSchema)},addNodeView(){return r=>{const{node:s,getPos:i}=r,a=this.options.editor,c=e.render.call({renderType:"nodeView",props:r},u.nodeToCustomInlineContent(s,a.schema.inlineContentSchema,a.schema.styleSchema),l=>{const p=u.inlineContentToNodes([l],a.pmSchema),f=i();f&&a.transact(h=>h.replaceWith(f,f+s.nodeSize,p))},a);return d.addInlineContentAttributes(c,o.type,s.attrs,o.propSchema)}}});return d.createInlineContentSpecFromTipTapNode(t,o.propSchema,{...e,toExternalHTML:e.toExternalHTML,render(r,s,i){const a=e.render(r,s,i);return d.addInlineContentAttributes(a,o.type,r.props,o.propSchema)}})}function re(o,e,t,n="before"){const r=typeof t=="string"?t:t.id,s=u.getPmSchema(o),i=e.map(p=>u.blockToNode(p,s)),a=d.getNodeById(r,o.doc);if(!a)throw new Error(`Block with ID ${r} not found`);let c=a.posBeforeNode;return n==="after"&&(c+=a.node.nodeSize),o.step(new F.ReplaceStep(c,c,new E.Slice(E.Fragment.from(i),0,0))),i.map(p=>u.nodeToBlock(p,s))}function O(o){if(!o||o.type.name!=="column")throw new Error("Invalid columnPos: does not point to column node.");const e=o.firstChild;if(!e)throw new Error("Invalid column: does not have child node.");const t=e.firstChild;if(!t)throw new Error("Invalid blockContainer: does not have child node.");return o.childCount===1&&e.childCount===1&&t.type.name==="paragraph"&&t.content.content.length===0}function se(o,e){const t=o.doc.resolve(e),n=t.nodeAfter;if(!n||n.type.name!=="columnList")throw new Error("Invalid columnListPos: does not point to columnList node.");for(let r=n.childCount-1;r>=0;r--){const s=o.doc.resolve(t.pos+1).posAtIndex(r),a=o.doc.resolve(s).nodeAfter;if(!a||a.type.name!=="column")throw new Error("Invalid columnPos: does not point to column node.");O(a)&&o.delete(s,s+a.nodeSize)}}function _(o,e){se(o,e);const n=o.doc.resolve(e).nodeAfter;if(!n||n.type.name!=="columnList")throw new Error("Invalid columnListPos: does not point to columnList node.");if(n.childCount>2)return;if(n.childCount<2)throw new Error("Invalid columnList: contains fewer than two children.");const r=e+1,i=o.doc.resolve(r).nodeAfter,a=e+n.nodeSize-1,l=o.doc.resolve(a).nodeBefore;if(!i||!l)throw new Error("Invalid columnList: does not contain children.");const p=O(i),f=O(l);if(p&&f){o.delete(e,e+n.nodeSize);return}if(p){o.step(new F.ReplaceAroundStep(e,e+n.nodeSize,a-l.nodeSize+1,a-1,E.Slice.empty,0,!1));return}if(f){o.step(new F.ReplaceAroundStep(e,e+n.nodeSize,r+1,r+i.nodeSize-1,E.Slice.empty,0,!1));return}}function V(o,e,t){const n=u.getPmSchema(o),r=t.map(f=>u.blockToNode(f,n)),s=new Set(e.map(f=>typeof f=="string"?f:f.id)),i=[],a=new Set,c=typeof e[0]=="string"?e[0]:e[0].id;let l=0;if(o.doc.descendants((f,h)=>{if(s.size===0)return!1;if(!f.type.isInGroup("bnBlock")||!s.has(f.attrs.id))return!0;if(i.push(u.nodeToBlock(f,n)),s.delete(f.attrs.id),t.length>0&&f.attrs.id===c){const C=o.doc.nodeSize;o.insert(h,r);const y=o.doc.nodeSize;l+=C-y}const k=o.doc.nodeSize,m=o.doc.resolve(h-l);m.node().type.name==="column"?a.add(m.before(-1)):m.node().type.name==="columnList"&&a.add(m.before()),m.node().type.name==="blockGroup"&&m.node(m.depth-1).type.name!=="doc"&&m.node().childCount===1?o.delete(m.before(),m.after()):o.delete(h-l,h-l+f.nodeSize);const g=o.doc.nodeSize;return l+=k-g,!1}),s.size>0){const f=[...s].join(`
2
+ `);throw Error("Blocks with the following IDs could not be found in the editor: "+f)}return a.forEach(f=>_(o,f)),{insertedBlocks:r.map(f=>u.nodeToBlock(f,n)),removedBlocks:i}}function Ge(o,e,t,n,r){let s;if(e)if(typeof e=="string")s=u.inlineContentToNodes([e],o.pmSchema,n);else if(Array.isArray(e))s=u.inlineContentToNodes(e,o.pmSchema,n);else if(e.type==="tableContent")s=u.tableContentToNodes(e,o.pmSchema);else throw new u.UnreachableCaseError(e.type);else throw new Error("blockContent is required");const a=((r==null?void 0:r.document)??document).createDocumentFragment();for(const c of s)if(c.type.name!=="text"&&o.schema.inlineContentSchema[c.type.name]){const l=o.schema.inlineContentSpecs[c.type.name].implementation;if(l){const p=u.nodeToCustomInlineContent(c,o.schema.inlineContentSchema,o.schema.styleSchema),f=l.render.call({renderType:"dom",props:void 0},p,()=>{},o);if(f){if(a.appendChild(f.dom),f.contentDOM){const h=t.serializeFragment(c.content,r);f.contentDOM.dataset.editable="",f.contentDOM.appendChild(h)}continue}}}else if(c.type.name==="text"){let l=document.createTextNode(c.textContent);for(const p of c.marks.toReversed())if(p.type.name in o.schema.styleSpecs){const f=o.schema.styleSpecs[p.type.name].implementation.render(p.attrs.stringValue,o);f.contentDOM.appendChild(l),l=f.dom}else{const f=p.type.spec.toDOM(p,!0),h=E.DOMSerializer.renderSpec(document,f);h.contentDOM.appendChild(l),l=h.dom}a.appendChild(l)}else{const l=t.serializeFragment(E.Fragment.from([c]),r);a.appendChild(l)}return a}function qe(o,e,t,n){var f,h,k,m,g;const r=o.pmSchema.nodes.blockContainer,s=e.props||{};for(const[C,y]of Object.entries(o.schema.blockSchema[e.type].propSchema))!(C in s)&&y.default!==void 0&&(s[C]=y.default);const i=e.children||[],c=o.blockImplementations[e.type].implementation.render.call({renderType:"dom",props:void 0},{...e,props:s,children:i},o);if(c.contentDOM&&e.content){const C=Ge(o,e.content,t,e.type,n);c.contentDOM.appendChild(C)}if(o.pmSchema.nodes[e.type].isInGroup("bnBlock")){if(e.children&&e.children.length>0){const C=ie(o,e.children,t,n);(f=c.contentDOM)==null||f.append(C)}return c.dom}const p=(k=(h=r.spec)==null?void 0:h.toDOM)==null?void 0:k.call(h,r.create({id:e.id,...s}));return(m=p.contentDOM)==null||m.appendChild(c.dom),e.children&&e.children.length>0&&((g=p.contentDOM)==null||g.appendChild(ce(o,e.children,t,n))),p.dom}function ie(o,e,t,n){const s=((n==null?void 0:n.document)??document).createDocumentFragment();for(const i of e){const a=qe(o,i,t,n);s.appendChild(a)}return s}const ce=(o,e,t,n)=>{var a;const r=o.pmSchema.nodes.blockGroup,s=r.spec.toDOM(r.create({})),i=ie(o,e,t,n);return(a=s.contentDOM)==null||a.appendChild(i),s.dom},We=o=>(o.querySelectorAll('[data-content-type="numberedListItem"]').forEach(t=>{var r,s;const n=(s=(r=t.closest(".bn-block-outer"))==null?void 0:r.previousElementSibling)==null?void 0:s.querySelector('[data-content-type="numberedListItem"]');if(!n)t.setAttribute("data-index",t.getAttribute("data-start")||"1");else{const i=n.getAttribute("data-index");t.setAttribute("data-index",(parseInt(i||"0")+1).toString())}}),o),je=o=>(o.querySelectorAll('[data-content-type="checkListItem"] input').forEach(t=>{t.disabled=!0}),o),Ke=o=>(o.querySelectorAll('.bn-toggle-wrapper[data-show-children="false"]').forEach(t=>{t.setAttribute("data-show-children","true")}),o),Ye=o=>(o.querySelectorAll('[data-content-type="table"] table').forEach(t=>{t.setAttribute("style",`--default-cell-min-width: ${d.EMPTY_CELL_WIDTH}px;`),t.setAttribute("data-show-children","true")}),o),Je=o=>(o.querySelectorAll('[data-content-type="table"] table').forEach(t=>{var s;const n=document.createElement("div");n.className="tableWrapper";const r=document.createElement("div");r.className="tableWrapper-inner",n.appendChild(r),(s=t.parentElement)==null||s.appendChild(n),n.appendChild(t)}),o),Qe=o=>(o.querySelectorAll(".bn-inline-content:empty").forEach(t=>{const n=document.createElement("span");n.className="ProseMirror-trailingBreak",n.setAttribute("style","display: inline-block;"),t.appendChild(n)}),o),le=(o,e)=>{const t=E.DOMSerializer.fromSchema(o),n=[We,je,Ke,Ye,Je,Qe];return{serializeBlocks:(r,s)=>{let i=ce(e,r,t,s);for(const a of n)i=a(i);return i.outerHTML}}};function Xe(o){return o.transact(e=>{const t=u.getNearestBlockPos(e.doc,e.selection.anchor);if(e.selection instanceof D.CellSelection)return{type:"cell",anchorBlockId:t.node.attrs.id,anchorCellOffset:e.selection.$anchorCell.pos-t.posBeforeNode,headCellOffset:e.selection.$headCell.pos-t.posBeforeNode};if(e.selection instanceof T.NodeSelection)return{type:"node",anchorBlockId:t.node.attrs.id};{const n=u.getNearestBlockPos(e.doc,e.selection.head);return{type:"text",anchorBlockId:t.node.attrs.id,headBlockId:n.node.attrs.id,anchorOffset:e.selection.anchor-t.posBeforeNode,headOffset:e.selection.head-n.posBeforeNode}}})}function Ze(o,e){var r,s;const t=(r=d.getNodeById(e.anchorBlockId,o.doc))==null?void 0:r.posBeforeNode;if(t===void 0)throw new Error(`Could not find block with ID ${e.anchorBlockId} to update selection`);let n;if(e.type==="cell")n=D.CellSelection.create(o.doc,t+e.anchorCellOffset,t+e.headCellOffset);else if(e.type==="node")n=T.NodeSelection.create(o.doc,t+1);else{const i=(s=d.getNodeById(e.headBlockId,o.doc))==null?void 0:s.posBeforeNode;if(i===void 0)throw new Error(`Could not find block with ID ${e.headBlockId} to update selection`);n=T.TextSelection.create(o.doc,t+e.anchorOffset,i+e.headOffset)}o.setSelection(n)}function U(o){return o.map(e=>e.type==="columnList"?e.children.map(t=>U(t.children)).flat():{...e,children:U(e.children)}).flat()}function ae(o,e,t){o.transact(n=>{var i;const r=((i=o.getSelection())==null?void 0:i.blocks)||[o.getTextCursorPosition().block],s=Xe(o);o.removeBlocks(r),o.insertBlocks(U(r),e,t),Ze(n,s)})}function de(o){return!o||o.type!=="columnList"}function ue(o,e,t){let n,r;if(e?e.children.length>0?(n=e.children[e.children.length-1],r="after"):(n=e,r="before"):t&&(n=t,r="before"),!n||!r)return;const s=o.getParentBlock(n);return de(s)?{referenceBlock:n,placement:r}:ue(o,r==="after"?n:o.getPrevBlock(n),s)}function pe(o,e,t){let n,r;if(e?e.children.length>0?(n=e.children[0],r="before"):(n=e,r="after"):t&&(n=t,r="after"),!n||!r)return;const s=o.getParentBlock(n);return de(s)?{referenceBlock:n,placement:r}:pe(o,r==="before"?n:o.getNextBlock(n),s)}function et(o){o.transact(()=>{const e=o.getSelection(),t=(e==null?void 0:e.blocks[0])||o.getTextCursorPosition().block,n=ue(o,o.getPrevBlock(t),o.getParentBlock(t));n&&ae(o,n.referenceBlock,n.placement)})}function tt(o){o.transact(()=>{const e=o.getSelection(),t=(e==null?void 0:e.blocks[(e==null?void 0:e.blocks.length)-1])||o.getTextCursorPosition().block,n=pe(o,o.getNextBlock(t),o.getParentBlock(t));n&&ae(o,n.referenceBlock,n.placement)})}function ot(o,e,t){const{$from:n,$to:r}=o.selection,s=n.blockRange(r,m=>m.childCount>0&&(m.type.name==="blockGroup"||m.type.name==="column"));if(!s)return!1;const i=s.startIndex;if(i===0)return!1;const c=s.parent.child(i-1);if(c.type!==e)return!1;const l=c.lastChild&&c.lastChild.type===t,p=E.Fragment.from(l?e.create():null),f=new E.Slice(E.Fragment.from(e.create(null,E.Fragment.from(t.create(null,p)))),l?3:1,0),h=s.start,k=s.end;return o.step(new F.ReplaceAroundStep(h-(l?3:1),k,h,k,f,1,!0)).scrollIntoView(),!0}function fe(o){return o.transact(e=>ot(e,o.pmSchema.nodes.blockContainer,o.pmSchema.nodes.blockGroup))}function nt(o){o._tiptapEditor.commands.liftListItem("blockContainer")}function rt(o){return o.transact(e=>{const{bnBlock:t}=u.getBlockInfoFromTransaction(e);return e.doc.resolve(t.beforePos).nodeBefore!==null})}function st(o){return o.transact(e=>{const{bnBlock:t}=u.getBlockInfoFromTransaction(e);return e.doc.resolve(t.beforePos).depth>1})}function he(o,e){const t=typeof e=="string"?e:e.id,n=u.getPmSchema(o),r=d.getNodeById(t,o);if(r)return u.nodeToBlock(r.node,n)}function me(o,e){const t=typeof e=="string"?e:e.id,n=d.getNodeById(t,o),r=u.getPmSchema(o);if(!n)return;const i=o.resolve(n.posBeforeNode).nodeBefore;if(i)return u.nodeToBlock(i,r)}function ke(o,e){const t=typeof e=="string"?e:e.id,n=d.getNodeById(t,o),r=u.getPmSchema(o);if(!n)return;const i=o.resolve(n.posBeforeNode+n.node.nodeSize).nodeAfter;if(i)return u.nodeToBlock(i,r)}function ge(o,e){const t=typeof e=="string"?e:e.id,n=u.getPmSchema(o),r=d.getNodeById(t,o);if(!r)return;const s=o.resolve(r.posBeforeNode),i=s.node(),a=s.node(-1),c=a.type.name!=="doc"?i.type.name==="blockGroup"?a:i:void 0;if(c)return u.nodeToBlock(c,n)}class it{constructor(e){this.editor=e}get document(){return this.editor.transact(e=>u.docToBlocks(e.doc,this.editor.pmSchema))}getBlock(e){return this.editor.transact(t=>he(t.doc,e))}getPrevBlock(e){return this.editor.transact(t=>me(t.doc,e))}getNextBlock(e){return this.editor.transact(t=>ke(t.doc,e))}getParentBlock(e){return this.editor.transact(t=>ge(t.doc,e))}forEachBlock(e,t=!1){const n=this.document.slice();t&&n.reverse();function r(s){for(const i of s){if(e(i)===!1)return!1;const a=t?i.children.slice().reverse():i.children;if(!r(a))return!1}return!0}r(n)}insertBlocks(e,t,n="before"){return this.editor.transact(r=>re(r,e,t,n))}updateBlock(e,t){return this.editor.transact(n=>d.updateBlock(n,e,t))}removeBlocks(e){return this.editor.transact(t=>V(t,e,[]).removedBlocks)}replaceBlocks(e,t){return this.editor.transact(n=>V(n,e,t))}canNestBlock(){return rt(this.editor)}nestBlock(){fe(this.editor)}canUnnestBlock(){return st(this.editor)}unnestBlock(){nt(this.editor)}moveBlocksUp(){return et(this.editor)}moveBlocksDown(){return tt(this.editor)}}class ct extends z.EventEmitter{constructor(e){super(),this.editor=e,e.on("create",()=>{e._tiptapEditor.on("update",({transaction:t,appendedTransactions:n})=>{this.emit("onChange",{editor:e,transaction:t,appendedTransactions:n})}),e._tiptapEditor.on("selectionUpdate",({transaction:t})=>{this.emit("onSelectionChange",{editor:e,transaction:t})}),e._tiptapEditor.on("mount",()=>{this.emit("onMount",{editor:e})}),e._tiptapEditor.on("unmount",()=>{this.emit("onUnmount",{editor:e})})})}onChange(e,t=!0){const n=({transaction:r,appendedTransactions:s})=>{!t&&J(r)||e(this.editor,{getChanges(){return B.getBlocksChangedByTransaction(r,s)}})};return this.on("onChange",n),()=>{this.off("onChange",n)}}onSelectionChange(e,t=!1){const n=r=>{!t&&J(r.transaction)||e(this.editor)};return this.on("onSelectionChange",n),()=>{this.off("onSelectionChange",n)}}onMount(e){return this.on("onMount",e),()=>{this.off("onMount",e)}}onUnmount(e){return this.on("onUnmount",e),()=>{this.off("onUnmount",e)}}}function J(o){return!!o.getMeta("y-sync$")}function lt(o){return Array.prototype.indexOf.call(o.parentElement.childNodes,o)}function at(o){return o.nodeType===3&&!/\S/.test(o.nodeValue||"")}function dt(o){o.querySelectorAll("li > ul, li > ol").forEach(e=>{const t=lt(e),n=e.parentElement,r=Array.from(n.childNodes).slice(t+1);e.remove(),r.forEach(s=>{s.remove()}),n.insertAdjacentElement("afterend",e),r.reverse().forEach(s=>{if(at(s))return;const i=document.createElement("li");i.append(s),e.insertAdjacentElement("afterend",i)}),n.childNodes.length===0&&n.remove()})}function ut(o){o.querySelectorAll("li + ul, li + ol").forEach(e=>{var s,i;const t=e.previousElementSibling,n=document.createElement("div");t.insertAdjacentElement("afterend",n),n.append(t);const r=document.createElement("div");for(r.setAttribute("data-node-type","blockGroup"),n.append(r);((s=n.nextElementSibling)==null?void 0:s.nodeName)==="UL"||((i=n.nextElementSibling)==null?void 0:i.nodeName)==="OL";)r.append(n.nextElementSibling)})}let Q=null;function pt(){return Q||(Q=document.implementation.createHTMLDocument("title"))}function ft(o){if(typeof o=="string"){const e=pt().createElement("div");e.innerHTML=o,o=e}return dt(o),ut(o),o}function G(o,e){const t=ft(o),r=E.DOMParser.fromSchema(e).parse(t,{topNode:e.nodes.blockGroup.create()}),s=[];for(let i=0;i<r.childCount;i++)s.push(u.nodeToBlock(r.child(i),e));return s}function ht(o,e){const t=e.value?e.value:"",n={};e.lang&&(n["data-language"]=e.lang);let r={type:"element",tagName:"code",properties:n,children:[{type:"text",value:t}]};return e.meta&&(r.data={meta:e.meta}),o.patch(e,r),r=o.applyData(e,r),r={type:"element",tagName:"pre",properties:{},children:[r]},o.patch(e,r),r}function mt(o,e){var s;const t=String((e==null?void 0:e.url)||""),n=e!=null&&e.title?String(e.title):void 0;let r={type:"element",tagName:"video",properties:{src:t,"data-name":n,"data-url":t,controls:!0},children:[]};return(s=o.patch)==null||s.call(o,e,r),r=o.applyData?o.applyData(e,r):r,r}function q(o){return Oe.unified().use(Re.default).use($e.default).use(Ve.default,{handlers:{...R.defaultHandlers,image:(t,n)=>{const r=String((n==null?void 0:n.url)||"");return d.isVideoUrl(r)?mt(t,n):R.defaultHandlers.image(t,n)},code:ht,blockquote:(t,n)=>{const r={type:"element",tagName:"blockquote",properties:{},children:t.wrap(t.all(n),!1)};return t.patch(n,r),t.applyData(n,r)}}}).use(Ue.default).processSync(o).value}function be(o,e){const t=q(o);return G(t,e)}class kt{constructor(e){this.editor=e}blocksToHTMLLossy(e=this.editor.document){return B.createExternalHTMLExporter(this.editor.pmSchema,this.editor).exportBlocks(e,{})}blocksToFullHTML(e=this.editor.document){return le(this.editor.pmSchema,this.editor).serializeBlocks(e,{})}tryParseHTMLToBlocks(e){return G(e,this.editor.pmSchema)}blocksToMarkdownLossy(e=this.editor.document){return B.blocksToMarkdown(e,this.editor.pmSchema,this.editor,{})}tryParseMarkdownToBlocks(e){return be(e,this.editor.pmSchema)}pasteHTML(e,t=!1){var r;let n=e;if(!t){const s=this.tryParseHTMLToBlocks(e);n=this.blocksToFullHTML(s)}n&&((r=this.editor.prosemirrorView)==null||r.pasteHTML(n))}pasteText(e){var t;return(t=this.editor.prosemirrorView)==null?void 0:t.pasteText(e)}pasteMarkdown(e){const t=q(e);return this.pasteHTML(t)}}const W=["vscode-editor-data","blocknote/html","text/markdown","text/html","text/plain","Files"];function gt(o,e){if(!o.startsWith(".")||!e.startsWith("."))throw new Error("The strings provided are not valid file extensions.");return o===e}function bt(o,e){const t=o.split("/"),n=e.split("/");if(t.length!==2)throw new Error(`The string ${o} is not a valid MIME type.`);if(n.length!==2)throw new Error(`The string ${e} is not a valid MIME type.`);return t[1]==="*"||n[1]==="*"?t[0]===n[0]:(t[0]==="*"||n[0]==="*"||t[0]===n[0])&&t[1]===n[1]}function X(o,e,t,n="after"){let r;return Array.isArray(e.content)&&e.content.length===0?r=o.updateBlock(e,t).id:r=o.insertBlocks([t],e,n)[0].id,r}async function Be(o,e){var s;if(!e.uploadFile){console.warn("Attempted ot insert file, but uploadFile is not set in the BlockNote editor options");return}const t="dataTransfer"in o?o.dataTransfer:o.clipboardData;if(t===null)return;let n=null;for(const i of W)if(t.types.includes(i)){n=i;break}if(n!=="Files")return;const r=t.items;if(r){o.preventDefault();for(let i=0;i<r.length;i++){let a="file";for(const l of Object.values(e.schema.blockSpecs))for(const p of((s=l.implementation.meta)==null?void 0:s.fileBlockAccept)||[]){const f=p.startsWith("."),h=r[i].getAsFile();if(h&&(!f&&h.type&&bt(r[i].type,p)||f&&gt("."+h.name.split(".").pop(),p))){a=l.config.type;break}}const c=r[i].getAsFile();if(c){const l={type:a,props:{name:c.name}};let p;if(o.type==="paste"){const k=e.getTextCursorPosition().block;p=X(e,k,l)}else if(o.type==="drop"){const k={left:o.clientX,top:o.clientY},m=e.prosemirrorView.posAtCoords(k);if(!m)return;p=e.transact(g=>{var x;const C=u.getNearestBlockPos(g.doc,m.pos),y=(x=e.domElement)==null?void 0:x.querySelector(`[data-id="${C.node.attrs.id}"]`),P=y==null?void 0:y.getBoundingClientRect();return X(e,e.getBlock(C.node.attrs.id),l,P&&(P.top+P.bottom)/2>k.top?"before":"after")})}else return;const f=await e.uploadFile(c,p),h=typeof f=="string"?{props:{url:f}}:{...f};e.updateBlock(p,h)}}}}const Bt=o=>S.Extension.create({name:"dropFile",addProseMirrorPlugins(){return[new T.Plugin({props:{handleDOMEvents:{drop(e,t){if(!o.isEditable)return;let n=null;for(const r of W)if(t.dataTransfer.types.includes(r)){n=r;break}return n===null?!0:n==="Files"?(Be(t,o),!0):!1}}}})]}}),St=/(^|\n) {0,3}#{1,6} {1,8}[^\n]{1,64}\r?\n\r?\n\s{0,32}\S/,Ct=/(_|__|\*|\*\*|~~|==|\+\+)(?!\s)(?:[^\s](?:.{0,62}[^\s])?|\S)(?=\1)/,yt=/\[[^\]]{1,128}\]\(https?:\/\/\S{1,999}\)/,Tt=/(?:\s|^)`(?!\s)(?:[^\s`](?:[^`]{0,46}[^\s`])?|[^\s`])`([^\w]|$)/,xt=/(?:^|\n)\s{0,5}-\s{1}[^\n]+\n\s{0,15}-\s/,Et=/(?:^|\n)\s{0,5}\d+\.\s{1}[^\n]+\n\s{0,15}\d+\.\s/,Pt=/\n{2} {0,3}-{2,48}\n{2}/,It=/(?:\n|^)(```|~~~|\$\$)(?!`|~)[^\s]{0,64} {0,64}[^\n]{0,64}\n[\s\S]{0,9999}?\s*\1 {0,64}(?:\n+|$)/,Mt=/(?:\n|^)(?!\s)\w[^\n]{0,64}\r?\n(-|=)\1{0,64}\n\n\s{0,64}(\w|$)/,wt=/(?:^|(\r?\n\r?\n))( {0,3}>[^\n]{1,333}\n){1,999}($|(\r?\n))/,vt=/^\s*\|(.+\|)+\s*$/m,At=/^\s*\|(\s*[-:]+[-:]\s*\|)+\s*$/m,Nt=/^\s*\|(.+\|)+\s*$/m,Lt=o=>St.test(o)||Ct.test(o)||yt.test(o)||Tt.test(o)||xt.test(o)||Et.test(o)||Pt.test(o)||It.test(o)||Mt.test(o)||wt.test(o)||vt.test(o)||At.test(o)||Nt.test(o);async function _t(o,e){const{schema:t}=e.state;if(!o.clipboardData)return!1;const n=o.clipboardData.getData("text/plain");if(!n)return!1;if(!t.nodes.codeBlock)return e.pasteText(n),!0;const r=o.clipboardData.getData("vscode-editor-data"),s=r?JSON.parse(r):void 0,i=s==null?void 0:s.mode;return i?(e.pasteHTML(`<pre><code class="language-${i}">${n.replace(/\r\n?/g,`
3
+ `)}</code></pre>`),!0):!1}function Dt({event:o,editor:e,prioritizeMarkdownOverHTML:t,plainTextAsMarkdown:n}){var a;if(e.transact(c=>c.selection.$from.parent.type.spec.code&&c.selection.$to.parent.type.spec.code)){const c=(a=o.clipboardData)==null?void 0:a.getData("text/plain");if(c)return e.pasteText(c),!0}let s;for(const c of W)if(o.clipboardData.types.includes(c)){s=c;break}if(!s)return!0;if(s==="vscode-editor-data")return _t(o,e.prosemirrorView),!0;if(s==="Files")return Be(o,e),!0;const i=o.clipboardData.getData(s);if(s==="blocknote/html")return e.pasteHTML(i,!0),!0;if(s==="text/markdown")return e.pasteMarkdown(i),!0;if(t){const c=o.clipboardData.getData("text/plain");if(Lt(c))return e.pasteMarkdown(c),!0}return s==="text/html"?(e.pasteHTML(i),!0):n?(e.pasteMarkdown(i),!0):(e.pasteText(i),!0)}const Ft=(o,e)=>S.Extension.create({name:"pasteFromClipboard",addProseMirrorPlugins(){return[new T.Plugin({props:{handleDOMEvents:{paste(t,n){if(n.preventDefault(),!!o.isEditable)return e({event:n,editor:o,defaultPasteHandler:({prioritizeMarkdownOverHTML:r=!0,plainTextAsMarkdown:s=!0}={})=>Dt({event:n,editor:o,prioritizeMarkdownOverHTML:r,plainTextAsMarkdown:s})})}}}})]}});function Ot(o,e,t){var a;let n=!1;const r=o.state.selection instanceof D.CellSelection;if(!r){const c=o.state.doc.slice(o.state.selection.from,o.state.selection.to,!1).content,l=[];for(let p=0;p<c.childCount;p++)l.push(c.child(p));n=l.find(p=>p.type.isInGroup("bnBlock")||p.type.name==="blockGroup"||p.type.spec.group==="blockContent")===void 0,n&&(e=c)}let s;const i=B.createExternalHTMLExporter(o.state.schema,t);if(r){((a=e.firstChild)==null?void 0:a.type.name)==="table"&&(e=e.firstChild.content);const c=u.contentNodeToTableContent(e,t.schema.inlineContentSchema,t.schema.styleSchema);s=`<table>${i.exportInlineContent(c,{})}</table>`}else if(n){const c=u.contentNodeToInlineContent(e,t.schema.inlineContentSchema,t.schema.styleSchema);s=i.exportInlineContent(c,{})}else{const c=B.fragmentToBlocks(e);s=i.exportBlocks(c,{})}return s}function j(o,e){"node"in o.state.selection&&o.state.selection.node.type.spec.group==="blockContent"&&e.transact(i=>i.setSelection(new T.NodeSelection(i.doc.resolve(o.state.selection.from-1))));const t=o.serializeForClipboard(o.state.selection.content()).dom.innerHTML,n=o.state.selection.content().content,r=Ot(o,n,e),s=B.cleanHTMLToMarkdown(r);return{clipboardHTML:t,externalHTML:r,markdown:s}}const Z=()=>{const o=window.getSelection();if(!o||o.isCollapsed)return!0;let e=o.focusNode;for(;e;){if(e instanceof HTMLElement&&e.getAttribute("contenteditable")==="false")return!0;e=e.parentElement}return!1},ee=(o,e,t)=>{t.preventDefault(),t.clipboardData.clearData();const{clipboardHTML:n,externalHTML:r,markdown:s}=j(e,o);t.clipboardData.setData("blocknote/html",n),t.clipboardData.setData("text/html",r),t.clipboardData.setData("text/plain",s)},Ht=o=>S.Extension.create({name:"copyToClipboard",addProseMirrorPlugins(){return[new T.Plugin({props:{handleDOMEvents:{copy(e,t){return Z()||ee(o,e,t),!0},cut(e,t){return Z()||(ee(o,e,t),e.editable&&e.dispatch(e.state.tr.deleteSelection())),!0},dragstart(e,t){if(!("node"in e.state.selection)||e.state.selection.node.type.spec.group!=="blockContent")return;o.transact(i=>i.setSelection(new T.NodeSelection(i.doc.resolve(e.state.selection.from-1)))),t.preventDefault(),t.dataTransfer.clearData();const{clipboardHTML:n,externalHTML:r,markdown:s}=j(e,o);return t.dataTransfer.setData("blocknote/html",n),t.dataTransfer.setData("text/html",r),t.dataTransfer.setData("text/plain",s),!0}}}})]}}),$t=S.Extension.create({name:"blockBackgroundColor",addGlobalAttributes(){return[{types:["tableCell","tableHeader"],attributes:{backgroundColor:d.getBackgroundColorAttribute()}}]}}),Rt=S.Node.create({name:"hardBreak",inline:!0,group:"inline",selectable:!1,linebreakReplacement:!0,priority:10,parseHTML(){return[{tag:"br"}]},renderHTML({HTMLAttributes:o}){return["br",S.mergeAttributes(this.options.HTMLAttributes,o)]},renderText(){return`
4
+ `}}),Se=(o,e)=>{var a;const t=o.resolve(e),n=t.depth-1,r=t.before(n),s=o.resolve(r).nodeAfter;return s?(a=s.type.spec.group)!=null&&a.includes("bnBlock")?u.getBlockInfoFromResolvedPos(o.resolve(r)):Se(o,r):void 0},L=(o,e)=>{const t=o.resolve(e),n=t.index();if(n===0)return;const r=t.posAtIndex(n-1);return u.getBlockInfoFromResolvedPos(o.resolve(r))},N=(o,e)=>{const t=o.resolve(e),n=t.index();if(n===t.node().childCount-1)return;const r=t.posAtIndex(n+1);return u.getBlockInfoFromResolvedPos(o.resolve(r))},Ce=(o,e)=>{for(;e.childContainer;){const t=e.childContainer.node,n=o.resolve(e.childContainer.beforePos+1).posAtIndex(t.childCount-1);e=u.getBlockInfoFromResolvedPos(o.resolve(n))}return e},Vt=(o,e)=>o.isBlockContainer&&o.blockContent.node.type.spec.content==="inline*"&&o.blockContent.node.childCount>0&&e.isBlockContainer&&e.blockContent.node.type.spec.content==="inline*",Ut=(o,e,t,n)=>{if(!n.isBlockContainer)throw new Error(`Attempted to merge block at position ${n.bnBlock.beforePos} into previous block at position ${t.bnBlock.beforePos}, but next block is not a block container`);if(n.childContainer){const r=o.doc.resolve(n.childContainer.beforePos+1),s=o.doc.resolve(n.childContainer.afterPos-1),i=r.blockRange(s);if(e){const a=o.doc.resolve(n.bnBlock.beforePos);o.tr.lift(i,a.depth)}}if(e){if(!t.isBlockContainer)throw new Error(`Attempted to merge block at position ${n.bnBlock.beforePos} into previous block at position ${t.bnBlock.beforePos}, but previous block is not a block container`);e(o.tr.delete(t.blockContent.afterPos-1,n.blockContent.beforePos+1))}return!0},te=o=>({state:e,dispatch:t})=>{const n=e.doc.resolve(o),r=u.getBlockInfoFromResolvedPos(n),s=L(e.doc,r.bnBlock.beforePos);if(!s)return!1;const i=Ce(e.doc,s);return Vt(i,r)?Ut(e,t,i,r):!1},zt=S.Extension.create({priority:50,addKeyboardShortcuts(){const o=()=>this.editor.commands.first(({chain:n,commands:r})=>[()=>r.deleteSelection(),()=>r.undoInputRule(),()=>r.command(({state:s})=>{const i=u.getBlockInfoFromSelection(s);if(!i.isBlockContainer)return!1;const a=s.selection.from===i.blockContent.beforePos+1,c=i.blockContent.node.type.name==="paragraph";return a&&!c?r.command(d.updateBlockCommand(i.bnBlock.beforePos,{type:"paragraph",props:{}})):!1}),()=>r.command(({state:s})=>{const i=u.getBlockInfoFromSelection(s);if(!i.isBlockContainer)return!1;const{blockContent:a}=i;return s.selection.from===a.beforePos+1?r.liftListItem("blockContainer"):!1}),()=>r.command(({state:s})=>{const i=u.getBlockInfoFromSelection(s);if(!i.isBlockContainer)return!1;const{bnBlock:a,blockContent:c}=i,l=L(s.doc,i.bnBlock.beforePos);if(!l||!l.isBlockContainer||l.blockContent.node.type.spec.content!=="inline*")return!1;const p=s.selection.from===c.beforePos+1,f=s.selection.empty,h=a.beforePos;return p&&f?n().command(te(h)).scrollIntoView().run():!1}),()=>r.command(({state:s,tr:i,dispatch:a})=>{const c=u.getBlockInfoFromSelection(s);if(!c.isBlockContainer)return!1;const l=L(s.doc,c.bnBlock.beforePos);if(!l||l.isBlockContainer)return!1;if(a){const p=l.bnBlock.afterPos-1,f=i.doc.resolve(p-1);return i.delete(c.bnBlock.beforePos,c.bnBlock.afterPos),i.insert(f.pos,c.bnBlock.node),i.setSelection(T.TextSelection.near(i.doc.resolve(f.pos+1))),!0}return!1}),()=>r.command(({state:s,tr:i,dispatch:a})=>{const c=u.getBlockInfoFromSelection(s);if(!c.isBlockContainer||!(i.selection.from===c.blockContent.beforePos+1))return!1;const p=i.doc.resolve(c.bnBlock.beforePos);if(p.nodeBefore||p.node().type.name!=="column")return!1;const k=i.doc.resolve(c.bnBlock.beforePos),m=i.doc.resolve(k.before()),g=m.before();return a&&(i.delete(c.bnBlock.beforePos,c.bnBlock.afterPos),_(i,g),m.pos===g+1?(i.insert(g,c.bnBlock.node),i.setSelection(T.TextSelection.near(i.doc.resolve(g)))):(i.insert(m.pos-1,c.bnBlock.node),i.setSelection(T.TextSelection.near(i.doc.resolve(m.pos))))),!0}),()=>r.command(({state:s})=>{var c;const i=u.getBlockInfoFromSelection(s);if(!i.isBlockContainer)return!1;if(i.blockContent.node.childCount===0&&i.blockContent.node.type.spec.content==="inline*"){const l=L(s.doc,i.bnBlock.beforePos);if(!l||!l.isBlockContainer)return!1;let p=n();if(i.childContainer&&p.insertContentAt(i.bnBlock.afterPos,(c=i.childContainer)==null?void 0:c.node.content),l.blockContent.node.type.spec.content==="tableRow+"){const g=i.bnBlock.beforePos-1-1-1-1-1;p=p.setTextSelection(g)}else if(l.blockContent.node.type.spec.content==="")p=p.setNodeSelection(l.blockContent.beforePos);else{const f=l.blockContent.afterPos-1;p=p.setTextSelection(f)}return p.deleteRange({from:i.bnBlock.beforePos,to:i.bnBlock.afterPos}).scrollIntoView().run()}return!1}),()=>r.command(({state:s})=>{const i=u.getBlockInfoFromSelection(s);if(!i.isBlockContainer)return!1;const a=s.selection.from===i.blockContent.beforePos+1,c=s.selection.empty,l=L(s.doc,i.bnBlock.beforePos);if(l&&a&&c){const p=Ce(s.doc,l);if(!p.isBlockContainer)return!1;if(p.blockContent.node.type.spec.content===""||p.blockContent.node.type.spec.content==="inline*"&&p.blockContent.node.childCount===0)return n().cut({from:i.bnBlock.beforePos,to:i.bnBlock.afterPos},p.bnBlock.afterPos).deleteRange({from:p.bnBlock.beforePos,to:p.bnBlock.afterPos}).run()}return!1})]),e=()=>this.editor.commands.first(({chain:n,commands:r})=>[()=>r.deleteSelection(),()=>r.command(({state:s})=>{var h;const i=u.getBlockInfoFromSelection(s);if(!i.isBlockContainer||!i.childContainer)return!1;const{blockContent:a,childContainer:c}=i,l=s.selection.from===a.afterPos-1,p=s.selection.empty,f=u.getBlockInfoFromResolvedPos(s.doc.resolve(c.beforePos+1));if(!f.isBlockContainer)return!1;if(l&&p){const k=f.blockContent.node,m=k.type.spec.content==="inline*",g=a.node.type.spec.content==="inline*";return n().insertContentAt(f.bnBlock.afterPos,((h=f.childContainer)==null?void 0:h.node.content)||E.Fragment.empty).deleteRange(c.node.childCount===1?{from:c.beforePos,to:c.afterPos}:{from:f.bnBlock.beforePos,to:f.bnBlock.afterPos}).insertContentAt(s.selection.from,m&&g?k.content:null).setTextSelection(s.selection.from).scrollIntoView().run()}return!1}),()=>r.command(({state:s})=>{const i=u.getBlockInfoFromSelection(s);if(!i.isBlockContainer)return!1;const{bnBlock:a,blockContent:c}=i,l=N(s.doc,i.bnBlock.beforePos);if(!l||!l.isBlockContainer)return!1;const p=s.selection.from===c.afterPos-1,f=s.selection.empty,h=a.afterPos;return p&&f?n().command(te(h)).scrollIntoView().run():!1}),()=>r.command(({state:s,tr:i,dispatch:a})=>{const c=u.getBlockInfoFromSelection(s);if(!c.isBlockContainer)return!1;const l=N(s.doc,c.bnBlock.beforePos);if(!l||l.isBlockContainer)return!1;if(a){const p=l.bnBlock.beforePos+1,f=i.doc.resolve(p+1);return i.delete(f.pos,f.pos+f.nodeAfter.nodeSize),_(i,l.bnBlock.beforePos),i.insert(c.bnBlock.afterPos,f.nodeAfter),i.setSelection(T.TextSelection.near(i.doc.resolve(f.pos))),!0}return!1}),()=>r.command(({state:s,tr:i,dispatch:a})=>{const c=u.getBlockInfoFromSelection(s);if(!c.isBlockContainer||!(i.selection.from===c.blockContent.afterPos-1))return!1;const p=i.doc.resolve(c.bnBlock.afterPos);if(p.nodeAfter||p.node().type.name!=="column")return!1;const k=i.doc.resolve(c.bnBlock.afterPos),m=i.doc.resolve(k.after()),g=m.after();if(a){const C=m.pos===g-1?g:m.pos+1,y=u.getBlockInfoFromResolvedPos(i.doc.resolve(C));i.delete(y.bnBlock.beforePos,y.bnBlock.afterPos),_(i,g-m.node().nodeSize),i.insert(k.pos,y.bnBlock.node),i.setSelection(T.TextSelection.near(i.doc.resolve(C)))}return!0}),()=>r.command(({state:s})=>{var p;const i=u.getBlockInfoFromSelection(s);if(!i.isBlockContainer)return!1;const{blockContent:a}=i,c=s.selection.from===a.afterPos-1,l=s.selection.empty;if(c&&l){const f=(C,y)=>{const P=N(C,y);if(P)return P;const x=Se(C,y);if(x)return f(C,x.bnBlock.beforePos)},h=f(s.doc,i.bnBlock.beforePos);if(!h||!h.isBlockContainer)return!1;const k=h.blockContent.node,m=k.type.spec.content==="inline*",g=a.node.type.spec.content==="inline*";return n().insertContentAt(h.bnBlock.afterPos,((p=h.childContainer)==null?void 0:p.node.content)||E.Fragment.empty).deleteRange({from:h.bnBlock.beforePos,to:h.bnBlock.afterPos}).insertContentAt(s.selection.from,m&&g?k.content:null).setTextSelection(s.selection.from).scrollIntoView().run()}return!1}),()=>r.command(({state:s})=>{const i=u.getBlockInfoFromSelection(s);if(!i.isBlockContainer)return!1;if(i.blockContent.node.childCount===0&&i.blockContent.node.type.spec.content==="inline*"){const c=N(s.doc,i.bnBlock.beforePos);if(!c||!c.isBlockContainer)return!1;let l=n();if(c.blockContent.node.type.spec.content==="tableRow+"){const m=i.bnBlock.afterPos+1+1+1+1+1;l=l.setTextSelection(m)}else c.blockContent.node.type.spec.content===""?l=l.setNodeSelection(c.blockContent.beforePos):l=l.setTextSelection(c.blockContent.beforePos+1);return l.deleteRange({from:i.bnBlock.beforePos,to:i.bnBlock.afterPos}).scrollIntoView().run()}return!1}),()=>r.command(({state:s})=>{const i=u.getBlockInfoFromSelection(s);if(!i.isBlockContainer)return!1;const a=s.selection.from===i.blockContent.afterPos-1,c=s.selection.empty,l=N(s.doc,i.bnBlock.beforePos);if(!l||!l.isBlockContainer)return!1;if(l&&a&&c&&(l.blockContent.node.type.spec.content===""||l.blockContent.node.type.spec.content==="inline*"&&l.blockContent.node.childCount===0)){const f=l.bnBlock.node.lastChild.content;return n().deleteRange({from:l.bnBlock.beforePos,to:l.bnBlock.afterPos}).insertContentAt(i.bnBlock.afterPos,l.bnBlock.node.childCount===2?f:null).run()}return!1})]),t=(n=!1)=>this.editor.commands.first(({commands:r,tr:s})=>[()=>r.command(({state:i})=>{const a=u.getBlockInfoFromSelection(i);if(!a.isBlockContainer)return!1;const{bnBlock:c,blockContent:l}=a,{depth:p}=i.doc.resolve(c.beforePos),f=i.selection.$anchor.parentOffset===0,h=i.selection.anchor===i.selection.head,k=l.node.childCount===0,m=p>1;return f&&h&&k&&m?r.liftListItem("blockContainer"):!1}),()=>r.command(({state:i})=>{var l;const a=u.getBlockInfoFromSelection(i),c=((l=this.options.editor.schema.blockSchema[a.blockNoteType].meta)==null?void 0:l.hardBreakShortcut)??"shift+enter";if(c==="none")return!1;if(c==="shift+enter"&&n||c==="enter"){const p=s.storedMarks||s.selection.$head.marks().filter(f=>this.editor.extensionManager.splittableMarks.includes(f.type.name));return s.insert(s.selection.head,s.doc.type.schema.nodes.hardBreak.create()).ensureMarks(p),!0}return!1}),()=>r.command(({state:i,dispatch:a,tr:c})=>{var g;const l=u.getBlockInfoFromSelection(i);if(!l.isBlockContainer)return!1;const{bnBlock:p,blockContent:f}=l,h=i.selection.$anchor.parentOffset===0,k=i.selection.anchor===i.selection.head,m=f.node.childCount===0;if(h&&k&&m){const C=p.afterPos,y=C+2;if(a){const P=i.schema.nodes.blockContainer.createAndFill(void 0,[i.schema.nodes.paragraph.createAndFill()||void 0,(g=l.childContainer)==null?void 0:g.node].filter(x=>x!==void 0));c.insert(C,P).setSelection(new T.TextSelection(c.doc.resolve(y))).scrollIntoView(),l.childContainer&&c.delete(l.childContainer.beforePos,l.childContainer.afterPos)}return!0}return!1}),()=>r.command(({state:i,chain:a})=>{const c=u.getBlockInfoFromSelection(i);if(!c.isBlockContainer)return!1;const{blockContent:l}=c,p=i.selection.$anchor.parentOffset===0;return l.node.childCount===0?!1:(a().deleteSelection().command(d.splitBlockCommand(i.selection.from,p,p)).run(),!0)})]);return{Backspace:o,Delete:e,Enter:()=>t(),"Shift-Enter":()=>t(!0),Tab:()=>{var n,r;return this.options.tabBehavior!=="prefer-indent"&&((n=this.options.editor.getExtension(B.FormattingToolbarExtension))!=null&&n.store.state||((r=this.options.editor.getExtension(d.FilePanelExtension))==null?void 0:r.store.state)!==void 0)?!1:fe(this.options.editor)},"Shift-Tab":()=>{var n,r;return this.options.tabBehavior!=="prefer-indent"&&((n=this.options.editor.getExtension(B.FormattingToolbarExtension))!=null&&n.store.state||((r=this.options.editor.getExtension(d.FilePanelExtension))==null?void 0:r.store.state)!==void 0)?!1:this.editor.commands.liftListItem("blockContainer")},"Shift-Mod-ArrowUp":()=>(this.options.editor.moveBlocksUp(),!0),"Shift-Mod-ArrowDown":()=>(this.options.editor.moveBlocksDown(),!0),"Mod-z":()=>this.options.editor.undo(),"Mod-y":()=>this.options.editor.redo(),"Shift-Mod-z":()=>this.options.editor.redo()}}}),Gt=S.Mark.create({name:"insertion",inclusive:!1,excludes:"deletion modification insertion",addAttributes(){return{id:{default:null,validate:"number"}}},extendMarkSchema(o){return o.name!=="insertion"?{}:{blocknoteIgnore:!0,inclusive:!1,toDOM(e,t){return["ins",{"data-id":String(e.attrs.id),"data-inline":String(t),...!t&&{style:"display: contents"}},0]},parseDOM:[{tag:"ins",getAttrs(e){return e.dataset.id?{id:parseInt(e.dataset.id,10)}:!1}}]}}}),qt=S.Mark.create({name:"deletion",inclusive:!1,excludes:"insertion modification deletion",addAttributes(){return{id:{default:null,validate:"number"}}},extendMarkSchema(o){return o.name!=="deletion"?{}:{blocknoteIgnore:!0,inclusive:!1,toDOM(e,t){return["del",{"data-id":String(e.attrs.id),"data-inline":String(t),...!t&&{style:"display: contents"}},0]},parseDOM:[{tag:"del",getAttrs(e){return e.dataset.id?{id:parseInt(e.dataset.id,10)}:!1}}]}}}),Wt=S.Mark.create({name:"modification",inclusive:!1,excludes:"deletion insertion",addAttributes(){return{id:{default:null,validate:"number"},type:{validate:"string"},attrName:{default:null,validate:"string|null"},previousValue:{default:null},newValue:{default:null}}},extendMarkSchema(o){return o.name!=="modification"?{}:{blocknoteIgnore:!0,inclusive:!1,toDOM(e,t){return[t?"span":"div",{"data-type":"modification","data-id":String(e.attrs.id),"data-mod-type":e.attrs.type,"data-mod-prev-val":JSON.stringify(e.attrs.previousValue),"data-mod-new-val":JSON.stringify(e.attrs.newValue)},0]},parseDOM:[{tag:"span[data-type='modification']",getAttrs(e){return e.dataset.id?{id:parseInt(e.dataset.id,10),type:e.dataset.modType,previousValue:e.dataset.modPrevVal,newValue:e.dataset.modNewVal}:!1}},{tag:"div[data-type='modification']",getAttrs(e){return e.dataset.id?{id:parseInt(e.dataset.id,10),type:e.dataset.modType,previousValue:e.dataset.modPrevVal}:!1}}]}}}),jt=S.Extension.create({name:"textAlignment",addGlobalAttributes(){return[{types:["tableCell","tableHeader"],attributes:{textAlignment:{default:"left",parseHTML:o=>o.getAttribute("data-text-alignment"),renderHTML:o=>o.textAlignment==="left"?{}:{"data-text-alignment":o.textAlignment}}}}]}}),Kt=S.Extension.create({name:"blockTextColor",addGlobalAttributes(){return[{types:["table","tableCell","tableHeader"],attributes:{textColor:d.getTextColorAttribute()}}]}}),Yt={blockColor:"data-block-color",blockStyle:"data-block-style",id:"data-id",depth:"data-depth",depthChange:"data-depth-change"},Jt=S.Node.create({name:"blockContainer",group:"blockGroupChild bnBlock",content:"blockContent blockGroup?",priority:50,defining:!0,marks:"insertion modification deletion",parseHTML(){return[{tag:"div[data-node-type="+this.name+"]",getAttrs:o=>{if(typeof o=="string")return!1;const e={};for(const[t,n]of Object.entries(Yt))o.getAttribute(n)&&(e[t]=o.getAttribute(n));return e}},{tag:'div[data-node-type="blockOuter"]',skip:!0}]},renderHTML({HTMLAttributes:o}){var r;const e=document.createElement("div");e.className="bn-block-outer",e.setAttribute("data-node-type","blockOuter");for(const[s,i]of Object.entries(o))s!=="class"&&e.setAttribute(s,i);const t={...((r=this.options.domAttributes)==null?void 0:r.block)||{},...o},n=document.createElement("div");n.className=d.mergeCSSClasses("bn-block",t.class),n.setAttribute("data-node-type",this.name);for(const[s,i]of Object.entries(t))s!=="class"&&n.setAttribute(s,i);return e.appendChild(n),{dom:e,contentDOM:n}}}),Qt=S.Node.create({name:"blockGroup",group:"childContainer",content:"blockGroupChild+",marks:"deletion insertion modification",parseHTML(){return[{tag:"div",getAttrs:o=>typeof o=="string"?!1:o.getAttribute("data-node-type")==="blockGroup"?null:!1}]},renderHTML({HTMLAttributes:o}){var n;const e={...((n=this.options.domAttributes)==null?void 0:n.blockGroup)||{},...o},t=document.createElement("div");t.className=d.mergeCSSClasses("bn-block-group",e.class),t.setAttribute("data-node-type","blockGroup");for(const[r,s]of Object.entries(e))r!=="class"&&t.setAttribute(r,s);return{dom:t,contentDOM:t}}}),Xt=S.Node.create({name:"doc",topNode:!0,content:"blockGroup",marks:"insertion modification deletion"}),Zt=H.createExtension(({options:o})=>({key:"collaboration",blockNoteExtensions:[B.ForkYDocExtension(o),B.YCursorExtension(o),B.YSyncExtension(o),B.YUndoExtension(),B.SchemaMigration(o)]}));let oe=!1;function eo(o,e){const t=[S.extensions.ClipboardTextSerializer,S.extensions.Commands,S.extensions.Editable,S.extensions.FocusEvents,S.extensions.Tabindex,ve.Gapcursor,u.UniqueID.configure({types:["blockContainer","columnList","column"],setIdAttribute:e.setIdAttribute}),Rt,Ne.Text,Gt,qt,Wt,Ae.Link.extend({inclusive:!1}).configure({defaultProtocol:B.DEFAULT_LINK_PROTOCOL,protocols:oe?[]:B.VALID_LINK_PROTOCOLS}),...Object.values(o.schema.styleSpecs).map(n=>n.implementation.mark.configure({editor:o})),Kt,$t,jt,S.Extension.create({name:"OverrideEscape",addKeyboardShortcuts:()=>({Escape:()=>{var n;return(n=o.getExtension(d.SuggestionMenu))!=null&&n.shown()?!1:(o.blur(),!0)}})}),Xt,Jt.configure({editor:o,domAttributes:e.domAttributes}),zt.configure({editor:o,tabBehavior:e.tabBehavior}),Qt.configure({domAttributes:e.domAttributes}),...Object.values(o.schema.inlineContentSpecs).filter(n=>n.config!=="link"&&n.config!=="text").map(n=>n.implementation.node.configure({editor:o})),...Object.values(o.schema.blockSpecs).flatMap(n=>[..."node"in n.implementation?[n.implementation.node.configure({editor:o,domAttributes:e.domAttributes})]:[]]),Ht(o),Ft(o,e.pasteHandler||(n=>n.defaultPasteHandler())),Bt(o)];return oe=!0,t}function to(o,e){const t=[B.BlockChangeExtension(),B.DropCursorExtension(e),d.FilePanelExtension(e),B.FormattingToolbarExtension(e),B.LinkToolbarExtension(e),B.NodeSelectionKeyboardExtension(),B.PlaceholderExtension(e),Le.ShowSelectionExtension(e),B.SideMenuExtension(e),d.SuggestionMenu(e),...e.trailingBlock!==!1?[B.TrailingNodeExtension()]:[]];return e.collaboration?t.push(Zt(e.collaboration)):t.push(B.HistoryExtension()),"table"in o.schema.blockSpecs&&t.push(B.TableHandlesExtension(e)),e.animations!==!1&&t.push(B.PreviousBlockTypeExtension()),t}class oo{constructor(e,t){b(this,"disabledExtensions",new Set);b(this,"extensions",[]);b(this,"abortMap",new Map);b(this,"extensionFactories",new Map);b(this,"extensionPlugins",new Map);this.editor=e,this.options=t,e.onMount(()=>{for(const n of this.extensions)if(n.mount){const r=new window.AbortController,s=n.mount({dom:e.prosemirrorView.dom,root:e.prosemirrorView.root,signal:r.signal});s&&r.signal.addEventListener("abort",()=>{s()}),this.abortMap.set(n,r)}}),e.onUnmount(()=>{for(const[n,r]of this.abortMap.entries())this.abortMap.delete(n),r.abort()}),this.disabledExtensions=new Set(t.disableExtensions||[]);for(const n of to(this.editor,this.options))this.addExtension(n);for(const n of this.options.extensions??[])this.addExtension(n);for(const n of Object.values(this.editor.schema.blockSpecs))for(const r of n.extensions??[])this.addExtension(r)}registerExtension(e){var s;const t=[].concat(e).filter(Boolean);if(!t.length){console.warn("No extensions found to register",e);return}const n=t.map(i=>this.addExtension(i)).filter(Boolean),r=new Set;for(const i of n)i!=null&&i.tiptapExtensions&&console.warn(`Extension ${i.key} has tiptap extensions, but these cannot be changed after initializing the editor. Please separate the extension into multiple extensions if you want to add them, or re-initialize the editor.`,i),(s=i==null?void 0:i.inputRules)!=null&&s.length&&console.warn(`Extension ${i.key} has input rules, but these cannot be changed after initializing the editor. Please separate the extension into multiple extensions if you want to add them, or re-initialize the editor.`,i),this.getProsemirrorPluginsFromExtension(i).plugins.forEach(a=>{r.add(a)});this.updatePlugins(i=>[...i,...r])}addExtension(e){let t;if(typeof e=="function"?t=e({editor:this.editor}):t=e,!(!t||this.disabledExtensions.has(t.key))){if(typeof e=="function"){const n=t[H.originalFactorySymbol];typeof n=="function"&&this.extensionFactories.set(n,t)}if(this.extensions.push(t),t.blockNoteExtensions)for(const n of t.blockNoteExtensions)this.addExtension(n);return t}}resolveExtensions(e){const t=[];if(typeof e=="function"){const n=this.extensionFactories.get(e);n&&t.push(n)}else if(Array.isArray(e))for(const n of e)t.push(...this.resolveExtensions(n));else if(typeof e=="object"&&"key"in e)t.push(e);else if(typeof e=="string"){const n=this.extensions.find(r=>r.key===e);n&&t.push(n)}return t}unregisterExtension(e){var s;const t=this.resolveExtensions(e);if(!t.length){console.warn("No extensions found to unregister",e);return}let n=!1;const r=new Set;for(const i of t){this.extensions=this.extensions.filter(c=>c!==i),this.extensionFactories.forEach((c,l)=>{c===i&&this.extensionFactories.delete(l)}),(s=this.abortMap.get(i))==null||s.abort(),this.abortMap.delete(i);const a=this.extensionPlugins.get(i);a==null||a.forEach(c=>{r.add(c)}),this.extensionPlugins.delete(i),i.tiptapExtensions&&!n&&(n=!0,console.warn(`Extension ${i.key} has tiptap extensions, but they will not be removed. Please separate the extension into multiple extensions if you want to remove them, or re-initialize the editor.`,e))}this.updatePlugins(i=>i.filter(a=>!r.has(a)))}updatePlugins(e){const t=this.editor.prosemirrorState,n=t.reconfigure({plugins:e(t.plugins.slice())});this.editor.prosemirrorView.updateState(n)}getTiptapExtensions(){var r;const e=eo(this.editor,this.options).filter(s=>!this.disabledExtensions.has(s.name)),t=I.sortByDependencies(this.extensions),n=new Map;for(const s of this.extensions){s.tiptapExtensions&&e.push(...s.tiptapExtensions);const i=t(s.key),{plugins:a,inputRules:c}=this.getProsemirrorPluginsFromExtension(s);a.length&&e.push(S.Extension.create({name:s.key,priority:i,addProseMirrorPlugins:()=>a})),c.length&&(n.has(i)||n.set(i,[]),n.get(i).push(...c))}e.push(S.Extension.create({name:"blocknote-input-rules",addProseMirrorPlugins(){const s=[];return Array.from(n.keys()).sort().reverse().forEach(i=>{s.push(...n.get(i))}),[Y.inputRules({rules:s})]}}));for(const s of((r=this.options._tiptapOptions)==null?void 0:r.extensions)??[])e.push(s);return e}getProsemirrorPluginsFromExtension(e){var r,s,i;const t=[...e.prosemirrorPlugins??[]],n=[];return!((r=e.prosemirrorPlugins)!=null&&r.length)&&!Object.keys(e.keyboardShortcuts||{}).length&&!((s=e.inputRules)!=null&&s.length)?{plugins:t,inputRules:n}:(this.extensionPlugins.set(e,t),(i=e.inputRules)!=null&&i.length&&n.push(...e.inputRules.map(a=>new Y.InputRule(a.find,(c,l,p,f)=>{const h=a.replace({match:l,range:{from:p,to:f},editor:this.editor});if(h){const k=this.editor.getTextCursorPosition();if(this.editor.schema.blockSchema[k.block.type].content!=="inline")return null;const m=u.getBlockInfoFromTransaction(c.tr),g=c.tr.deleteRange(p,f);return d.updateBlockTr(g,m.bnBlock.beforePos,h),g}return null}))),Object.keys(e.keyboardShortcuts||{}).length&&t.push(we.keymap(Object.fromEntries(Object.entries(e.keyboardShortcuts).map(([a,c])=>[a,()=>c({editor:this.editor})])))),{plugins:t,inputRules:n})}getExtensions(){return new Map(this.extensions.map(e=>[e.key,e]))}getExtension(e){if(typeof e=="string"){const t=this.extensions.find(n=>n.key===e);return t||void 0}else if(typeof e=="function"){const t=this.extensionFactories.get(e);return t||void 0}throw new Error(`Invalid extension type: ${typeof e}`)}hasExtension(e){return typeof e=="string"?this.extensions.some(t=>t.key===e):typeof e=="object"&&"key"in e?this.extensions.some(t=>t.key===e.key):typeof e=="function"?this.extensionFactories.has(e):!1}}function ye(o,e){let{$from:t,$to:n}=e;if(t.pos>t.start()&&t.pos<o.content.size){const r=o.textBetween(t.pos,t.pos+1);if(/^[\w\p{P}]$/u.test(r)){const i=o.textBetween(t.start(),t.pos).match(/[\w\p{P}]+$/u);i&&(t=o.resolve(t.pos-i[0].length))}}if(n.pos<n.end()&&n.pos>0){const r=o.textBetween(n.pos-1,n.pos);if(/^[\w\p{P}]$/u.test(r)){const i=o.textBetween(n.pos,n.end()).match(/^[\w\p{P}]+/u);i&&(n=o.resolve(n.pos+i[0].length))}}return{$from:t,$to:n,from:t.pos,to:n.pos}}function no(o){const e=u.getPmSchema(o);if(o.selection.empty||"node"in o.selection)return;const t=o.doc.resolve(u.getNearestBlockPos(o.doc,o.selection.from).posBeforeNode),n=o.doc.resolve(u.getNearestBlockPos(o.doc,o.selection.to).posBeforeNode),r=(l,p)=>{const f=t.posAtIndex(l,p),h=o.doc.resolve(f).nodeAfter;if(!h)throw new Error(`Error getting selection - node not found at position ${f}`);return u.nodeToBlock(h,e)},s=[],i=t.sharedDepth(n.pos),a=t.index(i),c=n.index(i);if(t.depth>i){s.push(u.nodeToBlock(t.nodeAfter,e));for(let l=t.depth;l>i;l--)if(t.node(l).type.isInGroup("childContainer")){const f=t.index(l)+1,h=t.node(l).childCount;for(let k=f;k<h;k++)s.push(r(k,l))}}else s.push(r(a,i));for(let l=a+1;l<=c;l++)s.push(r(l,i));if(s.length===0)throw new Error(`Error getting selection - selection doesn't span any blocks (${o.selection})`);return{blocks:s}}function ro(o,e,t){const n=typeof e=="string"?e:e.id,r=typeof t=="string"?t:t.id,s=u.getPmSchema(o),i=u.getBlockNoteSchema(s);if(n===r)throw new Error(`Attempting to set selection with the same anchor and head blocks (id ${n})`);const a=d.getNodeById(n,o.doc);if(!a)throw new Error(`Block with ID ${n} not found`);const c=d.getNodeById(r,o.doc);if(!c)throw new Error(`Block with ID ${r} not found`);const l=u.getBlockInfo(a),p=u.getBlockInfo(c),f=i.blockSchema[l.blockNoteType],h=i.blockSchema[p.blockNoteType];if(!l.isBlockContainer||f.content==="none")throw new Error(`Attempting to set selection anchor in block without content (id ${n})`);if(!p.isBlockContainer||h.content==="none")throw new Error(`Attempting to set selection anchor in block without content (id ${r})`);let k,m;if(f.content==="table"){const g=D.TableMap.get(l.blockContent.node);k=l.blockContent.beforePos+g.positionAt(0,0,l.blockContent.node)+1+2}else k=l.blockContent.beforePos+1;if(h.content==="table"){const g=D.TableMap.get(p.blockContent.node),C=p.blockContent.beforePos+g.positionAt(g.height-1,g.width-1,p.blockContent.node)+1,y=o.doc.resolve(C).nodeAfter.nodeSize;m=C+y-2}else m=p.blockContent.afterPos-1;o.setSelection(T.TextSelection.create(o.doc,k,m))}function so(o,e=!1){const t=u.getPmSchema(o),n=e?ye(o.doc,o.selection):o.selection;let r=n.$from,s=n.$to;for(;s.parentOffset>=s.parent.nodeSize-2&&s.depth>0;)s=o.doc.resolve(s.pos+1);for(;s.parentOffset===0&&s.depth>0;)s=o.doc.resolve(s.pos-1);for(;r.parentOffset===0&&r.depth>0;)r=o.doc.resolve(r.pos-1);for(;r.parentOffset>=r.parent.nodeSize-2&&r.depth>0;)r=o.doc.resolve(r.pos+1);const i=u.prosemirrorSliceToSlicedBlocks(o.doc.slice(r.pos,s.pos,!0),t);return{_meta:{startPos:r.pos,endPos:s.pos},...i}}function io(o){const{bnBlock:e}=u.getBlockInfoFromTransaction(o),t=u.getPmSchema(o.doc),n=o.doc.resolve(e.beforePos),r=n.nodeBefore,s=o.doc.resolve(e.afterPos).nodeAfter;let i;return n.depth>1&&(i=n.node(),i.type.isInGroup("bnBlock")||(i=n.node(n.depth-1))),{block:u.nodeToBlock(e.node,t),prevBlock:r===null?void 0:u.nodeToBlock(r,t),nextBlock:s===null?void 0:u.nodeToBlock(s,t),parentBlock:i===void 0?void 0:u.nodeToBlock(i,t)}}function Te(o,e,t="start"){const n=typeof e=="string"?e:e.id,r=u.getPmSchema(o.doc),s=u.getBlockNoteSchema(r),i=d.getNodeById(n,o.doc);if(!i)throw new Error(`Block with ID ${n} not found`);const a=u.getBlockInfo(i),c=s.blockSchema[a.blockNoteType].content;if(a.isBlockContainer){const l=a.blockContent;if(c==="none"){o.setSelection(T.NodeSelection.create(o.doc,l.beforePos));return}if(c==="inline")t==="start"?o.setSelection(T.TextSelection.create(o.doc,l.beforePos+1)):o.setSelection(T.TextSelection.create(o.doc,l.afterPos-1));else if(c==="table")t==="start"?o.setSelection(T.TextSelection.create(o.doc,l.beforePos+4)):o.setSelection(T.TextSelection.create(o.doc,l.afterPos-4));else throw new u.UnreachableCaseError(c)}else{const l=t==="start"?a.childContainer.node.firstChild:a.childContainer.node.lastChild;Te(o,l.attrs.id,t)}}class co{constructor(e){this.editor=e}getSelection(){return this.editor.transact(e=>no(e))}getSelectionCutBlocks(e=!1){return this.editor.transact(t=>so(t,e))}setSelection(e,t){return this.editor.transact(n=>ro(n,e,t))}getTextCursorPosition(){return this.editor.transact(e=>io(e))}setTextCursorPosition(e,t="start"){return this.editor.transact(n=>Te(n,e,t))}getSelectionBoundingBox(){if(!this.editor.prosemirrorView)return;const{selection:e}=this.editor.prosemirrorState,{ranges:t}=e,n=Math.min(...t.map(s=>s.$from.pos)),r=Math.max(...t.map(s=>s.$to.pos));if(S.isNodeSelection(e)){const s=this.editor.prosemirrorView.nodeDOM(n);if(s)return s.getBoundingClientRect()}return S.posToDOMRect(this.editor.prosemirrorView,n,r).toJSON()}}class lo{constructor(e){b(this,"activeTransaction",null);b(this,"isInCan",!1);this.editor=e}can(e){try{return this.isInCan=!0,e()}finally{this.isInCan=!1}}exec(e){if(this.activeTransaction)throw new Error("`exec` should not be called within a `transact` call, move the `exec` call outside of the `transact` call");if(this.isInCan)return this.canExec(e);const t=this.prosemirrorState,n=this.prosemirrorView;return e(t,s=>this.prosemirrorView.dispatch(s),n)}canExec(e){if(this.activeTransaction)throw new Error("`canExec` should not be called within a `transact` call, move the `canExec` call outside of the `transact` call");const t=this.prosemirrorState,n=this.prosemirrorView;return e(t,void 0,n)}transact(e){if(this.activeTransaction)return e(this.activeTransaction);try{this.activeTransaction=this.editor._tiptapEditor.state.tr;const t=e(this.activeTransaction),n=this.activeTransaction;return this.activeTransaction=null,n&&(n.docChanged||n.selectionSet||n.scrolledIntoView||n.storedMarksSet||!n.isGeneric)&&this.prosemirrorView.dispatch(n),t}finally{this.activeTransaction=null}}get prosemirrorState(){if(this.activeTransaction)throw new Error("`prosemirrorState` should not be called within a `transact` call, move the `prosemirrorState` call outside of the `transact` call or use `editor.transact` to read the current editor state");return this.editor._tiptapEditor.state}get prosemirrorView(){return this.editor._tiptapEditor.view}isFocused(){var e;return((e=this.prosemirrorView)==null?void 0:e.hasFocus())||!1}focus(){var e;(e=this.prosemirrorView)==null||e.focus()}get isEditable(){if(!this.editor._tiptapEditor){if(!this.editor.headless)throw new Error("no editor, but also not headless?");return!1}return this.editor._tiptapEditor.isEditable===void 0?!0:this.editor._tiptapEditor.isEditable}set isEditable(e){if(!this.editor._tiptapEditor){if(!this.editor.headless)throw new Error("no editor, but also not headless?");return}this.editor._tiptapEditor.options.editable!==e&&this.editor._tiptapEditor.setEditable(e)}undo(){const e=this.editor.getExtension("yUndo");if(e)return this.exec(e.undoCommand);const t=this.editor.getExtension("history");if(t)return this.exec(t.undoCommand);throw new Error("No undo plugin found")}redo(){const e=this.editor.getExtension("yUndo");if(e)return this.exec(e.redoCommand);const t=this.editor.getExtension("history");if(t)return this.exec(t.redoCommand);throw new Error("No redo plugin found")}}function ao(o,e,t,n={updateSelection:!0}){let{from:r,to:s}=typeof e=="number"?{from:e,to:e}:{from:e.from,to:e.to},i=!0,a=!0,c="";if(t.forEach(l=>{l.check(),i&&l.isText&&l.marks.length===0?c+=l.text:i=!1,a=a?l.isBlock:!1}),r===s&&a){const{parent:l}=o.doc.resolve(r);l.isTextblock&&!l.type.spec.code&&!l.childCount&&(r-=1,s+=1)}return i?o.insertText(c,r,s):o.replaceWith(r,s,t),n.updateSelection&&S.selectionToInsertionEnd(o,o.steps.length-1,-1),!0}class uo{constructor(e){this.editor=e}insertInlineContent(e,{updateSelection:t=!1}={}){const n=u.inlineContentToNodes(e,this.editor.pmSchema);this.editor.transact(r=>{ao(r,{from:r.selection.from,to:r.selection.to},n,{updateSelection:t})})}getActiveStyles(){return this.editor.transact(e=>{const t={},n=e.selection.$to.marks();for(const r of n){const s=this.editor.schema.styleSchema[r.type.name];if(!s){r.type.name!=="link"&&!r.type.spec.blocknoteIgnore&&console.warn("mark not found in styleschema",r.type.name);continue}s.propSchema==="boolean"?t[s.type]=!0:t[s.type]=r.attrs.stringValue}return t})}addStyles(e){for(const[t,n]of Object.entries(e)){const r=this.editor.schema.styleSchema[t];if(!r)throw new Error(`style ${t} not found in styleSchema`);if(r.propSchema==="boolean")this.editor._tiptapEditor.commands.setMark(t);else if(r.propSchema==="string")this.editor._tiptapEditor.commands.setMark(t,{stringValue:n});else throw new u.UnreachableCaseError(r.propSchema)}}removeStyles(e){for(const t of Object.keys(e))this.editor._tiptapEditor.commands.unsetMark(t)}toggleStyles(e){for(const[t,n]of Object.entries(e)){const r=this.editor.schema.styleSchema[t];if(!r)throw new Error(`style ${t} not found in styleSchema`);if(r.propSchema==="boolean")this.editor._tiptapEditor.commands.toggleMark(t);else if(r.propSchema==="string")this.editor._tiptapEditor.commands.toggleMark(t,{stringValue:n});else throw new u.UnreachableCaseError(r.propSchema)}}getSelectedText(){return this.editor.transact(e=>e.doc.textBetween(e.selection.from,e.selection.to))}getSelectedLinkUrl(){return this.editor._tiptapEditor.getAttributes("link").href}createLink(e,t){if(e==="")return;const n=this.editor.pmSchema.mark("link",{href:e});this.editor.transact(r=>{const{from:s,to:i}=r.selection;t?r.insertText(t,s,i).addMark(s,s+t.length,n):r.setSelection(He.TextSelection.create(r.doc,i)).addMark(s,i,n)})}}function po(o){return S.findParentNodeClosestToPos(o.state.selection.$from,e=>e.type.name==="tableCell"||e.type.name==="tableHeader")!==void 0}function xe(o,e){var r;const t=e.nodes.hardBreak;let n=w.Fragment.empty;return o.forEach(s=>{s.isTextblock&&s.childCount>0?(n=n.append(s.content),n=n.addToEnd(t.create())):s.isText?n=n.addToEnd(s):s.isBlock&&s.childCount>0&&(n=n.append(xe(s.content,e)),n=n.addToEnd(t.create()))}),((r=n.lastChild)==null?void 0:r.type)===t&&(n=n.cut(0,n.size-1)),n}function fo(o,e){const t=[];return o.forEach((n,r,s)=>{s!==e&&t.push(n)}),w.Fragment.from(t)}function ho(o,e){const t=[];for(let n=0;n<o.childCount;n++)if(o.child(n).type.name==="tableRow")if(t.length>0&&t[t.length-1].type.name==="table"){const r=t[t.length-1],s=r.copy(r.content.addToEnd(o.child(n)));t[t.length-1]=s}else{const r=e.nodes.table.createChecked(void 0,o.child(n));t.push(r)}else t.push(o.child(n));return o=w.Fragment.from(t),o}function mo(o,e){let t=w.Fragment.from(o.content);if(t=ho(t,e.state.schema),po(e)){let n=!1;if(t.descendants(r=>{r.type.isInGroup("tableContent")&&(n=!0)}),!n&&!e.state.schema.nodes.tableParagraph.validContent(t))return new w.Slice(xe(t,e.state.schema),0,0)}if(!ko(t,e))return new w.Slice(t,o.openStart,o.openEnd);for(let n=0;n<t.childCount;n++)if(t.child(n).type.spec.group==="blockContent"){const r=[t.child(n)];if(n+1<t.childCount&&t.child(n+1).type.name==="blockGroup"){const i=t.child(n+1).child(0).child(0);(i.type.name==="bulletListItem"||i.type.name==="numberedListItem"||i.type.name==="checkListItem")&&(r.push(t.child(n+1)),t=fo(t,n+1))}const s=e.state.schema.nodes.blockContainer.createChecked(void 0,r);t=t.replaceChild(n,s)}return new w.Slice(t,o.openStart,o.openEnd)}function ko(o,e){var s,i;const t=o.childCount===1,n=((s=o.firstChild)==null?void 0:s.type.spec.content)==="inline*",r=((i=o.firstChild)==null?void 0:i.type.spec.content)==="tableRow+";if(t){if(n)return!1;if(r){const a=u.getBlockInfoFromSelection(e.state);if(a.isBlockContainer)return!(a.blockContent.node.type.spec.content==="tableRow+")}}return!0}const go={enableInputRules:!0,enablePasteRules:!0,enableCoreExtensions:!1};class K extends z.EventEmitter{constructor(t){var l,p,f,h,k,m,g,C,y,P;super();b(this,"pmSchema");b(this,"_tiptapEditor");b(this,"elementRenderer",null);b(this,"blockCache",new WeakMap);b(this,"dictionary");b(this,"schema");b(this,"blockImplementations");b(this,"inlineContentImplementations");b(this,"styleImplementations");b(this,"uploadFile");b(this,"onUploadStartCallbacks",[]);b(this,"onUploadEndCallbacks",[]);b(this,"resolveFileUrl");b(this,"settings");b(this,"_blockManager");b(this,"_eventManager");b(this,"_exportManager");b(this,"_extensionManager");b(this,"_selectionManager");b(this,"_stateManager");b(this,"_styleManager");b(this,"unregisterExtension",(...t)=>this._extensionManager.unregisterExtension(...t));b(this,"registerExtension",(...t)=>this._extensionManager.registerExtension(...t));b(this,"getExtension",(...t)=>this._extensionManager.getExtension(...t));b(this,"mount",t=>{this._tiptapEditor.mount({mount:t})});b(this,"unmount",()=>{this._tiptapEditor.unmount()});this.options=t,this.dictionary=t.dictionary||Me.en,this.settings={tables:{splitCells:((l=t==null?void 0:t.tables)==null?void 0:l.splitCells)??!1,cellBackgroundColor:((p=t==null?void 0:t.tables)==null?void 0:p.cellBackgroundColor)??!1,cellTextColor:((f=t==null?void 0:t.tables)==null?void 0:f.cellTextColor)??!1,headers:((h=t==null?void 0:t.tables)==null?void 0:h.headers)??!1}};const n={defaultStyles:!0,schema:t.schema||I.BlockNoteSchema.create(),...t,placeholders:{...this.dictionary.placeholders,...t.placeholders}};if(this.schema=n.schema,this.blockImplementations=n.schema.blockSpecs,this.inlineContentImplementations=n.schema.inlineContentSpecs,this.styleImplementations=n.schema.styleSpecs,n.uploadFile){const x=n.uploadFile;this.uploadFile=async(v,M)=>{this.onUploadStartCallbacks.forEach(A=>A.apply(this,[M]));try{return await x(v,M)}finally{this.onUploadEndCallbacks.forEach(A=>A.apply(this,[M]))}}}this.resolveFileUrl=n.resolveFileUrl,this._eventManager=new ct(this),this._extensionManager=new oo(this,n);const r=this._extensionManager.getTiptapExtensions(),s=this._extensionManager.hasExtension("ySync")||this._extensionManager.hasExtension("liveblocksExtension");s&&n.initialContent&&console.warn("When using Collaboration, initialContent might cause conflicts, because changes should come from the collaboration provider");const i={...go,...n._tiptapOptions,element:null,autofocus:n.autofocus??!1,extensions:r,editorProps:{...(k=n._tiptapOptions)==null?void 0:k.editorProps,attributes:{tabIndex:"0",...(g=(m=n._tiptapOptions)==null?void 0:m.editorProps)==null?void 0:g.attributes,...(C=n.domAttributes)==null?void 0:C.editor,class:d.mergeCSSClasses("bn-editor",n.defaultStyles?"bn-default-styles":"",((P=(y=n.domAttributes)==null?void 0:y.editor)==null?void 0:P.class)||"")},transformPasted:mo}};try{const x=n.initialContent||(s?[{type:"paragraph",id:"initialBlockId"}]:[{type:"paragraph",id:u.UniqueID.options.generateID()}]);if(!Array.isArray(x)||x.length===0)throw new Error("initialContent must be a non-empty array of blocks, received: "+x);const v=S.getSchema(i.extensions),M=x.map(Ee=>u.blockToNode(Ee,v,this.schema.styleSchema).toJSON()),A=S.createDocument({type:"doc",content:[{type:"blockGroup",content:M}]},v,i.parseOptions);this._tiptapEditor=new S.Editor({...i,content:A.toJSON()}),this.pmSchema=this._tiptapEditor.schema}catch(x){throw new Error("Error creating document from blocks passed as `initialContent`",{cause:x})}let a;const c=this.pmSchema.nodes.doc.createAndFill;this.pmSchema.nodes.doc.createAndFill=(...x)=>{if(a)return a;const v=c.apply(this.pmSchema.nodes.doc,x),M=JSON.parse(JSON.stringify(v.toJSON()));return M.content[0].content[0].attrs.id="initialBlockId",a=E.Node.fromJSON(this.pmSchema,M),a},this.pmSchema.cached.blockNoteEditor=this,this._blockManager=new it(this),this._exportManager=new kt(this),this._selectionManager=new co(this),this._stateManager=new lo(this),this._styleManager=new uo(this),this.emit("create")}static create(t){return new K(t??{})}get extensions(){return this._extensionManager.getExtensions()}exec(t){return this._stateManager.exec(t)}canExec(t){return this._stateManager.canExec(t)}transact(t){return this._stateManager.transact(t)}get prosemirrorState(){return this._stateManager.prosemirrorState}get prosemirrorView(){return this._stateManager.prosemirrorView}get domElement(){var t;if(!this.headless)return(t=this.prosemirrorView)==null?void 0:t.dom}isFocused(){var t;return this.headless?!1:((t=this.prosemirrorView)==null?void 0:t.hasFocus())||!1}get headless(){return!this._tiptapEditor.isInitialized}focus(){this.headless||this.prosemirrorView.focus()}blur(){var t;this.headless||(t=this.domElement)==null||t.blur()}onUploadStart(t){return this.onUploadStartCallbacks.push(t),()=>{const n=this.onUploadStartCallbacks.indexOf(t);n>-1&&this.onUploadStartCallbacks.splice(n,1)}}onUploadEnd(t){return this.onUploadEndCallbacks.push(t),()=>{const n=this.onUploadEndCallbacks.indexOf(t);n>-1&&this.onUploadEndCallbacks.splice(n,1)}}get topLevelBlocks(){return this.document}get document(){return this._blockManager.document}getBlock(t){return this._blockManager.getBlock(t)}getPrevBlock(t){return this._blockManager.getPrevBlock(t)}getNextBlock(t){return this._blockManager.getNextBlock(t)}getParentBlock(t){return this._blockManager.getParentBlock(t)}forEachBlock(t,n=!1){this._blockManager.forEachBlock(t,n)}onEditorContentChange(t){this._tiptapEditor.on("update",t)}onEditorSelectionChange(t){this._tiptapEditor.on("selectionUpdate",t)}onBeforeChange(t){return this._extensionManager.getExtension(B.BlockChangeExtension).subscribe(t)}getTextCursorPosition(){return this._selectionManager.getTextCursorPosition()}setTextCursorPosition(t,n="start"){return this._selectionManager.setTextCursorPosition(t,n)}getSelection(){return this._selectionManager.getSelection()}getSelectionCutBlocks(t=!1){return this._selectionManager.getSelectionCutBlocks(t)}setSelection(t,n){return this._selectionManager.setSelection(t,n)}get isEditable(){return this._stateManager.isEditable}set isEditable(t){this._stateManager.isEditable=t}insertBlocks(t,n,r="before"){return this._blockManager.insertBlocks(t,n,r)}updateBlock(t,n){return this._blockManager.updateBlock(t,n)}removeBlocks(t){return this._blockManager.removeBlocks(t)}replaceBlocks(t,n){return this._blockManager.replaceBlocks(t,n)}undo(){return this._stateManager.undo()}redo(){return this._stateManager.redo()}insertInlineContent(t,{updateSelection:n=!1}={}){this._styleManager.insertInlineContent(t,{updateSelection:n})}getActiveStyles(){return this._styleManager.getActiveStyles()}addStyles(t){this._styleManager.addStyles(t)}removeStyles(t){this._styleManager.removeStyles(t)}toggleStyles(t){this._styleManager.toggleStyles(t)}getSelectedText(){return this._styleManager.getSelectedText()}getSelectedLinkUrl(){return this._styleManager.getSelectedLinkUrl()}createLink(t,n){this._styleManager.createLink(t,n)}canNestBlock(){return this._blockManager.canNestBlock()}nestBlock(){this._blockManager.nestBlock()}canUnnestBlock(){return this._blockManager.canUnnestBlock()}unnestBlock(){this._blockManager.unnestBlock()}moveBlocksUp(){return this._blockManager.moveBlocksUp()}moveBlocksDown(){return this._blockManager.moveBlocksDown()}blocksToHTMLLossy(t=this.document){return this._exportManager.blocksToHTMLLossy(t)}blocksToFullHTML(t=this.document){return this._exportManager.blocksToFullHTML(t)}tryParseHTMLToBlocks(t){return this._exportManager.tryParseHTMLToBlocks(t)}blocksToMarkdownLossy(t=this.document){return this._exportManager.blocksToMarkdownLossy(t)}tryParseMarkdownToBlocks(t){return this._exportManager.tryParseMarkdownToBlocks(t)}onChange(t,n){return this._eventManager.onChange(t,n)}onSelectionChange(t,n){return this._eventManager.onSelectionChange(t,n)}onMount(t){this._eventManager.onMount(t)}onUnmount(t){this._eventManager.onUnmount(t)}getSelectionBoundingBox(){return this._selectionManager.getSelectionBoundingBox()}get isEmpty(){const t=this.document;return t.length===0||t.length===1&&t[0].type==="paragraph"&&t[0].content.length===0}pasteHTML(t,n=!1){this._exportManager.pasteHTML(t,n)}pasteText(t){return this._exportManager.pasteText(t)}pasteMarkdown(t){return this._exportManager.pasteMarkdown(t)}}class bo{constructor(e,t,n){this.mappings=t,this.options=n}async resolveFile(e){var n;if(!((n=this.options)!=null&&n.resolveFileUrl))return(await fetch(e)).blob();const t=await this.options.resolveFileUrl(e);return t instanceof Blob?t:(await fetch(t)).blob()}mapStyles(e){return Object.entries(e).map(([n,r])=>this.mappings.styleMapping[n](r,this))}mapInlineContent(e){return this.mappings.inlineContentMapping[e.type](e,this)}transformInlineContent(e){return e.map(t=>this.mapInlineContent(t))}async mapBlock(e,t,n,r){return this.mappings.blockMapping[e.type](e,this,t,n,r)}}function Bo(o){return{createBlockMapping:e=>e,createInlineContentMapping:e=>e,createStyleMapping:e=>e}}function So(o,...e){const t=[...o];for(const n of e)for(const r of n){const s=t.findLastIndex(i=>i.group===r.group);s===-1?t.push(r):t.splice(s+1,0,r)}return t}exports.UniqueID=u.UniqueID;exports.UnreachableCaseError=u.UnreachableCaseError;exports.assertEmpty=u.assertEmpty;exports.blockToNode=u.blockToNode;exports.contentNodeToInlineContent=u.contentNodeToInlineContent;exports.contentNodeToTableContent=u.contentNodeToTableContent;exports.docToBlocks=u.docToBlocks;exports.getBlockCache=u.getBlockCache;exports.getBlockInfo=u.getBlockInfo;exports.getBlockInfoFromResolvedPos=u.getBlockInfoFromResolvedPos;exports.getBlockInfoFromSelection=u.getBlockInfoFromSelection;exports.getBlockInfoFromTransaction=u.getBlockInfoFromTransaction;exports.getBlockInfoWithManualOffset=u.getBlockInfoWithManualOffset;exports.getBlockNoteSchema=u.getBlockNoteSchema;exports.getBlockSchema=u.getBlockSchema;exports.getColspan=u.getColspan;exports.getInlineContentSchema=u.getInlineContentSchema;exports.getNearestBlockPos=u.getNearestBlockPos;exports.getPmSchema=u.getPmSchema;exports.getRowspan=u.getRowspan;exports.getStyleSchema=u.getStyleSchema;exports.inlineContentToNodes=u.inlineContentToNodes;exports.isLinkInlineContent=u.isLinkInlineContent;exports.isPartialLinkInlineContent=u.isPartialLinkInlineContent;exports.isPartialTableCell=u.isPartialTableCell;exports.isStyledTextInlineContent=u.isStyledTextInlineContent;exports.isTableCell=u.isTableCell;exports.mapTableCell=u.mapTableCell;exports.nodeToBlock=u.nodeToBlock;exports.nodeToCustomInlineContent=u.nodeToCustomInlineContent;exports.prosemirrorSliceToSlicedBlocks=u.prosemirrorSliceToSlicedBlocks;exports.tableContentToNodes=u.tableContentToNodes;exports.COLORS_DARK_MODE_DEFAULT=d.COLORS_DARK_MODE_DEFAULT;exports.COLORS_DEFAULT=d.COLORS_DEFAULT;exports.EMPTY_CELL_HEIGHT=d.EMPTY_CELL_HEIGHT;exports.EMPTY_CELL_WIDTH=d.EMPTY_CELL_WIDTH;exports.FILE_AUDIO_ICON_SVG=d.FILE_AUDIO_ICON_SVG;exports.FILE_IMAGE_ICON_SVG=d.FILE_IMAGE_ICON_SVG;exports.FILE_VIDEO_ICON_SVG=d.FILE_VIDEO_ICON_SVG;exports.addDefaultPropsExternalHTML=d.addDefaultPropsExternalHTML;exports.addInlineContentAttributes=d.addInlineContentAttributes;exports.addInlineContentKeyboardShortcuts=d.addInlineContentKeyboardShortcuts;exports.addNodeAndExtensionsToSpec=d.addNodeAndExtensionsToSpec;exports.addStyleAttributes=d.addStyleAttributes;exports.applyNonSelectableBlockFix=d.applyNonSelectableBlockFix;exports.audioParse=d.audioParse;exports.audioRender=d.audioRender;exports.audioToExternalHTML=d.audioToExternalHTML;exports.blockHasType=d.blockHasType;exports.camelToDataKebab=d.camelToDataKebab;exports.captureCellAnchor=d.captureCellAnchor;exports.createAudioBlockConfig=d.createAudioBlockConfig;exports.createAudioBlockSpec=d.createAudioBlockSpec;exports.createBlockConfig=d.createBlockConfig;exports.createBlockSpec=d.createBlockSpec;exports.createBlockSpecFromTiptapNode=d.createBlockSpecFromTiptapNode;exports.createBulletListItemBlockConfig=d.createBulletListItemBlockConfig;exports.createBulletListItemBlockSpec=d.createBulletListItemBlockSpec;exports.createCheckListItemBlockSpec=d.createCheckListItemBlockSpec;exports.createCheckListItemConfig=d.createCheckListItemConfig;exports.createCodeBlockConfig=d.createCodeBlockConfig;exports.createCodeBlockSpec=d.createCodeBlockSpec;exports.createDefaultBlockDOMOutputSpec=d.createDefaultBlockDOMOutputSpec;exports.createDividerBlockConfig=d.createDividerBlockConfig;exports.createDividerBlockSpec=d.createDividerBlockSpec;exports.createFileBlockConfig=d.createFileBlockConfig;exports.createFileBlockSpec=d.createFileBlockSpec;exports.createHeadingBlockConfig=d.createHeadingBlockConfig;exports.createHeadingBlockSpec=d.createHeadingBlockSpec;exports.createImageBlockConfig=d.createImageBlockConfig;exports.createImageBlockSpec=d.createImageBlockSpec;exports.createInlineContentSpecFromTipTapNode=d.createInlineContentSpecFromTipTapNode;exports.createInternalInlineContentSpec=d.createInternalInlineContentSpec;exports.createInternalStyleSpec=d.createInternalStyleSpec;exports.createNumberedListItemBlockConfig=d.createNumberedListItemBlockConfig;exports.createNumberedListItemBlockSpec=d.createNumberedListItemBlockSpec;exports.createParagraphBlockConfig=d.createParagraphBlockConfig;exports.createParagraphBlockSpec=d.createParagraphBlockSpec;exports.createQuoteBlockConfig=d.createQuoteBlockConfig;exports.createQuoteBlockSpec=d.createQuoteBlockSpec;exports.createStyleSpec=d.createStyleSpec;exports.createStyleSpecFromTipTapMark=d.createStyleSpecFromTipTapMark;exports.createTableBlockSpec=d.createTableBlockSpec;exports.createToggleListItemBlockConfig=d.createToggleListItemBlockConfig;exports.createToggleListItemBlockSpec=d.createToggleListItemBlockSpec;exports.createToggleWrapper=d.createToggleWrapper;exports.createVideoBlockConfig=d.createVideoBlockConfig;exports.createVideoBlockSpec=d.createVideoBlockSpec;exports.defaultBlockSpecs=d.defaultBlockSpecs;exports.defaultBlockToHTML=d.defaultBlockToHTML;exports.defaultInlineContentSchema=d.defaultInlineContentSchema;exports.defaultInlineContentSpecs=d.defaultInlineContentSpecs;exports.defaultProps=d.defaultProps;exports.defaultStyleSchema=d.defaultStyleSchema;exports.defaultStyleSpecs=d.defaultStyleSpecs;exports.defaultToggledState=d.defaultToggledState;exports.editorHasBlockWithType=d.editorHasBlockWithType;exports.fileParse=d.fileParse;exports.filenameFromURL=d.filenameFromURL;exports.formatKeyboardShortcut=d.formatKeyboardShortcut;exports.getBackgroundColorAttribute=d.getBackgroundColorAttribute;exports.getBlockFromPos=d.getBlockFromPos;exports.getInlineContentSchemaFromSpecs=d.getInlineContentSchemaFromSpecs;exports.getLanguageId=d.getLanguageId;exports.getNodeById=d.getNodeById;exports.getParseRules=d.getParseRules;exports.getStyleParseRules=d.getStyleParseRules;exports.getStyleSchemaFromSpecs=d.getStyleSchemaFromSpecs;exports.getTextAlignmentAttribute=d.getTextAlignmentAttribute;exports.getTextColorAttribute=d.getTextColorAttribute;exports.imageParse=d.imageParse;exports.imageRender=d.imageRender;exports.imageToExternalHTML=d.imageToExternalHTML;exports.isAppleOS=d.isAppleOS;exports.isNodeBlock=d.isNodeBlock;exports.isSafari=d.isSafari;exports.isTableCellSelection=d.isTableCellSelection;exports.isVideoUrl=d.isVideoUrl;exports.mergeCSSClasses=d.mergeCSSClasses;exports.mergeParagraphs=d.mergeParagraphs;exports.parseAudioElement=d.parseAudioElement;exports.parseDefaultProps=d.parseDefaultProps;exports.propsToAttributes=d.propsToAttributes;exports.stylePropsToAttributes=d.stylePropsToAttributes;exports.tablePropSchema=d.tablePropSchema;exports.trackPosition=d.trackPosition;exports.updateBlock=d.updateBlock;exports.updateBlockCommand=d.updateBlockCommand;exports.updateBlockTr=d.updateBlockTr;exports.videoParse=d.videoParse;exports.wrapInBlockStructure=d.wrapInBlockStructure;exports.blocksToMarkdown=B.blocksToMarkdown;exports.cleanHTMLToMarkdown=B.cleanHTMLToMarkdown;exports.createExternalHTMLExporter=B.createExternalHTMLExporter;exports.getBlocksChangedByTransaction=B.getBlocksChangedByTransaction;exports.BlockNoteSchema=I.BlockNoteSchema;exports.CustomBlockNoteSchema=I.CustomBlockNoteSchema;exports.checkPageBreakBlocksInSchema=I.checkPageBreakBlocksInSchema;exports.createPageBreakBlockConfig=I.createPageBreakBlockConfig;exports.createPageBreakBlockSpec=I.createPageBreakBlockSpec;exports.getPageBreakSlashMenuItems=I.getPageBreakSlashMenuItems;exports.uploadToTmpFilesDotOrg_DEV_ONLY=I.uploadToTmpFilesDotOrg_DEV_ONLY;exports.withPageBreak=I.withPageBreak;exports.EventEmitter=z.EventEmitter;exports.createExtension=H.createExtension;exports.createStore=H.createStore;exports.BlockNoteEditor=K;exports.Exporter=bo;exports.HTMLToBlocks=G;exports.combineByGroup=So;exports.createInlineContentSpec=ze;exports.createInternalHTMLSerializer=le;exports.expandPMRangeToWords=ye;exports.fixColumnList=_;exports.getBlock=he;exports.getInlineContentParseRules=ne;exports.getNextBlock=ke;exports.getParentBlock=ge;exports.getPrevBlock=me;exports.insertBlocks=re;exports.isEmptyColumn=O;exports.mappingFactory=Bo;exports.markdownToBlocks=be;exports.markdownToHTML=q;exports.removeAndInsertBlocks=V;exports.removeEmptyColumns=se;exports.selectedFragmentToHTML=j;
5
5
  //# sourceMappingURL=blocknote.cjs.map