@affino/datagrid-orchestration 0.1.0

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 (239) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +6 -0
  3. package/dist/src/createDataGridRuntime.d.ts +19 -0
  4. package/dist/src/createDataGridRuntime.d.ts.map +1 -0
  5. package/dist/src/createDataGridRuntime.js +33 -0
  6. package/dist/src/dataGridContextMenuContracts.d.ts +20 -0
  7. package/dist/src/dataGridContextMenuContracts.d.ts.map +1 -0
  8. package/dist/src/dataGridContextMenuContracts.js +1 -0
  9. package/dist/src/dataGridPointerContracts.d.ts +5 -0
  10. package/dist/src/dataGridPointerContracts.d.ts.map +1 -0
  11. package/dist/src/dataGridPointerContracts.js +1 -0
  12. package/dist/src/dataGridRangeMutationKernel.d.ts +27 -0
  13. package/dist/src/dataGridRangeMutationKernel.d.ts.map +1 -0
  14. package/dist/src/dataGridRangeMutationKernel.js +46 -0
  15. package/dist/src/dataGridWritableRef.d.ts +4 -0
  16. package/dist/src/dataGridWritableRef.d.ts.map +1 -0
  17. package/dist/src/dataGridWritableRef.js +1 -0
  18. package/dist/src/index.d.ts +77 -0
  19. package/dist/src/index.d.ts.map +1 -0
  20. package/dist/src/index.js +76 -0
  21. package/dist/src/selectionOverlayTransform.d.ts +16 -0
  22. package/dist/src/selectionOverlayTransform.d.ts.map +1 -0
  23. package/dist/src/selectionOverlayTransform.js +21 -0
  24. package/dist/src/useDataGridA11yCellIds.d.ts +16 -0
  25. package/dist/src/useDataGridA11yCellIds.d.ts.map +1 -0
  26. package/dist/src/useDataGridA11yCellIds.js +26 -0
  27. package/dist/src/useDataGridAxisAutoScrollDelta.d.ts +10 -0
  28. package/dist/src/useDataGridAxisAutoScrollDelta.d.ts.map +1 -0
  29. package/dist/src/useDataGridAxisAutoScrollDelta.js +20 -0
  30. package/dist/src/useDataGridCellCoordNormalizer.d.ts +26 -0
  31. package/dist/src/useDataGridCellCoordNormalizer.d.ts.map +1 -0
  32. package/dist/src/useDataGridCellCoordNormalizer.js +29 -0
  33. package/dist/src/useDataGridCellDatasetResolver.d.ts +16 -0
  34. package/dist/src/useDataGridCellDatasetResolver.d.ts.map +1 -0
  35. package/dist/src/useDataGridCellDatasetResolver.js +23 -0
  36. package/dist/src/useDataGridCellNavigation.d.ts +23 -0
  37. package/dist/src/useDataGridCellNavigation.d.ts.map +1 -0
  38. package/dist/src/useDataGridCellNavigation.js +111 -0
  39. package/dist/src/useDataGridCellPointerDownRouter.d.ts +42 -0
  40. package/dist/src/useDataGridCellPointerDownRouter.d.ts.map +1 -0
  41. package/dist/src/useDataGridCellPointerDownRouter.js +48 -0
  42. package/dist/src/useDataGridCellPointerHoverRouter.d.ts +24 -0
  43. package/dist/src/useDataGridCellPointerHoverRouter.d.ts.map +1 -0
  44. package/dist/src/useDataGridCellPointerHoverRouter.js +25 -0
  45. package/dist/src/useDataGridCellRangeHelpers.d.ts +30 -0
  46. package/dist/src/useDataGridCellRangeHelpers.d.ts.map +1 -0
  47. package/dist/src/useDataGridCellRangeHelpers.js +89 -0
  48. package/dist/src/useDataGridCellVisibilityScroller.d.ts +41 -0
  49. package/dist/src/useDataGridCellVisibilityScroller.d.ts.map +1 -0
  50. package/dist/src/useDataGridCellVisibilityScroller.js +43 -0
  51. package/dist/src/useDataGridCellVisualStatePredicates.d.ts +40 -0
  52. package/dist/src/useDataGridCellVisualStatePredicates.d.ts.map +1 -0
  53. package/dist/src/useDataGridCellVisualStatePredicates.js +126 -0
  54. package/dist/src/useDataGridClearSelectionLifecycle.d.ts +27 -0
  55. package/dist/src/useDataGridClearSelectionLifecycle.d.ts.map +1 -0
  56. package/dist/src/useDataGridClearSelectionLifecycle.js +21 -0
  57. package/dist/src/useDataGridClipboardBridge.d.ts +31 -0
  58. package/dist/src/useDataGridClipboardBridge.d.ts.map +1 -0
  59. package/dist/src/useDataGridClipboardBridge.js +138 -0
  60. package/dist/src/useDataGridClipboardMutations.d.ts +47 -0
  61. package/dist/src/useDataGridClipboardMutations.d.ts.map +1 -0
  62. package/dist/src/useDataGridClipboardMutations.js +216 -0
  63. package/dist/src/useDataGridClipboardValuePolicy.d.ts +5 -0
  64. package/dist/src/useDataGridClipboardValuePolicy.d.ts.map +1 -0
  65. package/dist/src/useDataGridClipboardValuePolicy.js +14 -0
  66. package/dist/src/useDataGridColumnFilterOrchestration.d.ts +64 -0
  67. package/dist/src/useDataGridColumnFilterOrchestration.d.ts.map +1 -0
  68. package/dist/src/useDataGridColumnFilterOrchestration.js +359 -0
  69. package/dist/src/useDataGridColumnLayoutOrchestration.d.ts +59 -0
  70. package/dist/src/useDataGridColumnLayoutOrchestration.d.ts.map +1 -0
  71. package/dist/src/useDataGridColumnLayoutOrchestration.js +151 -0
  72. package/dist/src/useDataGridColumnUiPolicy.d.ts +25 -0
  73. package/dist/src/useDataGridColumnUiPolicy.d.ts.map +1 -0
  74. package/dist/src/useDataGridColumnUiPolicy.js +55 -0
  75. package/dist/src/useDataGridContextMenu.d.ts +30 -0
  76. package/dist/src/useDataGridContextMenu.d.ts.map +1 -0
  77. package/dist/src/useDataGridContextMenu.js +147 -0
  78. package/dist/src/useDataGridContextMenuActionRouter.d.ts +19 -0
  79. package/dist/src/useDataGridContextMenuActionRouter.d.ts.map +1 -0
  80. package/dist/src/useDataGridContextMenuActionRouter.js +29 -0
  81. package/dist/src/useDataGridContextMenuAnchor.d.ts +33 -0
  82. package/dist/src/useDataGridContextMenuAnchor.d.ts.map +1 -0
  83. package/dist/src/useDataGridContextMenuAnchor.js +60 -0
  84. package/dist/src/useDataGridCopyRangeHelpers.d.ts +20 -0
  85. package/dist/src/useDataGridCopyRangeHelpers.d.ts.map +1 -0
  86. package/dist/src/useDataGridCopyRangeHelpers.js +28 -0
  87. package/dist/src/useDataGridDragPointerSelection.d.ts +22 -0
  88. package/dist/src/useDataGridDragPointerSelection.d.ts.map +1 -0
  89. package/dist/src/useDataGridDragPointerSelection.js +23 -0
  90. package/dist/src/useDataGridDragSelectionLifecycle.d.ts +18 -0
  91. package/dist/src/useDataGridDragSelectionLifecycle.d.ts.map +1 -0
  92. package/dist/src/useDataGridDragSelectionLifecycle.js +11 -0
  93. package/dist/src/useDataGridEditableValuePolicy.d.ts +32 -0
  94. package/dist/src/useDataGridEditableValuePolicy.d.ts.map +1 -0
  95. package/dist/src/useDataGridEditableValuePolicy.js +95 -0
  96. package/dist/src/useDataGridEnumTrigger.d.ts +17 -0
  97. package/dist/src/useDataGridEnumTrigger.d.ts.map +1 -0
  98. package/dist/src/useDataGridEnumTrigger.js +28 -0
  99. package/dist/src/useDataGridFillHandleStart.d.ts +30 -0
  100. package/dist/src/useDataGridFillHandleStart.d.ts.map +1 -0
  101. package/dist/src/useDataGridFillHandleStart.js +27 -0
  102. package/dist/src/useDataGridFillSelectionLifecycle.d.ts +24 -0
  103. package/dist/src/useDataGridFillSelectionLifecycle.d.ts.map +1 -0
  104. package/dist/src/useDataGridFillSelectionLifecycle.js +15 -0
  105. package/dist/src/useDataGridGlobalMouseDownContextMenuCloser.d.ts +10 -0
  106. package/dist/src/useDataGridGlobalMouseDownContextMenuCloser.d.ts.map +1 -0
  107. package/dist/src/useDataGridGlobalMouseDownContextMenuCloser.js +17 -0
  108. package/dist/src/useDataGridGlobalPointerLifecycle.d.ts +40 -0
  109. package/dist/src/useDataGridGlobalPointerLifecycle.d.ts.map +1 -0
  110. package/dist/src/useDataGridGlobalPointerLifecycle.js +153 -0
  111. package/dist/src/useDataGridGroupBadge.d.ts +13 -0
  112. package/dist/src/useDataGridGroupBadge.d.ts.map +1 -0
  113. package/dist/src/useDataGridGroupBadge.js +19 -0
  114. package/dist/src/useDataGridGroupMetaOrchestration.d.ts +18 -0
  115. package/dist/src/useDataGridGroupMetaOrchestration.d.ts.map +1 -0
  116. package/dist/src/useDataGridGroupMetaOrchestration.js +43 -0
  117. package/dist/src/useDataGridGroupValueLabelResolver.d.ts +10 -0
  118. package/dist/src/useDataGridGroupValueLabelResolver.d.ts.map +1 -0
  119. package/dist/src/useDataGridGroupValueLabelResolver.js +15 -0
  120. package/dist/src/useDataGridGroupingSortOrchestration.d.ts +13 -0
  121. package/dist/src/useDataGridGroupingSortOrchestration.d.ts.map +1 -0
  122. package/dist/src/useDataGridGroupingSortOrchestration.js +22 -0
  123. package/dist/src/useDataGridHeaderContextActions.d.ts +15 -0
  124. package/dist/src/useDataGridHeaderContextActions.d.ts.map +1 -0
  125. package/dist/src/useDataGridHeaderContextActions.js +41 -0
  126. package/dist/src/useDataGridHeaderInteractionRouter.d.ts +12 -0
  127. package/dist/src/useDataGridHeaderInteractionRouter.d.ts.map +1 -0
  128. package/dist/src/useDataGridHeaderInteractionRouter.js +35 -0
  129. package/dist/src/useDataGridHeaderLayerOrchestration.d.ts +13 -0
  130. package/dist/src/useDataGridHeaderLayerOrchestration.d.ts.map +1 -0
  131. package/dist/src/useDataGridHeaderLayerOrchestration.js +18 -0
  132. package/dist/src/useDataGridHeaderResizeOrchestration.d.ts +43 -0
  133. package/dist/src/useDataGridHeaderResizeOrchestration.d.ts.map +1 -0
  134. package/dist/src/useDataGridHeaderResizeOrchestration.js +180 -0
  135. package/dist/src/useDataGridHeaderSortOrchestration.d.ts +20 -0
  136. package/dist/src/useDataGridHeaderSortOrchestration.d.ts.map +1 -0
  137. package/dist/src/useDataGridHeaderSortOrchestration.js +86 -0
  138. package/dist/src/useDataGridHistoryActionRunner.d.ts +15 -0
  139. package/dist/src/useDataGridHistoryActionRunner.d.ts.map +1 -0
  140. package/dist/src/useDataGridHistoryActionRunner.js +35 -0
  141. package/dist/src/useDataGridInlineEditOrchestration.d.ts +46 -0
  142. package/dist/src/useDataGridInlineEditOrchestration.d.ts.map +1 -0
  143. package/dist/src/useDataGridInlineEditOrchestration.js +116 -0
  144. package/dist/src/useDataGridInlineEditorFocus.d.ts +9 -0
  145. package/dist/src/useDataGridInlineEditorFocus.d.ts.map +1 -0
  146. package/dist/src/useDataGridInlineEditorFocus.js +37 -0
  147. package/dist/src/useDataGridInlineEditorKeyRouter.d.ts +12 -0
  148. package/dist/src/useDataGridInlineEditorKeyRouter.d.ts.map +1 -0
  149. package/dist/src/useDataGridInlineEditorKeyRouter.js +31 -0
  150. package/dist/src/useDataGridInlineEditorSchema.d.ts +11 -0
  151. package/dist/src/useDataGridInlineEditorSchema.d.ts.map +1 -0
  152. package/dist/src/useDataGridInlineEditorSchema.js +26 -0
  153. package/dist/src/useDataGridInlineEditorTargetNavigation.d.ts +30 -0
  154. package/dist/src/useDataGridInlineEditorTargetNavigation.d.ts.map +1 -0
  155. package/dist/src/useDataGridInlineEditorTargetNavigation.js +66 -0
  156. package/dist/src/useDataGridIntentHistory.d.ts +25 -0
  157. package/dist/src/useDataGridIntentHistory.d.ts.map +1 -0
  158. package/dist/src/useDataGridIntentHistory.js +109 -0
  159. package/dist/src/useDataGridKeyboardCommandRouter.d.ts +18 -0
  160. package/dist/src/useDataGridKeyboardCommandRouter.d.ts.map +1 -0
  161. package/dist/src/useDataGridKeyboardCommandRouter.js +81 -0
  162. package/dist/src/useDataGridMoveMutationPolicy.d.ts +12 -0
  163. package/dist/src/useDataGridMoveMutationPolicy.d.ts.map +1 -0
  164. package/dist/src/useDataGridMoveMutationPolicy.js +81 -0
  165. package/dist/src/useDataGridMutationSnapshot.d.ts +46 -0
  166. package/dist/src/useDataGridMutationSnapshot.d.ts.map +1 -0
  167. package/dist/src/useDataGridMutationSnapshot.js +57 -0
  168. package/dist/src/useDataGridNavigationPrimitives.d.ts +42 -0
  169. package/dist/src/useDataGridNavigationPrimitives.d.ts.map +1 -0
  170. package/dist/src/useDataGridNavigationPrimitives.js +105 -0
  171. package/dist/src/useDataGridPointerAutoScroll.d.ts +32 -0
  172. package/dist/src/useDataGridPointerAutoScroll.d.ts.map +1 -0
  173. package/dist/src/useDataGridPointerAutoScroll.js +85 -0
  174. package/dist/src/useDataGridPointerCellCoordResolver.d.ts +45 -0
  175. package/dist/src/useDataGridPointerCellCoordResolver.d.ts.map +1 -0
  176. package/dist/src/useDataGridPointerCellCoordResolver.js +107 -0
  177. package/dist/src/useDataGridPointerModifierPolicy.d.ts +5 -0
  178. package/dist/src/useDataGridPointerModifierPolicy.d.ts.map +1 -0
  179. package/dist/src/useDataGridPointerModifierPolicy.js +8 -0
  180. package/dist/src/useDataGridPointerPreviewRouter.d.ts +37 -0
  181. package/dist/src/useDataGridPointerPreviewRouter.d.ts.map +1 -0
  182. package/dist/src/useDataGridPointerPreviewRouter.js +55 -0
  183. package/dist/src/useDataGridQuickFilterActions.d.ts +10 -0
  184. package/dist/src/useDataGridQuickFilterActions.d.ts.map +1 -0
  185. package/dist/src/useDataGridQuickFilterActions.js +12 -0
  186. package/dist/src/useDataGridRangeMoveLifecycle.d.ts +15 -0
  187. package/dist/src/useDataGridRangeMoveLifecycle.d.ts.map +1 -0
  188. package/dist/src/useDataGridRangeMoveLifecycle.js +21 -0
  189. package/dist/src/useDataGridRangeMoveStart.d.ts +34 -0
  190. package/dist/src/useDataGridRangeMoveStart.d.ts.map +1 -0
  191. package/dist/src/useDataGridRangeMoveStart.js +23 -0
  192. package/dist/src/useDataGridRangeMutationEngine.d.ts +44 -0
  193. package/dist/src/useDataGridRangeMutationEngine.d.ts.map +1 -0
  194. package/dist/src/useDataGridRangeMutationEngine.js +210 -0
  195. package/dist/src/useDataGridRowSelectionInputHandlers.d.ts +10 -0
  196. package/dist/src/useDataGridRowSelectionInputHandlers.d.ts.map +1 -0
  197. package/dist/src/useDataGridRowSelectionInputHandlers.js +12 -0
  198. package/dist/src/useDataGridRowSelectionOrchestration.d.ts +7 -0
  199. package/dist/src/useDataGridRowSelectionOrchestration.d.ts.map +1 -0
  200. package/dist/src/useDataGridRowSelectionOrchestration.js +60 -0
  201. package/dist/src/useDataGridRowsProjection.d.ts +21 -0
  202. package/dist/src/useDataGridRowsProjection.d.ts.map +1 -0
  203. package/dist/src/useDataGridRowsProjection.js +69 -0
  204. package/dist/src/useDataGridRuntimeService.d.ts +33 -0
  205. package/dist/src/useDataGridRuntimeService.d.ts.map +1 -0
  206. package/dist/src/useDataGridRuntimeService.js +209 -0
  207. package/dist/src/useDataGridSelectionComparators.d.ts +16 -0
  208. package/dist/src/useDataGridSelectionComparators.d.ts.map +1 -0
  209. package/dist/src/useDataGridSelectionComparators.js +21 -0
  210. package/dist/src/useDataGridSelectionMoveHandle.d.ts +38 -0
  211. package/dist/src/useDataGridSelectionMoveHandle.d.ts.map +1 -0
  212. package/dist/src/useDataGridSelectionMoveHandle.js +49 -0
  213. package/dist/src/useDataGridSelectionOverlayOrchestration.d.ts +60 -0
  214. package/dist/src/useDataGridSelectionOverlayOrchestration.d.ts.map +1 -0
  215. package/dist/src/useDataGridSelectionOverlayOrchestration.js +137 -0
  216. package/dist/src/useDataGridTabTargetResolver.d.ts +17 -0
  217. package/dist/src/useDataGridTabTargetResolver.d.ts.map +1 -0
  218. package/dist/src/useDataGridTabTargetResolver.js +30 -0
  219. package/dist/src/useDataGridViewportBlurHandler.d.ts +16 -0
  220. package/dist/src/useDataGridViewportBlurHandler.d.ts.map +1 -0
  221. package/dist/src/useDataGridViewportBlurHandler.js +62 -0
  222. package/dist/src/useDataGridViewportContextMenuRouter.d.ts +31 -0
  223. package/dist/src/useDataGridViewportContextMenuRouter.d.ts.map +1 -0
  224. package/dist/src/useDataGridViewportContextMenuRouter.js +78 -0
  225. package/dist/src/useDataGridViewportMeasureScheduler.d.ts +22 -0
  226. package/dist/src/useDataGridViewportMeasureScheduler.d.ts.map +1 -0
  227. package/dist/src/useDataGridViewportMeasureScheduler.js +65 -0
  228. package/dist/src/useDataGridViewportScrollLifecycle.d.ts +16 -0
  229. package/dist/src/useDataGridViewportScrollLifecycle.d.ts.map +1 -0
  230. package/dist/src/useDataGridViewportScrollLifecycle.js +28 -0
  231. package/dist/src/useDataGridVirtualRangeMetrics.d.ts +32 -0
  232. package/dist/src/useDataGridVirtualRangeMetrics.d.ts.map +1 -0
  233. package/dist/src/useDataGridVirtualRangeMetrics.js +26 -0
  234. package/dist/src/useDataGridVisibleRowsSyncScheduler.d.ts +21 -0
  235. package/dist/src/useDataGridVisibleRowsSyncScheduler.d.ts.map +1 -0
  236. package/dist/src/useDataGridVisibleRowsSyncScheduler.js +70 -0
  237. package/dist/tsconfig.public.tsbuildinfo +1 -0
  238. package/dist/tsconfig.tsbuildinfo +1 -0
  239. package/package.json +50 -0
