@lexical/table 0.12.6 → 0.13.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.
@@ -22,9 +22,6 @@ import type {
22
22
 
23
23
  import {
24
24
  ElementNode,
25
- deprecated_GridCellNode,
26
- deprecated_GridRowNode,
27
- deprecated_GridNode,
28
25
  } from 'lexical';
29
26
 
30
27
  /**
@@ -40,7 +37,9 @@ export const TableCellHeaderStates = {
40
37
 
41
38
  export type TableCellHeaderState = $Values<typeof TableCellHeaderStates>;
42
39
 
43
- declare export class TableCellNode extends deprecated_GridCellNode {
40
+ declare export class TableCellNode extends ElementNode {
41
+ __colSpan: number;
42
+ __rowSpan: number;
44
43
  __headerState: TableCellHeaderState;
45
44
  __width?: number;
46
45
  __backgroundColor: null | string;
@@ -58,6 +57,10 @@ declare export class TableCellNode extends deprecated_GridCellNode {
58
57
  selection: RangeSelection,
59
58
  ): null | ParagraphNode | TableCellNode;
60
59
  collapseAtStart(): true;
60
+ getColSpan(): number;
61
+ setColSpan(colSpan: number): this;
62
+ getRowSpan(): number;
63
+ setRowSpan(rowSpan: number): this;
61
64
  getTag(): string;
62
65
  setHeaderStyles(headerState: TableCellHeaderState): TableCellHeaderState;
63
66
  getHeaderStyles(): TableCellHeaderState;
@@ -78,42 +81,47 @@ declare export function $createTableCellNode(
78
81
  ): TableCellNode;
79
82
  declare export function $isTableCellNode(
80
83
  node: ?LexicalNode,
81
- ): boolean %checks(node instanceof TableCellNode);
84
+ ): node is TableCellNode;
82
85
 
83
86
  /**
84
87
  * LexicalTableNode
85
88
  */
86
89
 
87
- declare export class TableNode extends deprecated_GridNode {
90
+ export type TableMapValueType = {
91
+ cell: TableCellNode,
92
+ startRow: number,
93
+ startColumn: number,
94
+ };
95
+ export type TableMapType = Array<Array<TableMapValueType>>;
96
+
97
+ declare export class TableNode extends ElementNode {
88
98
  static getType(): string;
89
99
  static clone(node: TableNode): TableNode;
90
- constructor(grid: ?Grid, key?: NodeKey): void;
100
+ constructor(key?: NodeKey): void;
91
101
  createDOM(config: EditorConfig): HTMLElement;
92
102
  updateDOM(prevNode: TableNode, dom: HTMLElement): boolean;
93
103
  insertNewAfter(selection: RangeSelection): null | ParagraphNode | TableNode;
94
104
  collapseAtStart(): true;
95
105
  getCordsFromCellNode(
96
106
  tableCellNode: TableCellNode,
97
- grid: Grid,
107
+ table: TableDOMTable,
98
108
  ): {x: number, y: number};
99
- getCellFromCords(x: number, y: number, grid: Grid): ?Cell;
100
- getCellFromCordsOrThrow(x: number, y: number, grid: Grid): Cell;
101
- getCellNodeFromCords(x: number, y: number, grid: Grid): ?TableCellNode;
102
- getCellNodeFromCordsOrThrow(x: number, y: number, grid: Grid): TableCellNode;
103
- setGrid(grid: ?Grid): TableNode;
104
- getGrid(): ?Grid;
109
+ getDOMCellFromCords(x: number, y: number, table: TableDOMTable): ?TableDOMCell;
110
+ getDOMCellFromCordsOrThrow(x: number, y: number, table: TableDOMTable): TableDOMCell;
111
+ getCellNodeFromCords(x: number, y: number, table: TableDOMTable): ?TableCellNode;
112
+ getCellNodeFromCordsOrThrow(x: number, y: number, table: TableDOMTable): TableCellNode;
105
113
  canSelectBefore(): true;
106
114
  }
107
115
  declare export function $createTableNode(): TableNode;
108
116
  declare export function $isTableNode(
109
117
  node: ?LexicalNode,
110
- ): boolean %checks(node instanceof TableNode);
118
+ ): node is TableNode;
111
119
 
112
120
  /**
113
121
  * LexicalTableRowNode
114
122
  */
115
123
 
116
- declare export class TableRowNode extends deprecated_GridRowNode {
124
+ declare export class TableRowNode extends ElementNode {
117
125
  static getType(): string;
118
126
  static clone(node: TableRowNode): TableRowNode;
119
127
  constructor(height?: ?number, key?: NodeKey): void;
@@ -129,23 +137,23 @@ declare export class TableRowNode extends deprecated_GridRowNode {
129
137
  declare export function $createTableRowNode(): TableRowNode;
130
138
  declare export function $isTableRowNode(
131
139
  node: ?LexicalNode,
132
- ): boolean %checks(node instanceof TableRowNode);
140
+ ): node is TableRowNode;
133
141
 
134
142
  /**
135
143
  * LexicalTableSelectionHelpers
136
144
  */
137
145
 
138
- export type Cell = {
146
+ export type TableDOMCell = {
139
147
  elem: HTMLElement,
140
148
  highlighted: boolean,
141
149
  x: number,
142
150
  y: number,
143
151
  };
144
152
 
145
- export type Cells = Array<Array<Cell>>;
153
+ export type TableDOMRows = Array<Array<TableDOMCell>>;
146
154
 
147
- export type Grid = {
148
- cells: Cells,
155
+ export type TableDOMTable = {
156
+ cells: TableDOMRows,
149
157
  columns: number,
150
158
  rows: number,
151
159
  };
@@ -154,18 +162,18 @@ declare export function applyTableHandlers(
154
162
  tableNode: TableNode,
155
163
  tableElement: HTMLElement,
156
164
  editor: LexicalEditor,
157
- ): TableSelection;
165
+ ): TableObserver;
158
166
 
159
- declare export function $getElementGridForTableNode(
167
+ declare export function $getElementForTableNode(
160
168
  editor: LexicalEditor,
161
169
  tableNode: TableNode,
162
- ): Grid;
170
+ ): TableDOMTable;
163
171
 
164
- declare export function getTableSelectionFromTableElement(
172
+ declare export function getTableObserverFromTableElement(
165
173
  tableElement: HTMLElement,
166
- ): null | TableSelection;
174
+ ): null | TableObserver;
167
175
 
168
- declare export function getCellFromTarget(node: Node): Cell | null;
176
+ declare export function getDOMCellFromTarget(node: Node): null | TableDOMCell;
169
177
 
170
178
  /**
171
179
  * LexicalTableUtils
@@ -207,7 +215,7 @@ declare export function $insertTableRow(
207
215
  targetIndex: number,
208
216
  shouldInsertAfter?: boolean,
209
217
  rowCount: number,
210
- grid: Grid,
218
+ table: TableDOMTable,
211
219
  ): TableNode;
212
220
 
213
221
  declare export function $insertTableColumn(
@@ -215,7 +223,7 @@ declare export function $insertTableColumn(
215
223
  targetIndex: number,
216
224
  shouldInsertAfter?: boolean,
217
225
  columnCount: number,
218
- grid: Grid,
226
+ table: TableDOMTable,
219
227
  ): TableNode;
220
228
 
221
229
  declare export function $deleteTableColumn(
@@ -226,21 +234,43 @@ declare export function $deleteTableColumn(
226
234
  declare export function $insertTableRow__EXPERIMENTAL(
227
235
  insertAfter: boolean,
228
236
  ): void;
237
+
229
238
  declare export function $insertTableColumn__EXPERIMENTAL(
230
239
  insertAfter: boolean,
231
240
  ): void;
241
+
232
242
  declare export function $deleteTableRow__EXPERIMENTAL(): void;
243
+
233
244
  declare export function $deleteTableColumn__EXPERIMENTAL(): void;
245
+
234
246
  declare export function $unmergeCell(): void;
235
247
 
248
+ declare export function $computeGridMap(
249
+ table: TableNode,
250
+ cellA: TableCellNode,
251
+ cellB: TableCellNode,
252
+ ): [TableMapType, TableMapValueType, TableMapValueType];
253
+
254
+ declare export function $getNodeTriplet(
255
+ source: PointType | LexicalNode | TableCellNode,
256
+ ): [TableCellNode, TableRowNode, TableNode];
257
+
258
+ declare export function $getTableCellNodeRect(tableCellNode: TableCellNode): {
259
+ rowIndex: number;
260
+ columnIndex: number;
261
+ rowSpan: number;
262
+ colSpan: number;
263
+ } | null;
264
+
236
265
  /**
237
- * LexicalTableSelection.js
266
+ * LexicalTableObserver.js
238
267
  */
239
- declare export class TableSelection {
268
+
269
+ declare export class TableObserver {
240
270
  currentX: number;
241
271
  currentY: number;
242
272
  listenersToRemove: Set<() => void>;
243
- grid: Grid;
273
+ table: TableDOMTable;
244
274
  isHighlightingCells: boolean;
245
275
  isMouseDown: boolean;
246
276
  startX: number;
@@ -248,57 +278,71 @@ declare export class TableSelection {
248
278
  nodeKey: string;
249
279
  editor: LexicalEditor;
250
280
  constructor(editor: LexicalEditor, nodeKey: string): void;
251
- getGrid(): Grid;
281
+ getTable(): TableDOMTable;
252
282
  removeListeners(): void;
253
- trackTableGrid(): void;
283
+ trackTable(): void;
254
284
  clearHighlight(): void;
255
- setFocusCellForSelection(cell: Cell): void;
256
- setAnchorCellForSelection(cell: Cell): void;
285
+ setFocusCellForSelection(cell: TableDOMCell): void;
286
+ setAnchorCellForSelection(cell: TableDOMCell): void;
257
287
  formatCells(type: TextFormatType): void;
258
288
  clearText(): void;
259
289
  }
260
290
 
261
- declare export var INSERT_TABLE_COMMAND: LexicalCommand<{
262
- rows: string,
263
- columns: string,
264
- includeHeaders?: boolean,
265
- }>;
266
-
267
291
  /**
268
- * LexicalGridSelection.ts
292
+ * LexicalTableSelection.ts
269
293
  */
270
294
 
271
- export type GridSelectionShape = {
295
+ export type TableSelectionShape = {
272
296
  fromX: number,
273
297
  fromY: number,
274
298
  toX: number,
275
299
  toY: number,
276
300
  };
277
- declare export class GridSelection implements BaseSelection {
278
- gridKey: NodeKey;
301
+ declare export class TableSelection implements BaseSelection {
302
+ tableKey: NodeKey;
279
303
  anchor: PointType;
280
304
  focus: PointType;
281
305
  dirty: boolean;
282
- constructor(gridKey: NodeKey, anchor: PointType, focus: PointType): void;
306
+ constructor(tableKey: NodeKey, anchor: PointType, focus: PointType): void;
283
307
  is(selection: null | BaseSelection): boolean;
284
- set(gridKey: NodeKey, anchorCellKey: NodeKey, focusCellKey: NodeKey): void;
285
- clone(): GridSelection;
308
+ set(tableKey: NodeKey, anchorCellKey: NodeKey, focusCellKey: NodeKey): void;
309
+ clone(): TableSelection;
286
310
  getCharacterOffsets(): [number, number];
287
311
  extract(): Array<LexicalNode>;
288
312
  insertRawText(): void;
289
313
  insertText(): void;
290
314
  isCollapsed(): false;
291
315
  isBackward(): boolean;
292
- getShape(): GridSelectionShape;
316
+ getShape(): TableSelectionShape;
293
317
  getNodes(): Array<LexicalNode>;
294
318
  getTextContent(): string;
295
319
  insertNodes(nodes: Array<LexicalNode>): void;
320
+ getStartEndPoints(): [PointType, PointType];
296
321
  getCachedNodes(): null | Array<LexicalNode>;
297
322
  setCachedNodes(nodes: null | Array<LexicalNode>): void;
298
323
  }
299
324
 
300
- declare export function $isGridSelection(
325
+ declare export function $isTableSelection(
301
326
  x: ?mixed,
302
- ): boolean %checks(x instanceof GridSelection);
327
+ ): x is TableSelection;
328
+
329
+ declare export function $createTableSelection(): TableSelection;
330
+
331
+ /**
332
+ * LexicalTableCommands
333
+ */
334
+
335
+ export type InsertTableCommandPayloadHeaders =
336
+ | $ReadOnly<{
337
+ rows: boolean;
338
+ columns: boolean;
339
+ }>
340
+ | boolean;
341
+
342
+ export type InsertTableCommandPayload = $ReadOnly<{
343
+ columns: string;
344
+ rows: string;
345
+ includeHeaders?: InsertTableCommandPayloadHeaders;
346
+ }>;
303
347
 
304
- declare export function $createGridSelection(): GridSelection;
348
+ declare export var INSERT_TABLE_COMMAND: LexicalCommand<InsertTableCommandPayload>;