@lexical/table 0.20.1-nightly.20241122.0 → 0.20.1-nightly.20241126.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,$createParagraphNode as s,$isElementNode as i,$isLineBreakNode as c,$isTextNode as a,$applyNodeReplacement as u,createCommand as h,$createTextNode as d,$getSelection as g,$isRangeSelection as f,$createPoint as p,$isParagraphNode as m,$normalizeSelection__EXPERIMENTAL as S,$getNodeByKey as C,isCurrentlyReadOnlyMode as _,TEXT_TYPE_TO_FORMAT as w,$getEditor as b,$setSelection as y,SELECTION_CHANGE_COMMAND as N,$getNearestNodeFromDOMNode as x,$createRangeSelection as v,$getRoot as T,KEY_ARROW_DOWN_COMMAND as O,COMMAND_PRIORITY_HIGH as R,KEY_ARROW_UP_COMMAND as k,KEY_ARROW_LEFT_COMMAND as E,KEY_ARROW_RIGHT_COMMAND as F,KEY_ESCAPE_COMMAND as M,DELETE_WORD_COMMAND as K,DELETE_LINE_COMMAND as A,DELETE_CHARACTER_COMMAND as B,COMMAND_PRIORITY_CRITICAL as H,KEY_BACKSPACE_COMMAND as P,KEY_DELETE_COMMAND as W,CUT_COMMAND as L,FORMAT_TEXT_COMMAND as D,FORMAT_ELEMENT_COMMAND as I,CONTROLLED_TEXT_INSERTION_COMMAND as U,KEY_TAB_COMMAND as $,FOCUS_COMMAND as z,SELECTION_INSERT_CLIPBOARD_NODES_COMMAND as Y,$getPreviousSelection as X,$createRangeSelectionFromDom as J,INSERT_PARAGRAPH_COMMAND as j,$isRootOrShadowRoot as q,$isDecoratorNode as G,setDOMUnmanaged as Q}from"lexical";import{copyToClipboard as V,$getClipboardDataFromSelection as Z}from"@lexical/clipboard";const ee=/^(\d+(?:\.\d+)?)px$/,te={BOTH:3,COLUMN:2,NO_STATUS:0,ROW:1};class ne extends l{static getType(){return"tablecell"}static clone(e){return new ne(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:oe,priority:0}),th:e=>({conversion:oe,priority:0})}}static importJSON(e){const t=e.colSpan||1,n=e.rowSpan||1;return re(e.headerState,t,e.width||void 0).setRowSpan(n).setBackgroundColor(e.backgroundColor||null)}constructor(e=te.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{element:t}=super.exportDOM(e);if(t){const e=t;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";const n=this.getBackgroundColor();null!==n?e.style.backgroundColor=n:this.hasHeader()&&(e.style.backgroundColor="#f2f3f5")}return{element: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=te.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!==te.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 oe(e){const t=e,n=e.nodeName.toLowerCase();let o;ee.test(t.style.width)&&(o=parseFloat(t.style.width));const r=re("th"===n?te.ROW:te.NO_STATUS,t.colSpan,o);r.__rowSpan=t.rowSpan;const l=t.style.backgroundColor;""!==l&&(r.__backgroundColor=l);const u=t.style,h=(u&&u.textDecoration||"").split(" "),d="700"===u.fontWeight||"bold"===u.fontWeight,g=h.includes("line-through"),f="italic"===u.fontStyle,p=h.includes("underline");return{after:e=>(0===e.length&&e.push(s()),e),forChild:(e,t)=>{if(le(t)&&!i(e)){const t=s();return c(e)&&"\n"===e.getTextContent()?null:(a(e)&&(d&&e.toggleFormat("bold"),g&&e.toggleFormat("strikethrough"),f&&e.toggleFormat("italic"),p&&e.toggleFormat("underline")),t.append(e),t)}return e},node:r}}function re(e,t=1,n){return u(new ne(e,t,n))}function le(e){return e instanceof ne}const se=h("INSERT_TABLE_COMMAND");function ie(e){return e&&e.__esModule&&Object.prototype.hasOwnProperty.call(e,"default")?e.default:e}var ce=ie((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 ae="undefined"!=typeof window&&void 0!==window.document&&void 0!==window.document.createElement;class ue extends l{static getType(){return"tablerow"}static clone(e){return new ue(e.__height,e.__key)}static importDOM(){return{tr:e=>({conversion:he,priority:0})}}static importJSON(e){return de(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}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 he(e){const t=e;let n;return ee.test(t.style.height)&&(n=parseFloat(t.style.height)),{node:de(n)}}function de(e){return u(new ue(e))}function ge(e){return e instanceof ue}function fe(e,t,n=!0){const o=wt();for(let r=0;r<e;r++){const e=de();for(let o=0;o<t;o++){let t=te.NO_STATUS;"object"==typeof n?(0===r&&n.rows&&(t|=te.ROW),0===o&&n.columns&&(t|=te.COLUMN)):n&&(0===r&&(t|=te.ROW),0===o&&(t|=te.COLUMN));const l=re(t),i=s();i.append(d()),l.append(i),e.append(l)}o.append(e)}return o}function pe(e){const n=t(e,(e=>le(e)));return le(n)?n:null}function me(e){const n=t(e,(e=>ge(e)));if(ge(n))return n;throw new Error("Expected table cell to be inside of table row.")}function Se(e){const n=t(e,(e=>bt(e)));if(bt(n))return n;throw new Error("Expected table cell to be inside of table.")}function Ce(e){const t=me(e);return Se(t).getChildren().findIndex((e=>e.is(t)))}function _e(e){return me(e).getChildren().findIndex((t=>t.is(e)))}function we(e,t){const n=Se(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 be(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 ye(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 i=l[t];if(!ge(i))throw new Error("Row before insertion index does not exist.");for(let e=0;e<o;e++){const e=i.getChildren(),t=e.length,o=de();for(let n=0;n<t;n++){const t=e[n];le(t)||ce(12);const{above:l,below:i}=we(t,r);let c=te.NO_STATUS;const a=l&&l.getWidth()||i&&i.getWidth()||void 0;(l&&l.hasHeaderState(te.COLUMN)||i&&i.hasHeaderState(te.COLUMN))&&(c|=te.COLUMN);const u=re(c,1,a);u.append(s()),o.append(u)}n?i.insertAfter(o):i.insertBefore(o)}return e}const Ne=(e,t)=>e===te.BOTH||e===t?t:te.NO_STATUS;function xe(e=!0){const t=g();f(t)||We(t)||ce(188);const n=t.focus.getNode(),[o,,r]=Be(n),[l,i]=Ke(r,o,o),c=l[0].length,{startRow:a}=i;let u=null;if(e){const e=a+o.__rowSpan-1,t=l[e],n=de();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=Ne(e,te.COLUMN);n.append(re(r).append(s()))}else r.setRowSpan(r.__rowSpan+1)}const i=r.getChildAtIndex(e);ge(i)||ce(145),i.insertAfter(n),u=n}else{const e=l[a],t=de();for(let n=0;n<c;n++){const{cell:o,startRow:r}=e[n];if(r===a){const o=e[n].cell.__headerState,r=Ne(o,te.COLUMN);t.append(re(r).append(s()))}else o.setRowSpan(o.__rowSpan+1)}const n=r.getChildAtIndex(a);ge(n)||ce(145),n.insertBefore(t),u=t}return u}function ve(e,t,n=!0,o,r){const l=e.getChildren(),i=[];for(let e=0;e<l.length;e++){const n=l[e];if(ge(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];le(o)||ce(12);const{left:l,right:c}=we(o,r);let a=te.NO_STATUS;(l&&l.hasHeaderState(te.ROW)||c&&c.hasHeaderState(te.ROW))&&(a|=te.ROW);const u=re(a);u.append(s()),i.push({newTableCell:u,targetCell:o})}}return i.forEach((({newTableCell:e,targetCell:t})=>{n?t.insertAfter(e):t.insertBefore(e)})),e}function Te(e=!0){const t=g();f(t)||We(t)||ce(188);const n=t.anchor.getNode(),o=t.focus.getNode(),[r]=Be(n),[l,,i]=Be(o),[c,a,u]=Ke(i,l,r),h=c.length,d=e?Math.max(a.startColumn,u.startColumn):Math.min(a.startColumn,u.startColumn),p=e?d+l.__colSpan-1:d-1,m=i.getFirstChild();ge(m)||ce(120);let S=null;function C(e=te.NO_STATUS){const t=re(e).append(s());return null===S&&(S=t),t}let _=m;e:for(let e=0;e<h;e++){if(0!==e){const e=_.getNextSibling();ge(e)||ce(121),_=e}const t=c[e],n=t[p<0?0:p].cell.__headerState,o=Ne(n,te.ROW);if(p<0){Fe(_,C(o));continue}const{cell:r,startColumn:l,startRow:s}=t[p];if(l+r.__colSpan-1<=p){let n=r,l=s,i=p;for(;l!==e&&n.__rowSpan>1;){if(i-=r.__colSpan,!(i>=0)){_.append(C(o));continue e}{const{cell:e,startRow:o}=t[i];n=e,l=o}}n.insertAfter(C(o))}else r.setColSpan(r.__colSpan+1)}null!==S&&Ee(S);const w=i.getColWidths();if(w){const e=[...w],t=p<0?0:p,n=e[t];e.splice(t,0,n),i.setColWidths(e)}return S}function Oe(e,t){const n=e.getChildren();for(let e=0;e<n.length;e++){const o=n[e];if(ge(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 Re(){const e=g();f(e)||We(e)||ce(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]=Ke(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,p=s[h+1],m=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===m&&ce(122),0===t)Fe(m,n);else{const{cell:e}=p[t-1];e.insertAfter(n)}}const t=r.getChildAtIndex(e);ge(t)||ce(206,String(e)),t.remove()}if(void 0!==p){const{cell:e}=p[0];Ee(e)}else{const e=s[a-1],{cell:t}=e[0];Ee(t)}}function ke(){const e=g();f(e)||We(e)||ce(188);const t=e.anchor.getNode(),n=e.focus.getNode(),[o,,r]=Be(t),[l]=Be(n),[s,i,c]=Ke(r,o,l),{startColumn:a}=i,{startRow:u,startColumn:h}=c,d=Math.min(a,h),p=Math.max(a+o.__colSpan-1,h+l.__colSpan-1),m=p-d+1;if(s[0].length===p-d+1)return r.selectPrevious(),void r.remove();const S=s.length;for(let e=0;e<S;e++)for(let t=d;t<=p;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(m,n.__colSpan-e))}}else if(o+n.__colSpan-1>p){if(t===p){const e=p-o+1;n.setColSpan(n.__colSpan-e)}}else n.remove()}const C=s[u],_=a>h?C[a+o.__colSpan]:C[h+l.__colSpan];if(void 0!==_){const{cell:e}=_;Ee(e)}else{const e=h<a?C[h-1]:C[a-1],{cell:t}=e;Ee(t)}const w=r.getColWidths();if(w){const e=[...w];e.splice(d,m),r.setColWidths(e)}}function Ee(e){const t=e.getFirstDescendant();null==t?e.selectStart():t.getParentOrThrow().selectStart()}function Fe(e,t){const n=e.getFirstChild();null!==n?n.insertBefore(t):e.append(t)}function Me(){const e=g();f(e)||We(e)||ce(188);const t=e.anchor.getNode(),[n,o,r]=Be(t),l=n.__colSpan,i=n.__rowSpan;if(1===l&&1===i)return;const[c,a]=Ke(r,n,n),{startColumn:u,startRow:h}=a,d=n.__headerState&te.COLUMN,p=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})),m=n.__headerState&te.ROW,S=Array.from({length:i},((e,t)=>{let n=m;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(re(p[e]|S[0]).append(s()));n.setColSpan(1)}if(i>1){let e;for(let t=1;t<i;t++){const n=h+t,r=c[n];e=(e||o).getNextSibling(),ge(e)||ce(125);let i=null;for(let e=0;e<u;e++){const t=r[e],o=t.cell;t.startRow===n&&(i=o),o.__colSpan>1&&(e+=o.__colSpan-1)}if(null===i)for(let n=l-1;n>=0;n--)Fe(e,re(p[n]|S[t]).append(s()));else for(let e=l-1;e>=0;e--)i.insertAfter(re(p[e]|S[t]).append(s()))}n.setRowSpan(1)}}function Ke(e,t,n){const[o,r,l]=Ae(e,t,n);return null===r&&ce(207),null===l&&ce(208),[o,r,l]}function Ae(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];ge(o)||ce(209);for(let c=o.getFirstChild(),a=0;null!=c;c=c.getNextSibling()){le(c)||ce(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 ne)n=e;else if("__type"in e){const o=t(e,le);le(o)||ce(148),n=o}else{const o=t(e.getNode(),le);le(o)||ce(148),n=o}const o=n.getParent();ge(o)||ce(149);const r=o.getParent();return bt(r)||ce(210),[n,o,r]}function He(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}class Pe{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]}isBackward(){return this.focus.isBefore(this.anchor)}getCachedNodes(){return this._cachedNodes}setCachedNodes(e){this._cachedNodes=e}is(e){return!!We(e)&&(this.tableKey===e.tableKey&&this.anchor.is(e.anchor)&&this.focus.is(e.focus))}set(e,t,n){this.dirty=!0,this.tableKey=e,this.anchor.key=t,this.focus.key=n,this._cachedNodes=null}clone(){return new Pe(this.tableKey,this.anchor,this.focus)}isCollapsed(){return!1}extract(){return this.getNodes()}insertRawText(e){}insertText(){}hasFormat(e){let t=0;this.getNodes().filter(le).forEach((e=>{const n=e.getFirstChild();m(n)&&(t|=n.getTextFormat())}));const n=w[e];return!!(t&n)}insertNodes(e){const t=this.focus.getNode();i(t)||ce(151);S(t.select(0,t.getChildrenSize())).insertNodes(e)}getShape(){const e=C(this.anchor.key);le(e)||ce(152);const t=He(e);null===t&&ce(153);const n=C(this.focus.key);le(n)||ce(154);const o=He(n);null===o&&ce(155);const r=Math.min(t.columnIndex,o.columnIndex),l=Math.max(t.columnIndex+t.colSpan-1,o.columnIndex+o.colSpan-1),s=Math.min(t.rowIndex,o.rowIndex),i=Math.max(t.rowIndex+t.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(){const e=this._cachedNodes;if(null!==e)return e;const n=this.anchor.getNode(),o=this.focus.getNode(),r=t(n,le),l=t(o,le);le(r)||ce(152),le(l)||ce(154);const s=r.getParent();ge(s)||ce(156);const i=s.getParent();bt(i)||ce(157);const c=l.getParents()[1];if(c!==i){if(i.isParentOf(l)){const e=c.getParent();null==e&&ce(159),this.set(this.tableKey,l.getKey(),e.getKey())}else{const e=i.getParent();null==e&&ce(158),this.set(this.tableKey,e.getKey(),l.getKey())}return this.getNodes()}const[a,u,h]=Ke(i,r,l);let d=Math.min(u.startColumn,h.startColumn),g=Math.min(u.startRow,h.startRow),f=Math.max(u.startColumn+u.cell.__colSpan-1,h.startColumn+h.cell.__colSpan-1),p=Math.max(u.startRow+u.cell.__rowSpan-1,h.startRow+h.cell.__rowSpan-1),m=d,S=g,C=d,w=g;function b(e){const{cell:t,startColumn:n,startRow:o}=e;d=Math.min(d,n),g=Math.min(g,o),f=Math.max(f,n+t.__colSpan-1),p=Math.max(p,o+t.__rowSpan-1)}for(;d<m||g<S||f>C||p>w;){if(d<m){const e=w-S,t=m-1;for(let n=0;n<=e;n++)b(a[S+n][t]);m=t}if(g<S){const e=C-m,t=S-1;for(let n=0;n<=e;n++)b(a[t][m+n]);S=t}if(f>C){const e=w-S,t=C+1;for(let n=0;n<=e;n++)b(a[S+n][t]);C=t}if(p>w){const e=C-m,t=w+1;for(let n=0;n<=e;n++)b(a[t][m+n]);w=t}}const y=new Map([[i.getKey(),i]]);let N=null;for(let e=g;e<=p;e++)for(let t=d;t<=f;t++){const{cell:n}=a[e][t],o=n.getParent();ge(o)||ce(160),o!==N&&y.set(o.getKey(),o),y.set(n.getKey(),n);for(const e of De(n))y.set(e.getKey(),e);N=o}const x=Array.from(y.values());return _()||(this._cachedNodes=x),x}getTextContent(){const e=this.getNodes().filter((e=>le(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 We(e){return e instanceof Pe}function Le(){const e=p("root",0,"element"),t=p("root",0,"element");return new Pe("root",e,t)}function De(e){const t=[],n=[e];for(;n.length>0;){const o=n.pop();void 0===o&&ce(112),i(o)&&n.unshift(...o.getChildren()),o!==e&&t.push(o)}return t}function Ie(e,t=b()){const n=C(e);bt(n)||ce(229,e);const o=Ye(n,t.getElementByKey(e));return null===o&&ce(230,e),{tableElement:o,tableNode:n}}class Ue{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.trackTable()}getTable(){return this.table}removeListeners(){this.abortController.abort("removeListeners"),Array.from(this.listenersToRemove).forEach((e=>e())),this.listenersToRemove.clear()}$lookup(){return Ie(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=qe(n,o)}),{editor:this.editor})}));this.editor.getEditorState().read((()=>{const{tableNode:t,tableElement:n}=this.$lookup();this.table=qe(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(),e.update((()=>{const{tableNode:t,tableElement:n}=this.$lookup(),o=qe(t,n);Ge(e,o,null),y(null),e.dispatchCommand(N,void 0)}))}enableHighlightStyle(){const e=this.editor;e.getEditorState().read((()=>{const{tableElement:t}=this.$lookup();n(t,e._config.theme.tableSelection),t.classList.remove("disable-selection"),this.hasHijackedSelectionStyles=!1}),{editor:e})}disableHighlightStyle(){const t=this.editor;t.getEditorState().read((()=>{const{tableElement:n}=this.$lookup();e(n,t._config.theme.tableSelection),this.hasHijackedSelectionStyles=!0}),{editor:t})}updateTableTableSelection(e){if(null!==e&&e.tableKey===this.tableNodeKey){const t=this.editor;this.tableSelection=e,this.isHighlightingCells=!0,this.disableHighlightStyle(),Ge(t,this.table,this.tableSelection)}else null==e?this.clearHighlight():(this.tableNodeKey=e.tableKey,this.updateTableTableSelection(e))}setShouldCheckSelection(){this.shouldCheckSelection=!0}getAndClearShouldCheckSelection(){return!!this.shouldCheckSelection&&(this.shouldCheckSelection=!1,!0)}setFocusCellForSelection(e,t=!1){const n=this.editor;n.update((()=>{const{tableNode:o}=this.$lookup(),r=e.x,l=e.y;if(this.focusCell=e,null!==this.anchorCell){const e=ze(n._window);e&&e.setBaseAndExtent(this.anchorCell.elem,0,this.focusCell.elem,0)}if(this.isHighlightingCells||this.anchorX===r&&this.anchorY===l&&!t){if(r===this.focusX&&l===this.focusY)return}else this.isHighlightingCells=!0,this.disableHighlightStyle();if(this.focusX=r,this.focusY=l,this.isHighlightingCells){const t=x(e.elem);if(null!=this.tableSelection&&null!=this.anchorCellNodeKey&&le(t)&&o.is(it(t))){const e=t.getKey();this.tableSelection=this.tableSelection.clone()||Le(),this.focusCellNodeKey=e,this.tableSelection.set(this.tableNodeKey,this.anchorCellNodeKey,this.focusCellNodeKey),y(this.tableSelection),n.dispatchCommand(N,void 0),Ge(n,this.table,this.tableSelection)}}}))}setAnchorCellForSelection(e){this.isHighlightingCells=!1,this.anchorCell=e,this.anchorX=e.x,this.anchorY=e.y,this.editor.update((()=>{const t=x(e.elem);if(le(t)){const e=t.getKey();this.tableSelection=null!=this.tableSelection?this.tableSelection.clone():Le(),this.anchorCellNodeKey=e}}))}formatCells(e){this.editor.update((()=>{const t=g();We(t)||ce(11);const n=v(),o=n.anchor,r=n.focus,l=t.getNodes().filter(le),s=l[0].getFirstChild(),i=m(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)})),y(t),this.editor.dispatchCommand(N,void 0)}))}clearText(){const e=this.editor;e.update((()=>{const t=C(this.tableNodeKey);if(!bt(t))throw new Error("Expected TableNode.");const n=g();We(n)||ce(11);const o=n.getNodes().filter(le);if(o.length!==this.table.columns*this.table.rows)o.forEach((e=>{if(i(e)){const t=s(),n=d();t.append(n),e.append(t),e.getChildren().forEach((e=>{e!==t&&e.remove()}))}})),Ge(e,this.table,null),y(null),e.dispatchCommand(N,void 0);else{t.selectPrevious(),t.remove();T().selectStart()}}))}}const $e="__lexicalTableSelection",ze=e=>ae?(e||window).getSelection():null;function Ye(e,t){if(!t)return t;const n="TABLE"===t.nodeName?t:e.getDOMSlot(t).element;return"TABLE"!==n.nodeName&&ce(233,t.nodeName),n}function Xe(e,n,r,l){const c=r.getRootElement();if(null===c)throw new Error("No root element.");const u=new Ue(r,e.getKey()),h=r._window||window,p=Ye(e,n);!function(e,t){null!==Je(e)&&ce(205);e[$e]=t}(p,u),u.listenersToRemove.add((()=>function(e,t){Je(e)===t&&delete e[$e]}(p,u)));const m=()=>{const e=()=>{u.isSelecting=!1,h.removeEventListener("mouseup",e),h.removeEventListener("mousemove",t)},t=n=>{setTimeout((()=>{if(1&~n.buttons&&u.isSelecting)return u.isSelecting=!1,h.removeEventListener("mouseup",e),void h.removeEventListener("mousemove",t);const o=je(n.target);null===o||u.anchorX===o.x&&u.anchorY===o.y||(n.preventDefault(),u.setFocusCellForSelection(o))}),0)};return{onMouseMove:t,onMouseUp:e}};p.addEventListener("mousedown",(e=>{setTimeout((()=>{if(0!==e.button)return;if(!h)return;const t=je(e.target);null!==t&&(at(e),u.setAnchorCellForSelection(t));const{onMouseUp:n,onMouseMove:o}=m();u.isSelecting=!0,h.addEventListener("mouseup",n,u.listenerOptions),h.addEventListener("mousemove",o,u.listenerOptions)}),0)}),u.listenerOptions);h.addEventListener("mousedown",(e=>{0===e.button&&r.update((()=>{const t=g(),n=e.target;We(t)&&t.tableKey===u.tableNodeKey&&c.contains(n)&&u.clearHighlight()}))}),u.listenerOptions),u.listenersToRemove.add(r.registerCommand(O,(t=>ct(r,t,"down",e,u)),R)),u.listenersToRemove.add(r.registerCommand(k,(t=>ct(r,t,"up",e,u)),R)),u.listenersToRemove.add(r.registerCommand(E,(t=>ct(r,t,"backward",e,u)),R)),u.listenersToRemove.add(r.registerCommand(F,(t=>ct(r,t,"forward",e,u)),R)),u.listenersToRemove.add(r.registerCommand(M,(e=>{const n=g();if(We(n)){const o=t(n.focus.getNode(),le);if(le(o))return at(e),o.selectEnd(),!0}return!1}),R));[K,A,B].forEach((n=>{u.listenersToRemove.add(r.registerCommand(n,(n=>()=>{const o=g();if(!tt(o,e))return!1;if(We(o))return u.clearText(),!0;if(f(o)){const r=t(o.anchor.getNode(),(e=>le(e)));if(!le(r))return!1;const l=o.anchor.getNode(),s=o.focus.getNode(),c=e.isParentOf(l),a=e.isParentOf(s);if(c&&!a||a&&!c)return u.clearText(),!0;const h=t(o.anchor.getNode(),(e=>i(e))),d=h&&t(h,(e=>i(e)&&le(e.getParent())));if(!i(d)||!i(h))return!1;if(n===A&&null===d.getPreviousSibling())return!0}return!1})(n),H))}));const S=t=>{const n=g();if(!We(n)&&!f(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!!We(n)&&(t&&(t.preventDefault(),t.stopPropagation()),u.clearText(),!0)};function C(t){const n=e.getCordsFromCellNode(t,u.table);return e.getDOMCellFromCordsOrThrow(n.x,n.y,u.table)}return u.listenersToRemove.add(r.registerCommand(P,S,H)),u.listenersToRemove.add(r.registerCommand(W,S,H)),u.listenersToRemove.add(r.registerCommand(L,(e=>{const t=g();if(t){if(!We(t)&&!f(t))return!1;V(r,o(e,ClipboardEvent)?e:null,Z(t));const n=S(e);return f(t)?(t.removeText(),!0):n}return!1}),H)),u.listenersToRemove.add(r.registerCommand(D,(n=>{const o=g();if(!tt(o,e))return!1;if(We(o))return u.formatCells(n),!0;if(f(o)){const e=t(o.anchor.getNode(),(e=>le(e)));if(!le(e))return!1}return!1}),H)),u.listenersToRemove.add(r.registerCommand(I,(t=>{const n=g();if(!We(n)||!tt(n,e))return!1;const o=n.anchor.getNode(),r=n.focus.getNode();if(!le(o)||!le(r))return!1;const[l,s,c]=Ke(e,o,r),a=Math.max(s.startRow,c.startRow),u=Math.max(s.startColumn,c.startColumn),h=Math.min(s.startRow,c.startRow),d=Math.min(s.startColumn,c.startColumn);for(let e=h;e<=a;e++)for(let n=d;n<=u;n++){const o=l[e][n].cell;o.setFormat(t);const r=o.getChildren();for(let e=0;e<r.length;e++){const n=r[e];i(n)&&!n.isInline()&&n.setFormat(t)}}return!0}),H)),u.listenersToRemove.add(r.registerCommand(U,(n=>{const o=g();if(!tt(o,e))return!1;if(We(o))return u.clearHighlight(),!1;if(f(o)){const l=t(o.anchor.getNode(),(e=>le(e)));if(!le(l))return!1;if("string"==typeof n){const t=ht(r,o,e);if(t)return ut(t,e,[d(n)]),!0}}return!1}),H)),l&&u.listenersToRemove.add(r.registerCommand($,(t=>{const n=g();if(!f(n)||!n.isCollapsed()||!tt(n,e))return!1;const o=st(n.anchor.getNode());if(null===o)return!1;at(t);const r=e.getCordsFromCellNode(o,u.table);return Ze(u,e,r.x,r.y,t.shiftKey?"backward":"forward"),!0}),H)),u.listenersToRemove.add(r.registerCommand(z,(t=>e.isSelected()),R)),u.listenersToRemove.add(r.registerCommand(Y,(e=>{const{nodes:n,selection:o}=e,r=o.getStartEndPoints(),l=We(o),i=f(o)&&null!==t(o.anchor.getNode(),(e=>le(e)))&&null!==t(o.focus.getNode(),(e=>le(e)))||l;if(1!==n.length||!bt(n[0])||!i||null===r)return!1;const[c]=r,u=n[0],h=u.getChildren(),d=u.getFirstChildOrThrow().getChildrenSize(),g=u.getChildrenSize(),p=t(c.getNode(),(e=>le(e))),m=p&&t(p,(e=>ge(e))),S=m&&t(m,(e=>bt(e)));if(!le(p)||!ge(m)||!bt(S))return!1;const C=m.getIndexWithinParent(),_=Math.min(S.getChildrenSize()-1,C+g-1),w=p.getIndexWithinParent(),b=Math.min(m.getChildrenSize()-1,w+d-1),y=Math.min(w,b),N=Math.min(C,_),x=Math.max(w,b),v=Math.max(C,_),T=S.getChildren();let O=0;for(let e=N;e<=v;e++){const t=T[e];if(!ge(t))return!1;const n=h[O];if(!ge(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(!le(t))return!1;const n=r[l];if(!le(n))return!1;const i=t.getChildren();n.getChildren().forEach((e=>{if(a(e)){s().append(e),t.append(e)}else t.append(e)})),i.forEach((e=>e.remove())),l++}O++}return!0}),H)),u.listenersToRemove.add(r.registerCommand(N,(()=>{const n=g(),o=X();if(u.getAndClearShouldCheckSelection()&&f(o)&&f(n)&&n.isCollapsed()){const o=n.anchor.getNode(),r=e.getFirstChild(),l=st(o);if(null!==l&&ge(r)){const n=r.getFirstChild();if(le(n)&&e.is(t(l,(t=>t.is(e)||t.is(n)))))return n.selectStart(),!0}}if(f(n)){const{anchor:t,focus:o}=n,l=t.getNode(),s=o.getNode(),i=st(l),c=st(s),a=!(!i||!e.is(it(i))),d=!(!c||!e.is(it(c))),g=a!==d,f=a&&d,p=n.isBackward();if(g){const t=n.clone();if(d){const[n]=Ke(e,c,c),o=n[0][0].cell,r=n[n.length-1].at(-1).cell;t.focus.set(p?o.getKey():r.getKey(),p?o.getChildrenSize():r.getChildrenSize(),"element")}else if(a){const[n]=Ke(e,i,i),o=n[0][0].cell,r=n[n.length-1].at(-1).cell;t.anchor.set(p?r.getKey():o.getKey(),p?r.getChildrenSize():0,"element")}y(t),Ve(r,u)}else f&&(i.is(c)||(u.setAnchorCellForSelection(C(i)),u.setFocusCellForSelection(C(c),!0),u.isSelecting||setTimeout((()=>{const{onMouseUp:e,onMouseMove:t}=m();u.isSelecting=!0,h.addEventListener("mouseup",e),h.addEventListener("mousemove",t)}),0)))}else if(n&&We(n)&&n.is(o)&&n.tableKey===e.getKey()){const t=ze(r._window);if(t&&t.anchorNode&&t.focusNode){const o=x(t.focusNode),l=o&&!e.is(it(o)),s=x(t.anchorNode),i=s&&e.is(it(s));if(l&&i&&t.rangeCount>0){const o=J(t,r);o&&(o.anchor.set(e.getKey(),n.isBackward()?e.getChildrenSize():0,"element"),t.removeAllRanges(),y(o))}}}return n&&!n.is(o)&&(We(n)||We(o))&&u.tableSelection&&!u.tableSelection.is(o)?(We(n)&&n.tableKey===u.tableNodeKey?u.updateTableTableSelection(n):!We(n)&&We(o)&&o.tableKey===u.tableNodeKey&&u.updateTableTableSelection(null),!1):(u.hasHijackedSelectionStyles&&!e.isSelected()?function(e,t){t.enableHighlightStyle(),Qe(t.table,(t=>{const n=t.elem;t.highlighted=!1,lt(e,t),n.getAttribute("style")||n.removeAttribute("style")}))}(r,u):!u.hasHijackedSelectionStyles&&e.isSelected()&&Ve(r,u),!1)}),H)),u.listenersToRemove.add(r.registerCommand(j,(()=>{const t=g();if(!f(t)||!t.isCollapsed()||!tt(t,e))return!1;const n=ht(r,t,e);return!!n&&(ut(n,e),!0)}),H)),u}function Je(e){return e[$e]||null}function je(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 qe(e,t){const n=[],o={columns:0,domRows:n,rows:0};let r=Ye(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 Ge(e,t,n){const o=new Set(n?n.getNodes():[]);Qe(t,((t,n)=>{const r=t.elem;o.has(n)?(t.highlighted=!0,rt(e,t)):(t.highlighted=!1,lt(e,t),r.getAttribute("style")||r.removeAttribute("style"))}))}function Qe(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=x(r.elem);null!==l&&t(r,l,{x:n,y:e})}}}function Ve(e,t){t.disableHighlightStyle(),Qe(t.table,(t=>{t.highlighted=!0,rt(e,t)}))}const Ze=(e,t,n,o,r)=>{const l="forward"===r;switch(r){case"backward":case"forward":return n!==(l?e.table.columns-1:0)?nt(t.getCellNodeFromCordsOrThrow(n+(l?1:-1),o,e.table),l):o!==(l?e.table.rows-1:0)?nt(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?nt(t.getCellNodeFromCordsOrThrow(n,o-1,e.table),!1):t.selectPrevious(),!0;case"down":return o!==e.table.rows-1?nt(t.getCellNodeFromCordsOrThrow(n,o+1,e.table),!0):t.selectNext(),!0;default:return!1}},et=(e,t,n,o,r)=>{const l="forward"===r;switch(r){case"backward":case"forward":return n!==(l?e.table.columns-1:0)&&e.setFocusCellForSelection(t.getDOMCellFromCordsOrThrow(n+(l?1:-1),o,e.table)),!0;case"up":return 0!==o&&(e.setFocusCellForSelection(t.getDOMCellFromCordsOrThrow(n,o-1,e.table)),!0);case"down":return o!==e.table.rows-1&&(e.setFocusCellForSelection(t.getDOMCellFromCordsOrThrow(n,o+1,e.table)),!0);default:return!1}};function tt(e,t){if(f(e)||We(e)){const n=t.isParentOf(e.anchor.getNode()),o=t.isParentOf(e.focus.getNode());return n&&o}return!1}function nt(e,t){t?e.selectStart():e.selectEnd()}const ot="172,206,247";function rt(e,t){const n=t.elem,o=x(n);le(o)||ce(131);null===o.getBackgroundColor()?n.style.setProperty("background-color",`rgb(${ot})`):n.style.setProperty("background-image",`linear-gradient(to right, rgba(${ot},0.85), rgba(${ot},0.85))`),n.style.setProperty("caret-color","transparent")}function lt(e,t){const n=t.elem,o=x(n);le(o)||ce(131);null===o.getBackgroundColor()&&n.style.removeProperty("background-color"),n.style.removeProperty("background-image"),n.style.removeProperty("caret-color")}function st(e){const n=t(e,le);return le(n)?n:null}function it(e){const n=t(e,bt);return bt(n)?n:null}function ct(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=g();if(!tt(s,r)){if(f(s)){if(s.isCollapsed()&&"backward"===o){const e=s.anchor.type,o=s.anchor.offset;if("element"!==e&&("text"!==e||0!==o))return!1;const r=s.anchor.getNode();if(!r)return!1;const l=t(r,(e=>i(e)&&!e.isInline()));if(!l)return!1;const c=l.getPreviousSibling();return!(!c||!bt(c))&&(at(n),c.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=>bt(e)));if(le(l)&&(l=t(l,bt)),l!==r)return!1;if(!l)return!1;const c="down"===o?l.getNextSibling():l.getPreviousSibling();if(!c)return!1;let u=0;"up"===o&&i(c)&&(u=c.getChildrenSize());let h=c;if("up"===o&&i(c)){const e=c.getLastChild();h=e||c,u=a(h)?h.getTextContentSize():0}const d=s.clone();return d.focus.set(h.getKey(),u,a(h)?"text":"element"),y(d),at(n),!0}if(q(e)){const e="up"===o?s.getNodes()[s.getNodes().length-1]:s.getNodes()[0];if(e){const n=t(e,le);if(n&&r.isParentOf(n)){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=>i(e)&&!e.isInline()));if(le(r)&&(r=t(r,bt)),!r)return!1;const c="down"===o?r.getNextSibling():r.getPreviousSibling();if(bt(c)&&l.tableNodeKey===c.getKey()){const e=c.getFirstDescendant(),t=c.getLastDescendant();if(!e||!t)return!1;const[r]=Be(e),[l]=Be(t),i=s.clone();return i.focus.set(("up"===o?r:l).getKey(),"up"===o?0:l.getChildrenSize(),"element"),at(n),y(i),!0}}}}return"down"===o&&pt(e)&&l.setShouldCheckSelection(),!1}if(f(s)&&s.isCollapsed()){const{anchor:c,focus:a}=s,u=t(c.getNode(),le),h=t(a.getNode(),le);if(!le(u)||!u.is(h))return!1;const d=it(u);if(d!==r&&null!=d){const t=Ye(d,e.getElementByKey(d.getKey()));if(null!=t)return l.table=qe(d,t),ct(e,n,o,d,l)}if("backward"===o||"forward"===o){const e=c.type,l=c.offset,a=c.getNode();if(!a)return!1;const u=s.getNodes();return(1!==u.length||!G(u[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=>i(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){const l=t(n,le);if(!le(l))return!1;const[s,c]=Ke(o,l,l);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,c,r))return!1;const a=function(e,n,o){const r=t(e,(e=>i(e)&&!e.isInline()));if(!r)return;const l="backward"===n?r.getPreviousSibling():r.getNextSibling();return l&&bt(l)?l:"backward"===n?o.getPreviousSibling():o.getNextSibling()}(n,r,o);if(!a||bt(a))return!1;at(e),"backward"===r?a.selectEnd():a.selectStart();return!0}(n,a,r,o))}const g=e.getElementByKey(u.__key),f=e.getElementByKey(c.key);if(null==f||null==g)return!1;let p;if("element"===c.type)p=f.getBoundingClientRect();else{const e=window.getSelection();if(null===e||0===e.rangeCount)return!1;p=e.getRangeAt(0).getBoundingClientRect()}const m="up"===o?u.getFirstChild():u.getLastChild();if(null==m)return!1;const S=e.getElementByKey(m.__key);if(null==S)return!1;const C=S.getBoundingClientRect();if("up"===o?C.top>p.top-p.height:p.bottom+p.height>C.bottom){at(n);const e=r.getCordsFromCellNode(u,l.table);if(!n.shiftKey)return Ze(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(We(s)){const{anchor:i,focus:c}=s,a=t(i.getNode(),le),u=t(c.getNode(),le),[h]=s.getNodes();bt(h)||ce(234);const d=Ye(h,e.getElementByKey(h.getKey()));if(!le(a)||!le(u)||!bt(h)||null==d)return!1;l.updateTableTableSelection(s);const g=qe(h,d),f=r.getCordsFromCellNode(a,g),p=r.getDOMCellFromCordsOrThrow(f.x,f.y,g);if(l.setAnchorCellForSelection(p),at(n),n.shiftKey){const e=r.getCordsFromCellNode(u,g);return et(l,h,e.x,e.y,o)}return u.selectEnd(),!0}return!1}function at(e){e.preventDefault(),e.stopImmediatePropagation(),e.stopPropagation()}function ut(e,t,n){const o=s();"first"===e?t.insertBefore(o):t.insertAfter(o),o.append(...n||[]),o.selectEnd()}function ht(e,n,o){const r=o.getParent();if(!r)return;const l=window.getSelection();if(!l)return;const s=l.anchorNode,i=e.getElementByKey(r.getKey()),c=Ye(o,e.getElementByKey(o.getKey()));if(!s||!i||!c||!i.contains(s)||c.contains(s))return;const a=t(n.anchor.getNode(),(e=>le(e)));if(!a)return;const u=t(a,(e=>bt(e)));if(!bt(u)||!u.is(o))return;const[h,d]=Ke(o,a,a),g=h[0][0],f=h[h.length-1][h[0].length-1],{startRow:p,startColumn:m}=d,S=p===g.startRow&&m===g.startColumn,C=p===f.startRow&&m===f.startColumn;return S?"first":C?"last":void 0}function dt(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 gt(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 ft=new WeakSet;function pt(e=b()){return ft.has(e)}function mt(e,t){t?ft.add(e):ft.delete(e)}class St 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 St(e.__key)}afterCloneFrom(e){super.afterCloneFrom(e),this.__colWidths=e.__colWidths,this.__rowStriping=e.__rowStriping}static importDOM(){return{table:e=>({conversion:_t,priority:1})}}static importJSON(e){const t=wt();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}}getDOMSlot(e){const t="TABLE"!==e.nodeName&&e.querySelector("table")||e;return"TABLE"!==t.nodeName&&ce(231),super.getDOMSlot(t).withAfter(t.querySelector("colgroup"))}createDOM(t,n){const o=document.createElement("table"),r=document.createElement("colgroup");if(o.appendChild(r),dt(o,0,this.getColumnCount(),this.getColWidths()),Q(r),e(o,t.theme.table),this.__rowStriping&&gt(o,t,!0),pt(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&&gt(t,n,this.__rowStriping),dt(t,0,this.getColumnCount(),this.getColWidths()),!1}exportDOM(e){return{...super.exportDOM(e),after:e=>{if(e&&r(e)&&"TABLE"!==e.nodeName&&(e=e.querySelector("table")),!e||!r(e))return null;const t=e.querySelectorAll(":scope > tr");if(t.length>0){const n=document.createElement("tbody");n.append(...t),e.append(n)}return e}}}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)continue;const r=n.findIndex((t=>{if(!t)return;const{elem:n}=t;return x(n)===e}));if(-1!==r)return{x:r,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=x(o.elem);return le(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=>{le(e)&&(t+=e.getColSpan())})),t}}function Ct(e,t){const n=e.getElementByKey(t.getKey());return null===n&&ce(232),qe(t,n)}function _t(e){const t=wt();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||!ee.test(n)){e=void 0;break}e.push(parseFloat(n))}e&&t.setColWidths(e)}return{node:t}}function wt(){return u(new St)}function bt(e){return e instanceof St}export{Ke as $computeTableMap,Ae as $computeTableMapSkipCellCheck,re as $createTableCellNode,wt as $createTableNode,fe as $createTableNodeWithDimensions,de as $createTableRowNode,Le as $createTableSelection,Oe as $deleteTableColumn,ke as $deleteTableColumn__EXPERIMENTAL,Re as $deleteTableRow__EXPERIMENTAL,st as $findCellNode,it as $findTableNode,Ct as $getElementForTableNode,Be as $getNodeTriplet,Ie as $getTableAndElementByKey,pe as $getTableCellNodeFromLexicalNode,He as $getTableCellNodeRect,_e as $getTableColumnIndexFromTableCellNode,Se as $getTableNodeFromLexicalNodeOrThrow,Ce as $getTableRowIndexFromTableCellNode,me as $getTableRowNodeFromTableCellNodeOrThrow,ve as $insertTableColumn,Te as $insertTableColumn__EXPERIMENTAL,ye as $insertTableRow,xe as $insertTableRow__EXPERIMENTAL,pt as $isScrollableTablesActive,le as $isTableCellNode,bt as $isTableNode,ge as $isTableRowNode,We as $isTableSelection,be as $removeTableRowAtIndex,Me as $unmergeCell,se as INSERT_TABLE_COMMAND,te as TableCellHeaderStates,ne as TableCellNode,St as TableNode,Ue as TableObserver,ue as TableRowNode,Xe as applyTableHandlers,je as getDOMCellFromTarget,Ye as getTableElement,Je as getTableObserverFromTableElement,mt as setScrollableTablesActive};
9
+ import{addClassNamesToElement as e,$findMatchingParent as t,removeClassNamesFromElement as n,objectKlassEquals as o,isHTMLElement as r}from"@lexical/utils";import{ElementNode as l,$createParagraphNode as s,$isElementNode as i,$isLineBreakNode as c,$isTextNode as a,$applyNodeReplacement as u,createCommand as h,$createTextNode as d,$getSelection as g,$isRangeSelection as f,$createPoint as m,$isParagraphNode as p,$normalizeSelection__EXPERIMENTAL as C,isCurrentlyReadOnlyMode as S,TEXT_TYPE_TO_FORMAT as _,$getNodeByKey as w,$getEditor as b,$setSelection as y,SELECTION_CHANGE_COMMAND as N,getDOMSelection as x,$getNearestNodeFromDOMNode 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 H,SELECTION_INSERT_CLIPBOARD_NODES_COMMAND as B,$getPreviousSelection as W,$createRangeSelectionFromDom as L,INSERT_PARAGRAPH_COMMAND as P,$isRootOrShadowRoot as D,$isDecoratorNode as I,KEY_ARROW_DOWN_COMMAND as U,KEY_ARROW_UP_COMMAND as z,KEY_ARROW_LEFT_COMMAND as Y,KEY_ARROW_RIGHT_COMMAND as X,DELETE_WORD_COMMAND as J,DELETE_LINE_COMMAND as j,DELETE_CHARACTER_COMMAND as q,KEY_BACKSPACE_COMMAND as V,KEY_DELETE_COMMAND as G,setDOMUnmanaged as Q}from"lexical";import{copyToClipboard as Z,$getClipboardDataFromSelection as ee}from"@lexical/clipboard";const te=/^(\d+(?:\.\d+)?)px$/,ne={BOTH:3,COLUMN:2,NO_STATUS:0,ROW:1};class oe extends l{static getType(){return"tablecell"}static clone(e){return new oe(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:re,priority:0}),th:e=>({conversion:re,priority:0})}}static importJSON(e){const t=e.colSpan||1,n=e.rowSpan||1;return le(e.headerState,t,e.width||void 0).setRowSpan(n).setBackgroundColor(e.backgroundColor||null)}constructor(e=ne.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){const e=t.element;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=ne.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!==ne.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 re(e){const t=e,n=e.nodeName.toLowerCase();let o;te.test(t.style.width)&&(o=parseFloat(t.style.width));const r=le("th"===n?ne.ROW:ne.NO_STATUS,t.colSpan,o);r.__rowSpan=t.rowSpan;const l=t.style.backgroundColor;""!==l&&(r.__backgroundColor=l);const u=t.style,h=(u&&u.textDecoration||"").split(" "),d="700"===u.fontWeight||"bold"===u.fontWeight,g=h.includes("line-through"),f="italic"===u.fontStyle,m=h.includes("underline");return{after:e=>(0===e.length&&e.push(s()),e),forChild:(e,t)=>{if(se(t)&&!i(e)){const t=s();return c(e)&&"\n"===e.getTextContent()?null:(a(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 le(e,t=1,n){return u(new oe(e,t,n))}function se(e){return e instanceof oe}const ie=h("INSERT_TABLE_COMMAND");function ce(e){return e&&e.__esModule&&Object.prototype.hasOwnProperty.call(e,"default")?e.default:e}var ae=ce((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 ue="undefined"!=typeof window&&void 0!==window.document&&void 0!==window.document.createElement,he=ue&&"documentMode"in document?document.documentMode:null,de=ue&&/^(?!.*Seamonkey)(?=.*Firefox).*/i.test(navigator.userAgent);ue&&"InputEvent"in window&&!he&&new window.InputEvent("input");class ge extends l{static getType(){return"tablerow"}static clone(e){return new ge(e.__height,e.__key)}static importDOM(){return{tr:e=>({conversion:fe,priority:0})}}static importJSON(e){return me(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}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 fe(e){const t=e;let n;return te.test(t.style.height)&&(n=parseFloat(t.style.height)),{node:me(n)}}function me(e){return u(new ge(e))}function pe(e){return e instanceof ge}function Ce(e,t,n=!0){const o=Et();for(let r=0;r<e;r++){const e=me();for(let o=0;o<t;o++){let t=ne.NO_STATUS;"object"==typeof n?(0===r&&n.rows&&(t|=ne.ROW),0===o&&n.columns&&(t|=ne.COLUMN)):n&&(0===r&&(t|=ne.ROW),0===o&&(t|=ne.COLUMN));const l=le(t),i=s();i.append(d()),l.append(i),e.append(l)}o.append(e)}return o}function Se(e){const n=t(e,(e=>se(e)));return se(n)?n:null}function _e(e){const n=t(e,(e=>pe(e)));if(pe(n))return n;throw new Error("Expected table cell to be inside of table row.")}function we(e){const n=t(e,(e=>Mt(e)));if(Mt(n))return n;throw new Error("Expected table cell to be inside of table.")}function be(e){const t=_e(e);return we(t).getChildren().findIndex((e=>e.is(t)))}function ye(e){return _e(e).getChildren().findIndex((t=>t.is(e)))}function Ne(e,t){const n=we(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 xe(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 Te(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 i=l[t];if(!pe(i))throw new Error("Row before insertion index does not exist.");for(let e=0;e<o;e++){const e=i.getChildren(),t=e.length,o=me();for(let n=0;n<t;n++){const t=e[n];se(t)||ae(12);const{above:l,below:i}=Ne(t,r);let c=ne.NO_STATUS;const a=l&&l.getWidth()||i&&i.getWidth()||void 0;(l&&l.hasHeaderState(ne.COLUMN)||i&&i.hasHeaderState(ne.COLUMN))&&(c|=ne.COLUMN);const u=le(c,1,a);u.append(s()),o.append(u)}n?i.insertAfter(o):i.insertBefore(o)}return e}const ve=(e,t)=>e===ne.BOTH||e===t?t:ne.NO_STATUS;function Re(e=!0){const t=g();f(t)||Ue(t)||ae(188);const n=t.focus.getNode(),[o,,r]=We(n),[l,i]=He(r,o,o),c=l[0].length,{startRow:a}=i;let u=null;if(e){const e=a+o.__rowSpan-1,t=l[e],n=me();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=ve(e,ne.COLUMN);n.append(le(r).append(s()))}else r.setRowSpan(r.__rowSpan+1)}const i=r.getChildAtIndex(e);pe(i)||ae(145),i.insertAfter(n),u=n}else{const e=l[a],t=me();for(let n=0;n<c;n++){const{cell:o,startRow:r}=e[n];if(r===a){const o=e[n].cell.__headerState,r=ve(o,ne.COLUMN);t.append(le(r).append(s()))}else o.setRowSpan(o.__rowSpan+1)}const n=r.getChildAtIndex(a);pe(n)||ae(145),n.insertBefore(t),u=t}return u}function Oe(e,t,n=!0,o,r){const l=e.getChildren(),i=[];for(let e=0;e<l.length;e++){const n=l[e];if(pe(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];se(o)||ae(12);const{left:l,right:c}=Ne(o,r);let a=ne.NO_STATUS;(l&&l.hasHeaderState(ne.ROW)||c&&c.hasHeaderState(ne.ROW))&&(a|=ne.ROW);const u=le(a);u.append(s()),i.push({newTableCell:u,targetCell:o})}}return i.forEach((({newTableCell:e,targetCell:t})=>{n?t.insertAfter(e):t.insertBefore(e)})),e}function Fe(e=!0){const t=g();f(t)||Ue(t)||ae(188);const n=t.anchor.getNode(),o=t.focus.getNode(),[r]=We(n),[l,,i]=We(o),[c,a,u]=He(i,l,r),h=c.length,d=e?Math.max(a.startColumn,u.startColumn):Math.min(a.startColumn,u.startColumn),m=e?d+l.__colSpan-1:d-1,p=i.getFirstChild();pe(p)||ae(120);let C=null;function S(e=ne.NO_STATUS){const t=le(e).append(s());return null===C&&(C=t),t}let _=p;e:for(let e=0;e<h;e++){if(0!==e){const e=_.getNextSibling();pe(e)||ae(121),_=e}const t=c[e],n=t[m<0?0:m].cell.__headerState,o=ve(n,ne.ROW);if(m<0){Ae(_,S(o));continue}const{cell:r,startColumn:l,startRow:s}=t[m];if(l+r.__colSpan-1<=m){let n=r,l=s,i=m;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&&Me(C);const w=i.getColWidths();if(w){const e=[...w],t=m<0?0:m,n=e[t];e.splice(t,0,n),i.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(pe(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 Ke(){const e=g();f(e)||Ue(e)||ae(188);const[t,n]=e.isBackward()?[e.focus.getNode(),e.anchor.getNode()]:[e.anchor.getNode(),e.focus.getNode()],[o,,r]=We(t),[l]=We(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,m=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&&ae(122),0===t)Ae(p,n);else{const{cell:e}=m[t-1];e.insertAfter(n)}}const t=r.getChildAtIndex(e);pe(t)||ae(206,String(e)),t.remove()}if(void 0!==m){const{cell:e}=m[0];Me(e)}else{const e=s[a-1],{cell:t}=e[0];Me(t)}}function Ee(){const e=g();f(e)||Ue(e)||ae(188);const t=e.anchor.getNode(),n=e.focus.getNode(),[o,,r]=We(t),[l]=We(n),[s,i,c]=He(r,o,l),{startColumn:a}=i,{startRow:u,startColumn:h}=c,d=Math.min(a,h),m=Math.max(a+o.__colSpan-1,h+l.__colSpan-1),p=m-d+1;if(s[0].length===m-d+1)return r.selectPrevious(),void r.remove();const C=s.length;for(let e=0;e<C;e++)for(let t=d;t<=m;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>m){if(t===m){const e=m-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}=_;Me(e)}else{const e=h<a?S[h-1]:S[a-1],{cell:t}=e;Me(t)}const w=r.getColWidths();if(w){const e=[...w];e.splice(d,p),r.setColWidths(e)}}function Me(e){const t=e.getFirstDescendant();null==t?e.selectStart():t.getParentOrThrow().selectStart()}function Ae(e,t){const n=e.getFirstChild();null!==n?n.insertBefore(t):e.append(t)}function $e(){const e=g();f(e)||Ue(e)||ae(188);const t=e.anchor.getNode(),[n,o,r]=We(t),l=n.__colSpan,i=n.__rowSpan;if(1===l&&1===i)return;const[c,a]=He(r,n,n),{startColumn:u,startRow:h}=a,d=n.__headerState&ne.COLUMN,m=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&ne.ROW,C=Array.from({length:i},((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(le(m[e]|C[0]).append(s()));n.setColSpan(1)}if(i>1){let e;for(let t=1;t<i;t++){const n=h+t,r=c[n];e=(e||o).getNextSibling(),pe(e)||ae(125);let i=null;for(let e=0;e<u;e++){const t=r[e],o=t.cell;t.startRow===n&&(i=o),o.__colSpan>1&&(e+=o.__colSpan-1)}if(null===i)for(let n=l-1;n>=0;n--)Ae(e,le(m[n]|C[t]).append(s()));else for(let e=l-1;e>=0;e--)i.insertAfter(le(m[e]|C[t]).append(s()))}n.setRowSpan(1)}}function He(e,t,n){const[o,r,l]=Be(e,t,n);return null===r&&ae(207),null===l&&ae(208),[o,r,l]}function Be(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];pe(o)||ae(209);for(let c=o.getFirstChild(),a=0;null!=c;c=c.getNextSibling()){se(c)||ae(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 We(e){let n;if(e instanceof oe)n=e;else if("__type"in e){const o=t(e,se);se(o)||ae(148),n=o}else{const o=t(e.getNode(),se);se(o)||ae(148),n=o}const o=n.getParent();pe(o)||ae(149);const r=o.getParent();return Mt(r)||ae(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 Pe(e){const[t,,n]=We(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 De(e){const[[n,o,r,l],[s,i,c,a]]=["anchor","focus"].map((n=>{const o=e[n].getNode(),r=t(o,se);se(r)||ae(238,n,o.getKey(),o.getType());const l=r.getParent();pe(l)||ae(239,n);const s=l.getParent();return Mt(s)||ae(240,n),[o,r,l,s]}));return l.is(a)||ae(241),{anchorCell:o,anchorNode:n,anchorRow:r,anchorTable:l,focusCell:i,focusNode:s,focusRow:c,focusTable:a}}class Ie{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 Ue(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 Ie(this.tableKey,m(this.anchor.key,this.anchor.offset,this.anchor.type),m(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(se).forEach((e=>{const n=e.getFirstChild();p(n)&&(t|=n.getTextFormat())}));const n=_[e];return!!(t&n)}insertNodes(e){const t=this.focus.getNode();i(t)||ae(151);C(t.select(0,t.getChildrenSize())).insertNodes(e)}getShape(){const{anchorCell:e,focusCell:t}=De(this),n=Pe(e);null===n&&ae(153);const o=Pe(t);null===o&&ae(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}=De(this),r=o.getParents()[1];if(r!==t){if(t.isParentOf(o)){const e=r.getParent();null==e&&ae(159),this.set(this.tableKey,o.getKey(),e.getKey())}else{const e=t.getParent();null==e&&ae(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();pe(o)||ae(160),o!==g&&(d.set(o.getKey(),o),g=o),d.has(n.getKey())||Ye(n,(e=>{d.set(e.getKey(),e)}))}const f=Array.from(d.values());return S()||(this._cachedNodes=f),f}getTextContent(){const e=this.getNodes().filter((e=>se(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 Ue(e){return e instanceof Ie}function ze(){const e=m("root",0,"element"),t=m("root",0,"element");return new Ie("root",e,t)}function Ye(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)&&i(o)&&n.push(o.getChildren())}}function Xe(e,t=b()){const n=w(e);Mt(n)||ae(231,e);const o=qe(n,t.getElementByKey(e));return null===o&&ae(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=rt(n,o)}),{editor:this.editor})}));this.editor.getEditorState().read((()=>{const{tableNode:t,tableElement:n}=this.$lookup();this.table=rt(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();lt(e,rt(t,n),null),null!==g()&&(y(null),e.dispatchCommand(N,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&&ae(233,e.tableKey,this.tableNodeKey);const t=this.editor;this.tableSelection=e,this.isHighlightingCells=!0,this.$disableHighlightStyle(),this.updateDOMSelection(),lt(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=x(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=T(e.elem);if(null!=this.tableSelection&&null!=this.anchorCellNodeKey&&se(t)&&o.is(St(t)))return this.focusCellNodeKey=t.getKey(),this.tableSelection=function(e,t,n){e.getKey(),t.getKey(),n.getKey();const o=g(),r=Ue(o)?o.clone():ze();return r.set(e.getKey(),t.getKey(),n.getKey()),r}(o,this.$getAnchorTableCellOrThrow(),t),y(this.tableSelection),n.dispatchCommand(N,void 0),lt(n,this.table,this.tableSelection),!0}return!1}$getAnchorTableCell(){return this.anchorCellNodeKey?w(this.anchorCellNodeKey):null}$getAnchorTableCellOrThrow(){const e=this.$getAnchorTableCell();return null===e&&ae(234),e}$getFocusTableCell(){return this.focusCellNodeKey?w(this.focusCellNodeKey):null}$getFocusTableCellOrThrow(){const e=this.$getFocusTableCell();return null===e&&ae(235),e}$setAnchorCellForSelection(e){this.isHighlightingCells=!1,this.anchorCell=e,this.anchorX=e.x,this.anchorY=e.y;const t=T(e.elem);if(se(t)){const e=t.getKey();this.tableSelection=null!=this.tableSelection?this.tableSelection.clone():ze(),this.anchorCellNodeKey=e}}$formatCells(e){const t=g();Ue(t)||ae(236);const n=v(),o=n.anchor,r=n.focus,l=t.getNodes().filter(se);l.length>0||ae(237);const s=l[0].getFirstChild(),i=p(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)})),y(t),this.editor.dispatchCommand(N,void 0)}$clearText(){const{editor:e}=this,t=w(this.tableNodeKey);if(!Mt(t))throw new Error("Expected TableNode.");const n=g();Ue(n)||ae(11);const o=n.getNodes().filter(se);if(o.length!==this.table.columns*this.table.rows)o.forEach((e=>{if(i(e)){const t=s(),n=d();t.append(n),e.append(t),e.getChildren().forEach((e=>{e!==t&&e.remove()}))}})),lt(e,this.table,null),y(null),e.dispatchCommand(N,void 0);else{t.selectPrevious(),t.remove();R().selectStart()}}}const je="__lexicalTableSelection";function qe(e,t){if(!t)return t;const n="TABLE"===t.nodeName?t:e.getDOMSlot(t).element;return"TABLE"!==n.nodeName&&ae(245,t.nodeName),n}function Ve(e){return e._window}function Ge(e,t){for(let n=t,o=null;null!==n;n=n.getParent()){if(e.is(n))return o;se(n)&&(o=n)}return null}const Qe=[[U,"down"],[z,"up"],[Y,"backward"],[X,"forward"]],Ze=[J,j,q],et=[V,G];function tt(e,n,r,l){const c=r.getRootElement(),u=Ve(r);null!==c&&null!==u||ae(246);const h=new Je(r,e.getKey()),m=qe(e,n);!function(e,t){null!==nt(e)&&ae(205);e[je]=t}(m,h),h.listenersToRemove.add((()=>function(e,t){nt(e)===t&&delete e[je]}(m,h)));m.addEventListener("mousedown",(t=>{if(0!==t.button)return;if(!u)return;const n=ot(t.target);null!==n&&r.update((()=>{const o=W();if(de&&t.shiftKey&&gt(o,e)&&(f(o)||Ue(o))){const r=o.anchor.getNode(),l=Ge(e,o.anchor.getNode());if(l)h.$setAnchorCellForSelection(Nt(h,l)),h.$setFocusCellForSelection(n),wt(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,u.removeEventListener("mouseup",e),u.removeEventListener("mousemove",t)},t=n=>{if(1&~n.buttons&&h.isSelecting)return h.isSelecting=!1,u.removeEventListener("mouseup",e),void u.removeEventListener("mousemove",t);const o=!m.contains(n.target);let l=null;if(o){for(const e of document.elementsFromPoint(n.clientX,n.clientY))if(l=m.contains(e)?ot(e):null,l)break}else l=ot(n.target);!l||null!==h.focusCell&&l.elem===h.focusCell.elem||(h.setNextFocus({focusCell:l,override:o}),r.dispatchCommand(N,void 0))};h.isSelecting=!0,u.addEventListener("mouseup",e,h.listenerOptions),u.addEventListener("mousemove",t,h.listenerOptions)})()}),h.listenerOptions);u.addEventListener("mousedown",(e=>{0===e.button&&r.update((()=>{const t=g(),n=e.target;Ue(t)&&t.tableKey===h.tableNodeKey&&c.contains(n)&&h.$clearHighlight()}))}),h.listenerOptions);for(const[t,n]of Qe)h.listenersToRemove.add(r.registerCommand(t,(t=>_t(r,t,n,e,h)),O));h.listenersToRemove.add(r.registerCommand(F,(t=>{const n=g();if(Ue(n)){const o=Ge(e,n.focus.getNode());if(null!==o)return wt(t),o.selectEnd(),!0}return!1}),O));const p=n=>()=>{const o=g();if(!gt(o,e))return!1;if(Ue(o))return h.$clearText(),!0;if(f(o)){if(!se(Ge(e,o.anchor.getNode())))return!1;const r=o.anchor.getNode(),l=o.focus.getNode(),s=e.isParentOf(r),c=e.isParentOf(l);if(s&&!c||c&&!s)return h.$clearText(),!0;const a=t(o.anchor.getNode(),(e=>i(e))),u=a&&t(a,(e=>i(e)&&se(e.getParent())));if(!i(u)||!i(a))return!1;if(n===j&&null===u.getPreviousSibling())return!0}return!1};for(const e of Ze)h.listenersToRemove.add(r.registerCommand(e,p(e),k));const C=t=>{const n=g();if(!Ue(n)&&!f(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!!Ue(n)&&(t&&(t.preventDefault(),t.stopPropagation()),h.$clearText(),!0)};for(const e of et)h.listenersToRemove.add(r.registerCommand(e,C,k));return h.listenersToRemove.add(r.registerCommand(K,(e=>{const t=g();if(t){if(!Ue(t)&&!f(t))return!1;Z(r,o(e,ClipboardEvent)?e:null,ee(t));const n=C(e);return f(t)?(t.removeText(),!0):n}return!1}),k)),h.listenersToRemove.add(r.registerCommand(E,(n=>{const o=g();if(!gt(o,e))return!1;if(Ue(o))return h.$formatCells(n),!0;if(f(o)){const e=t(o.anchor.getNode(),(e=>se(e)));if(!se(e))return!1}return!1}),k)),h.listenersToRemove.add(r.registerCommand(M,(t=>{const n=g();if(!Ue(n)||!gt(n,e))return!1;const o=n.anchor.getNode(),r=n.focus.getNode();if(!se(o)||!se(r))return!1;const[l,s,c]=He(e,o,r),a=Math.max(s.startRow+s.cell.__rowSpan-1,c.startRow+c.cell.__rowSpan-1),u=Math.max(s.startColumn+s.cell.__colSpan-1,c.startColumn+c.cell.__colSpan-1),h=Math.min(s.startRow,c.startRow),d=Math.min(s.startColumn,c.startColumn),f=new Set;for(let e=h;e<=a;e++)for(let n=d;n<=u;n++){const o=l[e][n].cell;if(f.has(o))continue;f.add(o),o.setFormat(t);const r=o.getChildren();for(let e=0;e<r.length;e++){const n=r[e];i(n)&&!n.isInline()&&n.setFormat(t)}}return!0}),k)),h.listenersToRemove.add(r.registerCommand(A,(n=>{const o=g();if(!gt(o,e))return!1;if(Ue(o))return h.$clearHighlight(),!1;if(f(o)){const l=t(o.anchor.getNode(),(e=>se(e)));if(!se(l))return!1;if("string"==typeof n){const t=yt(r,o,e);if(t)return bt(t,e,[d(n)]),!0}}return!1}),k)),l&&h.listenersToRemove.add(r.registerCommand($,(t=>{const n=g();if(!f(n)||!n.isCollapsed()||!gt(n,e))return!1;const o=Ct(n.anchor.getNode());if(null===o)return!1;wt(t);const r=e.getCordsFromCellNode(o,h.table);return ct(h,e,r.x,r.y,t.shiftKey?"backward":"forward"),!0}),k)),h.listenersToRemove.add(r.registerCommand(H,(t=>e.isSelected()),O)),h.listenersToRemove.add(r.registerCommand(B,(e=>{const{nodes:n,selection:o}=e,r=o.getStartEndPoints(),l=Ue(o),i=f(o)&&null!==t(o.anchor.getNode(),(e=>se(e)))&&null!==t(o.focus.getNode(),(e=>se(e)))||l;if(1!==n.length||!Mt(n[0])||!i||null===r)return!1;const[c]=r,u=n[0],h=u.getChildren(),d=u.getFirstChildOrThrow().getChildrenSize(),g=u.getChildrenSize(),m=t(c.getNode(),(e=>se(e))),p=m&&t(m,(e=>pe(e))),C=p&&t(p,(e=>Mt(e)));if(!se(m)||!pe(p)||!Mt(C))return!1;const S=p.getIndexWithinParent(),_=Math.min(C.getChildrenSize()-1,S+g-1),w=m.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(!pe(t))return!1;const n=h[R];if(!pe(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(!se(t))return!1;const n=r[l];if(!se(n))return!1;const i=t.getChildren();n.getChildren().forEach((e=>{if(a(e)){s().append(e),t.append(e)}else t.append(e)})),i.forEach((e=>e.remove())),l++}R++}return!0}),k)),h.listenersToRemove.add(r.registerCommand(N,(()=>{const n=g(),o=W(),l=h.getAndClearNextFocus();if(null!==l){const{focusCell:t}=l;if(Ue(n)&&n.tableKey===h.tableNodeKey)return(t.x!==h.focusX||t.y!==h.focusY)&&(h.$setFocusCellForSelection(t),!0);if(t!==h.anchorCell&&gt(n,e))return h.$setFocusCellForSelection(t),!0}if(h.getAndClearShouldCheckSelection()&&f(o)&&f(n)&&n.isCollapsed()){const o=n.anchor.getNode(),r=e.getFirstChild(),l=Ct(o);if(null!==l&&pe(r)){const n=r.getFirstChild();if(se(n)&&e.is(t(l,(t=>t.is(e)||t.is(n)))))return n.selectStart(),!0}}if(f(n)){const{anchor:t,focus:o}=n,l=t.getNode(),s=o.getNode(),i=Ct(l),c=Ct(s),a=!(!i||!e.is(St(i))),u=!(!c||!e.is(St(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")}y(t),it(r,h)}else g&&(i.is(c)||(h.$setAnchorCellForSelection(Nt(h,i)),h.$setFocusCellForSelection(Nt(h,c),!0)))}else if(n&&Ue(n)&&n.is(o)&&n.tableKey===e.getKey()){const t=x(u);if(t&&t.anchorNode&&t.focusNode){const o=T(t.focusNode),l=o&&!e.is(St(o)),s=T(t.anchorNode),i=s&&e.is(St(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(),y(o))}}}return n&&!n.is(o)&&(Ue(n)||Ue(o))&&h.tableSelection&&!h.tableSelection.is(o)?(Ue(n)&&n.tableKey===h.tableNodeKey?h.$updateTableTableSelection(n):!Ue(n)&&Ue(o)&&o.tableKey===h.tableNodeKey&&h.$updateTableTableSelection(null),!1):(h.hasHijackedSelectionStyles&&!e.isSelected()?function(e,t){t.$enableHighlightStyle(),st(t.table,(t=>{const n=t.elem;t.highlighted=!1,pt(e,t),n.getAttribute("style")||n.removeAttribute("style")}))}(r,h):!h.hasHijackedSelectionStyles&&e.isSelected()&&it(r,h),!1)}),k)),h.listenersToRemove.add(r.registerCommand(P,(()=>{const t=g();if(!f(t)||!t.isCollapsed()||!gt(t,e))return!1;const n=yt(r,t,e);return!!n&&(bt(n,e),!0)}),k)),h}function nt(e){return e[je]||null}function ot(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 rt(e,t){const n=[],o={columns:0,domRows:n,rows:0};let r=qe(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 lt(e,t,n){const o=new Set(n?n.getNodes():[]);st(t,((t,n)=>{const r=t.elem;o.has(n)?(t.highlighted=!0,mt(e,t)):(t.highlighted=!1,pt(e,t),r.getAttribute("style")||r.removeAttribute("style"))}))}function st(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=T(r.elem);null!==l&&t(r,l,{x:n,y:e})}}}function it(e,t){t.$disableHighlightStyle(),st(t.table,(t=>{t.highlighted=!0,mt(e,t)}))}const ct=(e,t,n,o,r)=>{const l="forward"===r;switch(r){case"backward":case"forward":return n!==(l?e.table.columns-1:0)?ft(t.getCellNodeFromCordsOrThrow(n+(l?1:-1),o,e.table),l):o!==(l?e.table.rows-1:0)?ft(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?ft(t.getCellNodeFromCordsOrThrow(n,o-1,e.table),!1):t.selectPrevious(),!0;case"down":return o!==e.table.rows-1?ft(t.getCellNodeFromCordsOrThrow(n,o+1,e.table),!0):t.selectNext(),!0;default:return!1}};function at(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 ut([e,t]){return["minColumn"===e?"maxColumn":"minColumn","minRow"===t?"maxRow":"minRow"]}function ht(e,t,[n,o]){const r=t[o],l=e[r];void 0===l&&ae(248,o,String(r));const s=t[n],i=l[s];return void 0===i&&ae(248,n,String(s)),i}function dt(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=at(e,t);return null===n&&ae(247,t.cell.getKey()),n}(l,n),[d,g]=ut(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=at(o,t);if(r)return[ht(e,o,r),ht(e,o,ut(r))];const l=at(o,n);if(l)return[ht(e,o,ut(l)),ht(e,o,l)];const s=["minColumn","minRow"];return[ht(e,o,s),ht(e,o,ut(s))]}(t,n,C),w=Nt(e,S.cell),b=Nt(e,_.cell);return e.$setAnchorCellForSelection(w),e.$setFocusCellForSelection(b,!0),!0}function gt(e,t){if(f(e)||Ue(e)){const n=t.isParentOf(e.anchor.getNode()),o=t.isParentOf(e.focus.getNode());return n&&o}return!1}function ft(e,t){t?e.selectStart():e.selectEnd()}function mt(t,n){const o=n.elem,r=t._config.theme;se(T(o))||ae(131),e(o,r.tableCellSelected)}function pt(e,t){const o=t.elem;se(T(o))||ae(131);const r=e._config.theme;n(o,r.tableCellSelected)}function Ct(e){const n=t(e,se);return se(n)?n:null}function St(e){const n=t(e,Mt);return Mt(n)?n:null}function _t(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=g();if(!gt(s,r)){if(f(s)){if(s.isCollapsed()&&"backward"===o){const e=s.anchor.type,o=s.anchor.offset;if("element"!==e&&("text"!==e||0!==o))return!1;const r=s.anchor.getNode();if(!r)return!1;const l=t(r,(e=>i(e)&&!e.isInline()));if(!l)return!1;const c=l.getPreviousSibling();return!(!c||!Mt(c))&&(wt(n),c.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=>Mt(e)));if(se(l)&&(l=t(l,Mt)),l!==r)return!1;if(!l)return!1;const c="down"===o?l.getNextSibling():l.getPreviousSibling();if(!c)return!1;let u=0;"up"===o&&i(c)&&(u=c.getChildrenSize());let h=c;if("up"===o&&i(c)){const e=c.getLastChild();h=e||c,u=a(h)?h.getTextContentSize():0}const d=s.clone();return d.focus.set(h.getKey(),u,a(h)?"text":"element"),y(d),wt(n),!0}if(D(e)){const e="up"===o?s.getNodes()[s.getNodes().length-1]:s.getNodes()[0];if(e){const n=t(e,se);if(n&&r.isParentOf(n)){const e=r.getFirstDescendant(),t=r.getLastDescendant();if(!e||!t)return!1;const[n]=We(e),[o]=We(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=>i(e)&&!e.isInline()));if(se(r)&&(r=t(r,Mt)),!r)return!1;const c="down"===o?r.getNextSibling():r.getPreviousSibling();if(Mt(c)&&l.tableNodeKey===c.getKey()){const e=c.getFirstDescendant(),t=c.getLastDescendant();if(!e||!t)return!1;const[r]=We(e),[l]=We(t),i=s.clone();return i.focus.set(("up"===o?r:l).getKey(),"up"===o?0:l.getChildrenSize(),"element"),wt(n),y(i),!0}}}}return"down"===o&&Rt(e)&&l.setShouldCheckSelection(),!1}if(f(s)&&s.isCollapsed()){const{anchor:c,focus:a}=s,u=t(c.getNode(),se),h=t(a.getNode(),se);if(!se(u)||!u.is(h))return!1;const d=St(u);if(d!==r&&null!=d){const t=qe(d,e.getElementByKey(d.getKey()));if(null!=t)return l.table=rt(d,t),_t(e,n,o,d,l)}if("backward"===o||"forward"===o){const e=c.type,l=c.offset,a=c.getNode();if(!a)return!1;const h=s.getNodes();return(1!==h.length||!I(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=>i(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,c]=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,c,l))return!1;const a=function(e,n,o){const r=t(e,(e=>i(e)&&!e.isInline()));if(!r)return;const l="backward"===n?r.getPreviousSibling():r.getNextSibling();return l&&Mt(l)?l:"backward"===n?o.getPreviousSibling():o.getNextSibling()}(n,l,r);if(!a||Mt(a))return!1;wt(e),"backward"===l?a.selectEnd():a.selectStart();return!0}(n,a,u,r,o))}const g=e.getElementByKey(u.__key),f=e.getElementByKey(c.key);if(null==f||null==g)return!1;let m;if("element"===c.type)m=f.getBoundingClientRect();else{const t=x(Ve(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){wt(n);const e=r.getCordsFromCellNode(u,l.table);if(!n.shiftKey)return ct(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(Ue(s)){const{anchor:i,focus:c}=s,a=t(i.getNode(),se),u=t(c.getNode(),se),[h]=s.getNodes();Mt(h)||ae(249);const d=qe(h,e.getElementByKey(h.getKey()));if(!se(a)||!se(u)||!Mt(h)||null==d)return!1;l.$updateTableTableSelection(s);const g=rt(h,d),f=r.getCordsFromCellNode(a,g),m=r.getDOMCellFromCordsOrThrow(f.x,f.y,g);if(l.$setAnchorCellForSelection(m),wt(n),n.shiftKey){const[e,t,n]=He(r,a,u);return dt(l,e,t,n,o)}return u.selectEnd(),!0}return!1}function wt(e){e.preventDefault(),e.stopImmediatePropagation(),e.stopPropagation()}function bt(e,t,n){const o=s();"first"===e?t.insertBefore(o):t.insertAfter(o),o.append(...n||[]),o.selectEnd()}function yt(e,n,o){const r=o.getParent();if(!r)return;const l=x(Ve(e));if(!l)return;const s=l.anchorNode,i=e.getElementByKey(r.getKey()),c=qe(o,e.getElementByKey(o.getKey()));if(!s||!i||!c||!i.contains(s)||c.contains(s))return;const a=t(n.anchor.getNode(),(e=>se(e)));if(!a)return;const u=t(a,(e=>Mt(e)));if(!Mt(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 Nt(e,t){const{tableNode:n}=e.$lookup(),o=n.getCordsFromCellNode(t,e.table);return n.getDOMCellFromCordsOrThrow(o.x,o.y,e.table)}function xt(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 Tt(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 vt=new WeakSet;function Rt(e=b()){return vt.has(e)}function Ot(e,t){t?vt.add(e):vt.delete(e)}class Ft 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 Ft(e.__key)}afterCloneFrom(e){super.afterCloneFrom(e),this.__colWidths=e.__colWidths,this.__rowStriping=e.__rowStriping}static importDOM(){return{table:e=>({conversion:Kt,priority:1})}}static importJSON(e){const t=Et();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}}getDOMSlot(e){const t="TABLE"!==e.nodeName&&e.querySelector("table")||e;return"TABLE"!==t.nodeName&&ae(229),super.getDOMSlot(t).withAfter(t.querySelector("colgroup"))}createDOM(t,n){const o=document.createElement("table"),r=document.createElement("colgroup");if(o.appendChild(r),xt(o,0,this.getColumnCount(),this.getColWidths()),Q(r),e(o,t.theme.table),this.__rowStriping&&Tt(o,t,!0),Rt(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&&Tt(t,n,this.__rowStriping),xt(t,0,this.getColumnCount(),this.getColWidths()),!1}exportDOM(e){return{...super.exportDOM(e),after:e=>{if(e&&r(e)&&"TABLE"!==e.nodeName&&(e=e.querySelector("table")),!e||!r(e))return null;const t=e.querySelectorAll(":scope > tr");if(t.length>0){const n=document.createElement("tbody");n.append(...t),e.append(n)}return e}}}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)continue;const r=n.findIndex((t=>{if(!t)return;const{elem:n}=t;return T(n)===e}));if(-1!==r)return{x:r,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=T(o.elem);return se(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=>{se(e)&&(t+=e.getColSpan())})),t}}function kt(e,t){const n=e.getElementByKey(t.getKey());return null===n&&ae(230),rt(t,n)}function Kt(e){const t=Et();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||!te.test(n)){e=void 0;break}e.push(parseFloat(n))}e&&t.setColWidths(e)}return{node:t}}function Et(){return u(new Ft)}function Mt(e){return e instanceof Ft}export{He as $computeTableMap,Be as $computeTableMapSkipCellCheck,le as $createTableCellNode,Et as $createTableNode,Ce as $createTableNodeWithDimensions,me as $createTableRowNode,ze as $createTableSelection,ke as $deleteTableColumn,Ee as $deleteTableColumn__EXPERIMENTAL,Ke as $deleteTableRow__EXPERIMENTAL,Ct as $findCellNode,St as $findTableNode,kt as $getElementForTableNode,We as $getNodeTriplet,Xe as $getTableAndElementByKey,Se as $getTableCellNodeFromLexicalNode,Pe as $getTableCellNodeRect,ye as $getTableColumnIndexFromTableCellNode,we as $getTableNodeFromLexicalNodeOrThrow,be as $getTableRowIndexFromTableCellNode,_e as $getTableRowNodeFromTableCellNodeOrThrow,Oe as $insertTableColumn,Fe as $insertTableColumn__EXPERIMENTAL,Te as $insertTableRow,Re as $insertTableRow__EXPERIMENTAL,Rt as $isScrollableTablesActive,se as $isTableCellNode,Mt as $isTableNode,pe as $isTableRowNode,Ue as $isTableSelection,xe as $removeTableRowAtIndex,$e as $unmergeCell,ie as INSERT_TABLE_COMMAND,ne as TableCellHeaderStates,oe as TableCellNode,Ft as TableNode,Je as TableObserver,ge as TableRowNode,tt as applyTableHandlers,ot as getDOMCellFromTarget,qe as getTableElement,nt as getTableObserverFromTableElement,Ot as setScrollableTablesActive};
@@ -39,14 +39,14 @@ export declare class TableCellNode extends ElementNode {
39
39
  static importDOM(): DOMConversionMap | null;
40
40
  static importJSON(serializedNode: SerializedTableCellNode): TableCellNode;
41
41
  constructor(headerState?: number, colSpan?: number, width?: number, key?: NodeKey);
42
- createDOM(config: EditorConfig): HTMLElement;
42
+ createDOM(config: EditorConfig): HTMLTableCellElement;
43
43
  exportDOM(editor: LexicalEditor): DOMExportOutput;
44
44
  exportJSON(): SerializedTableCellNode;
45
45
  getColSpan(): number;
46
46
  setColSpan(colSpan: number): this;
47
47
  getRowSpan(): number;
48
48
  setRowSpan(rowSpan: number): this;
49
- getTag(): string;
49
+ getTag(): 'th' | 'td';
50
50
  setHeaderStyles(headerState: TableCellHeaderState, mask?: TableCellHeaderState): this;
51
51
  getHeaderStyles(): TableCellHeaderState;
52
52
  setWidth(width: number): this;
@@ -6,6 +6,7 @@
6
6
  *
7
7
  */
8
8
  import type { LexicalEditor, NodeKey, TextFormatType } from 'lexical';
9
+ import { TableCellNode } from './LexicalTableCellNode';
9
10
  import { TableNode } from './LexicalTableNode';
10
11
  import { type TableSelection } from './LexicalTableSelection';
11
12
  import { HTMLTableElementWithWithTableSelectionState } from './LexicalTableSelectionHelpers';
@@ -48,6 +49,10 @@ export declare class TableObserver {
48
49
  listenerOptions: {
49
50
  signal: AbortSignal;
50
51
  };
52
+ nextFocus: {
53
+ focusCell: TableDOMCell;
54
+ override: boolean;
55
+ } | null;
51
56
  constructor(editor: LexicalEditor, tableNodeKey: string);
52
57
  getTable(): TableDOMTable;
53
58
  removeListeners(): void;
@@ -56,10 +61,10 @@ export declare class TableObserver {
56
61
  tableElement: HTMLTableElementWithWithTableSelectionState;
57
62
  };
58
63
  trackTable(): void;
59
- clearHighlight(): void;
60
- enableHighlightStyle(): void;
61
- disableHighlightStyle(): void;
62
- updateTableTableSelection(selection: TableSelection | null): void;
64
+ $clearHighlight(): void;
65
+ $enableHighlightStyle(): void;
66
+ $disableHighlightStyle(): void;
67
+ $updateTableTableSelection(selection: TableSelection | null): void;
63
68
  /**
64
69
  * @internal
65
70
  * Firefox has a strange behavior where pressing the down arrow key from
@@ -74,8 +79,30 @@ export declare class TableObserver {
74
79
  * @internal
75
80
  */
76
81
  getAndClearShouldCheckSelection(): boolean;
77
- setFocusCellForSelection(cell: TableDOMCell, ignoreStart?: boolean): void;
78
- setAnchorCellForSelection(cell: TableDOMCell): void;
79
- formatCells(type: TextFormatType): void;
80
- clearText(): void;
82
+ /**
83
+ * @internal
84
+ * When handling mousemove events we track what the focus cell should be, but
85
+ * the DOM selection may end up somewhere else entirely. We don't have an elegant
86
+ * way to handle this after the DOM selection has been resolved in a
87
+ * SELECTION_CHANGE_COMMAND callback.
88
+ */
89
+ setNextFocus(nextFocus: null | {
90
+ focusCell: TableDOMCell;
91
+ override: boolean;
92
+ }): void;
93
+ /** @internal */
94
+ getAndClearNextFocus(): {
95
+ focusCell: TableDOMCell;
96
+ override: boolean;
97
+ } | null;
98
+ /** @internal */
99
+ updateDOMSelection(): void;
100
+ $setFocusCellForSelection(cell: TableDOMCell, ignoreStart?: boolean): boolean;
101
+ $getAnchorTableCell(): TableCellNode | null;
102
+ $getAnchorTableCellOrThrow(): TableCellNode;
103
+ $getFocusTableCell(): TableCellNode | null;
104
+ $getFocusTableCellOrThrow(): TableCellNode;
105
+ $setAnchorCellForSelection(cell: TableDOMCell): void;
106
+ $formatCells(type: TextFormatType): void;
107
+ $clearText(): void;
81
108
  }
@@ -7,6 +7,7 @@
7
7
  */
8
8
  import { BaseSelection, LexicalNode, NodeKey, PointType, TextFormatType } from 'lexical';
9
9
  import { TableCellNode } from './LexicalTableCellNode';
10
+ import { TableNode } from './LexicalTableNode';
10
11
  export type TableSelectionShape = {
11
12
  fromX: number;
12
13
  fromY: number;
@@ -27,6 +28,14 @@ export declare class TableSelection implements BaseSelection {
27
28
  dirty: boolean;
28
29
  constructor(tableKey: NodeKey, anchor: PointType, focus: PointType);
29
30
  getStartEndPoints(): [PointType, PointType];
31
+ /**
32
+ * {@link $createTableSelection} unfortunately makes it very easy to create
33
+ * nonsense selections, so we have a method to see if the selection probably
34
+ * makes sense.
35
+ *
36
+ * @returns true if the TableSelection is (probably) valid
37
+ */
38
+ isValid(): boolean;
30
39
  /**
31
40
  * Returns whether the Selection is "backwards", meaning the focus
32
41
  * logically precedes the anchor in the EditorState.
@@ -57,4 +66,10 @@ export declare class TableSelection implements BaseSelection {
57
66
  }
58
67
  export declare function $isTableSelection(x: unknown): x is TableSelection;
59
68
  export declare function $createTableSelection(): TableSelection;
60
- export declare function $getChildrenRecursively(node: LexicalNode): Array<LexicalNode>;
69
+ export declare function $createTableSelectionFrom(tableNode: TableNode, anchorCell: TableCellNode, focusCell: TableCellNode): TableSelection;
70
+ /**
71
+ * Depth first visitor
72
+ * @param node The starting node
73
+ * @param $visit The function to call for each node. If the function returns false, then children of this node will not be explored
74
+ */
75
+ export declare function $visitRecursively(node: LexicalNode, $visit: (childNode: LexicalNode) => boolean | undefined | void): void;
@@ -12,8 +12,9 @@ import type { LexicalEditor, LexicalNode, RangeSelection } from 'lexical';
12
12
  import { TableNode } from './LexicalTableNode';
13
13
  import { TableDOMTable, TableObserver } from './LexicalTableObserver';
14
14
  declare const LEXICAL_ELEMENT_KEY = "__lexicalTableSelection";
15
- export declare const getDOMSelection: (targetWindow: Window | null) => Selection | null;
16
15
  export declare function getTableElement<T extends HTMLElement | null>(tableNode: TableNode, dom: T): HTMLTableElementWithWithTableSelectionState | (T & null);
16
+ export declare function getEditorWindow(editor: LexicalEditor): Window | null;
17
+ export declare function $findParentTableCellNodeInTable(tableNode: LexicalNode, node: LexicalNode | null): TableCellNode | null;
17
18
  export declare function applyTableHandlers(tableNode: TableNode, element: HTMLElement, editor: LexicalEditor, hasTabHandler: boolean): TableObserver;
18
19
  export type HTMLTableElementWithWithTableSelectionState = HTMLTableElement & {
19
20
  [LEXICAL_ELEMENT_KEY]?: TableObserver | undefined;
@@ -33,4 +34,5 @@ export declare function $addHighlightStyleToTable(editor: LexicalEditor, tableSe
33
34
  export declare function $removeHighlightStyleToTable(editor: LexicalEditor, tableObserver: TableObserver): void;
34
35
  export declare function $findCellNode(node: LexicalNode): null | TableCellNode;
35
36
  export declare function $findTableNode(node: LexicalNode): null | TableNode;
37
+ export declare function $getObserverCellFromCellNodeOrThrow(tableObserver: TableObserver, tableCellNode: TableCellNode): TableDOMCell;
36
38
  export {};
@@ -45,9 +45,27 @@ export declare function $deleteTableColumn(tableNode: TableNode, targetIndex: nu
45
45
  export declare function $deleteTableRow__EXPERIMENTAL(): void;
46
46
  export declare function $deleteTableColumn__EXPERIMENTAL(): void;
47
47
  export declare function $unmergeCell(): void;
48
- export declare function $computeTableMap(grid: TableNode, cellA: TableCellNode, cellB: TableCellNode): [TableMapType, TableMapValueType, TableMapValueType];
49
- export declare function $computeTableMapSkipCellCheck(grid: TableNode, cellA: null | TableCellNode, cellB: null | TableCellNode): [TableMapType, TableMapValueType | null, TableMapValueType | null];
48
+ export declare function $computeTableMap(tableNode: TableNode, cellA: TableCellNode, cellB: TableCellNode): [TableMapType, TableMapValueType, TableMapValueType];
49
+ export declare function $computeTableMapSkipCellCheck(tableNode: TableNode, cellA: null | TableCellNode, cellB: null | TableCellNode): [
50
+ tableMap: TableMapType,
51
+ cellAValue: TableMapValueType | null,
52
+ cellBValue: TableMapValueType | null
53
+ ];
50
54
  export declare function $getNodeTriplet(source: PointType | LexicalNode | TableCellNode): [TableCellNode, TableRowNode, TableNode];
55
+ export interface TableCellRectBoundary {
56
+ minColumn: number;
57
+ minRow: number;
58
+ maxColumn: number;
59
+ maxRow: number;
60
+ }
61
+ export interface TableCellRectSpans {
62
+ topSpan: number;
63
+ leftSpan: number;
64
+ rightSpan: number;
65
+ bottomSpan: number;
66
+ }
67
+ export declare function $computeTableCellRectSpans(map: TableMapType, boundary: TableCellRectBoundary): TableCellRectSpans;
68
+ export declare function $computeTableCellRectBoundary(map: TableMapType, cellAMap: TableMapValueType, cellBMap: TableMapValueType): TableCellRectBoundary;
51
69
  export declare function $getTableCellNodeRect(tableCellNode: TableCellNode): {
52
70
  rowIndex: number;
53
71
  columnIndex: number;
package/package.json CHANGED
@@ -8,13 +8,13 @@
8
8
  "table"
9
9
  ],
10
10
  "license": "MIT",
11
- "version": "0.20.1-nightly.20241122.0",
11
+ "version": "0.20.1-nightly.20241126.0",
12
12
  "main": "LexicalTable.js",
13
13
  "types": "index.d.ts",
14
14
  "dependencies": {
15
- "@lexical/clipboard": "0.20.1-nightly.20241122.0",
16
- "@lexical/utils": "0.20.1-nightly.20241122.0",
17
- "lexical": "0.20.1-nightly.20241122.0"
15
+ "@lexical/clipboard": "0.20.1-nightly.20241126.0",
16
+ "@lexical/utils": "0.20.1-nightly.20241126.0",
17
+ "lexical": "0.20.1-nightly.20241126.0"
18
18
  },
19
19
  "repository": {
20
20
  "type": "git",