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,323 @@
|
|
|
1
|
+
// ── Fast clipboard formatter ──────────────────────────────────────────────────
|
|
2
|
+
/**
|
|
3
|
+
* Converts a cell value to a plain string suitable for tab-separated clipboard
|
|
4
|
+
* text. Deliberately avoids `toLocaleString` with options — each call to
|
|
5
|
+
* `toLocaleString({ … })` creates a temporary `Intl.NumberFormat` internally,
|
|
6
|
+
* which is ~50–100× slower than `String(n)` for a clipboard dump.
|
|
7
|
+
*
|
|
8
|
+
* Numbers/dates land correctly in spreadsheets as plain strings.
|
|
9
|
+
*/
|
|
10
|
+
function fmt(val, desc) {
|
|
11
|
+
if (val == null)
|
|
12
|
+
return '';
|
|
13
|
+
switch (desc.type) {
|
|
14
|
+
case 'number':
|
|
15
|
+
case 'currency':
|
|
16
|
+
case 'percentage':
|
|
17
|
+
return String(val);
|
|
18
|
+
case 'boolean':
|
|
19
|
+
return val ? 'Yes' : 'No';
|
|
20
|
+
case 'array':
|
|
21
|
+
return Array.isArray(val) ? val.join(', ') : String(val);
|
|
22
|
+
case 'dropdown': {
|
|
23
|
+
const label = desc.dropdownMap?.get(String(val));
|
|
24
|
+
return label != null ? label : String(val);
|
|
25
|
+
}
|
|
26
|
+
default:
|
|
27
|
+
return String(val);
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
// ── Field resolver ────────────────────────────────────────────────────────────
|
|
31
|
+
function resolve(data, desc) {
|
|
32
|
+
if (!desc.nested)
|
|
33
|
+
return data[desc.field];
|
|
34
|
+
let cur = data;
|
|
35
|
+
for (const part of desc.parts) {
|
|
36
|
+
if (cur == null)
|
|
37
|
+
return undefined;
|
|
38
|
+
cur = cur[part];
|
|
39
|
+
}
|
|
40
|
+
return cur;
|
|
41
|
+
}
|
|
42
|
+
// ── ClipboardEngine ───────────────────────────────────────────────────────────
|
|
43
|
+
export class ClipboardEngine {
|
|
44
|
+
constructor() {
|
|
45
|
+
/** Internal fallback buffer used when clipboard-read permission is denied. */
|
|
46
|
+
this.clipboardBuffer = [];
|
|
47
|
+
}
|
|
48
|
+
/**
|
|
49
|
+
* Copies the first cell range to the system clipboard as tab-separated text.
|
|
50
|
+
* Also populates the internal buffer so paste works even when the browser
|
|
51
|
+
* clipboard-read permission is denied.
|
|
52
|
+
*
|
|
53
|
+
* @param ranges - Active cell ranges (only the first is used for copy)
|
|
54
|
+
* @param rows - All visible rows
|
|
55
|
+
* @param columns - All visible column definitions
|
|
56
|
+
* @param withHeaders - Include a header row in the copied text
|
|
57
|
+
* @param leafGroupField - Field name of the deepest grouping column; when
|
|
58
|
+
* provided, leaf data rows include their group-field
|
|
59
|
+
* value in the first (auto-group label) clipboard column
|
|
60
|
+
*/
|
|
61
|
+
copyRangesToClipboard(ranges, rows, columns, withHeaders = false, leafGroupField) {
|
|
62
|
+
const { text, buffer } = this.buildRangeData(ranges, rows, columns, withHeaders, leafGroupField);
|
|
63
|
+
this.clipboardBuffer = buffer;
|
|
64
|
+
return this.writeToClipboard(text);
|
|
65
|
+
}
|
|
66
|
+
/**
|
|
67
|
+
* Reads text from the system clipboard and returns it as a 2D string array.
|
|
68
|
+
* Falls back to the internal buffer when clipboard-read is denied.
|
|
69
|
+
*/
|
|
70
|
+
async pasteFromClipboard() {
|
|
71
|
+
try {
|
|
72
|
+
const text = await navigator.clipboard.readText();
|
|
73
|
+
return this.parseClipboardText(text);
|
|
74
|
+
}
|
|
75
|
+
catch {
|
|
76
|
+
return this.clipboardBuffer;
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
/**
|
|
80
|
+
* Copies selected rows (with headers) to the clipboard.
|
|
81
|
+
* Used by row-selection mode rather than cell-range mode.
|
|
82
|
+
*
|
|
83
|
+
* @param selectedRows - Rows to copy
|
|
84
|
+
* @param columns - Column definitions
|
|
85
|
+
*/
|
|
86
|
+
copyRowsToClipboard(selectedRows, columns) {
|
|
87
|
+
const descs = this.buildDescriptors(columns, 0, columns.length - 1);
|
|
88
|
+
const lines = [columns.map((c) => c.header).join('\t')];
|
|
89
|
+
for (const row of selectedRows) {
|
|
90
|
+
const cells = new Array(descs.length);
|
|
91
|
+
for (let i = 0; i < descs.length; i++) {
|
|
92
|
+
cells[i] = fmt(resolve(row.data, descs[i]), descs[i]);
|
|
93
|
+
}
|
|
94
|
+
lines.push(cells.join('\t'));
|
|
95
|
+
}
|
|
96
|
+
return this.writeToClipboard(lines.join('\n'));
|
|
97
|
+
}
|
|
98
|
+
/**
|
|
99
|
+
* Copies a single cell value to the clipboard.
|
|
100
|
+
*
|
|
101
|
+
* @param value - Cell value
|
|
102
|
+
* @param col - Column definition for type-aware formatting
|
|
103
|
+
*/
|
|
104
|
+
copyCellValue(value, col) {
|
|
105
|
+
const desc = this.buildDescriptors([col], 0, 0)[0];
|
|
106
|
+
return this.writeToClipboard(fmt(value, desc));
|
|
107
|
+
}
|
|
108
|
+
// ── Core build ──────────────────────────────────────────────────────────────
|
|
109
|
+
/**
|
|
110
|
+
* Builds the tab-separated clipboard text and the raw 2D string buffer in a
|
|
111
|
+
* **single pass** over the row/column range.
|
|
112
|
+
*
|
|
113
|
+
* ### Performance strategy
|
|
114
|
+
* - **Pre-compiled descriptors** — `ColDesc[]` is built once before the loop;
|
|
115
|
+
* each descriptor caches the split field path, column type, and a
|
|
116
|
+
* `Map<value→label>` for dropdown columns. No `field.split('.')` or
|
|
117
|
+
* option-list `.find()` inside the hot cell loop.
|
|
118
|
+
* - **Single pass** — text and 2D buffer are produced together, eliminating
|
|
119
|
+
* the previous approach of building text then calling `parseClipboardText`
|
|
120
|
+
* to re-split it back.
|
|
121
|
+
* - **Fast formatter** — `String(n)` instead of `n.toLocaleString({…})`;
|
|
122
|
+
* the latter creates a temporary `Intl.NumberFormat` on every call.
|
|
123
|
+
*
|
|
124
|
+
* @param ranges - Cell selection ranges
|
|
125
|
+
* @param rows - Visible rows
|
|
126
|
+
* @param columns - Visible column definitions
|
|
127
|
+
* @param withHeaders - Include a header row
|
|
128
|
+
*/
|
|
129
|
+
buildRangeData(ranges, rows, columns, withHeaders, leafGroupField) {
|
|
130
|
+
if (ranges.length === 0)
|
|
131
|
+
return { text: '', buffer: [] };
|
|
132
|
+
// Multi-range (Ctrl+Click): bounding box with per-cell membership check.
|
|
133
|
+
// Only rows that have at least one selected cell are emitted; cells inside
|
|
134
|
+
// the bounding box but outside every range get an empty string.
|
|
135
|
+
if (ranges.length > 1) {
|
|
136
|
+
return this.buildMultiRangeData(ranges, rows, columns, withHeaders);
|
|
137
|
+
}
|
|
138
|
+
const range = ranges[0];
|
|
139
|
+
const startRow = Math.min(range.startRowIndex, range.endRowIndex);
|
|
140
|
+
const endRow = Math.max(range.startRowIndex, range.endRowIndex);
|
|
141
|
+
const startCol = Math.min(range.startColIndex, range.endColIndex);
|
|
142
|
+
const endCol = Math.max(range.startColIndex, range.endColIndex);
|
|
143
|
+
// colIndex −1 is the virtual auto-group label column. When the selection
|
|
144
|
+
// includes it, the group label text is placed in the first clipboard column
|
|
145
|
+
// and regular column data is offset by one.
|
|
146
|
+
const hasGroupLabel = startCol < 0;
|
|
147
|
+
const dataStartCol = hasGroupLabel ? 0 : startCol;
|
|
148
|
+
// When selection is the group label cell only (endCol = −1) descs will be
|
|
149
|
+
// empty; colCount = 1 gives a single-column clipboard row for the label.
|
|
150
|
+
const descs = endCol >= 0 ? this.buildDescriptors(columns, dataStartCol, endCol) : [];
|
|
151
|
+
const dataCols = descs.length;
|
|
152
|
+
const colCount = hasGroupLabel ? dataCols + 1 : dataCols;
|
|
153
|
+
const lines = [];
|
|
154
|
+
const buffer = [];
|
|
155
|
+
if (withHeaders && colCount > 0) {
|
|
156
|
+
const hdr = new Array(colCount);
|
|
157
|
+
const hdrOffset = hasGroupLabel ? 1 : 0;
|
|
158
|
+
if (hasGroupLabel)
|
|
159
|
+
hdr[0] = 'Group';
|
|
160
|
+
for (let i = 0; i < dataCols; i++) {
|
|
161
|
+
hdr[i + hdrOffset] = columns[dataStartCol + i]?.header ?? '';
|
|
162
|
+
}
|
|
163
|
+
lines.push(hdr.join('\t'));
|
|
164
|
+
}
|
|
165
|
+
for (let r = startRow; r <= endRow; r++) {
|
|
166
|
+
const row = rows[r];
|
|
167
|
+
if (!row)
|
|
168
|
+
continue;
|
|
169
|
+
// Skip group/footer rows with no agg values when the group-label column
|
|
170
|
+
// is not selected (data-only range — these rows carry no useful data).
|
|
171
|
+
const isGroupLike = row.type === 'group' || row.type === 'group-footer';
|
|
172
|
+
if (isGroupLike && !hasGroupLabel && !row.aggregatedValues)
|
|
173
|
+
continue;
|
|
174
|
+
if (!isGroupLike && row.type !== 'data')
|
|
175
|
+
continue;
|
|
176
|
+
const cells = new Array(colCount).fill('');
|
|
177
|
+
const offset = hasGroupLabel ? 1 : 0;
|
|
178
|
+
// First column: group/footer label text for group-like rows; leaf group
|
|
179
|
+
// field value for data rows (shown in the auto-group cell they display).
|
|
180
|
+
if (hasGroupLabel) {
|
|
181
|
+
if (isGroupLike) {
|
|
182
|
+
cells[0] = String(row.groupValue ?? '');
|
|
183
|
+
}
|
|
184
|
+
else if (row.type === 'data' && leafGroupField) {
|
|
185
|
+
const v = row.data[leafGroupField];
|
|
186
|
+
cells[0] = v != null ? String(v) : '';
|
|
187
|
+
}
|
|
188
|
+
}
|
|
189
|
+
if (row.type === 'data') {
|
|
190
|
+
const data = row.data;
|
|
191
|
+
for (let i = 0; i < dataCols; i++) {
|
|
192
|
+
cells[i + offset] = fmt(resolve(data, descs[i]), descs[i]);
|
|
193
|
+
}
|
|
194
|
+
}
|
|
195
|
+
else if (isGroupLike && row.aggregatedValues) {
|
|
196
|
+
const aggVals = row.aggregatedValues;
|
|
197
|
+
for (let i = 0; i < dataCols; i++) {
|
|
198
|
+
const col = columns[dataStartCol + i];
|
|
199
|
+
if (col && (col.type === 'currency' || col.type === 'number') && col.aggFunc != null) {
|
|
200
|
+
const v = aggVals[col.field];
|
|
201
|
+
cells[i + offset] = v != null ? String(v) : '';
|
|
202
|
+
}
|
|
203
|
+
// Non-agg columns already initialised to '' by .fill('') above.
|
|
204
|
+
}
|
|
205
|
+
}
|
|
206
|
+
// Group/footer with no aggValues: cells stay '' except for the label.
|
|
207
|
+
lines.push(cells.join('\t'));
|
|
208
|
+
buffer.push(cells);
|
|
209
|
+
}
|
|
210
|
+
return { text: lines.join('\n'), buffer };
|
|
211
|
+
}
|
|
212
|
+
/**
|
|
213
|
+
* Builds clipboard data for Ctrl+Click multi-range selections.
|
|
214
|
+
*
|
|
215
|
+
* The output spans the bounding box of all ranges; cells that fall inside
|
|
216
|
+
* the bounding box but belong to no range get an empty string. Rows that
|
|
217
|
+
* have no selected cell in any range are skipped entirely so the clipboard
|
|
218
|
+
* stays compact.
|
|
219
|
+
*
|
|
220
|
+
* @param ranges - Two or more cell ranges (Ctrl+Click selections).
|
|
221
|
+
* @param rows - Visible rows.
|
|
222
|
+
* @param columns - Visible column definitions.
|
|
223
|
+
* @param withHeaders - Include a header row.
|
|
224
|
+
*/
|
|
225
|
+
buildMultiRangeData(ranges, rows, columns, withHeaders) {
|
|
226
|
+
// Normalise all ranges and compute the bounding box (skip group-label cols < 0).
|
|
227
|
+
const norms = ranges.map((r) => ({
|
|
228
|
+
startRowIndex: Math.min(r.startRowIndex, r.endRowIndex),
|
|
229
|
+
endRowIndex: Math.max(r.startRowIndex, r.endRowIndex),
|
|
230
|
+
startColIndex: Math.max(0, Math.min(r.startColIndex, r.endColIndex)),
|
|
231
|
+
endColIndex: Math.max(r.startColIndex, r.endColIndex),
|
|
232
|
+
}));
|
|
233
|
+
const startRow = Math.min(...norms.map((n) => n.startRowIndex));
|
|
234
|
+
const endRow = Math.max(...norms.map((n) => n.endRowIndex));
|
|
235
|
+
const startCol = Math.max(0, Math.min(...norms.map((n) => n.startColIndex)));
|
|
236
|
+
const endCol = Math.max(...norms.map((n) => n.endColIndex));
|
|
237
|
+
if (endCol < 0)
|
|
238
|
+
return { text: '', buffer: [] };
|
|
239
|
+
const descs = this.buildDescriptors(columns, startCol, endCol);
|
|
240
|
+
const colCount = descs.length;
|
|
241
|
+
const lines = [];
|
|
242
|
+
const buffer = [];
|
|
243
|
+
if (withHeaders && colCount > 0) {
|
|
244
|
+
lines.push(descs.map((_, i) => columns[startCol + i]?.header ?? '').join('\t'));
|
|
245
|
+
}
|
|
246
|
+
for (let r = startRow; r <= endRow; r++) {
|
|
247
|
+
const row = rows[r];
|
|
248
|
+
if (!row || row.type !== 'data')
|
|
249
|
+
continue;
|
|
250
|
+
// Skip rows where no range has a selected cell.
|
|
251
|
+
const rowSelected = norms.some((n) => r >= n.startRowIndex && r <= n.endRowIndex);
|
|
252
|
+
if (!rowSelected)
|
|
253
|
+
continue;
|
|
254
|
+
const cells = new Array(colCount).fill('');
|
|
255
|
+
for (let ci = 0; ci < colCount; ci++) {
|
|
256
|
+
const c = startCol + ci;
|
|
257
|
+
const inRange = norms.some((n) => r >= n.startRowIndex && r <= n.endRowIndex &&
|
|
258
|
+
c >= n.startColIndex && c <= n.endColIndex);
|
|
259
|
+
if (inRange)
|
|
260
|
+
cells[ci] = fmt(resolve(row.data, descs[ci]), descs[ci]);
|
|
261
|
+
}
|
|
262
|
+
lines.push(cells.join('\t'));
|
|
263
|
+
buffer.push(cells);
|
|
264
|
+
}
|
|
265
|
+
return { text: lines.join('\n'), buffer };
|
|
266
|
+
}
|
|
267
|
+
// ── Descriptor builder ─────────────────────────────────────────────────────
|
|
268
|
+
/**
|
|
269
|
+
* Compiles `ColDesc` objects for columns `[startCol, endCol]` inclusive.
|
|
270
|
+
* Called once per copy operation — never inside the row loop.
|
|
271
|
+
*/
|
|
272
|
+
buildDescriptors(columns, startCol, endCol) {
|
|
273
|
+
const descs = [];
|
|
274
|
+
for (let c = startCol; c <= endCol; c++) {
|
|
275
|
+
const col = columns[c];
|
|
276
|
+
if (!col)
|
|
277
|
+
continue;
|
|
278
|
+
let dropdownMap = null;
|
|
279
|
+
if (col.type === 'dropdown' && col.dropdownOptions?.length) {
|
|
280
|
+
dropdownMap = new Map(col.dropdownOptions.map((o) => [String(o.value), o.label]));
|
|
281
|
+
}
|
|
282
|
+
descs.push({
|
|
283
|
+
field: col.field,
|
|
284
|
+
parts: col.field.split('.'),
|
|
285
|
+
nested: col.field.includes('.'),
|
|
286
|
+
type: col.type ?? 'string',
|
|
287
|
+
dropdownMap,
|
|
288
|
+
});
|
|
289
|
+
}
|
|
290
|
+
return descs;
|
|
291
|
+
}
|
|
292
|
+
// ── Paste helper ───────────────────────────────────────────────────────────
|
|
293
|
+
/**
|
|
294
|
+
* Splits tab-separated clipboard text into a 2D string array.
|
|
295
|
+
* Used only on paste (not on copy — the buffer is built directly).
|
|
296
|
+
*/
|
|
297
|
+
parseClipboardText(text) {
|
|
298
|
+
return text
|
|
299
|
+
.split('\n')
|
|
300
|
+
.map((line) => line.split('\t').map((cell) => cell.trim()));
|
|
301
|
+
}
|
|
302
|
+
// ── Write ───────────────────────────────────────────────────────────────────
|
|
303
|
+
writeToClipboard(text) {
|
|
304
|
+
if (navigator.clipboard?.writeText) {
|
|
305
|
+
return navigator.clipboard.writeText(text).catch(() => this.execCommandCopy(text));
|
|
306
|
+
}
|
|
307
|
+
return Promise.resolve(this.execCommandCopy(text));
|
|
308
|
+
}
|
|
309
|
+
execCommandCopy(text) {
|
|
310
|
+
const ta = document.createElement('textarea');
|
|
311
|
+
ta.value = text;
|
|
312
|
+
ta.style.cssText = 'position:fixed;opacity:0;top:0;left:0;';
|
|
313
|
+
document.body.appendChild(ta);
|
|
314
|
+
ta.focus();
|
|
315
|
+
ta.select();
|
|
316
|
+
try {
|
|
317
|
+
document.execCommand('copy');
|
|
318
|
+
}
|
|
319
|
+
catch { /* ignore */ }
|
|
320
|
+
document.body.removeChild(ta);
|
|
321
|
+
}
|
|
322
|
+
}
|
|
323
|
+
//# sourceMappingURL=clipboard-engine.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"clipboard-engine.js","sourceRoot":"","sources":["../../../src/engines/clipboard/clipboard-engine.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
import type { RowNode } from '../../types/row.types';
|
|
2
|
+
import type { ColumnDef } from '../../types/column.types';
|
|
3
|
+
import type { EditingConfig } from '../../types/grid.types';
|
|
4
|
+
import type { GridStore } from '../../core/grid-store';
|
|
5
|
+
import type { EventBus } from '../../event-bus/event-bus';
|
|
6
|
+
export interface EditSession {
|
|
7
|
+
rowNode: RowNode;
|
|
8
|
+
colDef: ColumnDef;
|
|
9
|
+
originalValue: unknown;
|
|
10
|
+
currentValue: unknown;
|
|
11
|
+
editorEl: HTMLElement | null;
|
|
12
|
+
cellEl: HTMLElement | null;
|
|
13
|
+
}
|
|
14
|
+
export declare class CellEditorEngine {
|
|
15
|
+
private store;
|
|
16
|
+
private eventBus;
|
|
17
|
+
private activeSession;
|
|
18
|
+
private config;
|
|
19
|
+
/**
|
|
20
|
+
* Optional callback invoked when Tab is pressed while a native editor is
|
|
21
|
+
* active. Receives `shiftKey` so the caller can navigate forwards or
|
|
22
|
+
* backwards. Registered by `wireEditing` in `GridCore`.
|
|
23
|
+
*/
|
|
24
|
+
private tabHandler;
|
|
25
|
+
/** Register a callback to be called when Tab is pressed inside a native editor. */
|
|
26
|
+
setTabHandler(fn: (shiftKey: boolean) => void): void;
|
|
27
|
+
constructor(store: GridStore, eventBus: EventBus);
|
|
28
|
+
configure(config: Partial<EditingConfig>): void;
|
|
29
|
+
startEditing(rowNode: RowNode, colDef: ColumnDef, cellEl: HTMLElement): boolean;
|
|
30
|
+
updateValue(value: unknown): void;
|
|
31
|
+
stopEditing(cancel?: boolean): void;
|
|
32
|
+
isEditing(): boolean;
|
|
33
|
+
getActiveSession(): EditSession | null;
|
|
34
|
+
isCellEditing(rowNodeId: string, colId: string): boolean;
|
|
35
|
+
/**
|
|
36
|
+
* Builds and mounts the appropriate native editor widget into `container` based
|
|
37
|
+
* on `colDef.type`. Returns the root editor element.
|
|
38
|
+
*
|
|
39
|
+
* Editor types:
|
|
40
|
+
* - `boolean` → styled checkbox
|
|
41
|
+
* - `dropdown` / `object`→ single-select `<select>` from `dropdownOptions`
|
|
42
|
+
* - `array` → custom multi-select panel with checkboxes
|
|
43
|
+
* - `number` / `currency`/ `percentage` → number `<input>`
|
|
44
|
+
* - `date` → date `<input>`
|
|
45
|
+
* - `time` → time `<input>`
|
|
46
|
+
* - default → text `<input>`
|
|
47
|
+
*/
|
|
48
|
+
buildNativeEditor(colDef: ColumnDef, value: unknown, container: HTMLElement): HTMLElement;
|
|
49
|
+
/**
|
|
50
|
+
* Builds a custom multi-select dropdown panel for `array` column type.
|
|
51
|
+
* The stored value is always `string[]` of selected option values.
|
|
52
|
+
*/
|
|
53
|
+
private buildMultiSelectEditor;
|
|
54
|
+
/**
|
|
55
|
+
* Resolves the key used to match a cell value against `dropdownOptions`
|
|
56
|
+
* for `object` type columns. Supports primitive values and plain objects.
|
|
57
|
+
*/
|
|
58
|
+
private resolveObjectKey;
|
|
59
|
+
/** Returns the active `EditingConfig` (read-only). */
|
|
60
|
+
getConfig(): Readonly<EditingConfig>;
|
|
61
|
+
}
|
|
62
|
+
//# sourceMappingURL=cell-editor-engine.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cell-editor-engine.d.ts","sourceRoot":"","sources":["../../../src/engines/editing/cell-editor-engine.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,uBAAuB,CAAC;AACrD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,0BAA0B,CAAC;AAC1D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AAC5D,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,2BAA2B,CAAC;AAI1D,MAAM,WAAW,WAAW;IAC1B,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,EAAE,SAAS,CAAC;IAClB,aAAa,EAAE,OAAO,CAAC;IACvB,YAAY,EAAE,OAAO,CAAC;IACtB,QAAQ,EAAE,WAAW,GAAG,IAAI,CAAC;IAC7B,MAAM,EAAE,WAAW,GAAG,IAAI,CAAC;CAC5B;AAED,qBAAa,gBAAgB;IAoBzB,OAAO,CAAC,KAAK;IACb,OAAO,CAAC,QAAQ;IApBlB,OAAO,CAAC,aAAa,CAA4B;IACjD,OAAO,CAAC,MAAM,CAIZ;IACF;;;;OAIG;IACH,OAAO,CAAC,UAAU,CAA8C;IAEhE,mFAAmF;IACnF,aAAa,CAAC,EAAE,EAAE,CAAC,QAAQ,EAAE,OAAO,KAAK,IAAI,GAAG,IAAI;gBAK1C,KAAK,EAAE,SAAS,EAChB,QAAQ,EAAE,QAAQ;IAG5B,SAAS,CAAC,MAAM,EAAE,OAAO,CAAC,aAAa,CAAC,GAAG,IAAI;IAI/C,YAAY,CAAC,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,WAAW,GAAG,OAAO;IAoC/E,WAAW,CAAC,KAAK,EAAE,OAAO,GAAG,IAAI;IAKjC,WAAW,CAAC,MAAM,UAAQ,GAAG,IAAI;IAwDjC,SAAS,IAAI,OAAO;IAIpB,gBAAgB,IAAI,WAAW,GAAG,IAAI;IAItC,aAAa,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO;IAKxD;;;;;;;;;;;;OAYG;IACH,iBAAiB,CAAC,MAAM,EAAE,SAAS,EAAE,KAAK,EAAE,OAAO,EAAE,SAAS,EAAE,WAAW,GAAG,WAAW;IA6GzF;;;OAGG;IACH,OAAO,CAAC,sBAAsB;IAqG9B;;;OAGG;IACH,OAAO,CAAC,gBAAgB;IAQxB,sDAAsD;IACtD,SAAS,IAAI,QAAQ,CAAC,aAAa,CAAC;CAGrC"}
|