pillardash-ui-react 0.1.138 → 0.1.142
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/components/Cards/Card.js +1 -1
- package/dist/cjs/components/Cards/Card.js.map +1 -1
- package/dist/cjs/components/Form/TextEditor/ImagePopover.js +2 -0
- package/dist/cjs/components/Form/TextEditor/ImagePopover.js.map +1 -0
- package/dist/cjs/components/Form/TextEditor/LinkPopover.js +2 -0
- package/dist/cjs/components/Form/TextEditor/LinkPopover.js.map +1 -0
- package/dist/cjs/components/Form/TextEditor/TextEditor.js +1 -1
- package/dist/cjs/components/Form/TextEditor/TextEditor.js.map +1 -1
- package/dist/cjs/components/Form/TextEditor/ToolbarGroups.js +2 -0
- package/dist/cjs/components/Form/TextEditor/ToolbarGroups.js.map +1 -0
- package/dist/cjs/components/Form/TextEditor/extensions.js +2 -0
- package/dist/cjs/components/Form/TextEditor/extensions.js.map +1 -0
- package/dist/cjs/components/Form/TextEditor/toolbar.js +2 -0
- package/dist/cjs/components/Form/TextEditor/toolbar.js.map +1 -0
- package/dist/cjs/node_modules/@tiptap/core/dist/index.js +1 -1
- package/dist/cjs/node_modules/@tiptap/core/dist/index.js.map +1 -1
- package/dist/cjs/node_modules/@tiptap/extension-list/dist/index.js +1 -1
- package/dist/cjs/node_modules/@tiptap/extension-list/dist/index.js.map +1 -1
- package/dist/cjs/node_modules/@tiptap/extension-table/dist/index.js +2 -0
- package/dist/cjs/node_modules/@tiptap/extension-table/dist/index.js.map +1 -0
- package/dist/cjs/node_modules/@tiptap/extension-table-cell/dist/index.js +2 -0
- package/dist/cjs/node_modules/@tiptap/extension-table-cell/dist/index.js.map +1 -0
- package/dist/cjs/node_modules/@tiptap/extension-table-header/dist/index.js +2 -0
- package/dist/cjs/node_modules/@tiptap/extension-table-header/dist/index.js.map +1 -0
- package/dist/cjs/node_modules/@tiptap/extension-table-row/dist/index.js +2 -0
- package/dist/cjs/node_modules/@tiptap/extension-table-row/dist/index.js.map +1 -0
- package/dist/cjs/node_modules/@tiptap/extension-task-item/dist/index.js +2 -0
- package/dist/cjs/node_modules/@tiptap/extension-task-item/dist/index.js.map +1 -0
- package/dist/cjs/node_modules/@tiptap/extension-task-list/dist/index.js +2 -0
- package/dist/cjs/node_modules/@tiptap/extension-task-list/dist/index.js.map +1 -0
- package/dist/cjs/node_modules/@tiptap/extension-text-align/dist/index.js +2 -0
- package/dist/cjs/node_modules/@tiptap/extension-text-align/dist/index.js.map +1 -0
- package/dist/cjs/node_modules/prosemirror-keymap/dist/index.js +2 -0
- package/dist/cjs/node_modules/prosemirror-keymap/dist/index.js.map +1 -0
- package/dist/cjs/node_modules/prosemirror-model/dist/index.js +1 -1
- package/dist/cjs/node_modules/prosemirror-model/dist/index.js.map +1 -1
- package/dist/cjs/node_modules/prosemirror-tables/dist/index.js +2 -0
- package/dist/cjs/node_modules/prosemirror-tables/dist/index.js.map +1 -0
- package/dist/cjs/node_modules/prosemirror-transform/dist/index.js +1 -1
- package/dist/cjs/node_modules/prosemirror-transform/dist/index.js.map +1 -1
- package/dist/cjs/node_modules/prosemirror-view/dist/index.js +2 -0
- package/dist/cjs/node_modules/prosemirror-view/dist/index.js.map +1 -0
- package/dist/cjs/node_modules/w3c-keyname/index.js +2 -0
- package/dist/cjs/node_modules/w3c-keyname/index.js.map +1 -0
- package/dist/esm/components/Cards/Card.mjs +1 -1
- package/dist/esm/components/Cards/Card.mjs.map +1 -1
- package/dist/esm/components/Form/TextEditor/ImagePopover.mjs +2 -0
- package/dist/esm/components/Form/TextEditor/ImagePopover.mjs.map +1 -0
- package/dist/esm/components/Form/TextEditor/LinkPopover.mjs +2 -0
- package/dist/esm/components/Form/TextEditor/LinkPopover.mjs.map +1 -0
- package/dist/esm/components/Form/TextEditor/TextEditor.mjs +1 -1
- package/dist/esm/components/Form/TextEditor/TextEditor.mjs.map +1 -1
- package/dist/esm/components/Form/TextEditor/ToolbarGroups.mjs +2 -0
- package/dist/esm/components/Form/TextEditor/ToolbarGroups.mjs.map +1 -0
- package/dist/esm/components/Form/TextEditor/extensions.mjs +2 -0
- package/dist/esm/components/Form/TextEditor/extensions.mjs.map +1 -0
- package/dist/esm/components/Form/TextEditor/toolbar.mjs +2 -0
- package/dist/esm/components/Form/TextEditor/toolbar.mjs.map +1 -0
- package/dist/esm/node_modules/@tiptap/core/dist/index.mjs +1 -1
- package/dist/esm/node_modules/@tiptap/core/dist/index.mjs.map +1 -1
- package/dist/esm/node_modules/@tiptap/extension-list/dist/index.mjs +1 -1
- package/dist/esm/node_modules/@tiptap/extension-list/dist/index.mjs.map +1 -1
- package/dist/esm/node_modules/@tiptap/extension-table/dist/index.mjs +2 -0
- package/dist/esm/node_modules/@tiptap/extension-table/dist/index.mjs.map +1 -0
- package/dist/esm/node_modules/@tiptap/extension-table-cell/dist/index.mjs +2 -0
- package/dist/esm/node_modules/@tiptap/extension-table-cell/dist/index.mjs.map +1 -0
- package/dist/esm/node_modules/@tiptap/extension-table-header/dist/index.mjs +2 -0
- package/dist/esm/node_modules/@tiptap/extension-table-header/dist/index.mjs.map +1 -0
- package/dist/esm/node_modules/@tiptap/extension-table-row/dist/index.mjs +2 -0
- package/dist/esm/node_modules/@tiptap/extension-table-row/dist/index.mjs.map +1 -0
- package/dist/esm/node_modules/@tiptap/extension-task-item/dist/index.mjs +2 -0
- package/dist/esm/node_modules/@tiptap/extension-task-item/dist/index.mjs.map +1 -0
- package/dist/esm/node_modules/@tiptap/extension-task-list/dist/index.mjs +2 -0
- package/dist/esm/node_modules/@tiptap/extension-task-list/dist/index.mjs.map +1 -0
- package/dist/esm/node_modules/@tiptap/extension-text-align/dist/index.mjs +2 -0
- package/dist/esm/node_modules/@tiptap/extension-text-align/dist/index.mjs.map +1 -0
- package/dist/esm/node_modules/prosemirror-keymap/dist/index.mjs +2 -0
- package/dist/esm/node_modules/prosemirror-keymap/dist/index.mjs.map +1 -0
- package/dist/esm/node_modules/prosemirror-model/dist/index.mjs +1 -1
- package/dist/esm/node_modules/prosemirror-model/dist/index.mjs.map +1 -1
- package/dist/esm/node_modules/prosemirror-tables/dist/index.mjs +2 -0
- package/dist/esm/node_modules/prosemirror-tables/dist/index.mjs.map +1 -0
- package/dist/esm/node_modules/prosemirror-transform/dist/index.mjs +1 -1
- package/dist/esm/node_modules/prosemirror-transform/dist/index.mjs.map +1 -1
- package/dist/esm/node_modules/prosemirror-view/dist/index.mjs +2 -0
- package/dist/esm/node_modules/prosemirror-view/dist/index.mjs.map +1 -0
- package/dist/esm/node_modules/w3c-keyname/index.mjs +2 -0
- package/dist/esm/node_modules/w3c-keyname/index.mjs.map +1 -0
- package/dist/index.d.ts +24 -0
- package/dist/styles.css +1 -1
- package/package.json +9 -1
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use strict";var t,e,o=require("../../prosemirror-state/dist/index.js"),n=require("../../prosemirror-model/dist/index.js"),l=require("../../prosemirror-view/dist/index.js"),r=require("../../prosemirror-keymap/dist/index.js"),s=require("../../prosemirror-transform/dist/index.js");if("undefined"!=typeof WeakMap){let o=new WeakMap;t=t=>o.get(t),e=(t,e)=>(o.set(t,e),e)}else{const o=[],n=10;let l=0;t=t=>{for(let e=0;e<o.length;e+=2)if(o[e]==t)return o[e+1]},e=(t,e)=>(l==n&&(l=0),o[l++]=t,o[l++]=e)}var i=class{constructor(t,e,o,n){this.width=t,this.height=e,this.map=o,this.problems=n}findCell(t){for(let e=0;e<this.map.length;e++){const o=this.map[e];if(o!=t)continue;const n=e%this.width,l=e/this.width|0;let r=n+1,s=l+1;for(let t=1;r<this.width&&this.map[e+t]==o;t++)r++;for(let t=1;s<this.height&&this.map[e+this.width*t]==o;t++)s++;return{left:n,top:l,right:r,bottom:s}}throw new RangeError(`No cell with offset ${t} found`)}colCount(t){for(let e=0;e<this.map.length;e++)if(this.map[e]==t)return e%this.width;throw new RangeError(`No cell with offset ${t} found`)}nextCell(t,e,o){const{left:n,right:l,top:r,bottom:s}=this.findCell(t);return"horiz"==e?(o<0?0==n:l==this.width)?null:this.map[r*this.width+(o<0?n-1:l)]:(o<0?0==r:s==this.height)?null:this.map[n+this.width*(o<0?r-1:s)]}rectBetween(t,e){const{left:o,right:n,top:l,bottom:r}=this.findCell(t),{left:s,right:i,top:a,bottom:c}=this.findCell(e);return{left:Math.min(o,s),top:Math.min(l,a),right:Math.max(n,i),bottom:Math.max(r,c)}}cellsInRect(t){const e=[],o={};for(let n=t.top;n<t.bottom;n++)for(let l=t.left;l<t.right;l++){const r=n*this.width+l,s=this.map[r];o[s]||(o[s]=!0,l==t.left&&l&&this.map[r-1]==s||n==t.top&&n&&this.map[r-this.width]==s||e.push(s))}return e}positionAt(t,e,o){for(let n=0,l=0;;n++){const r=l+o.child(n).nodeSize;if(n==t){let o=e+t*this.width;const n=(t+1)*this.width;for(;o<n&&this.map[o]<l;)o++;return o==n?r-1:this.map[o]}l=r}}static get(o){return t(o)||e(o,function(t){if("table"!=t.type.spec.tableRole)throw new RangeError("Not a table node: "+t.type.name);const e=function(t){let e=-1,o=!1;for(let n=0;n<t.childCount;n++){const l=t.child(n);let r=0;if(o)for(let e=0;e<n;e++){const o=t.child(e);for(let t=0;t<o.childCount;t++){const l=o.child(t);e+l.attrs.rowspan>n&&(r+=l.attrs.colspan)}}for(let t=0;t<l.childCount;t++){const e=l.child(t);r+=e.attrs.colspan,e.attrs.rowspan>1&&(o=!0)}-1==e?e=r:e!=r&&(e=Math.max(e,r))}return e}(t),o=t.childCount,n=[];let l=0,r=null;const s=[];for(let t=0,l=e*o;t<l;t++)n[t]=0;for(let i=0,a=0;i<o;i++){const c=t.child(i);a++;for(let t=0;;t++){for(;l<n.length&&0!=n[l];)l++;if(t==c.childCount)break;const p=c.child(t),{colspan:d,rowspan:h,colwidth:f}=p.attrs;for(let t=0;t<h;t++){if(t+i>=o){(r||(r=[])).push({type:"overlong_rowspan",pos:a,n:h-t});break}const c=l+t*e;for(let t=0;t<d;t++){0==n[c+t]?n[c+t]=a:(r||(r=[])).push({type:"collision",row:i,pos:a,n:d-t});const o=f&&f[t];if(o){const n=(c+t)%e*2,l=s[n];null==l||l!=o&&1==s[n+1]?(s[n]=o,s[n+1]=1):l==o&&s[n+1]++}}}l+=d,a+=p.nodeSize}const p=(i+1)*e;let d=0;for(;l<p;)0==n[l++]&&d++;d&&(r||(r=[])).push({type:"missing",row:i,n:d}),a++}0!==e&&0!==o||(r||(r=[])).push({type:"zero_sized"});const c=new i(e,o,n,r);let p=!1;for(let t=0;!p&&t<s.length;t+=2)null!=s[t]&&s[t+1]<o&&(p=!0);p&&function(t,e,o){t.problems||(t.problems=[]);const n={};for(let l=0;l<t.map.length;l++){const r=t.map[l];if(n[r])continue;n[r]=!0;const s=o.nodeAt(r);if(!s)throw new RangeError(`No cell with offset ${r} found`);let i=null;const c=s.attrs;for(let o=0;o<c.colspan;o++){const n=e[2*((l+o)%t.width)];null==n||c.colwidth&&c.colwidth[o]==n||((i||(i=a(c)))[o]=n)}i&&t.problems.unshift({type:"colwidth mismatch",pos:r,colwidth:i})}}(c,s,t);return c}(o))}};function a(t){if(t.colwidth)return t.colwidth.slice();const e=[];for(let o=0;o<t.colspan;o++)e.push(0);return e}function c(t){let e=t.cached.tableNodeTypes;if(!e){e=t.cached.tableNodeTypes={};for(const o in t.nodes){const n=t.nodes[o],l=n.spec.tableRole;l&&(e[l]=n)}}return e}var p=new o.PluginKey("selectingCells");function d(t){for(let e=t.depth-1;e>0;e--)if("row"==t.node(e).type.spec.tableRole)return t.node(0).resolve(t.before(e+1));return null}function h(t){const e=t.selection.$head;for(let t=e.depth;t>0;t--)if("row"==e.node(t).type.spec.tableRole)return!0;return!1}function f(t){const e=t.selection;if("$anchorCell"in e&&e.$anchorCell)return e.$anchorCell.pos>e.$headCell.pos?e.$anchorCell:e.$headCell;if("node"in e&&e.node&&"cell"==e.node.type.spec.tableRole)return e.$anchor;const o=d(e.$head)||u(e.$head);if(o)return o;throw new RangeError(`No cell found around position ${e.head}`)}function u(t){for(let e=t.nodeAfter,o=t.pos;e;e=e.firstChild,o++){const n=e.type.spec.tableRole;if("cell"==n||"header_cell"==n)return t.doc.resolve(o)}for(let e=t.nodeBefore,o=t.pos;e;e=e.lastChild,o--){const n=e.type.spec.tableRole;if("cell"==n||"header_cell"==n)return t.doc.resolve(o-e.nodeSize)}}function m(t){return"row"==t.parent.type.spec.tableRole&&!!t.nodeAfter}function g(t){return t.node(0).resolve(t.pos+t.nodeAfter.nodeSize)}function w(t,e){return t.depth==e.depth&&t.pos>=e.start(-1)&&t.pos<=e.end(-1)}function C(t,e,o){const n=t.node(-1),l=i.get(n),r=t.start(-1),s=l.nextCell(t.pos-r,e,o);return null==s?null:t.node(0).resolve(r+s)}function b(t,e,o=1){const n={...t,colspan:t.colspan-o};return n.colwidth&&(n.colwidth=n.colwidth.slice(),n.colwidth.splice(e,o),n.colwidth.some((t=>t>0))||(n.colwidth=null)),n}function v(t,e,o=1){const n={...t,colspan:t.colspan+o};if(n.colwidth){n.colwidth=n.colwidth.slice();for(let t=0;t<o;t++)n.colwidth.splice(e,0,0)}return n}function S(t,e,o){const n=c(e.type.schema).header_cell;for(let l=0;l<t.height;l++)if(e.nodeAt(t.map[o+l*t.width]).type!=n)return!1;return!0}var y=class t extends o.Selection{constructor(t,e=t){const n=t.node(-1),l=i.get(n),r=t.start(-1),s=l.rectBetween(t.pos-r,e.pos-r),a=t.node(0),c=l.cellsInRect(s).filter((t=>t!=e.pos-r));c.unshift(e.pos-r);const p=c.map((t=>{const e=n.nodeAt(t);if(!e)throw RangeError(`No cell with offset ${t} found`);const l=r+t+1;return new o.SelectionRange(a.resolve(l),a.resolve(l+e.content.size))}));super(p[0].$from,p[0].$to,p),this.$anchorCell=t,this.$headCell=e}map(e,n){const l=e.resolve(n.map(this.$anchorCell.pos)),r=e.resolve(n.map(this.$headCell.pos));if(m(l)&&m(r)&&w(l,r)){const e=this.$anchorCell.node(-1)!=l.node(-1);return e&&this.isRowSelection()?t.rowSelection(l,r):e&&this.isColSelection()?t.colSelection(l,r):new t(l,r)}return o.TextSelection.between(l,r)}content(){const t=this.$anchorCell.node(-1),e=i.get(t),o=this.$anchorCell.start(-1),l=e.rectBetween(this.$anchorCell.pos-o,this.$headCell.pos-o),r={},s=[];for(let o=l.top;o<l.bottom;o++){const i=[];for(let n=o*e.width+l.left,s=l.left;s<l.right;s++,n++){const o=e.map[n];if(r[o])continue;r[o]=!0;const s=e.findCell(o);let a=t.nodeAt(o);if(!a)throw RangeError(`No cell with offset ${o} found`);const c=l.left-s.left,p=s.right-l.right;if(c>0||p>0){let t=a.attrs;if(c>0&&(t=b(t,0,c)),p>0&&(t=b(t,t.colspan-p,p)),s.left<l.left){if(a=a.type.createAndFill(t),!a)throw RangeError(`Could not create cell with attrs ${JSON.stringify(t)}`)}else a=a.type.create(t,a.content)}if(s.top<l.top||s.bottom>l.bottom){const t={...a.attrs,rowspan:Math.min(s.bottom,l.bottom)-Math.max(s.top,l.top)};a=s.top<l.top?a.type.createAndFill(t):a.type.create(t,a.content)}i.push(a)}s.push(t.child(o).copy(n.Fragment.from(i)))}const a=this.isColSelection()&&this.isRowSelection()?t:s;return new n.Slice(n.Fragment.from(a),1,1)}replace(t,e=n.Slice.empty){const l=t.steps.length,r=this.ranges;for(let o=0;o<r.length;o++){const{$from:s,$to:i}=r[o],a=t.mapping.slice(l);t.replace(a.map(s.pos),a.map(i.pos),o?n.Slice.empty:e)}const s=o.Selection.findFrom(t.doc.resolve(t.mapping.slice(l).map(this.to)),-1);s&&t.setSelection(s)}replaceWith(t,e){this.replace(t,new n.Slice(n.Fragment.from(e),0,0))}forEachCell(t){const e=this.$anchorCell.node(-1),o=i.get(e),n=this.$anchorCell.start(-1),l=o.cellsInRect(o.rectBetween(this.$anchorCell.pos-n,this.$headCell.pos-n));for(let o=0;o<l.length;o++)t(e.nodeAt(l[o]),n+l[o])}isColSelection(){const t=this.$anchorCell.index(-1),e=this.$headCell.index(-1);if(Math.min(t,e)>0)return!1;const o=t+this.$anchorCell.nodeAfter.attrs.rowspan,n=e+this.$headCell.nodeAfter.attrs.rowspan;return Math.max(o,n)==this.$headCell.node(-1).childCount}static colSelection(e,o=e){const n=e.node(-1),l=i.get(n),r=e.start(-1),s=l.findCell(e.pos-r),a=l.findCell(o.pos-r),c=e.node(0);return s.top<=a.top?(s.top>0&&(e=c.resolve(r+l.map[s.left])),a.bottom<l.height&&(o=c.resolve(r+l.map[l.width*(l.height-1)+a.right-1]))):(a.top>0&&(o=c.resolve(r+l.map[a.left])),s.bottom<l.height&&(e=c.resolve(r+l.map[l.width*(l.height-1)+s.right-1]))),new t(e,o)}isRowSelection(){const t=this.$anchorCell.node(-1),e=i.get(t),o=this.$anchorCell.start(-1),n=e.colCount(this.$anchorCell.pos-o),l=e.colCount(this.$headCell.pos-o);if(Math.min(n,l)>0)return!1;const r=n+this.$anchorCell.nodeAfter.attrs.colspan,s=l+this.$headCell.nodeAfter.attrs.colspan;return Math.max(r,s)==e.width}eq(e){return e instanceof t&&e.$anchorCell.pos==this.$anchorCell.pos&&e.$headCell.pos==this.$headCell.pos}static rowSelection(e,o=e){const n=e.node(-1),l=i.get(n),r=e.start(-1),s=l.findCell(e.pos-r),a=l.findCell(o.pos-r),c=e.node(0);return s.left<=a.left?(s.left>0&&(e=c.resolve(r+l.map[s.top*l.width])),a.right<l.width&&(o=c.resolve(r+l.map[l.width*(a.top+1)-1]))):(a.left>0&&(o=c.resolve(r+l.map[a.top*l.width])),s.right<l.width&&(e=c.resolve(r+l.map[l.width*(s.top+1)-1]))),new t(e,o)}toJSON(){return{type:"cell",anchor:this.$anchorCell.pos,head:this.$headCell.pos}}static fromJSON(e,o){return new t(e.resolve(o.anchor),e.resolve(o.head))}static create(e,o,n=o){return new t(e.resolve(o),e.resolve(n))}getBookmark(){return new x(this.$anchorCell.pos,this.$headCell.pos)}};y.prototype.visible=!1,o.Selection.jsonID("cell",y);var x=class t{constructor(t,e){this.anchor=t,this.head=e}map(e){return new t(e.map(this.anchor),e.map(this.head))}resolve(t){const e=t.resolve(this.anchor),n=t.resolve(this.head);return"row"==e.parent.type.spec.tableRole&&"row"==n.parent.type.spec.tableRole&&e.index()<e.parent.childCount&&n.index()<n.parent.childCount&&w(e,n)?new y(e,n):o.Selection.near(n,1)}};function A(t){if(!(t.selection instanceof y))return null;const e=[];return t.selection.forEachCell(((t,o)=>{e.push(l.Decoration.node(o,o+t.nodeSize,{class:"selectedCell"}))})),l.DecorationSet.create(t.doc,e)}var $=new o.PluginKey("fix-tables");function R(t,e,o,n){const l=t.childCount,r=e.childCount;t:for(let s=0,i=0;s<r;s++){const r=e.child(s);for(let e=i,n=Math.min(l,s+3);e<n;e++)if(t.child(e)==r){i=e+1,o+=r.nodeSize;continue t}n(r,o),i<l&&t.child(i).sameMarkup(r)?R(t.child(i),r,o+1,n):r.nodesBetween(0,r.content.size,n,o+1),o+=r.nodeSize}}function M(t,e){let o;const n=(e,n)=>{"table"==e.type.spec.tableRole&&(o=function(t,e,o,n){const l=i.get(e);if(!l.problems)return n;n||(n=t.tr);const r=[];for(let t=0;t<l.height;t++)r.push(0);for(let t=0;t<l.problems.length;t++){const s=l.problems[t];if("collision"==s.type){const t=e.nodeAt(s.pos);if(!t)continue;const l=t.attrs;for(let t=0;t<l.rowspan;t++)r[s.row+t]+=s.n;n.setNodeMarkup(n.mapping.map(o+1+s.pos),null,b(l,l.colspan-s.n,s.n))}else if("missing"==s.type)r[s.row]+=s.n;else if("overlong_rowspan"==s.type){const t=e.nodeAt(s.pos);if(!t)continue;n.setNodeMarkup(n.mapping.map(o+1+s.pos),null,{...t.attrs,rowspan:t.attrs.rowspan-s.n})}else if("colwidth mismatch"==s.type){const t=e.nodeAt(s.pos);if(!t)continue;n.setNodeMarkup(n.mapping.map(o+1+s.pos),null,{...t.attrs,colwidth:s.colwidth})}else if("zero_sized"==s.type){const t=n.mapping.map(o);n.delete(t,t+e.nodeSize)}}let s,a;for(let t=0;t<r.length;t++)r[t]&&(null==s&&(s=t),a=t);for(let i=0,p=o+1;i<l.height;i++){const o=e.child(i),l=p+o.nodeSize,d=r[i];if(d>0){let e="cell";o.firstChild&&(e=o.firstChild.type.spec.tableRole);const r=[];for(let o=0;o<d;o++){const o=c(t.schema)[e].createAndFill();o&&r.push(o)}const h=0!=i&&s!=i-1||a!=i?l-1:p+1;n.insert(n.mapping.map(h),r)}p=l}return n.setMeta($,{fixTables:!0})}(t,e,n,o))};return e?e.doc!=t.doc&&R(e.doc,t.doc,0,n):t.doc.descendants(n),o}function z(t){const e=t.selection,o=f(t),n=o.node(-1),l=o.start(-1),r=i.get(n);return{...e instanceof y?r.rectBetween(e.$anchorCell.pos-l,e.$headCell.pos-l):r.findCell(o.pos-l),tableStart:l,map:r,table:n}}function N(t,{map:e,tableStart:o,table:n},l){let r=l>0?-1:0;S(e,n,l+r)&&(r=0==l||l==e.width?null:0);for(let s=0;s<e.height;s++){const i=s*e.width+l;if(l>0&&l<e.width&&e.map[i-1]==e.map[i]){const r=e.map[i],a=n.nodeAt(r);t.setNodeMarkup(t.mapping.map(o+r),null,v(a.attrs,l-e.colCount(r))),s+=a.attrs.rowspan-1}else{const a=null==r?c(n.type.schema).cell:n.nodeAt(e.map[i+r]).type,p=e.positionAt(s,l,n);t.insert(t.mapping.map(o+p),a.createAndFill())}}return t}function E(t,{map:e,table:o,tableStart:n},l){const r=t.mapping.maps.length;for(let s=0;s<e.height;){const i=s*e.width+l,a=e.map[i],c=o.nodeAt(a),p=c.attrs;if(l>0&&e.map[i-1]==a||l<e.width-1&&e.map[i+1]==a)t.setNodeMarkup(t.mapping.slice(r).map(n+a),null,b(p,l-e.colCount(a)));else{const e=t.mapping.slice(r).map(n+a);t.delete(e,e+c.nodeSize)}s+=p.rowspan}}function k(t,e,o){var n;const l=c(e.type.schema).header_cell;for(let r=0;r<t.width;r++)if((null==(n=e.nodeAt(t.map[r+o*t.width]))?void 0:n.type)!=l)return!1;return!0}function T(t,{map:e,tableStart:o,table:n},l){var r;let s=o;for(let t=0;t<l;t++)s+=n.child(t).nodeSize;const i=[];let a=l>0?-1:0;k(e,n,l+a)&&(a=0==l||l==e.height?null:0);for(let s=0,p=e.width*l;s<e.width;s++,p++)if(l>0&&l<e.height&&e.map[p]==e.map[p-e.width]){const l=e.map[p],r=n.nodeAt(l).attrs;t.setNodeMarkup(o+l,null,{...r,rowspan:r.rowspan+1}),s+=r.colspan-1}else{const t=null==a?c(n.type.schema).cell:null==(r=n.nodeAt(e.map[p+a*e.width]))?void 0:r.type,o=null==t?void 0:t.createAndFill();o&&i.push(o)}return t.insert(s,c(n.type.schema).row.create(null,i)),t}function D(t,{map:e,table:o,tableStart:n},l){let r=0;for(let t=0;t<l;t++)r+=o.child(t).nodeSize;const s=r+o.child(l).nodeSize,i=t.mapping.maps.length;t.delete(r+n,s+n);const a=new Set;for(let r=0,s=l*e.width;r<e.width;r++,s++){const c=e.map[s];if(!a.has(c))if(a.add(c),l>0&&c==e.map[s-e.width]){const e=o.nodeAt(c).attrs;t.setNodeMarkup(t.mapping.slice(i).map(c+n),null,{...e,rowspan:e.rowspan-1}),r+=e.colspan-1}else if(l<e.height&&c==e.map[s+e.width]){const s=o.nodeAt(c),a=s.attrs,p=s.type.create({...a,rowspan:s.attrs.rowspan-1},s.content),d=e.positionAt(l+1,r,o);t.insert(t.mapping.slice(i).map(n+d),p),r+=a.colspan-1}}}function _(t){const e=t.content;return 1==e.childCount&&e.child(0).isTextblock&&0==e.child(0).childCount}function F(t){return(e,o)=>{var n;const l=e.selection;let r,s;if(l instanceof y){if(l.$anchorCell.pos!=l.$headCell.pos)return!1;r=l.$anchorCell.nodeAfter,s=l.$anchorCell.pos}else{if(r=function(t){for(let e=t.depth;e>0;e--){const o=t.node(e).type.spec.tableRole;if("cell"===o||"header_cell"===o)return t.node(e)}return null}(l.$from),!r)return!1;s=null==(n=d(l.$from))?void 0:n.pos}if(null==r||null==s)return!1;if(1==r.attrs.colspan&&1==r.attrs.rowspan)return!1;if(o){let n=r.attrs;const i=[],a=n.colwidth;n.rowspan>1&&(n={...n,rowspan:1}),n.colspan>1&&(n={...n,colspan:1});const c=z(e),p=e.tr;for(let t=0;t<c.right-c.left;t++)i.push(a?{...n,colwidth:a&&a[t]?[a[t]]:null}:n);let d;for(let e=c.top;e<c.bottom;e++){let o=c.map.positionAt(e,c.left,c.table);e==c.top&&(o+=r.nodeSize);for(let n=c.left,l=0;n<c.right;n++,l++)n==c.left&&e==c.top||p.insert(d=p.mapping.map(o+c.tableStart,1),t({node:r,row:e,col:n}).createAndFill(i[l]))}p.setNodeMarkup(s,t({node:r,row:c.top,col:c.left}),i[0]),l instanceof y&&p.setSelection(new y(p.doc.resolve(l.$anchorCell.pos),d?p.doc.resolve(d):void 0)),o(p)}return!0}}function H(t,e,o){const n=e.map.cellsInRect({left:0,top:0,right:"row"==t?e.map.width:1,bottom:"column"==t?e.map.height:1});for(let t=0;t<n.length;t++){const l=e.table.nodeAt(n[t]);if(l&&l.type!==o.header_cell)return!1}return!0}function L(t,e){return(e=e||{useDeprecatedLogic:!1}).useDeprecatedLogic?function(t){return function(e,o){if(!h(e))return!1;if(o){const n=c(e.schema),l=z(e),r=e.tr,s=l.map.cellsInRect("column"==t?{left:l.left,top:0,right:l.right,bottom:l.map.height}:"row"==t?{left:0,top:l.top,right:l.map.width,bottom:l.bottom}:l),i=s.map((t=>l.table.nodeAt(t)));for(let t=0;t<s.length;t++)i[t].type==n.header_cell&&r.setNodeMarkup(l.tableStart+s[t],n.cell,i[t].attrs);if(0==r.steps.length)for(let t=0;t<s.length;t++)r.setNodeMarkup(l.tableStart+s[t],n.header_cell,i[t].attrs);o(r)}return!0}}(t):function(e,o){if(!h(e))return!1;if(o){const n=c(e.schema),l=z(e),r=e.tr,s=H("row",l,n),i=H("column",l,n),a=("column"===t?s:"row"===t&&i)?1:0,p="column"==t?{left:0,top:a,right:1,bottom:l.map.height}:"row"==t?{left:a,top:0,right:l.map.width,bottom:1}:l,d="column"==t?i?n.cell:n.header_cell:"row"==t?s?n.cell:n.header_cell:n.cell;l.map.cellsInRect(p).forEach((t=>{const e=t+l.tableStart,o=r.doc.nodeAt(e);o&&r.setNodeMarkup(e,d,o.attrs)})),o(r)}return!0}}L("row",{useDeprecatedLogic:!0}),L("column",{useDeprecatedLogic:!0});var B=L("cell",{useDeprecatedLogic:!0});function W(t,e){const o=t.selection;if(!(o instanceof y))return!1;if(e){const l=t.tr,r=c(t.schema).cell.createAndFill().content;o.forEachCell(((t,e)=>{t.content.eq(r)||l.replace(l.mapping.map(e+1),l.mapping.map(e+t.nodeSize-1),new n.Slice(r,0,0))})),l.docChanged&&e(l)}return!0}function I(t){if(!t.size)return null;let{content:e,openStart:o,openEnd:l}=t;for(;1==e.childCount&&(o>0&&l>0||"table"==e.child(0).type.spec.tableRole);)o--,l--,e=e.child(0).content;const r=e.child(0),s=r.type.spec.tableRole,i=r.type.schema,a=[];if("row"==s)for(let t=0;t<e.childCount;t++){let r=e.child(t).content;const s=t?0:Math.max(0,o-1),p=t<e.childCount-1?0:Math.max(0,l-1);(s||p)&&(r=P(c(i).row,new n.Slice(r,s,p)).content),a.push(r)}else{if("cell"!=s&&"header_cell"!=s)return null;a.push(o||l?P(c(i).row,new n.Slice(e,o,l)).content:e)}return function(t,e){const o=[];for(let t=0;t<e.length;t++){const n=e[t];for(let e=n.childCount-1;e>=0;e--){const{rowspan:l,colspan:r}=n.child(e).attrs;for(let e=t;e<t+l;e++)o[e]=(o[e]||0)+r}}let l=0;for(let t=0;t<o.length;t++)l=Math.max(l,o[t]);for(let r=0;r<o.length;r++)if(r>=e.length&&e.push(n.Fragment.empty),o[r]<l){const s=c(t).cell.createAndFill(),i=[];for(let t=o[r];t<l;t++)i.push(s);e[r]=e[r].append(n.Fragment.from(i))}return{height:e.length,width:l,rows:e}}(i,a)}function P(t,e){const o=t.createAndFill();return new s.Transform(o).replace(0,o.content.size,e).doc}function K({width:t,height:e,rows:o},l,r){if(t!=l){const e=[],r=[];for(let t=0;t<o.length;t++){const s=o[t],i=[];for(let o=e[t]||0,n=0;o<l;n++){let r=s.child(n%s.childCount);o+r.attrs.colspan>l&&(r=r.type.createChecked(b(r.attrs,r.attrs.colspan,o+r.attrs.colspan-l),r.content)),i.push(r),o+=r.attrs.colspan;for(let o=1;o<r.attrs.rowspan;o++)e[t+o]=(e[t+o]||0)+r.attrs.colspan}r.push(n.Fragment.from(i))}o=r,t=l}if(e!=r){const t=[];for(let l=0,s=0;l<r;l++,s++){const i=[],a=o[s%e];for(let t=0;t<a.childCount;t++){let e=a.child(t);l+e.attrs.rowspan>r&&(e=e.type.create({...e.attrs,rowspan:Math.max(1,r-e.attrs.rowspan)},e.content)),i.push(e)}t.push(n.Fragment.from(i))}o=t,e=r}return{width:t,height:e,rows:o}}function O(t,e,o,n,l,r,s,i){if(0==s||s==e.height)return!1;let a=!1;for(let c=l;c<r;c++){const l=s*e.width+c,r=e.map[l];if(e.map[l-e.width]==r){a=!0;const l=o.nodeAt(r),{top:p,left:d}=e.findCell(r);t.setNodeMarkup(t.mapping.slice(i).map(r+n),null,{...l.attrs,rowspan:s-p}),t.insert(t.mapping.slice(i).map(e.positionAt(s,d,o)),l.type.createAndFill({...l.attrs,rowspan:p+l.attrs.rowspan-s})),c+=l.attrs.colspan-1}}return a}function q(t,e,o,n,l,r,s,i){if(0==s||s==e.width)return!1;let a=!1;for(let c=l;c<r;c++){const l=c*e.width+s,r=e.map[l];if(e.map[l-1]==r){a=!0;const l=o.nodeAt(r),p=e.colCount(r),d=t.mapping.slice(i).map(r+n);t.setNodeMarkup(d,null,b(l.attrs,s-p,l.attrs.colspan-(s-p))),t.insert(d+l.nodeSize,l.type.createAndFill(b(l.attrs,0,s-p))),c+=l.attrs.rowspan-1}}return a}function V(t,e,o,l,r){let s=o?t.doc.nodeAt(o-1):t.doc;if(!s)throw new Error("No table found");let a=i.get(s);const{top:p,left:d}=l,h=d+r.width,f=p+r.height,u=t.tr;let m=0;function g(){if(s=o?u.doc.nodeAt(o-1):u.doc,!s)throw new Error("No table found");a=i.get(s),m=u.mapping.maps.length}(function(t,e,o,l,r,s,i){const a=c(t.doc.type.schema);let p,d;if(r>e.width)for(let n=0,s=0;n<e.height;n++){const c=o.child(n);s+=c.nodeSize;const h=[];let f;f=null==c.lastChild||c.lastChild.type==a.cell?p||(p=a.cell.createAndFill()):d||(d=a.header_cell.createAndFill());for(let t=e.width;t<r;t++)h.push(f);t.insert(t.mapping.slice(i).map(s-1+l),h)}if(s>e.height){const c=[];for(let t=0,n=(e.height-1)*e.width;t<Math.max(e.width,r);t++){const l=!(t>=e.width)&&o.nodeAt(e.map[n+t]).type==a.header_cell;c.push(l?d||(d=a.header_cell.createAndFill()):p||(p=a.cell.createAndFill()))}const h=a.row.create(null,n.Fragment.from(c)),f=[];for(let t=e.height;t<s;t++)f.push(h);t.insert(t.mapping.slice(i).map(l+o.nodeSize-2),f)}return!(!p&&!d)})(u,a,s,o,h,f,m)&&g(),O(u,a,s,o,d,h,p,m)&&g(),O(u,a,s,o,d,h,f,m)&&g(),q(u,a,s,o,p,f,d,m)&&g(),q(u,a,s,o,p,f,h,m)&&g();for(let t=p;t<f;t++){const e=a.positionAt(t,d,s),l=a.positionAt(t,h,s);u.replace(u.mapping.slice(m).map(e+o),u.mapping.slice(m).map(l+o),new n.Slice(r.rows[t-p],0,0))}g(),u.setSelection(new y(u.doc.resolve(o+a.positionAt(p,d,s)),u.doc.resolve(o+a.positionAt(f-1,h-1,s)))),e(u)}var X=r.keydownHandler({ArrowLeft:J("horiz",-1),ArrowRight:J("horiz",1),ArrowUp:J("vert",-1),ArrowDown:J("vert",1),"Shift-ArrowLeft":U("horiz",-1),"Shift-ArrowRight":U("horiz",1),"Shift-ArrowUp":U("vert",-1),"Shift-ArrowDown":U("vert",1),Backspace:W,"Mod-Backspace":W,Delete:W,"Mod-Delete":W});function j(t,e,o){return!o.eq(t.selection)&&(e&&e(t.tr.setSelection(o).scrollIntoView()),!0)}function J(t,e){return(n,l,r)=>{if(!r)return!1;const s=n.selection;if(s instanceof y)return j(n,l,o.Selection.near(s.$headCell,e));if("horiz"!=t&&!s.empty)return!1;const i=Z(r,t,e);if(null==i)return!1;if("horiz"==t)return j(n,l,o.Selection.near(n.doc.resolve(s.head+e),e));{const r=n.doc.resolve(i),s=C(r,t,e);let a;return a=s?o.Selection.near(s,1):e<0?o.Selection.near(n.doc.resolve(r.before(-1)),-1):o.Selection.near(n.doc.resolve(r.after(-1)),1),j(n,l,a)}}}function U(t,e){return(o,n,l)=>{if(!l)return!1;const r=o.selection;let s;if(r instanceof y)s=r;else{const n=Z(l,t,e);if(null==n)return!1;s=new y(o.doc.resolve(n))}const i=C(s.$headCell,t,e);return!!i&&j(o,n,new y(s.$anchorCell,i))}}function Y(t,e){const o=d(t.state.doc.resolve(e));return!!o&&(t.dispatch(t.state.tr.setSelection(new y(o))),!0)}function G(t,e,o){if(!h(t.state))return!1;let l=I(o);const r=t.state.selection;if(r instanceof y){l||(l={width:1,height:1,rows:[n.Fragment.from(P(c(t.state.schema).cell,o))]});const e=r.$anchorCell.node(-1),s=r.$anchorCell.start(-1),a=i.get(e).rectBetween(r.$anchorCell.pos-s,r.$headCell.pos-s);return l=K(l,a.right-a.left,a.bottom-a.top),V(t.state,t.dispatch,s,a,l),!0}if(l){const e=f(t.state),o=e.start(-1);return V(t.state,t.dispatch,o,i.get(e.node(-1)).findCell(e.pos-o),l),!0}return!1}function Q(t,e){var o;if(e.ctrlKey||e.metaKey)return;const n=tt(t,e.target);let l;if(e.shiftKey&&t.state.selection instanceof y)r(t.state.selection.$anchorCell,e),e.preventDefault();else if(e.shiftKey&&n&&null!=(l=d(t.state.selection.$anchor))&&(null==(o=et(t,e))?void 0:o.pos)!=l.pos)r(l,e),e.preventDefault();else if(!n)return;function r(e,o){let n=et(t,o);const l=null==p.getState(t.state);if(!n||!w(e,n)){if(!l)return;n=e}const r=new y(e,n);if(l||!t.state.selection.eq(r)){const o=t.state.tr.setSelection(r);l&&o.setMeta(p,e.pos),t.dispatch(o)}}function s(){t.root.removeEventListener("mouseup",s),t.root.removeEventListener("dragstart",s),t.root.removeEventListener("mousemove",i),null!=p.getState(t.state)&&t.dispatch(t.state.tr.setMeta(p,-1))}function i(o){const l=o,i=p.getState(t.state);let a;if(null!=i)a=t.state.doc.resolve(i);else if(tt(t,l.target)!=n&&(a=et(t,e),!a))return s();a&&r(a,l)}t.root.addEventListener("mouseup",s),t.root.addEventListener("dragstart",s),t.root.addEventListener("mousemove",i)}function Z(t,e,n){if(!(t.state.selection instanceof o.TextSelection))return null;const{$head:l}=t.state.selection;for(let o=l.depth-1;o>=0;o--){const r=l.node(o);if((n<0?l.index(o):l.indexAfter(o))!=(n<0?0:r.childCount))return null;if("cell"==r.type.spec.tableRole||"header_cell"==r.type.spec.tableRole){const r=l.before(o),s="vert"==e?n>0?"down":"up":n>0?"right":"left";return t.endOfTextblock(s)?r:null}}return null}function tt(t,e){for(;e&&e!=t.dom;e=e.parentNode)if("TD"==e.nodeName||"TH"==e.nodeName)return e;return null}function et(t,e){const o=t.posAtCoords({left:e.clientX,top:e.clientY});return o&&o?d(t.state.doc.resolve(o.pos)):null}var ot=class{constructor(t,e){this.node=t,this.defaultCellMinWidth=e,this.dom=document.createElement("div"),this.dom.className="tableWrapper",this.table=this.dom.appendChild(document.createElement("table")),this.table.style.setProperty("--default-cell-min-width",`${e}px`),this.colgroup=this.table.appendChild(document.createElement("colgroup")),nt(t,this.colgroup,this.table,e),this.contentDOM=this.table.appendChild(document.createElement("tbody"))}update(t){return t.type==this.node.type&&(this.node=t,nt(t,this.colgroup,this.table,this.defaultCellMinWidth),!0)}ignoreMutation(t){return"attributes"==t.type&&(t.target==this.table||this.colgroup.contains(t.target))}};function nt(t,e,o,n,l,r){var s;let i=0,a=!0,c=e.firstChild;const p=t.firstChild;if(p){for(let t=0,o=0;t<p.childCount;t++){const{colspan:s,colwidth:d}=p.child(t).attrs;for(let t=0;t<s;t++,o++){const s=l==o?r:d&&d[t],p=s?s+"px":"";if(i+=s||n,s||(a=!1),c)c.style.width!=p&&(c.style.width=p),c=c.nextSibling;else{const t=document.createElement("col");t.style.width=p,e.appendChild(t)}}}for(;c;){const t=c.nextSibling;null==(s=c.parentNode)||s.removeChild(c),c=t}a?(o.style.width=i+"px",o.style.minWidth=""):(o.style.width="",o.style.minWidth=i+"px")}}var lt=new o.PluginKey("tableColumnResizing");var rt=class t{constructor(t,e){this.activeHandle=t,this.dragging=e}apply(e){const o=this,n=e.getMeta(lt);if(n&&null!=n.setHandle)return new t(n.setHandle,!1);if(n&&void 0!==n.setDragging)return new t(o.activeHandle,n.setDragging);if(o.activeHandle>-1&&e.docChanged){let n=e.mapping.map(o.activeHandle,-1);return m(e.doc.resolve(n))||(n=-1),new t(n,o.dragging)}return o}};function st(t,e,o,n){const l="right"==o?-n:n,r=t.posAtCoords({left:e.clientX+l,top:e.clientY});if(!r)return-1;const{pos:s}=r,a=d(t.state.doc.resolve(s));if(!a)return-1;if("right"==o)return a.pos;const c=i.get(a.node(-1)),p=a.start(-1),h=c.map.indexOf(a.pos-p);return h%c.width==0?-1:p+c.map[h-1]}function it(t,e,o){const n=e.clientX-t.startX;return Math.max(o,t.startWidth+n)}function at(t,e){t.dispatch(t.state.tr.setMeta(lt,{setHandle:e}))}function ct(t,e,o,n){const l=t.state.doc.resolve(e),r=l.node(-1),s=l.start(-1),a=i.get(r).colCount(l.pos-s)+l.nodeAfter.attrs.colspan-1;let c=t.domAtPos(l.start(-1)).node;for(;c&&"TABLE"!=c.nodeName;)c=c.parentNode;c&&nt(r,c.firstChild,c,n,a,o)}function pt(t){return Array(t).fill(0)}exports.CellBookmark=x,exports.CellSelection=y,exports.ResizeState=rt,exports.TableMap=i,exports.TableView=ot,exports.__clipCells=K,exports.__insertCells=V,exports.__pastedCells=I,exports.addColSpan=v,exports.addColumn=N,exports.addColumnAfter=function(t,e){if(!h(t))return!1;if(e){const o=z(t);e(N(t.tr,o,o.right))}return!0},exports.addColumnBefore=function(t,e){if(!h(t))return!1;if(e){const o=z(t);e(N(t.tr,o,o.left))}return!0},exports.addRow=T,exports.addRowAfter=function(t,e){if(!h(t))return!1;if(e){const o=z(t);e(T(t.tr,o,o.bottom))}return!0},exports.addRowBefore=function(t,e){if(!h(t))return!1;if(e){const o=z(t);e(T(t.tr,o,o.top))}return!0},exports.cellAround=d,exports.cellNear=u,exports.columnIsHeader=S,exports.columnResizing=function({handleWidth:t=5,cellMinWidth:e=25,defaultCellMinWidth:n=100,View:r=ot,lastColumnResizable:s=!0}={}){const a=new o.Plugin({key:lt,state:{init(t,e){var o,l;const s=null==(l=null==(o=a.spec)?void 0:o.props)?void 0:l.nodeViews,i=c(e.schema).table.name;return r&&s&&(s[i]=(t,e)=>new r(t,n,e)),new rt(-1,!1)},apply:(t,e)=>e.apply(t)},props:{attributes:t=>{const e=lt.getState(t);return e&&e.activeHandle>-1?{class:"resize-cursor"}:{}},handleDOMEvents:{mousemove:(e,o)=>{!function(t,e,o,n){if(!t.editable)return;const l=lt.getState(t.state);if(!l)return;if(!l.dragging){const r=function(t){for(;t&&"TD"!=t.nodeName&&"TH"!=t.nodeName;)t=t.classList&&t.classList.contains("ProseMirror")?null:t.parentNode;return t}(e.target);let s=-1;if(r){const{left:n,right:l}=r.getBoundingClientRect();e.clientX-n<=o?s=st(t,e,"left",o):l-e.clientX<=o&&(s=st(t,e,"right",o))}if(s!=l.activeHandle){if(!n&&-1!==s){const e=t.state.doc.resolve(s),o=e.node(-1),n=i.get(o),l=e.start(-1);if(n.colCount(e.pos-l)+e.nodeAfter.attrs.colspan-1==n.width-1)return}at(t,s)}}}(e,o,t,s)},mouseleave:t=>{!function(t){if(!t.editable)return;const e=lt.getState(t.state);e&&e.activeHandle>-1&&!e.dragging&&at(t,-1)}(t)},mousedown:(t,o)=>{!function(t,e,o,n){var l;if(!t.editable)return!1;const r=null!=(l=t.dom.ownerDocument.defaultView)?l:window,s=lt.getState(t.state);if(!s||-1==s.activeHandle||s.dragging)return!1;const a=t.state.doc.nodeAt(s.activeHandle),c=function(t,e,{colspan:o,colwidth:n}){const l=n&&n[n.length-1];if(l)return l;const r=t.domAtPos(e);let s=r.node.childNodes[r.offset].offsetWidth,i=o;if(n)for(let t=0;t<o;t++)n[t]&&(s-=n[t],i--);return s/i}(t,s.activeHandle,a.attrs);function p(e){r.removeEventListener("mouseup",p),r.removeEventListener("mousemove",d);const n=lt.getState(t.state);(null==n?void 0:n.dragging)&&(!function(t,e,o){const n=t.state.doc.resolve(e),l=n.node(-1),r=i.get(l),s=n.start(-1),a=r.colCount(n.pos-s)+n.nodeAfter.attrs.colspan-1,c=t.state.tr;for(let t=0;t<r.height;t++){const e=t*r.width+a;if(t&&r.map[e]==r.map[e-r.width])continue;const n=r.map[e],i=l.nodeAt(n).attrs,p=1==i.colspan?0:a-r.colCount(n);if(i.colwidth&&i.colwidth[p]==o)continue;const d=i.colwidth?i.colwidth.slice():pt(i.colspan);d[p]=o,c.setNodeMarkup(s+n,null,{...i,colwidth:d})}c.docChanged&&t.dispatch(c)}(t,n.activeHandle,it(n.dragging,e,o)),t.dispatch(t.state.tr.setMeta(lt,{setDragging:null})))}function d(e){if(!e.which)return p(e);const l=lt.getState(t.state);if(l&&l.dragging){const r=it(l.dragging,e,o);ct(t,l.activeHandle,r,n)}}t.dispatch(t.state.tr.setMeta(lt,{setDragging:{startX:e.clientX,startWidth:c}})),ct(t,s.activeHandle,c,n),r.addEventListener("mouseup",p),r.addEventListener("mousemove",d),e.preventDefault()}(t,o,e,n)}},decorations:t=>{const e=lt.getState(t);if(e&&e.activeHandle>-1)return function(t,e){var o;const n=[],r=t.doc.resolve(e),s=r.node(-1);if(!s)return l.DecorationSet.empty;const a=i.get(s),c=r.start(-1),p=a.colCount(r.pos-c)+r.nodeAfter.attrs.colspan-1;for(let e=0;e<a.height;e++){const r=p+e*a.width;if(!(p!=a.width-1&&a.map[r]==a.map[r+1]||0!=e&&a.map[r]==a.map[r-a.width])){const e=a.map[r],i=c+e+s.nodeAt(e).nodeSize-1,p=document.createElement("div");p.className="column-resize-handle",(null==(o=lt.getState(t))?void 0:o.dragging)&&n.push(l.Decoration.node(c+e,c+e+s.nodeAt(e).nodeSize,{class:"column-resize-dragging"})),n.push(l.Decoration.widget(i,p))}}return l.DecorationSet.create(t.doc,n)}(t,e.activeHandle)},nodeViews:{}}});return a},exports.columnResizingPluginKey=lt,exports.deleteCellSelection=W,exports.deleteColumn=function(t,e){if(!h(t))return!1;if(e){const o=z(t),n=t.tr;if(0==o.left&&o.right==o.map.width)return!1;for(let t=o.right-1;E(n,o,t),t!=o.left;t--){const t=o.tableStart?n.doc.nodeAt(o.tableStart-1):n.doc;if(!t)throw RangeError("No table found");o.table=t,o.map=i.get(t)}e(n)}return!0},exports.deleteRow=function(t,e){if(!h(t))return!1;if(e){const o=z(t),n=t.tr;if(0==o.top&&o.bottom==o.map.height)return!1;for(let t=o.bottom-1;D(n,o,t),t!=o.top;t--){const t=o.tableStart?n.doc.nodeAt(o.tableStart-1):n.doc;if(!t)throw RangeError("No table found");o.table=t,o.map=i.get(o.table)}e(n)}return!0},exports.deleteTable=function(t,e){const o=t.selection.$anchor;for(let n=o.depth;n>0;n--){if("table"==o.node(n).type.spec.tableRole)return e&&e(t.tr.delete(o.before(n),o.after(n)).scrollIntoView()),!0}return!1},exports.fixTables=M,exports.fixTablesKey=$,exports.goToNextCell=function(t){return function(e,n){if(!h(e))return!1;const l=function(t,e){if(e<0){const e=t.nodeBefore;if(e)return t.pos-e.nodeSize;for(let e=t.index(-1)-1,o=t.before();e>=0;e--){const n=t.node(-1).child(e),l=n.lastChild;if(l)return o-1-l.nodeSize;o-=n.nodeSize}}else{if(t.index()<t.parent.childCount-1)return t.pos+t.nodeAfter.nodeSize;const e=t.node(-1);for(let o=t.indexAfter(-1),n=t.after();o<e.childCount;o++){const t=e.child(o);if(t.childCount)return n+1;n+=t.nodeSize}}return null}(f(e),t);if(null==l)return!1;if(n){const t=e.doc.resolve(l);n(e.tr.setSelection(o.TextSelection.between(t,g(t))).scrollIntoView())}return!0}},exports.handlePaste=G,exports.inSameTable=w,exports.isInTable=h,exports.mergeCells=function(t,e){const o=t.selection;if(!(o instanceof y)||o.$anchorCell.pos==o.$headCell.pos)return!1;const l=z(t),{map:r}=l;if(function({width:t,height:e,map:o},n){let l=n.top*t+n.left,r=l,s=(n.bottom-1)*t+n.left,i=l+(n.right-n.left-1);for(let e=n.top;e<n.bottom;e++){if(n.left>0&&o[r]==o[r-1]||n.right<t&&o[i]==o[i+1])return!0;r+=t,i+=t}for(let r=n.left;r<n.right;r++){if(n.top>0&&o[l]==o[l-t]||n.bottom<e&&o[s]==o[s+t])return!0;l++,s++}return!1}(r,l))return!1;if(e){const o=t.tr,s={};let i,a,c=n.Fragment.empty;for(let t=l.top;t<l.bottom;t++)for(let e=l.left;e<l.right;e++){const n=r.map[t*r.width+e],p=l.table.nodeAt(n);if(!s[n]&&p)if(s[n]=!0,null==i)i=n,a=p;else{_(p)||(c=c.append(p.content));const t=o.mapping.map(n+l.tableStart);o.delete(t,t+p.nodeSize)}}if(null==i||null==a)return!0;if(o.setNodeMarkup(i+l.tableStart,null,{...v(a.attrs,a.attrs.colspan,l.right-l.left-a.attrs.colspan),rowspan:l.bottom-l.top}),c.size){const t=i+1+a.content.size,e=_(a)?i+1:t;o.replaceWith(e+l.tableStart,t+l.tableStart,c)}o.setSelection(new y(o.doc.resolve(i+l.tableStart))),e(o)}return!0},exports.moveCellForward=g,exports.nextCell=C,exports.pointsAtCell=m,exports.removeColSpan=b,exports.removeColumn=E,exports.removeRow=D,exports.rowIsHeader=k,exports.selectedRect=z,exports.selectionCell=f,exports.setCellAttr=function(t,e){return function(o,n){if(!h(o))return!1;const l=f(o);if(l.nodeAfter.attrs[t]===e)return!1;if(n){const r=o.tr;o.selection instanceof y?o.selection.forEachCell(((o,n)=>{o.attrs[t]!==e&&r.setNodeMarkup(n,null,{...o.attrs,[t]:e})})):r.setNodeMarkup(l.pos,null,{...l.nodeAfter.attrs,[t]:e}),n(r)}return!0}},exports.splitCell=function(t,e){const o=c(t.schema);return F((({node:t})=>o[t.type.spec.tableRole]))(t,e)},exports.splitCellWithType=F,exports.tableEditing=function({allowTableNodeSelection:t=!1}={}){return new o.Plugin({key:p,state:{init:()=>null,apply(t,e){const o=t.getMeta(p);if(null!=o)return-1==o?null:o;if(null==e||!t.docChanged)return e;const{deleted:n,pos:l}=t.mapping.mapResult(e);return n?null:l}},props:{decorations:A,handleDOMEvents:{mousedown:Q},createSelectionBetween:t=>null!=p.getState(t.state)?t.state.selection:null,handleTripleClick:Y,handleKeyDown:X,handlePaste:G},appendTransaction:(e,n,l)=>function(t,e,n){const l=(e||t).selection,r=(e||t).doc;let s,a;if(l instanceof o.NodeSelection&&(a=l.node.type.spec.tableRole)){if("cell"==a||"header_cell"==a)s=y.create(r,l.from);else if("row"==a){const t=r.resolve(l.from+1);s=y.rowSelection(t,t)}else if(!n){const t=i.get(l.node),e=l.from+1,o=e+t.map[t.width*t.height-1];s=y.create(r,e+1,o)}}else l instanceof o.TextSelection&&function({$from:t,$to:e}){if(t.pos==e.pos||t.pos<e.pos-6)return!1;let o=t.pos,n=e.pos,l=t.depth;for(;l>=0&&!(t.after(l+1)<t.end(l));l--,o++);for(let t=e.depth;t>=0&&!(e.before(t+1)>e.start(t));t--,n--);return o==n&&/row|table/.test(t.node(l).type.spec.tableRole)}(l)?s=o.TextSelection.create(r,l.from):l instanceof o.TextSelection&&function({$from:t,$to:e}){let o,n;for(let e=t.depth;e>0;e--){const n=t.node(e);if("cell"===n.type.spec.tableRole||"header_cell"===n.type.spec.tableRole){o=n;break}}for(let t=e.depth;t>0;t--){const o=e.node(t);if("cell"===o.type.spec.tableRole||"header_cell"===o.type.spec.tableRole){n=o;break}}return o!==n&&0===e.parentOffset}(l)&&(s=o.TextSelection.create(r,l.$from.start(),l.$from.end()));return s&&(e||(e=t.tr)).setSelection(s),e}(l,M(l,n),t)})},exports.tableEditingKey=p,exports.tableNodeTypes=c,exports.toggleHeader=L,exports.toggleHeaderCell=B,exports.updateColumnsOnResize=nt;
|
|
2
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../../../../../node_modules/prosemirror-tables/dist/index.js"],"sourcesContent":["// src/index.ts\nimport { Plugin as Plugin2 } from \"prosemirror-state\";\n\n// src/cellselection.ts\nimport { Fragment, Slice } from \"prosemirror-model\";\nimport {\n NodeSelection as NodeSelection2,\n Selection,\n SelectionRange,\n TextSelection\n} from \"prosemirror-state\";\nimport { Decoration, DecorationSet } from \"prosemirror-view\";\n\n// src/tablemap.ts\nvar readFromCache;\nvar addToCache;\nif (typeof WeakMap != \"undefined\") {\n let cache = /* @__PURE__ */ new WeakMap();\n readFromCache = (key) => cache.get(key);\n addToCache = (key, value) => {\n cache.set(key, value);\n return value;\n };\n} else {\n const cache = [];\n const cacheSize = 10;\n let cachePos = 0;\n readFromCache = (key) => {\n for (let i = 0; i < cache.length; i += 2)\n if (cache[i] == key) return cache[i + 1];\n };\n addToCache = (key, value) => {\n if (cachePos == cacheSize) cachePos = 0;\n cache[cachePos++] = key;\n return cache[cachePos++] = value;\n };\n}\nvar TableMap = class {\n constructor(width, height, map, problems) {\n this.width = width;\n this.height = height;\n this.map = map;\n this.problems = problems;\n }\n // Find the dimensions of the cell at the given position.\n findCell(pos) {\n for (let i = 0; i < this.map.length; i++) {\n const curPos = this.map[i];\n if (curPos != pos) continue;\n const left = i % this.width;\n const top = i / this.width | 0;\n let right = left + 1;\n let bottom = top + 1;\n for (let j = 1; right < this.width && this.map[i + j] == curPos; j++) {\n right++;\n }\n for (let j = 1; bottom < this.height && this.map[i + this.width * j] == curPos; j++) {\n bottom++;\n }\n return { left, top, right, bottom };\n }\n throw new RangeError(`No cell with offset ${pos} found`);\n }\n // Find the left side of the cell at the given position.\n colCount(pos) {\n for (let i = 0; i < this.map.length; i++) {\n if (this.map[i] == pos) {\n return i % this.width;\n }\n }\n throw new RangeError(`No cell with offset ${pos} found`);\n }\n // Find the next cell in the given direction, starting from the cell\n // at `pos`, if any.\n nextCell(pos, axis, dir) {\n const { left, right, top, bottom } = this.findCell(pos);\n if (axis == \"horiz\") {\n if (dir < 0 ? left == 0 : right == this.width) return null;\n return this.map[top * this.width + (dir < 0 ? left - 1 : right)];\n } else {\n if (dir < 0 ? top == 0 : bottom == this.height) return null;\n return this.map[left + this.width * (dir < 0 ? top - 1 : bottom)];\n }\n }\n // Get the rectangle spanning the two given cells.\n rectBetween(a, b) {\n const {\n left: leftA,\n right: rightA,\n top: topA,\n bottom: bottomA\n } = this.findCell(a);\n const {\n left: leftB,\n right: rightB,\n top: topB,\n bottom: bottomB\n } = this.findCell(b);\n return {\n left: Math.min(leftA, leftB),\n top: Math.min(topA, topB),\n right: Math.max(rightA, rightB),\n bottom: Math.max(bottomA, bottomB)\n };\n }\n // Return the position of all cells that have the top left corner in\n // the given rectangle.\n cellsInRect(rect) {\n const result = [];\n const seen = {};\n for (let row = rect.top; row < rect.bottom; row++) {\n for (let col = rect.left; col < rect.right; col++) {\n const index = row * this.width + col;\n const pos = this.map[index];\n if (seen[pos]) continue;\n seen[pos] = true;\n if (col == rect.left && col && this.map[index - 1] == pos || row == rect.top && row && this.map[index - this.width] == pos) {\n continue;\n }\n result.push(pos);\n }\n }\n return result;\n }\n // Return the position at which the cell at the given row and column\n // starts, or would start, if a cell started there.\n positionAt(row, col, table) {\n for (let i = 0, rowStart = 0; ; i++) {\n const rowEnd = rowStart + table.child(i).nodeSize;\n if (i == row) {\n let index = col + row * this.width;\n const rowEndIndex = (row + 1) * this.width;\n while (index < rowEndIndex && this.map[index] < rowStart) index++;\n return index == rowEndIndex ? rowEnd - 1 : this.map[index];\n }\n rowStart = rowEnd;\n }\n }\n // Find the table map for the given table node.\n static get(table) {\n return readFromCache(table) || addToCache(table, computeMap(table));\n }\n};\nfunction computeMap(table) {\n if (table.type.spec.tableRole != \"table\")\n throw new RangeError(\"Not a table node: \" + table.type.name);\n const width = findWidth(table), height = table.childCount;\n const map = [];\n let mapPos = 0;\n let problems = null;\n const colWidths = [];\n for (let i = 0, e = width * height; i < e; i++) map[i] = 0;\n for (let row = 0, pos = 0; row < height; row++) {\n const rowNode = table.child(row);\n pos++;\n for (let i = 0; ; i++) {\n while (mapPos < map.length && map[mapPos] != 0) mapPos++;\n if (i == rowNode.childCount) break;\n const cellNode = rowNode.child(i);\n const { colspan, rowspan, colwidth } = cellNode.attrs;\n for (let h = 0; h < rowspan; h++) {\n if (h + row >= height) {\n (problems || (problems = [])).push({\n type: \"overlong_rowspan\",\n pos,\n n: rowspan - h\n });\n break;\n }\n const start = mapPos + h * width;\n for (let w = 0; w < colspan; w++) {\n if (map[start + w] == 0) map[start + w] = pos;\n else\n (problems || (problems = [])).push({\n type: \"collision\",\n row,\n pos,\n n: colspan - w\n });\n const colW = colwidth && colwidth[w];\n if (colW) {\n const widthIndex = (start + w) % width * 2, prev = colWidths[widthIndex];\n if (prev == null || prev != colW && colWidths[widthIndex + 1] == 1) {\n colWidths[widthIndex] = colW;\n colWidths[widthIndex + 1] = 1;\n } else if (prev == colW) {\n colWidths[widthIndex + 1]++;\n }\n }\n }\n }\n mapPos += colspan;\n pos += cellNode.nodeSize;\n }\n const expectedPos = (row + 1) * width;\n let missing = 0;\n while (mapPos < expectedPos) if (map[mapPos++] == 0) missing++;\n if (missing)\n (problems || (problems = [])).push({ type: \"missing\", row, n: missing });\n pos++;\n }\n if (width === 0 || height === 0)\n (problems || (problems = [])).push({ type: \"zero_sized\" });\n const tableMap = new TableMap(width, height, map, problems);\n let badWidths = false;\n for (let i = 0; !badWidths && i < colWidths.length; i += 2)\n if (colWidths[i] != null && colWidths[i + 1] < height) badWidths = true;\n if (badWidths) findBadColWidths(tableMap, colWidths, table);\n return tableMap;\n}\nfunction findWidth(table) {\n let width = -1;\n let hasRowSpan = false;\n for (let row = 0; row < table.childCount; row++) {\n const rowNode = table.child(row);\n let rowWidth = 0;\n if (hasRowSpan)\n for (let j = 0; j < row; j++) {\n const prevRow = table.child(j);\n for (let i = 0; i < prevRow.childCount; i++) {\n const cell = prevRow.child(i);\n if (j + cell.attrs.rowspan > row) rowWidth += cell.attrs.colspan;\n }\n }\n for (let i = 0; i < rowNode.childCount; i++) {\n const cell = rowNode.child(i);\n rowWidth += cell.attrs.colspan;\n if (cell.attrs.rowspan > 1) hasRowSpan = true;\n }\n if (width == -1) width = rowWidth;\n else if (width != rowWidth) width = Math.max(width, rowWidth);\n }\n return width;\n}\nfunction findBadColWidths(map, colWidths, table) {\n if (!map.problems) map.problems = [];\n const seen = {};\n for (let i = 0; i < map.map.length; i++) {\n const pos = map.map[i];\n if (seen[pos]) continue;\n seen[pos] = true;\n const node = table.nodeAt(pos);\n if (!node) {\n throw new RangeError(`No cell with offset ${pos} found`);\n }\n let updated = null;\n const attrs = node.attrs;\n for (let j = 0; j < attrs.colspan; j++) {\n const col = (i + j) % map.width;\n const colWidth = colWidths[col * 2];\n if (colWidth != null && (!attrs.colwidth || attrs.colwidth[j] != colWidth))\n (updated || (updated = freshColWidth(attrs)))[j] = colWidth;\n }\n if (updated)\n map.problems.unshift({\n type: \"colwidth mismatch\",\n pos,\n colwidth: updated\n });\n }\n}\nfunction freshColWidth(attrs) {\n if (attrs.colwidth) return attrs.colwidth.slice();\n const result = [];\n for (let i = 0; i < attrs.colspan; i++) result.push(0);\n return result;\n}\n\n// src/util.ts\nimport { PluginKey } from \"prosemirror-state\";\n\n// src/schema.ts\nfunction getCellAttrs(dom, extraAttrs) {\n if (typeof dom === \"string\") {\n return {};\n }\n const widthAttr = dom.getAttribute(\"data-colwidth\");\n const widths = widthAttr && /^\\d+(,\\d+)*$/.test(widthAttr) ? widthAttr.split(\",\").map((s) => Number(s)) : null;\n const colspan = Number(dom.getAttribute(\"colspan\") || 1);\n const result = {\n colspan,\n rowspan: Number(dom.getAttribute(\"rowspan\") || 1),\n colwidth: widths && widths.length == colspan ? widths : null\n };\n for (const prop in extraAttrs) {\n const getter = extraAttrs[prop].getFromDOM;\n const value = getter && getter(dom);\n if (value != null) {\n result[prop] = value;\n }\n }\n return result;\n}\nfunction setCellAttrs(node, extraAttrs) {\n const attrs = {};\n if (node.attrs.colspan != 1) attrs.colspan = node.attrs.colspan;\n if (node.attrs.rowspan != 1) attrs.rowspan = node.attrs.rowspan;\n if (node.attrs.colwidth)\n attrs[\"data-colwidth\"] = node.attrs.colwidth.join(\",\");\n for (const prop in extraAttrs) {\n const setter = extraAttrs[prop].setDOMAttr;\n if (setter) setter(node.attrs[prop], attrs);\n }\n return attrs;\n}\nfunction validateColwidth(value) {\n if (value === null) {\n return;\n }\n if (!Array.isArray(value)) {\n throw new TypeError(\"colwidth must be null or an array\");\n }\n for (const item of value) {\n if (typeof item !== \"number\") {\n throw new TypeError(\"colwidth must be null or an array of numbers\");\n }\n }\n}\nfunction tableNodes(options) {\n const extraAttrs = options.cellAttributes || {};\n const cellAttrs = {\n colspan: { default: 1, validate: \"number\" },\n rowspan: { default: 1, validate: \"number\" },\n colwidth: { default: null, validate: validateColwidth }\n };\n for (const prop in extraAttrs)\n cellAttrs[prop] = {\n default: extraAttrs[prop].default,\n validate: extraAttrs[prop].validate\n };\n return {\n table: {\n content: \"table_row+\",\n tableRole: \"table\",\n isolating: true,\n group: options.tableGroup,\n parseDOM: [{ tag: \"table\" }],\n toDOM() {\n return [\"table\", [\"tbody\", 0]];\n }\n },\n table_row: {\n content: \"(table_cell | table_header)*\",\n tableRole: \"row\",\n parseDOM: [{ tag: \"tr\" }],\n toDOM() {\n return [\"tr\", 0];\n }\n },\n table_cell: {\n content: options.cellContent,\n attrs: cellAttrs,\n tableRole: \"cell\",\n isolating: true,\n parseDOM: [\n { tag: \"td\", getAttrs: (dom) => getCellAttrs(dom, extraAttrs) }\n ],\n toDOM(node) {\n return [\"td\", setCellAttrs(node, extraAttrs), 0];\n }\n },\n table_header: {\n content: options.cellContent,\n attrs: cellAttrs,\n tableRole: \"header_cell\",\n isolating: true,\n parseDOM: [\n { tag: \"th\", getAttrs: (dom) => getCellAttrs(dom, extraAttrs) }\n ],\n toDOM(node) {\n return [\"th\", setCellAttrs(node, extraAttrs), 0];\n }\n }\n };\n}\nfunction tableNodeTypes(schema) {\n let result = schema.cached.tableNodeTypes;\n if (!result) {\n result = schema.cached.tableNodeTypes = {};\n for (const name in schema.nodes) {\n const type = schema.nodes[name], role = type.spec.tableRole;\n if (role) result[role] = type;\n }\n }\n return result;\n}\n\n// src/util.ts\nvar tableEditingKey = new PluginKey(\"selectingCells\");\nfunction cellAround($pos) {\n for (let d = $pos.depth - 1; d > 0; d--)\n if ($pos.node(d).type.spec.tableRole == \"row\")\n return $pos.node(0).resolve($pos.before(d + 1));\n return null;\n}\nfunction cellWrapping($pos) {\n for (let d = $pos.depth; d > 0; d--) {\n const role = $pos.node(d).type.spec.tableRole;\n if (role === \"cell\" || role === \"header_cell\") return $pos.node(d);\n }\n return null;\n}\nfunction isInTable(state) {\n const $head = state.selection.$head;\n for (let d = $head.depth; d > 0; d--)\n if ($head.node(d).type.spec.tableRole == \"row\") return true;\n return false;\n}\nfunction selectionCell(state) {\n const sel = state.selection;\n if (\"$anchorCell\" in sel && sel.$anchorCell) {\n return sel.$anchorCell.pos > sel.$headCell.pos ? sel.$anchorCell : sel.$headCell;\n } else if (\"node\" in sel && sel.node && sel.node.type.spec.tableRole == \"cell\") {\n return sel.$anchor;\n }\n const $cell = cellAround(sel.$head) || cellNear(sel.$head);\n if ($cell) {\n return $cell;\n }\n throw new RangeError(`No cell found around position ${sel.head}`);\n}\nfunction cellNear($pos) {\n for (let after = $pos.nodeAfter, pos = $pos.pos; after; after = after.firstChild, pos++) {\n const role = after.type.spec.tableRole;\n if (role == \"cell\" || role == \"header_cell\") return $pos.doc.resolve(pos);\n }\n for (let before = $pos.nodeBefore, pos = $pos.pos; before; before = before.lastChild, pos--) {\n const role = before.type.spec.tableRole;\n if (role == \"cell\" || role == \"header_cell\")\n return $pos.doc.resolve(pos - before.nodeSize);\n }\n}\nfunction pointsAtCell($pos) {\n return $pos.parent.type.spec.tableRole == \"row\" && !!$pos.nodeAfter;\n}\nfunction moveCellForward($pos) {\n return $pos.node(0).resolve($pos.pos + $pos.nodeAfter.nodeSize);\n}\nfunction inSameTable($cellA, $cellB) {\n return $cellA.depth == $cellB.depth && $cellA.pos >= $cellB.start(-1) && $cellA.pos <= $cellB.end(-1);\n}\nfunction findCell($pos) {\n return TableMap.get($pos.node(-1)).findCell($pos.pos - $pos.start(-1));\n}\nfunction colCount($pos) {\n return TableMap.get($pos.node(-1)).colCount($pos.pos - $pos.start(-1));\n}\nfunction nextCell($pos, axis, dir) {\n const table = $pos.node(-1);\n const map = TableMap.get(table);\n const tableStart = $pos.start(-1);\n const moved = map.nextCell($pos.pos - tableStart, axis, dir);\n return moved == null ? null : $pos.node(0).resolve(tableStart + moved);\n}\nfunction removeColSpan(attrs, pos, n = 1) {\n const result = { ...attrs, colspan: attrs.colspan - n };\n if (result.colwidth) {\n result.colwidth = result.colwidth.slice();\n result.colwidth.splice(pos, n);\n if (!result.colwidth.some((w) => w > 0)) result.colwidth = null;\n }\n return result;\n}\nfunction addColSpan(attrs, pos, n = 1) {\n const result = { ...attrs, colspan: attrs.colspan + n };\n if (result.colwidth) {\n result.colwidth = result.colwidth.slice();\n for (let i = 0; i < n; i++) result.colwidth.splice(pos, 0, 0);\n }\n return result;\n}\nfunction columnIsHeader(map, table, col) {\n const headerCell = tableNodeTypes(table.type.schema).header_cell;\n for (let row = 0; row < map.height; row++)\n if (table.nodeAt(map.map[col + row * map.width]).type != headerCell)\n return false;\n return true;\n}\n\n// src/cellselection.ts\nvar CellSelection = class _CellSelection extends Selection {\n // A table selection is identified by its anchor and head cells. The\n // positions given to this constructor should point _before_ two\n // cells in the same table. They may be the same, to select a single\n // cell.\n constructor($anchorCell, $headCell = $anchorCell) {\n const table = $anchorCell.node(-1);\n const map = TableMap.get(table);\n const tableStart = $anchorCell.start(-1);\n const rect = map.rectBetween(\n $anchorCell.pos - tableStart,\n $headCell.pos - tableStart\n );\n const doc = $anchorCell.node(0);\n const cells = map.cellsInRect(rect).filter((p) => p != $headCell.pos - tableStart);\n cells.unshift($headCell.pos - tableStart);\n const ranges = cells.map((pos) => {\n const cell = table.nodeAt(pos);\n if (!cell) {\n throw RangeError(`No cell with offset ${pos} found`);\n }\n const from = tableStart + pos + 1;\n return new SelectionRange(\n doc.resolve(from),\n doc.resolve(from + cell.content.size)\n );\n });\n super(ranges[0].$from, ranges[0].$to, ranges);\n this.$anchorCell = $anchorCell;\n this.$headCell = $headCell;\n }\n map(doc, mapping) {\n const $anchorCell = doc.resolve(mapping.map(this.$anchorCell.pos));\n const $headCell = doc.resolve(mapping.map(this.$headCell.pos));\n if (pointsAtCell($anchorCell) && pointsAtCell($headCell) && inSameTable($anchorCell, $headCell)) {\n const tableChanged = this.$anchorCell.node(-1) != $anchorCell.node(-1);\n if (tableChanged && this.isRowSelection())\n return _CellSelection.rowSelection($anchorCell, $headCell);\n else if (tableChanged && this.isColSelection())\n return _CellSelection.colSelection($anchorCell, $headCell);\n else return new _CellSelection($anchorCell, $headCell);\n }\n return TextSelection.between($anchorCell, $headCell);\n }\n // Returns a rectangular slice of table rows containing the selected\n // cells.\n content() {\n const table = this.$anchorCell.node(-1);\n const map = TableMap.get(table);\n const tableStart = this.$anchorCell.start(-1);\n const rect = map.rectBetween(\n this.$anchorCell.pos - tableStart,\n this.$headCell.pos - tableStart\n );\n const seen = {};\n const rows = [];\n for (let row = rect.top; row < rect.bottom; row++) {\n const rowContent = [];\n for (let index = row * map.width + rect.left, col = rect.left; col < rect.right; col++, index++) {\n const pos = map.map[index];\n if (seen[pos]) continue;\n seen[pos] = true;\n const cellRect = map.findCell(pos);\n let cell = table.nodeAt(pos);\n if (!cell) {\n throw RangeError(`No cell with offset ${pos} found`);\n }\n const extraLeft = rect.left - cellRect.left;\n const extraRight = cellRect.right - rect.right;\n if (extraLeft > 0 || extraRight > 0) {\n let attrs = cell.attrs;\n if (extraLeft > 0) {\n attrs = removeColSpan(attrs, 0, extraLeft);\n }\n if (extraRight > 0) {\n attrs = removeColSpan(\n attrs,\n attrs.colspan - extraRight,\n extraRight\n );\n }\n if (cellRect.left < rect.left) {\n cell = cell.type.createAndFill(attrs);\n if (!cell) {\n throw RangeError(\n `Could not create cell with attrs ${JSON.stringify(attrs)}`\n );\n }\n } else {\n cell = cell.type.create(attrs, cell.content);\n }\n }\n if (cellRect.top < rect.top || cellRect.bottom > rect.bottom) {\n const attrs = {\n ...cell.attrs,\n rowspan: Math.min(cellRect.bottom, rect.bottom) - Math.max(cellRect.top, rect.top)\n };\n if (cellRect.top < rect.top) {\n cell = cell.type.createAndFill(attrs);\n } else {\n cell = cell.type.create(attrs, cell.content);\n }\n }\n rowContent.push(cell);\n }\n rows.push(table.child(row).copy(Fragment.from(rowContent)));\n }\n const fragment = this.isColSelection() && this.isRowSelection() ? table : rows;\n return new Slice(Fragment.from(fragment), 1, 1);\n }\n replace(tr, content = Slice.empty) {\n const mapFrom = tr.steps.length, ranges = this.ranges;\n for (let i = 0; i < ranges.length; i++) {\n const { $from, $to } = ranges[i], mapping = tr.mapping.slice(mapFrom);\n tr.replace(\n mapping.map($from.pos),\n mapping.map($to.pos),\n i ? Slice.empty : content\n );\n }\n const sel = Selection.findFrom(\n tr.doc.resolve(tr.mapping.slice(mapFrom).map(this.to)),\n -1\n );\n if (sel) tr.setSelection(sel);\n }\n replaceWith(tr, node) {\n this.replace(tr, new Slice(Fragment.from(node), 0, 0));\n }\n forEachCell(f) {\n const table = this.$anchorCell.node(-1);\n const map = TableMap.get(table);\n const tableStart = this.$anchorCell.start(-1);\n const cells = map.cellsInRect(\n map.rectBetween(\n this.$anchorCell.pos - tableStart,\n this.$headCell.pos - tableStart\n )\n );\n for (let i = 0; i < cells.length; i++) {\n f(table.nodeAt(cells[i]), tableStart + cells[i]);\n }\n }\n // True if this selection goes all the way from the top to the\n // bottom of the table.\n isColSelection() {\n const anchorTop = this.$anchorCell.index(-1);\n const headTop = this.$headCell.index(-1);\n if (Math.min(anchorTop, headTop) > 0) return false;\n const anchorBottom = anchorTop + this.$anchorCell.nodeAfter.attrs.rowspan;\n const headBottom = headTop + this.$headCell.nodeAfter.attrs.rowspan;\n return Math.max(anchorBottom, headBottom) == this.$headCell.node(-1).childCount;\n }\n // Returns the smallest column selection that covers the given anchor\n // and head cell.\n static colSelection($anchorCell, $headCell = $anchorCell) {\n const table = $anchorCell.node(-1);\n const map = TableMap.get(table);\n const tableStart = $anchorCell.start(-1);\n const anchorRect = map.findCell($anchorCell.pos - tableStart);\n const headRect = map.findCell($headCell.pos - tableStart);\n const doc = $anchorCell.node(0);\n if (anchorRect.top <= headRect.top) {\n if (anchorRect.top > 0)\n $anchorCell = doc.resolve(tableStart + map.map[anchorRect.left]);\n if (headRect.bottom < map.height)\n $headCell = doc.resolve(\n tableStart + map.map[map.width * (map.height - 1) + headRect.right - 1]\n );\n } else {\n if (headRect.top > 0)\n $headCell = doc.resolve(tableStart + map.map[headRect.left]);\n if (anchorRect.bottom < map.height)\n $anchorCell = doc.resolve(\n tableStart + map.map[map.width * (map.height - 1) + anchorRect.right - 1]\n );\n }\n return new _CellSelection($anchorCell, $headCell);\n }\n // True if this selection goes all the way from the left to the\n // right of the table.\n isRowSelection() {\n const table = this.$anchorCell.node(-1);\n const map = TableMap.get(table);\n const tableStart = this.$anchorCell.start(-1);\n const anchorLeft = map.colCount(this.$anchorCell.pos - tableStart);\n const headLeft = map.colCount(this.$headCell.pos - tableStart);\n if (Math.min(anchorLeft, headLeft) > 0) return false;\n const anchorRight = anchorLeft + this.$anchorCell.nodeAfter.attrs.colspan;\n const headRight = headLeft + this.$headCell.nodeAfter.attrs.colspan;\n return Math.max(anchorRight, headRight) == map.width;\n }\n eq(other) {\n return other instanceof _CellSelection && other.$anchorCell.pos == this.$anchorCell.pos && other.$headCell.pos == this.$headCell.pos;\n }\n // Returns the smallest row selection that covers the given anchor\n // and head cell.\n static rowSelection($anchorCell, $headCell = $anchorCell) {\n const table = $anchorCell.node(-1);\n const map = TableMap.get(table);\n const tableStart = $anchorCell.start(-1);\n const anchorRect = map.findCell($anchorCell.pos - tableStart);\n const headRect = map.findCell($headCell.pos - tableStart);\n const doc = $anchorCell.node(0);\n if (anchorRect.left <= headRect.left) {\n if (anchorRect.left > 0)\n $anchorCell = doc.resolve(\n tableStart + map.map[anchorRect.top * map.width]\n );\n if (headRect.right < map.width)\n $headCell = doc.resolve(\n tableStart + map.map[map.width * (headRect.top + 1) - 1]\n );\n } else {\n if (headRect.left > 0)\n $headCell = doc.resolve(tableStart + map.map[headRect.top * map.width]);\n if (anchorRect.right < map.width)\n $anchorCell = doc.resolve(\n tableStart + map.map[map.width * (anchorRect.top + 1) - 1]\n );\n }\n return new _CellSelection($anchorCell, $headCell);\n }\n toJSON() {\n return {\n type: \"cell\",\n anchor: this.$anchorCell.pos,\n head: this.$headCell.pos\n };\n }\n static fromJSON(doc, json) {\n return new _CellSelection(doc.resolve(json.anchor), doc.resolve(json.head));\n }\n static create(doc, anchorCell, headCell = anchorCell) {\n return new _CellSelection(doc.resolve(anchorCell), doc.resolve(headCell));\n }\n getBookmark() {\n return new CellBookmark(this.$anchorCell.pos, this.$headCell.pos);\n }\n};\nCellSelection.prototype.visible = false;\nSelection.jsonID(\"cell\", CellSelection);\nvar CellBookmark = class _CellBookmark {\n constructor(anchor, head) {\n this.anchor = anchor;\n this.head = head;\n }\n map(mapping) {\n return new _CellBookmark(mapping.map(this.anchor), mapping.map(this.head));\n }\n resolve(doc) {\n const $anchorCell = doc.resolve(this.anchor), $headCell = doc.resolve(this.head);\n if ($anchorCell.parent.type.spec.tableRole == \"row\" && $headCell.parent.type.spec.tableRole == \"row\" && $anchorCell.index() < $anchorCell.parent.childCount && $headCell.index() < $headCell.parent.childCount && inSameTable($anchorCell, $headCell))\n return new CellSelection($anchorCell, $headCell);\n else return Selection.near($headCell, 1);\n }\n};\nfunction drawCellSelection(state) {\n if (!(state.selection instanceof CellSelection)) return null;\n const cells = [];\n state.selection.forEachCell((node, pos) => {\n cells.push(\n Decoration.node(pos, pos + node.nodeSize, { class: \"selectedCell\" })\n );\n });\n return DecorationSet.create(state.doc, cells);\n}\nfunction isCellBoundarySelection({ $from, $to }) {\n if ($from.pos == $to.pos || $from.pos < $to.pos - 6) return false;\n let afterFrom = $from.pos;\n let beforeTo = $to.pos;\n let depth = $from.depth;\n for (; depth >= 0; depth--, afterFrom++)\n if ($from.after(depth + 1) < $from.end(depth)) break;\n for (let d = $to.depth; d >= 0; d--, beforeTo--)\n if ($to.before(d + 1) > $to.start(d)) break;\n return afterFrom == beforeTo && /row|table/.test($from.node(depth).type.spec.tableRole);\n}\nfunction isTextSelectionAcrossCells({ $from, $to }) {\n let fromCellBoundaryNode;\n let toCellBoundaryNode;\n for (let i = $from.depth; i > 0; i--) {\n const node = $from.node(i);\n if (node.type.spec.tableRole === \"cell\" || node.type.spec.tableRole === \"header_cell\") {\n fromCellBoundaryNode = node;\n break;\n }\n }\n for (let i = $to.depth; i > 0; i--) {\n const node = $to.node(i);\n if (node.type.spec.tableRole === \"cell\" || node.type.spec.tableRole === \"header_cell\") {\n toCellBoundaryNode = node;\n break;\n }\n }\n return fromCellBoundaryNode !== toCellBoundaryNode && $to.parentOffset === 0;\n}\nfunction normalizeSelection(state, tr, allowTableNodeSelection) {\n const sel = (tr || state).selection;\n const doc = (tr || state).doc;\n let normalize;\n let role;\n if (sel instanceof NodeSelection2 && (role = sel.node.type.spec.tableRole)) {\n if (role == \"cell\" || role == \"header_cell\") {\n normalize = CellSelection.create(doc, sel.from);\n } else if (role == \"row\") {\n const $cell = doc.resolve(sel.from + 1);\n normalize = CellSelection.rowSelection($cell, $cell);\n } else if (!allowTableNodeSelection) {\n const map = TableMap.get(sel.node);\n const start = sel.from + 1;\n const lastCell = start + map.map[map.width * map.height - 1];\n normalize = CellSelection.create(doc, start + 1, lastCell);\n }\n } else if (sel instanceof TextSelection && isCellBoundarySelection(sel)) {\n normalize = TextSelection.create(doc, sel.from);\n } else if (sel instanceof TextSelection && isTextSelectionAcrossCells(sel)) {\n normalize = TextSelection.create(doc, sel.$from.start(), sel.$from.end());\n }\n if (normalize) (tr || (tr = state.tr)).setSelection(normalize);\n return tr;\n}\n\n// src/fixtables.ts\nimport { PluginKey as PluginKey2 } from \"prosemirror-state\";\nvar fixTablesKey = new PluginKey2(\"fix-tables\");\nfunction changedDescendants(old, cur, offset, f) {\n const oldSize = old.childCount, curSize = cur.childCount;\n outer: for (let i = 0, j = 0; i < curSize; i++) {\n const child = cur.child(i);\n for (let scan = j, e = Math.min(oldSize, i + 3); scan < e; scan++) {\n if (old.child(scan) == child) {\n j = scan + 1;\n offset += child.nodeSize;\n continue outer;\n }\n }\n f(child, offset);\n if (j < oldSize && old.child(j).sameMarkup(child))\n changedDescendants(old.child(j), child, offset + 1, f);\n else child.nodesBetween(0, child.content.size, f, offset + 1);\n offset += child.nodeSize;\n }\n}\nfunction fixTables(state, oldState) {\n let tr;\n const check = (node, pos) => {\n if (node.type.spec.tableRole == \"table\")\n tr = fixTable(state, node, pos, tr);\n };\n if (!oldState) state.doc.descendants(check);\n else if (oldState.doc != state.doc)\n changedDescendants(oldState.doc, state.doc, 0, check);\n return tr;\n}\nfunction fixTable(state, table, tablePos, tr) {\n const map = TableMap.get(table);\n if (!map.problems) return tr;\n if (!tr) tr = state.tr;\n const mustAdd = [];\n for (let i = 0; i < map.height; i++) mustAdd.push(0);\n for (let i = 0; i < map.problems.length; i++) {\n const prob = map.problems[i];\n if (prob.type == \"collision\") {\n const cell = table.nodeAt(prob.pos);\n if (!cell) continue;\n const attrs = cell.attrs;\n for (let j = 0; j < attrs.rowspan; j++) mustAdd[prob.row + j] += prob.n;\n tr.setNodeMarkup(\n tr.mapping.map(tablePos + 1 + prob.pos),\n null,\n removeColSpan(attrs, attrs.colspan - prob.n, prob.n)\n );\n } else if (prob.type == \"missing\") {\n mustAdd[prob.row] += prob.n;\n } else if (prob.type == \"overlong_rowspan\") {\n const cell = table.nodeAt(prob.pos);\n if (!cell) continue;\n tr.setNodeMarkup(tr.mapping.map(tablePos + 1 + prob.pos), null, {\n ...cell.attrs,\n rowspan: cell.attrs.rowspan - prob.n\n });\n } else if (prob.type == \"colwidth mismatch\") {\n const cell = table.nodeAt(prob.pos);\n if (!cell) continue;\n tr.setNodeMarkup(tr.mapping.map(tablePos + 1 + prob.pos), null, {\n ...cell.attrs,\n colwidth: prob.colwidth\n });\n } else if (prob.type == \"zero_sized\") {\n const pos = tr.mapping.map(tablePos);\n tr.delete(pos, pos + table.nodeSize);\n }\n }\n let first, last;\n for (let i = 0; i < mustAdd.length; i++)\n if (mustAdd[i]) {\n if (first == null) first = i;\n last = i;\n }\n for (let i = 0, pos = tablePos + 1; i < map.height; i++) {\n const row = table.child(i);\n const end = pos + row.nodeSize;\n const add = mustAdd[i];\n if (add > 0) {\n let role = \"cell\";\n if (row.firstChild) {\n role = row.firstChild.type.spec.tableRole;\n }\n const nodes = [];\n for (let j = 0; j < add; j++) {\n const node = tableNodeTypes(state.schema)[role].createAndFill();\n if (node) nodes.push(node);\n }\n const side = (i == 0 || first == i - 1) && last == i ? pos + 1 : end - 1;\n tr.insert(tr.mapping.map(side), nodes);\n }\n pos = end;\n }\n return tr.setMeta(fixTablesKey, { fixTables: true });\n}\n\n// src/input.ts\nimport { keydownHandler } from \"prosemirror-keymap\";\nimport { Fragment as Fragment4 } from \"prosemirror-model\";\nimport {\n Selection as Selection2,\n TextSelection as TextSelection3\n} from \"prosemirror-state\";\n\n// src/commands.ts\nimport {\n Fragment as Fragment2,\n Slice as Slice2\n} from \"prosemirror-model\";\nimport {\n TextSelection as TextSelection2\n} from \"prosemirror-state\";\nfunction selectedRect(state) {\n const sel = state.selection;\n const $pos = selectionCell(state);\n const table = $pos.node(-1);\n const tableStart = $pos.start(-1);\n const map = TableMap.get(table);\n const rect = sel instanceof CellSelection ? map.rectBetween(\n sel.$anchorCell.pos - tableStart,\n sel.$headCell.pos - tableStart\n ) : map.findCell($pos.pos - tableStart);\n return { ...rect, tableStart, map, table };\n}\nfunction addColumn(tr, { map, tableStart, table }, col) {\n let refColumn = col > 0 ? -1 : 0;\n if (columnIsHeader(map, table, col + refColumn)) {\n refColumn = col == 0 || col == map.width ? null : 0;\n }\n for (let row = 0; row < map.height; row++) {\n const index = row * map.width + col;\n if (col > 0 && col < map.width && map.map[index - 1] == map.map[index]) {\n const pos = map.map[index];\n const cell = table.nodeAt(pos);\n tr.setNodeMarkup(\n tr.mapping.map(tableStart + pos),\n null,\n addColSpan(cell.attrs, col - map.colCount(pos))\n );\n row += cell.attrs.rowspan - 1;\n } else {\n const type = refColumn == null ? tableNodeTypes(table.type.schema).cell : table.nodeAt(map.map[index + refColumn]).type;\n const pos = map.positionAt(row, col, table);\n tr.insert(tr.mapping.map(tableStart + pos), type.createAndFill());\n }\n }\n return tr;\n}\nfunction addColumnBefore(state, dispatch) {\n if (!isInTable(state)) return false;\n if (dispatch) {\n const rect = selectedRect(state);\n dispatch(addColumn(state.tr, rect, rect.left));\n }\n return true;\n}\nfunction addColumnAfter(state, dispatch) {\n if (!isInTable(state)) return false;\n if (dispatch) {\n const rect = selectedRect(state);\n dispatch(addColumn(state.tr, rect, rect.right));\n }\n return true;\n}\nfunction removeColumn(tr, { map, table, tableStart }, col) {\n const mapStart = tr.mapping.maps.length;\n for (let row = 0; row < map.height; ) {\n const index = row * map.width + col;\n const pos = map.map[index];\n const cell = table.nodeAt(pos);\n const attrs = cell.attrs;\n if (col > 0 && map.map[index - 1] == pos || col < map.width - 1 && map.map[index + 1] == pos) {\n tr.setNodeMarkup(\n tr.mapping.slice(mapStart).map(tableStart + pos),\n null,\n removeColSpan(attrs, col - map.colCount(pos))\n );\n } else {\n const start = tr.mapping.slice(mapStart).map(tableStart + pos);\n tr.delete(start, start + cell.nodeSize);\n }\n row += attrs.rowspan;\n }\n}\nfunction deleteColumn(state, dispatch) {\n if (!isInTable(state)) return false;\n if (dispatch) {\n const rect = selectedRect(state);\n const tr = state.tr;\n if (rect.left == 0 && rect.right == rect.map.width) return false;\n for (let i = rect.right - 1; ; i--) {\n removeColumn(tr, rect, i);\n if (i == rect.left) break;\n const table = rect.tableStart ? tr.doc.nodeAt(rect.tableStart - 1) : tr.doc;\n if (!table) {\n throw RangeError(\"No table found\");\n }\n rect.table = table;\n rect.map = TableMap.get(table);\n }\n dispatch(tr);\n }\n return true;\n}\nfunction rowIsHeader(map, table, row) {\n var _a;\n const headerCell = tableNodeTypes(table.type.schema).header_cell;\n for (let col = 0; col < map.width; col++)\n if (((_a = table.nodeAt(map.map[col + row * map.width])) == null ? void 0 : _a.type) != headerCell)\n return false;\n return true;\n}\nfunction addRow(tr, { map, tableStart, table }, row) {\n var _a;\n let rowPos = tableStart;\n for (let i = 0; i < row; i++) rowPos += table.child(i).nodeSize;\n const cells = [];\n let refRow = row > 0 ? -1 : 0;\n if (rowIsHeader(map, table, row + refRow))\n refRow = row == 0 || row == map.height ? null : 0;\n for (let col = 0, index = map.width * row; col < map.width; col++, index++) {\n if (row > 0 && row < map.height && map.map[index] == map.map[index - map.width]) {\n const pos = map.map[index];\n const attrs = table.nodeAt(pos).attrs;\n tr.setNodeMarkup(tableStart + pos, null, {\n ...attrs,\n rowspan: attrs.rowspan + 1\n });\n col += attrs.colspan - 1;\n } else {\n const type = refRow == null ? tableNodeTypes(table.type.schema).cell : (_a = table.nodeAt(map.map[index + refRow * map.width])) == null ? void 0 : _a.type;\n const node = type == null ? void 0 : type.createAndFill();\n if (node) cells.push(node);\n }\n }\n tr.insert(rowPos, tableNodeTypes(table.type.schema).row.create(null, cells));\n return tr;\n}\nfunction addRowBefore(state, dispatch) {\n if (!isInTable(state)) return false;\n if (dispatch) {\n const rect = selectedRect(state);\n dispatch(addRow(state.tr, rect, rect.top));\n }\n return true;\n}\nfunction addRowAfter(state, dispatch) {\n if (!isInTable(state)) return false;\n if (dispatch) {\n const rect = selectedRect(state);\n dispatch(addRow(state.tr, rect, rect.bottom));\n }\n return true;\n}\nfunction removeRow(tr, { map, table, tableStart }, row) {\n let rowPos = 0;\n for (let i = 0; i < row; i++) rowPos += table.child(i).nodeSize;\n const nextRow = rowPos + table.child(row).nodeSize;\n const mapFrom = tr.mapping.maps.length;\n tr.delete(rowPos + tableStart, nextRow + tableStart);\n const seen = /* @__PURE__ */ new Set();\n for (let col = 0, index = row * map.width; col < map.width; col++, index++) {\n const pos = map.map[index];\n if (seen.has(pos)) continue;\n seen.add(pos);\n if (row > 0 && pos == map.map[index - map.width]) {\n const attrs = table.nodeAt(pos).attrs;\n tr.setNodeMarkup(tr.mapping.slice(mapFrom).map(pos + tableStart), null, {\n ...attrs,\n rowspan: attrs.rowspan - 1\n });\n col += attrs.colspan - 1;\n } else if (row < map.height && pos == map.map[index + map.width]) {\n const cell = table.nodeAt(pos);\n const attrs = cell.attrs;\n const copy = cell.type.create(\n { ...attrs, rowspan: cell.attrs.rowspan - 1 },\n cell.content\n );\n const newPos = map.positionAt(row + 1, col, table);\n tr.insert(tr.mapping.slice(mapFrom).map(tableStart + newPos), copy);\n col += attrs.colspan - 1;\n }\n }\n}\nfunction deleteRow(state, dispatch) {\n if (!isInTable(state)) return false;\n if (dispatch) {\n const rect = selectedRect(state), tr = state.tr;\n if (rect.top == 0 && rect.bottom == rect.map.height) return false;\n for (let i = rect.bottom - 1; ; i--) {\n removeRow(tr, rect, i);\n if (i == rect.top) break;\n const table = rect.tableStart ? tr.doc.nodeAt(rect.tableStart - 1) : tr.doc;\n if (!table) {\n throw RangeError(\"No table found\");\n }\n rect.table = table;\n rect.map = TableMap.get(rect.table);\n }\n dispatch(tr);\n }\n return true;\n}\nfunction isEmpty(cell) {\n const c = cell.content;\n return c.childCount == 1 && c.child(0).isTextblock && c.child(0).childCount == 0;\n}\nfunction cellsOverlapRectangle({ width, height, map }, rect) {\n let indexTop = rect.top * width + rect.left, indexLeft = indexTop;\n let indexBottom = (rect.bottom - 1) * width + rect.left, indexRight = indexTop + (rect.right - rect.left - 1);\n for (let i = rect.top; i < rect.bottom; i++) {\n if (rect.left > 0 && map[indexLeft] == map[indexLeft - 1] || rect.right < width && map[indexRight] == map[indexRight + 1])\n return true;\n indexLeft += width;\n indexRight += width;\n }\n for (let i = rect.left; i < rect.right; i++) {\n if (rect.top > 0 && map[indexTop] == map[indexTop - width] || rect.bottom < height && map[indexBottom] == map[indexBottom + width])\n return true;\n indexTop++;\n indexBottom++;\n }\n return false;\n}\nfunction mergeCells(state, dispatch) {\n const sel = state.selection;\n if (!(sel instanceof CellSelection) || sel.$anchorCell.pos == sel.$headCell.pos)\n return false;\n const rect = selectedRect(state), { map } = rect;\n if (cellsOverlapRectangle(map, rect)) return false;\n if (dispatch) {\n const tr = state.tr;\n const seen = {};\n let content = Fragment2.empty;\n let mergedPos;\n let mergedCell;\n for (let row = rect.top; row < rect.bottom; row++) {\n for (let col = rect.left; col < rect.right; col++) {\n const cellPos = map.map[row * map.width + col];\n const cell = rect.table.nodeAt(cellPos);\n if (seen[cellPos] || !cell) continue;\n seen[cellPos] = true;\n if (mergedPos == null) {\n mergedPos = cellPos;\n mergedCell = cell;\n } else {\n if (!isEmpty(cell)) content = content.append(cell.content);\n const mapped = tr.mapping.map(cellPos + rect.tableStart);\n tr.delete(mapped, mapped + cell.nodeSize);\n }\n }\n }\n if (mergedPos == null || mergedCell == null) {\n return true;\n }\n tr.setNodeMarkup(mergedPos + rect.tableStart, null, {\n ...addColSpan(\n mergedCell.attrs,\n mergedCell.attrs.colspan,\n rect.right - rect.left - mergedCell.attrs.colspan\n ),\n rowspan: rect.bottom - rect.top\n });\n if (content.size) {\n const end = mergedPos + 1 + mergedCell.content.size;\n const start = isEmpty(mergedCell) ? mergedPos + 1 : end;\n tr.replaceWith(start + rect.tableStart, end + rect.tableStart, content);\n }\n tr.setSelection(\n new CellSelection(tr.doc.resolve(mergedPos + rect.tableStart))\n );\n dispatch(tr);\n }\n return true;\n}\nfunction splitCell(state, dispatch) {\n const nodeTypes = tableNodeTypes(state.schema);\n return splitCellWithType(({ node }) => {\n return nodeTypes[node.type.spec.tableRole];\n })(state, dispatch);\n}\nfunction splitCellWithType(getCellType) {\n return (state, dispatch) => {\n var _a;\n const sel = state.selection;\n let cellNode;\n let cellPos;\n if (!(sel instanceof CellSelection)) {\n cellNode = cellWrapping(sel.$from);\n if (!cellNode) return false;\n cellPos = (_a = cellAround(sel.$from)) == null ? void 0 : _a.pos;\n } else {\n if (sel.$anchorCell.pos != sel.$headCell.pos) return false;\n cellNode = sel.$anchorCell.nodeAfter;\n cellPos = sel.$anchorCell.pos;\n }\n if (cellNode == null || cellPos == null) {\n return false;\n }\n if (cellNode.attrs.colspan == 1 && cellNode.attrs.rowspan == 1) {\n return false;\n }\n if (dispatch) {\n let baseAttrs = cellNode.attrs;\n const attrs = [];\n const colwidth = baseAttrs.colwidth;\n if (baseAttrs.rowspan > 1) baseAttrs = { ...baseAttrs, rowspan: 1 };\n if (baseAttrs.colspan > 1) baseAttrs = { ...baseAttrs, colspan: 1 };\n const rect = selectedRect(state), tr = state.tr;\n for (let i = 0; i < rect.right - rect.left; i++)\n attrs.push(\n colwidth ? {\n ...baseAttrs,\n colwidth: colwidth && colwidth[i] ? [colwidth[i]] : null\n } : baseAttrs\n );\n let lastCell;\n for (let row = rect.top; row < rect.bottom; row++) {\n let pos = rect.map.positionAt(row, rect.left, rect.table);\n if (row == rect.top) pos += cellNode.nodeSize;\n for (let col = rect.left, i = 0; col < rect.right; col++, i++) {\n if (col == rect.left && row == rect.top) continue;\n tr.insert(\n lastCell = tr.mapping.map(pos + rect.tableStart, 1),\n getCellType({ node: cellNode, row, col }).createAndFill(attrs[i])\n );\n }\n }\n tr.setNodeMarkup(\n cellPos,\n getCellType({ node: cellNode, row: rect.top, col: rect.left }),\n attrs[0]\n );\n if (sel instanceof CellSelection)\n tr.setSelection(\n new CellSelection(\n tr.doc.resolve(sel.$anchorCell.pos),\n lastCell ? tr.doc.resolve(lastCell) : void 0\n )\n );\n dispatch(tr);\n }\n return true;\n };\n}\nfunction setCellAttr(name, value) {\n return function(state, dispatch) {\n if (!isInTable(state)) return false;\n const $cell = selectionCell(state);\n if ($cell.nodeAfter.attrs[name] === value) return false;\n if (dispatch) {\n const tr = state.tr;\n if (state.selection instanceof CellSelection)\n state.selection.forEachCell((node, pos) => {\n if (node.attrs[name] !== value)\n tr.setNodeMarkup(pos, null, {\n ...node.attrs,\n [name]: value\n });\n });\n else\n tr.setNodeMarkup($cell.pos, null, {\n ...$cell.nodeAfter.attrs,\n [name]: value\n });\n dispatch(tr);\n }\n return true;\n };\n}\nfunction deprecated_toggleHeader(type) {\n return function(state, dispatch) {\n if (!isInTable(state)) return false;\n if (dispatch) {\n const types = tableNodeTypes(state.schema);\n const rect = selectedRect(state), tr = state.tr;\n const cells = rect.map.cellsInRect(\n type == \"column\" ? {\n left: rect.left,\n top: 0,\n right: rect.right,\n bottom: rect.map.height\n } : type == \"row\" ? {\n left: 0,\n top: rect.top,\n right: rect.map.width,\n bottom: rect.bottom\n } : rect\n );\n const nodes = cells.map((pos) => rect.table.nodeAt(pos));\n for (let i = 0; i < cells.length; i++)\n if (nodes[i].type == types.header_cell)\n tr.setNodeMarkup(\n rect.tableStart + cells[i],\n types.cell,\n nodes[i].attrs\n );\n if (tr.steps.length == 0)\n for (let i = 0; i < cells.length; i++)\n tr.setNodeMarkup(\n rect.tableStart + cells[i],\n types.header_cell,\n nodes[i].attrs\n );\n dispatch(tr);\n }\n return true;\n };\n}\nfunction isHeaderEnabledByType(type, rect, types) {\n const cellPositions = rect.map.cellsInRect({\n left: 0,\n top: 0,\n right: type == \"row\" ? rect.map.width : 1,\n bottom: type == \"column\" ? rect.map.height : 1\n });\n for (let i = 0; i < cellPositions.length; i++) {\n const cell = rect.table.nodeAt(cellPositions[i]);\n if (cell && cell.type !== types.header_cell) {\n return false;\n }\n }\n return true;\n}\nfunction toggleHeader(type, options) {\n options = options || { useDeprecatedLogic: false };\n if (options.useDeprecatedLogic) return deprecated_toggleHeader(type);\n return function(state, dispatch) {\n if (!isInTable(state)) return false;\n if (dispatch) {\n const types = tableNodeTypes(state.schema);\n const rect = selectedRect(state), tr = state.tr;\n const isHeaderRowEnabled = isHeaderEnabledByType(\"row\", rect, types);\n const isHeaderColumnEnabled = isHeaderEnabledByType(\n \"column\",\n rect,\n types\n );\n const isHeaderEnabled = type === \"column\" ? isHeaderRowEnabled : type === \"row\" ? isHeaderColumnEnabled : false;\n const selectionStartsAt = isHeaderEnabled ? 1 : 0;\n const cellsRect = type == \"column\" ? {\n left: 0,\n top: selectionStartsAt,\n right: 1,\n bottom: rect.map.height\n } : type == \"row\" ? {\n left: selectionStartsAt,\n top: 0,\n right: rect.map.width,\n bottom: 1\n } : rect;\n const newType = type == \"column\" ? isHeaderColumnEnabled ? types.cell : types.header_cell : type == \"row\" ? isHeaderRowEnabled ? types.cell : types.header_cell : types.cell;\n rect.map.cellsInRect(cellsRect).forEach((relativeCellPos) => {\n const cellPos = relativeCellPos + rect.tableStart;\n const cell = tr.doc.nodeAt(cellPos);\n if (cell) {\n tr.setNodeMarkup(cellPos, newType, cell.attrs);\n }\n });\n dispatch(tr);\n }\n return true;\n };\n}\nvar toggleHeaderRow = toggleHeader(\"row\", {\n useDeprecatedLogic: true\n});\nvar toggleHeaderColumn = toggleHeader(\"column\", {\n useDeprecatedLogic: true\n});\nvar toggleHeaderCell = toggleHeader(\"cell\", {\n useDeprecatedLogic: true\n});\nfunction findNextCell($cell, dir) {\n if (dir < 0) {\n const before = $cell.nodeBefore;\n if (before) return $cell.pos - before.nodeSize;\n for (let row = $cell.index(-1) - 1, rowEnd = $cell.before(); row >= 0; row--) {\n const rowNode = $cell.node(-1).child(row);\n const lastChild = rowNode.lastChild;\n if (lastChild) {\n return rowEnd - 1 - lastChild.nodeSize;\n }\n rowEnd -= rowNode.nodeSize;\n }\n } else {\n if ($cell.index() < $cell.parent.childCount - 1) {\n return $cell.pos + $cell.nodeAfter.nodeSize;\n }\n const table = $cell.node(-1);\n for (let row = $cell.indexAfter(-1), rowStart = $cell.after(); row < table.childCount; row++) {\n const rowNode = table.child(row);\n if (rowNode.childCount) return rowStart + 1;\n rowStart += rowNode.nodeSize;\n }\n }\n return null;\n}\nfunction goToNextCell(direction) {\n return function(state, dispatch) {\n if (!isInTable(state)) return false;\n const cell = findNextCell(selectionCell(state), direction);\n if (cell == null) return false;\n if (dispatch) {\n const $cell = state.doc.resolve(cell);\n dispatch(\n state.tr.setSelection(TextSelection2.between($cell, moveCellForward($cell))).scrollIntoView()\n );\n }\n return true;\n };\n}\nfunction deleteTable(state, dispatch) {\n const $pos = state.selection.$anchor;\n for (let d = $pos.depth; d > 0; d--) {\n const node = $pos.node(d);\n if (node.type.spec.tableRole == \"table\") {\n if (dispatch)\n dispatch(\n state.tr.delete($pos.before(d), $pos.after(d)).scrollIntoView()\n );\n return true;\n }\n }\n return false;\n}\nfunction deleteCellSelection(state, dispatch) {\n const sel = state.selection;\n if (!(sel instanceof CellSelection)) return false;\n if (dispatch) {\n const tr = state.tr;\n const baseContent = tableNodeTypes(state.schema).cell.createAndFill().content;\n sel.forEachCell((cell, pos) => {\n if (!cell.content.eq(baseContent))\n tr.replace(\n tr.mapping.map(pos + 1),\n tr.mapping.map(pos + cell.nodeSize - 1),\n new Slice2(baseContent, 0, 0)\n );\n });\n if (tr.docChanged) dispatch(tr);\n }\n return true;\n}\n\n// src/copypaste.ts\nimport { Fragment as Fragment3, Slice as Slice3 } from \"prosemirror-model\";\nimport { Transform } from \"prosemirror-transform\";\nfunction pastedCells(slice) {\n if (!slice.size) return null;\n let { content, openStart, openEnd } = slice;\n while (content.childCount == 1 && (openStart > 0 && openEnd > 0 || content.child(0).type.spec.tableRole == \"table\")) {\n openStart--;\n openEnd--;\n content = content.child(0).content;\n }\n const first = content.child(0);\n const role = first.type.spec.tableRole;\n const schema = first.type.schema, rows = [];\n if (role == \"row\") {\n for (let i = 0; i < content.childCount; i++) {\n let cells = content.child(i).content;\n const left = i ? 0 : Math.max(0, openStart - 1);\n const right = i < content.childCount - 1 ? 0 : Math.max(0, openEnd - 1);\n if (left || right)\n cells = fitSlice(\n tableNodeTypes(schema).row,\n new Slice3(cells, left, right)\n ).content;\n rows.push(cells);\n }\n } else if (role == \"cell\" || role == \"header_cell\") {\n rows.push(\n openStart || openEnd ? fitSlice(\n tableNodeTypes(schema).row,\n new Slice3(content, openStart, openEnd)\n ).content : content\n );\n } else {\n return null;\n }\n return ensureRectangular(schema, rows);\n}\nfunction ensureRectangular(schema, rows) {\n const widths = [];\n for (let i = 0; i < rows.length; i++) {\n const row = rows[i];\n for (let j = row.childCount - 1; j >= 0; j--) {\n const { rowspan, colspan } = row.child(j).attrs;\n for (let r = i; r < i + rowspan; r++)\n widths[r] = (widths[r] || 0) + colspan;\n }\n }\n let width = 0;\n for (let r = 0; r < widths.length; r++) width = Math.max(width, widths[r]);\n for (let r = 0; r < widths.length; r++) {\n if (r >= rows.length) rows.push(Fragment3.empty);\n if (widths[r] < width) {\n const empty = tableNodeTypes(schema).cell.createAndFill();\n const cells = [];\n for (let i = widths[r]; i < width; i++) {\n cells.push(empty);\n }\n rows[r] = rows[r].append(Fragment3.from(cells));\n }\n }\n return { height: rows.length, width, rows };\n}\nfunction fitSlice(nodeType, slice) {\n const node = nodeType.createAndFill();\n const tr = new Transform(node).replace(0, node.content.size, slice);\n return tr.doc;\n}\nfunction clipCells({ width, height, rows }, newWidth, newHeight) {\n if (width != newWidth) {\n const added = [];\n const newRows = [];\n for (let row = 0; row < rows.length; row++) {\n const frag = rows[row], cells = [];\n for (let col = added[row] || 0, i = 0; col < newWidth; i++) {\n let cell = frag.child(i % frag.childCount);\n if (col + cell.attrs.colspan > newWidth)\n cell = cell.type.createChecked(\n removeColSpan(\n cell.attrs,\n cell.attrs.colspan,\n col + cell.attrs.colspan - newWidth\n ),\n cell.content\n );\n cells.push(cell);\n col += cell.attrs.colspan;\n for (let j = 1; j < cell.attrs.rowspan; j++)\n added[row + j] = (added[row + j] || 0) + cell.attrs.colspan;\n }\n newRows.push(Fragment3.from(cells));\n }\n rows = newRows;\n width = newWidth;\n }\n if (height != newHeight) {\n const newRows = [];\n for (let row = 0, i = 0; row < newHeight; row++, i++) {\n const cells = [], source = rows[i % height];\n for (let j = 0; j < source.childCount; j++) {\n let cell = source.child(j);\n if (row + cell.attrs.rowspan > newHeight)\n cell = cell.type.create(\n {\n ...cell.attrs,\n rowspan: Math.max(1, newHeight - cell.attrs.rowspan)\n },\n cell.content\n );\n cells.push(cell);\n }\n newRows.push(Fragment3.from(cells));\n }\n rows = newRows;\n height = newHeight;\n }\n return { width, height, rows };\n}\nfunction growTable(tr, map, table, start, width, height, mapFrom) {\n const schema = tr.doc.type.schema;\n const types = tableNodeTypes(schema);\n let empty;\n let emptyHead;\n if (width > map.width) {\n for (let row = 0, rowEnd = 0; row < map.height; row++) {\n const rowNode = table.child(row);\n rowEnd += rowNode.nodeSize;\n const cells = [];\n let add;\n if (rowNode.lastChild == null || rowNode.lastChild.type == types.cell)\n add = empty || (empty = types.cell.createAndFill());\n else add = emptyHead || (emptyHead = types.header_cell.createAndFill());\n for (let i = map.width; i < width; i++) cells.push(add);\n tr.insert(tr.mapping.slice(mapFrom).map(rowEnd - 1 + start), cells);\n }\n }\n if (height > map.height) {\n const cells = [];\n for (let i = 0, start2 = (map.height - 1) * map.width; i < Math.max(map.width, width); i++) {\n const header = i >= map.width ? false : table.nodeAt(map.map[start2 + i]).type == types.header_cell;\n cells.push(\n header ? emptyHead || (emptyHead = types.header_cell.createAndFill()) : empty || (empty = types.cell.createAndFill())\n );\n }\n const emptyRow = types.row.create(null, Fragment3.from(cells)), rows = [];\n for (let i = map.height; i < height; i++) rows.push(emptyRow);\n tr.insert(tr.mapping.slice(mapFrom).map(start + table.nodeSize - 2), rows);\n }\n return !!(empty || emptyHead);\n}\nfunction isolateHorizontal(tr, map, table, start, left, right, top, mapFrom) {\n if (top == 0 || top == map.height) return false;\n let found = false;\n for (let col = left; col < right; col++) {\n const index = top * map.width + col, pos = map.map[index];\n if (map.map[index - map.width] == pos) {\n found = true;\n const cell = table.nodeAt(pos);\n const { top: cellTop, left: cellLeft } = map.findCell(pos);\n tr.setNodeMarkup(tr.mapping.slice(mapFrom).map(pos + start), null, {\n ...cell.attrs,\n rowspan: top - cellTop\n });\n tr.insert(\n tr.mapping.slice(mapFrom).map(map.positionAt(top, cellLeft, table)),\n cell.type.createAndFill({\n ...cell.attrs,\n rowspan: cellTop + cell.attrs.rowspan - top\n })\n );\n col += cell.attrs.colspan - 1;\n }\n }\n return found;\n}\nfunction isolateVertical(tr, map, table, start, top, bottom, left, mapFrom) {\n if (left == 0 || left == map.width) return false;\n let found = false;\n for (let row = top; row < bottom; row++) {\n const index = row * map.width + left, pos = map.map[index];\n if (map.map[index - 1] == pos) {\n found = true;\n const cell = table.nodeAt(pos);\n const cellLeft = map.colCount(pos);\n const updatePos = tr.mapping.slice(mapFrom).map(pos + start);\n tr.setNodeMarkup(\n updatePos,\n null,\n removeColSpan(\n cell.attrs,\n left - cellLeft,\n cell.attrs.colspan - (left - cellLeft)\n )\n );\n tr.insert(\n updatePos + cell.nodeSize,\n cell.type.createAndFill(\n removeColSpan(cell.attrs, 0, left - cellLeft)\n )\n );\n row += cell.attrs.rowspan - 1;\n }\n }\n return found;\n}\nfunction insertCells(state, dispatch, tableStart, rect, cells) {\n let table = tableStart ? state.doc.nodeAt(tableStart - 1) : state.doc;\n if (!table) {\n throw new Error(\"No table found\");\n }\n let map = TableMap.get(table);\n const { top, left } = rect;\n const right = left + cells.width, bottom = top + cells.height;\n const tr = state.tr;\n let mapFrom = 0;\n function recomp() {\n table = tableStart ? tr.doc.nodeAt(tableStart - 1) : tr.doc;\n if (!table) {\n throw new Error(\"No table found\");\n }\n map = TableMap.get(table);\n mapFrom = tr.mapping.maps.length;\n }\n if (growTable(tr, map, table, tableStart, right, bottom, mapFrom)) recomp();\n if (isolateHorizontal(tr, map, table, tableStart, left, right, top, mapFrom))\n recomp();\n if (isolateHorizontal(tr, map, table, tableStart, left, right, bottom, mapFrom))\n recomp();\n if (isolateVertical(tr, map, table, tableStart, top, bottom, left, mapFrom))\n recomp();\n if (isolateVertical(tr, map, table, tableStart, top, bottom, right, mapFrom))\n recomp();\n for (let row = top; row < bottom; row++) {\n const from = map.positionAt(row, left, table), to = map.positionAt(row, right, table);\n tr.replace(\n tr.mapping.slice(mapFrom).map(from + tableStart),\n tr.mapping.slice(mapFrom).map(to + tableStart),\n new Slice3(cells.rows[row - top], 0, 0)\n );\n }\n recomp();\n tr.setSelection(\n new CellSelection(\n tr.doc.resolve(tableStart + map.positionAt(top, left, table)),\n tr.doc.resolve(tableStart + map.positionAt(bottom - 1, right - 1, table))\n )\n );\n dispatch(tr);\n}\n\n// src/input.ts\nvar handleKeyDown = keydownHandler({\n ArrowLeft: arrow(\"horiz\", -1),\n ArrowRight: arrow(\"horiz\", 1),\n ArrowUp: arrow(\"vert\", -1),\n ArrowDown: arrow(\"vert\", 1),\n \"Shift-ArrowLeft\": shiftArrow(\"horiz\", -1),\n \"Shift-ArrowRight\": shiftArrow(\"horiz\", 1),\n \"Shift-ArrowUp\": shiftArrow(\"vert\", -1),\n \"Shift-ArrowDown\": shiftArrow(\"vert\", 1),\n Backspace: deleteCellSelection,\n \"Mod-Backspace\": deleteCellSelection,\n Delete: deleteCellSelection,\n \"Mod-Delete\": deleteCellSelection\n});\nfunction maybeSetSelection(state, dispatch, selection) {\n if (selection.eq(state.selection)) return false;\n if (dispatch) dispatch(state.tr.setSelection(selection).scrollIntoView());\n return true;\n}\nfunction arrow(axis, dir) {\n return (state, dispatch, view) => {\n if (!view) return false;\n const sel = state.selection;\n if (sel instanceof CellSelection) {\n return maybeSetSelection(\n state,\n dispatch,\n Selection2.near(sel.$headCell, dir)\n );\n }\n if (axis != \"horiz\" && !sel.empty) return false;\n const end = atEndOfCell(view, axis, dir);\n if (end == null) return false;\n if (axis == \"horiz\") {\n return maybeSetSelection(\n state,\n dispatch,\n Selection2.near(state.doc.resolve(sel.head + dir), dir)\n );\n } else {\n const $cell = state.doc.resolve(end);\n const $next = nextCell($cell, axis, dir);\n let newSel;\n if ($next) newSel = Selection2.near($next, 1);\n else if (dir < 0)\n newSel = Selection2.near(state.doc.resolve($cell.before(-1)), -1);\n else newSel = Selection2.near(state.doc.resolve($cell.after(-1)), 1);\n return maybeSetSelection(state, dispatch, newSel);\n }\n };\n}\nfunction shiftArrow(axis, dir) {\n return (state, dispatch, view) => {\n if (!view) return false;\n const sel = state.selection;\n let cellSel;\n if (sel instanceof CellSelection) {\n cellSel = sel;\n } else {\n const end = atEndOfCell(view, axis, dir);\n if (end == null) return false;\n cellSel = new CellSelection(state.doc.resolve(end));\n }\n const $head = nextCell(cellSel.$headCell, axis, dir);\n if (!$head) return false;\n return maybeSetSelection(\n state,\n dispatch,\n new CellSelection(cellSel.$anchorCell, $head)\n );\n };\n}\nfunction handleTripleClick(view, pos) {\n const doc = view.state.doc, $cell = cellAround(doc.resolve(pos));\n if (!$cell) return false;\n view.dispatch(view.state.tr.setSelection(new CellSelection($cell)));\n return true;\n}\nfunction handlePaste(view, _, slice) {\n if (!isInTable(view.state)) return false;\n let cells = pastedCells(slice);\n const sel = view.state.selection;\n if (sel instanceof CellSelection) {\n if (!cells)\n cells = {\n width: 1,\n height: 1,\n rows: [\n Fragment4.from(\n fitSlice(tableNodeTypes(view.state.schema).cell, slice)\n )\n ]\n };\n const table = sel.$anchorCell.node(-1);\n const start = sel.$anchorCell.start(-1);\n const rect = TableMap.get(table).rectBetween(\n sel.$anchorCell.pos - start,\n sel.$headCell.pos - start\n );\n cells = clipCells(cells, rect.right - rect.left, rect.bottom - rect.top);\n insertCells(view.state, view.dispatch, start, rect, cells);\n return true;\n } else if (cells) {\n const $cell = selectionCell(view.state);\n const start = $cell.start(-1);\n insertCells(\n view.state,\n view.dispatch,\n start,\n TableMap.get($cell.node(-1)).findCell($cell.pos - start),\n cells\n );\n return true;\n } else {\n return false;\n }\n}\nfunction handleMouseDown(view, startEvent) {\n var _a;\n if (startEvent.ctrlKey || startEvent.metaKey) return;\n const startDOMCell = domInCell(view, startEvent.target);\n let $anchor;\n if (startEvent.shiftKey && view.state.selection instanceof CellSelection) {\n setCellSelection(view.state.selection.$anchorCell, startEvent);\n startEvent.preventDefault();\n } else if (startEvent.shiftKey && startDOMCell && ($anchor = cellAround(view.state.selection.$anchor)) != null && ((_a = cellUnderMouse(view, startEvent)) == null ? void 0 : _a.pos) != $anchor.pos) {\n setCellSelection($anchor, startEvent);\n startEvent.preventDefault();\n } else if (!startDOMCell) {\n return;\n }\n function setCellSelection($anchor2, event) {\n let $head = cellUnderMouse(view, event);\n const starting = tableEditingKey.getState(view.state) == null;\n if (!$head || !inSameTable($anchor2, $head)) {\n if (starting) $head = $anchor2;\n else return;\n }\n const selection = new CellSelection($anchor2, $head);\n if (starting || !view.state.selection.eq(selection)) {\n const tr = view.state.tr.setSelection(selection);\n if (starting) tr.setMeta(tableEditingKey, $anchor2.pos);\n view.dispatch(tr);\n }\n }\n function stop() {\n view.root.removeEventListener(\"mouseup\", stop);\n view.root.removeEventListener(\"dragstart\", stop);\n view.root.removeEventListener(\"mousemove\", move);\n if (tableEditingKey.getState(view.state) != null)\n view.dispatch(view.state.tr.setMeta(tableEditingKey, -1));\n }\n function move(_event) {\n const event = _event;\n const anchor = tableEditingKey.getState(view.state);\n let $anchor2;\n if (anchor != null) {\n $anchor2 = view.state.doc.resolve(anchor);\n } else if (domInCell(view, event.target) != startDOMCell) {\n $anchor2 = cellUnderMouse(view, startEvent);\n if (!$anchor2) return stop();\n }\n if ($anchor2) setCellSelection($anchor2, event);\n }\n view.root.addEventListener(\"mouseup\", stop);\n view.root.addEventListener(\"dragstart\", stop);\n view.root.addEventListener(\"mousemove\", move);\n}\nfunction atEndOfCell(view, axis, dir) {\n if (!(view.state.selection instanceof TextSelection3)) return null;\n const { $head } = view.state.selection;\n for (let d = $head.depth - 1; d >= 0; d--) {\n const parent = $head.node(d), index = dir < 0 ? $head.index(d) : $head.indexAfter(d);\n if (index != (dir < 0 ? 0 : parent.childCount)) return null;\n if (parent.type.spec.tableRole == \"cell\" || parent.type.spec.tableRole == \"header_cell\") {\n const cellPos = $head.before(d);\n const dirStr = axis == \"vert\" ? dir > 0 ? \"down\" : \"up\" : dir > 0 ? \"right\" : \"left\";\n return view.endOfTextblock(dirStr) ? cellPos : null;\n }\n }\n return null;\n}\nfunction domInCell(view, dom) {\n for (; dom && dom != view.dom; dom = dom.parentNode) {\n if (dom.nodeName == \"TD\" || dom.nodeName == \"TH\") {\n return dom;\n }\n }\n return null;\n}\nfunction cellUnderMouse(view, event) {\n const mousePos = view.posAtCoords({\n left: event.clientX,\n top: event.clientY\n });\n if (!mousePos) return null;\n return mousePos ? cellAround(view.state.doc.resolve(mousePos.pos)) : null;\n}\n\n// src/columnresizing.ts\nimport { Plugin, PluginKey as PluginKey3 } from \"prosemirror-state\";\nimport {\n Decoration as Decoration2,\n DecorationSet as DecorationSet2\n} from \"prosemirror-view\";\n\n// src/tableview.ts\nvar TableView = class {\n constructor(node, defaultCellMinWidth) {\n this.node = node;\n this.defaultCellMinWidth = defaultCellMinWidth;\n this.dom = document.createElement(\"div\");\n this.dom.className = \"tableWrapper\";\n this.table = this.dom.appendChild(document.createElement(\"table\"));\n this.table.style.setProperty(\n \"--default-cell-min-width\",\n `${defaultCellMinWidth}px`\n );\n this.colgroup = this.table.appendChild(document.createElement(\"colgroup\"));\n updateColumnsOnResize(node, this.colgroup, this.table, defaultCellMinWidth);\n this.contentDOM = this.table.appendChild(document.createElement(\"tbody\"));\n }\n update(node) {\n if (node.type != this.node.type) return false;\n this.node = node;\n updateColumnsOnResize(\n node,\n this.colgroup,\n this.table,\n this.defaultCellMinWidth\n );\n return true;\n }\n ignoreMutation(record) {\n return record.type == \"attributes\" && (record.target == this.table || this.colgroup.contains(record.target));\n }\n};\nfunction updateColumnsOnResize(node, colgroup, table, defaultCellMinWidth, overrideCol, overrideValue) {\n var _a;\n let totalWidth = 0;\n let fixedWidth = true;\n let nextDOM = colgroup.firstChild;\n const row = node.firstChild;\n if (!row) return;\n for (let i = 0, col = 0; i < row.childCount; i++) {\n const { colspan, colwidth } = row.child(i).attrs;\n for (let j = 0; j < colspan; j++, col++) {\n const hasWidth = overrideCol == col ? overrideValue : colwidth && colwidth[j];\n const cssWidth = hasWidth ? hasWidth + \"px\" : \"\";\n totalWidth += hasWidth || defaultCellMinWidth;\n if (!hasWidth) fixedWidth = false;\n if (!nextDOM) {\n const col2 = document.createElement(\"col\");\n col2.style.width = cssWidth;\n colgroup.appendChild(col2);\n } else {\n if (nextDOM.style.width != cssWidth) {\n nextDOM.style.width = cssWidth;\n }\n nextDOM = nextDOM.nextSibling;\n }\n }\n }\n while (nextDOM) {\n const after = nextDOM.nextSibling;\n (_a = nextDOM.parentNode) == null ? void 0 : _a.removeChild(nextDOM);\n nextDOM = after;\n }\n if (fixedWidth) {\n table.style.width = totalWidth + \"px\";\n table.style.minWidth = \"\";\n } else {\n table.style.width = \"\";\n table.style.minWidth = totalWidth + \"px\";\n }\n}\n\n// src/columnresizing.ts\nvar columnResizingPluginKey = new PluginKey3(\n \"tableColumnResizing\"\n);\nfunction columnResizing({\n handleWidth = 5,\n cellMinWidth = 25,\n defaultCellMinWidth = 100,\n View = TableView,\n lastColumnResizable = true\n} = {}) {\n const plugin = new Plugin({\n key: columnResizingPluginKey,\n state: {\n init(_, state) {\n var _a, _b;\n const nodeViews = (_b = (_a = plugin.spec) == null ? void 0 : _a.props) == null ? void 0 : _b.nodeViews;\n const tableName = tableNodeTypes(state.schema).table.name;\n if (View && nodeViews) {\n nodeViews[tableName] = (node, view) => {\n return new View(node, defaultCellMinWidth, view);\n };\n }\n return new ResizeState(-1, false);\n },\n apply(tr, prev) {\n return prev.apply(tr);\n }\n },\n props: {\n attributes: (state) => {\n const pluginState = columnResizingPluginKey.getState(state);\n return pluginState && pluginState.activeHandle > -1 ? { class: \"resize-cursor\" } : {};\n },\n handleDOMEvents: {\n mousemove: (view, event) => {\n handleMouseMove(view, event, handleWidth, lastColumnResizable);\n },\n mouseleave: (view) => {\n handleMouseLeave(view);\n },\n mousedown: (view, event) => {\n handleMouseDown2(view, event, cellMinWidth, defaultCellMinWidth);\n }\n },\n decorations: (state) => {\n const pluginState = columnResizingPluginKey.getState(state);\n if (pluginState && pluginState.activeHandle > -1) {\n return handleDecorations(state, pluginState.activeHandle);\n }\n },\n nodeViews: {}\n }\n });\n return plugin;\n}\nvar ResizeState = class _ResizeState {\n constructor(activeHandle, dragging) {\n this.activeHandle = activeHandle;\n this.dragging = dragging;\n }\n apply(tr) {\n const state = this;\n const action = tr.getMeta(columnResizingPluginKey);\n if (action && action.setHandle != null)\n return new _ResizeState(action.setHandle, false);\n if (action && action.setDragging !== void 0)\n return new _ResizeState(state.activeHandle, action.setDragging);\n if (state.activeHandle > -1 && tr.docChanged) {\n let handle = tr.mapping.map(state.activeHandle, -1);\n if (!pointsAtCell(tr.doc.resolve(handle))) {\n handle = -1;\n }\n return new _ResizeState(handle, state.dragging);\n }\n return state;\n }\n};\nfunction handleMouseMove(view, event, handleWidth, lastColumnResizable) {\n if (!view.editable) return;\n const pluginState = columnResizingPluginKey.getState(view.state);\n if (!pluginState) return;\n if (!pluginState.dragging) {\n const target = domCellAround(event.target);\n let cell = -1;\n if (target) {\n const { left, right } = target.getBoundingClientRect();\n if (event.clientX - left <= handleWidth)\n cell = edgeCell(view, event, \"left\", handleWidth);\n else if (right - event.clientX <= handleWidth)\n cell = edgeCell(view, event, \"right\", handleWidth);\n }\n if (cell != pluginState.activeHandle) {\n if (!lastColumnResizable && cell !== -1) {\n const $cell = view.state.doc.resolve(cell);\n const table = $cell.node(-1);\n const map = TableMap.get(table);\n const tableStart = $cell.start(-1);\n const col = map.colCount($cell.pos - tableStart) + $cell.nodeAfter.attrs.colspan - 1;\n if (col == map.width - 1) {\n return;\n }\n }\n updateHandle(view, cell);\n }\n }\n}\nfunction handleMouseLeave(view) {\n if (!view.editable) return;\n const pluginState = columnResizingPluginKey.getState(view.state);\n if (pluginState && pluginState.activeHandle > -1 && !pluginState.dragging)\n updateHandle(view, -1);\n}\nfunction handleMouseDown2(view, event, cellMinWidth, defaultCellMinWidth) {\n var _a;\n if (!view.editable) return false;\n const win = (_a = view.dom.ownerDocument.defaultView) != null ? _a : window;\n const pluginState = columnResizingPluginKey.getState(view.state);\n if (!pluginState || pluginState.activeHandle == -1 || pluginState.dragging)\n return false;\n const cell = view.state.doc.nodeAt(pluginState.activeHandle);\n const width = currentColWidth(view, pluginState.activeHandle, cell.attrs);\n view.dispatch(\n view.state.tr.setMeta(columnResizingPluginKey, {\n setDragging: { startX: event.clientX, startWidth: width }\n })\n );\n function finish(event2) {\n win.removeEventListener(\"mouseup\", finish);\n win.removeEventListener(\"mousemove\", move);\n const pluginState2 = columnResizingPluginKey.getState(view.state);\n if (pluginState2 == null ? void 0 : pluginState2.dragging) {\n updateColumnWidth(\n view,\n pluginState2.activeHandle,\n draggedWidth(pluginState2.dragging, event2, cellMinWidth)\n );\n view.dispatch(\n view.state.tr.setMeta(columnResizingPluginKey, { setDragging: null })\n );\n }\n }\n function move(event2) {\n if (!event2.which) return finish(event2);\n const pluginState2 = columnResizingPluginKey.getState(view.state);\n if (!pluginState2) return;\n if (pluginState2.dragging) {\n const dragged = draggedWidth(pluginState2.dragging, event2, cellMinWidth);\n displayColumnWidth(\n view,\n pluginState2.activeHandle,\n dragged,\n defaultCellMinWidth\n );\n }\n }\n displayColumnWidth(\n view,\n pluginState.activeHandle,\n width,\n defaultCellMinWidth\n );\n win.addEventListener(\"mouseup\", finish);\n win.addEventListener(\"mousemove\", move);\n event.preventDefault();\n return true;\n}\nfunction currentColWidth(view, cellPos, { colspan, colwidth }) {\n const width = colwidth && colwidth[colwidth.length - 1];\n if (width) return width;\n const dom = view.domAtPos(cellPos);\n const node = dom.node.childNodes[dom.offset];\n let domWidth = node.offsetWidth, parts = colspan;\n if (colwidth) {\n for (let i = 0; i < colspan; i++)\n if (colwidth[i]) {\n domWidth -= colwidth[i];\n parts--;\n }\n }\n return domWidth / parts;\n}\nfunction domCellAround(target) {\n while (target && target.nodeName != \"TD\" && target.nodeName != \"TH\")\n target = target.classList && target.classList.contains(\"ProseMirror\") ? null : target.parentNode;\n return target;\n}\nfunction edgeCell(view, event, side, handleWidth) {\n const offset = side == \"right\" ? -handleWidth : handleWidth;\n const found = view.posAtCoords({\n left: event.clientX + offset,\n top: event.clientY\n });\n if (!found) return -1;\n const { pos } = found;\n const $cell = cellAround(view.state.doc.resolve(pos));\n if (!$cell) return -1;\n if (side == \"right\") return $cell.pos;\n const map = TableMap.get($cell.node(-1)), start = $cell.start(-1);\n const index = map.map.indexOf($cell.pos - start);\n return index % map.width == 0 ? -1 : start + map.map[index - 1];\n}\nfunction draggedWidth(dragging, event, resizeMinWidth) {\n const offset = event.clientX - dragging.startX;\n return Math.max(resizeMinWidth, dragging.startWidth + offset);\n}\nfunction updateHandle(view, value) {\n view.dispatch(\n view.state.tr.setMeta(columnResizingPluginKey, { setHandle: value })\n );\n}\nfunction updateColumnWidth(view, cell, width) {\n const $cell = view.state.doc.resolve(cell);\n const table = $cell.node(-1), map = TableMap.get(table), start = $cell.start(-1);\n const col = map.colCount($cell.pos - start) + $cell.nodeAfter.attrs.colspan - 1;\n const tr = view.state.tr;\n for (let row = 0; row < map.height; row++) {\n const mapIndex = row * map.width + col;\n if (row && map.map[mapIndex] == map.map[mapIndex - map.width]) continue;\n const pos = map.map[mapIndex];\n const attrs = table.nodeAt(pos).attrs;\n const index = attrs.colspan == 1 ? 0 : col - map.colCount(pos);\n if (attrs.colwidth && attrs.colwidth[index] == width) continue;\n const colwidth = attrs.colwidth ? attrs.colwidth.slice() : zeroes(attrs.colspan);\n colwidth[index] = width;\n tr.setNodeMarkup(start + pos, null, { ...attrs, colwidth });\n }\n if (tr.docChanged) view.dispatch(tr);\n}\nfunction displayColumnWidth(view, cell, width, defaultCellMinWidth) {\n const $cell = view.state.doc.resolve(cell);\n const table = $cell.node(-1), start = $cell.start(-1);\n const col = TableMap.get(table).colCount($cell.pos - start) + $cell.nodeAfter.attrs.colspan - 1;\n let dom = view.domAtPos($cell.start(-1)).node;\n while (dom && dom.nodeName != \"TABLE\") {\n dom = dom.parentNode;\n }\n if (!dom) return;\n updateColumnsOnResize(\n table,\n dom.firstChild,\n dom,\n defaultCellMinWidth,\n col,\n width\n );\n}\nfunction zeroes(n) {\n return Array(n).fill(0);\n}\nfunction handleDecorations(state, cell) {\n var _a;\n const decorations = [];\n const $cell = state.doc.resolve(cell);\n const table = $cell.node(-1);\n if (!table) {\n return DecorationSet2.empty;\n }\n const map = TableMap.get(table);\n const start = $cell.start(-1);\n const col = map.colCount($cell.pos - start) + $cell.nodeAfter.attrs.colspan - 1;\n for (let row = 0; row < map.height; row++) {\n const index = col + row * map.width;\n if ((col == map.width - 1 || map.map[index] != map.map[index + 1]) && (row == 0 || map.map[index] != map.map[index - map.width])) {\n const cellPos = map.map[index];\n const pos = start + cellPos + table.nodeAt(cellPos).nodeSize - 1;\n const dom = document.createElement(\"div\");\n dom.className = \"column-resize-handle\";\n if ((_a = columnResizingPluginKey.getState(state)) == null ? void 0 : _a.dragging) {\n decorations.push(\n Decoration2.node(\n start + cellPos,\n start + cellPos + table.nodeAt(cellPos).nodeSize,\n {\n class: \"column-resize-dragging\"\n }\n )\n );\n }\n decorations.push(Decoration2.widget(pos, dom));\n }\n }\n return DecorationSet2.create(state.doc, decorations);\n}\n\n// src/index.ts\nfunction tableEditing({\n allowTableNodeSelection = false\n} = {}) {\n return new Plugin2({\n key: tableEditingKey,\n // This piece of state is used to remember when a mouse-drag\n // cell-selection is happening, so that it can continue even as\n // transactions (which might move its anchor cell) come in.\n state: {\n init() {\n return null;\n },\n apply(tr, cur) {\n const set = tr.getMeta(tableEditingKey);\n if (set != null) return set == -1 ? null : set;\n if (cur == null || !tr.docChanged) return cur;\n const { deleted, pos } = tr.mapping.mapResult(cur);\n return deleted ? null : pos;\n }\n },\n props: {\n decorations: drawCellSelection,\n handleDOMEvents: {\n mousedown: handleMouseDown\n },\n createSelectionBetween(view) {\n return tableEditingKey.getState(view.state) != null ? view.state.selection : null;\n },\n handleTripleClick,\n handleKeyDown,\n handlePaste\n },\n appendTransaction(_, oldState, state) {\n return normalizeSelection(\n state,\n fixTables(state, oldState),\n allowTableNodeSelection\n );\n }\n });\n}\nexport {\n CellBookmark,\n CellSelection,\n ResizeState,\n TableMap,\n TableView,\n clipCells as __clipCells,\n insertCells as __insertCells,\n pastedCells as __pastedCells,\n addColSpan,\n addColumn,\n addColumnAfter,\n addColumnBefore,\n addRow,\n addRowAfter,\n addRowBefore,\n cellAround,\n cellNear,\n colCount,\n columnIsHeader,\n columnResizing,\n columnResizingPluginKey,\n deleteCellSelection,\n deleteColumn,\n deleteRow,\n deleteTable,\n findCell,\n fixTables,\n fixTablesKey,\n goToNextCell,\n handlePaste,\n inSameTable,\n isInTable,\n mergeCells,\n moveCellForward,\n nextCell,\n pointsAtCell,\n removeColSpan,\n removeColumn,\n removeRow,\n rowIsHeader,\n selectedRect,\n selectionCell,\n setCellAttr,\n splitCell,\n splitCellWithType,\n tableEditing,\n tableEditingKey,\n tableNodeTypes,\n tableNodes,\n toggleHeader,\n toggleHeaderCell,\n toggleHeaderColumn,\n toggleHeaderRow,\n updateColumnsOnResize\n};\n"],"names":["readFromCache","addToCache","WeakMap","cache","key","get","value","set","cacheSize","cachePos","i","length","TableMap","constructor","width","height","map","problems","this","findCell","pos","curPos","left","top","right","bottom","j","RangeError","colCount","nextCell","axis","dir","rectBetween","a","b","leftA","rightA","topA","bottomA","leftB","rightB","topB","bottomB","Math","min","max","cellsInRect","rect","result","seen","row","col","index","push","positionAt","table","rowStart","rowEnd","child","nodeSize","rowEndIndex","type","spec","tableRole","name","hasRowSpan","childCount","rowNode","rowWidth","prevRow","cell","attrs","rowspan","colspan","findWidth","mapPos","colWidths","e","cellNode","colwidth","h","n","start","w","colW","widthIndex","prev","expectedPos","missing","tableMap","badWidths","node","nodeAt","updated","colWidth","freshColWidth","unshift","findBadColWidths","computeMap","slice","tableNodeTypes","schema","cached","nodes","role","tableEditingKey","PluginKey","cellAround","$pos","d","depth","resolve","before","isInTable","state","$head","selection","selectionCell","sel","$anchorCell","$headCell","$anchor","$cell","cellNear","head","after","nodeAfter","firstChild","doc","nodeBefore","lastChild","pointsAtCell","parent","moveCellForward","inSameTable","$cellA","$cellB","end","tableStart","moved","removeColSpan","splice","some","addColSpan","columnIsHeader","headerCell","header_cell","CellSelection","_CellSelection","Selection","cells","filter","p","ranges","from","SelectionRange","content","size","super","$from","$to","mapping","tableChanged","isRowSelection","rowSelection","isColSelection","colSelection","TextSelection","between","rows","rowContent","cellRect","extraLeft","extraRight","createAndFill","JSON","stringify","create","copy","Fragment","fragment","Slice","replace","tr","empty","mapFrom","steps","findFrom","to","setSelection","replaceWith","forEachCell","f","anchorTop","headTop","anchorBottom","headBottom","anchorRect","headRect","anchorLeft","headLeft","anchorRight","headRight","eq","other","toJSON","anchor","fromJSON","json","anchorCell","headCell","getBookmark","CellBookmark","prototype","visible","jsonID","_CellBookmark","near","drawCellSelection","Decoration","class","DecorationSet","fixTablesKey","PluginKey2","changedDescendants","old","cur","offset","oldSize","curSize","outer","scan","sameMarkup","nodesBetween","fixTables","oldState","check","tablePos","mustAdd","prob","setNodeMarkup","delete","first","last","add","side","insert","setMeta","fixTable","descendants","selectedRect","addColumn","refColumn","removeColumn","mapStart","maps","rowIsHeader","_a","addRow","rowPos","refRow","removeRow","nextRow","Set","has","newPos","isEmpty","c","isTextblock","splitCellWithType","getCellType","dispatch","cellPos","cellWrapping","baseAttrs","lastCell","isHeaderEnabledByType","types","cellPositions","toggleHeader","options","useDeprecatedLogic","deprecated_toggleHeader","isHeaderRowEnabled","isHeaderColumnEnabled","selectionStartsAt","cellsRect","newType","forEach","relativeCellPos","toggleHeaderCell","deleteCellSelection","baseContent","Slice2","docChanged","pastedCells","openStart","openEnd","fitSlice","Slice3","widths","r","Fragment3","append","ensureRectangular","nodeType","Transform","clipCells","newWidth","newHeight","added","newRows","frag","createChecked","source","isolateHorizontal","found","cellTop","cellLeft","isolateVertical","updatePos","insertCells","Error","recomp","emptyHead","start2","header","emptyRow","growTable","handleKeyDown","keydownHandler","ArrowLeft","arrow","ArrowRight","ArrowUp","ArrowDown","shiftArrow","Backspace","Delete","maybeSetSelection","scrollIntoView","view","Selection2","atEndOfCell","$next","newSel","cellSel","handleTripleClick","handlePaste","_","Fragment4","handleMouseDown","startEvent","ctrlKey","metaKey","startDOMCell","domInCell","target","shiftKey","setCellSelection","preventDefault","cellUnderMouse","$anchor2","event","starting","getState","stop","root","removeEventListener","move","_event","addEventListener","TextSelection3","indexAfter","dirStr","endOfTextblock","dom","parentNode","nodeName","mousePos","posAtCoords","clientX","clientY","TableView","defaultCellMinWidth","document","createElement","className","appendChild","style","setProperty","colgroup","updateColumnsOnResize","contentDOM","update","ignoreMutation","record","contains","overrideCol","overrideValue","totalWidth","fixedWidth","nextDOM","hasWidth","cssWidth","nextSibling","col2","removeChild","minWidth","columnResizingPluginKey","PluginKey3","ResizeState","_ResizeState","activeHandle","dragging","apply","action","getMeta","setHandle","setDragging","handle","edgeCell","handleWidth","indexOf","draggedWidth","resizeMinWidth","startX","startWidth","updateHandle","displayColumnWidth","domAtPos","zeroes","Array","fill","cellMinWidth","View","lastColumnResizable","plugin","Plugin","init","_b","nodeViews","props","tableName","attributes","pluginState","handleDOMEvents","mousemove","editable","classList","domCellAround","getBoundingClientRect","handleMouseMove","mouseleave","handleMouseLeave","mousedown","win","ownerDocument","defaultView","window","domWidth","childNodes","offsetWidth","parts","currentColWidth","finish","event2","pluginState2","mapIndex","updateColumnWidth","which","dragged","handleMouseDown2","decorations","DecorationSet2","Decoration2","widget","handleDecorations","direction","findNextCell","TextSelection2","indexTop","indexLeft","indexBottom","indexRight","cellsOverlapRectangle","mergedPos","mergedCell","Fragment2","mapped","nodeTypes","allowTableNodeSelection","Plugin2","deleted","mapResult","createSelectionBetween","appendTransaction","normalize","NodeSelection2","afterFrom","beforeTo","test","isCellBoundarySelection","fromCellBoundaryNode","toCellBoundaryNode","parentOffset","isTextSelectionAcrossCells","normalizeSelection"],"mappings":"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","x_google_ignoreList":[0]}
|