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,96 @@
|
|
|
1
|
+
import { GridEventType } from '../types/event.types';
|
|
2
|
+
import { ChartDataTransformer } from './chart-data-transformer';
|
|
3
|
+
import { ChartRenderer } from './chart-renderer';
|
|
4
|
+
import { createDiv } from '../renderer/dom-utils';
|
|
5
|
+
export class ChartEngine {
|
|
6
|
+
constructor(eventBus) {
|
|
7
|
+
this.eventBus = eventBus;
|
|
8
|
+
this.charts = new Map();
|
|
9
|
+
this.transformer = new ChartDataTransformer();
|
|
10
|
+
}
|
|
11
|
+
createChart(parentEl, config, rows, columns) {
|
|
12
|
+
const existing = this.charts.get(config.chartId);
|
|
13
|
+
if (existing) {
|
|
14
|
+
this.destroyChart(config.chartId);
|
|
15
|
+
}
|
|
16
|
+
const containerEl = createDiv('pg-chart');
|
|
17
|
+
containerEl.setAttribute('data-chart-id', config.chartId);
|
|
18
|
+
if (config.title) {
|
|
19
|
+
const titleEl = createDiv('pg-chart__title');
|
|
20
|
+
titleEl.textContent = config.title;
|
|
21
|
+
containerEl.appendChild(titleEl);
|
|
22
|
+
}
|
|
23
|
+
const canvas = document.createElement('canvas');
|
|
24
|
+
canvas.className = 'pg-chart__canvas';
|
|
25
|
+
containerEl.appendChild(canvas);
|
|
26
|
+
parentEl.appendChild(containerEl);
|
|
27
|
+
const chartRenderer = new ChartRenderer(canvas);
|
|
28
|
+
const activeChart = {
|
|
29
|
+
config,
|
|
30
|
+
containerEl,
|
|
31
|
+
canvas,
|
|
32
|
+
renderer: chartRenderer,
|
|
33
|
+
};
|
|
34
|
+
this.charts.set(config.chartId, activeChart);
|
|
35
|
+
this.renderChart(config.chartId, rows, columns);
|
|
36
|
+
this.eventBus.emit(GridEventType.CHART_CREATED, { chartId: config.chartId });
|
|
37
|
+
return config.chartId;
|
|
38
|
+
}
|
|
39
|
+
renderChart(chartId, rows, columns) {
|
|
40
|
+
const chart = this.charts.get(chartId);
|
|
41
|
+
if (!chart)
|
|
42
|
+
return;
|
|
43
|
+
const { config } = chart;
|
|
44
|
+
let chartData;
|
|
45
|
+
if (config.labelColId && config.valueColIds) {
|
|
46
|
+
chartData = this.transformer.fromSelectedColumns(rows, columns, config.labelColId, config.valueColIds);
|
|
47
|
+
}
|
|
48
|
+
else {
|
|
49
|
+
const firstLabelCol = columns.find((c) => c.type === 'string' || c.type === 'dropdown');
|
|
50
|
+
const numberCols = columns.filter((c) => c.type === 'number' || c.type === 'currency');
|
|
51
|
+
if (!firstLabelCol || numberCols.length === 0)
|
|
52
|
+
return;
|
|
53
|
+
chartData = this.transformer.transform(rows, {
|
|
54
|
+
labelField: firstLabelCol.field,
|
|
55
|
+
valueFields: numberCols.slice(0, 3).map((c) => c.field),
|
|
56
|
+
...config.transformOptions,
|
|
57
|
+
});
|
|
58
|
+
}
|
|
59
|
+
chart.renderer.render(chartData, {
|
|
60
|
+
type: config.type,
|
|
61
|
+
width: config.width ?? 600,
|
|
62
|
+
height: config.height ?? 320,
|
|
63
|
+
...config.renderOptions,
|
|
64
|
+
});
|
|
65
|
+
}
|
|
66
|
+
updateChartData(chartId, rows, columns) {
|
|
67
|
+
this.renderChart(chartId, rows, columns);
|
|
68
|
+
}
|
|
69
|
+
destroyChart(chartId) {
|
|
70
|
+
const chart = this.charts.get(chartId);
|
|
71
|
+
if (!chart)
|
|
72
|
+
return;
|
|
73
|
+
chart.renderer.destroy();
|
|
74
|
+
chart.containerEl.remove();
|
|
75
|
+
this.charts.delete(chartId);
|
|
76
|
+
this.eventBus.emit(GridEventType.CHART_DESTROYED, { chartId });
|
|
77
|
+
}
|
|
78
|
+
destroyAll() {
|
|
79
|
+
for (const chartId of this.charts.keys()) {
|
|
80
|
+
this.destroyChart(chartId);
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
getChart(chartId) {
|
|
84
|
+
return this.charts.get(chartId);
|
|
85
|
+
}
|
|
86
|
+
getAllChartIds() {
|
|
87
|
+
return Array.from(this.charts.keys());
|
|
88
|
+
}
|
|
89
|
+
exportChartAsImage(chartId, format = 'png') {
|
|
90
|
+
const chart = this.charts.get(chartId);
|
|
91
|
+
if (!chart)
|
|
92
|
+
return null;
|
|
93
|
+
return chart.canvas.toDataURL(`image/${format}`, 0.95);
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
//# sourceMappingURL=chart-engine.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"chart-engine.js","sourceRoot":"","sources":["../../src/chart/chart-engine.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
import type { ChartData } from './chart-data-transformer';
|
|
2
|
+
export type ChartPanelType = 'column-grouped' | 'column-stacked' | 'column-100stacked' | 'bar-grouped' | 'bar-stacked' | 'bar-100stacked' | 'pie' | 'doughnut' | 'line' | 'area' | 'scatter' | 'polar' | 'funnel';
|
|
3
|
+
export declare class ChartPanel {
|
|
4
|
+
private containerEl;
|
|
5
|
+
private backdropEl;
|
|
6
|
+
private cardEl;
|
|
7
|
+
private canvasEl;
|
|
8
|
+
private dotsMenuEl;
|
|
9
|
+
private dotsBtnEl;
|
|
10
|
+
private fullscreenBtnEl;
|
|
11
|
+
private legendEl;
|
|
12
|
+
private renderer;
|
|
13
|
+
private resizeObserver;
|
|
14
|
+
private isFullscreen;
|
|
15
|
+
private currentData;
|
|
16
|
+
private currentType;
|
|
17
|
+
private currentTitle;
|
|
18
|
+
/** Dataset indices the user has toggled off via the legend. */
|
|
19
|
+
private hiddenSeries;
|
|
20
|
+
/** Current top-left position of the card within the backdrop. */
|
|
21
|
+
private panelX;
|
|
22
|
+
private panelY;
|
|
23
|
+
constructor(containerEl: HTMLElement);
|
|
24
|
+
open(type: ChartPanelType, title: string, data: ChartData | null): void;
|
|
25
|
+
close(): void;
|
|
26
|
+
private buildDom;
|
|
27
|
+
/**
|
|
28
|
+
* Position the card at the center of the backdrop.
|
|
29
|
+
* Called once after building the DOM and on fullscreen exit.
|
|
30
|
+
*/
|
|
31
|
+
private centerPanel;
|
|
32
|
+
private applyPosition;
|
|
33
|
+
/**
|
|
34
|
+
* Wire drag-to-move onto the header bar.
|
|
35
|
+
* Clamped strictly within the backdrop bounds so the panel never escapes the grid.
|
|
36
|
+
*/
|
|
37
|
+
private attachDrag;
|
|
38
|
+
private closeDotsMenu;
|
|
39
|
+
private toggleFullscreen;
|
|
40
|
+
private renderChart;
|
|
41
|
+
/**
|
|
42
|
+
* Populates the HTML legend bar with one clickable button per dataset.
|
|
43
|
+
* Each button acts as a toggle: clicking animates the corresponding bars
|
|
44
|
+
* in or out and dims the legend entry to signal its state.
|
|
45
|
+
*/
|
|
46
|
+
private buildLegend;
|
|
47
|
+
/**
|
|
48
|
+
* Toggles a dataset's visibility with a smooth bar-height animation.
|
|
49
|
+
* The legend item is dimmed while its series is hidden.
|
|
50
|
+
*/
|
|
51
|
+
private handleLegendToggle;
|
|
52
|
+
private downloadChart;
|
|
53
|
+
}
|
|
54
|
+
//# sourceMappingURL=chart-panel.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"chart-panel.d.ts","sourceRoot":"","sources":["../../src/chart/chart-panel.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,0BAA0B,CAAC;AAG1D,MAAM,MAAM,cAAc,GACtB,gBAAgB,GAAG,gBAAgB,GAAG,mBAAmB,GACzD,aAAa,GAAG,aAAa,GAAG,gBAAgB,GAChD,KAAK,GAAG,UAAU,GAClB,MAAM,GAAG,MAAM,GACf,SAAS,GAAG,OAAO,GAAG,QAAQ,CAAC;AASnC,qBAAa,UAAU;IAqBT,OAAO,CAAC,WAAW;IApB/B,OAAO,CAAC,UAAU,CAA4B;IAC9C,OAAO,CAAC,MAAM,CAA4B;IAC1C,OAAO,CAAC,QAAQ,CAAkC;IAClD,OAAO,CAAC,UAAU,CAA4B;IAC9C,OAAO,CAAC,SAAS,CAA4B;IAC7C,OAAO,CAAC,eAAe,CAA4B;IACnD,OAAO,CAAC,QAAQ,CAA4B;IAC5C,OAAO,CAAC,QAAQ,CAA8B;IAC9C,OAAO,CAAC,cAAc,CAA+B;IACrD,OAAO,CAAC,YAAY,CAAS;IAC7B,OAAO,CAAC,WAAW,CAA0B;IAC7C,OAAO,CAAC,WAAW,CAAoC;IACvD,OAAO,CAAC,YAAY,CAAM;IAC1B,+DAA+D;IAC/D,OAAO,CAAC,YAAY,CAAqB;IAEzC,iEAAiE;IACjE,OAAO,CAAC,MAAM,CAAK;IACnB,OAAO,CAAC,MAAM,CAAK;gBAEC,WAAW,EAAE,WAAW;IAE5C,IAAI,CAAC,IAAI,EAAE,cAAc,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,SAAS,GAAG,IAAI,GAAG,IAAI;IAcvE,KAAK,IAAI,IAAI;IAgBb,OAAO,CAAC,QAAQ;IA2HhB;;;OAGG;IACH,OAAO,CAAC,WAAW;IAWnB,OAAO,CAAC,aAAa;IAMrB;;;OAGG;IACH,OAAO,CAAC,UAAU;IAmClB,OAAO,CAAC,aAAa;IAKrB,OAAO,CAAC,gBAAgB;IAoBxB,OAAO,CAAC,WAAW;IAwBnB;;;;OAIG;IACH,OAAO,CAAC,WAAW;IAwBnB;;;OAGG;IACH,OAAO,CAAC,kBAAkB;IA4B1B,OAAO,CAAC,aAAa;CA8BtB"}
|
|
@@ -0,0 +1,350 @@
|
|
|
1
|
+
import { ChartRenderer } from './chart-renderer';
|
|
2
|
+
const ICON_EMPTY_CHART = `<svg width="48" height="48" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><rect x="3" y="3" width="18" height="18" rx="2"/><path d="M3 9h18M9 21V9"/><line x1="7" y1="15" x2="7" y2="17"/><line x1="12" y1="12" x2="12" y2="17"/><line x1="17" y1="14" x2="17" y2="17"/></svg>`;
|
|
3
|
+
const ICON_CLOSE = `<svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round"><line x1="18" y1="6" x2="6" y2="18"/><line x1="6" y1="6" x2="18" y2="18"/></svg>`;
|
|
4
|
+
const ICON_FULLSCREEN = `<svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M8 3H5a2 2 0 0 0-2 2v3m18 0V5a2 2 0 0 0-2-2h-3m0 18h3a2 2 0 0 0 2-2v-3M3 16v3a2 2 0 0 0 2 2h3"/></svg>`;
|
|
5
|
+
const ICON_FULLSCREEN_EXIT = `<svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M8 3v3a2 2 0 0 1-2 2H3m18 0h-3a2 2 0 0 1-2-2V3m0 18v-3a2 2 0 0 1 2-2h3M3 16h3a2 2 0 0 1 2 2v3"/></svg>`;
|
|
6
|
+
const ICON_DOTS = `<svg width="4" height="16" viewBox="0 0 4 16" fill="currentColor"><circle cx="2" cy="2" r="1.5"/><circle cx="2" cy="8" r="1.5"/><circle cx="2" cy="14" r="1.5"/></svg>`;
|
|
7
|
+
const ICON_DOWNLOAD = `<svg width="13" height="13" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4"/><polyline points="7 10 12 15 17 10"/><line x1="12" y1="15" x2="12" y2="3"/></svg>`;
|
|
8
|
+
export class ChartPanel {
|
|
9
|
+
constructor(containerEl) {
|
|
10
|
+
this.containerEl = containerEl;
|
|
11
|
+
this.backdropEl = null;
|
|
12
|
+
this.cardEl = null;
|
|
13
|
+
this.canvasEl = null;
|
|
14
|
+
this.dotsMenuEl = null;
|
|
15
|
+
this.dotsBtnEl = null;
|
|
16
|
+
this.fullscreenBtnEl = null;
|
|
17
|
+
this.legendEl = null;
|
|
18
|
+
this.renderer = null;
|
|
19
|
+
this.resizeObserver = null;
|
|
20
|
+
this.isFullscreen = false;
|
|
21
|
+
this.currentData = null;
|
|
22
|
+
this.currentType = 'column-grouped';
|
|
23
|
+
this.currentTitle = '';
|
|
24
|
+
/** Dataset indices the user has toggled off via the legend. */
|
|
25
|
+
this.hiddenSeries = new Set();
|
|
26
|
+
/** Current top-left position of the card within the backdrop. */
|
|
27
|
+
this.panelX = 0;
|
|
28
|
+
this.panelY = 0;
|
|
29
|
+
}
|
|
30
|
+
open(type, title, data) {
|
|
31
|
+
this.close();
|
|
32
|
+
this.currentType = type;
|
|
33
|
+
this.currentTitle = title;
|
|
34
|
+
this.currentData = data;
|
|
35
|
+
this.isFullscreen = false;
|
|
36
|
+
this.hiddenSeries = new Set();
|
|
37
|
+
this.buildDom(title, data === null);
|
|
38
|
+
if (data !== null) {
|
|
39
|
+
if (data.datasets.length > 1)
|
|
40
|
+
this.buildLegend(data);
|
|
41
|
+
this.renderChart();
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
close() {
|
|
45
|
+
this.resizeObserver?.disconnect();
|
|
46
|
+
this.resizeObserver = null;
|
|
47
|
+
this.renderer?.destroy();
|
|
48
|
+
this.renderer = null;
|
|
49
|
+
this.backdropEl?.remove();
|
|
50
|
+
this.backdropEl = null;
|
|
51
|
+
this.cardEl = null;
|
|
52
|
+
this.canvasEl = null;
|
|
53
|
+
this.dotsMenuEl = null;
|
|
54
|
+
this.dotsBtnEl = null;
|
|
55
|
+
this.fullscreenBtnEl = null;
|
|
56
|
+
this.legendEl = null;
|
|
57
|
+
this.currentData = null;
|
|
58
|
+
}
|
|
59
|
+
buildDom(title, isEmpty) {
|
|
60
|
+
const backdrop = document.createElement('div');
|
|
61
|
+
backdrop.className = 'pg-chart-panel-backdrop pg-chart-panel-backdrop--open';
|
|
62
|
+
backdrop.addEventListener('mousedown', (e) => {
|
|
63
|
+
if (e.target === backdrop)
|
|
64
|
+
this.close();
|
|
65
|
+
});
|
|
66
|
+
const card = document.createElement('div');
|
|
67
|
+
card.className = 'pg-chart-panel';
|
|
68
|
+
backdrop.appendChild(card);
|
|
69
|
+
// Header
|
|
70
|
+
const header = document.createElement('div');
|
|
71
|
+
header.className = 'pg-chart-panel__header';
|
|
72
|
+
const titleEl = document.createElement('div');
|
|
73
|
+
titleEl.className = 'pg-chart-panel__title';
|
|
74
|
+
titleEl.textContent = isEmpty ? 'Chart Range' : title;
|
|
75
|
+
const actions = document.createElement('div');
|
|
76
|
+
actions.className = 'pg-chart-panel__actions';
|
|
77
|
+
const fullscreenBtn = document.createElement('button');
|
|
78
|
+
fullscreenBtn.className = 'pg-chart-panel__action-btn';
|
|
79
|
+
fullscreenBtn.title = 'Toggle fullscreen';
|
|
80
|
+
fullscreenBtn.innerHTML = ICON_FULLSCREEN;
|
|
81
|
+
fullscreenBtn.addEventListener('click', () => this.toggleFullscreen());
|
|
82
|
+
const closeBtn = document.createElement('button');
|
|
83
|
+
closeBtn.className = 'pg-chart-panel__action-btn';
|
|
84
|
+
closeBtn.title = 'Close';
|
|
85
|
+
closeBtn.innerHTML = ICON_CLOSE;
|
|
86
|
+
closeBtn.addEventListener('click', () => this.close());
|
|
87
|
+
actions.appendChild(fullscreenBtn);
|
|
88
|
+
actions.appendChild(closeBtn);
|
|
89
|
+
header.appendChild(titleEl);
|
|
90
|
+
header.appendChild(actions);
|
|
91
|
+
card.appendChild(header);
|
|
92
|
+
// Body
|
|
93
|
+
const body = document.createElement('div');
|
|
94
|
+
body.className = 'pg-chart-panel__body';
|
|
95
|
+
if (isEmpty) {
|
|
96
|
+
const emptyEl = document.createElement('div');
|
|
97
|
+
emptyEl.className = 'pg-chart-panel__empty';
|
|
98
|
+
emptyEl.innerHTML = `
|
|
99
|
+
<span class="pg-chart-panel__empty-icon">${ICON_EMPTY_CHART}</span>
|
|
100
|
+
<span class="pg-chart-panel__empty-text">No chart data available</span>
|
|
101
|
+
<span class="pg-chart-panel__empty-sub">Select cells that include Number, Currency, or Percentage columns</span>
|
|
102
|
+
`;
|
|
103
|
+
body.appendChild(emptyEl);
|
|
104
|
+
}
|
|
105
|
+
else {
|
|
106
|
+
const canvas = document.createElement('canvas');
|
|
107
|
+
canvas.className = 'pg-chart-panel__canvas';
|
|
108
|
+
body.appendChild(canvas);
|
|
109
|
+
const dotsBtn = document.createElement('button');
|
|
110
|
+
dotsBtn.className = 'pg-chart-panel__dots-btn';
|
|
111
|
+
dotsBtn.title = 'Download';
|
|
112
|
+
dotsBtn.innerHTML = ICON_DOTS;
|
|
113
|
+
const dotsMenu = document.createElement('div');
|
|
114
|
+
dotsMenu.className = 'pg-chart-panel__dots-menu';
|
|
115
|
+
const pngItem = document.createElement('button');
|
|
116
|
+
pngItem.className = 'pg-chart-panel__dots-item';
|
|
117
|
+
pngItem.innerHTML = `${ICON_DOWNLOAD} Download PNG`;
|
|
118
|
+
pngItem.addEventListener('click', () => { this.downloadChart('png'); this.closeDotsMenu(); });
|
|
119
|
+
const jpegItem = document.createElement('button');
|
|
120
|
+
jpegItem.className = 'pg-chart-panel__dots-item';
|
|
121
|
+
jpegItem.innerHTML = `${ICON_DOWNLOAD} Download JPEG`;
|
|
122
|
+
jpegItem.addEventListener('click', () => { this.downloadChart('jpeg'); this.closeDotsMenu(); });
|
|
123
|
+
dotsMenu.appendChild(pngItem);
|
|
124
|
+
dotsMenu.appendChild(jpegItem);
|
|
125
|
+
dotsBtn.addEventListener('click', (e) => {
|
|
126
|
+
e.stopPropagation();
|
|
127
|
+
const isOpen = dotsMenu.classList.contains('pg-chart-panel__dots-menu--open');
|
|
128
|
+
if (isOpen) {
|
|
129
|
+
this.closeDotsMenu();
|
|
130
|
+
}
|
|
131
|
+
else {
|
|
132
|
+
dotsMenu.classList.add('pg-chart-panel__dots-menu--open');
|
|
133
|
+
dotsBtn.classList.add('pg-chart-panel__dots-btn--active');
|
|
134
|
+
setTimeout(() => {
|
|
135
|
+
document.addEventListener('mousedown', () => this.closeDotsMenu(), { once: true });
|
|
136
|
+
});
|
|
137
|
+
}
|
|
138
|
+
});
|
|
139
|
+
body.appendChild(dotsBtn);
|
|
140
|
+
body.appendChild(dotsMenu);
|
|
141
|
+
this.canvasEl = canvas;
|
|
142
|
+
this.dotsMenuEl = dotsMenu;
|
|
143
|
+
this.dotsBtnEl = dotsBtn;
|
|
144
|
+
this.resizeObserver = new ResizeObserver(() => { this.renderChart(); });
|
|
145
|
+
this.resizeObserver.observe(body);
|
|
146
|
+
}
|
|
147
|
+
card.appendChild(body);
|
|
148
|
+
// Legend sits below the body in the card's flex column; height is 0 when
|
|
149
|
+
// empty (single-series chart) so it never wastes space.
|
|
150
|
+
const legend = document.createElement('div');
|
|
151
|
+
legend.className = 'pg-chart-panel__legend';
|
|
152
|
+
card.appendChild(legend);
|
|
153
|
+
this.legendEl = legend;
|
|
154
|
+
this.containerEl.appendChild(backdrop);
|
|
155
|
+
this.backdropEl = backdrop;
|
|
156
|
+
this.cardEl = card;
|
|
157
|
+
this.fullscreenBtnEl = fullscreenBtn;
|
|
158
|
+
this.centerPanel();
|
|
159
|
+
this.attachDrag(header);
|
|
160
|
+
}
|
|
161
|
+
/**
|
|
162
|
+
* Position the card at the center of the backdrop.
|
|
163
|
+
* Called once after building the DOM and on fullscreen exit.
|
|
164
|
+
*/
|
|
165
|
+
centerPanel() {
|
|
166
|
+
if (!this.backdropEl || !this.cardEl)
|
|
167
|
+
return;
|
|
168
|
+
const bw = this.backdropEl.offsetWidth;
|
|
169
|
+
const bh = this.backdropEl.offsetHeight;
|
|
170
|
+
const cw = this.cardEl.offsetWidth;
|
|
171
|
+
const ch = this.cardEl.offsetHeight;
|
|
172
|
+
this.panelX = Math.max(0, (bw - cw) / 2);
|
|
173
|
+
this.panelY = Math.max(0, (bh - ch) / 2);
|
|
174
|
+
this.applyPosition();
|
|
175
|
+
}
|
|
176
|
+
applyPosition() {
|
|
177
|
+
if (!this.cardEl)
|
|
178
|
+
return;
|
|
179
|
+
this.cardEl.style.left = `${this.panelX}px`;
|
|
180
|
+
this.cardEl.style.top = `${this.panelY}px`;
|
|
181
|
+
}
|
|
182
|
+
/**
|
|
183
|
+
* Wire drag-to-move onto the header bar.
|
|
184
|
+
* Clamped strictly within the backdrop bounds so the panel never escapes the grid.
|
|
185
|
+
*/
|
|
186
|
+
attachDrag(header) {
|
|
187
|
+
header.addEventListener('mousedown', (e) => {
|
|
188
|
+
if (this.isFullscreen)
|
|
189
|
+
return;
|
|
190
|
+
if (e.target.closest('button'))
|
|
191
|
+
return;
|
|
192
|
+
e.preventDefault();
|
|
193
|
+
const startMX = e.clientX;
|
|
194
|
+
const startMY = e.clientY;
|
|
195
|
+
const startPX = this.panelX;
|
|
196
|
+
const startPY = this.panelY;
|
|
197
|
+
header.classList.add('pg-chart-panel__header--dragging');
|
|
198
|
+
this.cardEl?.classList.add('pg-chart-panel--dragging');
|
|
199
|
+
const onMove = (mv) => {
|
|
200
|
+
if (!this.backdropEl || !this.cardEl)
|
|
201
|
+
return;
|
|
202
|
+
const maxX = this.backdropEl.offsetWidth - this.cardEl.offsetWidth;
|
|
203
|
+
const maxY = this.backdropEl.offsetHeight - this.cardEl.offsetHeight;
|
|
204
|
+
this.panelX = Math.max(0, Math.min(startPX + mv.clientX - startMX, maxX));
|
|
205
|
+
this.panelY = Math.max(0, Math.min(startPY + mv.clientY - startMY, maxY));
|
|
206
|
+
this.applyPosition();
|
|
207
|
+
};
|
|
208
|
+
const onUp = () => {
|
|
209
|
+
header.classList.remove('pg-chart-panel__header--dragging');
|
|
210
|
+
this.cardEl?.classList.remove('pg-chart-panel--dragging');
|
|
211
|
+
document.removeEventListener('mousemove', onMove);
|
|
212
|
+
document.removeEventListener('mouseup', onUp);
|
|
213
|
+
};
|
|
214
|
+
document.addEventListener('mousemove', onMove);
|
|
215
|
+
document.addEventListener('mouseup', onUp);
|
|
216
|
+
});
|
|
217
|
+
}
|
|
218
|
+
closeDotsMenu() {
|
|
219
|
+
this.dotsMenuEl?.classList.remove('pg-chart-panel__dots-menu--open');
|
|
220
|
+
this.dotsBtnEl?.classList.remove('pg-chart-panel__dots-btn--active');
|
|
221
|
+
}
|
|
222
|
+
toggleFullscreen() {
|
|
223
|
+
if (!this.cardEl || !this.fullscreenBtnEl)
|
|
224
|
+
return;
|
|
225
|
+
this.isFullscreen = !this.isFullscreen;
|
|
226
|
+
this.cardEl.classList.toggle('pg-chart-panel--fullscreen', this.isFullscreen);
|
|
227
|
+
this.fullscreenBtnEl.innerHTML = this.isFullscreen ? ICON_FULLSCREEN_EXIT : ICON_FULLSCREEN;
|
|
228
|
+
this.fullscreenBtnEl.title = this.isFullscreen ? 'Exit fullscreen' : 'Toggle fullscreen';
|
|
229
|
+
if (this.isFullscreen) {
|
|
230
|
+
// Inset 16px from each edge to match calc(100% - 32px) dimensions
|
|
231
|
+
this.panelX = 0;
|
|
232
|
+
this.panelY = 0;
|
|
233
|
+
this.applyPosition();
|
|
234
|
+
}
|
|
235
|
+
else {
|
|
236
|
+
// Re-centre after layout recalculates the shrunk card dimensions
|
|
237
|
+
setTimeout(() => { this.centerPanel(); this.renderChart(); }, 50);
|
|
238
|
+
return;
|
|
239
|
+
}
|
|
240
|
+
setTimeout(() => this.renderChart(), 50);
|
|
241
|
+
}
|
|
242
|
+
renderChart() {
|
|
243
|
+
if (!this.canvasEl || !this.currentData || !this.cardEl)
|
|
244
|
+
return;
|
|
245
|
+
const body = this.canvasEl.parentElement;
|
|
246
|
+
if (!body)
|
|
247
|
+
return;
|
|
248
|
+
const w = body.clientWidth - 16;
|
|
249
|
+
const h = body.clientHeight - 16;
|
|
250
|
+
if (w <= 0 || h <= 0)
|
|
251
|
+
return;
|
|
252
|
+
if (!this.renderer) {
|
|
253
|
+
this.renderer = new ChartRenderer(this.canvasEl);
|
|
254
|
+
}
|
|
255
|
+
this.renderer.render(this.currentData, {
|
|
256
|
+
type: this.currentType,
|
|
257
|
+
width: w,
|
|
258
|
+
height: h,
|
|
259
|
+
showLegend: false,
|
|
260
|
+
showGrid: true,
|
|
261
|
+
animationDuration: 400,
|
|
262
|
+
});
|
|
263
|
+
}
|
|
264
|
+
/**
|
|
265
|
+
* Populates the HTML legend bar with one clickable button per dataset.
|
|
266
|
+
* Each button acts as a toggle: clicking animates the corresponding bars
|
|
267
|
+
* in or out and dims the legend entry to signal its state.
|
|
268
|
+
*/
|
|
269
|
+
buildLegend(data) {
|
|
270
|
+
if (!this.legendEl)
|
|
271
|
+
return;
|
|
272
|
+
this.legendEl.innerHTML = '';
|
|
273
|
+
data.datasets.forEach((ds, i) => {
|
|
274
|
+
const item = document.createElement('button');
|
|
275
|
+
item.type = 'button';
|
|
276
|
+
item.className = 'pg-chart-panel__legend-item';
|
|
277
|
+
const swatch = document.createElement('span');
|
|
278
|
+
swatch.className = 'pg-chart-panel__legend-swatch';
|
|
279
|
+
swatch.style.background = ds.color ?? '#008FFB';
|
|
280
|
+
const label = document.createElement('span');
|
|
281
|
+
label.className = 'pg-chart-panel__legend-label';
|
|
282
|
+
label.textContent = ds.label;
|
|
283
|
+
item.appendChild(swatch);
|
|
284
|
+
item.appendChild(label);
|
|
285
|
+
item.addEventListener('click', () => this.handleLegendToggle(i));
|
|
286
|
+
this.legendEl.appendChild(item);
|
|
287
|
+
});
|
|
288
|
+
}
|
|
289
|
+
/**
|
|
290
|
+
* Toggles a dataset's visibility with a smooth bar-height animation.
|
|
291
|
+
* The legend item is dimmed while its series is hidden.
|
|
292
|
+
*/
|
|
293
|
+
handleLegendToggle(index) {
|
|
294
|
+
if (!this.renderer || !this.currentData || !this.canvasEl)
|
|
295
|
+
return;
|
|
296
|
+
const body = this.canvasEl.parentElement;
|
|
297
|
+
if (!body)
|
|
298
|
+
return;
|
|
299
|
+
const w = body.clientWidth - 16;
|
|
300
|
+
const h = body.clientHeight - 16;
|
|
301
|
+
if (w <= 0 || h <= 0)
|
|
302
|
+
return;
|
|
303
|
+
const nowVisible = this.hiddenSeries.has(index); // toggling TO visible if currently hidden
|
|
304
|
+
if (nowVisible) {
|
|
305
|
+
this.hiddenSeries.delete(index);
|
|
306
|
+
}
|
|
307
|
+
else {
|
|
308
|
+
this.hiddenSeries.add(index);
|
|
309
|
+
}
|
|
310
|
+
const item = this.legendEl?.children[index];
|
|
311
|
+
item?.classList.toggle('pg-chart-panel__legend-item--hidden', !nowVisible);
|
|
312
|
+
this.renderer.toggleSeries(index, nowVisible, this.currentData, {
|
|
313
|
+
type: this.currentType,
|
|
314
|
+
width: w,
|
|
315
|
+
height: h,
|
|
316
|
+
showLegend: false,
|
|
317
|
+
showGrid: true,
|
|
318
|
+
animationDuration: 400,
|
|
319
|
+
});
|
|
320
|
+
}
|
|
321
|
+
downloadChart(format) {
|
|
322
|
+
if (!this.canvasEl)
|
|
323
|
+
return;
|
|
324
|
+
let sourceCanvas = this.canvasEl;
|
|
325
|
+
// JPEG has no alpha channel — composite onto a white background so
|
|
326
|
+
// transparent areas don't render as solid black.
|
|
327
|
+
if (format === 'jpeg') {
|
|
328
|
+
const offscreen = document.createElement('canvas');
|
|
329
|
+
offscreen.width = this.canvasEl.width;
|
|
330
|
+
offscreen.height = this.canvasEl.height;
|
|
331
|
+
const ctx = offscreen.getContext('2d');
|
|
332
|
+
if (ctx) {
|
|
333
|
+
ctx.fillStyle = '#ffffff';
|
|
334
|
+
ctx.fillRect(0, 0, offscreen.width, offscreen.height);
|
|
335
|
+
ctx.drawImage(this.canvasEl, 0, 0);
|
|
336
|
+
sourceCanvas = offscreen;
|
|
337
|
+
}
|
|
338
|
+
}
|
|
339
|
+
const mimeType = format === 'png' ? 'image/png' : 'image/jpeg';
|
|
340
|
+
const dataUrl = sourceCanvas.toDataURL(mimeType, 0.95);
|
|
341
|
+
const a = document.createElement('a');
|
|
342
|
+
a.href = dataUrl;
|
|
343
|
+
a.download = `${this.currentTitle || 'chart'}.${format}`;
|
|
344
|
+
// Must be in the DOM for the click to trigger a download in all browsers.
|
|
345
|
+
document.body.appendChild(a);
|
|
346
|
+
a.click();
|
|
347
|
+
document.body.removeChild(a);
|
|
348
|
+
}
|
|
349
|
+
}
|
|
350
|
+
//# sourceMappingURL=chart-panel.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"chart-panel.js","sourceRoot":"","sources":["../../src/chart/chart-panel.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
import type { ChartData } from './chart-data-transformer';
|
|
2
|
+
import type { ChartPanelType } from './chart-panel';
|
|
3
|
+
export interface ChartRenderOptions {
|
|
4
|
+
type: ChartPanelType | 'bar' | 'line' | 'pie' | 'doughnut';
|
|
5
|
+
width?: number;
|
|
6
|
+
height?: number;
|
|
7
|
+
padding?: number;
|
|
8
|
+
showLegend?: boolean;
|
|
9
|
+
showGrid?: boolean;
|
|
10
|
+
showValues?: boolean;
|
|
11
|
+
barWidth?: number;
|
|
12
|
+
lineWidth?: number;
|
|
13
|
+
smooth?: boolean;
|
|
14
|
+
fontFamily?: string;
|
|
15
|
+
fontSize?: number;
|
|
16
|
+
textColor?: string;
|
|
17
|
+
gridColor?: string;
|
|
18
|
+
backgroundColor?: string;
|
|
19
|
+
animationDuration?: number;
|
|
20
|
+
}
|
|
21
|
+
export declare class ChartRenderer {
|
|
22
|
+
private canvas;
|
|
23
|
+
private ctx;
|
|
24
|
+
private animProgress;
|
|
25
|
+
private rafId;
|
|
26
|
+
private hoverX;
|
|
27
|
+
private hoverY;
|
|
28
|
+
private hoverRafId;
|
|
29
|
+
/** Smoothly lerped cursor-Y used to animate the tooltip like ApexCharts. */
|
|
30
|
+
private tooltipSmoothedY;
|
|
31
|
+
private lastData;
|
|
32
|
+
private lastOptions;
|
|
33
|
+
/** Per-dataset scale multiplier used by toggle animations (0 = hidden, 1 = full). */
|
|
34
|
+
private seriesScales;
|
|
35
|
+
/** Active RAF IDs for per-series toggle animations, keyed by dataset index. */
|
|
36
|
+
private seriesToggleRafs;
|
|
37
|
+
constructor(canvas: HTMLCanvasElement);
|
|
38
|
+
render(data: ChartData, opts?: ChartRenderOptions): void;
|
|
39
|
+
destroy(): void;
|
|
40
|
+
/**
|
|
41
|
+
* Animate a single dataset in or out without re-running the full chart animation.
|
|
42
|
+
* Each dataset's bar heights are multiplied by a per-series scale factor that is
|
|
43
|
+
* smoothly interpolated from its current value to 0 (hide) or 1 (show).
|
|
44
|
+
*
|
|
45
|
+
* @param index - Index in `data.datasets` to animate.
|
|
46
|
+
* @param toVisible - `true` = grow bars into view; `false` = shrink bars to zero.
|
|
47
|
+
* @param data - Full chart data including the toggled series.
|
|
48
|
+
* @param opts - Render options matching the current chart configuration.
|
|
49
|
+
*/
|
|
50
|
+
toggleSeries(index: number, toVisible: boolean, data: ChartData, opts?: ChartRenderOptions): void;
|
|
51
|
+
private attachEvents;
|
|
52
|
+
private scheduleHoverRedraw;
|
|
53
|
+
/**
|
|
54
|
+
* Eases `tooltipSmoothedY` toward the raw cursor Y (`hoverY`) by a lerp
|
|
55
|
+
* factor that produces an ApexCharts-style lag behind fast movement.
|
|
56
|
+
*
|
|
57
|
+
* @returns `true` when another frame is still required to complete the easing.
|
|
58
|
+
*/
|
|
59
|
+
private stepTooltipLerp;
|
|
60
|
+
private drawHover;
|
|
61
|
+
private drawCartesianHover;
|
|
62
|
+
private drawBarHover;
|
|
63
|
+
private drawTooltip;
|
|
64
|
+
private animate;
|
|
65
|
+
private getPlotArea;
|
|
66
|
+
private draw;
|
|
67
|
+
private drawColumnGrouped;
|
|
68
|
+
private drawColumnStacked;
|
|
69
|
+
private drawColumn100Stacked;
|
|
70
|
+
private drawBarGrouped;
|
|
71
|
+
private drawBarStacked;
|
|
72
|
+
private drawBar100Stacked;
|
|
73
|
+
private drawLine;
|
|
74
|
+
private drawArea;
|
|
75
|
+
private drawPie;
|
|
76
|
+
private drawScatter;
|
|
77
|
+
private drawPolar;
|
|
78
|
+
private drawFunnel;
|
|
79
|
+
private drawGridLines;
|
|
80
|
+
/**
|
|
81
|
+
* Draws relative (0–100 %) Y-axis gridlines for multi-series charts where each
|
|
82
|
+
* dataset is normalised to its own maximum, making the shared axis unitless.
|
|
83
|
+
*/
|
|
84
|
+
private drawGridLinesRelative;
|
|
85
|
+
private drawLegend;
|
|
86
|
+
private drawAxes;
|
|
87
|
+
private niceMax;
|
|
88
|
+
private getLabelStep;
|
|
89
|
+
private easeOutQuart;
|
|
90
|
+
private truncate;
|
|
91
|
+
private formatNum;
|
|
92
|
+
}
|
|
93
|
+
//# sourceMappingURL=chart-renderer.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"chart-renderer.d.ts","sourceRoot":"","sources":["../../src/chart/chart-renderer.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,0BAA0B,CAAC;AAC1D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAEpD,MAAM,WAAW,kBAAkB;IACjC,IAAI,EAAE,cAAc,GAAG,KAAK,GAAG,MAAM,GAAG,KAAK,GAAG,UAAU,CAAC;IAC3D,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,iBAAiB,CAAC,EAAE,MAAM,CAAC;CAC5B;AAoCD,qBAAa,aAAa;IACxB,OAAO,CAAC,MAAM,CAAoB;IAClC,OAAO,CAAC,GAAG,CAA2B;IACtC,OAAO,CAAC,YAAY,CAAK;IACzB,OAAO,CAAC,KAAK,CAAuB;IAGpC,OAAO,CAAC,MAAM,CAAuB;IACrC,OAAO,CAAC,MAAM,CAAuB;IACrC,OAAO,CAAC,UAAU,CAAuB;IACzC,4EAA4E;IAC5E,OAAO,CAAC,gBAAgB,CAAuB;IAC/C,OAAO,CAAC,QAAQ,CAA0B;IAC1C,OAAO,CAAC,WAAW,CAA6C;IAEhE,qFAAqF;IACrF,OAAO,CAAC,YAAY,CAAgB;IACpC,+EAA+E;IAC/E,OAAO,CAAC,gBAAgB,CAA6B;gBAEzC,MAAM,EAAE,iBAAiB;IAQrC,MAAM,CAAC,IAAI,EAAE,SAAS,EAAE,IAAI,GAAE,kBAA+C,GAAG,IAAI;IAwBpF,OAAO,IAAI,IAAI;IAaf;;;;;;;;;OASG;IACH,YAAY,CAAC,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,GAAE,kBAA+C,GAAG,IAAI;IAkC7H,OAAO,CAAC,YAAY;IAoBpB,OAAO,CAAC,mBAAmB;IAkB3B;;;;;OAKG;IACH,OAAO,CAAC,eAAe;IAevB,OAAO,CAAC,SAAS;IAejB,OAAO,CAAC,kBAAkB;IA6E1B,OAAO,CAAC,YAAY;IA2CpB,OAAO,CAAC,WAAW;IAuHnB,OAAO,CAAC,OAAO;IAkBf,OAAO,CAAC,WAAW;IAiBnB,OAAO,CAAC,IAAI;IAmCZ,OAAO,CAAC,iBAAiB;IAoEzB,OAAO,CAAC,iBAAiB;IAoDzB,OAAO,CAAC,oBAAoB;IA+C5B,OAAO,CAAC,cAAc;IAyEtB,OAAO,CAAC,cAAc;IAwEtB,OAAO,CAAC,iBAAiB;IAmEzB,OAAO,CAAC,QAAQ;IAmDhB,OAAO,CAAC,QAAQ;IAqDhB,OAAO,CAAC,OAAO;IAwDf,OAAO,CAAC,WAAW;IAwCnB,OAAO,CAAC,SAAS;IA0DjB,OAAO,CAAC,UAAU;IAyClB,OAAO,CAAC,aAAa;IAmBrB;;;OAGG;IACH,OAAO,CAAC,qBAAqB;IAqB7B,OAAO,CAAC,UAAU;IAoBlB,OAAO,CAAC,QAAQ;IAQhB,OAAO,CAAC,OAAO;IAUf,OAAO,CAAC,YAAY;IAKpB,OAAO,CAAC,YAAY;IAIpB,OAAO,CAAC,QAAQ;IAIhB,OAAO,CAAC,SAAS;CAMlB"}
|