@lexical/table 0.21.1-nightly.20241206.0 → 0.21.1-nightly.20241209.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -6,4 +6,4 @@
6
6
  *
7
7
  */
8
8
 
9
- import{addClassNamesToElement as e,$findMatchingParent as t,removeClassNamesFromElement as n,objectKlassEquals as o,isHTMLElement as r}from"@lexical/utils";import{ElementNode as l,isHTMLElement as s,$createParagraphNode as i,$isElementNode as c,$isLineBreakNode as a,$isTextNode as u,$applyNodeReplacement as h,createCommand as d,$createTextNode as g,$getSelection as f,$isRangeSelection as m,$createPoint as p,$isParagraphNode as C,$normalizeSelection__EXPERIMENTAL as S,isCurrentlyReadOnlyMode as _,TEXT_TYPE_TO_FORMAT as w,$getNodeByKey as b,$getEditor as y,$setSelection as N,SELECTION_CHANGE_COMMAND as x,getDOMSelection as T,$createRangeSelection as v,$getRoot as R,COMMAND_PRIORITY_HIGH as O,KEY_ESCAPE_COMMAND as F,COMMAND_PRIORITY_CRITICAL as k,CUT_COMMAND as K,FORMAT_TEXT_COMMAND as E,FORMAT_ELEMENT_COMMAND as M,CONTROLLED_TEXT_INSERTION_COMMAND as A,KEY_TAB_COMMAND as $,FOCUS_COMMAND as W,SELECTION_INSERT_CLIPBOARD_NODES_COMMAND as H,$getPreviousSelection as P,$getNearestNodeFromDOMNode as B,$createRangeSelectionFromDom as L,INSERT_PARAGRAPH_COMMAND as D,$isRootOrShadowRoot as I,$isDecoratorNode as U,KEY_ARROW_DOWN_COMMAND as z,KEY_ARROW_UP_COMMAND as Y,KEY_ARROW_LEFT_COMMAND as q,KEY_ARROW_RIGHT_COMMAND as X,DELETE_WORD_COMMAND as J,DELETE_LINE_COMMAND as j,DELETE_CHARACTER_COMMAND as V,KEY_BACKSPACE_COMMAND as G,KEY_DELETE_COMMAND as Q,setDOMUnmanaged as Z}from"lexical";import{copyToClipboard as ee,$getClipboardDataFromSelection as te}from"@lexical/clipboard";const ne=/^(\d+(?:\.\d+)?)px$/,oe={BOTH:3,COLUMN:2,NO_STATUS:0,ROW:1};class re extends l{static getType(){return"tablecell"}static clone(e){return new re(e.__headerState,e.__colSpan,e.__width,e.__key)}afterCloneFrom(e){super.afterCloneFrom(e),this.__rowSpan=e.__rowSpan,this.__backgroundColor=e.__backgroundColor}static importDOM(){return{td:e=>({conversion:le,priority:0}),th:e=>({conversion:le,priority:0})}}static importJSON(e){const t=e.colSpan||1,n=e.rowSpan||1;return se(e.headerState,t,e.width||void 0).setRowSpan(n).setBackgroundColor(e.backgroundColor||null)}constructor(e=oe.NO_STATUS,t=1,n,o){super(o),this.__colSpan=t,this.__rowSpan=1,this.__headerState=e,this.__width=n,this.__backgroundColor=null}createDOM(t){const n=document.createElement(this.getTag());return this.__width&&(n.style.width=`${this.__width}px`),this.__colSpan>1&&(n.colSpan=this.__colSpan),this.__rowSpan>1&&(n.rowSpan=this.__rowSpan),null!==this.__backgroundColor&&(n.style.backgroundColor=this.__backgroundColor),e(n,t.theme.tableCell,this.hasHeader()&&t.theme.tableCellHeader),n}exportDOM(e){const t=super.exportDOM(e);if(t.element&&s(t.element)){const e=t.element;e.setAttribute("data-temporary-table-cell-lexical-key",this.getKey()),e.style.border="1px solid black",this.__colSpan>1&&(e.colSpan=this.__colSpan),this.__rowSpan>1&&(e.rowSpan=this.__rowSpan),e.style.width=`${this.getWidth()||75}px`,e.style.verticalAlign="top",e.style.textAlign="start",null===this.__backgroundColor&&this.hasHeader()&&(e.style.backgroundColor="#f2f3f5")}return t}exportJSON(){return{...super.exportJSON(),backgroundColor:this.getBackgroundColor(),colSpan:this.__colSpan,headerState:this.__headerState,rowSpan:this.__rowSpan,type:"tablecell",width:this.getWidth()}}getColSpan(){return this.getLatest().__colSpan}setColSpan(e){const t=this.getWritable();return t.__colSpan=e,t}getRowSpan(){return this.getLatest().__rowSpan}setRowSpan(e){const t=this.getWritable();return t.__rowSpan=e,t}getTag(){return this.hasHeader()?"th":"td"}setHeaderStyles(e,t=oe.BOTH){const n=this.getWritable();return n.__headerState=e&t|n.__headerState&~t,n}getHeaderStyles(){return this.getLatest().__headerState}setWidth(e){const t=this.getWritable();return t.__width=e,t}getWidth(){return this.getLatest().__width}getBackgroundColor(){return this.getLatest().__backgroundColor}setBackgroundColor(e){const t=this.getWritable();return t.__backgroundColor=e,t}toggleHeaderStyle(e){const t=this.getWritable();return(t.__headerState&e)===e?t.__headerState-=e:t.__headerState+=e,t}hasHeaderState(e){return(this.getHeaderStyles()&e)===e}hasHeader(){return this.getLatest().__headerState!==oe.NO_STATUS}updateDOM(e){return e.__headerState!==this.__headerState||e.__width!==this.__width||e.__colSpan!==this.__colSpan||e.__rowSpan!==this.__rowSpan||e.__backgroundColor!==this.__backgroundColor}isShadowRoot(){return!0}collapseAtStart(){return!0}canBeEmpty(){return!1}canIndent(){return!1}}function le(e){const t=e,n=e.nodeName.toLowerCase();let o;ne.test(t.style.width)&&(o=parseFloat(t.style.width));const r=se("th"===n?oe.ROW:oe.NO_STATUS,t.colSpan,o);r.__rowSpan=t.rowSpan;const l=t.style.backgroundColor;""!==l&&(r.__backgroundColor=l);const s=t.style,h=(s&&s.textDecoration||"").split(" "),d="700"===s.fontWeight||"bold"===s.fontWeight,g=h.includes("line-through"),f="italic"===s.fontStyle,m=h.includes("underline");return{after:e=>(0===e.length&&e.push(i()),e),forChild:(e,t)=>{if(ie(t)&&!c(e)){const t=i();return a(e)&&"\n"===e.getTextContent()?null:(u(e)&&(d&&e.toggleFormat("bold"),g&&e.toggleFormat("strikethrough"),f&&e.toggleFormat("italic"),m&&e.toggleFormat("underline")),t.append(e),t)}return e},node:r}}function se(e,t=1,n){return h(new re(e,t,n))}function ie(e){return e instanceof re}const ce=d("INSERT_TABLE_COMMAND");function ae(e){return e&&e.__esModule&&Object.prototype.hasOwnProperty.call(e,"default")?e.default:e}var ue=ae((function(e){const t=new URLSearchParams;t.append("code",e);for(let e=1;e<arguments.length;e++)t.append("v",arguments[e]);throw Error(`Minified Lexical error #${e}; visit https://lexical.dev/docs/error?${t} for the full message or use the non-minified dev environment for full errors and additional helpful warnings.`)}));const he="undefined"!=typeof window&&void 0!==window.document&&void 0!==window.document.createElement,de=he&&"documentMode"in document?document.documentMode:null,ge=he&&/^(?!.*Seamonkey)(?=.*Firefox).*/i.test(navigator.userAgent);he&&"InputEvent"in window&&!de&&new window.InputEvent("input");class fe extends l{static getType(){return"tablerow"}static clone(e){return new fe(e.__height,e.__key)}static importDOM(){return{tr:e=>({conversion:me,priority:0})}}static importJSON(e){return pe(e.height)}constructor(e,t){super(t),this.__height=e}exportJSON(){return{...super.exportJSON(),...this.getHeight()&&{height:this.getHeight()},type:"tablerow",version:1}}createDOM(t){const n=document.createElement("tr");return this.__height&&(n.style.height=`${this.__height}px`),e(n,t.theme.tableRow),n}extractWithChild(e,t,n){return"html"===n}isShadowRoot(){return!0}setHeight(e){return this.getWritable().__height=e,this.__height}getHeight(){return this.getLatest().__height}updateDOM(e){return e.__height!==this.__height}canBeEmpty(){return!1}canIndent(){return!1}}function me(e){const t=e;let n;return ne.test(t.style.height)&&(n=parseFloat(t.style.height)),{node:pe(n)}}function pe(e){return h(new fe(e))}function Ce(e){return e instanceof fe}function Se(e,t,n=!0){const o=At();for(let r=0;r<e;r++){const e=pe();for(let o=0;o<t;o++){let t=oe.NO_STATUS;"object"==typeof n?(0===r&&n.rows&&(t|=oe.ROW),0===o&&n.columns&&(t|=oe.COLUMN)):n&&(0===r&&(t|=oe.ROW),0===o&&(t|=oe.COLUMN));const l=se(t),s=i();s.append(g()),l.append(s),e.append(l)}o.append(e)}return o}function _e(e){const n=t(e,(e=>ie(e)));return ie(n)?n:null}function we(e){const n=t(e,(e=>Ce(e)));if(Ce(n))return n;throw new Error("Expected table cell to be inside of table row.")}function be(e){const n=t(e,(e=>$t(e)));if($t(n))return n;throw new Error("Expected table cell to be inside of table.")}function ye(e){const t=we(e);return be(t).getChildren().findIndex((e=>e.is(t)))}function Ne(e){return we(e).getChildren().findIndex((t=>t.is(e)))}function xe(e,t){const n=be(e),{x:o,y:r}=n.getCordsFromCellNode(e,t);return{above:n.getCellNodeFromCords(o,r-1,t),below:n.getCellNodeFromCords(o,r+1,t),left:n.getCellNodeFromCords(o-1,r,t),right:n.getCellNodeFromCords(o+1,r,t)}}function Te(e,t){const n=e.getChildren();if(t>=n.length||t<0)throw new Error("Expected table cell to be inside of table row.");return n[t].remove(),e}function ve(e,t,n=!0,o,r){const l=e.getChildren();if(t>=l.length||t<0)throw new Error("Table row target index out of range");const s=l[t];if(!Ce(s))throw new Error("Row before insertion index does not exist.");for(let e=0;e<o;e++){const e=s.getChildren(),t=e.length,o=pe();for(let n=0;n<t;n++){const t=e[n];ie(t)||ue(12);const{above:l,below:s}=xe(t,r);let c=oe.NO_STATUS;const a=l&&l.getWidth()||s&&s.getWidth()||void 0;(l&&l.hasHeaderState(oe.COLUMN)||s&&s.hasHeaderState(oe.COLUMN))&&(c|=oe.COLUMN);const u=se(c,1,a);u.append(i()),o.append(u)}n?s.insertAfter(o):s.insertBefore(o)}return e}const Re=(e,t)=>e===oe.BOTH||e===t?t:oe.NO_STATUS;function Oe(e=!0){const t=f();m(t)||ze(t)||ue(188);const n=t.focus.getNode(),[o,,r]=Be(n),[l,s]=He(r,o,o),c=l[0].length,{startRow:a}=s;let u=null;if(e){const e=a+o.__rowSpan-1,t=l[e],n=pe();for(let o=0;o<c;o++){const{cell:r,startRow:l}=t[o];if(l+r.__rowSpan-1<=e){const e=t[o].cell.__headerState,r=Re(e,oe.COLUMN);n.append(se(r).append(i()))}else r.setRowSpan(r.__rowSpan+1)}const s=r.getChildAtIndex(e);Ce(s)||ue(145),s.insertAfter(n),u=n}else{const e=l[a],t=pe();for(let n=0;n<c;n++){const{cell:o,startRow:r}=e[n];if(r===a){const o=e[n].cell.__headerState,r=Re(o,oe.COLUMN);t.append(se(r).append(i()))}else o.setRowSpan(o.__rowSpan+1)}const n=r.getChildAtIndex(a);Ce(n)||ue(145),n.insertBefore(t),u=t}return u}function Fe(e,t,n=!0,o,r){const l=e.getChildren(),s=[];for(let e=0;e<l.length;e++){const n=l[e];if(Ce(n))for(let e=0;e<o;e++){const e=n.getChildren();if(t>=e.length||t<0)throw new Error("Table column target index out of range");const o=e[t];ie(o)||ue(12);const{left:l,right:c}=xe(o,r);let a=oe.NO_STATUS;(l&&l.hasHeaderState(oe.ROW)||c&&c.hasHeaderState(oe.ROW))&&(a|=oe.ROW);const u=se(a);u.append(i()),s.push({newTableCell:u,targetCell:o})}}return s.forEach((({newTableCell:e,targetCell:t})=>{n?t.insertAfter(e):t.insertBefore(e)})),e}function ke(e=!0){const t=f();m(t)||ze(t)||ue(188);const n=t.anchor.getNode(),o=t.focus.getNode(),[r]=Be(n),[l,,s]=Be(o),[c,a,u]=He(s,l,r),h=c.length,d=e?Math.max(a.startColumn,u.startColumn):Math.min(a.startColumn,u.startColumn),g=e?d+l.__colSpan-1:d-1,p=s.getFirstChild();Ce(p)||ue(120);let C=null;function S(e=oe.NO_STATUS){const t=se(e).append(i());return null===C&&(C=t),t}let _=p;e:for(let e=0;e<h;e++){if(0!==e){const e=_.getNextSibling();Ce(e)||ue(121),_=e}const t=c[e],n=t[g<0?0:g].cell.__headerState,o=Re(n,oe.ROW);if(g<0){$e(_,S(o));continue}const{cell:r,startColumn:l,startRow:s}=t[g];if(l+r.__colSpan-1<=g){let n=r,l=s,i=g;for(;l!==e&&n.__rowSpan>1;){if(i-=r.__colSpan,!(i>=0)){_.append(S(o));continue e}{const{cell:e,startRow:o}=t[i];n=e,l=o}}n.insertAfter(S(o))}else r.setColSpan(r.__colSpan+1)}null!==C&&Ae(C);const w=s.getColWidths();if(w){const e=[...w],t=g<0?0:g,n=e[t];e.splice(t,0,n),s.setColWidths(e)}return C}function Ke(e,t){const n=e.getChildren();for(let e=0;e<n.length;e++){const o=n[e];if(Ce(o)){const e=o.getChildren();if(t>=e.length||t<0)throw new Error("Table column target index out of range");e[t].remove()}}return e}function Ee(){const e=f();m(e)||ze(e)||ue(188);const[t,n]=e.isBackward()?[e.focus.getNode(),e.anchor.getNode()]:[e.anchor.getNode(),e.focus.getNode()],[o,,r]=Be(t),[l]=Be(n),[s,i,c]=He(r,o,l),{startRow:a}=i,{startRow:u}=c,h=u+l.__rowSpan-1;if(s.length===h-a+1)return void r.remove();const d=s[0].length,g=s[h+1],p=r.getChildAtIndex(h+1);for(let e=h;e>=a;e--){for(let t=d-1;t>=0;t--){const{cell:n,startRow:o,startColumn:r}=s[e][t];if(r===t&&(e===a&&o<a&&n.setRowSpan(n.__rowSpan-(o-a)),o>=a&&o+n.__rowSpan-1>h))if(n.setRowSpan(n.__rowSpan-(h-o+1)),null===p&&ue(122),0===t)$e(p,n);else{const{cell:e}=g[t-1];e.insertAfter(n)}}const t=r.getChildAtIndex(e);Ce(t)||ue(206,String(e)),t.remove()}if(void 0!==g){const{cell:e}=g[0];Ae(e)}else{const e=s[a-1],{cell:t}=e[0];Ae(t)}}function Me(){const e=f();m(e)||ze(e)||ue(188);const t=e.anchor.getNode(),n=e.focus.getNode(),[o,,r]=Be(t),[l]=Be(n),[s,i,c]=He(r,o,l),{startColumn:a}=i,{startRow:u,startColumn:h}=c,d=Math.min(a,h),g=Math.max(a+o.__colSpan-1,h+l.__colSpan-1),p=g-d+1;if(s[0].length===g-d+1)return r.selectPrevious(),void r.remove();const C=s.length;for(let e=0;e<C;e++)for(let t=d;t<=g;t++){const{cell:n,startColumn:o}=s[e][t];if(o<d){if(t===d){const e=d-o;n.setColSpan(n.__colSpan-Math.min(p,n.__colSpan-e))}}else if(o+n.__colSpan-1>g){if(t===g){const e=g-o+1;n.setColSpan(n.__colSpan-e)}}else n.remove()}const S=s[u],_=a>h?S[a+o.__colSpan]:S[h+l.__colSpan];if(void 0!==_){const{cell:e}=_;Ae(e)}else{const e=h<a?S[h-1]:S[a-1],{cell:t}=e;Ae(t)}const w=r.getColWidths();if(w){const e=[...w];e.splice(d,p),r.setColWidths(e)}}function Ae(e){const t=e.getFirstDescendant();null==t?e.selectStart():t.getParentOrThrow().selectStart()}function $e(e,t){const n=e.getFirstChild();null!==n?n.insertBefore(t):e.append(t)}function We(){const e=f();m(e)||ze(e)||ue(188);const t=e.anchor.getNode(),[n,o,r]=Be(t),l=n.__colSpan,s=n.__rowSpan;if(1===l&&1===s)return;const[c,a]=He(r,n,n),{startColumn:u,startRow:h}=a,d=n.__headerState&oe.COLUMN,g=Array.from({length:l},((e,t)=>{let n=d;for(let e=0;0!==n&&e<c.length;e++)n&=c[e][t+u].cell.__headerState;return n})),p=n.__headerState&oe.ROW,C=Array.from({length:s},((e,t)=>{let n=p;for(let e=0;0!==n&&e<c[0].length;e++)n&=c[t+h][e].cell.__headerState;return n}));if(l>1){for(let e=1;e<l;e++)n.insertAfter(se(g[e]|C[0]).append(i()));n.setColSpan(1)}if(s>1){let e;for(let t=1;t<s;t++){const n=h+t,r=c[n];e=(e||o).getNextSibling(),Ce(e)||ue(125);let s=null;for(let e=0;e<u;e++){const t=r[e],o=t.cell;t.startRow===n&&(s=o),o.__colSpan>1&&(e+=o.__colSpan-1)}if(null===s)for(let n=l-1;n>=0;n--)$e(e,se(g[n]|C[t]).append(i()));else for(let e=l-1;e>=0;e--)s.insertAfter(se(g[e]|C[t]).append(i()))}n.setRowSpan(1)}}function He(e,t,n){const[o,r,l]=Pe(e,t,n);return null===r&&ue(207),null===l&&ue(208),[o,r,l]}function Pe(e,t,n){const o=[];let r=null,l=null;function s(e){let t=o[e];return void 0===t&&(o[e]=t=[]),t}const i=e.getChildren();for(let e=0;e<i.length;e++){const o=i[e];Ce(o)||ue(209);for(let c=o.getFirstChild(),a=0;null!=c;c=c.getNextSibling()){ie(c)||ue(147);const o=s(e);for(;void 0!==o[a];)a++;const u={cell:c,startColumn:a,startRow:e},{__rowSpan:h,__colSpan:d}=c;for(let t=0;t<h&&!(e+t>=i.length);t++){const n=s(e+t);for(let e=0;e<d;e++)n[a+e]=u}null!==t&&null===r&&t.is(c)&&(r=u),null!==n&&null===l&&n.is(c)&&(l=u)}}return[o,r,l]}function Be(e){let n;if(e instanceof re)n=e;else if("__type"in e){const o=t(e,ie);ie(o)||ue(148),n=o}else{const o=t(e.getNode(),ie);ie(o)||ue(148),n=o}const o=n.getParent();Ce(o)||ue(149);const r=o.getParent();return $t(r)||ue(210),[n,o,r]}function Le(e,t,n){let o=Math.min(t.startColumn,n.startColumn),r=Math.min(t.startRow,n.startRow),l=Math.max(t.startColumn+t.cell.__colSpan-1,n.startColumn+n.cell.__colSpan-1),s=Math.max(t.startRow+t.cell.__rowSpan-1,n.startRow+n.cell.__rowSpan-1),i=o,c=r,a=o,u=r;function h(e){const{cell:t,startColumn:n,startRow:i}=e;o=Math.min(o,n),r=Math.min(r,i),l=Math.max(l,n+t.__colSpan-1),s=Math.max(s,i+t.__rowSpan-1)}for(;o<i||r<c||l>a||s>u;){if(o<i){const t=u-c,n=i-1;for(let o=0;o<=t;o++)h(e[c+o][n]);i=n}if(r<c){const t=a-i,n=c-1;for(let o=0;o<=t;o++)h(e[n][i+o]);c=n}if(l>a){const t=u-c,n=a+1;for(let o=0;o<=t;o++)h(e[c+o][n]);a=n}if(s>u){const t=a-i,n=u+1;for(let o=0;o<=t;o++)h(e[n][i+o]);u=n}}return{maxColumn:l,maxRow:s,minColumn:o,minRow:r}}function De(e){const[t,,n]=Be(e),o=n.getChildren(),r=o.length,l=o[0].getChildren().length,s=new Array(r);for(let e=0;e<r;e++)s[e]=new Array(l);for(let e=0;e<r;e++){const n=o[e].getChildren();let r=0;for(let o=0;o<n.length;o++){for(;s[e][r];)r++;const l=n[o],i=l.__rowSpan||1,c=l.__colSpan||1;for(let t=0;t<i;t++)for(let n=0;n<c;n++)s[e+t][r+n]=l;if(t===l)return{colSpan:c,columnIndex:r,rowIndex:e,rowSpan:i};r+=c}}return null}function Ie(e){const[[n,o,r,l],[s,i,c,a]]=["anchor","focus"].map((n=>{const o=e[n].getNode(),r=t(o,ie);ie(r)||ue(238,n,o.getKey(),o.getType());const l=r.getParent();Ce(l)||ue(239,n);const s=l.getParent();return $t(s)||ue(240,n),[o,r,l,s]}));return l.is(a)||ue(241),{anchorCell:o,anchorNode:n,anchorRow:r,anchorTable:l,focusCell:i,focusNode:s,focusRow:c,focusTable:a}}class Ue{constructor(e,t,n){this.anchor=t,this.focus=n,t._selection=this,n._selection=this,this._cachedNodes=null,this.dirty=!1,this.tableKey=e}getStartEndPoints(){return[this.anchor,this.focus]}isValid(){return"root"!==this.tableKey&&"root"!==this.anchor.key&&"element"===this.anchor.type&&"root"!==this.focus.key&&"element"===this.focus.type}isBackward(){return this.focus.isBefore(this.anchor)}getCachedNodes(){return this._cachedNodes}setCachedNodes(e){this._cachedNodes=e}is(e){return ze(e)&&this.tableKey===e.tableKey&&this.anchor.is(e.anchor)&&this.focus.is(e.focus)}set(e,t,n){this.dirty=this.dirty||e!==this.tableKey||t!==this.anchor.key||n!==this.focus.key,this.tableKey=e,this.anchor.key=t,this.focus.key=n,this._cachedNodes=null}clone(){return new Ue(this.tableKey,p(this.anchor.key,this.anchor.offset,this.anchor.type),p(this.focus.key,this.focus.offset,this.focus.type))}isCollapsed(){return!1}extract(){return this.getNodes()}insertRawText(e){}insertText(){}hasFormat(e){let t=0;this.getNodes().filter(ie).forEach((e=>{const n=e.getFirstChild();C(n)&&(t|=n.getTextFormat())}));const n=w[e];return!!(t&n)}insertNodes(e){const t=this.focus.getNode();c(t)||ue(151);S(t.select(0,t.getChildrenSize())).insertNodes(e)}getShape(){const{anchorCell:e,focusCell:t}=Ie(this),n=De(e);null===n&&ue(153);const o=De(t);null===o&&ue(155);const r=Math.min(n.columnIndex,o.columnIndex),l=Math.max(n.columnIndex+n.colSpan-1,o.columnIndex+o.colSpan-1),s=Math.min(n.rowIndex,o.rowIndex),i=Math.max(n.rowIndex+n.rowSpan-1,o.rowIndex+o.rowSpan-1);return{fromX:Math.min(r,l),fromY:Math.min(s,i),toX:Math.max(r,l),toY:Math.max(s,i)}}getNodes(){if(!this.isValid())return[];const e=this._cachedNodes;if(null!==e)return e;const{anchorTable:t,anchorCell:n,focusCell:o}=Ie(this),r=o.getParents()[1];if(r!==t){if(t.isParentOf(o)){const e=r.getParent();null==e&&ue(159),this.set(this.tableKey,o.getKey(),e.getKey())}else{const e=t.getParent();null==e&&ue(158),this.set(this.tableKey,e.getKey(),o.getKey())}return this.getNodes()}const[l,s,i]=He(t,n,o),{minColumn:c,maxColumn:a,minRow:u,maxRow:h}=Le(l,s,i),d=new Map([[t.getKey(),t]]);let g=null;for(let e=u;e<=h;e++)for(let t=c;t<=a;t++){const{cell:n}=l[e][t],o=n.getParent();Ce(o)||ue(160),o!==g&&(d.set(o.getKey(),o),g=o),d.has(n.getKey())||qe(n,(e=>{d.set(e.getKey(),e)}))}const f=Array.from(d.values());return _()||(this._cachedNodes=f),f}getTextContent(){const e=this.getNodes().filter((e=>ie(e)));let t="";for(let n=0;n<e.length;n++){const o=e[n],r=o.__parent,l=(e[n+1]||{}).__parent;t+=o.getTextContent()+(l!==r?"\n":"\t")}return t}}function ze(e){return e instanceof Ue}function Ye(){const e=p("root",0,"element"),t=p("root",0,"element");return new Ue("root",e,t)}function qe(e,t){const n=[[e]];for(let e=n.at(-1);void 0!==e&&n.length>0;e=n.at(-1)){const o=e.pop();void 0===o?n.pop():!1!==t(o)&&c(o)&&n.push(o.getChildren())}}function Xe(e,t=y()){const n=b(e);$t(n)||ue(231,e);const o=Ve(n,t.getElementByKey(e));return null===o&&ue(232,e),{tableElement:o,tableNode:n}}class Je{constructor(e,t){this.isHighlightingCells=!1,this.anchorX=-1,this.anchorY=-1,this.focusX=-1,this.focusY=-1,this.listenersToRemove=new Set,this.tableNodeKey=t,this.editor=e,this.table={columns:0,domRows:[],rows:0},this.tableSelection=null,this.anchorCellNodeKey=null,this.focusCellNodeKey=null,this.anchorCell=null,this.focusCell=null,this.hasHijackedSelectionStyles=!1,this.isSelecting=!1,this.shouldCheckSelection=!1,this.abortController=new AbortController,this.listenerOptions={signal:this.abortController.signal},this.nextFocus=null,this.trackTable()}getTable(){return this.table}removeListeners(){this.abortController.abort("removeListeners"),Array.from(this.listenersToRemove).forEach((e=>e())),this.listenersToRemove.clear()}$lookup(){return Xe(this.tableNodeKey,this.editor)}trackTable(){const e=new MutationObserver((e=>{this.editor.getEditorState().read((()=>{let t=!1;for(let n=0;n<e.length;n++){const o=e[n].target.nodeName;if("TABLE"===o||"TBODY"===o||"THEAD"===o||"TR"===o){t=!0;break}}if(!t)return;const{tableNode:n,tableElement:o}=this.$lookup();this.table=lt(n,o)}),{editor:this.editor})}));this.editor.getEditorState().read((()=>{const{tableNode:t,tableElement:n}=this.$lookup();this.table=lt(t,n),e.observe(n,{attributes:!0,childList:!0,subtree:!0})}),{editor:this.editor})}$clearHighlight(){const e=this.editor;this.isHighlightingCells=!1,this.anchorX=-1,this.anchorY=-1,this.focusX=-1,this.focusY=-1,this.tableSelection=null,this.anchorCellNodeKey=null,this.focusCellNodeKey=null,this.anchorCell=null,this.focusCell=null,this.hasHijackedSelectionStyles=!1,this.$enableHighlightStyle();const{tableNode:t,tableElement:n}=this.$lookup();st(e,lt(t,n),null),null!==f()&&(N(null),e.dispatchCommand(x,void 0))}$enableHighlightStyle(){const e=this.editor,{tableElement:t}=this.$lookup();n(t,e._config.theme.tableSelection),t.classList.remove("disable-selection"),this.hasHijackedSelectionStyles=!1}$disableHighlightStyle(){const{tableElement:t}=this.$lookup();e(t,this.editor._config.theme.tableSelection),this.hasHijackedSelectionStyles=!0}$updateTableTableSelection(e){if(null!==e){e.tableKey!==this.tableNodeKey&&ue(233,e.tableKey,this.tableNodeKey);const t=this.editor;this.tableSelection=e,this.isHighlightingCells=!0,this.$disableHighlightStyle(),this.updateDOMSelection(),st(t,this.table,this.tableSelection)}else this.$clearHighlight()}setShouldCheckSelection(){this.shouldCheckSelection=!0}getAndClearShouldCheckSelection(){return!!this.shouldCheckSelection&&(this.shouldCheckSelection=!1,!0)}setNextFocus(e){this.nextFocus=e}getAndClearNextFocus(){const{nextFocus:e}=this;return null!==e&&(this.nextFocus=null),e}updateDOMSelection(){if(null!==this.anchorCell&&null!==this.focusCell){const e=T(this.editor._window);e&&e.rangeCount>0&&e.removeAllRanges()}}$setFocusCellForSelection(e,t=!1){const n=this.editor,{tableNode:o}=this.$lookup(),r=e.x,l=e.y;if(this.focusCell=e,this.isHighlightingCells||this.anchorX===r&&this.anchorY===l&&!t){if(r===this.focusX&&l===this.focusY)return!1}else this.isHighlightingCells=!0,this.$disableHighlightStyle();if(this.focusX=r,this.focusY=l,this.isHighlightingCells){const t=Tt(o,e.elem);if(null!=this.tableSelection&&null!=this.anchorCellNodeKey&&null!==t)return this.focusCellNodeKey=t.getKey(),this.tableSelection=function(e,t,n){e.getKey(),t.getKey(),n.getKey();const o=f(),r=ze(o)?o.clone():Ye();return r.set(e.getKey(),t.getKey(),n.getKey()),r}(o,this.$getAnchorTableCellOrThrow(),t),N(this.tableSelection),n.dispatchCommand(x,void 0),st(n,this.table,this.tableSelection),!0}return!1}$getAnchorTableCell(){return this.anchorCellNodeKey?b(this.anchorCellNodeKey):null}$getAnchorTableCellOrThrow(){const e=this.$getAnchorTableCell();return null===e&&ue(234),e}$getFocusTableCell(){return this.focusCellNodeKey?b(this.focusCellNodeKey):null}$getFocusTableCellOrThrow(){const e=this.$getFocusTableCell();return null===e&&ue(235),e}$setAnchorCellForSelection(e){this.isHighlightingCells=!1,this.anchorCell=e,this.anchorX=e.x,this.anchorY=e.y;const{tableNode:t}=this.$lookup(),n=Tt(t,e.elem);if(null!==n){const e=n.getKey();this.tableSelection=null!=this.tableSelection?this.tableSelection.clone():Ye(),this.anchorCellNodeKey=e}}$formatCells(e){const t=f();ze(t)||ue(236);const n=v(),o=n.anchor,r=n.focus,l=t.getNodes().filter(ie);l.length>0||ue(237);const s=l[0].getFirstChild(),i=C(s)?s.getFormatFlags(e,null):null;l.forEach((t=>{o.set(t.getKey(),0,"element"),r.set(t.getKey(),t.getChildrenSize(),"element"),n.formatText(e,i)})),N(t),this.editor.dispatchCommand(x,void 0)}$clearText(){const{editor:e}=this,t=b(this.tableNodeKey);if(!$t(t))throw new Error("Expected TableNode.");const n=f();ze(n)||ue(11);const o=n.getNodes().filter(ie);if(o.length!==this.table.columns*this.table.rows)o.forEach((e=>{if(c(e)){const t=i(),n=g();t.append(n),e.append(t),e.getChildren().forEach((e=>{e!==t&&e.remove()}))}})),st(e,this.table,null),N(null),e.dispatchCommand(x,void 0);else{t.selectPrevious(),t.remove();R().selectStart()}}}const je="__lexicalTableSelection";function Ve(e,t){if(!t)return t;const n="TABLE"===t.nodeName?t:e.getDOMSlot(t).element;return"TABLE"!==n.nodeName&&ue(245,t.nodeName),n}function Ge(e){return e._window}function Qe(e,t){for(let n=t,o=null;null!==n;n=n.getParent()){if(e.is(n))return o;ie(n)&&(o=n)}return null}const Ze=[[z,"down"],[Y,"up"],[q,"backward"],[X,"forward"]],et=[J,j,V],tt=[G,Q];function nt(e,n,r,l){const s=r.getRootElement(),a=Ge(r);null!==s&&null!==a||ue(246);const h=new Je(r,e.getKey()),d=Ve(e,n);!function(e,t){null!==ot(e)&&ue(205);e[je]=t}(d,h),h.listenersToRemove.add((()=>function(e,t){ot(e)===t&&delete e[je]}(d,h)));d.addEventListener("mousedown",(t=>{if(0!==t.button)return;if(!a)return;const n=rt(t.target);null!==n&&r.update((()=>{const o=P();if(ge&&t.shiftKey&&ft(o,e)&&(m(o)||ze(o))){const r=o.anchor.getNode(),l=Qe(e,o.anchor.getNode());if(l)h.$setAnchorCellForSelection(xt(h,l)),h.$setFocusCellForSelection(n),bt(t);else{(e.isBefore(r)?e.selectStart():e.selectEnd()).anchor.set(o.anchor.key,o.anchor.offset,o.anchor.type)}}else h.$setAnchorCellForSelection(n)})),(()=>{if(h.isSelecting)return;const e=()=>{h.isSelecting=!1,a.removeEventListener("mouseup",e),a.removeEventListener("mousemove",t)},t=n=>{if(1&~n.buttons&&h.isSelecting)return h.isSelecting=!1,a.removeEventListener("mouseup",e),void a.removeEventListener("mousemove",t);const o=!d.contains(n.target);let l=null;if(o){for(const e of document.elementsFromPoint(n.clientX,n.clientY))if(l=d.contains(e)?rt(e):null,l)break}else l=rt(n.target);!l||null!==h.focusCell&&l.elem===h.focusCell.elem||(h.setNextFocus({focusCell:l,override:o}),r.dispatchCommand(x,void 0))};h.isSelecting=!0,a.addEventListener("mouseup",e,h.listenerOptions),a.addEventListener("mousemove",t,h.listenerOptions)})()}),h.listenerOptions);a.addEventListener("mousedown",(e=>{0===e.button&&r.update((()=>{const t=f(),n=e.target;ze(t)&&t.tableKey===h.tableNodeKey&&s.contains(n)&&h.$clearHighlight()}))}),h.listenerOptions);for(const[t,n]of Ze)h.listenersToRemove.add(r.registerCommand(t,(t=>wt(r,t,n,e,h)),O));h.listenersToRemove.add(r.registerCommand(F,(t=>{const n=f();if(ze(n)){const o=Qe(e,n.focus.getNode());if(null!==o)return bt(t),o.selectEnd(),!0}return!1}),O));const p=n=>()=>{const o=f();if(!ft(o,e))return!1;if(ze(o))return h.$clearText(),!0;if(m(o)){if(!ie(Qe(e,o.anchor.getNode())))return!1;const r=o.anchor.getNode(),l=o.focus.getNode(),s=e.isParentOf(r),i=e.isParentOf(l);if(s&&!i||i&&!s)return h.$clearText(),!0;const a=t(o.anchor.getNode(),(e=>c(e))),u=a&&t(a,(e=>c(e)&&ie(e.getParent())));if(!c(u)||!c(a))return!1;if(n===j&&null===u.getPreviousSibling())return!0}return!1};for(const e of et)h.listenersToRemove.add(r.registerCommand(e,p(e),k));const C=t=>{const n=f();if(!ze(n)&&!m(n))return!1;const o=e.isParentOf(n.anchor.getNode());if(o!==e.isParentOf(n.focus.getNode())){const t=o?"anchor":"focus",r=o?"focus":"anchor",{key:l,offset:s,type:i}=n[r];return e[n[t].isBefore(n[r])?"selectPrevious":"selectNext"]()[r].set(l,s,i),!1}return!!ze(n)&&(t&&(t.preventDefault(),t.stopPropagation()),h.$clearText(),!0)};for(const e of tt)h.listenersToRemove.add(r.registerCommand(e,C,k));return h.listenersToRemove.add(r.registerCommand(K,(e=>{const t=f();if(t){if(!ze(t)&&!m(t))return!1;ee(r,o(e,ClipboardEvent)?e:null,te(t));const n=C(e);return m(t)?(t.removeText(),!0):n}return!1}),k)),h.listenersToRemove.add(r.registerCommand(E,(n=>{const o=f();if(!ft(o,e))return!1;if(ze(o))return h.$formatCells(n),!0;if(m(o)){const e=t(o.anchor.getNode(),(e=>ie(e)));if(!ie(e))return!1}return!1}),k)),h.listenersToRemove.add(r.registerCommand(M,(t=>{const n=f();if(!ze(n)||!ft(n,e))return!1;const o=n.anchor.getNode(),r=n.focus.getNode();if(!ie(o)||!ie(r))return!1;const[l,s,i]=He(e,o,r),a=Math.max(s.startRow+s.cell.__rowSpan-1,i.startRow+i.cell.__rowSpan-1),u=Math.max(s.startColumn+s.cell.__colSpan-1,i.startColumn+i.cell.__colSpan-1),h=Math.min(s.startRow,i.startRow),d=Math.min(s.startColumn,i.startColumn),g=new Set;for(let e=h;e<=a;e++)for(let n=d;n<=u;n++){const o=l[e][n].cell;if(g.has(o))continue;g.add(o),o.setFormat(t);const r=o.getChildren();for(let e=0;e<r.length;e++){const n=r[e];c(n)&&!n.isInline()&&n.setFormat(t)}}return!0}),k)),h.listenersToRemove.add(r.registerCommand(A,(n=>{const o=f();if(!ft(o,e))return!1;if(ze(o))return h.$clearHighlight(),!1;if(m(o)){const l=t(o.anchor.getNode(),(e=>ie(e)));if(!ie(l))return!1;if("string"==typeof n){const t=Nt(r,o,e);if(t)return yt(t,e,[g(n)]),!0}}return!1}),k)),l&&h.listenersToRemove.add(r.registerCommand($,(n=>{const o=f();if(!m(o)||!o.isCollapsed()||!ft(o,e))return!1;const r=St(o.anchor.getNode());return!(null===r||!e.is(_t(r)))&&(bt(n),function(e,n){const o="next"===n?"getNextSibling":"getPreviousSibling",r="next"===n?"getFirstChild":"getLastChild",l=e[o]();if(c(l))return l.selectEnd();const s=t(e,Ce);null===s&&ue(247);for(let e=s[o]();Ce(e);e=e[o]()){const t=e[r]();if(c(t))return t.selectEnd()}const i=t(s,$t);null===i&&ue(248);"next"===n?i.selectNext():i.selectPrevious()}(r,n.shiftKey?"previous":"next"),!0)}),k)),h.listenersToRemove.add(r.registerCommand(W,(t=>e.isSelected()),O)),h.listenersToRemove.add(r.registerCommand(H,(e=>{const{nodes:n,selection:o}=e,r=o.getStartEndPoints(),l=ze(o),s=m(o)&&null!==t(o.anchor.getNode(),(e=>ie(e)))&&null!==t(o.focus.getNode(),(e=>ie(e)))||l;if(1!==n.length||!$t(n[0])||!s||null===r)return!1;const[c]=r,a=n[0],h=a.getChildren(),d=a.getFirstChildOrThrow().getChildrenSize(),g=a.getChildrenSize(),f=t(c.getNode(),(e=>ie(e))),p=f&&t(f,(e=>Ce(e))),C=p&&t(p,(e=>$t(e)));if(!ie(f)||!Ce(p)||!$t(C))return!1;const S=p.getIndexWithinParent(),_=Math.min(C.getChildrenSize()-1,S+g-1),w=f.getIndexWithinParent(),b=Math.min(p.getChildrenSize()-1,w+d-1),y=Math.min(w,b),N=Math.min(S,_),x=Math.max(w,b),T=Math.max(S,_),v=C.getChildren();let R=0;for(let e=N;e<=T;e++){const t=v[e];if(!Ce(t))return!1;const n=h[R];if(!Ce(n))return!1;const o=t.getChildren(),r=n.getChildren();let l=0;for(let e=y;e<=x;e++){const t=o[e];if(!ie(t))return!1;const n=r[l];if(!ie(n))return!1;const s=t.getChildren();n.getChildren().forEach((e=>{if(u(e)){i().append(e),t.append(e)}else t.append(e)})),s.forEach((e=>e.remove())),l++}R++}return!0}),k)),h.listenersToRemove.add(r.registerCommand(x,(()=>{const n=f(),o=P(),l=h.getAndClearNextFocus();if(null!==l){const{focusCell:t}=l;if(ze(n)&&n.tableKey===h.tableNodeKey)return(t.x!==h.focusX||t.y!==h.focusY)&&(h.$setFocusCellForSelection(t),!0);if(t!==h.anchorCell&&ft(n,e))return h.$setFocusCellForSelection(t),!0}if(h.getAndClearShouldCheckSelection()&&m(o)&&m(n)&&n.isCollapsed()){const o=n.anchor.getNode(),r=e.getFirstChild(),l=St(o);if(null!==l&&Ce(r)){const n=r.getFirstChild();if(ie(n)&&e.is(t(l,(t=>t.is(e)||t.is(n)))))return n.selectStart(),!0}}if(m(n)){const{anchor:t,focus:o}=n,l=t.getNode(),s=o.getNode(),i=St(l),c=St(s),a=!(!i||!e.is(_t(i))),u=!(!c||!e.is(_t(c))),d=a!==u,g=a&&u,f=n.isBackward();if(d){const t=n.clone();if(u){const[n]=He(e,c,c),o=n[0][0].cell,r=n[n.length-1].at(-1).cell;t.focus.set(f?o.getKey():r.getKey(),f?o.getChildrenSize():r.getChildrenSize(),"element")}else if(a){const[n]=He(e,i,i),o=n[0][0].cell,r=n[n.length-1].at(-1).cell;t.anchor.set(f?r.getKey():o.getKey(),f?r.getChildrenSize():0,"element")}N(t),ct(r,h)}else g&&(i.is(c)||(h.$setAnchorCellForSelection(xt(h,i)),h.$setFocusCellForSelection(xt(h,c),!0)))}else if(n&&ze(n)&&n.is(o)&&n.tableKey===e.getKey()){const t=T(a);if(t&&t.anchorNode&&t.focusNode){const o=B(t.focusNode),l=o&&!e.isParentOf(o),s=B(t.anchorNode),i=s&&e.isParentOf(s);if(l&&i&&t.rangeCount>0){const o=L(t,r);o&&(o.anchor.set(e.getKey(),n.isBackward()?e.getChildrenSize():0,"element"),t.removeAllRanges(),N(o))}}}return n&&!n.is(o)&&(ze(n)||ze(o))&&h.tableSelection&&!h.tableSelection.is(o)?(ze(n)&&n.tableKey===h.tableNodeKey?h.$updateTableTableSelection(n):!ze(n)&&ze(o)&&o.tableKey===h.tableNodeKey&&h.$updateTableTableSelection(null),!1):(h.hasHijackedSelectionStyles&&!e.isSelected()?function(e,t){t.$enableHighlightStyle(),it(t.table,(t=>{const n=t.elem;t.highlighted=!1,Ct(e,t),n.getAttribute("style")||n.removeAttribute("style")}))}(r,h):!h.hasHijackedSelectionStyles&&e.isSelected()&&ct(r,h),!1)}),k)),h.listenersToRemove.add(r.registerCommand(D,(()=>{const t=f();if(!m(t)||!t.isCollapsed()||!ft(t,e))return!1;const n=Nt(r,t,e);return!!n&&(yt(n,e),!0)}),k)),h}function ot(e){return e[je]||null}function rt(e){let t=e;for(;null!=t;){const e=t.nodeName;if("TD"===e||"TH"===e){const e=t._cell;return void 0===e?null:e}t=t.parentNode}return null}function lt(e,t){const n=[],o={columns:0,domRows:n,rows:0};let r=Ve(e,t).querySelector("tr"),l=0,s=0;for(n.length=0;null!=r;){const e=r.nodeName;if("TD"===e||"TH"===e){const e={elem:r,hasBackgroundColor:""!==r.style.backgroundColor,highlighted:!1,x:l,y:s};r._cell=e;let t=n[s];void 0===t&&(t=n[s]=[]),t[l]=e}else{const e=r.firstChild;if(null!=e){r=e;continue}}const t=r.nextSibling;if(null!=t){l++,r=t;continue}const o=r.parentNode;if(null!=o){const e=o.nextSibling;if(null==e)break;s++,l=0,r=e}}return o.columns=l+1,o.rows=s+1,o}function st(e,t,n){const o=new Set(n?n.getNodes():[]);it(t,((t,n)=>{const r=t.elem;o.has(n)?(t.highlighted=!0,pt(e,t)):(t.highlighted=!1,Ct(e,t),r.getAttribute("style")||r.removeAttribute("style"))}))}function it(e,t){const{domRows:n}=e;for(let e=0;e<n.length;e++){const o=n[e];if(o)for(let n=0;n<o.length;n++){const r=o[n];if(!r)continue;const l=B(r.elem);null!==l&&t(r,l,{x:n,y:e})}}}function ct(e,t){t.$disableHighlightStyle(),it(t.table,(t=>{t.highlighted=!0,pt(e,t)}))}const at=(e,t,n,o,r)=>{const l="forward"===r;switch(r){case"backward":case"forward":return n!==(l?e.table.columns-1:0)?mt(t.getCellNodeFromCordsOrThrow(n+(l?1:-1),o,e.table),l):o!==(l?e.table.rows-1:0)?mt(t.getCellNodeFromCordsOrThrow(l?0:e.table.columns-1,o+(l?1:-1),e.table),l):l?t.selectNext():t.selectPrevious(),!0;case"up":return 0!==o?mt(t.getCellNodeFromCordsOrThrow(n,o-1,e.table),!1):t.selectPrevious(),!0;case"down":return o!==e.table.rows-1?mt(t.getCellNodeFromCordsOrThrow(n,o+1,e.table),!0):t.selectNext(),!0;default:return!1}};function ut(e,t){let n,o;if(t.startColumn===e.minColumn)n="minColumn";else{if(t.startColumn+t.cell.__colSpan-1!==e.maxColumn)return null;n="maxColumn"}if(t.startRow===e.minRow)o="minRow";else{if(t.startRow+t.cell.__rowSpan-1!==e.maxRow)return null;o="maxRow"}return[n,o]}function ht([e,t]){return["minColumn"===e?"maxColumn":"minColumn","minRow"===t?"maxRow":"minRow"]}function dt(e,t,[n,o]){const r=t[o],l=e[r];void 0===l&&ue(250,o,String(r));const s=t[n],i=l[s];return void 0===i&&ue(250,n,String(s)),i}function gt(e,t,n,o,r){const l=Le(t,n,o),s=function(e,t){const{minColumn:n,maxColumn:o,minRow:r,maxRow:l}=t;let s=1,i=1,c=1,a=1;const u=e[r],h=e[l];for(let e=n;e<=o;e++)s=Math.max(s,u[e].cell.__rowSpan),a=Math.max(a,h[e].cell.__rowSpan);for(let t=r;t<=l;t++)i=Math.max(i,e[t][n].cell.__colSpan),c=Math.max(c,e[t][o].cell.__colSpan);return{bottomSpan:a,leftSpan:i,rightSpan:c,topSpan:s}}(t,l),{topSpan:i,leftSpan:c,bottomSpan:a,rightSpan:u}=s,h=function(e,t){const n=ut(e,t);return null===n&&ue(249,t.cell.getKey()),n}(l,n),[d,g]=ht(h);let f=l[d],m=l[g];"forward"===r?f+="maxColumn"===d?1:c:"backward"===r?f-="minColumn"===d?1:u:"down"===r?m+="maxRow"===g?1:i:"up"===r&&(m-="minRow"===g?1:a);const p=t[m];if(void 0===p)return!1;const C=p[f];if(void 0===C)return!1;const[S,_]=function(e,t,n){const o=Le(e,t,n),r=ut(o,t);if(r)return[dt(e,o,r),dt(e,o,ht(r))];const l=ut(o,n);if(l)return[dt(e,o,ht(l)),dt(e,o,l)];const s=["minColumn","minRow"];return[dt(e,o,s),dt(e,o,ht(s))]}(t,n,C),w=xt(e,S.cell),b=xt(e,_.cell);return e.$setAnchorCellForSelection(w),e.$setFocusCellForSelection(b,!0),!0}function ft(e,t){if(m(e)||ze(e)){const n=t.isParentOf(e.anchor.getNode()),o=t.isParentOf(e.focus.getNode());return n&&o}return!1}function mt(e,t){t?e.selectStart():e.selectEnd()}function pt(t,n){const o=n.elem,r=t._config.theme;ie(B(o))||ue(131),e(o,r.tableCellSelected)}function Ct(e,t){const o=t.elem;ie(B(o))||ue(131);const r=e._config.theme;n(o,r.tableCellSelected)}function St(e){const n=t(e,ie);return ie(n)?n:null}function _t(e){const n=t(e,$t);return $t(n)?n:null}function wt(e,n,o,r,l){if(("up"===o||"down"===o)&&function(e){const t=e.getRootElement();if(!t)return!1;return t.hasAttribute("aria-controls")&&"typeahead-menu"===t.getAttribute("aria-controls")}(e))return!1;const s=f();if(!ft(s,r)){if(m(s)){if("backward"===o){if(s.focus.offset>0)return!1;const e=function(e){for(let t=e,n=e;null!==n;t=n,n=n.getParent())if(c(n)){if(n!==t&&n.getFirstChild()!==t)return null;if(!n.isInline())return n}return null}(s.focus.getNode());if(!e)return!1;const t=e.getPreviousSibling();return!!$t(t)&&(bt(n),n.shiftKey?s.focus.set(t.getParentOrThrow().getKey(),t.getIndexWithinParent(),"element"):t.selectEnd(),!0)}if(n.shiftKey&&("up"===o||"down"===o)){const e=s.focus.getNode();if(!s.isCollapsed()&&("up"===o&&!s.isBackward()||"down"===o&&s.isBackward())){let l=t(e,(e=>$t(e)));if(ie(l)&&(l=t(l,$t)),l!==r)return!1;if(!l)return!1;const i="down"===o?l.getNextSibling():l.getPreviousSibling();if(!i)return!1;let a=0;"up"===o&&c(i)&&(a=i.getChildrenSize());let h=i;if("up"===o&&c(i)){const e=i.getLastChild();h=e||i,a=u(h)?h.getTextContentSize():0}const d=s.clone();return d.focus.set(h.getKey(),a,u(h)?"text":"element"),N(d),bt(n),!0}if(I(e)){const e="up"===o?s.getNodes()[s.getNodes().length-1]:s.getNodes()[0];if(e){if(null!==Qe(r,e)){const e=r.getFirstDescendant(),t=r.getLastDescendant();if(!e||!t)return!1;const[n]=Be(e),[o]=Be(t),s=r.getCordsFromCellNode(n,l.table),i=r.getCordsFromCellNode(o,l.table),c=r.getDOMCellFromCordsOrThrow(s.x,s.y,l.table),a=r.getDOMCellFromCordsOrThrow(i.x,i.y,l.table);return l.$setAnchorCellForSelection(c),l.$setFocusCellForSelection(a,!0),!0}}return!1}{let r=t(e,(e=>c(e)&&!e.isInline()));if(ie(r)&&(r=t(r,$t)),!r)return!1;const i="down"===o?r.getNextSibling():r.getPreviousSibling();if($t(i)&&l.tableNodeKey===i.getKey()){const e=i.getFirstDescendant(),t=i.getLastDescendant();if(!e||!t)return!1;const[r]=Be(e),[l]=Be(t),c=s.clone();return c.focus.set(("up"===o?r:l).getKey(),"up"===o?0:l.getChildrenSize(),"element"),bt(n),N(c),!0}}}}return"down"===o&&Ft(e)&&l.setShouldCheckSelection(),!1}if(m(s)&&s.isCollapsed()){const{anchor:i,focus:a}=s,u=t(i.getNode(),ie),h=t(a.getNode(),ie);if(!ie(u)||!u.is(h))return!1;const d=_t(u);if(d!==r&&null!=d){const t=Ve(d,e.getElementByKey(d.getKey()));if(null!=t)return l.table=lt(d,t),wt(e,n,o,d,l)}if("backward"===o||"forward"===o){const e=i.type,l=i.offset,a=i.getNode();if(!a)return!1;const h=s.getNodes();return(1!==h.length||!U(h[0]))&&(!!function(e,n,o,r){return function(e,t,n){return"element"===e&&("backward"===n?null===t.getPreviousSibling():null===t.getNextSibling())}(e,o,r)||function(e,n,o,r){const l=t(o,(e=>c(e)&&!e.isInline()));if(!l)return!1;const s="backward"===r?0===n:n===o.getTextContentSize();return"text"===e&&s&&("backward"===r?null===l.getPreviousSibling():null===l.getNextSibling())}(e,n,o,r)}(e,l,a,o)&&function(e,n,o,r,l){const[s,i]=He(r,o,o);if(!function(e,t,n){const o=e[0][0],r=e[e.length-1][e[0].length-1],{startColumn:l,startRow:s}=t;return"backward"===n?l===o.startColumn&&s===o.startRow:l===r.startColumn&&s===r.startRow}(s,i,l))return!1;const a=function(e,n,o){const r=t(e,(e=>c(e)&&!e.isInline()));if(!r)return;const l="backward"===n?r.getPreviousSibling():r.getNextSibling();return l&&$t(l)?l:"backward"===n?o.getPreviousSibling():o.getNextSibling()}(n,l,r);if(!a||$t(a))return!1;bt(e),"backward"===l?a.selectEnd():a.selectStart();return!0}(n,a,u,r,o))}const g=e.getElementByKey(u.__key),f=e.getElementByKey(i.key);if(null==f||null==g)return!1;let m;if("element"===i.type)m=f.getBoundingClientRect();else{const t=T(Ge(e));if(null===t||0===t.rangeCount)return!1;m=t.getRangeAt(0).getBoundingClientRect()}const p="up"===o?u.getFirstChild():u.getLastChild();if(null==p)return!1;const C=e.getElementByKey(p.__key);if(null==C)return!1;const S=C.getBoundingClientRect();if("up"===o?S.top>m.top-m.height:m.bottom+m.height>S.bottom){bt(n);const e=r.getCordsFromCellNode(u,l.table);if(!n.shiftKey)return at(l,r,e.x,e.y,o);{const t=r.getDOMCellFromCordsOrThrow(e.x,e.y,l.table);l.$setAnchorCellForSelection(t),l.$setFocusCellForSelection(t,!0)}return!0}}else if(ze(s)){const{anchor:i,focus:c}=s,a=t(i.getNode(),ie),u=t(c.getNode(),ie),[h]=s.getNodes();$t(h)||ue(251);const d=Ve(h,e.getElementByKey(h.getKey()));if(!ie(a)||!ie(u)||!$t(h)||null==d)return!1;l.$updateTableTableSelection(s);const g=lt(h,d),f=r.getCordsFromCellNode(a,g),m=r.getDOMCellFromCordsOrThrow(f.x,f.y,g);if(l.$setAnchorCellForSelection(m),bt(n),n.shiftKey){const[e,t,n]=He(r,a,u);return gt(l,e,t,n,o)}return u.selectEnd(),!0}return!1}function bt(e){e.preventDefault(),e.stopImmediatePropagation(),e.stopPropagation()}function yt(e,t,n){const o=i();"first"===e?t.insertBefore(o):t.insertAfter(o),o.append(...n||[]),o.selectEnd()}function Nt(e,n,o){const r=o.getParent();if(!r)return;const l=T(Ge(e));if(!l)return;const s=l.anchorNode,i=e.getElementByKey(r.getKey()),c=Ve(o,e.getElementByKey(o.getKey()));if(!s||!i||!c||!i.contains(s)||c.contains(s))return;const a=t(n.anchor.getNode(),(e=>ie(e)));if(!a)return;const u=t(a,(e=>$t(e)));if(!$t(u)||!u.is(o))return;const[h,d]=He(o,a,a),g=h[0][0],f=h[h.length-1][h[0].length-1],{startRow:m,startColumn:p}=d,C=m===g.startRow&&p===g.startColumn,S=m===f.startRow&&p===f.startColumn;return C?"first":S?"last":void 0}function xt(e,t){const{tableNode:n}=e.$lookup(),o=n.getCordsFromCellNode(t,e.table);return n.getDOMCellFromCordsOrThrow(o.x,o.y,e.table)}function Tt(e,t,n){return Qe(e,B(t,n))}function vt(e,t,n,o){const r=e.querySelector("colgroup");if(!r)return;const l=[];for(let e=0;e<n;e++){const t=document.createElement("col"),n=o&&o[e];n&&(t.style.width=`${n}px`),l.push(t)}r.replaceChildren(...l)}function Rt(t,o,r){r?(e(t,o.theme.tableRowStriping),t.setAttribute("data-lexical-row-striping","true")):(n(t,o.theme.tableRowStriping),t.removeAttribute("data-lexical-row-striping"))}const Ot=new WeakSet;function Ft(e=y()){return Ot.has(e)}function kt(e,t){t?Ot.add(e):Ot.delete(e)}class Kt extends l{static getType(){return"table"}getColWidths(){return this.getLatest().__colWidths}setColWidths(e){const t=this.getWritable();return t.__colWidths=e,t}static clone(e){return new Kt(e.__key)}afterCloneFrom(e){super.afterCloneFrom(e),this.__colWidths=e.__colWidths,this.__rowStriping=e.__rowStriping}static importDOM(){return{table:e=>({conversion:Mt,priority:1})}}static importJSON(e){const t=At();return t.__rowStriping=e.rowStriping||!1,t.__colWidths=e.colWidths,t}constructor(e){super(e),this.__rowStriping=!1}exportJSON(){return{...super.exportJSON(),colWidths:this.getColWidths(),rowStriping:this.__rowStriping?this.__rowStriping:void 0,type:"table",version:1}}extractWithChild(e,t,n){return"html"===n}getDOMSlot(e){const t="TABLE"!==e.nodeName&&e.querySelector("table")||e;return"TABLE"!==t.nodeName&&ue(229),super.getDOMSlot(t).withAfter(t.querySelector("colgroup"))}createDOM(t,n){const o=document.createElement("table"),r=document.createElement("colgroup");if(o.appendChild(r),vt(o,0,this.getColumnCount(),this.getColWidths()),Z(r),e(o,t.theme.table),this.__rowStriping&&Rt(o,t,!0),Ft(n)){const n=document.createElement("div"),r=t.theme.tableScrollableWrapper;return r?e(n,r):n.style.cssText="overflow-x: auto;",n.appendChild(o),n}return o}updateDOM(e,t,n){return e.__rowStriping!==this.__rowStriping&&Rt(t,n,this.__rowStriping),vt(t,0,this.getColumnCount(),this.getColWidths()),!1}exportDOM(e){const t=super.exportDOM(e),{element:n}=t;return{after:e=>{if(t.after&&(e=t.after(e)),e&&r(e)&&"TABLE"!==e.nodeName&&(e=e.querySelector("table")),!e||!r(e))return null;const[n]=Pe(this,null,null),o=new Map;for(const e of n)for(const t of e){const e=t.cell.getKey();o.has(e)||o.set(e,{colSpan:t.cell.getColSpan(),startColumn:t.startColumn})}const l=new Set;for(const t of e.querySelectorAll(":scope > tr > [data-temporary-table-cell-lexical-key]")){const e=t.getAttribute("data-temporary-table-cell-lexical-key");if(e){const n=o.get(e);if(t.removeAttribute("data-temporary-table-cell-lexical-key"),n){o.delete(e);for(let e=0;e<n.colSpan;e++)l.add(e+n.startColumn)}}}const s=e.querySelector(":scope > colgroup");if(s){const t=Array.from(e.querySelectorAll(":scope > colgroup > col")).filter(((e,t)=>l.has(t)));s.replaceChildren(...t)}const i=e.querySelectorAll(":scope > tr");if(i.length>0){const t=document.createElement("tbody");for(const e of i)t.appendChild(e);e.append(t)}return e},element:n&&r(n)&&"TABLE"!==n.nodeName?n.querySelector("table"):n}}canBeEmpty(){return!1}isShadowRoot(){return!0}getCordsFromCellNode(e,t){const{rows:n,domRows:o}=t;for(let t=0;t<n;t++){const n=o[t];if(null!=n)for(let o=0;o<n.length;o++){const r=n[o];if(null==r)continue;const{elem:l}=r,s=Tt(this,l);if(null!==s&&e.is(s))return{x:o,y:t}}}throw new Error("Cell not found in table.")}getDOMCellFromCords(e,t,n){const{domRows:o}=n,r=o[t];if(null==r)return null;const l=r[e<r.length?e:r.length-1];return null==l?null:l}getDOMCellFromCordsOrThrow(e,t,n){const o=this.getDOMCellFromCords(e,t,n);if(!o)throw new Error("Cell not found at cords.");return o}getCellNodeFromCords(e,t,n){const o=this.getDOMCellFromCords(e,t,n);if(null==o)return null;const r=B(o.elem);return ie(r)?r:null}getCellNodeFromCordsOrThrow(e,t,n){const o=this.getCellNodeFromCords(e,t,n);if(!o)throw new Error("Node at cords not TableCellNode.");return o}getRowStriping(){return Boolean(this.getLatest().__rowStriping)}setRowStriping(e){this.getWritable().__rowStriping=e}canSelectBefore(){return!0}canIndent(){return!1}getColumnCount(){const e=this.getFirstChild();if(!e)return 0;let t=0;return e.getChildren().forEach((e=>{ie(e)&&(t+=e.getColSpan())})),t}}function Et(e,t){const n=e.getElementByKey(t.getKey());return null===n&&ue(230),lt(t,n)}function Mt(e){const t=At();e.hasAttribute("data-lexical-row-striping")&&t.setRowStriping(!0);const n=e.querySelector(":scope > colgroup");if(n){let e=[];for(const t of n.querySelectorAll(":scope > col")){const n=t.style.width;if(!n||!ne.test(n)){e=void 0;break}e.push(parseFloat(n))}e&&t.setColWidths(e)}return{node:t}}function At(){return h(new Kt)}function $t(e){return e instanceof Kt}export{He as $computeTableMap,Pe as $computeTableMapSkipCellCheck,se as $createTableCellNode,At as $createTableNode,Se as $createTableNodeWithDimensions,pe as $createTableRowNode,Ye as $createTableSelection,Ke as $deleteTableColumn,Me as $deleteTableColumn__EXPERIMENTAL,Ee as $deleteTableRow__EXPERIMENTAL,St as $findCellNode,_t as $findTableNode,Et as $getElementForTableNode,Be as $getNodeTriplet,Xe as $getTableAndElementByKey,_e as $getTableCellNodeFromLexicalNode,De as $getTableCellNodeRect,Ne as $getTableColumnIndexFromTableCellNode,be as $getTableNodeFromLexicalNodeOrThrow,ye as $getTableRowIndexFromTableCellNode,we as $getTableRowNodeFromTableCellNodeOrThrow,Fe as $insertTableColumn,ke as $insertTableColumn__EXPERIMENTAL,ve as $insertTableRow,Oe as $insertTableRow__EXPERIMENTAL,Ft as $isScrollableTablesActive,ie as $isTableCellNode,$t as $isTableNode,Ce as $isTableRowNode,ze as $isTableSelection,Te as $removeTableRowAtIndex,We as $unmergeCell,ce as INSERT_TABLE_COMMAND,oe as TableCellHeaderStates,re as TableCellNode,Kt as TableNode,Je as TableObserver,fe as TableRowNode,nt as applyTableHandlers,rt as getDOMCellFromTarget,Ve as getTableElement,ot as getTableObserverFromTableElement,kt as setScrollableTablesActive};
9
+ import{addClassNamesToElement as e,$descendantsMatching as t,$findMatchingParent as n,removeClassNamesFromElement as o,objectKlassEquals as r,isHTMLElement as l,$insertFirst as s,mergeRegister as i,$insertNodeToNearestRoot as c,$unwrapAndFilterDescendants as a}from"@lexical/utils";import{ElementNode as u,isHTMLElement as h,$createParagraphNode as d,$isElementNode as g,$isLineBreakNode as f,$isTextNode as m,$applyNodeReplacement as p,createCommand as C,$createTextNode as S,$getSelection as _,$isRangeSelection as w,$createPoint as b,$isParagraphNode as y,$normalizeSelection__EXPERIMENTAL as N,isCurrentlyReadOnlyMode as x,TEXT_TYPE_TO_FORMAT as T,$getNodeByKey as v,$getEditor as R,$setSelection as O,SELECTION_CHANGE_COMMAND as F,getDOMSelection as k,$createRangeSelection as E,$getRoot as K,COMMAND_PRIORITY_HIGH as M,KEY_ESCAPE_COMMAND as A,COMMAND_PRIORITY_CRITICAL as $,CUT_COMMAND as L,FORMAT_TEXT_COMMAND as P,FORMAT_ELEMENT_COMMAND as H,CONTROLLED_TEXT_INSERTION_COMMAND as W,KEY_TAB_COMMAND as B,FOCUS_COMMAND as D,SELECTION_INSERT_CLIPBOARD_NODES_COMMAND as I,$getPreviousSelection as U,$getNearestNodeFromDOMNode as z,$createRangeSelectionFromDom as Y,INSERT_PARAGRAPH_COMMAND as q,$isRootOrShadowRoot as X,$isDecoratorNode as J,KEY_ARROW_DOWN_COMMAND as j,KEY_ARROW_UP_COMMAND as V,KEY_ARROW_LEFT_COMMAND as G,KEY_ARROW_RIGHT_COMMAND as Q,DELETE_WORD_COMMAND as Z,DELETE_LINE_COMMAND as ee,DELETE_CHARACTER_COMMAND as te,KEY_BACKSPACE_COMMAND as ne,KEY_DELETE_COMMAND as oe,setDOMUnmanaged as re,COMMAND_PRIORITY_EDITOR as le}from"lexical";import{copyToClipboard as se,$getClipboardDataFromSelection as ie}from"@lexical/clipboard";const ce=/^(\d+(?:\.\d+)?)px$/,ae={BOTH:3,COLUMN:2,NO_STATUS:0,ROW:1};class ue extends u{static getType(){return"tablecell"}static clone(e){return new ue(e.__headerState,e.__colSpan,e.__width,e.__key)}afterCloneFrom(e){super.afterCloneFrom(e),this.__rowSpan=e.__rowSpan,this.__backgroundColor=e.__backgroundColor}static importDOM(){return{td:e=>({conversion:he,priority:0}),th:e=>({conversion:he,priority:0})}}static importJSON(e){const t=e.colSpan||1,n=e.rowSpan||1;return de(e.headerState,t,e.width||void 0).setRowSpan(n).setBackgroundColor(e.backgroundColor||null)}constructor(e=ae.NO_STATUS,t=1,n,o){super(o),this.__colSpan=t,this.__rowSpan=1,this.__headerState=e,this.__width=n,this.__backgroundColor=null}createDOM(t){const n=document.createElement(this.getTag());return this.__width&&(n.style.width=`${this.__width}px`),this.__colSpan>1&&(n.colSpan=this.__colSpan),this.__rowSpan>1&&(n.rowSpan=this.__rowSpan),null!==this.__backgroundColor&&(n.style.backgroundColor=this.__backgroundColor),e(n,t.theme.tableCell,this.hasHeader()&&t.theme.tableCellHeader),n}exportDOM(e){const t=super.exportDOM(e);if(t.element&&h(t.element)){const e=t.element;e.setAttribute("data-temporary-table-cell-lexical-key",this.getKey()),e.style.border="1px solid black",this.__colSpan>1&&(e.colSpan=this.__colSpan),this.__rowSpan>1&&(e.rowSpan=this.__rowSpan),e.style.width=`${this.getWidth()||75}px`,e.style.verticalAlign="top",e.style.textAlign="start",null===this.__backgroundColor&&this.hasHeader()&&(e.style.backgroundColor="#f2f3f5")}return t}exportJSON(){return{...super.exportJSON(),backgroundColor:this.getBackgroundColor(),colSpan:this.__colSpan,headerState:this.__headerState,rowSpan:this.__rowSpan,type:"tablecell",width:this.getWidth()}}getColSpan(){return this.getLatest().__colSpan}setColSpan(e){const t=this.getWritable();return t.__colSpan=e,t}getRowSpan(){return this.getLatest().__rowSpan}setRowSpan(e){const t=this.getWritable();return t.__rowSpan=e,t}getTag(){return this.hasHeader()?"th":"td"}setHeaderStyles(e,t=ae.BOTH){const n=this.getWritable();return n.__headerState=e&t|n.__headerState&~t,n}getHeaderStyles(){return this.getLatest().__headerState}setWidth(e){const t=this.getWritable();return t.__width=e,t}getWidth(){return this.getLatest().__width}getBackgroundColor(){return this.getLatest().__backgroundColor}setBackgroundColor(e){const t=this.getWritable();return t.__backgroundColor=e,t}toggleHeaderStyle(e){const t=this.getWritable();return(t.__headerState&e)===e?t.__headerState-=e:t.__headerState+=e,t}hasHeaderState(e){return(this.getHeaderStyles()&e)===e}hasHeader(){return this.getLatest().__headerState!==ae.NO_STATUS}updateDOM(e){return e.__headerState!==this.__headerState||e.__width!==this.__width||e.__colSpan!==this.__colSpan||e.__rowSpan!==this.__rowSpan||e.__backgroundColor!==this.__backgroundColor}isShadowRoot(){return!0}collapseAtStart(){return!0}canBeEmpty(){return!1}canIndent(){return!1}}function he(e){const t=e,n=e.nodeName.toLowerCase();let o;ce.test(t.style.width)&&(o=parseFloat(t.style.width));const r=de("th"===n?ae.ROW:ae.NO_STATUS,t.colSpan,o);r.__rowSpan=t.rowSpan;const l=t.style.backgroundColor;""!==l&&(r.__backgroundColor=l);const s=t.style,i=(s&&s.textDecoration||"").split(" "),c="700"===s.fontWeight||"bold"===s.fontWeight,a=i.includes("line-through"),u="italic"===s.fontStyle,h=i.includes("underline");return{after:e=>(0===e.length&&e.push(d()),e),forChild:(e,t)=>{if(ge(t)&&!g(e)){const t=d();return f(e)&&"\n"===e.getTextContent()?null:(m(e)&&(c&&e.toggleFormat("bold"),a&&e.toggleFormat("strikethrough"),u&&e.toggleFormat("italic"),h&&e.toggleFormat("underline")),t.append(e),t)}return e},node:r}}function de(e=ae.NO_STATUS,t=1,n){return p(new ue(e,t,n))}function ge(e){return e instanceof ue}const fe=C("INSERT_TABLE_COMMAND");function me(e){return e&&e.__esModule&&Object.prototype.hasOwnProperty.call(e,"default")?e.default:e}var pe=me((function(e){const t=new URLSearchParams;t.append("code",e);for(let e=1;e<arguments.length;e++)t.append("v",arguments[e]);throw Error(`Minified Lexical error #${e}; visit https://lexical.dev/docs/error?${t} for the full message or use the non-minified dev environment for full errors and additional helpful warnings.`)}));class Ce extends u{static getType(){return"tablerow"}static clone(e){return new Ce(e.__height,e.__key)}static importDOM(){return{tr:e=>({conversion:Se,priority:0})}}static importJSON(e){return _e(e.height)}constructor(e,t){super(t),this.__height=e}exportJSON(){return{...super.exportJSON(),...this.getHeight()&&{height:this.getHeight()},type:"tablerow",version:1}}createDOM(t){const n=document.createElement("tr");return this.__height&&(n.style.height=`${this.__height}px`),e(n,t.theme.tableRow),n}extractWithChild(e,t,n){return"html"===n}isShadowRoot(){return!0}setHeight(e){return this.getWritable().__height=e,this.__height}getHeight(){return this.getLatest().__height}updateDOM(e){return e.__height!==this.__height}canBeEmpty(){return!1}canIndent(){return!1}}function Se(e){const n=e;let o;return ce.test(n.style.height)&&(o=parseFloat(n.style.height)),{after:e=>t(e,ge),node:_e(o)}}function _e(e){return p(new Ce(e))}function we(e){return e instanceof Ce}const be="undefined"!=typeof window&&void 0!==window.document&&void 0!==window.document.createElement,ye=be&&"documentMode"in document?document.documentMode:null,Ne=be&&/^(?!.*Seamonkey)(?=.*Firefox).*/i.test(navigator.userAgent);function xe(e,t,n=!0){const o=Dt();for(let r=0;r<e;r++){const e=_e();for(let o=0;o<t;o++){let t=ae.NO_STATUS;"object"==typeof n?(0===r&&n.rows&&(t|=ae.ROW),0===o&&n.columns&&(t|=ae.COLUMN)):n&&(0===r&&(t|=ae.ROW),0===o&&(t|=ae.COLUMN));const l=de(t),s=d();s.append(S()),l.append(s),e.append(l)}o.append(e)}return o}function Te(e){const t=n(e,(e=>ge(e)));return ge(t)?t:null}function ve(e){const t=n(e,(e=>we(e)));if(we(t))return t;throw new Error("Expected table cell to be inside of table row.")}function Re(e){const t=n(e,(e=>It(e)));if(It(t))return t;throw new Error("Expected table cell to be inside of table.")}function Oe(e){const t=ve(e);return Re(t).getChildren().findIndex((e=>e.is(t)))}function Fe(e){return ve(e).getChildren().findIndex((t=>t.is(e)))}function ke(e,t){const n=Re(e),{x:o,y:r}=n.getCordsFromCellNode(e,t);return{above:n.getCellNodeFromCords(o,r-1,t),below:n.getCellNodeFromCords(o,r+1,t),left:n.getCellNodeFromCords(o-1,r,t),right:n.getCellNodeFromCords(o+1,r,t)}}function Ee(e,t){const n=e.getChildren();if(t>=n.length||t<0)throw new Error("Expected table cell to be inside of table row.");return n[t].remove(),e}function Ke(e,t,n=!0,o,r){const l=e.getChildren();if(t>=l.length||t<0)throw new Error("Table row target index out of range");const s=l[t];if(!we(s))throw new Error("Row before insertion index does not exist.");for(let e=0;e<o;e++){const e=s.getChildren(),t=e.length,o=_e();for(let n=0;n<t;n++){const t=e[n];ge(t)||pe(12);const{above:l,below:s}=ke(t,r);let i=ae.NO_STATUS;const c=l&&l.getWidth()||s&&s.getWidth()||void 0;(l&&l.hasHeaderState(ae.COLUMN)||s&&s.hasHeaderState(ae.COLUMN))&&(i|=ae.COLUMN);const a=de(i,1,c);a.append(d()),o.append(a)}n?s.insertAfter(o):s.insertBefore(o)}return e}be&&"InputEvent"in window&&!ye&&new window.InputEvent("input");const Me=(e,t)=>e===ae.BOTH||e===t?t:ae.NO_STATUS;function Ae(e=!0){const t=_();w(t)||Ve(t)||pe(188);const n=t.focus.getNode(),[o,,r]=Ye(n),[l,s]=Ue(r,o,o),i=l[0].length,{startRow:c}=s;let a=null;if(e){const e=c+o.__rowSpan-1,t=l[e],n=_e();for(let o=0;o<i;o++){const{cell:r,startRow:l}=t[o];if(l+r.__rowSpan-1<=e){const e=t[o].cell.__headerState,r=Me(e,ae.COLUMN);n.append(de(r).append(d()))}else r.setRowSpan(r.__rowSpan+1)}const s=r.getChildAtIndex(e);we(s)||pe(145),s.insertAfter(n),a=n}else{const e=l[c],t=_e();for(let n=0;n<i;n++){const{cell:o,startRow:r}=e[n];if(r===c){const o=e[n].cell.__headerState,r=Me(o,ae.COLUMN);t.append(de(r).append(d()))}else o.setRowSpan(o.__rowSpan+1)}const n=r.getChildAtIndex(c);we(n)||pe(145),n.insertBefore(t),a=t}return a}function $e(e,t,n=!0,o,r){const l=e.getChildren(),s=[];for(let e=0;e<l.length;e++){const n=l[e];if(we(n))for(let e=0;e<o;e++){const e=n.getChildren();if(t>=e.length||t<0)throw new Error("Table column target index out of range");const o=e[t];ge(o)||pe(12);const{left:l,right:i}=ke(o,r);let c=ae.NO_STATUS;(l&&l.hasHeaderState(ae.ROW)||i&&i.hasHeaderState(ae.ROW))&&(c|=ae.ROW);const a=de(c);a.append(d()),s.push({newTableCell:a,targetCell:o})}}return s.forEach((({newTableCell:e,targetCell:t})=>{n?t.insertAfter(e):t.insertBefore(e)})),e}function Le(e=!0){const t=_();w(t)||Ve(t)||pe(188);const n=t.anchor.getNode(),o=t.focus.getNode(),[r]=Ye(n),[l,,s]=Ye(o),[i,c,a]=Ue(s,l,r),u=i.length,h=e?Math.max(c.startColumn,a.startColumn):Math.min(c.startColumn,a.startColumn),g=e?h+l.__colSpan-1:h-1,f=s.getFirstChild();we(f)||pe(120);let m=null;function p(e=ae.NO_STATUS){const t=de(e).append(d());return null===m&&(m=t),t}let C=f;e:for(let e=0;e<u;e++){if(0!==e){const e=C.getNextSibling();we(e)||pe(121),C=e}const t=i[e],n=t[g<0?0:g].cell.__headerState,o=Me(n,ae.ROW);if(g<0){De(C,p(o));continue}const{cell:r,startColumn:l,startRow:s}=t[g];if(l+r.__colSpan-1<=g){let n=r,l=s,i=g;for(;l!==e&&n.__rowSpan>1;){if(i-=r.__colSpan,!(i>=0)){C.append(p(o));continue e}{const{cell:e,startRow:o}=t[i];n=e,l=o}}n.insertAfter(p(o))}else r.setColSpan(r.__colSpan+1)}null!==m&&Be(m);const S=s.getColWidths();if(S){const e=[...S],t=g<0?0:g,n=e[t];e.splice(t,0,n),s.setColWidths(e)}return m}function Pe(e,t){const n=e.getChildren();for(let e=0;e<n.length;e++){const o=n[e];if(we(o)){const e=o.getChildren();if(t>=e.length||t<0)throw new Error("Table column target index out of range");e[t].remove()}}return e}function He(){const e=_();w(e)||Ve(e)||pe(188);const[t,n]=e.isBackward()?[e.focus.getNode(),e.anchor.getNode()]:[e.anchor.getNode(),e.focus.getNode()],[o,,r]=Ye(t),[l]=Ye(n),[s,i,c]=Ue(r,o,l),{startRow:a}=i,{startRow:u}=c,h=u+l.__rowSpan-1;if(s.length===h-a+1)return void r.remove();const d=s[0].length,g=s[h+1],f=r.getChildAtIndex(h+1);for(let e=h;e>=a;e--){for(let t=d-1;t>=0;t--){const{cell:n,startRow:o,startColumn:r}=s[e][t];if(r===t&&(e===a&&o<a&&n.setRowSpan(n.__rowSpan-(o-a)),o>=a&&o+n.__rowSpan-1>h))if(n.setRowSpan(n.__rowSpan-(h-o+1)),null===f&&pe(122),0===t)De(f,n);else{const{cell:e}=g[t-1];e.insertAfter(n)}}const t=r.getChildAtIndex(e);we(t)||pe(206,String(e)),t.remove()}if(void 0!==g){const{cell:e}=g[0];Be(e)}else{const e=s[a-1],{cell:t}=e[0];Be(t)}}function We(){const e=_();w(e)||Ve(e)||pe(188);const t=e.anchor.getNode(),n=e.focus.getNode(),[o,,r]=Ye(t),[l]=Ye(n),[s,i,c]=Ue(r,o,l),{startColumn:a}=i,{startRow:u,startColumn:h}=c,d=Math.min(a,h),g=Math.max(a+o.__colSpan-1,h+l.__colSpan-1),f=g-d+1;if(s[0].length===g-d+1)return r.selectPrevious(),void r.remove();const m=s.length;for(let e=0;e<m;e++)for(let t=d;t<=g;t++){const{cell:n,startColumn:o}=s[e][t];if(o<d){if(t===d){const e=d-o;n.setColSpan(n.__colSpan-Math.min(f,n.__colSpan-e))}}else if(o+n.__colSpan-1>g){if(t===g){const e=g-o+1;n.setColSpan(n.__colSpan-e)}}else n.remove()}const p=s[u],C=a>h?p[a+o.__colSpan]:p[h+l.__colSpan];if(void 0!==C){const{cell:e}=C;Be(e)}else{const e=h<a?p[h-1]:p[a-1],{cell:t}=e;Be(t)}const S=r.getColWidths();if(S){const e=[...S];e.splice(d,f),r.setColWidths(e)}}function Be(e){const t=e.getFirstDescendant();null==t?e.selectStart():t.getParentOrThrow().selectStart()}function De(e,t){const n=e.getFirstChild();null!==n?n.insertBefore(t):e.append(t)}function Ie(){const e=_();w(e)||Ve(e)||pe(188);const t=e.anchor.getNode(),[n,o,r]=Ye(t),l=n.__colSpan,s=n.__rowSpan;if(1===l&&1===s)return;const[i,c]=Ue(r,n,n),{startColumn:a,startRow:u}=c,h=n.__headerState&ae.COLUMN,g=Array.from({length:l},((e,t)=>{let n=h;for(let e=0;0!==n&&e<i.length;e++)n&=i[e][t+a].cell.__headerState;return n})),f=n.__headerState&ae.ROW,m=Array.from({length:s},((e,t)=>{let n=f;for(let e=0;0!==n&&e<i[0].length;e++)n&=i[t+u][e].cell.__headerState;return n}));if(l>1){for(let e=1;e<l;e++)n.insertAfter(de(g[e]|m[0]).append(d()));n.setColSpan(1)}if(s>1){let e;for(let t=1;t<s;t++){const n=u+t,r=i[n];e=(e||o).getNextSibling(),we(e)||pe(125);let s=null;for(let e=0;e<a;e++){const t=r[e],o=t.cell;t.startRow===n&&(s=o),o.__colSpan>1&&(e+=o.__colSpan-1)}if(null===s)for(let n=l-1;n>=0;n--)De(e,de(g[n]|m[t]).append(d()));else for(let e=l-1;e>=0;e--)s.insertAfter(de(g[e]|m[t]).append(d()))}n.setRowSpan(1)}}function Ue(e,t,n){const[o,r,l]=ze(e,t,n);return null===r&&pe(207),null===l&&pe(208),[o,r,l]}function ze(e,t,n){const o=[];let r=null,l=null;function s(e){let t=o[e];return void 0===t&&(o[e]=t=[]),t}const i=e.getChildren();for(let e=0;e<i.length;e++){const o=i[e];we(o)||pe(209);for(let c=o.getFirstChild(),a=0;null!=c;c=c.getNextSibling()){ge(c)||pe(147);const o=s(e);for(;void 0!==o[a];)a++;const u={cell:c,startColumn:a,startRow:e},{__rowSpan:h,__colSpan:d}=c;for(let t=0;t<h&&!(e+t>=i.length);t++){const n=s(e+t);for(let e=0;e<d;e++)n[a+e]=u}null!==t&&null===r&&t.is(c)&&(r=u),null!==n&&null===l&&n.is(c)&&(l=u)}}return[o,r,l]}function Ye(e){let t;if(e instanceof ue)t=e;else if("__type"in e){const o=n(e,ge);ge(o)||pe(148),t=o}else{const o=n(e.getNode(),ge);ge(o)||pe(148),t=o}const o=t.getParent();we(o)||pe(149);const r=o.getParent();return It(r)||pe(210),[t,o,r]}function qe(e,t,n){let o=Math.min(t.startColumn,n.startColumn),r=Math.min(t.startRow,n.startRow),l=Math.max(t.startColumn+t.cell.__colSpan-1,n.startColumn+n.cell.__colSpan-1),s=Math.max(t.startRow+t.cell.__rowSpan-1,n.startRow+n.cell.__rowSpan-1),i=o,c=r,a=o,u=r;function h(e){const{cell:t,startColumn:n,startRow:i}=e;o=Math.min(o,n),r=Math.min(r,i),l=Math.max(l,n+t.__colSpan-1),s=Math.max(s,i+t.__rowSpan-1)}for(;o<i||r<c||l>a||s>u;){if(o<i){const t=u-c,n=i-1;for(let o=0;o<=t;o++)h(e[c+o][n]);i=n}if(r<c){const t=a-i,n=c-1;for(let o=0;o<=t;o++)h(e[n][i+o]);c=n}if(l>a){const t=u-c,n=a+1;for(let o=0;o<=t;o++)h(e[c+o][n]);a=n}if(s>u){const t=a-i,n=u+1;for(let o=0;o<=t;o++)h(e[n][i+o]);u=n}}return{maxColumn:l,maxRow:s,minColumn:o,minRow:r}}function Xe(e){const[t,,n]=Ye(e),o=n.getChildren(),r=o.length,l=o[0].getChildren().length,s=new Array(r);for(let e=0;e<r;e++)s[e]=new Array(l);for(let e=0;e<r;e++){const n=o[e].getChildren();let r=0;for(let o=0;o<n.length;o++){for(;s[e][r];)r++;const l=n[o],i=l.__rowSpan||1,c=l.__colSpan||1;for(let t=0;t<i;t++)for(let n=0;n<c;n++)s[e+t][r+n]=l;if(t===l)return{colSpan:c,columnIndex:r,rowIndex:e,rowSpan:i};r+=c}}return null}function Je(e){const[[t,o,r,l],[s,i,c,a]]=["anchor","focus"].map((t=>{const o=e[t].getNode(),r=n(o,ge);ge(r)||pe(238,t,o.getKey(),o.getType());const l=r.getParent();we(l)||pe(239,t);const s=l.getParent();return It(s)||pe(240,t),[o,r,l,s]}));return l.is(a)||pe(241),{anchorCell:o,anchorNode:t,anchorRow:r,anchorTable:l,focusCell:i,focusNode:s,focusRow:c,focusTable:a}}class je{constructor(e,t,n){this.anchor=t,this.focus=n,t._selection=this,n._selection=this,this._cachedNodes=null,this.dirty=!1,this.tableKey=e}getStartEndPoints(){return[this.anchor,this.focus]}isValid(){return"root"!==this.tableKey&&"root"!==this.anchor.key&&"element"===this.anchor.type&&"root"!==this.focus.key&&"element"===this.focus.type}isBackward(){return this.focus.isBefore(this.anchor)}getCachedNodes(){return this._cachedNodes}setCachedNodes(e){this._cachedNodes=e}is(e){return Ve(e)&&this.tableKey===e.tableKey&&this.anchor.is(e.anchor)&&this.focus.is(e.focus)}set(e,t,n){this.dirty=this.dirty||e!==this.tableKey||t!==this.anchor.key||n!==this.focus.key,this.tableKey=e,this.anchor.key=t,this.focus.key=n,this._cachedNodes=null}clone(){return new je(this.tableKey,b(this.anchor.key,this.anchor.offset,this.anchor.type),b(this.focus.key,this.focus.offset,this.focus.type))}isCollapsed(){return!1}extract(){return this.getNodes()}insertRawText(e){}insertText(){}hasFormat(e){let t=0;this.getNodes().filter(ge).forEach((e=>{const n=e.getFirstChild();y(n)&&(t|=n.getTextFormat())}));const n=T[e];return!!(t&n)}insertNodes(e){const t=this.focus.getNode();g(t)||pe(151);N(t.select(0,t.getChildrenSize())).insertNodes(e)}getShape(){const{anchorCell:e,focusCell:t}=Je(this),n=Xe(e);null===n&&pe(153);const o=Xe(t);null===o&&pe(155);const r=Math.min(n.columnIndex,o.columnIndex),l=Math.max(n.columnIndex+n.colSpan-1,o.columnIndex+o.colSpan-1),s=Math.min(n.rowIndex,o.rowIndex),i=Math.max(n.rowIndex+n.rowSpan-1,o.rowIndex+o.rowSpan-1);return{fromX:Math.min(r,l),fromY:Math.min(s,i),toX:Math.max(r,l),toY:Math.max(s,i)}}getNodes(){if(!this.isValid())return[];const e=this._cachedNodes;if(null!==e)return e;const{anchorTable:t,anchorCell:n,focusCell:o}=Je(this),r=o.getParents()[1];if(r!==t){if(t.isParentOf(o)){const e=r.getParent();null==e&&pe(159),this.set(this.tableKey,o.getKey(),e.getKey())}else{const e=t.getParent();null==e&&pe(158),this.set(this.tableKey,e.getKey(),o.getKey())}return this.getNodes()}const[l,s,i]=Ue(t,n,o),{minColumn:c,maxColumn:a,minRow:u,maxRow:h}=qe(l,s,i),d=new Map([[t.getKey(),t]]);let g=null;for(let e=u;e<=h;e++)for(let t=c;t<=a;t++){const{cell:n}=l[e][t],o=n.getParent();we(o)||pe(160),o!==g&&(d.set(o.getKey(),o),g=o),d.has(n.getKey())||Qe(n,(e=>{d.set(e.getKey(),e)}))}const f=Array.from(d.values());return x()||(this._cachedNodes=f),f}getTextContent(){const e=this.getNodes().filter((e=>ge(e)));let t="";for(let n=0;n<e.length;n++){const o=e[n],r=o.__parent,l=(e[n+1]||{}).__parent;t+=o.getTextContent()+(l!==r?"\n":"\t")}return t}}function Ve(e){return e instanceof je}function Ge(){const e=b("root",0,"element"),t=b("root",0,"element");return new je("root",e,t)}function Qe(e,t){const n=[[e]];for(let e=n.at(-1);void 0!==e&&n.length>0;e=n.at(-1)){const o=e.pop();void 0===o?n.pop():!1!==t(o)&&g(o)&&n.push(o.getChildren())}}function Ze(e,t=R()){const n=v(e);It(n)||pe(231,e);const o=ot(n,t.getElementByKey(e));return null===o&&pe(232,e),{tableElement:o,tableNode:n}}class et{constructor(e,t){this.isHighlightingCells=!1,this.anchorX=-1,this.anchorY=-1,this.focusX=-1,this.focusY=-1,this.listenersToRemove=new Set,this.tableNodeKey=t,this.editor=e,this.table={columns:0,domRows:[],rows:0},this.tableSelection=null,this.anchorCellNodeKey=null,this.focusCellNodeKey=null,this.anchorCell=null,this.focusCell=null,this.hasHijackedSelectionStyles=!1,this.isSelecting=!1,this.shouldCheckSelection=!1,this.abortController=new AbortController,this.listenerOptions={signal:this.abortController.signal},this.nextFocus=null,this.trackTable()}getTable(){return this.table}removeListeners(){this.abortController.abort("removeListeners"),Array.from(this.listenersToRemove).forEach((e=>e())),this.listenersToRemove.clear()}$lookup(){return Ze(this.tableNodeKey,this.editor)}trackTable(){const e=new MutationObserver((e=>{this.editor.getEditorState().read((()=>{let t=!1;for(let n=0;n<e.length;n++){const o=e[n].target.nodeName;if("TABLE"===o||"TBODY"===o||"THEAD"===o||"TR"===o){t=!0;break}}if(!t)return;const{tableNode:n,tableElement:o}=this.$lookup();this.table=dt(n,o)}),{editor:this.editor})}));this.editor.getEditorState().read((()=>{const{tableNode:t,tableElement:n}=this.$lookup();this.table=dt(t,n),e.observe(n,{attributes:!0,childList:!0,subtree:!0})}),{editor:this.editor})}$clearHighlight(){const e=this.editor;this.isHighlightingCells=!1,this.anchorX=-1,this.anchorY=-1,this.focusX=-1,this.focusY=-1,this.tableSelection=null,this.anchorCellNodeKey=null,this.focusCellNodeKey=null,this.anchorCell=null,this.focusCell=null,this.hasHijackedSelectionStyles=!1,this.$enableHighlightStyle();const{tableNode:t,tableElement:n}=this.$lookup();gt(e,dt(t,n),null),null!==_()&&(O(null),e.dispatchCommand(F,void 0))}$enableHighlightStyle(){const e=this.editor,{tableElement:t}=this.$lookup();o(t,e._config.theme.tableSelection),t.classList.remove("disable-selection"),this.hasHijackedSelectionStyles=!1}$disableHighlightStyle(){const{tableElement:t}=this.$lookup();e(t,this.editor._config.theme.tableSelection),this.hasHijackedSelectionStyles=!0}$updateTableTableSelection(e){if(null!==e){e.tableKey!==this.tableNodeKey&&pe(233,e.tableKey,this.tableNodeKey);const t=this.editor;this.tableSelection=e,this.isHighlightingCells=!0,this.$disableHighlightStyle(),this.updateDOMSelection(),gt(t,this.table,this.tableSelection)}else this.$clearHighlight()}setShouldCheckSelection(){this.shouldCheckSelection=!0}getAndClearShouldCheckSelection(){return!!this.shouldCheckSelection&&(this.shouldCheckSelection=!1,!0)}setNextFocus(e){this.nextFocus=e}getAndClearNextFocus(){const{nextFocus:e}=this;return null!==e&&(this.nextFocus=null),e}updateDOMSelection(){if(null!==this.anchorCell&&null!==this.focusCell){const e=k(this.editor._window);e&&e.rangeCount>0&&e.removeAllRanges()}}$setFocusCellForSelection(e,t=!1){const n=this.editor,{tableNode:o}=this.$lookup(),r=e.x,l=e.y;if(this.focusCell=e,this.isHighlightingCells||this.anchorX===r&&this.anchorY===l&&!t){if(r===this.focusX&&l===this.focusY)return!1}else this.isHighlightingCells=!0,this.$disableHighlightStyle();if(this.focusX=r,this.focusY=l,this.isHighlightingCells){const t=Kt(o,e.elem);if(null!=this.tableSelection&&null!=this.anchorCellNodeKey&&null!==t)return this.focusCellNodeKey=t.getKey(),this.tableSelection=function(e,t,n){e.getKey(),t.getKey(),n.getKey();const o=_(),r=Ve(o)?o.clone():Ge();return r.set(e.getKey(),t.getKey(),n.getKey()),r}(o,this.$getAnchorTableCellOrThrow(),t),O(this.tableSelection),n.dispatchCommand(F,void 0),gt(n,this.table,this.tableSelection),!0}return!1}$getAnchorTableCell(){return this.anchorCellNodeKey?v(this.anchorCellNodeKey):null}$getAnchorTableCellOrThrow(){const e=this.$getAnchorTableCell();return null===e&&pe(234),e}$getFocusTableCell(){return this.focusCellNodeKey?v(this.focusCellNodeKey):null}$getFocusTableCellOrThrow(){const e=this.$getFocusTableCell();return null===e&&pe(235),e}$setAnchorCellForSelection(e){this.isHighlightingCells=!1,this.anchorCell=e,this.anchorX=e.x,this.anchorY=e.y;const{tableNode:t}=this.$lookup(),n=Kt(t,e.elem);if(null!==n){const e=n.getKey();this.tableSelection=null!=this.tableSelection?this.tableSelection.clone():Ge(),this.anchorCellNodeKey=e}}$formatCells(e){const t=_();Ve(t)||pe(236);const n=E(),o=n.anchor,r=n.focus,l=t.getNodes().filter(ge);l.length>0||pe(237);const s=l[0].getFirstChild(),i=y(s)?s.getFormatFlags(e,null):null;l.forEach((t=>{o.set(t.getKey(),0,"element"),r.set(t.getKey(),t.getChildrenSize(),"element"),n.formatText(e,i)})),O(t),this.editor.dispatchCommand(F,void 0)}$clearText(){const{editor:e}=this,t=v(this.tableNodeKey);if(!It(t))throw new Error("Expected TableNode.");const n=_();Ve(n)||pe(11);const o=n.getNodes().filter(ge);if(o.length!==this.table.columns*this.table.rows)o.forEach((e=>{if(g(e)){const t=d(),n=S();t.append(n),e.append(t),e.getChildren().forEach((e=>{e!==t&&e.remove()}))}})),gt(e,this.table,null),O(null),e.dispatchCommand(F,void 0);else{t.selectPrevious(),t.remove();K().selectStart()}}}const tt="__lexicalTableSelection",nt=e=>!(1&~e.buttons);function ot(e,t){if(!t)return t;const n="TABLE"===t.nodeName?t:e.getDOMSlot(t).element;return"TABLE"!==n.nodeName&&pe(245,t.nodeName),n}function rt(e){return e._window}function lt(e,t){for(let n=t,o=null;null!==n;n=n.getParent()){if(e.is(n))return o;ge(n)&&(o=n)}return null}const st=[[j,"down"],[V,"up"],[G,"backward"],[Q,"forward"]],it=[Z,ee,te],ct=[ne,oe];function at(e,t,o,l){const s=o.getRootElement(),i=rt(o);null!==s&&null!==i||pe(246);const c=new et(o,e.getKey()),a=ot(e,t);!function(e,t){null!==ut(e)&&pe(205);e[tt]=t}(a,c),c.listenersToRemove.add((()=>function(e,t){ut(e)===t&&delete e[tt]}(a,c)));a.addEventListener("mousedown",(t=>{if(0!==t.button)return;if(!i)return;const n=ht(t.target);null!==n&&o.update((()=>{const o=U();if(Ne&&t.shiftKey&&bt(o,e)&&(w(o)||Ve(o))){const r=o.anchor.getNode(),l=lt(e,o.anchor.getNode());if(l)c.$setAnchorCellForSelection(Et(c,l)),c.$setFocusCellForSelection(n),Ot(t);else{(e.isBefore(r)?e.selectStart():e.selectEnd()).anchor.set(o.anchor.key,o.anchor.offset,o.anchor.type)}}else c.$setAnchorCellForSelection(n)})),(()=>{if(c.isSelecting)return;const e=()=>{c.isSelecting=!1,i.removeEventListener("mouseup",e),i.removeEventListener("mousemove",t)},t=n=>{if(!nt(n)&&c.isSelecting)return c.isSelecting=!1,i.removeEventListener("mouseup",e),void i.removeEventListener("mousemove",t);const r=!a.contains(n.target);let l=null;if(r){for(const e of document.elementsFromPoint(n.clientX,n.clientY))if(l=a.contains(e)?ht(e):null,l)break}else l=ht(n.target);!l||null!==c.focusCell&&l.elem===c.focusCell.elem||(c.setNextFocus({focusCell:l,override:r}),o.dispatchCommand(F,void 0))};c.isSelecting=!0,i.addEventListener("mouseup",e,c.listenerOptions),i.addEventListener("mousemove",t,c.listenerOptions)})()}),c.listenerOptions);i.addEventListener("mousedown",(e=>{0===e.button&&o.update((()=>{const t=_(),n=e.target;Ve(t)&&t.tableKey===c.tableNodeKey&&s.contains(n)&&c.$clearHighlight()}))}),c.listenerOptions);for(const[t,n]of st)c.listenersToRemove.add(o.registerCommand(t,(t=>Rt(o,t,n,e,c)),M));c.listenersToRemove.add(o.registerCommand(A,(t=>{const n=_();if(Ve(n)){const o=lt(e,n.focus.getNode());if(null!==o)return Ot(t),o.selectEnd(),!0}return!1}),M));const u=t=>()=>{const o=_();if(!bt(o,e))return!1;if(Ve(o))return c.$clearText(),!0;if(w(o)){if(!ge(lt(e,o.anchor.getNode())))return!1;const r=o.anchor.getNode(),l=o.focus.getNode(),s=e.isParentOf(r),i=e.isParentOf(l);if(s&&!i||i&&!s)return c.$clearText(),!0;const a=n(o.anchor.getNode(),(e=>g(e))),u=a&&n(a,(e=>g(e)&&ge(e.getParent())));if(!g(u)||!g(a))return!1;if(t===ee&&null===u.getPreviousSibling())return!0}return!1};for(const e of it)c.listenersToRemove.add(o.registerCommand(e,u(e),$));const h=t=>{const n=_();if(!Ve(n)&&!w(n))return!1;const o=e.isParentOf(n.anchor.getNode());if(o!==e.isParentOf(n.focus.getNode())){const t=o?"anchor":"focus",r=o?"focus":"anchor",{key:l,offset:s,type:i}=n[r];return e[n[t].isBefore(n[r])?"selectPrevious":"selectNext"]()[r].set(l,s,i),!1}return!!Ve(n)&&(t&&(t.preventDefault(),t.stopPropagation()),c.$clearText(),!0)};for(const e of ct)c.listenersToRemove.add(o.registerCommand(e,h,$));return c.listenersToRemove.add(o.registerCommand(L,(e=>{const t=_();if(t){if(!Ve(t)&&!w(t))return!1;se(o,r(e,ClipboardEvent)?e:null,ie(t));const n=h(e);return w(t)?(t.removeText(),!0):n}return!1}),$)),c.listenersToRemove.add(o.registerCommand(P,(t=>{const o=_();if(!bt(o,e))return!1;if(Ve(o))return c.$formatCells(t),!0;if(w(o)){const e=n(o.anchor.getNode(),(e=>ge(e)));if(!ge(e))return!1}return!1}),$)),c.listenersToRemove.add(o.registerCommand(H,(t=>{const n=_();if(!Ve(n)||!bt(n,e))return!1;const o=n.anchor.getNode(),r=n.focus.getNode();if(!ge(o)||!ge(r))return!1;const[l,s,i]=Ue(e,o,r),c=Math.max(s.startRow+s.cell.__rowSpan-1,i.startRow+i.cell.__rowSpan-1),a=Math.max(s.startColumn+s.cell.__colSpan-1,i.startColumn+i.cell.__colSpan-1),u=Math.min(s.startRow,i.startRow),h=Math.min(s.startColumn,i.startColumn),d=new Set;for(let e=u;e<=c;e++)for(let n=h;n<=a;n++){const o=l[e][n].cell;if(d.has(o))continue;d.add(o),o.setFormat(t);const r=o.getChildren();for(let e=0;e<r.length;e++){const n=r[e];g(n)&&!n.isInline()&&n.setFormat(t)}}return!0}),$)),c.listenersToRemove.add(o.registerCommand(W,(t=>{const r=_();if(!bt(r,e))return!1;if(Ve(r))return c.$clearHighlight(),!1;if(w(r)){const l=n(r.anchor.getNode(),(e=>ge(e)));if(!ge(l))return!1;if("string"==typeof t){const n=kt(o,r,e);if(n)return Ft(n,e,[S(t)]),!0}}return!1}),$)),l&&c.listenersToRemove.add(o.registerCommand(B,(t=>{const o=_();if(!w(o)||!o.isCollapsed()||!bt(o,e))return!1;const r=Tt(o.anchor.getNode());return!(null===r||!e.is(vt(r)))&&(Ot(t),function(e,t){const o="next"===t?"getNextSibling":"getPreviousSibling",r="next"===t?"getFirstChild":"getLastChild",l=e[o]();if(g(l))return l.selectEnd();const s=n(e,we);null===s&&pe(247);for(let e=s[o]();we(e);e=e[o]()){const t=e[r]();if(g(t))return t.selectEnd()}const i=n(s,It);null===i&&pe(248);"next"===t?i.selectNext():i.selectPrevious()}(r,t.shiftKey?"previous":"next"),!0)}),$)),c.listenersToRemove.add(o.registerCommand(D,(t=>e.isSelected()),M)),c.listenersToRemove.add(o.registerCommand(I,(e=>{const{nodes:t,selection:o}=e,r=o.getStartEndPoints(),l=Ve(o),s=w(o)&&null!==n(o.anchor.getNode(),(e=>ge(e)))&&null!==n(o.focus.getNode(),(e=>ge(e)))||l;if(1!==t.length||!It(t[0])||!s||null===r)return!1;const[i]=r,c=t[0],a=c.getChildren(),u=c.getFirstChildOrThrow().getChildrenSize(),h=c.getChildrenSize(),g=n(i.getNode(),(e=>ge(e))),f=g&&n(g,(e=>we(e))),p=f&&n(f,(e=>It(e)));if(!ge(g)||!we(f)||!It(p))return!1;const C=f.getIndexWithinParent(),S=Math.min(p.getChildrenSize()-1,C+h-1),_=g.getIndexWithinParent(),b=Math.min(f.getChildrenSize()-1,_+u-1),y=Math.min(_,b),N=Math.min(C,S),x=Math.max(_,b),T=Math.max(C,S),v=p.getChildren();let R=0;for(let e=N;e<=T;e++){const t=v[e];if(!we(t))return!1;const n=a[R];if(!we(n))return!1;const o=t.getChildren(),r=n.getChildren();let l=0;for(let e=y;e<=x;e++){const t=o[e];if(!ge(t))return!1;const n=r[l];if(!ge(n))return!1;const s=t.getChildren();n.getChildren().forEach((e=>{if(m(e)){d().append(e),t.append(e)}else t.append(e)})),s.forEach((e=>e.remove())),l++}R++}return!0}),$)),c.listenersToRemove.add(o.registerCommand(F,(()=>{const t=_(),r=U(),l=c.getAndClearNextFocus();if(null!==l){const{focusCell:n}=l;if(Ve(t)&&t.tableKey===c.tableNodeKey)return(n.x!==c.focusX||n.y!==c.focusY)&&(c.$setFocusCellForSelection(n),!0);if(n!==c.anchorCell&&bt(t,e))return c.$setFocusCellForSelection(n),!0}if(c.getAndClearShouldCheckSelection()&&w(r)&&w(t)&&t.isCollapsed()){const o=t.anchor.getNode(),r=e.getFirstChild(),l=Tt(o);if(null!==l&&we(r)){const t=r.getFirstChild();if(ge(t)&&e.is(n(l,(n=>n.is(e)||n.is(t)))))return t.selectStart(),!0}}if(w(t)){const{anchor:n,focus:r}=t,l=n.getNode(),s=r.getNode(),i=Tt(l),a=Tt(s),u=!(!i||!e.is(vt(i))),h=!(!a||!e.is(vt(a))),d=u!==h,g=u&&h,f=t.isBackward();if(d){const n=t.clone();if(h){const[t]=Ue(e,a,a),o=t[0][0].cell,r=t[t.length-1].at(-1).cell;n.focus.set(f?o.getKey():r.getKey(),f?o.getChildrenSize():r.getChildrenSize(),"element")}else if(u){const[t]=Ue(e,i,i),o=t[0][0].cell,r=t[t.length-1].at(-1).cell;n.anchor.set(f?r.getKey():o.getKey(),f?r.getChildrenSize():0,"element")}O(n),mt(o,c)}else g&&(i.is(a)||(c.$setAnchorCellForSelection(Et(c,i)),c.$setFocusCellForSelection(Et(c,a),!0)))}else if(t&&Ve(t)&&t.is(r)&&t.tableKey===e.getKey()){const n=k(i);if(n&&n.anchorNode&&n.focusNode){const r=z(n.focusNode),l=r&&!e.isParentOf(r),s=z(n.anchorNode),i=s&&e.isParentOf(s);if(l&&i&&n.rangeCount>0){const r=Y(n,o);r&&(r.anchor.set(e.getKey(),t.isBackward()?e.getChildrenSize():0,"element"),n.removeAllRanges(),O(r))}}}return t&&!t.is(r)&&(Ve(t)||Ve(r))&&c.tableSelection&&!c.tableSelection.is(r)?(Ve(t)&&t.tableKey===c.tableNodeKey?c.$updateTableTableSelection(t):!Ve(t)&&Ve(r)&&r.tableKey===c.tableNodeKey&&c.$updateTableTableSelection(null),!1):(c.hasHijackedSelectionStyles&&!e.isSelected()?function(e,t){t.$enableHighlightStyle(),ft(t.table,(t=>{const n=t.elem;t.highlighted=!1,xt(e,t),n.getAttribute("style")||n.removeAttribute("style")}))}(o,c):!c.hasHijackedSelectionStyles&&e.isSelected()&&mt(o,c),!1)}),$)),c.listenersToRemove.add(o.registerCommand(q,(()=>{const t=_();if(!w(t)||!t.isCollapsed()||!bt(t,e))return!1;const n=kt(o,t,e);return!!n&&(Ft(n,e),!0)}),$)),c}function ut(e){return e[tt]||null}function ht(e){let t=e;for(;null!=t;){const e=t.nodeName;if("TD"===e||"TH"===e){const e=t._cell;return void 0===e?null:e}t=t.parentNode}return null}function dt(e,t){const n=[],o={columns:0,domRows:n,rows:0};let r=ot(e,t).querySelector("tr"),l=0,s=0;for(n.length=0;null!=r;){const e=r.nodeName;if("TD"===e||"TH"===e){const e={elem:r,hasBackgroundColor:""!==r.style.backgroundColor,highlighted:!1,x:l,y:s};r._cell=e;let t=n[s];void 0===t&&(t=n[s]=[]),t[l]=e}else{const e=r.firstChild;if(null!=e){r=e;continue}}const t=r.nextSibling;if(null!=t){l++,r=t;continue}const o=r.parentNode;if(null!=o){const e=o.nextSibling;if(null==e)break;s++,l=0,r=e}}return o.columns=l+1,o.rows=s+1,o}function gt(e,t,n){const o=new Set(n?n.getNodes():[]);ft(t,((t,n)=>{const r=t.elem;o.has(n)?(t.highlighted=!0,Nt(e,t)):(t.highlighted=!1,xt(e,t),r.getAttribute("style")||r.removeAttribute("style"))}))}function ft(e,t){const{domRows:n}=e;for(let e=0;e<n.length;e++){const o=n[e];if(o)for(let n=0;n<o.length;n++){const r=o[n];if(!r)continue;const l=z(r.elem);null!==l&&t(r,l,{x:n,y:e})}}}function mt(e,t){t.$disableHighlightStyle(),ft(t.table,(t=>{t.highlighted=!0,Nt(e,t)}))}const pt=(e,t,n,o,r)=>{const l="forward"===r;switch(r){case"backward":case"forward":return n!==(l?e.table.columns-1:0)?yt(t.getCellNodeFromCordsOrThrow(n+(l?1:-1),o,e.table),l):o!==(l?e.table.rows-1:0)?yt(t.getCellNodeFromCordsOrThrow(l?0:e.table.columns-1,o+(l?1:-1),e.table),l):l?t.selectNext():t.selectPrevious(),!0;case"up":return 0!==o?yt(t.getCellNodeFromCordsOrThrow(n,o-1,e.table),!1):t.selectPrevious(),!0;case"down":return o!==e.table.rows-1?yt(t.getCellNodeFromCordsOrThrow(n,o+1,e.table),!0):t.selectNext(),!0;default:return!1}};function Ct(e,t){let n,o;if(t.startColumn===e.minColumn)n="minColumn";else{if(t.startColumn+t.cell.__colSpan-1!==e.maxColumn)return null;n="maxColumn"}if(t.startRow===e.minRow)o="minRow";else{if(t.startRow+t.cell.__rowSpan-1!==e.maxRow)return null;o="maxRow"}return[n,o]}function St([e,t]){return["minColumn"===e?"maxColumn":"minColumn","minRow"===t?"maxRow":"minRow"]}function _t(e,t,[n,o]){const r=t[o],l=e[r];void 0===l&&pe(250,o,String(r));const s=t[n],i=l[s];return void 0===i&&pe(250,n,String(s)),i}function wt(e,t,n,o,r){const l=qe(t,n,o),s=function(e,t){const{minColumn:n,maxColumn:o,minRow:r,maxRow:l}=t;let s=1,i=1,c=1,a=1;const u=e[r],h=e[l];for(let e=n;e<=o;e++)s=Math.max(s,u[e].cell.__rowSpan),a=Math.max(a,h[e].cell.__rowSpan);for(let t=r;t<=l;t++)i=Math.max(i,e[t][n].cell.__colSpan),c=Math.max(c,e[t][o].cell.__colSpan);return{bottomSpan:a,leftSpan:i,rightSpan:c,topSpan:s}}(t,l),{topSpan:i,leftSpan:c,bottomSpan:a,rightSpan:u}=s,h=function(e,t){const n=Ct(e,t);return null===n&&pe(249,t.cell.getKey()),n}(l,n),[d,g]=St(h);let f=l[d],m=l[g];"forward"===r?f+="maxColumn"===d?1:c:"backward"===r?f-="minColumn"===d?1:u:"down"===r?m+="maxRow"===g?1:i:"up"===r&&(m-="minRow"===g?1:a);const p=t[m];if(void 0===p)return!1;const C=p[f];if(void 0===C)return!1;const[S,_]=function(e,t,n){const o=qe(e,t,n),r=Ct(o,t);if(r)return[_t(e,o,r),_t(e,o,St(r))];const l=Ct(o,n);if(l)return[_t(e,o,St(l)),_t(e,o,l)];const s=["minColumn","minRow"];return[_t(e,o,s),_t(e,o,St(s))]}(t,n,C),w=Et(e,S.cell),b=Et(e,_.cell);return e.$setAnchorCellForSelection(w),e.$setFocusCellForSelection(b,!0),!0}function bt(e,t){if(w(e)||Ve(e)){const n=t.isParentOf(e.anchor.getNode()),o=t.isParentOf(e.focus.getNode());return n&&o}return!1}function yt(e,t){t?e.selectStart():e.selectEnd()}function Nt(t,n){const o=n.elem,r=t._config.theme;ge(z(o))||pe(131),e(o,r.tableCellSelected)}function xt(e,t){const n=t.elem;ge(z(n))||pe(131);const r=e._config.theme;o(n,r.tableCellSelected)}function Tt(e){const t=n(e,ge);return ge(t)?t:null}function vt(e){const t=n(e,It);return It(t)?t:null}function Rt(e,t,o,r,l){if(("up"===o||"down"===o)&&function(e){const t=e.getRootElement();if(!t)return!1;return t.hasAttribute("aria-controls")&&"typeahead-menu"===t.getAttribute("aria-controls")}(e))return!1;const s=_();if(!bt(s,r)){if(w(s)){if("backward"===o){if(s.focus.offset>0)return!1;const e=function(e){for(let t=e,n=e;null!==n;t=n,n=n.getParent())if(g(n)){if(n!==t&&n.getFirstChild()!==t)return null;if(!n.isInline())return n}return null}(s.focus.getNode());if(!e)return!1;const n=e.getPreviousSibling();return!!It(n)&&(Ot(t),t.shiftKey?s.focus.set(n.getParentOrThrow().getKey(),n.getIndexWithinParent(),"element"):n.selectEnd(),!0)}if(t.shiftKey&&("up"===o||"down"===o)){const e=s.focus.getNode();if(!s.isCollapsed()&&("up"===o&&!s.isBackward()||"down"===o&&s.isBackward())){let l=n(e,(e=>It(e)));if(ge(l)&&(l=n(l,It)),l!==r)return!1;if(!l)return!1;const i="down"===o?l.getNextSibling():l.getPreviousSibling();if(!i)return!1;let c=0;"up"===o&&g(i)&&(c=i.getChildrenSize());let a=i;if("up"===o&&g(i)){const e=i.getLastChild();a=e||i,c=m(a)?a.getTextContentSize():0}const u=s.clone();return u.focus.set(a.getKey(),c,m(a)?"text":"element"),O(u),Ot(t),!0}if(X(e)){const e="up"===o?s.getNodes()[s.getNodes().length-1]:s.getNodes()[0];if(e){if(null!==lt(r,e)){const e=r.getFirstDescendant(),t=r.getLastDescendant();if(!e||!t)return!1;const[n]=Ye(e),[o]=Ye(t),s=r.getCordsFromCellNode(n,l.table),i=r.getCordsFromCellNode(o,l.table),c=r.getDOMCellFromCordsOrThrow(s.x,s.y,l.table),a=r.getDOMCellFromCordsOrThrow(i.x,i.y,l.table);return l.$setAnchorCellForSelection(c),l.$setFocusCellForSelection(a,!0),!0}}return!1}{let r=n(e,(e=>g(e)&&!e.isInline()));if(ge(r)&&(r=n(r,It)),!r)return!1;const i="down"===o?r.getNextSibling():r.getPreviousSibling();if(It(i)&&l.tableNodeKey===i.getKey()){const e=i.getFirstDescendant(),n=i.getLastDescendant();if(!e||!n)return!1;const[r]=Ye(e),[l]=Ye(n),c=s.clone();return c.focus.set(("up"===o?r:l).getKey(),"up"===o?0:l.getChildrenSize(),"element"),Ot(t),O(c),!0}}}}return"down"===o&&Lt(e)&&l.setShouldCheckSelection(),!1}if(w(s)&&s.isCollapsed()){const{anchor:i,focus:c}=s,a=n(i.getNode(),ge),u=n(c.getNode(),ge);if(!ge(a)||!a.is(u))return!1;const h=vt(a);if(h!==r&&null!=h){const n=ot(h,e.getElementByKey(h.getKey()));if(null!=n)return l.table=dt(h,n),Rt(e,t,o,h,l)}if("backward"===o||"forward"===o){const e=i.type,l=i.offset,c=i.getNode();if(!c)return!1;const u=s.getNodes();return(1!==u.length||!J(u[0]))&&(!!function(e,t,o,r){return function(e,t,n){return"element"===e&&("backward"===n?null===t.getPreviousSibling():null===t.getNextSibling())}(e,o,r)||function(e,t,o,r){const l=n(o,(e=>g(e)&&!e.isInline()));if(!l)return!1;const s="backward"===r?0===t:t===o.getTextContentSize();return"text"===e&&s&&("backward"===r?null===l.getPreviousSibling():null===l.getNextSibling())}(e,t,o,r)}(e,l,c,o)&&function(e,t,o,r,l){const[s,i]=Ue(r,o,o);if(!function(e,t,n){const o=e[0][0],r=e[e.length-1][e[0].length-1],{startColumn:l,startRow:s}=t;return"backward"===n?l===o.startColumn&&s===o.startRow:l===r.startColumn&&s===r.startRow}(s,i,l))return!1;const c=function(e,t,o){const r=n(e,(e=>g(e)&&!e.isInline()));if(!r)return;const l="backward"===t?r.getPreviousSibling():r.getNextSibling();return l&&It(l)?l:"backward"===t?o.getPreviousSibling():o.getNextSibling()}(t,l,r);if(!c||It(c))return!1;Ot(e),"backward"===l?c.selectEnd():c.selectStart();return!0}(t,c,a,r,o))}const d=e.getElementByKey(a.__key),f=e.getElementByKey(i.key);if(null==f||null==d)return!1;let m;if("element"===i.type)m=f.getBoundingClientRect();else{const t=k(rt(e));if(null===t||0===t.rangeCount)return!1;m=t.getRangeAt(0).getBoundingClientRect()}const p="up"===o?a.getFirstChild():a.getLastChild();if(null==p)return!1;const C=e.getElementByKey(p.__key);if(null==C)return!1;const S=C.getBoundingClientRect();if("up"===o?S.top>m.top-m.height:m.bottom+m.height>S.bottom){Ot(t);const e=r.getCordsFromCellNode(a,l.table);if(!t.shiftKey)return pt(l,r,e.x,e.y,o);{const t=r.getDOMCellFromCordsOrThrow(e.x,e.y,l.table);l.$setAnchorCellForSelection(t),l.$setFocusCellForSelection(t,!0)}return!0}}else if(Ve(s)){const{anchor:i,focus:c}=s,a=n(i.getNode(),ge),u=n(c.getNode(),ge),[h]=s.getNodes();It(h)||pe(251);const d=ot(h,e.getElementByKey(h.getKey()));if(!ge(a)||!ge(u)||!It(h)||null==d)return!1;l.$updateTableTableSelection(s);const g=dt(h,d),f=r.getCordsFromCellNode(a,g),m=r.getDOMCellFromCordsOrThrow(f.x,f.y,g);if(l.$setAnchorCellForSelection(m),Ot(t),t.shiftKey){const[e,t,n]=Ue(r,a,u);return wt(l,e,t,n,o)}return u.selectEnd(),!0}return!1}function Ot(e){e.preventDefault(),e.stopImmediatePropagation(),e.stopPropagation()}function Ft(e,t,n){const o=d();"first"===e?t.insertBefore(o):t.insertAfter(o),o.append(...n||[]),o.selectEnd()}function kt(e,t,o){const r=o.getParent();if(!r)return;const l=k(rt(e));if(!l)return;const s=l.anchorNode,i=e.getElementByKey(r.getKey()),c=ot(o,e.getElementByKey(o.getKey()));if(!s||!i||!c||!i.contains(s)||c.contains(s))return;const a=n(t.anchor.getNode(),(e=>ge(e)));if(!a)return;const u=n(a,(e=>It(e)));if(!It(u)||!u.is(o))return;const[h,d]=Ue(o,a,a),g=h[0][0],f=h[h.length-1][h[0].length-1],{startRow:m,startColumn:p}=d,C=m===g.startRow&&p===g.startColumn,S=m===f.startRow&&p===f.startColumn;return C?"first":S?"last":void 0}function Et(e,t){const{tableNode:n}=e.$lookup(),o=n.getCordsFromCellNode(t,e.table);return n.getDOMCellFromCordsOrThrow(o.x,o.y,e.table)}function Kt(e,t,n){return lt(e,z(t,n))}function Mt(e,t,n,o){const r=e.querySelector("colgroup");if(!r)return;const l=[];for(let e=0;e<n;e++){const t=document.createElement("col"),n=o&&o[e];n&&(t.style.width=`${n}px`),l.push(t)}r.replaceChildren(...l)}function At(t,n,r){r?(e(t,n.theme.tableRowStriping),t.setAttribute("data-lexical-row-striping","true")):(o(t,n.theme.tableRowStriping),t.removeAttribute("data-lexical-row-striping"))}const $t=new WeakSet;function Lt(e=R()){return $t.has(e)}function Pt(e,t){t?$t.add(e):$t.delete(e)}class Ht extends u{static getType(){return"table"}getColWidths(){return this.getLatest().__colWidths}setColWidths(e){const t=this.getWritable();return t.__colWidths=e,t}static clone(e){return new Ht(e.__key)}afterCloneFrom(e){super.afterCloneFrom(e),this.__colWidths=e.__colWidths,this.__rowStriping=e.__rowStriping}static importDOM(){return{table:e=>({conversion:Bt,priority:1})}}static importJSON(e){const t=Dt();return t.__rowStriping=e.rowStriping||!1,t.__colWidths=e.colWidths,t}constructor(e){super(e),this.__rowStriping=!1}exportJSON(){return{...super.exportJSON(),colWidths:this.getColWidths(),rowStriping:this.__rowStriping?this.__rowStriping:void 0,type:"table",version:1}}extractWithChild(e,t,n){return"html"===n}getDOMSlot(e){const t="TABLE"!==e.nodeName&&e.querySelector("table")||e;return"TABLE"!==t.nodeName&&pe(229),super.getDOMSlot(t).withAfter(t.querySelector("colgroup"))}createDOM(t,n){const o=document.createElement("table"),r=document.createElement("colgroup");if(o.appendChild(r),Mt(o,0,this.getColumnCount(),this.getColWidths()),re(r),e(o,t.theme.table),this.__rowStriping&&At(o,t,!0),Lt(n)){const n=document.createElement("div"),r=t.theme.tableScrollableWrapper;return r?e(n,r):n.style.cssText="overflow-x: auto;",n.appendChild(o),n}return o}updateDOM(e,t,n){return e.__rowStriping!==this.__rowStriping&&At(t,n,this.__rowStriping),Mt(t,0,this.getColumnCount(),this.getColWidths()),!1}exportDOM(e){const t=super.exportDOM(e),{element:n}=t;return{after:e=>{if(t.after&&(e=t.after(e)),e&&l(e)&&"TABLE"!==e.nodeName&&(e=e.querySelector("table")),!e||!l(e))return null;const[n]=ze(this,null,null),o=new Map;for(const e of n)for(const t of e){const e=t.cell.getKey();o.has(e)||o.set(e,{colSpan:t.cell.getColSpan(),startColumn:t.startColumn})}const r=new Set;for(const t of e.querySelectorAll(":scope > tr > [data-temporary-table-cell-lexical-key]")){const e=t.getAttribute("data-temporary-table-cell-lexical-key");if(e){const n=o.get(e);if(t.removeAttribute("data-temporary-table-cell-lexical-key"),n){o.delete(e);for(let e=0;e<n.colSpan;e++)r.add(e+n.startColumn)}}}const s=e.querySelector(":scope > colgroup");if(s){const t=Array.from(e.querySelectorAll(":scope > colgroup > col")).filter(((e,t)=>r.has(t)));s.replaceChildren(...t)}const i=e.querySelectorAll(":scope > tr");if(i.length>0){const t=document.createElement("tbody");for(const e of i)t.appendChild(e);e.append(t)}return e},element:n&&l(n)&&"TABLE"!==n.nodeName?n.querySelector("table"):n}}canBeEmpty(){return!1}isShadowRoot(){return!0}getCordsFromCellNode(e,t){const{rows:n,domRows:o}=t;for(let t=0;t<n;t++){const n=o[t];if(null!=n)for(let o=0;o<n.length;o++){const r=n[o];if(null==r)continue;const{elem:l}=r,s=Kt(this,l);if(null!==s&&e.is(s))return{x:o,y:t}}}throw new Error("Cell not found in table.")}getDOMCellFromCords(e,t,n){const{domRows:o}=n,r=o[t];if(null==r)return null;const l=r[e<r.length?e:r.length-1];return null==l?null:l}getDOMCellFromCordsOrThrow(e,t,n){const o=this.getDOMCellFromCords(e,t,n);if(!o)throw new Error("Cell not found at cords.");return o}getCellNodeFromCords(e,t,n){const o=this.getDOMCellFromCords(e,t,n);if(null==o)return null;const r=z(o.elem);return ge(r)?r:null}getCellNodeFromCordsOrThrow(e,t,n){const o=this.getCellNodeFromCords(e,t,n);if(!o)throw new Error("Node at cords not TableCellNode.");return o}getRowStriping(){return Boolean(this.getLatest().__rowStriping)}setRowStriping(e){this.getWritable().__rowStriping=e}canSelectBefore(){return!0}canIndent(){return!1}getColumnCount(){const e=this.getFirstChild();if(!e)return 0;let t=0;return e.getChildren().forEach((e=>{ge(e)&&(t+=e.getColSpan())})),t}}function Wt(e,t){const n=e.getElementByKey(t.getKey());return null===n&&pe(230),dt(t,n)}function Bt(e){const n=Dt();e.hasAttribute("data-lexical-row-striping")&&n.setRowStriping(!0);const o=e.querySelector(":scope > colgroup");if(o){let e=[];for(const t of o.querySelectorAll(":scope > col")){const n=t.style.width;if(!n||!ce.test(n)){e=void 0;break}e.push(parseFloat(n))}e&&n.setColWidths(e)}return{after:e=>t(e,we),node:n}}function Dt(){return p(new Ht)}function It(e){return e instanceof Ht}function Ut({rows:e,columns:t,includeHeaders:n}){const o=xe(Number(e),Number(t),n);c(o);const r=o.getFirstDescendant();return m(r)&&r.select(),!0}function zt(e){we(e.getParent())?e.isEmpty()&&e.append(d()):e.remove()}function Yt(e){It(e.getParent())?a(e,ge):e.remove()}function qt(e){a(e,we);const[t]=ze(e,null,null),n=t.reduce(((e,t)=>Math.max(e,t.length)),0),o=e.getChildren();for(let e=0;e<t.length;++e){const r=o[e];if(!r)continue;we(r)||pe(253,r.constructor.name,r.getType());const l=t[e].reduce(((e,t)=>t?1+e:e),0);if(l!==n)for(let e=l;e<n;++e){const e=de();e.append(d()),r.append(e)}}}function Xt(e){return e.registerNodeTransform(ue,(e=>{if(e.getColSpan()>1||e.getRowSpan()>1){const[,,t]=Ye(e),[n]=Ue(t,e,e),o=n.length,r=n[0].length;let l=t.getFirstChild();we(l)||pe(175);const i=[];for(let e=0;e<o;e++){0!==e&&(l=l.getNextSibling(),we(l)||pe(175));let t=null;for(let o=0;o<r;o++){const r=n[e][o],c=r.cell;if(r.startRow===e&&r.startColumn===o)t=c,i.push(c);else if(c.getColSpan()>1||c.getRowSpan()>1){ge(c)||pe(176);const e=de(c.__headerState);null!==t?t.insertAfter(e):s(l,e)}}}for(const e of i)e.setColSpan(1),e.setRowSpan(1)}}))}function Jt(e,t=!0){const n=new Map,o=(o,r,l)=>{const s=ot(o,l),i=at(o,s,e,t);n.set(r,[i,s])},r=e.registerMutationListener(Ht,(t=>{e.getEditorState().read((()=>{for(const[e,r]of t){const t=n.get(e);if("created"===r||"updated"===r){const{tableNode:r,tableElement:l}=Ze(e);void 0===t?o(r,e,l):l!==t[1]&&(t[0].removeListeners(),n.delete(e),o(r,e,l))}else"destroyed"===r&&void 0!==t&&(t[0].removeListeners(),n.delete(e))}}),{editor:e})}),{skipInitialization:!1});return()=>{r();for(const[,[e]]of n)e.removeListeners()}}function jt(e){return e.hasNodes([Ht])||pe(254),i(e.registerCommand(fe,Ut,le),e.registerNodeTransform(Ht,qt),e.registerNodeTransform(Ce,Yt),e.registerNodeTransform(ue,zt))}export{Ue as $computeTableMap,ze as $computeTableMapSkipCellCheck,de as $createTableCellNode,Dt as $createTableNode,xe as $createTableNodeWithDimensions,_e as $createTableRowNode,Ge as $createTableSelection,Pe as $deleteTableColumn,We as $deleteTableColumn__EXPERIMENTAL,He as $deleteTableRow__EXPERIMENTAL,Tt as $findCellNode,vt as $findTableNode,Wt as $getElementForTableNode,Ye as $getNodeTriplet,Ze as $getTableAndElementByKey,Te as $getTableCellNodeFromLexicalNode,Xe as $getTableCellNodeRect,Fe as $getTableColumnIndexFromTableCellNode,Re as $getTableNodeFromLexicalNodeOrThrow,Oe as $getTableRowIndexFromTableCellNode,ve as $getTableRowNodeFromTableCellNodeOrThrow,$e as $insertTableColumn,Le as $insertTableColumn__EXPERIMENTAL,Ke as $insertTableRow,Ae as $insertTableRow__EXPERIMENTAL,Lt as $isScrollableTablesActive,ge as $isTableCellNode,It as $isTableNode,we as $isTableRowNode,Ve as $isTableSelection,Ee as $removeTableRowAtIndex,Ie as $unmergeCell,fe as INSERT_TABLE_COMMAND,ae as TableCellHeaderStates,ue as TableCellNode,Ht as TableNode,et as TableObserver,Ce as TableRowNode,at as applyTableHandlers,ht as getDOMCellFromTarget,ot as getTableElement,ut as getTableObserverFromTableElement,Xt as registerTableCellUnmergeTransform,jt as registerTablePlugin,Jt as registerTableSelectionObserver,Pt as setScrollableTablesActive};
@@ -63,5 +63,5 @@ export declare class TableCellNode extends ElementNode {
63
63
  canIndent(): false;
64
64
  }
