@zengrid/core 1.0.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.
Files changed (252) hide show
  1. package/README.md +55 -0
  2. package/dist/README.md +55 -0
  3. package/dist/index.cjs.default.js +1 -0
  4. package/dist/index.cjs.js +9882 -0
  5. package/dist/index.cjs.mjs +2 -0
  6. package/dist/index.d.ts +1 -0
  7. package/dist/index.esm.js +9847 -0
  8. package/dist/package.json +49 -0
  9. package/dist/src/a11y/aria-manager.d.ts +171 -0
  10. package/dist/src/a11y/aria-manager.d.ts.map +1 -0
  11. package/dist/src/a11y/focus-manager.d.ts +124 -0
  12. package/dist/src/a11y/focus-manager.d.ts.map +1 -0
  13. package/dist/src/a11y/index.d.ts +8 -0
  14. package/dist/src/a11y/index.d.ts.map +1 -0
  15. package/dist/src/data/data-accessor/array-accessor.d.ts +38 -0
  16. package/dist/src/data/data-accessor/array-accessor.d.ts.map +1 -0
  17. package/dist/src/data/data-accessor/column-store-accessor.d.ts +41 -0
  18. package/dist/src/data/data-accessor/column-store-accessor.d.ts.map +1 -0
  19. package/dist/src/data/data-accessor/data-accessor.interface.d.ts +41 -0
  20. package/dist/src/data/data-accessor/data-accessor.interface.d.ts.map +1 -0
  21. package/dist/src/data/data-accessor/index.d.ts +9 -0
  22. package/dist/src/data/data-accessor/index.d.ts.map +1 -0
  23. package/dist/src/data/data-accessor/sparse-matrix-accessor.d.ts +39 -0
  24. package/dist/src/data/data-accessor/sparse-matrix-accessor.d.ts.map +1 -0
  25. package/dist/src/data/data-manager.d.ts +161 -0
  26. package/dist/src/data/data-manager.d.ts.map +1 -0
  27. package/dist/src/data/data-source.interface.d.ts +82 -0
  28. package/dist/src/data/data-source.interface.d.ts.map +1 -0
  29. package/dist/src/data/grid-data-model.d.ts +102 -0
  30. package/dist/src/data/grid-data-model.d.ts.map +1 -0
  31. package/dist/src/data/index-map/index-map.d.ts +30 -0
  32. package/dist/src/data/index-map/index-map.d.ts.map +1 -0
  33. package/dist/src/data/index-map/index-map.interface.d.ts +49 -0
  34. package/dist/src/data/index-map/index-map.interface.d.ts.map +1 -0
  35. package/dist/src/data/index-map/index.d.ts +7 -0
  36. package/dist/src/data/index-map/index.d.ts.map +1 -0
  37. package/dist/src/data/index.d.ts +9 -0
  38. package/dist/src/data/index.d.ts.map +1 -0
  39. package/dist/src/editing/cell-editor.interface.d.ts +87 -0
  40. package/dist/src/editing/cell-editor.interface.d.ts.map +1 -0
  41. package/dist/src/editing/date-editor.d.ts +67 -0
  42. package/dist/src/editing/date-editor.d.ts.map +1 -0
  43. package/dist/src/editing/editor-manager.d.ts +141 -0
  44. package/dist/src/editing/editor-manager.d.ts.map +1 -0
  45. package/dist/src/editing/index.d.ts +15 -0
  46. package/dist/src/editing/index.d.ts.map +1 -0
  47. package/dist/src/editing/number-editor.d.ts +68 -0
  48. package/dist/src/editing/number-editor.d.ts.map +1 -0
  49. package/dist/src/editing/select-editor.d.ts +53 -0
  50. package/dist/src/editing/select-editor.d.ts.map +1 -0
  51. package/dist/src/editing/text-editor.d.ts +69 -0
  52. package/dist/src/editing/text-editor.d.ts.map +1 -0
  53. package/dist/src/events/event-emitter.d.ts +90 -0
  54. package/dist/src/events/event-emitter.d.ts.map +1 -0
  55. package/dist/src/events/grid-events.d.ts +277 -0
  56. package/dist/src/events/grid-events.d.ts.map +1 -0
  57. package/dist/src/events/index.d.ts +6 -0
  58. package/dist/src/events/index.d.ts.map +1 -0
  59. package/dist/src/features/autofill/autofill-manager.d.ts +103 -0
  60. package/dist/src/features/autofill/autofill-manager.d.ts.map +1 -0
  61. package/dist/src/features/autofill/index.d.ts +6 -0
  62. package/dist/src/features/autofill/index.d.ts.map +1 -0
  63. package/dist/src/features/column-resize/auto-fit-calculator.d.ts +52 -0
  64. package/dist/src/features/column-resize/auto-fit-calculator.d.ts.map +1 -0
  65. package/dist/src/features/column-resize/column-resize-manager.d.ts +114 -0
  66. package/dist/src/features/column-resize/column-resize-manager.d.ts.map +1 -0
  67. package/dist/src/features/column-resize/column-resize-manager.interface.d.ts +167 -0
  68. package/dist/src/features/column-resize/column-resize-manager.interface.d.ts.map +1 -0
  69. package/dist/src/features/column-resize/column-resize.styles.css +30 -0
  70. package/dist/src/features/column-resize/index.d.ts +15 -0
  71. package/dist/src/features/column-resize/index.d.ts.map +1 -0
  72. package/dist/src/features/column-resize/resize-constraint-manager.d.ts +52 -0
  73. package/dist/src/features/column-resize/resize-constraint-manager.d.ts.map +1 -0
  74. package/dist/src/features/column-resize/resize-handle-renderer.d.ts +41 -0
  75. package/dist/src/features/column-resize/resize-handle-renderer.d.ts.map +1 -0
  76. package/dist/src/features/column-resize/resize-preview.d.ts +32 -0
  77. package/dist/src/features/column-resize/resize-preview.d.ts.map +1 -0
  78. package/dist/src/features/column-resize/resize-state-manager.d.ts +75 -0
  79. package/dist/src/features/column-resize/resize-state-manager.d.ts.map +1 -0
  80. package/dist/src/features/column-resize/resize-strategies.d.ts +26 -0
  81. package/dist/src/features/column-resize/resize-strategies.d.ts.map +1 -0
  82. package/dist/src/features/column-resize/resize-test-helper.d.ts +71 -0
  83. package/dist/src/features/column-resize/resize-test-helper.d.ts.map +1 -0
  84. package/dist/src/features/column-resize/resize-zone-detector.d.ts +32 -0
  85. package/dist/src/features/column-resize/resize-zone-detector.d.ts.map +1 -0
  86. package/dist/src/features/copy-paste/clipboard-manager.d.ts +116 -0
  87. package/dist/src/features/copy-paste/clipboard-manager.d.ts.map +1 -0
  88. package/dist/src/features/copy-paste/index.d.ts +6 -0
  89. package/dist/src/features/copy-paste/index.d.ts.map +1 -0
  90. package/dist/src/features/filtering/adapters/adapter.interface.d.ts +100 -0
  91. package/dist/src/features/filtering/adapters/adapter.interface.d.ts.map +1 -0
  92. package/dist/src/features/filtering/adapters/graphql-adapter.d.ts +124 -0
  93. package/dist/src/features/filtering/adapters/graphql-adapter.d.ts.map +1 -0
  94. package/dist/src/features/filtering/adapters/index.d.ts +11 -0
  95. package/dist/src/features/filtering/adapters/index.d.ts.map +1 -0
  96. package/dist/src/features/filtering/adapters/rest-adapter.d.ts +108 -0
  97. package/dist/src/features/filtering/adapters/rest-adapter.d.ts.map +1 -0
  98. package/dist/src/features/filtering/adapters/sql-adapter.d.ts +123 -0
  99. package/dist/src/features/filtering/adapters/sql-adapter.d.ts.map +1 -0
  100. package/dist/src/features/filtering/adapters/types.d.ts +201 -0
  101. package/dist/src/features/filtering/adapters/types.d.ts.map +1 -0
  102. package/dist/src/features/filtering/column-filter.d.ts +117 -0
  103. package/dist/src/features/filtering/column-filter.d.ts.map +1 -0
  104. package/dist/src/features/filtering/filter-autocomplete.d.ts +78 -0
  105. package/dist/src/features/filtering/filter-autocomplete.d.ts.map +1 -0
  106. package/dist/src/features/filtering/filter-cache.d.ts +113 -0
  107. package/dist/src/features/filtering/filter-cache.d.ts.map +1 -0
  108. package/dist/src/features/filtering/filter-compiler.d.ts +66 -0
  109. package/dist/src/features/filtering/filter-compiler.d.ts.map +1 -0
  110. package/dist/src/features/filtering/filter-export-manager.d.ts +131 -0
  111. package/dist/src/features/filtering/filter-export-manager.d.ts.map +1 -0
  112. package/dist/src/features/filtering/filter-index-manager.d.ts +126 -0
  113. package/dist/src/features/filtering/filter-index-manager.d.ts.map +1 -0
  114. package/dist/src/features/filtering/filter-manager.d.ts +408 -0
  115. package/dist/src/features/filtering/filter-manager.d.ts.map +1 -0
  116. package/dist/src/features/filtering/filter-optimizer.d.ts +101 -0
  117. package/dist/src/features/filtering/filter-optimizer.d.ts.map +1 -0
  118. package/dist/src/features/filtering/filter-query-parser.d.ts +69 -0
  119. package/dist/src/features/filtering/filter-query-parser.d.ts.map +1 -0
  120. package/dist/src/features/filtering/index.d.ts +20 -0
  121. package/dist/src/features/filtering/index.d.ts.map +1 -0
  122. package/dist/src/features/filtering/range-filter-optimizer.d.ts +138 -0
  123. package/dist/src/features/filtering/range-filter-optimizer.d.ts.map +1 -0
  124. package/dist/src/features/filtering/substring-filter.d.ts +90 -0
  125. package/dist/src/features/filtering/substring-filter.d.ts.map +1 -0
  126. package/dist/src/features/filtering/types.d.ts +204 -0
  127. package/dist/src/features/filtering/types.d.ts.map +1 -0
  128. package/dist/src/features/formulas/formula-calculator.d.ts +151 -0
  129. package/dist/src/features/formulas/formula-calculator.d.ts.map +1 -0
  130. package/dist/src/features/formulas/index.d.ts +6 -0
  131. package/dist/src/features/formulas/index.d.ts.map +1 -0
  132. package/dist/src/features/hit-testing/index.d.ts +7 -0
  133. package/dist/src/features/hit-testing/index.d.ts.map +1 -0
  134. package/dist/src/features/hit-testing/spatial-hit-tester.d.ts +137 -0
  135. package/dist/src/features/hit-testing/spatial-hit-tester.d.ts.map +1 -0
  136. package/dist/src/features/loading/index.d.ts +5 -0
  137. package/dist/src/features/loading/index.d.ts.map +1 -0
  138. package/dist/src/features/loading/loading-indicator.d.ts +79 -0
  139. package/dist/src/features/loading/loading-indicator.d.ts.map +1 -0
  140. package/dist/src/features/loading/loading.styles.css +413 -0
  141. package/dist/src/features/pagination/index.d.ts +5 -0
  142. package/dist/src/features/pagination/index.d.ts.map +1 -0
  143. package/dist/src/features/pagination/pagination.styles.css +288 -0
  144. package/dist/src/features/pagination/paginator.d.ts +89 -0
  145. package/dist/src/features/pagination/paginator.d.ts.map +1 -0
  146. package/dist/src/features/selection/index.d.ts +7 -0
  147. package/dist/src/features/selection/index.d.ts.map +1 -0
  148. package/dist/src/features/selection/selection-manager.d.ts +167 -0
  149. package/dist/src/features/selection/selection-manager.d.ts.map +1 -0
  150. package/dist/src/features/sorting/index.d.ts +13 -0
  151. package/dist/src/features/sorting/index.d.ts.map +1 -0
  152. package/dist/src/features/sorting/row-sorter.interface.d.ts +63 -0
  153. package/dist/src/features/sorting/row-sorter.interface.d.ts.map +1 -0
  154. package/dist/src/features/sorting/single-column-sorter.d.ts +75 -0
  155. package/dist/src/features/sorting/single-column-sorter.d.ts.map +1 -0
  156. package/dist/src/features/sorting/sort-manager.d.ts +132 -0
  157. package/dist/src/features/sorting/sort-manager.d.ts.map +1 -0
  158. package/dist/src/features/undo-redo/index.d.ts +8 -0
  159. package/dist/src/features/undo-redo/index.d.ts.map +1 -0
  160. package/dist/src/features/undo-redo/undo-redo-manager.d.ts +215 -0
  161. package/dist/src/features/undo-redo/undo-redo-manager.d.ts.map +1 -0
  162. package/dist/src/grid.d.ts +412 -0
  163. package/dist/src/grid.d.ts.map +1 -0
  164. package/dist/src/i18n/index.d.ts +8 -0
  165. package/dist/src/i18n/index.d.ts.map +1 -0
  166. package/dist/src/i18n/locale-manager.d.ts +123 -0
  167. package/dist/src/i18n/locale-manager.d.ts.map +1 -0
  168. package/dist/src/i18n/rtl-support.d.ts +120 -0
  169. package/dist/src/i18n/rtl-support.d.ts.map +1 -0
  170. package/dist/src/index.d.ts +38 -0
  171. package/dist/src/index.d.ts.map +1 -0
  172. package/dist/src/keyboard/index.d.ts +6 -0
  173. package/dist/src/keyboard/index.d.ts.map +1 -0
  174. package/dist/src/keyboard/keyboard-navigator.d.ts +171 -0
  175. package/dist/src/keyboard/keyboard-navigator.d.ts.map +1 -0
  176. package/dist/src/rendering/cache/index.d.ts +3 -0
  177. package/dist/src/rendering/cache/index.d.ts.map +1 -0
  178. package/dist/src/rendering/cache/renderer-cache.d.ts +100 -0
  179. package/dist/src/rendering/cache/renderer-cache.d.ts.map +1 -0
  180. package/dist/src/rendering/cache/renderer-cache.interface.d.ts +89 -0
  181. package/dist/src/rendering/cache/renderer-cache.interface.d.ts.map +1 -0
  182. package/dist/src/rendering/cell-pool/cell-pool.d.ts +36 -0
  183. package/dist/src/rendering/cell-pool/cell-pool.d.ts.map +1 -0
  184. package/dist/src/rendering/cell-pool/cell-pool.interface.d.ts +76 -0
  185. package/dist/src/rendering/cell-pool/cell-pool.interface.d.ts.map +1 -0
  186. package/dist/src/rendering/cell-pool/index.d.ts +6 -0
  187. package/dist/src/rendering/cell-pool/index.d.ts.map +1 -0
  188. package/dist/src/rendering/cell-positioner/cell-positioner.d.ts +46 -0
  189. package/dist/src/rendering/cell-positioner/cell-positioner.d.ts.map +1 -0
  190. package/dist/src/rendering/cell-positioner/cell-positioner.interface.d.ts +86 -0
  191. package/dist/src/rendering/cell-positioner/cell-positioner.interface.d.ts.map +1 -0
  192. package/dist/src/rendering/cell-positioner/index.d.ts +6 -0
  193. package/dist/src/rendering/cell-positioner/index.d.ts.map +1 -0
  194. package/dist/src/rendering/height-provider/height-provider.interface.d.ts +62 -0
  195. package/dist/src/rendering/height-provider/height-provider.interface.d.ts.map +1 -0
  196. package/dist/src/rendering/height-provider/index.d.ts +7 -0
  197. package/dist/src/rendering/height-provider/index.d.ts.map +1 -0
  198. package/dist/src/rendering/height-provider/uniform-height-provider.d.ts +31 -0
  199. package/dist/src/rendering/height-provider/uniform-height-provider.d.ts.map +1 -0
  200. package/dist/src/rendering/height-provider/variable-height-provider.d.ts +33 -0
  201. package/dist/src/rendering/height-provider/variable-height-provider.d.ts.map +1 -0
  202. package/dist/src/rendering/renderers/advanced-cell-renderer.d.ts +105 -0
  203. package/dist/src/rendering/renderers/advanced-cell-renderer.d.ts.map +1 -0
  204. package/dist/src/rendering/renderers/image-renderer.d.ts +60 -0
  205. package/dist/src/rendering/renderers/image-renderer.d.ts.map +1 -0
  206. package/dist/src/rendering/renderers/index.d.ts +13 -0
  207. package/dist/src/rendering/renderers/index.d.ts.map +1 -0
  208. package/dist/src/rendering/renderers/number-renderer.d.ts +71 -0
  209. package/dist/src/rendering/renderers/number-renderer.d.ts.map +1 -0
  210. package/dist/src/rendering/renderers/renderer-registry.d.ts +55 -0
  211. package/dist/src/rendering/renderers/renderer-registry.d.ts.map +1 -0
  212. package/dist/src/rendering/renderers/renderer.interface.d.ts +79 -0
  213. package/dist/src/rendering/renderers/renderer.interface.d.ts.map +1 -0
  214. package/dist/src/rendering/renderers/text-renderer.d.ts +20 -0
  215. package/dist/src/rendering/renderers/text-renderer.d.ts.map +1 -0
  216. package/dist/src/rendering/spatial-hit-tester.d.ts +108 -0
  217. package/dist/src/rendering/spatial-hit-tester.d.ts.map +1 -0
  218. package/dist/src/rendering/virtual-scroller/index.d.ts +6 -0
  219. package/dist/src/rendering/virtual-scroller/index.d.ts.map +1 -0
  220. package/dist/src/rendering/virtual-scroller/virtual-scroller.d.ts +56 -0
  221. package/dist/src/rendering/virtual-scroller/virtual-scroller.d.ts.map +1 -0
  222. package/dist/src/rendering/virtual-scroller/virtual-scroller.interface.d.ts +170 -0
  223. package/dist/src/rendering/virtual-scroller/virtual-scroller.interface.d.ts.map +1 -0
  224. package/dist/src/rendering/width-provider/index.d.ts +7 -0
  225. package/dist/src/rendering/width-provider/index.d.ts.map +1 -0
  226. package/dist/src/rendering/width-provider/uniform-width-provider.d.ts +31 -0
  227. package/dist/src/rendering/width-provider/uniform-width-provider.d.ts.map +1 -0
  228. package/dist/src/rendering/width-provider/variable-width-provider.d.ts +33 -0
  229. package/dist/src/rendering/width-provider/variable-width-provider.d.ts.map +1 -0
  230. package/dist/src/rendering/width-provider/width-provider.interface.d.ts +62 -0
  231. package/dist/src/rendering/width-provider/width-provider.interface.d.ts.map +1 -0
  232. package/dist/src/selection/hit-tester.d.ts +168 -0
  233. package/dist/src/selection/hit-tester.d.ts.map +1 -0
  234. package/dist/src/selection/hit-tester.interface.d.ts +108 -0
  235. package/dist/src/selection/hit-tester.interface.d.ts.map +1 -0
  236. package/dist/src/selection/index.d.ts +9 -0
  237. package/dist/src/selection/index.d.ts.map +1 -0
  238. package/dist/src/selection/range-utils.d.ts +219 -0
  239. package/dist/src/selection/range-utils.d.ts.map +1 -0
  240. package/dist/src/selection/range-utils.interface.d.ts +51 -0
  241. package/dist/src/selection/range-utils.interface.d.ts.map +1 -0
  242. package/dist/src/styles/grid.css +356 -0
  243. package/dist/src/styles.css +273 -0
  244. package/dist/src/touch/index.d.ts +6 -0
  245. package/dist/src/touch/index.d.ts.map +1 -0
  246. package/dist/src/touch/touch-handler.d.ts +167 -0
  247. package/dist/src/touch/touch-handler.d.ts.map +1 -0
  248. package/dist/src/types/index.d.ts +133 -0
  249. package/dist/src/types/index.d.ts.map +1 -0
  250. package/dist/src/types.d.ts +559 -0
  251. package/dist/src/types.d.ts.map +1 -0
  252. package/package.json +47 -0
