@grafloria/element 0.3.19 → 0.3.20
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/{src/index.ts → esm/src/index.js} +60 -569
- package/esm/src/lib/dashboard-kit/dashboard.js +590 -0
- package/esm/src/lib/dashboard-kit/grid-binder.js +1633 -0
- package/esm/src/lib/dashboard-kit/grid-mapping.js +164 -0
- package/esm/src/lib/dashboard-kit/index.js +8 -0
- package/{src/lib/dashboard-kit/styles.ts → esm/src/lib/dashboard-kit/styles.js} +8 -9
- package/esm/src/lib/dashboard-kit/widgets.js +379 -0
- package/esm/src/lib/diagram-kit/card.js +199 -0
- package/esm/src/lib/diagram-kit/editing.js +448 -0
- package/esm/src/lib/diagram-kit/er.js +160 -0
- package/esm/src/lib/diagram-kit/handles.js +312 -0
- package/esm/src/lib/diagram-kit/index.js +15 -0
- package/esm/src/lib/diagram-kit/join-guidance.js +322 -0
- package/esm/src/lib/diagram-kit/rows.js +144 -0
- package/{src/lib/diagram-kit/styles.ts → esm/src/lib/diagram-kit/styles.js} +10 -10
- package/esm/src/lib/diagram-kit/uml.js +135 -0
- package/esm/src/lib/diagram-kit/update.js +244 -0
- package/esm/src/lib/grafloria-flow-element.js +266 -0
- package/esm/src/lib/grafloria.js +69 -0
- package/esm/src/lib/load.js +252 -0
- package/esm/src/lib/node-type-registry.js +42 -0
- package/esm/src/lib/stencil-kit/builders.js +18 -0
- package/esm/src/lib/stencil-kit/card-builders.js +105 -0
- package/esm/src/lib/stencil-kit/index.js +9 -0
- package/esm/src/lib/stencil-kit/palette.js +427 -0
- package/esm/src/lib/stencil-kit/shape-data.js +537 -0
- package/{src/lib/stencil-kit/styles.ts → esm/src/lib/stencil-kit/styles.js} +9 -9
- package/package.json +12 -3
- package/jest.config.ts +0 -16
- package/project.json +0 -44
- package/src/front-door-probe.spec.ts +0 -173
- package/src/index.js.map +0 -1
- package/src/lib/dashboard-kit/dashboard.js.map +0 -1
- package/src/lib/dashboard-kit/dashboard.spec.ts +0 -821
- package/src/lib/dashboard-kit/dashboard.ts +0 -906
- package/src/lib/dashboard-kit/grid-binder.js.map +0 -1
- package/src/lib/dashboard-kit/grid-binder.ts +0 -1976
- package/src/lib/dashboard-kit/grid-mapping.js.map +0 -1
- package/src/lib/dashboard-kit/grid-mapping.spec.ts +0 -308
- package/src/lib/dashboard-kit/grid-mapping.ts +0 -283
- package/src/lib/dashboard-kit/index.js.map +0 -1
- package/src/lib/dashboard-kit/index.ts +0 -56
- package/src/lib/dashboard-kit/styles.js.map +0 -1
- package/src/lib/dashboard-kit/widgets.js.map +0 -1
- package/src/lib/dashboard-kit/widgets.spec.ts +0 -239
- package/src/lib/dashboard-kit/widgets.ts +0 -484
- package/src/lib/diagram-kit/card.js.map +0 -1
- package/src/lib/diagram-kit/card.ts +0 -219
- package/src/lib/diagram-kit/diagram-kit.spec.ts +0 -465
- package/src/lib/diagram-kit/editing.js.map +0 -1
- package/src/lib/diagram-kit/editing.spec.ts +0 -172
- package/src/lib/diagram-kit/editing.ts +0 -493
- package/src/lib/diagram-kit/er.js.map +0 -1
- package/src/lib/diagram-kit/er.ts +0 -246
- package/src/lib/diagram-kit/handles.js.map +0 -1
- package/src/lib/diagram-kit/handles.spec.ts +0 -224
- package/src/lib/diagram-kit/handles.ts +0 -375
- package/src/lib/diagram-kit/index.js.map +0 -1
- package/src/lib/diagram-kit/index.ts +0 -66
- package/src/lib/diagram-kit/join-guidance.js.map +0 -1
- package/src/lib/diagram-kit/join-guidance.spec.ts +0 -241
- package/src/lib/diagram-kit/join-guidance.ts +0 -390
- package/src/lib/diagram-kit/rows.js.map +0 -1
- package/src/lib/diagram-kit/rows.ts +0 -174
- package/src/lib/diagram-kit/styles.js.map +0 -1
- package/src/lib/diagram-kit/uml.js.map +0 -1
- package/src/lib/diagram-kit/uml.ts +0 -213
- package/src/lib/diagram-kit/update.js.map +0 -1
- package/src/lib/diagram-kit/update.spec.ts +0 -208
- package/src/lib/diagram-kit/update.ts +0 -324
- package/src/lib/grafloria-flow-element.js.map +0 -1
- package/src/lib/grafloria-flow-element.spec.ts +0 -290
- package/src/lib/grafloria-flow-element.ts +0 -298
- package/src/lib/grafloria.js.map +0 -1
- package/src/lib/grafloria.ts +0 -151
- package/src/lib/load.js.map +0 -1
- package/src/lib/load.spec.ts +0 -565
- package/src/lib/load.ts +0 -359
- package/src/lib/node-type-registry.js.map +0 -1
- package/src/lib/node-type-registry.ts +0 -76
- package/src/lib/stencil-kit/builders.js.map +0 -1
- package/src/lib/stencil-kit/builders.ts +0 -58
- package/src/lib/stencil-kit/card-builders.js.map +0 -1
- package/src/lib/stencil-kit/card-builders.ts +0 -113
- package/src/lib/stencil-kit/index.js.map +0 -1
- package/src/lib/stencil-kit/index.ts +0 -17
- package/src/lib/stencil-kit/palette.js.map +0 -1
- package/src/lib/stencil-kit/palette.ts +0 -482
- package/src/lib/stencil-kit/shape-data.js.map +0 -1
- package/src/lib/stencil-kit/shape-data.spec.ts +0 -470
- package/src/lib/stencil-kit/shape-data.ts +0 -680
- package/src/lib/stencil-kit/styles.js.map +0 -1
- package/src/libs/element/src/index.js.map +0 -1
- package/src/libs/element/src/lib/dashboard-kit/dashboard.js.map +0 -1
- package/src/libs/element/src/lib/dashboard-kit/grid-binder.js.map +0 -1
- package/src/libs/element/src/lib/dashboard-kit/grid-mapping.js.map +0 -1
- package/src/libs/element/src/lib/dashboard-kit/index.js.map +0 -1
- package/src/libs/element/src/lib/dashboard-kit/styles.js.map +0 -1
- package/src/libs/element/src/lib/dashboard-kit/widgets.js.map +0 -1
- package/src/libs/element/src/lib/diagram-kit/card.js.map +0 -1
- package/src/libs/element/src/lib/diagram-kit/editing.js.map +0 -1
- package/src/libs/element/src/lib/diagram-kit/er.js.map +0 -1
- package/src/libs/element/src/lib/diagram-kit/handles.js.map +0 -1
- package/src/libs/element/src/lib/diagram-kit/index.js.map +0 -1
- package/src/libs/element/src/lib/diagram-kit/join-guidance.js.map +0 -1
- package/src/libs/element/src/lib/diagram-kit/rows.js.map +0 -1
- package/src/libs/element/src/lib/diagram-kit/styles.js.map +0 -1
- package/src/libs/element/src/lib/diagram-kit/uml.js.map +0 -1
- package/src/libs/element/src/lib/diagram-kit/update.js.map +0 -1
- package/src/libs/element/src/lib/grafloria-flow-element.js.map +0 -1
- package/src/libs/element/src/lib/grafloria.js.map +0 -1
- package/src/libs/element/src/lib/load.js.map +0 -1
- package/src/libs/element/src/lib/node-type-registry.js.map +0 -1
- package/src/libs/element/src/lib/stencil-kit/builders.js.map +0 -1
- package/src/libs/element/src/lib/stencil-kit/card-builders.js.map +0 -1
- package/src/libs/element/src/lib/stencil-kit/index.js.map +0 -1
- package/src/libs/element/src/lib/stencil-kit/palette.js.map +0 -1
- package/src/libs/element/src/lib/stencil-kit/shape-data.js.map +0 -1
- package/src/libs/element/src/lib/stencil-kit/styles.js.map +0 -1
- package/src/libs/engine/src/adapters/component-adapter.interface.js.map +0 -1
- package/src/libs/engine/src/adapters/index.js.map +0 -1
- package/src/libs/engine/src/clipboard/ClipboardManager.js.map +0 -1
- package/src/libs/engine/src/clipboard/index.js.map +0 -1
- package/src/libs/engine/src/collab/apply-op.js.map +0 -1
- package/src/libs/engine/src/collab/capture.js.map +0 -1
- package/src/libs/engine/src/collab/index.js.map +0 -1
- package/src/libs/engine/src/collab/integrity.js.map +0 -1
- package/src/libs/engine/src/collab/lww.js.map +0 -1
- package/src/libs/engine/src/collab/op-log.js.map +0 -1
- package/src/libs/engine/src/collab/op.js.map +0 -1
- package/src/libs/engine/src/collab/replica.js.map +0 -1
- package/src/libs/engine/src/collab/undo.js.map +0 -1
- package/src/libs/engine/src/commands/Command.js.map +0 -1
- package/src/libs/engine/src/commands/CommandManager.js.map +0 -1
- package/src/libs/engine/src/commands/basic/AddGroupCommand.js.map +0 -1
- package/src/libs/engine/src/commands/basic/AddLinkCommand.js.map +0 -1
- package/src/libs/engine/src/commands/basic/AddNodeCommand.js.map +0 -1
- package/src/libs/engine/src/commands/basic/AddToGroupCommand.js.map +0 -1
- package/src/libs/engine/src/commands/basic/AlignCommands.js.map +0 -1
- package/src/libs/engine/src/commands/basic/CollapseGroupCommand.js.map +0 -1
- package/src/libs/engine/src/commands/basic/CopyCommand.js.map +0 -1
- package/src/libs/engine/src/commands/basic/CutCommand.js.map +0 -1
- package/src/libs/engine/src/commands/basic/DeleteSelectionCommand.js.map +0 -1
- package/src/libs/engine/src/commands/basic/DuplicateCommand.js.map +0 -1
- package/src/libs/engine/src/commands/basic/ExpandGroupCommand.js.map +0 -1
- package/src/libs/engine/src/commands/basic/MoveGroupCommand.js.map +0 -1
- package/src/libs/engine/src/commands/basic/MoveNodeCommand.js.map +0 -1
- package/src/libs/engine/src/commands/basic/NodeZOrderCommands.js.map +0 -1
- package/src/libs/engine/src/commands/basic/PasteCommand.js.map +0 -1
- package/src/libs/engine/src/commands/basic/PortCommands.js.map +0 -1
- package/src/libs/engine/src/commands/basic/ReconnectLinkCommand.js.map +0 -1
- package/src/libs/engine/src/commands/basic/RemoveFromGroupCommand.js.map +0 -1
- package/src/libs/engine/src/commands/basic/RemoveGroupCommand.js.map +0 -1
- package/src/libs/engine/src/commands/basic/RemoveLinkCommand.js.map +0 -1
- package/src/libs/engine/src/commands/basic/RemoveNodeCommand.js.map +0 -1
- package/src/libs/engine/src/commands/basic/ResizeNodeCommand.js.map +0 -1
- package/src/libs/engine/src/commands/basic/RotateNodeCommand.js.map +0 -1
- package/src/libs/engine/src/commands/basic/SetFlexItemCommand.js.map +0 -1
- package/src/libs/engine/src/commands/basic/SetGridItemCommand.js.map +0 -1
- package/src/libs/engine/src/commands/basic/SetLayoutCommand.js.map +0 -1
- package/src/libs/engine/src/commands/basic/SetLinkDisplayLabelCommand.js.map +0 -1
- package/src/libs/engine/src/commands/basic/SetLinkLabelCommand.js.map +0 -1
- package/src/libs/engine/src/commands/basic/SetLinkLabelsCommand.js.map +0 -1
- package/src/libs/engine/src/commands/basic/SetLinkPathTypeCommand.js.map +0 -1
- package/src/libs/engine/src/commands/basic/SetLinkPointsCommand.js.map +0 -1
- package/src/libs/engine/src/commands/basic/SetNodeDataCommand.js.map +0 -1
- package/src/libs/engine/src/commands/basic/SetNodeLabelCommand.js.map +0 -1
- package/src/libs/engine/src/commands/basic/SetNodeShapeConfigCommand.js.map +0 -1
- package/src/libs/engine/src/commands/basic/SetNodeStyleCommand.js.map +0 -1
- package/src/libs/engine/src/commands/basic/SetParentCommand.js.map +0 -1
- package/src/libs/engine/src/commands/basic/SetStrokePointsCommand.js.map +0 -1
- package/src/libs/engine/src/commands/basic/StrokeLifecycleCommands.js.map +0 -1
- package/src/libs/engine/src/commands/basic/UpdateLinkStyleCommand.js.map +0 -1
- package/src/libs/engine/src/commands/basic/index.js.map +0 -1
- package/src/libs/engine/src/commands/basic/remapNodePortIds.js.map +0 -1
- package/src/libs/engine/src/commands/basic/resolveLinkNodeIds.js.map +0 -1
- package/src/libs/engine/src/commands/composite/BatchCommand.js.map +0 -1
- package/src/libs/engine/src/commands/composite/MacroCommand.js.map +0 -1
- package/src/libs/engine/src/commands/composite/index.js.map +0 -1
- package/src/libs/engine/src/commands/index.js.map +0 -1
- package/src/libs/engine/src/comments/comment-store.js.map +0 -1
- package/src/libs/engine/src/comments/index.js.map +0 -1
- package/src/libs/engine/src/comments/mentions.js.map +0 -1
- package/src/libs/engine/src/comments/read-state.js.map +0 -1
- package/src/libs/engine/src/comments/types.js.map +0 -1
- package/src/libs/engine/src/config/InteractionConfig.js.map +0 -1
- package/src/libs/engine/src/config/index.js.map +0 -1
- package/src/libs/engine/src/dsl/DSL.js.map +0 -1
- package/src/libs/engine/src/dsl/advanced/StyleParser.js.map +0 -1
- package/src/libs/engine/src/dsl/advanced/TemplateParser.js.map +0 -1
- package/src/libs/engine/src/dsl/advanced/index.js.map +0 -1
- package/src/libs/engine/src/dsl/detector/LayoutDetector.js.map +0 -1
- package/src/libs/engine/src/dsl/extended/BPMNGenerator.js.map +0 -1
- package/src/libs/engine/src/dsl/extended/BPMNParser.js.map +0 -1
- package/src/libs/engine/src/dsl/extended/ERDGenerator.js.map +0 -1
- package/src/libs/engine/src/dsl/extended/ERDParser.js.map +0 -1
- package/src/libs/engine/src/dsl/extended/ERDTransformer.js.map +0 -1
- package/src/libs/engine/src/dsl/extended/UMLGenerator.js.map +0 -1
- package/src/libs/engine/src/dsl/extended/UMLParser.js.map +0 -1
- package/src/libs/engine/src/dsl/extended/index.js.map +0 -1
- package/src/libs/engine/src/dsl/generator/DSLFormatter.js.map +0 -1
- package/src/libs/engine/src/dsl/generator/DSLGenerator.js.map +0 -1
- package/src/libs/engine/src/dsl/generator/DiagramAnalyzer.js.map +0 -1
- package/src/libs/engine/src/dsl/index.js.map +0 -1
- package/src/libs/engine/src/dsl/lexer/Lexer.js.map +0 -1
- package/src/libs/engine/src/dsl/mermaid/MermaidClass.js.map +0 -1
- package/src/libs/engine/src/dsl/mermaid/MermaidER.js.map +0 -1
- package/src/libs/engine/src/dsl/mermaid/MermaidState.js.map +0 -1
- package/src/libs/engine/src/dsl/mermaid/index.js.map +0 -1
- package/src/libs/engine/src/dsl/mermaid/layout.js.map +0 -1
- package/src/libs/engine/src/dsl/mermaid/lines.js.map +0 -1
- package/src/libs/engine/src/dsl/parser/Parser.js.map +0 -1
- package/src/libs/engine/src/dsl/sync/BidirectionalSync.js.map +0 -1
- package/src/libs/engine/src/dsl/sync/IntegratedSyncManager.js.map +0 -1
- package/src/libs/engine/src/dsl/sync/LayoutApplicator.js.map +0 -1
- package/src/libs/engine/src/dsl/sync/SyncStateManager.js.map +0 -1
- package/src/libs/engine/src/dsl/sync/index.js.map +0 -1
- package/src/libs/engine/src/dsl/transformer/ASTTransformer.js.map +0 -1
- package/src/libs/engine/src/dsl/types/ASTNode.js.map +0 -1
- package/src/libs/engine/src/dsl/types/Token.js.map +0 -1
- package/src/libs/engine/src/engine/DiagramEngine.js.map +0 -1
- package/src/libs/engine/src/engine/DiagramMode.js.map +0 -1
- package/src/libs/engine/src/engine/DiagramModeTypes.js.map +0 -1
- package/src/libs/engine/src/engine/ModeManager.js.map +0 -1
- package/src/libs/engine/src/engine/index.js.map +0 -1
- package/src/libs/engine/src/events/EventBus.js.map +0 -1
- package/src/libs/engine/src/events/index.js.map +0 -1
- package/src/libs/engine/src/index.js.map +0 -1
- package/src/libs/engine/src/interaction/GroupCollapseService.js.map +0 -1
- package/src/libs/engine/src/interaction/GroupMembershipService.js.map +0 -1
- package/src/libs/engine/src/interaction/SemanticMembershipService.js.map +0 -1
- package/src/libs/engine/src/interaction/SwimlaneService.js.map +0 -1
- package/src/libs/engine/src/interaction/index.js.map +0 -1
- package/src/libs/engine/src/interop/drawio/importDrawio.js.map +0 -1
- package/src/libs/engine/src/interop/drawio/index.js.map +0 -1
- package/src/libs/engine/src/interop/drawio/xml.js.map +0 -1
- package/src/libs/engine/src/layout/CompoundLayoutService.js.map +0 -1
- package/src/libs/engine/src/layout/ILayoutAlgorithm.js.map +0 -1
- package/src/libs/engine/src/layout/LayoutManager.js.map +0 -1
- package/src/libs/engine/src/layout/SmartSpacingCalculator.js.map +0 -1
- package/src/libs/engine/src/layout/ViewportTransform.js.map +0 -1
- package/src/libs/engine/src/layout/algorithms/ForceDirectedLayoutAlgorithm.js.map +0 -1
- package/src/libs/engine/src/layout/algorithms/GridLayoutAlgorithm.js.map +0 -1
- package/src/libs/engine/src/layout/algorithms/HierarchicalLayoutAlgorithm.js.map +0 -1
- package/src/libs/engine/src/layout/algorithms/HybridLayoutAlgorithm.js.map +0 -1
- package/src/libs/engine/src/layout/community-layout-adapter.js.map +0 -1
- package/src/libs/engine/src/layout/component-packing.js.map +0 -1
- package/src/libs/engine/src/layout/dagre-layout-adapter.js.map +0 -1
- package/src/libs/engine/src/layout/edge-bundling.interface.js.map +0 -1
- package/src/libs/engine/src/layout/elk-layout-adapter.js.map +0 -1
- package/src/libs/engine/src/layout/elk-loader.js.map +0 -1
- package/src/libs/engine/src/layout/force-layout-adapter.js.map +0 -1
- package/src/libs/engine/src/layout/grid-pack/grid-pack-engine.js.map +0 -1
- package/src/libs/engine/src/layout/incremental/mental-map.js.map +0 -1
- package/src/libs/engine/src/layout/incremental-layout.interface.js.map +0 -1
- package/src/libs/engine/src/layout/index.js.map +0 -1
- package/src/libs/engine/src/layout/layout-adapter.interface.js.map +0 -1
- package/src/libs/engine/src/layout/layout-auto-select.js.map +0 -1
- package/src/libs/engine/src/layout/layout-constraints.interface.js.map +0 -1
- package/src/libs/engine/src/layout/layout-graph.js.map +0 -1
- package/src/libs/engine/src/layout/layout-history.js.map +0 -1
- package/src/libs/engine/src/layout/layout-host.js.map +0 -1
- package/src/libs/engine/src/layout/layout-presets.js.map +0 -1
- package/src/libs/engine/src/layout/layout-quality-extended.js.map +0 -1
- package/src/libs/engine/src/layout/layout-quality-metrics.js.map +0 -1
- package/src/libs/engine/src/layout/layout-registry.js.map +0 -1
- package/src/libs/engine/src/layout/layout.service.js.map +0 -1
- package/src/libs/engine/src/layout/overlap-removal.js.map +0 -1
- package/src/libs/engine/src/layout/port-aware-layout.interface.js.map +0 -1
- package/src/libs/engine/src/layout/port-label-bridge.js.map +0 -1
- package/src/libs/engine/src/layout/portfolio-layouts.js.map +0 -1
- package/src/libs/engine/src/layout/rng.js.map +0 -1
- package/src/libs/engine/src/layout/spectral-layout-adapter.js.map +0 -1
- package/src/libs/engine/src/layout/steppable-layout.js.map +0 -1
- package/src/libs/engine/src/layout/subgraph-layout.interface.js.map +0 -1
- package/src/libs/engine/src/layout/sugiyama/layered-layout.js.map +0 -1
- package/src/libs/engine/src/layout/sugiyama/sugiyama.js.map +0 -1
- package/src/libs/engine/src/layout/tree-layout.js.map +0 -1
- package/src/libs/engine/src/layout/types.js.map +0 -1
- package/src/libs/engine/src/lib/performance/mobile-performance.service.js.map +0 -1
- package/src/libs/engine/src/models/DiagramEntity.js.map +0 -1
- package/src/libs/engine/src/models/DiagramModel.js.map +0 -1
- package/src/libs/engine/src/models/GroupModel.js.map +0 -1
- package/src/libs/engine/src/models/LinkModel.js.map +0 -1
- package/src/libs/engine/src/models/NodeModel.js.map +0 -1
- package/src/libs/engine/src/models/PortModel.js.map +0 -1
- package/src/libs/engine/src/models/StrokeModel.js.map +0 -1
- package/src/libs/engine/src/models/index.js.map +0 -1
- package/src/libs/engine/src/models/readonly-lock.js.map +0 -1
- package/src/libs/engine/src/performance/LRUCache.js.map +0 -1
- package/src/libs/engine/src/performance/PerformanceMonitor.js.map +0 -1
- package/src/libs/engine/src/performance/SpatialIndex.js.map +0 -1
- package/src/libs/engine/src/performance/index.js.map +0 -1
- package/src/libs/engine/src/plugins/PluginManager.js.map +0 -1
- package/src/libs/engine/src/plugins/index.js.map +0 -1
- package/src/libs/engine/src/ports/connection-rules.js.map +0 -1
- package/src/libs/engine/src/ports/dynamic-ports.js.map +0 -1
- package/src/libs/engine/src/ports/index.js.map +0 -1
- package/src/libs/engine/src/ports/port-groups.js.map +0 -1
- package/src/libs/engine/src/ports/port-type-registry.js.map +0 -1
- package/src/libs/engine/src/ports/port-types.js.map +0 -1
- package/src/libs/engine/src/rendering/HtmlTemplateRenderer.js.map +0 -1
- package/src/libs/engine/src/rendering/LemonadeJSRenderer.js.map +0 -1
- package/src/libs/engine/src/rendering/index.js.map +0 -1
- package/src/libs/engine/src/routing/LiveReroutingEngine.js.map +0 -1
- package/src/libs/engine/src/routing/ObstacleIndex.js.map +0 -1
- package/src/libs/engine/src/routing/ObstacleMap.js.map +0 -1
- package/src/libs/engine/src/routing/ObstacleMapBuilder.js.map +0 -1
- package/src/libs/engine/src/routing/PathSimplifier.js.map +0 -1
- package/src/libs/engine/src/routing/RoutingEngine.js.map +0 -1
- package/src/libs/engine/src/routing/algorithms/AStarRouter.js.map +0 -1
- package/src/libs/engine/src/routing/algorithms/DijkstraRouter.js.map +0 -1
- package/src/libs/engine/src/routing/algorithms/ElkRouter.js.map +0 -1
- package/src/libs/engine/src/routing/algorithms/ManhattanRouter.js.map +0 -1
- package/src/libs/engine/src/routing/algorithms/OrthogonalRouter.js.map +0 -1
- package/src/libs/engine/src/routing/algorithms/StraightRouter.js.map +0 -1
- package/src/libs/engine/src/routing/algorithms/VisibilityGraphRouter.js.map +0 -1
- package/src/libs/engine/src/routing/global/GlobalRouteSolver.js.map +0 -1
- package/src/libs/engine/src/routing/global/solver-host.js.map +0 -1
- package/src/libs/engine/src/routing/index.js.map +0 -1
- package/src/libs/engine/src/routing/types.js.map +0 -1
- package/src/libs/engine/src/selection/SelectionManager.js.map +0 -1
- package/src/libs/engine/src/selection/index.js.map +0 -1
- package/src/libs/engine/src/serialization/DiagramMigrations.js.map +0 -1
- package/src/libs/engine/src/serialization/DiagramValidator.js.map +0 -1
- package/src/libs/engine/src/serialization/DocumentEnvelope.js.map +0 -1
- package/src/libs/engine/src/serialization/Incremental.js.map +0 -1
- package/src/libs/engine/src/serialization/Serializer.js.map +0 -1
- package/src/libs/engine/src/serialization/Subgraph.js.map +0 -1
- package/src/libs/engine/src/serialization/TextFormat.js.map +0 -1
- package/src/libs/engine/src/state/ConnectionStateManager.js.map +0 -1
- package/src/libs/engine/src/state/DiagramStore.js.map +0 -1
- package/src/libs/engine/src/state/index.js.map +0 -1
- package/src/libs/engine/src/sync/awareness.js.map +0 -1
- package/src/libs/engine/src/sync/batcher.js.map +0 -1
- package/src/libs/engine/src/sync/causal-buffer.js.map +0 -1
- package/src/libs/engine/src/sync/index.js.map +0 -1
- package/src/libs/engine/src/sync/protocol.js.map +0 -1
- package/src/libs/engine/src/sync/sync-adapter.js.map +0 -1
- package/src/libs/engine/src/sync/transport.js.map +0 -1
- package/src/libs/engine/src/sync/transports/broadcast-channel.js.map +0 -1
- package/src/libs/engine/src/sync/transports/memory.js.map +0 -1
- package/src/libs/engine/src/sync/transports/unreliable.js.map +0 -1
- package/src/libs/engine/src/sync/transports/websocket.js.map +0 -1
- package/src/libs/engine/src/sync/version-vector.js.map +0 -1
- package/src/libs/engine/src/template-library/common-templates.js.map +0 -1
- package/src/libs/engine/src/template-library/data-viz-templates.js.map +0 -1
- package/src/libs/engine/src/template-library/erd-templates.js.map +0 -1
- package/src/libs/engine/src/template-library/index.js.map +0 -1
- package/src/libs/engine/src/template-library/integration.js.map +0 -1
- package/src/libs/engine/src/template-library/workflow-templates.js.map +0 -1
- package/src/libs/engine/src/templates/NodeFactory.js.map +0 -1
- package/src/libs/engine/src/templates/NodeTemplate.js.map +0 -1
- package/src/libs/engine/src/templates/TemplateLoader.js.map +0 -1
- package/src/libs/engine/src/templates/TemplateRegistry.js.map +0 -1
- package/src/libs/engine/src/templates/generated/bpmn/bpmn-business-rule-task.template.js.map +0 -1
- package/src/libs/engine/src/templates/generated/bpmn/bpmn-end-event.template.js.map +0 -1
- package/src/libs/engine/src/templates/generated/bpmn/bpmn-error-event.template.js.map +0 -1
- package/src/libs/engine/src/templates/generated/bpmn/bpmn-exclusive-gateway.template.js.map +0 -1
- package/src/libs/engine/src/templates/generated/bpmn/bpmn-inclusive-gateway.template.js.map +0 -1
- package/src/libs/engine/src/templates/generated/bpmn/bpmn-intermediate-event.template.js.map +0 -1
- package/src/libs/engine/src/templates/generated/bpmn/bpmn-manual-task.template.js.map +0 -1
- package/src/libs/engine/src/templates/generated/bpmn/bpmn-message-event.template.js.map +0 -1
- package/src/libs/engine/src/templates/generated/bpmn/bpmn-parallel-gateway.template.js.map +0 -1
- package/src/libs/engine/src/templates/generated/bpmn/bpmn-script-task.template.js.map +0 -1
- package/src/libs/engine/src/templates/generated/bpmn/bpmn-service-task.template.js.map +0 -1
- package/src/libs/engine/src/templates/generated/bpmn/bpmn-start-event.template.js.map +0 -1
- package/src/libs/engine/src/templates/generated/bpmn/bpmn-task.template.js.map +0 -1
- package/src/libs/engine/src/templates/generated/bpmn/bpmn-timer-event.template.js.map +0 -1
- package/src/libs/engine/src/templates/generated/bpmn/bpmn-user-task.template.js.map +0 -1
- package/src/libs/engine/src/templates/generated/bpmn/index.js.map +0 -1
- package/src/libs/engine/src/templates/generated/erd/erd-associative-entity.template.js.map +0 -1
- package/src/libs/engine/src/templates/generated/erd/erd-attribute.template.js.map +0 -1
- package/src/libs/engine/src/templates/generated/erd/erd-bridge-entity.template.js.map +0 -1
- package/src/libs/engine/src/templates/generated/erd/erd-composite-attribute.template.js.map +0 -1
- package/src/libs/engine/src/templates/generated/erd/erd-derived-attribute.template.js.map +0 -1
- package/src/libs/engine/src/templates/generated/erd/erd-discriminator.template.js.map +0 -1
- package/src/libs/engine/src/templates/generated/erd/erd-entity.template.js.map +0 -1
- package/src/libs/engine/src/templates/generated/erd/erd-isa.template.js.map +0 -1
- package/src/libs/engine/src/templates/generated/erd/erd-key-attribute.template.js.map +0 -1
- package/src/libs/engine/src/templates/generated/erd/erd-multivalued-attribute.template.js.map +0 -1
- package/src/libs/engine/src/templates/generated/erd/erd-optional-attribute.template.js.map +0 -1
- package/src/libs/engine/src/templates/generated/erd/erd-partial-key.template.js.map +0 -1
- package/src/libs/engine/src/templates/generated/erd/erd-relationship.template.js.map +0 -1
- package/src/libs/engine/src/templates/generated/erd/erd-subtype.template.js.map +0 -1
- package/src/libs/engine/src/templates/generated/erd/erd-supertype.template.js.map +0 -1
- package/src/libs/engine/src/templates/generated/erd/erd-table.template.js.map +0 -1
- package/src/libs/engine/src/templates/generated/erd/erd-view.template.js.map +0 -1
- package/src/libs/engine/src/templates/generated/erd/erd-weak-entity.template.js.map +0 -1
- package/src/libs/engine/src/templates/generated/erd/erd-weak-relationship.template.js.map +0 -1
- package/src/libs/engine/src/templates/generated/erd/index.js.map +0 -1
- package/src/libs/engine/src/templates/generated/flowchart/flowchart-connector.template.js.map +0 -1
- package/src/libs/engine/src/templates/generated/flowchart/flowchart-data.template.js.map +0 -1
- package/src/libs/engine/src/templates/generated/flowchart/flowchart-decision.template.js.map +0 -1
- package/src/libs/engine/src/templates/generated/flowchart/flowchart-delay.template.js.map +0 -1
- package/src/libs/engine/src/templates/generated/flowchart/flowchart-display.template.js.map +0 -1
- package/src/libs/engine/src/templates/generated/flowchart/flowchart-document.template.js.map +0 -1
- package/src/libs/engine/src/templates/generated/flowchart/flowchart-manual-input.template.js.map +0 -1
- package/src/libs/engine/src/templates/generated/flowchart/flowchart-manual-operation.template.js.map +0 -1
- package/src/libs/engine/src/templates/generated/flowchart/flowchart-merge.template.js.map +0 -1
- package/src/libs/engine/src/templates/generated/flowchart/flowchart-or.template.js.map +0 -1
- package/src/libs/engine/src/templates/generated/flowchart/flowchart-predefined-process.template.js.map +0 -1
- package/src/libs/engine/src/templates/generated/flowchart/flowchart-preparation.template.js.map +0 -1
- package/src/libs/engine/src/templates/generated/flowchart/flowchart-process.template.js.map +0 -1
- package/src/libs/engine/src/templates/generated/flowchart/flowchart-stored-data.template.js.map +0 -1
- package/src/libs/engine/src/templates/generated/flowchart/flowchart-summing-junction.template.js.map +0 -1
- package/src/libs/engine/src/templates/generated/flowchart/flowchart-terminal.template.js.map +0 -1
- package/src/libs/engine/src/templates/generated/flowchart/index.js.map +0 -1
- package/src/libs/engine/src/templates/generated/index.js.map +0 -1
- package/src/libs/engine/src/templates/generated/register.js.map +0 -1
- package/src/libs/engine/src/templates/generated/uml/index.js.map +0 -1
- package/src/libs/engine/src/templates/generated/uml/uml-abstract-class.template.js.map +0 -1
- package/src/libs/engine/src/templates/generated/uml/uml-activation.template.js.map +0 -1
- package/src/libs/engine/src/templates/generated/uml/uml-activity-partition.template.js.map +0 -1
- package/src/libs/engine/src/templates/generated/uml/uml-activity.template.js.map +0 -1
- package/src/libs/engine/src/templates/generated/uml/uml-actor.template.js.map +0 -1
- package/src/libs/engine/src/templates/generated/uml/uml-class.template.js.map +0 -1
- package/src/libs/engine/src/templates/generated/uml/uml-collaboration.template.js.map +0 -1
- package/src/libs/engine/src/templates/generated/uml/uml-component.template.js.map +0 -1
- package/src/libs/engine/src/templates/generated/uml/uml-datatype.template.js.map +0 -1
- package/src/libs/engine/src/templates/generated/uml/uml-decision.template.js.map +0 -1
- package/src/libs/engine/src/templates/generated/uml/uml-enum.template.js.map +0 -1
- package/src/libs/engine/src/templates/generated/uml/uml-final-node.template.js.map +0 -1
- package/src/libs/engine/src/templates/generated/uml/uml-final-state.template.js.map +0 -1
- package/src/libs/engine/src/templates/generated/uml/uml-fork.template.js.map +0 -1
- package/src/libs/engine/src/templates/generated/uml/uml-initial-node.template.js.map +0 -1
- package/src/libs/engine/src/templates/generated/uml/uml-initial-state.template.js.map +0 -1
- package/src/libs/engine/src/templates/generated/uml/uml-interface.template.js.map +0 -1
- package/src/libs/engine/src/templates/generated/uml/uml-join.template.js.map +0 -1
- package/src/libs/engine/src/templates/generated/uml/uml-lifeline.template.js.map +0 -1
- package/src/libs/engine/src/templates/generated/uml/uml-merge.template.js.map +0 -1
- package/src/libs/engine/src/templates/generated/uml/uml-node.template.js.map +0 -1
- package/src/libs/engine/src/templates/generated/uml/uml-note.template.js.map +0 -1
- package/src/libs/engine/src/templates/generated/uml/uml-object.template.js.map +0 -1
- package/src/libs/engine/src/templates/generated/uml/uml-package.template.js.map +0 -1
- package/src/libs/engine/src/templates/generated/uml/uml-part.template.js.map +0 -1
- package/src/libs/engine/src/templates/generated/uml/uml-port.template.js.map +0 -1
- package/src/libs/engine/src/templates/generated/uml/uml-primitive-type.template.js.map +0 -1
- package/src/libs/engine/src/templates/generated/uml/uml-signal.template.js.map +0 -1
- package/src/libs/engine/src/templates/generated/uml/uml-state.template.js.map +0 -1
- package/src/libs/engine/src/templates/generated/uml/uml-use-case.template.js.map +0 -1
- package/src/libs/engine/src/templates/index.js.map +0 -1
- package/src/libs/engine/src/templates/stencils.js.map +0 -1
- package/src/libs/engine/src/types/domain/bpmn.js.map +0 -1
- package/src/libs/engine/src/types/domain/erd.js.map +0 -1
- package/src/libs/engine/src/types/domain/flowchart.js.map +0 -1
- package/src/libs/engine/src/types/domain/index.js.map +0 -1
- package/src/libs/engine/src/types/domain/uml.js.map +0 -1
- package/src/libs/engine/src/types/event.types.js.map +0 -1
- package/src/libs/engine/src/types/geometry.types.js.map +0 -1
- package/src/libs/engine/src/types/index.js.map +0 -1
- package/src/libs/engine/src/types/layout.types.js.map +0 -1
- package/src/libs/engine/src/types/model.types.js.map +0 -1
- package/src/libs/engine/src/types/performance.types.js.map +0 -1
- package/src/libs/engine/src/types/plugin.types.js.map +0 -1
- package/src/libs/engine/src/utils/deep-clone.js.map +0 -1
- package/src/libs/engine/src/utils/geometry.js.map +0 -1
- package/src/libs/engine/src/utils/id.js.map +0 -1
- package/src/libs/engine/src/utils/index.js.map +0 -1
- package/src/libs/engine/src/utils/transform.js.map +0 -1
- package/src/libs/engine/src/validation/ConnectionGroupValidator.js.map +0 -1
- package/src/libs/engine/src/validation/TypeRegistry.js.map +0 -1
- package/src/libs/engine/src/validation/ValidationEngine.js.map +0 -1
- package/src/libs/engine/src/validation/index.js.map +0 -1
- package/src/libs/renderer/src/a11y/diagram-outline.js.map +0 -1
- package/src/libs/renderer/src/a11y/focus-containment.js.map +0 -1
- package/src/libs/renderer/src/a11y/graph-topology.js.map +0 -1
- package/src/libs/renderer/src/a11y/index.js.map +0 -1
- package/src/libs/renderer/src/a11y/live-region.js.map +0 -1
- package/src/libs/renderer/src/a11y/outline-view.js.map +0 -1
- package/src/libs/renderer/src/a11y/reduced-motion.js.map +0 -1
- package/src/libs/renderer/src/a11y/semantics.js.map +0 -1
- package/src/libs/renderer/src/canvas/canvas-context.js.map +0 -1
- package/src/libs/renderer/src/canvas/canvas-renderer.js.map +0 -1
- package/src/libs/renderer/src/canvas/dirty-region.js.map +0 -1
- package/src/libs/renderer/src/canvas/index.js.map +0 -1
- package/src/libs/renderer/src/canvas/path-geometry.js.map +0 -1
- package/src/libs/renderer/src/canvas/render-backend.js.map +0 -1
- package/src/libs/renderer/src/canvas/style-resolution.js.map +0 -1
- package/src/libs/renderer/src/canvas/tier-policy.js.map +0 -1
- package/src/libs/renderer/src/canvas/vnode-painter.js.map +0 -1
- package/src/libs/renderer/src/comments/comment-overlay.js.map +0 -1
- package/src/libs/renderer/src/comments/comment-panel.js.map +0 -1
- package/src/libs/renderer/src/comments/comment-pins.js.map +0 -1
- package/src/libs/renderer/src/comments/index.js.map +0 -1
- package/src/libs/renderer/src/export/assets.js.map +0 -1
- package/src/libs/renderer/src/export/batch.js.map +0 -1
- package/src/libs/renderer/src/export/bounds.js.map +0 -1
- package/src/libs/renderer/src/export/capture-host.js.map +0 -1
- package/src/libs/renderer/src/export/custom-nodes.js.map +0 -1
- package/src/libs/renderer/src/export/index.js.map +0 -1
- package/src/libs/renderer/src/export/node-raster.js.map +0 -1
- package/src/libs/renderer/src/export/pagination.js.map +0 -1
- package/src/libs/renderer/src/export/pdf/flate.js.map +0 -1
- package/src/libs/renderer/src/export/pdf/index.js.map +0 -1
- package/src/libs/renderer/src/export/pdf/pdf-export.js.map +0 -1
- package/src/libs/renderer/src/export/pdf/pdf-path.js.map +0 -1
- package/src/libs/renderer/src/export/pdf/pdf-primitives.js.map +0 -1
- package/src/libs/renderer/src/export/pdf/png.js.map +0 -1
- package/src/libs/renderer/src/export/raster.js.map +0 -1
- package/src/libs/renderer/src/export/round-trip.js.map +0 -1
- package/src/libs/renderer/src/export/scope.js.map +0 -1
- package/src/libs/renderer/src/export/style-flattener.js.map +0 -1
- package/src/libs/renderer/src/export/svg-export.js.map +0 -1
- package/src/libs/renderer/src/export/vnode-serializer.js.map +0 -1
- package/src/libs/renderer/src/ext/capabilities.js.map +0 -1
- package/src/libs/renderer/src/ext/capability-factory.js.map +0 -1
- package/src/libs/renderer/src/ext/components/attach.js.map +0 -1
- package/src/libs/renderer/src/ext/components/background.js.map +0 -1
- package/src/libs/renderer/src/ext/components/controls.js.map +0 -1
- package/src/libs/renderer/src/ext/components/minimap.js.map +0 -1
- package/src/libs/renderer/src/ext/diagram-registry.js.map +0 -1
- package/src/libs/renderer/src/ext/disposable.js.map +0 -1
- package/src/libs/renderer/src/ext/extension-host.js.map +0 -1
- package/src/libs/renderer/src/ext/index.js.map +0 -1
- package/src/libs/renderer/src/ext/link-pipeline.js.map +0 -1
- package/src/libs/renderer/src/ext/manifest.js.map +0 -1
- package/src/libs/renderer/src/ext/node-component.js.map +0 -1
- package/src/libs/renderer/src/ext/plugins-loader.js.map +0 -1
- package/src/libs/renderer/src/ext/portal.js.map +0 -1
- package/src/libs/renderer/src/ext/public-api.js.map +0 -1
- package/src/libs/renderer/src/ext/registry-scope.js.map +0 -1
- package/src/libs/renderer/src/ext/tools.js.map +0 -1
- package/src/libs/renderer/src/index.js.map +0 -1
- package/src/libs/renderer/src/instance/create-diagram.js.map +0 -1
- package/src/libs/renderer/src/instance/diagram-instance.js.map +0 -1
- package/src/libs/renderer/src/instance/dom-event-binder.js.map +0 -1
- package/src/libs/renderer/src/instance/index.js.map +0 -1
- package/src/libs/renderer/src/instance/layers.js.map +0 -1
- package/src/libs/renderer/src/instance/model-input.js.map +0 -1
- package/src/libs/renderer/src/instance/render-scheduler.js.map +0 -1
- package/src/libs/renderer/src/instance/wheel-scroll-yield.js.map +0 -1
- package/src/libs/renderer/src/interaction/ControlPointEditor.js.map +0 -1
- package/src/libs/renderer/src/interaction/WaypointEditor.js.map +0 -1
- package/src/libs/renderer/src/interaction/highlighters.js.map +0 -1
- package/src/libs/renderer/src/interaction/in-place-editor.js.map +0 -1
- package/src/libs/renderer/src/interaction/index.js.map +0 -1
- package/src/libs/renderer/src/interaction/ink-overlay.js.map +0 -1
- package/src/libs/renderer/src/interaction/interaction-controller.js.map +0 -1
- package/src/libs/renderer/src/interaction/keyboard-navigation.js.map +0 -1
- package/src/libs/renderer/src/interaction/selection-tools.js.map +0 -1
- package/src/libs/renderer/src/interaction/snapping.js.map +0 -1
- package/src/libs/renderer/src/interaction/touch-gestures.js.map +0 -1
- package/src/libs/renderer/src/interaction/whiteboard-tools.js.map +0 -1
- package/src/libs/renderer/src/lazy/host-culling.js.map +0 -1
- package/src/libs/renderer/src/lazy/index.js.map +0 -1
- package/src/libs/renderer/src/lazy/progressive-mounter.js.map +0 -1
- package/src/libs/renderer/src/lazy/types.js.map +0 -1
- package/src/libs/renderer/src/lazy/view-lifecycle.js.map +0 -1
- package/src/libs/renderer/src/perf/index.js.map +0 -1
- package/src/libs/renderer/src/perf/perf-hud.js.map +0 -1
- package/src/libs/renderer/src/perf/quality-governor.js.map +0 -1
- package/src/libs/renderer/src/platform/index.js.map +0 -1
- package/src/libs/renderer/src/platform/platform.js.map +0 -1
- package/src/libs/renderer/src/presence/bind-presence.js.map +0 -1
- package/src/libs/renderer/src/presence/index.js.map +0 -1
- package/src/libs/renderer/src/presence/presence-overlay.js.map +0 -1
- package/src/libs/renderer/src/presentation/index.js.map +0 -1
- package/src/libs/renderer/src/presentation/presentation.js.map +0 -1
- package/src/libs/renderer/src/presentation/viewport-channel.js.map +0 -1
- package/src/libs/renderer/src/services/animation-lifecycle.js.map +0 -1
- package/src/libs/renderer/src/services/animation-performance.service.js.map +0 -1
- package/src/libs/renderer/src/services/animation-sequencer.js.map +0 -1
- package/src/libs/renderer/src/services/animation.service.js.map +0 -1
- package/src/libs/renderer/src/services/custom-animation-registry.js.map +0 -1
- package/src/libs/renderer/src/ssr/index.js.map +0 -1
- package/src/libs/renderer/src/ssr/render-to-static.js.map +0 -1
- package/src/libs/renderer/src/svg/ArrowRenderer.js.map +0 -1
- package/src/libs/renderer/src/svg/JumpPointDetector.js.map +0 -1
- package/src/libs/renderer/src/svg/JumpPointRenderer.js.map +0 -1
- package/src/libs/renderer/src/svg/LabelRenderer.js.map +0 -1
- package/src/libs/renderer/src/svg/auto-size.js.map +0 -1
- package/src/libs/renderer/src/svg/channel-nudging.js.map +0 -1
- package/src/libs/renderer/src/svg/edge-optimizer.js.map +0 -1
- package/src/libs/renderer/src/svg/edge-templates.js.map +0 -1
- package/src/libs/renderer/src/svg/html-node.js.map +0 -1
- package/src/libs/renderer/src/svg/index.js.map +0 -1
- package/src/libs/renderer/src/svg/link-fanout.js.map +0 -1
- package/src/libs/renderer/src/svg/link-hit-test.js.map +0 -1
- package/src/libs/renderer/src/svg/motion-tracker.js.map +0 -1
- package/src/libs/renderer/src/svg/node-sizing.js.map +0 -1
- package/src/libs/renderer/src/svg/node-toolbar.js.map +0 -1
- package/src/libs/renderer/src/svg/notation-shapes.js.map +0 -1
- package/src/libs/renderer/src/svg/paint-servers.js.map +0 -1
- package/src/libs/renderer/src/svg/panel.js.map +0 -1
- package/src/libs/renderer/src/svg/path-outline.js.map +0 -1
- package/src/libs/renderer/src/svg/port-glyph.js.map +0 -1
- package/src/libs/renderer/src/svg/port-label.js.map +0 -1
- package/src/libs/renderer/src/svg/port-layout.js.map +0 -1
- package/src/libs/renderer/src/svg/port-positioning.js.map +0 -1
- package/src/libs/renderer/src/svg/port-spots.js.map +0 -1
- package/src/libs/renderer/src/svg/route-memo.js.map +0 -1
- package/src/libs/renderer/src/svg/route-solver-bridge.js.map +0 -1
- package/src/libs/renderer/src/svg/shape-registry.js.map +0 -1
- package/src/libs/renderer/src/svg/stroke-layer.js.map +0 -1
- package/src/libs/renderer/src/svg/svg-renderer.js.map +0 -1
- package/src/libs/renderer/src/svg/text-block.js.map +0 -1
- package/src/libs/renderer/src/themes/color-mode.js.map +0 -1
- package/src/libs/renderer/src/themes/contrast.js.map +0 -1
- package/src/libs/renderer/src/themes/default-dark-theme.js.map +0 -1
- package/src/libs/renderer/src/themes/default-light-theme.js.map +0 -1
- package/src/libs/renderer/src/themes/default-theme-set.js.map +0 -1
- package/src/libs/renderer/src/themes/high-contrast-theme.js.map +0 -1
- package/src/libs/renderer/src/themes/index.js.map +0 -1
- package/src/libs/renderer/src/themes/style-cascade.js.map +0 -1
- package/src/libs/renderer/src/themes/style-registry.js.map +0 -1
- package/src/libs/renderer/src/themes/theme-a11y.js.map +0 -1
- package/src/libs/renderer/src/themes/theme-css.js.map +0 -1
- package/src/libs/renderer/src/themes/theme-ref.js.map +0 -1
- package/src/libs/renderer/src/themes/theme-vars.js.map +0 -1
- package/src/libs/renderer/src/themes/token-bridge.js.map +0 -1
- package/src/libs/renderer/src/types/geometry.types.js.map +0 -1
- package/src/libs/renderer/src/types/index.js.map +0 -1
- package/src/libs/renderer/src/types/property-schema/conditions.js.map +0 -1
- package/src/libs/renderer/src/types/property-schema/editor-types.js.map +0 -1
- package/src/libs/renderer/src/types/property-schema/groups.js.map +0 -1
- package/src/libs/renderer/src/types/property-schema/index.js.map +0 -1
- package/src/libs/renderer/src/types/property-schema/property-definition.js.map +0 -1
- package/src/libs/renderer/src/types/property-schema/schema.js.map +0 -1
- package/src/libs/renderer/src/types/property-schema/validation.js.map +0 -1
- package/src/libs/renderer/src/types/renderer.interface.js.map +0 -1
- package/src/libs/renderer/src/types/theme.types.js.map +0 -1
- package/src/libs/renderer/src/types/vnode.types.js.map +0 -1
- package/src/libs/renderer/src/utils/animation-presets.js.map +0 -1
- package/src/libs/renderer/src/utils/animation-priority.js.map +0 -1
- package/src/libs/renderer/src/utils/animation-utils.js.map +0 -1
- package/src/libs/renderer/src/utils/lru-cache.js.map +0 -1
- package/src/libs/renderer/src/viewport/index.js.map +0 -1
- package/src/libs/renderer/src/viewport/viewport-controller.js.map +0 -1
- package/src/libs/renderer/src/vnode/container-id-generator.js.map +0 -1
- package/src/libs/renderer/src/vnode/foreign-object.js.map +0 -1
- package/src/libs/renderer/src/vnode/index.js.map +0 -1
- package/src/libs/renderer/src/vnode/patch.js.map +0 -1
- package/src/reachability.spec.ts +0 -173
- package/tsconfig.esm.json +0 -9
- package/tsconfig.json +0 -24
- package/tsconfig.lib.json +0 -10
- package/tsconfig.spec.json +0 -14
|
@@ -1,241 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Join guidance — the pure scoring (ported from the production Query Studio)
|
|
3
|
-
* and the DOM binding that paints tier classes onto kit rows during a
|
|
4
|
-
* connection drag.
|
|
5
|
-
*/
|
|
6
|
-
import {
|
|
7
|
-
singularize,
|
|
8
|
-
scoreMatch,
|
|
9
|
-
matchTier,
|
|
10
|
-
assignTiers,
|
|
11
|
-
bindJoinGuidance,
|
|
12
|
-
ensureJoinGuidanceStyles,
|
|
13
|
-
JOIN_GUIDANCE_STYLE_ID,
|
|
14
|
-
type JoinEnd,
|
|
15
|
-
} from './join-guidance';
|
|
16
|
-
|
|
17
|
-
const end = (table: string, name: string, flags: { pk?: boolean; fk?: boolean } = {}): JoinEnd => ({
|
|
18
|
-
table,
|
|
19
|
-
column: { name, ...flags },
|
|
20
|
-
});
|
|
21
|
-
|
|
22
|
-
afterEach(() => {
|
|
23
|
-
document.getElementById(JOIN_GUIDANCE_STYLE_ID)?.remove();
|
|
24
|
-
document.getElementById('grafloria-join-guidance-ports')?.remove();
|
|
25
|
-
document.body.innerHTML = '';
|
|
26
|
-
});
|
|
27
|
-
|
|
28
|
-
describe('singularize', () => {
|
|
29
|
-
it('handles the schema-name shapes', () => {
|
|
30
|
-
expect(singularize('orders')).toBe('order');
|
|
31
|
-
expect(singularize('customers')).toBe('customer');
|
|
32
|
-
expect(singularize('order_items')).toBe('order_item');
|
|
33
|
-
expect(singularize('categories')).toBe('category');
|
|
34
|
-
expect(singularize('statuses')).toBe('status');
|
|
35
|
-
expect(singularize('address')).toBe('address'); // -ss is not a plural
|
|
36
|
-
});
|
|
37
|
-
});
|
|
38
|
-
|
|
39
|
-
describe('scoreMatch', () => {
|
|
40
|
-
it('scores 3 for the PK↔FK naming convention, in both directions', () => {
|
|
41
|
-
expect(scoreMatch(end('orders', 'customer_id', { fk: true }), end('customers', 'id', { pk: true }))).toBe(3);
|
|
42
|
-
expect(scoreMatch(end('customers', 'id', { pk: true }), end('orders', 'customer_id', { fk: true }))).toBe(3);
|
|
43
|
-
// the convention is NAME-driven — it holds even without the flags
|
|
44
|
-
expect(scoreMatch(end('orders', 'customer_id'), end('customers', 'id'))).toBe(3);
|
|
45
|
-
});
|
|
46
|
-
|
|
47
|
-
it('scores 3 for exact FK name equality across tables', () => {
|
|
48
|
-
expect(
|
|
49
|
-
scoreMatch(end('orders', 'customer_id', { fk: true }), end('addresses', 'customer_id', { fk: true }))
|
|
50
|
-
).toBe(3);
|
|
51
|
-
});
|
|
52
|
-
|
|
53
|
-
it('scores 2 for a PK flag on one end and an FK flag on the other', () => {
|
|
54
|
-
expect(scoreMatch(end('orders', 'id', { pk: true }), end('order_items', 'product_id', { fk: true }))).toBe(2);
|
|
55
|
-
expect(scoreMatch(end('order_items', 'order_id', { fk: true }), end('orders', 'id', { pk: true }))).toBe(3); // convention outranks
|
|
56
|
-
expect(scoreMatch(end('order_items', 'product_id', { fk: true }), end('customers', 'id', { pk: true }))).toBe(2);
|
|
57
|
-
});
|
|
58
|
-
|
|
59
|
-
it('scores 1 for a same-name or both-end-in-id pair', () => {
|
|
60
|
-
expect(scoreMatch(end('customers', 'name'), end('products', 'name'))).toBe(1);
|
|
61
|
-
expect(scoreMatch(end('orders', 'customer_id'), end('order_items', 'product_id'))).toBe(1);
|
|
62
|
-
});
|
|
63
|
-
|
|
64
|
-
it('scores 0 for the same table and for unrelated columns', () => {
|
|
65
|
-
expect(scoreMatch(end('orders', 'id', { pk: true }), end('orders', 'customer_id', { fk: true }))).toBe(0);
|
|
66
|
-
expect(scoreMatch(end('orders', 'customer_id'), end('products', 'sku'))).toBe(0);
|
|
67
|
-
});
|
|
68
|
-
});
|
|
69
|
-
|
|
70
|
-
describe('matchTier / assignTiers', () => {
|
|
71
|
-
it('maps scores to tiers', () => {
|
|
72
|
-
expect(matchTier(3)).toBe('good');
|
|
73
|
-
expect(matchTier(2)).toBe('good');
|
|
74
|
-
expect(matchTier(1)).toBe('ok');
|
|
75
|
-
expect(matchTier(0)).toBe('none');
|
|
76
|
-
});
|
|
77
|
-
|
|
78
|
-
it('promotes exactly ONE best candidate (score >= 2) to top', () => {
|
|
79
|
-
expect(assignTiers([3, 2, 1, 0])).toEqual(['top', 'good', 'ok', 'none']);
|
|
80
|
-
expect(assignTiers([2, 2])).toEqual(['top', 'good']); // first max wins
|
|
81
|
-
expect(assignTiers([1, 1, 0])).toEqual(['ok', 'ok', 'none']); // no top below 2
|
|
82
|
-
expect(assignTiers([])).toEqual([]);
|
|
83
|
-
});
|
|
84
|
-
});
|
|
85
|
-
|
|
86
|
-
// ---------------------------------------------------------------------------
|
|
87
|
-
// bindJoinGuidance — DOM + event lifecycle against a stub instance
|
|
88
|
-
// ---------------------------------------------------------------------------
|
|
89
|
-
|
|
90
|
-
type Handler = (data: unknown) => void;
|
|
91
|
-
|
|
92
|
-
function stubApi() {
|
|
93
|
-
const container = document.createElement('div');
|
|
94
|
-
document.body.appendChild(container);
|
|
95
|
-
|
|
96
|
-
const mkCard = (nodeId: string, columns: Array<{ name: string; pk?: boolean; fk?: boolean }>) => {
|
|
97
|
-
const group = document.createElement('div');
|
|
98
|
-
group.setAttribute('data-node-id', nodeId);
|
|
99
|
-
for (const c of columns) {
|
|
100
|
-
const row = document.createElement('div');
|
|
101
|
-
row.className = 'axk-row';
|
|
102
|
-
const col = document.createElement('span');
|
|
103
|
-
col.className = 'axk-col';
|
|
104
|
-
col.textContent = c.name;
|
|
105
|
-
row.appendChild(col);
|
|
106
|
-
group.appendChild(row);
|
|
107
|
-
}
|
|
108
|
-
container.appendChild(group);
|
|
109
|
-
return {
|
|
110
|
-
id: nodeId,
|
|
111
|
-
getMetadata: (key: string) => (key === 'kitEntity' ? { id: nodeId, columns } : undefined),
|
|
112
|
-
getPorts: () => columns.flatMap((c) => [{ id: `${nodeId}.${c.name}-in` }, { id: `${nodeId}.${c.name}-out` }]),
|
|
113
|
-
getPort: (id: string) =>
|
|
114
|
-
columns.some((c) => id === `${nodeId}.${c.name}-in` || id === `${nodeId}.${c.name}-out`)
|
|
115
|
-
? { id }
|
|
116
|
-
: undefined,
|
|
117
|
-
};
|
|
118
|
-
};
|
|
119
|
-
|
|
120
|
-
const customers = mkCard('customers', [
|
|
121
|
-
{ name: 'id', pk: true },
|
|
122
|
-
{ name: 'name' },
|
|
123
|
-
{ name: 'email' },
|
|
124
|
-
]);
|
|
125
|
-
const orders = mkCard('orders', [
|
|
126
|
-
{ name: 'id', pk: true },
|
|
127
|
-
{ name: 'customer_id', fk: true },
|
|
128
|
-
{ name: 'total' },
|
|
129
|
-
]);
|
|
130
|
-
|
|
131
|
-
const handlers = new Map<string, Handler[]>();
|
|
132
|
-
const bus = {
|
|
133
|
-
on: (event: string, handler: Handler) => {
|
|
134
|
-
const list = handlers.get(event) ?? [];
|
|
135
|
-
list.push(handler);
|
|
136
|
-
handlers.set(event, list);
|
|
137
|
-
return () => handlers.set(event, (handlers.get(event) ?? []).filter((h) => h !== handler));
|
|
138
|
-
},
|
|
139
|
-
emit: (event: string, data?: unknown) => {
|
|
140
|
-
for (const h of handlers.get(event) ?? []) h(data);
|
|
141
|
-
},
|
|
142
|
-
};
|
|
143
|
-
|
|
144
|
-
const nodes = [customers, orders];
|
|
145
|
-
const invalid = new Map<string, string>();
|
|
146
|
-
const api = {
|
|
147
|
-
container,
|
|
148
|
-
getModel: () => ({
|
|
149
|
-
getNode: (id: string) => nodes.find((n) => n.id === id),
|
|
150
|
-
getNodes: () => nodes,
|
|
151
|
-
}),
|
|
152
|
-
getEngine: () => ({
|
|
153
|
-
eventBus: bus,
|
|
154
|
-
getConnectionStateManager: () => ({ getState: () => ({ invalidTargetPorts: invalid }) }),
|
|
155
|
-
}),
|
|
156
|
-
};
|
|
157
|
-
return { api, bus, container, invalid };
|
|
158
|
-
}
|
|
159
|
-
|
|
160
|
-
describe('bindJoinGuidance', () => {
|
|
161
|
-
it('injects the tint stylesheet once', () => {
|
|
162
|
-
ensureJoinGuidanceStyles();
|
|
163
|
-
ensureJoinGuidanceStyles();
|
|
164
|
-
expect(document.querySelectorAll(`#${JOIN_GUIDANCE_STYLE_ID}`)).toHaveLength(1);
|
|
165
|
-
});
|
|
166
|
-
|
|
167
|
-
it('tints the other tables by tier on connection:start — and never the source', () => {
|
|
168
|
-
const { api, bus, container } = stubApi();
|
|
169
|
-
const handle = bindJoinGuidance(api);
|
|
170
|
-
|
|
171
|
-
bus.emit('connection:start', { sourcePort: { id: 'orders.customer_id-out', nodeId: 'orders' } });
|
|
172
|
-
|
|
173
|
-
const customerRows = Array.from(
|
|
174
|
-
container.querySelectorAll('[data-node-id="customers"] .axk-row')
|
|
175
|
-
) as HTMLElement[];
|
|
176
|
-
expect(customerRows[0]!.classList.contains('axk-match-top')).toBe(true); // customers.id — convention
|
|
177
|
-
expect(customerRows[0]!.querySelector('.axk-match-chip')?.textContent).toBe('★ BEST');
|
|
178
|
-
expect(customerRows[1]!.classList.contains('axk-match-none')).toBe(true); // name
|
|
179
|
-
expect(customerRows[2]!.classList.contains('axk-match-none')).toBe(true); // email
|
|
180
|
-
|
|
181
|
-
// the source table's own rows carry NO tint at all
|
|
182
|
-
const orderRows = Array.from(container.querySelectorAll('[data-node-id="orders"] .axk-row'));
|
|
183
|
-
for (const row of orderRows) {
|
|
184
|
-
expect(row.className).toBe('axk-row');
|
|
185
|
-
}
|
|
186
|
-
|
|
187
|
-
// port glow stylesheet targets the top column's ports
|
|
188
|
-
const portStyle = document.getElementById('grafloria-join-guidance-ports');
|
|
189
|
-
expect(portStyle?.textContent).toContain('customers.id-in');
|
|
190
|
-
expect(portStyle?.textContent).toContain('#f59e0b');
|
|
191
|
-
|
|
192
|
-
expect(handle.activeTiers().get('customers')?.get(0)).toBe('top');
|
|
193
|
-
handle.dispose();
|
|
194
|
-
});
|
|
195
|
-
|
|
196
|
-
it('a validator-invalid target NEVER tints, whatever its score', () => {
|
|
197
|
-
const { api, bus, container, invalid } = stubApi();
|
|
198
|
-
// the engine recorded customers.id-in as un-connectable for this drag
|
|
199
|
-
// (e.g. the pair is already joined) — the '★ BEST' textual match must
|
|
200
|
-
// rank 'none', not gold, or the guidance glorifies a refused drop.
|
|
201
|
-
invalid.set('customers.id-in', 'pair already joined');
|
|
202
|
-
const handle = bindJoinGuidance(api);
|
|
203
|
-
|
|
204
|
-
bus.emit('connection:start', { sourcePort: { id: 'orders.customer_id-out', nodeId: 'orders' } });
|
|
205
|
-
|
|
206
|
-
const customerRows = Array.from(
|
|
207
|
-
container.querySelectorAll('[data-node-id="customers"] .axk-row')
|
|
208
|
-
) as HTMLElement[];
|
|
209
|
-
expect(customerRows[0]!.classList.contains('axk-match-none')).toBe(true);
|
|
210
|
-
expect(customerRows[0]!.querySelector('.axk-match-chip')).toBeNull();
|
|
211
|
-
const portStyle = document.getElementById('grafloria-join-guidance-ports');
|
|
212
|
-
expect(portStyle?.textContent ?? '').not.toContain('customers.id-in');
|
|
213
|
-
handle.dispose();
|
|
214
|
-
});
|
|
215
|
-
|
|
216
|
-
it('clears every tint when the drag ends — complete or cancel', () => {
|
|
217
|
-
const { api, bus, container } = stubApi();
|
|
218
|
-
const handle = bindJoinGuidance(api);
|
|
219
|
-
|
|
220
|
-
for (const endEvent of ['connection:complete', 'connection:cancel']) {
|
|
221
|
-
bus.emit('connection:start', { sourcePort: { id: 'orders.customer_id-out', nodeId: 'orders' } });
|
|
222
|
-
expect(container.querySelectorAll('[class*="axk-match-"]').length).toBeGreaterThan(0);
|
|
223
|
-
bus.emit(endEvent);
|
|
224
|
-
expect(container.querySelectorAll('[class*="axk-match-"]')).toHaveLength(0);
|
|
225
|
-
expect(container.querySelectorAll('.axk-match-chip')).toHaveLength(0);
|
|
226
|
-
expect(document.getElementById('grafloria-join-guidance-ports')).toBeNull();
|
|
227
|
-
expect(handle.activeTiers().size).toBe(0);
|
|
228
|
-
}
|
|
229
|
-
handle.dispose();
|
|
230
|
-
});
|
|
231
|
-
|
|
232
|
-
it('dispose unsubscribes and clears', () => {
|
|
233
|
-
const { api, bus, container } = stubApi();
|
|
234
|
-
const handle = bindJoinGuidance(api);
|
|
235
|
-
bus.emit('connection:start', { sourcePort: { id: 'orders.customer_id-out', nodeId: 'orders' } });
|
|
236
|
-
handle.dispose();
|
|
237
|
-
expect(container.querySelectorAll('[class*="axk-match-"]')).toHaveLength(0);
|
|
238
|
-
bus.emit('connection:start', { sourcePort: { id: 'orders.customer_id-out', nodeId: 'orders' } });
|
|
239
|
-
expect(container.querySelectorAll('[class*="axk-match-"]')).toHaveLength(0); // unbound
|
|
240
|
-
});
|
|
241
|
-
});
|
|
@@ -1,390 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Join guidance — live "which column should I join to?" scoring + tinting for
|
|
3
|
-
* kit table cards, the feature a visual query builder is actually about.
|
|
4
|
-
*
|
|
5
|
-
* Ported verbatim from a production BI tool's Query Studio (the scoring is ~55
|
|
6
|
-
* pure lines there too). While a connection drag is in progress, every column
|
|
7
|
-
* on every OTHER table is scored against the drag's source column and its card
|
|
8
|
-
* row is tinted by tier:
|
|
9
|
-
*
|
|
10
|
-
* score 3 — PK↔FK naming convention: `orders.customer_id` ↔ `customers.id`
|
|
11
|
-
* (`<singular(table)>_id` on one end, `id` on the other), or exact
|
|
12
|
-
* FK column-name equality across tables;
|
|
13
|
-
* score 2 — a PK flag on one end and an FK flag on the other;
|
|
14
|
-
* score 1 — same column name, or both names end in "id";
|
|
15
|
-
* score 0 — same table, or nothing.
|
|
16
|
-
*
|
|
17
|
-
* Tiers: the single best candidate scoring >= 2 is `top` (gold, "★ BEST"),
|
|
18
|
-
* every other >= 2 is `good` (green), 1 is `ok` (blue), 0 is `none` (dimmed).
|
|
19
|
-
* The SOURCE table is never tinted, and every tint clears when the drag ends —
|
|
20
|
-
* complete, cancelled or escaped.
|
|
21
|
-
*
|
|
22
|
-
* Split the same way the rest of the kit is:
|
|
23
|
-
* - `scoreMatch` / `matchTier` / `assignTiers` / `singularize` are PURE
|
|
24
|
-
* (unit-specced in the element suite);
|
|
25
|
-
* - `bindJoinGuidance(api)` is the runtime: it listens to the engine's own
|
|
26
|
-
* connection lifecycle events (`connection:start` / `:complete` /
|
|
27
|
-
* `:cancel`) and paints tier classes onto the kit's `.axk-row` elements.
|
|
28
|
-
*
|
|
29
|
-
* Row tints go on as DOM classes — the renderer's foreignObject subtrees are
|
|
30
|
-
* patch-opaque, so classes survive the per-frame VNode patch. Port tints go in
|
|
31
|
-
* as a generated per-drag <style> element keyed by `data-port-id`: port glyphs
|
|
32
|
-
* ARE re-patched every frame, so a class added to the SVG element would be
|
|
33
|
-
* wiped mid-drag, while a stylesheet wins the cascade and survives.
|
|
34
|
-
*/
|
|
35
|
-
|
|
36
|
-
export interface JoinColumn {
|
|
37
|
-
name: string;
|
|
38
|
-
pk?: boolean;
|
|
39
|
-
fk?: boolean;
|
|
40
|
-
}
|
|
41
|
-
|
|
42
|
-
/** One end of a candidate join: a table (node) and one of its columns. */
|
|
43
|
-
export interface JoinEnd {
|
|
44
|
-
table: string;
|
|
45
|
-
column: JoinColumn;
|
|
46
|
-
}
|
|
47
|
-
|
|
48
|
-
export type MatchTier = 'top' | 'good' | 'ok' | 'none';
|
|
49
|
-
|
|
50
|
-
/** Naive English singular — enough for schema names (orders, categories, statuses). */
|
|
51
|
-
export function singularize(word: string): string {
|
|
52
|
-
const w = word.toLowerCase();
|
|
53
|
-
if (w.endsWith('ies') && w.length > 3) return w.slice(0, -3) + 'y';
|
|
54
|
-
if (/(?:ses|xes|zes|ches|shes)$/.test(w)) return w.slice(0, -2);
|
|
55
|
-
if (w.endsWith('s') && !w.endsWith('ss')) return w.slice(0, -1);
|
|
56
|
-
return w;
|
|
57
|
-
}
|
|
58
|
-
|
|
59
|
-
/** The PK↔FK naming convention: `a` is `<singular(b.table)>_id` and `b` is `id`. */
|
|
60
|
-
function conventionMatch(a: JoinEnd, b: JoinEnd): boolean {
|
|
61
|
-
return (
|
|
62
|
-
a.column.name.toLowerCase() === `${singularize(b.table)}_id` &&
|
|
63
|
-
b.column.name.toLowerCase() === 'id'
|
|
64
|
-
);
|
|
65
|
-
}
|
|
66
|
-
|
|
67
|
-
/**
|
|
68
|
-
* Score a candidate join between two columns. Pure; the exact production
|
|
69
|
-
* logic. Higher is better; 0 means "no reason to join these".
|
|
70
|
-
*/
|
|
71
|
-
export function scoreMatch(a: JoinEnd, b: JoinEnd): 0 | 1 | 2 | 3 {
|
|
72
|
-
if (!a || !b || a.table === b.table) return 0;
|
|
73
|
-
const an = a.column.name.toLowerCase();
|
|
74
|
-
const bn = b.column.name.toLowerCase();
|
|
75
|
-
|
|
76
|
-
// 3 — the naming convention (either direction), or exact FK-name equality.
|
|
77
|
-
if (conventionMatch(a, b) || conventionMatch(b, a)) return 3;
|
|
78
|
-
if (an === bn && an.endsWith('_id') && (a.column.fk === true || b.column.fk === true)) return 3;
|
|
79
|
-
|
|
80
|
-
// 2 — PK flag on one end, FK flag on the other.
|
|
81
|
-
if ((a.column.pk === true && b.column.fk === true) || (a.column.fk === true && b.column.pk === true)) return 2;
|
|
82
|
-
|
|
83
|
-
// 1 — same name, or both look like identifiers.
|
|
84
|
-
if (an === bn) return 1;
|
|
85
|
-
if (an.endsWith('id') && bn.endsWith('id')) return 1;
|
|
86
|
-
|
|
87
|
-
return 0;
|
|
88
|
-
}
|
|
89
|
-
|
|
90
|
-
/** Per-score tier (rank-free half; `assignTiers` promotes the single best to `top`). */
|
|
91
|
-
export function matchTier(score: number): Exclude<MatchTier, 'top'> {
|
|
92
|
-
if (score >= 2) return 'good';
|
|
93
|
-
if (score >= 1) return 'ok';
|
|
94
|
-
return 'none';
|
|
95
|
-
}
|
|
96
|
-
|
|
97
|
-
/**
|
|
98
|
-
* Tier every candidate score at once: the FIRST candidate holding the maximum
|
|
99
|
-
* score is `top` when that maximum is >= 2 — exactly one gold row per drag.
|
|
100
|
-
*/
|
|
101
|
-
export function assignTiers(scores: number[]): MatchTier[] {
|
|
102
|
-
const max = scores.reduce((m, s) => (s > m ? s : m), 0);
|
|
103
|
-
let topIndex = -1;
|
|
104
|
-
if (max >= 2) topIndex = scores.indexOf(max);
|
|
105
|
-
return scores.map((s, i) => (i === topIndex ? 'top' : matchTier(s)));
|
|
106
|
-
}
|
|
107
|
-
|
|
108
|
-
// ---------------------------------------------------------------------------
|
|
109
|
-
// Runtime binding
|
|
110
|
-
// ---------------------------------------------------------------------------
|
|
111
|
-
|
|
112
|
-
const TIER_CLASS: Record<MatchTier, string> = {
|
|
113
|
-
top: 'axk-match-top',
|
|
114
|
-
good: 'axk-match-good',
|
|
115
|
-
ok: 'axk-match-ok',
|
|
116
|
-
none: 'axk-match-none',
|
|
117
|
-
};
|
|
118
|
-
const CHIP_CLASS = 'axk-match-chip';
|
|
119
|
-
const PORT_STYLE_ID = 'grafloria-join-guidance-ports';
|
|
120
|
-
|
|
121
|
-
export const JOIN_GUIDANCE_STYLE_ID = 'grafloria-join-guidance-styles';
|
|
122
|
-
|
|
123
|
-
/** The tier tints — the production palette, verbatim. */
|
|
124
|
-
const GUIDANCE_CSS = `
|
|
125
|
-
.axk-row.axk-match-top { background: #fffbeb;
|
|
126
|
-
box-shadow: inset 4px 0 0 #f59e0b, inset 0 0 0 1px #fcd34d; }
|
|
127
|
-
.axk-row.axk-match-top .axk-col { font-weight: 800; color: #92600a; }
|
|
128
|
-
.axk-row.axk-match-good { background: #dcfce7; box-shadow: inset 4px 0 0 #16a34a; }
|
|
129
|
-
.axk-row.axk-match-good .axk-col { font-weight: 700; color: #14532d; }
|
|
130
|
-
.axk-row.axk-match-ok { background: #dbeafe; box-shadow: inset 4px 0 0 #2563eb; }
|
|
131
|
-
.axk-row.axk-match-none { opacity: .4; }
|
|
132
|
-
.${CHIP_CLASS} { font-size: 9px; font-weight: 800; text-transform: uppercase;
|
|
133
|
-
background: #f59e0b; color: #4a2e05; border-radius: 4px; padding: 1px 4px;
|
|
134
|
-
margin-left: 4px; flex: 0 0 auto; letter-spacing: .3px; }
|
|
135
|
-
`;
|
|
136
|
-
|
|
137
|
-
/** Inject the guidance tint stylesheet once. Safe to call repeatedly / in SSR. */
|
|
138
|
-
export function ensureJoinGuidanceStyles(
|
|
139
|
-
doc: Document | undefined = typeof document !== 'undefined' ? document : undefined
|
|
140
|
-
): void {
|
|
141
|
-
if (!doc) return;
|
|
142
|
-
if (doc.getElementById(JOIN_GUIDANCE_STYLE_ID)) return;
|
|
143
|
-
const style = doc.createElement('style');
|
|
144
|
-
style.id = JOIN_GUIDANCE_STYLE_ID;
|
|
145
|
-
style.textContent = GUIDANCE_CSS;
|
|
146
|
-
doc.head.appendChild(style);
|
|
147
|
-
}
|
|
148
|
-
|
|
149
|
-
interface NodeLike {
|
|
150
|
-
id: string;
|
|
151
|
-
getMetadata?(key: string): unknown;
|
|
152
|
-
getPorts?(): Array<{ id: string }>;
|
|
153
|
-
getPort?(id: string): unknown;
|
|
154
|
-
}
|
|
155
|
-
|
|
156
|
-
/** The slice of DiagramInstance the binding needs (matches HandleApi's shape). */
|
|
157
|
-
export interface JoinGuidanceApi {
|
|
158
|
-
container: HTMLElement;
|
|
159
|
-
getModel(): {
|
|
160
|
-
getNode(id: string): NodeLike | undefined;
|
|
161
|
-
getNodes?(): NodeLike[];
|
|
162
|
-
};
|
|
163
|
-
getEngine?():
|
|
164
|
-
| { eventBus?: { on(event: string, handler: (data: unknown) => void): () => void } }
|
|
165
|
-
| undefined;
|
|
166
|
-
}
|
|
167
|
-
|
|
168
|
-
export interface JoinGuidanceOptions {
|
|
169
|
-
/**
|
|
170
|
-
* Resolve a PORT id to its table column. The default understands both the
|
|
171
|
-
* ER kit's convention (`TABLE__col__side__n`) and the query-builder dot
|
|
172
|
-
* convention (`table.col-in` / `table.col-out`), checked against the node's
|
|
173
|
-
* actual `kitEntity` columns so an ambiguous name never mis-resolves.
|
|
174
|
-
*/
|
|
175
|
-
resolvePort?: (portId: string, nodeId: string | undefined) => { nodeId: string; column: string } | null;
|
|
176
|
-
/** Text of the gold chip on the best row. Default `'★ BEST'`. */
|
|
177
|
-
chipText?: string;
|
|
178
|
-
/**
|
|
179
|
-
* Extra per-tier CSS for the target columns' PORT glyphs, injected per drag.
|
|
180
|
-
* Default paints the production glows (gold/green/blue drop-shadows).
|
|
181
|
-
*/
|
|
182
|
-
portCss?: (tier: MatchTier, selector: string) => string;
|
|
183
|
-
}
|
|
184
|
-
|
|
185
|
-
export interface JoinGuidanceHandle {
|
|
186
|
-
/** nodeId → rowIndex → tier for the drag in progress (empty when idle). */
|
|
187
|
-
activeTiers(): Map<string, Map<number, MatchTier>>;
|
|
188
|
-
dispose(): void;
|
|
189
|
-
}
|
|
190
|
-
|
|
191
|
-
const esc = (value: string): string =>
|
|
192
|
-
typeof CSS !== 'undefined' && CSS.escape ? CSS.escape(value) : value.replace(/"/g, '\\"');
|
|
193
|
-
|
|
194
|
-
/** The production port glows: gold 4px, green 3px, blue 2px; `none` recedes. */
|
|
195
|
-
function defaultPortCss(tier: MatchTier, selector: string): string {
|
|
196
|
-
switch (tier) {
|
|
197
|
-
case 'top':
|
|
198
|
-
return `${selector} { fill: #f59e0b !important; stroke: #f59e0b !important; filter: drop-shadow(0 0 4px rgba(245,158,11,.4)) drop-shadow(0 0 2px rgba(245,158,11,.4)); }`;
|
|
199
|
-
case 'good':
|
|
200
|
-
return `${selector} { fill: #16a34a !important; stroke: #16a34a !important; filter: drop-shadow(0 0 3px rgba(22,163,74,.35)); }`;
|
|
201
|
-
case 'ok':
|
|
202
|
-
return `${selector} { fill: #2563eb !important; stroke: #2563eb !important; filter: drop-shadow(0 0 2px rgba(37,99,235,.3)); }`;
|
|
203
|
-
default:
|
|
204
|
-
return '';
|
|
205
|
-
}
|
|
206
|
-
}
|
|
207
|
-
|
|
208
|
-
interface KitEntityMeta {
|
|
209
|
-
columns?: JoinColumn[];
|
|
210
|
-
name?: string;
|
|
211
|
-
}
|
|
212
|
-
|
|
213
|
-
/**
|
|
214
|
-
* Bind live join guidance to a diagram instance. Listens to the engine's
|
|
215
|
-
* connection lifecycle; while a drag is live, every kit-card row on every
|
|
216
|
-
* other table wears its tier class (and the best one its "★ BEST" chip), and
|
|
217
|
-
* the matching port glyphs glow via a generated stylesheet. Everything clears
|
|
218
|
-
* when the drag ends, however it ends.
|
|
219
|
-
*/
|
|
220
|
-
export function bindJoinGuidance(api: JoinGuidanceApi, options: JoinGuidanceOptions = {}): JoinGuidanceHandle {
|
|
221
|
-
ensureJoinGuidanceStyles(api.container.ownerDocument);
|
|
222
|
-
|
|
223
|
-
const chipText = options.chipText ?? '★ BEST';
|
|
224
|
-
const portCss = options.portCss ?? defaultPortCss;
|
|
225
|
-
|
|
226
|
-
const kitOf = (node: NodeLike | undefined): KitEntityMeta | null => {
|
|
227
|
-
const raw = node?.getMetadata?.('kitEntity');
|
|
228
|
-
return raw && typeof raw === 'object' ? (raw as KitEntityMeta) : null;
|
|
229
|
-
};
|
|
230
|
-
|
|
231
|
-
const defaultResolve = (portId: string, nodeId: string | undefined): { nodeId: string; column: string } | null => {
|
|
232
|
-
const model = api.getModel();
|
|
233
|
-
const nodes = nodeId
|
|
234
|
-
? [model.getNode(nodeId)].filter((n): n is NodeLike => !!n)
|
|
235
|
-
: (model.getNodes?.() ?? []).filter((n) => !!n.getPort?.(portId));
|
|
236
|
-
for (const node of nodes) {
|
|
237
|
-
const kit = kitOf(node);
|
|
238
|
-
if (!kit?.columns) continue;
|
|
239
|
-
for (const column of kit.columns) {
|
|
240
|
-
if (
|
|
241
|
-
portId === `${node.id}.${column.name}-in` ||
|
|
242
|
-
portId === `${node.id}.${column.name}-out` ||
|
|
243
|
-
portId.startsWith(`${node.id}__${column.name}__`)
|
|
244
|
-
) {
|
|
245
|
-
return { nodeId: node.id, column: column.name };
|
|
246
|
-
}
|
|
247
|
-
}
|
|
248
|
-
}
|
|
249
|
-
return null;
|
|
250
|
-
};
|
|
251
|
-
const resolvePort = options.resolvePort ?? defaultResolve;
|
|
252
|
-
|
|
253
|
-
const active = new Map<string, Map<number, MatchTier>>();
|
|
254
|
-
let portStyle: HTMLStyleElement | null = null;
|
|
255
|
-
|
|
256
|
-
const rowsOf = (nodeId: string): HTMLElement[] => {
|
|
257
|
-
const group = api.container.querySelector(`[data-node-id="${esc(nodeId)}"]`);
|
|
258
|
-
return group ? (Array.from(group.querySelectorAll('.axk-row')) as HTMLElement[]) : [];
|
|
259
|
-
};
|
|
260
|
-
|
|
261
|
-
const clear = (): void => {
|
|
262
|
-
for (const cls of Object.values(TIER_CLASS)) {
|
|
263
|
-
for (const el of Array.from(api.container.querySelectorAll(`.${cls}`))) el.classList.remove(cls);
|
|
264
|
-
}
|
|
265
|
-
for (const chip of Array.from(api.container.querySelectorAll(`.${CHIP_CLASS}`))) chip.remove();
|
|
266
|
-
portStyle?.remove();
|
|
267
|
-
portStyle = null;
|
|
268
|
-
active.clear();
|
|
269
|
-
};
|
|
270
|
-
|
|
271
|
-
const portsForColumn = (node: NodeLike, column: string): string[] => {
|
|
272
|
-
const ports = node.getPorts?.() ?? [];
|
|
273
|
-
return ports
|
|
274
|
-
.map((p) => p.id)
|
|
275
|
-
.filter(
|
|
276
|
-
(id) =>
|
|
277
|
-
id === `${node.id}.${column}-in` ||
|
|
278
|
-
id === `${node.id}.${column}-out` ||
|
|
279
|
-
id.startsWith(`${node.id}__${column}__`)
|
|
280
|
-
);
|
|
281
|
-
};
|
|
282
|
-
|
|
283
|
-
const onStart = (data: unknown): void => {
|
|
284
|
-
clear();
|
|
285
|
-
const payload = data as { sourcePort?: { id: string; nodeId?: string } } | undefined;
|
|
286
|
-
const sourcePort = payload?.sourcePort;
|
|
287
|
-
if (!sourcePort) return;
|
|
288
|
-
const source = resolvePort(sourcePort.id, sourcePort.nodeId);
|
|
289
|
-
if (!source) return;
|
|
290
|
-
|
|
291
|
-
const model = api.getModel();
|
|
292
|
-
const sourceNode = model.getNode(source.nodeId);
|
|
293
|
-
const sourceKit = kitOf(sourceNode);
|
|
294
|
-
const sourceColumn = sourceKit?.columns?.find((c) => c.name === source.column);
|
|
295
|
-
if (!sourceColumn) return;
|
|
296
|
-
const sourceEnd: JoinEnd = { table: source.nodeId, column: sourceColumn };
|
|
297
|
-
|
|
298
|
-
// Every column of every OTHER kit table is a candidate, in node order.
|
|
299
|
-
const candidates: Array<{ node: NodeLike; rowIndex: number; column: JoinColumn }> = [];
|
|
300
|
-
for (const node of model.getNodes?.() ?? []) {
|
|
301
|
-
if (node.id === source.nodeId) continue; // the source table is NEVER tinted
|
|
302
|
-
const kit = kitOf(node);
|
|
303
|
-
if (!kit?.columns) continue;
|
|
304
|
-
kit.columns.forEach((column, rowIndex) => candidates.push({ node, rowIndex, column }));
|
|
305
|
-
}
|
|
306
|
-
if (candidates.length === 0) return;
|
|
307
|
-
|
|
308
|
-
// The VALIDATOR outranks the score. A column can be the best textual
|
|
309
|
-
// match and still be un-connectable (its table pair already joined, or a
|
|
310
|
-
// custom validator refuses it) — the engine records those as
|
|
311
|
-
// invalidTargetPorts at drag start, and the renderer paints them red on
|
|
312
|
-
// hover. Tinting the same port gold would be the guidance lying about a
|
|
313
|
-
// target the drop will refuse (caught by the demo gate: the seeded
|
|
314
|
-
// customers⋈orders pair made customers.id both '★ BEST' and invalid).
|
|
315
|
-
const invalid = ((): Set<string> => {
|
|
316
|
-
try {
|
|
317
|
-
const engine = api.getEngine?.() as
|
|
318
|
-
| { getConnectionStateManager?: () => { getState?: () => { invalidTargetPorts?: Map<string, string> } } }
|
|
319
|
-
| undefined;
|
|
320
|
-
const map = engine?.getConnectionStateManager?.()?.getState?.()?.invalidTargetPorts;
|
|
321
|
-
return new Set(map ? [...map.keys()] : []);
|
|
322
|
-
} catch {
|
|
323
|
-
return new Set();
|
|
324
|
-
}
|
|
325
|
-
})();
|
|
326
|
-
const scores = candidates.map((c) => {
|
|
327
|
-
const targetIn = `${c.node.id}.${c.column.name}-in`;
|
|
328
|
-
if (invalid.has(targetIn)) return 0;
|
|
329
|
-
const port = (c.node.getPort?.(targetIn) ?? null) as { id?: string } | null;
|
|
330
|
-
if (port?.id && invalid.has(port.id)) return 0;
|
|
331
|
-
return scoreMatch(sourceEnd, { table: c.node.id, column: c.column });
|
|
332
|
-
});
|
|
333
|
-
const tiers = assignTiers(scores);
|
|
334
|
-
|
|
335
|
-
const cssRules: string[] = [];
|
|
336
|
-
candidates.forEach((candidate, i) => {
|
|
337
|
-
const tier = tiers[i]!;
|
|
338
|
-
const byRow = active.get(candidate.node.id) ?? new Map<number, MatchTier>();
|
|
339
|
-
byRow.set(candidate.rowIndex, tier);
|
|
340
|
-
active.set(candidate.node.id, byRow);
|
|
341
|
-
|
|
342
|
-
const row = rowsOf(candidate.node.id)[candidate.rowIndex];
|
|
343
|
-
if (row) {
|
|
344
|
-
row.classList.add(TIER_CLASS[tier]);
|
|
345
|
-
if (tier === 'top') {
|
|
346
|
-
const chip = api.container.ownerDocument.createElement('span');
|
|
347
|
-
chip.className = CHIP_CLASS;
|
|
348
|
-
chip.textContent = chipText;
|
|
349
|
-
row.appendChild(chip);
|
|
350
|
-
}
|
|
351
|
-
}
|
|
352
|
-
if (tier !== 'none') {
|
|
353
|
-
for (const portId of portsForColumn(candidate.node, candidate.column.name)) {
|
|
354
|
-
const rule = portCss(tier, `[data-port-id="${esc(portId)}"]`);
|
|
355
|
-
if (rule) cssRules.push(rule);
|
|
356
|
-
}
|
|
357
|
-
}
|
|
358
|
-
});
|
|
359
|
-
|
|
360
|
-
if (cssRules.length > 0) {
|
|
361
|
-
portStyle = api.container.ownerDocument.createElement('style');
|
|
362
|
-
portStyle.id = PORT_STYLE_ID;
|
|
363
|
-
portStyle.textContent = cssRules.join('\n');
|
|
364
|
-
api.container.ownerDocument.head.appendChild(portStyle);
|
|
365
|
-
}
|
|
366
|
-
};
|
|
367
|
-
|
|
368
|
-
const bus = api.getEngine?.()?.eventBus;
|
|
369
|
-
const offs: Array<() => void> = [];
|
|
370
|
-
if (bus) {
|
|
371
|
-
offs.push(bus.on('connection:start', onStart));
|
|
372
|
-
offs.push(bus.on('connection:complete', clear));
|
|
373
|
-
offs.push(bus.on('connection:cancel', clear));
|
|
374
|
-
// The event-type constant spells it 'cancelled'; the state manager emits
|
|
375
|
-
// 'cancel'. Subscribe to both so a future spelling fix cannot leave tints on.
|
|
376
|
-
offs.push(bus.on('connection:cancelled', clear));
|
|
377
|
-
}
|
|
378
|
-
|
|
379
|
-
return {
|
|
380
|
-
activeTiers: () => {
|
|
381
|
-
const copy = new Map<string, Map<number, MatchTier>>();
|
|
382
|
-
for (const [nodeId, byRow] of active) copy.set(nodeId, new Map(byRow));
|
|
383
|
-
return copy;
|
|
384
|
-
},
|
|
385
|
-
dispose: () => {
|
|
386
|
-
for (const off of offs) off();
|
|
387
|
-
clear();
|
|
388
|
-
},
|
|
389
|
-
};
|
|
390
|
-
}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"rows.js","sourceRoot":"","sources":["rows.ts"],"names":[],"mappings":"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"}
|