photon-grid-core 0.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/LICENSE +1 -0
- package/README.md +0 -0
- package/cell-selection/active-grid-registry.d.ts +37 -0
- package/cell-selection/active-grid-registry.d.ts.map +1 -0
- package/cell-selection/active-grid-registry.js +25 -0
- package/cell-selection/active-grid-registry.js.map +1 -0
- package/cell-selection/cell-selection-engine.d.ts +336 -0
- package/cell-selection/cell-selection-engine.d.ts.map +1 -0
- package/cell-selection/cell-selection-engine.js +1534 -0
- package/cell-selection/cell-selection-engine.js.map +1 -0
- package/cell-selection/selection-range.d.ts +16 -0
- package/cell-selection/selection-range.d.ts.map +1 -0
- package/cell-selection/selection-range.js +48 -0
- package/cell-selection/selection-range.js.map +1 -0
- package/cell-selection/selection-renderer.d.ts +24 -0
- package/cell-selection/selection-renderer.d.ts.map +1 -0
- package/cell-selection/selection-renderer.js +107 -0
- package/cell-selection/selection-renderer.js.map +1 -0
- package/chart/chart-analyzer/aggregation-analyzer.d.ts +18 -0
- package/chart/chart-analyzer/aggregation-analyzer.d.ts.map +1 -0
- package/chart/chart-analyzer/aggregation-analyzer.js +63 -0
- package/chart/chart-analyzer/aggregation-analyzer.js.map +1 -0
- package/chart/chart-analyzer/bar-analyzer.d.ts +19 -0
- package/chart/chart-analyzer/bar-analyzer.d.ts.map +1 -0
- package/chart/chart-analyzer/bar-analyzer.js +56 -0
- package/chart/chart-analyzer/bar-analyzer.js.map +1 -0
- package/chart/chart-analyzer/bubble-analyzer.d.ts +16 -0
- package/chart/chart-analyzer/bubble-analyzer.d.ts.map +1 -0
- package/chart/chart-analyzer/bubble-analyzer.js +61 -0
- package/chart/chart-analyzer/bubble-analyzer.js.map +1 -0
- package/chart/chart-analyzer/cardinality-analyzer.d.ts +13 -0
- package/chart/chart-analyzer/cardinality-analyzer.d.ts.map +1 -0
- package/chart/chart-analyzer/cardinality-analyzer.js +28 -0
- package/chart/chart-analyzer/cardinality-analyzer.js.map +1 -0
- package/chart/chart-analyzer/dimension-analyzer.d.ts +12 -0
- package/chart/chart-analyzer/dimension-analyzer.d.ts.map +1 -0
- package/chart/chart-analyzer/dimension-analyzer.js +33 -0
- package/chart/chart-analyzer/dimension-analyzer.js.map +1 -0
- package/chart/chart-analyzer/histogram-analyzer.d.ts +11 -0
- package/chart/chart-analyzer/histogram-analyzer.d.ts.map +1 -0
- package/chart/chart-analyzer/histogram-analyzer.js +43 -0
- package/chart/chart-analyzer/histogram-analyzer.js.map +1 -0
- package/chart/chart-analyzer/index.d.ts +58 -0
- package/chart/chart-analyzer/index.d.ts.map +1 -0
- package/chart/chart-analyzer/index.js +130 -0
- package/chart/chart-analyzer/index.js.map +1 -0
- package/chart/chart-analyzer/line-analyzer.d.ts +23 -0
- package/chart/chart-analyzer/line-analyzer.d.ts.map +1 -0
- package/chart/chart-analyzer/line-analyzer.js +61 -0
- package/chart/chart-analyzer/line-analyzer.js.map +1 -0
- package/chart/chart-analyzer/measure-analyzer.d.ts +11 -0
- package/chart/chart-analyzer/measure-analyzer.d.ts.map +1 -0
- package/chart/chart-analyzer/measure-analyzer.js +44 -0
- package/chart/chart-analyzer/measure-analyzer.js.map +1 -0
- package/chart/chart-analyzer/pie-analyzer.d.ts +19 -0
- package/chart/chart-analyzer/pie-analyzer.d.ts.map +1 -0
- package/chart/chart-analyzer/pie-analyzer.js +64 -0
- package/chart/chart-analyzer/pie-analyzer.js.map +1 -0
- package/chart/chart-analyzer/recommendation-engine.d.ts +18 -0
- package/chart/chart-analyzer/recommendation-engine.d.ts.map +1 -0
- package/chart/chart-analyzer/recommendation-engine.js +82 -0
- package/chart/chart-analyzer/recommendation-engine.js.map +1 -0
- package/chart/chart-analyzer/scatter-analyzer.d.ts +16 -0
- package/chart/chart-analyzer/scatter-analyzer.d.ts.map +1 -0
- package/chart/chart-analyzer/scatter-analyzer.js +70 -0
- package/chart/chart-analyzer/scatter-analyzer.js.map +1 -0
- package/chart/chart-analyzer/types.d.ts +52 -0
- package/chart/chart-analyzer/types.d.ts.map +1 -0
- package/chart/chart-analyzer/types.js +10 -0
- package/chart/chart-analyzer/types.js.map +1 -0
- package/chart/chart-analyzer.d.ts +12 -0
- package/chart/chart-analyzer.d.ts.map +1 -0
- package/chart/chart-analyzer.js +77 -0
- package/chart/chart-analyzer.js.map +1 -0
- package/chart/chart-data-transformer.d.ts +26 -0
- package/chart/chart-data-transformer.d.ts.map +1 -0
- package/chart/chart-data-transformer.js +93 -0
- package/chart/chart-data-transformer.js.map +1 -0
- package/chart/chart-engine.d.ts +38 -0
- package/chart/chart-engine.d.ts.map +1 -0
- package/chart/chart-engine.js +96 -0
- package/chart/chart-engine.js.map +1 -0
- package/chart/chart-panel.d.ts +54 -0
- package/chart/chart-panel.d.ts.map +1 -0
- package/chart/chart-panel.js +350 -0
- package/chart/chart-panel.js.map +1 -0
- package/chart/chart-renderer.d.ts +93 -0
- package/chart/chart-renderer.d.ts.map +1 -0
- package/chart/chart-renderer.js +1330 -0
- package/chart/chart-renderer.js.map +1 -0
- package/chart/sparkline/sparkline-renderer.d.ts +269 -0
- package/chart/sparkline/sparkline-renderer.d.ts.map +1 -0
- package/chart/sparkline/sparkline-renderer.js +875 -0
- package/chart/sparkline/sparkline-renderer.js.map +1 -0
- package/chart/sparkline/sparkline.types.d.ts +214 -0
- package/chart/sparkline/sparkline.types.d.ts.map +1 -0
- package/chart/sparkline/sparkline.types.js +8 -0
- package/chart/sparkline/sparkline.types.js.map +1 -0
- package/column-groups/column-group-drag-handler.d.ts +169 -0
- package/column-groups/column-group-drag-handler.d.ts.map +1 -0
- package/column-groups/column-group-drag-handler.js +517 -0
- package/column-groups/column-group-drag-handler.js.map +1 -0
- package/column-groups/column-group-header-builder.d.ts +106 -0
- package/column-groups/column-group-header-builder.d.ts.map +1 -0
- package/column-groups/column-group-header-builder.js +311 -0
- package/column-groups/column-group-header-builder.js.map +1 -0
- package/column-groups/column-group-model.d.ts +248 -0
- package/column-groups/column-group-model.d.ts.map +1 -0
- package/column-groups/column-group-model.js +668 -0
- package/column-groups/column-group-model.js.map +1 -0
- package/column-groups/column-group-state-manager.d.ts +110 -0
- package/column-groups/column-group-state-manager.d.ts.map +1 -0
- package/column-groups/column-group-state-manager.js +153 -0
- package/column-groups/column-group-state-manager.js.map +1 -0
- package/column-groups/column-group.types.d.ts +250 -0
- package/column-groups/column-group.types.d.ts.map +1 -0
- package/column-groups/column-group.types.js +20 -0
- package/column-groups/column-group.types.js.map +1 -0
- package/column-groups/display-group-builder.d.ts +91 -0
- package/column-groups/display-group-builder.d.ts.map +1 -0
- package/column-groups/display-group-builder.js +225 -0
- package/column-groups/display-group-builder.js.map +1 -0
- package/column-groups/display-group-drag-handler.d.ts +205 -0
- package/column-groups/display-group-drag-handler.d.ts.map +1 -0
- package/column-groups/display-group-drag-handler.js +536 -0
- package/column-groups/display-group-drag-handler.js.map +1 -0
- package/column-groups/display-group-engine.d.ts +310 -0
- package/column-groups/display-group-engine.d.ts.map +1 -0
- package/column-groups/display-group-engine.js +549 -0
- package/column-groups/display-group-engine.js.map +1 -0
- package/column-groups/display-group-header-builder.d.ts +94 -0
- package/column-groups/display-group-header-builder.d.ts.map +1 -0
- package/column-groups/display-group-header-builder.js +224 -0
- package/column-groups/display-group-header-builder.js.map +1 -0
- package/column-groups/display-group.types.d.ts +140 -0
- package/column-groups/display-group.types.d.ts.map +1 -0
- package/column-groups/display-group.types.js +2 -0
- package/column-groups/display-group.types.js.map +1 -0
- package/column-groups/index.d.ts +25 -0
- package/column-groups/index.d.ts.map +1 -0
- package/column-groups/index.js +26 -0
- package/column-groups/index.js.map +1 -0
- package/column-groups/logical-group-registry.d.ts +77 -0
- package/column-groups/logical-group-registry.d.ts.map +1 -0
- package/column-groups/logical-group-registry.js +118 -0
- package/column-groups/logical-group-registry.js.map +1 -0
- package/core/column-model.d.ts +30 -0
- package/core/column-model.d.ts.map +1 -0
- package/core/column-model.js +203 -0
- package/core/column-model.js.map +1 -0
- package/core/grid-api.d.ts +187 -0
- package/core/grid-api.d.ts.map +1 -0
- package/core/grid-api.js +569 -0
- package/core/grid-api.js.map +1 -0
- package/core/grid-context.d.ts +61 -0
- package/core/grid-context.d.ts.map +1 -0
- package/core/grid-context.js +2 -0
- package/core/grid-context.js.map +1 -0
- package/core/grid-core.d.ts +49 -0
- package/core/grid-core.d.ts.map +1 -0
- package/core/grid-core.js +675 -0
- package/core/grid-core.js.map +1 -0
- package/core/grid-store.d.ts +62 -0
- package/core/grid-store.d.ts.map +1 -0
- package/core/grid-store.js +104 -0
- package/core/grid-store.js.map +1 -0
- package/core/row-model.d.ts +32 -0
- package/core/row-model.d.ts.map +1 -0
- package/core/row-model.js +150 -0
- package/core/row-model.js.map +1 -0
- package/drag-drop/drag-autoscroll.d.ts +14 -0
- package/drag-drop/drag-autoscroll.d.ts.map +1 -0
- package/drag-drop/drag-autoscroll.js +66 -0
- package/drag-drop/drag-autoscroll.js.map +1 -0
- package/drag-drop/drag-drop-engine.d.ts +55 -0
- package/drag-drop/drag-drop-engine.d.ts.map +1 -0
- package/drag-drop/drag-drop-engine.js +179 -0
- package/drag-drop/drag-drop-engine.js.map +1 -0
- package/drag-drop/drag-preview.d.ts +32 -0
- package/drag-drop/drag-preview.d.ts.map +1 -0
- package/drag-drop/drag-preview.js +74 -0
- package/drag-drop/drag-preview.js.map +1 -0
- package/engines/aggregation/aggregation-engine.d.ts +66 -0
- package/engines/aggregation/aggregation-engine.d.ts.map +1 -0
- package/engines/aggregation/aggregation-engine.js +149 -0
- package/engines/aggregation/aggregation-engine.js.map +1 -0
- package/engines/clipboard/clipboard-engine.d.ts +89 -0
- package/engines/clipboard/clipboard-engine.d.ts.map +1 -0
- package/engines/clipboard/clipboard-engine.js +323 -0
- package/engines/clipboard/clipboard-engine.js.map +1 -0
- package/engines/editing/cell-editor-engine.d.ts +62 -0
- package/engines/editing/cell-editor-engine.d.ts.map +1 -0
- package/engines/editing/cell-editor-engine.js +359 -0
- package/engines/editing/cell-editor-engine.js.map +1 -0
- package/engines/editing/custom-dropdown-editor.d.ts +99 -0
- package/engines/editing/custom-dropdown-editor.d.ts.map +1 -0
- package/engines/editing/custom-dropdown-editor.js +355 -0
- package/engines/editing/custom-dropdown-editor.js.map +1 -0
- package/engines/editing/value-parser.d.ts +12 -0
- package/engines/editing/value-parser.d.ts.map +1 -0
- package/engines/editing/value-parser.js +125 -0
- package/engines/editing/value-parser.js.map +1 -0
- package/engines/export/export-engine.d.ts +16 -0
- package/engines/export/export-engine.d.ts.map +1 -0
- package/engines/export/export-engine.js +99 -0
- package/engines/export/export-engine.js.map +1 -0
- package/engines/filter/filter-condition.d.ts +7 -0
- package/engines/filter/filter-condition.d.ts.map +1 -0
- package/engines/filter/filter-condition.js +126 -0
- package/engines/filter/filter-condition.js.map +1 -0
- package/engines/filter/filter-engine.d.ts +35 -0
- package/engines/filter/filter-engine.d.ts.map +1 -0
- package/engines/filter/filter-engine.js +150 -0
- package/engines/filter/filter-engine.js.map +1 -0
- package/engines/filter/filter-panel.d.ts +103 -0
- package/engines/filter/filter-panel.d.ts.map +1 -0
- package/engines/filter/filter-panel.js +645 -0
- package/engines/filter/filter-panel.js.map +1 -0
- package/engines/grouping/group-node.d.ts +21 -0
- package/engines/grouping/group-node.d.ts.map +1 -0
- package/engines/grouping/group-node.js +96 -0
- package/engines/grouping/group-node.js.map +1 -0
- package/engines/grouping/grouping-engine.d.ts +33 -0
- package/engines/grouping/grouping-engine.d.ts.map +1 -0
- package/engines/grouping/grouping-engine.js +118 -0
- package/engines/grouping/grouping-engine.js.map +1 -0
- package/engines/master-detail/master-detail-engine.d.ts +77 -0
- package/engines/master-detail/master-detail-engine.d.ts.map +1 -0
- package/engines/master-detail/master-detail-engine.js +199 -0
- package/engines/master-detail/master-detail-engine.js.map +1 -0
- package/engines/pagination/pagination-engine.d.ts +33 -0
- package/engines/pagination/pagination-engine.d.ts.map +1 -0
- package/engines/pagination/pagination-engine.js +110 -0
- package/engines/pagination/pagination-engine.js.map +1 -0
- package/engines/selection/row-selection-engine.d.ts +26 -0
- package/engines/selection/row-selection-engine.d.ts.map +1 -0
- package/engines/selection/row-selection-engine.js +145 -0
- package/engines/selection/row-selection-engine.js.map +1 -0
- package/engines/sort/sort-comparator.d.ts +43 -0
- package/engines/sort/sort-comparator.d.ts.map +1 -0
- package/engines/sort/sort-comparator.js +113 -0
- package/engines/sort/sort-comparator.js.map +1 -0
- package/engines/sort/sort-engine.d.ts +67 -0
- package/engines/sort/sort-engine.d.ts.map +1 -0
- package/engines/sort/sort-engine.js +178 -0
- package/engines/sort/sort-engine.js.map +1 -0
- package/engines/summary/summary-engine.d.ts +17 -0
- package/engines/summary/summary-engine.d.ts.map +1 -0
- package/engines/summary/summary-engine.js +72 -0
- package/engines/summary/summary-engine.js.map +1 -0
- package/engines/tree/tree-data-service.d.ts +117 -0
- package/engines/tree/tree-data-service.d.ts.map +1 -0
- package/engines/tree/tree-data-service.js +296 -0
- package/engines/tree/tree-data-service.js.map +1 -0
- package/engines/tree/tree-expansion-service.d.ts +35 -0
- package/engines/tree/tree-expansion-service.d.ts.map +1 -0
- package/engines/tree/tree-expansion-service.js +84 -0
- package/engines/tree/tree-expansion-service.js.map +1 -0
- package/engines/tree/tree-node.d.ts +40 -0
- package/engines/tree/tree-node.d.ts.map +1 -0
- package/engines/tree/tree-node.js +199 -0
- package/engines/tree/tree-node.js.map +1 -0
- package/engines/tree/tree-selection-service.d.ts +35 -0
- package/engines/tree/tree-selection-service.d.ts.map +1 -0
- package/engines/tree/tree-selection-service.js +72 -0
- package/engines/tree/tree-selection-service.js.map +1 -0
- package/engines/undo-redo/undo-redo-engine.d.ts +114 -0
- package/engines/undo-redo/undo-redo-engine.d.ts.map +1 -0
- package/engines/undo-redo/undo-redo-engine.js +165 -0
- package/engines/undo-redo/undo-redo-engine.js.map +1 -0
- package/event-bus/event-bus.d.ts +21 -0
- package/event-bus/event-bus.d.ts.map +1 -0
- package/event-bus/event-bus.js +106 -0
- package/event-bus/event-bus.js.map +1 -0
- package/icons/icon-registry.d.ts +19 -0
- package/icons/icon-registry.d.ts.map +1 -0
- package/icons/icon-registry.js +37 -0
- package/icons/icon-registry.js.map +1 -0
- package/icons/icon-renderer.d.ts +18 -0
- package/icons/icon-renderer.d.ts.map +1 -0
- package/icons/icon-renderer.js +75 -0
- package/icons/icon-renderer.js.map +1 -0
- package/icons/icon-sets/core-icons.d.ts +2 -0
- package/icons/icon-sets/core-icons.d.ts.map +1 -0
- package/icons/icon-sets/core-icons.js +48 -0
- package/icons/icon-sets/core-icons.js.map +1 -0
- package/index.d.ts +72 -0
- package/index.d.ts.map +1 -0
- package/index.js +54 -0
- package/index.js.map +1 -0
- package/package.json +64 -0
- package/photon-ai/builtins/filter.commands.d.ts +4 -0
- package/photon-ai/builtins/filter.commands.d.ts.map +1 -0
- package/photon-ai/builtins/filter.commands.js +189 -0
- package/photon-ai/builtins/filter.commands.js.map +1 -0
- package/photon-ai/builtins/grouping.commands.d.ts +4 -0
- package/photon-ai/builtins/grouping.commands.d.ts.map +1 -0
- package/photon-ai/builtins/grouping.commands.js +115 -0
- package/photon-ai/builtins/grouping.commands.js.map +1 -0
- package/photon-ai/builtins/index.d.ts +10 -0
- package/photon-ai/builtins/index.d.ts.map +1 -0
- package/photon-ai/builtins/index.js +26 -0
- package/photon-ai/builtins/index.js.map +1 -0
- package/photon-ai/builtins/info.commands.d.ts +4 -0
- package/photon-ai/builtins/info.commands.d.ts.map +1 -0
- package/photon-ai/builtins/info.commands.js +201 -0
- package/photon-ai/builtins/info.commands.js.map +1 -0
- package/photon-ai/builtins/move.commands.d.ts +4 -0
- package/photon-ai/builtins/move.commands.d.ts.map +1 -0
- package/photon-ai/builtins/move.commands.js +53 -0
- package/photon-ai/builtins/move.commands.js.map +1 -0
- package/photon-ai/builtins/pin.commands.d.ts +4 -0
- package/photon-ai/builtins/pin.commands.d.ts.map +1 -0
- package/photon-ai/builtins/pin.commands.js +106 -0
- package/photon-ai/builtins/pin.commands.js.map +1 -0
- package/photon-ai/builtins/selection.commands.d.ts +4 -0
- package/photon-ai/builtins/selection.commands.d.ts.map +1 -0
- package/photon-ai/builtins/selection.commands.js +102 -0
- package/photon-ai/builtins/selection.commands.js.map +1 -0
- package/photon-ai/builtins/sort.commands.d.ts +4 -0
- package/photon-ai/builtins/sort.commands.d.ts.map +1 -0
- package/photon-ai/builtins/sort.commands.js +67 -0
- package/photon-ai/builtins/sort.commands.js.map +1 -0
- package/photon-ai/builtins/visibility.commands.d.ts +4 -0
- package/photon-ai/builtins/visibility.commands.d.ts.map +1 -0
- package/photon-ai/builtins/visibility.commands.js +75 -0
- package/photon-ai/builtins/visibility.commands.js.map +1 -0
- package/photon-ai/command-builder.d.ts +21 -0
- package/photon-ai/command-builder.d.ts.map +1 -0
- package/photon-ai/command-builder.js +18 -0
- package/photon-ai/command-builder.js.map +1 -0
- package/photon-ai/command-executor.d.ts +15 -0
- package/photon-ai/command-executor.d.ts.map +1 -0
- package/photon-ai/command-executor.js +26 -0
- package/photon-ai/command-executor.js.map +1 -0
- package/photon-ai/entity-resolver.d.ts +121 -0
- package/photon-ai/entity-resolver.d.ts.map +1 -0
- package/photon-ai/entity-resolver.js +393 -0
- package/photon-ai/entity-resolver.js.map +1 -0
- package/photon-ai/fuzzy-match.d.ts +12 -0
- package/photon-ai/fuzzy-match.d.ts.map +1 -0
- package/photon-ai/fuzzy-match.js +37 -0
- package/photon-ai/fuzzy-match.js.map +1 -0
- package/photon-ai/index.d.ts +15 -0
- package/photon-ai/index.d.ts.map +1 -0
- package/photon-ai/index.js +13 -0
- package/photon-ai/index.js.map +1 -0
- package/photon-ai/intent-parser.d.ts +20 -0
- package/photon-ai/intent-parser.d.ts.map +1 -0
- package/photon-ai/intent-parser.js +52 -0
- package/photon-ai/intent-parser.js.map +1 -0
- package/photon-ai/photon-ai-memory.d.ts +42 -0
- package/photon-ai/photon-ai-memory.d.ts.map +1 -0
- package/photon-ai/photon-ai-memory.js +86 -0
- package/photon-ai/photon-ai-memory.js.map +1 -0
- package/photon-ai/photon-ai-panel.d.ts +54 -0
- package/photon-ai/photon-ai-panel.d.ts.map +1 -0
- package/photon-ai/photon-ai-panel.js +191 -0
- package/photon-ai/photon-ai-panel.js.map +1 -0
- package/photon-ai/photon-ai-registry.d.ts +25 -0
- package/photon-ai/photon-ai-registry.d.ts.map +1 -0
- package/photon-ai/photon-ai-registry.js +41 -0
- package/photon-ai/photon-ai-registry.js.map +1 -0
- package/photon-ai/photon-ai-service.d.ts +71 -0
- package/photon-ai/photon-ai-service.d.ts.map +1 -0
- package/photon-ai/photon-ai-service.js +165 -0
- package/photon-ai/photon-ai-service.js.map +1 -0
- package/photon-ai/photon-ai.types.d.ts +100 -0
- package/photon-ai/photon-ai.types.d.ts.map +1 -0
- package/photon-ai/photon-ai.types.js +2 -0
- package/photon-ai/photon-ai.types.js.map +1 -0
- package/photon-ai/query-splitter.d.ts +22 -0
- package/photon-ai/query-splitter.d.ts.map +1 -0
- package/photon-ai/query-splitter.js +81 -0
- package/photon-ai/query-splitter.js.map +1 -0
- package/photon-ai/text-normalizer.d.ts +33 -0
- package/photon-ai/text-normalizer.d.ts.map +1 -0
- package/photon-ai/text-normalizer.js +132 -0
- package/photon-ai/text-normalizer.js.map +1 -0
- package/renderer/auto-scroller.d.ts +78 -0
- package/renderer/auto-scroller.d.ts.map +1 -0
- package/renderer/auto-scroller.js +141 -0
- package/renderer/auto-scroller.js.map +1 -0
- package/renderer/body-renderer.d.ts +191 -0
- package/renderer/body-renderer.d.ts.map +1 -0
- package/renderer/body-renderer.js +806 -0
- package/renderer/body-renderer.js.map +1 -0
- package/renderer/cell-renderer.d.ts +26 -0
- package/renderer/cell-renderer.d.ts.map +1 -0
- package/renderer/cell-renderer.js +201 -0
- package/renderer/cell-renderer.js.map +1 -0
- package/renderer/column-menu.d.ts +285 -0
- package/renderer/column-menu.d.ts.map +1 -0
- package/renderer/column-menu.js +873 -0
- package/renderer/column-menu.js.map +1 -0
- package/renderer/column-style-manager.d.ts +38 -0
- package/renderer/column-style-manager.d.ts.map +1 -0
- package/renderer/column-style-manager.js +110 -0
- package/renderer/column-style-manager.js.map +1 -0
- package/renderer/detail-row-renderer.d.ts +153 -0
- package/renderer/detail-row-renderer.d.ts.map +1 -0
- package/renderer/detail-row-renderer.js +388 -0
- package/renderer/detail-row-renderer.js.map +1 -0
- package/renderer/dom-utils.d.ts +22 -0
- package/renderer/dom-utils.d.ts.map +1 -0
- package/renderer/dom-utils.js +132 -0
- package/renderer/dom-utils.js.map +1 -0
- package/renderer/footer-renderer.d.ts +25 -0
- package/renderer/footer-renderer.d.ts.map +1 -0
- package/renderer/footer-renderer.js +168 -0
- package/renderer/footer-renderer.js.map +1 -0
- package/renderer/grid-renderer.d.ts +295 -0
- package/renderer/grid-renderer.d.ts.map +1 -0
- package/renderer/grid-renderer.js +1456 -0
- package/renderer/grid-renderer.js.map +1 -0
- package/renderer/group-context-menu.d.ts +79 -0
- package/renderer/group-context-menu.d.ts.map +1 -0
- package/renderer/group-context-menu.js +238 -0
- package/renderer/group-context-menu.js.map +1 -0
- package/renderer/group-drop-zone.d.ts +56 -0
- package/renderer/group-drop-zone.d.ts.map +1 -0
- package/renderer/group-drop-zone.js +376 -0
- package/renderer/group-drop-zone.js.map +1 -0
- package/renderer/header-renderer.d.ts +264 -0
- package/renderer/header-renderer.d.ts.map +1 -0
- package/renderer/header-renderer.js +1321 -0
- package/renderer/header-renderer.js.map +1 -0
- package/renderer/overlay-renderer.d.ts +16 -0
- package/renderer/overlay-renderer.d.ts.map +1 -0
- package/renderer/overlay-renderer.js +64 -0
- package/renderer/overlay-renderer.js.map +1 -0
- package/renderer/renderer-resolver.d.ts +18 -0
- package/renderer/renderer-resolver.d.ts.map +1 -0
- package/renderer/renderer-resolver.js +18 -0
- package/renderer/renderer-resolver.js.map +1 -0
- package/renderer/row-animator.d.ts +72 -0
- package/renderer/row-animator.d.ts.map +1 -0
- package/renderer/row-animator.js +175 -0
- package/renderer/row-animator.js.map +1 -0
- package/renderer/row-drag-renderer.d.ts +58 -0
- package/renderer/row-drag-renderer.d.ts.map +1 -0
- package/renderer/row-drag-renderer.js +395 -0
- package/renderer/row-drag-renderer.js.map +1 -0
- package/renderer/row-offset-search.d.ts +17 -0
- package/renderer/row-offset-search.d.ts.map +1 -0
- package/renderer/row-offset-search.js +31 -0
- package/renderer/row-offset-search.js.map +1 -0
- package/renderer/row-position-sheet.d.ts +11 -0
- package/renderer/row-position-sheet.d.ts.map +1 -0
- package/renderer/row-position-sheet.js +29 -0
- package/renderer/row-position-sheet.js.map +1 -0
- package/renderer/scroll-controller.d.ts +58 -0
- package/renderer/scroll-controller.d.ts.map +1 -0
- package/renderer/scroll-controller.js +200 -0
- package/renderer/scroll-controller.js.map +1 -0
- package/renderer/sticky-row-tracker.d.ts +40 -0
- package/renderer/sticky-row-tracker.d.ts.map +1 -0
- package/renderer/sticky-row-tracker.js +63 -0
- package/renderer/sticky-row-tracker.js.map +1 -0
- package/renderer/tooltip-renderer.d.ts +36 -0
- package/renderer/tooltip-renderer.d.ts.map +1 -0
- package/renderer/tooltip-renderer.js +133 -0
- package/renderer/tooltip-renderer.js.map +1 -0
- package/renderer/tree-cell-renderer.d.ts +37 -0
- package/renderer/tree-cell-renderer.d.ts.map +1 -0
- package/renderer/tree-cell-renderer.js +75 -0
- package/renderer/tree-cell-renderer.js.map +1 -0
- package/renderer/tree-sticky-row-tracker.d.ts +62 -0
- package/renderer/tree-sticky-row-tracker.d.ts.map +1 -0
- package/renderer/tree-sticky-row-tracker.js +120 -0
- package/renderer/tree-sticky-row-tracker.js.map +1 -0
- package/renderer/virtual-scroll-renderer.d.ts +37 -0
- package/renderer/virtual-scroll-renderer.d.ts.map +1 -0
- package/renderer/virtual-scroll-renderer.js +133 -0
- package/renderer/virtual-scroll-renderer.js.map +1 -0
- package/styles/base-styles.d.ts +3 -0
- package/styles/base-styles.d.ts.map +1 -0
- package/styles/base-styles.js +3045 -0
- package/styles/base-styles.js.map +1 -0
- package/styles/themes/theme-alpine.d.ts +2 -0
- package/styles/themes/theme-alpine.d.ts.map +1 -0
- package/styles/themes/theme-alpine.js +120 -0
- package/styles/themes/theme-alpine.js.map +1 -0
- package/styles/themes/theme-balham.d.ts +2 -0
- package/styles/themes/theme-balham.d.ts.map +1 -0
- package/styles/themes/theme-balham.js +120 -0
- package/styles/themes/theme-balham.js.map +1 -0
- package/styles/themes/theme-dark.d.ts +2 -0
- package/styles/themes/theme-dark.d.ts.map +1 -0
- package/styles/themes/theme-dark.js +216 -0
- package/styles/themes/theme-dark.js.map +1 -0
- package/styles/themes/theme-material.d.ts +2 -0
- package/styles/themes/theme-material.d.ts.map +1 -0
- package/styles/themes/theme-material.js +134 -0
- package/styles/themes/theme-material.js.map +1 -0
- package/styles/themes/theme-quartz.d.ts +2 -0
- package/styles/themes/theme-quartz.d.ts.map +1 -0
- package/styles/themes/theme-quartz.js +120 -0
- package/styles/themes/theme-quartz.js.map +1 -0
- package/theme/css-var-injector.d.ts +10 -0
- package/theme/css-var-injector.d.ts.map +1 -0
- package/theme/css-var-injector.js +63 -0
- package/theme/css-var-injector.js.map +1 -0
- package/theme/theme-manager.d.ts +20 -0
- package/theme/theme-manager.d.ts.map +1 -0
- package/theme/theme-manager.js +79 -0
- package/theme/theme-manager.js.map +1 -0
- package/theme/themes/dark-theme.d.ts +3 -0
- package/theme/themes/dark-theme.d.ts.map +1 -0
- package/theme/themes/dark-theme.js +149 -0
- package/theme/themes/dark-theme.js.map +1 -0
- package/theme/themes/light-theme.d.ts +3 -0
- package/theme/themes/light-theme.d.ts.map +1 -0
- package/theme/themes/light-theme.js +149 -0
- package/theme/themes/light-theme.js.map +1 -0
- package/types/column.types.d.ts +195 -0
- package/types/column.types.d.ts.map +1 -0
- package/types/column.types.js +2 -0
- package/types/column.types.js.map +1 -0
- package/types/event.types.d.ts +213 -0
- package/types/event.types.d.ts.map +1 -0
- package/types/event.types.js +67 -0
- package/types/event.types.js.map +1 -0
- package/types/filter.types.d.ts +42 -0
- package/types/filter.types.d.ts.map +1 -0
- package/types/filter.types.js +2 -0
- package/types/filter.types.js.map +1 -0
- package/types/grid.types.d.ts +214 -0
- package/types/grid.types.d.ts.map +1 -0
- package/types/grid.types.js +2 -0
- package/types/grid.types.js.map +1 -0
- package/types/master-detail.types.d.ts +112 -0
- package/types/master-detail.types.d.ts.map +1 -0
- package/types/master-detail.types.js +2 -0
- package/types/master-detail.types.js.map +1 -0
- package/types/photon-ai.types.d.ts +19 -0
- package/types/photon-ai.types.d.ts.map +1 -0
- package/types/photon-ai.types.js +2 -0
- package/types/photon-ai.types.js.map +1 -0
- package/types/renderer.types.d.ts +156 -0
- package/types/renderer.types.d.ts.map +1 -0
- package/types/renderer.types.js +19 -0
- package/types/renderer.types.js.map +1 -0
- package/types/row.types.d.ts +127 -0
- package/types/row.types.d.ts.map +1 -0
- package/types/row.types.js +9 -0
- package/types/row.types.js.map +1 -0
- package/types/theme.types.d.ts +159 -0
- package/types/theme.types.d.ts.map +1 -0
- package/types/theme.types.js +2 -0
- package/types/theme.types.js.map +1 -0
- package/types/tree-data.types.d.ts +94 -0
- package/types/tree-data.types.d.ts.map +1 -0
- package/types/tree-data.types.js +2 -0
- package/types/tree-data.types.js.map +1 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"display-group-header-builder.d.ts","sourceRoot":"","sources":["../../src/column-groups/display-group-header-builder.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AAC3D,OAAO,KAAK,EACV,iBAAiB,EAGjB,gBAAgB,EAEjB,MAAM,uBAAuB,CAAC;AAG/B;;GAEG;AACH,MAAM,WAAW,uBAAuB;IACtC,8FAA8F;IAC9F,SAAS,EAAE,MAAM,CAAC;IAClB,iFAAiF;IACjF,gBAAgB,CAAC,EAAE,CAAC,cAAc,EAAE,MAAM,KAAK,IAAI,CAAC;IACpD,oEAAoE;IACpE,aAAa,CAAC,EAAE,CAAC,cAAc,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,KAAK,IAAI,CAAC;IACnE;;;OAGG;IACH,sBAAsB,CAAC,EAAE,CAAC,CAAC,EAAE,UAAU,EAAE,IAAI,EAAE,gBAAgB,EAAE,EAAE,EAAE,WAAW,KAAK,IAAI,CAAC;IAC1F;;;OAGG;IACH,aAAa,CAAC,EAAE,MAAM,OAAO,CAAC;IAC9B;;;OAGG;IACH,kBAAkB,CAAC,EAAE,CAAC,CAAC,EAAE,UAAU,EAAE,IAAI,EAAE,gBAAgB,EAAE,EAAE,EAAE,WAAW,KAAK,IAAI,CAAC;CACvF;AAED;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,qBAAa,yBAAyB;IACxB,OAAO,CAAC,QAAQ,CAAC,YAAY;gBAAZ,YAAY,EAAE,YAAY;IAIvD;;;;;;OAMG;IACH,cAAc,CACZ,IAAI,EAAK,iBAAiB,EAC1B,OAAO,EAAE,uBAAuB,GAC/B,WAAW,EAAE;IAKhB;;;;;;;OAOG;IACH,eAAe,CACb,MAAM,EAAG,WAAW,EAAE,EACtB,IAAI,EAAK,iBAAiB,EAC1B,OAAO,EAAE,uBAAuB,GAC/B,IAAI;IAWP,OAAO,CAAC,QAAQ;IAQhB,OAAO,CAAC,WAAW;IAUnB,OAAO,CAAC,SAAS;IAkBjB;;;;;;;OAOG;IACH,OAAO,CAAC,cAAc;IA4FtB,OAAO,CAAC,mBAAmB;IAyB3B;;;;;;;;OAQG;IACH,OAAO,CAAC,gBAAgB;CA2BzB"}
|
|
@@ -0,0 +1,224 @@
|
|
|
1
|
+
import { createDiv } from '../renderer/dom-utils';
|
|
2
|
+
/**
|
|
3
|
+
* Builds the multi-row grouped header DOM from a {@link DisplayHeaderTree}.
|
|
4
|
+
*
|
|
5
|
+
* ### Layout model
|
|
6
|
+
* ```
|
|
7
|
+
* pg-header-group-row depth-0 ← group cells (position: absolute)
|
|
8
|
+
* pg-header-group-row depth-1 ← deeper group cells (if nested)
|
|
9
|
+
* pg-header-row ← leaf headers (built by HeaderRenderer)
|
|
10
|
+
* ```
|
|
11
|
+
*
|
|
12
|
+
* Group rows use `position: relative` with absolutely-positioned cells,
|
|
13
|
+
* allowing arbitrary column widths and nesting depths without flex constraints.
|
|
14
|
+
* Filler cells occupy the group-row space of flat/shallow columns, making them
|
|
15
|
+
* appear to span the full header height.
|
|
16
|
+
*
|
|
17
|
+
* ### Responsibilities
|
|
18
|
+
* - Build one `HTMLElement` per group depth row (`buildGroupRows`).
|
|
19
|
+
* - Rebuild existing rows in place without re-mounting (`updateGroupRows`).
|
|
20
|
+
* - Render group cells: label, collapse button, resize handle.
|
|
21
|
+
* - Render filler cells for flat/shallow columns.
|
|
22
|
+
*/
|
|
23
|
+
export class DisplayGroupHeaderBuilder {
|
|
24
|
+
constructor(iconRenderer) {
|
|
25
|
+
this.iconRenderer = iconRenderer;
|
|
26
|
+
}
|
|
27
|
+
// ── Public: build / update ────────────────────────────────────────────────
|
|
28
|
+
/**
|
|
29
|
+
* Build one `HTMLElement` per group depth row from the given display tree.
|
|
30
|
+
* Returns an empty array when `maxGroupDepth === 0` (no groups present).
|
|
31
|
+
*
|
|
32
|
+
* @param tree - Fully-computed display header tree.
|
|
33
|
+
* @param options - Callbacks and configuration for interactive cells.
|
|
34
|
+
*/
|
|
35
|
+
buildGroupRows(tree, options) {
|
|
36
|
+
if (tree.maxGroupDepth === 0)
|
|
37
|
+
return [];
|
|
38
|
+
return tree.groupRows.map((row) => this.buildRow(row, options));
|
|
39
|
+
}
|
|
40
|
+
/**
|
|
41
|
+
* Rebuild the contents of existing group-row elements in place.
|
|
42
|
+
* Called when column widths change or collapse state is toggled.
|
|
43
|
+
*
|
|
44
|
+
* @param rowEls - Previously built row elements (from `buildGroupRows`).
|
|
45
|
+
* @param tree - Updated display header tree.
|
|
46
|
+
* @param options - Callbacks and configuration.
|
|
47
|
+
*/
|
|
48
|
+
updateGroupRows(rowEls, tree, options) {
|
|
49
|
+
if (rowEls.length === 0 || tree.maxGroupDepth === 0)
|
|
50
|
+
return;
|
|
51
|
+
const count = Math.min(rowEls.length, tree.groupRows.length);
|
|
52
|
+
for (let d = 0; d < count; d++) {
|
|
53
|
+
rowEls[d].innerHTML = '';
|
|
54
|
+
this.populateRow(rowEls[d], tree.groupRows[d], options);
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
// ── Private: DOM building ─────────────────────────────────────────────────
|
|
58
|
+
buildRow(row, options) {
|
|
59
|
+
const el = createDiv(`pg-header-group-row pg-header-group-row--depth-${row.depth}`);
|
|
60
|
+
el.setAttribute('role', 'row');
|
|
61
|
+
el.setAttribute('data-group-depth', String(row.depth));
|
|
62
|
+
this.populateRow(el, row, options);
|
|
63
|
+
return el;
|
|
64
|
+
}
|
|
65
|
+
populateRow(rowEl, row, options) {
|
|
66
|
+
for (const cell of row.cells) {
|
|
67
|
+
rowEl.appendChild(this.buildCell(cell, options));
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
buildCell(cell, options) {
|
|
71
|
+
if (cell.kind === 'filler') {
|
|
72
|
+
// Filler cells occupy group-row space for flat/shallow columns.
|
|
73
|
+
// They have the header background but no interactive elements.
|
|
74
|
+
// data-col-id is stamped here so the group-drag CSS-transform path can
|
|
75
|
+
// apply --pg-drag-x offsets to the filler cell via the same [data-col-id]
|
|
76
|
+
// rule that shifts the corresponding leaf header and body cells.
|
|
77
|
+
const filler = createDiv('pg-th pg-th--depth-filler');
|
|
78
|
+
filler.setAttribute('data-filler-id', cell.id);
|
|
79
|
+
filler.setAttribute('data-col-id', cell.colId);
|
|
80
|
+
filler.style.left = `${cell.left}px`;
|
|
81
|
+
filler.style.width = `${cell.width}px`;
|
|
82
|
+
return filler;
|
|
83
|
+
}
|
|
84
|
+
return this.buildGroupCell(cell.node, cell.left, cell.width, options);
|
|
85
|
+
}
|
|
86
|
+
/**
|
|
87
|
+
* Build a single interactive group header cell.
|
|
88
|
+
*
|
|
89
|
+
* @param group - Display group node supplying all rendering data.
|
|
90
|
+
* @param left - Pixel left offset within the row.
|
|
91
|
+
* @param width - Pixel width of the cell.
|
|
92
|
+
* @param options - Interactive callbacks.
|
|
93
|
+
*/
|
|
94
|
+
buildGroupCell(group, left, width, options) {
|
|
95
|
+
const isCollapsed = group.collapsed;
|
|
96
|
+
const classes = ['pg-th', 'pg-th--group'];
|
|
97
|
+
if (isCollapsed)
|
|
98
|
+
classes.push('pg-th--group--collapsed');
|
|
99
|
+
if (group.headerCssClass) {
|
|
100
|
+
for (const cls of group.headerCssClass.split(' ')) {
|
|
101
|
+
if (cls.trim())
|
|
102
|
+
classes.push(cls.trim());
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
const th = createDiv(classes.join(' '));
|
|
106
|
+
th.setAttribute('role', 'columnheader');
|
|
107
|
+
th.setAttribute('data-group-id', group.logicalGroupId);
|
|
108
|
+
th.setAttribute('data-instance-id', group.instanceId);
|
|
109
|
+
th.setAttribute('aria-expanded', String(!isCollapsed));
|
|
110
|
+
th.setAttribute('aria-label', group.header);
|
|
111
|
+
th.setAttribute('tabindex', '0');
|
|
112
|
+
th.style.left = `${left}px`;
|
|
113
|
+
th.style.width = `${width}px`;
|
|
114
|
+
if (group.headerRendererFn) {
|
|
115
|
+
// Custom renderer — receive a minimal LogicalGroupDef proxy
|
|
116
|
+
const proxy = {
|
|
117
|
+
id: group.logicalGroupId,
|
|
118
|
+
header: group.header,
|
|
119
|
+
parentId: null,
|
|
120
|
+
headerCssClass: group.headerCssClass,
|
|
121
|
+
resizable: group.resizable,
|
|
122
|
+
collapsedWidth: group.collapsedWidth,
|
|
123
|
+
headerRendererFn: group.headerRendererFn,
|
|
124
|
+
};
|
|
125
|
+
const rendered = group.headerRendererFn({ logicalGroup: proxy, collapsed: isCollapsed, api: null });
|
|
126
|
+
if (typeof rendered === 'string')
|
|
127
|
+
th.innerHTML = rendered;
|
|
128
|
+
else
|
|
129
|
+
th.appendChild(rendered);
|
|
130
|
+
}
|
|
131
|
+
else {
|
|
132
|
+
this.buildDefaultContent(th, group, isCollapsed);
|
|
133
|
+
}
|
|
134
|
+
// Resize handle — appears on hover; distributes width among all group leaves
|
|
135
|
+
if (group.resizable) {
|
|
136
|
+
const handle = createDiv('pg-th__resize-handle pg-th__resize-handle--group');
|
|
137
|
+
handle.setAttribute('aria-hidden', 'true');
|
|
138
|
+
handle.addEventListener('mousedown', (e) => {
|
|
139
|
+
e.stopPropagation();
|
|
140
|
+
e.preventDefault();
|
|
141
|
+
this.startGroupResize(e, group, width, options);
|
|
142
|
+
});
|
|
143
|
+
th.appendChild(handle);
|
|
144
|
+
}
|
|
145
|
+
// Mousedown: notify drag handler before threshold check
|
|
146
|
+
th.addEventListener('mousedown', (e) => {
|
|
147
|
+
if (e.target.closest('.pg-th__resize-handle'))
|
|
148
|
+
return;
|
|
149
|
+
options.onGroupHeaderMouseDown?.(e, group, th);
|
|
150
|
+
});
|
|
151
|
+
// Click: toggle collapse (suppressed when drag just finished)
|
|
152
|
+
th.addEventListener('click', (e) => {
|
|
153
|
+
if (e.target.closest('.pg-th__resize-handle'))
|
|
154
|
+
return;
|
|
155
|
+
if (options.didJustDragFn?.())
|
|
156
|
+
return;
|
|
157
|
+
options.onCollapseToggle?.(group.instanceId);
|
|
158
|
+
});
|
|
159
|
+
// Right-click: open the group context menu at cursor position.
|
|
160
|
+
th.addEventListener('contextmenu', (e) => {
|
|
161
|
+
e.preventDefault();
|
|
162
|
+
e.stopPropagation();
|
|
163
|
+
options.onGroupContextMenu?.(e, group, th);
|
|
164
|
+
});
|
|
165
|
+
// Keyboard: Enter/Space toggles; Arrow keys expand/collapse directionally
|
|
166
|
+
th.addEventListener('keydown', (e) => {
|
|
167
|
+
if (e.key === 'Enter' || e.key === ' ') {
|
|
168
|
+
e.preventDefault();
|
|
169
|
+
options.onCollapseToggle?.(group.instanceId);
|
|
170
|
+
}
|
|
171
|
+
else if (e.key === 'ArrowLeft' && !isCollapsed) {
|
|
172
|
+
e.preventDefault();
|
|
173
|
+
options.onCollapseToggle?.(group.instanceId);
|
|
174
|
+
}
|
|
175
|
+
else if (e.key === 'ArrowRight' && isCollapsed) {
|
|
176
|
+
e.preventDefault();
|
|
177
|
+
options.onCollapseToggle?.(group.instanceId);
|
|
178
|
+
}
|
|
179
|
+
});
|
|
180
|
+
return th;
|
|
181
|
+
}
|
|
182
|
+
buildDefaultContent(th, group, isCollapsed) {
|
|
183
|
+
const content = createDiv('pg-th__content');
|
|
184
|
+
const labelEl = createDiv('pg-th__label');
|
|
185
|
+
labelEl.textContent = group.header;
|
|
186
|
+
labelEl.title = group.header;
|
|
187
|
+
content.appendChild(labelEl);
|
|
188
|
+
th.appendChild(content);
|
|
189
|
+
const btn = createDiv('pg-th__collapse-btn');
|
|
190
|
+
btn.setAttribute('tabindex', '-1');
|
|
191
|
+
btn.setAttribute('aria-label', isCollapsed ? `Expand ${group.header}` : `Collapse ${group.header}`);
|
|
192
|
+
btn.innerHTML = this.iconRenderer.renderToString(isCollapsed ? 'chevronRight' : 'chevronLeft', 12);
|
|
193
|
+
th.appendChild(btn);
|
|
194
|
+
}
|
|
195
|
+
/**
|
|
196
|
+
* Start a group-header resize drag.
|
|
197
|
+
* Computes the new width on each mousemove and fires `onGroupResize`.
|
|
198
|
+
*
|
|
199
|
+
* @param e - Initiating mousedown event.
|
|
200
|
+
* @param group - The group being resized.
|
|
201
|
+
* @param startWidth - Pixel width at drag start.
|
|
202
|
+
* @param options - Contains the `onGroupResize` callback.
|
|
203
|
+
*/
|
|
204
|
+
startGroupResize(e, group, startWidth, options) {
|
|
205
|
+
const startX = e.clientX;
|
|
206
|
+
document.body.style.cursor = 'col-resize';
|
|
207
|
+
document.body.style.userSelect = 'none';
|
|
208
|
+
const onMove = (ev) => {
|
|
209
|
+
const newW = Math.max(group.collapsedWidth, startWidth + ev.clientX - startX);
|
|
210
|
+
options.onGroupResize?.(group.instanceId, newW);
|
|
211
|
+
};
|
|
212
|
+
const onUp = (ev) => {
|
|
213
|
+
const newW = Math.max(group.collapsedWidth, startWidth + ev.clientX - startX);
|
|
214
|
+
options.onGroupResize?.(group.instanceId, newW);
|
|
215
|
+
document.body.style.cursor = '';
|
|
216
|
+
document.body.style.userSelect = '';
|
|
217
|
+
document.removeEventListener('mousemove', onMove);
|
|
218
|
+
document.removeEventListener('mouseup', onUp);
|
|
219
|
+
};
|
|
220
|
+
document.addEventListener('mousemove', onMove);
|
|
221
|
+
document.addEventListener('mouseup', onUp);
|
|
222
|
+
}
|
|
223
|
+
}
|
|
224
|
+
//# sourceMappingURL=display-group-header-builder.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"display-group-header-builder.js","sourceRoot":"","sources":["../../src/column-groups/display-group-header-builder.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,140 @@
|
|
|
1
|
+
import type { ColumnDef } from '../types/column.types';
|
|
2
|
+
/**
|
|
3
|
+
* Immutable definition of a logical column group.
|
|
4
|
+
* Parsed once from the user-supplied ColumnDef hierarchy and never modified.
|
|
5
|
+
*/
|
|
6
|
+
export interface LogicalGroupDef {
|
|
7
|
+
/** Unique identifier — defaults to the originating ColumnDef.colId. */
|
|
8
|
+
readonly id: string;
|
|
9
|
+
/** Display label for the group header cell. */
|
|
10
|
+
readonly header: string;
|
|
11
|
+
/** Parent logical group ID; `null` for root groups. */
|
|
12
|
+
readonly parentId: string | null;
|
|
13
|
+
/** Optional CSS class applied to every display instance of this group. */
|
|
14
|
+
readonly headerCssClass?: string;
|
|
15
|
+
/** Whether the group header shows a resize handle. @default true */
|
|
16
|
+
readonly resizable?: boolean;
|
|
17
|
+
/** Minimum pixel width when the group is in the collapsed-peek state. @default 36 */
|
|
18
|
+
readonly collapsedWidth?: number;
|
|
19
|
+
/** When `true`, child columns cannot be individually reordered. @default false */
|
|
20
|
+
readonly marryChildren?: boolean;
|
|
21
|
+
/** Custom renderer for the group header cell. */
|
|
22
|
+
readonly headerRendererFn?: (p: GroupHeaderRendererParams) => string | HTMLElement;
|
|
23
|
+
}
|
|
24
|
+
/** Parameters passed to a custom group header renderer function. */
|
|
25
|
+
export interface GroupHeaderRendererParams {
|
|
26
|
+
readonly logicalGroup: LogicalGroupDef;
|
|
27
|
+
readonly collapsed: boolean;
|
|
28
|
+
readonly api: null;
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* A single rendered display instance of a logical group.
|
|
32
|
+
*
|
|
33
|
+
* The same logical group can produce **multiple display instances** when its
|
|
34
|
+
* columns are interleaved with columns from other groups in the current
|
|
35
|
+
* displayed order.
|
|
36
|
+
*
|
|
37
|
+
* @example
|
|
38
|
+
* ```
|
|
39
|
+
* ColumnDef: Personal[Name, Email]
|
|
40
|
+
* Displayed: [Name, Country, Email]
|
|
41
|
+
* → two display instances: Personal[Name] and Personal[Email]
|
|
42
|
+
* ```
|
|
43
|
+
*/
|
|
44
|
+
export interface DisplayGroupNode {
|
|
45
|
+
readonly kind: 'group';
|
|
46
|
+
/** Unique per render cycle — must not be persisted across rebuilds. */
|
|
47
|
+
readonly instanceId: string;
|
|
48
|
+
/** References the immutable logical group. */
|
|
49
|
+
readonly logicalGroupId: string;
|
|
50
|
+
readonly header: string;
|
|
51
|
+
/** Zero-based depth: 0 = topmost group row, 1 = nested group row, etc. */
|
|
52
|
+
readonly depth: number;
|
|
53
|
+
/** Ordered child display nodes — groups and/or leaves. */
|
|
54
|
+
readonly children: ReadonlyArray<DisplayNode>;
|
|
55
|
+
/** Left offset in pixels from the panel's scroll origin. */
|
|
56
|
+
left: number;
|
|
57
|
+
/** Sum of visible children widths in pixels. */
|
|
58
|
+
width: number;
|
|
59
|
+
/** `true` when this instance's logical group is in the collapsed-peek state. */
|
|
60
|
+
collapsed: boolean;
|
|
61
|
+
readonly resizable: boolean;
|
|
62
|
+
readonly collapsedWidth: number;
|
|
63
|
+
readonly headerCssClass?: string;
|
|
64
|
+
readonly headerRendererFn?: LogicalGroupDef['headerRendererFn'];
|
|
65
|
+
}
|
|
66
|
+
/** A single rendered leaf column node in the display tree. */
|
|
67
|
+
export interface DisplayLeafNode {
|
|
68
|
+
readonly kind: 'leaf';
|
|
69
|
+
readonly colDef: ColumnDef;
|
|
70
|
+
/** Logical group ID path root-first. Empty array for ungrouped flat columns. */
|
|
71
|
+
readonly groupPath: ReadonlyArray<string>;
|
|
72
|
+
left: number;
|
|
73
|
+
width: number;
|
|
74
|
+
}
|
|
75
|
+
/** Union of all display tree node types. */
|
|
76
|
+
export type DisplayNode = DisplayGroupNode | DisplayLeafNode;
|
|
77
|
+
/** A rendered group header cell — one display group node in a header row. */
|
|
78
|
+
export interface RenderedGroupCell {
|
|
79
|
+
readonly kind: 'group';
|
|
80
|
+
readonly node: DisplayGroupNode;
|
|
81
|
+
readonly left: number;
|
|
82
|
+
readonly width: number;
|
|
83
|
+
readonly depth: number;
|
|
84
|
+
}
|
|
85
|
+
/**
|
|
86
|
+
* A transparent filler cell that occupies group-row space for a column that
|
|
87
|
+
* has no ancestor group at this depth.
|
|
88
|
+
*
|
|
89
|
+
* Styled to match the header background so the column visually spans the
|
|
90
|
+
* full header height — creating a seamless tall-cell appearance.
|
|
91
|
+
*/
|
|
92
|
+
export interface RenderedFillerCell {
|
|
93
|
+
readonly kind: 'filler';
|
|
94
|
+
/** Unique ID used for keying DOM comparisons. */
|
|
95
|
+
readonly id: string;
|
|
96
|
+
/**
|
|
97
|
+
* The leaf column ID this filler represents.
|
|
98
|
+
* Stamped onto the DOM element as `data-col-id` so that the group-drag
|
|
99
|
+
* CSS-transform path can apply `--pg-drag-x` offsets to both the filler
|
|
100
|
+
* cell (in the group row) and the leaf header / body cell in a single rule.
|
|
101
|
+
*/
|
|
102
|
+
readonly colId: string;
|
|
103
|
+
readonly left: number;
|
|
104
|
+
readonly width: number;
|
|
105
|
+
readonly depth: number;
|
|
106
|
+
}
|
|
107
|
+
/** Union of cell types in a rendered header row. */
|
|
108
|
+
export type RenderedHeaderCell = RenderedGroupCell | RenderedFillerCell;
|
|
109
|
+
/** One horizontal rendered header row at a specific depth level. */
|
|
110
|
+
export interface RenderedHeaderRow {
|
|
111
|
+
readonly depth: number;
|
|
112
|
+
readonly cells: ReadonlyArray<RenderedHeaderCell>;
|
|
113
|
+
}
|
|
114
|
+
/**
|
|
115
|
+
* The complete display header tree produced by `DisplayGroupBuilder`.
|
|
116
|
+
* Consumed by `DisplayGroupHeaderBuilder` to produce DOM elements.
|
|
117
|
+
*/
|
|
118
|
+
export interface DisplayHeaderTree {
|
|
119
|
+
/** Root-level display nodes — depth-0 groups and ungrouped flat leaves. */
|
|
120
|
+
readonly roots: ReadonlyArray<DisplayNode>;
|
|
121
|
+
/**
|
|
122
|
+
* Number of group header rows above the leaf row.
|
|
123
|
+
* - `0` — no groups; header has only the leaf row.
|
|
124
|
+
* - `N` — N group rows at depths 0..N-1, plus the leaf row below them.
|
|
125
|
+
*/
|
|
126
|
+
readonly maxGroupDepth: number;
|
|
127
|
+
/**
|
|
128
|
+
* Flattened group rows — one per depth level `0..maxGroupDepth-1`.
|
|
129
|
+
* Each row contains group cells and filler cells sorted by `left`.
|
|
130
|
+
*/
|
|
131
|
+
readonly groupRows: ReadonlyArray<RenderedHeaderRow>;
|
|
132
|
+
/** Total pixel width of all visible leaf columns. */
|
|
133
|
+
readonly totalWidth: number;
|
|
134
|
+
}
|
|
135
|
+
/** Serializable collapse state for one logical group. */
|
|
136
|
+
export interface GroupCollapseState {
|
|
137
|
+
logicalGroupId: string;
|
|
138
|
+
collapsed: boolean;
|
|
139
|
+
}
|
|
140
|
+
//# sourceMappingURL=display-group.types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"display-group.types.d.ts","sourceRoot":"","sources":["../../src/column-groups/display-group.types.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"display-group.types.js","sourceRoot":"","sources":["../../src/column-groups/display-group.types.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @module column-groups
|
|
3
|
+
*
|
|
4
|
+
* Public API surface for the Photon Grid column-group system.
|
|
5
|
+
*
|
|
6
|
+
* ```ts
|
|
7
|
+
* import {
|
|
8
|
+
* ColumnGroupModel,
|
|
9
|
+
* ColumnGroupHeaderBuilder,
|
|
10
|
+
* ColumnGroupStateManager,
|
|
11
|
+
* ColumnGroupNodeType,
|
|
12
|
+
* ColumnGroupResizeStrategy,
|
|
13
|
+
* } from 'photon-grid/column-groups';
|
|
14
|
+
* ```
|
|
15
|
+
*/
|
|
16
|
+
export type { IColumnGroupNode, IColumnLeafNode, ColumnTreeNode, HeaderGroupCell, HeaderGroupRow, HeaderGroupLayoutOptions, GroupHeaderRendererParams, ColumnGroupSerialState, ColumnGroupSystemState, ColumnGroupHeaderCollapsedEvent, ColumnGroupHeaderExpandedEvent, ColumnGroupHeaderCreatedEvent, ColumnGroupHeaderRemovedEvent, } from './column-group.types';
|
|
17
|
+
export { ColumnGroupNodeType, ColumnGroupResizeStrategy } from './column-group.types';
|
|
18
|
+
export { ColumnGroupModel } from './column-group-model';
|
|
19
|
+
export { ColumnGroupHeaderBuilder } from './column-group-header-builder';
|
|
20
|
+
export type { GroupCellBuildOptions } from './column-group-header-builder';
|
|
21
|
+
export { ColumnGroupDragHandler } from './column-group-drag-handler';
|
|
22
|
+
export type { GroupDropPosition, GroupDropTarget } from './column-group-drag-handler';
|
|
23
|
+
export { ColumnGroupStateManager } from './column-group-state-manager';
|
|
24
|
+
export type { ColumnGroupStateDiff } from './column-group-state-manager';
|
|
25
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/column-groups/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAGH,YAAY,EACV,gBAAgB,EAChB,eAAe,EACf,cAAc,EACd,eAAe,EACf,cAAc,EACd,wBAAwB,EACxB,yBAAyB,EACzB,sBAAsB,EACtB,sBAAsB,EACtB,+BAA+B,EAC/B,8BAA8B,EAC9B,6BAA6B,EAC7B,6BAA6B,GAC9B,MAAM,sBAAsB,CAAC;AAG9B,OAAO,EAAE,mBAAmB,EAAE,yBAAyB,EAAE,MAAM,sBAAsB,CAAC;AAGtF,OAAO,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAGxD,OAAO,EAAE,wBAAwB,EAAE,MAAM,+BAA+B,CAAC;AACzE,YAAY,EAAE,qBAAqB,EAAE,MAAM,+BAA+B,CAAC;AAG3E,OAAO,EAAE,sBAAsB,EAAE,MAAM,6BAA6B,CAAC;AACrE,YAAY,EAAE,iBAAiB,EAAE,eAAe,EAAE,MAAM,6BAA6B,CAAC;AAGtF,OAAO,EAAE,uBAAuB,EAAE,MAAM,8BAA8B,CAAC;AACvE,YAAY,EAAE,oBAAoB,EAAE,MAAM,8BAA8B,CAAC"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @module column-groups
|
|
3
|
+
*
|
|
4
|
+
* Public API surface for the Photon Grid column-group system.
|
|
5
|
+
*
|
|
6
|
+
* ```ts
|
|
7
|
+
* import {
|
|
8
|
+
* ColumnGroupModel,
|
|
9
|
+
* ColumnGroupHeaderBuilder,
|
|
10
|
+
* ColumnGroupStateManager,
|
|
11
|
+
* ColumnGroupNodeType,
|
|
12
|
+
* ColumnGroupResizeStrategy,
|
|
13
|
+
* } from 'photon-grid/column-groups';
|
|
14
|
+
* ```
|
|
15
|
+
*/
|
|
16
|
+
// ── Enums ────────────────────────────────────────────────────────────────────
|
|
17
|
+
export { ColumnGroupResizeStrategy } from './column-group.types';
|
|
18
|
+
// ── Model ────────────────────────────────────────────────────────────────────
|
|
19
|
+
export { ColumnGroupModel } from './column-group-model';
|
|
20
|
+
// ── Header builder ───────────────────────────────────────────────────────────
|
|
21
|
+
export { ColumnGroupHeaderBuilder } from './column-group-header-builder';
|
|
22
|
+
// ── Drag handler ─────────────────────────────────────────────────────────────
|
|
23
|
+
export { ColumnGroupDragHandler } from './column-group-drag-handler';
|
|
24
|
+
// ── State manager ────────────────────────────────────────────────────────────
|
|
25
|
+
export { ColumnGroupStateManager } from './column-group-state-manager';
|
|
26
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/column-groups/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAmBH,gFAAgF;AAChF,OAAO,EAAuB,yBAAyB,EAAE,MAAM,sBAAsB,CAAC;AAEtF,gFAAgF;AAChF,OAAO,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAExD,gFAAgF;AAChF,OAAO,EAAE,wBAAwB,EAAE,MAAM,+BAA+B,CAAC;AAGzE,gFAAgF;AAChF,OAAO,EAAE,sBAAsB,EAAE,MAAM,6BAA6B,CAAC;AAGrE,gFAAgF;AAChF,OAAO,EAAE,uBAAuB,EAAE,MAAM,8BAA8B,CAAC"}
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
import type { ColumnDef } from '../types/column.types';
|
|
2
|
+
import type { LogicalGroupDef } from './display-group.types';
|
|
3
|
+
/**
|
|
4
|
+
* Parses the user-supplied ColumnDef[] hierarchy **once** and builds an
|
|
5
|
+
* immutable registry of logical groups plus a column-path map.
|
|
6
|
+
*
|
|
7
|
+
* This is the "Original Column Tree" in the Display Group Builder architecture.
|
|
8
|
+
* After `parse()` the registry is effectively frozen — the original column
|
|
9
|
+
* tree is never mutated by drag, collapse, or any other operation.
|
|
10
|
+
*
|
|
11
|
+
* @example
|
|
12
|
+
* ```ts
|
|
13
|
+
* const registry = new LogicalGroupRegistry();
|
|
14
|
+
* registry.parse(options.columns);
|
|
15
|
+
* // registry.getPath('name') → ['grp_personal']
|
|
16
|
+
* // registry.getGroup('grp_personal') → LogicalGroupDef
|
|
17
|
+
* ```
|
|
18
|
+
*/
|
|
19
|
+
export declare class LogicalGroupRegistry {
|
|
20
|
+
/** Logical group ID → immutable group definition. */
|
|
21
|
+
private readonly _groups;
|
|
22
|
+
/**
|
|
23
|
+
* Leaf column ID → ordered list of ancestor logical group IDs (root → parent).
|
|
24
|
+
* Ungrouped (flat) columns are mapped to an empty array.
|
|
25
|
+
*/
|
|
26
|
+
private readonly _paths;
|
|
27
|
+
private _hasGroups;
|
|
28
|
+
/**
|
|
29
|
+
* Parse a ColumnDef[] hierarchy and populate the registry.
|
|
30
|
+
* Clears any previous state before re-parsing — safe to call multiple times.
|
|
31
|
+
*
|
|
32
|
+
* @param columns - Top-level column definitions, which may contain nested
|
|
33
|
+
* `.children` arrays representing column groups.
|
|
34
|
+
*/
|
|
35
|
+
parse(columns: ColumnDef[]): void;
|
|
36
|
+
/**
|
|
37
|
+
* `true` when any ColumnDef in the parsed hierarchy contained `.children`.
|
|
38
|
+
* Used to decide whether group header rows should be rendered.
|
|
39
|
+
*/
|
|
40
|
+
get hasGroups(): boolean;
|
|
41
|
+
/** Read-only map from logical group ID to its immutable definition. */
|
|
42
|
+
get groups(): ReadonlyMap<string, LogicalGroupDef>;
|
|
43
|
+
/** Read-only map from leaf `colId` to its group path. */
|
|
44
|
+
get paths(): ReadonlyMap<string, ReadonlyArray<string>>;
|
|
45
|
+
/**
|
|
46
|
+
* Returns the group path for a leaf column — an ordered list of ancestor
|
|
47
|
+
* logical group IDs from root to immediate parent.
|
|
48
|
+
* Returns an empty array for ungrouped (flat) columns.
|
|
49
|
+
*
|
|
50
|
+
* @param colId - Leaf column ID.
|
|
51
|
+
*/
|
|
52
|
+
getPath(colId: string): ReadonlyArray<string>;
|
|
53
|
+
/**
|
|
54
|
+
* Returns the `LogicalGroupDef` for the given group ID, or `undefined` if
|
|
55
|
+
* the ID is not registered (e.g., a leaf column ID was passed by mistake).
|
|
56
|
+
*
|
|
57
|
+
* @param groupId - Logical group ID (equals the originating ColumnDef.colId).
|
|
58
|
+
*/
|
|
59
|
+
getGroup(groupId: string): LogicalGroupDef | undefined;
|
|
60
|
+
/**
|
|
61
|
+
* Returns all leaf column IDs whose group path **includes** the given
|
|
62
|
+
* logical group ID at any depth.
|
|
63
|
+
*
|
|
64
|
+
* Used by the engine to collect all leaves of a group for drag/resize/collapse.
|
|
65
|
+
*
|
|
66
|
+
* @param logicalGroupId - Logical group ID to search for.
|
|
67
|
+
*/
|
|
68
|
+
getLeavesForGroup(logicalGroupId: string): ReadonlyArray<string>;
|
|
69
|
+
/**
|
|
70
|
+
* Depth-first walk through the ColumnDef hierarchy.
|
|
71
|
+
*
|
|
72
|
+
* @param cols - Column definitions at the current depth.
|
|
73
|
+
* @param ancestorPath - Ordered ancestor group IDs from root to current depth.
|
|
74
|
+
*/
|
|
75
|
+
private walk;
|
|
76
|
+
}
|
|
77
|
+
//# sourceMappingURL=logical-group-registry.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"logical-group-registry.d.ts","sourceRoot":"","sources":["../../src/column-groups/logical-group-registry.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAE7D;;;;;;;;;;;;;;;GAeG;AACH,qBAAa,oBAAoB;IAC/B,qDAAqD;IACrD,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAsC;IAE9D;;;OAGG;IACH,OAAO,CAAC,QAAQ,CAAC,MAAM,CAA4C;IAEnE,OAAO,CAAC,UAAU,CAAS;IAI3B;;;;;;OAMG;IACH,KAAK,CAAC,OAAO,EAAE,SAAS,EAAE,GAAG,IAAI;IAOjC;;;OAGG;IACH,IAAI,SAAS,IAAI,OAAO,CAA4B;IAEpD,uEAAuE;IACvE,IAAI,MAAM,IAAI,WAAW,CAAC,MAAM,EAAE,eAAe,CAAC,CAAyB;IAE3E,yDAAyD;IACzD,IAAI,KAAK,IAAI,WAAW,CAAC,MAAM,EAAE,aAAa,CAAC,MAAM,CAAC,CAAC,CAAwB;IAE/E;;;;;;OAMG;IACH,OAAO,CAAC,KAAK,EAAE,MAAM,GAAG,aAAa,CAAC,MAAM,CAAC;IAI7C;;;;;OAKG;IACH,QAAQ,CAAC,OAAO,EAAE,MAAM,GAAG,eAAe,GAAG,SAAS;IAItD;;;;;;;OAOG;IACH,iBAAiB,CAAC,cAAc,EAAE,MAAM,GAAG,aAAa,CAAC,MAAM,CAAC;IAUhE;;;;;OAKG;IACH,OAAO,CAAC,IAAI;CA2Bb"}
|
|
@@ -0,0 +1,118 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Parses the user-supplied ColumnDef[] hierarchy **once** and builds an
|
|
3
|
+
* immutable registry of logical groups plus a column-path map.
|
|
4
|
+
*
|
|
5
|
+
* This is the "Original Column Tree" in the Display Group Builder architecture.
|
|
6
|
+
* After `parse()` the registry is effectively frozen — the original column
|
|
7
|
+
* tree is never mutated by drag, collapse, or any other operation.
|
|
8
|
+
*
|
|
9
|
+
* @example
|
|
10
|
+
* ```ts
|
|
11
|
+
* const registry = new LogicalGroupRegistry();
|
|
12
|
+
* registry.parse(options.columns);
|
|
13
|
+
* // registry.getPath('name') → ['grp_personal']
|
|
14
|
+
* // registry.getGroup('grp_personal') → LogicalGroupDef
|
|
15
|
+
* ```
|
|
16
|
+
*/
|
|
17
|
+
export class LogicalGroupRegistry {
|
|
18
|
+
constructor() {
|
|
19
|
+
/** Logical group ID → immutable group definition. */
|
|
20
|
+
this._groups = new Map();
|
|
21
|
+
/**
|
|
22
|
+
* Leaf column ID → ordered list of ancestor logical group IDs (root → parent).
|
|
23
|
+
* Ungrouped (flat) columns are mapped to an empty array.
|
|
24
|
+
*/
|
|
25
|
+
this._paths = new Map();
|
|
26
|
+
this._hasGroups = false;
|
|
27
|
+
}
|
|
28
|
+
// ── Public API ────────────────────────────────────────────────────────────
|
|
29
|
+
/**
|
|
30
|
+
* Parse a ColumnDef[] hierarchy and populate the registry.
|
|
31
|
+
* Clears any previous state before re-parsing — safe to call multiple times.
|
|
32
|
+
*
|
|
33
|
+
* @param columns - Top-level column definitions, which may contain nested
|
|
34
|
+
* `.children` arrays representing column groups.
|
|
35
|
+
*/
|
|
36
|
+
parse(columns) {
|
|
37
|
+
this._groups.clear();
|
|
38
|
+
this._paths.clear();
|
|
39
|
+
this._hasGroups = false;
|
|
40
|
+
this.walk(columns, []);
|
|
41
|
+
}
|
|
42
|
+
/**
|
|
43
|
+
* `true` when any ColumnDef in the parsed hierarchy contained `.children`.
|
|
44
|
+
* Used to decide whether group header rows should be rendered.
|
|
45
|
+
*/
|
|
46
|
+
get hasGroups() { return this._hasGroups; }
|
|
47
|
+
/** Read-only map from logical group ID to its immutable definition. */
|
|
48
|
+
get groups() { return this._groups; }
|
|
49
|
+
/** Read-only map from leaf `colId` to its group path. */
|
|
50
|
+
get paths() { return this._paths; }
|
|
51
|
+
/**
|
|
52
|
+
* Returns the group path for a leaf column — an ordered list of ancestor
|
|
53
|
+
* logical group IDs from root to immediate parent.
|
|
54
|
+
* Returns an empty array for ungrouped (flat) columns.
|
|
55
|
+
*
|
|
56
|
+
* @param colId - Leaf column ID.
|
|
57
|
+
*/
|
|
58
|
+
getPath(colId) {
|
|
59
|
+
return this._paths.get(colId) ?? [];
|
|
60
|
+
}
|
|
61
|
+
/**
|
|
62
|
+
* Returns the `LogicalGroupDef` for the given group ID, or `undefined` if
|
|
63
|
+
* the ID is not registered (e.g., a leaf column ID was passed by mistake).
|
|
64
|
+
*
|
|
65
|
+
* @param groupId - Logical group ID (equals the originating ColumnDef.colId).
|
|
66
|
+
*/
|
|
67
|
+
getGroup(groupId) {
|
|
68
|
+
return this._groups.get(groupId);
|
|
69
|
+
}
|
|
70
|
+
/**
|
|
71
|
+
* Returns all leaf column IDs whose group path **includes** the given
|
|
72
|
+
* logical group ID at any depth.
|
|
73
|
+
*
|
|
74
|
+
* Used by the engine to collect all leaves of a group for drag/resize/collapse.
|
|
75
|
+
*
|
|
76
|
+
* @param logicalGroupId - Logical group ID to search for.
|
|
77
|
+
*/
|
|
78
|
+
getLeavesForGroup(logicalGroupId) {
|
|
79
|
+
const result = [];
|
|
80
|
+
for (const [colId, path] of this._paths) {
|
|
81
|
+
if (path.includes(logicalGroupId))
|
|
82
|
+
result.push(colId);
|
|
83
|
+
}
|
|
84
|
+
return result;
|
|
85
|
+
}
|
|
86
|
+
// ── Private ───────────────────────────────────────────────────────────────
|
|
87
|
+
/**
|
|
88
|
+
* Depth-first walk through the ColumnDef hierarchy.
|
|
89
|
+
*
|
|
90
|
+
* @param cols - Column definitions at the current depth.
|
|
91
|
+
* @param ancestorPath - Ordered ancestor group IDs from root to current depth.
|
|
92
|
+
*/
|
|
93
|
+
walk(cols, ancestorPath) {
|
|
94
|
+
for (const col of cols) {
|
|
95
|
+
const children = col.children;
|
|
96
|
+
if (Array.isArray(children) && children.length > 0) {
|
|
97
|
+
this._hasGroups = true;
|
|
98
|
+
const parentId = ancestorPath.length > 0 ? ancestorPath[ancestorPath.length - 1] : null;
|
|
99
|
+
this._groups.set(col.colId, {
|
|
100
|
+
id: col.colId,
|
|
101
|
+
header: col.header ?? '',
|
|
102
|
+
parentId,
|
|
103
|
+
headerCssClass: col.headerCssClass,
|
|
104
|
+
resizable: col.resizable,
|
|
105
|
+
collapsedWidth: col.collapsedWidth ?? 36,
|
|
106
|
+
marryChildren: col.marryChildren,
|
|
107
|
+
headerRendererFn: col.groupHeaderRendererFn,
|
|
108
|
+
});
|
|
109
|
+
this.walk(children, [...ancestorPath, col.colId]);
|
|
110
|
+
}
|
|
111
|
+
else {
|
|
112
|
+
// Leaf column — record its full group path
|
|
113
|
+
this._paths.set(col.colId, [...ancestorPath]);
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
//# sourceMappingURL=logical-group-registry.js.map
|