@lexical/table 0.8.1 → 0.9.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LexicalTable.dev.js +678 -45
- package/LexicalTable.prod.js +54 -44
- package/LexicalTableUtils.d.ts +5 -1
- package/index.d.ts +2 -2
- package/package.json +3 -3
package/LexicalTable.prod.js
CHANGED
@@ -4,13 +4,13 @@
|
|
4
4
|
* This source code is licensed under the MIT license found in the
|
5
5
|
* LICENSE file in the root directory of this source tree.
|
6
6
|
*/
|
7
|
-
'use strict';var d=require("lexical"),
|
8
|
-
class
|
9
|
-
|
10
|
-
type:"tablecell",width:this.getWidth()}}getTag(){return this.hasHeader()?"th":"td"}setHeaderStyles(a){this.getWritable().__headerState=a;return this.__headerState}getHeaderStyles(){return this.getLatest().__headerState}setWidth(a){this.getWritable().__width=a;return this.__width}getWidth(){return this.getLatest().__width}toggleHeaderStyle(a){let b=
|
11
|
-
a)===a}hasHeader(){return this.getLatest().__headerState!==
|
12
|
-
function
|
13
|
-
class C extends d.DEPRECATED_GridRowNode{static getType(){return"tablerow"}static clone(a){return new C(a.__height,a.__key)}static importDOM(){return{tr:()=>({conversion:D,priority:0})}}static importJSON(a){return E(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`);
|
7
|
+
'use strict';var d=require("lexical"),q=require("@lexical/utils");let w={BOTH:3,COLUMN:2,NO_STATUS:0,ROW:1};
|
8
|
+
class x extends d.DEPRECATED_GridCellNode{static getType(){return"tablecell"}static clone(a){let b=new x(a.__headerState,a.__colSpan,a.__width,a.__key);b.__rowSpan=a.__rowSpan;return b}static importDOM(){return{td:()=>({conversion:z,priority:0}),th:()=>({conversion:z,priority:0})}}static importJSON(a){return A(a.headerState,a.colSpan,a.width||void 0)}constructor(a=w.NO_STATUS,b=1,e,h){super(b,h);this.__headerState=a;this.__width=e}createDOM(a){let b=document.createElement(this.getTag());this.__width&&
|
9
|
+
(b.style.width=`${this.__width}px`);1!==this.__colSpan&&(b.colSpan=this.__colSpan);1!==this.__rowSpan&&(b.rowSpan=this.__rowSpan);q.addClassNamesToElement(b,a.theme.tableCell,this.hasHeader()&&a.theme.tableCellHeader);return b}exportDOM(a){({element:a}=super.exportDOM(a));if(a){let b=this.getParentOrThrow().getChildrenSize();a.style.border="1px solid black";1!==this.__colSpan&&(a.colSpan=this.__colSpan);1!==this.__rowSpan&&(a.rowSpan=this.__rowSpan);a.style.width=`${this.getWidth()||Math.max(90,700/
|
10
|
+
b)}px`;a.style.verticalAlign="top";a.style.textAlign="start";this.hasHeader()&&(a.style.backgroundColor="#f2f3f5")}return{element:a}}exportJSON(){return{...super.exportJSON(),colSpan:super.__colSpan,headerState:this.__headerState,type:"tablecell",width:this.getWidth()}}getTag(){return this.hasHeader()?"th":"td"}setHeaderStyles(a){this.getWritable().__headerState=a;return this.__headerState}getHeaderStyles(){return this.getLatest().__headerState}setWidth(a){this.getWritable().__width=a;return this.__width}getWidth(){return this.getLatest().__width}toggleHeaderStyle(a){let b=
|
11
|
+
this.getWritable();b.__headerState=(b.__headerState&a)===a?b.__headerState-a:b.__headerState+a;return b}hasHeaderState(a){return(this.getHeaderStyles()&a)===a}hasHeader(){return this.getLatest().__headerState!==w.NO_STATUS}updateDOM(a){return a.__headerState!==this.__headerState||a.__width!==this.__width||a.__colSpan!==this.__colSpan||a.__rowSpan!==this.__rowSpan}isShadowRoot(){return!0}collapseAtStart(){return!0}canBeEmpty(){return!1}canIndent(){return!1}}
|
12
|
+
function z(a){var b=a.nodeName.toLowerCase();b=A("th"===b?w.ROW:w.NO_STATUS);b.__colSpan=a.colSpan;b.__rowSpan=a.rowSpan;return{forChild:(e,h)=>{if(B(h)&&!d.$isElementNode(e)){h=d.$createParagraphNode();if(d.$isLineBreakNode(e)&&"\n"===e.getTextContent())return null;h.append(e);return h}return e},node:b}}function A(a,b=1,e){return d.$applyNodeReplacement(new x(a,b,e))}function B(a){return a instanceof x}
|
13
|
+
class C extends d.DEPRECATED_GridRowNode{static getType(){return"tablerow"}static clone(a){return new C(a.__height,a.__key)}static importDOM(){return{tr:()=>({conversion:D,priority:0})}}static importJSON(a){return E(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`);q.addClassNamesToElement(b,a.theme.tableRow);return b}isShadowRoot(){return!0}setHeight(a){this.getWritable().__height=
|
14
14
|
a;return this.__height}getHeight(){return this.getLatest().__height}updateDOM(a){return a.__height!==this.__height}canBeEmpty(){return!1}canIndent(){return!1}}function D(){return{node:E()}}function E(a){return d.$applyNodeReplacement(new C(a))}function F(a){return a instanceof C}function G(a){throw Error(`Minified Lexical error #${a}; visit https://lexical.dev/docs/error?code=${a} for the full message or `+"use the non-minified dev environment for full errors and additional helpful warnings.");}
|
15
15
|
let H="undefined"!==typeof window&&"undefined"!==typeof window.document&&"undefined"!==typeof window.document.createElement;
|
16
16
|
class I{constructor(a,b){this.isHighlightingCells=!1;this.focusY=this.focusX=this.anchorY=this.anchorX=-1;this.listenersToRemove=new Set;this.tableNodeKey=b;this.editor=a;this.grid={cells:[],columns:0,rows:0};this.focusCell=this.anchorCell=this.focusCellNodeKey=this.anchorCellNodeKey=this.gridSelection=null;this.hasHijackedSelectionStyles=!1;this.trackTableGrid()}getGrid(){return this.grid}removeListeners(){Array.from(this.listenersToRemove).forEach(a=>a())}trackTableGrid(){let a=new MutationObserver(b=>
|
@@ -20,42 +20,52 @@ void 0)})}enableHighlightStyle(){this.editor.update(()=>{let a=this.editor.getEl
|
|
20
20
|
a&&a.gridKey===this.tableNodeKey?(this.gridSelection=a,this.isHighlightingCells=!0,this.disableHighlightStyle(),L(this.grid,this.gridSelection)):null==a&&this.clearHighlight()}setFocusCellForSelection(a,b=!1){this.editor.update(()=>{var e=d.$getNodeByKey(this.tableNodeKey);if(!K(e))throw Error("Expected TableNode.");if(!this.editor.getElementByKey(this.tableNodeKey))throw Error("Expected to find TableElement in DOM");e=a.x;let h=a.y;this.focusCell=a;if(null!==this.anchorCell){let c=H?(this.editor._window||
|
21
21
|
window).getSelection():null;c&&c.setBaseAndExtent(this.anchorCell.elem,0,this.focusCell.elem,0)}if(!this.isHighlightingCells&&(this.anchorX!==e||this.anchorY!==h||b))this.isHighlightingCells=!0,this.disableHighlightStyle();else if(e===this.focusX&&h===this.focusY)return;this.focusX=e;this.focusY=h;this.isHighlightingCells&&(e=d.$getNearestNodeFromDOMNode(a.elem),null!=this.gridSelection&&null!=this.anchorCellNodeKey&&B(e)&&(e=e.getKey(),this.gridSelection=this.gridSelection.clone()||d.DEPRECATED_$createGridSelection(),
|
22
22
|
this.focusCellNodeKey=e,this.gridSelection.set(this.tableNodeKey,this.anchorCellNodeKey,this.focusCellNodeKey),d.$setSelection(this.gridSelection),this.editor.dispatchCommand(d.SELECTION_CHANGE_COMMAND,void 0),L(this.grid,this.gridSelection)))})}setAnchorCellForSelection(a){this.isHighlightingCells=!1;this.anchorCell=a;this.anchorX=a.x;this.anchorY=a.y;this.editor.update(()=>{var b=d.$getNearestNodeFromDOMNode(a.elem);B(b)&&(b=b.getKey(),this.gridSelection=d.DEPRECATED_$createGridSelection(),this.anchorCellNodeKey=
|
23
|
-
b)})}formatCells(a){this.editor.update(()=>{let b=d.$getSelection();d.DEPRECATED_$isGridSelection(b)||G(11);let e=d.$createRangeSelection(),h=e.anchor,c=e.focus;b.getNodes().forEach(
|
24
|
-
var b=d.$getSelection();d.DEPRECATED_$isGridSelection(b)||G(11);b=b.getNodes().filter(B);b.length===this.grid.columns*this.grid.rows?(a.selectPrevious(),a.remove(),d.$getRoot().selectStart()):(b.forEach(e=>{if(d.$isElementNode(e)){let h=d.$createParagraphNode(),c=d.$createTextNode();h.append(c);e.append(h);e.getChildren().forEach(
|
23
|
+
b)})}formatCells(a){this.editor.update(()=>{let b=d.$getSelection();d.DEPRECATED_$isGridSelection(b)||G(11);let e=d.$createRangeSelection(),h=e.anchor,c=e.focus;b.getNodes().forEach(m=>{B(m)&&0!==m.getTextContentSize()&&(h.set(m.getKey(),0,"element"),c.set(m.getKey(),m.getChildrenSize(),"element"),e.formatText(a))});d.$setSelection(b);this.editor.dispatchCommand(d.SELECTION_CHANGE_COMMAND,void 0)})}clearText(){this.editor.update(()=>{let a=d.$getNodeByKey(this.tableNodeKey);if(!K(a))throw Error("Expected TableNode.");
|
24
|
+
var b=d.$getSelection();d.DEPRECATED_$isGridSelection(b)||G(11);b=b.getNodes().filter(B);b.length===this.grid.columns*this.grid.rows?(a.selectPrevious(),a.remove(),d.$getRoot().selectStart()):(b.forEach(e=>{if(d.$isElementNode(e)){let h=d.$createParagraphNode(),c=d.$createTextNode();h.append(c);e.append(h);e.getChildren().forEach(m=>{m!==h&&m.remove()})}}),L(this.grid,null),d.$setSelection(null),this.editor.dispatchCommand(d.SELECTION_CHANGE_COMMAND,void 0))})}}
|
25
25
|
function M(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}
|
26
|
-
function J(a){let b=[],e={cells:b,columns:0,rows:0};var h=a.firstChild;let c=a=0;for(b.length=0;null!=h;){var
|
27
|
-
function L(a,b){let e=[],h=new Set(b?b.getNodes():[]);N(a,(c,
|
28
|
-
function N(a,b){({cells:a}=a);for(let e=0;e<a.length;e++){let h=a[e];for(let c=0;c<h.length;c++){let
|
29
|
-
function
|
30
|
-
let R=(a,b,e,h,c)=>{const
|
31
|
-
default:return!1}},S=(a,b,e,h,c)=>{const
|
32
|
-
function T(a,b){if(d.$isRangeSelection(a)||d.DEPRECATED_$isGridSelection(a)){let e=b.isParentOf(a.anchor.getNode());a=b.isParentOf(a.focus.getNode());return e&&a}return!1}function
|
33
|
-
class U extends d.DEPRECATED_GridNode{static getType(){return"table"}static clone(a){return new U(a.__key)}static importDOM(){return{table:()=>({conversion:
|
34
|
-
c=document.createElement("tbody");c.append(...b.children);b=this.getFirstChildOrThrow();if(!F(b))throw Error("Expected to find row node.");b=b.getChildrenSize();for(let
|
26
|
+
function J(a){let b=[],e={cells:b,columns:0,rows:0};var h=a.firstChild;let c=a=0;for(b.length=0;null!=h;){var m=h.nodeName;if("TD"===m||"TH"===m)m={elem:h,highlighted:!1,x:a,y:c},h._cell=m,void 0===b[c]&&(b[c]=[]),b[c][a]=m;else if(m=h.firstChild,null!=m){h=m;continue}m=h.nextSibling;if(null!=m)a++,h=m;else if(m=h.parentNode,null!=m){h=m.nextSibling;if(null==h)break;c++;a=0}}e.columns=a+1;e.rows=c+1;return e}
|
27
|
+
function L(a,b){let e=[],h=new Set(b?b.getNodes():[]);N(a,(c,m)=>{let n=c.elem;h.has(m)?(c.highlighted=!0,n.style.setProperty("background-color","rgb(172, 206, 247)"),n.style.setProperty("caret-color","transparent"),e.push(c)):(c.highlighted=!1,n.style.removeProperty("background-color"),n.style.removeProperty("caret-color"),n.getAttribute("style")||n.removeAttribute("style"))});return e}
|
28
|
+
function N(a,b){({cells:a}=a);for(let e=0;e<a.length;e++){let h=a[e];for(let c=0;c<h.length;c++){let m=h[c],n=d.$getNearestNodeFromDOMNode(m.elem);null!==n&&b(m,n,{x:c,y:e})}}}function O(a){a.disableHighlightStyle();N(a.grid,b=>{let e=b.elem;b.highlighted=!0;e.style.setProperty("background-color","rgb(172, 206, 247)");e.style.setProperty("caret-color","transparent")})}
|
29
|
+
function aa(a){a.enableHighlightStyle();N(a.grid,b=>{let e=b.elem;b.highlighted=!1;e.style.removeProperty("background-color");e.style.removeProperty("caret-color");e.getAttribute("style")||e.removeAttribute("style")})}
|
30
|
+
let R=(a,b,e,h,c)=>{const m="forward"===c;switch(c){case "backward":case "forward":return e!==(m?a.grid.columns-1:0)?P(b.getCellNodeFromCordsOrThrow(e+(m?1:-1),h,a.grid)):h!==(m?a.grid.rows-1:0)?P(b.getCellNodeFromCordsOrThrow(m?0:a.grid.columns-1,h+(m?1:-1),a.grid)):m?b.selectNext():b.selectPrevious(),!0;case "up":return 0!==h?P(b.getCellNodeFromCordsOrThrow(e,h-1,a.grid)):b.selectPrevious(),!0;case "down":return h!==a.grid.rows-1?P(b.getCellNodeFromCordsOrThrow(e,h+1,a.grid)):b.selectNext(),!0;
|
31
|
+
default:return!1}},S=(a,b,e,h,c)=>{const m="forward"===c;switch(c){case "backward":case "forward":return e!==(m?a.grid.columns-1:0)&&a.setFocusCellForSelection(b.getCellFromCordsOrThrow(e+(m?1:-1),h,a.grid)),!0;case "up":return 0!==h?(a.setFocusCellForSelection(b.getCellFromCordsOrThrow(e,h-1,a.grid)),!0):!1;case "down":return h!==a.grid.rows-1?(a.setFocusCellForSelection(b.getCellFromCordsOrThrow(e,h+1,a.grid)),!0):!1;default:return!1}};
|
32
|
+
function T(a,b){if(d.$isRangeSelection(a)||d.DEPRECATED_$isGridSelection(a)){let e=b.isParentOf(a.anchor.getNode());a=b.isParentOf(a.focus.getNode());return e&&a}return!1}function P(a){let b=a.getChildren().find(e=>d.$isParagraphNode(e));d.$isParagraphNode(b)?b.selectEnd():a.selectEnd()}
|
33
|
+
class U extends d.DEPRECATED_GridNode{static getType(){return"table"}static clone(a){return new U(a.__key)}static importDOM(){return{table:()=>({conversion:ba,priority:1})}}static importJSON(){return V()}constructor(a){super(a)}exportJSON(){return{...super.exportJSON(),type:"table",version:1}}createDOM(a){let b=document.createElement("table");q.addClassNamesToElement(b,a.theme.table);return b}updateDOM(){return!1}exportDOM(a){return{...super.exportDOM(a),after:b=>{if(b){let e=b.cloneNode(),h=document.createElement("colgroup"),
|
34
|
+
c=document.createElement("tbody");c.append(...b.children);b=this.getFirstChildOrThrow();if(!F(b))throw Error("Expected to find row node.");b=b.getChildrenSize();for(let m=0;m<b;m++){let n=document.createElement("col");h.append(n)}e.replaceChildren(h,c);return e}}}}canExtractContents(){return!1}canBeEmpty(){return!1}isShadowRoot(){return!0}getCordsFromCellNode(a,b){let {rows:e,cells:h}=b;for(b=0;b<e;b++){var c=h[b];if(null==c)throw Error(`Row not found at y:${b}`);c=c.findIndex(({elem:m})=>d.$getNearestNodeFromDOMNode(m)===
|
35
35
|
a);if(-1!==c)return{x:c,y:b}}throw Error("Cell not found in table.");}getCellFromCords(a,b,e){({cells:e}=e);b=e[b];if(null==b)return null;a=b[a];return null==a?null:a}getCellFromCordsOrThrow(a,b,e){a=this.getCellFromCords(a,b,e);if(!a)throw Error("Cell not found at cords.");return a}getCellNodeFromCords(a,b,e){a=this.getCellFromCords(a,b,e);if(null==a)return null;a=d.$getNearestNodeFromDOMNode(a.elem);return B(a)?a:null}getCellNodeFromCordsOrThrow(a,b,e){a=this.getCellNodeFromCords(a,b,e);if(!a)throw Error("Node at cords not TableCellNode.");
|
36
|
-
return a}canSelectBefore(){return!0}canIndent(){return!1}}function
|
37
|
-
function
|
38
|
-
exports.$createTableNodeWithDimensions=function(a,b,e=!0){let h=
|
39
|
-
exports.$deleteTableColumn=function(a,b){let e=a.getChildren();for(let c=0;c<e.length;c++){var h=e[c];if(F(h)){h=h.getChildren();if(b>=h.length||0>b)throw Error("Table column target index out of range");h[b].remove()}}return a};
|
40
|
-
exports.$
|
41
|
-
|
42
|
-
exports.$
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
h.
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
d.$getSelection();if(!T(f,a))return!1;if(d
|
58
|
-
c.
|
59
|
-
|
60
|
-
d.DEPRECATED_$
|
61
|
-
|
36
|
+
return a}canSelectBefore(){return!0}canIndent(){return!1}}function ba(){return{node:V()}}function V(){return d.$applyNodeReplacement(new U)}function K(a){return a instanceof U}function W(a){a=q.$findMatchingParent(a,b=>F(b));if(F(a))return a;throw Error("Expected table cell to be inside of table row.");}function X(a){a=q.$findMatchingParent(a,b=>K(b));if(K(a))return a;throw Error("Expected table cell to be inside of table.");}
|
37
|
+
function Y(a,b){let e=X(a),{x:h,y:c}=e.getCordsFromCellNode(a,b);return{above:e.getCellNodeFromCords(h,c-1,b),below:e.getCellNodeFromCords(h,c+1,b),left:e.getCellNodeFromCords(h-1,c,b),right:e.getCellNodeFromCords(h+1,c,b)}}function Z(a){a=a.getFirstDescendant();if(null===a)throw Error("Unexpected empty cell");a.getParentOrThrow().selectStart()}let ca=d.createCommand("INSERT_TABLE_COMMAND");exports.$createTableCellNode=A;exports.$createTableNode=V;
|
38
|
+
exports.$createTableNodeWithDimensions=function(a,b,e=!0){let h=V();for(let m=0;m<a;m++){let n=E();for(let p=0;p<b;p++){var c=w.NO_STATUS;"object"===typeof e?(0===m&&e.rows&&(c|=w.ROW),0===p&&e.columns&&(c|=w.COLUMN)):e&&(0===m&&(c|=w.ROW),0===p&&(c|=w.COLUMN));c=A(c);let r=d.$createParagraphNode();r.append(d.$createTextNode());c.append(r);n.append(c)}h.append(n)}return h};exports.$createTableRowNode=E;
|
39
|
+
exports.$deleteTableColumn=function(a,b){let e=a.getChildren();for(let c=0;c<e.length;c++){var h=e[c];if(F(h)){h=h.getChildren();if(b>=h.length||0>b)throw Error("Table column target index out of range");h[b].remove()}}return a};
|
40
|
+
exports.$deleteTableColumn__EXPERIMENTAL=function(){var a=d.$getSelection();if(!d.$isRangeSelection(a)&&!d.DEPRECATED_$isGridSelection(a))throw Error("Expected a RangeSelection or GridSelection");var b=a.anchor.getNode();a=a.focus.getNode();let [e,,h]=d.DEPRECATED_$getNodeTriplet(b);[b]=d.DEPRECATED_$getNodeTriplet(a);let [c,m,n]=d.DEPRECATED_$computeGridMap(h,e,b);var {startColumn:p}=m;let {startRow:r,startColumn:v}=n;a=Math.min(p,v);p=Math.max(p+e.__colSpan-1,v+b.__colSpan-1);let u=p-a+1;if(c[0].length===
|
41
|
+
p-a+1)h.selectPrevious(),h.remove();else{var g=c.length;for(let f=0;f<g;f++)for(let k=a;k<=p;k++){let {cell:l,startColumn:t}=c[f][k];t<a?k===a&&l.setColSpan(l.__colSpan-Math.min(u,l.__colSpan-(a-t))):t+l.__colSpan-1>p?k===p&&l.setColSpan(l.__colSpan-(p-t+1)):l.remove()}a=c[r];b=a[v+b.__colSpan];void 0!==b?({cell:b}=b,Z(b)):({cell:b}=a[v-1],Z(b))}};
|
42
|
+
exports.$deleteTableRow__EXPERIMENTAL=function(){var a=d.$getSelection();if(!d.$isRangeSelection(a)&&!d.DEPRECATED_$isGridSelection(a))throw Error("Expected a RangeSelection or GridSelection");var b=a.anchor.getNode();a=a.focus.getNode();let [e,,h]=d.DEPRECATED_$getNodeTriplet(b);[a]=d.DEPRECATED_$getNodeTriplet(a);let [c,m,n]=d.DEPRECATED_$computeGridMap(h,e,a);({startRow:b}=m);var {startRow:p}=n;a=p+a.__rowSpan-1;if(c.length===a-b+1)h.remove();else{p=c[0].length;var r=c[a+1],v=h.getChildAtIndex(a+
|
43
|
+
1);if(!d.DEPRECATED_$isGridRowNode(v))throw Error(`Expected GridNode childAtIndex(${String(a+1)}) to be RowNode`);for(let k=a;k>=b;k--){for(var u=p-1;0<=u;u--){let {cell:l,startRow:t,startColumn:y}=c[k][u];if(y===u&&(k===b&&t<b&&l.setRowSpan(l.__rowSpan-(t-b)),t>=b&&t+l.__rowSpan-1>a))if(l.setRowSpan(l.__rowSpan-(a-t+1)),0===u){var g=v,f=l;let Q=g.getFirstChild();null!==Q?g.insertBefore(Q):g.append(f)}else({cell:g}=r[u-1]),g.insertAfter(l)}u=h.getChildAtIndex(k);if(!d.DEPRECATED_$isGridRowNode(u))throw Error(`Expected GridNode childAtIndex(${String(k)}) to be RowNode`);
|
44
|
+
u.remove()}void 0!==r?({cell:b}=r[0],Z(b)):({cell:b}=c[b-1][0],Z(b))}};exports.$getElementGridForTableNode=function(a,b){a=a.getElementByKey(b.getKey());if(null==a)throw Error("Table Element Not Found");return J(a)};exports.$getTableCellNodeFromLexicalNode=function(a){a=q.$findMatchingParent(a,b=>B(b));return B(a)?a:null};exports.$getTableColumnIndexFromTableCellNode=function(a){return W(a).getChildren().findIndex(b=>b.is(a))};exports.$getTableNodeFromLexicalNodeOrThrow=X;
|
45
|
+
exports.$getTableRowIndexFromTableCellNode=function(a){let b=W(a);return X(b).getChildren().findIndex(e=>e.is(b))};exports.$getTableRowNodeFromTableCellNodeOrThrow=W;
|
46
|
+
exports.$insertTableColumn=function(a,b,e=!0,h,c){let m=a.getChildren();for(let r=0;r<m.length;r++){let v=m[r];if(F(v))for(let u=0;u<h;u++){var n=v.getChildren();if(b>=n.length||0>b)throw Error("Table column target index out of range");n=n[b];B(n)||G(12);let {left:g,right:f}=Y(n,c);var p=w.NO_STATUS;if(g&&g.hasHeaderState(w.ROW)||f&&f.hasHeaderState(w.ROW))p|=w.ROW;p=A(p);p.append(d.$createParagraphNode());e?n.insertAfter(p):n.insertBefore(p)}}return a};
|
47
|
+
exports.$insertTableColumn__EXPERIMENTAL=function(a=!0){var b=d.$getSelection();if(!d.$isRangeSelection(b)&&!d.DEPRECATED_$isGridSelection(b))throw Error("Expected a RangeSelection or GridSelection");b=b.focus.getNode();let [e,,h]=d.DEPRECATED_$getNodeTriplet(b),[c,m]=d.DEPRECATED_$computeGridMap(h,e,e);b=c.length;var {startColumn:n}=m;if(a)for(a=n+e.__colSpan-1,n=0;n<b;n++){let {cell:p,startColumn:r}=c[n][a];r+p.__colSpan-1<=a?p.insertAfter(A(w.NO_STATUS)):p.setColSpan(p.__colSpan+1)}else for(a=
|
48
|
+
0;a<b;a++){let {cell:p,startColumn:r}=c[a][n];r===n?p.insertBefore(A(w.NO_STATUS)):p.setColSpan(p.__colSpan+1)}};
|
49
|
+
exports.$insertTableRow=function(a,b,e=!0,h,c){var m=a.getChildren();if(b>=m.length||0>b)throw Error("Table row target index out of range");b=m[b];if(F(b))for(m=0;m<h;m++){let p=b.getChildren(),r=p.length,v=E();for(let u=0;u<r;u++){var n=p[u];B(n)||G(12);let {above:g,below:f}=Y(n,c);n=w.NO_STATUS;let k=g&&g.getWidth()||f&&f.getWidth()||void 0;if(g&&g.hasHeaderState(w.COLUMN)||f&&f.hasHeaderState(w.COLUMN))n|=w.COLUMN;n=A(n,1,k);n.append(d.$createParagraphNode());v.append(n)}e?b.insertAfter(v):b.insertBefore(v)}else throw Error("Row before insertion index does not exist.");
|
50
|
+
return a};
|
51
|
+
exports.$insertTableRow__EXPERIMENTAL=function(a=!0){var b=d.$getSelection();if(!d.$isRangeSelection(b)&&!d.DEPRECATED_$isGridSelection(b))throw Error("Expected a RangeSelection or GridSelection");b=b.focus.getNode();let [e,,h]=d.DEPRECATED_$getNodeTriplet(b),[c,m]=d.DEPRECATED_$computeGridMap(h,e,e);b=c[0].length;var {startRow:n}=m;if(a){a=n+e.__rowSpan-1;var p=c[a];n=E();for(var r=0;r<b;r++){let {cell:v,startRow:u}=p[r];u+v.__rowSpan-1<=a?n.append(A(w.NO_STATUS)):v.setRowSpan(v.__rowSpan+1)}b=h.getChildAtIndex(a);
|
52
|
+
if(!d.DEPRECATED_$isGridRowNode(b))throw Error("focusEndRow is not a GridRowNode");b.insertAfter(n)}else{p=c[n];a=E();for(r=0;r<b;r++){let {cell:v,startRow:u}=p[r];u===n?a.append(A(w.NO_STATUS)):v.setRowSpan(v.__rowSpan+1)}b=h.getChildAtIndex(n);if(!d.DEPRECATED_$isGridRowNode(b))throw Error("focusEndRow is not a GridRowNode");b.insertBefore(a)}};exports.$isTableCellNode=B;exports.$isTableNode=K;exports.$isTableRowNode=F;
|
53
|
+
exports.$removeTableRowAtIndex=function(a,b){let e=a.getChildren();if(b>=e.length||0>b)throw Error("Expected table cell to be inside of table row.");e[b].remove();return a};exports.INSERT_TABLE_COMMAND=ca;exports.TableCellHeaderStates=w;exports.TableCellNode=x;exports.TableNode=U;exports.TableRowNode=C;exports.TableSelection=I;
|
54
|
+
exports.applyTableHandlers=function(a,b,e){let h=e.getRootElement();if(null===h)throw Error("No root element.");let c=new I(e,a.getKey());b.__lexicalTableSelection=c;let m=!1,n=!1;b.addEventListener("dblclick",g=>{let f=M(g.target);null!==f&&(g.preventDefault(),g.stopImmediatePropagation(),g.stopPropagation(),c.setAnchorCellForSelection(f),c.setFocusCellForSelection(f,!0),m=!1)});b.addEventListener("mousedown",g=>{setTimeout(()=>{if(0===g.button){var f=M(g.target);null!==f&&(g.preventDefault(),g.stopPropagation(),
|
55
|
+
g.stopImmediatePropagation(),c.setAnchorCellForSelection(f))}},0)});b.addEventListener("mousemove",g=>{n&&(g.preventDefault(),g.stopPropagation(),g.stopImmediatePropagation());if(m){let f=M(g.target);if(null!==f){let k=f.x,l=f.y;m&&(c.anchorX!==k||c.anchorY!==l||c.isHighlightingCells)&&(g.preventDefault(),c.setFocusCellForSelection(f))}}});b.addEventListener("mouseleave",()=>{});let p=g=>{0===g.button&&e.update(()=>{var f=d.$getSelection();const k=g.target;if(k instanceof Node){if(d.DEPRECATED_$isGridSelection(f)&&
|
56
|
+
f.gridKey===c.tableNodeKey&&h.contains(k))return c.clearHighlight();f=d.$getNearestNodeFromDOMNode(k);null!==f&&q.$findMatchingParent(f,d.DEPRECATED_$isGridNode)&&(m=!0)}})};window.addEventListener("mousedown",p);c.listenersToRemove.add(()=>window.removeEventListener("mousedown",p));let r=g=>{m&&(g.preventDefault(),g.stopPropagation());m=!1};window.addEventListener("mouseup",r);c.listenersToRemove.add(()=>window.removeEventListener("mouseup",r));b.addEventListener("mouseup",r);c.listenersToRemove.add(()=>
|
57
|
+
b.removeEventListener("mouseup",r));c.listenersToRemove.add(e.registerCommand(d.KEY_ARROW_DOWN_COMMAND,g=>{var f=d.$getSelection();if(!T(f,a))return!1;if(d.$isRangeSelection(f)){if(f.isCollapsed()){var k=q.$findMatchingParent(f.anchor.getNode(),t=>B(t));if(!B(k))return!1;var l=a.getCordsFromCellNode(k,c.grid);f=q.$findMatchingParent(f.anchor.getNode(),t=>d.$isElementNode(t));if(null==f)throw Error("Expected BlockNode Parent");if((k=k.getLastChild())&&f.isParentOf(k)||f===k||g.shiftKey)return g.preventDefault(),
|
58
|
+
g.stopImmediatePropagation(),g.stopPropagation(),g.shiftKey?(c.setAnchorCellForSelection(a.getCellFromCordsOrThrow(l.x,l.y,c.grid)),S(c,a,l.x,l.y,"down")):R(c,a,l.x,l.y,"down")}}else if(d.DEPRECATED_$isGridSelection(f)&&g.shiftKey){l=f.focus.getNode();if(!B(l))return!1;l=a.getCordsFromCellNode(l,c.grid);g.preventDefault();g.stopImmediatePropagation();g.stopPropagation();return S(c,a,l.x,l.y,"down")}return!1},d.COMMAND_PRIORITY_HIGH));c.listenersToRemove.add(e.registerCommand(d.KEY_ARROW_UP_COMMAND,
|
59
|
+
g=>{var f=d.$getSelection();if(!T(f,a))return!1;if(d.$isRangeSelection(f)){if(f.isCollapsed()){var k=q.$findMatchingParent(f.anchor.getNode(),t=>B(t));if(!B(k))return!1;var l=a.getCordsFromCellNode(k,c.grid);f=q.$findMatchingParent(f.anchor.getNode(),t=>d.$isElementNode(t));if(null==f)throw Error("Expected BlockNode Parent");if((k=k.getLastChild())&&f.isParentOf(k)||f===k||g.shiftKey)return g.preventDefault(),g.stopImmediatePropagation(),g.stopPropagation(),g.shiftKey?(c.setAnchorCellForSelection(a.getCellFromCordsOrThrow(l.x,
|
60
|
+
l.y,c.grid)),S(c,a,l.x,l.y,"up")):R(c,a,l.x,l.y,"up")}}else if(d.DEPRECATED_$isGridSelection(f)&&g.shiftKey){l=f.focus.getNode();if(!B(l))return!1;l=a.getCordsFromCellNode(l,c.grid);g.preventDefault();g.stopImmediatePropagation();g.stopPropagation();return S(c,a,l.x,l.y,"up")}return!1},d.COMMAND_PRIORITY_HIGH));c.listenersToRemove.add(e.registerCommand(d.KEY_ARROW_LEFT_COMMAND,g=>{var f=d.$getSelection();if(!T(f,a))return!1;if(d.$isRangeSelection(f)){if(f.isCollapsed()){var k=q.$findMatchingParent(f.anchor.getNode(),
|
61
|
+
l=>B(l));if(!B(k))return!1;k=a.getCordsFromCellNode(k,c.grid);if(null==q.$findMatchingParent(f.anchor.getNode(),l=>d.$isElementNode(l)))throw Error("Expected BlockNode Parent");if(0===f.anchor.offset||g.shiftKey)return g.preventDefault(),g.stopImmediatePropagation(),g.stopPropagation(),g.shiftKey?(c.setAnchorCellForSelection(a.getCellFromCordsOrThrow(k.x,k.y,c.grid)),S(c,a,k.x,k.y,"backward")):R(c,a,k.x,k.y,"backward")}}else if(d.DEPRECATED_$isGridSelection(f)&&g.shiftKey){f=f.focus.getNode();if(!B(f))return!1;
|
62
|
+
f=a.getCordsFromCellNode(f,c.grid);g.preventDefault();g.stopImmediatePropagation();g.stopPropagation();return S(c,a,f.x,f.y,"backward")}return!1},d.COMMAND_PRIORITY_HIGH));c.listenersToRemove.add(e.registerCommand(d.KEY_ARROW_RIGHT_COMMAND,g=>{var f=d.$getSelection();if(!T(f,a))return!1;if(d.$isRangeSelection(f)){if(f.isCollapsed()){var k=q.$findMatchingParent(f.anchor.getNode(),l=>B(l));if(!B(k))return!1;k=a.getCordsFromCellNode(k,c.grid);if(null==q.$findMatchingParent(f.anchor.getNode(),l=>d.$isElementNode(l)))throw Error("Expected BlockNode Parent");
|
63
|
+
if(f.anchor.offset===f.anchor.getNode().getTextContentSize()||g.shiftKey)return g.preventDefault(),g.stopImmediatePropagation(),g.stopPropagation(),g.shiftKey?(c.setAnchorCellForSelection(a.getCellFromCordsOrThrow(k.x,k.y,c.grid)),S(c,a,k.x,k.y,"forward")):R(c,a,k.x,k.y,"forward")}}else if(d.DEPRECATED_$isGridSelection(f)&&g.shiftKey){f=f.focus.getNode();if(!B(f))return!1;f=a.getCordsFromCellNode(f,c.grid);g.preventDefault();g.stopImmediatePropagation();g.stopPropagation();return S(c,a,f.x,f.y,"forward")}return!1},
|
64
|
+
d.COMMAND_PRIORITY_HIGH));let v=g=>()=>{var f=d.$getSelection();if(!T(f,a))return!1;if(d.DEPRECATED_$isGridSelection(f))return c.clearText(),!0;if(d.$isRangeSelection(f)){const t=q.$findMatchingParent(f.anchor.getNode(),y=>B(y));if(!B(t))return!1;var k=f.anchor.getNode(),l=f.focus.getNode();k=a.isParentOf(k);l=a.isParentOf(l);if(k&&!l||l&&!k)return c.clearText(),!0;k=(l=q.$findMatchingParent(f.anchor.getNode(),y=>d.$isElementNode(y)))&&q.$findMatchingParent(l,y=>d.$isElementNode(y)&&B(y.getParent()));
|
65
|
+
if(!d.$isElementNode(k)||!d.$isElementNode(l))return!1;if(g===d.DELETE_LINE_COMMAND&&null===k.getPreviousSibling())return!0;if((g===d.DELETE_CHARACTER_COMMAND||g===d.DELETE_WORD_COMMAND)&&f.isCollapsed()&&0===f.anchor.offset&&l!==k){f=l.getChildren();const y=d.$createParagraphNode();f.forEach(Q=>y.append(Q));l.replace(y);l.getWritable().__parent=t.getKey();return!0}}return!1};[d.DELETE_WORD_COMMAND,d.DELETE_LINE_COMMAND,d.DELETE_CHARACTER_COMMAND].forEach(g=>{c.listenersToRemove.add(e.registerCommand(g,
|
66
|
+
v(g),d.COMMAND_PRIORITY_CRITICAL))});let u=g=>{const f=d.$getSelection();if(!T(f,a))return!1;if(d.DEPRECATED_$isGridSelection(f))return g.preventDefault(),g.stopPropagation(),c.clearText(),!0;d.$isRangeSelection(f)&&(g=q.$findMatchingParent(f.anchor.getNode(),k=>B(k)),B(g));return!1};c.listenersToRemove.add(e.registerCommand(d.KEY_BACKSPACE_COMMAND,u,d.COMMAND_PRIORITY_CRITICAL));c.listenersToRemove.add(e.registerCommand(d.KEY_DELETE_COMMAND,u,d.COMMAND_PRIORITY_CRITICAL));c.listenersToRemove.add(e.registerCommand(d.FORMAT_TEXT_COMMAND,
|
67
|
+
g=>{let f=d.$getSelection();if(!T(f,a))return!1;if(d.DEPRECATED_$isGridSelection(f))return c.formatCells(g),!0;d.$isRangeSelection(f)&&(g=q.$findMatchingParent(f.anchor.getNode(),k=>B(k)),B(g));return!1},d.COMMAND_PRIORITY_CRITICAL));c.listenersToRemove.add(e.registerCommand(d.CONTROLLED_TEXT_INSERTION_COMMAND,()=>{var g=d.$getSelection();if(!T(g,a))return!1;d.DEPRECATED_$isGridSelection(g)?c.clearHighlight():d.$isRangeSelection(g)&&(g=q.$findMatchingParent(g.anchor.getNode(),f=>B(f)),B(g));return!1},
|
68
|
+
d.COMMAND_PRIORITY_CRITICAL));c.listenersToRemove.add(e.registerCommand(d.KEY_TAB_COMMAND,g=>{var f=d.$getSelection();if(!T(f,a))return!1;if(d.$isRangeSelection(f)){let k=q.$findMatchingParent(f.anchor.getNode(),l=>B(l));if(!B(k))return!1;if(f.isCollapsed())return f=a.getCordsFromCellNode(k,c.grid),g.preventDefault(),R(c,a,f.x,f.y,g.shiftKey?"backward":"forward"),!0}return!1},d.COMMAND_PRIORITY_HIGH));c.listenersToRemove.add(e.registerCommand(d.FOCUS_COMMAND,()=>a.isSelected(),d.COMMAND_PRIORITY_HIGH));
|
69
|
+
c.listenersToRemove.add(e.registerCommand(d.SELECTION_CHANGE_COMMAND,()=>{let g=d.$getSelection();var f=d.$getPreviousSelection();if(g&&d.$isRangeSelection(g)&&!g.isCollapsed()){var k=g.anchor.getNode(),l=g.focus.getNode();k=a.isParentOf(k);var t=a.isParentOf(l);l=k&&!t||t&&!k;k=k&&t&&!a.isSelected();if(l)return f=g.isBackward(),k=d.$createRangeSelection(),l=a.getKey(),k.anchor.set(g.anchor.key,g.anchor.offset,g.anchor.type),k.focus.set(l,f?0:a.getChildrenSize(),"element"),n=!0,d.$setSelection(k),
|
70
|
+
O(c),!0;if(k&&({grid:k}=c,g.getNodes().filter(B).length===k.rows*k.columns)){k=d.DEPRECATED_$createGridSelection();l=a.getKey();t=a.getFirstChildOrThrow().getFirstChild();let y=a.getLastChildOrThrow().getLastChild();if(null!=t&&null!=y)return k.set(l,t.getKey(),y.getKey()),d.$setSelection(k),c.updateTableGridSelection(k),!0}}if(g&&!g.is(f)&&(d.DEPRECATED_$isGridSelection(g)||d.DEPRECATED_$isGridSelection(f))&&c.gridSelection&&!c.gridSelection.is(f))return d.DEPRECATED_$isGridSelection(g)&&g.gridKey===
|
71
|
+
c.tableNodeKey?c.updateTableGridSelection(g):!d.DEPRECATED_$isGridSelection(g)&&d.DEPRECATED_$isGridSelection(f)&&f.gridKey===c.tableNodeKey&&c.updateTableGridSelection(null),!1;c.hasHijackedSelectionStyles&&!a.isSelected()?(aa(c),n=!1):!c.hasHijackedSelectionStyles&&a.isSelected()&&O(c);return!1},d.COMMAND_PRIORITY_CRITICAL));return c};exports.getCellFromTarget=M;exports.getTableSelectionFromTableElement=function(a){return a.__lexicalTableSelection}
|
package/LexicalTableUtils.d.ts
CHANGED
@@ -6,7 +6,7 @@
|
|
6
6
|
*
|
7
7
|
*/
|
8
8
|
import type { Grid } from './LexicalTableSelection';
|
9
|
-
import
|
9
|
+
import { LexicalNode } from 'lexical';
|
10
10
|
import { InsertTableCommandPayloadHeaders } from '.';
|
11
11
|
import { TableCellNode } from './LexicalTableCellNode';
|
12
12
|
import { TableNode } from './LexicalTableNode';
|
@@ -26,5 +26,9 @@ export declare type TableCellSiblings = {
|
|
26
26
|
export declare function $getTableCellSiblingsFromTableCellNode(tableCellNode: TableCellNode, grid: Grid): TableCellSiblings;
|
27
27
|
export declare function $removeTableRowAtIndex(tableNode: TableNode, indexToDelete: number): TableNode;
|
28
28
|
export declare function $insertTableRow(tableNode: TableNode, targetIndex: number, shouldInsertAfter: boolean | undefined, rowCount: number, grid: Grid): TableNode;
|
29
|
+
export declare function $insertTableRow__EXPERIMENTAL(insertAfter?: boolean): void;
|
29
30
|
export declare function $insertTableColumn(tableNode: TableNode, targetIndex: number, shouldInsertAfter: boolean | undefined, columnCount: number, grid: Grid): TableNode;
|
31
|
+
export declare function $insertTableColumn__EXPERIMENTAL(insertAfter?: boolean): void;
|
30
32
|
export declare function $deleteTableColumn(tableNode: TableNode, targetIndex: number): TableNode;
|
33
|
+
export declare function $deleteTableRow__EXPERIMENTAL(): void;
|
34
|
+
export declare function $deleteTableColumn__EXPERIMENTAL(): void;
|
package/index.d.ts
CHANGED
@@ -14,8 +14,8 @@ import { $createTableNode, $getElementGridForTableNode, $isTableNode, Serialized
|
|
14
14
|
import { $createTableRowNode, $isTableRowNode, SerializedTableRowNode, TableRowNode } from './LexicalTableRowNode';
|
15
15
|
import { TableSelection } from './LexicalTableSelection';
|
16
16
|
import { applyTableHandlers, getCellFromTarget, getTableSelectionFromTableElement } from './LexicalTableSelectionHelpers';
|
17
|
-
import { $createTableNodeWithDimensions, $deleteTableColumn, $getTableCellNodeFromLexicalNode, $getTableColumnIndexFromTableCellNode, $getTableNodeFromLexicalNodeOrThrow, $getTableRowIndexFromTableCellNode, $getTableRowNodeFromTableCellNodeOrThrow, $insertTableColumn, $insertTableRow, $removeTableRowAtIndex } from './LexicalTableUtils';
|
18
|
-
export { $createTableCellNode, $createTableNode, $createTableNodeWithDimensions, $createTableRowNode, $deleteTableColumn, $getElementGridForTableNode, $getTableCellNodeFromLexicalNode, $getTableColumnIndexFromTableCellNode, $getTableNodeFromLexicalNodeOrThrow, $getTableRowIndexFromTableCellNode, $getTableRowNodeFromTableCellNodeOrThrow, $insertTableColumn, $insertTableRow, $isTableCellNode, $isTableNode, $isTableRowNode, $removeTableRowAtIndex, applyTableHandlers, Cell, getCellFromTarget, getTableSelectionFromTableElement, HTMLTableElementWithWithTableSelectionState, TableCellHeaderStates, TableCellNode, TableNode, TableRowNode, TableSelection, };
|
17
|
+
import { $createTableNodeWithDimensions, $deleteTableColumn, $deleteTableColumn__EXPERIMENTAL, $deleteTableRow__EXPERIMENTAL, $getTableCellNodeFromLexicalNode, $getTableColumnIndexFromTableCellNode, $getTableNodeFromLexicalNodeOrThrow, $getTableRowIndexFromTableCellNode, $getTableRowNodeFromTableCellNodeOrThrow, $insertTableColumn, $insertTableColumn__EXPERIMENTAL, $insertTableRow, $insertTableRow__EXPERIMENTAL, $removeTableRowAtIndex } from './LexicalTableUtils';
|
18
|
+
export { $createTableCellNode, $createTableNode, $createTableNodeWithDimensions, $createTableRowNode, $deleteTableColumn, $deleteTableColumn__EXPERIMENTAL, $deleteTableRow__EXPERIMENTAL, $getElementGridForTableNode, $getTableCellNodeFromLexicalNode, $getTableColumnIndexFromTableCellNode, $getTableNodeFromLexicalNodeOrThrow, $getTableRowIndexFromTableCellNode, $getTableRowNodeFromTableCellNodeOrThrow, $insertTableColumn, $insertTableColumn__EXPERIMENTAL, $insertTableRow, $insertTableRow__EXPERIMENTAL, $isTableCellNode, $isTableNode, $isTableRowNode, $removeTableRowAtIndex, applyTableHandlers, Cell, getCellFromTarget, getTableSelectionFromTableElement, HTMLTableElementWithWithTableSelectionState, TableCellHeaderStates, TableCellNode, TableNode, TableRowNode, TableSelection, };
|
19
19
|
export type { SerializedTableCellNode, SerializedTableNode, SerializedTableRowNode, };
|
20
20
|
export declare type InsertTableCommandPayloadHeaders = Readonly<{
|
21
21
|
rows: boolean;
|
package/package.json
CHANGED
@@ -8,13 +8,13 @@
|
|
8
8
|
"table"
|
9
9
|
],
|
10
10
|
"license": "MIT",
|
11
|
-
"version": "0.
|
11
|
+
"version": "0.9.1",
|
12
12
|
"main": "LexicalTable.js",
|
13
13
|
"peerDependencies": {
|
14
|
-
"lexical": "0.
|
14
|
+
"lexical": "0.9.1"
|
15
15
|
},
|
16
16
|
"dependencies": {
|
17
|
-
"@lexical/utils": "0.
|
17
|
+
"@lexical/utils": "0.9.1"
|
18
18
|
},
|
19
19
|
"repository": {
|
20
20
|
"type": "git",
|