@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,161 @@
1
+ import type { DataLoadRequest, DataLoadResponse, SortState, FilterModel } from '../types';
2
+ import { OperationModeManager, type OperationModeConfig } from '@zengrid/shared';
3
+ import type { EventEmitter } from '../events/event-emitter';
4
+ import type { GridEvents } from '../events/grid-events';
5
+ /**
6
+ * Data manager options
7
+ */
8
+ export interface DataManagerOptions {
9
+ /**
10
+ * Initial row count
11
+ */
12
+ rowCount: number;
13
+ /**
14
+ * Event emitter for grid events
15
+ */
16
+ events?: EventEmitter<GridEvents>;
17
+ /**
18
+ * Data operation mode configuration
19
+ */
20
+ modeConfig: OperationModeConfig<(request: DataLoadRequest) => Promise<DataLoadResponse>>;
21
+ }
22
+ /**
23
+ * DataManager - Manages data loading in frontend or backend mode
24
+ *
25
+ * **Frontend Mode** (default):
26
+ * - All data loaded in memory via setData()
27
+ * - Filtering and sorting applied in-memory
28
+ * - Fast operations, suitable for datasets that fit in memory
29
+ *
30
+ * **Backend Mode**:
31
+ * - Data loaded on-demand via onDataRequest callback
32
+ * - Filtering and sorting delegated to server
33
+ * - Ideal for large datasets, server-side pagination
34
+ *
35
+ * **Auto Mode**:
36
+ * - Uses backend if onDataRequest callback is provided
37
+ * - Falls back to frontend mode otherwise
38
+ *
39
+ * @example Frontend Mode
40
+ * ```typescript
41
+ * const dataManager = new DataManager({
42
+ * rowCount: 100000,
43
+ * modeConfig: { mode: 'frontend' },
44
+ * });
45
+ *
46
+ * dataManager.setData(allData);
47
+ * ```
48
+ *
49
+ * @example Backend Mode
50
+ * ```typescript
51
+ * const dataManager = new DataManager({
52
+ * rowCount: 1000000,
53
+ * modeConfig: {
54
+ * mode: 'backend',
55
+ * callback: async (request) => {
56
+ * const response = await fetch('/api/data', {
57
+ * method: 'POST',
58
+ * body: JSON.stringify(request),
59
+ * });
60
+ * return response.json();
61
+ * },
62
+ * },
63
+ * });
64
+ *
65
+ * // Data loaded automatically when needed
66
+ * await dataManager.loadRange(0, 100);
67
+ * ```
68
+ */
69
+ export declare class DataManager extends OperationModeManager<(request: DataLoadRequest) => Promise<DataLoadResponse>> {
70
+ private rowCount;
71
+ private events?;
72
+ private data;
73
+ private cachedRanges;
74
+ private totalRows;
75
+ private pendingRequests;
76
+ private isLoading;
77
+ private maxCacheSize;
78
+ constructor(options: DataManagerOptions);
79
+ /**
80
+ * Set data (frontend mode)
81
+ */
82
+ setData(data: any[][]): void;
83
+ /**
84
+ * Get all data (frontend mode)
85
+ */
86
+ getData(): any[][];
87
+ /**
88
+ * Get value at specific cell
89
+ */
90
+ getValue(row: number, col: number): any;
91
+ /**
92
+ * Get row data
93
+ */
94
+ getRow(row: number): any[];
95
+ /**
96
+ * Load data range (backend mode)
97
+ */
98
+ loadRange(startRow: number, endRow: number, sortState?: SortState[], filterState?: FilterModel[], filterExports?: {
99
+ filter?: import('../features/filtering/types').FieldFilterState;
100
+ queryString?: string;
101
+ graphqlWhere?: Record<string, any>;
102
+ sql?: import('../features/filtering/adapters/types').SQLFilterExport;
103
+ }): Promise<void>;
104
+ /**
105
+ * Execute the actual data load request
106
+ */
107
+ private executeLoadRange;
108
+ /**
109
+ * Validate load response
110
+ */
111
+ private validateLoadResponse;
112
+ /**
113
+ * Add to cache with size limit
114
+ */
115
+ private addToCache;
116
+ /**
117
+ * Merge loaded range data into existing data
118
+ */
119
+ private mergeRangeData;
120
+ /**
121
+ * Clear cache (e.g., after sort/filter changes)
122
+ */
123
+ clearCache(): void;
124
+ /**
125
+ * Get total row count
126
+ */
127
+ getTotalRows(): number;
128
+ /**
129
+ * Update row count
130
+ */
131
+ updateRowCount(rowCount: number): void;
132
+ /**
133
+ * Check if data is currently loading
134
+ */
135
+ isDataLoading(): boolean;
136
+ /**
137
+ * Get number of pending requests
138
+ */
139
+ getPendingRequestCount(): number;
140
+ /**
141
+ * Cancel all pending requests
142
+ */
143
+ cancelPendingRequests(): void;
144
+ /**
145
+ * Get cache statistics
146
+ */
147
+ getCacheStats(): {
148
+ size: number;
149
+ maxSize: number;
150
+ hitRate: number;
151
+ };
152
+ /**
153
+ * Set maximum cache size
154
+ */
155
+ setMaxCacheSize(size: number): void;
156
+ /**
157
+ * Destroy data manager
158
+ */
159
+ destroy(): void;
160
+ }
161
+ //# sourceMappingURL=data-manager.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"data-manager.d.ts","sourceRoot":"","sources":["../../../../../packages/core/src/data/data-manager.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,gBAAgB,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AAC1F,OAAO,EAAE,oBAAoB,EAAE,KAAK,mBAAmB,EAAE,MAAM,iBAAiB,CAAC;AACjF,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AAC5D,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AAExD;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC;;OAEG;IACH,QAAQ,EAAE,MAAM,CAAC;IAEjB;;OAEG;IACH,MAAM,CAAC,EAAE,YAAY,CAAC,UAAU,CAAC,CAAC;IAElC;;OAEG;IACH,UAAU,EAAE,mBAAmB,CAAC,CAAC,OAAO,EAAE,eAAe,KAAK,OAAO,CAAC,gBAAgB,CAAC,CAAC,CAAC;CAC1F;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8CG;AACH,qBAAa,WAAY,SAAQ,oBAAoB,CAAC,CAAC,OAAO,EAAE,eAAe,KAAK,OAAO,CAAC,gBAAgB,CAAC,CAAC;IAC5G,OAAO,CAAC,QAAQ,CAAS;IACzB,OAAO,CAAC,MAAM,CAAC,CAA2B;IAC1C,OAAO,CAAC,IAAI,CAAe;IAC3B,OAAO,CAAC,YAAY,CAAmC;IACvD,OAAO,CAAC,SAAS,CAAa;IAC9B,OAAO,CAAC,eAAe,CAAyC;IAChE,OAAO,CAAC,SAAS,CAAkB;IACnC,OAAO,CAAC,YAAY,CAAe;gBAEvB,OAAO,EAAE,kBAAkB;IAOvC;;OAEG;IACH,OAAO,CAAC,IAAI,EAAE,GAAG,EAAE,EAAE,GAAG,IAAI;IAqC5B;;OAEG;IACH,OAAO,IAAI,GAAG,EAAE,EAAE;IAIlB;;OAEG;IACH,QAAQ,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,GAAG;IASvC;;OAEG;IACH,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,EAAE;IAQ1B;;OAEG;IACG,SAAS,CACb,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,MAAM,EACd,SAAS,CAAC,EAAE,SAAS,EAAE,EACvB,WAAW,CAAC,EAAE,WAAW,EAAE,EAC3B,aAAa,CAAC,EAAE;QACd,MAAM,CAAC,EAAE,OAAO,6BAA6B,EAAE,gBAAgB,CAAC;QAChE,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,YAAY,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;QACnC,GAAG,CAAC,EAAE,OAAO,sCAAsC,EAAE,eAAe,CAAC;KACtE,GACA,OAAO,CAAC,IAAI,CAAC;IAsEhB;;OAEG;YACW,gBAAgB;IA4H9B;;OAEG;IACH,OAAO,CAAC,oBAAoB;IAmC5B;;OAEG;IACH,OAAO,CAAC,UAAU;IAYlB;;OAEG;IACH,OAAO,CAAC,cAAc;IAYtB;;OAEG;IACH,UAAU,IAAI,IAAI;IAIlB;;OAEG;IACH,YAAY,IAAI,MAAM;IAItB;;OAEG;IACH,cAAc,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI;IAWtC;;OAEG;IACH,aAAa,IAAI,OAAO;IAIxB;;OAEG;IACH,sBAAsB,IAAI,MAAM;IAIhC;;OAEG;IACH,qBAAqB,IAAI,IAAI;IAK7B;;OAEG;IACH,aAAa,IAAI;QACf,IAAI,EAAE,MAAM,CAAC;QACb,OAAO,EAAE,MAAM,CAAC;QAChB,OAAO,EAAE,MAAM,CAAC;KACjB;IAQD;;OAEG;IACH,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAYnC;;OAEG;IACH,OAAO,IAAI,IAAI;CAOhB"}
@@ -0,0 +1,82 @@
1
+ import type { CellRef } from '../types';
2
+ import type { EventEmitter } from '../events/event-emitter';
3
+ /**
4
+ * Data source interface
5
+ *
6
+ * Abstraction layer for grid data management.
7
+ * Provides methods for CRUD operations and change tracking.
8
+ */
9
+ export interface DataSource {
10
+ /**
11
+ * Get value at specific cell
12
+ * @param row - Row index
13
+ * @param col - Column index
14
+ * @returns Cell value or undefined
15
+ */
16
+ getValue(row: number, col: number): any;
17
+ /**
18
+ * Set value at specific cell
19
+ * @param row - Row index
20
+ * @param col - Column index
21
+ * @param value - New value
22
+ */
23
+ setValue(row: number, col: number, value: any): void;
24
+ /**
25
+ * Get all values in a row
26
+ * @param row - Row index
27
+ * @returns Array of values or object with column keys
28
+ */
29
+ getRow(row: number): any[] | Record<string, any>;
30
+ /**
31
+ * Get all values in a column
32
+ * @param col - Column index
33
+ * @returns Array of values
34
+ */
35
+ getColumn(col: number): any[];
36
+ /**
37
+ * Set data for multiple cells
38
+ * @param data - 2D array or map of data
39
+ */
40
+ setData(data: any[][] | Map<string, any>): void;
41
+ /**
42
+ * Clear all data
43
+ */
44
+ clear(): void;
45
+ /**
46
+ * Total number of rows
47
+ */
48
+ readonly rowCount: number;
49
+ /**
50
+ * Total number of columns
51
+ */
52
+ readonly colCount: number;
53
+ /**
54
+ * Event emitter for data changes
55
+ */
56
+ readonly events?: EventEmitter<DataSourceEvents>;
57
+ }
58
+ /**
59
+ * Data source events
60
+ */
61
+ export interface DataSourceEvents {
62
+ 'change': {
63
+ cell: CellRef;
64
+ oldValue: any;
65
+ newValue: any;
66
+ };
67
+ 'bulkChange': {
68
+ changes: Array<{
69
+ cell: CellRef;
70
+ oldValue: any;
71
+ newValue: any;
72
+ }>;
73
+ };
74
+ 'clear': {
75
+ timestamp: number;
76
+ };
77
+ 'dataLoad': {
78
+ rowCount: number;
79
+ colCount: number;
80
+ };
81
+ }
82
+ //# sourceMappingURL=data-source.interface.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"data-source.interface.d.ts","sourceRoot":"","sources":["../../../../../packages/core/src/data/data-source.interface.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,UAAU,CAAC;AACxC,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AAE5D;;;;;GAKG;AACH,MAAM,WAAW,UAAU;IACzB;;;;;OAKG;IACH,QAAQ,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,GAAG,CAAC;IAExC;;;;;OAKG;IACH,QAAQ,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,GAAG,IAAI,CAAC;IAErD;;;;OAIG;IACH,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,EAAE,GAAG,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAEjD;;;;OAIG;IACH,SAAS,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,EAAE,CAAC;IAE9B;;;OAGG;IACH,OAAO,CAAC,IAAI,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,IAAI,CAAC;IAEhD;;OAEG;IACH,KAAK,IAAI,IAAI,CAAC;IAEd;;OAEG;IACH,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAE1B;;OAEG;IACH,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAE1B;;OAEG;IACH,QAAQ,CAAC,MAAM,CAAC,EAAE,YAAY,CAAC,gBAAgB,CAAC,CAAC;CAClD;AAED;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,EAAE;QACR,IAAI,EAAE,OAAO,CAAC;QACd,QAAQ,EAAE,GAAG,CAAC;QACd,QAAQ,EAAE,GAAG,CAAC;KACf,CAAC;IAEF,YAAY,EAAE;QACZ,OAAO,EAAE,KAAK,CAAC;YACb,IAAI,EAAE,OAAO,CAAC;YACd,QAAQ,EAAE,GAAG,CAAC;YACd,QAAQ,EAAE,GAAG,CAAC;SACf,CAAC,CAAC;KACJ,CAAC;IAEF,OAAO,EAAE;QACP,SAAS,EAAE,MAAM,CAAC;KACnB,CAAC;IAEF,UAAU,EAAE;QACV,QAAQ,EAAE,MAAM,CAAC;QACjB,QAAQ,EAAE,MAAM,CAAC;KAClB,CAAC;CACH"}
@@ -0,0 +1,102 @@
1
+ import type { DataSource, DataSourceEvents } from './data-source.interface';
2
+ import { SparseMatrix } from '@zengrid/shared/data-structures/sparse-matrix';
3
+ import { ColumnStore } from '@zengrid/shared/data-structures/column-store';
4
+ import { EventEmitter } from '../events/event-emitter';
5
+ /**
6
+ * Grid data model options
7
+ */
8
+ export interface GridDataModelOptions {
9
+ /**
10
+ * Initial row count
11
+ */
12
+ rowCount: number;
13
+ /**
14
+ * Initial column count
15
+ */
16
+ colCount: number;
17
+ /**
18
+ * Storage strategy: 'sparse' (SparseMatrix) or 'columnar' (ColumnStore)
19
+ * @default 'sparse'
20
+ */
21
+ storage?: 'sparse' | 'columnar';
22
+ /**
23
+ * Enable change tracking and events
24
+ * @default true
25
+ */
26
+ enableEvents?: boolean;
27
+ /**
28
+ * Column definitions (required for columnar storage)
29
+ */
30
+ columns?: Array<{
31
+ name: string;
32
+ type: 'number' | 'string' | 'boolean';
33
+ }>;
34
+ }
35
+ /**
36
+ * GridDataModel - Main data model for grid
37
+ *
38
+ * Provides a unified interface over SparseMatrix and ColumnStore.
39
+ * Supports change tracking, events, and efficient data access.
40
+ *
41
+ * @example
42
+ * ```typescript
43
+ * // Sparse storage (default)
44
+ * const model = new GridDataModel({
45
+ * rowCount: 100000,
46
+ * colCount: 10,
47
+ * });
48
+ *
49
+ * model.setValue(0, 0, 'Hello');
50
+ * const value = model.getValue(0, 0); // 'Hello'
51
+ *
52
+ * // Columnar storage
53
+ * const columnarModel = new GridDataModel({
54
+ * rowCount: 100000,
55
+ * colCount: 3,
56
+ * storage: 'columnar',
57
+ * columns: [
58
+ * { name: 'id', type: 'number' },
59
+ * { name: 'name', type: 'string' },
60
+ * { name: 'active', type: 'boolean' },
61
+ * ],
62
+ * });
63
+ * ```
64
+ */
65
+ export declare class GridDataModel implements DataSource {
66
+ private rows;
67
+ private cols;
68
+ private storage;
69
+ private sparseData;
70
+ private columnarData;
71
+ private columnNames;
72
+ private emitter;
73
+ constructor(options: GridDataModelOptions);
74
+ getValue(row: number, col: number): any;
75
+ setValue(row: number, col: number, value: any): void;
76
+ getRow(row: number): any[] | Record<string, any>;
77
+ getColumn(col: number): any[];
78
+ setData(data: any[][] | Map<string, any>): void;
79
+ clear(): void;
80
+ get rowCount(): number;
81
+ get colCount(): number;
82
+ get events(): EventEmitter<DataSourceEvents> | undefined;
83
+ /**
84
+ * Get storage type
85
+ */
86
+ getStorageType(): 'sparse' | 'columnar';
87
+ /**
88
+ * Get underlying storage instance
89
+ */
90
+ getStorage(): SparseMatrix<any> | ColumnStore;
91
+ /**
92
+ * Check if cell has value
93
+ * @param row - Row index
94
+ * @param col - Column index
95
+ */
96
+ hasValue(row: number, col: number): boolean;
97
+ /**
98
+ * Get count of non-empty cells
99
+ */
100
+ getCellCount(): number;
101
+ }
102
+ //# sourceMappingURL=grid-data-model.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"grid-data-model.d.ts","sourceRoot":"","sources":["../../../../../packages/core/src/data/grid-data-model.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAE5E,OAAO,EAAE,YAAY,EAAE,MAAM,+CAA+C,CAAC;AAC7E,OAAO,EAAE,WAAW,EAAE,MAAM,8CAA8C,CAAC;AAC3E,OAAO,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AAEvD;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACnC;;OAEG;IACH,QAAQ,EAAE,MAAM,CAAC;IAEjB;;OAEG;IACH,QAAQ,EAAE,MAAM,CAAC;IAEjB;;;OAGG;IACH,OAAO,CAAC,EAAE,QAAQ,GAAG,UAAU,CAAC;IAEhC;;;OAGG;IACH,YAAY,CAAC,EAAE,OAAO,CAAC;IAEvB;;OAEG;IACH,OAAO,CAAC,EAAE,KAAK,CAAC;QACd,IAAI,EAAE,MAAM,CAAC;QACb,IAAI,EAAE,QAAQ,GAAG,QAAQ,GAAG,SAAS,CAAC;KACvC,CAAC,CAAC;CACJ;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AACH,qBAAa,aAAc,YAAW,UAAU;IAC9C,OAAO,CAAC,IAAI,CAAS;IACrB,OAAO,CAAC,IAAI,CAAS;IACrB,OAAO,CAAC,OAAO,CAAwB;IACvC,OAAO,CAAC,UAAU,CAAkC;IACpD,OAAO,CAAC,YAAY,CAA4B;IAChD,OAAO,CAAC,WAAW,CAAgB;IACnC,OAAO,CAAC,OAAO,CAA+C;gBAElD,OAAO,EAAE,oBAAoB;IA6BzC,QAAQ,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,GAAG;IAgBvC,QAAQ,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,GAAG,IAAI;IA8BpD,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,EAAE,GAAG,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC;IAmBhD,SAAS,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,EAAE;IA2B7B,OAAO,CAAC,IAAI,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,IAAI;IAkE/C,KAAK,IAAI,IAAI;IAYb,IAAI,QAAQ,IAAI,MAAM,CAErB;IAED,IAAI,QAAQ,IAAI,MAAM,CAErB;IAED,IAAI,MAAM,IAAI,YAAY,CAAC,gBAAgB,CAAC,GAAG,SAAS,CAEvD;IAED;;OAEG;IACH,cAAc,IAAI,QAAQ,GAAG,UAAU;IAIvC;;OAEG;IACH,UAAU,IAAI,YAAY,CAAC,GAAG,CAAC,GAAG,WAAW;IAQ7C;;;;OAIG;IACH,QAAQ,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO;IAa3C;;OAEG;IACH,YAAY,IAAI,MAAM;CAevB"}
@@ -0,0 +1,30 @@
1
+ import type { IndexMap } from './index-map.interface';
2
+ /**
3
+ * Create an IndexMap from an array of data indices
4
+ *
5
+ * @param indices - Array of data indices in visual order
6
+ * @returns IndexMap instance
7
+ *
8
+ * @example
9
+ * ```typescript
10
+ * // After sorting by column values
11
+ * const indexMap = createIndexMap([3, 1, 4, 0, 2]);
12
+ * indexMap.toDataIndex(0); // 3 (visual row 0 is data row 3)
13
+ * ```
14
+ */
15
+ export declare function createIndexMap(indices: number[]): IndexMap;
16
+ /**
17
+ * Create an identity IndexMap where visual index equals data index
18
+ *
19
+ * @param rowCount - Total number of rows
20
+ * @returns Identity IndexMap
21
+ *
22
+ * @example
23
+ * ```typescript
24
+ * const indexMap = createIdentityIndexMap(100);
25
+ * indexMap.toDataIndex(5); // 5
26
+ * indexMap.toDataIndex(99); // 99
27
+ * ```
28
+ */
29
+ export declare function createIdentityIndexMap(rowCount: number): IndexMap;
30
+ //# sourceMappingURL=index-map.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index-map.d.ts","sourceRoot":"","sources":["../../../../../../packages/core/src/data/index-map/index-map.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AAgGtD;;;;;;;;;;;;GAYG;AACH,wBAAgB,cAAc,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,QAAQ,CAE1D;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,sBAAsB,CAAC,QAAQ,EAAE,MAAM,GAAG,QAAQ,CAKjE"}
@@ -0,0 +1,49 @@
1
+ /**
2
+ * An immutable mapping from visual indices to data indices
3
+ *
4
+ * IndexMap enables non-destructive transformations like sorting and filtering
5
+ * by mapping visual/display indices to underlying data indices.
6
+ *
7
+ * @example
8
+ * ```typescript
9
+ * // After sorting: visual row 0 maps to data row 5
10
+ * const indexMap = createIndexMap([5, 2, 8, 1]);
11
+ * indexMap.toDataIndex(0); // 5
12
+ * indexMap.toDataIndex(1); // 2
13
+ * ```
14
+ */
15
+ export interface IndexMap {
16
+ /**
17
+ * Get the data index for a visual index
18
+ * @param visualIndex - Visual/display row index
19
+ * @returns Data row index, or -1 if out of bounds
20
+ */
21
+ toDataIndex(visualIndex: number): number;
22
+ /**
23
+ * Get the visual index for a data index
24
+ * @param dataIndex - Original data row index
25
+ * @returns Visual row index, or -1 if filtered out
26
+ */
27
+ toVisualIndex(dataIndex: number): number;
28
+ /**
29
+ * Number of visible rows (after filtering)
30
+ */
31
+ readonly length: number;
32
+ /**
33
+ * Get data indices as array (for iteration)
34
+ * @returns Read-only array of data indices in visual order
35
+ */
36
+ readonly indices: ReadonlyArray<number>;
37
+ /**
38
+ * Iterate over [visualIndex, dataIndex] pairs
39
+ */
40
+ [Symbol.iterator](): IterableIterator<[number, number]>;
41
+ }
42
+ /**
43
+ * Options for creating an identity IndexMap
44
+ */
45
+ export interface IndexMapOptions {
46
+ /** Total number of rows */
47
+ rowCount: number;
48
+ }
49
+ //# sourceMappingURL=index-map.interface.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index-map.interface.d.ts","sourceRoot":"","sources":["../../../../../../packages/core/src/data/index-map/index-map.interface.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AACH,MAAM,WAAW,QAAQ;IACvB;;;;OAIG;IACH,WAAW,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,CAAC;IAEzC;;;;OAIG;IACH,aAAa,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAAC;IAEzC;;OAEG;IACH,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IAExB;;;OAGG;IACH,QAAQ,CAAC,OAAO,EAAE,aAAa,CAAC,MAAM,CAAC,CAAC;IAExC;;OAEG;IACH,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,gBAAgB,CAAC,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;CACzD;AAED;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,2BAA2B;IAC3B,QAAQ,EAAE,MAAM,CAAC;CAClB"}
@@ -0,0 +1,7 @@
1
+ /**
2
+ * IndexMap - Non-destructive index transformation for sorting/filtering
3
+ * @packageDocumentation
4
+ */
5
+ export type { IndexMap, IndexMapOptions } from './index-map.interface';
6
+ export { createIndexMap, createIdentityIndexMap } from './index-map';
7
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../packages/core/src/data/index-map/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,YAAY,EAAE,QAAQ,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AACvE,OAAO,EAAE,cAAc,EAAE,sBAAsB,EAAE,MAAM,aAAa,CAAC"}
@@ -0,0 +1,9 @@
1
+ /**
2
+ * Data layer for ZenGrid
3
+ */
4
+ export type { DataSource, DataSourceEvents } from './data-source.interface';
5
+ export { GridDataModel } from './grid-data-model';
6
+ export type { GridDataModelOptions } from './grid-data-model';
7
+ export { DataManager } from './data-manager';
8
+ export type { DataManagerOptions } from './data-manager';
9
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../packages/core/src/data/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,YAAY,EAAE,UAAU,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAC5E,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAClD,YAAY,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AAC9D,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAC7C,YAAY,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAC"}
@@ -0,0 +1,87 @@
1
+ import type { CellRef } from '../types';
2
+ /**
3
+ * Cell editor interface
4
+ *
5
+ * Defines the contract for all cell editors.
6
+ * Editors handle the lifecycle of editing a cell value.
7
+ */
8
+ export interface CellEditor<T = any> {
9
+ /**
10
+ * Initialize the editor
11
+ * @param container - Container element for the editor
12
+ * @param value - Initial value
13
+ * @param params - Edit parameters
14
+ */
15
+ init(container: HTMLElement, value: T, params: EditorParams): void;
16
+ /**
17
+ * Get the current value from the editor
18
+ * @returns Current editor value
19
+ */
20
+ getValue(): T;
21
+ /**
22
+ * Set focus on the editor input
23
+ */
24
+ focus(): void;
25
+ /**
26
+ * Destroy the editor and cleanup
27
+ */
28
+ destroy(): void;
29
+ /**
30
+ * Check if current value is valid
31
+ * @returns Validation result
32
+ */
33
+ isValid?(): boolean | ValidationResult;
34
+ /**
35
+ * Handle key events (optional)
36
+ * @param event - Keyboard event
37
+ * @returns True if handled, false to propagate
38
+ */
39
+ onKeyDown?(event: KeyboardEvent): boolean;
40
+ }
41
+ /**
42
+ * Parameters passed to editor initialization
43
+ */
44
+ export interface EditorParams {
45
+ /**
46
+ * Cell being edited
47
+ */
48
+ cell: CellRef;
49
+ /**
50
+ * Column definition
51
+ */
52
+ column?: any;
53
+ /**
54
+ * Row data
55
+ */
56
+ rowData?: any;
57
+ /**
58
+ * Callback when editing is complete
59
+ */
60
+ onComplete?: (value: any, cancelled: boolean) => void;
61
+ /**
62
+ * Callback when value changes
63
+ */
64
+ onChange?: (value: any) => void;
65
+ /**
66
+ * Custom editor options
67
+ */
68
+ options?: Record<string, any>;
69
+ }
70
+ /**
71
+ * Validation result
72
+ */
73
+ export interface ValidationResult {
74
+ /**
75
+ * Whether value is valid
76
+ */
77
+ valid: boolean;
78
+ /**
79
+ * Error message if invalid
80
+ */
81
+ message?: string;
82
+ }
83
+ /**
84
+ * Editor factory function type
85
+ */
86
+ export type EditorFactory<T = any> = (params: EditorParams) => CellEditor<T>;
87
+ //# sourceMappingURL=cell-editor.interface.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cell-editor.interface.d.ts","sourceRoot":"","sources":["../../../../../packages/core/src/editing/cell-editor.interface.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,UAAU,CAAC;AAExC;;;;;GAKG;AACH,MAAM,WAAW,UAAU,CAAC,CAAC,GAAG,GAAG;IACjC;;;;;OAKG;IACH,IAAI,CAAC,SAAS,EAAE,WAAW,EAAE,KAAK,EAAE,CAAC,EAAE,MAAM,EAAE,YAAY,GAAG,IAAI,CAAC;IAEnE;;;OAGG;IACH,QAAQ,IAAI,CAAC,CAAC;IAEd;;OAEG;IACH,KAAK,IAAI,IAAI,CAAC;IAEd;;OAEG;IACH,OAAO,IAAI,IAAI,CAAC;IAEhB;;;OAGG;IACH,OAAO,CAAC,IAAI,OAAO,GAAG,gBAAgB,CAAC;IAEvC;;;;OAIG;IACH,SAAS,CAAC,CAAC,KAAK,EAAE,aAAa,GAAG,OAAO,CAAC;CAC3C;AAED;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B;;OAEG;IACH,IAAI,EAAE,OAAO,CAAC;IAEd;;OAEG;IACH,MAAM,CAAC,EAAE,GAAG,CAAC;IAEb;;OAEG;IACH,OAAO,CAAC,EAAE,GAAG,CAAC;IAEd;;OAEG;IACH,UAAU,CAAC,EAAE,CAAC,KAAK,EAAE,GAAG,EAAE,SAAS,EAAE,OAAO,KAAK,IAAI,CAAC;IAEtD;;OAEG;IACH,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,GAAG,KAAK,IAAI,CAAC;IAEhC;;OAEG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;CAC/B;AAED;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B;;OAEG;IACH,KAAK,EAAE,OAAO,CAAC;IAEf;;OAEG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED;;GAEG;AACH,MAAM,MAAM,aAAa,CAAC,CAAC,GAAG,GAAG,IAAI,CAAC,MAAM,EAAE,YAAY,KAAK,UAAU,CAAC,CAAC,CAAC,CAAC"}
@@ -0,0 +1,67 @@
1
+ import type { CellEditor, EditorParams } from './cell-editor.interface';
2
+ /**
3
+ * Date editor options
4
+ */
5
+ export interface DateEditorOptions {
6
+ /**
7
+ * Minimum date (ISO string or Date)
8
+ */
9
+ min?: string | Date;
10
+ /**
11
+ * Maximum date (ISO string or Date)
12
+ */
13
+ max?: string | Date;
14
+ /**
15
+ * Input type
16
+ * @default 'date'
17
+ */
18
+ type?: 'date' | 'datetime-local' | 'time';
19
+ /**
20
+ * Date format for display
21
+ * @default 'YYYY-MM-DD'
22
+ */
23
+ format?: string;
24
+ }
25
+ /**
26
+ * DateEditor - Date/time input editor
27
+ *
28
+ * Provides a date picker for editing date values.
29
+ * Supports date, datetime, and time inputs with min/max validation.
30
+ *
31
+ * @example
32
+ * ```typescript
33
+ * const editor = new DateEditor();
34
+ * editor.init(container, new Date(), {
35
+ * cell: { row: 0, col: 0 },
36
+ * options: {
37
+ * type: 'date',
38
+ * min: '2024-01-01',
39
+ * max: '2024-12-31',
40
+ * },
41
+ * });
42
+ * ```
43
+ */
44
+ export declare class DateEditor implements CellEditor<Date | string> {
45
+ private input;
46
+ private options;
47
+ private boundHandleKeyDown;
48
+ constructor();
49
+ init(container: HTMLElement, value: Date | string, params: EditorParams): void;
50
+ getValue(): Date | string;
51
+ focus(): void;
52
+ isValid(): boolean | {
53
+ valid: boolean;
54
+ message?: string;
55
+ };
56
+ destroy(): void;
57
+ private handleKeyDown;
58
+ /**
59
+ * Convert Date or string to input value format
60
+ */
61
+ private toInputValue;
62
+ /**
63
+ * Format date for display in error messages
64
+ */
65
+ private formatDate;
66
+ }
67
+ //# sourceMappingURL=date-editor.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"date-editor.d.ts","sourceRoot":"","sources":["../../../../../packages/core/src/editing/date-editor.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AAExE;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC;;OAEG;IACH,GAAG,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAEpB;;OAEG;IACH,GAAG,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAEpB;;;OAGG;IACH,IAAI,CAAC,EAAE,MAAM,GAAG,gBAAgB,GAAG,MAAM,CAAC;IAE1C;;;OAGG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,qBAAa,UAAW,YAAW,UAAU,CAAC,IAAI,GAAG,MAAM,CAAC;IAC1D,OAAO,CAAC,KAAK,CAAiC;IAC9C,OAAO,CAAC,OAAO,CAAyB;IACxC,OAAO,CAAC,kBAAkB,CAAiC;;IAM3D,IAAI,CAAC,SAAS,EAAE,WAAW,EAAE,KAAK,EAAE,IAAI,GAAG,MAAM,EAAE,MAAM,EAAE,YAAY,GAAG,IAAI;IAoD9E,QAAQ,IAAI,IAAI,GAAG,MAAM;IAQzB,KAAK,IAAI,IAAI;IAIb,OAAO,IAAI,OAAO,GAAG;QAAE,KAAK,EAAE,OAAO,CAAC;QAAC,OAAO,CAAC,EAAE,MAAM,CAAA;KAAE;IAwCzD,OAAO,IAAI,IAAI;IAQf,OAAO,CAAC,aAAa;IAKrB;;OAEG;IACH,OAAO,CAAC,YAAY;IAgBpB;;OAEG;IACH,OAAO,CAAC,UAAU;CAGnB"}