/** * Copyright (c) Meta Platforms, Inc. and affiliates. * * This source code is licensed under the MIT license found in the * LICENSE file in the root directory of this source tree. */ 'use strict';var h=require("@lexical/utils"),v=require("lexical");let ca=/^(\d+(?:\.\d+)?)px$/,w={BOTH:3,COLUMN:2,NO_STATUS:0,ROW:1}; class y extends v.ElementNode{static getType(){return"tablecell"}static clone(a){let b=new y(a.__headerState,a.__colSpan,a.__width,a.__key);b.__rowSpan=a.__rowSpan;b.__backgroundColor=a.__backgroundColor;return b}static importDOM(){return{td:()=>({conversion:da,priority:0}),th:()=>({conversion:da,priority:0})}}static importJSON(a){let b=a.rowSpan||1,c=z(a.headerState,a.colSpan||1,a.width||void 0);c.__rowSpan=b;c.__backgroundColor=a.backgroundColor||null;return c}constructor(a=w.NO_STATUS,b=1,c,d){super(d); this.__colSpan=b;this.__rowSpan=1;this.__headerState=a;this.__width=c;this.__backgroundColor=null}createDOM(a){let b=document.createElement(this.getTag());this.__width&&(b.style.width=`${this.__width}px`);1{if(A(e)&&!v.$isElementNode(d)){e=v.$createParagraphNode();if(v.$isLineBreakNode(d)&&"\n"===d.getTextContent())return null;e.append(d);return e}return d},node:b}}function z(a,b=1,c){return v.$applyNodeReplacement(new y(a,b,c))} function A(a){return a instanceof y}let ea=v.createCommand("INSERT_TABLE_COMMAND"); class B extends v.ElementNode{static getType(){return"tablerow"}static clone(a){return new B(a.__height,a.__key)}static importDOM(){return{tr:()=>({conversion:fa,priority:0})}}static importJSON(a){return D(a.height)}constructor(a,b){super(b);this.__height=a}exportJSON(){return{...super.exportJSON(),type:"tablerow",version:1}}createDOM(a){let b=document.createElement("tr");this.__height&&(b.style.height=`${this.__height}px`);h.addClassNamesToElement(b,a.theme.tableRow);return b}isShadowRoot(){return!0}setHeight(a){this.getWritable().__height= a;return this.__height}getHeight(){return this.getLatest().__height}updateDOM(a){return a.__height!==this.__height}canBeEmpty(){return!1}canIndent(){return!1}}function fa(a){let b=void 0;ca.test(a.style.height)&&(b=parseFloat(a.style.height));return{node:D(b)}}function D(a){return v.$applyNodeReplacement(new B(a))}function F(a){return a instanceof B} function H(a){let b=new URLSearchParams;b.append("code",a);for(let c=1;cF(b));if(F(a))return a;throw Error("Expected table cell to be inside of table row.");}function ja(a){a=h.$findMatchingParent(a,b=>I(b));if(I(a))return a;throw Error("Expected table cell to be inside of table.");}function ka(a,b){let c=ja(a),{x:d,y:e}=c.getCordsFromCellNode(a,b);return{above:c.getCellNodeFromCords(d,e-1,b),below:c.getCellNodeFromCords(d,e+1,b),left:c.getCellNodeFromCords(d-1,e,b),right:c.getCellNodeFromCords(d+1,e,b)}} let la=(a,b)=>a===w.BOTH||a===b?b:w.NO_STATUS;function J(a){let b=a.getFirstDescendant();null==b?a.selectStart():b.getParentOrThrow().selectStart()}function ma(a,b){let c=a.getFirstChild();null!==c?c.insertBefore(b):a.append(b)} function L(a,b,c){let d=[],e=null,k=null;a=a.getChildren();for(let g=0;ge||l>n;){if(qe)for(p=n-d,e+=1,t=0;t<=p;t++)a(k[d+t][e]);if(l>n)for(p=e-c,n+=1,t=0;t<=p;t++)a(k[n][c+t])}b=[b];c=null;for(d=r;d<=l;d++)for(e=q;e<=g;e++)({cell:n}=k[d][e]),p=n.getParent(),F(p)||H(160),p!==c&&b.push(p),b.push(n,...qa(n)),c=p;v.isCurrentlyReadOnlyMode()||(this._cachedNodes=b);return b}getTextContent(){let a= this.getNodes(),b="";for(let c=0;ca())}trackTable(){let a=new MutationObserver(b=> {this.editor.update(()=>{var c=!1;for(let d=0;d{let b=this.editor.getElementByKey(this.tableNodeKey);if(!b)throw Error("Expected to find TableElement in DOM");this.table=P(b);a.observe(b,{childList:!0,subtree:!0})})}clearHighlight(){let a=this.editor;this.isHighlightingCells= !1;this.focusY=this.focusX=this.anchorY=this.anchorX=-1;this.focusCell=this.anchorCell=this.focusCellNodeKey=this.anchorCellNodeKey=this.tableSelection=null;this.hasHijackedSelectionStyles=!1;this.enableHighlightStyle();a.update(()=>{var b=v.$getNodeByKey(this.tableNodeKey);if(!I(b))throw Error("Expected TableNode.");b=a.getElementByKey(this.tableNodeKey);if(!b)throw Error("Expected to find TableElement in DOM");b=P(b);Q(a,b,null);v.$setSelection(null);a.dispatchCommand(v.SELECTION_CHANGE_COMMAND, void 0)})}enableHighlightStyle(){let a=this.editor;a.update(()=>{let b=a.getElementByKey(this.tableNodeKey);if(!b)throw Error("Expected to find TableElement in DOM");h.removeClassNamesFromElement(b,a._config.theme.tableSelection);b.classList.remove("disable-selection");this.hasHijackedSelectionStyles=!1})}disableHighlightStyle(){let a=this.editor;a.update(()=>{let b=a.getElementByKey(this.tableNodeKey);if(!b)throw Error("Expected to find TableElement in DOM");h.addClassNamesToElement(b,a._config.theme.tableSelection); this.hasHijackedSelectionStyles=!0})}updateTableTableSelection(a){if(null!==a&&a.tableKey===this.tableNodeKey){let b=this.editor;this.tableSelection=a;this.isHighlightingCells=!0;this.disableHighlightStyle();Q(b,this.table,this.tableSelection)}else null==a?this.clearHighlight():(this.tableNodeKey=a.tableKey,this.updateTableTableSelection(a))}setFocusCellForSelection(a,b=!1){let c=this.editor;c.update(()=>{var d=v.$getNodeByKey(this.tableNodeKey);if(!I(d))throw Error("Expected TableNode.");if(!c.getElementByKey(this.tableNodeKey))throw Error("Expected to find TableElement in DOM"); d=a.x;let e=a.y;this.focusCell=a;if(null!==this.anchorCell){let k=ha?(c._window||window).getSelection():null;k&&k.setBaseAndExtent(this.anchorCell.elem,0,this.focusCell.elem,0)}if(!this.isHighlightingCells&&(this.anchorX!==d||this.anchorY!==e||b))this.isHighlightingCells=!0,this.disableHighlightStyle();else if(d===this.focusX&&e===this.focusY)return;this.focusX=d;this.focusY=e;this.isHighlightingCells&&(d=v.$getNearestNodeFromDOMNode(a.elem),null!=this.tableSelection&&null!=this.anchorCellNodeKey&& A(d)&&(d=d.getKey(),this.tableSelection=this.tableSelection.clone()||O(),this.focusCellNodeKey=d,this.tableSelection.set(this.tableNodeKey,this.anchorCellNodeKey,this.focusCellNodeKey),v.$setSelection(this.tableSelection),c.dispatchCommand(v.SELECTION_CHANGE_COMMAND,void 0),Q(c,this.table,this.tableSelection)))})}setAnchorCellForSelection(a){this.isHighlightingCells=!1;this.anchorCell=a;this.anchorX=a.x;this.anchorY=a.y;this.editor.update(()=>{var b=v.$getNearestNodeFromDOMNode(a.elem);A(b)&&(b=b.getKey(), this.tableSelection=null!=this.tableSelection?this.tableSelection.clone():O(),this.anchorCellNodeKey=b)})}formatCells(a){this.editor.update(()=>{let b=v.$getSelection();N(b)||H(11);let c=v.$createRangeSelection(),d=c.anchor,e=c.focus;b.getNodes().forEach(k=>{A(k)&&0!==k.getTextContentSize()&&(d.set(k.getKey(),0,"element"),e.set(k.getKey(),k.getChildrenSize(),"element"),c.formatText(a))});v.$setSelection(b);this.editor.dispatchCommand(v.SELECTION_CHANGE_COMMAND,void 0)})}clearText(){let a=this.editor; a.update(()=>{let b=v.$getNodeByKey(this.tableNodeKey);if(!I(b))throw Error("Expected TableNode.");var c=v.$getSelection();N(c)||H(11);c=c.getNodes().filter(A);c.length===this.table.columns*this.table.rows?(b.selectPrevious(),b.remove(),v.$getRoot().selectStart()):(c.forEach(d=>{if(v.$isElementNode(d)){let e=v.$createParagraphNode(),k=v.$createTextNode();e.append(k);d.append(e);d.getChildren().forEach(f=>{f!==e&&f.remove()})}}),Q(a,this.table,null),v.$setSelection(null),a.dispatchCommand(v.SELECTION_CHANGE_COMMAND, void 0))})}}function sa(a){for(;null!=a;){let b=a.nodeName;if("TD"===b||"TH"===b){a=a._cell;if(void 0===a)break;return a}a=a.parentNode}return null} function P(a){let b=[],c={columns:0,domRows:b,rows:0};var d=a.firstChild;let e=a=0;for(b.length=0;null!=d;){var k=d.nodeName;if("TD"===k||"TH"===k){k=d;k={elem:k,hasBackgroundColor:""!==k.style.backgroundColor,highlighted:!1,x:a,y:e};d._cell=k;let f=b[e];void 0===f&&(f=b[e]=[]);f[a]=k}else if(k=d.firstChild,null!=k){d=k;continue}k=d.nextSibling;if(null!=k)a++,d=k;else if(k=d.parentNode,null!=k){d=k.nextSibling;if(null==d)break;e++;a=0}}c.columns=a+1;c.rows=e+1;return c} function Q(a,b,c){let d=new Set(c?c.getNodes():[]);ta(b,(e,k)=>{let f=e.elem;d.has(k)?(e.highlighted=!0,ua(a,e)):(e.highlighted=!1,va(a,e),f.getAttribute("style")||f.removeAttribute("style"))})}function ta(a,b){({domRows:a}=a);for(let c=0;c{c.highlighted=!0;ua(a,c)})} function ya(a,b){b.enableHighlightStyle();ta(b.table,c=>{let d=c.elem;c.highlighted=!1;va(a,c);d.getAttribute("style")||d.removeAttribute("style")})} let za=(a,b,c,d,e)=>{const k="forward"===e;switch(e){case "backward":case "forward":return c!==(k?a.table.columns-1:0)?(a=b.getCellNodeFromCordsOrThrow(c+(k?1:-1),d,a.table),k?a.selectStart():a.selectEnd()):d!==(k?a.table.rows-1:0)?(a=b.getCellNodeFromCordsOrThrow(k?0:a.table.columns-1,d+(k?1:-1),a.table),k?a.selectStart():a.selectEnd()):k?b.selectNext():b.selectPrevious(),!0;case "up":return 0!==d?b.getCellNodeFromCordsOrThrow(c,d-1,a.table).selectEnd():b.selectPrevious(),!0;case "down":return d!== a.table.rows-1?b.getCellNodeFromCordsOrThrow(c,d+1,a.table).selectStart():b.selectNext(),!0;default:return!1}},Aa=(a,b,c,d,e)=>{const k="forward"===e;switch(e){case "backward":case "forward":return c!==(k?a.table.columns-1:0)&&a.setFocusCellForSelection(b.getDOMCellFromCordsOrThrow(c+(k?1:-1),d,a.table)),!0;case "up":return 0!==d?(a.setFocusCellForSelection(b.getDOMCellFromCordsOrThrow(c,d-1,a.table)),!0):!1;case "down":return d!==a.table.rows-1?(a.setFocusCellForSelection(b.getDOMCellFromCordsOrThrow(c, d+1,a.table)),!0):!1;default:return!1}};function V(a,b){if(v.$isRangeSelection(a)||N(a)){let c=b.isParentOf(a.anchor.getNode());a=b.isParentOf(a.focus.getNode());return c&&a}return!1} function ua(a,b){a=b.elem;b=v.$getNearestNodeFromDOMNode(a);A(b)||H(131);null===b.getBackgroundColor()?a.style.setProperty("background-color","rgb(172,206,247)"):a.style.setProperty("background-image","linear-gradient(to right, rgba(172,206,247,0.85), rgba(172,206,247,0.85))");a.style.setProperty("caret-color","transparent")} function va(a,b){a=b.elem;b=v.$getNearestNodeFromDOMNode(a);A(b)||H(131);null===b.getBackgroundColor()&&a.style.removeProperty("background-color");a.style.removeProperty("background-image");a.style.removeProperty("caret-color")}function Ba(a){a=h.$findMatchingParent(a,A);return A(a)?a:null}function Ca(a){a=h.$findMatchingParent(a,I);return I(a)?a:null} function W(a,b,c,d,e){let k=v.$getSelection();if(!V(k,d))return!1;if(v.$isRangeSelection(k)&&k.isCollapsed()){if("backward"===c||"forward"===c)return!1;let {anchor:r,focus:g}=k;var f=h.$findMatchingParent(r.getNode(),A),m=h.$findMatchingParent(g.getNode(),A);if(!A(f)||!f.is(m))return!1;m=Ca(f);if(m!==d&&null!=m){var q=a.getElementByKey(m.getKey());if(null!=q)return e.table=P(q),W(a,b,c,m,e)}m=a.getElementByKey(f.__key);q=a.getElementByKey(r.key);if(null==q||null==m)return!1;if("element"===r.type)m= q.getBoundingClientRect();else{m=window.getSelection();if(null===m||0===m.rangeCount)return!1;m=m.getRangeAt(0).getBoundingClientRect()}q="up"===c?f.getFirstChild():f.getLastChild();if(null==q)return!1;a=a.getElementByKey(q.__key);if(null==a)return!1;a=a.getBoundingClientRect();if("up"===c?a.top>m.top-m.height:m.bottom+m.height>a.bottom){X(b);a=d.getCordsFromCellNode(f,e.table);if(b.shiftKey)c=d.getDOMCellFromCordsOrThrow(a.x,a.y,e.table),e.setAnchorCellForSelection(c),e.setFocusCellForSelection(c, !0);else return za(e,d,a.x,a.y,c);return!0}}else if(N(k)){let {anchor:r,focus:g}=k;q=h.$findMatchingParent(r.getNode(),A);m=h.$findMatchingParent(g.getNode(),A);[f]=k.getNodes();a=a.getElementByKey(f.getKey());if(!A(q)||!A(m)||!I(f)||null==a)return!1;e.updateTableTableSelection(k);a=P(a);q=d.getCordsFromCellNode(q,a);q=d.getDOMCellFromCordsOrThrow(q.x,q.y,a);e.setAnchorCellForSelection(q);X(b);if(b.shiftKey)return b=d.getCordsFromCellNode(m,a),Aa(e,f,b.x,b.y,c);m.selectEnd();return!0}return!1} function X(a){a.preventDefault();a.stopImmediatePropagation();a.stopPropagation()} class Y extends v.ElementNode{static getType(){return"table"}static clone(a){return new Y(a.__key)}static importDOM(){return{table:()=>({conversion:Da,priority:1})}}static importJSON(){return Z()}constructor(a){super(a)}exportJSON(){return{...super.exportJSON(),type:"table",version:1}}createDOM(a){let b=document.createElement("table");h.addClassNamesToElement(b,a.theme.table);return b}updateDOM(){return!1}exportDOM(a){return{...super.exportDOM(a),after:b=>{if(b){let c=b.cloneNode(),d=document.createElement("colgroup"), e=document.createElement("tbody");h.isHTMLElement(b)&&e.append(...b.children);b=this.getFirstChildOrThrow();if(!F(b))throw Error("Expected to find row node.");b=b.getChildrenSize();for(let k=0;k{if(k)return{elem:k}=k,v.$getNearestNodeFromDOMNode(k)=== a}),-1!==e))return{x:e,y:b}}throw Error("Cell not found in table.");}getDOMCellFromCords(a,b,c){({domRows:c}=c);b=c[b];if(null==b)return null;a=b[a];return null==a?null:a}getDOMCellFromCordsOrThrow(a,b,c){a=this.getDOMCellFromCords(a,b,c);if(!a)throw Error("Cell not found at cords.");return a}getCellNodeFromCords(a,b,c){a=this.getDOMCellFromCords(a,b,c);if(null==a)return null;a=v.$getNearestNodeFromDOMNode(a.elem);return A(a)?a:null}getCellNodeFromCordsOrThrow(a,b,c){a=this.getCellNodeFromCords(a, b,c);if(!a)throw Error("Node at cords not TableCellNode.");return a}canSelectBefore(){return!0}canIndent(){return!1}}function Da(){return{node:Z()}}function Z(){return v.$applyNodeReplacement(new Y)}function I(a){return a instanceof Y}exports.$computeTableMap=L;exports.$createTableCellNode=z;exports.$createTableNode=Z; exports.$createTableNodeWithDimensions=function(a,b,c=!0){let d=Z();for(let k=0;k=d.length||0>b)throw Error("Table column target index out of range");d[b].remove()}}return a}; exports.$deleteTableColumn__EXPERIMENTAL=function(){var a=v.$getSelection();v.$isRangeSelection(a)||N(a)||H(118);var b=a.anchor.getNode();a=a.focus.getNode();let [c,,d]=M(b);[b]=M(a);let [e,k,f]=L(d,c,b);var {startColumn:m}=k;let {startRow:q,startColumn:r}=f;a=Math.min(m,r);m=Math.max(m+c.__colSpan-1,r+b.__colSpan-1);let g=m-a+1;if(e[0].length===m-a+1)d.selectPrevious(),d.remove();else{var l=e.length;for(let n=0;nm?p===m&&t.setColSpan(t.__colSpan-(m-u+1)):t.remove()}a=e[q];b=a[r+b.__colSpan];void 0!==b?({cell:b}=b,J(b)):({cell:b}=a[r-1],J(b))}}; exports.$deleteTableRow__EXPERIMENTAL=function(){var a=v.$getSelection();v.$isRangeSelection(a)||N(a)||H(118);var b=a.anchor.getNode();a=a.focus.getNode();let [c,,d]=M(b);[a]=M(a);let [e,k,f]=L(d,c,a);({startRow:b}=k);var {startRow:m}=f;a=m+a.__rowSpan-1;if(e.length===a-b+1)d.remove();else{m=e[0].length;var q=e[a+1],r=d.getChildAtIndex(a+1);for(let l=a;l>=b;l--){for(var g=m-1;0<=g;g--){let {cell:n,startRow:p,startColumn:t}=e[l][g];if(t===g&&(l===b&&p=b&&p+n.__rowSpan- 1>a))if(n.setRowSpan(n.__rowSpan-(a-p+1)),null===r&&H(122),0===g)ma(r,n);else{let {cell:u}=q[g-1];u.insertAfter(n)}}g=d.getChildAtIndex(l);F(g)||H(123,String(l));g.remove()}void 0!==q?({cell:b}=q[0],J(b)):({cell:b}=e[b-1][0],J(b))}};exports.$getElementForTableNode=function(a,b){a=a.getElementByKey(b.getKey());if(null==a)throw Error("Table Element Not Found");return P(a)};exports.$getNodeTriplet=M; exports.$getTableCellNodeFromLexicalNode=function(a){a=h.$findMatchingParent(a,b=>A(b));return A(a)?a:null};exports.$getTableCellNodeRect=oa;exports.$getTableColumnIndexFromTableCellNode=function(a){return ia(a).getChildren().findIndex(b=>b.is(a))};exports.$getTableNodeFromLexicalNodeOrThrow=ja;exports.$getTableRowIndexFromTableCellNode=function(a){let b=ia(a);return ja(b).getChildren().findIndex(c=>c.is(b))};exports.$getTableRowNodeFromTableCellNodeOrThrow=ia; exports.$insertTableColumn=function(a,b,c=!0,d,e){let k=a.getChildren(),f=[];for(let r=0;r=m.length||0>b)throw Error("Table column target index out of range");m=m[b];A(m)||H(12);let {left:n,right:p}=ka(m,e);var q=w.NO_STATUS;if(n&&n.hasHeaderState(w.ROW)||p&&p.hasHeaderState(w.ROW))q|=w.ROW;q=z(q);q.append(v.$createParagraphNode());f.push({newTableCell:q,targetCell:m})}}f.forEach(({newTableCell:r,targetCell:g})=>{c? g.insertAfter(r):g.insertBefore(r)});return a}; exports.$insertTableColumn__EXPERIMENTAL=function(a=!0){function b(l=w.NO_STATUS){l=z(l).append(v.$createParagraphNode());null===r&&(r=l);return l}var c=v.$getSelection();v.$isRangeSelection(c)||N(c)||H(118);var d=c.anchor.getNode();c=c.focus.getNode();[d]=M(d);let [e,,k]=M(c),[f,m,q]=L(k,e,d);d=f.length;c=a?Math.max(m.startColumn,q.startColumn):Math.min(m.startColumn,q.startColumn);a=a?c+e.__colSpan-1:c-1;c=k.getFirstChild();F(c)||H(120);let r=null;var g=c;a:for(c=0;ca?0:a].cell.__headerState,w.ROW);if(0>a){ma(g,b(n));continue}let {cell:p,startColumn:t,startRow:u}=l[a];if(t+p.__colSpan-1<=a){let x=p,E=u,C=a;for(;E!==c&&1=k.length||0>b)throw Error("Table row target index out of range");b=k[b];if(F(b))for(k=0;k=c.length||0>b)throw Error("Expected table cell to be inside of table row.");c[b].remove();return a}; exports.$unmergeCell=function(){var a=v.$getSelection();v.$isRangeSelection(a)||N(a)||H(118);a=a.anchor.getNode();let [b,c,d]=M(a);a=b.__colSpan;let e=b.__rowSpan;if(1{setTimeout(()=>{if(0===g.button&&m){var l=sa(g.target);null!==l&&(X(g),f.setAnchorCellForSelection(l));var n=()=>{m.removeEventListener("mouseup",n);m.removeEventListener("mousemove", p)},p=t=>{const u=sa(t.target);null===u||f.anchorX===u.x&&f.anchorY===u.y||(t.preventDefault(),f.setFocusCellForSelection(u))};m.addEventListener("mouseup",n);m.addEventListener("mousemove",p)}},0)});let q=g=>{0===g.button&&c.update(()=>{const l=v.$getSelection(),n=g.target;N(l)&&l.tableKey===f.tableNodeKey&&k.contains(n)&&f.clearHighlight()})};m.addEventListener("mousedown",q);f.listenersToRemove.add(()=>m.removeEventListener("mousedown",q));f.listenersToRemove.add(c.registerCommand(v.KEY_ARROW_DOWN_COMMAND, g=>W(c,g,"down",a,f),v.COMMAND_PRIORITY_HIGH));f.listenersToRemove.add(c.registerCommand(v.KEY_ARROW_UP_COMMAND,g=>W(c,g,"up",a,f),v.COMMAND_PRIORITY_HIGH));f.listenersToRemove.add(c.registerCommand(v.KEY_ARROW_LEFT_COMMAND,g=>W(c,g,"backward",a,f),v.COMMAND_PRIORITY_HIGH));f.listenersToRemove.add(c.registerCommand(v.KEY_ARROW_RIGHT_COMMAND,g=>W(c,g,"forward",a,f),v.COMMAND_PRIORITY_HIGH));f.listenersToRemove.add(c.registerCommand(v.KEY_ESCAPE_COMMAND,g=>{var l=v.$getSelection();return N(l)&&(l=h.$findMatchingParent(l.focus.getNode(), A),A(l))?(X(g),l.selectEnd(),!0):!1},v.COMMAND_PRIORITY_HIGH));let r=g=>()=>{var l=v.$getSelection();if(!V(l,a))return!1;if(N(l))return f.clearText(),!0;if(v.$isRangeSelection(l)){const t=h.$findMatchingParent(l.anchor.getNode(),u=>A(u));if(!A(t))return!1;var n=l.anchor.getNode(),p=l.focus.getNode();n=a.isParentOf(n);p=a.isParentOf(p);if(n&&!p||p&&!n)return f.clearText(),!0;n=(p=h.$findMatchingParent(l.anchor.getNode(),u=>v.$isElementNode(u)))&&h.$findMatchingParent(p,u=>v.$isElementNode(u)&&A(u.getParent())); if(!v.$isElementNode(n)||!v.$isElementNode(p))return!1;if(g===v.DELETE_LINE_COMMAND&&null===n.getPreviousSibling())return!0;if((g===v.DELETE_CHARACTER_COMMAND||g===v.DELETE_WORD_COMMAND)&&l.isCollapsed()&&0===l.anchor.offset&&p!==n){l=p.getChildren();const u=v.$createParagraphNode();l.forEach(x=>u.append(x));p.replace(u);p.getWritable().__parent=t.getKey();return!0}}return!1};[v.DELETE_WORD_COMMAND,v.DELETE_LINE_COMMAND,v.DELETE_CHARACTER_COMMAND].forEach(g=>{f.listenersToRemove.add(c.registerCommand(g, r(g),v.COMMAND_PRIORITY_CRITICAL))});b=g=>{const l=v.$getSelection();if(!V(l,a))return!1;if(N(l))return g.preventDefault(),g.stopPropagation(),f.clearText(),!0;v.$isRangeSelection(l)&&(g=h.$findMatchingParent(l.anchor.getNode(),n=>A(n)),A(g));return!1};f.listenersToRemove.add(c.registerCommand(v.KEY_BACKSPACE_COMMAND,b,v.COMMAND_PRIORITY_CRITICAL));f.listenersToRemove.add(c.registerCommand(v.KEY_DELETE_COMMAND,b,v.COMMAND_PRIORITY_CRITICAL));f.listenersToRemove.add(c.registerCommand(v.FORMAT_TEXT_COMMAND, g=>{let l=v.$getSelection();if(!V(l,a))return!1;if(N(l))return f.formatCells(g),!0;v.$isRangeSelection(l)&&(g=h.$findMatchingParent(l.anchor.getNode(),n=>A(n)),A(g));return!1},v.COMMAND_PRIORITY_CRITICAL));f.listenersToRemove.add(c.registerCommand(v.CONTROLLED_TEXT_INSERTION_COMMAND,()=>{var g=v.$getSelection();if(!V(g,a))return!1;N(g)?f.clearHighlight():v.$isRangeSelection(g)&&(g=h.$findMatchingParent(g.anchor.getNode(),l=>A(l)),A(g));return!1},v.COMMAND_PRIORITY_CRITICAL));d&&f.listenersToRemove.add(c.registerCommand(v.KEY_TAB_COMMAND, g=>{var l=v.$getSelection();if(!v.$isRangeSelection(l)||!l.isCollapsed()||!V(l,a))return!1;l=Ba(l.anchor.getNode());if(null===l)return!1;X(g);l=a.getCordsFromCellNode(l,f.table);za(f,a,l.x,l.y,g.shiftKey?"backward":"forward");return!0},v.COMMAND_PRIORITY_CRITICAL));f.listenersToRemove.add(c.registerCommand(v.FOCUS_COMMAND,()=>a.isSelected(),v.COMMAND_PRIORITY_HIGH));f.listenersToRemove.add(c.registerCommand(v.SELECTION_INSERT_CLIPBOARD_NODES_COMMAND,g=>{let {nodes:l,selection:n}=g;g=n.getStartEndPoints(); var p=N(n);p=v.$isRangeSelection(n)&&null!==h.$findMatchingParent(n.anchor.getNode(),G=>A(G))&&null!==h.$findMatchingParent(n.focus.getNode(),G=>A(G))||p;if(1!==l.length||!I(l[0])||!p||null===g)return!1;var [t]=g,u=l[0];g=u.getChildren();p=u.getFirstChildOrThrow().getChildrenSize();u=u.getChildrenSize();var x=h.$findMatchingParent(t.getNode(),G=>A(G)),E=(t=x&&h.$findMatchingParent(x,G=>F(G)))&&h.$findMatchingParent(t,G=>I(G));if(!A(x)||!F(t)||!I(E))return!1;var C=t.getIndexWithinParent(),K=Math.min(E.getChildrenSize()- 1,C+u-1);u=x.getIndexWithinParent();x=Math.min(t.getChildrenSize()-1,u+p-1);p=Math.min(u,x);t=Math.min(C,K);u=Math.max(u,x);C=Math.max(C,K);E=E.getChildren();K=0;let R,na;for(x=t;x<=C;x++){var aa=E[x];if(!F(aa))return!1;var ba=g[K];if(!F(ba))return!1;aa=aa.getChildren();ba=ba.getChildren();let G=0;for(let S=p;S<=u;S++){let T=aa[S];if(!A(T))return!1;let wa=ba[G];if(!A(wa))return!1;x===t&&S===p?R=T.getKey():x===C&&S===u&&(na=T.getKey());let Ea=T.getChildren();wa.getChildren().forEach(U=>{v.$isTextNode(U)&& v.$createParagraphNode().append(U);T.append(U)});Ea.forEach(U=>U.remove());G++}K++}R&&na&&(g=O(),g.set(l[0].getKey(),R,na),v.$setSelection(g));return!0},v.COMMAND_PRIORITY_CRITICAL));f.listenersToRemove.add(c.registerCommand(v.SELECTION_CHANGE_COMMAND,()=>{let g=v.$getSelection(),l=v.$getPreviousSelection();if(v.$isRangeSelection(g)){let {anchor:x,focus:E}=g;var n=x.getNode(),p=E.getNode();n=Ba(n);p=Ba(p);var t=n&&a.is(Ca(n)),u=p&&a.is(Ca(p));let C=t!==u;u=t&&u;t=g.isBackward();C?(n=g.clone(),n.focus.set(a.getKey(), t?0:a.getChildrenSize(),"element"),v.$setSelection(n),xa(c,f)):u&&!n.is(p)&&(f.setAnchorCellForSelection(e(n)),f.setFocusCellForSelection(e(p),!0))}if(g&&!g.is(l)&&(N(g)||N(l))&&f.tableSelection&&!f.tableSelection.is(l))return N(g)&&g.tableKey===f.tableNodeKey?f.updateTableTableSelection(g):!N(g)&&N(l)&&l.tableKey===f.tableNodeKey&&f.updateTableTableSelection(null),!1;f.hasHijackedSelectionStyles&&!a.isSelected()?ya(c,f):!f.hasHijackedSelectionStyles&&a.isSelected()&&xa(c,f);return!1},v.COMMAND_PRIORITY_CRITICAL)); return f};exports.getDOMCellFromTarget=sa;exports.getTableObserverFromTableElement=function(a){return a.__lexicalTableSelection}