@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,123 @@
1
+ /**
2
+ * Locale configuration
3
+ */
4
+ export interface LocaleConfig {
5
+ /**
6
+ * Locale code (e.g., 'en-US', 'ar-SA')
7
+ */
8
+ code: string;
9
+ /**
10
+ * Text direction
11
+ */
12
+ direction: 'ltr' | 'rtl';
13
+ /**
14
+ * Decimal separator
15
+ */
16
+ decimalSeparator: string;
17
+ /**
18
+ * Thousands separator
19
+ */
20
+ thousandsSeparator: string;
21
+ /**
22
+ * Date format
23
+ */
24
+ dateFormat: string;
25
+ /**
26
+ * Time format
27
+ */
28
+ timeFormat: string;
29
+ /**
30
+ * First day of week (0 = Sunday, 1 = Monday)
31
+ */
32
+ firstDayOfWeek: number;
33
+ /**
34
+ * Translations
35
+ */
36
+ translations?: Record<string, string>;
37
+ }
38
+ /**
39
+ * LocaleManager - Manages localization and formatting
40
+ *
41
+ * Provides locale-aware formatting for numbers, dates, and text.
42
+ * Supports custom locales and translations.
43
+ *
44
+ * @example
45
+ * ```typescript
46
+ * const locale = new LocaleManager('ar-SA');
47
+ *
48
+ * // Format number
49
+ * const formatted = locale.formatNumber(1234.56);
50
+ * // Returns: '١٬٢٣٤٫٥٦' (Arabic numerals)
51
+ *
52
+ * // Get direction
53
+ * const dir = locale.getDirection(); // 'rtl'
54
+ *
55
+ * // Translate string
56
+ * const text = locale.translate('loading');
57
+ * ```
58
+ */
59
+ export declare class LocaleManager {
60
+ private locale;
61
+ private numberFormatter;
62
+ private dateFormatter;
63
+ constructor(localeCode?: string);
64
+ /**
65
+ * Get current locale code
66
+ */
67
+ getLocaleCode(): string;
68
+ /**
69
+ * Get text direction
70
+ */
71
+ getDirection(): 'ltr' | 'rtl';
72
+ /**
73
+ * Format a number
74
+ * @param value - Number to format
75
+ * @param options - Intl.NumberFormat options
76
+ */
77
+ formatNumber(value: number, options?: Intl.NumberFormatOptions): string;
78
+ /**
79
+ * Format a date
80
+ * @param date - Date to format
81
+ * @param options - Intl.DateTimeFormat options
82
+ */
83
+ formatDate(date: Date, options?: Intl.DateTimeFormatOptions): string;
84
+ /**
85
+ * Format currency
86
+ * @param value - Amount
87
+ * @param currency - Currency code (e.g., 'USD', 'EUR')
88
+ */
89
+ formatCurrency(value: number, currency: string): string;
90
+ /**
91
+ * Format percentage
92
+ * @param value - Percentage value (0-1)
93
+ */
94
+ formatPercent(value: number): string;
95
+ /**
96
+ * Get decimal separator
97
+ */
98
+ getDecimalSeparator(): string;
99
+ /**
100
+ * Get thousands separator
101
+ */
102
+ getThousandsSeparator(): string;
103
+ /**
104
+ * Get first day of week
105
+ */
106
+ getFirstDayOfWeek(): number;
107
+ /**
108
+ * Translate a string
109
+ * @param key - Translation key
110
+ * @param fallback - Fallback text if not found
111
+ */
112
+ translate(key: string, fallback?: string): string;
113
+ /**
114
+ * Register a custom locale
115
+ * @param config - Locale configuration
116
+ */
117
+ static registerLocale(config: LocaleConfig): void;
118
+ /**
119
+ * Get available locales
120
+ */
121
+ static getAvailableLocales(): string[];
122
+ }
123
+ //# sourceMappingURL=locale-manager.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"locale-manager.d.ts","sourceRoot":"","sources":["../../../../../packages/core/src/i18n/locale-manager.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B;;OAEG;IACH,IAAI,EAAE,MAAM,CAAC;IAEb;;OAEG;IACH,SAAS,EAAE,KAAK,GAAG,KAAK,CAAC;IAEzB;;OAEG;IACH,gBAAgB,EAAE,MAAM,CAAC;IAEzB;;OAEG;IACH,kBAAkB,EAAE,MAAM,CAAC;IAE3B;;OAEG;IACH,UAAU,EAAE,MAAM,CAAC;IAEnB;;OAEG;IACH,UAAU,EAAE,MAAM,CAAC;IAEnB;;OAEG;IACH,cAAc,EAAE,MAAM,CAAC;IAEvB;;OAEG;IACH,YAAY,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CACvC;AAgFD;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,qBAAa,aAAa;IACxB,OAAO,CAAC,MAAM,CAAe;IAC7B,OAAO,CAAC,eAAe,CAAoB;IAC3C,OAAO,CAAC,aAAa,CAAsB;gBAE/B,UAAU,GAAE,MAAgB;IAQxC;;OAEG;IACH,aAAa,IAAI,MAAM;IAIvB;;OAEG;IACH,YAAY,IAAI,KAAK,GAAG,KAAK;IAI7B;;;;OAIG;IACH,YAAY,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,IAAI,CAAC,mBAAmB,GAAG,MAAM;IASvE;;;;OAIG;IACH,UAAU,CAAC,IAAI,EAAE,IAAI,EAAE,OAAO,CAAC,EAAE,IAAI,CAAC,qBAAqB,GAAG,MAAM;IASpE;;;;OAIG;IACH,cAAc,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM;IASvD;;;OAGG;IACH,aAAa,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM;IAUpC;;OAEG;IACH,mBAAmB,IAAI,MAAM;IAI7B;;OAEG;IACH,qBAAqB,IAAI,MAAM;IAI/B;;OAEG;IACH,iBAAiB,IAAI,MAAM;IAI3B;;;;OAIG;IACH,SAAS,CAAC,GAAG,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,MAAM;IAIjD;;;OAGG;IACH,MAAM,CAAC,cAAc,CAAC,MAAM,EAAE,YAAY,GAAG,IAAI;IAIjD;;OAEG;IACH,MAAM,CAAC,mBAAmB,IAAI,MAAM,EAAE;CAGvC"}
@@ -0,0 +1,120 @@
1
+ /**
2
+ * RTL (Right-to-Left) support options
3
+ */
4
+ export interface RTLSupportOptions {
5
+ /**
6
+ * Grid container element
7
+ */
8
+ container: HTMLElement;
9
+ /**
10
+ * Text direction
11
+ * @default 'ltr'
12
+ */
13
+ direction?: 'ltr' | 'rtl';
14
+ /**
15
+ * Auto-detect direction from document
16
+ * @default true
17
+ */
18
+ autoDetect?: boolean;
19
+ /**
20
+ * Callback when direction changes
21
+ */
22
+ onDirectionChange?: (direction: 'ltr' | 'rtl') => void;
23
+ }
24
+ /**
25
+ * RTLSupport - Manages Right-to-Left layout support
26
+ *
27
+ * Handles RTL layout for Arabic, Hebrew, Persian, and other RTL languages:
28
+ * - Direction detection and switching
29
+ * - RTL-aware column positioning
30
+ * - Scroll position normalization (browser compatibility)
31
+ * - Direction-aware hit testing
32
+ *
33
+ * @example
34
+ * ```typescript
35
+ * const rtl = new RTLSupport({
36
+ * container: gridElement,
37
+ * direction: 'rtl',
38
+ * });
39
+ *
40
+ * // Get direction-aware column offset
41
+ * const offset = rtl.getColumnOffset(col, totalWidth, colWidth);
42
+ *
43
+ * // Normalize scroll position
44
+ * const normalized = rtl.normalizeScrollLeft(scrollLeft, scrollWidth, clientWidth);
45
+ * ```
46
+ */
47
+ export declare class RTLSupport {
48
+ private container;
49
+ private direction;
50
+ private onDirectionChange?;
51
+ constructor(options: RTLSupportOptions);
52
+ /**
53
+ * Get current text direction
54
+ */
55
+ getDirection(): 'ltr' | 'rtl';
56
+ /**
57
+ * Set text direction
58
+ * @param direction - New direction
59
+ */
60
+ setDirection(direction: 'ltr' | 'rtl'): void;
61
+ /**
62
+ * Check if RTL mode is active
63
+ */
64
+ isRTL(): boolean;
65
+ /**
66
+ * Get direction-aware column offset
67
+ * @param col - Column index
68
+ * @param totalWidth - Total grid width
69
+ * @param colOffsetLTR - Column offset in LTR mode
70
+ * @returns Direction-aware offset
71
+ */
72
+ getColumnOffset(_col: number, totalWidth: number, colOffsetLTR: number): number;
73
+ /**
74
+ * Normalize scroll position for RTL
75
+ *
76
+ * Different browsers handle RTL scrolling differently:
77
+ * - Chrome/Safari: scrollLeft is negative in RTL
78
+ * - Firefox: scrollLeft is positive but reversed
79
+ * - Edge: scrollLeft is positive
80
+ *
81
+ * This normalizes to always return positive values.
82
+ *
83
+ * @param scrollLeft - Raw scroll left value
84
+ * @param scrollWidth - Scroll container width
85
+ * @param clientWidth - Visible width
86
+ * @returns Normalized scroll position (always positive)
87
+ */
88
+ normalizeScrollLeft(scrollLeft: number, scrollWidth: number, clientWidth: number): number;
89
+ /**
90
+ * Denormalize scroll position for setting
91
+ * @param normalizedScrollLeft - Normalized scroll position
92
+ * @param scrollWidth - Scroll container width
93
+ * @param clientWidth - Visible width
94
+ * @returns Browser-specific scroll value
95
+ */
96
+ denormalizeScrollLeft(normalizedScrollLeft: number, scrollWidth: number, clientWidth: number): number;
97
+ /**
98
+ * Get direction-aware horizontal alignment
99
+ * @param align - Logical alignment ('start' or 'end')
100
+ * @returns Physical alignment ('left' or 'right')
101
+ */
102
+ getPhysicalAlignment(align: 'start' | 'end'): 'left' | 'right';
103
+ /**
104
+ * Apply direction to container
105
+ */
106
+ private applyDirection;
107
+ /**
108
+ * Detect text direction from document or language
109
+ */
110
+ private detectDirection;
111
+ /**
112
+ * Detect browser RTL scroll behavior
113
+ */
114
+ private detectScrollBehavior;
115
+ /**
116
+ * Destroy RTL support
117
+ */
118
+ destroy(): void;
119
+ }
120
+ //# sourceMappingURL=rtl-support.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rtl-support.d.ts","sourceRoot":"","sources":["../../../../../packages/core/src/i18n/rtl-support.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC;;OAEG;IACH,SAAS,EAAE,WAAW,CAAC;IAEvB;;;OAGG;IACH,SAAS,CAAC,EAAE,KAAK,GAAG,KAAK,CAAC;IAE1B;;;OAGG;IACH,UAAU,CAAC,EAAE,OAAO,CAAC;IAErB;;OAEG;IACH,iBAAiB,CAAC,EAAE,CAAC,SAAS,EAAE,KAAK,GAAG,KAAK,KAAK,IAAI,CAAC;CACxD;AAED;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,qBAAa,UAAU;IACrB,OAAO,CAAC,SAAS,CAAc;IAC/B,OAAO,CAAC,SAAS,CAAgB;IACjC,OAAO,CAAC,iBAAiB,CAAC,CAAqC;gBAEnD,OAAO,EAAE,iBAAiB;IAetC;;OAEG;IACH,YAAY,IAAI,KAAK,GAAG,KAAK;IAI7B;;;OAGG;IACH,YAAY,CAAC,SAAS,EAAE,KAAK,GAAG,KAAK,GAAG,IAAI;IAW5C;;OAEG;IACH,KAAK,IAAI,OAAO;IAIhB;;;;;;OAMG;IACH,eAAe,CAAC,IAAI,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,GAAG,MAAM;IAS/E;;;;;;;;;;;;;;OAcG;IACH,mBAAmB,CAAC,UAAU,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,MAAM;IA0BzF;;;;;;OAMG;IACH,qBAAqB,CACnB,oBAAoB,EAAE,MAAM,EAC5B,WAAW,EAAE,MAAM,EACnB,WAAW,EAAE,MAAM,GAClB,MAAM;IAsBT;;;;OAIG;IACH,oBAAoB,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,GAAG,MAAM,GAAG,OAAO;IAQ9D;;OAEG;IACH,OAAO,CAAC,cAAc;IAStB;;OAEG;IACH,OAAO,CAAC,eAAe;IA0BvB;;OAEG;IACH,OAAO,CAAC,oBAAoB;IAsC5B;;OAEG;IACH,OAAO,IAAI,IAAI;CAIhB"}
@@ -0,0 +1,38 @@
1
+ /**
2
+ * ZenGrid Core - Community Edition
3
+ * High-performance data grid library
4
+ *
5
+ * @packageDocumentation
6
+ */
7
+ export * from './types';
8
+ export { SparseMatrix } from '@zengrid/shared/data-structures/sparse-matrix';
9
+ export type { SparseMatrixOptions, ReadonlySparseMatrix } from '@zengrid/shared/data-structures/sparse-matrix';
10
+ export { ColumnStore } from '@zengrid/shared/data-structures/column-store';
11
+ export type { ColumnStoreOptions, ColumnDefinition, ColumnType, AggregateOperation, AggregationResult } from '@zengrid/shared/data-structures/column-store';
12
+ export type { HeightProvider, HeightProviderOptions } from './rendering/height-provider';
13
+ export { UniformHeightProvider, VariableHeightProvider } from './rendering/height-provider';
14
+ export type { WidthProvider, WidthProviderOptions } from './rendering/width-provider';
15
+ export { UniformWidthProvider, VariableWidthProvider } from './rendering/width-provider';
16
+ export type { VirtualScrollerOptions, CellPosition } from './rendering/virtual-scroller';
17
+ export { VirtualScroller } from './rendering/virtual-scroller';
18
+ export type { CellPoolOptions, CellPoolStats } from './rendering/cell-pool';
19
+ export { CellPool } from './rendering/cell-pool';
20
+ export type { CellPositionerOptions } from './rendering/cell-positioner';
21
+ export { CellPositioner } from './rendering/cell-positioner';
22
+ export type { CellRenderer, RenderParams } from './rendering/renderers';
23
+ export { RendererRegistry, TextRenderer, NumberRenderer, ImageRenderer, AdvancedCellRenderer } from './rendering/renderers';
24
+ export type { NumberRendererOptions, ImageRendererOptions, AdvancedCellRendererOptions, CompositeElement, ConditionalStyle, } from './rendering/renderers';
25
+ export type { IRendererCache, RendererCacheConfig, CachedRenderContent } from './rendering/cache';
26
+ export { RendererCache } from './rendering/cache';
27
+ export type { DataAccessor } from './data/data-accessor';
28
+ export type { IndexMap, IndexMapOptions } from './data/index-map';
29
+ export { createIndexMap, createIdentityIndexMap } from './data/index-map';
30
+ export type { RowSorter, SortOptions, NullPosition } from './features/sorting';
31
+ export { SingleColumnSorter } from './features/sorting';
32
+ export type { ColumnConstraints, ColumnResizeOptions, ResizeState, ResizeZoneResult, AutoFitCalculatorOptions, } from './features/column-resize';
33
+ export { ColumnResizeManager, AutoFitCalculator, ResizeHandleRenderer, ResizePreview, } from './features/column-resize';
34
+ export { normalizeRange, mergeRanges, containsCell, rangesIntersect } from './selection/range-utils';
35
+ export { createHitTester } from './selection/hit-tester';
36
+ export { Grid } from './grid';
37
+ export declare const VERSION = "0.1.0";
38
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../packages/core/src/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,cAAc,SAAS,CAAC;AAGxB,OAAO,EAAE,YAAY,EAAE,MAAM,+CAA+C,CAAC;AAC7E,YAAY,EAAE,mBAAmB,EAAE,oBAAoB,EAAE,MAAM,+CAA+C,CAAC;AAE/G,OAAO,EAAE,WAAW,EAAE,MAAM,8CAA8C,CAAC;AAC3E,YAAY,EAAE,kBAAkB,EAAE,gBAAgB,EAAE,UAAU,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,MAAM,8CAA8C,CAAC;AAG5J,YAAY,EAAE,cAAc,EAAE,qBAAqB,EAAE,MAAM,6BAA6B,CAAC;AACzF,OAAO,EAAE,qBAAqB,EAAE,sBAAsB,EAAE,MAAM,6BAA6B,CAAC;AAE5F,YAAY,EAAE,aAAa,EAAE,oBAAoB,EAAE,MAAM,4BAA4B,CAAC;AACtF,OAAO,EAAE,oBAAoB,EAAE,qBAAqB,EAAE,MAAM,4BAA4B,CAAC;AAGzF,YAAY,EAAE,sBAAsB,EAAE,YAAY,EAAE,MAAM,8BAA8B,CAAC;AACzF,OAAO,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAC;AAG/D,YAAY,EAAE,eAAe,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAC5E,OAAO,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AAGjD,YAAY,EAAE,qBAAqB,EAAE,MAAM,6BAA6B,CAAC;AACzE,OAAO,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAC;AAG7D,YAAY,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AACxE,OAAO,EAAE,gBAAgB,EAAE,YAAY,EAAE,cAAc,EAAE,aAAa,EAAE,oBAAoB,EAAE,MAAM,uBAAuB,CAAC;AAC5H,YAAY,EACV,qBAAqB,EACrB,oBAAoB,EACpB,2BAA2B,EAC3B,gBAAgB,EAChB,gBAAgB,GACjB,MAAM,uBAAuB,CAAC;AAG/B,YAAY,EAAE,cAAc,EAAE,mBAAmB,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AAClG,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAGlD,YAAY,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AACzD,YAAY,EAAE,QAAQ,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AAClE,OAAO,EAAE,cAAc,EAAE,sBAAsB,EAAE,MAAM,kBAAkB,CAAC;AAG1E,YAAY,EAAE,SAAS,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAC/E,OAAO,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AAGxD,YAAY,EACV,iBAAiB,EACjB,mBAAmB,EACnB,WAAW,EACX,gBAAgB,EAChB,wBAAwB,GACzB,MAAM,0BAA0B,CAAC;AAClC,OAAO,EACL,mBAAmB,EACnB,iBAAiB,EACjB,oBAAoB,EACpB,aAAa,GACd,MAAM,0BAA0B,CAAC;AAGlC,OAAO,EAAE,cAAc,EAAE,WAAW,EAAE,YAAY,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AACrG,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAGzD,OAAO,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;AA6B9B,eAAO,MAAM,OAAO,UAAU,CAAC"}
@@ -0,0 +1,6 @@
1
+ /**
2
+ * Keyboard navigation for ZenGrid
3
+ */
4
+ export { KeyboardNavigator } from './keyboard-navigator';
5
+ export type { KeyboardNavigatorOptions } from './keyboard-navigator';
6
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../packages/core/src/keyboard/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AACzD,YAAY,EAAE,wBAAwB,EAAE,MAAM,sBAAsB,CAAC"}
@@ -0,0 +1,171 @@
1
+ import type { CellRef } from '../types';
2
+ import type { FocusManager } from '../a11y/focus-manager';
3
+ import type { EventEmitter } from '../events/event-emitter';
4
+ import type { GridEvents } from '../events/grid-events';
5
+ /**
6
+ * Keyboard navigator options
7
+ */
8
+ export interface KeyboardNavigatorOptions {
9
+ /**
10
+ * Grid container element
11
+ */
12
+ container: HTMLElement;
13
+ /**
14
+ * Focus manager instance
15
+ */
16
+ focusManager: FocusManager;
17
+ /**
18
+ * Event emitter for grid events
19
+ */
20
+ events?: EventEmitter<GridEvents>;
21
+ /**
22
+ * Total row count
23
+ */
24
+ rowCount: number;
25
+ /**
26
+ * Total column count
27
+ */
28
+ colCount: number;
29
+ /**
30
+ * Rows per page (for Page Up/Down)
31
+ * @default 20
32
+ */
33
+ pageSize?: number;
34
+ /**
35
+ * Enable selection with Shift+Arrow
36
+ * @default true
37
+ */
38
+ enableSelection?: boolean;
39
+ /**
40
+ * Enable editing with Enter/F2
41
+ * @default true
42
+ */
43
+ enableEditing?: boolean;
44
+ /**
45
+ * Callback to start editing
46
+ */
47
+ onStartEdit?: (cell: CellRef) => void;
48
+ /**
49
+ * Callback to cancel editing
50
+ */
51
+ onCancelEdit?: () => void;
52
+ /**
53
+ * Callback for copy (Ctrl+C)
54
+ */
55
+ onCopy?: () => void;
56
+ /**
57
+ * Callback for cut (Ctrl+X)
58
+ */
59
+ onCut?: () => void;
60
+ /**
61
+ * Callback for paste (Ctrl+V)
62
+ */
63
+ onPaste?: () => void;
64
+ /**
65
+ * Callback for select all (Ctrl+A)
66
+ */
67
+ onSelectAll?: () => void;
68
+ }
69
+ /**
70
+ * KeyboardNavigator - Handles all keyboard interactions
71
+ *
72
+ * Implements comprehensive keyboard navigation:
73
+ * - Arrow keys: Cell navigation
74
+ * - Page Up/Down: Page navigation
75
+ * - Home/End: Row navigation
76
+ * - Ctrl+Home/End: Grid navigation
77
+ * - Enter/F2: Start editing
78
+ * - Escape: Cancel editing
79
+ * - Tab/Shift+Tab: Navigate cells
80
+ * - Ctrl+C/V/X: Clipboard
81
+ * - Ctrl+A: Select all
82
+ * - Shift+Arrow: Range selection
83
+ *
84
+ * @example
85
+ * ```typescript
86
+ * const navigator = new KeyboardNavigator({
87
+ * container: gridElement,
88
+ * focusManager,
89
+ * rowCount: 100000,
90
+ * colCount: 10,
91
+ * onStartEdit: (cell) => {
92
+ * console.log('Start editing:', cell);
93
+ * },
94
+ * onCopy: () => {
95
+ * console.log('Copy selected cells');
96
+ * },
97
+ * });
98
+ *
99
+ * // Keyboard events are automatically handled
100
+ * // Call destroy() when done
101
+ * navigator.destroy();
102
+ * ```
103
+ */
104
+ export declare class KeyboardNavigator {
105
+ private container;
106
+ private focusManager;
107
+ private events?;
108
+ private rowCount;
109
+ private colCount;
110
+ private pageSize;
111
+ private enableSelection;
112
+ private enableEditing;
113
+ private onStartEdit?;
114
+ private onCancelEdit?;
115
+ private onCopy?;
116
+ private onCut?;
117
+ private onPaste?;
118
+ private onSelectAll?;
119
+ private isSelecting;
120
+ private selectionStart;
121
+ constructor(options: KeyboardNavigatorOptions);
122
+ /**
123
+ * Attach keyboard event listeners
124
+ */
125
+ private attachEventListeners;
126
+ /**
127
+ * Handle keydown events
128
+ */
129
+ private handleKeyDown;
130
+ /**
131
+ * Handle navigation keys
132
+ */
133
+ private handleNavigationKey;
134
+ /**
135
+ * Handle clipboard keys
136
+ */
137
+ private handleClipboardKey;
138
+ /**
139
+ * Handle editing keys
140
+ */
141
+ private handleEditingKey;
142
+ /**
143
+ * Handle Tab navigation
144
+ */
145
+ private handleTabNavigation;
146
+ /**
147
+ * Start range selection
148
+ */
149
+ private startSelection;
150
+ /**
151
+ * Extend selection as focus moves
152
+ */
153
+ private handleSelectionExtend;
154
+ /**
155
+ * Handle keyup events
156
+ */
157
+ private handleKeyUp;
158
+ /**
159
+ * End range selection
160
+ */
161
+ private endSelection;
162
+ /**
163
+ * Update grid size
164
+ */
165
+ updateSize(rowCount: number, colCount: number): void;
166
+ /**
167
+ * Destroy keyboard navigator
168
+ */
169
+ destroy(): void;
170
+ }
171
+ //# sourceMappingURL=keyboard-navigator.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"keyboard-navigator.d.ts","sourceRoot":"","sources":["../../../../../packages/core/src/keyboard/keyboard-navigator.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,UAAU,CAAC;AACxC,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAC1D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AAC5D,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AAExD;;GAEG;AACH,MAAM,WAAW,wBAAwB;IACvC;;OAEG;IACH,SAAS,EAAE,WAAW,CAAC;IAEvB;;OAEG;IACH,YAAY,EAAE,YAAY,CAAC;IAE3B;;OAEG;IACH,MAAM,CAAC,EAAE,YAAY,CAAC,UAAU,CAAC,CAAC;IAElC;;OAEG;IACH,QAAQ,EAAE,MAAM,CAAC;IAEjB;;OAEG;IACH,QAAQ,EAAE,MAAM,CAAC;IAEjB;;;OAGG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;IAElB;;;OAGG;IACH,eAAe,CAAC,EAAE,OAAO,CAAC;IAE1B;;;OAGG;IACH,aAAa,CAAC,EAAE,OAAO,CAAC;IAExB;;OAEG;IACH,WAAW,CAAC,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,IAAI,CAAC;IAEtC;;OAEG;IACH,YAAY,CAAC,EAAE,MAAM,IAAI,CAAC;IAE1B;;OAEG;IACH,MAAM,CAAC,EAAE,MAAM,IAAI,CAAC;IAEpB;;OAEG;IACH,KAAK,CAAC,EAAE,MAAM,IAAI,CAAC;IAEnB;;OAEG;IACH,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IAErB;;OAEG;IACH,WAAW,CAAC,EAAE,MAAM,IAAI,CAAC;CAC1B;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkCG;AACH,qBAAa,iBAAiB;IAC5B,OAAO,CAAC,SAAS,CAAc;IAC/B,OAAO,CAAC,YAAY,CAAe;IACnC,OAAO,CAAC,MAAM,CAAC,CAA2B;IAC1C,OAAO,CAAC,QAAQ,CAAS;IACzB,OAAO,CAAC,QAAQ,CAAS;IACzB,OAAO,CAAC,QAAQ,CAAS;IACzB,OAAO,CAAC,eAAe,CAAU;IACjC,OAAO,CAAC,aAAa,CAAU;IAE/B,OAAO,CAAC,WAAW,CAAC,CAA0B;IAC9C,OAAO,CAAC,YAAY,CAAC,CAAa;IAClC,OAAO,CAAC,MAAM,CAAC,CAAa;IAC5B,OAAO,CAAC,KAAK,CAAC,CAAa;IAC3B,OAAO,CAAC,OAAO,CAAC,CAAa;IAC7B,OAAO,CAAC,WAAW,CAAC,CAAa;IAEjC,OAAO,CAAC,WAAW,CAAS;IAC5B,OAAO,CAAC,cAAc,CAAwB;gBAElC,OAAO,EAAE,wBAAwB;IAoB7C;;OAEG;IACH,OAAO,CAAC,oBAAoB;IAK5B;;OAEG;IACH,OAAO,CAAC,aAAa,CAmDnB;IAEF;;OAEG;IACH,OAAO,CAAC,mBAAmB;IAiE3B;;OAEG;IACH,OAAO,CAAC,kBAAkB;IAkC1B;;OAEG;IACH,OAAO,CAAC,gBAAgB;IAkCxB;;OAEG;IACH,OAAO,CAAC,mBAAmB;IA2B3B;;OAEG;IACH,OAAO,CAAC,cAAc;IAYtB;;OAEG;IACH,OAAO,CAAC,qBAAqB;IAsB7B;;OAEG;IACH,OAAO,CAAC,WAAW,CAiBjB;IAEF;;OAEG;IACH,OAAO,CAAC,YAAY;IAqBpB;;OAEG;IACH,UAAU,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,IAAI;IAKpD;;OAEG;IACH,OAAO,IAAI,IAAI;CAOhB"}
@@ -0,0 +1,3 @@
1
+ export { RendererCache } from './renderer-cache';
2
+ export type { IRendererCache, RendererCacheConfig, CachedRenderContent, } from './renderer-cache.interface';
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../packages/core/src/rendering/cache/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACjD,YAAY,EACV,cAAc,EACd,mBAAmB,EACnB,mBAAmB,GACpB,MAAM,4BAA4B,CAAC"}
@@ -0,0 +1,100 @@
1
+ import type { IRendererCache, RendererCacheConfig, CachedRenderContent } from './renderer-cache.interface';
2
+ /**
3
+ * RendererCache - Caches rendered cell content to improve performance
4
+ *
5
+ * Uses LRUCache to automatically evict least recently used entries.
6
+ * Reduces re-rendering by caching HTML content based on cell data.
7
+ *
8
+ * **Performance Benefits:**
9
+ * - 20-30% reduction in render time for repeated content
10
+ * - Smoother scrolling, especially with complex renderers
11
+ * - Lower CPU usage during scroll
12
+ *
13
+ * **Cache Key Strategy:**
14
+ * The cache key is generated from:
15
+ * - Cell value (serialized)
16
+ * - Renderer name
17
+ * - Column field (for uniqueness)
18
+ * - Selected/active/editing state
19
+ *
20
+ * @example Basic Usage
21
+ * ```typescript
22
+ * const cache = new RendererCache({
23
+ * capacity: 1000,
24
+ * trackStats: true,
25
+ * });
26
+ *
27
+ * // Check cache before rendering
28
+ * const cached = cache.get(cacheKey);
29
+ * if (cached) {
30
+ * element.innerHTML = cached.html;
31
+ * } else {
32
+ * // Render and cache
33
+ * renderer.render(element, params);
34
+ * cache.set(cacheKey, { html: element.innerHTML });
35
+ * }
36
+ * ```
37
+ *
38
+ * @example With Statistics
39
+ * ```typescript
40
+ * const stats = cache.getStats();
41
+ * console.log(`Hit Rate: ${(stats.hitRate * 100).toFixed(2)}%`);
42
+ * console.log(`Cache Size: ${stats.size}/${stats.capacity}`);
43
+ * ```
44
+ */
45
+ export declare class RendererCache implements IRendererCache {
46
+ private cache;
47
+ private config;
48
+ constructor(config?: RendererCacheConfig);
49
+ /**
50
+ * Get cached content for a cell
51
+ */
52
+ get(key: string): CachedRenderContent | undefined;
53
+ /**
54
+ * Set cached content for a cell
55
+ */
56
+ set(key: string, content: CachedRenderContent): void;
57
+ /**
58
+ * Check if content is cached
59
+ */
60
+ has(key: string): boolean;
61
+ /**
62
+ * Clear all cached content
63
+ */
64
+ clear(): void;
65
+ /**
66
+ * Get cache statistics
67
+ */
68
+ getStats(): {
69
+ size: number;
70
+ capacity: number;
71
+ hitRate: number;
72
+ hits: number;
73
+ misses: number;
74
+ evictions: number;
75
+ };
76
+ /**
77
+ * Generate cache key for a cell
78
+ *
79
+ * @param row - Row index
80
+ * @param col - Column index
81
+ * @param value - Cell value
82
+ * @param rendererName - Renderer name
83
+ * @param state - Cell state (selected, active, editing)
84
+ * @returns Cache key
85
+ */
86
+ static generateKey(_row: number, col: number, value: any, rendererName: string, state?: {
87
+ isSelected?: boolean;
88
+ isActive?: boolean;
89
+ isEditing?: boolean;
90
+ }): string;
91
+ /**
92
+ * Resize cache capacity
93
+ */
94
+ resize(newCapacity: number): void;
95
+ /**
96
+ * Enable or disable caching
97
+ */
98
+ setEnabled(enabled: boolean): void;
99
+ }
100
+ //# sourceMappingURL=renderer-cache.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"renderer-cache.d.ts","sourceRoot":"","sources":["../../../../../../packages/core/src/rendering/cache/renderer-cache.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,cAAc,EACd,mBAAmB,EACnB,mBAAmB,EACpB,MAAM,4BAA4B,CAAC;AAEpC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA0CG;AACH,qBAAa,aAAc,YAAW,cAAc;IAClD,OAAO,CAAC,KAAK,CAAwC;IACrD,OAAO,CAAC,MAAM,CAAgC;gBAElC,MAAM,GAAE,mBAAwB;IAgB5C;;OAEG;IACH,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,mBAAmB,GAAG,SAAS;IAOjD;;OAEG;IACH,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,mBAAmB,GAAG,IAAI;IAOpD;;OAEG;IACH,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO;IAOzB;;OAEG;IACH,KAAK,IAAI,IAAI;IAIb;;OAEG;IACH,QAAQ,IAAI;QACV,IAAI,EAAE,MAAM,CAAC;QACb,QAAQ,EAAE,MAAM,CAAC;QACjB,OAAO,EAAE,MAAM,CAAC;QAChB,IAAI,EAAE,MAAM,CAAC;QACb,MAAM,EAAE,MAAM,CAAC;QACf,SAAS,EAAE,MAAM,CAAC;KACnB;IAYD;;;;;;;;;OASG;IACH,MAAM,CAAC,WAAW,CAChB,IAAI,EAAE,MAAM,EACZ,GAAG,EAAE,MAAM,EACX,KAAK,EAAE,GAAG,EACV,YAAY,EAAE,MAAM,EACpB,KAAK,CAAC,EAAE;QACN,UAAU,CAAC,EAAE,OAAO,CAAC;QACrB,QAAQ,CAAC,EAAE,OAAO,CAAC;QACnB,SAAS,CAAC,EAAE,OAAO,CAAC;KACrB,GACA,MAAM;IAST;;OAEG;IACH,MAAM,CAAC,WAAW,EAAE,MAAM,GAAG,IAAI;IAKjC;;OAEG;IACH,UAAU,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI;CAMnC"}
@@ -0,0 +1,89 @@
1
+ /**
2
+ * Renderer Cache Configuration
3
+ */
4
+ export interface RendererCacheConfig {
5
+ /**
6
+ * Whether to enable renderer caching
7
+ * @default true
8
+ */
9
+ enabled?: boolean;
10
+ /**
11
+ * Maximum number of cached entries
12
+ * @default 1000
13
+ */
14
+ capacity?: number;
15
+ /**
16
+ * Cache strategy
17
+ * @default 'lru'
18
+ */
19
+ strategy?: 'lru';
20
+ /**
21
+ * Time-to-live in milliseconds (0 = infinite)
22
+ * @default 0
23
+ */
24
+ ttl?: number;
25
+ /**
26
+ * Track cache statistics
27
+ * @default false
28
+ */
29
+ trackStats?: boolean;
30
+ }
31
+ /**
32
+ * Cached render content
33
+ */
34
+ export interface CachedRenderContent {
35
+ /**
36
+ * The rendered HTML string
37
+ */
38
+ html: string;
39
+ /**
40
+ * CSS classes to apply
41
+ */
42
+ classes?: string[];
43
+ /**
44
+ * Additional metadata
45
+ */
46
+ metadata?: Record<string, any>;
47
+ }
48
+ /**
49
+ * Renderer Cache Interface
50
+ */
51
+ export interface IRendererCache {
52
+ /**
53
+ * Get cached content for a cell
54
+ *
55
+ * @param key - Cache key
56
+ * @returns Cached content or undefined
57
+ */
58
+ get(key: string): CachedRenderContent | undefined;
59
+ /**
60
+ * Set cached content for a cell
61
+ *
62
+ * @param key - Cache key
63
+ * @param content - Content to cache
64
+ */
65
+ set(key: string, content: CachedRenderContent): void;
66
+ /**
67
+ * Check if content is cached
68
+ *
69
+ * @param key - Cache key
70
+ * @returns True if cached
71
+ */
72
+ has(key: string): boolean;
73
+ /**
74
+ * Clear all cached content
75
+ */
76
+ clear(): void;
77
+ /**
78
+ * Get cache statistics
79
+ */
80
+ getStats(): {
81
+ size: number;
82
+ capacity: number;
83
+ hitRate: number;
84
+ hits: number;
85
+ misses: number;
86
+ evictions: number;
87
+ };
88
+ }
89
+ //# sourceMappingURL=renderer-cache.interface.d.ts.map