@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.
Files changed (166) hide show
  1. package/CHANGELOG.md +95 -0
  2. package/LICENSE +21 -0
  3. package/README.md +377 -0
  4. package/dist/pc-editor.esm.js +24820 -0
  5. package/dist/pc-editor.esm.js.map +1 -0
  6. package/dist/pc-editor.js +24877 -0
  7. package/dist/pc-editor.js.map +1 -0
  8. package/dist/pc-editor.min.js +2 -0
  9. package/dist/pc-editor.min.js.map +1 -0
  10. package/dist/types/lib/clipboard/ClipboardManager.d.ts +77 -0
  11. package/dist/types/lib/clipboard/ClipboardManager.d.ts.map +1 -0
  12. package/dist/types/lib/clipboard/HtmlConverter.d.ts +43 -0
  13. package/dist/types/lib/clipboard/HtmlConverter.d.ts.map +1 -0
  14. package/dist/types/lib/clipboard/index.d.ts +9 -0
  15. package/dist/types/lib/clipboard/index.d.ts.map +1 -0
  16. package/dist/types/lib/clipboard/types.d.ts +76 -0
  17. package/dist/types/lib/clipboard/types.d.ts.map +1 -0
  18. package/dist/types/lib/controls/BaseControl.d.ts +72 -0
  19. package/dist/types/lib/controls/BaseControl.d.ts.map +1 -0
  20. package/dist/types/lib/controls/index.d.ts +11 -0
  21. package/dist/types/lib/controls/index.d.ts.map +1 -0
  22. package/dist/types/lib/controls/rulers/HorizontalRuler.d.ts +55 -0
  23. package/dist/types/lib/controls/rulers/HorizontalRuler.d.ts.map +1 -0
  24. package/dist/types/lib/controls/rulers/RulerControl.d.ts +98 -0
  25. package/dist/types/lib/controls/rulers/RulerControl.d.ts.map +1 -0
  26. package/dist/types/lib/controls/rulers/VerticalRuler.d.ts +65 -0
  27. package/dist/types/lib/controls/rulers/VerticalRuler.d.ts.map +1 -0
  28. package/dist/types/lib/controls/rulers/index.d.ts +8 -0
  29. package/dist/types/lib/controls/rulers/index.d.ts.map +1 -0
  30. package/dist/types/lib/controls/rulers/types.d.ts +62 -0
  31. package/dist/types/lib/controls/rulers/types.d.ts.map +1 -0
  32. package/dist/types/lib/controls/types.d.ts +51 -0
  33. package/dist/types/lib/controls/types.d.ts.map +1 -0
  34. package/dist/types/lib/core/Document.d.ts +34 -0
  35. package/dist/types/lib/core/Document.d.ts.map +1 -0
  36. package/dist/types/lib/core/PCEditor.d.ts +761 -0
  37. package/dist/types/lib/core/PCEditor.d.ts.map +1 -0
  38. package/dist/types/lib/core/Page.d.ts +40 -0
  39. package/dist/types/lib/core/Page.d.ts.map +1 -0
  40. package/dist/types/lib/data/DataBinder.d.ts +11 -0
  41. package/dist/types/lib/data/DataBinder.d.ts.map +1 -0
  42. package/dist/types/lib/events/EventEmitter.d.ts +11 -0
  43. package/dist/types/lib/events/EventEmitter.d.ts.map +1 -0
  44. package/dist/types/lib/hit-test/HitTestManager.d.ts +81 -0
  45. package/dist/types/lib/hit-test/HitTestManager.d.ts.map +1 -0
  46. package/dist/types/lib/hit-test/index.d.ts +32 -0
  47. package/dist/types/lib/hit-test/index.d.ts.map +1 -0
  48. package/dist/types/lib/hit-test/types.d.ts +113 -0
  49. package/dist/types/lib/hit-test/types.d.ts.map +1 -0
  50. package/dist/types/lib/import/ContentAnalyzer.d.ts +76 -0
  51. package/dist/types/lib/import/ContentAnalyzer.d.ts.map +1 -0
  52. package/dist/types/lib/import/DocumentBuilder.d.ts +44 -0
  53. package/dist/types/lib/import/DocumentBuilder.d.ts.map +1 -0
  54. package/dist/types/lib/import/PDFImporter.d.ts +65 -0
  55. package/dist/types/lib/import/PDFImporter.d.ts.map +1 -0
  56. package/dist/types/lib/import/PDFParser.d.ts +46 -0
  57. package/dist/types/lib/import/PDFParser.d.ts.map +1 -0
  58. package/dist/types/lib/import/index.d.ts +9 -0
  59. package/dist/types/lib/import/index.d.ts.map +1 -0
  60. package/dist/types/lib/import/types.d.ts +182 -0
  61. package/dist/types/lib/import/types.d.ts.map +1 -0
  62. package/dist/types/lib/index.d.ts +16 -0
  63. package/dist/types/lib/index.d.ts.map +1 -0
  64. package/dist/types/lib/layout/FlowManager.d.ts +29 -0
  65. package/dist/types/lib/layout/FlowManager.d.ts.map +1 -0
  66. package/dist/types/lib/layout/LayoutEngine.d.ts +39 -0
  67. package/dist/types/lib/layout/LayoutEngine.d.ts.map +1 -0
  68. package/dist/types/lib/objects/BaseEmbeddedObject.d.ts +133 -0
  69. package/dist/types/lib/objects/BaseEmbeddedObject.d.ts.map +1 -0
  70. package/dist/types/lib/objects/EmbeddedObjectFactory.d.ts +57 -0
  71. package/dist/types/lib/objects/EmbeddedObjectFactory.d.ts.map +1 -0
  72. package/dist/types/lib/objects/ImageObject.d.ts +60 -0
  73. package/dist/types/lib/objects/ImageObject.d.ts.map +1 -0
  74. package/dist/types/lib/objects/TextBoxObject.d.ts +208 -0
  75. package/dist/types/lib/objects/TextBoxObject.d.ts.map +1 -0
  76. package/dist/types/lib/objects/index.d.ts +9 -0
  77. package/dist/types/lib/objects/index.d.ts.map +1 -0
  78. package/dist/types/lib/objects/table/TableCell.d.ts +165 -0
  79. package/dist/types/lib/objects/table/TableCell.d.ts.map +1 -0
  80. package/dist/types/lib/objects/table/TableCellMerger.d.ts +66 -0
  81. package/dist/types/lib/objects/table/TableCellMerger.d.ts.map +1 -0
  82. package/dist/types/lib/objects/table/TableObject.d.ts +434 -0
  83. package/dist/types/lib/objects/table/TableObject.d.ts.map +1 -0
  84. package/dist/types/lib/objects/table/TableResizeHandler.d.ts +80 -0
  85. package/dist/types/lib/objects/table/TableResizeHandler.d.ts.map +1 -0
  86. package/dist/types/lib/objects/table/TableRow.d.ts +65 -0
  87. package/dist/types/lib/objects/table/TableRow.d.ts.map +1 -0
  88. package/dist/types/lib/objects/table/index.d.ts +12 -0
  89. package/dist/types/lib/objects/table/index.d.ts.map +1 -0
  90. package/dist/types/lib/objects/table/types.d.ts +239 -0
  91. package/dist/types/lib/objects/table/types.d.ts.map +1 -0
  92. package/dist/types/lib/objects/types.d.ts +135 -0
  93. package/dist/types/lib/objects/types.d.ts.map +1 -0
  94. package/dist/types/lib/rendering/CanvasManager.d.ts +282 -0
  95. package/dist/types/lib/rendering/CanvasManager.d.ts.map +1 -0
  96. package/dist/types/lib/rendering/FlowingTextRenderer.d.ts +348 -0
  97. package/dist/types/lib/rendering/FlowingTextRenderer.d.ts.map +1 -0
  98. package/dist/types/lib/rendering/PDFGenerator.d.ts +103 -0
  99. package/dist/types/lib/rendering/PDFGenerator.d.ts.map +1 -0
  100. package/dist/types/lib/rendering/pdf-utils.d.ts +54 -0
  101. package/dist/types/lib/rendering/pdf-utils.d.ts.map +1 -0
  102. package/dist/types/lib/text/EditableTextRegion.d.ts +105 -0
  103. package/dist/types/lib/text/EditableTextRegion.d.ts.map +1 -0
  104. package/dist/types/lib/text/EmbeddedObjectManager.d.ts +97 -0
  105. package/dist/types/lib/text/EmbeddedObjectManager.d.ts.map +1 -0
  106. package/dist/types/lib/text/FieldFormatter.d.ts +26 -0
  107. package/dist/types/lib/text/FieldFormatter.d.ts.map +1 -0
  108. package/dist/types/lib/text/FlowingTextContent.d.ts +571 -0
  109. package/dist/types/lib/text/FlowingTextContent.d.ts.map +1 -0
  110. package/dist/types/lib/text/HyperlinkManager.d.ts +110 -0
  111. package/dist/types/lib/text/HyperlinkManager.d.ts.map +1 -0
  112. package/dist/types/lib/text/MarkdownParser.d.ts +55 -0
  113. package/dist/types/lib/text/MarkdownParser.d.ts.map +1 -0
  114. package/dist/types/lib/text/ParagraphFormatting.d.ts +123 -0
  115. package/dist/types/lib/text/ParagraphFormatting.d.ts.map +1 -0
  116. package/dist/types/lib/text/RegionManager.d.ts +75 -0
  117. package/dist/types/lib/text/RegionManager.d.ts.map +1 -0
  118. package/dist/types/lib/text/RepeatingSectionManager.d.ts +99 -0
  119. package/dist/types/lib/text/RepeatingSectionManager.d.ts.map +1 -0
  120. package/dist/types/lib/text/SubstitutionFieldManager.d.ts +153 -0
  121. package/dist/types/lib/text/SubstitutionFieldManager.d.ts.map +1 -0
  122. package/dist/types/lib/text/TextFormatting.d.ts +85 -0
  123. package/dist/types/lib/text/TextFormatting.d.ts.map +1 -0
  124. package/dist/types/lib/text/TextLayout.d.ts +126 -0
  125. package/dist/types/lib/text/TextLayout.d.ts.map +1 -0
  126. package/dist/types/lib/text/TextMeasurer.d.ts +107 -0
  127. package/dist/types/lib/text/TextMeasurer.d.ts.map +1 -0
  128. package/dist/types/lib/text/TextPositionCalculator.d.ts +72 -0
  129. package/dist/types/lib/text/TextPositionCalculator.d.ts.map +1 -0
  130. package/dist/types/lib/text/TextState.d.ts +236 -0
  131. package/dist/types/lib/text/TextState.d.ts.map +1 -0
  132. package/dist/types/lib/text/index.d.ts +27 -0
  133. package/dist/types/lib/text/index.d.ts.map +1 -0
  134. package/dist/types/lib/text/regions/BodyTextRegion.d.ts +68 -0
  135. package/dist/types/lib/text/regions/BodyTextRegion.d.ts.map +1 -0
  136. package/dist/types/lib/text/regions/FooterTextRegion.d.ts +68 -0
  137. package/dist/types/lib/text/regions/FooterTextRegion.d.ts.map +1 -0
  138. package/dist/types/lib/text/regions/HeaderTextRegion.d.ts +68 -0
  139. package/dist/types/lib/text/regions/HeaderTextRegion.d.ts.map +1 -0
  140. package/dist/types/lib/text/regions/index.d.ts +7 -0
  141. package/dist/types/lib/text/regions/index.d.ts.map +1 -0
  142. package/dist/types/lib/text/types.d.ts +268 -0
  143. package/dist/types/lib/text/types.d.ts.map +1 -0
  144. package/dist/types/lib/types/index.d.ts +206 -0
  145. package/dist/types/lib/types/index.d.ts.map +1 -0
  146. package/dist/types/lib/undo/index.d.ts +8 -0
  147. package/dist/types/lib/undo/index.d.ts.map +1 -0
  148. package/dist/types/lib/undo/transaction/ContentDiscovery.d.ts +101 -0
  149. package/dist/types/lib/undo/transaction/ContentDiscovery.d.ts.map +1 -0
  150. package/dist/types/lib/undo/transaction/FocusTracker.d.ts +49 -0
  151. package/dist/types/lib/undo/transaction/FocusTracker.d.ts.map +1 -0
  152. package/dist/types/lib/undo/transaction/MutationUndo.d.ts +57 -0
  153. package/dist/types/lib/undo/transaction/MutationUndo.d.ts.map +1 -0
  154. package/dist/types/lib/undo/transaction/ObjectMutationObserver.d.ts +79 -0
  155. package/dist/types/lib/undo/transaction/ObjectMutationObserver.d.ts.map +1 -0
  156. package/dist/types/lib/undo/transaction/TextMutationObserver.d.ts +60 -0
  157. package/dist/types/lib/undo/transaction/TextMutationObserver.d.ts.map +1 -0
  158. package/dist/types/lib/undo/transaction/TransactionManager.d.ts +148 -0
  159. package/dist/types/lib/undo/transaction/TransactionManager.d.ts.map +1 -0
  160. package/dist/types/lib/undo/transaction/index.d.ts +17 -0
  161. package/dist/types/lib/undo/transaction/index.d.ts.map +1 -0
  162. package/dist/types/lib/undo/transaction/types.d.ts +269 -0
  163. package/dist/types/lib/undo/transaction/types.d.ts.map +1 -0
  164. package/dist/types/lib/utils/blob-utils.d.ts +2 -0
  165. package/dist/types/lib/utils/blob-utils.d.ts.map +1 -0
  166. package/package.json +88 -0
