@productcloudos/editor 1.0.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.
- package/CHANGELOG.md +95 -0
- package/LICENSE +21 -0
- package/README.md +377 -0
- package/dist/pc-editor.esm.js +24820 -0
- package/dist/pc-editor.esm.js.map +1 -0
- package/dist/pc-editor.js +24877 -0
- package/dist/pc-editor.js.map +1 -0
- package/dist/pc-editor.min.js +2 -0
- package/dist/pc-editor.min.js.map +1 -0
- package/dist/types/lib/clipboard/ClipboardManager.d.ts +77 -0
- package/dist/types/lib/clipboard/ClipboardManager.d.ts.map +1 -0
- package/dist/types/lib/clipboard/HtmlConverter.d.ts +43 -0
- package/dist/types/lib/clipboard/HtmlConverter.d.ts.map +1 -0
- package/dist/types/lib/clipboard/index.d.ts +9 -0
- package/dist/types/lib/clipboard/index.d.ts.map +1 -0
- package/dist/types/lib/clipboard/types.d.ts +76 -0
- package/dist/types/lib/clipboard/types.d.ts.map +1 -0
- package/dist/types/lib/controls/BaseControl.d.ts +72 -0
- package/dist/types/lib/controls/BaseControl.d.ts.map +1 -0
- package/dist/types/lib/controls/index.d.ts +11 -0
- package/dist/types/lib/controls/index.d.ts.map +1 -0
- package/dist/types/lib/controls/rulers/HorizontalRuler.d.ts +55 -0
- package/dist/types/lib/controls/rulers/HorizontalRuler.d.ts.map +1 -0
- package/dist/types/lib/controls/rulers/RulerControl.d.ts +98 -0
- package/dist/types/lib/controls/rulers/RulerControl.d.ts.map +1 -0
- package/dist/types/lib/controls/rulers/VerticalRuler.d.ts +65 -0
- package/dist/types/lib/controls/rulers/VerticalRuler.d.ts.map +1 -0
- package/dist/types/lib/controls/rulers/index.d.ts +8 -0
- package/dist/types/lib/controls/rulers/index.d.ts.map +1 -0
- package/dist/types/lib/controls/rulers/types.d.ts +62 -0
- package/dist/types/lib/controls/rulers/types.d.ts.map +1 -0
- package/dist/types/lib/controls/types.d.ts +51 -0
- package/dist/types/lib/controls/types.d.ts.map +1 -0
- package/dist/types/lib/core/Document.d.ts +34 -0
- package/dist/types/lib/core/Document.d.ts.map +1 -0
- package/dist/types/lib/core/PCEditor.d.ts +761 -0
- package/dist/types/lib/core/PCEditor.d.ts.map +1 -0
- package/dist/types/lib/core/Page.d.ts +40 -0
- package/dist/types/lib/core/Page.d.ts.map +1 -0
- package/dist/types/lib/data/DataBinder.d.ts +11 -0
- package/dist/types/lib/data/DataBinder.d.ts.map +1 -0
- package/dist/types/lib/events/EventEmitter.d.ts +11 -0
- package/dist/types/lib/events/EventEmitter.d.ts.map +1 -0
- package/dist/types/lib/hit-test/HitTestManager.d.ts +81 -0
- package/dist/types/lib/hit-test/HitTestManager.d.ts.map +1 -0
- package/dist/types/lib/hit-test/index.d.ts +32 -0
- package/dist/types/lib/hit-test/index.d.ts.map +1 -0
- package/dist/types/lib/hit-test/types.d.ts +113 -0
- package/dist/types/lib/hit-test/types.d.ts.map +1 -0
- package/dist/types/lib/import/ContentAnalyzer.d.ts +76 -0
- package/dist/types/lib/import/ContentAnalyzer.d.ts.map +1 -0
- package/dist/types/lib/import/DocumentBuilder.d.ts +44 -0
- package/dist/types/lib/import/DocumentBuilder.d.ts.map +1 -0
- package/dist/types/lib/import/PDFImporter.d.ts +65 -0
- package/dist/types/lib/import/PDFImporter.d.ts.map +1 -0
- package/dist/types/lib/import/PDFParser.d.ts +46 -0
- package/dist/types/lib/import/PDFParser.d.ts.map +1 -0
- package/dist/types/lib/import/index.d.ts +9 -0
- package/dist/types/lib/import/index.d.ts.map +1 -0
- package/dist/types/lib/import/types.d.ts +182 -0
- package/dist/types/lib/import/types.d.ts.map +1 -0
- package/dist/types/lib/index.d.ts +16 -0
- package/dist/types/lib/index.d.ts.map +1 -0
- package/dist/types/lib/layout/FlowManager.d.ts +29 -0
- package/dist/types/lib/layout/FlowManager.d.ts.map +1 -0
- package/dist/types/lib/layout/LayoutEngine.d.ts +39 -0
- package/dist/types/lib/layout/LayoutEngine.d.ts.map +1 -0
- package/dist/types/lib/objects/BaseEmbeddedObject.d.ts +133 -0
- package/dist/types/lib/objects/BaseEmbeddedObject.d.ts.map +1 -0
- package/dist/types/lib/objects/EmbeddedObjectFactory.d.ts +57 -0
- package/dist/types/lib/objects/EmbeddedObjectFactory.d.ts.map +1 -0
- package/dist/types/lib/objects/ImageObject.d.ts +60 -0
- package/dist/types/lib/objects/ImageObject.d.ts.map +1 -0
- package/dist/types/lib/objects/TextBoxObject.d.ts +208 -0
- package/dist/types/lib/objects/TextBoxObject.d.ts.map +1 -0
- package/dist/types/lib/objects/index.d.ts +9 -0
- package/dist/types/lib/objects/index.d.ts.map +1 -0
- package/dist/types/lib/objects/table/TableCell.d.ts +165 -0
- package/dist/types/lib/objects/table/TableCell.d.ts.map +1 -0
- package/dist/types/lib/objects/table/TableCellMerger.d.ts +66 -0
- package/dist/types/lib/objects/table/TableCellMerger.d.ts.map +1 -0
- package/dist/types/lib/objects/table/TableObject.d.ts +434 -0
- package/dist/types/lib/objects/table/TableObject.d.ts.map +1 -0
- package/dist/types/lib/objects/table/TableResizeHandler.d.ts +80 -0
- package/dist/types/lib/objects/table/TableResizeHandler.d.ts.map +1 -0
- package/dist/types/lib/objects/table/TableRow.d.ts +65 -0
- package/dist/types/lib/objects/table/TableRow.d.ts.map +1 -0
- package/dist/types/lib/objects/table/index.d.ts +12 -0
- package/dist/types/lib/objects/table/index.d.ts.map +1 -0
- package/dist/types/lib/objects/table/types.d.ts +239 -0
- package/dist/types/lib/objects/table/types.d.ts.map +1 -0
- package/dist/types/lib/objects/types.d.ts +135 -0
- package/dist/types/lib/objects/types.d.ts.map +1 -0
- package/dist/types/lib/rendering/CanvasManager.d.ts +282 -0
- package/dist/types/lib/rendering/CanvasManager.d.ts.map +1 -0
- package/dist/types/lib/rendering/FlowingTextRenderer.d.ts +348 -0
- package/dist/types/lib/rendering/FlowingTextRenderer.d.ts.map +1 -0
- package/dist/types/lib/rendering/PDFGenerator.d.ts +103 -0
- package/dist/types/lib/rendering/PDFGenerator.d.ts.map +1 -0
- package/dist/types/lib/rendering/pdf-utils.d.ts +54 -0
- package/dist/types/lib/rendering/pdf-utils.d.ts.map +1 -0
- package/dist/types/lib/text/EditableTextRegion.d.ts +105 -0
- package/dist/types/lib/text/EditableTextRegion.d.ts.map +1 -0
- package/dist/types/lib/text/EmbeddedObjectManager.d.ts +97 -0
- package/dist/types/lib/text/EmbeddedObjectManager.d.ts.map +1 -0
- package/dist/types/lib/text/FieldFormatter.d.ts +26 -0
- package/dist/types/lib/text/FieldFormatter.d.ts.map +1 -0
- package/dist/types/lib/text/FlowingTextContent.d.ts +571 -0
- package/dist/types/lib/text/FlowingTextContent.d.ts.map +1 -0
- package/dist/types/lib/text/HyperlinkManager.d.ts +110 -0
- package/dist/types/lib/text/HyperlinkManager.d.ts.map +1 -0
- package/dist/types/lib/text/MarkdownParser.d.ts +55 -0
- package/dist/types/lib/text/MarkdownParser.d.ts.map +1 -0
- package/dist/types/lib/text/ParagraphFormatting.d.ts +123 -0
- package/dist/types/lib/text/ParagraphFormatting.d.ts.map +1 -0
- package/dist/types/lib/text/RegionManager.d.ts +75 -0
- package/dist/types/lib/text/RegionManager.d.ts.map +1 -0
- package/dist/types/lib/text/RepeatingSectionManager.d.ts +99 -0
- package/dist/types/lib/text/RepeatingSectionManager.d.ts.map +1 -0
- package/dist/types/lib/text/SubstitutionFieldManager.d.ts +153 -0
- package/dist/types/lib/text/SubstitutionFieldManager.d.ts.map +1 -0
- package/dist/types/lib/text/TextFormatting.d.ts +85 -0
- package/dist/types/lib/text/TextFormatting.d.ts.map +1 -0
- package/dist/types/lib/text/TextLayout.d.ts +126 -0
- package/dist/types/lib/text/TextLayout.d.ts.map +1 -0
- package/dist/types/lib/text/TextMeasurer.d.ts +107 -0
- package/dist/types/lib/text/TextMeasurer.d.ts.map +1 -0
- package/dist/types/lib/text/TextPositionCalculator.d.ts +72 -0
- package/dist/types/lib/text/TextPositionCalculator.d.ts.map +1 -0
- package/dist/types/lib/text/TextState.d.ts +236 -0
- package/dist/types/lib/text/TextState.d.ts.map +1 -0
- package/dist/types/lib/text/index.d.ts +27 -0
- package/dist/types/lib/text/index.d.ts.map +1 -0
- package/dist/types/lib/text/regions/BodyTextRegion.d.ts +68 -0
- package/dist/types/lib/text/regions/BodyTextRegion.d.ts.map +1 -0
- package/dist/types/lib/text/regions/FooterTextRegion.d.ts +68 -0
- package/dist/types/lib/text/regions/FooterTextRegion.d.ts.map +1 -0
- package/dist/types/lib/text/regions/HeaderTextRegion.d.ts +68 -0
- package/dist/types/lib/text/regions/HeaderTextRegion.d.ts.map +1 -0
- package/dist/types/lib/text/regions/index.d.ts +7 -0
- package/dist/types/lib/text/regions/index.d.ts.map +1 -0
- package/dist/types/lib/text/types.d.ts +268 -0
- package/dist/types/lib/text/types.d.ts.map +1 -0
- package/dist/types/lib/types/index.d.ts +206 -0
- package/dist/types/lib/types/index.d.ts.map +1 -0
- package/dist/types/lib/undo/index.d.ts +8 -0
- package/dist/types/lib/undo/index.d.ts.map +1 -0
- package/dist/types/lib/undo/transaction/ContentDiscovery.d.ts +101 -0
- package/dist/types/lib/undo/transaction/ContentDiscovery.d.ts.map +1 -0
- package/dist/types/lib/undo/transaction/FocusTracker.d.ts +49 -0
- package/dist/types/lib/undo/transaction/FocusTracker.d.ts.map +1 -0
- package/dist/types/lib/undo/transaction/MutationUndo.d.ts +57 -0
- package/dist/types/lib/undo/transaction/MutationUndo.d.ts.map +1 -0
- package/dist/types/lib/undo/transaction/ObjectMutationObserver.d.ts +79 -0
- package/dist/types/lib/undo/transaction/ObjectMutationObserver.d.ts.map +1 -0
- package/dist/types/lib/undo/transaction/TextMutationObserver.d.ts +60 -0
- package/dist/types/lib/undo/transaction/TextMutationObserver.d.ts.map +1 -0
- package/dist/types/lib/undo/transaction/TransactionManager.d.ts +148 -0
- package/dist/types/lib/undo/transaction/TransactionManager.d.ts.map +1 -0
- package/dist/types/lib/undo/transaction/index.d.ts +17 -0
- package/dist/types/lib/undo/transaction/index.d.ts.map +1 -0
- package/dist/types/lib/undo/transaction/types.d.ts +269 -0
- package/dist/types/lib/undo/transaction/types.d.ts.map +1 -0
- package/dist/types/lib/utils/blob-utils.d.ts +2 -0
- package/dist/types/lib/utils/blob-utils.d.ts.map +1 -0
- package/package.json +88 -0
|
@@ -0,0 +1,434 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* TableObject - An embedded table within text flow.
|
|
3
|
+
* Tables contain rows of cells, each with rich text content.
|
|
4
|
+
*/
|
|
5
|
+
import { BaseEmbeddedObject } from '../BaseEmbeddedObject';
|
|
6
|
+
import { EmbeddedObjectData, Point } from '../types';
|
|
7
|
+
import { Focusable } from '../../text/types';
|
|
8
|
+
import { TableRow } from './TableRow';
|
|
9
|
+
import { TableCell } from './TableCell';
|
|
10
|
+
import { TableObjectConfig, TableObjectData, TableColumnConfig, TableRowConfig, CellAddress, CellRange, ResolvedCell, TablePageLayout, TablePageSlice, TableRowLoop } from './types';
|
|
11
|
+
/**
|
|
12
|
+
* TableObject represents an embedded table in the document.
|
|
13
|
+
* It extends BaseEmbeddedObject for integration with the text flow system
|
|
14
|
+
* and implements Focusable for keyboard interaction.
|
|
15
|
+
*/
|
|
16
|
+
export declare class TableObject extends BaseEmbeddedObject implements Focusable {
|
|
17
|
+
private _rows;
|
|
18
|
+
private _columns;
|
|
19
|
+
private _defaultCellPadding;
|
|
20
|
+
private _defaultBorderColor;
|
|
21
|
+
private _defaultBorderWidth;
|
|
22
|
+
private _defaultFontFamily;
|
|
23
|
+
private _defaultFontSize;
|
|
24
|
+
private _defaultColor;
|
|
25
|
+
private _focusedCell;
|
|
26
|
+
private _editing;
|
|
27
|
+
private _selectedRange;
|
|
28
|
+
private _coveredCells;
|
|
29
|
+
private _rowLoops;
|
|
30
|
+
private _layoutDirty;
|
|
31
|
+
private _cachedRowHeights;
|
|
32
|
+
private _cachedRowPositions;
|
|
33
|
+
private _renderedSlices;
|
|
34
|
+
constructor(config: TableObjectConfig);
|
|
35
|
+
get objectType(): string;
|
|
36
|
+
/**
|
|
37
|
+
* Tables ONLY support block positioning.
|
|
38
|
+
* Override the setter to enforce this constraint.
|
|
39
|
+
*/
|
|
40
|
+
set position(value: 'inline' | 'block' | 'relative');
|
|
41
|
+
get position(): 'inline' | 'block' | 'relative';
|
|
42
|
+
get rows(): TableRow[];
|
|
43
|
+
get rowCount(): number;
|
|
44
|
+
get columns(): TableColumnConfig[];
|
|
45
|
+
get columnCount(): number;
|
|
46
|
+
/**
|
|
47
|
+
* Get all header rows.
|
|
48
|
+
*/
|
|
49
|
+
get headerRows(): TableRow[];
|
|
50
|
+
/**
|
|
51
|
+
* Get the number of header rows.
|
|
52
|
+
*/
|
|
53
|
+
get headerRowCount(): number;
|
|
54
|
+
/**
|
|
55
|
+
* Set a row as a header row.
|
|
56
|
+
* @param rowIndex The row index to set as header.
|
|
57
|
+
* @param isHeader Whether the row is a header (default true).
|
|
58
|
+
*/
|
|
59
|
+
setHeaderRow(rowIndex: number, isHeader?: boolean): void;
|
|
60
|
+
/**
|
|
61
|
+
* Set multiple rows as header rows.
|
|
62
|
+
* All rows from 0 to rowCount-1 will be set as headers.
|
|
63
|
+
* @param rowCount Number of header rows (starting from row 0).
|
|
64
|
+
*/
|
|
65
|
+
setHeaderRowCount(rowCount: number): void;
|
|
66
|
+
/**
|
|
67
|
+
* Calculate the total height of header rows.
|
|
68
|
+
* Used when rendering tables that span multiple pages.
|
|
69
|
+
*/
|
|
70
|
+
getHeaderHeight(): number;
|
|
71
|
+
/**
|
|
72
|
+
* Get the height of the first non-header (data) row.
|
|
73
|
+
* Returns 0 if there are no data rows.
|
|
74
|
+
* Used to determine if at least one data row can fit when splitting tables.
|
|
75
|
+
*/
|
|
76
|
+
getFirstDataRowHeight(): number;
|
|
77
|
+
/**
|
|
78
|
+
* Get header row indices.
|
|
79
|
+
*/
|
|
80
|
+
getHeaderRowIndices(): number[];
|
|
81
|
+
/**
|
|
82
|
+
* Get all header columns.
|
|
83
|
+
*/
|
|
84
|
+
get headerColumns(): TableColumnConfig[];
|
|
85
|
+
/**
|
|
86
|
+
* Get the number of header columns.
|
|
87
|
+
*/
|
|
88
|
+
get headerColumnCount(): number;
|
|
89
|
+
/**
|
|
90
|
+
* Set a column as a header column.
|
|
91
|
+
* @param colIndex The column index to set as header.
|
|
92
|
+
* @param isHeader Whether the column is a header (default true).
|
|
93
|
+
*/
|
|
94
|
+
setHeaderColumn(colIndex: number, isHeader?: boolean): void;
|
|
95
|
+
/**
|
|
96
|
+
* Set multiple columns as header columns.
|
|
97
|
+
* All columns from 0 to colCount-1 will be set as headers.
|
|
98
|
+
* @param colCount Number of header columns (starting from column 0).
|
|
99
|
+
*/
|
|
100
|
+
setHeaderColumnCount(colCount: number): void;
|
|
101
|
+
/**
|
|
102
|
+
* Get header column indices.
|
|
103
|
+
*/
|
|
104
|
+
getHeaderColumnIndices(): number[];
|
|
105
|
+
/**
|
|
106
|
+
* Check if a cell is in a header row or header column.
|
|
107
|
+
*/
|
|
108
|
+
isHeaderCell(rowIndex: number, colIndex: number): boolean;
|
|
109
|
+
get defaultCellPadding(): number;
|
|
110
|
+
set defaultCellPadding(value: number);
|
|
111
|
+
get defaultBorderColor(): string;
|
|
112
|
+
set defaultBorderColor(value: string);
|
|
113
|
+
get defaultBorderWidth(): number;
|
|
114
|
+
set defaultBorderWidth(value: number);
|
|
115
|
+
get defaultFontFamily(): string;
|
|
116
|
+
set defaultFontFamily(value: string);
|
|
117
|
+
get defaultFontSize(): number;
|
|
118
|
+
set defaultFontSize(value: number);
|
|
119
|
+
get defaultColor(): string;
|
|
120
|
+
set defaultColor(value: string);
|
|
121
|
+
/**
|
|
122
|
+
* Override the size setter to adjust only the last column/row
|
|
123
|
+
* when the table is resized via object handles.
|
|
124
|
+
*/
|
|
125
|
+
set size(value: {
|
|
126
|
+
width: number;
|
|
127
|
+
height: number;
|
|
128
|
+
});
|
|
129
|
+
get size(): {
|
|
130
|
+
width: number;
|
|
131
|
+
height: number;
|
|
132
|
+
};
|
|
133
|
+
/**
|
|
134
|
+
* Get a cell by row and column index.
|
|
135
|
+
*/
|
|
136
|
+
getCell(rowIndex: number, colIndex: number): TableCell | null;
|
|
137
|
+
/**
|
|
138
|
+
* Resolve a cell address, accounting for merged cells.
|
|
139
|
+
* If the address points to a cell covered by a merge, returns the origin cell.
|
|
140
|
+
*/
|
|
141
|
+
resolveCell(rowIndex: number, colIndex: number): ResolvedCell | null;
|
|
142
|
+
/**
|
|
143
|
+
* Get the cell at a given point (relative to table position).
|
|
144
|
+
* @param point Point in table-local coordinates
|
|
145
|
+
*/
|
|
146
|
+
getCellAtPoint(point: Point): CellAddress | null;
|
|
147
|
+
private setupRowListeners;
|
|
148
|
+
/**
|
|
149
|
+
* Set a column's width.
|
|
150
|
+
*/
|
|
151
|
+
setColumnWidth(colIndex: number, width: number): void;
|
|
152
|
+
/**
|
|
153
|
+
* Get column positions (X coordinates for each column).
|
|
154
|
+
*/
|
|
155
|
+
getColumnPositions(): number[];
|
|
156
|
+
/**
|
|
157
|
+
* Get column widths.
|
|
158
|
+
*/
|
|
159
|
+
getColumnWidths(): number[];
|
|
160
|
+
/**
|
|
161
|
+
* Insert a column at the specified index.
|
|
162
|
+
* If the column is inserted within a merged cell region, the merge is extended.
|
|
163
|
+
*/
|
|
164
|
+
insertColumn(colIndex: number, width?: number): void;
|
|
165
|
+
/**
|
|
166
|
+
* Remove a column at the specified index.
|
|
167
|
+
*/
|
|
168
|
+
removeColumn(colIndex: number): void;
|
|
169
|
+
/**
|
|
170
|
+
* Insert a row at the specified index.
|
|
171
|
+
* If the row is inserted within a merged cell region, the merge is extended.
|
|
172
|
+
*/
|
|
173
|
+
insertRow(rowIndex: number, config?: TableRowConfig): TableRow;
|
|
174
|
+
/**
|
|
175
|
+
* Remove a row at the specified index.
|
|
176
|
+
*/
|
|
177
|
+
removeRow(rowIndex: number): TableRow | null;
|
|
178
|
+
/**
|
|
179
|
+
* Generate a unique row loop ID.
|
|
180
|
+
*/
|
|
181
|
+
private generateRowLoopId;
|
|
182
|
+
/**
|
|
183
|
+
* Create a row loop for the specified row range.
|
|
184
|
+
* @param startRowIndex First row of the loop template (inclusive)
|
|
185
|
+
* @param endRowIndex Last row of the loop template (inclusive)
|
|
186
|
+
* @param fieldPath The array field path to iterate over (e.g., "items")
|
|
187
|
+
* @returns The created loop, or null if validation fails
|
|
188
|
+
*/
|
|
189
|
+
createRowLoop(startRowIndex: number, endRowIndex: number, fieldPath: string): TableRowLoop | null;
|
|
190
|
+
/**
|
|
191
|
+
* Remove a row loop by ID.
|
|
192
|
+
*/
|
|
193
|
+
removeRowLoop(id: string): boolean;
|
|
194
|
+
/**
|
|
195
|
+
* Get a row loop by ID.
|
|
196
|
+
*/
|
|
197
|
+
getRowLoop(id: string): TableRowLoop | undefined;
|
|
198
|
+
/**
|
|
199
|
+
* Get all row loops.
|
|
200
|
+
*/
|
|
201
|
+
getAllRowLoops(): TableRowLoop[];
|
|
202
|
+
/**
|
|
203
|
+
* Get the row loop that contains the specified row index, if any.
|
|
204
|
+
*/
|
|
205
|
+
getRowLoopAtRow(rowIndex: number): TableRowLoop | undefined;
|
|
206
|
+
/**
|
|
207
|
+
* Update a row loop's field path.
|
|
208
|
+
*/
|
|
209
|
+
updateRowLoopFieldPath(id: string, fieldPath: string): boolean;
|
|
210
|
+
/**
|
|
211
|
+
* Check if two loop ranges overlap.
|
|
212
|
+
*/
|
|
213
|
+
private loopRangesOverlap;
|
|
214
|
+
/**
|
|
215
|
+
* Shift row loop indices when rows are inserted or removed.
|
|
216
|
+
* @param fromIndex The row index where insertion/removal occurred
|
|
217
|
+
* @param delta Positive for insertion, negative for removal
|
|
218
|
+
*/
|
|
219
|
+
private shiftRowLoopIndices;
|
|
220
|
+
/**
|
|
221
|
+
* Get rows in a range (for loop expansion).
|
|
222
|
+
* @param startIndex Start row index (inclusive)
|
|
223
|
+
* @param endIndex End row index (inclusive)
|
|
224
|
+
*/
|
|
225
|
+
getRowsInRange(startIndex: number, endIndex: number): TableRow[];
|
|
226
|
+
/**
|
|
227
|
+
* Remove rows in a range (for loop expansion).
|
|
228
|
+
* @param startIndex Start row index (inclusive)
|
|
229
|
+
* @param endIndex End row index (inclusive)
|
|
230
|
+
*/
|
|
231
|
+
removeRowsInRange(startIndex: number, endIndex: number): TableRow[];
|
|
232
|
+
/**
|
|
233
|
+
* Insert multiple rows at a specific index (for loop expansion).
|
|
234
|
+
* @param index The index to insert at
|
|
235
|
+
* @param rows The rows to insert
|
|
236
|
+
*/
|
|
237
|
+
insertRowsAt(index: number, rows: TableRow[]): void;
|
|
238
|
+
/**
|
|
239
|
+
* Calculate layout for all cells.
|
|
240
|
+
* Uses caching to avoid recalculation when nothing has changed.
|
|
241
|
+
* @param ctx Canvas context for text measurement
|
|
242
|
+
* @param force Force recalculation even if cache is valid
|
|
243
|
+
*/
|
|
244
|
+
calculateLayout(ctx: CanvasRenderingContext2D, force?: boolean): void;
|
|
245
|
+
/**
|
|
246
|
+
* Mark the layout as needing recalculation.
|
|
247
|
+
*/
|
|
248
|
+
markLayoutDirty(): void;
|
|
249
|
+
/**
|
|
250
|
+
* Check if layout needs recalculation.
|
|
251
|
+
*/
|
|
252
|
+
get layoutDirty(): boolean;
|
|
253
|
+
/**
|
|
254
|
+
* Get cached row heights (call calculateLayout first).
|
|
255
|
+
*/
|
|
256
|
+
get cachedRowHeights(): number[];
|
|
257
|
+
/**
|
|
258
|
+
* Get cached row Y positions (call calculateLayout first).
|
|
259
|
+
*/
|
|
260
|
+
get cachedRowPositions(): number[];
|
|
261
|
+
/**
|
|
262
|
+
* Update table size based on current columns and rows.
|
|
263
|
+
*/
|
|
264
|
+
private updateSizeFromLayout;
|
|
265
|
+
/**
|
|
266
|
+
* Update the covered cells map based on current cell spans.
|
|
267
|
+
*/
|
|
268
|
+
private updateCoveredCells;
|
|
269
|
+
/**
|
|
270
|
+
* Set cell rendered positions based on table's rendered position.
|
|
271
|
+
*/
|
|
272
|
+
updateCellRenderedPositions(): void;
|
|
273
|
+
/**
|
|
274
|
+
* Calculate how the table should be split across multiple pages.
|
|
275
|
+
* @param availableHeightFirstPage Height available on the first page
|
|
276
|
+
* @param availableHeightOtherPages Height available on subsequent pages
|
|
277
|
+
* @returns TablePageLayout describing row distribution across pages
|
|
278
|
+
*/
|
|
279
|
+
calculatePageLayout(availableHeightFirstPage: number, availableHeightOtherPages: number): TablePageLayout;
|
|
280
|
+
/**
|
|
281
|
+
* Adjust slice end row to avoid breaking merged cells across pages.
|
|
282
|
+
* If a cell in the current slice spans past sliceEndRow, move the break earlier.
|
|
283
|
+
*/
|
|
284
|
+
private adjustSliceEndForMergedCells;
|
|
285
|
+
/**
|
|
286
|
+
* Render a specific page slice of the table.
|
|
287
|
+
* @param ctx Canvas context
|
|
288
|
+
* @param slice The page slice to render
|
|
289
|
+
* @param pageLayout The full page layout info
|
|
290
|
+
*/
|
|
291
|
+
renderSlice(ctx: CanvasRenderingContext2D, slice: TablePageSlice, pageLayout: TablePageLayout): void;
|
|
292
|
+
/**
|
|
293
|
+
* Get rows that should be rendered for a specific page slice.
|
|
294
|
+
* Includes header rows on continuation pages.
|
|
295
|
+
*/
|
|
296
|
+
getRowsForSlice(slice: TablePageSlice, pageLayout: TablePageLayout): TableRow[];
|
|
297
|
+
/**
|
|
298
|
+
* Check if this table needs to be split across multiple pages.
|
|
299
|
+
*/
|
|
300
|
+
needsPageSplit(availableHeight: number): boolean;
|
|
301
|
+
/**
|
|
302
|
+
* Set the rendered slice info for a specific page.
|
|
303
|
+
* Called by FlowingTextRenderer during rendering.
|
|
304
|
+
*/
|
|
305
|
+
setRenderedSlice(pageIndex: number, position: Point, height: number, slicePosition: 'only' | 'first' | 'middle' | 'last', sliceIndex?: number, yOffset?: number, headerHeight?: number): void;
|
|
306
|
+
/**
|
|
307
|
+
* Get the rendered slice info for a specific page.
|
|
308
|
+
*/
|
|
309
|
+
getRenderedSlice(pageIndex: number): {
|
|
310
|
+
position: Point;
|
|
311
|
+
height: number;
|
|
312
|
+
slicePosition: 'only' | 'first' | 'middle' | 'last';
|
|
313
|
+
sliceIndex: number;
|
|
314
|
+
yOffset: number;
|
|
315
|
+
headerHeight: number;
|
|
316
|
+
} | undefined;
|
|
317
|
+
/**
|
|
318
|
+
* Clear all rendered slice info (called before re-rendering).
|
|
319
|
+
*/
|
|
320
|
+
clearRenderedSlices(): void;
|
|
321
|
+
/**
|
|
322
|
+
* Get all page indices that have rendered slices.
|
|
323
|
+
*/
|
|
324
|
+
getRenderedPageIndices(): number[];
|
|
325
|
+
get editing(): boolean;
|
|
326
|
+
set editing(value: boolean);
|
|
327
|
+
get focusedCell(): CellAddress | null;
|
|
328
|
+
/**
|
|
329
|
+
* Focus a specific cell.
|
|
330
|
+
*/
|
|
331
|
+
focusCell(rowIndex: number, colIndex: number): void;
|
|
332
|
+
/**
|
|
333
|
+
* Move focus to next/previous cell.
|
|
334
|
+
*/
|
|
335
|
+
moveFocus(direction: 'next' | 'previous' | 'up' | 'down' | 'left' | 'right'): boolean;
|
|
336
|
+
focus(): void;
|
|
337
|
+
blur(): void;
|
|
338
|
+
hasFocus(): boolean;
|
|
339
|
+
handleKeyDown(e: KeyboardEvent): boolean;
|
|
340
|
+
onCursorBlink(handler: () => void): void;
|
|
341
|
+
offCursorBlink(handler: () => void): void;
|
|
342
|
+
handleDoubleClick(point: Point): void;
|
|
343
|
+
/**
|
|
344
|
+
* Get the currently selected cell range.
|
|
345
|
+
*/
|
|
346
|
+
get selectedRange(): CellRange | null;
|
|
347
|
+
/**
|
|
348
|
+
* Select a range of cells.
|
|
349
|
+
*/
|
|
350
|
+
selectRange(range: CellRange): void;
|
|
351
|
+
/**
|
|
352
|
+
* Clear the cell selection.
|
|
353
|
+
*/
|
|
354
|
+
clearSelection(): void;
|
|
355
|
+
/**
|
|
356
|
+
* Merge cells in the given range (or the current selection if no range provided).
|
|
357
|
+
* @param range Optional range to merge. If not provided, uses current selection.
|
|
358
|
+
* @returns MergeResult indicating success or failure.
|
|
359
|
+
*/
|
|
360
|
+
mergeCells(range?: CellRange): {
|
|
361
|
+
success: boolean;
|
|
362
|
+
error?: string;
|
|
363
|
+
};
|
|
364
|
+
/**
|
|
365
|
+
* Split a merged cell back into individual cells.
|
|
366
|
+
* @param row Row index of the merged cell.
|
|
367
|
+
* @param col Column index of the merged cell.
|
|
368
|
+
* @returns SplitResult indicating success or failure.
|
|
369
|
+
*/
|
|
370
|
+
splitCell(row: number, col: number): {
|
|
371
|
+
success: boolean;
|
|
372
|
+
error?: string;
|
|
373
|
+
};
|
|
374
|
+
/**
|
|
375
|
+
* Check if the given range can be merged.
|
|
376
|
+
*/
|
|
377
|
+
canMergeRange(range?: CellRange): {
|
|
378
|
+
canMerge: boolean;
|
|
379
|
+
error?: string;
|
|
380
|
+
};
|
|
381
|
+
/**
|
|
382
|
+
* Check if the cell at the given position can be split.
|
|
383
|
+
*/
|
|
384
|
+
canSplitCell(row: number, col: number): {
|
|
385
|
+
canSplit: boolean;
|
|
386
|
+
error?: string;
|
|
387
|
+
};
|
|
388
|
+
/**
|
|
389
|
+
* Render the table structure (backgrounds, borders).
|
|
390
|
+
* Text content is rendered separately by FlowingTextRenderer.
|
|
391
|
+
* @param ctx Canvas rendering context
|
|
392
|
+
* @param visibleRect Optional visible rectangle for culling (in table-local coordinates)
|
|
393
|
+
*/
|
|
394
|
+
render(ctx: CanvasRenderingContext2D, visibleRect?: {
|
|
395
|
+
y: number;
|
|
396
|
+
height: number;
|
|
397
|
+
}): void;
|
|
398
|
+
/**
|
|
399
|
+
* Render row loop indicators (colored stripe on left side of loop rows).
|
|
400
|
+
*/
|
|
401
|
+
private renderRowLoopIndicators;
|
|
402
|
+
/**
|
|
403
|
+
* Find the first row that is visible at or after the given Y position.
|
|
404
|
+
* Uses binary search for efficiency with large tables.
|
|
405
|
+
*/
|
|
406
|
+
private findFirstVisibleRow;
|
|
407
|
+
/**
|
|
408
|
+
* Find the last row that is visible at or before the given Y position.
|
|
409
|
+
* Uses binary search for efficiency with large tables.
|
|
410
|
+
*/
|
|
411
|
+
private findLastVisibleRow;
|
|
412
|
+
/**
|
|
413
|
+
* Get the visible row range for a given viewport.
|
|
414
|
+
* Useful for external code that needs to know which rows to process.
|
|
415
|
+
*/
|
|
416
|
+
getVisibleRowRange(visibleY: number, visibleHeight: number): {
|
|
417
|
+
startRow: number;
|
|
418
|
+
endRow: number;
|
|
419
|
+
};
|
|
420
|
+
/**
|
|
421
|
+
* Render the selection highlight for a range of cells.
|
|
422
|
+
*/
|
|
423
|
+
private renderRangeSelection;
|
|
424
|
+
private renderEditingIndicator;
|
|
425
|
+
toData(): EmbeddedObjectData;
|
|
426
|
+
static fromData(data: TableObjectData): TableObject;
|
|
427
|
+
/**
|
|
428
|
+
* Restore this table's structure from a snapshot.
|
|
429
|
+
* Used for undo/redo of structure changes.
|
|
430
|
+
*/
|
|
431
|
+
restoreFromSnapshot(data: TableObjectData): void;
|
|
432
|
+
clone(): TableObject;
|
|
433
|
+
}
|
|
434
|
+
//# sourceMappingURL=TableObject.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TableObject.d.ts","sourceRoot":"","sources":["../../../../../src/lib/objects/table/TableObject.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* TableResizeHandler - Handles column and row resize operations for tables.
|
|
3
|
+
*/
|
|
4
|
+
import { Point } from '../types';
|
|
5
|
+
import { TableObject } from './TableObject';
|
|
6
|
+
/**
|
|
7
|
+
* Type of resize handle being dragged.
|
|
8
|
+
*/
|
|
9
|
+
export type ResizeHandleType = 'column' | 'row' | null;
|
|
10
|
+
/**
|
|
11
|
+
* Information about a detected resize handle.
|
|
12
|
+
*/
|
|
13
|
+
export interface ResizeHandleInfo {
|
|
14
|
+
type: ResizeHandleType;
|
|
15
|
+
index: number;
|
|
16
|
+
position: number;
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* State for an active resize operation.
|
|
20
|
+
*/
|
|
21
|
+
export interface ResizeState {
|
|
22
|
+
table: TableObject;
|
|
23
|
+
handleType: ResizeHandleType;
|
|
24
|
+
index: number;
|
|
25
|
+
startPosition: number;
|
|
26
|
+
startSize: number;
|
|
27
|
+
nextStartSize?: number;
|
|
28
|
+
tablePosition: Point;
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* TableResizeHandler provides methods for detecting and handling
|
|
32
|
+
* column and row resize operations on tables.
|
|
33
|
+
*/
|
|
34
|
+
export declare class TableResizeHandler {
|
|
35
|
+
private _resizeState;
|
|
36
|
+
/**
|
|
37
|
+
* Get the current resize state.
|
|
38
|
+
*/
|
|
39
|
+
get resizeState(): ResizeState | null;
|
|
40
|
+
/**
|
|
41
|
+
* Check if currently resizing.
|
|
42
|
+
*/
|
|
43
|
+
get isResizing(): boolean;
|
|
44
|
+
/**
|
|
45
|
+
* Detect if a point is over a resize handle.
|
|
46
|
+
* @param table The table object
|
|
47
|
+
* @param point Point in canvas coordinates
|
|
48
|
+
* @param tablePosition The table's rendered position
|
|
49
|
+
* @returns Resize handle info if over a handle, null otherwise
|
|
50
|
+
*/
|
|
51
|
+
detectResizeHandle(table: TableObject, point: Point, tablePosition: Point, sliceHeight?: number): ResizeHandleInfo | null;
|
|
52
|
+
/**
|
|
53
|
+
* Start a resize operation.
|
|
54
|
+
* @param table The table being resized
|
|
55
|
+
* @param handleInfo The handle being dragged
|
|
56
|
+
* @param tablePosition The table's rendered position
|
|
57
|
+
*/
|
|
58
|
+
startResize(table: TableObject, handleInfo: ResizeHandleInfo, tablePosition: Point): void;
|
|
59
|
+
/**
|
|
60
|
+
* Update the resize during drag.
|
|
61
|
+
* For internal dividers, adjusts both adjacent columns/rows to keep total size constant.
|
|
62
|
+
* For edge dividers (last column/row), only adjusts that column/row.
|
|
63
|
+
* @param point Current mouse position in canvas coordinates
|
|
64
|
+
* @returns true if resize was updated, false otherwise
|
|
65
|
+
*/
|
|
66
|
+
updateResize(point: Point): boolean;
|
|
67
|
+
/**
|
|
68
|
+
* End the resize operation.
|
|
69
|
+
*/
|
|
70
|
+
endResize(): void;
|
|
71
|
+
/**
|
|
72
|
+
* Cancel the resize operation and restore original size.
|
|
73
|
+
*/
|
|
74
|
+
cancelResize(): void;
|
|
75
|
+
/**
|
|
76
|
+
* Get the cursor style for a resize handle type.
|
|
77
|
+
*/
|
|
78
|
+
static getCursorForHandle(handleType: ResizeHandleType): string;
|
|
79
|
+
}
|
|
80
|
+
//# sourceMappingURL=TableResizeHandler.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TableResizeHandler.d.ts","sourceRoot":"","sources":["../../../../../src/lib/objects/table/TableResizeHandler.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,KAAK,EAAE,MAAM,UAAU,CAAC;AACjC,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAE5C;;GAEG;AACH,MAAM,MAAM,gBAAgB,GAAG,QAAQ,GAAG,KAAK,GAAG,IAAI,CAAC;AAEvD;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,gBAAgB,CAAC;IACvB,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B,KAAK,EAAE,WAAW,CAAC;IACnB,UAAU,EAAE,gBAAgB,CAAC;IAC7B,KAAK,EAAE,MAAM,CAAC;IACd,aAAa,EAAE,MAAM,CAAC;IACtB,SAAS,EAAE,MAAM,CAAC;IAClB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,aAAa,EAAE,KAAK,CAAC;CACtB;AAOD;;;GAGG;AACH,qBAAa,kBAAkB;IAC7B,OAAO,CAAC,YAAY,CAA4B;IAEhD;;OAEG;IACH,IAAI,WAAW,IAAI,WAAW,GAAG,IAAI,CAEpC;IAED;;OAEG;IACH,IAAI,UAAU,IAAI,OAAO,CAExB;IAED;;;;;;OAMG;IACH,kBAAkB,CAChB,KAAK,EAAE,WAAW,EAClB,KAAK,EAAE,KAAK,EACZ,aAAa,EAAE,KAAK,EACpB,WAAW,CAAC,EAAE,MAAM,GACnB,gBAAgB,GAAG,IAAI;IA8C1B;;;;;OAKG;IACH,WAAW,CACT,KAAK,EAAE,WAAW,EAClB,UAAU,EAAE,gBAAgB,EAC5B,aAAa,EAAE,KAAK,GACnB,IAAI;IAiCP;;;;;;OAMG;IACH,YAAY,CAAC,KAAK,EAAE,KAAK,GAAG,OAAO;IAoEnC;;OAEG;IACH,SAAS,IAAI,IAAI;IAIjB;;OAEG;IACH,YAAY,IAAI,IAAI;IAsBpB;;OAEG;IACH,MAAM,CAAC,kBAAkB,CAAC,UAAU,EAAE,gBAAgB,GAAG,MAAM;CAUhE"}
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* TableRow - A row within a table containing cells.
|
|
3
|
+
*/
|
|
4
|
+
import { EventEmitter } from '../../events/EventEmitter';
|
|
5
|
+
import { TableCell } from './TableCell';
|
|
6
|
+
import { TableRowConfig, TableRowData, TableCellConfig } from './types';
|
|
7
|
+
/**
|
|
8
|
+
* TableRow represents a row in a table.
|
|
9
|
+
* It contains TableCell instances and manages row-level properties.
|
|
10
|
+
*/
|
|
11
|
+
export declare class TableRow extends EventEmitter {
|
|
12
|
+
private _id;
|
|
13
|
+
private _cells;
|
|
14
|
+
private _height;
|
|
15
|
+
private _minHeight;
|
|
16
|
+
private _isHeader;
|
|
17
|
+
private _calculatedHeight;
|
|
18
|
+
constructor(config: TableRowConfig, columnCount: number, defaultCellConfig?: Partial<TableCellConfig>);
|
|
19
|
+
private setupCellListeners;
|
|
20
|
+
get id(): string;
|
|
21
|
+
get cells(): TableCell[];
|
|
22
|
+
get cellCount(): number;
|
|
23
|
+
get height(): number | null;
|
|
24
|
+
set height(value: number | null);
|
|
25
|
+
get minHeight(): number;
|
|
26
|
+
set minHeight(value: number);
|
|
27
|
+
get isHeader(): boolean;
|
|
28
|
+
set isHeader(value: boolean);
|
|
29
|
+
get calculatedHeight(): number;
|
|
30
|
+
/**
|
|
31
|
+
* Get a cell by column index.
|
|
32
|
+
*/
|
|
33
|
+
getCell(colIndex: number): TableCell | null;
|
|
34
|
+
/**
|
|
35
|
+
* Add a cell to the row.
|
|
36
|
+
*/
|
|
37
|
+
addCell(cell: TableCell, index?: number): void;
|
|
38
|
+
/**
|
|
39
|
+
* Remove a cell from the row.
|
|
40
|
+
*/
|
|
41
|
+
removeCell(colIndex: number): TableCell | null;
|
|
42
|
+
/**
|
|
43
|
+
* Insert a new cell at the specified index.
|
|
44
|
+
*/
|
|
45
|
+
insertCell(colIndex: number, config?: TableCellConfig): TableCell;
|
|
46
|
+
/**
|
|
47
|
+
* Calculate the height needed for this row based on cell content.
|
|
48
|
+
* @param ctx Canvas context for text measurement
|
|
49
|
+
* @param columnWidths Array of column widths
|
|
50
|
+
* @returns The calculated height
|
|
51
|
+
*/
|
|
52
|
+
calculateHeight(ctx: CanvasRenderingContext2D, columnWidths: number[]): number;
|
|
53
|
+
/**
|
|
54
|
+
* Set the bounds for all cells in this row.
|
|
55
|
+
* @param rowY The Y position of this row
|
|
56
|
+
* @param columnPositions Array of X positions for each column
|
|
57
|
+
* @param columnWidths Array of column widths
|
|
58
|
+
* @param height The height of this row
|
|
59
|
+
*/
|
|
60
|
+
setCellBounds(rowY: number, columnPositions: number[], columnWidths: number[], height: number): void;
|
|
61
|
+
toData(): TableRowData;
|
|
62
|
+
static fromData(data: TableRowData): TableRow;
|
|
63
|
+
clone(): TableRow;
|
|
64
|
+
}
|
|
65
|
+
//# sourceMappingURL=TableRow.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TableRow.d.ts","sourceRoot":"","sources":["../../../../../src/lib/objects/table/TableRow.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AACzD,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,OAAO,EACL,cAAc,EACd,YAAY,EACZ,eAAe,EAEhB,MAAM,SAAS,CAAC;AASjB;;;GAGG;AACH,qBAAa,QAAS,SAAQ,YAAY;IACxC,OAAO,CAAC,GAAG,CAAS;IACpB,OAAO,CAAC,MAAM,CAAc;IAC5B,OAAO,CAAC,OAAO,CAAgB;IAC/B,OAAO,CAAC,UAAU,CAAS;IAC3B,OAAO,CAAC,SAAS,CAAU;IAC3B,OAAO,CAAC,iBAAiB,CAAa;gBAE1B,MAAM,EAAE,cAAc,EAAE,WAAW,EAAE,MAAM,EAAE,iBAAiB,CAAC,EAAE,OAAO,CAAC,eAAe,CAAC;IA6BrG,OAAO,CAAC,kBAAkB;IAsB1B,IAAI,EAAE,IAAI,MAAM,CAEf;IAED,IAAI,KAAK,IAAI,SAAS,EAAE,CAEvB;IAED,IAAI,SAAS,IAAI,MAAM,CAEtB;IAED,IAAI,MAAM,IAAI,MAAM,GAAG,IAAI,CAE1B;IAED,IAAI,MAAM,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,EAK9B;IAED,IAAI,SAAS,IAAI,MAAM,CAEtB;IAED,IAAI,SAAS,CAAC,KAAK,EAAE,MAAM,EAK1B;IAED,IAAI,QAAQ,IAAI,OAAO,CAEtB;IAED,IAAI,QAAQ,CAAC,KAAK,EAAE,OAAO,EAK1B;IAED,IAAI,gBAAgB,IAAI,MAAM,CAE7B;IAMD;;OAEG;IACH,OAAO,CAAC,QAAQ,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI;IAO3C;;OAEG;IACH,OAAO,CAAC,IAAI,EAAE,SAAS,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI;IAU9C;;OAEG;IACH,UAAU,CAAC,QAAQ,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI;IAS9C;;OAEG;IACH,UAAU,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,eAAe,GAAG,SAAS;IAmBjE;;;;;OAKG;IACH,eAAe,CAAC,GAAG,EAAE,wBAAwB,EAAE,YAAY,EAAE,MAAM,EAAE,GAAG,MAAM;IAiC9E;;;;;;OAMG;IACH,aAAa,CACX,IAAI,EAAE,MAAM,EACZ,eAAe,EAAE,MAAM,EAAE,EACzB,YAAY,EAAE,MAAM,EAAE,EACtB,MAAM,EAAE,MAAM,GACb,IAAI;IAmBP,MAAM,IAAI,YAAY;IAUtB,MAAM,CAAC,QAAQ,CAAC,IAAI,EAAE,YAAY,GAAG,QAAQ;IAkB7C,KAAK,IAAI,QAAQ;CAGlB"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Table module exports.
|
|
3
|
+
*/
|
|
4
|
+
export { TableObject } from './TableObject';
|
|
5
|
+
export { TableRow } from './TableRow';
|
|
6
|
+
export { TableCell } from './TableCell';
|
|
7
|
+
export { TableResizeHandler } from './TableResizeHandler';
|
|
8
|
+
export { TableCellMerger } from './TableCellMerger';
|
|
9
|
+
export type { MergeResult, SplitResult } from './TableCellMerger';
|
|
10
|
+
export type { ResizeHandleType, ResizeHandleInfo, ResizeState } from './TableResizeHandler';
|
|
11
|
+
export * from './types';
|
|
12
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/lib/objects/table/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AACtC,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACpD,YAAY,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAClE,YAAY,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAC5F,cAAc,SAAS,CAAC"}
|