@@ -0,0 +1,167 @@
1
+ import type { EventEmitter } from '../../events/event-emitter';
2
+ import type { GridEvents } from '../../events/grid-events';
3
+ import type { WidthProvider } from '../../rendering/width-provider';
4
+ /**
5
+ * Column width constraints
6
+ */
7
+ export interface ColumnConstraints {
8
+ /** Minimum width in pixels (default: 30) */
9
+ minWidth?: number;
10
+ /** Maximum width in pixels (default: Infinity) */
11
+ maxWidth?: number;
12
+ }
13
+ /**
14
+ * Column resize options
15
+ */
16
+ export interface ColumnResizeOptions {
17
+ /** Event emitter for grid events */
18
+ events?: EventEmitter<GridEvents>;
19
+ /** Width provider for column widths (legacy, not used in refactored version) */
20
+ widthProvider?: WidthProvider;
21
+ /** Total number of columns */
22
+ colCount: number;
23
+ /** Get column offset (x position) */
24
+ getColOffset: (col: number) => number;
25
+ /** Get column width */
26
+ getColWidth: (col: number) => number;
27
+ /** Callback when column width changes */
28
+ onWidthChange: (col: number, width: number) => void;
29
+ /** Get cell value for auto-fit calculation */
30
+ getValue?: (row: number, col: number) => any;
31
+ /** Total row count for auto-fit */
32
+ rowCount?: number;
33
+ /** Enable column resize (default: true) */
34
+ enabled?: boolean;
35
+ /** Width of resize handle detection zone in pixels (default: 6) */
36
+ resizeZoneWidth?: number;
37
+ /** Global default constraints */
38
+ defaultConstraints?: ColumnConstraints;
39
+ /** Per-column constraints (keyed by column index) */
40
+ columnConstraints?: Map<number, ColumnConstraints>;
41
+ /** Maximum rows to sample for auto-fit (default: 100) */
42
+ autoFitSampleSize?: number;
43
+ /** Padding to add to auto-fit width (default: 16) */
44
+ autoFitPadding?: number;
45
+ /** Enable visual resize handles (default: true) */
46
+ showHandles?: boolean;
47
+ /** Enable resize preview line (default: true) */
48
+ showPreview?: boolean;
49
+ /** Callback when column widths change (for persistence) */
50
+ onColumnWidthsChange?: (widths: number[]) => void;
51
+ /** Undo/redo manager for integration */
52
+ undoRedoManager?: any;
53
+ /** Get scroll left position (for header that doesn't scroll itself) */
54
+ getScrollLeft?: () => number;
55
+ /** Get viewport height for preview line (defaults to header height) */
56
+ getViewportHeight?: () => number;
57
+ /** Resize strategy (defaults to SingleColumnResizeStrategy) */
58
+ strategy?: ResizeStrategy;
59
+ /** Called before resize starts - return false to prevent */
60
+ onBeforeResize?: (event: BeforeResizeEvent) => boolean | Promise<boolean>;
61
+ /** Called during resize drag */
62
+ onDuringResize?: (event: DuringResizeEvent) => void;
63
+ /** Validate resize operation */
64
+ onValidateResize?: (column: number, newWidth: number) => ResizeValidationResult | Promise<ResizeValidationResult>;
65
+ }
66
+ /**
67
+ * Resize state during drag operation
68
+ */
69
+ export interface ResizeState {
70
+ /** Column being resized */
71
+ column: number;
72
+ /** Starting X position of drag */
73
+ startX: number;
74
+ /** Original column width */
75
+ originalWidth: number;
76
+ /** Whether resize is in progress */
77
+ active: boolean;
78
+ }
79
+ /**
80
+ * Resize zone detection result
81
+ */
82
+ export interface ResizeZoneResult {
83
+ /** Whether mouse is in resize zone */
84
+ inResizeZone: boolean;
85
+ /** Column index (the column whose RIGHT border is being dragged) */
86
+ column: number;
87
+ /** X position of the column border */
88
+ borderX: number;
89
+ }
90
+ /**
91
+ * Validation result for resize operations
92
+ */
93
+ export interface ResizeValidationResult {
94
+ /** Whether the resize is valid */
95
+ valid: boolean;
96
+ /** Reason for rejection (if invalid) */
97
+ reason?: string;
98
+ /** Alternative width suggestion (optional) */
99
+ suggestedWidth?: number;
100
+ }
101
+ /**
102
+ * Event data for before resize lifecycle hook
103
+ */
104
+ export interface BeforeResizeEvent {
105
+ /** Column being resized */
106
+ column: number;
107
+ /** Current width */
108
+ currentWidth: number;
109
+ /** Proposed new width */
110
+ newWidth: number;
111
+ /** Method to prevent the resize */
112
+ preventDefault: () => void;
113
+ }
114
+ /**
115
+ * Event data for during resize lifecycle hook
116
+ */
117
+ export interface DuringResizeEvent {
118
+ /** Column being resized */
119
+ column: number;
120
+ /** Original width when drag started */
121
+ originalWidth: number;
122
+ /** Current width during drag */
123
+ currentWidth: number;
124
+ /** Delta from start */
125
+ deltaX: number;
126
+ }
127
+ /**
128
+ * Minimal interface for data source that supports column resizing
129
+ * Decouples resize logic from Grid internals
130
+ */
131
+ export interface ResizableDataSource {
132
+ /** Get total number of columns */
133
+ getColumnCount(): number;
134
+ /** Get column offset (x position) */
135
+ getColumnOffset(col: number): number;
136
+ /** Get column width */
137
+ getColumnWidth(col: number): number;
138
+ /** Set column width */
139
+ setColumnWidth(col: number, width: number): void;
140
+ /** Get cell value (optional, for auto-fit) */
141
+ getValue?(row: number, col: number): any;
142
+ /** Get row count (optional, for auto-fit) */
143
+ getRowCount?(): number;
144
+ }
145
+ /**
146
+ * Strategy interface for different resize behaviors
147
+ */
148
+ export interface ResizeStrategy {
149
+ /** Strategy name */
150
+ readonly name: string;
151
+ /**
152
+ * Calculate new width based on current state and mouse position
153
+ * @param state Current resize state
154
+ * @param currentX Current mouse X position in grid coordinates
155
+ * @param dataSource Data source for accessing column information
156
+ * @returns New width for the column
157
+ */
158
+ calculateNewWidth(state: ResizeState, currentX: number, dataSource: ResizableDataSource): number;
159
+ /**
160
+ * Get list of columns affected by this resize
161
+ * @param column Column being resized
162
+ * @param dataSource Data source for accessing column information
163
+ * @returns Array of affected column indices
164
+ */
165
+ getAffectedColumns(column: number, dataSource: ResizableDataSource): number[];
166
+ }
167
+ //# sourceMappingURL=column-resize-manager.interface.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"column-resize-manager.interface.d.ts","sourceRoot":"","sources":["../../../../../../packages/core/src/features/column-resize/column-resize-manager.interface.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAC/D,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC;AAC3D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,gCAAgC,CAAC;AAEpE;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,4CAA4C;IAC5C,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,kDAAkD;IAClD,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAClC,oCAAoC;IACpC,MAAM,CAAC,EAAE,YAAY,CAAC,UAAU,CAAC,CAAC;IAElC,gFAAgF;IAChF,aAAa,CAAC,EAAE,aAAa,CAAC;IAE9B,8BAA8B;IAC9B,QAAQ,EAAE,MAAM,CAAC;IAEjB,qCAAqC;IACrC,YAAY,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,MAAM,CAAC;IAEtC,uBAAuB;IACvB,WAAW,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,MAAM,CAAC;IAErC,yCAAyC;IACzC,aAAa,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IAEpD,8CAA8C;IAC9C,QAAQ,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,KAAK,GAAG,CAAC;IAE7C,mCAAmC;IACnC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAElB,2CAA2C;IAC3C,OAAO,CAAC,EAAE,OAAO,CAAC;IAElB,mEAAmE;IACnE,eAAe,CAAC,EAAE,MAAM,CAAC;IAEzB,iCAAiC;IACjC,kBAAkB,CAAC,EAAE,iBAAiB,CAAC;IAEvC,qDAAqD;IACrD,iBAAiB,CAAC,EAAE,GAAG,CAAC,MAAM,EAAE,iBAAiB,CAAC,CAAC;IAEnD,yDAAyD;IACzD,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAE3B,qDAAqD;IACrD,cAAc,CAAC,EAAE,MAAM,CAAC;IAExB,mDAAmD;IACnD,WAAW,CAAC,EAAE,OAAO,CAAC;IAEtB,iDAAiD;IACjD,WAAW,CAAC,EAAE,OAAO,CAAC;IAEtB,2DAA2D;IAC3D,oBAAoB,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,IAAI,CAAC;IAElD,wCAAwC;IACxC,eAAe,CAAC,EAAE,GAAG,CAAC;IAEtB,uEAAuE;IACvE,aAAa,CAAC,EAAE,MAAM,MAAM,CAAC;IAE7B,uEAAuE;IACvE,iBAAiB,CAAC,EAAE,MAAM,MAAM,CAAC;IAEjC,+DAA+D;IAC/D,QAAQ,CAAC,EAAE,cAAc,CAAC;IAE1B,4DAA4D;IAC5D,cAAc,CAAC,EAAE,CAAC,KAAK,EAAE,iBAAiB,KAAK,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IAE1E,gCAAgC;IAChC,cAAc,CAAC,EAAE,CAAC,KAAK,EAAE,iBAAiB,KAAK,IAAI,CAAC;IAEpD,gCAAgC;IAChC,gBAAgB,CAAC,EAAE,CACjB,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,MAAM,KACb,sBAAsB,GAAG,OAAO,CAAC,sBAAsB,CAAC,CAAC;CAC/D;AAED;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B,2BAA2B;IAC3B,MAAM,EAAE,MAAM,CAAC;IACf,kCAAkC;IAClC,MAAM,EAAE,MAAM,CAAC;IACf,4BAA4B;IAC5B,aAAa,EAAE,MAAM,CAAC;IACtB,oCAAoC;IACpC,MAAM,EAAE,OAAO,CAAC;CACjB;AAED;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,sCAAsC;IACtC,YAAY,EAAE,OAAO,CAAC;IACtB,oEAAoE;IACpE,MAAM,EAAE,MAAM,CAAC;IACf,sCAAsC;IACtC,OAAO,EAAE,MAAM,CAAC;CACjB;AAED;;GAEG;AACH,MAAM,WAAW,sBAAsB;IACrC,kCAAkC;IAClC,KAAK,EAAE,OAAO,CAAC;IACf,wCAAwC;IACxC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,8CAA8C;IAC9C,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;AAED;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,2BAA2B;IAC3B,MAAM,EAAE,MAAM,CAAC;IACf,oBAAoB;IACpB,YAAY,EAAE,MAAM,CAAC;IACrB,yBAAyB;IACzB,QAAQ,EAAE,MAAM,CAAC;IACjB,mCAAmC;IACnC,cAAc,EAAE,MAAM,IAAI,CAAC;CAC5B;AAED;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,2BAA2B;IAC3B,MAAM,EAAE,MAAM,CAAC;IACf,uCAAuC;IACvC,aAAa,EAAE,MAAM,CAAC;IACtB,gCAAgC;IAChC,YAAY,EAAE,MAAM,CAAC;IACrB,uBAAuB;IACvB,MAAM,EAAE,MAAM,CAAC;CAChB;AAED;;;GAGG;AACH,MAAM,WAAW,mBAAmB;IAClC,kCAAkC;IAClC,cAAc,IAAI,MAAM,CAAC;IACzB,qCAAqC;IACrC,eAAe,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAAC;IACrC,uBAAuB;IACvB,cAAc,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAAC;IACpC,uBAAuB;IACvB,cAAc,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACjD,8CAA8C;IAC9C,QAAQ,CAAC,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,GAAG,CAAC;IACzC,6CAA6C;IAC7C,WAAW,CAAC,IAAI,MAAM,CAAC;CACxB;AAED;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,oBAAoB;IACpB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IAEtB;;;;;;OAMG;IACH,iBAAiB,CACf,KAAK,EAAE,WAAW,EAClB,QAAQ,EAAE,MAAM,EAChB,UAAU,EAAE,mBAAmB,GAC9B,MAAM,CAAC;IAEV;;;;;OAKG;IACH,kBAAkB,CAAC,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,mBAAmB,GAAG,MAAM,EAAE,CAAC;CAC/E"}
@@ -0,0 +1,30 @@
1
+ /**
2
+ * Column Resize Styles
3
+ *
4
+ * Default styles for column resize feature.
5
+ * Applications can override these by providing more specific selectors.
6
+ */
7
+
8
+ /* Resize Handle */
9
+ .zg-resize-handle {
10
+ width: 6px;
11
+ cursor: col-resize;
12
+ background: transparent;
13
+ z-index: 100;
14
+ pointer-events: auto;
15
+ transition: background 0.15s ease;
16
+ }
17
+
18
+ .zg-resize-handle:hover,
19
+ .zg-resize-handle.active {
20
+ background: rgba(33, 150, 243, 0.6);
21
+ }
22
+
23
+ /* Resize Preview Line */
24
+ .zg-resize-preview {
25
+ width: 2px;
26
+ background: #2196f3;
27
+ box-shadow: 0 0 4px rgba(33, 150, 243, 0.6);
28
+ pointer-events: none;
29
+ z-index: 1000;
30
+ }
@@ -0,0 +1,15 @@
1
+ export { ColumnResizeManager } from './column-resize-manager';
2
+ export { ResizeConstraintManager } from './resize-constraint-manager';
3
+ export { ResizeZoneDetector } from './resize-zone-detector';
4
+ export { ResizeStateManager } from './resize-state-manager';
5
+ export { AutoFitCalculator } from './auto-fit-calculator';
6
+ export { ResizeHandleRenderer } from './resize-handle-renderer';
7
+ export { ResizePreview } from './resize-preview';
8
+ export { SingleColumnResizeStrategy, ProportionalResizeStrategy, SymmetricResizeStrategy, } from './resize-strategies';
9
+ export { ResizeTestHelper, MockResizableDataSource, } from './resize-test-helper';
10
+ export type { ColumnConstraints, ColumnResizeOptions, ResizeState, ResizeZoneResult, ResizableDataSource, ResizeStrategy, BeforeResizeEvent, DuringResizeEvent, ResizeValidationResult, } from './column-resize-manager.interface';
11
+ export type { AutoFitCalculatorOptions } from './auto-fit-calculator';
12
+ export type { ConstraintManagerOptions } from './resize-constraint-manager';
13
+ export type { ZoneDetectorOptions } from './resize-zone-detector';
14
+ export type { StateManagerOptions, ResizeHistoryEntry } from './resize-state-manager';
15
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../packages/core/src/features/column-resize/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AAG9D,OAAO,EAAE,uBAAuB,EAAE,MAAM,6BAA6B,CAAC;AACtE,OAAO,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AAC5D,OAAO,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AAG5D,OAAO,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAC1D,OAAO,EAAE,oBAAoB,EAAE,MAAM,0BAA0B,CAAC;AAChE,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAGjD,OAAO,EACL,0BAA0B,EAC1B,0BAA0B,EAC1B,uBAAuB,GACxB,MAAM,qBAAqB,CAAC;AAG7B,OAAO,EACL,gBAAgB,EAChB,uBAAuB,GACxB,MAAM,sBAAsB,CAAC;AAG9B,YAAY,EACV,iBAAiB,EACjB,mBAAmB,EACnB,WAAW,EACX,gBAAgB,EAChB,mBAAmB,EACnB,cAAc,EACd,iBAAiB,EACjB,iBAAiB,EACjB,sBAAsB,GACvB,MAAM,mCAAmC,CAAC;AAE3C,YAAY,EAAE,wBAAwB,EAAE,MAAM,uBAAuB,CAAC;AACtE,YAAY,EAAE,wBAAwB,EAAE,MAAM,6BAA6B,CAAC;AAC5E,YAAY,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAC;AAClE,YAAY,EAAE,mBAAmB,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC"}
@@ -0,0 +1,52 @@
1
+ import type { ColumnConstraints, ResizeValidationResult } from './column-resize-manager.interface';
2
+ /**
3
+ * Configuration for constraint manager
4
+ */
5
+ export interface ConstraintManagerOptions {
6
+ /** Global default constraints */
7
+ defaultConstraints?: ColumnConstraints;
8
+ /** Per-column constraints */
9
+ columnConstraints?: Map<number, ColumnConstraints>;
10
+ /** Custom validation function */
11
+ onValidateResize?: (column: number, newWidth: number) => ResizeValidationResult | Promise<ResizeValidationResult>;
12
+ }
13
+ /**
14
+ * Manages column resize constraints and validation
15
+ * Separated from main manager for single responsibility
16
+ */
17
+ export declare class ResizeConstraintManager {
18
+ private defaultConstraints;
19
+ private columnConstraints;
20
+ private onValidateResize?;
21
+ constructor(options?: ConstraintManagerOptions);
22
+ /**
23
+ * Get effective constraints for a column
24
+ */
25
+ getConstraints(column: number): ColumnConstraints;
26
+ /**
27
+ * Set constraints for a specific column
28
+ */
29
+ setConstraints(column: number, constraints: ColumnConstraints): void;
30
+ /**
31
+ * Apply min/max constraints to a width value
32
+ */
33
+ applyConstraints(column: number, width: number): number;
34
+ /**
35
+ * Validate a resize operation
36
+ * Returns validation result with optional reason/suggestion
37
+ */
38
+ validate(column: number, newWidth: number): Promise<ResizeValidationResult>;
39
+ /**
40
+ * Check if a width is within constraints (synchronous check only)
41
+ */
42
+ isWithinConstraints(column: number, width: number): boolean;
43
+ /**
44
+ * Get minimum width for a column
45
+ */
46
+ getMinWidth(column: number): number;
47
+ /**
48
+ * Get maximum width for a column
49
+ */
50
+ getMaxWidth(column: number): number;
51
+ }
52
+ //# sourceMappingURL=resize-constraint-manager.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"resize-constraint-manager.d.ts","sourceRoot":"","sources":["../../../../../../packages/core/src/features/column-resize/resize-constraint-manager.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,iBAAiB,EACjB,sBAAsB,EACvB,MAAM,mCAAmC,CAAC;AAE3C;;GAEG;AACH,MAAM,WAAW,wBAAwB;IACvC,iCAAiC;IACjC,kBAAkB,CAAC,EAAE,iBAAiB,CAAC;IACvC,6BAA6B;IAC7B,iBAAiB,CAAC,EAAE,GAAG,CAAC,MAAM,EAAE,iBAAiB,CAAC,CAAC;IACnD,iCAAiC;IACjC,gBAAgB,CAAC,EAAE,CACjB,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,MAAM,KACb,sBAAsB,GAAG,OAAO,CAAC,sBAAsB,CAAC,CAAC;CAC/D;AAED;;;GAGG;AACH,qBAAa,uBAAuB;IAClC,OAAO,CAAC,kBAAkB,CAAoB;IAC9C,OAAO,CAAC,iBAAiB,CAAiC;IAC1D,OAAO,CAAC,gBAAgB,CAAC,CAGqC;gBAElD,OAAO,GAAE,wBAA6B;IASlD;;OAEG;IACH,cAAc,CAAC,MAAM,EAAE,MAAM,GAAG,iBAAiB;IAQjD;;OAEG;IACH,cAAc,CAAC,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,iBAAiB,GAAG,IAAI;IAIpE;;OAEG;IACH,gBAAgB,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM;IAevD;;;OAGG;IACG,QAAQ,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,sBAAsB,CAAC;IA0BjF;;OAEG;IACH,mBAAmB,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO;IAW3D;;OAEG;IACH,WAAW,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM;IAInC;;OAEG;IACH,WAAW,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM;CAGpC"}
@@ -0,0 +1,41 @@
1
+ /**
2
+ * ResizeHandleRenderer - Renders visual resize handles on column borders
3
+ *
4
+ * Creates and positions visual handles that indicate where users can drag to resize columns.
5
+ * Handles are shown on hover and hidden when not needed.
6
+ */
7
+ export declare class ResizeHandleRenderer {
8
+ private container;
9
+ private handles;
10
+ private handlePool;
11
+ constructor(container: HTMLElement);
12
+ /**
13
+ * Update visible handles based on visible columns
14
+ */
15
+ updateHandles(visibleCols: number[], getColOffset: (col: number) => number, getColWidth: (col: number) => number, scrollLeft: number, viewportHeight: number): void;
16
+ /**
17
+ * Show handle for specific column
18
+ */
19
+ showHandle(col: number): void;
20
+ /**
21
+ * Hide handle for specific column
22
+ */
23
+ hideHandle(col: number): void;
24
+ /**
25
+ * Hide all handles
26
+ */
27
+ hideAllHandles(): void;
28
+ /**
29
+ * Get or create a handle element
30
+ */
31
+ private getOrCreateHandle;
32
+ /**
33
+ * Clear all handles and return to pool
34
+ */
35
+ private clearHandles;
36
+ /**
37
+ * Cleanup and remove all handles
38
+ */
39
+ destroy(): void;
40
+ }
41
+ //# sourceMappingURL=resize-handle-renderer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"resize-handle-renderer.d.ts","sourceRoot":"","sources":["../../../../../../packages/core/src/features/column-resize/resize-handle-renderer.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,qBAAa,oBAAoB;IAC/B,OAAO,CAAC,SAAS,CAAc;IAC/B,OAAO,CAAC,OAAO,CAAuC;IACtD,OAAO,CAAC,UAAU,CAAqB;gBAE3B,SAAS,EAAE,WAAW;IAIlC;;OAEG;IACH,aAAa,CACX,WAAW,EAAE,MAAM,EAAE,EACrB,YAAY,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,MAAM,EACrC,WAAW,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,MAAM,EACpC,UAAU,EAAE,MAAM,EAClB,cAAc,EAAE,MAAM,GACrB,IAAI;IAuBP;;OAEG;IACH,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI;IAO7B;;OAEG;IACH,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI;IAO7B;;OAEG;IACH,cAAc,IAAI,IAAI;IAMtB;;OAEG;IACH,OAAO,CAAC,iBAAiB;IAkBzB;;OAEG;IACH,OAAO,CAAC,YAAY;IAQpB;;OAEG;IACH,OAAO,IAAI,IAAI;CAkBhB"}
@@ -0,0 +1,32 @@
1
+ /**
2
+ * ResizePreview - Renders a preview line during column resize drag
3
+ *
4
+ * Shows a vertical line that follows the cursor during resize,
5
+ * giving visual feedback before the resize is committed.
6
+ */
7
+ export declare class ResizePreview {
8
+ private previewElement;
9
+ private container;
10
+ constructor(container: HTMLElement);
11
+ /**
12
+ * Show preview at specified X position (relative to container)
13
+ */
14
+ show(x: number, height: number): void;
15
+ /**
16
+ * Update preview position (relative to container)
17
+ */
18
+ update(x: number): void;
19
+ /**
20
+ * Hide preview
21
+ */
22
+ hide(): void;
23
+ /**
24
+ * Get or create preview element
25
+ */
26
+ private getOrCreatePreviewElement;
27
+ /**
28
+ * Cleanup
29
+ */
30
+ destroy(): void;
31
+ }
32
+ //# sourceMappingURL=resize-preview.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"resize-preview.d.ts","sourceRoot":"","sources":["../../../../../../packages/core/src/features/column-resize/resize-preview.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,qBAAa,aAAa;IACxB,OAAO,CAAC,cAAc,CAA4B;IAClD,OAAO,CAAC,SAAS,CAAc;gBAEnB,SAAS,EAAE,WAAW;IAIlC;;OAEG;IACH,IAAI,CAAC,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI;IAerC;;OAEG;IACH,MAAM,CAAC,CAAC,EAAE,MAAM,GAAG,IAAI;IASvB;;OAEG;IACH,IAAI,IAAI,IAAI;IAMZ;;OAEG;IACH,OAAO,CAAC,yBAAyB;IAcjC;;OAEG;IACH,OAAO,IAAI,IAAI;CAMhB"}
@@ -0,0 +1,75 @@
1
+ import type { ResizeState } from './column-resize-manager.interface';
2
+ /**
3
+ * History entry for undo/redo
4
+ */
5
+ export interface ResizeHistoryEntry {
6
+ column: number;
7
+ oldWidth: number;
8
+ newWidth: number;
9
+ timestamp: number;
10
+ }
11
+ /**
12
+ * Configuration for state manager
13
+ */
14
+ export interface StateManagerOptions {
15
+ /** Callback when widths change (for persistence) */
16
+ onColumnWidthsChange?: (widths: number[]) => void;
17
+ /** Undo/redo manager integration */
18
+ undoRedoManager?: any;
19
+ }
20
+ /**
21
+ * Manages resize state and history
22
+ * Separated from main manager for single responsibility
23
+ */
24
+ export declare class ResizeStateManager {
25
+ private state;
26
+ private history;
27
+ private onColumnWidthsChange?;
28
+ private undoRedoManager?;
29
+ constructor(options?: StateManagerOptions);
30
+ /**
31
+ * Get current resize state
32
+ */
33
+ getState(): Readonly<ResizeState>;
34
+ /**
35
+ * Check if resize is currently active
36
+ */
37
+ isActive(): boolean;
38
+ /**
39
+ * Start a resize operation
40
+ */
41
+ startResize(column: number, startX: number, originalWidth: number): void;
42
+ /**
43
+ * End a resize operation
44
+ */
45
+ endResize(): void;
46
+ /**
47
+ * Record a resize operation in history
48
+ */
49
+ recordResize(column: number, oldWidth: number, newWidth: number): void;
50
+ /**
51
+ * Get resize history
52
+ */
53
+ getHistory(): readonly ResizeHistoryEntry[];
54
+ /**
55
+ * Clear resize history
56
+ */
57
+ clearHistory(): void;
58
+ /**
59
+ * Notify listeners of width changes (for persistence)
60
+ */
61
+ notifyWidthChange(widths: number[]): void;
62
+ /**
63
+ * Get the column currently being resized (-1 if none)
64
+ */
65
+ getActiveColumn(): number;
66
+ /**
67
+ * Get the original width of the column being resized
68
+ */
69
+ getOriginalWidth(): number;
70
+ /**
71
+ * Get the start X position of the resize
72
+ */
73
+ getStartX(): number;
74
+ }
75
+ //# sourceMappingURL=resize-state-manager.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"resize-state-manager.d.ts","sourceRoot":"","sources":["../../../../../../packages/core/src/features/column-resize/resize-state-manager.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mCAAmC,CAAC;AAErE;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAClC,oDAAoD;IACpD,oBAAoB,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,IAAI,CAAC;IAClD,oCAAoC;IACpC,eAAe,CAAC,EAAE,GAAG,CAAC;CACvB;AAED;;;GAGG;AACH,qBAAa,kBAAkB;IAC7B,OAAO,CAAC,KAAK,CAKX;IAEF,OAAO,CAAC,OAAO,CAA4B;IAC3C,OAAO,CAAC,oBAAoB,CAAC,CAA6B;IAC1D,OAAO,CAAC,eAAe,CAAC,CAAM;gBAElB,OAAO,GAAE,mBAAwB;IAK7C;;OAEG;IACH,QAAQ,IAAI,QAAQ,CAAC,WAAW,CAAC;IAIjC;;OAEG;IACH,QAAQ,IAAI,OAAO;IAInB;;OAEG;IACH,WAAW,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,GAAG,IAAI;IASxE;;OAEG;IACH,SAAS,IAAI,IAAI;IASjB;;OAEG;IACH,YAAY,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,IAAI;IAkBtE;;OAEG;IACH,UAAU,IAAI,SAAS,kBAAkB,EAAE;IAI3C;;OAEG;IACH,YAAY,IAAI,IAAI;IAIpB;;OAEG;IACH,iBAAiB,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,IAAI;IAMzC;;OAEG;IACH,eAAe,IAAI,MAAM;IAIzB;;OAEG;IACH,gBAAgB,IAAI,MAAM;IAI1B;;OAEG;IACH,SAAS,IAAI,MAAM;CAGpB"}
@@ -0,0 +1,26 @@
1
+ import type { ResizeStrategy, ResizeState, ResizableDataSource } from './column-resize-manager.interface';
2
+ /**
3
+ * Default strategy: Resize single column independently
4
+ */
5
+ export declare class SingleColumnResizeStrategy implements ResizeStrategy {
6
+ readonly name = "single-column";
7
+ calculateNewWidth(state: ResizeState, currentX: number, _dataSource: ResizableDataSource): number;
8
+ getAffectedColumns(column: number, _dataSource: ResizableDataSource): number[];
9
+ }
10
+ /**
11
+ * Proportional resize: Distribute extra/reduced space across all columns
12
+ */
13
+ export declare class ProportionalResizeStrategy implements ResizeStrategy {
14
+ readonly name = "proportional";
15
+ calculateNewWidth(state: ResizeState, currentX: number, _dataSource: ResizableDataSource): number;
16
+ getAffectedColumns(column: number, dataSource: ResizableDataSource): number[];
17
+ }
18
+ /**
19
+ * Symmetric resize: Resize column and its neighbor symmetrically
20
+ */
21
+ export declare class SymmetricResizeStrategy implements ResizeStrategy {
22
+ readonly name = "symmetric";
23
+ calculateNewWidth(state: ResizeState, currentX: number, _dataSource: ResizableDataSource): number;
24
+ getAffectedColumns(column: number, dataSource: ResizableDataSource): number[];
25
+ }
26
+ //# sourceMappingURL=resize-strategies.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"resize-strategies.d.ts","sourceRoot":"","sources":["../../../../../../packages/core/src/features/column-resize/resize-strategies.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,cAAc,EACd,WAAW,EACX,mBAAmB,EACpB,MAAM,mCAAmC,CAAC;AAE3C;;GAEG;AACH,qBAAa,0BAA2B,YAAW,cAAc;IAC/D,QAAQ,CAAC,IAAI,mBAAmB;IAEhC,iBAAiB,CACf,KAAK,EAAE,WAAW,EAClB,QAAQ,EAAE,MAAM,EAChB,WAAW,EAAE,mBAAmB,GAC/B,MAAM;IAKT,kBAAkB,CAAC,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,mBAAmB,GAAG,MAAM,EAAE;CAG/E;AAED;;GAEG;AACH,qBAAa,0BAA2B,YAAW,cAAc;IAC/D,QAAQ,CAAC,IAAI,kBAAkB;IAE/B,iBAAiB,CACf,KAAK,EAAE,WAAW,EAClB,QAAQ,EAAE,MAAM,EAChB,WAAW,EAAE,mBAAmB,GAC/B,MAAM;IAKT,kBAAkB,CAAC,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,mBAAmB,GAAG,MAAM,EAAE;CAW9E;AAED;;GAEG;AACH,qBAAa,uBAAwB,YAAW,cAAc;IAC5D,QAAQ,CAAC,IAAI,eAAe;IAE5B,iBAAiB,CACf,KAAK,EAAE,WAAW,EAClB,QAAQ,EAAE,MAAM,EAChB,WAAW,EAAE,mBAAmB,GAC/B,MAAM;IAKT,kBAAkB,CAAC,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,mBAAmB,GAAG,MAAM,EAAE;CAW9E"}
@@ -0,0 +1,71 @@
1
+ import type { ColumnResizeOptions, ResizableDataSource, ColumnConstraints } from './column-resize-manager.interface';
2
+ import { ColumnResizeManager } from './column-resize-manager';
3
+ /**
4
+ * Mock data source for testing
5
+ */
6
+ export declare class MockResizableDataSource implements ResizableDataSource {
7
+ private colCount;
8
+ private rowCount;
9
+ private widths;
10
+ private offsets;
11
+ private data;
12
+ constructor(colCount: number, initialWidth?: number, rowCount?: number);
13
+ private calculateOffsets;
14
+ getColumnCount(): number;
15
+ getColumnOffset(col: number): number;
16
+ getColumnWidth(col: number): number;
17
+ setColumnWidth(col: number, width: number): void;
18
+ getValue(row: number, col: number): any;
19
+ getRowCount(): number;
20
+ getWidths(): number[];
21
+ setWidths(widths: number[]): void;
22
+ }
23
+ /**
24
+ * Test helper utilities for column resize feature
25
+ */
26
+ export declare class ResizeTestHelper {
27
+ /**
28
+ * Create a mock resize manager for testing
29
+ */
30
+ static createMockResizeManager(options?: Partial<ColumnResizeOptions>): {
31
+ manager: ColumnResizeManager;
32
+ dataSource: MockResizableDataSource;
33
+ container: HTMLElement;
34
+ };
35
+ /**
36
+ * Simulate a resize operation without DOM
37
+ */
38
+ static simulateResize(dataSource: ResizableDataSource, column: number, newWidth: number, constraints?: ColumnConstraints): {
39
+ oldWidth: number;
40
+ newWidth: number;
41
+ };
42
+ /**
43
+ * Simulate a mouse drag resize
44
+ */
45
+ static simulateMouseDrag(container: HTMLElement, startX: number, endX: number): void;
46
+ /**
47
+ * Simulate double-click for auto-fit
48
+ */
49
+ static simulateDoubleClick(container: HTMLElement, x: number): void;
50
+ /**
51
+ * Clean up test resources
52
+ */
53
+ static cleanup(container: HTMLElement): void;
54
+ /**
55
+ * Assert that widths match expected values
56
+ */
57
+ static assertWidths(dataSource: ResizableDataSource, expected: number[], tolerance?: number): boolean;
58
+ /**
59
+ * Create a test scenario with specific column widths and constraints
60
+ */
61
+ static createTestScenario(config: {
62
+ columnWidths: number[];
63
+ constraints?: Map<number, ColumnConstraints>;
64
+ rowCount?: number;
65
+ }): {
66
+ manager: ColumnResizeManager;
67
+ dataSource: MockResizableDataSource;
68
+ container: HTMLElement;
69
+ };
70
+ }
71
+ //# sourceMappingURL=resize-test-helper.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"resize-test-helper.d.ts","sourceRoot":"","sources":["../../../../../../packages/core/src/features/column-resize/resize-test-helper.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,mBAAmB,EACnB,mBAAmB,EACnB,iBAAiB,EAClB,MAAM,mCAAmC,CAAC;AAC3C,OAAO,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AAE9D;;GAEG;AACH,qBAAa,uBAAwB,YAAW,mBAAmB;IAM/D,OAAO,CAAC,QAAQ;IAEhB,OAAO,CAAC,QAAQ;IAPlB,OAAO,CAAC,MAAM,CAAW;IACzB,OAAO,CAAC,OAAO,CAAW;IAC1B,OAAO,CAAC,IAAI,CAAe;gBAGjB,QAAQ,EAAE,MAAM,EACxB,YAAY,GAAE,MAAY,EAClB,QAAQ,GAAE,MAAY;IAehC,OAAO,CAAC,gBAAgB;IAUxB,cAAc,IAAI,MAAM;IAIxB,eAAe,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM;IAIpC,cAAc,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM;IAInC,cAAc,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI;IAKhD,QAAQ,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,GAAG;IAIvC,WAAW,IAAI,MAAM;IAKrB,SAAS,IAAI,MAAM,EAAE;IAIrB,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,IAAI;CAIlC;AAED;;GAEG;AACH,qBAAa,gBAAgB;IAC3B;;OAEG;IACH,MAAM,CAAC,uBAAuB,CAC5B,OAAO,CAAC,EAAE,OAAO,CAAC,mBAAmB,CAAC,GACrC;QACD,OAAO,EAAE,mBAAmB,CAAC;QAC7B,UAAU,EAAE,uBAAuB,CAAC;QACpC,SAAS,EAAE,WAAW,CAAC;KACxB;IA2BD;;OAEG;IACH,MAAM,CAAC,cAAc,CACnB,UAAU,EAAE,mBAAmB,EAC/B,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,MAAM,EAChB,WAAW,CAAC,EAAE,iBAAiB,GAC9B;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAE;IAmBzC;;OAEG;IACH,MAAM,CAAC,iBAAiB,CACtB,SAAS,EAAE,WAAW,EACtB,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,MAAM,GACX,IAAI;IAwBP;;OAEG;IACH,MAAM,CAAC,mBAAmB,CAAC,SAAS,EAAE,WAAW,EAAE,CAAC,EAAE,MAAM,GAAG,IAAI;IAQnE;;OAEG;IACH,MAAM,CAAC,OAAO,CAAC,SAAS,EAAE,WAAW,GAAG,IAAI;IAI5C;;OAEG;IACH,MAAM,CAAC,YAAY,CACjB,UAAU,EAAE,mBAAmB,EAC/B,QAAQ,EAAE,MAAM,EAAE,EAClB,SAAS,GAAE,MAAY,GACtB,OAAO;IAuBV;;OAEG;IACH,MAAM,CAAC,kBAAkB,CAAC,MAAM,EAAE;QAChC,YAAY,EAAE,MAAM,EAAE,CAAC;QACvB,WAAW,CAAC,EAAE,GAAG,CAAC,MAAM,EAAE,iBAAiB,CAAC,CAAC;QAC7C,QAAQ,CAAC,EAAE,MAAM,CAAC;KACnB,GAAG;QACF,OAAO,EAAE,mBAAmB,CAAC;QAC7B,UAAU,EAAE,uBAAuB,CAAC;QACpC,SAAS,EAAE,WAAW,CAAC;KACxB;CAwBF"}
@@ -0,0 +1,32 @@
1
+ import type { ResizableDataSource, ResizeZoneResult } from './column-resize-manager.interface';
2
+ /**
3
+ * Configuration for zone detector
4
+ */
5
+ export interface ZoneDetectorOptions {
6
+ /** Width of resize zone in pixels (default: 6) */
7
+ resizeZoneWidth?: number;
8
+ }
9
+ /**
10
+ * Pure zone detection logic
11
+ * Separated from main manager for testability
12
+ */
13
+ export declare class ResizeZoneDetector {
14
+ private resizeZoneWidth;
15
+ constructor(options?: ZoneDetectorOptions);
16
+ /**
17
+ * Detect if mouse position is in a resize zone
18
+ * @param x Mouse X position in grid coordinates
19
+ * @param dataSource Data source for column information
20
+ * @returns Resize zone result
21
+ */
22
+ detectZone(x: number, dataSource: ResizableDataSource): ResizeZoneResult;
23
+ /**
24
+ * Get the resize zone width
25
+ */
26
+ getZoneWidth(): number;
27
+ /**
28
+ * Set the resize zone width
29
+ */
30
+ setZoneWidth(width: number): void;
31
+ }
32
+ //# sourceMappingURL=resize-zone-detector.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"resize-zone-detector.d.ts","sourceRoot":"","sources":["../../../../../../packages/core/src/features/column-resize/resize-zone-detector.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,mBAAmB,EACnB,gBAAgB,EACjB,MAAM,mCAAmC,CAAC;AAE3C;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAClC,kDAAkD;IAClD,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B;AAED;;;GAGG;AACH,qBAAa,kBAAkB;IAC7B,OAAO,CAAC,eAAe,CAAS;gBAEpB,OAAO,GAAE,mBAAwB;IAI7C;;;;;OAKG;IACH,UAAU,CAAC,CAAC,EAAE,MAAM,EAAE,UAAU,EAAE,mBAAmB,GAAG,gBAAgB;IA2BxE;;OAEG;IACH,YAAY,IAAI,MAAM;IAItB;;OAEG;IACH,YAAY,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;CAGlC"}