@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,167 @@
|
|
|
1
|
+
import type { EventEmitter } from '../../events/event-emitter';
|
|
2
|
+
import type { GridEvents } from '../../events/grid-events';
|
|
3
|
+
import type { WidthProvider } from '../../rendering/width-provider';
|
|
4
|
+
/**
|
|
5
|
+
* Column width constraints
|
|
6
|
+
*/
|
|
7
|
+
export interface ColumnConstraints {
|
|
8
|
+
/** Minimum width in pixels (default: 30) */
|
|
9
|
+
minWidth?: number;
|
|
10
|
+
/** Maximum width in pixels (default: Infinity) */
|
|
11
|
+
maxWidth?: number;
|
|
12
|
+
}
|
|
13
|
+
/**
|
|
14
|
+
* Column resize options
|
|
15
|
+
*/
|
|
16
|
+
export interface ColumnResizeOptions {
|
|
17
|
+
/** Event emitter for grid events */
|
|
18
|
+
events?: EventEmitter<GridEvents>;
|
|
19
|
+
/** Width provider for column widths (legacy, not used in refactored version) */
|
|
20
|
+
widthProvider?: WidthProvider;
|
|
21
|
+
/** Total number of columns */
|
|
22
|
+
colCount: number;
|
|
23
|
+
/** Get column offset (x position) */
|
|
24
|
+
getColOffset: (col: number) => number;
|
|
25
|
+
/** Get column width */
|
|
26
|
+
getColWidth: (col: number) => number;
|
|
27
|
+
/** Callback when column width changes */
|
|
28
|
+
onWidthChange: (col: number, width: number) => void;
|
|
29
|
+
/** Get cell value for auto-fit calculation */
|
|
30
|
+
getValue?: (row: number, col: number) => any;
|
|
31
|
+
/** Total row count for auto-fit */
|
|
32
|
+
rowCount?: number;
|
|
33
|
+
/** Enable column resize (default: true) */
|
|
34
|
+
enabled?: boolean;
|
|
35
|
+
/** Width of resize handle detection zone in pixels (default: 6) */
|
|
36
|
+
resizeZoneWidth?: number;
|
|
37
|
+
/** Global default constraints */
|
|
38
|
+
defaultConstraints?: ColumnConstraints;
|
|
39
|
+
/** Per-column constraints (keyed by column index) */
|
|
40
|
+
columnConstraints?: Map<number, ColumnConstraints>;
|
|
41
|
+
/** Maximum rows to sample for auto-fit (default: 100) */
|
|
42
|
+
autoFitSampleSize?: number;
|
|
43
|
+
/** Padding to add to auto-fit width (default: 16) */
|
|
44
|
+
autoFitPadding?: number;
|
|
45
|
+
/** Enable visual resize handles (default: true) */
|
|
46
|
+
showHandles?: boolean;
|
|
47
|
+
/** Enable resize preview line (default: true) */
|
|
48
|
+
showPreview?: boolean;
|
|
49
|
+
/** Callback when column widths change (for persistence) */
|
|
50
|
+
onColumnWidthsChange?: (widths: number[]) => void;
|
|
51
|
+
/** Undo/redo manager for integration */
|
|
52
|
+
undoRedoManager?: any;
|
|
53
|
+
/** Get scroll left position (for header that doesn't scroll itself) */
|
|
54
|
+
getScrollLeft?: () => number;
|
|
55
|
+
/** Get viewport height for preview line (defaults to header height) */
|
|
56
|
+
getViewportHeight?: () => number;
|
|
57
|
+
/** Resize strategy (defaults to SingleColumnResizeStrategy) */
|
|
58
|
+
strategy?: ResizeStrategy;
|
|
59
|
+
/** Called before resize starts - return false to prevent */
|
|
60
|
+
onBeforeResize?: (event: BeforeResizeEvent) => boolean | Promise<boolean>;
|
|
61
|
+
/** Called during resize drag */
|
|
62
|
+
onDuringResize?: (event: DuringResizeEvent) => void;
|
|
63
|
+
/** Validate resize operation */
|
|
64
|
+
onValidateResize?: (column: number, newWidth: number) => ResizeValidationResult | Promise<ResizeValidationResult>;
|
|
65
|
+
}
|
|
66
|
+
/**
|
|
67
|
+
* Resize state during drag operation
|
|
68
|
+
*/
|
|
69
|
+
export interface ResizeState {
|
|
70
|
+
/** Column being resized */
|
|
71
|
+
column: number;
|
|
72
|
+
/** Starting X position of drag */
|
|
73
|
+
startX: number;
|
|
74
|
+
/** Original column width */
|
|
75
|
+
originalWidth: number;
|
|
76
|
+
/** Whether resize is in progress */
|
|
77
|
+
active: boolean;
|
|
78
|
+
}
|
|
79
|
+
/**
|
|
80
|
+
* Resize zone detection result
|
|
81
|
+
*/
|
|
82
|
+
export interface ResizeZoneResult {
|
|
83
|
+
/** Whether mouse is in resize zone */
|
|
84
|
+
inResizeZone: boolean;
|
|
85
|
+
/** Column index (the column whose RIGHT border is being dragged) */
|
|
86
|
+
column: number;
|
|
87
|
+
/** X position of the column border */
|
|
88
|
+
borderX: number;
|
|
89
|
+
}
|
|
90
|
+
/**
|
|
91
|
+
* Validation result for resize operations
|
|
92
|
+
*/
|
|
93
|
+
export interface ResizeValidationResult {
|
|
94
|
+
/** Whether the resize is valid */
|
|
95
|
+
valid: boolean;
|
|
96
|
+
/** Reason for rejection (if invalid) */
|
|
97
|
+
reason?: string;
|
|
98
|
+
/** Alternative width suggestion (optional) */
|
|
99
|
+
suggestedWidth?: number;
|
|
100
|
+
}
|
|
101
|
+
/**
|
|
102
|
+
* Event data for before resize lifecycle hook
|
|
103
|
+
*/
|
|
104
|
+
export interface BeforeResizeEvent {
|
|
105
|
+
/** Column being resized */
|
|
106
|
+
column: number;
|
|
107
|
+
/** Current width */
|
|
108
|
+
currentWidth: number;
|
|
109
|
+
/** Proposed new width */
|
|
110
|
+
newWidth: number;
|
|
111
|
+
/** Method to prevent the resize */
|
|
112
|
+
preventDefault: () => void;
|
|
113
|
+
}
|
|
114
|
+
/**
|
|
115
|
+
* Event data for during resize lifecycle hook
|
|
116
|
+
*/
|
|
117
|
+
export interface DuringResizeEvent {
|
|
118
|
+
/** Column being resized */
|
|
119
|
+
column: number;
|
|
120
|
+
/** Original width when drag started */
|
|
121
|
+
originalWidth: number;
|
|
122
|
+
/** Current width during drag */
|
|
123
|
+
currentWidth: number;
|
|
124
|
+
/** Delta from start */
|
|
125
|
+
deltaX: number;
|
|
126
|
+
}
|
|
127
|
+
/**
|
|
128
|
+
* Minimal interface for data source that supports column resizing
|
|
129
|
+
* Decouples resize logic from Grid internals
|
|
130
|
+
*/
|
|
131
|
+
export interface ResizableDataSource {
|
|
132
|
+
/** Get total number of columns */
|
|
133
|
+
getColumnCount(): number;
|
|
134
|
+
/** Get column offset (x position) */
|
|
135
|
+
getColumnOffset(col: number): number;
|
|
136
|
+
/** Get column width */
|
|
137
|
+
getColumnWidth(col: number): number;
|
|
138
|
+
/** Set column width */
|
|
139
|
+
setColumnWidth(col: number, width: number): void;
|
|
140
|
+
/** Get cell value (optional, for auto-fit) */
|
|
141
|
+
getValue?(row: number, col: number): any;
|
|
142
|
+
/** Get row count (optional, for auto-fit) */
|
|
143
|
+
getRowCount?(): number;
|
|
144
|
+
}
|
|
145
|
+
/**
|
|
146
|
+
* Strategy interface for different resize behaviors
|
|
147
|
+
*/
|
|
148
|
+
export interface ResizeStrategy {
|
|
149
|
+
/** Strategy name */
|
|
150
|
+
readonly name: string;
|
|
151
|
+
/**
|
|
152
|
+
* Calculate new width based on current state and mouse position
|
|
153
|
+
* @param state Current resize state
|
|
154
|
+
* @param currentX Current mouse X position in grid coordinates
|
|
155
|
+
* @param dataSource Data source for accessing column information
|
|
156
|
+
* @returns New width for the column
|
|
157
|
+
*/
|
|
158
|
+
calculateNewWidth(state: ResizeState, currentX: number, dataSource: ResizableDataSource): number;
|
|
159
|
+
/**
|
|
160
|
+
* Get list of columns affected by this resize
|
|
161
|
+
* @param column Column being resized
|
|
162
|
+
* @param dataSource Data source for accessing column information
|
|
163
|
+
* @returns Array of affected column indices
|
|
164
|
+
*/
|
|
165
|
+
getAffectedColumns(column: number, dataSource: ResizableDataSource): number[];
|
|
166
|
+
}
|
|
167
|
+
//# sourceMappingURL=column-resize-manager.interface.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"column-resize-manager.interface.d.ts","sourceRoot":"","sources":["../../../../../../packages/core/src/features/column-resize/column-resize-manager.interface.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Column Resize Styles
|
|
3
|
+
*
|
|
4
|
+
* Default styles for column resize feature.
|
|
5
|
+
* Applications can override these by providing more specific selectors.
|
|
6
|
+
*/
|
|
7
|
+
|
|
8
|
+
/* Resize Handle */
|
|
9
|
+
.zg-resize-handle {
|
|
10
|
+
width: 6px;
|
|
11
|
+
cursor: col-resize;
|
|
12
|
+
background: transparent;
|
|
13
|
+
z-index: 100;
|
|
14
|
+
pointer-events: auto;
|
|
15
|
+
transition: background 0.15s ease;
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
.zg-resize-handle:hover,
|
|
19
|
+
.zg-resize-handle.active {
|
|
20
|
+
background: rgba(33, 150, 243, 0.6);
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
/* Resize Preview Line */
|
|
24
|
+
.zg-resize-preview {
|
|
25
|
+
width: 2px;
|
|
26
|
+
background: #2196f3;
|
|
27
|
+
box-shadow: 0 0 4px rgba(33, 150, 243, 0.6);
|
|
28
|
+
pointer-events: none;
|
|
29
|
+
z-index: 1000;
|
|
30
|
+
}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
export { ColumnResizeManager } from './column-resize-manager';
|
|
2
|
+
export { ResizeConstraintManager } from './resize-constraint-manager';
|
|
3
|
+
export { ResizeZoneDetector } from './resize-zone-detector';
|
|
4
|
+
export { ResizeStateManager } from './resize-state-manager';
|
|
5
|
+
export { AutoFitCalculator } from './auto-fit-calculator';
|
|
6
|
+
export { ResizeHandleRenderer } from './resize-handle-renderer';
|
|
7
|
+
export { ResizePreview } from './resize-preview';
|
|
8
|
+
export { SingleColumnResizeStrategy, ProportionalResizeStrategy, SymmetricResizeStrategy, } from './resize-strategies';
|
|
9
|
+
export { ResizeTestHelper, MockResizableDataSource, } from './resize-test-helper';
|
|
10
|
+
export type { ColumnConstraints, ColumnResizeOptions, ResizeState, ResizeZoneResult, ResizableDataSource, ResizeStrategy, BeforeResizeEvent, DuringResizeEvent, ResizeValidationResult, } from './column-resize-manager.interface';
|
|
11
|
+
export type { AutoFitCalculatorOptions } from './auto-fit-calculator';
|
|
12
|
+
export type { ConstraintManagerOptions } from './resize-constraint-manager';
|
|
13
|
+
export type { ZoneDetectorOptions } from './resize-zone-detector';
|
|
14
|
+
export type { StateManagerOptions, ResizeHistoryEntry } from './resize-state-manager';
|
|
15
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../packages/core/src/features/column-resize/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AAG9D,OAAO,EAAE,uBAAuB,EAAE,MAAM,6BAA6B,CAAC;AACtE,OAAO,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AAC5D,OAAO,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AAG5D,OAAO,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAC1D,OAAO,EAAE,oBAAoB,EAAE,MAAM,0BAA0B,CAAC;AAChE,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAGjD,OAAO,EACL,0BAA0B,EAC1B,0BAA0B,EAC1B,uBAAuB,GACxB,MAAM,qBAAqB,CAAC;AAG7B,OAAO,EACL,gBAAgB,EAChB,uBAAuB,GACxB,MAAM,sBAAsB,CAAC;AAG9B,YAAY,EACV,iBAAiB,EACjB,mBAAmB,EACnB,WAAW,EACX,gBAAgB,EAChB,mBAAmB,EACnB,cAAc,EACd,iBAAiB,EACjB,iBAAiB,EACjB,sBAAsB,GACvB,MAAM,mCAAmC,CAAC;AAE3C,YAAY,EAAE,wBAAwB,EAAE,MAAM,uBAAuB,CAAC;AACtE,YAAY,EAAE,wBAAwB,EAAE,MAAM,6BAA6B,CAAC;AAC5E,YAAY,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAC;AAClE,YAAY,EAAE,mBAAmB,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC"}
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
import type { ColumnConstraints, ResizeValidationResult } from './column-resize-manager.interface';
|
|
2
|
+
/**
|
|
3
|
+
* Configuration for constraint manager
|
|
4
|
+
*/
|
|
5
|
+
export interface ConstraintManagerOptions {
|
|
6
|
+
/** Global default constraints */
|
|
7
|
+
defaultConstraints?: ColumnConstraints;
|
|
8
|
+
/** Per-column constraints */
|
|
9
|
+
columnConstraints?: Map<number, ColumnConstraints>;
|
|
10
|
+
/** Custom validation function */
|
|
11
|
+
onValidateResize?: (column: number, newWidth: number) => ResizeValidationResult | Promise<ResizeValidationResult>;
|
|
12
|
+
}
|
|
13
|
+
/**
|
|
14
|
+
* Manages column resize constraints and validation
|
|
15
|
+
* Separated from main manager for single responsibility
|
|
16
|
+
*/
|
|
17
|
+
export declare class ResizeConstraintManager {
|
|
18
|
+
private defaultConstraints;
|
|
19
|
+
private columnConstraints;
|
|
20
|
+
private onValidateResize?;
|
|
21
|
+
constructor(options?: ConstraintManagerOptions);
|
|
22
|
+
/**
|
|
23
|
+
* Get effective constraints for a column
|
|
24
|
+
*/
|
|
25
|
+
getConstraints(column: number): ColumnConstraints;
|
|
26
|
+
/**
|
|
27
|
+
* Set constraints for a specific column
|
|
28
|
+
*/
|
|
29
|
+
setConstraints(column: number, constraints: ColumnConstraints): void;
|
|
30
|
+
/**
|
|
31
|
+
* Apply min/max constraints to a width value
|
|
32
|
+
*/
|
|
33
|
+
applyConstraints(column: number, width: number): number;
|
|
34
|
+
/**
|
|
35
|
+
* Validate a resize operation
|
|
36
|
+
* Returns validation result with optional reason/suggestion
|
|
37
|
+
*/
|
|
38
|
+
validate(column: number, newWidth: number): Promise<ResizeValidationResult>;
|
|
39
|
+
/**
|
|
40
|
+
* Check if a width is within constraints (synchronous check only)
|
|
41
|
+
*/
|
|
42
|
+
isWithinConstraints(column: number, width: number): boolean;
|
|
43
|
+
/**
|
|
44
|
+
* Get minimum width for a column
|
|
45
|
+
*/
|
|
46
|
+
getMinWidth(column: number): number;
|
|
47
|
+
/**
|
|
48
|
+
* Get maximum width for a column
|
|
49
|
+
*/
|
|
50
|
+
getMaxWidth(column: number): number;
|
|
51
|
+
}
|
|
52
|
+
//# sourceMappingURL=resize-constraint-manager.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"resize-constraint-manager.d.ts","sourceRoot":"","sources":["../../../../../../packages/core/src/features/column-resize/resize-constraint-manager.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,iBAAiB,EACjB,sBAAsB,EACvB,MAAM,mCAAmC,CAAC;AAE3C;;GAEG;AACH,MAAM,WAAW,wBAAwB;IACvC,iCAAiC;IACjC,kBAAkB,CAAC,EAAE,iBAAiB,CAAC;IACvC,6BAA6B;IAC7B,iBAAiB,CAAC,EAAE,GAAG,CAAC,MAAM,EAAE,iBAAiB,CAAC,CAAC;IACnD,iCAAiC;IACjC,gBAAgB,CAAC,EAAE,CACjB,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,MAAM,KACb,sBAAsB,GAAG,OAAO,CAAC,sBAAsB,CAAC,CAAC;CAC/D;AAED;;;GAGG;AACH,qBAAa,uBAAuB;IAClC,OAAO,CAAC,kBAAkB,CAAoB;IAC9C,OAAO,CAAC,iBAAiB,CAAiC;IAC1D,OAAO,CAAC,gBAAgB,CAAC,CAGqC;gBAElD,OAAO,GAAE,wBAA6B;IASlD;;OAEG;IACH,cAAc,CAAC,MAAM,EAAE,MAAM,GAAG,iBAAiB;IAQjD;;OAEG;IACH,cAAc,CAAC,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,iBAAiB,GAAG,IAAI;IAIpE;;OAEG;IACH,gBAAgB,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM;IAevD;;;OAGG;IACG,QAAQ,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,sBAAsB,CAAC;IA0BjF;;OAEG;IACH,mBAAmB,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO;IAW3D;;OAEG;IACH,WAAW,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM;IAInC;;OAEG;IACH,WAAW,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM;CAGpC"}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* ResizeHandleRenderer - Renders visual resize handles on column borders
|
|
3
|
+
*
|
|
4
|
+
* Creates and positions visual handles that indicate where users can drag to resize columns.
|
|
5
|
+
* Handles are shown on hover and hidden when not needed.
|
|
6
|
+
*/
|
|
7
|
+
export declare class ResizeHandleRenderer {
|
|
8
|
+
private container;
|
|
9
|
+
private handles;
|
|
10
|
+
private handlePool;
|
|
11
|
+
constructor(container: HTMLElement);
|
|
12
|
+
/**
|
|
13
|
+
* Update visible handles based on visible columns
|
|
14
|
+
*/
|
|
15
|
+
updateHandles(visibleCols: number[], getColOffset: (col: number) => number, getColWidth: (col: number) => number, scrollLeft: number, viewportHeight: number): void;
|
|
16
|
+
/**
|
|
17
|
+
* Show handle for specific column
|
|
18
|
+
*/
|
|
19
|
+
showHandle(col: number): void;
|
|
20
|
+
/**
|
|
21
|
+
* Hide handle for specific column
|
|
22
|
+
*/
|
|
23
|
+
hideHandle(col: number): void;
|
|
24
|
+
/**
|
|
25
|
+
* Hide all handles
|
|
26
|
+
*/
|
|
27
|
+
hideAllHandles(): void;
|
|
28
|
+
/**
|
|
29
|
+
* Get or create a handle element
|
|
30
|
+
*/
|
|
31
|
+
private getOrCreateHandle;
|
|
32
|
+
/**
|
|
33
|
+
* Clear all handles and return to pool
|
|
34
|
+
*/
|
|
35
|
+
private clearHandles;
|
|
36
|
+
/**
|
|
37
|
+
* Cleanup and remove all handles
|
|
38
|
+
*/
|
|
39
|
+
destroy(): void;
|
|
40
|
+
}
|
|
41
|
+
//# sourceMappingURL=resize-handle-renderer.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"resize-handle-renderer.d.ts","sourceRoot":"","sources":["../../../../../../packages/core/src/features/column-resize/resize-handle-renderer.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,qBAAa,oBAAoB;IAC/B,OAAO,CAAC,SAAS,CAAc;IAC/B,OAAO,CAAC,OAAO,CAAuC;IACtD,OAAO,CAAC,UAAU,CAAqB;gBAE3B,SAAS,EAAE,WAAW;IAIlC;;OAEG;IACH,aAAa,CACX,WAAW,EAAE,MAAM,EAAE,EACrB,YAAY,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,MAAM,EACrC,WAAW,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,MAAM,EACpC,UAAU,EAAE,MAAM,EAClB,cAAc,EAAE,MAAM,GACrB,IAAI;IAuBP;;OAEG;IACH,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI;IAO7B;;OAEG;IACH,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI;IAO7B;;OAEG;IACH,cAAc,IAAI,IAAI;IAMtB;;OAEG;IACH,OAAO,CAAC,iBAAiB;IAkBzB;;OAEG;IACH,OAAO,CAAC,YAAY;IAQpB;;OAEG;IACH,OAAO,IAAI,IAAI;CAkBhB"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* ResizePreview - Renders a preview line during column resize drag
|
|
3
|
+
*
|
|
4
|
+
* Shows a vertical line that follows the cursor during resize,
|
|
5
|
+
* giving visual feedback before the resize is committed.
|
|
6
|
+
*/
|
|
7
|
+
export declare class ResizePreview {
|
|
8
|
+
private previewElement;
|
|
9
|
+
private container;
|
|
10
|
+
constructor(container: HTMLElement);
|
|
11
|
+
/**
|
|
12
|
+
* Show preview at specified X position (relative to container)
|
|
13
|
+
*/
|
|
14
|
+
show(x: number, height: number): void;
|
|
15
|
+
/**
|
|
16
|
+
* Update preview position (relative to container)
|
|
17
|
+
*/
|
|
18
|
+
update(x: number): void;
|
|
19
|
+
/**
|
|
20
|
+
* Hide preview
|
|
21
|
+
*/
|
|
22
|
+
hide(): void;
|
|
23
|
+
/**
|
|
24
|
+
* Get or create preview element
|
|
25
|
+
*/
|
|
26
|
+
private getOrCreatePreviewElement;
|
|
27
|
+
/**
|
|
28
|
+
* Cleanup
|
|
29
|
+
*/
|
|
30
|
+
destroy(): void;
|
|
31
|
+
}
|
|
32
|
+
//# sourceMappingURL=resize-preview.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"resize-preview.d.ts","sourceRoot":"","sources":["../../../../../../packages/core/src/features/column-resize/resize-preview.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,qBAAa,aAAa;IACxB,OAAO,CAAC,cAAc,CAA4B;IAClD,OAAO,CAAC,SAAS,CAAc;gBAEnB,SAAS,EAAE,WAAW;IAIlC;;OAEG;IACH,IAAI,CAAC,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI;IAerC;;OAEG;IACH,MAAM,CAAC,CAAC,EAAE,MAAM,GAAG,IAAI;IASvB;;OAEG;IACH,IAAI,IAAI,IAAI;IAMZ;;OAEG;IACH,OAAO,CAAC,yBAAyB;IAcjC;;OAEG;IACH,OAAO,IAAI,IAAI;CAMhB"}
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
import type { ResizeState } from './column-resize-manager.interface';
|
|
2
|
+
/**
|
|
3
|
+
* History entry for undo/redo
|
|
4
|
+
*/
|
|
5
|
+
export interface ResizeHistoryEntry {
|
|
6
|
+
column: number;
|
|
7
|
+
oldWidth: number;
|
|
8
|
+
newWidth: number;
|
|
9
|
+
timestamp: number;
|
|
10
|
+
}
|
|
11
|
+
/**
|
|
12
|
+
* Configuration for state manager
|
|
13
|
+
*/
|
|
14
|
+
export interface StateManagerOptions {
|
|
15
|
+
/** Callback when widths change (for persistence) */
|
|
16
|
+
onColumnWidthsChange?: (widths: number[]) => void;
|
|
17
|
+
/** Undo/redo manager integration */
|
|
18
|
+
undoRedoManager?: any;
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* Manages resize state and history
|
|
22
|
+
* Separated from main manager for single responsibility
|
|
23
|
+
*/
|
|
24
|
+
export declare class ResizeStateManager {
|
|
25
|
+
private state;
|
|
26
|
+
private history;
|
|
27
|
+
private onColumnWidthsChange?;
|
|
28
|
+
private undoRedoManager?;
|
|
29
|
+
constructor(options?: StateManagerOptions);
|
|
30
|
+
/**
|
|
31
|
+
* Get current resize state
|
|
32
|
+
*/
|
|
33
|
+
getState(): Readonly<ResizeState>;
|
|
34
|
+
/**
|
|
35
|
+
* Check if resize is currently active
|
|
36
|
+
*/
|
|
37
|
+
isActive(): boolean;
|
|
38
|
+
/**
|
|
39
|
+
* Start a resize operation
|
|
40
|
+
*/
|
|
41
|
+
startResize(column: number, startX: number, originalWidth: number): void;
|
|
42
|
+
/**
|
|
43
|
+
* End a resize operation
|
|
44
|
+
*/
|
|
45
|
+
endResize(): void;
|
|
46
|
+
/**
|
|
47
|
+
* Record a resize operation in history
|
|
48
|
+
*/
|
|
49
|
+
recordResize(column: number, oldWidth: number, newWidth: number): void;
|
|
50
|
+
/**
|
|
51
|
+
* Get resize history
|
|
52
|
+
*/
|
|
53
|
+
getHistory(): readonly ResizeHistoryEntry[];
|
|
54
|
+
/**
|
|
55
|
+
* Clear resize history
|
|
56
|
+
*/
|
|
57
|
+
clearHistory(): void;
|
|
58
|
+
/**
|
|
59
|
+
* Notify listeners of width changes (for persistence)
|
|
60
|
+
*/
|
|
61
|
+
notifyWidthChange(widths: number[]): void;
|
|
62
|
+
/**
|
|
63
|
+
* Get the column currently being resized (-1 if none)
|
|
64
|
+
*/
|
|
65
|
+
getActiveColumn(): number;
|
|
66
|
+
/**
|
|
67
|
+
* Get the original width of the column being resized
|
|
68
|
+
*/
|
|
69
|
+
getOriginalWidth(): number;
|
|
70
|
+
/**
|
|
71
|
+
* Get the start X position of the resize
|
|
72
|
+
*/
|
|
73
|
+
getStartX(): number;
|
|
74
|
+
}
|
|
75
|
+
//# sourceMappingURL=resize-state-manager.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"resize-state-manager.d.ts","sourceRoot":"","sources":["../../../../../../packages/core/src/features/column-resize/resize-state-manager.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mCAAmC,CAAC;AAErE;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAClC,oDAAoD;IACpD,oBAAoB,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,IAAI,CAAC;IAClD,oCAAoC;IACpC,eAAe,CAAC,EAAE,GAAG,CAAC;CACvB;AAED;;;GAGG;AACH,qBAAa,kBAAkB;IAC7B,OAAO,CAAC,KAAK,CAKX;IAEF,OAAO,CAAC,OAAO,CAA4B;IAC3C,OAAO,CAAC,oBAAoB,CAAC,CAA6B;IAC1D,OAAO,CAAC,eAAe,CAAC,CAAM;gBAElB,OAAO,GAAE,mBAAwB;IAK7C;;OAEG;IACH,QAAQ,IAAI,QAAQ,CAAC,WAAW,CAAC;IAIjC;;OAEG;IACH,QAAQ,IAAI,OAAO;IAInB;;OAEG;IACH,WAAW,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,GAAG,IAAI;IASxE;;OAEG;IACH,SAAS,IAAI,IAAI;IASjB;;OAEG;IACH,YAAY,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,IAAI;IAkBtE;;OAEG;IACH,UAAU,IAAI,SAAS,kBAAkB,EAAE;IAI3C;;OAEG;IACH,YAAY,IAAI,IAAI;IAIpB;;OAEG;IACH,iBAAiB,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,IAAI;IAMzC;;OAEG;IACH,eAAe,IAAI,MAAM;IAIzB;;OAEG;IACH,gBAAgB,IAAI,MAAM;IAI1B;;OAEG;IACH,SAAS,IAAI,MAAM;CAGpB"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import type { ResizeStrategy, ResizeState, ResizableDataSource } from './column-resize-manager.interface';
|
|
2
|
+
/**
|
|
3
|
+
* Default strategy: Resize single column independently
|
|
4
|
+
*/
|
|
5
|
+
export declare class SingleColumnResizeStrategy implements ResizeStrategy {
|
|
6
|
+
readonly name = "single-column";
|
|
7
|
+
calculateNewWidth(state: ResizeState, currentX: number, _dataSource: ResizableDataSource): number;
|
|
8
|
+
getAffectedColumns(column: number, _dataSource: ResizableDataSource): number[];
|
|
9
|
+
}
|
|
10
|
+
/**
|
|
11
|
+
* Proportional resize: Distribute extra/reduced space across all columns
|
|
12
|
+
*/
|
|
13
|
+
export declare class ProportionalResizeStrategy implements ResizeStrategy {
|
|
14
|
+
readonly name = "proportional";
|
|
15
|
+
calculateNewWidth(state: ResizeState, currentX: number, _dataSource: ResizableDataSource): number;
|
|
16
|
+
getAffectedColumns(column: number, dataSource: ResizableDataSource): number[];
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* Symmetric resize: Resize column and its neighbor symmetrically
|
|
20
|
+
*/
|
|
21
|
+
export declare class SymmetricResizeStrategy implements ResizeStrategy {
|
|
22
|
+
readonly name = "symmetric";
|
|
23
|
+
calculateNewWidth(state: ResizeState, currentX: number, _dataSource: ResizableDataSource): number;
|
|
24
|
+
getAffectedColumns(column: number, dataSource: ResizableDataSource): number[];
|
|
25
|
+
}
|
|
26
|
+
//# sourceMappingURL=resize-strategies.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"resize-strategies.d.ts","sourceRoot":"","sources":["../../../../../../packages/core/src/features/column-resize/resize-strategies.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,cAAc,EACd,WAAW,EACX,mBAAmB,EACpB,MAAM,mCAAmC,CAAC;AAE3C;;GAEG;AACH,qBAAa,0BAA2B,YAAW,cAAc;IAC/D,QAAQ,CAAC,IAAI,mBAAmB;IAEhC,iBAAiB,CACf,KAAK,EAAE,WAAW,EAClB,QAAQ,EAAE,MAAM,EAChB,WAAW,EAAE,mBAAmB,GAC/B,MAAM;IAKT,kBAAkB,CAAC,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,mBAAmB,GAAG,MAAM,EAAE;CAG/E;AAED;;GAEG;AACH,qBAAa,0BAA2B,YAAW,cAAc;IAC/D,QAAQ,CAAC,IAAI,kBAAkB;IAE/B,iBAAiB,CACf,KAAK,EAAE,WAAW,EAClB,QAAQ,EAAE,MAAM,EAChB,WAAW,EAAE,mBAAmB,GAC/B,MAAM;IAKT,kBAAkB,CAAC,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,mBAAmB,GAAG,MAAM,EAAE;CAW9E;AAED;;GAEG;AACH,qBAAa,uBAAwB,YAAW,cAAc;IAC5D,QAAQ,CAAC,IAAI,eAAe;IAE5B,iBAAiB,CACf,KAAK,EAAE,WAAW,EAClB,QAAQ,EAAE,MAAM,EAChB,WAAW,EAAE,mBAAmB,GAC/B,MAAM;IAKT,kBAAkB,CAAC,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,mBAAmB,GAAG,MAAM,EAAE;CAW9E"}
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
import type { ColumnResizeOptions, ResizableDataSource, ColumnConstraints } from './column-resize-manager.interface';
|
|
2
|
+
import { ColumnResizeManager } from './column-resize-manager';
|
|
3
|
+
/**
|
|
4
|
+
* Mock data source for testing
|
|
5
|
+
*/
|
|
6
|
+
export declare class MockResizableDataSource implements ResizableDataSource {
|
|
7
|
+
private colCount;
|
|
8
|
+
private rowCount;
|
|
9
|
+
private widths;
|
|
10
|
+
private offsets;
|
|
11
|
+
private data;
|
|
12
|
+
constructor(colCount: number, initialWidth?: number, rowCount?: number);
|
|
13
|
+
private calculateOffsets;
|
|
14
|
+
getColumnCount(): number;
|
|
15
|
+
getColumnOffset(col: number): number;
|
|
16
|
+
getColumnWidth(col: number): number;
|
|
17
|
+
setColumnWidth(col: number, width: number): void;
|
|
18
|
+
getValue(row: number, col: number): any;
|
|
19
|
+
getRowCount(): number;
|
|
20
|
+
getWidths(): number[];
|
|
21
|
+
setWidths(widths: number[]): void;
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* Test helper utilities for column resize feature
|
|
25
|
+
*/
|
|
26
|
+
export declare class ResizeTestHelper {
|
|
27
|
+
/**
|
|
28
|
+
* Create a mock resize manager for testing
|
|
29
|
+
*/
|
|
30
|
+
static createMockResizeManager(options?: Partial<ColumnResizeOptions>): {
|
|
31
|
+
manager: ColumnResizeManager;
|
|
32
|
+
dataSource: MockResizableDataSource;
|
|
33
|
+
container: HTMLElement;
|
|
34
|
+
};
|
|
35
|
+
/**
|
|
36
|
+
* Simulate a resize operation without DOM
|
|
37
|
+
*/
|
|
38
|
+
static simulateResize(dataSource: ResizableDataSource, column: number, newWidth: number, constraints?: ColumnConstraints): {
|
|
39
|
+
oldWidth: number;
|
|
40
|
+
newWidth: number;
|
|
41
|
+
};
|
|
42
|
+
/**
|
|
43
|
+
* Simulate a mouse drag resize
|
|
44
|
+
*/
|
|
45
|
+
static simulateMouseDrag(container: HTMLElement, startX: number, endX: number): void;
|
|
46
|
+
/**
|
|
47
|
+
* Simulate double-click for auto-fit
|
|
48
|
+
*/
|
|
49
|
+
static simulateDoubleClick(container: HTMLElement, x: number): void;
|
|
50
|
+
/**
|
|
51
|
+
* Clean up test resources
|
|
52
|
+
*/
|
|
53
|
+
static cleanup(container: HTMLElement): void;
|
|
54
|
+
/**
|
|
55
|
+
* Assert that widths match expected values
|
|
56
|
+
*/
|
|
57
|
+
static assertWidths(dataSource: ResizableDataSource, expected: number[], tolerance?: number): boolean;
|
|
58
|
+
/**
|
|
59
|
+
* Create a test scenario with specific column widths and constraints
|
|
60
|
+
*/
|
|
61
|
+
static createTestScenario(config: {
|
|
62
|
+
columnWidths: number[];
|
|
63
|
+
constraints?: Map<number, ColumnConstraints>;
|
|
64
|
+
rowCount?: number;
|
|
65
|
+
}): {
|
|
66
|
+
manager: ColumnResizeManager;
|
|
67
|
+
dataSource: MockResizableDataSource;
|
|
68
|
+
container: HTMLElement;
|
|
69
|
+
};
|
|
70
|
+
}
|
|
71
|
+
//# sourceMappingURL=resize-test-helper.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"resize-test-helper.d.ts","sourceRoot":"","sources":["../../../../../../packages/core/src/features/column-resize/resize-test-helper.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,mBAAmB,EACnB,mBAAmB,EACnB,iBAAiB,EAClB,MAAM,mCAAmC,CAAC;AAC3C,OAAO,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AAE9D;;GAEG;AACH,qBAAa,uBAAwB,YAAW,mBAAmB;IAM/D,OAAO,CAAC,QAAQ;IAEhB,OAAO,CAAC,QAAQ;IAPlB,OAAO,CAAC,MAAM,CAAW;IACzB,OAAO,CAAC,OAAO,CAAW;IAC1B,OAAO,CAAC,IAAI,CAAe;gBAGjB,QAAQ,EAAE,MAAM,EACxB,YAAY,GAAE,MAAY,EAClB,QAAQ,GAAE,MAAY;IAehC,OAAO,CAAC,gBAAgB;IAUxB,cAAc,IAAI,MAAM;IAIxB,eAAe,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM;IAIpC,cAAc,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM;IAInC,cAAc,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI;IAKhD,QAAQ,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,GAAG;IAIvC,WAAW,IAAI,MAAM;IAKrB,SAAS,IAAI,MAAM,EAAE;IAIrB,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,IAAI;CAIlC;AAED;;GAEG;AACH,qBAAa,gBAAgB;IAC3B;;OAEG;IACH,MAAM,CAAC,uBAAuB,CAC5B,OAAO,CAAC,EAAE,OAAO,CAAC,mBAAmB,CAAC,GACrC;QACD,OAAO,EAAE,mBAAmB,CAAC;QAC7B,UAAU,EAAE,uBAAuB,CAAC;QACpC,SAAS,EAAE,WAAW,CAAC;KACxB;IA2BD;;OAEG;IACH,MAAM,CAAC,cAAc,CACnB,UAAU,EAAE,mBAAmB,EAC/B,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,MAAM,EAChB,WAAW,CAAC,EAAE,iBAAiB,GAC9B;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAE;IAmBzC;;OAEG;IACH,MAAM,CAAC,iBAAiB,CACtB,SAAS,EAAE,WAAW,EACtB,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,MAAM,GACX,IAAI;IAwBP;;OAEG;IACH,MAAM,CAAC,mBAAmB,CAAC,SAAS,EAAE,WAAW,EAAE,CAAC,EAAE,MAAM,GAAG,IAAI;IAQnE;;OAEG;IACH,MAAM,CAAC,OAAO,CAAC,SAAS,EAAE,WAAW,GAAG,IAAI;IAI5C;;OAEG;IACH,MAAM,CAAC,YAAY,CACjB,UAAU,EAAE,mBAAmB,EAC/B,QAAQ,EAAE,MAAM,EAAE,EAClB,SAAS,GAAE,MAAY,GACtB,OAAO;IAuBV;;OAEG;IACH,MAAM,CAAC,kBAAkB,CAAC,MAAM,EAAE;QAChC,YAAY,EAAE,MAAM,EAAE,CAAC;QACvB,WAAW,CAAC,EAAE,GAAG,CAAC,MAAM,EAAE,iBAAiB,CAAC,CAAC;QAC7C,QAAQ,CAAC,EAAE,MAAM,CAAC;KACnB,GAAG;QACF,OAAO,EAAE,mBAAmB,CAAC;QAC7B,UAAU,EAAE,uBAAuB,CAAC;QACpC,SAAS,EAAE,WAAW,CAAC;KACxB;CAwBF"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import type { ResizableDataSource, ResizeZoneResult } from './column-resize-manager.interface';
|
|
2
|
+
/**
|
|
3
|
+
* Configuration for zone detector
|
|
4
|
+
*/
|
|
5
|
+
export interface ZoneDetectorOptions {
|
|
6
|
+
/** Width of resize zone in pixels (default: 6) */
|
|
7
|
+
resizeZoneWidth?: number;
|
|
8
|
+
}
|
|
9
|
+
/**
|
|
10
|
+
* Pure zone detection logic
|
|
11
|
+
* Separated from main manager for testability
|
|
12
|
+
*/
|
|
13
|
+
export declare class ResizeZoneDetector {
|
|
14
|
+
private resizeZoneWidth;
|
|
15
|
+
constructor(options?: ZoneDetectorOptions);
|
|
16
|
+
/**
|
|
17
|
+
* Detect if mouse position is in a resize zone
|
|
18
|
+
* @param x Mouse X position in grid coordinates
|
|
19
|
+
* @param dataSource Data source for column information
|
|
20
|
+
* @returns Resize zone result
|
|
21
|
+
*/
|
|
22
|
+
detectZone(x: number, dataSource: ResizableDataSource): ResizeZoneResult;
|
|
23
|
+
/**
|
|
24
|
+
* Get the resize zone width
|
|
25
|
+
*/
|
|
26
|
+
getZoneWidth(): number;
|
|
27
|
+
/**
|
|
28
|
+
* Set the resize zone width
|
|
29
|
+
*/
|
|
30
|
+
setZoneWidth(width: number): void;
|
|
31
|
+
}
|
|
32
|
+
//# sourceMappingURL=resize-zone-detector.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"resize-zone-detector.d.ts","sourceRoot":"","sources":["../../../../../../packages/core/src/features/column-resize/resize-zone-detector.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,mBAAmB,EACnB,gBAAgB,EACjB,MAAM,mCAAmC,CAAC;AAE3C;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAClC,kDAAkD;IAClD,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B;AAED;;;GAGG;AACH,qBAAa,kBAAkB;IAC7B,OAAO,CAAC,eAAe,CAAS;gBAEpB,OAAO,GAAE,mBAAwB;IAI7C;;;;;OAKG;IACH,UAAU,CAAC,CAAC,EAAE,MAAM,EAAE,UAAU,EAAE,mBAAmB,GAAG,gBAAgB;IA2BxE;;OAEG;IACH,YAAY,IAAI,MAAM;IAItB;;OAEG;IACH,YAAY,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;CAGlC"}
|