@@ -0,0 +1,16 @@
1
+ export interface DataGridDatasetCellCoord {
2
+ rowIndex: number;
3
+ columnIndex: number;
4
+ }
5
+ export interface UseDataGridCellDatasetResolverOptions<TRow, TCoord extends DataGridDatasetCellCoord = DataGridDatasetCellCoord> {
6
+ resolveRows: () => readonly TRow[];
7
+ resolveRowId: (row: TRow) => string;
8
+ resolveColumnIndex: (columnKey: string) => number;
9
+ normalizeCellCoord: (coord: TCoord) => TCoord | null;
10
+ }
11
+ export interface UseDataGridCellDatasetResolverResult<TCoord extends DataGridDatasetCellCoord = DataGridDatasetCellCoord> {
12
+ resolveRowIndexById: (rowId: string) => number;
13
+ resolveCellCoordFromDataset: (rowId: string, columnKey: string) => TCoord | null;
14
+ }
15
+ export declare function useDataGridCellDatasetResolver<TRow, TCoord extends DataGridDatasetCellCoord = DataGridDatasetCellCoord>(options: UseDataGridCellDatasetResolverOptions<TRow, TCoord>): UseDataGridCellDatasetResolverResult<TCoord>;
16
+ //# sourceMappingURL=useDataGridCellDatasetResolver.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useDataGridCellDatasetResolver.d.ts","sourceRoot":"","sources":["../../src/useDataGridCellDatasetResolver.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,wBAAwB;IACvC,QAAQ,EAAE,MAAM,CAAA;IAChB,WAAW,EAAE,MAAM,CAAA;CACpB;AAED,MAAM,WAAW,qCAAqC,CACpD,IAAI,EACJ,MAAM,SAAS,wBAAwB,GAAG,wBAAwB;IAElE,WAAW,EAAE,MAAM,SAAS,IAAI,EAAE,CAAA;IAClC,YAAY,EAAE,CAAC,GAAG,EAAE,IAAI,KAAK,MAAM,CAAA;IACnC,kBAAkB,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,MAAM,CAAA;IACjD,kBAAkB,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,MAAM,GAAG,IAAI,CAAA;CACrD;AAED,MAAM,WAAW,oCAAoC,CACnD,MAAM,SAAS,wBAAwB,GAAG,wBAAwB;IAElE,mBAAmB,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,MAAM,CAAA;IAC9C,2BAA2B,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,KAAK,MAAM,GAAG,IAAI,CAAA;CACjF;AAED,wBAAgB,8BAA8B,CAC5C,IAAI,EACJ,MAAM,SAAS,wBAAwB,GAAG,wBAAwB,EAElE,OAAO,EAAE,qCAAqC,CAAC,IAAI,EAAE,MAAM,CAAC,GAC3D,oCAAoC,CAAC,MAAM,CAAC,CAwB9C"}
@@ -0,0 +1,23 @@
1
+ export function useDataGridCellDatasetResolver(options) {
2
+ function resolveRowIndexById(rowId) {
3
+ return options.resolveRows().findIndex(row => String(options.resolveRowId(row)) === rowId);
4
+ }
5
+ function resolveCellCoordFromDataset(rowId, columnKey) {
6
+ const rowIndex = resolveRowIndexById(rowId);
7
+ if (rowIndex < 0) {
8
+ return null;
9
+ }
10
+ const columnIndex = options.resolveColumnIndex(columnKey);
11
+ if (columnIndex < 0) {
12
+ return null;
13
+ }
14
+ return options.normalizeCellCoord({
15
+ rowIndex,
16
+ columnIndex,
17
+ });
18
+ }
19
+ return {
20
+ resolveRowIndexById,
21
+ resolveCellCoordFromDataset,
22
+ };
23
+ }
@@ -0,0 +1,23 @@
1
+ export interface DataGridNavigationCellCoord {
2
+ rowIndex: number;
3
+ columnIndex: number;
4
+ }
5
+ export interface UseDataGridCellNavigationOptions<TCoord extends DataGridNavigationCellCoord = DataGridNavigationCellCoord> {
6
+ resolveCurrentCellCoord: () => TCoord | null;
7
+ resolveTabTarget: (current: TCoord, backwards: boolean) => TCoord | null;
8
+ normalizeCellCoord: (coord: TCoord) => TCoord | null;
9
+ getAdjacentNavigableColumnIndex: (columnIndex: number, direction: 1 | -1) => number;
10
+ getFirstNavigableColumnIndex: () => number;
11
+ getLastNavigableColumnIndex: () => number;
12
+ getLastRowIndex: () => number;
13
+ resolveStepRows: () => number;
14
+ closeContextMenu: () => void;
15
+ clearCellSelection: () => void;
16
+ setLastAction: (message: string) => void;
17
+ applyCellSelection: (nextCoord: TCoord, extend: boolean, fallbackAnchor?: TCoord) => void;
18
+ }
19
+ export interface UseDataGridCellNavigationResult {
20
+ dispatchNavigation: (event: KeyboardEvent) => boolean;
21
+ }
22
+ export declare function useDataGridCellNavigation<TCoord extends DataGridNavigationCellCoord = DataGridNavigationCellCoord>(options: UseDataGridCellNavigationOptions<TCoord>): UseDataGridCellNavigationResult;
23
+ //# sourceMappingURL=useDataGridCellNavigation.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useDataGridCellNavigation.d.ts","sourceRoot":"","sources":["../../src/useDataGridCellNavigation.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,2BAA2B;IAC1C,QAAQ,EAAE,MAAM,CAAA;IAChB,WAAW,EAAE,MAAM,CAAA;CACpB;AAED,MAAM,WAAW,gCAAgC,CAC/C,MAAM,SAAS,2BAA2B,GAAG,2BAA2B;IAExE,uBAAuB,EAAE,MAAM,MAAM,GAAG,IAAI,CAAA;IAC5C,gBAAgB,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,OAAO,KAAK,MAAM,GAAG,IAAI,CAAA;IACxE,kBAAkB,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,MAAM,GAAG,IAAI,CAAA;IACpD,+BAA+B,EAAE,CAAC,WAAW,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC,GAAG,CAAC,CAAC,KAAK,MAAM,CAAA;IACnF,4BAA4B,EAAE,MAAM,MAAM,CAAA;IAC1C,2BAA2B,EAAE,MAAM,MAAM,CAAA;IACzC,eAAe,EAAE,MAAM,MAAM,CAAA;IAC7B,eAAe,EAAE,MAAM,MAAM,CAAA;IAC7B,gBAAgB,EAAE,MAAM,IAAI,CAAA;IAC5B,kBAAkB,EAAE,MAAM,IAAI,CAAA;IAC9B,aAAa,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAA;IACxC,kBAAkB,EAAE,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,cAAc,CAAC,EAAE,MAAM,KAAK,IAAI,CAAA;CAC1F;AAED,MAAM,WAAW,+BAA+B;IAC9C,kBAAkB,EAAE,CAAC,KAAK,EAAE,aAAa,KAAK,OAAO,CAAA;CACtD;AA6BD,wBAAgB,yBAAyB,CACvC,MAAM,SAAS,2BAA2B,GAAG,2BAA2B,EAExE,OAAO,EAAE,gCAAgC,CAAC,MAAM,CAAC,GAChD,+BAA+B,CAuFjC"}
@@ -0,0 +1,111 @@
1
+ function prevent(event) {
2
+ event.preventDefault();
3
+ }
4
+ function resolveNavigationKey(event) {
5
+ if (event.code === "ArrowUp" || event.code === "ArrowDown" || event.code === "ArrowLeft" || event.code === "ArrowRight") {
6
+ return event.code;
7
+ }
8
+ // Some environments report ArrowUp/ArrowDown combos as PageUp/PageDown while
9
+ // preserving Arrow* code. Prefer the physical key in that case.
10
+ if (event.key === "PageDown" && event.code === "ArrowDown") {
11
+ return "ArrowDown";
12
+ }
13
+ if (event.key === "PageUp" && event.code === "ArrowUp") {
14
+ return "ArrowUp";
15
+ }
16
+ // Playwright/WebKit on macOS can occasionally emit Shift+Arrow as PageUp/PageDown
17
+ // without Arrow* codes. Preserve expected single-row extension semantics.
18
+ if (event.key === "PageDown" && event.shiftKey && !event.ctrlKey && !event.metaKey && !event.altKey) {
19
+ return "ArrowDown";
20
+ }
21
+ if (event.key === "PageUp" && event.shiftKey && !event.ctrlKey && !event.metaKey && !event.altKey) {
22
+ return "ArrowUp";
23
+ }
24
+ return event.key;
25
+ }
26
+ export function useDataGridCellNavigation(options) {
27
+ function dispatchNavigation(event) {
28
+ const current = options.resolveCurrentCellCoord();
29
+ if (!current) {
30
+ return false;
31
+ }
32
+ let target = { ...current };
33
+ let extend = event.shiftKey;
34
+ const stepRows = Math.max(1, options.resolveStepRows());
35
+ const key = resolveNavigationKey(event);
36
+ switch (key) {
37
+ case "ArrowUp":
38
+ target.rowIndex -= 1;
39
+ break;
40
+ case "ArrowDown":
41
+ target.rowIndex += 1;
42
+ break;
43
+ case "ArrowLeft":
44
+ target.columnIndex = options.getAdjacentNavigableColumnIndex(current.columnIndex, -1);
45
+ break;
46
+ case "ArrowRight":
47
+ target.columnIndex = options.getAdjacentNavigableColumnIndex(current.columnIndex, 1);
48
+ break;
49
+ case "PageUp":
50
+ target.rowIndex -= stepRows;
51
+ break;
52
+ case "PageDown":
53
+ target.rowIndex += stepRows;
54
+ break;
55
+ case "Home":
56
+ if (event.ctrlKey || event.metaKey) {
57
+ target = {
58
+ rowIndex: 0,
59
+ columnIndex: options.getFirstNavigableColumnIndex(),
60
+ };
61
+ }
62
+ else {
63
+ target.columnIndex = options.getFirstNavigableColumnIndex();
64
+ }
65
+ break;
66
+ case "End":
67
+ if (event.ctrlKey || event.metaKey) {
68
+ target = {
69
+ rowIndex: options.getLastRowIndex(),
70
+ columnIndex: options.getLastNavigableColumnIndex(),
71
+ };
72
+ }
73
+ else {
74
+ target.columnIndex = options.getLastNavigableColumnIndex();
75
+ }
76
+ break;
77
+ case "Tab":
78
+ {
79
+ const nextTab = options.resolveTabTarget(current, event.shiftKey);
80
+ if (!nextTab) {
81
+ return true;
82
+ }
83
+ target = nextTab;
84
+ }
85
+ extend = false;
86
+ break;
87
+ case "Enter":
88
+ target.rowIndex += event.shiftKey ? -1 : 1;
89
+ extend = false;
90
+ break;
91
+ case "Escape":
92
+ prevent(event);
93
+ options.closeContextMenu();
94
+ options.clearCellSelection();
95
+ options.setLastAction("Cleared cell selection");
96
+ return true;
97
+ default:
98
+ return false;
99
+ }
100
+ const normalized = options.normalizeCellCoord(target);
101
+ if (!normalized) {
102
+ return true;
103
+ }
104
+ prevent(event);
105
+ options.applyCellSelection(normalized, extend, current);
106
+ return true;
107
+ }
108
+ return {
109
+ dispatchNavigation,
110
+ };
111
+ }
@@ -0,0 +1,42 @@
1
+ export interface DataGridCellPointerCoord {
2
+ rowIndex: number;
3
+ columnIndex: number;
4
+ }
5
+ export interface DataGridCellPointerRange {
6
+ startRow: number;
7
+ endRow: number;
8
+ startColumn: number;
9
+ endColumn: number;
10
+ }
11
+ export interface UseDataGridCellPointerDownRouterOptions<TRow, TCoord extends DataGridCellPointerCoord = DataGridCellPointerCoord, TRange extends DataGridCellPointerRange = DataGridCellPointerRange> {
12
+ isSelectionColumn: (columnKey: string) => boolean;
13
+ isRangeMoveModifierActive: (event: MouseEvent) => boolean;
14
+ isEditorInteractionTarget: (target: HTMLElement | null) => boolean;
15
+ hasInlineEditor: () => boolean;
16
+ commitInlineEdit: () => boolean;
17
+ resolveCellCoord: (row: TRow, columnKey: string) => TCoord | null;
18
+ resolveSelectionRange: () => TRange | null;
19
+ isCoordInsideRange: (coord: TCoord, range: TRange) => boolean;
20
+ startRangeMove: (coord: TCoord, pointer: {
21
+ clientX: number;
22
+ clientY: number;
23
+ }) => void;
24
+ closeContextMenu: () => void;
25
+ focusViewport: () => void;
26
+ isFillDragging: () => boolean;
27
+ stopFillSelection: (commit: boolean) => void;
28
+ setDragSelecting: (value: boolean) => void;
29
+ setLastDragCoord: (coord: TCoord) => void;
30
+ setDragPointer: (pointer: {
31
+ clientX: number;
32
+ clientY: number;
33
+ }) => void;
34
+ applyCellSelection: (coord: TCoord, extend: boolean, fallbackAnchor?: TCoord) => void;
35
+ startInteractionAutoScroll: () => void;
36
+ setLastAction: (message: string) => void;
37
+ }
38
+ export interface UseDataGridCellPointerDownRouterResult<TRow> {
39
+ dispatchCellPointerDown: (row: TRow, columnKey: string, event: MouseEvent) => boolean;
40
+ }
41
+ export declare function useDataGridCellPointerDownRouter<TRow, TCoord extends DataGridCellPointerCoord = DataGridCellPointerCoord, TRange extends DataGridCellPointerRange = DataGridCellPointerRange>(options: UseDataGridCellPointerDownRouterOptions<TRow, TCoord, TRange>): UseDataGridCellPointerDownRouterResult<TRow>;
42
+ //# sourceMappingURL=useDataGridCellPointerDownRouter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useDataGridCellPointerDownRouter.d.ts","sourceRoot":"","sources":["../../src/useDataGridCellPointerDownRouter.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,wBAAwB;IACvC,QAAQ,EAAE,MAAM,CAAA;IAChB,WAAW,EAAE,MAAM,CAAA;CACpB;AAED,MAAM,WAAW,wBAAwB;IACvC,QAAQ,EAAE,MAAM,CAAA;IAChB,MAAM,EAAE,MAAM,CAAA;IACd,WAAW,EAAE,MAAM,CAAA;IACnB,SAAS,EAAE,MAAM,CAAA;CAClB;AAED,MAAM,WAAW,uCAAuC,CACtD,IAAI,EACJ,MAAM,SAAS,wBAAwB,GAAG,wBAAwB,EAClE,MAAM,SAAS,wBAAwB,GAAG,wBAAwB;IAElE,iBAAiB,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,OAAO,CAAA;IACjD,yBAAyB,EAAE,CAAC,KAAK,EAAE,UAAU,KAAK,OAAO,CAAA;IACzD,yBAAyB,EAAE,CAAC,MAAM,EAAE,WAAW,GAAG,IAAI,KAAK,OAAO,CAAA;IAClE,eAAe,EAAE,MAAM,OAAO,CAAA;IAC9B,gBAAgB,EAAE,MAAM,OAAO,CAAA;IAC/B,gBAAgB,EAAE,CAAC,GAAG,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,KAAK,MAAM,GAAG,IAAI,CAAA;IACjE,qBAAqB,EAAE,MAAM,MAAM,GAAG,IAAI,CAAA;IAC1C,kBAAkB,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,KAAK,OAAO,CAAA;IAC7D,cAAc,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,KAAK,IAAI,CAAA;IACtF,gBAAgB,EAAE,MAAM,IAAI,CAAA;IAC5B,aAAa,EAAE,MAAM,IAAI,CAAA;IACzB,cAAc,EAAE,MAAM,OAAO,CAAA;IAC7B,iBAAiB,EAAE,CAAC,MAAM,EAAE,OAAO,KAAK,IAAI,CAAA;IAC5C,gBAAgB,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,IAAI,CAAA;IAC1C,gBAAgB,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAA;IACzC,cAAc,EAAE,CAAC,OAAO,EAAE;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,KAAK,IAAI,CAAA;IACvE,kBAAkB,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,cAAc,CAAC,EAAE,MAAM,KAAK,IAAI,CAAA;IACrF,0BAA0B,EAAE,MAAM,IAAI,CAAA;IACtC,aAAa,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAA;CACzC;AAED,MAAM,WAAW,sCAAsC,CACrD,IAAI;IAEJ,uBAAuB,EAAE,CAAC,GAAG,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,UAAU,KAAK,OAAO,CAAA;CACtF;AAED,wBAAgB,gCAAgC,CAC9C,IAAI,EACJ,MAAM,SAAS,wBAAwB,GAAG,wBAAwB,EAClE,MAAM,SAAS,wBAAwB,GAAG,wBAAwB,EAElE,OAAO,EAAE,uCAAuC,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,GACrE,sCAAsC,CAAC,IAAI,CAAC,CA6D9C"}
@@ -0,0 +1,48 @@
1
+ export function useDataGridCellPointerDownRouter(options) {
2
+ function dispatchCellPointerDown(row, columnKey, event) {
3
+ if (options.isSelectionColumn(columnKey)) {
4
+ return false;
5
+ }
6
+ const allowModifierSecondaryButton = options.isRangeMoveModifierActive(event) && event.button === 2;
7
+ if (event.button !== 0 && !allowModifierSecondaryButton) {
8
+ return false;
9
+ }
10
+ const targetNode = event.target;
11
+ if (options.isEditorInteractionTarget(targetNode)) {
12
+ return false;
13
+ }
14
+ if (options.hasInlineEditor()) {
15
+ options.commitInlineEdit();
16
+ }
17
+ const coord = options.resolveCellCoord(row, columnKey);
18
+ if (!coord) {
19
+ return false;
20
+ }
21
+ const currentRange = options.resolveSelectionRange();
22
+ if (options.isRangeMoveModifierActive(event) &&
23
+ currentRange &&
24
+ options.isCoordInsideRange(coord, currentRange)) {
25
+ event.preventDefault();
26
+ options.startRangeMove(coord, { clientX: event.clientX, clientY: event.clientY });
27
+ return true;
28
+ }
29
+ event.preventDefault();
30
+ options.closeContextMenu();
31
+ options.focusViewport();
32
+ if (options.isFillDragging()) {
33
+ options.stopFillSelection(false);
34
+ }
35
+ options.setDragSelecting(true);
36
+ options.setLastDragCoord(coord);
37
+ options.setDragPointer({ clientX: event.clientX, clientY: event.clientY });
38
+ options.applyCellSelection(coord, event.shiftKey, coord);
39
+ options.startInteractionAutoScroll();
40
+ options.setLastAction(event.shiftKey
41
+ ? `Extended selection to R${coord.rowIndex + 1} · ${columnKey}`
42
+ : `Anchor set: R${coord.rowIndex + 1} · ${columnKey}`);
43
+ return true;
44
+ }
45
+ return {
46
+ dispatchCellPointerDown,
47
+ };
48
+ }
@@ -0,0 +1,24 @@
1
+ export interface DataGridCellPointerHoverCoord {
2
+ rowIndex: number;
3
+ columnIndex: number;
4
+ }
5
+ export interface UseDataGridCellPointerHoverRouterOptions<TRow, TCoord extends DataGridCellPointerHoverCoord = DataGridCellPointerHoverCoord> {
6
+ isPrimaryPointerPressed?: (event: MouseEvent) => boolean;
7
+ hasInlineEditor: () => boolean;
8
+ isDragSelecting: () => boolean;
9
+ isSelectionColumn: (columnKey: string) => boolean;
10
+ resolveCellCoord: (row: TRow, columnKey: string) => TCoord | null;
11
+ resolveLastDragCoord: () => TCoord | null;
12
+ setLastDragCoord: (coord: TCoord) => void;
13
+ cellCoordsEqual: (a: TCoord | null, b: TCoord | null) => boolean;
14
+ setDragPointer: (pointer: {
15
+ clientX: number;
16
+ clientY: number;
17
+ }) => void;
18
+ applyCellSelection: (coord: TCoord, extend: boolean, fallbackAnchor?: TCoord, ensureVisible?: boolean) => void;
19
+ }
20
+ export interface UseDataGridCellPointerHoverRouterResult<TRow> {
21
+ dispatchCellPointerEnter: (row: TRow, columnKey: string, event: MouseEvent) => boolean;
22
+ }
23
+ export declare function useDataGridCellPointerHoverRouter<TRow, TCoord extends DataGridCellPointerHoverCoord = DataGridCellPointerHoverCoord>(options: UseDataGridCellPointerHoverRouterOptions<TRow, TCoord>): UseDataGridCellPointerHoverRouterResult<TRow>;
24
+ //# sourceMappingURL=useDataGridCellPointerHoverRouter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useDataGridCellPointerHoverRouter.d.ts","sourceRoot":"","sources":["../../src/useDataGridCellPointerHoverRouter.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,6BAA6B;IAC5C,QAAQ,EAAE,MAAM,CAAA;IAChB,WAAW,EAAE,MAAM,CAAA;CACpB;AAED,MAAM,WAAW,wCAAwC,CACvD,IAAI,EACJ,MAAM,SAAS,6BAA6B,GAAG,6BAA6B;IAE5E,uBAAuB,CAAC,EAAE,CAAC,KAAK,EAAE,UAAU,KAAK,OAAO,CAAA;IACxD,eAAe,EAAE,MAAM,OAAO,CAAA;IAC9B,eAAe,EAAE,MAAM,OAAO,CAAA;IAC9B,iBAAiB,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,OAAO,CAAA;IACjD,gBAAgB,EAAE,CAAC,GAAG,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,KAAK,MAAM,GAAG,IAAI,CAAA;IACjE,oBAAoB,EAAE,MAAM,MAAM,GAAG,IAAI,CAAA;IACzC,gBAAgB,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAA;IACzC,eAAe,EAAE,CAAC,CAAC,EAAE,MAAM,GAAG,IAAI,EAAE,CAAC,EAAE,MAAM,GAAG,IAAI,KAAK,OAAO,CAAA;IAChE,cAAc,EAAE,CAAC,OAAO,EAAE;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,KAAK,IAAI,CAAA;IACvE,kBAAkB,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,cAAc,CAAC,EAAE,MAAM,EAAE,aAAa,CAAC,EAAE,OAAO,KAAK,IAAI,CAAA;CAC/G;AAED,MAAM,WAAW,uCAAuC,CACtD,IAAI;IAEJ,wBAAwB,EAAE,CAAC,GAAG,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,UAAU,KAAK,OAAO,CAAA;CACvF;AAED,wBAAgB,iCAAiC,CAC/C,IAAI,EACJ,MAAM,SAAS,6BAA6B,GAAG,6BAA6B,EAE5E,OAAO,EAAE,wCAAwC,CAAC,IAAI,EAAE,MAAM,CAAC,GAC9D,uCAAuC,CAAC,IAAI,CAAC,CA4B/C"}
@@ -0,0 +1,25 @@
1
+ export function useDataGridCellPointerHoverRouter(options) {
2
+ const isPrimaryPointerPressed = options.isPrimaryPointerPressed ?? ((event) => (event.buttons & 1) === 1);
3
+ function dispatchCellPointerEnter(row, columnKey, event) {
4
+ if (options.hasInlineEditor() || !options.isDragSelecting() || options.isSelectionColumn(columnKey)) {
5
+ return false;
6
+ }
7
+ if (!isPrimaryPointerPressed(event)) {
8
+ return false;
9
+ }
10
+ const coord = options.resolveCellCoord(row, columnKey);
11
+ if (!coord) {
12
+ return false;
13
+ }
14
+ if (options.cellCoordsEqual(options.resolveLastDragCoord(), coord)) {
15
+ return false;
16
+ }
17
+ options.setLastDragCoord(coord);
18
+ options.setDragPointer({ clientX: event.clientX, clientY: event.clientY });
19
+ options.applyCellSelection(coord, true, undefined, false);
20
+ return true;
21
+ }
22
+ return {
23
+ dispatchCellPointerEnter,
24
+ };
25
+ }
@@ -0,0 +1,30 @@
1
+ export interface DataGridCellRangeCoord {
2
+ rowIndex: number;
3
+ columnIndex: number;
4
+ }
5
+ export interface DataGridCellRange {
6
+ startRow: number;
7
+ endRow: number;
8
+ startColumn: number;
9
+ endColumn: number;
10
+ }
11
+ export interface UseDataGridCellRangeHelpersOptions<TRow, TCoord extends DataGridCellRangeCoord = DataGridCellRangeCoord, TRange extends DataGridCellRange = DataGridCellRange> {
12
+ resolveRowsLength: () => number;
13
+ resolveFirstNavigableColumnIndex: () => number;
14
+ resolveCandidateCurrentCell: () => TCoord | null;
15
+ resolveColumnIndex: (columnKey: string) => number;
16
+ resolveNearestNavigableColumnIndex: (columnIndex: number, direction?: 1 | -1) => number;
17
+ clampRowIndex: (rowIndex: number) => number;
18
+ resolveRowIndex: (row: TRow) => number;
19
+ isColumnSelectable?: (columnKey: string) => boolean;
20
+ }
21
+ export interface UseDataGridCellRangeHelpersResult<TRow, TCoord extends DataGridCellRangeCoord = DataGridCellRangeCoord, TRange extends DataGridCellRange = DataGridCellRange> {
22
+ resolveCellCoord: (row: TRow, columnKey: string) => TCoord | null;
23
+ normalizeCellCoord: (coord: TCoord) => TCoord | null;
24
+ normalizeSelectionRange: (range: TRange) => TRange | null;
25
+ buildExtendedRange: (baseRange: TRange, coord: TCoord) => TRange | null;
26
+ isCellWithinRange: (rowIndex: number, columnIndex: number, range: TRange) => boolean;
27
+ resolveCurrentCellCoord: () => TCoord | null;
28
+ }
29
+ export declare function useDataGridCellRangeHelpers<TRow, TCoord extends DataGridCellRangeCoord = DataGridCellRangeCoord, TRange extends DataGridCellRange = DataGridCellRange>(options: UseDataGridCellRangeHelpersOptions<TRow, TCoord, TRange>): UseDataGridCellRangeHelpersResult<TRow, TCoord, TRange>;
30
+ //# sourceMappingURL=useDataGridCellRangeHelpers.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useDataGridCellRangeHelpers.d.ts","sourceRoot":"","sources":["../../src/useDataGridCellRangeHelpers.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,sBAAsB;IACrC,QAAQ,EAAE,MAAM,CAAA;IAChB,WAAW,EAAE,MAAM,CAAA;CACpB;AAED,MAAM,WAAW,iBAAiB;IAChC,QAAQ,EAAE,MAAM,CAAA;IAChB,MAAM,EAAE,MAAM,CAAA;IACd,WAAW,EAAE,MAAM,CAAA;IACnB,SAAS,EAAE,MAAM,CAAA;CAClB;AAED,MAAM,WAAW,kCAAkC,CACjD,IAAI,EACJ,MAAM,SAAS,sBAAsB,GAAG,sBAAsB,EAC9D,MAAM,SAAS,iBAAiB,GAAG,iBAAiB;IAEpD,iBAAiB,EAAE,MAAM,MAAM,CAAA;IAC/B,gCAAgC,EAAE,MAAM,MAAM,CAAA;IAC9C,2BAA2B,EAAE,MAAM,MAAM,GAAG,IAAI,CAAA;IAChD,kBAAkB,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,MAAM,CAAA;IACjD,kCAAkC,EAAE,CAAC,WAAW,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,KAAK,MAAM,CAAA;IACvF,aAAa,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,MAAM,CAAA;IAC3C,eAAe,EAAE,CAAC,GAAG,EAAE,IAAI,KAAK,MAAM,CAAA;IACtC,kBAAkB,CAAC,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,OAAO,CAAA;CACpD;AAED,MAAM,WAAW,iCAAiC,CAChD,IAAI,EACJ,MAAM,SAAS,sBAAsB,GAAG,sBAAsB,EAC9D,MAAM,SAAS,iBAAiB,GAAG,iBAAiB;IAEpD,gBAAgB,EAAE,CAAC,GAAG,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,KAAK,MAAM,GAAG,IAAI,CAAA;IACjE,kBAAkB,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,MAAM,GAAG,IAAI,CAAA;IACpD,uBAAuB,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,MAAM,GAAG,IAAI,CAAA;IACzD,kBAAkB,EAAE,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,KAAK,MAAM,GAAG,IAAI,CAAA;IACvE,iBAAiB,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,KAAK,OAAO,CAAA;IACpF,uBAAuB,EAAE,MAAM,MAAM,GAAG,IAAI,CAAA;CAC7C;AAED,wBAAgB,2BAA2B,CACzC,IAAI,EACJ,MAAM,SAAS,sBAAsB,GAAG,sBAAsB,EAC9D,MAAM,SAAS,iBAAiB,GAAG,iBAAiB,EAEpD,OAAO,EAAE,kCAAkC,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,GAChE,iCAAiC,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,CAiGzD"}
@@ -0,0 +1,89 @@
1
+ export function useDataGridCellRangeHelpers(options) {
2
+ const isColumnSelectable = options.isColumnSelectable ?? (() => true);
3
+ function normalizeCellCoord(coord) {
4
+ if (options.resolveRowsLength() === 0) {
5
+ return null;
6
+ }
7
+ const rowIndex = options.clampRowIndex(coord.rowIndex);
8
+ const columnIndex = options.resolveNearestNavigableColumnIndex(Math.trunc(coord.columnIndex));
9
+ if (columnIndex < 0) {
10
+ return null;
11
+ }
12
+ return {
13
+ rowIndex,
14
+ columnIndex,
15
+ };
16
+ }
17
+ function resolveCellCoord(row, columnKey) {
18
+ if (!isColumnSelectable(columnKey)) {
19
+ return null;
20
+ }
21
+ const rawColumnIndex = options.resolveColumnIndex(columnKey);
22
+ if (rawColumnIndex < 0) {
23
+ return null;
24
+ }
25
+ const columnIndex = options.resolveNearestNavigableColumnIndex(rawColumnIndex);
26
+ if (columnIndex < 0) {
27
+ return null;
28
+ }
29
+ return {
30
+ rowIndex: options.clampRowIndex(options.resolveRowIndex(row)),
31
+ columnIndex,
32
+ };
33
+ }
34
+ function normalizeSelectionRange(range) {
35
+ const start = normalizeCellCoord({
36
+ rowIndex: range.startRow,
37
+ columnIndex: range.startColumn,
38
+ });
39
+ const end = normalizeCellCoord({
40
+ rowIndex: range.endRow,
41
+ columnIndex: range.endColumn,
42
+ });
43
+ if (!start || !end) {
44
+ return null;
45
+ }
46
+ return {
47
+ startRow: Math.min(start.rowIndex, end.rowIndex),
48
+ endRow: Math.max(start.rowIndex, end.rowIndex),
49
+ startColumn: Math.min(start.columnIndex, end.columnIndex),
50
+ endColumn: Math.max(start.columnIndex, end.columnIndex),
51
+ };
52
+ }
53
+ function buildExtendedRange(baseRange, coord) {
54
+ return normalizeSelectionRange({
55
+ startRow: coord.rowIndex < baseRange.startRow ? coord.rowIndex : baseRange.startRow,
56
+ endRow: coord.rowIndex > baseRange.endRow ? coord.rowIndex : baseRange.endRow,
57
+ startColumn: coord.columnIndex < baseRange.startColumn ? coord.columnIndex : baseRange.startColumn,
58
+ endColumn: coord.columnIndex > baseRange.endColumn ? coord.columnIndex : baseRange.endColumn,
59
+ });
60
+ }
61
+ function isCellWithinRange(rowIndex, columnIndex, range) {
62
+ return (rowIndex >= range.startRow &&
63
+ rowIndex <= range.endRow &&
64
+ columnIndex >= range.startColumn &&
65
+ columnIndex <= range.endColumn);
66
+ }
67
+ function resolveCurrentCellCoord() {
68
+ const candidate = options.resolveCandidateCurrentCell();
69
+ if (candidate) {
70
+ return normalizeCellCoord(candidate);
71
+ }
72
+ const firstColumnIndex = options.resolveFirstNavigableColumnIndex();
73
+ if (options.resolveRowsLength() === 0 || firstColumnIndex < 0) {
74
+ return null;
75
+ }
76
+ return {
77
+ rowIndex: 0,
78
+ columnIndex: firstColumnIndex,
79
+ };
80
+ }
81
+ return {
82
+ resolveCellCoord,
83
+ normalizeCellCoord,
84
+ normalizeSelectionRange,
85
+ buildExtendedRange,
86
+ isCellWithinRange,
87
+ resolveCurrentCellCoord,
88
+ };
89
+ }
@@ -0,0 +1,41 @@
1
+ export interface DataGridCellVisibilityCoord {
2
+ rowIndex: number;
3
+ columnIndex: number;
4
+ }
5
+ export interface DataGridCellVisibilityColumnMetric {
6
+ start: number;
7
+ end: number;
8
+ }
9
+ export interface DataGridCellVisibilityScrollPosition {
10
+ top: number;
11
+ left: number;
12
+ }
13
+ export interface DataGridCellVisibilityVirtualWindow {
14
+ rowStart?: number;
15
+ rowEnd?: number;
16
+ rowTotal: number;
17
+ colStart?: number;
18
+ colEnd?: number;
19
+ colTotal: number;
20
+ overscan?: {
21
+ top?: number;
22
+ bottom?: number;
23
+ left?: number;
24
+ right?: number;
25
+ };
26
+ }
27
+ export interface UseDataGridCellVisibilityScrollerOptions<TCoord extends DataGridCellVisibilityCoord, TMetric extends DataGridCellVisibilityColumnMetric = DataGridCellVisibilityColumnMetric> {
28
+ resolveViewportElement: () => HTMLElement | null;
29
+ resolveColumnMetric: (columnIndex: number) => TMetric | null | undefined;
30
+ resolveVirtualWindow: () => DataGridCellVisibilityVirtualWindow | null | undefined;
31
+ resolveHeaderHeight: () => number;
32
+ resolveRowHeight: () => number;
33
+ resolveRowOffset?: (rowIndex: number) => number;
34
+ resolveRowHeightAtIndex?: (rowIndex: number) => number;
35
+ setScrollPosition: (position: DataGridCellVisibilityScrollPosition) => void;
36
+ }
37
+ export interface UseDataGridCellVisibilityScrollerResult<TCoord extends DataGridCellVisibilityCoord> {
38
+ ensureCellVisible: (coord: TCoord) => void;
39
+ }
40
+ export declare function useDataGridCellVisibilityScroller<TCoord extends DataGridCellVisibilityCoord, TMetric extends DataGridCellVisibilityColumnMetric = DataGridCellVisibilityColumnMetric>(options: UseDataGridCellVisibilityScrollerOptions<TCoord, TMetric>): UseDataGridCellVisibilityScrollerResult<TCoord>;
41
+ //# sourceMappingURL=useDataGridCellVisibilityScroller.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useDataGridCellVisibilityScroller.d.ts","sourceRoot":"","sources":["../../src/useDataGridCellVisibilityScroller.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,2BAA2B;IAC1C,QAAQ,EAAE,MAAM,CAAA;IAChB,WAAW,EAAE,MAAM,CAAA;CACpB;AAED,MAAM,WAAW,kCAAkC;IACjD,KAAK,EAAE,MAAM,CAAA;IACb,GAAG,EAAE,MAAM,CAAA;CACZ;AAED,MAAM,WAAW,oCAAoC;IACnD,GAAG,EAAE,MAAM,CAAA;IACX,IAAI,EAAE,MAAM,CAAA;CACb;AAED,MAAM,WAAW,mCAAmC;IAClD,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,QAAQ,EAAE,MAAM,CAAA;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,QAAQ,EAAE,MAAM,CAAA;IAChB,QAAQ,CAAC,EAAE;QACT,GAAG,CAAC,EAAE,MAAM,CAAA;QACZ,MAAM,CAAC,EAAE,MAAM,CAAA;QACf,IAAI,CAAC,EAAE,MAAM,CAAA;QACb,KAAK,CAAC,EAAE,MAAM,CAAA;KACf,CAAA;CACF;AAED,MAAM,WAAW,wCAAwC,CACvD,MAAM,SAAS,2BAA2B,EAC1C,OAAO,SAAS,kCAAkC,GAAG,kCAAkC;IAEvF,sBAAsB,EAAE,MAAM,WAAW,GAAG,IAAI,CAAA;IAChD,mBAAmB,EAAE,CAAC,WAAW,EAAE,MAAM,KAAK,OAAO,GAAG,IAAI,GAAG,SAAS,CAAA;IACxE,oBAAoB,EAAE,MAAM,mCAAmC,GAAG,IAAI,GAAG,SAAS,CAAA;IAClF,mBAAmB,EAAE,MAAM,MAAM,CAAA;IACjC,gBAAgB,EAAE,MAAM,MAAM,CAAA;IAC9B,gBAAgB,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,MAAM,CAAA;IAC/C,uBAAuB,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,MAAM,CAAA;IACtD,iBAAiB,EAAE,CAAC,QAAQ,EAAE,oCAAoC,KAAK,IAAI,CAAA;CAC5E;AAED,MAAM,WAAW,uCAAuC,CACtD,MAAM,SAAS,2BAA2B;IAE1C,iBAAiB,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAA;CAC3C;AAED,wBAAgB,iCAAiC,CAC/C,MAAM,SAAS,2BAA2B,EAC1C,OAAO,SAAS,kCAAkC,GAAG,kCAAkC,EAEvF,OAAO,EAAE,wCAAwC,CAAC,MAAM,EAAE,OAAO,CAAC,GACjE,uCAAuC,CAAC,MAAM,CAAC,CA8CjD"}
@@ -0,0 +1,43 @@
1
+ export function useDataGridCellVisibilityScroller(options) {
2
+ function ensureCellVisible(coord) {
3
+ const virtualWindow = options.resolveVirtualWindow();
4
+ const rowTotal = Math.max(0, Math.trunc(virtualWindow?.rowTotal ?? 0));
5
+ const colTotal = Math.max(0, Math.trunc(virtualWindow?.colTotal ?? 0));
6
+ if (rowTotal === 0 || colTotal === 0) {
7
+ return;
8
+ }
9
+ const safeRowIndex = Math.max(0, Math.min(rowTotal - 1, Math.trunc(coord.rowIndex)));
10
+ const safeColumnIndex = Math.max(0, Math.min(colTotal - 1, Math.trunc(coord.columnIndex)));
11
+ const viewport = options.resolveViewportElement();
12
+ const columnMetric = options.resolveColumnMetric(safeColumnIndex);
13
+ if (!viewport || !columnMetric) {
14
+ return;
15
+ }
16
+ const headerHeight = options.resolveHeaderHeight();
17
+ const rowHeight = options.resolveRowHeight();
18
+ const rowTop = headerHeight + (options.resolveRowOffset?.(safeRowIndex) ?? (safeRowIndex * rowHeight));
19
+ const rowSpan = Math.max(1, options.resolveRowHeightAtIndex?.(safeRowIndex) ?? rowHeight);
20
+ const rowBottom = rowTop + rowSpan;
21
+ const visibleTop = viewport.scrollTop + headerHeight;
22
+ const visibleBottom = viewport.scrollTop + viewport.clientHeight;
23
+ if (rowTop < visibleTop) {
24
+ viewport.scrollTop = Math.max(0, rowTop - headerHeight);
25
+ }
26
+ else if (rowBottom > visibleBottom) {
27
+ viewport.scrollTop = Math.max(0, rowBottom - viewport.clientHeight);
28
+ }
29
+ if (columnMetric.start < viewport.scrollLeft) {
30
+ viewport.scrollLeft = Math.max(0, columnMetric.start);
31
+ }
32
+ else if (columnMetric.end > viewport.scrollLeft + viewport.clientWidth) {
33
+ viewport.scrollLeft = Math.max(0, columnMetric.end - viewport.clientWidth);
34
+ }
35
+ options.setScrollPosition({
36
+ top: viewport.scrollTop,
37
+ left: viewport.scrollLeft,
38
+ });
39
+ }
40
+ return {
41
+ ensureCellVisible,
42
+ };
43
+ }
@@ -0,0 +1,40 @@
1
+ import type { DataGridRowNode } from "@affino/datagrid-core";
2
+ export interface DataGridCellVisualStateCoord {
3
+ rowIndex: number;
4
+ columnIndex: number;
5
+ }
6
+ export interface DataGridCellVisualStateRange {
7
+ startRow: number;
8
+ endRow: number;
9
+ startColumn: number;
10
+ endColumn: number;
11
+ }
12
+ export interface UseDataGridCellVisualStatePredicatesOptions<TRow, TCoord extends DataGridCellVisualStateCoord = DataGridCellVisualStateCoord, TRange extends DataGridCellVisualStateRange = DataGridCellVisualStateRange> {
13
+ resolveRowIndex: (row: DataGridRowNode<TRow>) => number;
14
+ resolveColumnIndex: (columnKey: string) => number;
15
+ isCellWithinRange: (rowIndex: number, columnIndex: number, range: TRange) => boolean;
16
+ resolveSelectionRange: () => TRange | null;
17
+ resolveCopiedRange: () => TRange | null;
18
+ resolveAnchorCoord: () => TCoord | null;
19
+ resolveActiveCoord: () => TCoord | null;
20
+ isFillDragging: () => boolean;
21
+ isRangeMoving: () => boolean;
22
+ resolveFillPreviewRange: () => TRange | null;
23
+ resolveFillBaseRange: () => TRange | null;
24
+ resolveMovePreviewRange: () => TRange | null;
25
+ resolveMoveBaseRange: () => TRange | null;
26
+ isInlineEditorOpen?: () => boolean;
27
+ selectColumnKey?: string;
28
+ }
29
+ export interface UseDataGridCellVisualStatePredicatesResult<TRow> {
30
+ isCellInSelection: (row: DataGridRowNode<TRow>, columnKey: string) => boolean;
31
+ isCellInCopiedRange: (row: DataGridRowNode<TRow>, columnKey: string) => boolean;
32
+ isAnchorCell: (row: DataGridRowNode<TRow>, columnKey: string) => boolean;
33
+ isActiveCell: (row: DataGridRowNode<TRow>, columnKey: string) => boolean;
34
+ isRangeEndCell: (row: DataGridRowNode<TRow>, columnKey: string) => boolean;
35
+ isCellInFillPreview: (row: DataGridRowNode<TRow>, columnKey: string) => boolean;
36
+ isCellInMovePreview: (row: DataGridRowNode<TRow>, columnKey: string) => boolean;
37
+ shouldShowFillHandle: (row: DataGridRowNode<TRow>, columnKey: string) => boolean;
38
+ }
39
+ export declare function useDataGridCellVisualStatePredicates<TRow, TCoord extends DataGridCellVisualStateCoord = DataGridCellVisualStateCoord, TRange extends DataGridCellVisualStateRange = DataGridCellVisualStateRange>(options: UseDataGridCellVisualStatePredicatesOptions<TRow, TCoord, TRange>): UseDataGridCellVisualStatePredicatesResult<TRow>;
40
+ //# sourceMappingURL=useDataGridCellVisualStatePredicates.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useDataGridCellVisualStatePredicates.d.ts","sourceRoot":"","sources":["../../src/useDataGridCellVisualStatePredicates.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAA;AAE5D,MAAM,WAAW,4BAA4B;IAC3C,QAAQ,EAAE,MAAM,CAAA;IAChB,WAAW,EAAE,MAAM,CAAA;CACpB;AAED,MAAM,WAAW,4BAA4B;IAC3C,QAAQ,EAAE,MAAM,CAAA;IAChB,MAAM,EAAE,MAAM,CAAA;IACd,WAAW,EAAE,MAAM,CAAA;IACnB,SAAS,EAAE,MAAM,CAAA;CAClB;AAED,MAAM,WAAW,2CAA2C,CAC1D,IAAI,EACJ,MAAM,SAAS,4BAA4B,GAAG,4BAA4B,EAC1E,MAAM,SAAS,4BAA4B,GAAG,4BAA4B;IAE1E,eAAe,EAAE,CAAC,GAAG,EAAE,eAAe,CAAC,IAAI,CAAC,KAAK,MAAM,CAAA;IACvD,kBAAkB,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,MAAM,CAAA;IACjD,iBAAiB,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,KAAK,OAAO,CAAA;IACpF,qBAAqB,EAAE,MAAM,MAAM,GAAG,IAAI,CAAA;IAC1C,kBAAkB,EAAE,MAAM,MAAM,GAAG,IAAI,CAAA;IACvC,kBAAkB,EAAE,MAAM,MAAM,GAAG,IAAI,CAAA;IACvC,kBAAkB,EAAE,MAAM,MAAM,GAAG,IAAI,CAAA;IACvC,cAAc,EAAE,MAAM,OAAO,CAAA;IAC7B,aAAa,EAAE,MAAM,OAAO,CAAA;IAC5B,uBAAuB,EAAE,MAAM,MAAM,GAAG,IAAI,CAAA;IAC5C,oBAAoB,EAAE,MAAM,MAAM,GAAG,IAAI,CAAA;IACzC,uBAAuB,EAAE,MAAM,MAAM,GAAG,IAAI,CAAA;IAC5C,oBAAoB,EAAE,MAAM,MAAM,GAAG,IAAI,CAAA;IACzC,kBAAkB,CAAC,EAAE,MAAM,OAAO,CAAA;IAClC,eAAe,CAAC,EAAE,MAAM,CAAA;CACzB;AAED,MAAM,WAAW,0CAA0C,CAAC,IAAI;IAC9D,iBAAiB,EAAE,CAAC,GAAG,EAAE,eAAe,CAAC,IAAI,CAAC,EAAE,SAAS,EAAE,MAAM,KAAK,OAAO,CAAA;IAC7E,mBAAmB,EAAE,CAAC,GAAG,EAAE,eAAe,CAAC,IAAI,CAAC,EAAE,SAAS,EAAE,MAAM,KAAK,OAAO,CAAA;IAC/E,YAAY,EAAE,CAAC,GAAG,EAAE,eAAe,CAAC,IAAI,CAAC,EAAE,SAAS,EAAE,MAAM,KAAK,OAAO,CAAA;IACxE,YAAY,EAAE,CAAC,GAAG,EAAE,eAAe,CAAC,IAAI,CAAC,EAAE,SAAS,EAAE,MAAM,KAAK,OAAO,CAAA;IACxE,cAAc,EAAE,CAAC,GAAG,EAAE,eAAe,CAAC,IAAI,CAAC,EAAE,SAAS,EAAE,MAAM,KAAK,OAAO,CAAA;IAC1E,mBAAmB,EAAE,CAAC,GAAG,EAAE,eAAe,CAAC,IAAI,CAAC,EAAE,SAAS,EAAE,MAAM,KAAK,OAAO,CAAA;IAC/E,mBAAmB,EAAE,CAAC,GAAG,EAAE,eAAe,CAAC,IAAI,CAAC,EAAE,SAAS,EAAE,MAAM,KAAK,OAAO,CAAA;IAC/E,oBAAoB,EAAE,CAAC,GAAG,EAAE,eAAe,CAAC,IAAI,CAAC,EAAE,SAAS,EAAE,MAAM,KAAK,OAAO,CAAA;CACjF;AAED,wBAAgB,oCAAoC,CAClD,IAAI,EACJ,MAAM,SAAS,4BAA4B,GAAG,4BAA4B,EAC1E,MAAM,SAAS,4BAA4B,GAAG,4BAA4B,EAE1E,OAAO,EAAE,2CAA2C,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,GACzE,0CAA0C,CAAC,IAAI,CAAC,CA0IlD"}