65
65
  export declare function $convertTableCellNodeElement(domNode: Node): DOMConversionOutput;
66
- export declare function $createTableCellNode(headerState: TableCellHeaderState, colSpan?: number, width?: number): TableCellNode;
66
+ export declare function $createTableCellNode(headerState?: TableCellHeaderState, colSpan?: number, width?: number): TableCellNode;
67
67
  export declare function $isTableCellNode(node: LexicalNode | null | undefined): node is TableCellNode;
@@ -0,0 +1,26 @@
1
+ /**
2
+ * Copyright (c) Meta Platforms, Inc. and affiliates.
3
+ *
4
+ * This source code is licensed under the MIT license found in the
5
+ * LICENSE file in the root directory of this source tree.
6
+ *
7
+ */
8
+ import { LexicalEditor } from 'lexical';
9
+ /**
10
+ * Register a transform to ensure that all TableCellNode have a colSpan and rowSpan of 1.
11
+ * This should only be registered when you do not want to support merged cells.
12
+ *
13
+ * @param editor The editor
14
+ * @returns An unregister callback
15
+ */
16
+ export declare function registerTableCellUnmergeTransform(editor: LexicalEditor): () => void;
17
+ export declare function registerTableSelectionObserver(editor: LexicalEditor, hasTabHandler?: boolean): () => void;
18
+ /**
19
+ * Register the INSERT_TABLE_COMMAND listener and the table integrity transforms. The
20
+ * table selection observer should be registered separately after this with
21
+ * {@link registerTableSelectionObserver}.
22
+ *
23
+ * @param editor The editor
24
+ * @returns An unregister callback
25
+ */
26
+ export declare function registerTablePlugin(editor: LexicalEditor): () => void;
package/index.d.ts CHANGED
@@ -13,6 +13,7 @@ export type { SerializedTableNode } from './LexicalTableNode';
13
13
  export { $createTableNode, $getElementForTableNode, $isScrollableTablesActive, $isTableNode, setScrollableTablesActive, TableNode, } from './LexicalTableNode';
