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,536 @@
|
|
|
1
|
+
import { createDiv } from '../renderer/dom-utils';
|
|
2
|
+
/**
|
|
3
|
+
* Handles atomic column-group drag and drop.
|
|
4
|
+
*
|
|
5
|
+
* ### Rules
|
|
6
|
+
* - Only **group header cells** (`.pg-th--group`) can be dragged.
|
|
7
|
+
* - Group children cannot escape their group during drag.
|
|
8
|
+
* - Drop targets are root-level positions only (before/after other groups or
|
|
9
|
+
* flat columns). Dropping inside another group is not supported.
|
|
10
|
+
* - Moving across panels changes the `pinned` property of all group leaves.
|
|
11
|
+
*
|
|
12
|
+
* ### Visual feedback — two modes
|
|
13
|
+
* **Live preview** (when `previewCallbacks` is provided):
|
|
14
|
+
* The column order is updated in the store on every slot change so the header
|
|
15
|
+
* re-renders in real time — identical to AG Grid behaviour. CSS transforms are
|
|
16
|
+
* not used; the rebuilt DOM IS the visual feedback.
|
|
17
|
+
*
|
|
18
|
+
* **CSS-transform** (legacy fallback):
|
|
19
|
+
* `translateX` rules are injected via a `<style>` tag to slide cells without
|
|
20
|
+
* touching the store. The final move is committed on mouseup.
|
|
21
|
+
*
|
|
22
|
+
* ### Drag activation threshold
|
|
23
|
+
* A drag is not activated until the pointer moves **5 px** — preventing
|
|
24
|
+
* accidental drags during collapse-toggle clicks.
|
|
25
|
+
*/
|
|
26
|
+
export class DisplayGroupDragHandler {
|
|
27
|
+
/**
|
|
28
|
+
* @param gridElGetter - Returns the root `.pg-grid` element (may be null before mount).
|
|
29
|
+
* @param onGroupMoved - Committed on mouseup; receives the final group position.
|
|
30
|
+
* @param previewCallbacks - When provided, switches to the live-rebuild path (store mutations
|
|
31
|
+
* on every slot change, same as AG Grid's live column reorder). When omitted, the handler
|
|
32
|
+
* uses CSS transforms instead — smoother and without flicker.
|
|
33
|
+
* @param leavesFor - Returns the leaf column IDs for a logical group. Used by the
|
|
34
|
+
* CSS-transform path so that leaf header cells AND body cells animate in sync with the
|
|
35
|
+
* group header when the drag slot changes.
|
|
36
|
+
*/
|
|
37
|
+
constructor(gridElGetter, onGroupMoved, previewCallbacks, leavesFor) {
|
|
38
|
+
this.gridElGetter = gridElGetter;
|
|
39
|
+
this.onGroupMoved = onGroupMoved;
|
|
40
|
+
this.previewCallbacks = previewCallbacks;
|
|
41
|
+
this.leavesFor = leavesFor;
|
|
42
|
+
this._didJustDrag = false;
|
|
43
|
+
this.isDragging = false;
|
|
44
|
+
this.dragGroupId = null;
|
|
45
|
+
this.sourcePanel = null;
|
|
46
|
+
this.ghostEl = null;
|
|
47
|
+
this.indicatorEl = null;
|
|
48
|
+
this.dragStyleEl = null;
|
|
49
|
+
this.capturedCells = [];
|
|
50
|
+
this.dragSourceIdx = -1;
|
|
51
|
+
/** Last slot key seen in live-preview mode — `"<panel>:<insertBeforeColId|end>"`. */
|
|
52
|
+
this.lastSlotKey = '';
|
|
53
|
+
this.startX = 0;
|
|
54
|
+
this.startY = 0;
|
|
55
|
+
this.removeMoveUp = null;
|
|
56
|
+
}
|
|
57
|
+
// ── Public ────────────────────────────────────────────────────────────────
|
|
58
|
+
/**
|
|
59
|
+
* Called from `DisplayGroupHeaderBuilder.onGroupHeaderMouseDown` for each
|
|
60
|
+
* newly built group header cell. Wires a threshold-based drag using the
|
|
61
|
+
* `mousedown` event already delivered by the builder.
|
|
62
|
+
*
|
|
63
|
+
* @param e - The `mousedown` event from the group header cell.
|
|
64
|
+
* @param node - The display group node this cell represents.
|
|
65
|
+
* @param el - The DOM element of the group header cell.
|
|
66
|
+
*/
|
|
67
|
+
onHeaderMouseDown(e, node, el) {
|
|
68
|
+
if (e.button !== 0)
|
|
69
|
+
return;
|
|
70
|
+
this.startX = e.clientX;
|
|
71
|
+
this.startY = e.clientY;
|
|
72
|
+
this.dragGroupId = node.logicalGroupId;
|
|
73
|
+
this._didJustDrag = false;
|
|
74
|
+
this.isDragging = false;
|
|
75
|
+
this.sourcePanel = this.detectPanelFromElement(el);
|
|
76
|
+
const onMove = (ev) => {
|
|
77
|
+
if (!this.isDragging) {
|
|
78
|
+
const dx = Math.abs(ev.clientX - this.startX);
|
|
79
|
+
const dy = Math.abs(ev.clientY - this.startY);
|
|
80
|
+
if (dx < 5 && dy < 5)
|
|
81
|
+
return;
|
|
82
|
+
this.isDragging = true;
|
|
83
|
+
this.activateDrag(ev, node);
|
|
84
|
+
}
|
|
85
|
+
if (this.isDragging)
|
|
86
|
+
this.onMouseMove(ev);
|
|
87
|
+
};
|
|
88
|
+
const onUp = (ev) => {
|
|
89
|
+
this.removeMoveUp?.();
|
|
90
|
+
this.removeMoveUp = null;
|
|
91
|
+
if (this.isDragging)
|
|
92
|
+
this.onMouseUp(ev);
|
|
93
|
+
this.isDragging = false;
|
|
94
|
+
};
|
|
95
|
+
document.addEventListener('mousemove', onMove);
|
|
96
|
+
document.addEventListener('mouseup', onUp);
|
|
97
|
+
this.removeMoveUp = () => {
|
|
98
|
+
document.removeEventListener('mousemove', onMove);
|
|
99
|
+
document.removeEventListener('mouseup', onUp);
|
|
100
|
+
};
|
|
101
|
+
}
|
|
102
|
+
/**
|
|
103
|
+
* `true` for ~200 ms after a drag completes.
|
|
104
|
+
* Used by the header builder to suppress the click event fired after mouseup.
|
|
105
|
+
*/
|
|
106
|
+
get didJustDrag() { return this._didJustDrag; }
|
|
107
|
+
/**
|
|
108
|
+
* `true` while a group header drag is currently in progress.
|
|
109
|
+
* Exposed so the store-watcher in `GridRenderer` can skip the full header
|
|
110
|
+
* destroy / rebuild cycle during live-preview group drag, preventing flicker.
|
|
111
|
+
*/
|
|
112
|
+
get isDraggingGroup() { return this.isDragging; }
|
|
113
|
+
/**
|
|
114
|
+
* Tear down all event listeners and remove any remaining drag DOM artifacts.
|
|
115
|
+
* Must be called when the grid is destroyed or when the header is rebuilt.
|
|
116
|
+
*/
|
|
117
|
+
destroy() {
|
|
118
|
+
this.removeMoveUp?.();
|
|
119
|
+
this.removeMoveUp = null;
|
|
120
|
+
this.cleanupDrag();
|
|
121
|
+
}
|
|
122
|
+
// ── Private: drag lifecycle ───────────────────────────────────────────────
|
|
123
|
+
/**
|
|
124
|
+
* Activate the drag once the movement threshold is exceeded.
|
|
125
|
+
* Creates the ghost chip, drop indicator, and style element.
|
|
126
|
+
*
|
|
127
|
+
* Adds `pg-grid--group-dragging` before live preview updates begin so the
|
|
128
|
+
* renderer can suppress normal transition effects while column order is being
|
|
129
|
+
* updated repeatedly under the pointer.
|
|
130
|
+
*/
|
|
131
|
+
activateDrag(e, node) {
|
|
132
|
+
const gridEl = this.gridElGetter();
|
|
133
|
+
if (!gridEl)
|
|
134
|
+
return;
|
|
135
|
+
gridEl.classList.add('pg-grid--group-dragging');
|
|
136
|
+
// Ghost chip — follows the cursor in both modes
|
|
137
|
+
this.ghostEl = createDiv('pg-col-drag-ghost');
|
|
138
|
+
this.ghostEl.textContent = node.header;
|
|
139
|
+
this.ghostEl.style.left = `${e.clientX + 12}px`;
|
|
140
|
+
this.ghostEl.style.top = `${e.clientY - 14}px`;
|
|
141
|
+
document.body.appendChild(this.ghostEl);
|
|
142
|
+
// Drop indicator (vertical line) — used in both modes
|
|
143
|
+
this.indicatorEl = createDiv('pg-group-drop-indicator');
|
|
144
|
+
document.body.appendChild(this.indicatorEl);
|
|
145
|
+
if (this.previewCallbacks) {
|
|
146
|
+
// Live-rebuild mode: no CSS transforms needed — tell engine to snapshot
|
|
147
|
+
this.lastSlotKey = '';
|
|
148
|
+
this.previewCallbacks.onPreviewStart();
|
|
149
|
+
}
|
|
150
|
+
else {
|
|
151
|
+
// CSS-transform mode: inject style element + capture cell rects
|
|
152
|
+
this.dragStyleEl = document.createElement('style');
|
|
153
|
+
this.dragStyleEl.setAttribute('data-pg-group-drag', '');
|
|
154
|
+
document.head.appendChild(this.dragStyleEl);
|
|
155
|
+
this.capturePanelCells(gridEl, this.sourcePanel);
|
|
156
|
+
this.dragSourceIdx = this.capturedCells.findIndex((c) => c.groupId === node.logicalGroupId);
|
|
157
|
+
if (this.dragSourceIdx === -1)
|
|
158
|
+
this.dragSourceIdx = 0;
|
|
159
|
+
}
|
|
160
|
+
}
|
|
161
|
+
onMouseMove(e) {
|
|
162
|
+
if (!this.ghostEl)
|
|
163
|
+
return;
|
|
164
|
+
this._didJustDrag = true;
|
|
165
|
+
// Track ghost chip
|
|
166
|
+
this.ghostEl.style.left = `${e.clientX + 12}px`;
|
|
167
|
+
this.ghostEl.style.top = `${e.clientY - 14}px`;
|
|
168
|
+
const gridEl = this.gridElGetter();
|
|
169
|
+
if (!gridEl)
|
|
170
|
+
return;
|
|
171
|
+
const targetPanel = this.detectPanelAtPoint(e.clientX, e.clientY, gridEl);
|
|
172
|
+
if (this.previewCallbacks) {
|
|
173
|
+
// ── Live-rebuild path ────────────────────────────────────────────────
|
|
174
|
+
// Read insert position from the current (possibly just-rebuilt) DOM.
|
|
175
|
+
const insertBeforeColId = this.findInsertBeforeColId(e, targetPanel, gridEl);
|
|
176
|
+
const slotKey = `${targetPanel ?? 'c'}:${insertBeforeColId ?? 'end'}`;
|
|
177
|
+
// Only trigger a store update + rebuild when the slot actually changes.
|
|
178
|
+
if (slotKey !== this.lastSlotKey) {
|
|
179
|
+
this.lastSlotKey = slotKey;
|
|
180
|
+
this.previewCallbacks.onPreviewMove(this.dragGroupId, this.sourcePanel, targetPanel, insertBeforeColId);
|
|
181
|
+
}
|
|
182
|
+
// Position indicator using the live DOM (reads rebuilt cells directly).
|
|
183
|
+
this.updateIndicatorFromColId(insertBeforeColId, targetPanel, gridEl);
|
|
184
|
+
}
|
|
185
|
+
else {
|
|
186
|
+
// ── CSS-transform path (legacy) ──────────────────────────────────────
|
|
187
|
+
// Re-capture when the cursor moves to a different panel.
|
|
188
|
+
if (targetPanel !== this.sourcePanel) {
|
|
189
|
+
this.capturePanelCells(gridEl, targetPanel);
|
|
190
|
+
this.dragSourceIdx = -1;
|
|
191
|
+
}
|
|
192
|
+
const effectiveIdx = this.findEffectiveSlot(e.clientX);
|
|
193
|
+
this.applyTransforms(effectiveIdx, gridEl);
|
|
194
|
+
this.updateIndicator(effectiveIdx);
|
|
195
|
+
}
|
|
196
|
+
}
|
|
197
|
+
onMouseUp(e) {
|
|
198
|
+
if (this.previewCallbacks) {
|
|
199
|
+
// Live-rebuild path: the store already reflects the final column order from
|
|
200
|
+
// the last onPreviewMove call. Just confirm (clear snapshot) and clean up.
|
|
201
|
+
this.previewCallbacks.onPreviewConfirm();
|
|
202
|
+
this.cleanupDrag();
|
|
203
|
+
this._didJustDrag = true;
|
|
204
|
+
setTimeout(() => { this._didJustDrag = false; }, 200);
|
|
205
|
+
return;
|
|
206
|
+
}
|
|
207
|
+
// CSS-transform path: commit the final move now.
|
|
208
|
+
const gridEl = this.gridElGetter();
|
|
209
|
+
if (!gridEl || !this.dragGroupId) {
|
|
210
|
+
this.cleanupDrag();
|
|
211
|
+
return;
|
|
212
|
+
}
|
|
213
|
+
const targetPanel = this.detectPanelAtPoint(e.clientX, e.clientY, gridEl);
|
|
214
|
+
const insertBeforeColId = this.findInsertBeforeColId(e, targetPanel, gridEl);
|
|
215
|
+
const srcPanel = this.sourcePanel;
|
|
216
|
+
const groupId = this.dragGroupId;
|
|
217
|
+
this.cleanupDrag();
|
|
218
|
+
this.onGroupMoved(groupId, srcPanel, targetPanel, insertBeforeColId);
|
|
219
|
+
// Suppress residual click
|
|
220
|
+
this._didJustDrag = true;
|
|
221
|
+
setTimeout(() => { this._didJustDrag = false; }, 200);
|
|
222
|
+
}
|
|
223
|
+
// ── Private: drop target ─────────────────────────────────────────────────
|
|
224
|
+
/**
|
|
225
|
+
* Find the leaf column ID that the group should be inserted before.
|
|
226
|
+
* Inspects the leaf header row in the target panel, finding the first cell
|
|
227
|
+
* whose horizontal midpoint is to the right of the cursor.
|
|
228
|
+
*
|
|
229
|
+
* @param e - Current cursor position.
|
|
230
|
+
* @param targetPanel - Panel the drop is over.
|
|
231
|
+
* @param gridEl - Root `.pg-grid` element.
|
|
232
|
+
*/
|
|
233
|
+
findInsertBeforeColId(e, targetPanel, gridEl) {
|
|
234
|
+
const panelEl = this.getPanelEl(targetPanel, gridEl);
|
|
235
|
+
if (!panelEl)
|
|
236
|
+
return null;
|
|
237
|
+
const leafRow = panelEl.querySelector('.pg-header-row');
|
|
238
|
+
if (!leafRow)
|
|
239
|
+
return null;
|
|
240
|
+
const cells = Array.from(leafRow.querySelectorAll('.pg-th[data-col-id]'));
|
|
241
|
+
for (const cell of cells) {
|
|
242
|
+
const rect = cell.getBoundingClientRect();
|
|
243
|
+
if (e.clientX < rect.left + rect.width / 2) {
|
|
244
|
+
return cell.getAttribute('data-col-id');
|
|
245
|
+
}
|
|
246
|
+
}
|
|
247
|
+
return null;
|
|
248
|
+
}
|
|
249
|
+
// ── Private: live transforms ──────────────────────────────────────────────
|
|
250
|
+
/**
|
|
251
|
+
* Capture all root-level drag slots from the depth-0 group header row.
|
|
252
|
+
*
|
|
253
|
+
* Slots include both:
|
|
254
|
+
* - **Group cells** (`.pg-th--group`): represent a whole logical group.
|
|
255
|
+
* - **Flat-column filler cells** (`.pg-th--depth-filler`): represent a single
|
|
256
|
+
* ungrouped column sitting between/around groups. Including these as slots
|
|
257
|
+
* lets the drag handler detect when the cursor crosses a flat-column boundary
|
|
258
|
+
* and animate the flat column (header + body cells) out of the way in real
|
|
259
|
+
* time — matching AG Grid's behaviour for mixed grouped/flat layouts.
|
|
260
|
+
*
|
|
261
|
+
* Cells are sorted by their `style.left` value because absolutely-positioned
|
|
262
|
+
* elements may appear in arbitrary DOM insertion order.
|
|
263
|
+
*
|
|
264
|
+
* Falls back to the leaf header row when no group rows exist (rare — only when
|
|
265
|
+
* the grid transitions from grouped to flat while a drag is in progress).
|
|
266
|
+
*
|
|
267
|
+
* @param gridEl - Root `.pg-grid` element.
|
|
268
|
+
* @param panel - Panel to inspect.
|
|
269
|
+
*/
|
|
270
|
+
capturePanelCells(gridEl, panel) {
|
|
271
|
+
this.capturedCells = [];
|
|
272
|
+
const panelEl = this.getPanelEl(panel, gridEl);
|
|
273
|
+
if (!panelEl)
|
|
274
|
+
return;
|
|
275
|
+
// Preferred: depth-0 group header row — capture group cells AND flat-column
|
|
276
|
+
// filler cells so that every root-level slot is a drag obstacle.
|
|
277
|
+
const depth0Row = panelEl.querySelector('.pg-header-group-row--depth-0');
|
|
278
|
+
if (depth0Row) {
|
|
279
|
+
const slots = Array.from(depth0Row.querySelectorAll('.pg-th--group, .pg-th--depth-filler'));
|
|
280
|
+
// Absolute positioning may put elements out of DOM order — sort by left.
|
|
281
|
+
slots.sort((a, b) => parseFloat(a.style.left || '0') - parseFloat(b.style.left || '0'));
|
|
282
|
+
for (const el of slots) {
|
|
283
|
+
this.capturedCells.push({
|
|
284
|
+
el,
|
|
285
|
+
rect: el.getBoundingClientRect(),
|
|
286
|
+
groupId: el.getAttribute('data-group-id') ?? '',
|
|
287
|
+
colId: el.getAttribute('data-col-id') ?? '',
|
|
288
|
+
});
|
|
289
|
+
}
|
|
290
|
+
if (this.capturedCells.length > 0)
|
|
291
|
+
return;
|
|
292
|
+
}
|
|
293
|
+
// Fallback: leaf header row (no group rows present).
|
|
294
|
+
const leafRow = panelEl.querySelector('.pg-header-row');
|
|
295
|
+
if (leafRow) {
|
|
296
|
+
const cells = Array.from(leafRow.querySelectorAll('.pg-th[data-col-id]'));
|
|
297
|
+
for (const el of cells) {
|
|
298
|
+
this.capturedCells.push({
|
|
299
|
+
el,
|
|
300
|
+
rect: el.getBoundingClientRect(),
|
|
301
|
+
groupId: '',
|
|
302
|
+
colId: el.getAttribute('data-col-id') ?? '',
|
|
303
|
+
});
|
|
304
|
+
}
|
|
305
|
+
}
|
|
306
|
+
}
|
|
307
|
+
/**
|
|
308
|
+
* Find the effective drop-slot index from the current cursor x position.
|
|
309
|
+
* Returns `capturedCells.length` to indicate "append at end".
|
|
310
|
+
*
|
|
311
|
+
* @param cursorX - Cursor x position in client coordinates.
|
|
312
|
+
*/
|
|
313
|
+
findEffectiveSlot(cursorX) {
|
|
314
|
+
for (let i = 0; i < this.capturedCells.length; i++) {
|
|
315
|
+
const { rect } = this.capturedCells[i];
|
|
316
|
+
if (cursorX < rect.left + rect.width / 2)
|
|
317
|
+
return i;
|
|
318
|
+
}
|
|
319
|
+
return this.capturedCells.length;
|
|
320
|
+
}
|
|
321
|
+
/**
|
|
322
|
+
* Apply `--pg-drag-x` and `--pg-drag-transition` rules via the injected `<style>`
|
|
323
|
+
* element to give a live preview of where the dragged group will land.
|
|
324
|
+
*
|
|
325
|
+
* - The **dragged group** and all of its leaf columns snap instantly
|
|
326
|
+
* (`--pg-drag-transition: 0ms`) so they track the slot-change in a single frame.
|
|
327
|
+
* - **Displaced groups** and their leaf columns animate smoothly with the default
|
|
328
|
+
* transition duration (180 ms) — matching AG Grid's animated reorder behaviour.
|
|
329
|
+
* - Body cells (`pg-cell[data-col-id]`) receive the same offset as their header
|
|
330
|
+
* counterpart, so the data rows shift in perfect sync with the header.
|
|
331
|
+
*
|
|
332
|
+
* Using the `--pg-drag-transition` CSS variable avoids specificity conflicts:
|
|
333
|
+
* the base CSS in `base-styles.ts` reads the variable and provides the default,
|
|
334
|
+
* while the per-cell override only needs to set the variable.
|
|
335
|
+
*
|
|
336
|
+
* @param effectiveIdx - Drop-slot index from {@link findEffectiveSlot}.
|
|
337
|
+
* @param gridEl - Root `.pg-grid` element (used to scope CSS selectors).
|
|
338
|
+
*/
|
|
339
|
+
applyTransforms(effectiveIdx, gridEl) {
|
|
340
|
+
if (!this.dragStyleEl || this.capturedCells.length === 0)
|
|
341
|
+
return;
|
|
342
|
+
const src = this.dragSourceIdx;
|
|
343
|
+
// No visual shift needed when the drag returns to its original position.
|
|
344
|
+
if (src === -1 || effectiveIdx === src || effectiveIdx === src + 1) {
|
|
345
|
+
this.dragStyleEl.textContent = '';
|
|
346
|
+
return;
|
|
347
|
+
}
|
|
348
|
+
const gridId = gridEl.getAttribute('data-photon-grid-id') ?? '';
|
|
349
|
+
// Combined selector: grid element must have BOTH the data-attribute AND the class.
|
|
350
|
+
// Specificity 0,3,0 — wins over the 0,2,0 base rules for non-dragged cells.
|
|
351
|
+
const ds = gridId
|
|
352
|
+
? `[data-photon-grid-id="${gridId}"].pg-grid--group-dragging `
|
|
353
|
+
: '.pg-grid--group-dragging ';
|
|
354
|
+
const draggedCell = this.capturedCells[src];
|
|
355
|
+
const draggedWidth = draggedCell?.rect.width ?? 0;
|
|
356
|
+
const dragGroupId = this.dragGroupId ?? '';
|
|
357
|
+
// Where the dragged cell should visually move to.
|
|
358
|
+
const targetCell = effectiveIdx < this.capturedCells.length
|
|
359
|
+
? this.capturedCells[effectiveIdx]
|
|
360
|
+
: this.capturedCells[this.capturedCells.length - 1];
|
|
361
|
+
const srcOffset = effectiveIdx > src
|
|
362
|
+
? targetCell.rect.right - draggedCell.rect.right
|
|
363
|
+
: targetCell.rect.left - draggedCell.rect.left;
|
|
364
|
+
// Dragged group header: snap instantly, elevate above neighbours.
|
|
365
|
+
let css = `${ds}[data-group-id="${dragGroupId}"] { --pg-drag-x: ${srcOffset}px; --pg-drag-transition: 0ms; z-index: 10; position: relative; }\n`;
|
|
366
|
+
// Dragged group leaf columns (header + body cells): also snap instantly.
|
|
367
|
+
if (this.leavesFor) {
|
|
368
|
+
for (const colId of this.leavesFor(dragGroupId)) {
|
|
369
|
+
css += `${ds}[data-col-id="${colId}"] { --pg-drag-x: ${srcOffset}px; --pg-drag-transition: 0ms; }\n`;
|
|
370
|
+
}
|
|
371
|
+
}
|
|
372
|
+
// Displaced groups and their leaves: animate smoothly (default --pg-drag-transition).
|
|
373
|
+
for (let i = 0; i < this.capturedCells.length; i++) {
|
|
374
|
+
if (i === src)
|
|
375
|
+
continue;
|
|
376
|
+
const cell = this.capturedCells[i];
|
|
377
|
+
const cellId = cell.groupId || cell.colId;
|
|
378
|
+
let offset = 0;
|
|
379
|
+
if (effectiveIdx > src && i > src && i < effectiveIdx) {
|
|
380
|
+
offset = -draggedWidth;
|
|
381
|
+
}
|
|
382
|
+
else if (effectiveIdx <= src && i >= effectiveIdx && i < src) {
|
|
383
|
+
offset = draggedWidth;
|
|
384
|
+
}
|
|
385
|
+
if (offset === 0 || !cellId)
|
|
386
|
+
continue;
|
|
387
|
+
css += cell.groupId
|
|
388
|
+
? `${ds}[data-group-id="${cellId}"] { --pg-drag-x: ${offset}px; }\n`
|
|
389
|
+
: `${ds}[data-col-id="${cellId}"] { --pg-drag-x: ${offset}px; }\n`;
|
|
390
|
+
// Leaf columns belonging to this displaced group (header + body cells).
|
|
391
|
+
if (cell.groupId && this.leavesFor) {
|
|
392
|
+
for (const colId of this.leavesFor(cell.groupId)) {
|
|
393
|
+
css += `${ds}[data-col-id="${colId}"] { --pg-drag-x: ${offset}px; }\n`;
|
|
394
|
+
}
|
|
395
|
+
}
|
|
396
|
+
}
|
|
397
|
+
this.dragStyleEl.textContent = css;
|
|
398
|
+
}
|
|
399
|
+
/**
|
|
400
|
+
* Reposition the drop-indicator line to show the insertion point.
|
|
401
|
+
*
|
|
402
|
+
* @param effectiveIdx - Slot index derived from cursor position.
|
|
403
|
+
*/
|
|
404
|
+
updateIndicator(effectiveIdx) {
|
|
405
|
+
if (!this.indicatorEl)
|
|
406
|
+
return;
|
|
407
|
+
const cells = this.capturedCells;
|
|
408
|
+
if (cells.length === 0) {
|
|
409
|
+
this.indicatorEl.style.display = 'none';
|
|
410
|
+
return;
|
|
411
|
+
}
|
|
412
|
+
let left;
|
|
413
|
+
let top;
|
|
414
|
+
let height;
|
|
415
|
+
if (effectiveIdx < cells.length) {
|
|
416
|
+
const rect = cells[effectiveIdx].rect;
|
|
417
|
+
left = rect.left;
|
|
418
|
+
top = rect.top;
|
|
419
|
+
height = rect.height;
|
|
420
|
+
}
|
|
421
|
+
else {
|
|
422
|
+
const rect = cells[cells.length - 1].rect;
|
|
423
|
+
left = rect.right;
|
|
424
|
+
top = rect.top;
|
|
425
|
+
height = rect.height;
|
|
426
|
+
}
|
|
427
|
+
this.indicatorEl.style.left = `${left}px`;
|
|
428
|
+
this.indicatorEl.style.top = `${top}px`;
|
|
429
|
+
this.indicatorEl.style.height = `${height}px`;
|
|
430
|
+
this.indicatorEl.style.display = 'block';
|
|
431
|
+
}
|
|
432
|
+
/**
|
|
433
|
+
* Position the drop-indicator line by looking up the target cell directly in
|
|
434
|
+
* the live DOM. Used in live-preview mode where captured cell rects are stale
|
|
435
|
+
* after each header rebuild.
|
|
436
|
+
*
|
|
437
|
+
* @param colId - The `data-col-id` of the cell to insert before, or `null`
|
|
438
|
+
* to place the indicator at the end of the panel.
|
|
439
|
+
* @param panel - The panel the drop is targeting.
|
|
440
|
+
* @param gridEl - Root `.pg-grid` element.
|
|
441
|
+
*/
|
|
442
|
+
updateIndicatorFromColId(colId, panel, gridEl) {
|
|
443
|
+
if (!this.indicatorEl)
|
|
444
|
+
return;
|
|
445
|
+
const panelEl = this.getPanelEl(panel, gridEl);
|
|
446
|
+
if (!panelEl) {
|
|
447
|
+
this.indicatorEl.style.display = 'none';
|
|
448
|
+
return;
|
|
449
|
+
}
|
|
450
|
+
const leafRow = panelEl.querySelector('.pg-header-row');
|
|
451
|
+
if (!leafRow) {
|
|
452
|
+
this.indicatorEl.style.display = 'none';
|
|
453
|
+
return;
|
|
454
|
+
}
|
|
455
|
+
let left;
|
|
456
|
+
let top;
|
|
457
|
+
let height;
|
|
458
|
+
if (colId) {
|
|
459
|
+
const cell = leafRow.querySelector(`.pg-th[data-col-id="${colId}"]`);
|
|
460
|
+
if (!cell) {
|
|
461
|
+
this.indicatorEl.style.display = 'none';
|
|
462
|
+
return;
|
|
463
|
+
}
|
|
464
|
+
const rect = cell.getBoundingClientRect();
|
|
465
|
+
left = rect.left;
|
|
466
|
+
top = rect.top;
|
|
467
|
+
height = rect.height;
|
|
468
|
+
}
|
|
469
|
+
else {
|
|
470
|
+
// Append at end: right edge of the last leaf cell
|
|
471
|
+
const cells = Array.from(leafRow.querySelectorAll('.pg-th[data-col-id]'));
|
|
472
|
+
if (cells.length === 0) {
|
|
473
|
+
this.indicatorEl.style.display = 'none';
|
|
474
|
+
return;
|
|
475
|
+
}
|
|
476
|
+
const rect = cells[cells.length - 1].getBoundingClientRect();
|
|
477
|
+
left = rect.right;
|
|
478
|
+
top = rect.top;
|
|
479
|
+
height = rect.height;
|
|
480
|
+
}
|
|
481
|
+
this.indicatorEl.style.left = `${left}px`;
|
|
482
|
+
this.indicatorEl.style.top = `${top}px`;
|
|
483
|
+
this.indicatorEl.style.height = `${height}px`;
|
|
484
|
+
this.indicatorEl.style.display = 'block';
|
|
485
|
+
}
|
|
486
|
+
// ── Private: panel helpers ────────────────────────────────────────────────
|
|
487
|
+
detectPanelFromElement(el) {
|
|
488
|
+
if (el.closest('.pg-panel--left'))
|
|
489
|
+
return 'left';
|
|
490
|
+
if (el.closest('.pg-panel--right'))
|
|
491
|
+
return 'right';
|
|
492
|
+
return null;
|
|
493
|
+
}
|
|
494
|
+
detectPanelAtPoint(x, y, gridEl) {
|
|
495
|
+
const check = (cls, pin) => {
|
|
496
|
+
const el = gridEl.querySelector(cls);
|
|
497
|
+
if (!el)
|
|
498
|
+
return false;
|
|
499
|
+
const r = el.getBoundingClientRect();
|
|
500
|
+
return x >= r.left && x <= r.right && y >= r.top && y <= r.bottom;
|
|
501
|
+
};
|
|
502
|
+
if (check('.pg-panel--left', 'left'))
|
|
503
|
+
return 'left';
|
|
504
|
+
if (check('.pg-panel--right', 'right'))
|
|
505
|
+
return 'right';
|
|
506
|
+
return null;
|
|
507
|
+
}
|
|
508
|
+
getPanelEl(panel, gridEl) {
|
|
509
|
+
if (panel === 'left')
|
|
510
|
+
return gridEl.querySelector('.pg-panel--left');
|
|
511
|
+
if (panel === 'right')
|
|
512
|
+
return gridEl.querySelector('.pg-panel--right');
|
|
513
|
+
// Center panel: first panel that is neither left nor right
|
|
514
|
+
return (gridEl.querySelector('.pg-panel--center') ??
|
|
515
|
+
gridEl.querySelector('.pg-panel:not(.pg-panel--left):not(.pg-panel--right)'));
|
|
516
|
+
}
|
|
517
|
+
cleanupDrag() {
|
|
518
|
+
if (this.dragStyleEl) {
|
|
519
|
+
this.dragStyleEl.textContent = '';
|
|
520
|
+
this.dragStyleEl.remove();
|
|
521
|
+
this.dragStyleEl = null;
|
|
522
|
+
}
|
|
523
|
+
this.ghostEl?.remove();
|
|
524
|
+
this.ghostEl = null;
|
|
525
|
+
this.indicatorEl?.remove();
|
|
526
|
+
this.indicatorEl = null;
|
|
527
|
+
this.capturedCells = [];
|
|
528
|
+
this.dragSourceIdx = -1;
|
|
529
|
+
this.dragGroupId = null;
|
|
530
|
+
this.sourcePanel = null;
|
|
531
|
+
this.isDragging = false;
|
|
532
|
+
this.lastSlotKey = '';
|
|
533
|
+
this.gridElGetter()?.classList.remove('pg-grid--group-dragging', 'pg-grid--drag-preview-sync');
|
|
534
|
+
}
|
|
535
|
+
}
|
|
536
|
+
//# sourceMappingURL=display-group-drag-handler.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"display-group-drag-handler.js","sourceRoot":"","sources":["../../src/column-groups/display-group-drag-handler.ts"],"names":[],"mappings":"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"}
|