@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,71 @@
1
+ import type { CellRenderer, RenderParams } from './renderer.interface';
2
+ /**
3
+ * Options for NumberRenderer
4
+ */
5
+ export interface NumberRendererOptions {
6
+ /**
7
+ * Locale for number formatting (e.g., 'en-US', 'de-DE')
8
+ * @default undefined (uses browser default)
9
+ */
10
+ locale?: string;
11
+ /**
12
+ * Minimum fraction digits
13
+ * @default 0
14
+ */
15
+ minimumFractionDigits?: number;
16
+ /**
17
+ * Maximum fraction digits
18
+ * @default 2
19
+ */
20
+ maximumFractionDigits?: number;
21
+ /**
22
+ * Number formatting style
23
+ * @default 'decimal'
24
+ */
25
+ style?: 'decimal' | 'currency' | 'percent';
26
+ /**
27
+ * Currency code (required if style is 'currency')
28
+ */
29
+ currency?: string;
30
+ /**
31
+ * CSS class for negative numbers
32
+ * @default 'zg-cell-negative'
33
+ */
34
+ negativeClass?: string;
35
+ }
36
+ /**
37
+ * NumberRenderer - Formatted number display
38
+ *
39
+ * Renders numbers with locale-aware formatting using Intl.NumberFormat.
40
+ * Supports decimal, currency, and percentage formats.
41
+ * Applies conditional styling for negative numbers.
42
+ *
43
+ * @example
44
+ * ```typescript
45
+ * const renderer = new NumberRenderer({
46
+ * minimumFractionDigits: 2,
47
+ * maximumFractionDigits: 2,
48
+ * });
49
+ * renderer.render(element, { value: 1234.5, ...otherParams });
50
+ * // Displays: "1,234.50"
51
+ * ```
52
+ *
53
+ * @example
54
+ * ```typescript
55
+ * const currencyRenderer = new NumberRenderer({
56
+ * style: 'currency',
57
+ * currency: 'USD',
58
+ * });
59
+ * renderer.render(element, { value: 1234.5, ...otherParams });
60
+ * // Displays: "$1,234.50"
61
+ * ```
62
+ */
63
+ export declare class NumberRenderer implements CellRenderer {
64
+ private formatter;
65
+ private negativeClass;
66
+ constructor(options?: NumberRendererOptions);
67
+ render(element: HTMLElement, params: RenderParams): void;
68
+ update(element: HTMLElement, params: RenderParams): void;
69
+ destroy(element: HTMLElement): void;
70
+ }
71
+ //# sourceMappingURL=number-renderer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"number-renderer.d.ts","sourceRoot":"","sources":["../../../../../../packages/core/src/rendering/renderers/number-renderer.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAEvE;;GAEG;AACH,MAAM,WAAW,qBAAqB;IACpC;;;OAGG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;IAEhB;;;OAGG;IACH,qBAAqB,CAAC,EAAE,MAAM,CAAC;IAE/B;;;OAGG;IACH,qBAAqB,CAAC,EAAE,MAAM,CAAC;IAE/B;;;OAGG;IACH,KAAK,CAAC,EAAE,SAAS,GAAG,UAAU,GAAG,SAAS,CAAC;IAE3C;;OAEG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;IAElB;;;OAGG;IACH,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,qBAAa,cAAe,YAAW,YAAY;IACjD,OAAO,CAAC,SAAS,CAAoB;IACrC,OAAO,CAAC,aAAa,CAAS;gBAElB,OAAO,GAAE,qBAA0B;IAU/C,MAAM,CAAC,OAAO,EAAE,WAAW,EAAE,MAAM,EAAE,YAAY,GAAG,IAAI;IAKxD,MAAM,CAAC,OAAO,EAAE,WAAW,EAAE,MAAM,EAAE,YAAY,GAAG,IAAI;IAYxD,OAAO,CAAC,OAAO,EAAE,WAAW,GAAG,IAAI;CAIpC"}
@@ -0,0 +1,55 @@
1
+ import type { CellRenderer } from './renderer.interface';
2
+ /**
3
+ * RendererRegistry - Named renderer lookup
4
+ *
5
+ * Manages a collection of renderers by name for dynamic lookup.
6
+ * Provides a default text renderer for fallback.
7
+ *
8
+ * @example
9
+ * ```typescript
10
+ * const registry = new RendererRegistry();
11
+ * registry.register('number', new NumberRenderer());
12
+ * registry.register('image', new ImageRenderer());
13
+ *
14
+ * const renderer = registry.get('number'); // Returns NumberRenderer
15
+ * const fallback = registry.get('unknown'); // Returns TextRenderer (default)
16
+ * ```
17
+ */
18
+ export declare class RendererRegistry {
19
+ private renderers;
20
+ private defaultRenderer;
21
+ constructor();
22
+ /**
23
+ * Register a renderer with a name
24
+ * @param name - Unique renderer name
25
+ * @param renderer - Renderer instance
26
+ */
27
+ register(name: string, renderer: CellRenderer): void;
28
+ /**
29
+ * Get a renderer by name
30
+ * @param name - Renderer name (undefined returns default)
31
+ * @returns Renderer instance or default if not found
32
+ */
33
+ get(name: string | undefined): CellRenderer;
34
+ /**
35
+ * Check if a renderer is registered
36
+ * @param name - Renderer name
37
+ * @returns True if registered
38
+ */
39
+ has(name: string): boolean;
40
+ /**
41
+ * Unregister a renderer
42
+ * @param name - Renderer name
43
+ * @returns True if unregistered, false if not found or is default
44
+ */
45
+ unregister(name: string): boolean;
46
+ /**
47
+ * Get all registered renderer names
48
+ */
49
+ get names(): string[];
50
+ /**
51
+ * Clear all renderers except default
52
+ */
53
+ clear(): void;
54
+ }
55
+ //# sourceMappingURL=renderer-registry.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"renderer-registry.d.ts","sourceRoot":"","sources":["../../../../../../packages/core/src/rendering/renderers/renderer-registry.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAGzD;;;;;;;;;;;;;;;GAeG;AACH,qBAAa,gBAAgB;IAC3B,OAAO,CAAC,SAAS,CAAwC;IACzD,OAAO,CAAC,eAAe,CAAe;;IAOtC;;;;OAIG;IACH,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,YAAY,GAAG,IAAI;IAIpD;;;;OAIG;IACH,GAAG,CAAC,IAAI,EAAE,MAAM,GAAG,SAAS,GAAG,YAAY;IAK3C;;;;OAIG;IACH,GAAG,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;IAI1B;;;;OAIG;IACH,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;IAKjC;;OAEG;IACH,IAAI,KAAK,IAAI,MAAM,EAAE,CAEpB;IAED;;OAEG;IACH,KAAK,IAAI,IAAI;CAId"}
@@ -0,0 +1,79 @@
1
+ import type { CellRef, CellPosition, ColumnDef } from '../../types';
2
+ /**
3
+ * Parameters passed to renderers for rendering a cell
4
+ */
5
+ export interface RenderParams {
6
+ /**
7
+ * Cell coordinates
8
+ */
9
+ cell: CellRef;
10
+ /**
11
+ * Cell position and dimensions
12
+ */
13
+ position: CellPosition;
14
+ /**
15
+ * Cell data value
16
+ */
17
+ value: any;
18
+ /**
19
+ * Column definition (if available)
20
+ */
21
+ column?: ColumnDef;
22
+ /**
23
+ * Full row data (for composite renderers that need access to other columns)
24
+ */
25
+ rowData?: any;
26
+ /**
27
+ * Whether the cell is currently selected
28
+ */
29
+ isSelected: boolean;
30
+ /**
31
+ * Whether the cell is the active cell (has focus)
32
+ */
33
+ isActive: boolean;
34
+ /**
35
+ * Whether the cell is currently being edited
36
+ */
37
+ isEditing: boolean;
38
+ }
39
+ /**
40
+ * Cell renderer interface
41
+ *
42
+ * Renderers are responsible for displaying cell content in DOM elements.
43
+ * They support both initial render and incremental updates for performance.
44
+ */
45
+ export interface CellRenderer {
46
+ /**
47
+ * Initial render into a DOM element
48
+ * Called when a cell is first displayed or when switching renderers
49
+ *
50
+ * @param element - DOM element to render into (from cell pool)
51
+ * @param params - Rendering parameters
52
+ */
53
+ render(element: HTMLElement, params: RenderParams): void;
54
+ /**
55
+ * Update an existing rendered element
56
+ * Called when cell value or state changes but renderer type remains the same
57
+ * Should be optimized for frequent calls (e.g., during scrolling)
58
+ *
59
+ * @param element - DOM element to update
60
+ * @param params - Updated rendering parameters
61
+ */
62
+ update(element: HTMLElement, params: RenderParams): void;
63
+ /**
64
+ * Cleanup before element is returned to pool
65
+ * Called when cell is scrolled out of view
66
+ *
67
+ * @param element - DOM element to cleanup
68
+ */
69
+ destroy(element: HTMLElement): void;
70
+ /**
71
+ * Optional: Get CSS class to apply to the cell based on its state
72
+ * Useful for conditional styling
73
+ *
74
+ * @param params - Rendering parameters
75
+ * @returns CSS class name or undefined
76
+ */
77
+ getCellClass?(params: RenderParams): string | undefined;
78
+ }
79
+ //# sourceMappingURL=renderer.interface.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"renderer.interface.d.ts","sourceRoot":"","sources":["../../../../../../packages/core/src/rendering/renderers/renderer.interface.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAEpE;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B;;OAEG;IACH,IAAI,EAAE,OAAO,CAAC;IAEd;;OAEG;IACH,QAAQ,EAAE,YAAY,CAAC;IAEvB;;OAEG;IACH,KAAK,EAAE,GAAG,CAAC;IAEX;;OAEG;IACH,MAAM,CAAC,EAAE,SAAS,CAAC;IAEnB;;OAEG;IACH,OAAO,CAAC,EAAE,GAAG,CAAC;IAEd;;OAEG;IACH,UAAU,EAAE,OAAO,CAAC;IAEpB;;OAEG;IACH,QAAQ,EAAE,OAAO,CAAC;IAElB;;OAEG;IACH,SAAS,EAAE,OAAO,CAAC;CACpB;AAED;;;;;GAKG;AACH,MAAM,WAAW,YAAY;IAC3B;;;;;;OAMG;IACH,MAAM,CAAC,OAAO,EAAE,WAAW,EAAE,MAAM,EAAE,YAAY,GAAG,IAAI,CAAC;IAEzD;;;;;;;OAOG;IACH,MAAM,CAAC,OAAO,EAAE,WAAW,EAAE,MAAM,EAAE,YAAY,GAAG,IAAI,CAAC;IAEzD;;;;;OAKG;IACH,OAAO,CAAC,OAAO,EAAE,WAAW,GAAG,IAAI,CAAC;IAEpC;;;;;;OAMG;IACH,YAAY,CAAC,CAAC,MAAM,EAAE,YAAY,GAAG,MAAM,GAAG,SAAS,CAAC;CACzD"}
@@ -0,0 +1,20 @@
1
+ import type { CellRenderer, RenderParams } from './renderer.interface';
2
+ /**
3
+ * TextRenderer - Default renderer for text content
4
+ *
5
+ * Displays cell values as plain text with automatic string coercion.
6
+ * Handles null/undefined values by displaying empty string.
7
+ *
8
+ * @example
9
+ * ```typescript
10
+ * const renderer = new TextRenderer();
11
+ * renderer.render(element, { value: 'Hello', ...otherParams });
12
+ * ```
13
+ */
14
+ export declare class TextRenderer implements CellRenderer {
15
+ render(element: HTMLElement, params: RenderParams): void;
16
+ update(element: HTMLElement, params: RenderParams): void;
17
+ destroy(element: HTMLElement): void;
18
+ private formatValue;
19
+ }
20
+ //# sourceMappingURL=text-renderer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"text-renderer.d.ts","sourceRoot":"","sources":["../../../../../../packages/core/src/rendering/renderers/text-renderer.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAEvE;;;;;;;;;;;GAWG;AACH,qBAAa,YAAa,YAAW,YAAY;IAC/C,MAAM,CAAC,OAAO,EAAE,WAAW,EAAE,MAAM,EAAE,YAAY,GAAG,IAAI;IAKxD,MAAM,CAAC,OAAO,EAAE,WAAW,EAAE,MAAM,EAAE,YAAY,GAAG,IAAI;IAIxD,OAAO,CAAC,OAAO,EAAE,WAAW,GAAG,IAAI;IAKnC,OAAO,CAAC,WAAW;CAIpB"}
@@ -0,0 +1,108 @@
1
+ /**
2
+ * Spatial Hit Tester using RTree
3
+ *
4
+ * Provides fast hit testing for finding cells at mouse/touch coordinates.
5
+ */
6
+ import { type Rectangle } from '@zengrid/shared/data-structures/rtree';
7
+ /**
8
+ * Cell reference
9
+ */
10
+ export interface CellRef {
11
+ row: number;
12
+ col: number;
13
+ }
14
+ /**
15
+ * SpatialHitTester - Fast hit testing using RTree spatial index
16
+ *
17
+ * Maintains a spatial index of rendered cells for O(log n) hit testing.
18
+ *
19
+ * @example
20
+ * ```typescript
21
+ * const hitTester = new SpatialHitTester();
22
+ *
23
+ * // Register cells as they're rendered
24
+ * hitTester.registerCell(0, 0, { minX: 0, minY: 0, maxX: 100, maxY: 30 });
25
+ * hitTester.registerCell(0, 1, { minX: 100, minY: 0, maxX: 200, maxY: 30 });
26
+ *
27
+ * // Find cell at mouse position
28
+ * const cell = hitTester.getCellAtPoint(150, 15);
29
+ * // { row: 0, col: 1 }
30
+ * ```
31
+ */
32
+ export declare class SpatialHitTester {
33
+ private spatialIndex;
34
+ private renderedCells;
35
+ /**
36
+ * Register a rendered cell with its screen coordinates
37
+ *
38
+ * @param row - Row index
39
+ * @param col - Column index
40
+ * @param rect - Bounding rectangle on screen
41
+ */
42
+ registerCell(row: number, col: number, rect: Rectangle): void;
43
+ /**
44
+ * Unregister a cell (e.g., when it scrolls out of view)
45
+ *
46
+ * @param row - Row index
47
+ * @param col - Column index
48
+ */
49
+ unregisterCell(row: number, col: number): void;
50
+ /**
51
+ * Find cell at mouse/touch coordinates
52
+ *
53
+ * @param x - X coordinate
54
+ * @param y - Y coordinate
55
+ * @returns Cell reference or null if no cell at point
56
+ */
57
+ getCellAtPoint(x: number, y: number): CellRef | null;
58
+ /**
59
+ * Find all cells in a rectangular region (e.g., selection box)
60
+ *
61
+ * @param rect - Search rectangle
62
+ * @returns Array of cell references
63
+ */
64
+ getCellsInRect(rect: Rectangle): CellRef[];
65
+ /**
66
+ * Find cells near a point (for touch targets with margin)
67
+ *
68
+ * @param x - X coordinate
69
+ * @param y - Y coordinate
70
+ * @param maxDistance - Maximum distance in pixels
71
+ * @param maxResults - Maximum number of results
72
+ * @returns Array of nearest cells, sorted by distance
73
+ */
74
+ getCellsNear(x: number, y: number, maxDistance?: number, maxResults?: number): CellRef[];
75
+ /**
76
+ * Check if a cell is currently registered
77
+ *
78
+ * @param row - Row index
79
+ * @param col - Column index
80
+ * @returns true if cell is registered
81
+ */
82
+ hasCell(row: number, col: number): boolean;
83
+ /**
84
+ * Get the bounding rectangle of a registered cell
85
+ *
86
+ * @param row - Row index
87
+ * @param col - Column index
88
+ * @returns Bounding rectangle or null if not registered
89
+ */
90
+ getCellRect(row: number, col: number): Rectangle | null;
91
+ /**
92
+ * Clear all registered cells (e.g., on scroll or resize)
93
+ */
94
+ clear(): void;
95
+ /**
96
+ * Get statistics about the spatial index
97
+ */
98
+ getStats(): {
99
+ cellCount: number;
100
+ treeHeight: number;
101
+ nodeCount: number;
102
+ };
103
+ /**
104
+ * Generate unique cell ID
105
+ */
106
+ private getCellId;
107
+ }
108
+ //# sourceMappingURL=spatial-hit-tester.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"spatial-hit-tester.d.ts","sourceRoot":"","sources":["../../../../../packages/core/src/rendering/spatial-hit-tester.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAS,KAAK,SAAS,EAAE,MAAM,uCAAuC,CAAC;AAE9E;;GAEG;AACH,MAAM,WAAW,OAAO;IACtB,GAAG,EAAE,MAAM,CAAC;IACZ,GAAG,EAAE,MAAM,CAAC;CACb;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,qBAAa,gBAAgB;IAC3B,OAAO,CAAC,YAAY,CAA+B;IACnD,OAAO,CAAC,aAAa,CAAqC;IAE1D;;;;;;OAMG;IACH,YAAY,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,SAAS,GAAG,IAAI;IAc7D;;;;;OAKG;IACH,cAAc,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,IAAI;IAU9C;;;;;;OAMG;IACH,cAAc,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,OAAO,GAAG,IAAI;IAOpD;;;;;OAKG;IACH,cAAc,CAAC,IAAI,EAAE,SAAS,GAAG,OAAO,EAAE;IAI1C;;;;;;;;OAQG;IACH,YAAY,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,WAAW,GAAE,MAAW,EAAE,UAAU,GAAE,MAAU,GAAG,OAAO,EAAE;IAM/F;;;;;;OAMG;IACH,OAAO,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO;IAI1C;;;;;;OAMG;IACH,WAAW,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI;IAIvD;;OAEG;IACH,KAAK,IAAI,IAAI;IAKb;;OAEG;IACH,QAAQ,IAAI;QACV,SAAS,EAAE,MAAM,CAAC;QAClB,UAAU,EAAE,MAAM,CAAC;QACnB,SAAS,EAAE,MAAM,CAAC;KACnB;IAUD;;OAEG;IACH,OAAO,CAAC,SAAS;CAGlB"}
@@ -0,0 +1,6 @@
1
+ /**
2
+ * VirtualScroller - Calculate visible ranges for virtual scrolling
3
+ */
4
+ export type { VirtualScrollerOptions, CellPosition, } from './virtual-scroller.interface';
5
+ export { VirtualScroller } from './virtual-scroller';
6
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../packages/core/src/rendering/virtual-scroller/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,YAAY,EACV,sBAAsB,EACtB,YAAY,GACb,MAAM,8BAA8B,CAAC;AACtC,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC"}
@@ -0,0 +1,56 @@
1
+ import type { VirtualScroller as IVirtualScroller, VirtualScrollerOptions, CellPosition } from './virtual-scroller.interface';
2
+ import type { HeightProvider } from '../height-provider';
3
+ import type { WidthProvider } from '../width-provider';
4
+ import type { VisibleRange } from '../../types';
5
+ /**
6
+ * VirtualScroller implementation
7
+ *
8
+ * Calculates visible ranges for virtual scrolling with configurable height/width strategies.
9
+ * Uses PrefixSumArray (via providers) for efficient offset-to-index lookups.
10
+ *
11
+ * @example
12
+ * ```typescript
13
+ * const scroller = new VirtualScroller({
14
+ * rowCount: 10000,
15
+ * colCount: 20,
16
+ * rowHeight: 30,
17
+ * colWidth: 100,
18
+ * viewportWidth: 800,
19
+ * viewportHeight: 600,
20
+ * });
21
+ *
22
+ * const visible = scroller.calculateVisibleRange(1000, 0);
23
+ * // { startRow: 30, endRow: 53, startCol: 0, endCol: 10 }
24
+ * ```
25
+ */
26
+ export declare class VirtualScroller implements IVirtualScroller {
27
+ private heightProvider;
28
+ private widthProvider;
29
+ private rows;
30
+ private cols;
31
+ private vpWidth;
32
+ private vpHeight;
33
+ private overscanRows;
34
+ private overscanCols;
35
+ constructor(options: VirtualScrollerOptions);
36
+ calculateVisibleRange(scrollTop: number, scrollLeft: number): VisibleRange;
37
+ getCellPosition(row: number, col: number): CellPosition;
38
+ getRowAtOffset(offset: number): number;
39
+ getColAtOffset(offset: number): number;
40
+ getRowOffset(row: number): number;
41
+ getColOffset(col: number): number;
42
+ getRowHeight(row: number): number;
43
+ getColWidth(col: number): number;
44
+ getTotalHeight(): number;
45
+ getTotalWidth(): number;
46
+ updateRowHeight(row: number, height: number): void;
47
+ updateColWidth(col: number, width: number): void;
48
+ setViewport(width: number, height: number): void;
49
+ get rowCount(): number;
50
+ get colCount(): number;
51
+ get viewportWidth(): number;
52
+ get viewportHeight(): number;
53
+ getWidthProvider(): WidthProvider;
54
+ getHeightProvider(): HeightProvider;
55
+ }
56
+ //# sourceMappingURL=virtual-scroller.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"virtual-scroller.d.ts","sourceRoot":"","sources":["../../../../../../packages/core/src/rendering/virtual-scroller/virtual-scroller.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,eAAe,IAAI,gBAAgB,EACnC,sBAAsB,EACtB,YAAY,EACb,MAAM,8BAA8B,CAAC;AACtC,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AACzD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAKvD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAEhD;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,qBAAa,eAAgB,YAAW,gBAAgB;IACtD,OAAO,CAAC,cAAc,CAAiB;IACvC,OAAO,CAAC,aAAa,CAAgB;IACrC,OAAO,CAAC,IAAI,CAAS;IACrB,OAAO,CAAC,IAAI,CAAS;IACrB,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,QAAQ,CAAS;IACzB,OAAO,CAAC,YAAY,CAAS;IAC7B,OAAO,CAAC,YAAY,CAAS;gBAEjB,OAAO,EAAE,sBAAsB;IAiC3C,qBAAqB,CAAC,SAAS,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,YAAY;IAkC1E,eAAe,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,YAAY;IASvD,cAAc,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM;IAItC,cAAc,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM;IAItC,YAAY,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM;IAIjC,YAAY,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM;IAIjC,YAAY,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM;IAIjC,WAAW,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM;IAIhC,cAAc,IAAI,MAAM;IAIxB,aAAa,IAAI,MAAM;IAIvB,eAAe,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI;IASlD,cAAc,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI;IAShD,WAAW,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI;IAQhD,IAAI,QAAQ,IAAI,MAAM,CAErB;IAED,IAAI,QAAQ,IAAI,MAAM,CAErB;IAED,IAAI,aAAa,IAAI,MAAM,CAE1B;IAED,IAAI,cAAc,IAAI,MAAM,CAE3B;IAED,gBAAgB,IAAI,aAAa;IAIjC,iBAAiB,IAAI,cAAc;CAGpC"}
@@ -0,0 +1,170 @@
1
+ import type { HeightProvider } from '../height-provider';
2
+ import type { WidthProvider } from '../width-provider';
3
+ import type { VisibleRange } from '../../types';
4
+ /**
5
+ * Options for creating a VirtualScroller
6
+ */
7
+ export interface VirtualScrollerOptions {
8
+ /**
9
+ * Total number of rows
10
+ */
11
+ rowCount: number;
12
+ /**
13
+ * Total number of columns
14
+ */
15
+ colCount: number;
16
+ /**
17
+ * Viewport width in pixels
18
+ */
19
+ viewportWidth: number;
20
+ /**
21
+ * Viewport height in pixels
22
+ */
23
+ viewportHeight: number;
24
+ /**
25
+ * Custom height provider (optional)
26
+ * If not provided, auto-selected based on rowHeight
27
+ */
28
+ heightProvider?: HeightProvider;
29
+ /**
30
+ * Row height(s) - used if heightProvider not provided
31
+ * - number: uniform height for all rows
32
+ * - number[]: individual heights per row
33
+ * @default 30
34
+ */
35
+ rowHeight?: number | number[];
36
+ /**
37
+ * Custom width provider (optional)
38
+ * If not provided, auto-selected based on colWidth
39
+ */
40
+ widthProvider?: WidthProvider;
41
+ /**
42
+ * Column width(s) - used if widthProvider not provided
43
+ * - number: uniform width for all columns
44
+ * - number[]: individual widths per column
45
+ * @default 100
46
+ */
47
+ colWidth?: number | number[];
48
+ /**
49
+ * Number of rows to render beyond visible area (buffer)
50
+ * @default 3
51
+ */
52
+ overscanRows?: number;
53
+ /**
54
+ * Number of columns to render beyond visible area (buffer)
55
+ * @default 2
56
+ */
57
+ overscanCols?: number;
58
+ }
59
+ /**
60
+ * Cell position and dimensions
61
+ */
62
+ export interface CellPosition {
63
+ x: number;
64
+ y: number;
65
+ width: number;
66
+ height: number;
67
+ }
68
+ /**
69
+ * VirtualScroller interface
70
+ *
71
+ * Calculates which rows and columns are visible based on scroll position.
72
+ * Uses HeightProvider and WidthProvider strategies for flexible dimension handling.
73
+ */
74
+ export interface VirtualScroller {
75
+ /**
76
+ * Calculate the visible range of rows and columns
77
+ * @param scrollTop - Vertical scroll position in pixels
78
+ * @param scrollLeft - Horizontal scroll position in pixels
79
+ * @returns Visible range with overscan buffer
80
+ */
81
+ calculateVisibleRange(scrollTop: number, scrollLeft: number): VisibleRange;
82
+ /**
83
+ * Get the position and dimensions of a specific cell
84
+ * @param row - Row index
85
+ * @param col - Column index
86
+ * @returns Cell position (x, y, width, height)
87
+ */
88
+ getCellPosition(row: number, col: number): CellPosition;
89
+ /**
90
+ * Find which row is at a given Y offset
91
+ * @param offset - Y position in pixels
92
+ * @returns Row index
93
+ */
94
+ getRowAtOffset(offset: number): number;
95
+ /**
96
+ * Find which column is at a given X offset
97
+ * @param offset - X position in pixels
98
+ * @returns Column index
99
+ */
100
+ getColAtOffset(offset: number): number;
101
+ /**
102
+ * Get the Y offset where a row starts
103
+ * @param row - Row index
104
+ * @returns Y offset in pixels
105
+ */
106
+ getRowOffset(row: number): number;
107
+ /**
108
+ * Get the X offset where a column starts
109
+ * @param col - Column index
110
+ * @returns X offset in pixels
111
+ */
112
+ getColOffset(col: number): number;
113
+ /**
114
+ * Get the height of a specific row
115
+ * @param row - Row index
116
+ * @returns Height in pixels
117
+ */
118
+ getRowHeight(row: number): number;
119
+ /**
120
+ * Get the width of a specific column
121
+ * @param col - Column index
122
+ * @returns Width in pixels
123
+ */
124
+ getColWidth(col: number): number;
125
+ /**
126
+ * Get the total height of all rows
127
+ * @returns Total height in pixels
128
+ */
129
+ getTotalHeight(): number;
130
+ /**
131
+ * Get the total width of all columns
132
+ * @returns Total width in pixels
133
+ */
134
+ getTotalWidth(): number;
135
+ /**
136
+ * Update the height of a specific row
137
+ * @param row - Row index
138
+ * @param height - New height in pixels
139
+ */
140
+ updateRowHeight(row: number, height: number): void;
141
+ /**
142
+ * Update the width of a specific column
143
+ * @param col - Column index
144
+ * @param width - New width in pixels
145
+ */
146
+ updateColWidth(col: number, width: number): void;
147
+ /**
148
+ * Update the viewport dimensions
149
+ * @param width - New viewport width
150
+ * @param height - New viewport height
151
+ */
152
+ setViewport(width: number, height: number): void;
153
+ /**
154
+ * Total number of rows
155
+ */
156
+ readonly rowCount: number;
157
+ /**
158
+ * Total number of columns
159
+ */
160
+ readonly colCount: number;
161
+ /**
162
+ * Viewport width in pixels
163
+ */
164
+ readonly viewportWidth: number;
165
+ /**
166
+ * Viewport height in pixels
167
+ */
168
+ readonly viewportHeight: number;
169
+ }
170
+ //# sourceMappingURL=virtual-scroller.interface.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"virtual-scroller.interface.d.ts","sourceRoot":"","sources":["../../../../../../packages/core/src/rendering/virtual-scroller/virtual-scroller.interface.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AACzD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AACvD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAEhD;;GAEG;AACH,MAAM,WAAW,sBAAsB;IACrC;;OAEG;IACH,QAAQ,EAAE,MAAM,CAAC;IAEjB;;OAEG;IACH,QAAQ,EAAE,MAAM,CAAC;IAEjB;;OAEG;IACH,aAAa,EAAE,MAAM,CAAC;IAEtB;;OAEG;IACH,cAAc,EAAE,MAAM,CAAC;IAEvB;;;OAGG;IACH,cAAc,CAAC,EAAE,cAAc,CAAC;IAEhC;;;;;OAKG;IACH,SAAS,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;IAE9B;;;OAGG;IACH,aAAa,CAAC,EAAE,aAAa,CAAC;IAE9B;;;;;OAKG;IACH,QAAQ,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;IAE7B;;;OAGG;IACH,YAAY,CAAC,EAAE,MAAM,CAAC;IAEtB;;;OAGG;IACH,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;IACV,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;CAChB;AAED;;;;;GAKG;AACH,MAAM,WAAW,eAAe;IAC9B;;;;;OAKG;IACH,qBAAqB,CAAC,SAAS,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,YAAY,CAAC;IAE3E;;;;;OAKG;IACH,eAAe,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,YAAY,CAAC;IAExD;;;;OAIG;IACH,cAAc,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC;IAEvC;;;;OAIG;IACH,cAAc,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC;IAEvC;;;;OAIG;IACH,YAAY,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAAC;IAElC;;;;OAIG;IACH,YAAY,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAAC;IAElC;;;;OAIG;IACH,YAAY,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAAC;IAElC;;;;OAIG;IACH,WAAW,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAAC;IAEjC;;;OAGG;IACH,cAAc,IAAI,MAAM,CAAC;IAEzB;;;OAGG;IACH,aAAa,IAAI,MAAM,CAAC;IAExB;;;;OAIG;IACH,eAAe,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IAEnD;;;;OAIG;IACH,cAAc,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IAEjD;;;;OAIG;IACH,WAAW,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IAEjD;;OAEG;IACH,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAE1B;;OAEG;IACH,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAE1B;;OAEG;IACH,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;IAE/B;;OAEG;IACH,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;CACjC"}
@@ -0,0 +1,7 @@
1
+ /**
2
+ * WidthProvider - Strategy pattern for column width calculation
3
+ */
4
+ export type { WidthProvider, WidthProviderOptions } from './width-provider.interface';
5
+ export { UniformWidthProvider } from './uniform-width-provider';
6
+ export { VariableWidthProvider } from './variable-width-provider';
7
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../packages/core/src/rendering/width-provider/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,YAAY,EAAE,aAAa,EAAE,oBAAoB,EAAE,MAAM,4BAA4B,CAAC;AACtF,OAAO,EAAE,oBAAoB,EAAE,MAAM,0BAA0B,CAAC;AAChE,OAAO,EAAE,qBAAqB,EAAE,MAAM,2BAA2B,CAAC"}
@@ -0,0 +1,31 @@
1
+ import type { WidthProvider } from './width-provider.interface';
2
+ /**
3
+ * UniformWidthProvider - Fixed width for all columns
4
+ *
5
+ * Provides constant-time O(1) operations for all methods.
6
+ * Ideal for grids where all columns have the same width.
7
+ *
8
+ * @example
9
+ * ```typescript
10
+ * const provider = new UniformWidthProvider(100, 50);
11
+ * provider.getWidth(0); // 100
12
+ * provider.getOffset(10); // 1000
13
+ * provider.findIndexAtOffset(550); // 5
14
+ * ```
15
+ */
16
+ export declare class UniformWidthProvider implements WidthProvider {
17
+ private colWidth;
18
+ private colCount;
19
+ /**
20
+ * Create a uniform width provider
21
+ * @param width - Width in pixels for all columns
22
+ * @param length - Total number of columns
23
+ */
24
+ constructor(width: number, length: number);
25
+ getWidth(index: number): number;
26
+ getOffset(index: number): number;
27
+ getTotalWidth(): number;
28
+ findIndexAtOffset(offset: number): number;
29
+ get length(): number;
30
+ }
31
+ //# sourceMappingURL=uniform-width-provider.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"uniform-width-provider.d.ts","sourceRoot":"","sources":["../../../../../../packages/core/src/rendering/width-provider/uniform-width-provider.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAEhE;;;;;;;;;;;;;GAaG;AACH,qBAAa,oBAAqB,YAAW,aAAa;IACxD,OAAO,CAAC,QAAQ,CAAS;IACzB,OAAO,CAAC,QAAQ,CAAS;IAEzB;;;;OAIG;gBACS,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM;IAYzC,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM;IAS/B,SAAS,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM;IAShC,aAAa,IAAI,MAAM;IAIvB,iBAAiB,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM;IAYzC,IAAI,MAAM,IAAI,MAAM,CAEnB;CACF"}