@@ -0,0 +1,208 @@
1
+ import { BaseEmbeddedObject } from './BaseEmbeddedObject';
2
+ import { TextBoxObjectConfig, EmbeddedObjectData, Point, TextBoxBorder, Rect } from './types';
3
+ import { FlowingTextContent } from '../text/FlowingTextContent';
4
+ import { FlowedLine, FlowedPage, Focusable } from '../text/types';
5
+ import { EditableTextRegion, RegionType } from '../text/EditableTextRegion';
6
+ /**
7
+ * Text box object - editable text within a box with flowing text support.
8
+ * Implements Focusable for unified focus management, delegating to internal FlowingTextContent.
9
+ * Implements EditableTextRegion for unified text interaction.
10
+ */
11
+ export declare class TextBoxObject extends BaseEmbeddedObject implements Focusable, EditableTextRegion {
12
+ private _content;
13
+ private _fontFamily;
14
+ private _fontSize;
15
+ private _color;
16
+ private _backgroundColor;
17
+ private _border;
18
+ private _padding;
19
+ private _editing;
20
+ private _flowingContent;
21
+ private _flowedLines;
22
+ private _flowedPage;
23
+ constructor(config: TextBoxObjectConfig);
24
+ get objectType(): string;
25
+ readonly type: RegionType;
26
+ get content(): string;
27
+ set content(value: string);
28
+ get fontFamily(): string;
29
+ set fontFamily(value: string);
30
+ get fontSize(): number;
31
+ set fontSize(value: number);
32
+ get color(): string;
33
+ set color(value: string);
34
+ get backgroundColor(): string;
35
+ set backgroundColor(value: string);
36
+ get border(): TextBoxBorder;
37
+ set border(value: TextBoxBorder);
38
+ /** @deprecated Use border instead */
39
+ get borderColor(): string;
40
+ /** @deprecated Use border instead */
41
+ set borderColor(value: string);
42
+ get padding(): number;
43
+ set padding(value: number);
44
+ get editing(): boolean;
45
+ set editing(value: boolean);
46
+ /**
47
+ * Get the internal FlowingTextContent for direct manipulation.
48
+ */
49
+ get flowingContent(): FlowingTextContent;
50
+ /**
51
+ * Get available text bounds (size minus padding and borders).
52
+ */
53
+ getTextBounds(): {
54
+ width: number;
55
+ height: number;
56
+ };
57
+ /**
58
+ * Get the text area offset (padding + border) from the top-left of the text box.
59
+ */
60
+ getTextOffset(): {
61
+ x: number;
62
+ y: number;
63
+ };
64
+ /**
65
+ * Get the text area bounds in global coordinates.
66
+ * This is the area where text is rendered, inside padding and borders.
67
+ * Returns null if the text box hasn't been positioned yet.
68
+ */
69
+ getTextAreaBounds(): {
70
+ x: number;
71
+ y: number;
72
+ width: number;
73
+ height: number;
74
+ } | null;
75
+ /**
76
+ * Render the text box container (background, border, indicators).
77
+ * Text content is rendered separately by FlowingTextRenderer.renderRegion().
78
+ * @param ctx Canvas rendering context (should be translated to text box position)
79
+ */
80
+ render(ctx: CanvasRenderingContext2D): void;
81
+ private renderBackground;
82
+ private renderBorder;
83
+ private drawBorderSide;
84
+ /**
85
+ * Get X position for a text index within a line.
86
+ * Used for vertical cursor navigation.
87
+ */
88
+ private getXPositionInLine;
89
+ private renderEditingBorder;
90
+ /**
91
+ * Move cursor vertically by one line.
92
+ * @param direction -1 for up, 1 for down
93
+ * @param ctx Canvas context for text measurement
94
+ * @returns true if cursor was moved, false if at boundary
95
+ */
96
+ moveCursorVertical(direction: -1 | 1, ctx: CanvasRenderingContext2D): boolean;
97
+ /**
98
+ * Find the text index at a given X position within a line.
99
+ */
100
+ private getTextIndexAtX;
101
+ /**
102
+ * Called when this control receives focus.
103
+ * Delegates to internal FlowingTextContent.
104
+ */
105
+ focus(): void;
106
+ /**
107
+ * Called when this control loses focus.
108
+ * Delegates to internal FlowingTextContent.
109
+ */
110
+ blur(): void;
111
+ /**
112
+ * Returns whether this control currently has focus.
113
+ */
114
+ hasFocus(): boolean;
115
+ /**
116
+ * Handle a keyboard event.
117
+ * @returns true if the event was handled, false otherwise
118
+ */
119
+ handleKeyDown(e: KeyboardEvent): boolean;
120
+ /**
121
+ * Subscribe to cursor blink events (for re-rendering).
122
+ * Delegates to internal FlowingTextContent.
123
+ */
124
+ onCursorBlink(handler: () => void): void;
125
+ /**
126
+ * Unsubscribe from cursor blink events.
127
+ * Delegates to internal FlowingTextContent.
128
+ */
129
+ offCursorBlink(handler: () => void): void;
130
+ handleDoubleClick(_point: Point): void;
131
+ /**
132
+ * Exit editing mode.
133
+ */
134
+ finishEditing(): void;
135
+ toData(): EmbeddedObjectData;
136
+ /**
137
+ * Restore the text box state from serialized data.
138
+ * Used for undo/redo operations.
139
+ */
140
+ restoreFromData(data: EmbeddedObjectData): void;
141
+ clone(): TextBoxObject;
142
+ /**
143
+ * Get the minimum size needed to fit the current content.
144
+ */
145
+ getContentSize(ctx: CanvasRenderingContext2D): {
146
+ width: number;
147
+ height: number;
148
+ };
149
+ /**
150
+ * Resize to fit the current content.
151
+ */
152
+ resizeToContent(ctx: CanvasRenderingContext2D): void;
153
+ /**
154
+ * Get the bounds of the text area within this text box on a specific page.
155
+ * Text boxes are single-page objects, so pageIndex is ignored.
156
+ * Returns the text area bounds (accounting for padding/borders) in canvas coordinates.
157
+ * This is the area where text is rendered, used by FlowingTextRenderer.renderRegion().
158
+ */
159
+ getRegionBounds(_pageIndex: number): Rect | null;
160
+ /**
161
+ * Convert a point from global (canvas) coordinates to local (text box) coordinates.
162
+ * @param point Point in canvas coordinates
163
+ * @param pageIndex The page index (ignored for text boxes)
164
+ * @returns Point in local coordinates, or null if point is outside this text box
165
+ */
166
+ globalToLocal(point: Point, pageIndex: number): Point | null;
167
+ /**
168
+ * Convert a point from local (text box) coordinates to global (canvas) coordinates.
169
+ * @param point Point in local coordinates
170
+ * @param pageIndex The page index (ignored for text boxes)
171
+ * @returns Point in canvas coordinates
172
+ */
173
+ localToGlobal(point: Point, pageIndex: number): Point;
174
+ /**
175
+ * Get the flowed lines for this text box.
176
+ * Text boxes don't span pages, so pageIndex is ignored.
177
+ */
178
+ getFlowedLines(_pageIndex: number): FlowedLine[];
179
+ /**
180
+ * Get all flowed pages for this text box.
181
+ * Text boxes have a single "page" of content.
182
+ */
183
+ getFlowedPages(): FlowedPage[];
184
+ /**
185
+ * Get the available width for text in this text box.
186
+ */
187
+ getAvailableWidth(): number;
188
+ /**
189
+ * Text boxes do not span multiple pages.
190
+ */
191
+ spansMultiplePages(): boolean;
192
+ /**
193
+ * Text boxes are always on a single page.
194
+ */
195
+ getPageCount(): number;
196
+ /**
197
+ * Check if a point is within this text box region.
198
+ * @param point Point in canvas coordinates
199
+ * @param pageIndex The page index (ignored for text boxes)
200
+ */
201
+ containsPointInRegion(point: Point, pageIndex: number): boolean;
202
+ /**
203
+ * Trigger a reflow of text in this text box.
204
+ * @param ctx Canvas context for text measurement
205
+ */
206
+ reflow(ctx: CanvasRenderingContext2D): void;
207
+ }
208
+ //# sourceMappingURL=TextBoxObject.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TextBoxObject.d.ts","sourceRoot":"","sources":["../../../../src/lib/objects/TextBoxObject.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,9 @@
1
+ export type { ObjectPosition, ResizeHandle, Size, Point, Rect, EmbeddedObjectConfig, EmbeddedObjectData, ImageObjectConfig, TextBoxObjectConfig, ImageFitMode, BorderStyle, BorderSide, TextBoxBorder } from './types';
2
+ export { DEFAULT_BORDER_SIDE } from './types';
3
+ export { BaseEmbeddedObject } from './BaseEmbeddedObject';
4
+ export { ImageObject } from './ImageObject';
5
+ export { TextBoxObject } from './TextBoxObject';
6
+ export { TableObject, TableRow, TableCell } from './table';
7
+ export type { TableObjectConfig, TableObjectData, TableRowConfig, TableRowData, TableCellConfig, TableCellData, TableColumnConfig, CellAddress, CellRange, CellBorder, CellPadding, VerticalAlign } from './table';
8
+ export { EmbeddedObjectFactory } from './EmbeddedObjectFactory';
9
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/lib/objects/index.ts"],"names":[],"mappings":"AACA,YAAY,EACV,cAAc,EACd,YAAY,EACZ,IAAI,EACJ,KAAK,EACL,IAAI,EACJ,oBAAoB,EACpB,kBAAkB,EAClB,iBAAiB,EACjB,mBAAmB,EACnB,YAAY,EACZ,WAAW,EACX,UAAU,EACV,aAAa,EACd,MAAM,SAAS,CAAC;AAEjB,OAAO,EAAE,mBAAmB,EAAE,MAAM,SAAS,CAAC;AAG9C,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAG1D,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAGhD,OAAO,EAAE,WAAW,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AAC3D,YAAY,EACV,iBAAiB,EACjB,eAAe,EACf,cAAc,EACd,YAAY,EACZ,eAAe,EACf,aAAa,EACb,iBAAiB,EACjB,WAAW,EACX,SAAS,EACT,UAAU,EACV,WAAW,EACX,aAAa,EACd,MAAM,SAAS,CAAC;AAGjB,OAAO,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAC"}
@@ -0,0 +1,165 @@
1
+ /**
2
+ * TableCell - A cell within a table that contains editable text.
3
+ * Implements EditableTextRegion for unified text interaction.
4
+ */
5
+ import { EventEmitter } from '../../events/EventEmitter';
6
+ import { FlowingTextContent } from '../../text/FlowingTextContent';
7
+ import { FlowedLine, FlowedPage, Focusable, SubstitutionFieldConfig } from '../../text/types';
8
+ import { EditableTextRegion, RegionType } from '../../text/EditableTextRegion';
9
+ import { Point, Rect } from '../../types';
10
+ import { TableCellConfig, TableCellData, CellBorder, CellPadding, VerticalAlign } from './types';
11
+ /**
12
+ * TableCell represents a single cell in a table.
13
+ * It contains FlowingTextContent for rich text editing and implements
14
+ * EditableTextRegion for unified text interaction.
15
+ */
16
+ export declare class TableCell extends EventEmitter implements EditableTextRegion, Focusable {
17
+ private _id;
18
+ readonly type: RegionType;
19
+ private _rowSpan;
20
+ private _colSpan;
21
+ private _backgroundColor;
22
+ private _border;
23
+ private _padding;
24
+ private _verticalAlign;
25
+ private _fontFamily;
26
+ private _fontSize;
27
+ private _color;
28
+ private _flowingContent;
29
+ private _flowedLines;
30
+ private _flowedPage;
31
+ private _bounds;
32
+ private _renderedPosition;
33
+ private _renderedPageIndex;
34
+ private _editing;
35
+ private _reflowDirty;
36
+ private _lastReflowWidth;
37
+ private _cachedContentHeight;
38
+ constructor(config: TableCellConfig);
39
+ get id(): string;
40
+ get rowSpan(): number;
41
+ set rowSpan(value: number);
42
+ get colSpan(): number;
43
+ set colSpan(value: number);
44
+ get backgroundColor(): string;
45
+ set backgroundColor(value: string);
46
+ get border(): CellBorder;
47
+ set border(value: CellBorder);
48
+ get padding(): CellPadding;
49
+ set padding(value: CellPadding);
50
+ get verticalAlign(): VerticalAlign;
51
+ set verticalAlign(value: VerticalAlign);
52
+ get fontFamily(): string;
53
+ set fontFamily(value: string);
54
+ get fontSize(): number;
55
+ set fontSize(value: number);
56
+ get color(): string;
57
+ set color(value: string);
58
+ get flowingContent(): FlowingTextContent;
59
+ get content(): string;
60
+ set content(value: string);
61
+ /**
62
+ * Insert a substitution field at the current cursor position.
63
+ * This is the only type of embedded content allowed in table cells.
64
+ */
65
+ insertSubstitutionField(fieldName: string, config?: SubstitutionFieldConfig): void;
66
+ /**
67
+ * Set the bounds of this cell within the table (table-local coordinates).
68
+ */
69
+ setBounds(bounds: Rect): void;
70
+ /**
71
+ * Get the bounds of this cell within the table.
72
+ */
73
+ getBounds(): Rect | null;
74
+ /**
75
+ * Set the rendered position (global canvas coordinates).
76
+ */
77
+ setRenderedPosition(pos: Point): void;
78
+ /**
79
+ * Get the rendered position.
80
+ */
81
+ getRenderedPosition(): Point | null;
82
+ /**
83
+ * Set the page index where this cell was rendered.
84
+ */
85
+ set renderedPageIndex(index: number);
86
+ /**
87
+ * Get the page index where this cell was rendered.
88
+ */
89
+ get renderedPageIndex(): number;
90
+ /**
91
+ * Get the content area bounds (inside padding and borders).
92
+ */
93
+ getContentBounds(): Rect | null;
94
+ /**
95
+ * Calculate the content height based on flowed text.
96
+ * Uses caching to avoid recalculation when nothing has changed.
97
+ */
98
+ getContentHeight(ctx: CanvasRenderingContext2D): number;
99
+ /**
100
+ * Get the bounds of this cell's text area in canvas coordinates.
101
+ */
102
+ getRegionBounds(_pageIndex: number): Rect | null;
103
+ /**
104
+ * Convert global (canvas) point to local (cell content) coordinates.
105
+ */
106
+ globalToLocal(point: Point, pageIndex: number): Point | null;
107
+ /**
108
+ * Convert local (cell content) point to global (canvas) coordinates.
109
+ */
110
+ localToGlobal(point: Point, pageIndex: number): Point;
111
+ /**
112
+ * Get flowed lines for this cell.
113
+ */
114
+ getFlowedLines(_pageIndex: number): FlowedLine[];
115
+ /**
116
+ * Get flowed pages (cells have one "page").
117
+ */
118
+ getFlowedPages(): FlowedPage[];
119
+ /**
120
+ * Get available width for text.
121
+ */
122
+ getAvailableWidth(): number;
123
+ /**
124
+ * Cells don't span multiple pages.
125
+ */
126
+ spansMultiplePages(): boolean;
127
+ /**
128
+ * Cells have one page.
129
+ */
130
+ getPageCount(): number;
131
+ /**
132
+ * Check if a point is within this cell.
133
+ */
134
+ containsPointInRegion(point: Point, pageIndex: number): boolean;
135
+ /**
136
+ * Reflow text within this cell.
137
+ * Uses caching to avoid unnecessary reflow operations.
138
+ */
139
+ reflow(ctx: CanvasRenderingContext2D): void;
140
+ /**
141
+ * Mark this cell as needing reflow.
142
+ * Call this when cell bounds change.
143
+ */
144
+ markReflowDirty(): void;
145
+ get editing(): boolean;
146
+ set editing(value: boolean);
147
+ focus(): void;
148
+ blur(): void;
149
+ hasFocus(): boolean;
150
+ handleKeyDown(e: KeyboardEvent): boolean;
151
+ onCursorBlink(handler: () => void): void;
152
+ offCursorBlink(handler: () => void): void;
153
+ /**
154
+ * Render the cell background and border.
155
+ * Text content is rendered separately by FlowingTextRenderer.
156
+ */
157
+ render(ctx: CanvasRenderingContext2D): void;
158
+ private renderBackground;
159
+ private renderBorder;
160
+ private renderBorderSide;
161
+ toData(): TableCellData;
162
+ static fromData(data: TableCellData): TableCell;
163
+ clone(): TableCell;
164
+ }
165
+ //# sourceMappingURL=TableCell.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TableCell.d.ts","sourceRoot":"","sources":["../../../../../src/lib/objects/table/TableCell.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,66 @@
1
+ /**
2
+ * TableCellMerger - Handles cell merge and split operations for tables.
3
+ */
4
+ import { TableObject } from './TableObject';
5
+ import { TableCell } from './TableCell';
6
+ import { CellRange } from './types';
7
+ /**
8
+ * Result of a merge operation.
9
+ */
10
+ export interface MergeResult {
11
+ success: boolean;
12
+ error?: string;
13
+ mergedCell?: TableCell;
14
+ }
15
+ /**
16
+ * Result of a split operation.
17
+ */
18
+ export interface SplitResult {
19
+ success: boolean;
20
+ error?: string;
21
+ newCells?: TableCell[];
22
+ }
23
+ /**
24
+ * TableCellMerger provides utilities for merging and splitting table cells.
25
+ */
26
+ export declare class TableCellMerger {
27
+ /**
28
+ * Normalize a cell range so start is always top-left and end is bottom-right.
29
+ */
30
+ static normalizeRange(range: CellRange): CellRange;
31
+ /**
32
+ * Check if a range is valid for the given table.
33
+ */
34
+ static isValidRange(table: TableObject, range: CellRange): boolean;
35
+ /**
36
+ * Check if a cell range can be merged.
37
+ * Returns an error message if it cannot be merged, or null if it can.
38
+ */
39
+ static canMerge(table: TableObject, range: CellRange): string | null;
40
+ /**
41
+ * Merge cells in the given range.
42
+ * The top-left cell becomes the merged cell, other cells are cleared.
43
+ */
44
+ static mergeCells(table: TableObject, range: CellRange): MergeResult;
45
+ /**
46
+ * Check if a cell can be split.
47
+ */
48
+ static canSplit(table: TableObject, row: number, col: number): string | null;
49
+ /**
50
+ * Split a merged cell back into individual cells.
51
+ */
52
+ static splitCell(table: TableObject, row: number, col: number): SplitResult;
53
+ /**
54
+ * Get all cells in a range (accounting for merged cells).
55
+ */
56
+ static getCellsInRange(table: TableObject, range: CellRange): TableCell[];
57
+ /**
58
+ * Check if two ranges overlap.
59
+ */
60
+ static rangesOverlap(range1: CellRange, range2: CellRange): boolean;
61
+ /**
62
+ * Get the bounding range of a merged cell.
63
+ */
64
+ static getMergedCellRange(cell: TableCell, row: number, col: number): CellRange;
65
+ }
66
+ //# sourceMappingURL=TableCellMerger.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TableCellMerger.d.ts","sourceRoot":"","sources":["../../../../../src/lib/objects/table/TableCellMerger.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,OAAO,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AAEpC;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B,OAAO,EAAE,OAAO,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,UAAU,CAAC,EAAE,SAAS,CAAC;CACxB;AAED;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B,OAAO,EAAE,OAAO,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,SAAS,EAAE,CAAC;CACxB;AAED;;GAEG;AACH,qBAAa,eAAe;IAC1B;;OAEG;IACH,MAAM,CAAC,cAAc,CAAC,KAAK,EAAE,SAAS,GAAG,SAAS;IAalD;;OAEG;IACH,MAAM,CAAC,YAAY,CAAC,KAAK,EAAE,WAAW,EAAE,KAAK,EAAE,SAAS,GAAG,OAAO;IAUlE;;;OAGG;IACH,MAAM,CAAC,QAAQ,CAAC,KAAK,EAAE,WAAW,EAAE,KAAK,EAAE,SAAS,GAAG,MAAM,GAAG,IAAI;IAiDpE;;;OAGG;IACH,MAAM,CAAC,UAAU,CAAC,KAAK,EAAE,WAAW,EAAE,KAAK,EAAE,SAAS,GAAG,WAAW;IAwCpE;;OAEG;IACH,MAAM,CAAC,QAAQ,CAAC,KAAK,EAAE,WAAW,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI;IAa5E;;OAEG;IACH,MAAM,CAAC,SAAS,CAAC,KAAK,EAAE,WAAW,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,WAAW;IAuC3E;;OAEG;IACH,MAAM,CAAC,eAAe,CAAC,KAAK,EAAE,WAAW,EAAE,KAAK,EAAE,SAAS,GAAG,SAAS,EAAE;IAqBzE;;OAEG;IACH,MAAM,CAAC,aAAa,CAAC,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,SAAS,GAAG,OAAO;IAYnE;;OAEG;IACH,MAAM,CAAC,kBAAkB,CAAC,IAAI,EAAE,SAAS,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,SAAS;CAShF"}