@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,89 @@
|
|
|
1
|
+
import type { PaginationState, PaginationConfig, PaginationHandlers } from '../../types';
|
|
2
|
+
/**
|
|
3
|
+
* Paginator - Renders pagination controls with multiple template styles
|
|
4
|
+
*
|
|
5
|
+
* Provides 5 built-in template styles:
|
|
6
|
+
* 1. **Simple**: Minimal navigation < 1 2 3 >
|
|
7
|
+
* 2. **Material**: Material Design inspired
|
|
8
|
+
* 3. **Bootstrap**: Bootstrap style with ellipsis
|
|
9
|
+
* 4. **Compact**: Compact with page input field
|
|
10
|
+
* 5. **Full**: Full-featured with all controls
|
|
11
|
+
*
|
|
12
|
+
* @example Basic Usage
|
|
13
|
+
* ```typescript
|
|
14
|
+
* const paginator = new Paginator({
|
|
15
|
+
* enabled: true,
|
|
16
|
+
* pageSize: 100,
|
|
17
|
+
* template: 'material',
|
|
18
|
+
* });
|
|
19
|
+
*
|
|
20
|
+
* const container = paginator.render(state, handlers);
|
|
21
|
+
* document.body.appendChild(container);
|
|
22
|
+
* ```
|
|
23
|
+
*/
|
|
24
|
+
export declare class Paginator {
|
|
25
|
+
private config;
|
|
26
|
+
constructor(config?: PaginationConfig);
|
|
27
|
+
/**
|
|
28
|
+
* Render pagination controls
|
|
29
|
+
*/
|
|
30
|
+
render(state: PaginationState, handlers: PaginationHandlers): HTMLElement;
|
|
31
|
+
/**
|
|
32
|
+
* Template 1: Simple - Minimal navigation
|
|
33
|
+
* Layout: < 1 2 3 4 5 >
|
|
34
|
+
*/
|
|
35
|
+
private renderSimpleTemplate;
|
|
36
|
+
/**
|
|
37
|
+
* Template 2: Material - Material Design style
|
|
38
|
+
* Layout: Rows per page: [100] | 1-100 of 1000 | < >
|
|
39
|
+
*/
|
|
40
|
+
private renderMaterialTemplate;
|
|
41
|
+
/**
|
|
42
|
+
* Template 3: Bootstrap - Bootstrap style with ellipsis
|
|
43
|
+
* Layout: First | Previous | 1 2 ... 5 6 7 ... 10 | Next | Last
|
|
44
|
+
*/
|
|
45
|
+
private renderBootstrapTemplate;
|
|
46
|
+
/**
|
|
47
|
+
* Template 4: Compact - Compact with page input
|
|
48
|
+
* Layout: [100] items/page | Page [__5__] of 10 | < >
|
|
49
|
+
*/
|
|
50
|
+
private renderCompactTemplate;
|
|
51
|
+
/**
|
|
52
|
+
* Template 5: Full - Full-featured with all controls
|
|
53
|
+
* Layout: Showing 1-100 of 1000 | [100] per page | First | < | 1 2 3 4 5 | > | Last | Page 1 of 10
|
|
54
|
+
*/
|
|
55
|
+
private renderFullTemplate;
|
|
56
|
+
/**
|
|
57
|
+
* Helper: Create button element
|
|
58
|
+
*/
|
|
59
|
+
private createButton;
|
|
60
|
+
/**
|
|
61
|
+
* Helper: Create icon button element
|
|
62
|
+
*/
|
|
63
|
+
private createIconButton;
|
|
64
|
+
/**
|
|
65
|
+
* Helper: Create list item for bootstrap template
|
|
66
|
+
*/
|
|
67
|
+
private createListItem;
|
|
68
|
+
/**
|
|
69
|
+
* Helper: Create page size selector
|
|
70
|
+
*/
|
|
71
|
+
private createPageSizeSelector;
|
|
72
|
+
/**
|
|
73
|
+
* Helper: Create page info element
|
|
74
|
+
*/
|
|
75
|
+
private createPageInfo;
|
|
76
|
+
/**
|
|
77
|
+
* Helper: Get page numbers to display with ellipsis
|
|
78
|
+
*/
|
|
79
|
+
private getPageNumbers;
|
|
80
|
+
/**
|
|
81
|
+
* Update pagination config
|
|
82
|
+
*/
|
|
83
|
+
updateConfig(config: Partial<PaginationConfig>): void;
|
|
84
|
+
/**
|
|
85
|
+
* Destroy paginator and clean up
|
|
86
|
+
*/
|
|
87
|
+
destroy(): void;
|
|
88
|
+
}
|
|
89
|
+
//# sourceMappingURL=paginator.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"paginator.d.ts","sourceRoot":"","sources":["../../../../../../packages/core/src/features/pagination/paginator.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,eAAe,EACf,gBAAgB,EAChB,kBAAkB,EACnB,MAAM,aAAa,CAAC;AAErB;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,qBAAa,SAAS;IACpB,OAAO,CAAC,MAAM,CAAgG;gBAElG,MAAM,GAAE,gBAAqB;IAezC;;OAEG;IACH,MAAM,CAAC,KAAK,EAAE,eAAe,EAAE,QAAQ,EAAE,kBAAkB,GAAG,WAAW;IAuBzE;;;OAGG;IACH,OAAO,CAAC,oBAAoB;IAkC5B;;;OAGG;IACH,OAAO,CAAC,sBAAsB;IAwC9B;;;OAGG;IACH,OAAO,CAAC,uBAAuB;IAoE/B;;;OAGG;IACH,OAAO,CAAC,qBAAqB;IA6D7B;;;OAGG;IACH,OAAO,CAAC,kBAAkB;IAiF1B;;OAEG;IACH,OAAO,CAAC,YAAY;IAgBpB;;OAEG;IACH,OAAO,CAAC,gBAAgB;IAUxB;;OAEG;IACH,OAAO,CAAC,cAAc;IAoBtB;;OAEG;IACH,OAAO,CAAC,sBAAsB;IAsB9B;;OAEG;IACH,OAAO,CAAC,cAAc;IAgBtB;;OAEG;IACH,OAAO,CAAC,cAAc;IAgDtB;;OAEG;IACH,YAAY,CAAC,MAAM,EAAE,OAAO,CAAC,gBAAgB,CAAC,GAAG,IAAI;IAIrD;;OAEG;IACH,OAAO,IAAI,IAAI;CAGhB"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Selection feature
|
|
3
|
+
* @packageDocumentation
|
|
4
|
+
*/
|
|
5
|
+
export { SelectionManager } from './selection-manager';
|
|
6
|
+
export type { SelectionRange, SelectionType, SelectionMode, SelectionManagerOptions, } from './selection-manager';
|
|
7
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../packages/core/src/features/selection/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AACvD,YAAY,EACV,cAAc,EACd,aAAa,EACb,aAAa,EACb,uBAAuB,GACxB,MAAM,qBAAqB,CAAC"}
|
|
@@ -0,0 +1,167 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* SelectionManager - Manages cell, row, and column selections using IntervalTree
|
|
3
|
+
*
|
|
4
|
+
* Uses IntervalTree from shared package for efficient range query and storage.
|
|
5
|
+
* Supports:
|
|
6
|
+
* - Single cell selection
|
|
7
|
+
* - Row range selection
|
|
8
|
+
* - Column range selection
|
|
9
|
+
* - Multi-range selection
|
|
10
|
+
* - Selection queries (isSelected, getSelectedRanges, etc.)
|
|
11
|
+
*/
|
|
12
|
+
import type { EventEmitter } from '../../events/event-emitter';
|
|
13
|
+
import type { GridEvents } from '../../events/grid-events';
|
|
14
|
+
/**
|
|
15
|
+
* Selection range types
|
|
16
|
+
*/
|
|
17
|
+
export type SelectionType = 'cell' | 'row' | 'column' | 'range';
|
|
18
|
+
/**
|
|
19
|
+
* Selection range
|
|
20
|
+
*/
|
|
21
|
+
export interface SelectionRange {
|
|
22
|
+
type: SelectionType;
|
|
23
|
+
startRow: number;
|
|
24
|
+
endRow: number;
|
|
25
|
+
startCol: number;
|
|
26
|
+
endCol: number;
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* Selection mode
|
|
30
|
+
*/
|
|
31
|
+
export type SelectionMode = 'single' | 'multiple' | 'range';
|
|
32
|
+
/**
|
|
33
|
+
* Selection manager options
|
|
34
|
+
*/
|
|
35
|
+
export interface SelectionManagerOptions {
|
|
36
|
+
/**
|
|
37
|
+
* Selection mode
|
|
38
|
+
* @default 'single'
|
|
39
|
+
*/
|
|
40
|
+
mode?: SelectionMode;
|
|
41
|
+
/**
|
|
42
|
+
* Enable row selection
|
|
43
|
+
* @default true
|
|
44
|
+
*/
|
|
45
|
+
enableRowSelection?: boolean;
|
|
46
|
+
/**
|
|
47
|
+
* Enable column selection
|
|
48
|
+
* @default true
|
|
49
|
+
*/
|
|
50
|
+
enableColumnSelection?: boolean;
|
|
51
|
+
/**
|
|
52
|
+
* Event emitter for grid events
|
|
53
|
+
*/
|
|
54
|
+
events?: EventEmitter<GridEvents>;
|
|
55
|
+
}
|
|
56
|
+
/**
|
|
57
|
+
* SelectionManager implementation using IntervalTree
|
|
58
|
+
*
|
|
59
|
+
* @example
|
|
60
|
+
* ```typescript
|
|
61
|
+
* const selectionManager = new SelectionManager({
|
|
62
|
+
* mode: 'multiple',
|
|
63
|
+
* events: gridEvents,
|
|
64
|
+
* });
|
|
65
|
+
*
|
|
66
|
+
* // Select a single cell
|
|
67
|
+
* selectionManager.selectCell(5, 10);
|
|
68
|
+
*
|
|
69
|
+
* // Select a row range
|
|
70
|
+
* selectionManager.selectRows(0, 10);
|
|
71
|
+
*
|
|
72
|
+
* // Select a column range
|
|
73
|
+
* selectionManager.selectColumns(2, 5);
|
|
74
|
+
*
|
|
75
|
+
* // Check if a cell is selected
|
|
76
|
+
* if (selectionManager.isSelected(5, 10)) {
|
|
77
|
+
* // Cell is selected
|
|
78
|
+
* }
|
|
79
|
+
*
|
|
80
|
+
* // Get all selected ranges
|
|
81
|
+
* const ranges = selectionManager.getSelectedRanges();
|
|
82
|
+
* ```
|
|
83
|
+
*/
|
|
84
|
+
export declare class SelectionManager {
|
|
85
|
+
private mode;
|
|
86
|
+
private enableRowSelection;
|
|
87
|
+
private enableColumnSelection;
|
|
88
|
+
private events?;
|
|
89
|
+
private rowIntervals;
|
|
90
|
+
private colIntervals;
|
|
91
|
+
private selections;
|
|
92
|
+
private nextId;
|
|
93
|
+
constructor(options?: SelectionManagerOptions);
|
|
94
|
+
/**
|
|
95
|
+
* Select a single cell
|
|
96
|
+
*/
|
|
97
|
+
selectCell(row: number, col: number, additive?: boolean): void;
|
|
98
|
+
/**
|
|
99
|
+
* Select a row range
|
|
100
|
+
*/
|
|
101
|
+
selectRows(startRow: number, endRow: number, additive?: boolean): void;
|
|
102
|
+
/**
|
|
103
|
+
* Select a column range
|
|
104
|
+
*/
|
|
105
|
+
selectColumns(startCol: number, endCol: number, additive?: boolean): void;
|
|
106
|
+
/**
|
|
107
|
+
* Select a rectangular range
|
|
108
|
+
*/
|
|
109
|
+
selectRange(startRow: number, startCol: number, endRow: number, endCol: number, additive?: boolean): void;
|
|
110
|
+
/**
|
|
111
|
+
* Check if a cell is selected
|
|
112
|
+
*/
|
|
113
|
+
isSelected(row: number, col: number): boolean;
|
|
114
|
+
/**
|
|
115
|
+
* Check if a row is selected
|
|
116
|
+
*/
|
|
117
|
+
isRowSelected(row: number): boolean;
|
|
118
|
+
/**
|
|
119
|
+
* Check if a column is selected
|
|
120
|
+
*/
|
|
121
|
+
isColumnSelected(col: number): boolean;
|
|
122
|
+
/**
|
|
123
|
+
* Get all selected ranges
|
|
124
|
+
*/
|
|
125
|
+
getSelectedRanges(): SelectionRange[];
|
|
126
|
+
/**
|
|
127
|
+
* Get selected rows (for row selections only)
|
|
128
|
+
*/
|
|
129
|
+
getSelectedRows(): number[];
|
|
130
|
+
/**
|
|
131
|
+
* Get selected columns (for column selections only)
|
|
132
|
+
*/
|
|
133
|
+
getSelectedColumns(): number[];
|
|
134
|
+
/**
|
|
135
|
+
* Clear all selections
|
|
136
|
+
*/
|
|
137
|
+
clearSelection(): void;
|
|
138
|
+
/**
|
|
139
|
+
* Get selection count
|
|
140
|
+
*/
|
|
141
|
+
get selectionCount(): number;
|
|
142
|
+
/**
|
|
143
|
+
* Check if anything is selected
|
|
144
|
+
*/
|
|
145
|
+
hasSelection(): boolean;
|
|
146
|
+
/**
|
|
147
|
+
* Set selection mode
|
|
148
|
+
*/
|
|
149
|
+
setMode(mode: SelectionMode): void;
|
|
150
|
+
/**
|
|
151
|
+
* Add a selection to the interval trees
|
|
152
|
+
*/
|
|
153
|
+
private addSelection;
|
|
154
|
+
/**
|
|
155
|
+
* Generate unique ID for selections
|
|
156
|
+
*/
|
|
157
|
+
private generateId;
|
|
158
|
+
/**
|
|
159
|
+
* Emit selection change event
|
|
160
|
+
*/
|
|
161
|
+
private emitSelectionChange;
|
|
162
|
+
/**
|
|
163
|
+
* Cleanup
|
|
164
|
+
*/
|
|
165
|
+
destroy(): void;
|
|
166
|
+
}
|
|
167
|
+
//# sourceMappingURL=selection-manager.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"selection-manager.d.ts","sourceRoot":"","sources":["../../../../../../packages/core/src/features/selection/selection-manager.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAGH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAC/D,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC;AAE3D;;GAEG;AACH,MAAM,MAAM,aAAa,GAAG,MAAM,GAAG,KAAK,GAAG,QAAQ,GAAG,OAAO,CAAC;AAEhE;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,aAAa,CAAC;IACpB,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;CAChB;AAED;;GAEG;AACH,MAAM,MAAM,aAAa,GAAG,QAAQ,GAAG,UAAU,GAAG,OAAO,CAAC;AAE5D;;GAEG;AACH,MAAM,WAAW,uBAAuB;IACtC;;;OAGG;IACH,IAAI,CAAC,EAAE,aAAa,CAAC;IAErB;;;OAGG;IACH,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAE7B;;;OAGG;IACH,qBAAqB,CAAC,EAAE,OAAO,CAAC;IAEhC;;OAEG;IACH,MAAM,CAAC,EAAE,YAAY,CAAC,UAAU,CAAC,CAAC;CACnC;AAcD;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AACH,qBAAa,gBAAgB;IAC3B,OAAO,CAAC,IAAI,CAAgB;IAC5B,OAAO,CAAC,kBAAkB,CAAU;IACpC,OAAO,CAAC,qBAAqB,CAAU;IACvC,OAAO,CAAC,MAAM,CAAC,CAA2B;IAG1C,OAAO,CAAC,YAAY,CAA8B;IAClD,OAAO,CAAC,YAAY,CAA8B;IAGlD,OAAO,CAAC,UAAU,CAAyC;IAC3D,OAAO,CAAC,MAAM,CAAa;gBAEf,OAAO,GAAE,uBAA4B;IAWjD;;OAEG;IACH,UAAU,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,QAAQ,GAAE,OAAe,GAAG,IAAI;IAkBrE;;OAEG;IACH,UAAU,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,GAAE,OAAe,GAAG,IAAI;IAoB7E;;OAEG;IACH,aAAa,CACX,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,MAAM,EACd,QAAQ,GAAE,OAAe,GACxB,IAAI;IAoBP;;OAEG;IACH,WAAW,CACT,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,EACd,QAAQ,GAAE,OAAe,GACxB,IAAI;IAkBP;;OAEG;IACH,UAAU,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO;IAqB7C;;OAEG;IACH,aAAa,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO;IAUnC;;OAEG;IACH,gBAAgB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO;IAUtC;;OAEG;IACH,iBAAiB,IAAI,cAAc,EAAE;IAUrC;;OAEG;IACH,eAAe,IAAI,MAAM,EAAE;IAc3B;;OAEG;IACH,kBAAkB,IAAI,MAAM,EAAE;IAc9B;;OAEG;IACH,cAAc,IAAI,IAAI;IAOtB;;OAEG;IACH,IAAI,cAAc,IAAI,MAAM,CAE3B;IAED;;OAEG;IACH,YAAY,IAAI,OAAO;IAIvB;;OAEG;IACH,OAAO,CAAC,IAAI,EAAE,aAAa,GAAG,IAAI;IAclC;;OAEG;IACH,OAAO,CAAC,YAAY;IAgBpB;;OAEG;IACH,OAAO,CAAC,UAAU;IAIlB;;OAEG;IACH,OAAO,CAAC,mBAAmB;IAO3B;;OAEG;IACH,OAAO,IAAI,IAAI;CAIhB"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Row sorting functionality
|
|
3
|
+
*
|
|
4
|
+
* Provides non-destructive row sorting by column values.
|
|
5
|
+
* Returns IndexMaps that remap visual indices to data indices.
|
|
6
|
+
*
|
|
7
|
+
* @packageDocumentation
|
|
8
|
+
*/
|
|
9
|
+
export type { RowSorter, SortOptions, NullPosition } from './row-sorter.interface';
|
|
10
|
+
export { SingleColumnSorter } from './single-column-sorter';
|
|
11
|
+
export { SortManager } from './sort-manager';
|
|
12
|
+
export type { SortManagerOptions } from './sort-manager';
|
|
13
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../packages/core/src/features/sorting/index.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,YAAY,EAAE,SAAS,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AACnF,OAAO,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AAE5D,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAC7C,YAAY,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAC"}
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
import type { IndexMap } from '../../data/index-map';
|
|
2
|
+
import type { DataAccessor } from '../../data/data-accessor';
|
|
3
|
+
import type { SortDirection } from '../../types';
|
|
4
|
+
/**
|
|
5
|
+
* Position for null/undefined values in sort order
|
|
6
|
+
*/
|
|
7
|
+
export type NullPosition = 'first' | 'last' | 'natural';
|
|
8
|
+
/**
|
|
9
|
+
* Options for row sorting
|
|
10
|
+
*/
|
|
11
|
+
export interface SortOptions {
|
|
12
|
+
/**
|
|
13
|
+
* Sort direction
|
|
14
|
+
* - 'asc': Ascending order
|
|
15
|
+
* - 'desc': Descending order
|
|
16
|
+
* - null: No sorting (identity map)
|
|
17
|
+
*/
|
|
18
|
+
direction: SortDirection;
|
|
19
|
+
/**
|
|
20
|
+
* Where to place null/undefined values
|
|
21
|
+
* - 'first': Nulls appear at the beginning
|
|
22
|
+
* - 'last': Nulls appear at the end
|
|
23
|
+
* - 'natural': Nulls treated as smallest value
|
|
24
|
+
*
|
|
25
|
+
* @default 'last'
|
|
26
|
+
*/
|
|
27
|
+
nullPosition?: NullPosition;
|
|
28
|
+
/**
|
|
29
|
+
* Whether to use case-sensitive comparison for strings
|
|
30
|
+
* @default true
|
|
31
|
+
*/
|
|
32
|
+
caseSensitive?: boolean;
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* Interface for row sorting functionality
|
|
36
|
+
*
|
|
37
|
+
* Sorts rows by a column's values without modifying underlying data.
|
|
38
|
+
* Returns an IndexMap that remaps visual indices to data indices.
|
|
39
|
+
*/
|
|
40
|
+
export interface RowSorter {
|
|
41
|
+
/**
|
|
42
|
+
* Sort rows by a specific column
|
|
43
|
+
*
|
|
44
|
+
* @param dataAccessor - Accessor for grid data
|
|
45
|
+
* @param column - Column identifier to sort by
|
|
46
|
+
* @param options - Sort options
|
|
47
|
+
* @returns IndexMap mapping visual indices to data indices
|
|
48
|
+
*
|
|
49
|
+
* @example
|
|
50
|
+
* ```typescript
|
|
51
|
+
* const sorter = new SingleColumnSorter();
|
|
52
|
+
* const indexMap = sorter.sort(dataAccessor, 0, {
|
|
53
|
+
* direction: 'asc',
|
|
54
|
+
* nullPosition: 'last'
|
|
55
|
+
* });
|
|
56
|
+
*
|
|
57
|
+
* // Visual row 0 now shows the row with the smallest value
|
|
58
|
+
* const dataRow = indexMap.toDataIndex(0);
|
|
59
|
+
* ```
|
|
60
|
+
*/
|
|
61
|
+
sort(dataAccessor: DataAccessor, column: number | string, options: SortOptions): IndexMap;
|
|
62
|
+
}
|
|
63
|
+
//# sourceMappingURL=row-sorter.interface.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"row-sorter.interface.d.ts","sourceRoot":"","sources":["../../../../../../packages/core/src/features/sorting/row-sorter.interface.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAC7D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAEjD;;GAEG;AACH,MAAM,MAAM,YAAY,GAAG,OAAO,GAAG,MAAM,GAAG,SAAS,CAAC;AAExD;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B;;;;;OAKG;IACH,SAAS,EAAE,aAAa,CAAC;IAEzB;;;;;;;OAOG;IACH,YAAY,CAAC,EAAE,YAAY,CAAC;IAE5B;;;OAGG;IACH,aAAa,CAAC,EAAE,OAAO,CAAC;CACzB;AAED;;;;;GAKG;AACH,MAAM,WAAW,SAAS;IACxB;;;;;;;;;;;;;;;;;;;OAmBG;IACH,IAAI,CACF,YAAY,EAAE,YAAY,EAC1B,MAAM,EAAE,MAAM,GAAG,MAAM,EACvB,OAAO,EAAE,WAAW,GACnB,QAAQ,CAAC;CACb"}
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
import type { IndexMap } from '../../data/index-map';
|
|
2
|
+
import type { DataAccessor } from '../../data/data-accessor';
|
|
3
|
+
import type { RowSorter, SortOptions } from './row-sorter.interface';
|
|
4
|
+
/**
|
|
5
|
+
* Single-column row sorter
|
|
6
|
+
*
|
|
7
|
+
* Sorts grid rows by a single column's values using Timsort.
|
|
8
|
+
* Returns an IndexMap that remaps visual indices to data indices.
|
|
9
|
+
*
|
|
10
|
+
* @example
|
|
11
|
+
* ```typescript
|
|
12
|
+
* const sorter = new SingleColumnSorter();
|
|
13
|
+
* const indexMap = sorter.sort(dataAccessor, 'price', {
|
|
14
|
+
* direction: 'desc',
|
|
15
|
+
* nullPosition: 'last'
|
|
16
|
+
* });
|
|
17
|
+
* ```
|
|
18
|
+
*/
|
|
19
|
+
export declare class SingleColumnSorter implements RowSorter {
|
|
20
|
+
/**
|
|
21
|
+
* Sort rows by a specific column
|
|
22
|
+
*
|
|
23
|
+
* @param dataAccessor - Accessor for grid data
|
|
24
|
+
* @param column - Column identifier to sort by
|
|
25
|
+
* @param options - Sort options
|
|
26
|
+
* @returns IndexMap mapping visual indices to data indices
|
|
27
|
+
*/
|
|
28
|
+
sort(dataAccessor: DataAccessor, column: number | string, options: SortOptions): IndexMap;
|
|
29
|
+
/**
|
|
30
|
+
* Create a comparator function for sorting row indices
|
|
31
|
+
*
|
|
32
|
+
* @param dataAccessor - Accessor for grid data
|
|
33
|
+
* @param column - Column identifier
|
|
34
|
+
* @param direction - Sort direction
|
|
35
|
+
* @param nullPosition - Where to place null values
|
|
36
|
+
* @param caseSensitive - Case-sensitive string comparison
|
|
37
|
+
* @returns Comparator function
|
|
38
|
+
*/
|
|
39
|
+
private createComparator;
|
|
40
|
+
/**
|
|
41
|
+
* Get comparison result for null values
|
|
42
|
+
*
|
|
43
|
+
* @param nullPosition - Where nulls should appear
|
|
44
|
+
* @param direction - Sort direction
|
|
45
|
+
* @param isFirstNull - Whether the first value is null
|
|
46
|
+
* @returns Comparison result (-1, 0, or 1)
|
|
47
|
+
*/
|
|
48
|
+
private getNullComparisonResult;
|
|
49
|
+
/**
|
|
50
|
+
* Compare two non-null values
|
|
51
|
+
*
|
|
52
|
+
* @param a - First value
|
|
53
|
+
* @param b - Second value
|
|
54
|
+
* @param caseSensitive - Case-sensitive string comparison
|
|
55
|
+
* @returns Comparison result (-1, 0, or 1)
|
|
56
|
+
*/
|
|
57
|
+
private compareValues;
|
|
58
|
+
/**
|
|
59
|
+
* Compare two numbers
|
|
60
|
+
*/
|
|
61
|
+
private compareNumbers;
|
|
62
|
+
/**
|
|
63
|
+
* Compare two strings
|
|
64
|
+
*/
|
|
65
|
+
private compareStrings;
|
|
66
|
+
/**
|
|
67
|
+
* Compare two booleans (false < true)
|
|
68
|
+
*/
|
|
69
|
+
private compareBooleans;
|
|
70
|
+
/**
|
|
71
|
+
* Compare two dates
|
|
72
|
+
*/
|
|
73
|
+
private compareDates;
|
|
74
|
+
}
|
|
75
|
+
//# sourceMappingURL=single-column-sorter.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"single-column-sorter.d.ts","sourceRoot":"","sources":["../../../../../../packages/core/src/features/sorting/single-column-sorter.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAErD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAC7D,OAAO,KAAK,EAAE,SAAS,EAAE,WAAW,EAAgB,MAAM,wBAAwB,CAAC;AAEnF;;;;;;;;;;;;;;GAcG;AACH,qBAAa,kBAAmB,YAAW,SAAS;IAClD;;;;;;;OAOG;IACH,IAAI,CACF,YAAY,EAAE,YAAY,EAC1B,MAAM,EAAE,MAAM,GAAG,MAAM,EACvB,OAAO,EAAE,WAAW,GACnB,QAAQ;IA0BX;;;;;;;;;OASG;IACH,OAAO,CAAC,gBAAgB;IAmCxB;;;;;;;OAOG;IACH,OAAO,CAAC,uBAAuB;IAwB/B;;;;;;;OAOG;IACH,OAAO,CAAC,aAAa;IAkCrB;;OAEG;IACH,OAAO,CAAC,cAAc;IAOtB;;OAEG;IACH,OAAO,CAAC,cAAc;IAQtB;;OAEG;IACH,OAAO,CAAC,eAAe;IAIvB;;OAEG;IACH,OAAO,CAAC,YAAY;CAGrB"}
|
|
@@ -0,0 +1,132 @@
|
|
|
1
|
+
import type { SortState, SortDirection, SortMode } from '../../types';
|
|
2
|
+
import type { EventEmitter } from '../../events/event-emitter';
|
|
3
|
+
import type { GridEvents } from '../../events/grid-events';
|
|
4
|
+
import type { IndexMap } from '../../data/index-map';
|
|
5
|
+
/**
|
|
6
|
+
* Sort manager options
|
|
7
|
+
*/
|
|
8
|
+
export interface SortManagerOptions {
|
|
9
|
+
/**
|
|
10
|
+
* Total row count
|
|
11
|
+
*/
|
|
12
|
+
rowCount: number;
|
|
13
|
+
/**
|
|
14
|
+
* Event emitter for grid events
|
|
15
|
+
*/
|
|
16
|
+
events?: EventEmitter<GridEvents>;
|
|
17
|
+
/**
|
|
18
|
+
* Callback to get cell value
|
|
19
|
+
*/
|
|
20
|
+
getValue: (row: number, col: number) => any;
|
|
21
|
+
/**
|
|
22
|
+
* Enable multi-column sorting
|
|
23
|
+
* @default false
|
|
24
|
+
*/
|
|
25
|
+
enableMultiSort?: boolean;
|
|
26
|
+
/**
|
|
27
|
+
* Initial sort state
|
|
28
|
+
*/
|
|
29
|
+
initialSort?: SortState[];
|
|
30
|
+
/**
|
|
31
|
+
* Sort mode - determines where sorting is executed
|
|
32
|
+
* - 'frontend': Sort data in memory (default)
|
|
33
|
+
* - 'backend': Emit events only, application handles sorting
|
|
34
|
+
* - 'auto': Use backend mode if onSortRequest is provided, otherwise frontend
|
|
35
|
+
* @default 'frontend'
|
|
36
|
+
*/
|
|
37
|
+
sortMode?: SortMode;
|
|
38
|
+
/**
|
|
39
|
+
* Callback for backend sorting
|
|
40
|
+
* Called when sortMode is 'backend' or 'auto' (with callback present)
|
|
41
|
+
* Application should fetch sorted data and call grid.setData()
|
|
42
|
+
*/
|
|
43
|
+
onSortRequest?: (sortState: SortState[]) => Promise<void> | void;
|
|
44
|
+
}
|
|
45
|
+
/**
|
|
46
|
+
* SortManager - Manages sorting state and execution
|
|
47
|
+
*
|
|
48
|
+
* Coordinates sorting across columns and maintains sort state.
|
|
49
|
+
* Generates index maps for sorted data.
|
|
50
|
+
*
|
|
51
|
+
* @example
|
|
52
|
+
* ```typescript
|
|
53
|
+
* const sortManager = new SortManager({
|
|
54
|
+
* rowCount: 1000,
|
|
55
|
+
* getValue: (row, col) => data[row][col],
|
|
56
|
+
* });
|
|
57
|
+
*
|
|
58
|
+
* // Toggle sort on column
|
|
59
|
+
* sortManager.toggleSort(0);
|
|
60
|
+
*
|
|
61
|
+
* // Get sorted index map
|
|
62
|
+
* const indexMap = sortManager.getIndexMap();
|
|
63
|
+
*
|
|
64
|
+
* // Get value from sorted position
|
|
65
|
+
* const sortedRow = indexMap.getRowAt(0); // First row in sorted order
|
|
66
|
+
* const value = getValue(sortedRow, 0);
|
|
67
|
+
* ```
|
|
68
|
+
*/
|
|
69
|
+
export declare class SortManager {
|
|
70
|
+
private rowCount;
|
|
71
|
+
private events?;
|
|
72
|
+
private getValue;
|
|
73
|
+
private enableMultiSort;
|
|
74
|
+
private sortState;
|
|
75
|
+
private indexMap;
|
|
76
|
+
private sortMode;
|
|
77
|
+
private onSortRequest?;
|
|
78
|
+
constructor(options: SortManagerOptions);
|
|
79
|
+
/**
|
|
80
|
+
* Toggle sort on a column
|
|
81
|
+
* @param column - Column index
|
|
82
|
+
* @param additive - Add to existing sorts (for multi-column)
|
|
83
|
+
*/
|
|
84
|
+
toggleSort(column: number, additive?: boolean): void;
|
|
85
|
+
/**
|
|
86
|
+
* Set sort state directly
|
|
87
|
+
* @param sortState - Array of sort states
|
|
88
|
+
*/
|
|
89
|
+
setSortState(sortState: SortState[]): void;
|
|
90
|
+
/**
|
|
91
|
+
* Clear all sorting
|
|
92
|
+
*/
|
|
93
|
+
clearSort(): void;
|
|
94
|
+
/**
|
|
95
|
+
* Get current sort state
|
|
96
|
+
*/
|
|
97
|
+
getSortState(): SortState[];
|
|
98
|
+
/**
|
|
99
|
+
* Get sort direction for a column
|
|
100
|
+
* @param column - Column index
|
|
101
|
+
* @returns Sort direction or null
|
|
102
|
+
*/
|
|
103
|
+
getColumnSort(column: number): SortDirection;
|
|
104
|
+
/**
|
|
105
|
+
* Check if any sorting is active
|
|
106
|
+
*/
|
|
107
|
+
isSorted(): boolean;
|
|
108
|
+
/**
|
|
109
|
+
* Get the sorted index map
|
|
110
|
+
* @returns Index map or null if no sorting
|
|
111
|
+
*/
|
|
112
|
+
getIndexMap(): IndexMap | null;
|
|
113
|
+
/**
|
|
114
|
+
* Execute the sort
|
|
115
|
+
*/
|
|
116
|
+
private executeSort;
|
|
117
|
+
/**
|
|
118
|
+
* Update row count
|
|
119
|
+
* @param rowCount - New row count
|
|
120
|
+
*/
|
|
121
|
+
updateRowCount(rowCount: number): void;
|
|
122
|
+
/**
|
|
123
|
+
* Get current sort mode (resolved from 'auto')
|
|
124
|
+
* Returns the actual mode being used: 'frontend' or 'backend'
|
|
125
|
+
*/
|
|
126
|
+
getSortMode(): 'frontend' | 'backend';
|
|
127
|
+
/**
|
|
128
|
+
* Destroy sort manager
|
|
129
|
+
*/
|
|
130
|
+
destroy(): void;
|
|
131
|
+
}
|
|
132
|
+
//# sourceMappingURL=sort-manager.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sort-manager.d.ts","sourceRoot":"","sources":["../../../../../../packages/core/src/features/sorting/sort-manager.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,aAAa,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AACtE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAC/D,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC;AAE3D,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAErD;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC;;OAEG;IACH,QAAQ,EAAE,MAAM,CAAC;IAEjB;;OAEG;IACH,MAAM,CAAC,EAAE,YAAY,CAAC,UAAU,CAAC,CAAC;IAElC;;OAEG;IACH,QAAQ,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,KAAK,GAAG,CAAC;IAE5C;;;OAGG;IACH,eAAe,CAAC,EAAE,OAAO,CAAC;IAE1B;;OAEG;IACH,WAAW,CAAC,EAAE,SAAS,EAAE,CAAC;IAE1B;;;;;;OAMG;IACH,QAAQ,CAAC,EAAE,QAAQ,CAAC;IAEpB;;;;OAIG;IACH,aAAa,CAAC,EAAE,CAAC,SAAS,EAAE,SAAS,EAAE,KAAK,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;CAClE;AAED;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,qBAAa,WAAW;IACtB,OAAO,CAAC,QAAQ,CAAS;IACzB,OAAO,CAAC,MAAM,CAAC,CAA2B;IAC1C,OAAO,CAAC,QAAQ,CAAoC;IACpD,OAAO,CAAC,eAAe,CAAU;IACjC,OAAO,CAAC,SAAS,CAAmB;IACpC,OAAO,CAAC,QAAQ,CAAyB;IACzC,OAAO,CAAC,QAAQ,CAAW;IAC3B,OAAO,CAAC,aAAa,CAAC,CAAmD;gBAE7D,OAAO,EAAE,kBAAkB;IAmBvC;;;;OAIG;IACH,UAAU,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,GAAE,OAAe,GAAG,IAAI;IAyD3D;;;OAGG;IACH,YAAY,CAAC,SAAS,EAAE,SAAS,EAAE,GAAG,IAAI;IAc1C;;OAEG;IACH,SAAS,IAAI,IAAI;IAajB;;OAEG;IACH,YAAY,IAAI,SAAS,EAAE;IAI3B;;;;OAIG;IACH,aAAa,CAAC,MAAM,EAAE,MAAM,GAAG,aAAa;IAK5C;;OAEG;IACH,QAAQ,IAAI,OAAO;IAInB;;;OAGG;IACH,WAAW,IAAI,QAAQ,GAAG,IAAI;IAI9B;;OAEG;IACH,OAAO,CAAC,WAAW;IAwGnB;;;OAGG;IACH,cAAc,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI;IAStC;;;OAGG;IACH,WAAW,IAAI,UAAU,GAAG,SAAS;IAIrC;;OAEG;IACH,OAAO,IAAI,IAAI;CAIhB"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Undo/Redo feature
|
|
3
|
+
* @packageDocumentation
|
|
4
|
+
*/
|
|
5
|
+
export { UndoRedoManager } from './undo-redo-manager';
|
|
6
|
+
export type { UndoRedoManagerOptions } from './undo-redo-manager';
|
|
7
|
+
export { CellEditCommand, BatchCellEditCommand, FilterChangeCommand, SortChangeCommand, GenericCommand, } from './undo-redo-manager';
|
|
8
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../packages/core/src/features/undo-redo/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AACtD,YAAY,EAAE,sBAAsB,EAAE,MAAM,qBAAqB,CAAC;AAClE,OAAO,EACL,eAAe,EACf,oBAAoB,EACpB,mBAAmB,EACnB,iBAAiB,EACjB,cAAc,GACf,MAAM,qBAAqB,CAAC"}
|