sheetgl 0.0.0-stage → 2.0.2

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 (204) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +167 -2
  3. package/bin/cli.mjs +370 -0
  4. package/dist/lib/sheetgl.cjs +5 -0
  5. package/dist/lib/sheetgl.cjs.map +1 -0
  6. package/dist/lib/sheetgl.js +14972 -0
  7. package/dist/lib/sheetgl.js.map +1 -0
  8. package/dist/lib/types/columns/ColumnTypeRegistry.d.ts +9 -0
  9. package/dist/lib/types/columns/ColumnTypeRegistry.d.ts.map +1 -0
  10. package/dist/lib/types/columns/IColumnTypePlugin.d.ts +68 -0
  11. package/dist/lib/types/columns/IColumnTypePlugin.d.ts.map +1 -0
  12. package/dist/lib/types/columns/initPlugins.d.ts +2 -0
  13. package/dist/lib/types/columns/initPlugins.d.ts.map +1 -0
  14. package/dist/lib/types/columns/types/ActionColumn/ActionPainter.d.ts +3 -0
  15. package/dist/lib/types/columns/types/ActionColumn/ActionPainter.d.ts.map +1 -0
  16. package/dist/lib/types/columns/types/ActionColumn/index.d.ts +3 -0
  17. package/dist/lib/types/columns/types/ActionColumn/index.d.ts.map +1 -0
  18. package/dist/lib/types/columns/types/BooleanColumn/BooleanPainter.d.ts +3 -0
  19. package/dist/lib/types/columns/types/BooleanColumn/BooleanPainter.d.ts.map +1 -0
  20. package/dist/lib/types/columns/types/BooleanColumn/index.d.ts +3 -0
  21. package/dist/lib/types/columns/types/BooleanColumn/index.d.ts.map +1 -0
  22. package/dist/lib/types/columns/types/ColorColumn/ColorEditor.d.ts +4 -0
  23. package/dist/lib/types/columns/types/ColorColumn/ColorEditor.d.ts.map +1 -0
  24. package/dist/lib/types/columns/types/ColorColumn/index.d.ts +4 -0
  25. package/dist/lib/types/columns/types/ColorColumn/index.d.ts.map +1 -0
  26. package/dist/lib/types/columns/types/CurrencyColumn/CurrencyPainter.d.ts +3 -0
  27. package/dist/lib/types/columns/types/CurrencyColumn/CurrencyPainter.d.ts.map +1 -0
  28. package/dist/lib/types/columns/types/CurrencyColumn/index.d.ts +3 -0
  29. package/dist/lib/types/columns/types/CurrencyColumn/index.d.ts.map +1 -0
  30. package/dist/lib/types/columns/types/DateColumn/DateEditor.d.ts +4 -0
  31. package/dist/lib/types/columns/types/DateColumn/DateEditor.d.ts.map +1 -0
  32. package/dist/lib/types/columns/types/DateColumn/DatePainter.d.ts +3 -0
  33. package/dist/lib/types/columns/types/DateColumn/DatePainter.d.ts.map +1 -0
  34. package/dist/lib/types/columns/types/DateColumn/index.d.ts +3 -0
  35. package/dist/lib/types/columns/types/DateColumn/index.d.ts.map +1 -0
  36. package/dist/lib/types/columns/types/DateTimeColumn/DateTimeEditor.d.ts +4 -0
  37. package/dist/lib/types/columns/types/DateTimeColumn/DateTimeEditor.d.ts.map +1 -0
  38. package/dist/lib/types/columns/types/DateTimeColumn/DateTimePainter.d.ts +7 -0
  39. package/dist/lib/types/columns/types/DateTimeColumn/DateTimePainter.d.ts.map +1 -0
  40. package/dist/lib/types/columns/types/DateTimeColumn/index.d.ts +3 -0
  41. package/dist/lib/types/columns/types/DateTimeColumn/index.d.ts.map +1 -0
  42. package/dist/lib/types/columns/types/DropdownColumn/DropdownPainter.d.ts +3 -0
  43. package/dist/lib/types/columns/types/DropdownColumn/DropdownPainter.d.ts.map +1 -0
  44. package/dist/lib/types/columns/types/DropdownColumn/index.d.ts +3 -0
  45. package/dist/lib/types/columns/types/DropdownColumn/index.d.ts.map +1 -0
  46. package/dist/lib/types/columns/types/EmailColumn/index.d.ts +4 -0
  47. package/dist/lib/types/columns/types/EmailColumn/index.d.ts.map +1 -0
  48. package/dist/lib/types/columns/types/LookupColumn/LookupEditor.d.ts +4 -0
  49. package/dist/lib/types/columns/types/LookupColumn/LookupEditor.d.ts.map +1 -0
  50. package/dist/lib/types/columns/types/LookupColumn/LookupPainter.d.ts +3 -0
  51. package/dist/lib/types/columns/types/LookupColumn/LookupPainter.d.ts.map +1 -0
  52. package/dist/lib/types/columns/types/LookupColumn/index.d.ts +3 -0
  53. package/dist/lib/types/columns/types/LookupColumn/index.d.ts.map +1 -0
  54. package/dist/lib/types/columns/types/MultiSelectColumn/MultiSelectEditor.d.ts +4 -0
  55. package/dist/lib/types/columns/types/MultiSelectColumn/MultiSelectEditor.d.ts.map +1 -0
  56. package/dist/lib/types/columns/types/MultiSelectColumn/MultiSelectPainter.d.ts +4 -0
  57. package/dist/lib/types/columns/types/MultiSelectColumn/MultiSelectPainter.d.ts.map +1 -0
  58. package/dist/lib/types/columns/types/MultiSelectColumn/index.d.ts +3 -0
  59. package/dist/lib/types/columns/types/MultiSelectColumn/index.d.ts.map +1 -0
  60. package/dist/lib/types/columns/types/NumberColumn/NumberEditor.d.ts +4 -0
  61. package/dist/lib/types/columns/types/NumberColumn/NumberEditor.d.ts.map +1 -0
  62. package/dist/lib/types/columns/types/NumberColumn/NumberPainter.d.ts +3 -0
  63. package/dist/lib/types/columns/types/NumberColumn/NumberPainter.d.ts.map +1 -0
  64. package/dist/lib/types/columns/types/NumberColumn/index.d.ts +3 -0
  65. package/dist/lib/types/columns/types/NumberColumn/index.d.ts.map +1 -0
  66. package/dist/lib/types/columns/types/ObjectColumn/ObjectEditor.d.ts +4 -0
  67. package/dist/lib/types/columns/types/ObjectColumn/ObjectEditor.d.ts.map +1 -0
  68. package/dist/lib/types/columns/types/ObjectColumn/ObjectPainter.d.ts +5 -0
  69. package/dist/lib/types/columns/types/ObjectColumn/ObjectPainter.d.ts.map +1 -0
  70. package/dist/lib/types/columns/types/ObjectColumn/index.d.ts +3 -0
  71. package/dist/lib/types/columns/types/ObjectColumn/index.d.ts.map +1 -0
  72. package/dist/lib/types/columns/types/PdfColumn/PdfPainter.d.ts +3 -0
  73. package/dist/lib/types/columns/types/PdfColumn/PdfPainter.d.ts.map +1 -0
  74. package/dist/lib/types/columns/types/PdfColumn/index.d.ts +3 -0
  75. package/dist/lib/types/columns/types/PdfColumn/index.d.ts.map +1 -0
  76. package/dist/lib/types/columns/types/PercentColumn/index.d.ts +5 -0
  77. package/dist/lib/types/columns/types/PercentColumn/index.d.ts.map +1 -0
  78. package/dist/lib/types/columns/types/PhoneColumn/index.d.ts +4 -0
  79. package/dist/lib/types/columns/types/PhoneColumn/index.d.ts.map +1 -0
  80. package/dist/lib/types/columns/types/ProgressColumn/ProgressPainter.d.ts +3 -0
  81. package/dist/lib/types/columns/types/ProgressColumn/ProgressPainter.d.ts.map +1 -0
  82. package/dist/lib/types/columns/types/ProgressColumn/index.d.ts +3 -0
  83. package/dist/lib/types/columns/types/ProgressColumn/index.d.ts.map +1 -0
  84. package/dist/lib/types/columns/types/RatingColumn/RatingPainter.d.ts +3 -0
  85. package/dist/lib/types/columns/types/RatingColumn/RatingPainter.d.ts.map +1 -0
  86. package/dist/lib/types/columns/types/RatingColumn/index.d.ts +3 -0
  87. package/dist/lib/types/columns/types/RatingColumn/index.d.ts.map +1 -0
  88. package/dist/lib/types/columns/types/SelectColumn/SelectEditor.d.ts +4 -0
  89. package/dist/lib/types/columns/types/SelectColumn/SelectEditor.d.ts.map +1 -0
  90. package/dist/lib/types/columns/types/SelectColumn/SelectPainter.d.ts +3 -0
  91. package/dist/lib/types/columns/types/SelectColumn/SelectPainter.d.ts.map +1 -0
  92. package/dist/lib/types/columns/types/SelectColumn/index.d.ts +3 -0
  93. package/dist/lib/types/columns/types/SelectColumn/index.d.ts.map +1 -0
  94. package/dist/lib/types/columns/types/SparklineColumn/SparklinePainter.d.ts +3 -0
  95. package/dist/lib/types/columns/types/SparklineColumn/SparklinePainter.d.ts.map +1 -0
  96. package/dist/lib/types/columns/types/SparklineColumn/index.d.ts +3 -0
  97. package/dist/lib/types/columns/types/SparklineColumn/index.d.ts.map +1 -0
  98. package/dist/lib/types/columns/types/TextColumn/TextEditor.d.ts +4 -0
  99. package/dist/lib/types/columns/types/TextColumn/TextEditor.d.ts.map +1 -0
  100. package/dist/lib/types/columns/types/TextColumn/TextPainter.d.ts +3 -0
  101. package/dist/lib/types/columns/types/TextColumn/TextPainter.d.ts.map +1 -0
  102. package/dist/lib/types/columns/types/TextColumn/index.d.ts +3 -0
  103. package/dist/lib/types/columns/types/TextColumn/index.d.ts.map +1 -0
  104. package/dist/lib/types/columns/types/TimeColumn/TimeEditor.d.ts +4 -0
  105. package/dist/lib/types/columns/types/TimeColumn/TimeEditor.d.ts.map +1 -0
  106. package/dist/lib/types/columns/types/TimeColumn/TimePainter.d.ts +3 -0
  107. package/dist/lib/types/columns/types/TimeColumn/TimePainter.d.ts.map +1 -0
  108. package/dist/lib/types/columns/types/TimeColumn/index.d.ts +3 -0
  109. package/dist/lib/types/columns/types/TimeColumn/index.d.ts.map +1 -0
  110. package/dist/lib/types/columns/types/UrlColumn/index.d.ts +4 -0
  111. package/dist/lib/types/columns/types/UrlColumn/index.d.ts.map +1 -0
  112. package/dist/lib/types/core/FilterEngine.d.ts +33 -0
  113. package/dist/lib/types/core/FilterEngine.d.ts.map +1 -0
  114. package/dist/lib/types/core/GeometryEngine.d.ts +65 -0
  115. package/dist/lib/types/core/GeometryEngine.d.ts.map +1 -0
  116. package/dist/lib/types/core/GridApi.d.ts +66 -0
  117. package/dist/lib/types/core/GridApi.d.ts.map +1 -0
  118. package/dist/lib/types/core/GroupingEngine.d.ts +8 -0
  119. package/dist/lib/types/core/GroupingEngine.d.ts.map +1 -0
  120. package/dist/lib/types/core/HistoryManager.d.ts +18 -0
  121. package/dist/lib/types/core/HistoryManager.d.ts.map +1 -0
  122. package/dist/lib/types/core/SelectionModel.d.ts +17 -0
  123. package/dist/lib/types/core/SelectionModel.d.ts.map +1 -0
  124. package/dist/lib/types/core/SortEngine.d.ts +7 -0
  125. package/dist/lib/types/core/SortEngine.d.ts.map +1 -0
  126. package/dist/lib/types/core/ValidationEngine.d.ts +33 -0
  127. package/dist/lib/types/core/ValidationEngine.d.ts.map +1 -0
  128. package/dist/lib/types/data/BlockCache.d.ts +12 -0
  129. package/dist/lib/types/data/BlockCache.d.ts.map +1 -0
  130. package/dist/lib/types/data/LocalDataStore.d.ts +85 -0
  131. package/dist/lib/types/data/LocalDataStore.d.ts.map +1 -0
  132. package/dist/lib/types/data/RemoteDataStore.d.ts +94 -0
  133. package/dist/lib/types/data/RemoteDataStore.d.ts.map +1 -0
  134. package/dist/lib/types/hooks/useGridGeometry.d.ts +65 -0
  135. package/dist/lib/types/hooks/useGridGeometry.d.ts.map +1 -0
  136. package/dist/lib/types/hooks/useGridSelection.d.ts +43 -0
  137. package/dist/lib/types/hooks/useGridSelection.d.ts.map +1 -0
  138. package/dist/lib/types/i18n/IGridLocale.d.ts +25 -0
  139. package/dist/lib/types/i18n/IGridLocale.d.ts.map +1 -0
  140. package/dist/lib/types/i18n/LocaleEngine.d.ts +10 -0
  141. package/dist/lib/types/i18n/LocaleEngine.d.ts.map +1 -0
  142. package/dist/lib/types/i18n/locales/enUS.d.ts +3 -0
  143. package/dist/lib/types/i18n/locales/enUS.d.ts.map +1 -0
  144. package/dist/lib/types/i18n/locales/trTR.d.ts +3 -0
  145. package/dist/lib/types/i18n/locales/trTR.d.ts.map +1 -0
  146. package/dist/lib/types/index.d.ts +44 -0
  147. package/dist/lib/types/index.d.ts.map +1 -0
  148. package/dist/lib/types/overlays/BatchChangesModal.d.ts +19 -0
  149. package/dist/lib/types/overlays/BatchChangesModal.d.ts.map +1 -0
  150. package/dist/lib/types/overlays/ContextMenuOverlay.d.ts +44 -0
  151. package/dist/lib/types/overlays/ContextMenuOverlay.d.ts.map +1 -0
  152. package/dist/lib/types/overlays/DeleteConfirmProgressModal.d.ts +14 -0
  153. package/dist/lib/types/overlays/DeleteConfirmProgressModal.d.ts.map +1 -0
  154. package/dist/lib/types/overlays/DynamicCellEditor.d.ts +15 -0
  155. package/dist/lib/types/overlays/DynamicCellEditor.d.ts.map +1 -0
  156. package/dist/lib/types/overlays/HeaderFilterPopover.d.ts +33 -0
  157. package/dist/lib/types/overlays/HeaderFilterPopover.d.ts.map +1 -0
  158. package/dist/lib/types/overlays/PdfPreviewModalOverlay.d.ts +18 -0
  159. package/dist/lib/types/overlays/PdfPreviewModalOverlay.d.ts.map +1 -0
  160. package/dist/lib/types/overlays/SparklineModalOverlay.d.ts +18 -0
  161. package/dist/lib/types/overlays/SparklineModalOverlay.d.ts.map +1 -0
  162. package/dist/lib/types/renderer/CanvasRenderer.d.ts +45 -0
  163. package/dist/lib/types/renderer/CanvasRenderer.d.ts.map +1 -0
  164. package/dist/lib/types/renderer/GroupRowPainter.d.ts +10 -0
  165. package/dist/lib/types/renderer/GroupRowPainter.d.ts.map +1 -0
  166. package/dist/lib/types/renderer/SkeletonPainter.d.ts +5 -0
  167. package/dist/lib/types/renderer/SkeletonPainter.d.ts.map +1 -0
  168. package/dist/lib/types/theme/ColumnColorEngine.d.ts +52 -0
  169. package/dist/lib/types/theme/ColumnColorEngine.d.ts.map +1 -0
  170. package/dist/lib/types/theme/IGridTheme.d.ts +47 -0
  171. package/dist/lib/types/theme/IGridTheme.d.ts.map +1 -0
  172. package/dist/lib/types/theme/ThemeEngine.d.ts +10 -0
  173. package/dist/lib/types/theme/ThemeEngine.d.ts.map +1 -0
  174. package/dist/lib/types/theme/presets/appleDark.d.ts +3 -0
  175. package/dist/lib/types/theme/presets/appleDark.d.ts.map +1 -0
  176. package/dist/lib/types/theme/presets/appleLight.d.ts +3 -0
  177. package/dist/lib/types/theme/presets/appleLight.d.ts.map +1 -0
  178. package/dist/lib/types/theme/presets/googleDark.d.ts +3 -0
  179. package/dist/lib/types/theme/presets/googleDark.d.ts.map +1 -0
  180. package/dist/lib/types/theme/presets/googleLight.d.ts +3 -0
  181. package/dist/lib/types/theme/presets/googleLight.d.ts.map +1 -0
  182. package/dist/lib/types/types/filter.d.ts +28 -0
  183. package/dist/lib/types/types/filter.d.ts.map +1 -0
  184. package/dist/lib/types/types/grid.d.ts +464 -0
  185. package/dist/lib/types/types/grid.d.ts.map +1 -0
  186. package/dist/lib/types/types/group.d.ts +31 -0
  187. package/dist/lib/types/types/group.d.ts.map +1 -0
  188. package/dist/lib/types/types/store.d.ts +102 -0
  189. package/dist/lib/types/types/store.d.ts.map +1 -0
  190. package/dist/lib/types/ui/FormulaBar.d.ts +28 -0
  191. package/dist/lib/types/ui/FormulaBar.d.ts.map +1 -0
  192. package/dist/lib/types/ui/MaterialIcon.d.ts +28 -0
  193. package/dist/lib/types/ui/MaterialIcon.d.ts.map +1 -0
  194. package/dist/lib/types/ui/SheetGL.d.ts +73 -0
  195. package/dist/lib/types/ui/SheetGL.d.ts.map +1 -0
  196. package/dist/lib/types/ui/SheetGLLogo.d.ts +10 -0
  197. package/dist/lib/types/ui/SheetGLLogo.d.ts.map +1 -0
  198. package/dist/lib/types/ui/SummaryFooter.d.ts +31 -0
  199. package/dist/lib/types/ui/SummaryFooter.d.ts.map +1 -0
  200. package/dist/lib/types/ui/ToolBar.d.ts +48 -0
  201. package/dist/lib/types/ui/ToolBar.d.ts.map +1 -0
  202. package/dist/lib/types/version.d.ts +2 -0
  203. package/dist/lib/types/version.d.ts.map +1 -0
  204. package/package.json +77 -5
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../src/datagrid/columns/types/UrlColumn/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAG9E,wBAAgB,QAAQ,CAAC,EACvB,GAAG,EACH,KAAK,EACL,KAAK,EACL,CAAC,EACD,CAAC,EACD,KAAK,EACL,MAAM,EACN,SAAS,GACV,EAAE,gBAAgB,CAAC,MAAM,CAAC,GAAG,IAAI,CAqCjC;AAED,eAAO,MAAM,eAAe,EAAE,iBAAiB,CAAC,MAAM,CAsCrD,CAAC"}
@@ -0,0 +1,33 @@
1
+ import { FilterDescriptor, FilterOperation } from '../types/filter';
2
+ export declare const BLANK_FILTER_TOKEN = "__SHEETGL_BLANK__";
3
+ export interface ParsedDateInfo {
4
+ year: number;
5
+ month: number;
6
+ day: number;
7
+ hour: number;
8
+ minute: number;
9
+ second: number;
10
+ hasTime: boolean;
11
+ isoDate: string;
12
+ startOfDayMs: number;
13
+ endOfDayMs: number;
14
+ exactMs: number;
15
+ }
16
+ export declare class FilterEngine {
17
+ private static inSetCache;
18
+ private static dateFormatterCache;
19
+ static formatLocalizedDate(val: any, localeCode?: string, includeTime?: boolean): string;
20
+ private static getCompiledSet;
21
+ private static matchesCompiledDateSet;
22
+ static evaluateRow(row: Record<string, any>, filter: FilterDescriptor | null): boolean;
23
+ private static isSingleFilter;
24
+ private static evaluateSingleFilter;
25
+ static parseDateParts(val: any): ParsedDateInfo | null;
26
+ static parseNumeric(val: any): number;
27
+ private static stringifyValue;
28
+ private static matchesFormattedNumber;
29
+ static match(rawVal: any, op: FilterOperation, targetVal: any): boolean;
30
+ static buildRowSearchIndex(row: Record<string, any>): string;
31
+ static matchSearch(row: Record<string, any>, cleanKeyword: string): boolean;
32
+ }
33
+ //# sourceMappingURL=FilterEngine.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FilterEngine.d.ts","sourceRoot":"","sources":["../../../../src/datagrid/core/FilterEngine.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,eAAe,EAAgB,MAAM,iBAAiB,CAAC;AAElF,eAAO,MAAM,kBAAkB,sBAAsB,CAAC;AAEtD,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,YAAY,EAAE,MAAM,CAAC;IACrB,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,MAAM,CAAC;CACjB;AAWD,qBAAa,YAAY;IACvB,OAAO,CAAC,MAAM,CAAC,UAAU,CAA0C;IACnE,OAAO,CAAC,MAAM,CAAC,kBAAkB,CAA0C;WAE7D,mBAAmB,CAC/B,GAAG,EAAE,GAAG,EACR,UAAU,GAAE,MAAgB,EAC5B,WAAW,GAAE,OAAe,GAC3B,MAAM;IAqCT,OAAO,CAAC,MAAM,CAAC,cAAc;IA4C7B,OAAO,CAAC,MAAM,CAAC,sBAAsB;WAuBvB,WAAW,CAAC,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE,MAAM,EAAE,gBAAgB,GAAG,IAAI,GAAG,OAAO;IAyC7F,OAAO,CAAC,MAAM,CAAC,cAAc;IAS7B,OAAO,CAAC,MAAM,CAAC,oBAAoB;WAKrB,cAAc,CAAC,GAAG,EAAE,GAAG,GAAG,cAAc,GAAG,IAAI;WAgF/C,YAAY,CAAC,GAAG,EAAE,GAAG,GAAG,MAAM;IA0D5C,OAAO,CAAC,MAAM,CAAC,cAAc;IAW7B,OAAO,CAAC,MAAM,CAAC,sBAAsB;WAgBvB,KAAK,CAAC,MAAM,EAAE,GAAG,EAAE,EAAE,EAAE,eAAe,EAAE,SAAS,EAAE,GAAG,GAAG,OAAO;WA8MhE,mBAAmB,CAAC,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,MAAM;WAuBrD,WAAW,CAAC,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE,YAAY,EAAE,MAAM,GAAG,OAAO;CAKnF"}
@@ -0,0 +1,65 @@
1
+ import { ColumnDef, ColumnGroupDef } from '../types/grid';
2
+ import { SelectionModel } from './SelectionModel';
3
+ export interface HitTestResult {
4
+ row: number;
5
+ col: number;
6
+ localX: number;
7
+ localY: number;
8
+ isFrozen: boolean;
9
+ cellRect: {
10
+ x: number;
11
+ y: number;
12
+ width: number;
13
+ height: number;
14
+ };
15
+ }
16
+ export interface HeaderHitTestResult {
17
+ colIndex: number;
18
+ column: ColumnDef;
19
+ headerX: number;
20
+ headerWidth: number;
21
+ isFilterIconHit: boolean;
22
+ isGroupHeaderHit?: boolean;
23
+ groupDef?: ColumnGroupDef;
24
+ groupColIndices?: number[];
25
+ }
26
+ export declare class GeometryEngine {
27
+ rowHeight: number;
28
+ baseHeaderHeight: number;
29
+ groupHeaderHeight: number;
30
+ headerHeight: number;
31
+ hasColumnGroups: boolean;
32
+ columnGroups: ColumnGroupDef[];
33
+ private colToGroupMap;
34
+ rowNumberWidth: number;
35
+ viewportWidth: number;
36
+ columns: ColumnDef[];
37
+ frozenColumns: ColumnDef[];
38
+ scrollableColumns: ColumnDef[];
39
+ totalFrozenWidth: number;
40
+ totalScrollableWidth: number;
41
+ scrollableColOffsets: Float32Array;
42
+ constructor(columns?: ColumnDef[], rowHeight?: number, headerHeight?: number, columnGroups?: ColumnGroupDef[], groupHeaderHeight?: number);
43
+ setColumnGroups(columnGroups?: ColumnGroupDef[], groupHeaderHeight?: number): void;
44
+ setBaseHeaderHeight(height: number): void;
45
+ getColumnGroup(col: ColumnDef): ColumnGroupDef | undefined;
46
+ private rebuildColumnGroupMap;
47
+ setViewportWidth(width: number): boolean;
48
+ setColumns(columns: ColumnDef[]): void;
49
+ recalculateGeometry(): void;
50
+ findScrollableColIndexAtX(scrollX: number): number;
51
+ getColumnScreenRect(colIndex: number, scrollLeft: number): {
52
+ x: number;
53
+ width: number;
54
+ isFrozen: boolean;
55
+ };
56
+ hitTestHeader(canvasX: number, canvasY: number, scrollLeft: number): HeaderHitTestResult | null;
57
+ hitTestRowNumber(canvasX: number, canvasY: number, scrollTop: number, rowCount: number): number | null;
58
+ hitTestFillHandle(canvasX: number, canvasY: number, scrollLeft: number, scrollTop: number, selection: SelectionModel): 'corner' | 'right-duplicate' | null;
59
+ hitTest(canvasX: number, canvasY: number, scrollLeft: number, scrollTop: number, rowCount: number): HitTestResult | null;
60
+ hitTestColumnResize(canvasX: number, canvasY: number, scrollLeft: number): {
61
+ colIndex: number;
62
+ isFrozen: boolean;
63
+ } | null;
64
+ }
65
+ //# sourceMappingURL=GeometryEngine.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"GeometryEngine.d.ts","sourceRoot":"","sources":["../../../../src/datagrid/core/GeometryEngine.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAC1D,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAElD,MAAM,WAAW,aAAa;IAC5B,GAAG,EAAE,MAAM,CAAC;IACZ,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,OAAO,CAAC;IAClB,QAAQ,EAAE;QAAE,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC;CACnE;AAED,MAAM,WAAW,mBAAmB;IAClC,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,SAAS,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,MAAM,CAAC;IACpB,eAAe,EAAE,OAAO,CAAC;IACzB,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,QAAQ,CAAC,EAAE,cAAc,CAAC;IAC1B,eAAe,CAAC,EAAE,MAAM,EAAE,CAAC;CAC5B;AAED,qBAAa,cAAc;IAClB,SAAS,EAAE,MAAM,CAAM;IACvB,gBAAgB,EAAE,MAAM,CAAM;IAC9B,iBAAiB,EAAE,MAAM,CAAM;IAC/B,YAAY,EAAE,MAAM,CAAM;IAC1B,eAAe,EAAE,OAAO,CAAS;IACjC,YAAY,EAAE,cAAc,EAAE,CAAM;IAC3C,OAAO,CAAC,aAAa,CAA0C;IACxD,cAAc,EAAE,MAAM,CAAM;IAC5B,aAAa,EAAE,MAAM,CAA4D;IAEjF,OAAO,EAAE,SAAS,EAAE,CAAM;IAC1B,aAAa,EAAE,SAAS,EAAE,CAAM;IAChC,iBAAiB,EAAE,SAAS,EAAE,CAAM;IACpC,gBAAgB,EAAE,MAAM,CAAK;IAC7B,oBAAoB,EAAE,MAAM,CAAK;IACjC,oBAAoB,EAAE,YAAY,CAAuB;gBAG9D,OAAO,GAAE,SAAS,EAAO,EACzB,SAAS,GAAE,MAAW,EACtB,YAAY,GAAE,MAAW,EACzB,YAAY,GAAE,cAAc,EAAO,EACnC,iBAAiB,GAAE,MAAW;IAUzB,eAAe,CAAC,YAAY,GAAE,cAAc,EAAO,EAAE,iBAAiB,CAAC,EAAE,MAAM,GAAG,IAAI;IAQtF,mBAAmB,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IAOzC,cAAc,CAAC,GAAG,EAAE,SAAS,GAAG,cAAc,GAAG,SAAS;IAIjE,OAAO,CAAC,qBAAqB;IA0DtB,gBAAgB,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO;IASxC,UAAU,CAAC,OAAO,EAAE,SAAS,EAAE,GAAG,IAAI;IAStC,mBAAmB,IAAI,IAAI;IA4C3B,yBAAyB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM;IAkBlD,mBAAmB,CACxB,QAAQ,EAAE,MAAM,EAChB,UAAU,EAAE,MAAM,GACjB;QAAE,CAAC,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,OAAO,CAAA;KAAE;IA0B3C,aAAa,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,mBAAmB,GAAG,IAAI;IAsF/F,gBAAgB,CACrB,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,MAAM,EACf,SAAS,EAAE,MAAM,EACjB,QAAQ,EAAE,MAAM,GACf,MAAM,GAAG,IAAI;IAUT,iBAAiB,CACtB,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,MAAM,EACf,UAAU,EAAE,MAAM,EAClB,SAAS,EAAE,MAAM,EACjB,SAAS,EAAE,cAAc,GACxB,QAAQ,GAAG,iBAAiB,GAAG,IAAI;IA+B/B,OAAO,CACZ,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,MAAM,EACf,UAAU,EAAE,MAAM,EAClB,SAAS,EAAE,MAAM,EACjB,QAAQ,EAAE,MAAM,GACf,aAAa,GAAG,IAAI;IAqDhB,mBAAmB,CACxB,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,MAAM,EACf,UAAU,EAAE,MAAM,GACjB;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,OAAO,CAAA;KAAE,GAAG,IAAI;CA4ClD"}
@@ -0,0 +1,66 @@
1
+ import { CellCoords } from '../types/grid';
2
+ export interface NormalizedCellRange {
3
+ minRow: number;
4
+ maxRow: number;
5
+ minCol: number;
6
+ maxCol: number;
7
+ }
8
+ export interface GridApi {
9
+ /**
10
+ * Request an asynchronous 60 FPS redraw on the next animation frame.
11
+ */
12
+ requestRender(): void;
13
+ /**
14
+ * Set the active cell and reset the selection range to this single cell.
15
+ */
16
+ selectCell(row: number, col: number): void;
17
+ /**
18
+ * Select a rectangular range of cells from (startRow, startCol) to (endRow, endCol).
19
+ */
20
+ selectRange(startRow: number, startCol: number, endRow: number, endCol: number): void;
21
+ /**
22
+ * Clear the active selection (defaults back to origin 0,0).
23
+ */
24
+ clearSelection(): void;
25
+ /**
26
+ * Select all cells across all rows and columns.
27
+ */
28
+ selectAll(): void;
29
+ /**
30
+ * Get the current active cursor cell coordinates.
31
+ */
32
+ getActiveCell(): CellCoords;
33
+ /**
34
+ * Get the current bounding box of the active selection (min/max bounds).
35
+ */
36
+ getSelectedRange(): NormalizedCellRange;
37
+ /**
38
+ * Smoothly scrolls the viewport to ensure the specified cell is visible.
39
+ */
40
+ ensureCellVisible(row: number, col: number): void;
41
+ /**
42
+ * Programmatically scrolls the grid surface to the specified top/left offsets.
43
+ */
44
+ scrollTo(options: {
45
+ top?: number;
46
+ left?: number;
47
+ behavior?: ScrollBehavior;
48
+ }): void;
49
+ /**
50
+ * Programmatically change the pixel width of a column.
51
+ */
52
+ setColumnWidth(columnId: string, width: number): void;
53
+ /**
54
+ * Get the current computed pixel width of a column.
55
+ */
56
+ getColumnWidth(columnId: string): number | undefined;
57
+ /**
58
+ * Get total scrollable virtual width in pixels.
59
+ */
60
+ getTotalWidth(): number;
61
+ /**
62
+ * Get total scrollable virtual height in pixels.
63
+ */
64
+ getTotalHeight(): number;
65
+ }
66
+ //# sourceMappingURL=GridApi.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"GridApi.d.ts","sourceRoot":"","sources":["../../../../src/datagrid/core/GridApi.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAa,MAAM,eAAe,CAAC;AAEtD,MAAM,WAAW,mBAAmB;IAClC,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,OAAO;IACtB;;OAEG;IACH,aAAa,IAAI,IAAI,CAAC;IAEtB;;OAEG;IACH,UAAU,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,IAAI,CAAC;IAE3C;;OAEG;IACH,WAAW,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IAEtF;;OAEG;IACH,cAAc,IAAI,IAAI,CAAC;IAEvB;;OAEG;IACH,SAAS,IAAI,IAAI,CAAC;IAElB;;OAEG;IACH,aAAa,IAAI,UAAU,CAAC;IAE5B;;OAEG;IACH,gBAAgB,IAAI,mBAAmB,CAAC;IAMxC;;OAEG;IACH,iBAAiB,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,IAAI,CAAC;IAElD;;OAEG;IACH,QAAQ,CAAC,OAAO,EAAE;QAAE,GAAG,CAAC,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,EAAE,cAAc,CAAA;KAAE,GAAG,IAAI,CAAC;IAEpF;;OAEG;IACH,cAAc,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IAEtD;;OAEG;IACH,cAAc,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAAC;IAErD;;OAEG;IACH,aAAa,IAAI,MAAM,CAAC;IAExB;;OAEG;IACH,cAAc,IAAI,MAAM,CAAC;CAC1B"}
@@ -0,0 +1,8 @@
1
+ import { GroupDescriptor, SummaryType, VirtualRow } from '../types/group';
2
+ export declare class GroupingEngine {
3
+ private static formatGroupKeyVal;
4
+ static collectGroupKeys(data: any[], groups: GroupDescriptor[], maxAutoExpandLevel?: number): Set<string>;
5
+ static projectVirtualRows(data: any[], groups: GroupDescriptor[], expandedKeys: Set<string>, summaryConfig?: Record<string, SummaryType>): VirtualRow[];
6
+ private static groupRecursive;
7
+ }
8
+ //# sourceMappingURL=GroupingEngine.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"GroupingEngine.d.ts","sourceRoot":"","sources":["../../../../src/datagrid/core/GroupingEngine.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAG1E,qBAAa,cAAc;IACzB,OAAO,CAAC,MAAM,CAAC,iBAAiB;WAclB,gBAAgB,CAC5B,IAAI,EAAE,GAAG,EAAE,EACX,MAAM,EAAE,eAAe,EAAE,EACzB,kBAAkB,GAAE,MAAU,GAC7B,GAAG,CAAC,MAAM,CAAC;WA4BA,kBAAkB,CAC9B,IAAI,EAAE,GAAG,EAAE,EACX,MAAM,EAAE,eAAe,EAAE,EACzB,YAAY,EAAE,GAAG,CAAC,MAAM,CAAC,EACzB,aAAa,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,WAAW,CAAC,GAC1C,UAAU,EAAE;IAcf,OAAO,CAAC,MAAM,CAAC,cAAc;CAmG9B"}
@@ -0,0 +1,18 @@
1
+ export interface GridCommand {
2
+ description?: string;
3
+ undo: () => void;
4
+ redo: () => void;
5
+ }
6
+ export declare class HistoryManager {
7
+ private undoStack;
8
+ private redoStack;
9
+ private maxHistory;
10
+ constructor(maxHistory?: number);
11
+ push(command: GridCommand): void;
12
+ undo(): boolean;
13
+ redo(): boolean;
14
+ canUndo(): boolean;
15
+ canRedo(): boolean;
16
+ clear(): void;
17
+ }
18
+ //# sourceMappingURL=HistoryManager.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"HistoryManager.d.ts","sourceRoot":"","sources":["../../../../src/datagrid/core/HistoryManager.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,WAAW;IAC1B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,IAAI,EAAE,MAAM,IAAI,CAAC;IACjB,IAAI,EAAE,MAAM,IAAI,CAAC;CAClB;AAED,qBAAa,cAAc;IACzB,OAAO,CAAC,SAAS,CAAqB;IACtC,OAAO,CAAC,SAAS,CAAqB;IACtC,OAAO,CAAC,UAAU,CAAc;gBAEpB,UAAU,GAAE,MAAW;IAI5B,IAAI,CAAC,OAAO,EAAE,WAAW,GAAG,IAAI;IAShC,IAAI,IAAI,OAAO;IAQf,IAAI,IAAI,OAAO;IAQf,OAAO,IAAI,OAAO;IAIlB,OAAO,IAAI,OAAO;IAIlB,KAAK,IAAI,IAAI;CAIrB"}
@@ -0,0 +1,17 @@
1
+ import { CellCoords, CellRange } from '../types/grid';
2
+ export declare class SelectionModel {
3
+ activeCell: CellCoords;
4
+ selectionRange: CellRange | null;
5
+ isSelecting: boolean;
6
+ setActiveCell(row: number, col: number): void;
7
+ setRangeEnd(row: number, col: number): void;
8
+ getNormalizedRange(): {
9
+ minRow: number;
10
+ maxRow: number;
11
+ minCol: number;
12
+ maxCol: number;
13
+ };
14
+ isCellSelected(row: number, col: number): boolean;
15
+ hasMultiCellSelection(): boolean;
16
+ }
17
+ //# sourceMappingURL=SelectionModel.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SelectionModel.d.ts","sourceRoot":"","sources":["../../../../src/datagrid/core/SelectionModel.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAEtD,qBAAa,cAAc;IAClB,UAAU,EAAE,UAAU,CAAsB;IAC5C,cAAc,EAAE,SAAS,GAAG,IAAI,CAAQ;IACxC,WAAW,EAAE,OAAO,CAAS;IAE7B,aAAa,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,IAAI;IAK7C,WAAW,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,IAAI;IAY3C,kBAAkB,IAAI;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE;IAkBxF,cAAc,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO;IAKjD,qBAAqB,IAAI,OAAO;CAIxC"}
@@ -0,0 +1,7 @@
1
+ import { SortDescriptor } from '../types/filter';
2
+ export declare class SortEngine {
3
+ private static collator;
4
+ static createComparator(sortRules: SortDescriptor[]): (a: any, b: any) => number;
5
+ static compareValues(a: any, b: any): number;
6
+ }
7
+ //# sourceMappingURL=SortEngine.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SortEngine.d.ts","sourceRoot":"","sources":["../../../../src/datagrid/core/SortEngine.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAGjD,qBAAa,UAAU;IACrB,OAAO,CAAC,MAAM,CAAC,QAAQ,CAGpB;WAEW,gBAAgB,CAAC,SAAS,EAAE,cAAc,EAAE,GAAG,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,KAAK,MAAM;WAmBzE,aAAa,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,GAAG,MAAM;CAyCpD"}
@@ -0,0 +1,33 @@
1
+ import { ColumnDef, IDeferred, ValidationRuleResult } from '../types/grid';
2
+ export interface ValidationOutcome {
3
+ valid: boolean;
4
+ message?: string;
5
+ isAsync?: boolean;
6
+ }
7
+ /**
8
+ * DevExtreme-compatible Deferred class for asynchronous backend validation.
9
+ * Supports:
10
+ * - `d.resolve(true)` or `d.resolve()` -> Valid
11
+ * - `d.resolve(false)` -> Invalid (displays rule.message)
12
+ * - `d.reject("Custom backend error message")` -> Invalid (displays custom message)
13
+ * - `return d.promise()` or `return d`
14
+ */
15
+ export declare class Deferred<T = ValidationRuleResult> implements IDeferred<T> {
16
+ private _promise;
17
+ private _resolve;
18
+ constructor();
19
+ resolve: (result?: T) => void;
20
+ reject: (errorMessage?: string | {
21
+ valid?: boolean;
22
+ message?: string;
23
+ }) => void;
24
+ promise: () => Promise<ValidationRuleResult>;
25
+ }
26
+ export declare function createDeferred<T = ValidationRuleResult>(): Deferred<T>;
27
+ export declare class ValidationEngine {
28
+ private static normalizeResult;
29
+ private static isEmpty;
30
+ static validateCell(value: any, row: Record<string, any>, column: ColumnDef, isTR?: boolean): Promise<ValidationOutcome>;
31
+ private static evaluateSingleRule;
32
+ }
33
+ //# sourceMappingURL=ValidationEngine.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ValidationEngine.d.ts","sourceRoot":"","sources":["../../../../src/datagrid/core/ValidationEngine.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,SAAS,EAAkB,oBAAoB,EAAE,MAAM,eAAe,CAAC;AAG3F,MAAM,WAAW,iBAAiB;IAChC,KAAK,EAAE,OAAO,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED;;;;;;;GAOG;AACH,qBAAa,QAAQ,CAAC,CAAC,GAAG,oBAAoB,CAAE,YAAW,SAAS,CAAC,CAAC,CAAC;IACrE,OAAO,CAAC,QAAQ,CAAgC;IAChD,OAAO,CAAC,QAAQ,CAAuC;;IAQhD,OAAO,GAAI,SAAS,CAAC,KAAG,IAAI,CAMjC;IAEK,MAAM,GAAI,eAAe,MAAM,GAAG;QAAE,KAAK,CAAC,EAAE,OAAO,CAAC;QAAC,OAAO,CAAC,EAAE,MAAM,CAAA;KAAE,KAAG,IAAI,CAQnF;IAEK,OAAO,QAAO,OAAO,CAAC,oBAAoB,CAAC,CAEhD;CACH;AAED,wBAAgB,cAAc,CAAC,CAAC,GAAG,oBAAoB,KAAK,QAAQ,CAAC,CAAC,CAAC,CAEtE;AAKD,qBAAa,gBAAgB;IAC3B,OAAO,CAAC,MAAM,CAAC,eAAe;IAmB9B,OAAO,CAAC,MAAM,CAAC,OAAO;WAUF,YAAY,CAC9B,KAAK,EAAE,GAAG,EACV,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EACxB,MAAM,EAAE,SAAS,EACjB,IAAI,GAAE,OAAe,GACpB,OAAO,CAAC,iBAAiB,CAAC;mBA8BR,kBAAkB;CAkNxC"}
@@ -0,0 +1,12 @@
1
+ export declare class BlockCache<T = any> {
2
+ private cache;
3
+ private readonly maxBlocks;
4
+ readonly blockSize: number;
5
+ constructor(blockSize?: number, maxBlocks?: number);
6
+ getBlockIndex(rowIndex: number): number;
7
+ getRow(rowIndex: number): T | undefined;
8
+ setBlock(blockIndex: number, rows: T[]): void;
9
+ hasBlock(blockIndex: number): boolean;
10
+ clear(): void;
11
+ }
12
+ //# sourceMappingURL=BlockCache.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BlockCache.d.ts","sourceRoot":"","sources":["../../../../src/datagrid/data/BlockCache.ts"],"names":[],"mappings":"AAAA,qBAAa,UAAU,CAAC,CAAC,GAAG,GAAG;IAC7B,OAAO,CAAC,KAAK,CAA0B;IACvC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAS;IACnC,SAAgB,SAAS,EAAE,MAAM,CAAC;gBAEtB,SAAS,GAAE,MAAY,EAAE,SAAS,GAAE,MAAW;IAKpD,aAAa,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM;IAIvC,MAAM,CAAC,QAAQ,EAAE,MAAM,GAAG,CAAC,GAAG,SAAS;IAavC,QAAQ,CAAC,UAAU,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,EAAE,GAAG,IAAI;IAa7C,QAAQ,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO;IAIrC,KAAK,IAAI,IAAI;CAGrB"}
@@ -0,0 +1,85 @@
1
+ import { IDataStore, BatchChanges } from '../types/store';
2
+ import { FilterDescriptor, SortDescriptor, DistinctItem } from '../types/filter';
3
+ import { GroupDescriptor, SummaryType, VirtualRow } from '../types/group';
4
+ export interface LocalDataStoreOptions {
5
+ data: any[];
6
+ keyField?: string;
7
+ batchMode?: boolean;
8
+ initialSummaries?: Record<string, SummaryType>;
9
+ }
10
+ export declare class LocalDataStore implements IDataStore {
11
+ private rawData;
12
+ private keyField;
13
+ private processedData;
14
+ private virtualRows;
15
+ private currentFilter;
16
+ private currentSearch;
17
+ private currentSort;
18
+ private currentGroups;
19
+ private expandedGroupKeys;
20
+ private summaryTypes;
21
+ private batchMode;
22
+ private originalRowSnapshots;
23
+ private dirtyCells;
24
+ private insertedKeys;
25
+ private deletedRows;
26
+ private distinctCache;
27
+ private listeners;
28
+ constructor(options: LocalDataStoreOptions);
29
+ isRemote(): boolean;
30
+ setData(data: any[]): void;
31
+ getRowCount(): number;
32
+ getFilteredRowCount(): number;
33
+ getTotalDatasetRowCount(): number;
34
+ getViewRow(rowIndex: number): VirtualRow | undefined;
35
+ getRawData(): any[];
36
+ getRawRowByKey(rowKey: any): Record<string, any> | undefined;
37
+ ensureRange(_startRow: number, _endRow: number): Promise<void>;
38
+ setFilter(filter: FilterDescriptor | null): Promise<void>;
39
+ setSearch(keyword: string): Promise<void>;
40
+ setSorting(sortRules: SortDescriptor[]): Promise<void>;
41
+ setGrouping(groupDescriptors: GroupDescriptor[]): Promise<void>;
42
+ toggleGroup(groupKey: string): Promise<void>;
43
+ expandAllGroups(): void;
44
+ collapseAllGroups(): void;
45
+ private isValueEqual;
46
+ private ensureSnapshot;
47
+ private markCellDirty;
48
+ setCell(rowKey: any, columnId: string, value: any): Promise<void>;
49
+ setCellsBatch(updates: Array<{
50
+ rowKey: any;
51
+ columnId: string;
52
+ value: any;
53
+ }>): Promise<void>;
54
+ updateRowFields(rowKey: any, patch: Record<string, any>): Promise<void>;
55
+ private generateNextKey;
56
+ insertRow(rowData: Record<string, any>, targetViewRowIndex?: number): Promise<Record<string, any>>;
57
+ duplicateRow(rowKey: any, targetViewRowIndex?: number): Promise<Record<string, any> | null>;
58
+ deleteRow(rowKey: any): Promise<void>;
59
+ deleteRowsBatch(rowKeys: any[], onProgress?: (processed: number, total: number) => void): Promise<number>;
60
+ restoreRow(rowData: Record<string, any>, rawIndex?: number): Promise<void>;
61
+ setBatchMode(enabled: boolean): void;
62
+ isBatchMode(): boolean;
63
+ isCellDirty(rowKey: any, columnId: string): boolean;
64
+ isColumnDirty(columnId: string): boolean;
65
+ isRowInserted(rowKey: any): boolean;
66
+ hasPendingChanges(): boolean;
67
+ getPendingChangesCount(): number;
68
+ getPendingChanges(): BatchChanges;
69
+ revertPendingDelete(rowKey: any): void;
70
+ revertPendingUpdate(rowKey: any, columnId?: string): void;
71
+ revertPendingInsert(rowKey: any): void;
72
+ saveBatchChanges(): Promise<BatchChanges>;
73
+ discardBatchChanges(): void;
74
+ commitBatch(changes: BatchChanges): Promise<void>;
75
+ getDistinctValues(columnId: string, search?: string, baseFilter?: FilterDescriptor | null): Promise<DistinctItem[]>;
76
+ getSummaryTypes(): Record<string, SummaryType>;
77
+ setSummaryType(columnId: string, summaryType: SummaryType): void;
78
+ getSummaries(): Record<string, number> | undefined;
79
+ on(event: string, callback: (...args: any[]) => void): void;
80
+ off(event: string, callback: (...args: any[]) => void): void;
81
+ private emit;
82
+ private recompute;
83
+ private recomputeVirtualRowsOnly;
84
+ }
85
+ //# sourceMappingURL=LocalDataStore.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"LocalDataStore.d.ts","sourceRoot":"","sources":["../../../../src/datagrid/data/LocalDataStore.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,94 @@
1
+ import { IDataStore, BatchChanges, RemoteOperationsConfig, DataGridQuery, LoadResult } from '../types/store';
2
+ import { FilterDescriptor, SortDescriptor, DistinctItem } from '../types/filter';
3
+ import { GroupDescriptor, VirtualRow } from '../types/group';
4
+ export interface RemoteDateTreeDayPayload {
5
+ day: number;
6
+ isoDate?: string;
7
+ count: number;
8
+ values?: any[];
9
+ }
10
+ export interface RemoteDateTreeMonthPayload {
11
+ month: number;
12
+ count: number;
13
+ days?: RemoteDateTreeDayPayload[];
14
+ }
15
+ export interface RemoteDateTreeYearPayload {
16
+ year: number;
17
+ count: number;
18
+ months?: RemoteDateTreeMonthPayload[];
19
+ }
20
+ export interface RemoteDataStoreOptions {
21
+ url?: string;
22
+ keyField?: string;
23
+ remoteOperations?: RemoteOperationsConfig;
24
+ headers?: Record<string, string>;
25
+ blockSize?: number;
26
+ /** Alias for blockSize as documented in REMOTE_OPERATIONS_GUIDE.md */
27
+ chunkSize?: number;
28
+ method?: 'GET' | 'POST';
29
+ /** Custom loader function for advanced environments (e.g. Qmi custom API client) */
30
+ load?: (query: DataGridQuery) => Promise<LoadResult>;
31
+ /** Alias for load */
32
+ customLoad?: (query: DataGridQuery) => Promise<LoadResult>;
33
+ /** Custom distinct value loader for remote column filters */
34
+ loadDistinct?: (columnId: string, search?: string, baseFilter?: FilterDescriptor | null) => Promise<DistinctItem[]>;
35
+ /** Custom single cell updater */
36
+ update?: (key: any, values: Record<string, any>) => Promise<void>;
37
+ /** Custom batch changes committer */
38
+ commit?: (changes: BatchChanges) => Promise<void>;
39
+ }
40
+ export declare class RemoteDataStore implements IDataStore {
41
+ private url;
42
+ private keyField;
43
+ private headers;
44
+ private method;
45
+ private remoteOperations;
46
+ private cache;
47
+ private customLoad?;
48
+ private customLoadDistinct?;
49
+ private customUpdate?;
50
+ private customCommit?;
51
+ private totalCount;
52
+ private unfilteredTotalCount;
53
+ private hasInitialFetchTriggered;
54
+ private summaries?;
55
+ private currentFilter;
56
+ private currentSearch;
57
+ private currentSort;
58
+ private currentGroups;
59
+ private currentAbortController;
60
+ private pendingBlockRequests;
61
+ private distinctCache;
62
+ private listeners;
63
+ constructor(options: RemoteDataStoreOptions);
64
+ isRemote(): boolean;
65
+ getRowCount(): number;
66
+ getTotalCount(): number;
67
+ setTotalCount(count: number): void;
68
+ getFilteredRowCount(): number;
69
+ getTotalDatasetRowCount(): number;
70
+ getViewRow(rowIndex: number): VirtualRow | undefined;
71
+ ensureRange(startRow: number, endRow: number): Promise<void>;
72
+ private buildRequestUrlWithParams;
73
+ private fetchBlock;
74
+ setFilter(filter: FilterDescriptor | null): Promise<void>;
75
+ setSearch(keyword: string): Promise<void>;
76
+ setSorting(sortRules: SortDescriptor[]): Promise<void>;
77
+ setGrouping(groupDescriptors: GroupDescriptor[]): Promise<void>;
78
+ toggleGroup(_groupKey: string): Promise<void>;
79
+ setCell(rowKey: any, columnId: string, value: any): Promise<void>;
80
+ commitBatch(changes: BatchChanges): Promise<void>;
81
+ /**
82
+ * Flattens a server-side semantic Year > Month > Day tree payload into DistinctItem[]
83
+ * so HeaderFilterPopover builds the exact hierarchical date tree with server row counts.
84
+ */
85
+ private static normalizeRemoteDateTree;
86
+ getDistinctValues(columnId: string, search?: string, baseFilter?: FilterDescriptor | null): Promise<DistinctItem[]>;
87
+ getSummaries(): Record<string, number> | undefined;
88
+ on(event: string, callback: (...args: any[]) => void): void;
89
+ off(event: string, callback: (...args: any[]) => void): void;
90
+ private emit;
91
+ private resetAndReloadAsync;
92
+ resetAndReload(): void;
93
+ }
94
+ //# sourceMappingURL=RemoteDataStore.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"RemoteDataStore.d.ts","sourceRoot":"","sources":["../../../../src/datagrid/data/RemoteDataStore.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,65 @@
1
+ import { ColumnDef, ColumnGroupDef, RowSelectionMode } from '../types/grid';
2
+ import { GeometryEngine } from '../core/GeometryEngine';
3
+ export interface UseGridGeometryOptions {
4
+ userColumns: ColumnDef[];
5
+ rowHeight?: number;
6
+ headerHeight?: number;
7
+ columnGroups?: ColumnGroupDef[];
8
+ groupHeaderHeight?: number;
9
+ rowSelectionMode?: RowSelectionMode;
10
+ rowCount?: number;
11
+ onRequestRender?: () => void;
12
+ onActiveOverlayClear?: () => void;
13
+ onColumnResize?: (colId: string, newWidth: number) => void;
14
+ }
15
+ export interface ColumnResizeState {
16
+ colIndex: number;
17
+ colId: string;
18
+ startX: number;
19
+ initialWidth: number;
20
+ }
21
+ export interface UseGridGeometryReturn {
22
+ containerRef: React.RefObject<HTMLDivElement | null>;
23
+ gridSurfaceRef: React.RefObject<HTMLDivElement | null>;
24
+ scrollContainerRef: React.RefObject<HTMLDivElement | null>;
25
+ geometryRef: React.MutableRefObject<GeometryEngine>;
26
+ columns: ColumnDef[];
27
+ effectiveColumns: ColumnDef[];
28
+ setColumns: React.Dispatch<React.SetStateAction<ColumnDef[]>>;
29
+ updateColumnDef: (colId: string, patch: Partial<ColumnDef>) => void;
30
+ setColumnWidth: (colId: string, width: number) => void;
31
+ getColumnWidth: (colId: string) => number | undefined;
32
+ resizingCol: ColumnResizeState | null;
33
+ setResizingCol: React.Dispatch<React.SetStateAction<ColumnResizeState | null>>;
34
+ scrollPosRef: React.MutableRefObject<{
35
+ left: number;
36
+ top: number;
37
+ }>;
38
+ scrollIndicator: {
39
+ visible: boolean;
40
+ row: number;
41
+ };
42
+ setScrollIndicator: React.Dispatch<React.SetStateAction<{
43
+ visible: boolean;
44
+ row: number;
45
+ }>>;
46
+ handleScroll: (e: React.UIEvent<HTMLDivElement>) => void;
47
+ ensureCellVisible: (row: number, col: number) => void;
48
+ scrollTo: (options: {
49
+ top?: number;
50
+ left?: number;
51
+ behavior?: ScrollBehavior;
52
+ }) => void;
53
+ scrollToTop: () => void;
54
+ scrollToBottom: () => void;
55
+ getViewportCoords: (e: React.MouseEvent) => {
56
+ x: number;
57
+ y: number;
58
+ onScrollbar: boolean;
59
+ };
60
+ checkEdgeAutoScroll: (x: number, y: number, rect: DOMRect) => void;
61
+ getTotalWidth: () => number;
62
+ getTotalHeight: (rowCount: number) => number;
63
+ }
64
+ export declare function useGridGeometry({ userColumns, rowHeight, headerHeight, columnGroups, groupHeaderHeight, rowSelectionMode, rowCount, onRequestRender, onActiveOverlayClear, onColumnResize, }: UseGridGeometryOptions): UseGridGeometryReturn;
65
+ //# sourceMappingURL=useGridGeometry.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useGridGeometry.d.ts","sourceRoot":"","sources":["../../../../src/datagrid/hooks/useGridGeometry.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,43 @@
1
+ import { SelectionModel } from '../core/SelectionModel';
2
+ import { CellCoords } from '../types/grid';
3
+ import { NormalizedCellRange } from '../core/GridApi';
4
+ export interface UseGridSelectionOptions {
5
+ onRequestRender?: () => void;
6
+ onEnsureCellVisible?: (row: number, col: number) => void;
7
+ onSelectionChanged?: (range: NormalizedCellRange, activeCell: CellCoords) => void;
8
+ }
9
+ export interface UseGridSelectionReturn {
10
+ /**
11
+ * Mutable reference to the underlying SelectionModel for direct canvas pass-through.
12
+ */
13
+ selectionRef: React.MutableRefObject<SelectionModel>;
14
+ /**
15
+ * Version counter incremented on every selection change to trigger React re-renders.
16
+ */
17
+ selectionVersion: number;
18
+ setSelectionVersion: React.Dispatch<React.SetStateAction<number>>;
19
+ selectedCellUI: CellCoords;
20
+ setSelectedCellUI: React.Dispatch<React.SetStateAction<CellCoords>>;
21
+ /**
22
+ * Whether the user is actively dragging across data cells.
23
+ */
24
+ isDraggingSelection: boolean;
25
+ setIsDraggingSelection: React.Dispatch<React.SetStateAction<boolean>>;
26
+ /**
27
+ * Whether the user is actively dragging down the row number gutter.
28
+ */
29
+ isDraggingRowNumbers: boolean;
30
+ setIsDraggingRowNumbers: React.Dispatch<React.SetStateAction<boolean>>;
31
+ selectCell: (row: number, col: number) => void;
32
+ selectRange: (startRow: number, startCol: number, endRow: number, endCol: number) => void;
33
+ setRangeEnd: (row: number, col: number) => void;
34
+ selectAll: (rowCount: number, colCount: number) => void;
35
+ selectFullRow: (rowIndex: number, colCount: number, isRangeSelect?: boolean) => void;
36
+ moveSelection: (dRow: number, dCol: number, isRangeSelect?: boolean, rowCount?: number, colCount?: number) => void;
37
+ clearSelection: () => void;
38
+ stopDragging: () => void;
39
+ getActiveCell: () => CellCoords;
40
+ getSelectedRange: () => NormalizedCellRange;
41
+ }
42
+ export declare function useGridSelection({ onRequestRender, onEnsureCellVisible, onSelectionChanged, }?: UseGridSelectionOptions): UseGridSelectionReturn;
43
+ //# sourceMappingURL=useGridSelection.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useGridSelection.d.ts","sourceRoot":"","sources":["../../../../src/datagrid/hooks/useGridSelection.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AACxD,OAAO,EAAE,UAAU,EAAa,MAAM,eAAe,CAAC;AACtD,OAAO,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAC;AAEtD,MAAM,WAAW,uBAAuB;IACtC,eAAe,CAAC,EAAE,MAAM,IAAI,CAAC;IAC7B,mBAAmB,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,KAAK,IAAI,CAAC;IACzD,kBAAkB,CAAC,EAAE,CAAC,KAAK,EAAE,mBAAmB,EAAE,UAAU,EAAE,UAAU,KAAK,IAAI,CAAC;CACnF;AAED,MAAM,WAAW,sBAAsB;IACrC;;OAEG;IACH,YAAY,EAAE,KAAK,CAAC,gBAAgB,CAAC,cAAc,CAAC,CAAC;IACrD;;OAEG;IACH,gBAAgB,EAAE,MAAM,CAAC;IACzB,mBAAmB,EAAE,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC,CAAC;IAClE,cAAc,EAAE,UAAU,CAAC;IAC3B,iBAAiB,EAAE,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,cAAc,CAAC,UAAU,CAAC,CAAC,CAAC;IACpE;;OAEG;IACH,mBAAmB,EAAE,OAAO,CAAC;IAC7B,sBAAsB,EAAE,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC,CAAC;IACtE;;OAEG;IACH,oBAAoB,EAAE,OAAO,CAAC;IAC9B,uBAAuB,EAAE,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC,CAAC;IAGvE,UAAU,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,KAAK,IAAI,CAAC;IAC/C,WAAW,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,KAAK,IAAI,CAAC;IAC1F,WAAW,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,KAAK,IAAI,CAAC;IAChD,SAAS,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,KAAK,IAAI,CAAC;IACxD,aAAa,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,aAAa,CAAC,EAAE,OAAO,KAAK,IAAI,CAAC;IACrF,aAAa,EAAE,CACb,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,EACZ,aAAa,CAAC,EAAE,OAAO,EACvB,QAAQ,CAAC,EAAE,MAAM,EACjB,QAAQ,CAAC,EAAE,MAAM,KACd,IAAI,CAAC;IACV,cAAc,EAAE,MAAM,IAAI,CAAC;IAC3B,YAAY,EAAE,MAAM,IAAI,CAAC;IAGzB,aAAa,EAAE,MAAM,UAAU,CAAC;IAChC,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;CAC7C;AAED,wBAAgB,gBAAgB,CAAC,EAC/B,eAAe,EACf,mBAAmB,EACnB,kBAAkB,GACnB,GAAE,uBAA4B,GAAG,sBAAsB,CAiJvD"}