14
14
  export type { TableDOMCell } from './LexicalTableObserver';
15
15
  export { $getTableAndElementByKey, TableObserver } from './LexicalTableObserver';
16
+ export { registerTableCellUnmergeTransform, registerTablePlugin, registerTableSelectionObserver, } from './LexicalTablePluginHelpers';
16
17
  export type { SerializedTableRowNode } from './LexicalTableRowNode';
17
18
  export { $createTableRowNode, $isTableRowNode, TableRowNode, } from './LexicalTableRowNode';
18
19
  export type { TableMapType, TableMapValueType, TableSelection, TableSelectionShape, } from './LexicalTableSelection';
package/package.json CHANGED
@@ -8,13 +8,13 @@
8
8
  "table"
9
9
  ],
10
10
  "license": "MIT",
11
- "version": "0.21.1-nightly.20241206.0",
11
+ "version": "0.21.1-nightly.20241209.0",
12
12
  "main": "LexicalTable.js",
13
13
  "types": "index.d.ts",
14
14
  "dependencies": {
15
- "@lexical/clipboard": "0.21.1-nightly.20241206.0",
16
- "@lexical/utils": "0.21.1-nightly.20241206.0",
17
- "lexical": "0.21.1-nightly.20241206.0"
15
+ "@lexical/clipboard": "0.21.1-nightly.20241209.0",
16
+ "@lexical/utils": "0.21.1-nightly.20241209.0",
17
+ "lexical": "0.21.1-nightly.20241209.0"
18
18
  },
19
19
  "repository": {
20
20
  "type": "git",