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