@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.
- package/LICENSE +21 -0
- package/README.md +6 -0
- package/dist/src/createDataGridRuntime.d.ts +19 -0
- package/dist/src/createDataGridRuntime.d.ts.map +1 -0
- package/dist/src/createDataGridRuntime.js +33 -0
- package/dist/src/dataGridContextMenuContracts.d.ts +20 -0
- package/dist/src/dataGridContextMenuContracts.d.ts.map +1 -0
- package/dist/src/dataGridContextMenuContracts.js +1 -0
- package/dist/src/dataGridPointerContracts.d.ts +5 -0
- package/dist/src/dataGridPointerContracts.d.ts.map +1 -0
- package/dist/src/dataGridPointerContracts.js +1 -0
- package/dist/src/dataGridRangeMutationKernel.d.ts +27 -0
- package/dist/src/dataGridRangeMutationKernel.d.ts.map +1 -0
- package/dist/src/dataGridRangeMutationKernel.js +46 -0
- package/dist/src/dataGridWritableRef.d.ts +4 -0
- package/dist/src/dataGridWritableRef.d.ts.map +1 -0
- package/dist/src/dataGridWritableRef.js +1 -0
- package/dist/src/index.d.ts +77 -0
- package/dist/src/index.d.ts.map +1 -0
- package/dist/src/index.js +76 -0
- package/dist/src/selectionOverlayTransform.d.ts +16 -0
- package/dist/src/selectionOverlayTransform.d.ts.map +1 -0
- package/dist/src/selectionOverlayTransform.js +21 -0
- package/dist/src/useDataGridA11yCellIds.d.ts +16 -0
- package/dist/src/useDataGridA11yCellIds.d.ts.map +1 -0
- package/dist/src/useDataGridA11yCellIds.js +26 -0
- package/dist/src/useDataGridAxisAutoScrollDelta.d.ts +10 -0
- package/dist/src/useDataGridAxisAutoScrollDelta.d.ts.map +1 -0
- package/dist/src/useDataGridAxisAutoScrollDelta.js +20 -0
- package/dist/src/useDataGridCellCoordNormalizer.d.ts +26 -0
- package/dist/src/useDataGridCellCoordNormalizer.d.ts.map +1 -0
- package/dist/src/useDataGridCellCoordNormalizer.js +29 -0
- package/dist/src/useDataGridCellDatasetResolver.d.ts +16 -0
- package/dist/src/useDataGridCellDatasetResolver.d.ts.map +1 -0
- package/dist/src/useDataGridCellDatasetResolver.js +23 -0
- package/dist/src/useDataGridCellNavigation.d.ts +23 -0
- package/dist/src/useDataGridCellNavigation.d.ts.map +1 -0
- package/dist/src/useDataGridCellNavigation.js +111 -0
- package/dist/src/useDataGridCellPointerDownRouter.d.ts +42 -0
- package/dist/src/useDataGridCellPointerDownRouter.d.ts.map +1 -0
- package/dist/src/useDataGridCellPointerDownRouter.js +48 -0
- package/dist/src/useDataGridCellPointerHoverRouter.d.ts +24 -0
- package/dist/src/useDataGridCellPointerHoverRouter.d.ts.map +1 -0
- package/dist/src/useDataGridCellPointerHoverRouter.js +25 -0
- package/dist/src/useDataGridCellRangeHelpers.d.ts +30 -0
- package/dist/src/useDataGridCellRangeHelpers.d.ts.map +1 -0
- package/dist/src/useDataGridCellRangeHelpers.js +89 -0
- package/dist/src/useDataGridCellVisibilityScroller.d.ts +41 -0
- package/dist/src/useDataGridCellVisibilityScroller.d.ts.map +1 -0
- package/dist/src/useDataGridCellVisibilityScroller.js +43 -0
- package/dist/src/useDataGridCellVisualStatePredicates.d.ts +40 -0
- package/dist/src/useDataGridCellVisualStatePredicates.d.ts.map +1 -0
- package/dist/src/useDataGridCellVisualStatePredicates.js +126 -0
- package/dist/src/useDataGridClearSelectionLifecycle.d.ts +27 -0
- package/dist/src/useDataGridClearSelectionLifecycle.d.ts.map +1 -0
- package/dist/src/useDataGridClearSelectionLifecycle.js +21 -0
- package/dist/src/useDataGridClipboardBridge.d.ts +31 -0
- package/dist/src/useDataGridClipboardBridge.d.ts.map +1 -0
- package/dist/src/useDataGridClipboardBridge.js +138 -0
- package/dist/src/useDataGridClipboardMutations.d.ts +47 -0
- package/dist/src/useDataGridClipboardMutations.d.ts.map +1 -0
- package/dist/src/useDataGridClipboardMutations.js +216 -0
- package/dist/src/useDataGridClipboardValuePolicy.d.ts +5 -0
- package/dist/src/useDataGridClipboardValuePolicy.d.ts.map +1 -0
- package/dist/src/useDataGridClipboardValuePolicy.js +14 -0
- package/dist/src/useDataGridColumnFilterOrchestration.d.ts +64 -0
- package/dist/src/useDataGridColumnFilterOrchestration.d.ts.map +1 -0
- package/dist/src/useDataGridColumnFilterOrchestration.js +359 -0
- package/dist/src/useDataGridColumnLayoutOrchestration.d.ts +59 -0
- package/dist/src/useDataGridColumnLayoutOrchestration.d.ts.map +1 -0
- package/dist/src/useDataGridColumnLayoutOrchestration.js +151 -0
- package/dist/src/useDataGridColumnUiPolicy.d.ts +25 -0
- package/dist/src/useDataGridColumnUiPolicy.d.ts.map +1 -0
- package/dist/src/useDataGridColumnUiPolicy.js +55 -0
- package/dist/src/useDataGridContextMenu.d.ts +30 -0
- package/dist/src/useDataGridContextMenu.d.ts.map +1 -0
- package/dist/src/useDataGridContextMenu.js +147 -0
- package/dist/src/useDataGridContextMenuActionRouter.d.ts +19 -0
- package/dist/src/useDataGridContextMenuActionRouter.d.ts.map +1 -0
- package/dist/src/useDataGridContextMenuActionRouter.js +29 -0
- package/dist/src/useDataGridContextMenuAnchor.d.ts +33 -0
- package/dist/src/useDataGridContextMenuAnchor.d.ts.map +1 -0
- package/dist/src/useDataGridContextMenuAnchor.js +60 -0
- package/dist/src/useDataGridCopyRangeHelpers.d.ts +20 -0
- package/dist/src/useDataGridCopyRangeHelpers.d.ts.map +1 -0
- package/dist/src/useDataGridCopyRangeHelpers.js +28 -0
- package/dist/src/useDataGridDragPointerSelection.d.ts +22 -0
- package/dist/src/useDataGridDragPointerSelection.d.ts.map +1 -0
- package/dist/src/useDataGridDragPointerSelection.js +23 -0
- package/dist/src/useDataGridDragSelectionLifecycle.d.ts +18 -0
- package/dist/src/useDataGridDragSelectionLifecycle.d.ts.map +1 -0
- package/dist/src/useDataGridDragSelectionLifecycle.js +11 -0
- package/dist/src/useDataGridEditableValuePolicy.d.ts +32 -0
- package/dist/src/useDataGridEditableValuePolicy.d.ts.map +1 -0
- package/dist/src/useDataGridEditableValuePolicy.js +95 -0
- package/dist/src/useDataGridEnumTrigger.d.ts +17 -0
- package/dist/src/useDataGridEnumTrigger.d.ts.map +1 -0
- package/dist/src/useDataGridEnumTrigger.js +28 -0
- package/dist/src/useDataGridFillHandleStart.d.ts +30 -0
- package/dist/src/useDataGridFillHandleStart.d.ts.map +1 -0
- package/dist/src/useDataGridFillHandleStart.js +27 -0
- package/dist/src/useDataGridFillSelectionLifecycle.d.ts +24 -0
- package/dist/src/useDataGridFillSelectionLifecycle.d.ts.map +1 -0
- package/dist/src/useDataGridFillSelectionLifecycle.js +15 -0
- package/dist/src/useDataGridGlobalMouseDownContextMenuCloser.d.ts +10 -0
- package/dist/src/useDataGridGlobalMouseDownContextMenuCloser.d.ts.map +1 -0
- package/dist/src/useDataGridGlobalMouseDownContextMenuCloser.js +17 -0
- package/dist/src/useDataGridGlobalPointerLifecycle.d.ts +40 -0
- package/dist/src/useDataGridGlobalPointerLifecycle.d.ts.map +1 -0
- package/dist/src/useDataGridGlobalPointerLifecycle.js +153 -0
- package/dist/src/useDataGridGroupBadge.d.ts +13 -0
- package/dist/src/useDataGridGroupBadge.d.ts.map +1 -0
- package/dist/src/useDataGridGroupBadge.js +19 -0
- package/dist/src/useDataGridGroupMetaOrchestration.d.ts +18 -0
- package/dist/src/useDataGridGroupMetaOrchestration.d.ts.map +1 -0
- package/dist/src/useDataGridGroupMetaOrchestration.js +43 -0
- package/dist/src/useDataGridGroupValueLabelResolver.d.ts +10 -0
- package/dist/src/useDataGridGroupValueLabelResolver.d.ts.map +1 -0
- package/dist/src/useDataGridGroupValueLabelResolver.js +15 -0
- package/dist/src/useDataGridGroupingSortOrchestration.d.ts +13 -0
- package/dist/src/useDataGridGroupingSortOrchestration.d.ts.map +1 -0
- package/dist/src/useDataGridGroupingSortOrchestration.js +22 -0
- package/dist/src/useDataGridHeaderContextActions.d.ts +15 -0
- package/dist/src/useDataGridHeaderContextActions.d.ts.map +1 -0
- package/dist/src/useDataGridHeaderContextActions.js +41 -0
- package/dist/src/useDataGridHeaderInteractionRouter.d.ts +12 -0
- package/dist/src/useDataGridHeaderInteractionRouter.d.ts.map +1 -0
- package/dist/src/useDataGridHeaderInteractionRouter.js +35 -0
- package/dist/src/useDataGridHeaderLayerOrchestration.d.ts +13 -0
- package/dist/src/useDataGridHeaderLayerOrchestration.d.ts.map +1 -0
- package/dist/src/useDataGridHeaderLayerOrchestration.js +18 -0
- package/dist/src/useDataGridHeaderResizeOrchestration.d.ts +43 -0
- package/dist/src/useDataGridHeaderResizeOrchestration.d.ts.map +1 -0
- package/dist/src/useDataGridHeaderResizeOrchestration.js +180 -0
- package/dist/src/useDataGridHeaderSortOrchestration.d.ts +20 -0
- package/dist/src/useDataGridHeaderSortOrchestration.d.ts.map +1 -0
- package/dist/src/useDataGridHeaderSortOrchestration.js +86 -0
- package/dist/src/useDataGridHistoryActionRunner.d.ts +15 -0
- package/dist/src/useDataGridHistoryActionRunner.d.ts.map +1 -0
- package/dist/src/useDataGridHistoryActionRunner.js +35 -0
- package/dist/src/useDataGridInlineEditOrchestration.d.ts +46 -0
- package/dist/src/useDataGridInlineEditOrchestration.d.ts.map +1 -0
- package/dist/src/useDataGridInlineEditOrchestration.js +116 -0
- package/dist/src/useDataGridInlineEditorFocus.d.ts +9 -0
- package/dist/src/useDataGridInlineEditorFocus.d.ts.map +1 -0
- package/dist/src/useDataGridInlineEditorFocus.js +37 -0
- package/dist/src/useDataGridInlineEditorKeyRouter.d.ts +12 -0
- package/dist/src/useDataGridInlineEditorKeyRouter.d.ts.map +1 -0
- package/dist/src/useDataGridInlineEditorKeyRouter.js +31 -0
- package/dist/src/useDataGridInlineEditorSchema.d.ts +11 -0
- package/dist/src/useDataGridInlineEditorSchema.d.ts.map +1 -0
- package/dist/src/useDataGridInlineEditorSchema.js +26 -0
- package/dist/src/useDataGridInlineEditorTargetNavigation.d.ts +30 -0
- package/dist/src/useDataGridInlineEditorTargetNavigation.d.ts.map +1 -0
- package/dist/src/useDataGridInlineEditorTargetNavigation.js +66 -0
- package/dist/src/useDataGridIntentHistory.d.ts +25 -0
- package/dist/src/useDataGridIntentHistory.d.ts.map +1 -0
- package/dist/src/useDataGridIntentHistory.js +109 -0
- package/dist/src/useDataGridKeyboardCommandRouter.d.ts +18 -0
- package/dist/src/useDataGridKeyboardCommandRouter.d.ts.map +1 -0
- package/dist/src/useDataGridKeyboardCommandRouter.js +81 -0
- package/dist/src/useDataGridMoveMutationPolicy.d.ts +12 -0
- package/dist/src/useDataGridMoveMutationPolicy.d.ts.map +1 -0
- package/dist/src/useDataGridMoveMutationPolicy.js +81 -0
- package/dist/src/useDataGridMutationSnapshot.d.ts +46 -0
- package/dist/src/useDataGridMutationSnapshot.d.ts.map +1 -0
- package/dist/src/useDataGridMutationSnapshot.js +57 -0
- package/dist/src/useDataGridNavigationPrimitives.d.ts +42 -0
- package/dist/src/useDataGridNavigationPrimitives.d.ts.map +1 -0
- package/dist/src/useDataGridNavigationPrimitives.js +105 -0
- package/dist/src/useDataGridPointerAutoScroll.d.ts +32 -0
- package/dist/src/useDataGridPointerAutoScroll.d.ts.map +1 -0
- package/dist/src/useDataGridPointerAutoScroll.js +85 -0
- package/dist/src/useDataGridPointerCellCoordResolver.d.ts +45 -0
- package/dist/src/useDataGridPointerCellCoordResolver.d.ts.map +1 -0
- package/dist/src/useDataGridPointerCellCoordResolver.js +107 -0
- package/dist/src/useDataGridPointerModifierPolicy.d.ts +5 -0
- package/dist/src/useDataGridPointerModifierPolicy.d.ts.map +1 -0
- package/dist/src/useDataGridPointerModifierPolicy.js +8 -0
- package/dist/src/useDataGridPointerPreviewRouter.d.ts +37 -0
- package/dist/src/useDataGridPointerPreviewRouter.d.ts.map +1 -0
- package/dist/src/useDataGridPointerPreviewRouter.js +55 -0
- package/dist/src/useDataGridQuickFilterActions.d.ts +10 -0
- package/dist/src/useDataGridQuickFilterActions.d.ts.map +1 -0
- package/dist/src/useDataGridQuickFilterActions.js +12 -0
- package/dist/src/useDataGridRangeMoveLifecycle.d.ts +15 -0
- package/dist/src/useDataGridRangeMoveLifecycle.d.ts.map +1 -0
- package/dist/src/useDataGridRangeMoveLifecycle.js +21 -0
- package/dist/src/useDataGridRangeMoveStart.d.ts +34 -0
- package/dist/src/useDataGridRangeMoveStart.d.ts.map +1 -0
- package/dist/src/useDataGridRangeMoveStart.js +23 -0
- package/dist/src/useDataGridRangeMutationEngine.d.ts +44 -0
- package/dist/src/useDataGridRangeMutationEngine.d.ts.map +1 -0
- package/dist/src/useDataGridRangeMutationEngine.js +210 -0
- package/dist/src/useDataGridRowSelectionInputHandlers.d.ts +10 -0
- package/dist/src/useDataGridRowSelectionInputHandlers.d.ts.map +1 -0
- package/dist/src/useDataGridRowSelectionInputHandlers.js +12 -0
- package/dist/src/useDataGridRowSelectionOrchestration.d.ts +7 -0
- package/dist/src/useDataGridRowSelectionOrchestration.d.ts.map +1 -0
- package/dist/src/useDataGridRowSelectionOrchestration.js +60 -0
- package/dist/src/useDataGridRowsProjection.d.ts +21 -0
- package/dist/src/useDataGridRowsProjection.d.ts.map +1 -0
- package/dist/src/useDataGridRowsProjection.js +69 -0
- package/dist/src/useDataGridRuntimeService.d.ts +33 -0
- package/dist/src/useDataGridRuntimeService.d.ts.map +1 -0
- package/dist/src/useDataGridRuntimeService.js +209 -0
- package/dist/src/useDataGridSelectionComparators.d.ts +16 -0
- package/dist/src/useDataGridSelectionComparators.d.ts.map +1 -0
- package/dist/src/useDataGridSelectionComparators.js +21 -0
- package/dist/src/useDataGridSelectionMoveHandle.d.ts +38 -0
- package/dist/src/useDataGridSelectionMoveHandle.d.ts.map +1 -0
- package/dist/src/useDataGridSelectionMoveHandle.js +49 -0
- package/dist/src/useDataGridSelectionOverlayOrchestration.d.ts +60 -0
- package/dist/src/useDataGridSelectionOverlayOrchestration.d.ts.map +1 -0
- package/dist/src/useDataGridSelectionOverlayOrchestration.js +137 -0
- package/dist/src/useDataGridTabTargetResolver.d.ts +17 -0
- package/dist/src/useDataGridTabTargetResolver.d.ts.map +1 -0
- package/dist/src/useDataGridTabTargetResolver.js +30 -0
- package/dist/src/useDataGridViewportBlurHandler.d.ts +16 -0
- package/dist/src/useDataGridViewportBlurHandler.d.ts.map +1 -0
- package/dist/src/useDataGridViewportBlurHandler.js +62 -0
- package/dist/src/useDataGridViewportContextMenuRouter.d.ts +31 -0
- package/dist/src/useDataGridViewportContextMenuRouter.d.ts.map +1 -0
- package/dist/src/useDataGridViewportContextMenuRouter.js +78 -0
- package/dist/src/useDataGridViewportMeasureScheduler.d.ts +22 -0
- package/dist/src/useDataGridViewportMeasureScheduler.d.ts.map +1 -0
- package/dist/src/useDataGridViewportMeasureScheduler.js +65 -0
- package/dist/src/useDataGridViewportScrollLifecycle.d.ts +16 -0
- package/dist/src/useDataGridViewportScrollLifecycle.d.ts.map +1 -0
- package/dist/src/useDataGridViewportScrollLifecycle.js +28 -0
- package/dist/src/useDataGridVirtualRangeMetrics.d.ts +32 -0
- package/dist/src/useDataGridVirtualRangeMetrics.d.ts.map +1 -0
- package/dist/src/useDataGridVirtualRangeMetrics.js +26 -0
- package/dist/src/useDataGridVisibleRowsSyncScheduler.d.ts +21 -0
- package/dist/src/useDataGridVisibleRowsSyncScheduler.d.ts.map +1 -0
- package/dist/src/useDataGridVisibleRowsSyncScheduler.js +70 -0
- package/dist/tsconfig.public.tsbuildinfo +1 -0
- package/dist/tsconfig.tsbuildinfo +1 -0
- package/package.json +50 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useDataGridTabTargetResolver.d.ts","sourceRoot":"","sources":["../../src/useDataGridTabTargetResolver.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,sBAAsB;IACrC,QAAQ,EAAE,MAAM,CAAA;IAChB,WAAW,EAAE,MAAM,CAAA;CACpB;AAED,MAAM,WAAW,0BAA0B;IACzC,QAAQ,EAAE,MAAM,CAAA;IAChB,WAAW,EAAE,MAAM,CAAA;CACpB;AAED,MAAM,WAAW,mCAAmC,CAAC,MAAM,SAAS,sBAAsB;IACxF,6BAA6B,EAAE,MAAM,SAAS,MAAM,EAAE,CAAA;IACtD,kBAAkB,EAAE,CAAC,IAAI,EAAE,0BAA0B,KAAK,MAAM,GAAG,IAAI,CAAA;CACxE;AAED,MAAM,WAAW,kCAAkC,CAAC,MAAM,SAAS,sBAAsB;IACvF,gBAAgB,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,OAAO,KAAK,MAAM,GAAG,IAAI,CAAA;CACzE;AAED,wBAAgB,4BAA4B,CAAC,MAAM,SAAS,sBAAsB,EAChF,OAAO,EAAE,mCAAmC,CAAC,MAAM,CAAC,GACnD,kCAAkC,CAAC,MAAM,CAAC,CAgC5C"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
export function useDataGridTabTargetResolver(options) {
|
|
2
|
+
function resolveTabTarget(current, backwards) {
|
|
3
|
+
const columns = options.resolveNavigableColumnIndexes();
|
|
4
|
+
if (!columns.length) {
|
|
5
|
+
return null;
|
|
6
|
+
}
|
|
7
|
+
const currentPos = columns.indexOf(current.columnIndex);
|
|
8
|
+
const resolvedPos = currentPos === -1
|
|
9
|
+
? columns.findIndex(index => index >= current.columnIndex)
|
|
10
|
+
: currentPos;
|
|
11
|
+
const startPos = resolvedPos === -1 ? (backwards ? columns.length - 1 : 0) : resolvedPos;
|
|
12
|
+
let rowIndex = current.rowIndex;
|
|
13
|
+
let columnPos = startPos + (backwards ? -1 : 1);
|
|
14
|
+
if (columnPos < 0) {
|
|
15
|
+
columnPos = columns.length - 1;
|
|
16
|
+
rowIndex -= 1;
|
|
17
|
+
}
|
|
18
|
+
else if (columnPos >= columns.length) {
|
|
19
|
+
columnPos = 0;
|
|
20
|
+
rowIndex += 1;
|
|
21
|
+
}
|
|
22
|
+
return options.normalizeCellCoord({
|
|
23
|
+
rowIndex,
|
|
24
|
+
columnIndex: columns[columnPos] ?? columns[0] ?? 0,
|
|
25
|
+
});
|
|
26
|
+
}
|
|
27
|
+
return {
|
|
28
|
+
resolveTabTarget,
|
|
29
|
+
};
|
|
30
|
+
}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
export interface UseDataGridViewportBlurHandlerOptions {
|
|
2
|
+
resolveViewportElement: () => HTMLElement | null;
|
|
3
|
+
resolveContextMenuElement: () => HTMLElement | null;
|
|
4
|
+
stopDragSelection: () => void;
|
|
5
|
+
stopFillSelection: (commit: boolean) => void;
|
|
6
|
+
stopRangeMove: (commit: boolean) => void;
|
|
7
|
+
stopColumnResize: () => void;
|
|
8
|
+
closeContextMenu: () => void;
|
|
9
|
+
hasInlineEditor: () => boolean;
|
|
10
|
+
commitInlineEdit: () => boolean;
|
|
11
|
+
}
|
|
12
|
+
export interface UseDataGridViewportBlurHandlerResult {
|
|
13
|
+
handleViewportBlur: (event: FocusEvent) => boolean;
|
|
14
|
+
}
|
|
15
|
+
export declare function useDataGridViewportBlurHandler(options: UseDataGridViewportBlurHandlerOptions): UseDataGridViewportBlurHandlerResult;
|
|
16
|
+
//# sourceMappingURL=useDataGridViewportBlurHandler.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useDataGridViewportBlurHandler.d.ts","sourceRoot":"","sources":["../../src/useDataGridViewportBlurHandler.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,qCAAqC;IACpD,sBAAsB,EAAE,MAAM,WAAW,GAAG,IAAI,CAAA;IAChD,yBAAyB,EAAE,MAAM,WAAW,GAAG,IAAI,CAAA;IACnD,iBAAiB,EAAE,MAAM,IAAI,CAAA;IAC7B,iBAAiB,EAAE,CAAC,MAAM,EAAE,OAAO,KAAK,IAAI,CAAA;IAC5C,aAAa,EAAE,CAAC,MAAM,EAAE,OAAO,KAAK,IAAI,CAAA;IACxC,gBAAgB,EAAE,MAAM,IAAI,CAAA;IAC5B,gBAAgB,EAAE,MAAM,IAAI,CAAA;IAC5B,eAAe,EAAE,MAAM,OAAO,CAAA;IAC9B,gBAAgB,EAAE,MAAM,OAAO,CAAA;CAChC;AAED,MAAM,WAAW,oCAAoC;IACnD,kBAAkB,EAAE,CAAC,KAAK,EAAE,UAAU,KAAK,OAAO,CAAA;CACnD;AAED,wBAAgB,8BAA8B,CAC5C,OAAO,EAAE,qCAAqC,GAC7C,oCAAoC,CAiEtC"}
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
export function useDataGridViewportBlurHandler(options) {
|
|
2
|
+
function finalizeBlurCleanup() {
|
|
3
|
+
options.stopDragSelection();
|
|
4
|
+
options.stopFillSelection(false);
|
|
5
|
+
options.stopRangeMove(false);
|
|
6
|
+
options.stopColumnResize();
|
|
7
|
+
options.closeContextMenu();
|
|
8
|
+
if (options.hasInlineEditor()) {
|
|
9
|
+
options.commitInlineEdit();
|
|
10
|
+
}
|
|
11
|
+
}
|
|
12
|
+
function handleViewportBlur(event) {
|
|
13
|
+
const viewport = options.resolveViewportElement();
|
|
14
|
+
const nextFocused = event.relatedTarget;
|
|
15
|
+
if (viewport && nextFocused && viewport.contains(nextFocused)) {
|
|
16
|
+
return false;
|
|
17
|
+
}
|
|
18
|
+
const menu = options.resolveContextMenuElement();
|
|
19
|
+
if (nextFocused && menu?.contains(nextFocused)) {
|
|
20
|
+
return false;
|
|
21
|
+
}
|
|
22
|
+
if (nextFocused && nextFocused instanceof HTMLElement) {
|
|
23
|
+
if (nextFocused.closest("[data-datagrid-menu-action],[data-datagrid-copy-menu],.datagrid-sugar-context")) {
|
|
24
|
+
return false;
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
if (!nextFocused && viewport) {
|
|
28
|
+
const runDeferred = () => {
|
|
29
|
+
const active = viewport.ownerDocument?.activeElement;
|
|
30
|
+
if (active && viewport.contains(active)) {
|
|
31
|
+
return;
|
|
32
|
+
}
|
|
33
|
+
const menuElement = options.resolveContextMenuElement();
|
|
34
|
+
if (active && menuElement?.contains(active)) {
|
|
35
|
+
return;
|
|
36
|
+
}
|
|
37
|
+
if (active && active instanceof HTMLElement) {
|
|
38
|
+
if (active.closest("[data-datagrid-menu-action],[data-datagrid-copy-menu],.datagrid-sugar-context")) {
|
|
39
|
+
return;
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
finalizeBlurCleanup();
|
|
43
|
+
};
|
|
44
|
+
const view = viewport.ownerDocument?.defaultView;
|
|
45
|
+
if (typeof view?.requestAnimationFrame === "function") {
|
|
46
|
+
view.requestAnimationFrame(() => view.requestAnimationFrame(runDeferred));
|
|
47
|
+
}
|
|
48
|
+
else if (typeof view?.setTimeout === "function") {
|
|
49
|
+
view.setTimeout(runDeferred, 0);
|
|
50
|
+
}
|
|
51
|
+
else {
|
|
52
|
+
setTimeout(runDeferred, 0);
|
|
53
|
+
}
|
|
54
|
+
return true;
|
|
55
|
+
}
|
|
56
|
+
finalizeBlurCleanup();
|
|
57
|
+
return true;
|
|
58
|
+
}
|
|
59
|
+
return {
|
|
60
|
+
handleViewportBlur,
|
|
61
|
+
};
|
|
62
|
+
}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import type { OpenDataGridContextMenuInput } from "./dataGridContextMenuContracts";
|
|
2
|
+
export interface DataGridViewportContextMenuCoord {
|
|
3
|
+
rowIndex: number;
|
|
4
|
+
columnIndex: number;
|
|
5
|
+
}
|
|
6
|
+
export interface DataGridViewportContextMenuRange {
|
|
7
|
+
startRow: number;
|
|
8
|
+
endRow: number;
|
|
9
|
+
startColumn: number;
|
|
10
|
+
endColumn: number;
|
|
11
|
+
}
|
|
12
|
+
export interface UseDataGridViewportContextMenuRouterOptions<TCoord extends DataGridViewportContextMenuCoord = DataGridViewportContextMenuCoord, TRange extends DataGridViewportContextMenuRange = DataGridViewportContextMenuRange> {
|
|
13
|
+
isInteractionBlocked: () => boolean;
|
|
14
|
+
isRangeMoveModifierActive: (event: MouseEvent) => boolean;
|
|
15
|
+
resolveSelectionRange: () => TRange | null;
|
|
16
|
+
resolveCellCoordFromDataset: (rowId: string, columnKey: string) => TCoord | null;
|
|
17
|
+
applyCellSelection: (coord: TCoord, extend: boolean, fallbackAnchor?: TCoord, ensureVisible?: boolean) => void;
|
|
18
|
+
resolveActiveCellCoord: () => TCoord | null;
|
|
19
|
+
setActiveCellCoord: (coord: TCoord) => void;
|
|
20
|
+
cellCoordsEqual: (a: TCoord | null, b: TCoord | null) => boolean;
|
|
21
|
+
isMultiCellSelection: (range: TRange | null) => boolean;
|
|
22
|
+
isCoordInsideRange: (coord: TCoord, range: TRange) => boolean;
|
|
23
|
+
openContextMenu: (clientX: number, clientY: number, context: OpenDataGridContextMenuInput) => void;
|
|
24
|
+
closeContextMenu: () => void;
|
|
25
|
+
isColumnContextEnabled?: (columnKey: string) => boolean;
|
|
26
|
+
}
|
|
27
|
+
export interface UseDataGridViewportContextMenuRouterResult {
|
|
28
|
+
dispatchViewportContextMenu: (event: MouseEvent) => boolean;
|
|
29
|
+
}
|
|
30
|
+
export declare function useDataGridViewportContextMenuRouter<TCoord extends DataGridViewportContextMenuCoord = DataGridViewportContextMenuCoord, TRange extends DataGridViewportContextMenuRange = DataGridViewportContextMenuRange>(options: UseDataGridViewportContextMenuRouterOptions<TCoord, TRange>): UseDataGridViewportContextMenuRouterResult;
|
|
31
|
+
//# sourceMappingURL=useDataGridViewportContextMenuRouter.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useDataGridViewportContextMenuRouter.d.ts","sourceRoot":"","sources":["../../src/useDataGridViewportContextMenuRouter.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAEV,4BAA4B,EAC7B,MAAM,gCAAgC,CAAA;AAEvC,MAAM,WAAW,gCAAgC;IAC/C,QAAQ,EAAE,MAAM,CAAA;IAChB,WAAW,EAAE,MAAM,CAAA;CACpB;AAED,MAAM,WAAW,gCAAgC;IAC/C,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,MAAM,SAAS,gCAAgC,GAAG,gCAAgC,EAClF,MAAM,SAAS,gCAAgC,GAAG,gCAAgC;IAElF,oBAAoB,EAAE,MAAM,OAAO,CAAA;IACnC,yBAAyB,EAAE,CAAC,KAAK,EAAE,UAAU,KAAK,OAAO,CAAA;IACzD,qBAAqB,EAAE,MAAM,MAAM,GAAG,IAAI,CAAA;IAC1C,2BAA2B,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,KAAK,MAAM,GAAG,IAAI,CAAA;IAChF,kBAAkB,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,cAAc,CAAC,EAAE,MAAM,EAAE,aAAa,CAAC,EAAE,OAAO,KAAK,IAAI,CAAA;IAC9G,sBAAsB,EAAE,MAAM,MAAM,GAAG,IAAI,CAAA;IAC3C,kBAAkB,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAA;IAC3C,eAAe,EAAE,CAAC,CAAC,EAAE,MAAM,GAAG,IAAI,EAAE,CAAC,EAAE,MAAM,GAAG,IAAI,KAAK,OAAO,CAAA;IAChE,oBAAoB,EAAE,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,KAAK,OAAO,CAAA;IACvD,kBAAkB,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,KAAK,OAAO,CAAA;IAC7D,eAAe,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,4BAA4B,KAAK,IAAI,CAAA;IAClG,gBAAgB,EAAE,MAAM,IAAI,CAAA;IAC5B,sBAAsB,CAAC,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,OAAO,CAAA;CACxD;AAED,MAAM,WAAW,0CAA0C;IACzD,2BAA2B,EAAE,CAAC,KAAK,EAAE,UAAU,KAAK,OAAO,CAAA;CAC5D;AAYD,wBAAgB,oCAAoC,CAClD,MAAM,SAAS,gCAAgC,GAAG,gCAAgC,EAClF,MAAM,SAAS,gCAAgC,GAAG,gCAAgC,EAElF,OAAO,EAAE,2CAA2C,CAAC,MAAM,EAAE,MAAM,CAAC,GACnE,0CAA0C,CAkF5C"}
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
function isContextEnabled(columnKey, options) {
|
|
2
|
+
return options.isColumnContextEnabled?.(columnKey) ?? columnKey !== "select";
|
|
3
|
+
}
|
|
4
|
+
export function useDataGridViewportContextMenuRouter(options) {
|
|
5
|
+
function dispatchViewportContextMenu(event) {
|
|
6
|
+
if (options.isInteractionBlocked()) {
|
|
7
|
+
event.preventDefault();
|
|
8
|
+
return true;
|
|
9
|
+
}
|
|
10
|
+
const currentRange = options.resolveSelectionRange();
|
|
11
|
+
if (options.isRangeMoveModifierActive(event) && currentRange) {
|
|
12
|
+
event.preventDefault();
|
|
13
|
+
return true;
|
|
14
|
+
}
|
|
15
|
+
const targetNode = event.target;
|
|
16
|
+
if (!targetNode) {
|
|
17
|
+
return false;
|
|
18
|
+
}
|
|
19
|
+
const cell = targetNode.closest(".datagrid-stage__cell[data-row-id][data-column-key]");
|
|
20
|
+
if (cell) {
|
|
21
|
+
const rowId = cell.dataset.rowId ?? "";
|
|
22
|
+
const columnKey = cell.dataset.columnKey ?? "";
|
|
23
|
+
if (columnKey && isContextEnabled(columnKey, options)) {
|
|
24
|
+
let coord = null;
|
|
25
|
+
const rowIndex = cell.dataset.rowIndex;
|
|
26
|
+
const columnIndex = cell.dataset.columnIndex;
|
|
27
|
+
if (rowIndex !== undefined && columnIndex !== undefined) {
|
|
28
|
+
const parsedRow = Number(rowIndex);
|
|
29
|
+
const parsedColumn = Number(columnIndex);
|
|
30
|
+
if (Number.isFinite(parsedRow) && Number.isFinite(parsedColumn)) {
|
|
31
|
+
coord = { rowIndex: parsedRow, columnIndex: parsedColumn };
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
if (!coord) {
|
|
35
|
+
coord = options.resolveCellCoordFromDataset(rowId, columnKey);
|
|
36
|
+
}
|
|
37
|
+
if (!coord) {
|
|
38
|
+
event.preventDefault();
|
|
39
|
+
options.openContextMenu(event.clientX, event.clientY, { zone: "cell", columnKey, rowId });
|
|
40
|
+
return true;
|
|
41
|
+
}
|
|
42
|
+
if (coord) {
|
|
43
|
+
if (!currentRange || !options.isCoordInsideRange(coord, currentRange)) {
|
|
44
|
+
options.applyCellSelection(coord, false, coord, false);
|
|
45
|
+
}
|
|
46
|
+
else if (!options.cellCoordsEqual(options.resolveActiveCellCoord(), coord)) {
|
|
47
|
+
options.setActiveCellCoord(coord);
|
|
48
|
+
}
|
|
49
|
+
const nextRange = options.resolveSelectionRange();
|
|
50
|
+
const zone = options.isMultiCellSelection(nextRange) &&
|
|
51
|
+
!!nextRange &&
|
|
52
|
+
options.isCoordInsideRange(coord, nextRange)
|
|
53
|
+
? "range"
|
|
54
|
+
: "cell";
|
|
55
|
+
event.preventDefault();
|
|
56
|
+
options.openContextMenu(event.clientX, event.clientY, { zone, columnKey, rowId });
|
|
57
|
+
return true;
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
const headerCell = targetNode.closest(".datagrid-stage__cell--header[data-column-key]");
|
|
62
|
+
if (headerCell) {
|
|
63
|
+
const columnKey = headerCell.dataset.columnKey ?? "";
|
|
64
|
+
if (columnKey && isContextEnabled(columnKey, options)) {
|
|
65
|
+
event.preventDefault();
|
|
66
|
+
options.openContextMenu(event.clientX, event.clientY, { zone: "header", columnKey });
|
|
67
|
+
return true;
|
|
68
|
+
}
|
|
69
|
+
return false;
|
|
70
|
+
}
|
|
71
|
+
event.preventDefault();
|
|
72
|
+
options.closeContextMenu();
|
|
73
|
+
return true;
|
|
74
|
+
}
|
|
75
|
+
return {
|
|
76
|
+
dispatchViewportContextMenu,
|
|
77
|
+
};
|
|
78
|
+
}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
export interface DataGridViewportMeasuredState {
|
|
2
|
+
viewportHeight: number;
|
|
3
|
+
viewportWidth: number;
|
|
4
|
+
headerHeight: number;
|
|
5
|
+
}
|
|
6
|
+
export interface UseDataGridViewportMeasureSchedulerOptions {
|
|
7
|
+
resolveViewportElement: () => HTMLElement | null;
|
|
8
|
+
resolveHeaderElement: () => HTMLElement | null;
|
|
9
|
+
resolveCurrentState: () => DataGridViewportMeasuredState;
|
|
10
|
+
applyMeasuredState: (next: DataGridViewportMeasuredState) => void;
|
|
11
|
+
rowHeight: number;
|
|
12
|
+
minViewportBodyHeight?: number;
|
|
13
|
+
requestAnimationFrame?: (callback: FrameRequestCallback) => number;
|
|
14
|
+
cancelAnimationFrame?: (handle: number) => void;
|
|
15
|
+
}
|
|
16
|
+
export interface UseDataGridViewportMeasureSchedulerResult {
|
|
17
|
+
syncViewportHeight: () => void;
|
|
18
|
+
scheduleViewportMeasure: () => void;
|
|
19
|
+
dispose: () => void;
|
|
20
|
+
}
|
|
21
|
+
export declare function useDataGridViewportMeasureScheduler(options: UseDataGridViewportMeasureSchedulerOptions): UseDataGridViewportMeasureSchedulerResult;
|
|
22
|
+
//# sourceMappingURL=useDataGridViewportMeasureScheduler.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useDataGridViewportMeasureScheduler.d.ts","sourceRoot":"","sources":["../../src/useDataGridViewportMeasureScheduler.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,6BAA6B;IAC5C,cAAc,EAAE,MAAM,CAAA;IACtB,aAAa,EAAE,MAAM,CAAA;IACrB,YAAY,EAAE,MAAM,CAAA;CACrB;AAED,MAAM,WAAW,0CAA0C;IACzD,sBAAsB,EAAE,MAAM,WAAW,GAAG,IAAI,CAAA;IAChD,oBAAoB,EAAE,MAAM,WAAW,GAAG,IAAI,CAAA;IAC9C,mBAAmB,EAAE,MAAM,6BAA6B,CAAA;IACxD,kBAAkB,EAAE,CAAC,IAAI,EAAE,6BAA6B,KAAK,IAAI,CAAA;IACjE,SAAS,EAAE,MAAM,CAAA;IACjB,qBAAqB,CAAC,EAAE,MAAM,CAAA;IAC9B,qBAAqB,CAAC,EAAE,CAAC,QAAQ,EAAE,oBAAoB,KAAK,MAAM,CAAA;IAClE,oBAAoB,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,CAAA;CAChD;AAED,MAAM,WAAW,yCAAyC;IACxD,kBAAkB,EAAE,MAAM,IAAI,CAAA;IAC9B,uBAAuB,EAAE,MAAM,IAAI,CAAA;IACnC,OAAO,EAAE,MAAM,IAAI,CAAA;CACpB;AAED,wBAAgB,mCAAmC,CACjD,OAAO,EAAE,0CAA0C,GAClD,yCAAyC,CA4E3C"}
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
export function useDataGridViewportMeasureScheduler(options) {
|
|
2
|
+
const requestFrame = options.requestAnimationFrame ?? (callback => window.requestAnimationFrame(callback));
|
|
3
|
+
const cancelFrame = options.cancelAnimationFrame ?? (handle => window.cancelAnimationFrame(handle));
|
|
4
|
+
const minViewportBodyHeight = options.minViewportBodyHeight ?? 200;
|
|
5
|
+
let frame = null;
|
|
6
|
+
let pending = false;
|
|
7
|
+
function syncViewportHeight() {
|
|
8
|
+
const viewport = options.resolveViewportElement();
|
|
9
|
+
if (!viewport) {
|
|
10
|
+
return;
|
|
11
|
+
}
|
|
12
|
+
const current = options.resolveCurrentState();
|
|
13
|
+
const resolvedRowHeight = Number.isFinite(options.rowHeight) && options.rowHeight > 0
|
|
14
|
+
? options.rowHeight
|
|
15
|
+
: 1;
|
|
16
|
+
const nextViewportWidth = viewport.clientWidth;
|
|
17
|
+
const header = options.resolveHeaderElement();
|
|
18
|
+
const nextHeaderHeight = header
|
|
19
|
+
? Math.max(1, Math.round(header.getBoundingClientRect().height))
|
|
20
|
+
: current.headerHeight;
|
|
21
|
+
const bodyHeight = Math.max(minViewportBodyHeight, viewport.clientHeight - nextHeaderHeight);
|
|
22
|
+
const rowCount = Math.max(1, Math.ceil(bodyHeight / resolvedRowHeight));
|
|
23
|
+
const nextViewportHeight = rowCount * resolvedRowHeight;
|
|
24
|
+
if (nextViewportHeight === current.viewportHeight &&
|
|
25
|
+
nextViewportWidth === current.viewportWidth &&
|
|
26
|
+
nextHeaderHeight === current.headerHeight) {
|
|
27
|
+
return;
|
|
28
|
+
}
|
|
29
|
+
options.applyMeasuredState({
|
|
30
|
+
viewportHeight: nextViewportHeight,
|
|
31
|
+
viewportWidth: nextViewportWidth,
|
|
32
|
+
headerHeight: nextHeaderHeight,
|
|
33
|
+
});
|
|
34
|
+
}
|
|
35
|
+
function flushViewportMeasure() {
|
|
36
|
+
frame = null;
|
|
37
|
+
pending = false;
|
|
38
|
+
syncViewportHeight();
|
|
39
|
+
}
|
|
40
|
+
function scheduleViewportMeasure() {
|
|
41
|
+
if (pending) {
|
|
42
|
+
return;
|
|
43
|
+
}
|
|
44
|
+
pending = true;
|
|
45
|
+
if (typeof window === "undefined") {
|
|
46
|
+
flushViewportMeasure();
|
|
47
|
+
return;
|
|
48
|
+
}
|
|
49
|
+
frame = requestFrame(() => flushViewportMeasure());
|
|
50
|
+
}
|
|
51
|
+
function dispose() {
|
|
52
|
+
if (frame === null) {
|
|
53
|
+
pending = false;
|
|
54
|
+
return;
|
|
55
|
+
}
|
|
56
|
+
cancelFrame(frame);
|
|
57
|
+
frame = null;
|
|
58
|
+
pending = false;
|
|
59
|
+
}
|
|
60
|
+
return {
|
|
61
|
+
syncViewportHeight,
|
|
62
|
+
scheduleViewportMeasure,
|
|
63
|
+
dispose,
|
|
64
|
+
};
|
|
65
|
+
}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
export interface UseDataGridViewportScrollLifecycleOptions {
|
|
2
|
+
isContextMenuVisible: () => boolean;
|
|
3
|
+
shouldCloseContextMenuOnScroll?: () => boolean;
|
|
4
|
+
closeContextMenu: () => void;
|
|
5
|
+
resolveScrollTop: () => number;
|
|
6
|
+
resolveScrollLeft: () => number;
|
|
7
|
+
setScrollTop: (value: number) => void;
|
|
8
|
+
setScrollLeft: (value: number) => void;
|
|
9
|
+
hasInlineEditor: () => boolean;
|
|
10
|
+
commitInlineEdit: () => void;
|
|
11
|
+
}
|
|
12
|
+
export interface UseDataGridViewportScrollLifecycleResult {
|
|
13
|
+
onViewportScroll: (event: Event) => void;
|
|
14
|
+
}
|
|
15
|
+
export declare function useDataGridViewportScrollLifecycle(options: UseDataGridViewportScrollLifecycleOptions): UseDataGridViewportScrollLifecycleResult;
|
|
16
|
+
//# sourceMappingURL=useDataGridViewportScrollLifecycle.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useDataGridViewportScrollLifecycle.d.ts","sourceRoot":"","sources":["../../src/useDataGridViewportScrollLifecycle.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,yCAAyC;IACxD,oBAAoB,EAAE,MAAM,OAAO,CAAA;IACnC,8BAA8B,CAAC,EAAE,MAAM,OAAO,CAAA;IAC9C,gBAAgB,EAAE,MAAM,IAAI,CAAA;IAC5B,gBAAgB,EAAE,MAAM,MAAM,CAAA;IAC9B,iBAAiB,EAAE,MAAM,MAAM,CAAA;IAC/B,YAAY,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAA;IACrC,aAAa,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAA;IACtC,eAAe,EAAE,MAAM,OAAO,CAAA;IAC9B,gBAAgB,EAAE,MAAM,IAAI,CAAA;CAC7B;AAED,MAAM,WAAW,wCAAwC;IACvD,gBAAgB,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,CAAA;CACzC;AAED,wBAAgB,kCAAkC,CAChD,OAAO,EAAE,yCAAyC,GACjD,wCAAwC,CA4B1C"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
export function useDataGridViewportScrollLifecycle(options) {
|
|
2
|
+
function onViewportScroll(event) {
|
|
3
|
+
const target = event.currentTarget;
|
|
4
|
+
if (!target) {
|
|
5
|
+
return;
|
|
6
|
+
}
|
|
7
|
+
const shouldCloseContextMenu = options.shouldCloseContextMenuOnScroll
|
|
8
|
+
? options.shouldCloseContextMenuOnScroll()
|
|
9
|
+
: true;
|
|
10
|
+
if (options.isContextMenuVisible() && shouldCloseContextMenu) {
|
|
11
|
+
options.closeContextMenu();
|
|
12
|
+
}
|
|
13
|
+
const nextTop = target.scrollTop;
|
|
14
|
+
const nextLeft = target.scrollLeft;
|
|
15
|
+
if (nextTop !== options.resolveScrollTop()) {
|
|
16
|
+
options.setScrollTop(nextTop);
|
|
17
|
+
}
|
|
18
|
+
if (nextLeft !== options.resolveScrollLeft()) {
|
|
19
|
+
options.setScrollLeft(nextLeft);
|
|
20
|
+
}
|
|
21
|
+
if (options.hasInlineEditor()) {
|
|
22
|
+
options.commitInlineEdit();
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
return {
|
|
26
|
+
onViewportScroll,
|
|
27
|
+
};
|
|
28
|
+
}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
export interface DataGridVirtualRange {
|
|
2
|
+
start: number;
|
|
3
|
+
end: number;
|
|
4
|
+
}
|
|
5
|
+
export interface DataGridVirtualWindowRowSnapshot {
|
|
6
|
+
colStart?: number;
|
|
7
|
+
colEnd?: number;
|
|
8
|
+
colTotal?: number;
|
|
9
|
+
rowStart: number;
|
|
10
|
+
rowEnd: number;
|
|
11
|
+
rowTotal: number;
|
|
12
|
+
overscan?: {
|
|
13
|
+
top?: number;
|
|
14
|
+
bottom?: number;
|
|
15
|
+
left?: number;
|
|
16
|
+
right?: number;
|
|
17
|
+
};
|
|
18
|
+
}
|
|
19
|
+
export interface UseDataGridVirtualRangeMetricsWindowOptions {
|
|
20
|
+
virtualWindow: DataGridVirtualWindowRowSnapshot;
|
|
21
|
+
rowHeight: number;
|
|
22
|
+
}
|
|
23
|
+
export type UseDataGridVirtualRangeMetricsOptions = UseDataGridVirtualRangeMetricsWindowOptions;
|
|
24
|
+
export interface DataGridVirtualRangeMetricsSnapshot {
|
|
25
|
+
virtualRange: DataGridVirtualRange;
|
|
26
|
+
spacerTopHeight: number;
|
|
27
|
+
spacerBottomHeight: number;
|
|
28
|
+
rangeLabel: string;
|
|
29
|
+
}
|
|
30
|
+
export declare function computeDataGridVirtualRange(options: UseDataGridVirtualRangeMetricsOptions): DataGridVirtualRange;
|
|
31
|
+
export declare function useDataGridVirtualRangeMetrics(options: UseDataGridVirtualRangeMetricsOptions): DataGridVirtualRangeMetricsSnapshot;
|
|
32
|
+
//# sourceMappingURL=useDataGridVirtualRangeMetrics.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useDataGridVirtualRangeMetrics.d.ts","sourceRoot":"","sources":["../../src/useDataGridVirtualRangeMetrics.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,oBAAoB;IACnC,KAAK,EAAE,MAAM,CAAA;IACb,GAAG,EAAE,MAAM,CAAA;CACZ;AAED,MAAM,WAAW,gCAAgC;IAC/C,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,QAAQ,EAAE,MAAM,CAAA;IAChB,MAAM,EAAE,MAAM,CAAA;IACd,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,2CAA2C;IAC1D,aAAa,EAAE,gCAAgC,CAAA;IAC/C,SAAS,EAAE,MAAM,CAAA;CAClB;AAED,MAAM,MAAM,qCAAqC,GAAG,2CAA2C,CAAA;AAE/F,MAAM,WAAW,mCAAmC;IAClD,YAAY,EAAE,oBAAoB,CAAA;IAClC,eAAe,EAAE,MAAM,CAAA;IACvB,kBAAkB,EAAE,MAAM,CAAA;IAC1B,UAAU,EAAE,MAAM,CAAA;CACnB;AAED,wBAAgB,2BAA2B,CACzC,OAAO,EAAE,qCAAqC,GAC7C,oBAAoB,CAQtB;AAED,wBAAgB,8BAA8B,CAC5C,OAAO,EAAE,qCAAqC,GAC7C,mCAAmC,CAiBrC"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
export function computeDataGridVirtualRange(options) {
|
|
2
|
+
const total = Math.max(0, Math.trunc(options.virtualWindow.rowTotal));
|
|
3
|
+
if (total === 0) {
|
|
4
|
+
return { start: 0, end: -1 };
|
|
5
|
+
}
|
|
6
|
+
const start = Math.max(0, Math.min(total - 1, Math.trunc(options.virtualWindow.rowStart)));
|
|
7
|
+
const end = Math.max(start, Math.min(total - 1, Math.trunc(options.virtualWindow.rowEnd)));
|
|
8
|
+
return { start, end };
|
|
9
|
+
}
|
|
10
|
+
export function useDataGridVirtualRangeMetrics(options) {
|
|
11
|
+
const virtualRange = computeDataGridVirtualRange(options);
|
|
12
|
+
const totalRows = Math.max(0, Math.trunc(options.virtualWindow.rowTotal));
|
|
13
|
+
const spacerTopHeight = Math.max(0, virtualRange.start * options.rowHeight);
|
|
14
|
+
const spacerBottomHeight = totalRows === 0 || virtualRange.end < virtualRange.start
|
|
15
|
+
? 0
|
|
16
|
+
: Math.max(0, (totalRows - (virtualRange.end + 1)) * options.rowHeight);
|
|
17
|
+
const rangeLabel = totalRows === 0 || virtualRange.end < virtualRange.start
|
|
18
|
+
? "0-0"
|
|
19
|
+
: `${virtualRange.start + 1}-${virtualRange.end + 1}`;
|
|
20
|
+
return {
|
|
21
|
+
virtualRange,
|
|
22
|
+
spacerTopHeight,
|
|
23
|
+
spacerBottomHeight,
|
|
24
|
+
rangeLabel,
|
|
25
|
+
};
|
|
26
|
+
}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
export interface DataGridVisibleRowsRange {
|
|
2
|
+
start: number;
|
|
3
|
+
end: number;
|
|
4
|
+
}
|
|
5
|
+
export interface UseDataGridVisibleRowsSyncSchedulerOptions<TRowSource, TVisibleRow> {
|
|
6
|
+
resolveRows: () => readonly TRowSource[];
|
|
7
|
+
resolveRange: () => DataGridVisibleRowsRange;
|
|
8
|
+
setRows: (rows: readonly TRowSource[]) => void;
|
|
9
|
+
syncRowsInRange: (range: DataGridVisibleRowsRange) => readonly TVisibleRow[];
|
|
10
|
+
applyVisibleRows: (rows: readonly TVisibleRow[]) => void;
|
|
11
|
+
requestAnimationFrame?: (callback: FrameRequestCallback) => number;
|
|
12
|
+
cancelAnimationFrame?: (handle: number) => void;
|
|
13
|
+
}
|
|
14
|
+
export interface UseDataGridVisibleRowsSyncSchedulerResult {
|
|
15
|
+
syncVisibleRows: () => void;
|
|
16
|
+
scheduleVisibleRowsSync: () => void;
|
|
17
|
+
resetVisibleRowsSyncCache: () => void;
|
|
18
|
+
dispose: () => void;
|
|
19
|
+
}
|
|
20
|
+
export declare function useDataGridVisibleRowsSyncScheduler<TRowSource, TVisibleRow>(options: UseDataGridVisibleRowsSyncSchedulerOptions<TRowSource, TVisibleRow>): UseDataGridVisibleRowsSyncSchedulerResult;
|
|
21
|
+
//# sourceMappingURL=useDataGridVisibleRowsSyncScheduler.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useDataGridVisibleRowsSyncScheduler.d.ts","sourceRoot":"","sources":["../../src/useDataGridVisibleRowsSyncScheduler.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,wBAAwB;IACvC,KAAK,EAAE,MAAM,CAAA;IACb,GAAG,EAAE,MAAM,CAAA;CACZ;AAED,MAAM,WAAW,0CAA0C,CAAC,UAAU,EAAE,WAAW;IACjF,WAAW,EAAE,MAAM,SAAS,UAAU,EAAE,CAAA;IACxC,YAAY,EAAE,MAAM,wBAAwB,CAAA;IAC5C,OAAO,EAAE,CAAC,IAAI,EAAE,SAAS,UAAU,EAAE,KAAK,IAAI,CAAA;IAC9C,eAAe,EAAE,CAAC,KAAK,EAAE,wBAAwB,KAAK,SAAS,WAAW,EAAE,CAAA;IAC5E,gBAAgB,EAAE,CAAC,IAAI,EAAE,SAAS,WAAW,EAAE,KAAK,IAAI,CAAA;IACxD,qBAAqB,CAAC,EAAE,CAAC,QAAQ,EAAE,oBAAoB,KAAK,MAAM,CAAA;IAClE,oBAAoB,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,CAAA;CAChD;AAED,MAAM,WAAW,yCAAyC;IACxD,eAAe,EAAE,MAAM,IAAI,CAAA;IAC3B,uBAAuB,EAAE,MAAM,IAAI,CAAA;IACnC,yBAAyB,EAAE,MAAM,IAAI,CAAA;IACrC,OAAO,EAAE,MAAM,IAAI,CAAA;CACpB;AAED,wBAAgB,mCAAmC,CAAC,UAAU,EAAE,WAAW,EACzE,OAAO,EAAE,0CAA0C,CAAC,UAAU,EAAE,WAAW,CAAC,GAC3E,yCAAyC,CA+E3C"}
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
export function useDataGridVisibleRowsSyncScheduler(options) {
|
|
2
|
+
const requestFrame = options.requestAnimationFrame ?? (callback => window.requestAnimationFrame(callback));
|
|
3
|
+
const cancelFrame = options.cancelAnimationFrame ?? (handle => window.cancelAnimationFrame(handle));
|
|
4
|
+
let frame = null;
|
|
5
|
+
let pending = false;
|
|
6
|
+
let lastSyncedRowsRef = null;
|
|
7
|
+
let lastSyncedRangeStart = Number.NaN;
|
|
8
|
+
let lastSyncedRangeEnd = Number.NaN;
|
|
9
|
+
function syncVisibleRows() {
|
|
10
|
+
const rows = options.resolveRows();
|
|
11
|
+
const range = options.resolveRange();
|
|
12
|
+
const hasSameRowsRef = lastSyncedRowsRef === rows;
|
|
13
|
+
const hasSameRange = lastSyncedRangeStart === range.start && lastSyncedRangeEnd === range.end;
|
|
14
|
+
if (hasSameRowsRef && hasSameRange) {
|
|
15
|
+
return;
|
|
16
|
+
}
|
|
17
|
+
if (!hasSameRowsRef) {
|
|
18
|
+
options.setRows(rows);
|
|
19
|
+
}
|
|
20
|
+
if (range.end < range.start) {
|
|
21
|
+
options.applyVisibleRows([]);
|
|
22
|
+
lastSyncedRowsRef = rows;
|
|
23
|
+
lastSyncedRangeStart = range.start;
|
|
24
|
+
lastSyncedRangeEnd = range.end;
|
|
25
|
+
return;
|
|
26
|
+
}
|
|
27
|
+
const nextVisibleRows = options.syncRowsInRange({
|
|
28
|
+
start: range.start,
|
|
29
|
+
end: range.end,
|
|
30
|
+
});
|
|
31
|
+
options.applyVisibleRows(nextVisibleRows);
|
|
32
|
+
lastSyncedRowsRef = rows;
|
|
33
|
+
lastSyncedRangeStart = range.start;
|
|
34
|
+
lastSyncedRangeEnd = range.end;
|
|
35
|
+
}
|
|
36
|
+
function flushVisibleRowsSync() {
|
|
37
|
+
frame = null;
|
|
38
|
+
pending = false;
|
|
39
|
+
syncVisibleRows();
|
|
40
|
+
}
|
|
41
|
+
function scheduleVisibleRowsSync() {
|
|
42
|
+
if (pending) {
|
|
43
|
+
return;
|
|
44
|
+
}
|
|
45
|
+
pending = true;
|
|
46
|
+
if (typeof window === "undefined") {
|
|
47
|
+
flushVisibleRowsSync();
|
|
48
|
+
return;
|
|
49
|
+
}
|
|
50
|
+
frame = requestFrame(() => flushVisibleRowsSync());
|
|
51
|
+
}
|
|
52
|
+
function resetVisibleRowsSyncCache() {
|
|
53
|
+
lastSyncedRowsRef = null;
|
|
54
|
+
lastSyncedRangeStart = Number.NaN;
|
|
55
|
+
lastSyncedRangeEnd = Number.NaN;
|
|
56
|
+
}
|
|
57
|
+
function dispose() {
|
|
58
|
+
if (frame !== null) {
|
|
59
|
+
cancelFrame(frame);
|
|
60
|
+
frame = null;
|
|
61
|
+
}
|
|
62
|
+
pending = false;
|
|
63
|
+
}
|
|
64
|
+
return {
|
|
65
|
+
syncVisibleRows,
|
|
66
|
+
scheduleVisibleRowsSync,
|
|
67
|
+
resetVisibleRowsSyncCache,
|
|
68
|
+
dispose,
|
|
69
|
+
};
|
|
70
|
+
}
|