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,388 @@
|
|
|
1
|
+
import { GridEventType } from '../types/event.types';
|
|
2
|
+
import { detailNodeId } from '../types/row.types';
|
|
3
|
+
import { createDiv } from './dom-utils';
|
|
4
|
+
/**
|
|
5
|
+
* Inset (px, all sides) applied to `.pg-row--detail-container` in `base-styles.ts`
|
|
6
|
+
* so the nested grid never touches the detail row's edges. Auto-height must add
|
|
7
|
+
* this back in — `box-sizing: border-box` means the padding eats into the row's
|
|
8
|
+
* own height, so the row needs to be taller than the nested grid's content by
|
|
9
|
+
* exactly this much on top and bottom, or the nested grid would be clipped.
|
|
10
|
+
*/
|
|
11
|
+
const DETAIL_ROW_PADDING_PX = 20;
|
|
12
|
+
/** Fallback for `MasterDetailConfig.keepDetailGridsCount` when unset. */
|
|
13
|
+
const DEFAULT_KEEP_DETAIL_GRIDS_COUNT = 10;
|
|
14
|
+
/**
|
|
15
|
+
* Renders Master/Detail rows as a full-width layer spanning the parent
|
|
16
|
+
* grid's `bodyWrapEl`, independent of the left/center/right pinned-column
|
|
17
|
+
* panels `BodyRenderer` owns.
|
|
18
|
+
*
|
|
19
|
+
* Living outside those panels is what makes the detail section span the
|
|
20
|
+
* full grid width regardless of pinned columns and stay put during
|
|
21
|
+
* horizontal scroll: its content wrapper only ever receives the vertical
|
|
22
|
+
* `--pg-scroll-y` transform (see `base-styles.ts`), never the horizontal one.
|
|
23
|
+
*
|
|
24
|
+
* Detail containers are cached by `nodeId` and reused across renders exactly
|
|
25
|
+
* like `BodyRenderer.renderedRowMap` — a nested `GridCore` instance is
|
|
26
|
+
* expensive to construct (it builds an entire independent grid), so it is
|
|
27
|
+
* created lazily on first expand. While a row remains expanded but scrolls
|
|
28
|
+
* outside the virtualized render window, its container is hidden
|
|
29
|
+
* (`display: none`) rather than destroyed, trading a small constant amount
|
|
30
|
+
* of retained memory (bounded by how many rows a user has actually expanded)
|
|
31
|
+
* for avoiding repeated fetch/mount/destroy churn on every scroll frame.
|
|
32
|
+
*
|
|
33
|
+
* On collapse, the entry is likewise not destroyed immediately — it moves
|
|
34
|
+
* into {@link collapsedCache}, an LRU keyed by `MasterDetailConfig.keepDetailGridsCount`,
|
|
35
|
+
* so re-expanding the same row restores the nested grid's live state (sort,
|
|
36
|
+
* column order/width, scroll, selection) instead of rebuilding from scratch.
|
|
37
|
+
* Only once evicted from that bounded cache is the instance actually destroyed.
|
|
38
|
+
*/
|
|
39
|
+
export class DetailRowRenderer {
|
|
40
|
+
constructor() {
|
|
41
|
+
this.layerEl = null;
|
|
42
|
+
this.contentEl = null;
|
|
43
|
+
this.entries = new Map();
|
|
44
|
+
/**
|
|
45
|
+
* Collapsed entries kept alive for instant, stateful re-expansion. Map
|
|
46
|
+
* insertion order doubles as LRU order — re-inserting a key on access
|
|
47
|
+
* moves it to the end, and eviction always removes the first (oldest) key.
|
|
48
|
+
*/
|
|
49
|
+
this.collapsedCache = new Map();
|
|
50
|
+
this.masterDetailEngine = null;
|
|
51
|
+
this.nestedGridFactory = null;
|
|
52
|
+
this.iconRenderer = null;
|
|
53
|
+
this.themeManager = null;
|
|
54
|
+
this.parentApi = null;
|
|
55
|
+
/** Forwards a wheel delta to the parent grid's own vertical scroll. Set by `GridRenderer` so nested grids never capture wheel gestures for themselves. */
|
|
56
|
+
this.parentScrollForwarder = null;
|
|
57
|
+
}
|
|
58
|
+
/** Mounts the full-width overlay layer as a sibling of the left/center/right body panels. */
|
|
59
|
+
mount(bodyWrapEl) {
|
|
60
|
+
this.layerEl = createDiv('pg-detail-layer');
|
|
61
|
+
this.contentEl = createDiv('pg-detail-layer__content');
|
|
62
|
+
this.layerEl.appendChild(this.contentEl);
|
|
63
|
+
bodyWrapEl.appendChild(this.layerEl);
|
|
64
|
+
}
|
|
65
|
+
/** Wires collaborators. Called once from `GridCore.buildContext` via `GridRenderer.setMasterDetailConfig`. */
|
|
66
|
+
setDependencies(engine, factory, iconRenderer, themeManager) {
|
|
67
|
+
this.masterDetailEngine = engine;
|
|
68
|
+
this.nestedGridFactory = factory;
|
|
69
|
+
this.iconRenderer = iconRenderer;
|
|
70
|
+
this.themeManager = themeManager;
|
|
71
|
+
}
|
|
72
|
+
/**
|
|
73
|
+
* Wires the callback used to redirect wheel gestures over any nested grid
|
|
74
|
+
* to the parent's own vertical scroll — see `attachWheelForwarding`.
|
|
75
|
+
*/
|
|
76
|
+
setParentScrollForwarder(fn) {
|
|
77
|
+
this.parentScrollForwarder = fn;
|
|
78
|
+
}
|
|
79
|
+
/** Late-bound once `GridApi` exists (after `GridCore`'s constructor finishes building context). Passed through to `detailRendererFn` as `parentApi`. */
|
|
80
|
+
setParentApi(api) {
|
|
81
|
+
this.parentApi = api;
|
|
82
|
+
}
|
|
83
|
+
/**
|
|
84
|
+
* Reconciles the overlay layer against the current detail rows.
|
|
85
|
+
*
|
|
86
|
+
* @param windowedDetailRows - `type === 'detail'` rows within the current
|
|
87
|
+
* virtualized render window — these get built/shown.
|
|
88
|
+
* @param allDetailNodeIds - every `type === 'detail'` node id currently in
|
|
89
|
+
* `visibleRows` (not just the window) — anything cached but absent here
|
|
90
|
+
* was collapsed or its parent row was removed, and is torn down.
|
|
91
|
+
*/
|
|
92
|
+
sync(windowedDetailRows, allDetailNodeIds) {
|
|
93
|
+
if (!this.contentEl || !this.masterDetailEngine)
|
|
94
|
+
return;
|
|
95
|
+
for (const [nodeId, entry] of this.entries) {
|
|
96
|
+
// Entries already shrinking out via `beginCollapse` manage their own
|
|
97
|
+
// teardown (transitionend / fallback timer) — leave them alone here,
|
|
98
|
+
// or the animation would be skipped and the row would vanish instantly.
|
|
99
|
+
if (entry.collapsing)
|
|
100
|
+
continue;
|
|
101
|
+
if (!allDetailNodeIds.has(nodeId)) {
|
|
102
|
+
this.destroyEntry(entry);
|
|
103
|
+
this.entries.delete(nodeId);
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
const windowedIds = new Set(windowedDetailRows.map((r) => r.nodeId));
|
|
107
|
+
for (const [nodeId, entry] of this.entries) {
|
|
108
|
+
if (entry.collapsing)
|
|
109
|
+
continue;
|
|
110
|
+
if (!windowedIds.has(nodeId))
|
|
111
|
+
entry.containerEl.style.display = 'none';
|
|
112
|
+
}
|
|
113
|
+
for (const row of windowedDetailRows) {
|
|
114
|
+
let entry = this.entries.get(row.nodeId);
|
|
115
|
+
if (!entry) {
|
|
116
|
+
entry = this.reviveOrBuildEntry(row);
|
|
117
|
+
this.entries.set(row.nodeId, entry);
|
|
118
|
+
this.playEnterAnimation(entry);
|
|
119
|
+
}
|
|
120
|
+
entry.containerEl.style.display = '';
|
|
121
|
+
if (!entry.contentBuilt)
|
|
122
|
+
this.tryBuildContent(entry, row);
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
/** Reuses a cached collapsed entry (preserving its nested grid's live state) when one exists, otherwise builds a fresh one. */
|
|
126
|
+
reviveOrBuildEntry(row) {
|
|
127
|
+
const cached = this.collapsedCache.get(row.nodeId);
|
|
128
|
+
if (cached) {
|
|
129
|
+
this.collapsedCache.delete(row.nodeId);
|
|
130
|
+
return cached;
|
|
131
|
+
}
|
|
132
|
+
return this.buildEntry(row);
|
|
133
|
+
}
|
|
134
|
+
/**
|
|
135
|
+
* Begins the shrink/fade-out for `parentNodeId`'s detail row, called by
|
|
136
|
+
* `GridCore` synchronously on collapse-click — **before** the pipeline
|
|
137
|
+
* re-runs. This timing matters: once `MasterDetailEngine.injectDetailRows`
|
|
138
|
+
* drops the row, `RowPositionSheet`'s rule for it disappears for good on
|
|
139
|
+
* the very next render, so the current `top`/`height` must be captured and
|
|
140
|
+
* frozen as inline styles now, while they're still valid, or there would be
|
|
141
|
+
* nothing correct to animate from.
|
|
142
|
+
*/
|
|
143
|
+
beginCollapse(parentNodeId) {
|
|
144
|
+
if (!this.contentEl)
|
|
145
|
+
return;
|
|
146
|
+
const nodeId = detailNodeId(parentNodeId);
|
|
147
|
+
const entry = this.entries.get(nodeId);
|
|
148
|
+
if (!entry || entry.collapsing)
|
|
149
|
+
return;
|
|
150
|
+
entry.collapsing = true;
|
|
151
|
+
const parentRect = this.contentEl.getBoundingClientRect();
|
|
152
|
+
const rect = entry.containerEl.getBoundingClientRect();
|
|
153
|
+
entry.containerEl.style.top = `${rect.top - parentRect.top}px`;
|
|
154
|
+
entry.containerEl.style.height = `${rect.height}px`;
|
|
155
|
+
// Force layout so the frozen top/height commit as a distinct paint —
|
|
156
|
+
// otherwise the browser may coalesce this write with the shrink below
|
|
157
|
+
// into a single frame and skip the transition entirely.
|
|
158
|
+
void entry.containerEl.offsetHeight;
|
|
159
|
+
let finished = false;
|
|
160
|
+
const finish = () => {
|
|
161
|
+
if (finished)
|
|
162
|
+
return;
|
|
163
|
+
finished = true;
|
|
164
|
+
entry.containerEl.removeEventListener('transitionend', onTransitionEnd);
|
|
165
|
+
if (this.entries.get(nodeId) === entry) {
|
|
166
|
+
this.entries.delete(nodeId);
|
|
167
|
+
this.cacheCollapsedEntry(nodeId, entry);
|
|
168
|
+
}
|
|
169
|
+
};
|
|
170
|
+
const onTransitionEnd = (e) => {
|
|
171
|
+
if (e.propertyName === 'height')
|
|
172
|
+
finish();
|
|
173
|
+
};
|
|
174
|
+
entry.containerEl.addEventListener('transitionend', onTransitionEnd);
|
|
175
|
+
// Safety net — guarantees cleanup even if the element is hidden/removed
|
|
176
|
+
// from layout mid-transition and never fires `transitionend`.
|
|
177
|
+
setTimeout(finish, 260);
|
|
178
|
+
requestAnimationFrame(() => {
|
|
179
|
+
entry.containerEl.classList.add('pg-row--detail-collapsing');
|
|
180
|
+
entry.containerEl.style.height = '0px';
|
|
181
|
+
});
|
|
182
|
+
}
|
|
183
|
+
/**
|
|
184
|
+
* Fades a freshly-created detail entry in. Height is left to the
|
|
185
|
+
* `pg-row--detail-container` CSS transition — the value `RowPositionSheet`
|
|
186
|
+
* assigns naturally animates from the initial (min/cached) height to the
|
|
187
|
+
* auto-measured one once the nested grid finishes its first render.
|
|
188
|
+
*/
|
|
189
|
+
playEnterAnimation(entry) {
|
|
190
|
+
entry.containerEl.classList.add('pg-row--detail-entering');
|
|
191
|
+
requestAnimationFrame(() => {
|
|
192
|
+
requestAnimationFrame(() => {
|
|
193
|
+
entry.containerEl.classList.remove('pg-row--detail-entering');
|
|
194
|
+
});
|
|
195
|
+
});
|
|
196
|
+
}
|
|
197
|
+
destroy() {
|
|
198
|
+
for (const entry of this.entries.values())
|
|
199
|
+
this.destroyEntry(entry);
|
|
200
|
+
this.entries.clear();
|
|
201
|
+
for (const entry of this.collapsedCache.values())
|
|
202
|
+
this.destroyEntry(entry);
|
|
203
|
+
this.collapsedCache.clear();
|
|
204
|
+
this.layerEl?.remove();
|
|
205
|
+
this.layerEl = null;
|
|
206
|
+
this.contentEl = null;
|
|
207
|
+
}
|
|
208
|
+
/** The nested `GridCore` instance mounted for `parentNodeId`'s detail row, or `undefined` if not expanded/not yet built. Backs `GridApi.getDetailGridApi`. */
|
|
209
|
+
getNestedInstance(parentNodeId) {
|
|
210
|
+
return this.entries.get(detailNodeId(parentNodeId))?.instance ?? undefined;
|
|
211
|
+
}
|
|
212
|
+
// ─── Private ────────────────────────────────────────────────────────────
|
|
213
|
+
buildEntry(row) {
|
|
214
|
+
const containerEl = createDiv('pg-row pg-row--detail-container');
|
|
215
|
+
containerEl.setAttribute('data-node-id', row.nodeId);
|
|
216
|
+
this.contentEl.appendChild(containerEl);
|
|
217
|
+
return { containerEl, instance: null, contentBuilt: false, collapsing: false, cleanupFns: [] };
|
|
218
|
+
}
|
|
219
|
+
/**
|
|
220
|
+
* Moves a just-collapsed entry into {@link collapsedCache} instead of
|
|
221
|
+
* destroying it, so the next expand of the same row is instant and starts
|
|
222
|
+
* from exactly where the user left it. Clears the transient collapse
|
|
223
|
+
* animation's inline `top`/`height` overrides first — `RowPositionSheet`
|
|
224
|
+
* governs this row's position again the moment its node id reappears in
|
|
225
|
+
* the pipeline output on re-expand.
|
|
226
|
+
*/
|
|
227
|
+
cacheCollapsedEntry(nodeId, entry) {
|
|
228
|
+
entry.collapsing = false;
|
|
229
|
+
entry.containerEl.classList.remove('pg-row--detail-collapsing');
|
|
230
|
+
entry.containerEl.style.removeProperty('top');
|
|
231
|
+
entry.containerEl.style.removeProperty('height');
|
|
232
|
+
entry.containerEl.style.display = 'none';
|
|
233
|
+
// Re-inserting moves the key to the end for LRU-by-insertion-order.
|
|
234
|
+
this.collapsedCache.delete(nodeId);
|
|
235
|
+
this.collapsedCache.set(nodeId, entry);
|
|
236
|
+
const keepCount = this.masterDetailEngine?.getConfig()?.keepDetailGridsCount ?? DEFAULT_KEEP_DETAIL_GRIDS_COUNT;
|
|
237
|
+
while (this.collapsedCache.size > keepCount) {
|
|
238
|
+
const oldestKey = this.collapsedCache.keys().next().value;
|
|
239
|
+
if (oldestKey === undefined)
|
|
240
|
+
break;
|
|
241
|
+
const oldest = this.collapsedCache.get(oldestKey);
|
|
242
|
+
this.collapsedCache.delete(oldestKey);
|
|
243
|
+
this.destroyEntry(oldest);
|
|
244
|
+
}
|
|
245
|
+
}
|
|
246
|
+
/**
|
|
247
|
+
* Builds real detail content once the row's data is ready — shows a
|
|
248
|
+
* loading indicator instead while `getDetailData` is still in flight, and
|
|
249
|
+
* retries on the next `sync()` call (triggered by
|
|
250
|
+
* `MasterDetailEngine`'s refresh callback when the fetch resolves).
|
|
251
|
+
*/
|
|
252
|
+
tryBuildContent(entry, row) {
|
|
253
|
+
const engine = this.masterDetailEngine;
|
|
254
|
+
const parentNodeId = row.parentNodeId;
|
|
255
|
+
if (engine.isPending(parentNodeId)) {
|
|
256
|
+
if (!entry.containerEl.querySelector('.pg-detail-loading')) {
|
|
257
|
+
entry.containerEl.appendChild(this.buildLoadingIndicator());
|
|
258
|
+
}
|
|
259
|
+
return;
|
|
260
|
+
}
|
|
261
|
+
entry.containerEl.innerHTML = '';
|
|
262
|
+
const config = engine.getConfig();
|
|
263
|
+
if (config?.detailRendererFn) {
|
|
264
|
+
const result = config.detailRendererFn({
|
|
265
|
+
rowData: row.data,
|
|
266
|
+
nodeId: parentNodeId,
|
|
267
|
+
containerEl: entry.containerEl,
|
|
268
|
+
parentApi: this.parentApi,
|
|
269
|
+
});
|
|
270
|
+
if (result && result !== entry.containerEl)
|
|
271
|
+
entry.containerEl.appendChild(result);
|
|
272
|
+
entry.contentBuilt = true;
|
|
273
|
+
return;
|
|
274
|
+
}
|
|
275
|
+
const nestedHost = createDiv('pg-detail-nested-grid-host');
|
|
276
|
+
entry.containerEl.appendChild(nestedHost);
|
|
277
|
+
const nestedOptions = engine.resolveDetailGridOptions(row, this.themeManager.getActiveTheme());
|
|
278
|
+
const instance = this.nestedGridFactory(nestedHost, nestedOptions);
|
|
279
|
+
entry.instance = instance;
|
|
280
|
+
entry.contentBuilt = true;
|
|
281
|
+
if (config?.detailResizable) {
|
|
282
|
+
this.attachResizeHandle(entry, parentNodeId);
|
|
283
|
+
}
|
|
284
|
+
else if (config?.detailAutoHeight !== false) {
|
|
285
|
+
this.observeAutoHeight(entry, parentNodeId, instance);
|
|
286
|
+
}
|
|
287
|
+
this.attachWheelForwarding(entry, instance);
|
|
288
|
+
}
|
|
289
|
+
/**
|
|
290
|
+
* Chains vertical wheel scroll between a nested grid and the parent, the
|
|
291
|
+
* same way a native scrollable element nested in another one behaves:
|
|
292
|
+
* the nested grid scrolls its own content first, and only once it has
|
|
293
|
+
* reached its scroll boundary in the gesture's direction does the
|
|
294
|
+
* remaining scroll pass through to the parent grid's own vertical scroll.
|
|
295
|
+
* This is what makes an unlimited-height parent and a height-constrained
|
|
296
|
+
* detail section (`detailMaxHeight`, `detailAutoHeight: false`) both fully
|
|
297
|
+
* usable by wheel alone. Horizontal gestures are left alone entirely: the
|
|
298
|
+
* nested grid has its own columns and always scrolls them itself.
|
|
299
|
+
*
|
|
300
|
+
* Attached in the *capture* phase on `entry.containerEl` — an ancestor of
|
|
301
|
+
* the nested grid's own wheel listener (added in the bubble phase by
|
|
302
|
+
* `ScrollController.mount`). Capture fires first, so returning early here
|
|
303
|
+
* (nested can still scroll) simply lets that bubble-phase listener handle
|
|
304
|
+
* the event normally; forwarding instead calls `stopPropagation` to keep
|
|
305
|
+
* the event from ever reaching it, so there is no double-scroll either way.
|
|
306
|
+
*/
|
|
307
|
+
attachWheelForwarding(entry, instance) {
|
|
308
|
+
const handler = (e) => {
|
|
309
|
+
if (e.ctrlKey)
|
|
310
|
+
return; // let pinch-to-zoom through, matching ScrollController.onWheel's own guard
|
|
311
|
+
if (Math.abs(e.deltaX) > Math.abs(e.deltaY))
|
|
312
|
+
return; // horizontal-dominant: let the nested grid scroll itself
|
|
313
|
+
const nestedCanContinue = e.deltaY < 0 ? instance.api.canScrollUp() : instance.api.canScrollDown();
|
|
314
|
+
if (nestedCanContinue)
|
|
315
|
+
return; // let the nested grid's own scroll handle it
|
|
316
|
+
e.preventDefault();
|
|
317
|
+
e.stopPropagation();
|
|
318
|
+
this.parentScrollForwarder?.(e.deltaY);
|
|
319
|
+
};
|
|
320
|
+
entry.containerEl.addEventListener('wheel', handler, { capture: true, passive: false });
|
|
321
|
+
entry.cleanupFns.push(() => entry.containerEl.removeEventListener('wheel', handler, { capture: true }));
|
|
322
|
+
}
|
|
323
|
+
/**
|
|
324
|
+
* Tracks the nested grid's natural content height by reading the
|
|
325
|
+
* `--pg-content-height` CSS var its own `GridRenderer` already maintains
|
|
326
|
+
* (`grid-renderer.ts` `performRender`), plus header/footer chrome —
|
|
327
|
+
* recomputed whenever the nested grid re-renders. This avoids the
|
|
328
|
+
* `ResizeObserver` feedback loop that would occur from measuring a
|
|
329
|
+
* container whose height is itself derived from this same computation
|
|
330
|
+
* (the nested grid's `.pg-grid` root is `height: 100%` of its host, so
|
|
331
|
+
* observing the host's rendered size would just echo back what we set it to).
|
|
332
|
+
*/
|
|
333
|
+
observeAutoHeight(entry, parentNodeId, instance) {
|
|
334
|
+
const wrapperEl = entry.containerEl.querySelector('.pg-grid');
|
|
335
|
+
if (!wrapperEl)
|
|
336
|
+
return;
|
|
337
|
+
const recompute = () => {
|
|
338
|
+
const totalContentPx = parseFloat(wrapperEl.style.getPropertyValue('--pg-content-height')) || 0;
|
|
339
|
+
const headerEl = wrapperEl.querySelector('.pg-grid__header');
|
|
340
|
+
const footerEl = wrapperEl.querySelector('.pg-grid__footer');
|
|
341
|
+
const chrome = (headerEl?.offsetHeight ?? 0) + (footerEl?.offsetHeight ?? 0) + 2; // + border
|
|
342
|
+
this.masterDetailEngine.setDetailHeight(parentNodeId, chrome + totalContentPx + DETAIL_ROW_PADDING_PX * 2);
|
|
343
|
+
};
|
|
344
|
+
const unsubscribe = instance.api.on(GridEventType.ROWS_RENDERED, () => requestAnimationFrame(recompute));
|
|
345
|
+
entry.cleanupFns.push(unsubscribe);
|
|
346
|
+
requestAnimationFrame(recompute);
|
|
347
|
+
}
|
|
348
|
+
/** Bottom-edge drag handle — mutually exclusive with auto-height; the user's explicit size takes priority. */
|
|
349
|
+
attachResizeHandle(entry, parentNodeId) {
|
|
350
|
+
const handle = createDiv('pg-detail-resize-handle');
|
|
351
|
+
handle.setAttribute('data-detail-resize-handle', '');
|
|
352
|
+
entry.containerEl.appendChild(handle);
|
|
353
|
+
let startY = 0;
|
|
354
|
+
let startHeight = 0;
|
|
355
|
+
const onMouseMove = (e) => {
|
|
356
|
+
this.masterDetailEngine.setDetailHeight(parentNodeId, startHeight + (e.clientY - startY));
|
|
357
|
+
};
|
|
358
|
+
const onMouseUp = () => {
|
|
359
|
+
document.removeEventListener('mousemove', onMouseMove);
|
|
360
|
+
document.removeEventListener('mouseup', onMouseUp);
|
|
361
|
+
};
|
|
362
|
+
const onMouseDown = (e) => {
|
|
363
|
+
e.preventDefault();
|
|
364
|
+
startY = e.clientY;
|
|
365
|
+
startHeight = entry.containerEl.getBoundingClientRect().height;
|
|
366
|
+
document.addEventListener('mousemove', onMouseMove);
|
|
367
|
+
document.addEventListener('mouseup', onMouseUp);
|
|
368
|
+
};
|
|
369
|
+
handle.addEventListener('mousedown', onMouseDown);
|
|
370
|
+
entry.cleanupFns.push(() => {
|
|
371
|
+
handle.removeEventListener('mousedown', onMouseDown);
|
|
372
|
+
onMouseUp();
|
|
373
|
+
});
|
|
374
|
+
}
|
|
375
|
+
buildLoadingIndicator() {
|
|
376
|
+
const el = createDiv('pg-detail-loading');
|
|
377
|
+
el.appendChild(this.iconRenderer.render('loading', { size: 20, spin: true }));
|
|
378
|
+
this.iconRenderer.injectSpinKeyframes();
|
|
379
|
+
return el;
|
|
380
|
+
}
|
|
381
|
+
destroyEntry(entry) {
|
|
382
|
+
for (const fn of entry.cleanupFns)
|
|
383
|
+
fn();
|
|
384
|
+
entry.instance?.destroy();
|
|
385
|
+
entry.containerEl.remove();
|
|
386
|
+
}
|
|
387
|
+
}
|
|
388
|
+
//# sourceMappingURL=detail-row-renderer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"detail-row-renderer.js","sourceRoot":"","sources":["../../src/renderer/detail-row-renderer.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
export declare function createElement<K extends keyof HTMLElementTagNameMap>(tag: K, attrs?: Record<string, string | number | boolean>, cssText?: string): HTMLElementTagNameMap[K];
|
|
2
|
+
export declare function createDiv(className?: string, cssText?: string): HTMLDivElement;
|
|
3
|
+
export declare function setStyles(el: HTMLElement, styles: Partial<CSSStyleDeclaration>): void;
|
|
4
|
+
export declare function clearChildren(el: HTMLElement): void;
|
|
5
|
+
export declare function replaceChildren(el: HTMLElement, ...children: Node[]): void;
|
|
6
|
+
export declare function addClasses(el: HTMLElement, ...classes: string[]): void;
|
|
7
|
+
export declare function removeClasses(el: HTMLElement, ...classes: string[]): void;
|
|
8
|
+
export declare function toggleClass(el: HTMLElement, cls: string, condition: boolean): void;
|
|
9
|
+
export declare function getScrollbarWidth(): number;
|
|
10
|
+
export declare function measureTextWidth(text: string, font: string): number;
|
|
11
|
+
export declare function clamp(value: number, min: number, max: number): number;
|
|
12
|
+
export declare function getElementOffset(el: HTMLElement): {
|
|
13
|
+
top: number;
|
|
14
|
+
left: number;
|
|
15
|
+
};
|
|
16
|
+
export declare function isScrolledIntoView(el: HTMLElement, container: HTMLElement): boolean;
|
|
17
|
+
export declare function scrollIntoViewIfNeeded(el: HTMLElement, container: HTMLElement): void;
|
|
18
|
+
export declare function debounce<T extends (...args: unknown[]) => void>(fn: T, delay: number): (...args: Parameters<T>) => void;
|
|
19
|
+
export declare function throttle<T extends (...args: unknown[]) => void>(fn: T, interval: number): (...args: Parameters<T>) => void;
|
|
20
|
+
export declare function raf(fn: () => void): () => void;
|
|
21
|
+
export declare function rafLoop(fn: (dt: number) => void): () => void;
|
|
22
|
+
//# sourceMappingURL=dom-utils.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dom-utils.d.ts","sourceRoot":"","sources":["../../src/renderer/dom-utils.ts"],"names":[],"mappings":"AAAA,wBAAgB,aAAa,CAAC,CAAC,SAAS,MAAM,qBAAqB,EACjE,GAAG,EAAE,CAAC,EACN,KAAK,GAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,CAAM,EACrD,OAAO,CAAC,EAAE,MAAM,GACf,qBAAqB,CAAC,CAAC,CAAC,CAW1B;AAED,wBAAgB,SAAS,CACvB,SAAS,CAAC,EAAE,MAAM,EAClB,OAAO,CAAC,EAAE,MAAM,GACf,cAAc,CAKhB;AAED,wBAAgB,SAAS,CAAC,EAAE,EAAE,WAAW,EAAE,MAAM,EAAE,OAAO,CAAC,mBAAmB,CAAC,GAAG,IAAI,CAErF;AAED,wBAAgB,aAAa,CAAC,EAAE,EAAE,WAAW,GAAG,IAAI,CAEnD;AAED,wBAAgB,eAAe,CAAC,EAAE,EAAE,WAAW,EAAE,GAAG,QAAQ,EAAE,IAAI,EAAE,GAAG,IAAI,CAG1E;AAED,wBAAgB,UAAU,CAAC,EAAE,EAAE,WAAW,EAAE,GAAG,OAAO,EAAE,MAAM,EAAE,GAAG,IAAI,CAItE;AAED,wBAAgB,aAAa,CAAC,EAAE,EAAE,WAAW,EAAE,GAAG,OAAO,EAAE,MAAM,EAAE,GAAG,IAAI,CAIzE;AAED,wBAAgB,WAAW,CAAC,EAAE,EAAE,WAAW,EAAE,GAAG,EAAE,MAAM,EAAE,SAAS,EAAE,OAAO,GAAG,IAAI,CAMlF;AAED,wBAAgB,iBAAiB,IAAI,MAAM,CAS1C;AAED,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,CAMnE;AAED,wBAAgB,KAAK,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,MAAM,CAErE;AAED,wBAAgB,gBAAgB,CAAC,EAAE,EAAE,WAAW,GAAG;IAAE,GAAG,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,CAM/E;AAED,wBAAgB,kBAAkB,CAAC,EAAE,EAAE,WAAW,EAAE,SAAS,EAAE,WAAW,GAAG,OAAO,CAInF;AAED,wBAAgB,sBAAsB,CAAC,EAAE,EAAE,WAAW,EAAE,SAAS,EAAE,WAAW,GAAG,IAAI,CAQpF;AAED,wBAAgB,QAAQ,CAAC,CAAC,SAAS,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,KAAK,IAAI,EAC7D,EAAE,EAAE,CAAC,EACL,KAAK,EAAE,MAAM,GACZ,CAAC,GAAG,IAAI,EAAE,UAAU,CAAC,CAAC,CAAC,KAAK,IAAI,CAMlC;AAED,wBAAgB,QAAQ,CAAC,CAAC,SAAS,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,KAAK,IAAI,EAC7D,EAAE,EAAE,CAAC,EACL,QAAQ,EAAE,MAAM,GACf,CAAC,GAAG,IAAI,EAAE,UAAU,CAAC,CAAC,CAAC,KAAK,IAAI,CASlC;AAED,wBAAgB,GAAG,CAAC,EAAE,EAAE,MAAM,IAAI,GAAG,MAAM,IAAI,CAG9C;AAED,wBAAgB,OAAO,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,GAAG,MAAM,IAAI,CAU5D"}
|
|
@@ -0,0 +1,132 @@
|
|
|
1
|
+
export function createElement(tag, attrs = {}, cssText) {
|
|
2
|
+
const el = document.createElement(tag);
|
|
3
|
+
for (const [key, val] of Object.entries(attrs)) {
|
|
4
|
+
if (typeof val === 'boolean') {
|
|
5
|
+
if (val)
|
|
6
|
+
el.setAttribute(key, '');
|
|
7
|
+
}
|
|
8
|
+
else {
|
|
9
|
+
el.setAttribute(key, String(val));
|
|
10
|
+
}
|
|
11
|
+
}
|
|
12
|
+
if (cssText)
|
|
13
|
+
el.style.cssText = cssText;
|
|
14
|
+
return el;
|
|
15
|
+
}
|
|
16
|
+
export function createDiv(className, cssText) {
|
|
17
|
+
const el = document.createElement('div');
|
|
18
|
+
if (className)
|
|
19
|
+
el.className = className;
|
|
20
|
+
if (cssText)
|
|
21
|
+
el.style.cssText = cssText;
|
|
22
|
+
return el;
|
|
23
|
+
}
|
|
24
|
+
export function setStyles(el, styles) {
|
|
25
|
+
Object.assign(el.style, styles);
|
|
26
|
+
}
|
|
27
|
+
export function clearChildren(el) {
|
|
28
|
+
while (el.firstChild)
|
|
29
|
+
el.removeChild(el.firstChild);
|
|
30
|
+
}
|
|
31
|
+
export function replaceChildren(el, ...children) {
|
|
32
|
+
clearChildren(el);
|
|
33
|
+
for (const child of children)
|
|
34
|
+
el.appendChild(child);
|
|
35
|
+
}
|
|
36
|
+
export function addClasses(el, ...classes) {
|
|
37
|
+
for (const cls of classes) {
|
|
38
|
+
if (cls)
|
|
39
|
+
el.classList.add(cls);
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
export function removeClasses(el, ...classes) {
|
|
43
|
+
for (const cls of classes) {
|
|
44
|
+
if (cls)
|
|
45
|
+
el.classList.remove(cls);
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
export function toggleClass(el, cls, condition) {
|
|
49
|
+
if (condition) {
|
|
50
|
+
el.classList.add(cls);
|
|
51
|
+
}
|
|
52
|
+
else {
|
|
53
|
+
el.classList.remove(cls);
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
export function getScrollbarWidth() {
|
|
57
|
+
const outer = document.createElement('div');
|
|
58
|
+
outer.style.cssText = 'visibility:hidden;overflow:scroll;position:absolute;top:-9999px;';
|
|
59
|
+
document.body.appendChild(outer);
|
|
60
|
+
const inner = document.createElement('div');
|
|
61
|
+
outer.appendChild(inner);
|
|
62
|
+
const width = outer.offsetWidth - inner.offsetWidth;
|
|
63
|
+
document.body.removeChild(outer);
|
|
64
|
+
return width;
|
|
65
|
+
}
|
|
66
|
+
export function measureTextWidth(text, font) {
|
|
67
|
+
const canvas = document.createElement('canvas');
|
|
68
|
+
const ctx = canvas.getContext('2d');
|
|
69
|
+
if (!ctx)
|
|
70
|
+
return text.length * 8;
|
|
71
|
+
ctx.font = font;
|
|
72
|
+
return ctx.measureText(text).width;
|
|
73
|
+
}
|
|
74
|
+
export function clamp(value, min, max) {
|
|
75
|
+
return Math.min(max, Math.max(min, value));
|
|
76
|
+
}
|
|
77
|
+
export function getElementOffset(el) {
|
|
78
|
+
const rect = el.getBoundingClientRect();
|
|
79
|
+
return {
|
|
80
|
+
top: rect.top + window.scrollY,
|
|
81
|
+
left: rect.left + window.scrollX,
|
|
82
|
+
};
|
|
83
|
+
}
|
|
84
|
+
export function isScrolledIntoView(el, container) {
|
|
85
|
+
const elRect = el.getBoundingClientRect();
|
|
86
|
+
const containerRect = container.getBoundingClientRect();
|
|
87
|
+
return elRect.top >= containerRect.top && elRect.bottom <= containerRect.bottom;
|
|
88
|
+
}
|
|
89
|
+
export function scrollIntoViewIfNeeded(el, container) {
|
|
90
|
+
const elRect = el.getBoundingClientRect();
|
|
91
|
+
const containerRect = container.getBoundingClientRect();
|
|
92
|
+
if (elRect.top < containerRect.top) {
|
|
93
|
+
container.scrollTop -= containerRect.top - elRect.top;
|
|
94
|
+
}
|
|
95
|
+
else if (elRect.bottom > containerRect.bottom) {
|
|
96
|
+
container.scrollTop += elRect.bottom - containerRect.bottom;
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
export function debounce(fn, delay) {
|
|
100
|
+
let timer = null;
|
|
101
|
+
return (...args) => {
|
|
102
|
+
if (timer)
|
|
103
|
+
clearTimeout(timer);
|
|
104
|
+
timer = setTimeout(() => fn(...args), delay);
|
|
105
|
+
};
|
|
106
|
+
}
|
|
107
|
+
export function throttle(fn, interval) {
|
|
108
|
+
let lastCall = 0;
|
|
109
|
+
return (...args) => {
|
|
110
|
+
const now = performance.now();
|
|
111
|
+
if (now - lastCall >= interval) {
|
|
112
|
+
lastCall = now;
|
|
113
|
+
fn(...args);
|
|
114
|
+
}
|
|
115
|
+
};
|
|
116
|
+
}
|
|
117
|
+
export function raf(fn) {
|
|
118
|
+
let id = requestAnimationFrame(fn);
|
|
119
|
+
return () => cancelAnimationFrame(id);
|
|
120
|
+
}
|
|
121
|
+
export function rafLoop(fn) {
|
|
122
|
+
let last = 0;
|
|
123
|
+
let id;
|
|
124
|
+
const tick = (ts) => {
|
|
125
|
+
fn(ts - last);
|
|
126
|
+
last = ts;
|
|
127
|
+
id = requestAnimationFrame(tick);
|
|
128
|
+
};
|
|
129
|
+
id = requestAnimationFrame(tick);
|
|
130
|
+
return () => cancelAnimationFrame(id);
|
|
131
|
+
}
|
|
132
|
+
//# sourceMappingURL=dom-utils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dom-utils.js","sourceRoot":"","sources":["../../src/renderer/dom-utils.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import type { EventBus } from '../event-bus/event-bus';
|
|
2
|
+
import type { IconRenderer } from '../icons/icon-renderer';
|
|
3
|
+
import type { PaginationEngine } from '../engines/pagination/pagination-engine';
|
|
4
|
+
export interface FooterRendererOptions {
|
|
5
|
+
showPagination?: boolean;
|
|
6
|
+
showRowCount?: boolean;
|
|
7
|
+
footerHeight?: number;
|
|
8
|
+
}
|
|
9
|
+
export declare class FooterRenderer {
|
|
10
|
+
private eventBus;
|
|
11
|
+
private iconRenderer;
|
|
12
|
+
private paginationEngine;
|
|
13
|
+
private footerEl;
|
|
14
|
+
private pageInfoEl;
|
|
15
|
+
private pageInputEl;
|
|
16
|
+
constructor(eventBus: EventBus, iconRenderer: IconRenderer, paginationEngine: PaginationEngine);
|
|
17
|
+
render(containerEl: HTMLElement, options?: FooterRendererOptions): HTMLElement;
|
|
18
|
+
updatePaginationState(): void;
|
|
19
|
+
destroy(): void;
|
|
20
|
+
private buildPaginationControls;
|
|
21
|
+
private buildNavButton;
|
|
22
|
+
private buildPageSizeSelect;
|
|
23
|
+
private getConfig;
|
|
24
|
+
}
|
|
25
|
+
//# sourceMappingURL=footer-renderer.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"footer-renderer.d.ts","sourceRoot":"","sources":["../../src/renderer/footer-renderer.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAC;AACvD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AAE3D,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,yCAAyC,CAAC;AAGhF,MAAM,WAAW,qBAAqB;IACpC,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED,qBAAa,cAAc;IAMvB,OAAO,CAAC,QAAQ;IAChB,OAAO,CAAC,YAAY;IACpB,OAAO,CAAC,gBAAgB;IAP1B,OAAO,CAAC,QAAQ,CAA4B;IAC5C,OAAO,CAAC,UAAU,CAA4B;IAC9C,OAAO,CAAC,WAAW,CAAiC;gBAG1C,QAAQ,EAAE,QAAQ,EAClB,YAAY,EAAE,YAAY,EAC1B,gBAAgB,EAAE,gBAAgB;IAG5C,MAAM,CAAC,WAAW,EAAE,WAAW,EAAE,OAAO,GAAE,qBAA0B,GAAG,WAAW;IAoBlF,qBAAqB,IAAI,IAAI;IA+B7B,OAAO,IAAI,IAAI;IAOf,OAAO,CAAC,uBAAuB;IA6C/B,OAAO,CAAC,cAAc;IAwCtB,OAAO,CAAC,mBAAmB;IA4B3B,OAAO,CAAC,SAAS;CAUlB"}
|