@affino/datagrid-core 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 +108 -0
- package/dist/plugins/eventBus.d.ts +9 -0
- package/dist/plugins/eventBus.d.ts.map +1 -0
- package/dist/plugins/eventBus.js +46 -0
- package/dist/plugins/index.d.ts +3 -0
- package/dist/plugins/index.d.ts.map +1 -0
- package/dist/plugins/index.js +3 -0
- package/dist/plugins/manager.d.ts +24 -0
- package/dist/plugins/manager.d.ts.map +1 -0
- package/dist/plugins/manager.js +195 -0
- package/dist/plugins/types.d.ts +40 -0
- package/dist/plugins/types.d.ts.map +1 -0
- package/dist/plugins/types.js +3 -0
- package/dist/src/a11y/headlessA11yStateMachine.d.ts +60 -0
- package/dist/src/a11y/headlessA11yStateMachine.d.ts.map +1 -0
- package/dist/src/a11y/headlessA11yStateMachine.js +253 -0
- package/dist/src/a11y/index.d.ts +3 -0
- package/dist/src/a11y/index.d.ts.map +1 -0
- package/dist/src/a11y/index.js +1 -0
- package/dist/src/adapters/adapterRuntimeProtocol.d.ts +42 -0
- package/dist/src/adapters/adapterRuntimeProtocol.d.ts.map +1 -0
- package/dist/src/adapters/adapterRuntimeProtocol.js +29 -0
- package/dist/src/advanced.d.ts +15 -0
- package/dist/src/advanced.d.ts.map +1 -0
- package/dist/src/advanced.js +13 -0
- package/dist/src/clipboard/useTableClipboard.d.ts +46 -0
- package/dist/src/clipboard/useTableClipboard.d.ts.map +1 -0
- package/dist/src/clipboard/useTableClipboard.js +184 -0
- package/dist/src/columns/__tests__/pinning.spec.d.ts +2 -0
- package/dist/src/columns/__tests__/pinning.spec.d.ts.map +1 -0
- package/dist/src/columns/__tests__/pinning.spec.js +25 -0
- package/dist/src/columns/columnGroup.d.ts +68 -0
- package/dist/src/columns/columnGroup.d.ts.map +1 -0
- package/dist/src/columns/columnGroup.js +282 -0
- package/dist/src/columns/pinning.d.ts +11 -0
- package/dist/src/columns/pinning.d.ts.map +1 -0
- package/dist/src/columns/pinning.js +11 -0
- package/dist/src/config/tableConfig.d.ts +132 -0
- package/dist/src/config/tableConfig.d.ts.map +1 -0
- package/dist/src/config/tableConfig.js +357 -0
- package/dist/src/core/gridApi.d.ts +86 -0
- package/dist/src/core/gridApi.d.ts.map +1 -0
- package/dist/src/core/gridApi.js +296 -0
- package/dist/src/core/gridCore.d.ts +82 -0
- package/dist/src/core/gridCore.d.ts.map +1 -0
- package/dist/src/core/gridCore.js +134 -0
- package/dist/src/core/transactionService.d.ts +93 -0
- package/dist/src/core/transactionService.d.ts.map +1 -0
- package/dist/src/core/transactionService.js +470 -0
- package/dist/src/dataGridSettingsAdapter.d.ts +30 -0
- package/dist/src/dataGridSettingsAdapter.d.ts.map +1 -0
- package/dist/src/dataGridSettingsAdapter.js +253 -0
- package/dist/src/dom/domAdapters.d.ts +16 -0
- package/dist/src/dom/domAdapters.d.ts.map +1 -0
- package/dist/src/dom/domAdapters.js +1 -0
- package/dist/src/dom/getCellElementsByRange.d.ts +14 -0
- package/dist/src/dom/getCellElementsByRange.d.ts.map +1 -0
- package/dist/src/dom/getCellElementsByRange.js +69 -0
- package/dist/src/dom/gridUtils.d.ts +54 -0
- package/dist/src/dom/gridUtils.d.ts.map +1 -0
- package/dist/src/dom/gridUtils.js +134 -0
- package/dist/src/dom/hoverDelegation.d.ts +26 -0
- package/dist/src/dom/hoverDelegation.d.ts.map +1 -0
- package/dist/src/dom/hoverDelegation.js +157 -0
- package/dist/src/dom/measureColumnWidths.d.ts +3 -0
- package/dist/src/dom/measureColumnWidths.d.ts.map +1 -0
- package/dist/src/dom/measureColumnWidths.js +134 -0
- package/dist/src/dom/useCellFlash.d.ts +7 -0
- package/dist/src/dom/useCellFlash.d.ts.map +1 -0
- package/dist/src/dom/useCellFlash.js +21 -0
- package/dist/src/events/useTableEvents.d.ts +69 -0
- package/dist/src/events/useTableEvents.d.ts.map +1 -0
- package/dist/src/events/useTableEvents.js +204 -0
- package/dist/src/filtering/useColumnFilterMenuBridge.d.ts +17 -0
- package/dist/src/filtering/useColumnFilterMenuBridge.d.ts.map +1 -0
- package/dist/src/filtering/useColumnFilterMenuBridge.js +36 -0
- package/dist/src/filters/filterSerialization.d.ts +4 -0
- package/dist/src/filters/filterSerialization.d.ts.map +1 -0
- package/dist/src/filters/filterSerialization.js +51 -0
- package/dist/src/history/tableHistory.d.ts +28 -0
- package/dist/src/history/tableHistory.d.ts.map +1 -0
- package/dist/src/history/tableHistory.js +90 -0
- package/dist/src/imperative/bindings.d.ts +158 -0
- package/dist/src/imperative/bindings.d.ts.map +1 -0
- package/dist/src/imperative/bindings.js +1 -0
- package/dist/src/imperative/constants.d.ts +3 -0
- package/dist/src/imperative/constants.d.ts.map +1 -0
- package/dist/src/imperative/constants.js +2 -0
- package/dist/src/imperative/dom.d.ts +7 -0
- package/dist/src/imperative/dom.d.ts.map +1 -0
- package/dist/src/imperative/dom.js +82 -0
- package/dist/src/imperative/editor.d.ts +27 -0
- package/dist/src/imperative/editor.d.ts.map +1 -0
- package/dist/src/imperative/editor.js +152 -0
- package/dist/src/imperative/engine/ImperativeTableEngine.d.ts +127 -0
- package/dist/src/imperative/engine/ImperativeTableEngine.d.ts.map +1 -0
- package/dist/src/imperative/engine/ImperativeTableEngine.js +277 -0
- package/dist/src/imperative/engine/controllers/BlueprintManager.d.ts +22 -0
- package/dist/src/imperative/engine/controllers/BlueprintManager.d.ts.map +1 -0
- package/dist/src/imperative/engine/controllers/BlueprintManager.js +95 -0
- package/dist/src/imperative/engine/controllers/CellRenderer.d.ts +36 -0
- package/dist/src/imperative/engine/controllers/CellRenderer.d.ts.map +1 -0
- package/dist/src/imperative/engine/controllers/CellRenderer.js +533 -0
- package/dist/src/imperative/engine/controllers/EditorController.d.ts +14 -0
- package/dist/src/imperative/engine/controllers/EditorController.d.ts.map +1 -0
- package/dist/src/imperative/engine/controllers/EditorController.js +27 -0
- package/dist/src/imperative/engine/controllers/InteractionController.d.ts +78 -0
- package/dist/src/imperative/engine/controllers/InteractionController.d.ts.map +1 -0
- package/dist/src/imperative/engine/controllers/InteractionController.js +834 -0
- package/dist/src/imperative/engine/controllers/RowController.d.ts +71 -0
- package/dist/src/imperative/engine/controllers/RowController.d.ts.map +1 -0
- package/dist/src/imperative/engine/controllers/RowController.js +571 -0
- package/dist/src/imperative/engine.d.ts +5 -0
- package/dist/src/imperative/engine.d.ts.map +1 -0
- package/dist/src/imperative/engine.js +2 -0
- package/dist/src/imperative/noopControllerSuite.d.ts +4 -0
- package/dist/src/imperative/noopControllerSuite.d.ts.map +1 -0
- package/dist/src/imperative/noopControllerSuite.js +43 -0
- package/dist/src/imperative/styling.d.ts +40 -0
- package/dist/src/imperative/styling.d.ts.map +1 -0
- package/dist/src/imperative/styling.js +123 -0
- package/dist/src/imperative/types.d.ts +160 -0
- package/dist/src/imperative/types.d.ts.map +1 -0
- package/dist/src/imperative/types.js +7 -0
- package/dist/src/imperative/viewConfig.d.ts +64 -0
- package/dist/src/imperative/viewConfig.d.ts.map +1 -0
- package/dist/src/imperative/viewConfig.js +80 -0
- package/dist/src/index.d.ts +2 -0
- package/dist/src/index.d.ts.map +1 -0
- package/dist/src/index.js +1 -0
- package/dist/src/internal.d.ts +6 -0
- package/dist/src/internal.d.ts.map +1 -0
- package/dist/src/internal.js +5 -0
- package/dist/src/models/advancedFilter.d.ts +7 -0
- package/dist/src/models/advancedFilter.d.ts.map +1 -0
- package/dist/src/models/advancedFilter.js +448 -0
- package/dist/src/models/clientRowModel.d.ts +36 -0
- package/dist/src/models/clientRowModel.d.ts.map +1 -0
- package/dist/src/models/clientRowModel.js +1180 -0
- package/dist/src/models/columnModel.d.ts +40 -0
- package/dist/src/models/columnModel.d.ts.map +1 -0
- package/dist/src/models/columnModel.js +217 -0
- package/dist/src/models/dataSourceBackedRowModel.d.ts +20 -0
- package/dist/src/models/dataSourceBackedRowModel.d.ts.map +1 -0
- package/dist/src/models/dataSourceBackedRowModel.js +842 -0
- package/dist/src/models/dataSourceProtocol.d.ts +78 -0
- package/dist/src/models/dataSourceProtocol.d.ts.map +1 -0
- package/dist/src/models/dataSourceProtocol.js +1 -0
- package/dist/src/models/editModel.d.ts +27 -0
- package/dist/src/models/editModel.d.ts.map +1 -0
- package/dist/src/models/editModel.js +164 -0
- package/dist/src/models/index.d.ts +15 -0
- package/dist/src/models/index.d.ts.map +1 -0
- package/dist/src/models/index.js +7 -0
- package/dist/src/models/rowModel.d.ts +221 -0
- package/dist/src/models/rowModel.d.ts.map +1 -0
- package/dist/src/models/rowModel.js +496 -0
- package/dist/src/models/serverBackedRowModel.d.ts +18 -0
- package/dist/src/models/serverBackedRowModel.d.ts.map +1 -0
- package/dist/src/models/serverBackedRowModel.js +712 -0
- package/dist/src/protocol/eventContractTiers.d.ts +39 -0
- package/dist/src/protocol/eventContractTiers.d.ts.map +1 -0
- package/dist/src/protocol/eventContractTiers.js +16 -0
- package/dist/src/protocol/index.d.ts +7 -0
- package/dist/src/protocol/index.d.ts.map +1 -0
- package/dist/src/protocol/index.js +3 -0
- package/dist/src/protocol/publicProtocolCodemod.d.ts +7 -0
- package/dist/src/protocol/publicProtocolCodemod.d.ts.map +1 -0
- package/dist/src/protocol/publicProtocolCodemod.js +204 -0
- package/dist/src/protocol/versionedPublicProtocol.d.ts +35 -0
- package/dist/src/protocol/versionedPublicProtocol.d.ts.map +1 -0
- package/dist/src/protocol/versionedPublicProtocol.js +88 -0
- package/dist/src/public.d.ts +14 -0
- package/dist/src/public.d.ts.map +1 -0
- package/dist/src/public.js +13 -0
- package/dist/src/runtime/dataGridRuntime.d.ts +85 -0
- package/dist/src/runtime/dataGridRuntime.d.ts.map +1 -0
- package/dist/src/runtime/dataGridRuntime.js +142 -0
- package/dist/src/runtime/frameRequestScheduler.d.ts +14 -0
- package/dist/src/runtime/frameRequestScheduler.d.ts.map +1 -0
- package/dist/src/runtime/frameRequestScheduler.js +71 -0
- package/dist/src/runtime/frameScheduler.d.ts +14 -0
- package/dist/src/runtime/frameScheduler.d.ts.map +1 -0
- package/dist/src/runtime/frameScheduler.js +80 -0
- package/dist/src/runtime/idleCallbackScheduler.d.ts +17 -0
- package/dist/src/runtime/idleCallbackScheduler.d.ts.map +1 -0
- package/dist/src/runtime/idleCallbackScheduler.js +72 -0
- package/dist/src/runtime/measurementQueue.d.ts +17 -0
- package/dist/src/runtime/measurementQueue.d.ts.map +1 -0
- package/dist/src/runtime/measurementQueue.js +105 -0
- package/dist/src/runtime/rafScheduler.d.ts +20 -0
- package/dist/src/runtime/rafScheduler.d.ts.map +1 -0
- package/dist/src/runtime/rafScheduler.js +114 -0
- package/dist/src/runtime/signals.d.ts +6 -0
- package/dist/src/runtime/signals.d.ts.map +1 -0
- package/dist/src/runtime/signals.js +3 -0
- package/dist/src/runtime/tableRuntime.d.ts +85 -0
- package/dist/src/runtime/tableRuntime.d.ts.map +1 -0
- package/dist/src/runtime/tableRuntime.js +140 -0
- package/dist/src/selection/__tests__/coordinateSpace.contract.spec.d.ts +2 -0
- package/dist/src/selection/__tests__/coordinateSpace.contract.spec.d.ts.map +1 -0
- package/dist/src/selection/__tests__/coordinateSpace.contract.spec.js +51 -0
- package/dist/src/selection/__tests__/geometry.ranges.property.spec.d.ts +2 -0
- package/dist/src/selection/__tests__/geometry.ranges.property.spec.d.ts.map +1 -0
- package/dist/src/selection/__tests__/geometry.ranges.property.spec.js +88 -0
- package/dist/src/selection/__tests__/overlay.fill.geometry.contract.spec.d.ts +2 -0
- package/dist/src/selection/__tests__/overlay.fill.geometry.contract.spec.d.ts.map +1 -0
- package/dist/src/selection/__tests__/overlay.fill.geometry.contract.spec.js +202 -0
- package/dist/src/selection/adapters/plainSelectionAdapter.d.ts +40 -0
- package/dist/src/selection/adapters/plainSelectionAdapter.d.ts.map +1 -0
- package/dist/src/selection/adapters/plainSelectionAdapter.js +109 -0
- package/dist/src/selection/autoScroll.d.ts +34 -0
- package/dist/src/selection/autoScroll.d.ts.map +1 -0
- package/dist/src/selection/autoScroll.js +111 -0
- package/dist/src/selection/coordinateSpace.d.ts +19 -0
- package/dist/src/selection/coordinateSpace.d.ts.map +1 -0
- package/dist/src/selection/coordinateSpace.js +45 -0
- package/dist/src/selection/cutPreview.d.ts +18 -0
- package/dist/src/selection/cutPreview.d.ts.map +1 -0
- package/dist/src/selection/cutPreview.js +51 -0
- package/dist/src/selection/dragSession.d.ts +23 -0
- package/dist/src/selection/dragSession.d.ts.map +1 -0
- package/dist/src/selection/dragSession.js +25 -0
- package/dist/src/selection/fillAuto.d.ts +11 -0
- package/dist/src/selection/fillAuto.d.ts.map +1 -0
- package/dist/src/selection/fillAuto.js +39 -0
- package/dist/src/selection/fillCommit.d.ts +22 -0
- package/dist/src/selection/fillCommit.d.ts.map +1 -0
- package/dist/src/selection/fillCommit.js +54 -0
- package/dist/src/selection/fillHandle.d.ts +51 -0
- package/dist/src/selection/fillHandle.d.ts.map +1 -0
- package/dist/src/selection/fillHandle.js +162 -0
- package/dist/src/selection/fillHandleStylePool.d.ts +14 -0
- package/dist/src/selection/fillHandleStylePool.d.ts.map +1 -0
- package/dist/src/selection/fillHandleStylePool.js +78 -0
- package/dist/src/selection/fillPreview.d.ts +17 -0
- package/dist/src/selection/fillPreview.d.ts.map +1 -0
- package/dist/src/selection/fillPreview.js +89 -0
- package/dist/src/selection/fillSession.d.ts +23 -0
- package/dist/src/selection/fillSession.d.ts.map +1 -0
- package/dist/src/selection/fillSession.js +108 -0
- package/dist/src/selection/fullSelection.d.ts +20 -0
- package/dist/src/selection/fullSelection.d.ts.map +1 -0
- package/dist/src/selection/fullSelection.js +81 -0
- package/dist/src/selection/geometry.d.ts +22 -0
- package/dist/src/selection/geometry.d.ts.map +1 -0
- package/dist/src/selection/geometry.js +99 -0
- package/dist/src/selection/headlessSelectionController.d.ts +45 -0
- package/dist/src/selection/headlessSelectionController.d.ts.map +1 -0
- package/dist/src/selection/headlessSelectionController.js +170 -0
- package/dist/src/selection/matrix.d.ts +16 -0
- package/dist/src/selection/matrix.d.ts.map +1 -0
- package/dist/src/selection/matrix.js +114 -0
- package/dist/src/selection/moveSelection.d.ts +18 -0
- package/dist/src/selection/moveSelection.d.ts.map +1 -0
- package/dist/src/selection/moveSelection.js +76 -0
- package/dist/src/selection/operations.d.ts +40 -0
- package/dist/src/selection/operations.d.ts.map +1 -0
- package/dist/src/selection/operations.js +155 -0
- package/dist/src/selection/remap.d.ts +25 -0
- package/dist/src/selection/remap.d.ts.map +1 -0
- package/dist/src/selection/remap.js +76 -0
- package/dist/src/selection/selectionEnvironment.d.ts +64 -0
- package/dist/src/selection/selectionEnvironment.d.ts.map +1 -0
- package/dist/src/selection/selectionEnvironment.js +1 -0
- package/dist/src/selection/selectionMetrics.d.ts +18 -0
- package/dist/src/selection/selectionMetrics.d.ts.map +1 -0
- package/dist/src/selection/selectionMetrics.js +177 -0
- package/dist/src/selection/selectionOverlay.d.ts +54 -0
- package/dist/src/selection/selectionOverlay.d.ts.map +1 -0
- package/dist/src/selection/selectionOverlay.js +319 -0
- package/dist/src/selection/selectionOverlayRectPool.d.ts +28 -0
- package/dist/src/selection/selectionOverlayRectPool.d.ts.map +1 -0
- package/dist/src/selection/selectionOverlayRectPool.js +127 -0
- package/dist/src/selection/selectionState.d.ts +73 -0
- package/dist/src/selection/selectionState.d.ts.map +1 -0
- package/dist/src/selection/selectionState.js +333 -0
- package/dist/src/selection/selectionStore.d.ts +15 -0
- package/dist/src/selection/selectionStore.d.ts.map +1 -0
- package/dist/src/selection/selectionStore.js +148 -0
- package/dist/src/selection/selectionSummary.d.ts +34 -0
- package/dist/src/selection/selectionSummary.d.ts.map +1 -0
- package/dist/src/selection/selectionSummary.js +232 -0
- package/dist/src/selection/snapshot.d.ts +27 -0
- package/dist/src/selection/snapshot.d.ts.map +1 -0
- package/dist/src/selection/snapshot.js +45 -0
- package/dist/src/selection/update.d.ts +23 -0
- package/dist/src/selection/update.d.ts.map +1 -0
- package/dist/src/selection/update.js +74 -0
- package/dist/src/serverRowModel/index.d.ts +2 -0
- package/dist/src/serverRowModel/index.d.ts.map +1 -0
- package/dist/src/serverRowModel/index.js +1 -0
- package/dist/src/serverRowModel/serverRowModel.d.ts +106 -0
- package/dist/src/serverRowModel/serverRowModel.d.ts.map +1 -0
- package/dist/src/serverRowModel/serverRowModel.js +636 -0
- package/dist/src/sorting/tableSorting.d.ts +31 -0
- package/dist/src/sorting/tableSorting.d.ts.map +1 -0
- package/dist/src/sorting/tableSorting.js +194 -0
- package/dist/src/state/sharedStateContainer.d.ts +19 -0
- package/dist/src/state/sharedStateContainer.d.ts.map +1 -0
- package/dist/src/state/sharedStateContainer.js +168 -0
- package/dist/src/tableSettingsAdapter.d.ts +22 -0
- package/dist/src/tableSettingsAdapter.d.ts.map +1 -0
- package/dist/src/tableSettingsAdapter.js +100 -0
- package/dist/src/themes.d.ts +3 -0
- package/dist/src/themes.d.ts.map +1 -0
- package/dist/src/themes.js +106 -0
- package/dist/src/types/base.d.ts +286 -0
- package/dist/src/types/base.d.ts.map +1 -0
- package/dist/src/types/base.js +1 -0
- package/dist/src/types/column.d.ts +58 -0
- package/dist/src/types/column.d.ts.map +1 -0
- package/dist/src/types/column.js +1 -0
- package/dist/src/types/experimental.d.ts +6 -0
- package/dist/src/types/experimental.d.ts.map +1 -0
- package/dist/src/types/experimental.js +1 -0
- package/dist/src/types/filters.d.ts +41 -0
- package/dist/src/types/filters.d.ts.map +1 -0
- package/dist/src/types/filters.js +1 -0
- package/dist/src/types/index.d.ts +10 -0
- package/dist/src/types/index.d.ts.map +1 -0
- package/dist/src/types/index.js +9 -0
- package/dist/src/types/internal.d.ts +2 -0
- package/dist/src/types/internal.d.ts.map +1 -0
- package/dist/src/types/internal.js +1 -0
- package/dist/src/types/sort.d.ts +2 -0
- package/dist/src/types/sort.d.ts.map +1 -0
- package/dist/src/types/sort.js +1 -0
- package/dist/src/types/stable.d.ts +6 -0
- package/dist/src/types/stable.d.ts.map +1 -0
- package/dist/src/types/stable.js +1 -0
- package/dist/src/utils/constants.d.ts +15 -0
- package/dist/src/utils/constants.d.ts.map +1 -0
- package/dist/src/utils/constants.js +22 -0
- package/dist/src/utils/debug.d.ts +2 -0
- package/dist/src/utils/debug.d.ts.map +1 -0
- package/dist/src/utils/debug.js +8 -0
- package/dist/src/utils/validators.d.ts +12 -0
- package/dist/src/utils/validators.d.ts.map +1 -0
- package/dist/src/utils/validators.js +72 -0
- package/dist/src/viewport/__tests__/horizontalClamp.contract.spec.d.ts +2 -0
- package/dist/src/viewport/__tests__/horizontalClamp.contract.spec.d.ts.map +1 -0
- package/dist/src/viewport/__tests__/horizontalClamp.contract.spec.js +56 -0
- package/dist/src/viewport/__tests__/horizontalUpdate.contract.spec.d.ts +2 -0
- package/dist/src/viewport/__tests__/horizontalUpdate.contract.spec.d.ts.map +1 -0
- package/dist/src/viewport/__tests__/horizontalUpdate.contract.spec.js +87 -0
- package/dist/src/viewport/__tests__/horizontalVirtualization.stress.contract.spec.d.ts +2 -0
- package/dist/src/viewport/__tests__/horizontalVirtualization.stress.contract.spec.d.ts.map +1 -0
- package/dist/src/viewport/__tests__/horizontalVirtualization.stress.contract.spec.js +174 -0
- package/dist/src/viewport/__tests__/scrollSync.raf.spec.d.ts +2 -0
- package/dist/src/viewport/__tests__/scrollSync.raf.spec.d.ts.map +1 -0
- package/dist/src/viewport/__tests__/scrollSync.raf.spec.js +221 -0
- package/dist/src/viewport/__tests__/scrollSync.transforms.spec.d.ts +2 -0
- package/dist/src/viewport/__tests__/scrollSync.transforms.spec.d.ts.map +1 -0
- package/dist/src/viewport/__tests__/scrollSync.transforms.spec.js +87 -0
- package/dist/src/viewport/__tests__/syncTargets.contract.spec.d.ts +2 -0
- package/dist/src/viewport/__tests__/syncTargets.contract.spec.d.ts.map +1 -0
- package/dist/src/viewport/__tests__/syncTargets.contract.spec.js +45 -0
- package/dist/src/viewport/__tests__/utils/fakeRafScheduler.d.ts +8 -0
- package/dist/src/viewport/__tests__/utils/fakeRafScheduler.d.ts.map +1 -0
- package/dist/src/viewport/__tests__/utils/fakeRafScheduler.js +101 -0
- package/dist/src/viewport/dataGridViewportConfig.d.ts +13 -0
- package/dist/src/viewport/dataGridViewportConfig.d.ts.map +1 -0
- package/dist/src/viewport/dataGridViewportConfig.js +219 -0
- package/dist/src/viewport/dataGridViewportConstants.d.ts +24 -0
- package/dist/src/viewport/dataGridViewportConstants.d.ts.map +1 -0
- package/dist/src/viewport/dataGridViewportConstants.js +32 -0
- package/dist/src/viewport/dataGridViewportController.d.ts +38 -0
- package/dist/src/viewport/dataGridViewportController.d.ts.map +1 -0
- package/dist/src/viewport/dataGridViewportController.js +1590 -0
- package/dist/src/viewport/dataGridViewportDiagnostics.d.ts +34 -0
- package/dist/src/viewport/dataGridViewportDiagnostics.d.ts.map +1 -0
- package/dist/src/viewport/dataGridViewportDiagnostics.js +246 -0
- package/dist/src/viewport/dataGridViewportEnvironment.d.ts +21 -0
- package/dist/src/viewport/dataGridViewportEnvironment.d.ts.map +1 -0
- package/dist/src/viewport/dataGridViewportEnvironment.js +98 -0
- package/dist/src/viewport/dataGridViewportHorizontalClamp.d.ts +20 -0
- package/dist/src/viewport/dataGridViewportHorizontalClamp.d.ts.map +1 -0
- package/dist/src/viewport/dataGridViewportHorizontalClamp.js +46 -0
- package/dist/src/viewport/dataGridViewportHorizontalMeta.d.ts +37 -0
- package/dist/src/viewport/dataGridViewportHorizontalMeta.d.ts.map +1 -0
- package/dist/src/viewport/dataGridViewportHorizontalMeta.js +70 -0
- package/dist/src/viewport/dataGridViewportHorizontalUpdate.d.ts +96 -0
- package/dist/src/viewport/dataGridViewportHorizontalUpdate.d.ts.map +1 -0
- package/dist/src/viewport/dataGridViewportHorizontalUpdate.js +162 -0
- package/dist/src/viewport/dataGridViewportLayoutCache.d.ts +29 -0
- package/dist/src/viewport/dataGridViewportLayoutCache.d.ts.map +1 -0
- package/dist/src/viewport/dataGridViewportLayoutCache.js +109 -0
- package/dist/src/viewport/dataGridViewportMath.d.ts +74 -0
- package/dist/src/viewport/dataGridViewportMath.d.ts.map +1 -0
- package/dist/src/viewport/dataGridViewportMath.js +102 -0
- package/dist/src/viewport/dataGridViewportModelBridgeService.d.ts +34 -0
- package/dist/src/viewport/dataGridViewportModelBridgeService.d.ts.map +1 -0
- package/dist/src/viewport/dataGridViewportModelBridgeService.js +456 -0
- package/dist/src/viewport/dataGridViewportRenderSyncService.d.ts +20 -0
- package/dist/src/viewport/dataGridViewportRenderSyncService.d.ts.map +1 -0
- package/dist/src/viewport/dataGridViewportRenderSyncService.js +90 -0
- package/dist/src/viewport/dataGridViewportResizeAdapter.d.ts +3 -0
- package/dist/src/viewport/dataGridViewportResizeAdapter.d.ts.map +1 -0
- package/dist/src/viewport/dataGridViewportResizeAdapter.js +39 -0
- package/dist/src/viewport/dataGridViewportRowHeightCache.d.ts +25 -0
- package/dist/src/viewport/dataGridViewportRowHeightCache.d.ts.map +1 -0
- package/dist/src/viewport/dataGridViewportRowHeightCache.js +154 -0
- package/dist/src/viewport/dataGridViewportScrollIo.d.ts +93 -0
- package/dist/src/viewport/dataGridViewportScrollIo.d.ts.map +1 -0
- package/dist/src/viewport/dataGridViewportScrollIo.js +342 -0
- package/dist/src/viewport/dataGridViewportSignals.d.ts +100 -0
- package/dist/src/viewport/dataGridViewportSignals.d.ts.map +1 -0
- package/dist/src/viewport/dataGridViewportSignals.js +102 -0
- package/dist/src/viewport/dataGridViewportTypes.d.ts +150 -0
- package/dist/src/viewport/dataGridViewportTypes.d.ts.map +1 -0
- package/dist/src/viewport/dataGridViewportTypes.js +1 -0
- package/dist/src/viewport/dataGridViewportVirtualization.d.ts +75 -0
- package/dist/src/viewport/dataGridViewportVirtualization.d.ts.map +1 -0
- package/dist/src/viewport/dataGridViewportVirtualization.js +481 -0
- package/dist/src/viewport/horizontalViewportController.d.ts +49 -0
- package/dist/src/viewport/horizontalViewportController.d.ts.map +1 -0
- package/dist/src/viewport/horizontalViewportController.js +357 -0
- package/dist/src/viewport/scrollSync.d.ts +9 -0
- package/dist/src/viewport/scrollSync.d.ts.map +1 -0
- package/dist/src/viewport/scrollSync.js +105 -0
- package/dist/src/viewport/tableViewportConfig.d.ts +13 -0
- package/dist/src/viewport/tableViewportConfig.d.ts.map +1 -0
- package/dist/src/viewport/tableViewportConfig.js +187 -0
- package/dist/src/viewport/tableViewportConstants.d.ts +24 -0
- package/dist/src/viewport/tableViewportConstants.d.ts.map +1 -0
- package/dist/src/viewport/tableViewportConstants.js +32 -0
- package/dist/src/viewport/tableViewportController.d.ts +37 -0
- package/dist/src/viewport/tableViewportController.d.ts.map +1 -0
- package/dist/src/viewport/tableViewportController.js +1124 -0
- package/dist/src/viewport/tableViewportDiagnostics.d.ts +34 -0
- package/dist/src/viewport/tableViewportDiagnostics.d.ts.map +1 -0
- package/dist/src/viewport/tableViewportDiagnostics.js +246 -0
- package/dist/src/viewport/tableViewportEnvironment.d.ts +18 -0
- package/dist/src/viewport/tableViewportEnvironment.d.ts.map +1 -0
- package/dist/src/viewport/tableViewportEnvironment.js +60 -0
- package/dist/src/viewport/tableViewportHorizontalClamp.d.ts +20 -0
- package/dist/src/viewport/tableViewportHorizontalClamp.d.ts.map +1 -0
- package/dist/src/viewport/tableViewportHorizontalClamp.js +46 -0
- package/dist/src/viewport/tableViewportHorizontalMeta.d.ts +37 -0
- package/dist/src/viewport/tableViewportHorizontalMeta.d.ts.map +1 -0
- package/dist/src/viewport/tableViewportHorizontalMeta.js +48 -0
- package/dist/src/viewport/tableViewportHorizontalUpdate.d.ts +96 -0
- package/dist/src/viewport/tableViewportHorizontalUpdate.d.ts.map +1 -0
- package/dist/src/viewport/tableViewportHorizontalUpdate.js +162 -0
- package/dist/src/viewport/tableViewportLayoutCache.d.ts +29 -0
- package/dist/src/viewport/tableViewportLayoutCache.d.ts.map +1 -0
- package/dist/src/viewport/tableViewportLayoutCache.js +109 -0
- package/dist/src/viewport/tableViewportMath.d.ts +78 -0
- package/dist/src/viewport/tableViewportMath.d.ts.map +1 -0
- package/dist/src/viewport/tableViewportMath.js +104 -0
- package/dist/src/viewport/tableViewportModelBridgeService.d.ts +24 -0
- package/dist/src/viewport/tableViewportModelBridgeService.d.ts.map +1 -0
- package/dist/src/viewport/tableViewportModelBridgeService.js +226 -0
- package/dist/src/viewport/tableViewportRenderSyncService.d.ts +20 -0
- package/dist/src/viewport/tableViewportRenderSyncService.d.ts.map +1 -0
- package/dist/src/viewport/tableViewportRenderSyncService.js +90 -0
- package/dist/src/viewport/tableViewportResizeAdapter.d.ts +3 -0
- package/dist/src/viewport/tableViewportResizeAdapter.d.ts.map +1 -0
- package/dist/src/viewport/tableViewportResizeAdapter.js +39 -0
- package/dist/src/viewport/tableViewportScrollIo.d.ts +93 -0
- package/dist/src/viewport/tableViewportScrollIo.d.ts.map +1 -0
- package/dist/src/viewport/tableViewportScrollIo.js +342 -0
- package/dist/src/viewport/tableViewportScrollState.d.ts +35 -0
- package/dist/src/viewport/tableViewportScrollState.d.ts.map +1 -0
- package/dist/src/viewport/tableViewportScrollState.js +136 -0
- package/dist/src/viewport/tableViewportSignals.d.ts +100 -0
- package/dist/src/viewport/tableViewportSignals.d.ts.map +1 -0
- package/dist/src/viewport/tableViewportSignals.js +102 -0
- package/dist/src/viewport/tableViewportTypes.d.ts +114 -0
- package/dist/src/viewport/tableViewportTypes.d.ts.map +1 -0
- package/dist/src/viewport/tableViewportTypes.js +1 -0
- package/dist/src/viewport/tableViewportVirtualization.d.ts +75 -0
- package/dist/src/viewport/tableViewportVirtualization.d.ts.map +1 -0
- package/dist/src/viewport/tableViewportVirtualization.js +468 -0
- package/dist/src/viewport/verticalViewportController.d.ts +56 -0
- package/dist/src/viewport/verticalViewportController.d.ts.map +1 -0
- package/dist/src/viewport/verticalViewportController.js +189 -0
- package/dist/src/viewport/viewportHostEnvironment.d.ts +40 -0
- package/dist/src/viewport/viewportHostEnvironment.d.ts.map +1 -0
- package/dist/src/viewport/viewportHostEnvironment.js +1 -0
- package/dist/src/virtualization/autoColumnResize.d.ts +41 -0
- package/dist/src/virtualization/autoColumnResize.d.ts.map +1 -0
- package/dist/src/virtualization/autoColumnResize.js +163 -0
- package/dist/src/virtualization/axisMath.d.ts +10 -0
- package/dist/src/virtualization/axisMath.d.ts.map +1 -0
- package/dist/src/virtualization/axisMath.js +72 -0
- package/dist/src/virtualization/axisVirtualizer.d.ts +49 -0
- package/dist/src/virtualization/axisVirtualizer.d.ts.map +1 -0
- package/dist/src/virtualization/axisVirtualizer.js +117 -0
- package/dist/src/virtualization/columnSizing.d.ts +32 -0
- package/dist/src/virtualization/columnSizing.d.ts.map +1 -0
- package/dist/src/virtualization/columnSizing.js +172 -0
- package/dist/src/virtualization/columnSnapshot.d.ts +73 -0
- package/dist/src/virtualization/columnSnapshot.d.ts.map +1 -0
- package/dist/src/virtualization/columnSnapshot.js +170 -0
- package/dist/src/virtualization/dynamicOverscan.d.ts +61 -0
- package/dist/src/virtualization/dynamicOverscan.d.ts.map +1 -0
- package/dist/src/virtualization/dynamicOverscan.js +149 -0
- package/dist/src/virtualization/horizontalLayout.d.ts +35 -0
- package/dist/src/virtualization/horizontalLayout.d.ts.map +1 -0
- package/dist/src/virtualization/horizontalLayout.js +80 -0
- package/dist/src/virtualization/horizontalVirtualWindowMath.d.ts +47 -0
- package/dist/src/virtualization/horizontalVirtualWindowMath.d.ts.map +1 -0
- package/dist/src/virtualization/horizontalVirtualWindowMath.js +135 -0
- package/dist/src/virtualization/horizontalVirtualizer.d.ts +35 -0
- package/dist/src/virtualization/horizontalVirtualizer.d.ts.map +1 -0
- package/dist/src/virtualization/horizontalVirtualizer.js +182 -0
- package/dist/src/virtualization/overscan.d.ts +9 -0
- package/dist/src/virtualization/overscan.d.ts.map +1 -0
- package/dist/src/virtualization/overscan.js +51 -0
- package/dist/src/virtualization/scrollLimits.d.ts +28 -0
- package/dist/src/virtualization/scrollLimits.d.ts.map +1 -0
- package/dist/src/virtualization/scrollLimits.js +68 -0
- package/dist/src/virtualization/types.d.ts +2 -0
- package/dist/src/virtualization/types.d.ts.map +1 -0
- package/dist/src/virtualization/types.js +1 -0
- package/dist/src/virtualization/useAutoColumnResize.d.ts +18 -0
- package/dist/src/virtualization/useAutoColumnResize.d.ts.map +1 -0
- package/dist/src/virtualization/useAutoColumnResize.js +38 -0
- package/dist/src/virtualization/verticalVirtualizer.d.ts +12 -0
- package/dist/src/virtualization/verticalVirtualizer.d.ts.map +1 -0
- package/dist/src/virtualization/verticalVirtualizer.js +77 -0
- package/dist/theme/colorUtils.d.ts +6 -0
- package/dist/theme/colorUtils.d.ts.map +1 -0
- package/dist/theme/colorUtils.js +53 -0
- package/dist/theme/defaultStyleConfig.d.ts +3 -0
- package/dist/theme/defaultStyleConfig.d.ts.map +1 -0
- package/dist/theme/defaultStyleConfig.js +33 -0
- package/dist/theme/defaultThemeTokens.d.ts +3 -0
- package/dist/theme/defaultThemeTokens.d.ts.map +1 -0
- package/dist/theme/defaultThemeTokens.js +50 -0
- package/dist/theme/index.d.ts +9 -0
- package/dist/theme/index.d.ts.map +1 -0
- package/dist/theme/index.js +9 -0
- package/dist/theme/industrialNeutralTheme.d.ts +6 -0
- package/dist/theme/industrialNeutralTheme.d.ts.map +1 -0
- package/dist/theme/industrialNeutralTheme.js +109 -0
- package/dist/theme/palette.d.ts +25 -0
- package/dist/theme/palette.d.ts.map +1 -0
- package/dist/theme/palette.js +26 -0
- package/dist/theme/tokens.d.ts +3 -0
- package/dist/theme/tokens.d.ts.map +1 -0
- package/dist/theme/tokens.js +52 -0
- package/dist/theme/types.d.ts +104 -0
- package/dist/theme/types.d.ts.map +1 -0
- package/dist/theme/types.js +3 -0
- package/dist/theme/utils.d.ts +6 -0
- package/dist/theme/utils.d.ts.map +1 -0
- package/dist/theme/utils.js +14 -0
- package/dist/tsconfig.public.tsbuildinfo +1 -0
- package/dist/tsconfig.tsbuildinfo +1 -0
- package/package.json +65 -0
package/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2025 affino
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
package/README.md
ADDED
|
@@ -0,0 +1,108 @@
|
|
|
1
|
+
# @affino/datagrid-core
|
|
2
|
+
|
|
3
|
+
Framework-agnostic data grid core.
|
|
4
|
+
|
|
5
|
+
## API Tiers
|
|
6
|
+
|
|
7
|
+
### Tier 1: Stable (`@affino/datagrid-core`)
|
|
8
|
+
|
|
9
|
+
Semver-safe surface for application integrations.
|
|
10
|
+
|
|
11
|
+
```ts
|
|
12
|
+
import {
|
|
13
|
+
createDataGridApi,
|
|
14
|
+
createDataGridCore,
|
|
15
|
+
createClientRowModel,
|
|
16
|
+
createServerBackedRowModel,
|
|
17
|
+
} from "@affino/datagrid-core"
|
|
18
|
+
```
|
|
19
|
+
|
|
20
|
+
### Tier 2: Advanced (`@affino/datagrid-core/advanced`)
|
|
21
|
+
|
|
22
|
+
Power-user APIs (supported, but can evolve faster):
|
|
23
|
+
|
|
24
|
+
```ts
|
|
25
|
+
import {
|
|
26
|
+
createDataGridViewportController,
|
|
27
|
+
createDataGridA11yStateMachine,
|
|
28
|
+
createDataGridTransactionService,
|
|
29
|
+
createDataGridAdapterRuntime,
|
|
30
|
+
} from "@affino/datagrid-core/advanced"
|
|
31
|
+
```
|
|
32
|
+
|
|
33
|
+
### Tier 3: Internal (`@affino/datagrid-core/internal`)
|
|
34
|
+
|
|
35
|
+
Unsafe, no semver guarantees. Use only for local tooling and migrations.
|
|
36
|
+
|
|
37
|
+
## Naming
|
|
38
|
+
|
|
39
|
+
Core naming is fully canonicalized to `DataGrid*` across stable, advanced, and internal entrypoints.
|
|
40
|
+
|
|
41
|
+
## Deterministic Integration Snapshot
|
|
42
|
+
|
|
43
|
+
Viewport integration should read deterministic state from controller snapshot API instead of peeking into internal signals or DOM transforms:
|
|
44
|
+
|
|
45
|
+
```ts
|
|
46
|
+
import { createDataGridViewportController } from "@affino/datagrid-core/advanced"
|
|
47
|
+
|
|
48
|
+
const viewport = createDataGridViewportController({ resolvePinMode })
|
|
49
|
+
const snapshot = viewport.getIntegrationSnapshot()
|
|
50
|
+
|
|
51
|
+
// stable integration fields:
|
|
52
|
+
snapshot.virtualWindow
|
|
53
|
+
snapshot.visibleRowRange
|
|
54
|
+
snapshot.visibleColumnRange
|
|
55
|
+
snapshot.pinnedWidth
|
|
56
|
+
snapshot.overlaySync
|
|
57
|
+
```
|
|
58
|
+
|
|
59
|
+
`visibleRowRange` / `visibleColumnRange` are legacy mirrors of `virtualWindow` for compatibility.
|
|
60
|
+
|
|
61
|
+
For imperative adapters, `DataGridViewportImperativeCallbacks` also exposes `onWindow(payload)` with the same `virtualWindow` snapshot.
|
|
62
|
+
|
|
63
|
+
`getViewportSyncState()` is also available when only sync transform state is needed.
|
|
64
|
+
|
|
65
|
+
## Pinning Contract (Canonical)
|
|
66
|
+
|
|
67
|
+
Runtime now treats only one pin state as canonical:
|
|
68
|
+
- `column.pin = "left" | "right" | "none"`
|
|
69
|
+
- `column.isSystem = true` is always resolved as left-pinned.
|
|
70
|
+
|
|
71
|
+
Legacy pin fields are not part of the supported contract.
|
|
72
|
+
|
|
73
|
+
### Migration Guide
|
|
74
|
+
|
|
75
|
+
Replace legacy fields in column definitions:
|
|
76
|
+
- `sticky: "left"` -> `pin: "left"`
|
|
77
|
+
- `sticky: "right"` -> `pin: "right"`
|
|
78
|
+
- `stickyLeft: true|number` -> `pin: "left"`
|
|
79
|
+
- `stickyRight: true|number` -> `pin: "right"`
|
|
80
|
+
- `pinned: true|"left"` -> `pin: "left"`
|
|
81
|
+
- `pinned: "right"` -> `pin: "right"`
|
|
82
|
+
- `lock: "left"|"right"` / `locked: true` -> `pin: "left"|"right"`
|
|
83
|
+
|
|
84
|
+
## Selection Geometry Spaces
|
|
85
|
+
|
|
86
|
+
Selection runtime uses one coordinate contract:
|
|
87
|
+
- `table/world` space: content coordinates before scroll transform.
|
|
88
|
+
- `viewport` space: visible coordinates after applying scroll.
|
|
89
|
+
- `client` space: DOM client coordinates (requires viewport origin for conversion).
|
|
90
|
+
|
|
91
|
+
Core helpers in `src/selection/coordinateSpace.ts` are the canonical conversion path used by overlay/fill/selection adapters.
|
|
92
|
+
|
|
93
|
+
## Horizontal Virtualization Contract
|
|
94
|
+
|
|
95
|
+
Horizontal virtualization now uses a deterministic clamp/update path:
|
|
96
|
+
- clamp calculation is centralized in `src/viewport/dataGridViewportHorizontalClamp.ts`
|
|
97
|
+
- prepare phase is pure (no mutation of input meta)
|
|
98
|
+
- stress coverage includes `100k` rows and `500+` columns with pinned left/right mix
|
|
99
|
+
|
|
100
|
+
## Build/Type Check
|
|
101
|
+
|
|
102
|
+
- `npm run build` - compile public contract to `dist`
|
|
103
|
+
- `npm run type-check` - check only public contract surface
|
|
104
|
+
|
|
105
|
+
## Roadmap
|
|
106
|
+
|
|
107
|
+
Execution and quality hardening are tracked in:
|
|
108
|
+
`/Users/anton/Projects/affinio/docs/datagrid-ag-architecture-9.5-pipeline-checklist.md`.
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import type { DataGridEventArgs, DataGridEventMap, DataGridEventName, DataGridPluginEventHandler } from "./types";
|
|
2
|
+
export declare class DataGridPluginEventBus<TEventMap extends DataGridEventMap = DataGridEventMap> {
|
|
3
|
+
private listeners;
|
|
4
|
+
on<TEvent extends DataGridEventName<TEventMap>>(event: TEvent, handler: DataGridPluginEventHandler<DataGridEventArgs<TEventMap, TEvent>>): void;
|
|
5
|
+
off<TEvent extends DataGridEventName<TEventMap>>(event: TEvent, handler: DataGridPluginEventHandler<DataGridEventArgs<TEventMap, TEvent>>): void;
|
|
6
|
+
emit<TEvent extends DataGridEventName<TEventMap>>(event: TEvent, ...args: DataGridEventArgs<TEventMap, TEvent>): void;
|
|
7
|
+
clear(): void;
|
|
8
|
+
}
|
|
9
|
+
//# sourceMappingURL=eventBus.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"eventBus.d.ts","sourceRoot":"","sources":["../../plugins/eventBus.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EACV,iBAAiB,EACjB,gBAAgB,EAChB,iBAAiB,EACjB,0BAA0B,EAC3B,MAAM,SAAS,CAAA;AAIhB,qBAAa,sBAAsB,CAAC,SAAS,SAAS,gBAAgB,GAAG,gBAAgB;IACvF,OAAO,CAAC,SAAS,CAAyC;IAE1D,EAAE,CAAC,MAAM,SAAS,iBAAiB,CAAC,SAAS,CAAC,EAC5C,KAAK,EAAE,MAAM,EACb,OAAO,EAAE,0BAA0B,CAAC,iBAAiB,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;IAQ3E,GAAG,CAAC,MAAM,SAAS,iBAAiB,CAAC,SAAS,CAAC,EAC7C,KAAK,EAAE,MAAM,EACb,OAAO,EAAE,0BAA0B,CAAC,iBAAiB,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;IAU3E,IAAI,CAAC,MAAM,SAAS,iBAAiB,CAAC,SAAS,CAAC,EAC9C,KAAK,EAAE,MAAM,EACb,GAAG,IAAI,EAAE,iBAAiB,CAAC,SAAS,EAAE,MAAM,CAAC;IAe/C,KAAK;CAGN"}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
// src/datagrid/plugins/eventBus.ts
|
|
2
|
+
// Lightweight event bus used by the DataGrid plugin manager.
|
|
3
|
+
export class DataGridPluginEventBus {
|
|
4
|
+
constructor() {
|
|
5
|
+
Object.defineProperty(this, "listeners", {
|
|
6
|
+
enumerable: true,
|
|
7
|
+
configurable: true,
|
|
8
|
+
writable: true,
|
|
9
|
+
value: new Map()
|
|
10
|
+
});
|
|
11
|
+
}
|
|
12
|
+
on(event, handler) {
|
|
13
|
+
if (!this.listeners.has(event)) {
|
|
14
|
+
this.listeners.set(event, new Set());
|
|
15
|
+
}
|
|
16
|
+
this.listeners.get(event).add(handler);
|
|
17
|
+
}
|
|
18
|
+
off(event, handler) {
|
|
19
|
+
const handlers = this.listeners.get(event);
|
|
20
|
+
if (!handlers)
|
|
21
|
+
return;
|
|
22
|
+
handlers.delete(handler);
|
|
23
|
+
if (!handlers.size) {
|
|
24
|
+
this.listeners.delete(event);
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
emit(event, ...args) {
|
|
28
|
+
const handlers = this.listeners.get(event);
|
|
29
|
+
if (!(handlers === null || handlers === void 0 ? void 0 : handlers.size))
|
|
30
|
+
return;
|
|
31
|
+
for (const handler of [...handlers]) {
|
|
32
|
+
try {
|
|
33
|
+
;
|
|
34
|
+
handler(...args);
|
|
35
|
+
}
|
|
36
|
+
catch (error) {
|
|
37
|
+
if (typeof console !== "undefined" && console.error) {
|
|
38
|
+
console.error(`[DataGridPluginEventBus] handler for "${event}" threw`, error);
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
clear() {
|
|
44
|
+
this.listeners.clear();
|
|
45
|
+
}
|
|
46
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../plugins/index.ts"],"names":[],"mappings":"AAEA,cAAc,SAAS,CAAA;AACvB,cAAc,WAAW,CAAA"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import type { DataGridEventArgs, DataGridEventMap, DataGridEventName, DataGridPluginCapabilityMap, DataGridPluginDefinition } from "./types";
|
|
2
|
+
type HostEmit = (event: string, ...args: readonly unknown[]) => void;
|
|
3
|
+
interface ManagerOptions<TCapabilities extends DataGridPluginCapabilityMap> {
|
|
4
|
+
getTableId: () => string;
|
|
5
|
+
getRootElement: () => HTMLElement | null;
|
|
6
|
+
getCapabilityMap: () => TCapabilities;
|
|
7
|
+
onCapabilityDenied?: (pluginId: string, capability: string, reason: "not-declared" | "not-provided") => void;
|
|
8
|
+
emitHostEvent: HostEmit;
|
|
9
|
+
}
|
|
10
|
+
export declare class DataGridPluginManager<THostEvents extends DataGridEventMap = DataGridEventMap, TPluginEvents extends DataGridEventMap = DataGridEventMap, TCapabilities extends DataGridPluginCapabilityMap = DataGridPluginCapabilityMap> {
|
|
11
|
+
private readonly bus;
|
|
12
|
+
private readonly instances;
|
|
13
|
+
private readonly options;
|
|
14
|
+
constructor(options: ManagerOptions<TCapabilities>);
|
|
15
|
+
setPlugins(definitions: Array<DataGridPluginDefinition<THostEvents, TPluginEvents, TCapabilities> | null | undefined>): void;
|
|
16
|
+
on<TEvent extends DataGridEventName<TPluginEvents>>(event: TEvent, handler: (...args: DataGridEventArgs<TPluginEvents, TEvent>) => void): () => void;
|
|
17
|
+
notify<TEvent extends DataGridEventName<TPluginEvents>>(event: TEvent, ...args: DataGridEventArgs<TPluginEvents, TEvent>): void;
|
|
18
|
+
emit<TEvent extends DataGridEventName<TPluginEvents>>(event: TEvent, ...args: DataGridEventArgs<TPluginEvents, TEvent>): void;
|
|
19
|
+
destroy(): void;
|
|
20
|
+
private installPlugin;
|
|
21
|
+
private disposePlugin;
|
|
22
|
+
}
|
|
23
|
+
export {};
|
|
24
|
+
//# sourceMappingURL=manager.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"manager.d.ts","sourceRoot":"","sources":["../../plugins/manager.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EACV,iBAAiB,EACjB,gBAAgB,EAChB,iBAAiB,EACjB,2BAA2B,EAE3B,wBAAwB,EAEzB,MAAM,SAAS,CAAA;AAEhB,KAAK,QAAQ,GAAG,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,SAAS,OAAO,EAAE,KAAK,IAAI,CAAA;AAIpE,UAAU,cAAc,CAAC,aAAa,SAAS,2BAA2B;IACxE,UAAU,EAAE,MAAM,MAAM,CAAA;IACxB,cAAc,EAAE,MAAM,WAAW,GAAG,IAAI,CAAA;IACxC,gBAAgB,EAAE,MAAM,aAAa,CAAA;IACrC,kBAAkB,CAAC,EAAE,CACnB,QAAQ,EAAE,MAAM,EAChB,UAAU,EAAE,MAAM,EAClB,MAAM,EAAE,cAAc,GAAG,cAAc,KACpC,IAAI,CAAA;IACT,aAAa,EAAE,QAAQ,CAAA;CACxB;AAyDD,qBAAa,qBAAqB,CAChC,WAAW,SAAS,gBAAgB,GAAG,gBAAgB,EACvD,aAAa,SAAS,gBAAgB,GAAG,gBAAgB,EACzD,aAAa,SAAS,2BAA2B,GAAG,2BAA2B;IAE/E,OAAO,CAAC,QAAQ,CAAC,GAAG,CAA8C;IAClE,OAAO,CAAC,QAAQ,CAAC,SAAS,CAA6E;IACvG,OAAO,CAAC,QAAQ,CAAC,OAAO,CAA+B;gBAE3C,OAAO,EAAE,cAAc,CAAC,aAAa,CAAC;IAIlD,UAAU,CAAC,WAAW,EAAE,KAAK,CAAC,wBAAwB,CAAC,WAAW,EAAE,aAAa,EAAE,aAAa,CAAC,GAAG,IAAI,GAAG,SAAS,CAAC;IA8BrH,EAAE,CAAC,MAAM,SAAS,iBAAiB,CAAC,aAAa,CAAC,EAChD,KAAK,EAAE,MAAM,EACb,OAAO,EAAE,CACP,GAAG,IAAI,EAAE,iBAAiB,CAAC,aAAa,EAAE,MAAM,CAAC,KAC9C,IAAI,GACR,MAAM,IAAI;IAKb,MAAM,CAAC,MAAM,SAAS,iBAAiB,CAAC,aAAa,CAAC,EACpD,KAAK,EAAE,MAAM,EACb,GAAG,IAAI,EAAE,iBAAiB,CAAC,aAAa,EAAE,MAAM,CAAC;IAKnD,IAAI,CAAC,MAAM,SAAS,iBAAiB,CAAC,aAAa,CAAC,EAClD,KAAK,EAAE,MAAM,EACb,GAAG,IAAI,EAAE,iBAAiB,CAAC,aAAa,EAAE,MAAM,CAAC;IAKnD,OAAO;IAOP,OAAO,CAAC,aAAa;IAyFrB,OAAO,CAAC,aAAa;CAStB"}
|
|
@@ -0,0 +1,195 @@
|
|
|
1
|
+
// src/datagrid/plugins/manager.ts
|
|
2
|
+
// Runtime manager responsible for installing, updating, and disposing DataGrid plugins.
|
|
3
|
+
import { DataGridPluginEventBus } from "./eventBus";
|
|
4
|
+
function isDataGridPlugin(value) {
|
|
5
|
+
if (!value || typeof value !== "object") {
|
|
6
|
+
return false;
|
|
7
|
+
}
|
|
8
|
+
const plugin = value;
|
|
9
|
+
return typeof plugin.id === "string" && plugin.id.trim().length > 0 && typeof plugin.setup === "function";
|
|
10
|
+
}
|
|
11
|
+
function normalizeDefinition(definition) {
|
|
12
|
+
if (!definition)
|
|
13
|
+
return null;
|
|
14
|
+
let candidate = null;
|
|
15
|
+
if (typeof definition === "function") {
|
|
16
|
+
try {
|
|
17
|
+
candidate = definition();
|
|
18
|
+
}
|
|
19
|
+
catch (error) {
|
|
20
|
+
if (typeof console !== "undefined" && console.error) {
|
|
21
|
+
console.error("[DataGridPluginManager] Failed to instantiate plugin factory", error);
|
|
22
|
+
}
|
|
23
|
+
return null;
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
else {
|
|
27
|
+
candidate = definition;
|
|
28
|
+
}
|
|
29
|
+
if (!isDataGridPlugin(candidate)) {
|
|
30
|
+
if (typeof console !== "undefined" && console.warn) {
|
|
31
|
+
console.warn("[DataGridPluginManager] Ignoring invalid plugin definition", definition);
|
|
32
|
+
}
|
|
33
|
+
return null;
|
|
34
|
+
}
|
|
35
|
+
return candidate;
|
|
36
|
+
}
|
|
37
|
+
export class DataGridPluginManager {
|
|
38
|
+
constructor(options) {
|
|
39
|
+
Object.defineProperty(this, "bus", {
|
|
40
|
+
enumerable: true,
|
|
41
|
+
configurable: true,
|
|
42
|
+
writable: true,
|
|
43
|
+
value: new DataGridPluginEventBus()
|
|
44
|
+
});
|
|
45
|
+
Object.defineProperty(this, "instances", {
|
|
46
|
+
enumerable: true,
|
|
47
|
+
configurable: true,
|
|
48
|
+
writable: true,
|
|
49
|
+
value: new Map()
|
|
50
|
+
});
|
|
51
|
+
Object.defineProperty(this, "options", {
|
|
52
|
+
enumerable: true,
|
|
53
|
+
configurable: true,
|
|
54
|
+
writable: true,
|
|
55
|
+
value: void 0
|
|
56
|
+
});
|
|
57
|
+
this.options = options;
|
|
58
|
+
}
|
|
59
|
+
setPlugins(definitions) {
|
|
60
|
+
const normalized = new Map();
|
|
61
|
+
for (const definition of definitions !== null && definitions !== void 0 ? definitions : []) {
|
|
62
|
+
const plugin = normalizeDefinition(definition);
|
|
63
|
+
if (!plugin)
|
|
64
|
+
continue;
|
|
65
|
+
if (normalized.has(plugin.id)) {
|
|
66
|
+
if (typeof console !== "undefined" && console.warn) {
|
|
67
|
+
console.warn(`[DataGridPluginManager] Duplicate plugin id "${plugin.id}" ignored`);
|
|
68
|
+
}
|
|
69
|
+
continue;
|
|
70
|
+
}
|
|
71
|
+
normalized.set(plugin.id, plugin);
|
|
72
|
+
}
|
|
73
|
+
for (const [id, active] of [...this.instances]) {
|
|
74
|
+
const next = normalized.get(id);
|
|
75
|
+
if (!next || next !== active.plugin) {
|
|
76
|
+
this.disposePlugin(id);
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
for (const plugin of normalized.values()) {
|
|
80
|
+
const existing = this.instances.get(plugin.id);
|
|
81
|
+
if (existing && existing.plugin === plugin) {
|
|
82
|
+
continue;
|
|
83
|
+
}
|
|
84
|
+
this.installPlugin(plugin);
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
on(event, handler) {
|
|
88
|
+
this.bus.on(event, handler);
|
|
89
|
+
return () => this.bus.off(event, handler);
|
|
90
|
+
}
|
|
91
|
+
notify(event, ...args) {
|
|
92
|
+
this.bus.emit(event, ...args);
|
|
93
|
+
}
|
|
94
|
+
emit(event, ...args) {
|
|
95
|
+
this.bus.emit(event, ...args);
|
|
96
|
+
}
|
|
97
|
+
destroy() {
|
|
98
|
+
for (const [id] of [...this.instances]) {
|
|
99
|
+
this.disposePlugin(id);
|
|
100
|
+
}
|
|
101
|
+
this.bus.clear();
|
|
102
|
+
}
|
|
103
|
+
installPlugin(plugin) {
|
|
104
|
+
var _a;
|
|
105
|
+
const cleanupFns = [];
|
|
106
|
+
const declaredCapabilities = new Set((_a = plugin.capabilities) !== null && _a !== void 0 ? _a : []);
|
|
107
|
+
const registerCleanup = (cleanup) => {
|
|
108
|
+
if (typeof cleanup !== "function")
|
|
109
|
+
return;
|
|
110
|
+
cleanupFns.push(cleanup);
|
|
111
|
+
};
|
|
112
|
+
const resolveCapability = (capability, reportDenied) => {
|
|
113
|
+
var _a, _b, _c, _d;
|
|
114
|
+
if (!declaredCapabilities.has(capability)) {
|
|
115
|
+
if (reportDenied) {
|
|
116
|
+
(_b = (_a = this.options).onCapabilityDenied) === null || _b === void 0 ? void 0 : _b.call(_a, plugin.id, capability, "not-declared");
|
|
117
|
+
}
|
|
118
|
+
return null;
|
|
119
|
+
}
|
|
120
|
+
const capabilityMap = this.options.getCapabilityMap();
|
|
121
|
+
const candidate = capabilityMap[capability];
|
|
122
|
+
if (typeof candidate !== "function") {
|
|
123
|
+
if (reportDenied) {
|
|
124
|
+
(_d = (_c = this.options).onCapabilityDenied) === null || _d === void 0 ? void 0 : _d.call(_c, plugin.id, capability, "not-provided");
|
|
125
|
+
}
|
|
126
|
+
return null;
|
|
127
|
+
}
|
|
128
|
+
return candidate;
|
|
129
|
+
};
|
|
130
|
+
const context = {
|
|
131
|
+
tableId: this.options.getTableId(),
|
|
132
|
+
getRootElement: this.options.getRootElement,
|
|
133
|
+
hasCapability: capability => resolveCapability(capability, false) !== null,
|
|
134
|
+
requestCapability: capability => {
|
|
135
|
+
return resolveCapability(capability, true);
|
|
136
|
+
},
|
|
137
|
+
invokeCapability: (capability, ...args) => {
|
|
138
|
+
const handler = resolveCapability(capability, true);
|
|
139
|
+
if (!handler) {
|
|
140
|
+
throw new Error(`[DataGridPluginManager] Plugin "${plugin.id}" attempted forbidden capability "${String(capability)}"`);
|
|
141
|
+
}
|
|
142
|
+
return handler(...args);
|
|
143
|
+
},
|
|
144
|
+
emitHostEvent: (event, ...args) => {
|
|
145
|
+
this.options.emitHostEvent(event, ...args);
|
|
146
|
+
},
|
|
147
|
+
on: (event, handler) => {
|
|
148
|
+
this.bus.on(event, handler);
|
|
149
|
+
const off = () => this.bus.off(event, handler);
|
|
150
|
+
registerCleanup(off);
|
|
151
|
+
return off;
|
|
152
|
+
},
|
|
153
|
+
emit: (event, ...args) => {
|
|
154
|
+
this.bus.emit(event, ...args);
|
|
155
|
+
},
|
|
156
|
+
registerCleanup,
|
|
157
|
+
};
|
|
158
|
+
try {
|
|
159
|
+
const teardown = plugin.setup(context);
|
|
160
|
+
if (typeof teardown === "function") {
|
|
161
|
+
registerCleanup(teardown);
|
|
162
|
+
}
|
|
163
|
+
}
|
|
164
|
+
catch (error) {
|
|
165
|
+
if (typeof console !== "undefined" && console.error) {
|
|
166
|
+
console.error(`[DataGridPluginManager] Plugin "${plugin.id}" setup failed`, error);
|
|
167
|
+
}
|
|
168
|
+
}
|
|
169
|
+
const cleanup = () => {
|
|
170
|
+
while (cleanupFns.length) {
|
|
171
|
+
const fn = cleanupFns.pop();
|
|
172
|
+
try {
|
|
173
|
+
fn === null || fn === void 0 ? void 0 : fn();
|
|
174
|
+
}
|
|
175
|
+
catch (error) {
|
|
176
|
+
if (typeof console !== "undefined" && console.error) {
|
|
177
|
+
console.error(`[DataGridPluginManager] Plugin "${plugin.id}" cleanup failed`, error);
|
|
178
|
+
}
|
|
179
|
+
}
|
|
180
|
+
}
|
|
181
|
+
};
|
|
182
|
+
this.instances.set(plugin.id, { plugin, cleanup });
|
|
183
|
+
}
|
|
184
|
+
disposePlugin(id) {
|
|
185
|
+
const active = this.instances.get(id);
|
|
186
|
+
if (!active)
|
|
187
|
+
return;
|
|
188
|
+
try {
|
|
189
|
+
active.cleanup();
|
|
190
|
+
}
|
|
191
|
+
finally {
|
|
192
|
+
this.instances.delete(id);
|
|
193
|
+
}
|
|
194
|
+
}
|
|
195
|
+
}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
export type DataGridEventMap = Record<string, readonly unknown[]>;
|
|
2
|
+
export type DataGridPluginCapability = (...args: readonly unknown[]) => unknown;
|
|
3
|
+
export type DataGridPluginCapabilityMap = Record<string, DataGridPluginCapability>;
|
|
4
|
+
export type DataGridEventName<TEventMap extends DataGridEventMap> = Extract<keyof TEventMap, string>;
|
|
5
|
+
export type DataGridPluginCapabilityName<TCapabilities extends DataGridPluginCapabilityMap> = Extract<keyof TCapabilities, string>;
|
|
6
|
+
export type DataGridEventArgs<TEventMap extends DataGridEventMap, TEvent extends DataGridEventName<TEventMap>> = TEventMap[TEvent] extends readonly unknown[] ? TEventMap[TEvent] : readonly unknown[];
|
|
7
|
+
export type DataGridPluginEventHandler<TArgs extends readonly unknown[] = readonly unknown[]> = (...args: TArgs) => void;
|
|
8
|
+
export interface DataGridPluginSetupContext<THostEvents extends DataGridEventMap = DataGridEventMap, TPluginEvents extends DataGridEventMap = DataGridEventMap, TCapabilities extends DataGridPluginCapabilityMap = DataGridPluginCapabilityMap> {
|
|
9
|
+
/** Unique identifier of the table instance installing the plugin. */
|
|
10
|
+
tableId: string;
|
|
11
|
+
/** Returns the nearest theme/root element for DOM-based integrations. */
|
|
12
|
+
getRootElement: () => HTMLElement | null;
|
|
13
|
+
/**
|
|
14
|
+
* Returns `true` if capability is both declared by plugin and provided by host.
|
|
15
|
+
* Plugins must never access host internals directly.
|
|
16
|
+
*/
|
|
17
|
+
hasCapability: <TCapability extends DataGridPluginCapabilityName<TCapabilities>>(capability: TCapability) => boolean;
|
|
18
|
+
/** Returns capability function if allowed/provided; otherwise `null`. */
|
|
19
|
+
requestCapability: <TCapability extends DataGridPluginCapabilityName<TCapabilities>>(capability: TCapability) => TCapabilities[TCapability] | null;
|
|
20
|
+
/**
|
|
21
|
+
* Invokes allowed capability or throws on denied/missing access.
|
|
22
|
+
* Use for fail-fast plugin contracts.
|
|
23
|
+
*/
|
|
24
|
+
invokeCapability: <TCapability extends DataGridPluginCapabilityName<TCapabilities>>(capability: TCapability, ...args: Parameters<TCapabilities[TCapability]>) => ReturnType<TCapabilities[TCapability]>;
|
|
25
|
+
/** Emits a host (component-level) event, mirroring `emit` + config handlers. */
|
|
26
|
+
emitHostEvent: <TEvent extends DataGridEventName<THostEvents>>(event: TEvent, ...args: DataGridEventArgs<THostEvents, TEvent>) => void;
|
|
27
|
+
/** Subscribes to plugin/local events. Returns an unsubscribe function. */
|
|
28
|
+
on: <TEvent extends DataGridEventName<TPluginEvents>>(event: TEvent, handler: DataGridPluginEventHandler<DataGridEventArgs<TPluginEvents, TEvent>>) => () => void;
|
|
29
|
+
/** Emits a plugin/local event to other subscribers. */
|
|
30
|
+
emit: <TEvent extends DataGridEventName<TPluginEvents>>(event: TEvent, ...args: DataGridEventArgs<TPluginEvents, TEvent>) => void;
|
|
31
|
+
/** Registers a cleanup hook that runs when the plugin is disposed. */
|
|
32
|
+
registerCleanup: (cleanup: () => void) => void;
|
|
33
|
+
}
|
|
34
|
+
export interface DataGridPlugin<THostEvents extends DataGridEventMap = DataGridEventMap, TPluginEvents extends DataGridEventMap = DataGridEventMap, TCapabilities extends DataGridPluginCapabilityMap = DataGridPluginCapabilityMap> {
|
|
35
|
+
id: string;
|
|
36
|
+
capabilities?: readonly DataGridPluginCapabilityName<TCapabilities>[];
|
|
37
|
+
setup(context: DataGridPluginSetupContext<THostEvents, TPluginEvents, TCapabilities>): void | (() => void);
|
|
38
|
+
}
|
|
39
|
+
export type DataGridPluginDefinition<THostEvents extends DataGridEventMap = DataGridEventMap, TPluginEvents extends DataGridEventMap = DataGridEventMap, TCapabilities extends DataGridPluginCapabilityMap = DataGridPluginCapabilityMap> = DataGridPlugin<THostEvents, TPluginEvents, TCapabilities> | (() => DataGridPlugin<THostEvents, TPluginEvents, TCapabilities>);
|
|
40
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../plugins/types.ts"],"names":[],"mappings":"AAGA,MAAM,MAAM,gBAAgB,GAAG,MAAM,CAAC,MAAM,EAAE,SAAS,OAAO,EAAE,CAAC,CAAA;AACjE,MAAM,MAAM,wBAAwB,GAAG,CAAC,GAAG,IAAI,EAAE,SAAS,OAAO,EAAE,KAAK,OAAO,CAAA;AAC/E,MAAM,MAAM,2BAA2B,GAAG,MAAM,CAAC,MAAM,EAAE,wBAAwB,CAAC,CAAA;AAElF,MAAM,MAAM,iBAAiB,CAAC,SAAS,SAAS,gBAAgB,IAAI,OAAO,CAAC,MAAM,SAAS,EAAE,MAAM,CAAC,CAAA;AACpG,MAAM,MAAM,4BAA4B,CAAC,aAAa,SAAS,2BAA2B,IACxF,OAAO,CAAC,MAAM,aAAa,EAAE,MAAM,CAAC,CAAA;AAEtC,MAAM,MAAM,iBAAiB,CAC3B,SAAS,SAAS,gBAAgB,EAClC,MAAM,SAAS,iBAAiB,CAAC,SAAS,CAAC,IACzC,SAAS,CAAC,MAAM,CAAC,SAAS,SAAS,OAAO,EAAE,GAAG,SAAS,CAAC,MAAM,CAAC,GAAG,SAAS,OAAO,EAAE,CAAA;AAEzF,MAAM,MAAM,0BAA0B,CAAC,KAAK,SAAS,SAAS,OAAO,EAAE,GAAG,SAAS,OAAO,EAAE,IAAI,CAC9F,GAAG,IAAI,EAAE,KAAK,KACX,IAAI,CAAA;AAET,MAAM,WAAW,0BAA0B,CACzC,WAAW,SAAS,gBAAgB,GAAG,gBAAgB,EACvD,aAAa,SAAS,gBAAgB,GAAG,gBAAgB,EACzD,aAAa,SAAS,2BAA2B,GAAG,2BAA2B;IAE/E,qEAAqE;IACrE,OAAO,EAAE,MAAM,CAAA;IACf,yEAAyE;IACzE,cAAc,EAAE,MAAM,WAAW,GAAG,IAAI,CAAA;IACxC;;;OAGG;IACH,aAAa,EAAE,CAAC,WAAW,SAAS,4BAA4B,CAAC,aAAa,CAAC,EAC7E,UAAU,EAAE,WAAW,KACpB,OAAO,CAAA;IACZ,yEAAyE;IACzE,iBAAiB,EAAE,CAAC,WAAW,SAAS,4BAA4B,CAAC,aAAa,CAAC,EACjF,UAAU,EAAE,WAAW,KACpB,aAAa,CAAC,WAAW,CAAC,GAAG,IAAI,CAAA;IACtC;;;OAGG;IACH,gBAAgB,EAAE,CAAC,WAAW,SAAS,4BAA4B,CAAC,aAAa,CAAC,EAChF,UAAU,EAAE,WAAW,EACvB,GAAG,IAAI,EAAE,UAAU,CAAC,aAAa,CAAC,WAAW,CAAC,CAAC,KAC5C,UAAU,CAAC,aAAa,CAAC,WAAW,CAAC,CAAC,CAAA;IAC3C,gFAAgF;IAChF,aAAa,EAAE,CAAC,MAAM,SAAS,iBAAiB,CAAC,WAAW,CAAC,EAC3D,KAAK,EAAE,MAAM,EACb,GAAG,IAAI,EAAE,iBAAiB,CAAC,WAAW,EAAE,MAAM,CAAC,KAC5C,IAAI,CAAA;IACT,0EAA0E;IAC1E,EAAE,EAAE,CAAC,MAAM,SAAS,iBAAiB,CAAC,aAAa,CAAC,EAClD,KAAK,EAAE,MAAM,EACb,OAAO,EAAE,0BAA0B,CAAC,iBAAiB,CAAC,aAAa,EAAE,MAAM,CAAC,CAAC,KAC1E,MAAM,IAAI,CAAA;IACf,uDAAuD;IACvD,IAAI,EAAE,CAAC,MAAM,SAAS,iBAAiB,CAAC,aAAa,CAAC,EACpD,KAAK,EAAE,MAAM,EACb,GAAG,IAAI,EAAE,iBAAiB,CAAC,aAAa,EAAE,MAAM,CAAC,KAC9C,IAAI,CAAA;IACT,sEAAsE;IACtE,eAAe,EAAE,CAAC,OAAO,EAAE,MAAM,IAAI,KAAK,IAAI,CAAA;CAC/C;AAED,MAAM,WAAW,cAAc,CAC7B,WAAW,SAAS,gBAAgB,GAAG,gBAAgB,EACvD,aAAa,SAAS,gBAAgB,GAAG,gBAAgB,EACzD,aAAa,SAAS,2BAA2B,GAAG,2BAA2B;IAE/E,EAAE,EAAE,MAAM,CAAA;IACV,YAAY,CAAC,EAAE,SAAS,4BAA4B,CAAC,aAAa,CAAC,EAAE,CAAA;IACrE,KAAK,CAAC,OAAO,EAAE,0BAA0B,CAAC,WAAW,EAAE,aAAa,EAAE,aAAa,CAAC,GAAG,IAAI,GAAG,CAAC,MAAM,IAAI,CAAC,CAAA;CAC3G;AAED,MAAM,MAAM,wBAAwB,CAClC,WAAW,SAAS,gBAAgB,GAAG,gBAAgB,EACvD,aAAa,SAAS,gBAAgB,GAAG,gBAAgB,EACzD,aAAa,SAAS,2BAA2B,GAAG,2BAA2B,IAE7E,cAAc,CAAC,WAAW,EAAE,aAAa,EAAE,aAAa,CAAC,GACzD,CAAC,MAAM,cAAc,CAAC,WAAW,EAAE,aAAa,EAAE,aAAa,CAAC,CAAC,CAAA"}
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
import type { DataGridRowId } from "../models/rowModel";
|
|
2
|
+
export type DataGridA11yKeyCommandKey = "ArrowUp" | "ArrowDown" | "ArrowLeft" | "ArrowRight" | "Home" | "End" | "PageUp" | "PageDown" | "Tab" | "Enter" | "Escape";
|
|
3
|
+
export interface DataGridA11yKeyboardCommand {
|
|
4
|
+
key: DataGridA11yKeyCommandKey;
|
|
5
|
+
shiftKey?: boolean;
|
|
6
|
+
ctrlKey?: boolean;
|
|
7
|
+
metaKey?: boolean;
|
|
8
|
+
altKey?: boolean;
|
|
9
|
+
pageSize?: number;
|
|
10
|
+
}
|
|
11
|
+
export interface DataGridA11yFocusCell {
|
|
12
|
+
rowIndex: number;
|
|
13
|
+
colIndex: number;
|
|
14
|
+
rowId?: DataGridRowId;
|
|
15
|
+
columnKey?: string;
|
|
16
|
+
}
|
|
17
|
+
export interface DataGridA11ySnapshot {
|
|
18
|
+
rowCount: number;
|
|
19
|
+
colCount: number;
|
|
20
|
+
gridFocused: boolean;
|
|
21
|
+
focusCell: DataGridA11yFocusCell | null;
|
|
22
|
+
activeDescendantId: string | null;
|
|
23
|
+
}
|
|
24
|
+
export interface DataGridA11yGridAriaState {
|
|
25
|
+
role: "grid";
|
|
26
|
+
tabIndex: number;
|
|
27
|
+
ariaRowCount: number;
|
|
28
|
+
ariaColCount: number;
|
|
29
|
+
ariaActiveDescendant: string | null;
|
|
30
|
+
ariaMultiselectable: boolean;
|
|
31
|
+
}
|
|
32
|
+
export interface DataGridA11yCellAriaState {
|
|
33
|
+
id: string;
|
|
34
|
+
role: "gridcell";
|
|
35
|
+
tabIndex: number;
|
|
36
|
+
ariaRowIndex: number;
|
|
37
|
+
ariaColIndex: number;
|
|
38
|
+
ariaSelected: boolean;
|
|
39
|
+
}
|
|
40
|
+
export type DataGridA11yStateListener = (snapshot: DataGridA11ySnapshot) => void;
|
|
41
|
+
export interface CreateDataGridA11yStateMachineOptions {
|
|
42
|
+
rowCount: number;
|
|
43
|
+
colCount: number;
|
|
44
|
+
idPrefix?: string;
|
|
45
|
+
initialGridFocused?: boolean;
|
|
46
|
+
initialFocusCell?: DataGridA11yFocusCell | null;
|
|
47
|
+
resolveCellId?: (cell: DataGridA11yFocusCell) => string;
|
|
48
|
+
}
|
|
49
|
+
export interface DataGridA11yStateMachine {
|
|
50
|
+
snapshot(): DataGridA11ySnapshot;
|
|
51
|
+
setDimensions(rowCount: number, colCount: number): DataGridA11ySnapshot;
|
|
52
|
+
setFocusCell(cell: DataGridA11yFocusCell | null): DataGridA11ySnapshot;
|
|
53
|
+
focusGrid(focused: boolean): DataGridA11ySnapshot;
|
|
54
|
+
dispatchKeyboard(command: DataGridA11yKeyboardCommand): DataGridA11ySnapshot;
|
|
55
|
+
getGridAria(): DataGridA11yGridAriaState;
|
|
56
|
+
getCellAria(cell: DataGridA11yFocusCell): DataGridA11yCellAriaState;
|
|
57
|
+
subscribe(listener: DataGridA11yStateListener): () => void;
|
|
58
|
+
}
|
|
59
|
+
export declare function createDataGridA11yStateMachine(options: CreateDataGridA11yStateMachineOptions): DataGridA11yStateMachine;
|
|
60
|
+
//# sourceMappingURL=headlessA11yStateMachine.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"headlessA11yStateMachine.d.ts","sourceRoot":"","sources":["../../../src/a11y/headlessA11yStateMachine.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAA;AAEvD,MAAM,MAAM,yBAAyB,GACjC,SAAS,GACT,WAAW,GACX,WAAW,GACX,YAAY,GACZ,MAAM,GACN,KAAK,GACL,QAAQ,GACR,UAAU,GACV,KAAK,GACL,OAAO,GACP,QAAQ,CAAA;AAEZ,MAAM,WAAW,2BAA2B;IAC1C,GAAG,EAAE,yBAAyB,CAAA;IAC9B,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,OAAO,CAAC,EAAE,OAAO,CAAA;IACjB,OAAO,CAAC,EAAE,OAAO,CAAA;IACjB,MAAM,CAAC,EAAE,OAAO,CAAA;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAA;CAClB;AAED,MAAM,WAAW,qBAAqB;IACpC,QAAQ,EAAE,MAAM,CAAA;IAChB,QAAQ,EAAE,MAAM,CAAA;IAChB,KAAK,CAAC,EAAE,aAAa,CAAA;IACrB,SAAS,CAAC,EAAE,MAAM,CAAA;CACnB;AAED,MAAM,WAAW,oBAAoB;IACnC,QAAQ,EAAE,MAAM,CAAA;IAChB,QAAQ,EAAE,MAAM,CAAA;IAChB,WAAW,EAAE,OAAO,CAAA;IACpB,SAAS,EAAE,qBAAqB,GAAG,IAAI,CAAA;IACvC,kBAAkB,EAAE,MAAM,GAAG,IAAI,CAAA;CAClC;AAED,MAAM,WAAW,yBAAyB;IACxC,IAAI,EAAE,MAAM,CAAA;IACZ,QAAQ,EAAE,MAAM,CAAA;IAChB,YAAY,EAAE,MAAM,CAAA;IACpB,YAAY,EAAE,MAAM,CAAA;IACpB,oBAAoB,EAAE,MAAM,GAAG,IAAI,CAAA;IACnC,mBAAmB,EAAE,OAAO,CAAA;CAC7B;AAED,MAAM,WAAW,yBAAyB;IACxC,EAAE,EAAE,MAAM,CAAA;IACV,IAAI,EAAE,UAAU,CAAA;IAChB,QAAQ,EAAE,MAAM,CAAA;IAChB,YAAY,EAAE,MAAM,CAAA;IACpB,YAAY,EAAE,MAAM,CAAA;IACpB,YAAY,EAAE,OAAO,CAAA;CACtB;AAED,MAAM,MAAM,yBAAyB,GAAG,CAAC,QAAQ,EAAE,oBAAoB,KAAK,IAAI,CAAA;AAEhF,MAAM,WAAW,qCAAqC;IACpD,QAAQ,EAAE,MAAM,CAAA;IAChB,QAAQ,EAAE,MAAM,CAAA;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,kBAAkB,CAAC,EAAE,OAAO,CAAA;IAC5B,gBAAgB,CAAC,EAAE,qBAAqB,GAAG,IAAI,CAAA;IAC/C,aAAa,CAAC,EAAE,CAAC,IAAI,EAAE,qBAAqB,KAAK,MAAM,CAAA;CACxD;AAED,MAAM,WAAW,wBAAwB;IACvC,QAAQ,IAAI,oBAAoB,CAAA;IAChC,aAAa,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,oBAAoB,CAAA;IACvE,YAAY,CAAC,IAAI,EAAE,qBAAqB,GAAG,IAAI,GAAG,oBAAoB,CAAA;IACtE,SAAS,CAAC,OAAO,EAAE,OAAO,GAAG,oBAAoB,CAAA;IACjD,gBAAgB,CAAC,OAAO,EAAE,2BAA2B,GAAG,oBAAoB,CAAA;IAC5E,WAAW,IAAI,yBAAyB,CAAA;IACxC,WAAW,CAAC,IAAI,EAAE,qBAAqB,GAAG,yBAAyB,CAAA;IACnE,SAAS,CAAC,QAAQ,EAAE,yBAAyB,GAAG,MAAM,IAAI,CAAA;CAC3D;AAkFD,wBAAgB,8BAA8B,CAC5C,OAAO,EAAE,qCAAqC,GAC7C,wBAAwB,CA4M1B"}
|