@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,123 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Locale configuration
|
|
3
|
+
*/
|
|
4
|
+
export interface LocaleConfig {
|
|
5
|
+
/**
|
|
6
|
+
* Locale code (e.g., 'en-US', 'ar-SA')
|
|
7
|
+
*/
|
|
8
|
+
code: string;
|
|
9
|
+
/**
|
|
10
|
+
* Text direction
|
|
11
|
+
*/
|
|
12
|
+
direction: 'ltr' | 'rtl';
|
|
13
|
+
/**
|
|
14
|
+
* Decimal separator
|
|
15
|
+
*/
|
|
16
|
+
decimalSeparator: string;
|
|
17
|
+
/**
|
|
18
|
+
* Thousands separator
|
|
19
|
+
*/
|
|
20
|
+
thousandsSeparator: string;
|
|
21
|
+
/**
|
|
22
|
+
* Date format
|
|
23
|
+
*/
|
|
24
|
+
dateFormat: string;
|
|
25
|
+
/**
|
|
26
|
+
* Time format
|
|
27
|
+
*/
|
|
28
|
+
timeFormat: string;
|
|
29
|
+
/**
|
|
30
|
+
* First day of week (0 = Sunday, 1 = Monday)
|
|
31
|
+
*/
|
|
32
|
+
firstDayOfWeek: number;
|
|
33
|
+
/**
|
|
34
|
+
* Translations
|
|
35
|
+
*/
|
|
36
|
+
translations?: Record<string, string>;
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* LocaleManager - Manages localization and formatting
|
|
40
|
+
*
|
|
41
|
+
* Provides locale-aware formatting for numbers, dates, and text.
|
|
42
|
+
* Supports custom locales and translations.
|
|
43
|
+
*
|
|
44
|
+
* @example
|
|
45
|
+
* ```typescript
|
|
46
|
+
* const locale = new LocaleManager('ar-SA');
|
|
47
|
+
*
|
|
48
|
+
* // Format number
|
|
49
|
+
* const formatted = locale.formatNumber(1234.56);
|
|
50
|
+
* // Returns: '١٬٢٣٤٫٥٦' (Arabic numerals)
|
|
51
|
+
*
|
|
52
|
+
* // Get direction
|
|
53
|
+
* const dir = locale.getDirection(); // 'rtl'
|
|
54
|
+
*
|
|
55
|
+
* // Translate string
|
|
56
|
+
* const text = locale.translate('loading');
|
|
57
|
+
* ```
|
|
58
|
+
*/
|
|
59
|
+
export declare class LocaleManager {
|
|
60
|
+
private locale;
|
|
61
|
+
private numberFormatter;
|
|
62
|
+
private dateFormatter;
|
|
63
|
+
constructor(localeCode?: string);
|
|
64
|
+
/**
|
|
65
|
+
* Get current locale code
|
|
66
|
+
*/
|
|
67
|
+
getLocaleCode(): string;
|
|
68
|
+
/**
|
|
69
|
+
* Get text direction
|
|
70
|
+
*/
|
|
71
|
+
getDirection(): 'ltr' | 'rtl';
|
|
72
|
+
/**
|
|
73
|
+
* Format a number
|
|
74
|
+
* @param value - Number to format
|
|
75
|
+
* @param options - Intl.NumberFormat options
|
|
76
|
+
*/
|
|
77
|
+
formatNumber(value: number, options?: Intl.NumberFormatOptions): string;
|
|
78
|
+
/**
|
|
79
|
+
* Format a date
|
|
80
|
+
* @param date - Date to format
|
|
81
|
+
* @param options - Intl.DateTimeFormat options
|
|
82
|
+
*/
|
|
83
|
+
formatDate(date: Date, options?: Intl.DateTimeFormatOptions): string;
|
|
84
|
+
/**
|
|
85
|
+
* Format currency
|
|
86
|
+
* @param value - Amount
|
|
87
|
+
* @param currency - Currency code (e.g., 'USD', 'EUR')
|
|
88
|
+
*/
|
|
89
|
+
formatCurrency(value: number, currency: string): string;
|
|
90
|
+
/**
|
|
91
|
+
* Format percentage
|
|
92
|
+
* @param value - Percentage value (0-1)
|
|
93
|
+
*/
|
|
94
|
+
formatPercent(value: number): string;
|
|
95
|
+
/**
|
|
96
|
+
* Get decimal separator
|
|
97
|
+
*/
|
|
98
|
+
getDecimalSeparator(): string;
|
|
99
|
+
/**
|
|
100
|
+
* Get thousands separator
|
|
101
|
+
*/
|
|
102
|
+
getThousandsSeparator(): string;
|
|
103
|
+
/**
|
|
104
|
+
* Get first day of week
|
|
105
|
+
*/
|
|
106
|
+
getFirstDayOfWeek(): number;
|
|
107
|
+
/**
|
|
108
|
+
* Translate a string
|
|
109
|
+
* @param key - Translation key
|
|
110
|
+
* @param fallback - Fallback text if not found
|
|
111
|
+
*/
|
|
112
|
+
translate(key: string, fallback?: string): string;
|
|
113
|
+
/**
|
|
114
|
+
* Register a custom locale
|
|
115
|
+
* @param config - Locale configuration
|
|
116
|
+
*/
|
|
117
|
+
static registerLocale(config: LocaleConfig): void;
|
|
118
|
+
/**
|
|
119
|
+
* Get available locales
|
|
120
|
+
*/
|
|
121
|
+
static getAvailableLocales(): string[];
|
|
122
|
+
}
|
|
123
|
+
//# sourceMappingURL=locale-manager.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"locale-manager.d.ts","sourceRoot":"","sources":["../../../../../packages/core/src/i18n/locale-manager.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B;;OAEG;IACH,IAAI,EAAE,MAAM,CAAC;IAEb;;OAEG;IACH,SAAS,EAAE,KAAK,GAAG,KAAK,CAAC;IAEzB;;OAEG;IACH,gBAAgB,EAAE,MAAM,CAAC;IAEzB;;OAEG;IACH,kBAAkB,EAAE,MAAM,CAAC;IAE3B;;OAEG;IACH,UAAU,EAAE,MAAM,CAAC;IAEnB;;OAEG;IACH,UAAU,EAAE,MAAM,CAAC;IAEnB;;OAEG;IACH,cAAc,EAAE,MAAM,CAAC;IAEvB;;OAEG;IACH,YAAY,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CACvC;AAgFD;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,qBAAa,aAAa;IACxB,OAAO,CAAC,MAAM,CAAe;IAC7B,OAAO,CAAC,eAAe,CAAoB;IAC3C,OAAO,CAAC,aAAa,CAAsB;gBAE/B,UAAU,GAAE,MAAgB;IAQxC;;OAEG;IACH,aAAa,IAAI,MAAM;IAIvB;;OAEG;IACH,YAAY,IAAI,KAAK,GAAG,KAAK;IAI7B;;;;OAIG;IACH,YAAY,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,IAAI,CAAC,mBAAmB,GAAG,MAAM;IASvE;;;;OAIG;IACH,UAAU,CAAC,IAAI,EAAE,IAAI,EAAE,OAAO,CAAC,EAAE,IAAI,CAAC,qBAAqB,GAAG,MAAM;IASpE;;;;OAIG;IACH,cAAc,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM;IASvD;;;OAGG;IACH,aAAa,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM;IAUpC;;OAEG;IACH,mBAAmB,IAAI,MAAM;IAI7B;;OAEG;IACH,qBAAqB,IAAI,MAAM;IAI/B;;OAEG;IACH,iBAAiB,IAAI,MAAM;IAI3B;;;;OAIG;IACH,SAAS,CAAC,GAAG,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,MAAM;IAIjD;;;OAGG;IACH,MAAM,CAAC,cAAc,CAAC,MAAM,EAAE,YAAY,GAAG,IAAI;IAIjD;;OAEG;IACH,MAAM,CAAC,mBAAmB,IAAI,MAAM,EAAE;CAGvC"}
|
|
@@ -0,0 +1,120 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* RTL (Right-to-Left) support options
|
|
3
|
+
*/
|
|
4
|
+
export interface RTLSupportOptions {
|
|
5
|
+
/**
|
|
6
|
+
* Grid container element
|
|
7
|
+
*/
|
|
8
|
+
container: HTMLElement;
|
|
9
|
+
/**
|
|
10
|
+
* Text direction
|
|
11
|
+
* @default 'ltr'
|
|
12
|
+
*/
|
|
13
|
+
direction?: 'ltr' | 'rtl';
|
|
14
|
+
/**
|
|
15
|
+
* Auto-detect direction from document
|
|
16
|
+
* @default true
|
|
17
|
+
*/
|
|
18
|
+
autoDetect?: boolean;
|
|
19
|
+
/**
|
|
20
|
+
* Callback when direction changes
|
|
21
|
+
*/
|
|
22
|
+
onDirectionChange?: (direction: 'ltr' | 'rtl') => void;
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* RTLSupport - Manages Right-to-Left layout support
|
|
26
|
+
*
|
|
27
|
+
* Handles RTL layout for Arabic, Hebrew, Persian, and other RTL languages:
|
|
28
|
+
* - Direction detection and switching
|
|
29
|
+
* - RTL-aware column positioning
|
|
30
|
+
* - Scroll position normalization (browser compatibility)
|
|
31
|
+
* - Direction-aware hit testing
|
|
32
|
+
*
|
|
33
|
+
* @example
|
|
34
|
+
* ```typescript
|
|
35
|
+
* const rtl = new RTLSupport({
|
|
36
|
+
* container: gridElement,
|
|
37
|
+
* direction: 'rtl',
|
|
38
|
+
* });
|
|
39
|
+
*
|
|
40
|
+
* // Get direction-aware column offset
|
|
41
|
+
* const offset = rtl.getColumnOffset(col, totalWidth, colWidth);
|
|
42
|
+
*
|
|
43
|
+
* // Normalize scroll position
|
|
44
|
+
* const normalized = rtl.normalizeScrollLeft(scrollLeft, scrollWidth, clientWidth);
|
|
45
|
+
* ```
|
|
46
|
+
*/
|
|
47
|
+
export declare class RTLSupport {
|
|
48
|
+
private container;
|
|
49
|
+
private direction;
|
|
50
|
+
private onDirectionChange?;
|
|
51
|
+
constructor(options: RTLSupportOptions);
|
|
52
|
+
/**
|
|
53
|
+
* Get current text direction
|
|
54
|
+
*/
|
|
55
|
+
getDirection(): 'ltr' | 'rtl';
|
|
56
|
+
/**
|
|
57
|
+
* Set text direction
|
|
58
|
+
* @param direction - New direction
|
|
59
|
+
*/
|
|
60
|
+
setDirection(direction: 'ltr' | 'rtl'): void;
|
|
61
|
+
/**
|
|
62
|
+
* Check if RTL mode is active
|
|
63
|
+
*/
|
|
64
|
+
isRTL(): boolean;
|
|
65
|
+
/**
|
|
66
|
+
* Get direction-aware column offset
|
|
67
|
+
* @param col - Column index
|
|
68
|
+
* @param totalWidth - Total grid width
|
|
69
|
+
* @param colOffsetLTR - Column offset in LTR mode
|
|
70
|
+
* @returns Direction-aware offset
|
|
71
|
+
*/
|
|
72
|
+
getColumnOffset(_col: number, totalWidth: number, colOffsetLTR: number): number;
|
|
73
|
+
/**
|
|
74
|
+
* Normalize scroll position for RTL
|
|
75
|
+
*
|
|
76
|
+
* Different browsers handle RTL scrolling differently:
|
|
77
|
+
* - Chrome/Safari: scrollLeft is negative in RTL
|
|
78
|
+
* - Firefox: scrollLeft is positive but reversed
|
|
79
|
+
* - Edge: scrollLeft is positive
|
|
80
|
+
*
|
|
81
|
+
* This normalizes to always return positive values.
|
|
82
|
+
*
|
|
83
|
+
* @param scrollLeft - Raw scroll left value
|
|
84
|
+
* @param scrollWidth - Scroll container width
|
|
85
|
+
* @param clientWidth - Visible width
|
|
86
|
+
* @returns Normalized scroll position (always positive)
|
|
87
|
+
*/
|
|
88
|
+
normalizeScrollLeft(scrollLeft: number, scrollWidth: number, clientWidth: number): number;
|
|
89
|
+
/**
|
|
90
|
+
* Denormalize scroll position for setting
|
|
91
|
+
* @param normalizedScrollLeft - Normalized scroll position
|
|
92
|
+
* @param scrollWidth - Scroll container width
|
|
93
|
+
* @param clientWidth - Visible width
|
|
94
|
+
* @returns Browser-specific scroll value
|
|
95
|
+
*/
|
|
96
|
+
denormalizeScrollLeft(normalizedScrollLeft: number, scrollWidth: number, clientWidth: number): number;
|
|
97
|
+
/**
|
|
98
|
+
* Get direction-aware horizontal alignment
|
|
99
|
+
* @param align - Logical alignment ('start' or 'end')
|
|
100
|
+
* @returns Physical alignment ('left' or 'right')
|
|
101
|
+
*/
|
|
102
|
+
getPhysicalAlignment(align: 'start' | 'end'): 'left' | 'right';
|
|
103
|
+
/**
|
|
104
|
+
* Apply direction to container
|
|
105
|
+
*/
|
|
106
|
+
private applyDirection;
|
|
107
|
+
/**
|
|
108
|
+
* Detect text direction from document or language
|
|
109
|
+
*/
|
|
110
|
+
private detectDirection;
|
|
111
|
+
/**
|
|
112
|
+
* Detect browser RTL scroll behavior
|
|
113
|
+
*/
|
|
114
|
+
private detectScrollBehavior;
|
|
115
|
+
/**
|
|
116
|
+
* Destroy RTL support
|
|
117
|
+
*/
|
|
118
|
+
destroy(): void;
|
|
119
|
+
}
|
|
120
|
+
//# sourceMappingURL=rtl-support.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"rtl-support.d.ts","sourceRoot":"","sources":["../../../../../packages/core/src/i18n/rtl-support.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC;;OAEG;IACH,SAAS,EAAE,WAAW,CAAC;IAEvB;;;OAGG;IACH,SAAS,CAAC,EAAE,KAAK,GAAG,KAAK,CAAC;IAE1B;;;OAGG;IACH,UAAU,CAAC,EAAE,OAAO,CAAC;IAErB;;OAEG;IACH,iBAAiB,CAAC,EAAE,CAAC,SAAS,EAAE,KAAK,GAAG,KAAK,KAAK,IAAI,CAAC;CACxD;AAED;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,qBAAa,UAAU;IACrB,OAAO,CAAC,SAAS,CAAc;IAC/B,OAAO,CAAC,SAAS,CAAgB;IACjC,OAAO,CAAC,iBAAiB,CAAC,CAAqC;gBAEnD,OAAO,EAAE,iBAAiB;IAetC;;OAEG;IACH,YAAY,IAAI,KAAK,GAAG,KAAK;IAI7B;;;OAGG;IACH,YAAY,CAAC,SAAS,EAAE,KAAK,GAAG,KAAK,GAAG,IAAI;IAW5C;;OAEG;IACH,KAAK,IAAI,OAAO;IAIhB;;;;;;OAMG;IACH,eAAe,CAAC,IAAI,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,GAAG,MAAM;IAS/E;;;;;;;;;;;;;;OAcG;IACH,mBAAmB,CAAC,UAAU,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,MAAM;IA0BzF;;;;;;OAMG;IACH,qBAAqB,CACnB,oBAAoB,EAAE,MAAM,EAC5B,WAAW,EAAE,MAAM,EACnB,WAAW,EAAE,MAAM,GAClB,MAAM;IAsBT;;;;OAIG;IACH,oBAAoB,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,GAAG,MAAM,GAAG,OAAO;IAQ9D;;OAEG;IACH,OAAO,CAAC,cAAc;IAStB;;OAEG;IACH,OAAO,CAAC,eAAe;IA0BvB;;OAEG;IACH,OAAO,CAAC,oBAAoB;IAsC5B;;OAEG;IACH,OAAO,IAAI,IAAI;CAIhB"}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* ZenGrid Core - Community Edition
|
|
3
|
+
* High-performance data grid library
|
|
4
|
+
*
|
|
5
|
+
* @packageDocumentation
|
|
6
|
+
*/
|
|
7
|
+
export * from './types';
|
|
8
|
+
export { SparseMatrix } from '@zengrid/shared/data-structures/sparse-matrix';
|
|
9
|
+
export type { SparseMatrixOptions, ReadonlySparseMatrix } from '@zengrid/shared/data-structures/sparse-matrix';
|
|
10
|
+
export { ColumnStore } from '@zengrid/shared/data-structures/column-store';
|
|
11
|
+
export type { ColumnStoreOptions, ColumnDefinition, ColumnType, AggregateOperation, AggregationResult } from '@zengrid/shared/data-structures/column-store';
|
|
12
|
+
export type { HeightProvider, HeightProviderOptions } from './rendering/height-provider';
|
|
13
|
+
export { UniformHeightProvider, VariableHeightProvider } from './rendering/height-provider';
|
|
14
|
+
export type { WidthProvider, WidthProviderOptions } from './rendering/width-provider';
|
|
15
|
+
export { UniformWidthProvider, VariableWidthProvider } from './rendering/width-provider';
|
|
16
|
+
export type { VirtualScrollerOptions, CellPosition } from './rendering/virtual-scroller';
|
|
17
|
+
export { VirtualScroller } from './rendering/virtual-scroller';
|
|
18
|
+
export type { CellPoolOptions, CellPoolStats } from './rendering/cell-pool';
|
|
19
|
+
export { CellPool } from './rendering/cell-pool';
|
|
20
|
+
export type { CellPositionerOptions } from './rendering/cell-positioner';
|
|
21
|
+
export { CellPositioner } from './rendering/cell-positioner';
|
|
22
|
+
export type { CellRenderer, RenderParams } from './rendering/renderers';
|
|
23
|
+
export { RendererRegistry, TextRenderer, NumberRenderer, ImageRenderer, AdvancedCellRenderer } from './rendering/renderers';
|
|
24
|
+
export type { NumberRendererOptions, ImageRendererOptions, AdvancedCellRendererOptions, CompositeElement, ConditionalStyle, } from './rendering/renderers';
|
|
25
|
+
export type { IRendererCache, RendererCacheConfig, CachedRenderContent } from './rendering/cache';
|
|
26
|
+
export { RendererCache } from './rendering/cache';
|
|
27
|
+
export type { DataAccessor } from './data/data-accessor';
|
|
28
|
+
export type { IndexMap, IndexMapOptions } from './data/index-map';
|
|
29
|
+
export { createIndexMap, createIdentityIndexMap } from './data/index-map';
|
|
30
|
+
export type { RowSorter, SortOptions, NullPosition } from './features/sorting';
|
|
31
|
+
export { SingleColumnSorter } from './features/sorting';
|
|
32
|
+
export type { ColumnConstraints, ColumnResizeOptions, ResizeState, ResizeZoneResult, AutoFitCalculatorOptions, } from './features/column-resize';
|
|
33
|
+
export { ColumnResizeManager, AutoFitCalculator, ResizeHandleRenderer, ResizePreview, } from './features/column-resize';
|
|
34
|
+
export { normalizeRange, mergeRanges, containsCell, rangesIntersect } from './selection/range-utils';
|
|
35
|
+
export { createHitTester } from './selection/hit-tester';
|
|
36
|
+
export { Grid } from './grid';
|
|
37
|
+
export declare const VERSION = "0.1.0";
|
|
38
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../packages/core/src/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,cAAc,SAAS,CAAC;AAGxB,OAAO,EAAE,YAAY,EAAE,MAAM,+CAA+C,CAAC;AAC7E,YAAY,EAAE,mBAAmB,EAAE,oBAAoB,EAAE,MAAM,+CAA+C,CAAC;AAE/G,OAAO,EAAE,WAAW,EAAE,MAAM,8CAA8C,CAAC;AAC3E,YAAY,EAAE,kBAAkB,EAAE,gBAAgB,EAAE,UAAU,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,MAAM,8CAA8C,CAAC;AAG5J,YAAY,EAAE,cAAc,EAAE,qBAAqB,EAAE,MAAM,6BAA6B,CAAC;AACzF,OAAO,EAAE,qBAAqB,EAAE,sBAAsB,EAAE,MAAM,6BAA6B,CAAC;AAE5F,YAAY,EAAE,aAAa,EAAE,oBAAoB,EAAE,MAAM,4BAA4B,CAAC;AACtF,OAAO,EAAE,oBAAoB,EAAE,qBAAqB,EAAE,MAAM,4BAA4B,CAAC;AAGzF,YAAY,EAAE,sBAAsB,EAAE,YAAY,EAAE,MAAM,8BAA8B,CAAC;AACzF,OAAO,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAC;AAG/D,YAAY,EAAE,eAAe,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAC5E,OAAO,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AAGjD,YAAY,EAAE,qBAAqB,EAAE,MAAM,6BAA6B,CAAC;AACzE,OAAO,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAC;AAG7D,YAAY,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AACxE,OAAO,EAAE,gBAAgB,EAAE,YAAY,EAAE,cAAc,EAAE,aAAa,EAAE,oBAAoB,EAAE,MAAM,uBAAuB,CAAC;AAC5H,YAAY,EACV,qBAAqB,EACrB,oBAAoB,EACpB,2BAA2B,EAC3B,gBAAgB,EAChB,gBAAgB,GACjB,MAAM,uBAAuB,CAAC;AAG/B,YAAY,EAAE,cAAc,EAAE,mBAAmB,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AAClG,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAGlD,YAAY,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AACzD,YAAY,EAAE,QAAQ,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AAClE,OAAO,EAAE,cAAc,EAAE,sBAAsB,EAAE,MAAM,kBAAkB,CAAC;AAG1E,YAAY,EAAE,SAAS,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAC/E,OAAO,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AAGxD,YAAY,EACV,iBAAiB,EACjB,mBAAmB,EACnB,WAAW,EACX,gBAAgB,EAChB,wBAAwB,GACzB,MAAM,0BAA0B,CAAC;AAClC,OAAO,EACL,mBAAmB,EACnB,iBAAiB,EACjB,oBAAoB,EACpB,aAAa,GACd,MAAM,0BAA0B,CAAC;AAGlC,OAAO,EAAE,cAAc,EAAE,WAAW,EAAE,YAAY,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AACrG,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAGzD,OAAO,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;AA6B9B,eAAO,MAAM,OAAO,UAAU,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../packages/core/src/keyboard/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AACzD,YAAY,EAAE,wBAAwB,EAAE,MAAM,sBAAsB,CAAC"}
|
|
@@ -0,0 +1,171 @@
|
|
|
1
|
+
import type { CellRef } from '../types';
|
|
2
|
+
import type { FocusManager } from '../a11y/focus-manager';
|
|
3
|
+
import type { EventEmitter } from '../events/event-emitter';
|
|
4
|
+
import type { GridEvents } from '../events/grid-events';
|
|
5
|
+
/**
|
|
6
|
+
* Keyboard navigator options
|
|
7
|
+
*/
|
|
8
|
+
export interface KeyboardNavigatorOptions {
|
|
9
|
+
/**
|
|
10
|
+
* Grid container element
|
|
11
|
+
*/
|
|
12
|
+
container: HTMLElement;
|
|
13
|
+
/**
|
|
14
|
+
* Focus manager instance
|
|
15
|
+
*/
|
|
16
|
+
focusManager: FocusManager;
|
|
17
|
+
/**
|
|
18
|
+
* Event emitter for grid events
|
|
19
|
+
*/
|
|
20
|
+
events?: EventEmitter<GridEvents>;
|
|
21
|
+
/**
|
|
22
|
+
* Total row count
|
|
23
|
+
*/
|
|
24
|
+
rowCount: number;
|
|
25
|
+
/**
|
|
26
|
+
* Total column count
|
|
27
|
+
*/
|
|
28
|
+
colCount: number;
|
|
29
|
+
/**
|
|
30
|
+
* Rows per page (for Page Up/Down)
|
|
31
|
+
* @default 20
|
|
32
|
+
*/
|
|
33
|
+
pageSize?: number;
|
|
34
|
+
/**
|
|
35
|
+
* Enable selection with Shift+Arrow
|
|
36
|
+
* @default true
|
|
37
|
+
*/
|
|
38
|
+
enableSelection?: boolean;
|
|
39
|
+
/**
|
|
40
|
+
* Enable editing with Enter/F2
|
|
41
|
+
* @default true
|
|
42
|
+
*/
|
|
43
|
+
enableEditing?: boolean;
|
|
44
|
+
/**
|
|
45
|
+
* Callback to start editing
|
|
46
|
+
*/
|
|
47
|
+
onStartEdit?: (cell: CellRef) => void;
|
|
48
|
+
/**
|
|
49
|
+
* Callback to cancel editing
|
|
50
|
+
*/
|
|
51
|
+
onCancelEdit?: () => void;
|
|
52
|
+
/**
|
|
53
|
+
* Callback for copy (Ctrl+C)
|
|
54
|
+
*/
|
|
55
|
+
onCopy?: () => void;
|
|
56
|
+
/**
|
|
57
|
+
* Callback for cut (Ctrl+X)
|
|
58
|
+
*/
|
|
59
|
+
onCut?: () => void;
|
|
60
|
+
/**
|
|
61
|
+
* Callback for paste (Ctrl+V)
|
|
62
|
+
*/
|
|
63
|
+
onPaste?: () => void;
|
|
64
|
+
/**
|
|
65
|
+
* Callback for select all (Ctrl+A)
|
|
66
|
+
*/
|
|
67
|
+
onSelectAll?: () => void;
|
|
68
|
+
}
|
|
69
|
+
/**
|
|
70
|
+
* KeyboardNavigator - Handles all keyboard interactions
|
|
71
|
+
*
|
|
72
|
+
* Implements comprehensive keyboard navigation:
|
|
73
|
+
* - Arrow keys: Cell navigation
|
|
74
|
+
* - Page Up/Down: Page navigation
|
|
75
|
+
* - Home/End: Row navigation
|
|
76
|
+
* - Ctrl+Home/End: Grid navigation
|
|
77
|
+
* - Enter/F2: Start editing
|
|
78
|
+
* - Escape: Cancel editing
|
|
79
|
+
* - Tab/Shift+Tab: Navigate cells
|
|
80
|
+
* - Ctrl+C/V/X: Clipboard
|
|
81
|
+
* - Ctrl+A: Select all
|
|
82
|
+
* - Shift+Arrow: Range selection
|
|
83
|
+
*
|
|
84
|
+
* @example
|
|
85
|
+
* ```typescript
|
|
86
|
+
* const navigator = new KeyboardNavigator({
|
|
87
|
+
* container: gridElement,
|
|
88
|
+
* focusManager,
|
|
89
|
+
* rowCount: 100000,
|
|
90
|
+
* colCount: 10,
|
|
91
|
+
* onStartEdit: (cell) => {
|
|
92
|
+
* console.log('Start editing:', cell);
|
|
93
|
+
* },
|
|
94
|
+
* onCopy: () => {
|
|
95
|
+
* console.log('Copy selected cells');
|
|
96
|
+
* },
|
|
97
|
+
* });
|
|
98
|
+
*
|
|
99
|
+
* // Keyboard events are automatically handled
|
|
100
|
+
* // Call destroy() when done
|
|
101
|
+
* navigator.destroy();
|
|
102
|
+
* ```
|
|
103
|
+
*/
|
|
104
|
+
export declare class KeyboardNavigator {
|
|
105
|
+
private container;
|
|
106
|
+
private focusManager;
|
|
107
|
+
private events?;
|
|
108
|
+
private rowCount;
|
|
109
|
+
private colCount;
|
|
110
|
+
private pageSize;
|
|
111
|
+
private enableSelection;
|
|
112
|
+
private enableEditing;
|
|
113
|
+
private onStartEdit?;
|
|
114
|
+
private onCancelEdit?;
|
|
115
|
+
private onCopy?;
|
|
116
|
+
private onCut?;
|
|
117
|
+
private onPaste?;
|
|
118
|
+
private onSelectAll?;
|
|
119
|
+
private isSelecting;
|
|
120
|
+
private selectionStart;
|
|
121
|
+
constructor(options: KeyboardNavigatorOptions);
|
|
122
|
+
/**
|
|
123
|
+
* Attach keyboard event listeners
|
|
124
|
+
*/
|
|
125
|
+
private attachEventListeners;
|
|
126
|
+
/**
|
|
127
|
+
* Handle keydown events
|
|
128
|
+
*/
|
|
129
|
+
private handleKeyDown;
|
|
130
|
+
/**
|
|
131
|
+
* Handle navigation keys
|
|
132
|
+
*/
|
|
133
|
+
private handleNavigationKey;
|
|
134
|
+
/**
|
|
135
|
+
* Handle clipboard keys
|
|
136
|
+
*/
|
|
137
|
+
private handleClipboardKey;
|
|
138
|
+
/**
|
|
139
|
+
* Handle editing keys
|
|
140
|
+
*/
|
|
141
|
+
private handleEditingKey;
|
|
142
|
+
/**
|
|
143
|
+
* Handle Tab navigation
|
|
144
|
+
*/
|
|
145
|
+
private handleTabNavigation;
|
|
146
|
+
/**
|
|
147
|
+
* Start range selection
|
|
148
|
+
*/
|
|
149
|
+
private startSelection;
|
|
150
|
+
/**
|
|
151
|
+
* Extend selection as focus moves
|
|
152
|
+
*/
|
|
153
|
+
private handleSelectionExtend;
|
|
154
|
+
/**
|
|
155
|
+
* Handle keyup events
|
|
156
|
+
*/
|
|
157
|
+
private handleKeyUp;
|
|
158
|
+
/**
|
|
159
|
+
* End range selection
|
|
160
|
+
*/
|
|
161
|
+
private endSelection;
|
|
162
|
+
/**
|
|
163
|
+
* Update grid size
|
|
164
|
+
*/
|
|
165
|
+
updateSize(rowCount: number, colCount: number): void;
|
|
166
|
+
/**
|
|
167
|
+
* Destroy keyboard navigator
|
|
168
|
+
*/
|
|
169
|
+
destroy(): void;
|
|
170
|
+
}
|
|
171
|
+
//# sourceMappingURL=keyboard-navigator.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"keyboard-navigator.d.ts","sourceRoot":"","sources":["../../../../../packages/core/src/keyboard/keyboard-navigator.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,UAAU,CAAC;AACxC,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAC1D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AAC5D,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AAExD;;GAEG;AACH,MAAM,WAAW,wBAAwB;IACvC;;OAEG;IACH,SAAS,EAAE,WAAW,CAAC;IAEvB;;OAEG;IACH,YAAY,EAAE,YAAY,CAAC;IAE3B;;OAEG;IACH,MAAM,CAAC,EAAE,YAAY,CAAC,UAAU,CAAC,CAAC;IAElC;;OAEG;IACH,QAAQ,EAAE,MAAM,CAAC;IAEjB;;OAEG;IACH,QAAQ,EAAE,MAAM,CAAC;IAEjB;;;OAGG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;IAElB;;;OAGG;IACH,eAAe,CAAC,EAAE,OAAO,CAAC;IAE1B;;;OAGG;IACH,aAAa,CAAC,EAAE,OAAO,CAAC;IAExB;;OAEG;IACH,WAAW,CAAC,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,IAAI,CAAC;IAEtC;;OAEG;IACH,YAAY,CAAC,EAAE,MAAM,IAAI,CAAC;IAE1B;;OAEG;IACH,MAAM,CAAC,EAAE,MAAM,IAAI,CAAC;IAEpB;;OAEG;IACH,KAAK,CAAC,EAAE,MAAM,IAAI,CAAC;IAEnB;;OAEG;IACH,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IAErB;;OAEG;IACH,WAAW,CAAC,EAAE,MAAM,IAAI,CAAC;CAC1B;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkCG;AACH,qBAAa,iBAAiB;IAC5B,OAAO,CAAC,SAAS,CAAc;IAC/B,OAAO,CAAC,YAAY,CAAe;IACnC,OAAO,CAAC,MAAM,CAAC,CAA2B;IAC1C,OAAO,CAAC,QAAQ,CAAS;IACzB,OAAO,CAAC,QAAQ,CAAS;IACzB,OAAO,CAAC,QAAQ,CAAS;IACzB,OAAO,CAAC,eAAe,CAAU;IACjC,OAAO,CAAC,aAAa,CAAU;IAE/B,OAAO,CAAC,WAAW,CAAC,CAA0B;IAC9C,OAAO,CAAC,YAAY,CAAC,CAAa;IAClC,OAAO,CAAC,MAAM,CAAC,CAAa;IAC5B,OAAO,CAAC,KAAK,CAAC,CAAa;IAC3B,OAAO,CAAC,OAAO,CAAC,CAAa;IAC7B,OAAO,CAAC,WAAW,CAAC,CAAa;IAEjC,OAAO,CAAC,WAAW,CAAS;IAC5B,OAAO,CAAC,cAAc,CAAwB;gBAElC,OAAO,EAAE,wBAAwB;IAoB7C;;OAEG;IACH,OAAO,CAAC,oBAAoB;IAK5B;;OAEG;IACH,OAAO,CAAC,aAAa,CAmDnB;IAEF;;OAEG;IACH,OAAO,CAAC,mBAAmB;IAiE3B;;OAEG;IACH,OAAO,CAAC,kBAAkB;IAkC1B;;OAEG;IACH,OAAO,CAAC,gBAAgB;IAkCxB;;OAEG;IACH,OAAO,CAAC,mBAAmB;IA2B3B;;OAEG;IACH,OAAO,CAAC,cAAc;IAYtB;;OAEG;IACH,OAAO,CAAC,qBAAqB;IAsB7B;;OAEG;IACH,OAAO,CAAC,WAAW,CAiBjB;IAEF;;OAEG;IACH,OAAO,CAAC,YAAY;IAqBpB;;OAEG;IACH,UAAU,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,IAAI;IAKpD;;OAEG;IACH,OAAO,IAAI,IAAI;CAOhB"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../packages/core/src/rendering/cache/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACjD,YAAY,EACV,cAAc,EACd,mBAAmB,EACnB,mBAAmB,GACpB,MAAM,4BAA4B,CAAC"}
|
|
@@ -0,0 +1,100 @@
|
|
|
1
|
+
import type { IRendererCache, RendererCacheConfig, CachedRenderContent } from './renderer-cache.interface';
|
|
2
|
+
/**
|
|
3
|
+
* RendererCache - Caches rendered cell content to improve performance
|
|
4
|
+
*
|
|
5
|
+
* Uses LRUCache to automatically evict least recently used entries.
|
|
6
|
+
* Reduces re-rendering by caching HTML content based on cell data.
|
|
7
|
+
*
|
|
8
|
+
* **Performance Benefits:**
|
|
9
|
+
* - 20-30% reduction in render time for repeated content
|
|
10
|
+
* - Smoother scrolling, especially with complex renderers
|
|
11
|
+
* - Lower CPU usage during scroll
|
|
12
|
+
*
|
|
13
|
+
* **Cache Key Strategy:**
|
|
14
|
+
* The cache key is generated from:
|
|
15
|
+
* - Cell value (serialized)
|
|
16
|
+
* - Renderer name
|
|
17
|
+
* - Column field (for uniqueness)
|
|
18
|
+
* - Selected/active/editing state
|
|
19
|
+
*
|
|
20
|
+
* @example Basic Usage
|
|
21
|
+
* ```typescript
|
|
22
|
+
* const cache = new RendererCache({
|
|
23
|
+
* capacity: 1000,
|
|
24
|
+
* trackStats: true,
|
|
25
|
+
* });
|
|
26
|
+
*
|
|
27
|
+
* // Check cache before rendering
|
|
28
|
+
* const cached = cache.get(cacheKey);
|
|
29
|
+
* if (cached) {
|
|
30
|
+
* element.innerHTML = cached.html;
|
|
31
|
+
* } else {
|
|
32
|
+
* // Render and cache
|
|
33
|
+
* renderer.render(element, params);
|
|
34
|
+
* cache.set(cacheKey, { html: element.innerHTML });
|
|
35
|
+
* }
|
|
36
|
+
* ```
|
|
37
|
+
*
|
|
38
|
+
* @example With Statistics
|
|
39
|
+
* ```typescript
|
|
40
|
+
* const stats = cache.getStats();
|
|
41
|
+
* console.log(`Hit Rate: ${(stats.hitRate * 100).toFixed(2)}%`);
|
|
42
|
+
* console.log(`Cache Size: ${stats.size}/${stats.capacity}`);
|
|
43
|
+
* ```
|
|
44
|
+
*/
|
|
45
|
+
export declare class RendererCache implements IRendererCache {
|
|
46
|
+
private cache;
|
|
47
|
+
private config;
|
|
48
|
+
constructor(config?: RendererCacheConfig);
|
|
49
|
+
/**
|
|
50
|
+
* Get cached content for a cell
|
|
51
|
+
*/
|
|
52
|
+
get(key: string): CachedRenderContent | undefined;
|
|
53
|
+
/**
|
|
54
|
+
* Set cached content for a cell
|
|
55
|
+
*/
|
|
56
|
+
set(key: string, content: CachedRenderContent): void;
|
|
57
|
+
/**
|
|
58
|
+
* Check if content is cached
|
|
59
|
+
*/
|
|
60
|
+
has(key: string): boolean;
|
|
61
|
+
/**
|
|
62
|
+
* Clear all cached content
|
|
63
|
+
*/
|
|
64
|
+
clear(): void;
|
|
65
|
+
/**
|
|
66
|
+
* Get cache statistics
|
|
67
|
+
*/
|
|
68
|
+
getStats(): {
|
|
69
|
+
size: number;
|
|
70
|
+
capacity: number;
|
|
71
|
+
hitRate: number;
|
|
72
|
+
hits: number;
|
|
73
|
+
misses: number;
|
|
74
|
+
evictions: number;
|
|
75
|
+
};
|
|
76
|
+
/**
|
|
77
|
+
* Generate cache key for a cell
|
|
78
|
+
*
|
|
79
|
+
* @param row - Row index
|
|
80
|
+
* @param col - Column index
|
|
81
|
+
* @param value - Cell value
|
|
82
|
+
* @param rendererName - Renderer name
|
|
83
|
+
* @param state - Cell state (selected, active, editing)
|
|
84
|
+
* @returns Cache key
|
|
85
|
+
*/
|
|
86
|
+
static generateKey(_row: number, col: number, value: any, rendererName: string, state?: {
|
|
87
|
+
isSelected?: boolean;
|
|
88
|
+
isActive?: boolean;
|
|
89
|
+
isEditing?: boolean;
|
|
90
|
+
}): string;
|
|
91
|
+
/**
|
|
92
|
+
* Resize cache capacity
|
|
93
|
+
*/
|
|
94
|
+
resize(newCapacity: number): void;
|
|
95
|
+
/**
|
|
96
|
+
* Enable or disable caching
|
|
97
|
+
*/
|
|
98
|
+
setEnabled(enabled: boolean): void;
|
|
99
|
+
}
|
|
100
|
+
//# sourceMappingURL=renderer-cache.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"renderer-cache.d.ts","sourceRoot":"","sources":["../../../../../../packages/core/src/rendering/cache/renderer-cache.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,cAAc,EACd,mBAAmB,EACnB,mBAAmB,EACpB,MAAM,4BAA4B,CAAC;AAEpC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA0CG;AACH,qBAAa,aAAc,YAAW,cAAc;IAClD,OAAO,CAAC,KAAK,CAAwC;IACrD,OAAO,CAAC,MAAM,CAAgC;gBAElC,MAAM,GAAE,mBAAwB;IAgB5C;;OAEG;IACH,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,mBAAmB,GAAG,SAAS;IAOjD;;OAEG;IACH,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,mBAAmB,GAAG,IAAI;IAOpD;;OAEG;IACH,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO;IAOzB;;OAEG;IACH,KAAK,IAAI,IAAI;IAIb;;OAEG;IACH,QAAQ,IAAI;QACV,IAAI,EAAE,MAAM,CAAC;QACb,QAAQ,EAAE,MAAM,CAAC;QACjB,OAAO,EAAE,MAAM,CAAC;QAChB,IAAI,EAAE,MAAM,CAAC;QACb,MAAM,EAAE,MAAM,CAAC;QACf,SAAS,EAAE,MAAM,CAAC;KACnB;IAYD;;;;;;;;;OASG;IACH,MAAM,CAAC,WAAW,CAChB,IAAI,EAAE,MAAM,EACZ,GAAG,EAAE,MAAM,EACX,KAAK,EAAE,GAAG,EACV,YAAY,EAAE,MAAM,EACpB,KAAK,CAAC,EAAE;QACN,UAAU,CAAC,EAAE,OAAO,CAAC;QACrB,QAAQ,CAAC,EAAE,OAAO,CAAC;QACnB,SAAS,CAAC,EAAE,OAAO,CAAC;KACrB,GACA,MAAM;IAST;;OAEG;IACH,MAAM,CAAC,WAAW,EAAE,MAAM,GAAG,IAAI;IAKjC;;OAEG;IACH,UAAU,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI;CAMnC"}
|
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Renderer Cache Configuration
|
|
3
|
+
*/
|
|
4
|
+
export interface RendererCacheConfig {
|
|
5
|
+
/**
|
|
6
|
+
* Whether to enable renderer caching
|
|
7
|
+
* @default true
|
|
8
|
+
*/
|
|
9
|
+
enabled?: boolean;
|
|
10
|
+
/**
|
|
11
|
+
* Maximum number of cached entries
|
|
12
|
+
* @default 1000
|
|
13
|
+
*/
|
|
14
|
+
capacity?: number;
|
|
15
|
+
/**
|
|
16
|
+
* Cache strategy
|
|
17
|
+
* @default 'lru'
|
|
18
|
+
*/
|
|
19
|
+
strategy?: 'lru';
|
|
20
|
+
/**
|
|
21
|
+
* Time-to-live in milliseconds (0 = infinite)
|
|
22
|
+
* @default 0
|
|
23
|
+
*/
|
|
24
|
+
ttl?: number;
|
|
25
|
+
/**
|
|
26
|
+
* Track cache statistics
|
|
27
|
+
* @default false
|
|
28
|
+
*/
|
|
29
|
+
trackStats?: boolean;
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* Cached render content
|
|
33
|
+
*/
|
|
34
|
+
export interface CachedRenderContent {
|
|
35
|
+
/**
|
|
36
|
+
* The rendered HTML string
|
|
37
|
+
*/
|
|
38
|
+
html: string;
|
|
39
|
+
/**
|
|
40
|
+
* CSS classes to apply
|
|
41
|
+
*/
|
|
42
|
+
classes?: string[];
|
|
43
|
+
/**
|
|
44
|
+
* Additional metadata
|
|
45
|
+
*/
|
|
46
|
+
metadata?: Record<string, any>;
|
|
47
|
+
}
|
|
48
|
+
/**
|
|
49
|
+
* Renderer Cache Interface
|
|
50
|
+
*/
|
|
51
|
+
export interface IRendererCache {
|
|
52
|
+
/**
|
|
53
|
+
* Get cached content for a cell
|
|
54
|
+
*
|
|
55
|
+
* @param key - Cache key
|
|
56
|
+
* @returns Cached content or undefined
|
|
57
|
+
*/
|
|
58
|
+
get(key: string): CachedRenderContent | undefined;
|
|
59
|
+
/**
|
|
60
|
+
* Set cached content for a cell
|
|
61
|
+
*
|
|
62
|
+
* @param key - Cache key
|
|
63
|
+
* @param content - Content to cache
|
|
64
|
+
*/
|
|
65
|
+
set(key: string, content: CachedRenderContent): void;
|
|
66
|
+
/**
|
|
67
|
+
* Check if content is cached
|
|
68
|
+
*
|
|
69
|
+
* @param key - Cache key
|
|
70
|
+
* @returns True if cached
|
|
71
|
+
*/
|
|
72
|
+
has(key: string): boolean;
|
|
73
|
+
/**
|
|
74
|
+
* Clear all cached content
|
|
75
|
+
*/
|
|
76
|
+
clear(): void;
|
|
77
|
+
/**
|
|
78
|
+
* Get cache statistics
|
|
79
|
+
*/
|
|
80
|
+
getStats(): {
|
|
81
|
+
size: number;
|
|
82
|
+
capacity: number;
|
|
83
|
+
hitRate: number;
|
|
84
|
+
hits: number;
|
|
85
|
+
misses: number;
|
|
86
|
+
evictions: number;
|
|
87
|
+
};
|
|
88
|
+
}
|
|
89
|
+
//# sourceMappingURL=renderer-cache.interface.d.ts.map
|