@zengrid/core 1.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +55 -0
- package/dist/README.md +55 -0
- package/dist/index.cjs.default.js +1 -0
- package/dist/index.cjs.js +9882 -0
- package/dist/index.cjs.mjs +2 -0
- package/dist/index.d.ts +1 -0
- package/dist/index.esm.js +9847 -0
- package/dist/package.json +49 -0
- package/dist/src/a11y/aria-manager.d.ts +171 -0
- package/dist/src/a11y/aria-manager.d.ts.map +1 -0
- package/dist/src/a11y/focus-manager.d.ts +124 -0
- package/dist/src/a11y/focus-manager.d.ts.map +1 -0
- package/dist/src/a11y/index.d.ts +8 -0
- package/dist/src/a11y/index.d.ts.map +1 -0
- package/dist/src/data/data-accessor/array-accessor.d.ts +38 -0
- package/dist/src/data/data-accessor/array-accessor.d.ts.map +1 -0
- package/dist/src/data/data-accessor/column-store-accessor.d.ts +41 -0
- package/dist/src/data/data-accessor/column-store-accessor.d.ts.map +1 -0
- package/dist/src/data/data-accessor/data-accessor.interface.d.ts +41 -0
- package/dist/src/data/data-accessor/data-accessor.interface.d.ts.map +1 -0
- package/dist/src/data/data-accessor/index.d.ts +9 -0
- package/dist/src/data/data-accessor/index.d.ts.map +1 -0
- package/dist/src/data/data-accessor/sparse-matrix-accessor.d.ts +39 -0
- package/dist/src/data/data-accessor/sparse-matrix-accessor.d.ts.map +1 -0
- package/dist/src/data/data-manager.d.ts +161 -0
- package/dist/src/data/data-manager.d.ts.map +1 -0
- package/dist/src/data/data-source.interface.d.ts +82 -0
- package/dist/src/data/data-source.interface.d.ts.map +1 -0
- package/dist/src/data/grid-data-model.d.ts +102 -0
- package/dist/src/data/grid-data-model.d.ts.map +1 -0
- package/dist/src/data/index-map/index-map.d.ts +30 -0
- package/dist/src/data/index-map/index-map.d.ts.map +1 -0
- package/dist/src/data/index-map/index-map.interface.d.ts +49 -0
- package/dist/src/data/index-map/index-map.interface.d.ts.map +1 -0
- package/dist/src/data/index-map/index.d.ts +7 -0
- package/dist/src/data/index-map/index.d.ts.map +1 -0
- package/dist/src/data/index.d.ts +9 -0
- package/dist/src/data/index.d.ts.map +1 -0
- package/dist/src/editing/cell-editor.interface.d.ts +87 -0
- package/dist/src/editing/cell-editor.interface.d.ts.map +1 -0
- package/dist/src/editing/date-editor.d.ts +67 -0
- package/dist/src/editing/date-editor.d.ts.map +1 -0
- package/dist/src/editing/editor-manager.d.ts +141 -0
- package/dist/src/editing/editor-manager.d.ts.map +1 -0
- package/dist/src/editing/index.d.ts +15 -0
- package/dist/src/editing/index.d.ts.map +1 -0
- package/dist/src/editing/number-editor.d.ts +68 -0
- package/dist/src/editing/number-editor.d.ts.map +1 -0
- package/dist/src/editing/select-editor.d.ts +53 -0
- package/dist/src/editing/select-editor.d.ts.map +1 -0
- package/dist/src/editing/text-editor.d.ts +69 -0
- package/dist/src/editing/text-editor.d.ts.map +1 -0
- package/dist/src/events/event-emitter.d.ts +90 -0
- package/dist/src/events/event-emitter.d.ts.map +1 -0
- package/dist/src/events/grid-events.d.ts +277 -0
- package/dist/src/events/grid-events.d.ts.map +1 -0
- package/dist/src/events/index.d.ts +6 -0
- package/dist/src/events/index.d.ts.map +1 -0
- package/dist/src/features/autofill/autofill-manager.d.ts +103 -0
- package/dist/src/features/autofill/autofill-manager.d.ts.map +1 -0
- package/dist/src/features/autofill/index.d.ts +6 -0
- package/dist/src/features/autofill/index.d.ts.map +1 -0
- package/dist/src/features/column-resize/auto-fit-calculator.d.ts +52 -0
- package/dist/src/features/column-resize/auto-fit-calculator.d.ts.map +1 -0
- package/dist/src/features/column-resize/column-resize-manager.d.ts +114 -0
- package/dist/src/features/column-resize/column-resize-manager.d.ts.map +1 -0
- package/dist/src/features/column-resize/column-resize-manager.interface.d.ts +167 -0
- package/dist/src/features/column-resize/column-resize-manager.interface.d.ts.map +1 -0
- package/dist/src/features/column-resize/column-resize.styles.css +30 -0
- package/dist/src/features/column-resize/index.d.ts +15 -0
- package/dist/src/features/column-resize/index.d.ts.map +1 -0
- package/dist/src/features/column-resize/resize-constraint-manager.d.ts +52 -0
- package/dist/src/features/column-resize/resize-constraint-manager.d.ts.map +1 -0
- package/dist/src/features/column-resize/resize-handle-renderer.d.ts +41 -0
- package/dist/src/features/column-resize/resize-handle-renderer.d.ts.map +1 -0
- package/dist/src/features/column-resize/resize-preview.d.ts +32 -0
- package/dist/src/features/column-resize/resize-preview.d.ts.map +1 -0
- package/dist/src/features/column-resize/resize-state-manager.d.ts +75 -0
- package/dist/src/features/column-resize/resize-state-manager.d.ts.map +1 -0
- package/dist/src/features/column-resize/resize-strategies.d.ts +26 -0
- package/dist/src/features/column-resize/resize-strategies.d.ts.map +1 -0
- package/dist/src/features/column-resize/resize-test-helper.d.ts +71 -0
- package/dist/src/features/column-resize/resize-test-helper.d.ts.map +1 -0
- package/dist/src/features/column-resize/resize-zone-detector.d.ts +32 -0
- package/dist/src/features/column-resize/resize-zone-detector.d.ts.map +1 -0
- package/dist/src/features/copy-paste/clipboard-manager.d.ts +116 -0
- package/dist/src/features/copy-paste/clipboard-manager.d.ts.map +1 -0
- package/dist/src/features/copy-paste/index.d.ts +6 -0
- package/dist/src/features/copy-paste/index.d.ts.map +1 -0
- package/dist/src/features/filtering/adapters/adapter.interface.d.ts +100 -0
- package/dist/src/features/filtering/adapters/adapter.interface.d.ts.map +1 -0
- package/dist/src/features/filtering/adapters/graphql-adapter.d.ts +124 -0
- package/dist/src/features/filtering/adapters/graphql-adapter.d.ts.map +1 -0
- package/dist/src/features/filtering/adapters/index.d.ts +11 -0
- package/dist/src/features/filtering/adapters/index.d.ts.map +1 -0
- package/dist/src/features/filtering/adapters/rest-adapter.d.ts +108 -0
- package/dist/src/features/filtering/adapters/rest-adapter.d.ts.map +1 -0
- package/dist/src/features/filtering/adapters/sql-adapter.d.ts +123 -0
- package/dist/src/features/filtering/adapters/sql-adapter.d.ts.map +1 -0
- package/dist/src/features/filtering/adapters/types.d.ts +201 -0
- package/dist/src/features/filtering/adapters/types.d.ts.map +1 -0
- package/dist/src/features/filtering/column-filter.d.ts +117 -0
- package/dist/src/features/filtering/column-filter.d.ts.map +1 -0
- package/dist/src/features/filtering/filter-autocomplete.d.ts +78 -0
- package/dist/src/features/filtering/filter-autocomplete.d.ts.map +1 -0
- package/dist/src/features/filtering/filter-cache.d.ts +113 -0
- package/dist/src/features/filtering/filter-cache.d.ts.map +1 -0
- package/dist/src/features/filtering/filter-compiler.d.ts +66 -0
- package/dist/src/features/filtering/filter-compiler.d.ts.map +1 -0
- package/dist/src/features/filtering/filter-export-manager.d.ts +131 -0
- package/dist/src/features/filtering/filter-export-manager.d.ts.map +1 -0
- package/dist/src/features/filtering/filter-index-manager.d.ts +126 -0
- package/dist/src/features/filtering/filter-index-manager.d.ts.map +1 -0
- package/dist/src/features/filtering/filter-manager.d.ts +408 -0
- package/dist/src/features/filtering/filter-manager.d.ts.map +1 -0
- package/dist/src/features/filtering/filter-optimizer.d.ts +101 -0
- package/dist/src/features/filtering/filter-optimizer.d.ts.map +1 -0
- package/dist/src/features/filtering/filter-query-parser.d.ts +69 -0
- package/dist/src/features/filtering/filter-query-parser.d.ts.map +1 -0
- package/dist/src/features/filtering/index.d.ts +20 -0
- package/dist/src/features/filtering/index.d.ts.map +1 -0
- package/dist/src/features/filtering/range-filter-optimizer.d.ts +138 -0
- package/dist/src/features/filtering/range-filter-optimizer.d.ts.map +1 -0
- package/dist/src/features/filtering/substring-filter.d.ts +90 -0
- package/dist/src/features/filtering/substring-filter.d.ts.map +1 -0
- package/dist/src/features/filtering/types.d.ts +204 -0
- package/dist/src/features/filtering/types.d.ts.map +1 -0
- package/dist/src/features/formulas/formula-calculator.d.ts +151 -0
- package/dist/src/features/formulas/formula-calculator.d.ts.map +1 -0
- package/dist/src/features/formulas/index.d.ts +6 -0
- package/dist/src/features/formulas/index.d.ts.map +1 -0
- package/dist/src/features/hit-testing/index.d.ts +7 -0
- package/dist/src/features/hit-testing/index.d.ts.map +1 -0
- package/dist/src/features/hit-testing/spatial-hit-tester.d.ts +137 -0
- package/dist/src/features/hit-testing/spatial-hit-tester.d.ts.map +1 -0
- package/dist/src/features/loading/index.d.ts +5 -0
- package/dist/src/features/loading/index.d.ts.map +1 -0
- package/dist/src/features/loading/loading-indicator.d.ts +79 -0
- package/dist/src/features/loading/loading-indicator.d.ts.map +1 -0
- package/dist/src/features/loading/loading.styles.css +413 -0
- package/dist/src/features/pagination/index.d.ts +5 -0
- package/dist/src/features/pagination/index.d.ts.map +1 -0
- package/dist/src/features/pagination/pagination.styles.css +288 -0
- package/dist/src/features/pagination/paginator.d.ts +89 -0
- package/dist/src/features/pagination/paginator.d.ts.map +1 -0
- package/dist/src/features/selection/index.d.ts +7 -0
- package/dist/src/features/selection/index.d.ts.map +1 -0
- package/dist/src/features/selection/selection-manager.d.ts +167 -0
- package/dist/src/features/selection/selection-manager.d.ts.map +1 -0
- package/dist/src/features/sorting/index.d.ts +13 -0
- package/dist/src/features/sorting/index.d.ts.map +1 -0
- package/dist/src/features/sorting/row-sorter.interface.d.ts +63 -0
- package/dist/src/features/sorting/row-sorter.interface.d.ts.map +1 -0
- package/dist/src/features/sorting/single-column-sorter.d.ts +75 -0
- package/dist/src/features/sorting/single-column-sorter.d.ts.map +1 -0
- package/dist/src/features/sorting/sort-manager.d.ts +132 -0
- package/dist/src/features/sorting/sort-manager.d.ts.map +1 -0
- package/dist/src/features/undo-redo/index.d.ts +8 -0
- package/dist/src/features/undo-redo/index.d.ts.map +1 -0
- package/dist/src/features/undo-redo/undo-redo-manager.d.ts +215 -0
- package/dist/src/features/undo-redo/undo-redo-manager.d.ts.map +1 -0
- package/dist/src/grid.d.ts +412 -0
- package/dist/src/grid.d.ts.map +1 -0
- package/dist/src/i18n/index.d.ts +8 -0
- package/dist/src/i18n/index.d.ts.map +1 -0
- package/dist/src/i18n/locale-manager.d.ts +123 -0
- package/dist/src/i18n/locale-manager.d.ts.map +1 -0
- package/dist/src/i18n/rtl-support.d.ts +120 -0
- package/dist/src/i18n/rtl-support.d.ts.map +1 -0
- package/dist/src/index.d.ts +38 -0
- package/dist/src/index.d.ts.map +1 -0
- package/dist/src/keyboard/index.d.ts +6 -0
- package/dist/src/keyboard/index.d.ts.map +1 -0
- package/dist/src/keyboard/keyboard-navigator.d.ts +171 -0
- package/dist/src/keyboard/keyboard-navigator.d.ts.map +1 -0
- package/dist/src/rendering/cache/index.d.ts +3 -0
- package/dist/src/rendering/cache/index.d.ts.map +1 -0
- package/dist/src/rendering/cache/renderer-cache.d.ts +100 -0
- package/dist/src/rendering/cache/renderer-cache.d.ts.map +1 -0
- package/dist/src/rendering/cache/renderer-cache.interface.d.ts +89 -0
- package/dist/src/rendering/cache/renderer-cache.interface.d.ts.map +1 -0
- package/dist/src/rendering/cell-pool/cell-pool.d.ts +36 -0
- package/dist/src/rendering/cell-pool/cell-pool.d.ts.map +1 -0
- package/dist/src/rendering/cell-pool/cell-pool.interface.d.ts +76 -0
- package/dist/src/rendering/cell-pool/cell-pool.interface.d.ts.map +1 -0
- package/dist/src/rendering/cell-pool/index.d.ts +6 -0
- package/dist/src/rendering/cell-pool/index.d.ts.map +1 -0
- package/dist/src/rendering/cell-positioner/cell-positioner.d.ts +46 -0
- package/dist/src/rendering/cell-positioner/cell-positioner.d.ts.map +1 -0
- package/dist/src/rendering/cell-positioner/cell-positioner.interface.d.ts +86 -0
- package/dist/src/rendering/cell-positioner/cell-positioner.interface.d.ts.map +1 -0
- package/dist/src/rendering/cell-positioner/index.d.ts +6 -0
- package/dist/src/rendering/cell-positioner/index.d.ts.map +1 -0
- package/dist/src/rendering/height-provider/height-provider.interface.d.ts +62 -0
- package/dist/src/rendering/height-provider/height-provider.interface.d.ts.map +1 -0
- package/dist/src/rendering/height-provider/index.d.ts +7 -0
- package/dist/src/rendering/height-provider/index.d.ts.map +1 -0
- package/dist/src/rendering/height-provider/uniform-height-provider.d.ts +31 -0
- package/dist/src/rendering/height-provider/uniform-height-provider.d.ts.map +1 -0
- package/dist/src/rendering/height-provider/variable-height-provider.d.ts +33 -0
- package/dist/src/rendering/height-provider/variable-height-provider.d.ts.map +1 -0
- package/dist/src/rendering/renderers/advanced-cell-renderer.d.ts +105 -0
- package/dist/src/rendering/renderers/advanced-cell-renderer.d.ts.map +1 -0
- package/dist/src/rendering/renderers/image-renderer.d.ts +60 -0
- package/dist/src/rendering/renderers/image-renderer.d.ts.map +1 -0
- package/dist/src/rendering/renderers/index.d.ts +13 -0
- package/dist/src/rendering/renderers/index.d.ts.map +1 -0
- package/dist/src/rendering/renderers/number-renderer.d.ts +71 -0
- package/dist/src/rendering/renderers/number-renderer.d.ts.map +1 -0
- package/dist/src/rendering/renderers/renderer-registry.d.ts +55 -0
- package/dist/src/rendering/renderers/renderer-registry.d.ts.map +1 -0
- package/dist/src/rendering/renderers/renderer.interface.d.ts +79 -0
- package/dist/src/rendering/renderers/renderer.interface.d.ts.map +1 -0
- package/dist/src/rendering/renderers/text-renderer.d.ts +20 -0
- package/dist/src/rendering/renderers/text-renderer.d.ts.map +1 -0
- package/dist/src/rendering/spatial-hit-tester.d.ts +108 -0
- package/dist/src/rendering/spatial-hit-tester.d.ts.map +1 -0
- package/dist/src/rendering/virtual-scroller/index.d.ts +6 -0
- package/dist/src/rendering/virtual-scroller/index.d.ts.map +1 -0
- package/dist/src/rendering/virtual-scroller/virtual-scroller.d.ts +56 -0
- package/dist/src/rendering/virtual-scroller/virtual-scroller.d.ts.map +1 -0
- package/dist/src/rendering/virtual-scroller/virtual-scroller.interface.d.ts +170 -0
- package/dist/src/rendering/virtual-scroller/virtual-scroller.interface.d.ts.map +1 -0
- package/dist/src/rendering/width-provider/index.d.ts +7 -0
- package/dist/src/rendering/width-provider/index.d.ts.map +1 -0
- package/dist/src/rendering/width-provider/uniform-width-provider.d.ts +31 -0
- package/dist/src/rendering/width-provider/uniform-width-provider.d.ts.map +1 -0
- package/dist/src/rendering/width-provider/variable-width-provider.d.ts +33 -0
- package/dist/src/rendering/width-provider/variable-width-provider.d.ts.map +1 -0
- package/dist/src/rendering/width-provider/width-provider.interface.d.ts +62 -0
- package/dist/src/rendering/width-provider/width-provider.interface.d.ts.map +1 -0
- package/dist/src/selection/hit-tester.d.ts +168 -0
- package/dist/src/selection/hit-tester.d.ts.map +1 -0
- package/dist/src/selection/hit-tester.interface.d.ts +108 -0
- package/dist/src/selection/hit-tester.interface.d.ts.map +1 -0
- package/dist/src/selection/index.d.ts +9 -0
- package/dist/src/selection/index.d.ts.map +1 -0
- package/dist/src/selection/range-utils.d.ts +219 -0
- package/dist/src/selection/range-utils.d.ts.map +1 -0
- package/dist/src/selection/range-utils.interface.d.ts +51 -0
- package/dist/src/selection/range-utils.interface.d.ts.map +1 -0
- package/dist/src/styles/grid.css +356 -0
- package/dist/src/styles.css +273 -0
- package/dist/src/touch/index.d.ts +6 -0
- package/dist/src/touch/index.d.ts.map +1 -0
- package/dist/src/touch/touch-handler.d.ts +167 -0
- package/dist/src/touch/touch-handler.d.ts.map +1 -0
- package/dist/src/types/index.d.ts +133 -0
- package/dist/src/types/index.d.ts.map +1 -0
- package/dist/src/types.d.ts +559 -0
- package/dist/src/types.d.ts.map +1 -0
- package/package.json +47 -0
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@zengrid/core",
|
|
3
|
+
"version": "1.0.0",
|
|
4
|
+
"description": "High-performance data grid library with 14 advanced data structures and virtual scrolling",
|
|
5
|
+
"main": "./index.cjs.js",
|
|
6
|
+
"module": "./index.esm.js",
|
|
7
|
+
"types": "./dist/index.d.ts",
|
|
8
|
+
"exports": {
|
|
9
|
+
".": {
|
|
10
|
+
"module": "./index.esm.js",
|
|
11
|
+
"types": "./index.d.ts",
|
|
12
|
+
"import": "./index.cjs.mjs",
|
|
13
|
+
"default": "./index.cjs.js"
|
|
14
|
+
},
|
|
15
|
+
"./styles/*": "./dist/src/*",
|
|
16
|
+
"./package.json": "./package.json"
|
|
17
|
+
},
|
|
18
|
+
"files": [
|
|
19
|
+
"dist",
|
|
20
|
+
"README.md"
|
|
21
|
+
],
|
|
22
|
+
"keywords": [
|
|
23
|
+
"grid",
|
|
24
|
+
"data-grid",
|
|
25
|
+
"table",
|
|
26
|
+
"spreadsheet",
|
|
27
|
+
"virtual-scroll",
|
|
28
|
+
"datagrid",
|
|
29
|
+
"angular",
|
|
30
|
+
"react",
|
|
31
|
+
"vue"
|
|
32
|
+
],
|
|
33
|
+
"author": "ZenGrid Team",
|
|
34
|
+
"license": "MIT",
|
|
35
|
+
"repository": {
|
|
36
|
+
"type": "git",
|
|
37
|
+
"url": "https://github.com/Balaji2682/zengrid.git",
|
|
38
|
+
"directory": "packages/core"
|
|
39
|
+
},
|
|
40
|
+
"bugs": {
|
|
41
|
+
"url": "https://github.com/Balaji2682/zengrid/issues"
|
|
42
|
+
},
|
|
43
|
+
"homepage": "https://github.com/Balaji2682/zengrid#readme",
|
|
44
|
+
"dependencies": {
|
|
45
|
+
"@zengrid/shared": "^1.0.0"
|
|
46
|
+
},
|
|
47
|
+
"peerDependencies": {},
|
|
48
|
+
"devDependencies": {}
|
|
49
|
+
}
|
|
@@ -0,0 +1,171 @@
|
|
|
1
|
+
import type { CellRef, SortDirection } from '../types';
|
|
2
|
+
/**
|
|
3
|
+
* ARIA Manager options
|
|
4
|
+
*/
|
|
5
|
+
export interface ARIAManagerOptions {
|
|
6
|
+
/**
|
|
7
|
+
* Grid container element
|
|
8
|
+
*/
|
|
9
|
+
container: HTMLElement;
|
|
10
|
+
/**
|
|
11
|
+
* Total row count
|
|
12
|
+
*/
|
|
13
|
+
rowCount: number;
|
|
14
|
+
/**
|
|
15
|
+
* Total column count
|
|
16
|
+
*/
|
|
17
|
+
colCount: number;
|
|
18
|
+
/**
|
|
19
|
+
* Label for screen readers
|
|
20
|
+
* @default 'Data grid'
|
|
21
|
+
*/
|
|
22
|
+
label?: string;
|
|
23
|
+
/**
|
|
24
|
+
* Description for screen readers
|
|
25
|
+
*/
|
|
26
|
+
description?: string;
|
|
27
|
+
/**
|
|
28
|
+
* Enable live region announcements
|
|
29
|
+
* @default true
|
|
30
|
+
*/
|
|
31
|
+
enableLiveRegion?: boolean;
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* ARIA Manager - Accessibility features for screen readers
|
|
35
|
+
*
|
|
36
|
+
* Implements WCAG 2.1 AA compliance through:
|
|
37
|
+
* - Proper ARIA roles (grid, gridcell, rowheader, columnheader)
|
|
38
|
+
* - Dynamic aria-rowindex and aria-colindex
|
|
39
|
+
* - aria-selected state management
|
|
40
|
+
* - aria-sort for sortable columns
|
|
41
|
+
* - Live region for announcements
|
|
42
|
+
*
|
|
43
|
+
* @example
|
|
44
|
+
* ```typescript
|
|
45
|
+
* const aria = new ARIAManager({
|
|
46
|
+
* container: gridElement,
|
|
47
|
+
* rowCount: 100000,
|
|
48
|
+
* colCount: 10,
|
|
49
|
+
* label: 'Employee data grid',
|
|
50
|
+
* });
|
|
51
|
+
*
|
|
52
|
+
* // Mark cell as selected
|
|
53
|
+
* aria.setCellSelected(cellElement, 0, 0, true);
|
|
54
|
+
*
|
|
55
|
+
* // Announce to screen reader
|
|
56
|
+
* aria.announce('Data loaded successfully');
|
|
57
|
+
*
|
|
58
|
+
* // Update sort indicator
|
|
59
|
+
* aria.setColumnSort(headerElement, 0, 'asc');
|
|
60
|
+
* ```
|
|
61
|
+
*/
|
|
62
|
+
export declare class ARIAManager {
|
|
63
|
+
private container;
|
|
64
|
+
private rowCount;
|
|
65
|
+
private colCount;
|
|
66
|
+
private liveRegion;
|
|
67
|
+
private announceTimeout;
|
|
68
|
+
constructor(options: ARIAManagerOptions);
|
|
69
|
+
/**
|
|
70
|
+
* Setup grid container ARIA roles and attributes
|
|
71
|
+
*/
|
|
72
|
+
private setupGridRole;
|
|
73
|
+
/**
|
|
74
|
+
* Setup live region for screen reader announcements
|
|
75
|
+
*/
|
|
76
|
+
private setupLiveRegion;
|
|
77
|
+
/**
|
|
78
|
+
* Set cell ARIA attributes
|
|
79
|
+
* @param element - Cell element
|
|
80
|
+
* @param row - Row index (0-based)
|
|
81
|
+
* @param col - Column index (0-based)
|
|
82
|
+
*/
|
|
83
|
+
setCellAttributes(element: HTMLElement, row: number, col: number): void;
|
|
84
|
+
/**
|
|
85
|
+
* Set cell selected state
|
|
86
|
+
* @param element - Cell element
|
|
87
|
+
* @param row - Row index
|
|
88
|
+
* @param col - Column index
|
|
89
|
+
* @param selected - Selected state
|
|
90
|
+
*/
|
|
91
|
+
setCellSelected(element: HTMLElement, row: number, col: number, selected: boolean): void;
|
|
92
|
+
/**
|
|
93
|
+
* Set header cell attributes
|
|
94
|
+
* @param element - Header element
|
|
95
|
+
* @param col - Column index
|
|
96
|
+
* @param label - Column label
|
|
97
|
+
*/
|
|
98
|
+
setHeaderAttributes(element: HTMLElement, col: number, label: string): void;
|
|
99
|
+
/**
|
|
100
|
+
* Set row header attributes
|
|
101
|
+
* @param element - Row header element
|
|
102
|
+
* @param row - Row index
|
|
103
|
+
* @param label - Row label
|
|
104
|
+
*/
|
|
105
|
+
setRowHeaderAttributes(element: HTMLElement, row: number, label: string): void;
|
|
106
|
+
/**
|
|
107
|
+
* Set column sort indicator
|
|
108
|
+
* @param element - Column header element
|
|
109
|
+
* @param col - Column index
|
|
110
|
+
* @param direction - Sort direction ('asc', 'desc', or null)
|
|
111
|
+
*/
|
|
112
|
+
setColumnSort(element: HTMLElement, col: number, direction: SortDirection): void;
|
|
113
|
+
/**
|
|
114
|
+
* Set cell as editable
|
|
115
|
+
* @param element - Cell element
|
|
116
|
+
* @param editable - Whether cell is editable
|
|
117
|
+
*/
|
|
118
|
+
setCellEditable(element: HTMLElement, editable: boolean): void;
|
|
119
|
+
/**
|
|
120
|
+
* Set cell as disabled
|
|
121
|
+
* @param element - Cell element
|
|
122
|
+
* @param disabled - Whether cell is disabled
|
|
123
|
+
*/
|
|
124
|
+
setCellDisabled(element: HTMLElement, disabled: boolean): void;
|
|
125
|
+
/**
|
|
126
|
+
* Announce message to screen readers
|
|
127
|
+
* @param message - Message to announce
|
|
128
|
+
* @param priority - Announcement priority ('polite' or 'assertive')
|
|
129
|
+
*/
|
|
130
|
+
announce(message: string, priority?: 'polite' | 'assertive'): void;
|
|
131
|
+
/**
|
|
132
|
+
* Update grid size
|
|
133
|
+
* @param rowCount - New row count
|
|
134
|
+
* @param colCount - New column count
|
|
135
|
+
*/
|
|
136
|
+
updateSize(rowCount: number, colCount: number): void;
|
|
137
|
+
/**
|
|
138
|
+
* Set active cell (for keyboard navigation)
|
|
139
|
+
* @param element - Cell element
|
|
140
|
+
* @param cell - Cell reference
|
|
141
|
+
*/
|
|
142
|
+
setActiveCell(element: HTMLElement, cell: CellRef): void;
|
|
143
|
+
/**
|
|
144
|
+
* Clear active cell
|
|
145
|
+
*/
|
|
146
|
+
clearActiveCell(): void;
|
|
147
|
+
/**
|
|
148
|
+
* Announce range selection
|
|
149
|
+
* @param startRow - Start row (0-based)
|
|
150
|
+
* @param startCol - Start column (0-based)
|
|
151
|
+
* @param endRow - End row (0-based)
|
|
152
|
+
* @param endCol - End column (0-based)
|
|
153
|
+
*/
|
|
154
|
+
announceRangeSelection(startRow: number, startCol: number, endRow: number, endCol: number): void;
|
|
155
|
+
/**
|
|
156
|
+
* Announce filter applied
|
|
157
|
+
* @param visibleRows - Number of visible rows
|
|
158
|
+
* @param totalRows - Total rows
|
|
159
|
+
*/
|
|
160
|
+
announceFilter(visibleRows: number, totalRows: number): void;
|
|
161
|
+
/**
|
|
162
|
+
* Announce data load
|
|
163
|
+
* @param rowCount - Number of rows loaded
|
|
164
|
+
*/
|
|
165
|
+
announceDataLoad(rowCount: number): void;
|
|
166
|
+
/**
|
|
167
|
+
* Destroy manager and cleanup
|
|
168
|
+
*/
|
|
169
|
+
destroy(): void;
|
|
170
|
+
}
|
|
171
|
+
//# sourceMappingURL=aria-manager.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"aria-manager.d.ts","sourceRoot":"","sources":["../../../../../packages/core/src/a11y/aria-manager.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAEvD;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC;;OAEG;IACH,SAAS,EAAE,WAAW,CAAC;IAEvB;;OAEG;IACH,QAAQ,EAAE,MAAM,CAAC;IAEjB;;OAEG;IACH,QAAQ,EAAE,MAAM,CAAC;IAEjB;;;OAGG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;IAEf;;OAEG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;IAErB;;;OAGG;IACH,gBAAgB,CAAC,EAAE,OAAO,CAAC;CAC5B;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AACH,qBAAa,WAAW;IACtB,OAAO,CAAC,SAAS,CAAc;IAC/B,OAAO,CAAC,QAAQ,CAAS;IACzB,OAAO,CAAC,QAAQ,CAAS;IACzB,OAAO,CAAC,UAAU,CAA4B;IAC9C,OAAO,CAAC,eAAe,CAAuB;gBAElC,OAAO,EAAE,kBAAkB;IAcvC;;OAEG;IACH,OAAO,CAAC,aAAa;IAmBrB;;OAEG;IACH,OAAO,CAAC,eAAe;IAqBvB;;;;;OAKG;IACH,iBAAiB,CAAC,OAAO,EAAE,WAAW,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,IAAI;IASvE;;;;;;OAMG;IACH,eAAe,CAAC,OAAO,EAAE,WAAW,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,QAAQ,EAAE,OAAO,GAAG,IAAI;IAUxF;;;;;OAKG;IACH,mBAAmB,CAAC,OAAO,EAAE,WAAW,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI;IAO3E;;;;;OAKG;IACH,sBAAsB,CAAC,OAAO,EAAE,WAAW,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI;IAO9E;;;;;OAKG;IACH,aAAa,CAAC,OAAO,EAAE,WAAW,EAAE,GAAG,EAAE,MAAM,EAAE,SAAS,EAAE,aAAa,GAAG,IAAI;IAYhF;;;;OAIG;IACH,eAAe,CAAC,OAAO,EAAE,WAAW,EAAE,QAAQ,EAAE,OAAO,GAAG,IAAI;IAQ9D;;;;OAIG;IACH,eAAe,CAAC,OAAO,EAAE,WAAW,EAAE,QAAQ,EAAE,OAAO,GAAG,IAAI;IAI9D;;;;OAIG;IACH,QAAQ,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,GAAE,QAAQ,GAAG,WAAsB,GAAG,IAAI;IAqB5E;;;;OAIG;IACH,UAAU,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,IAAI;IAUpD;;;;OAIG;IACH,aAAa,CAAC,OAAO,EAAE,WAAW,EAAE,IAAI,EAAE,OAAO,GAAG,IAAI;IAUxD;;OAEG;IACH,eAAe,IAAI,IAAI;IAIvB;;;;;;OAMG;IACH,sBAAsB,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI;IAShG;;;;OAIG;IACH,cAAc,CAAC,WAAW,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,IAAI;IAM5D;;;OAGG;IACH,gBAAgB,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI;IAKxC;;OAEG;IACH,OAAO,IAAI,IAAI;CAmBhB"}
|
|
@@ -0,0 +1,124 @@
|
|
|
1
|
+
import type { CellRef } from '../types';
|
|
2
|
+
import type { ARIAManager } from './aria-manager';
|
|
3
|
+
/**
|
|
4
|
+
* Focus Manager options
|
|
5
|
+
*/
|
|
6
|
+
export interface FocusManagerOptions {
|
|
7
|
+
/**
|
|
8
|
+
* Grid container element
|
|
9
|
+
*/
|
|
10
|
+
container: HTMLElement;
|
|
11
|
+
/**
|
|
12
|
+
* ARIA manager instance
|
|
13
|
+
*/
|
|
14
|
+
ariaManager?: ARIAManager;
|
|
15
|
+
/**
|
|
16
|
+
* Callback to get cell element
|
|
17
|
+
*/
|
|
18
|
+
getCellElement: (row: number, col: number) => HTMLElement | null;
|
|
19
|
+
/**
|
|
20
|
+
* Callback when active cell changes
|
|
21
|
+
*/
|
|
22
|
+
onActiveCellChange?: (cell: CellRef | null, previousCell: CellRef | null) => void;
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* FocusManager - Manages keyboard focus using roving tabindex pattern
|
|
26
|
+
*
|
|
27
|
+
* Implements the roving tabindex pattern for grid navigation:
|
|
28
|
+
* - Only one cell is focusable at a time (tabindex="0")
|
|
29
|
+
* - All other cells have tabindex="-1"
|
|
30
|
+
* - Arrow keys move focus between cells
|
|
31
|
+
* - Tab key exits the grid
|
|
32
|
+
*
|
|
33
|
+
* @example
|
|
34
|
+
* ```typescript
|
|
35
|
+
* const focus = new FocusManager({
|
|
36
|
+
* container: gridElement,
|
|
37
|
+
* getCellElement: (row, col) => document.getElementById(`cell-${row}-${col}`),
|
|
38
|
+
* onActiveCellChange: (cell) => {
|
|
39
|
+
* console.log('Active cell:', cell);
|
|
40
|
+
* },
|
|
41
|
+
* });
|
|
42
|
+
*
|
|
43
|
+
* // Set active cell
|
|
44
|
+
* focus.setActiveCell({ row: 0, col: 0 });
|
|
45
|
+
*
|
|
46
|
+
* // Move focus
|
|
47
|
+
* focus.moveFocus('down'); // Moves to row 1
|
|
48
|
+
* focus.moveFocus('right'); // Moves to col 1
|
|
49
|
+
* ```
|
|
50
|
+
*/
|
|
51
|
+
export declare class FocusManager {
|
|
52
|
+
private container;
|
|
53
|
+
private ariaManager?;
|
|
54
|
+
private getCellElement;
|
|
55
|
+
private onActiveCellChange?;
|
|
56
|
+
private activeCell;
|
|
57
|
+
private focusedElement;
|
|
58
|
+
constructor(options: FocusManagerOptions);
|
|
59
|
+
/**
|
|
60
|
+
* Get current active cell
|
|
61
|
+
*/
|
|
62
|
+
getActiveCell(): CellRef | null;
|
|
63
|
+
/**
|
|
64
|
+
* Set active cell and update focus
|
|
65
|
+
* @param cell - Cell to make active
|
|
66
|
+
* @param focus - Whether to actually focus the element (default true)
|
|
67
|
+
*/
|
|
68
|
+
setActiveCell(cell: CellRef | null, focus?: boolean): void;
|
|
69
|
+
/**
|
|
70
|
+
* Move focus in a direction
|
|
71
|
+
* @param direction - Direction to move ('up', 'down', 'left', 'right')
|
|
72
|
+
* @param rowCount - Total row count
|
|
73
|
+
* @param colCount - Total column count
|
|
74
|
+
* @returns Whether focus moved successfully
|
|
75
|
+
*/
|
|
76
|
+
moveFocus(direction: 'up' | 'down' | 'left' | 'right', rowCount: number, colCount: number): boolean;
|
|
77
|
+
/**
|
|
78
|
+
* Move focus by page (Page Up/Down)
|
|
79
|
+
* @param direction - 'up' or 'down'
|
|
80
|
+
* @param pageSize - Number of rows per page
|
|
81
|
+
* @param rowCount - Total row count
|
|
82
|
+
*/
|
|
83
|
+
movePageFocus(direction: 'up' | 'down', pageSize: number, rowCount: number): boolean;
|
|
84
|
+
/**
|
|
85
|
+
* Move to first cell in row (Home)
|
|
86
|
+
*/
|
|
87
|
+
moveToRowStart(): boolean;
|
|
88
|
+
/**
|
|
89
|
+
* Move to last cell in row (End)
|
|
90
|
+
* @param colCount - Total column count
|
|
91
|
+
*/
|
|
92
|
+
moveToRowEnd(colCount: number): boolean;
|
|
93
|
+
/**
|
|
94
|
+
* Move to first cell in grid (Ctrl+Home)
|
|
95
|
+
*/
|
|
96
|
+
moveToGridStart(): boolean;
|
|
97
|
+
/**
|
|
98
|
+
* Move to last cell in grid (Ctrl+End)
|
|
99
|
+
* @param rowCount - Total row count
|
|
100
|
+
* @param colCount - Total column count
|
|
101
|
+
*/
|
|
102
|
+
moveToGridEnd(rowCount: number, colCount: number): boolean;
|
|
103
|
+
/**
|
|
104
|
+
* Focus the grid container
|
|
105
|
+
*/
|
|
106
|
+
focusGrid(): void;
|
|
107
|
+
/**
|
|
108
|
+
* Check if grid or a cell has focus
|
|
109
|
+
*/
|
|
110
|
+
hasFocus(): boolean;
|
|
111
|
+
/**
|
|
112
|
+
* Render focus ring on active cell
|
|
113
|
+
*/
|
|
114
|
+
renderFocusRing(): void;
|
|
115
|
+
/**
|
|
116
|
+
* Clear focus
|
|
117
|
+
*/
|
|
118
|
+
clearFocus(): void;
|
|
119
|
+
/**
|
|
120
|
+
* Destroy focus manager
|
|
121
|
+
*/
|
|
122
|
+
destroy(): void;
|
|
123
|
+
}
|
|
124
|
+
//# sourceMappingURL=focus-manager.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"focus-manager.d.ts","sourceRoot":"","sources":["../../../../../packages/core/src/a11y/focus-manager.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,UAAU,CAAC;AACxC,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAElD;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAClC;;OAEG;IACH,SAAS,EAAE,WAAW,CAAC;IAEvB;;OAEG;IACH,WAAW,CAAC,EAAE,WAAW,CAAC;IAE1B;;OAEG;IACH,cAAc,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,KAAK,WAAW,GAAG,IAAI,CAAC;IAEjE;;OAEG;IACH,kBAAkB,CAAC,EAAE,CAAC,IAAI,EAAE,OAAO,GAAG,IAAI,EAAE,YAAY,EAAE,OAAO,GAAG,IAAI,KAAK,IAAI,CAAC;CACnF;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,qBAAa,YAAY;IACvB,OAAO,CAAC,SAAS,CAAc;IAC/B,OAAO,CAAC,WAAW,CAAC,CAAc;IAClC,OAAO,CAAC,cAAc,CAAmD;IACzE,OAAO,CAAC,kBAAkB,CAAC,CAA+D;IAE1F,OAAO,CAAC,UAAU,CAAwB;IAC1C,OAAO,CAAC,cAAc,CAA4B;gBAEtC,OAAO,EAAE,mBAAmB;IAOxC;;OAEG;IACH,aAAa,IAAI,OAAO,GAAG,IAAI;IAI/B;;;;OAIG;IACH,aAAa,CAAC,IAAI,EAAE,OAAO,GAAG,IAAI,EAAE,KAAK,GAAE,OAAc,GAAG,IAAI;IAuDhE;;;;;;OAMG;IACH,SAAS,CACP,SAAS,EAAE,IAAI,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,EAC3C,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,MAAM,GACf,OAAO;IAgCV;;;;;OAKG;IACH,aAAa,CACX,SAAS,EAAE,IAAI,GAAG,MAAM,EACxB,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,MAAM,GACf,OAAO;IAkBV;;OAEG;IACH,cAAc,IAAI,OAAO;IAQzB;;;OAGG;IACH,YAAY,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO;IAUvC;;OAEG;IACH,eAAe,IAAI,OAAO;IAQ1B;;;;OAIG;IACH,aAAa,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO;IAc1D;;OAEG;IACH,SAAS,IAAI,IAAI;IAIjB;;OAEG;IACH,QAAQ,IAAI,OAAO;IAOnB;;OAEG;IACH,eAAe,IAAI,IAAI;IAOvB;;OAEG;IACH,UAAU,IAAI,IAAI;IAoBlB;;OAEG;IACH,OAAO,IAAI,IAAI;CAKhB"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Accessibility (a11y) features for ZenGrid
|
|
3
|
+
*/
|
|
4
|
+
export { ARIAManager } from './aria-manager';
|
|
5
|
+
export type { ARIAManagerOptions } from './aria-manager';
|
|
6
|
+
export { FocusManager } from './focus-manager';
|
|
7
|
+
export type { FocusManagerOptions } from './focus-manager';
|
|
8
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../packages/core/src/a11y/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAC7C,YAAY,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAC;AAEzD,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAC/C,YAAY,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAC"}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import type { DataAccessor } from './data-accessor.interface';
|
|
2
|
+
/**
|
|
3
|
+
* DataAccessor adapter for 2D arrays
|
|
4
|
+
*
|
|
5
|
+
* Provides unified access to array-based data for sorting/filtering/searching.
|
|
6
|
+
*/
|
|
7
|
+
export declare class ArrayAccessor<T = any> implements DataAccessor<T> {
|
|
8
|
+
private data;
|
|
9
|
+
private _colCount;
|
|
10
|
+
constructor(data: T[][]);
|
|
11
|
+
getValue(row: number, col: number | string): T | undefined;
|
|
12
|
+
getRow(row: number): Iterable<[number, T]>;
|
|
13
|
+
getColumn(col: number | string): Iterable<[number, T]>;
|
|
14
|
+
get rowCount(): number;
|
|
15
|
+
get colCount(): number;
|
|
16
|
+
getColumnIds(): ReadonlyArray<number>;
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* Create a DataAccessor from a 2D array
|
|
20
|
+
*
|
|
21
|
+
* @param data - 2D array of data
|
|
22
|
+
* @returns DataAccessor instance
|
|
23
|
+
*
|
|
24
|
+
* @example
|
|
25
|
+
* ```typescript
|
|
26
|
+
* const data = [
|
|
27
|
+
* ['Alice', 25, true],
|
|
28
|
+
* ['Bob', 30, false],
|
|
29
|
+
* ['Charlie', 35, true]
|
|
30
|
+
* ];
|
|
31
|
+
*
|
|
32
|
+
* const accessor = createArrayAccessor(data);
|
|
33
|
+
* accessor.getValue(0, 0); // 'Alice'
|
|
34
|
+
* accessor.getValue(1, 1); // 30
|
|
35
|
+
* ```
|
|
36
|
+
*/
|
|
37
|
+
export declare function createArrayAccessor<T>(data: T[][]): DataAccessor<T>;
|
|
38
|
+
//# sourceMappingURL=array-accessor.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"array-accessor.d.ts","sourceRoot":"","sources":["../../../../../../packages/core/src/data/data-accessor/array-accessor.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AAE9D;;;;GAIG;AACH,qBAAa,aAAa,CAAC,CAAC,GAAG,GAAG,CAAE,YAAW,YAAY,CAAC,CAAC,CAAC;IAC5D,OAAO,CAAC,IAAI,CAAkC;IAC9C,OAAO,CAAC,SAAS,CAAS;gBAEd,IAAI,EAAE,CAAC,EAAE,EAAE;IAKvB,QAAQ,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,CAAC,GAAG,SAAS;IAmB1D,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,QAAQ,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;IAc1C,SAAS,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,QAAQ,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;IAuBtD,IAAI,QAAQ,IAAI,MAAM,CAErB;IAED,IAAI,QAAQ,IAAI,MAAM,CAErB;IAED,YAAY,IAAI,aAAa,CAAC,MAAM,CAAC;CAGtC;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,mBAAmB,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,EAAE,GAAG,YAAY,CAAC,CAAC,CAAC,CAEnE"}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import type { ColumnStore as IColumnStore } from '@zengrid/shared';
|
|
2
|
+
import type { DataAccessor } from './data-accessor.interface';
|
|
3
|
+
/**
|
|
4
|
+
* DataAccessor adapter for ColumnStore
|
|
5
|
+
*
|
|
6
|
+
* Provides unified access to column-oriented data for sorting/filtering/searching.
|
|
7
|
+
*/
|
|
8
|
+
export declare class ColumnStoreAccessor implements DataAccessor<any> {
|
|
9
|
+
private store;
|
|
10
|
+
constructor(store: IColumnStore);
|
|
11
|
+
getValue(row: number, col: number | string): any | undefined;
|
|
12
|
+
getRow(row: number): Iterable<[string, any]>;
|
|
13
|
+
getColumn(col: number | string): Iterable<[number, any]>;
|
|
14
|
+
get rowCount(): number;
|
|
15
|
+
get colCount(): number;
|
|
16
|
+
getColumnIds(): ReadonlyArray<string>;
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* Create a DataAccessor from a ColumnStore
|
|
20
|
+
*
|
|
21
|
+
* @param store - ColumnStore instance
|
|
22
|
+
* @returns DataAccessor instance
|
|
23
|
+
*
|
|
24
|
+
* @example
|
|
25
|
+
* ```typescript
|
|
26
|
+
* const store = new ColumnStore({
|
|
27
|
+
* rowCount: 100,
|
|
28
|
+
* columns: [
|
|
29
|
+
* { name: 'id', type: 'int32' },
|
|
30
|
+
* { name: 'name', type: 'string' },
|
|
31
|
+
* { name: 'price', type: 'float64' }
|
|
32
|
+
* ]
|
|
33
|
+
* });
|
|
34
|
+
*
|
|
35
|
+
* const accessor = createColumnStoreAccessor(store);
|
|
36
|
+
* accessor.getValue(0, 'name'); // Get by column name
|
|
37
|
+
* accessor.getValue(0, 1); // Get by column index
|
|
38
|
+
* ```
|
|
39
|
+
*/
|
|
40
|
+
export declare function createColumnStoreAccessor(store: IColumnStore): DataAccessor<any>;
|
|
41
|
+
//# sourceMappingURL=column-store-accessor.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"column-store-accessor.d.ts","sourceRoot":"","sources":["../../../../../../packages/core/src/data/data-accessor/column-store-accessor.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,IAAI,YAAY,EAAE,MAAM,iBAAiB,CAAC;AACnE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AAE9D;;;;GAIG;AACH,qBAAa,mBAAoB,YAAW,YAAY,CAAC,GAAG,CAAC;IAC3D,OAAO,CAAC,KAAK,CAAe;gBAEhB,KAAK,EAAE,YAAY;IAI/B,QAAQ,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,GAAG,GAAG,SAAS;IAY5D,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,QAAQ,CAAC,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAM5C,SAAS,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,QAAQ,CAAC,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAWxD,IAAI,QAAQ,IAAI,MAAM,CAErB;IAED,IAAI,QAAQ,IAAI,MAAM,CAErB;IAED,YAAY,IAAI,aAAa,CAAC,MAAM,CAAC;CAGtC;AAED;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,wBAAgB,yBAAyB,CACvC,KAAK,EAAE,YAAY,GAClB,YAAY,CAAC,GAAG,CAAC,CAEnB"}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Abstraction layer for accessing grid data from different sources
|
|
3
|
+
*
|
|
4
|
+
* Enables sorting/filtering/searching to work with any data structure
|
|
5
|
+
* (SparseMatrix, ColumnStore, or plain arrays).
|
|
6
|
+
*/
|
|
7
|
+
export interface DataAccessor<T = any> {
|
|
8
|
+
/**
|
|
9
|
+
* Get value at specific cell
|
|
10
|
+
* @param row - Row index
|
|
11
|
+
* @param col - Column identifier (number for SparseMatrix, string for ColumnStore)
|
|
12
|
+
* @returns Cell value or undefined if not present
|
|
13
|
+
*/
|
|
14
|
+
getValue(row: number, col: number | string): T | undefined;
|
|
15
|
+
/**
|
|
16
|
+
* Get all values in a row
|
|
17
|
+
* @param row - Row index
|
|
18
|
+
* @returns Iterable of [column, value] pairs
|
|
19
|
+
*/
|
|
20
|
+
getRow(row: number): Iterable<[number | string, T]>;
|
|
21
|
+
/**
|
|
22
|
+
* Get all values in a column
|
|
23
|
+
* @param col - Column identifier
|
|
24
|
+
* @returns Iterable of [row, value] pairs
|
|
25
|
+
*/
|
|
26
|
+
getColumn(col: number | string): Iterable<[number, T]>;
|
|
27
|
+
/**
|
|
28
|
+
* Total number of rows in data source
|
|
29
|
+
*/
|
|
30
|
+
readonly rowCount: number;
|
|
31
|
+
/**
|
|
32
|
+
* Total number of columns
|
|
33
|
+
*/
|
|
34
|
+
readonly colCount: number;
|
|
35
|
+
/**
|
|
36
|
+
* Get list of column identifiers
|
|
37
|
+
* @returns Array of column identifiers (numbers or strings)
|
|
38
|
+
*/
|
|
39
|
+
getColumnIds(): ReadonlyArray<number | string>;
|
|
40
|
+
}
|
|
41
|
+
//# sourceMappingURL=data-accessor.interface.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"data-accessor.interface.d.ts","sourceRoot":"","sources":["../../../../../../packages/core/src/data/data-accessor/data-accessor.interface.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,MAAM,WAAW,YAAY,CAAC,CAAC,GAAG,GAAG;IACnC;;;;;OAKG;IACH,QAAQ,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,CAAC,GAAG,SAAS,CAAC;IAE3D;;;;OAIG;IACH,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,QAAQ,CAAC,CAAC,MAAM,GAAG,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC;IAEpD;;;;OAIG;IACH,SAAS,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,QAAQ,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC;IAEvD;;OAEG;IACH,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAE1B;;OAEG;IACH,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAE1B;;;OAGG;IACH,YAAY,IAAI,aAAa,CAAC,MAAM,GAAG,MAAM,CAAC,CAAC;CAChD"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* DataAccessor - Unified interface for accessing different data sources
|
|
3
|
+
* @packageDocumentation
|
|
4
|
+
*/
|
|
5
|
+
export type { DataAccessor } from './data-accessor.interface';
|
|
6
|
+
export { SparseMatrixAccessor, createSparseMatrixAccessor, } from './sparse-matrix-accessor';
|
|
7
|
+
export { ColumnStoreAccessor, createColumnStoreAccessor, } from './column-store-accessor';
|
|
8
|
+
export { ArrayAccessor, createArrayAccessor } from './array-accessor';
|
|
9
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../packages/core/src/data/data-accessor/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,YAAY,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AAC9D,OAAO,EACL,oBAAoB,EACpB,0BAA0B,GAC3B,MAAM,0BAA0B,CAAC;AAClC,OAAO,EACL,mBAAmB,EACnB,yBAAyB,GAC1B,MAAM,yBAAyB,CAAC;AACjC,OAAO,EAAE,aAAa,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC"}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import type { ReadonlySparseMatrix } from '@zengrid/shared';
|
|
2
|
+
import type { DataAccessor } from './data-accessor.interface';
|
|
3
|
+
/**
|
|
4
|
+
* DataAccessor adapter for SparseMatrix
|
|
5
|
+
*
|
|
6
|
+
* Provides unified access to sparse matrix data for sorting/filtering/searching.
|
|
7
|
+
*/
|
|
8
|
+
export declare class SparseMatrixAccessor<T = any> implements DataAccessor<T> {
|
|
9
|
+
private matrix;
|
|
10
|
+
private _rowCount;
|
|
11
|
+
private _colCount;
|
|
12
|
+
constructor(matrix: ReadonlySparseMatrix<T>, rowCount: number, colCount: number);
|
|
13
|
+
getValue(row: number, col: number | string): T | undefined;
|
|
14
|
+
getRow(row: number): Iterable<[number, T]>;
|
|
15
|
+
getColumn(col: number | string): Iterable<[number, T]>;
|
|
16
|
+
get rowCount(): number;
|
|
17
|
+
get colCount(): number;
|
|
18
|
+
getColumnIds(): ReadonlyArray<number>;
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* Create a DataAccessor from a SparseMatrix
|
|
22
|
+
*
|
|
23
|
+
* @param matrix - Sparse matrix instance
|
|
24
|
+
* @param rowCount - Total number of rows (including empty rows)
|
|
25
|
+
* @param colCount - Total number of columns (including empty columns)
|
|
26
|
+
* @returns DataAccessor instance
|
|
27
|
+
*
|
|
28
|
+
* @example
|
|
29
|
+
* ```typescript
|
|
30
|
+
* const matrix = new SparseMatrix<number>();
|
|
31
|
+
* matrix.set(0, 1, 42);
|
|
32
|
+
* matrix.set(5, 3, 99);
|
|
33
|
+
*
|
|
34
|
+
* const accessor = createSparseMatrixAccessor(matrix, 10, 5);
|
|
35
|
+
* accessor.getValue(0, 1); // 42
|
|
36
|
+
* ```
|
|
37
|
+
*/
|
|
38
|
+
export declare function createSparseMatrixAccessor<T>(matrix: ReadonlySparseMatrix<T>, rowCount: number, colCount: number): DataAccessor<T>;
|
|
39
|
+
//# sourceMappingURL=sparse-matrix-accessor.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sparse-matrix-accessor.d.ts","sourceRoot":"","sources":["../../../../../../packages/core/src/data/data-accessor/sparse-matrix-accessor.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,iBAAiB,CAAC;AAC5D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AAE9D;;;;GAIG;AACH,qBAAa,oBAAoB,CAAC,CAAC,GAAG,GAAG,CAAE,YAAW,YAAY,CAAC,CAAC,CAAC;IACnE,OAAO,CAAC,MAAM,CAA0B;IACxC,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,SAAS,CAAS;gBAEd,MAAM,EAAE,oBAAoB,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM;IAM/E,QAAQ,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,CAAC,GAAG,SAAS;IAS1D,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,QAAQ,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;IAM1C,SAAS,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,QAAQ,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;IAWtD,IAAI,QAAQ,IAAI,MAAM,CAErB;IAED,IAAI,QAAQ,IAAI,MAAM,CAErB;IAED,YAAY,IAAI,aAAa,CAAC,MAAM,CAAC;CAGtC;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,0BAA0B,CAAC,CAAC,EAC1C,MAAM,EAAE,oBAAoB,CAAC,CAAC,CAAC,EAC/B,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,MAAM,GACf,YAAY,CAAC,CAAC,CAAC,CAEjB"}
|