@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,174 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Row interactions — "select a column / field" on kit cards (P1 of the
|
|
3
|
-
* ER/UML editing track).
|
|
4
|
-
*
|
|
5
|
-
* Kit cards are `interactive: true` (their rows are real DOM targets — the
|
|
6
|
-
* binder's node click/drag resolution is geometric, so dragging and selecting
|
|
7
|
-
* the TABLE keeps working; proven live before this was built). This module is
|
|
8
|
-
* the runtime the kit's `finalize(api)` binds once per diagram:
|
|
9
|
-
*
|
|
10
|
-
* - click a row → it becomes THE selected row (one per diagram), painted with
|
|
11
|
-
* `.axk-row-selected`; click again or click anywhere else → deselected;
|
|
12
|
-
* - every row click dispatches `axk:row-click` on the container, and every
|
|
13
|
-
* selection CHANGE dispatches `axk:row-select` — both bubbling
|
|
14
|
-
* CustomEvents, matching the element package's "DOM events out" contract;
|
|
15
|
-
* - the selected row survives card re-renders: the renderer keys the
|
|
16
|
-
* foreignObject by content hash, so an html edit swaps the subtree and
|
|
17
|
-
* drops the class — a MutationObserver re-applies it by (nodeId, rowIndex);
|
|
18
|
-
* - selection is EPHEMERAL view state, exactly like node selection: never
|
|
19
|
-
* serialized, never in the op log, not undoable.
|
|
20
|
-
*
|
|
21
|
-
* Row identity: `rowIndex` is the position among the card's rows (ER columns,
|
|
22
|
-
* or UML members across both compartments); `name` resolves from the spec the
|
|
23
|
-
* kit stored in node metadata (`kitEntity` / `kitClass`), falling back to the
|
|
24
|
-
* row's text.
|
|
25
|
-
*/
|
|
26
|
-
|
|
27
|
-
export interface RowRef {
|
|
28
|
-
nodeId: string;
|
|
29
|
-
rowIndex: number;
|
|
30
|
-
/** Column name (ER) or member text (UML). */
|
|
31
|
-
name?: string;
|
|
32
|
-
kind: 'er' | 'uml';
|
|
33
|
-
/** UML only: which compartment the member sits in. */
|
|
34
|
-
section?: 'attributes' | 'methods';
|
|
35
|
-
}
|
|
36
|
-
|
|
37
|
-
export interface RowInteractionsHandle {
|
|
38
|
-
getSelected(): RowRef | null;
|
|
39
|
-
/** Programmatic selection (null clears). Fires axk:row-select like a click. */
|
|
40
|
-
select(ref: { nodeId: string; rowIndex: number } | null): void;
|
|
41
|
-
dispose(): void;
|
|
42
|
-
}
|
|
43
|
-
|
|
44
|
-
interface KitApi {
|
|
45
|
-
container: HTMLElement;
|
|
46
|
-
getModel(): {
|
|
47
|
-
getNode(id: string): { getMetadata?(key: string): unknown } | undefined;
|
|
48
|
-
};
|
|
49
|
-
}
|
|
50
|
-
|
|
51
|
-
const ROW_SELECTOR = '.axk-row, .axk-member';
|
|
52
|
-
const SELECTED_CLASS = 'axk-row-selected';
|
|
53
|
-
|
|
54
|
-
/** One binding per container — rebinding disposes the previous one. */
|
|
55
|
-
const bindings = new WeakMap<HTMLElement, RowInteractionsHandle>();
|
|
56
|
-
|
|
57
|
-
function rowsOfNode(container: HTMLElement, nodeId: string): HTMLElement[] {
|
|
58
|
-
const esc = (window.CSS && CSS.escape) ? CSS.escape(nodeId) : nodeId.replace(/"/g, '\\"');
|
|
59
|
-
const group = container.querySelector(`[data-node-id="${esc}"]`);
|
|
60
|
-
return group ? (Array.from(group.querySelectorAll(ROW_SELECTOR)) as HTMLElement[]) : [];
|
|
61
|
-
}
|
|
62
|
-
|
|
63
|
-
function resolveRef(container: HTMLElement, api: KitApi, rowEl: HTMLElement): RowRef | null {
|
|
64
|
-
const group = rowEl.closest('[data-node-id]');
|
|
65
|
-
if (!group) return null;
|
|
66
|
-
const nodeId = group.getAttribute('data-node-id')!;
|
|
67
|
-
const rows = Array.from(group.querySelectorAll(ROW_SELECTOR)) as HTMLElement[];
|
|
68
|
-
const rowIndex = rows.indexOf(rowEl);
|
|
69
|
-
if (rowIndex === -1) return null;
|
|
70
|
-
const kind: RowRef['kind'] = rowEl.classList.contains('axk-member') ? 'uml' : 'er';
|
|
71
|
-
|
|
72
|
-
const node = api.getModel?.().getNode?.(nodeId);
|
|
73
|
-
const meta = (key: string) => node?.getMetadata?.(key) as Record<string, unknown> | undefined;
|
|
74
|
-
|
|
75
|
-
if (kind === 'er') {
|
|
76
|
-
const entity = meta('kitEntity') as { columns?: Array<{ name?: string }> } | undefined;
|
|
77
|
-
const name = entity?.columns?.[rowIndex]?.name ?? rowEl.querySelector('.axk-col')?.textContent ?? undefined;
|
|
78
|
-
return { nodeId, rowIndex, name: name ?? undefined, kind };
|
|
79
|
-
}
|
|
80
|
-
|
|
81
|
-
const cls = meta('kitClass') as { attributes?: string[]; methods?: string[] } | undefined;
|
|
82
|
-
const attrCount = cls?.attributes?.length ?? countFirstCompartment(rowEl);
|
|
83
|
-
const section: RowRef['section'] = rowIndex < attrCount ? 'attributes' : 'methods';
|
|
84
|
-
const name =
|
|
85
|
-
(section === 'attributes' ? cls?.attributes?.[rowIndex] : cls?.methods?.[rowIndex - attrCount]) ??
|
|
86
|
-
rowEl.textContent?.trim() ??
|
|
87
|
-
undefined;
|
|
88
|
-
return { nodeId, rowIndex, name, kind, section };
|
|
89
|
-
}
|
|
90
|
-
|
|
91
|
-
/** Without spec metadata, the first compartment's member count splits sections. */
|
|
92
|
-
function countFirstCompartment(rowEl: HTMLElement): number {
|
|
93
|
-
const card = rowEl.closest('.axk-uml');
|
|
94
|
-
const firstComp = card?.querySelector('.axk-uml-comp');
|
|
95
|
-
return firstComp ? firstComp.querySelectorAll('.axk-member').length : Number.MAX_SAFE_INTEGER;
|
|
96
|
-
}
|
|
97
|
-
|
|
98
|
-
export function bindRowInteractions(api: KitApi): RowInteractionsHandle {
|
|
99
|
-
const container = api.container;
|
|
100
|
-
bindings.get(container)?.dispose();
|
|
101
|
-
|
|
102
|
-
let selected: RowRef | null = null;
|
|
103
|
-
|
|
104
|
-
const paint = () => {
|
|
105
|
-
for (const el of Array.from(container.querySelectorAll(`.${SELECTED_CLASS}`))) {
|
|
106
|
-
el.classList.remove(SELECTED_CLASS);
|
|
107
|
-
}
|
|
108
|
-
if (selected) rowsOfNode(container, selected.nodeId)[selected.rowIndex]?.classList.add(SELECTED_CLASS);
|
|
109
|
-
};
|
|
110
|
-
|
|
111
|
-
const emitSelect = () => {
|
|
112
|
-
container.dispatchEvent(new CustomEvent('axk:row-select', { bubbles: true, detail: { selected } }));
|
|
113
|
-
};
|
|
114
|
-
|
|
115
|
-
const setSelected = (next: RowRef | null) => {
|
|
116
|
-
const same =
|
|
117
|
-
(next === null && selected === null) ||
|
|
118
|
-
(next !== null && selected !== null && next.nodeId === selected.nodeId && next.rowIndex === selected.rowIndex);
|
|
119
|
-
if (same) return;
|
|
120
|
-
selected = next;
|
|
121
|
-
paint();
|
|
122
|
-
emitSelect();
|
|
123
|
-
};
|
|
124
|
-
|
|
125
|
-
const onClick = (event: MouseEvent) => {
|
|
126
|
-
const target = event.target instanceof Element ? event.target : null;
|
|
127
|
-
const rowEl = target?.closest?.(ROW_SELECTOR) as HTMLElement | null;
|
|
128
|
-
if (!rowEl || !container.contains(rowEl)) {
|
|
129
|
-
setSelected(null);
|
|
130
|
-
return;
|
|
131
|
-
}
|
|
132
|
-
const ref = resolveRef(container, api, rowEl);
|
|
133
|
-
if (!ref) return;
|
|
134
|
-
container.dispatchEvent(new CustomEvent('axk:row-click', { bubbles: true, detail: { ...ref } }));
|
|
135
|
-
const isReclick = selected && selected.nodeId === ref.nodeId && selected.rowIndex === ref.rowIndex;
|
|
136
|
-
setSelected(isReclick ? null : ref);
|
|
137
|
-
};
|
|
138
|
-
|
|
139
|
-
// Card re-renders replace the foreignObject subtree (content-hash keyed) and
|
|
140
|
-
// lose the class — re-apply whenever the selected row's paint went missing.
|
|
141
|
-
const observer = new MutationObserver(() => {
|
|
142
|
-
if (!selected) return;
|
|
143
|
-
const el = rowsOfNode(container, selected.nodeId)[selected.rowIndex];
|
|
144
|
-
if (el && !el.classList.contains(SELECTED_CLASS)) paint();
|
|
145
|
-
else if (!el) {
|
|
146
|
-
// The row (or its node) is gone — the selection dies with it.
|
|
147
|
-
setSelected(null);
|
|
148
|
-
}
|
|
149
|
-
});
|
|
150
|
-
|
|
151
|
-
container.addEventListener('click', onClick);
|
|
152
|
-
observer.observe(container, { childList: true, subtree: true });
|
|
153
|
-
|
|
154
|
-
const handle: RowInteractionsHandle = {
|
|
155
|
-
getSelected: () => (selected ? { ...selected } : null),
|
|
156
|
-
select: (ref) => {
|
|
157
|
-
if (ref === null) {
|
|
158
|
-
setSelected(null);
|
|
159
|
-
return;
|
|
160
|
-
}
|
|
161
|
-
const el = rowsOfNode(container, ref.nodeId)[ref.rowIndex];
|
|
162
|
-
if (!el) return;
|
|
163
|
-
const resolved = resolveRef(container, api, el);
|
|
164
|
-
if (resolved) setSelected(resolved);
|
|
165
|
-
},
|
|
166
|
-
dispose: () => {
|
|
167
|
-
container.removeEventListener('click', onClick);
|
|
168
|
-
observer.disconnect();
|
|
169
|
-
if (bindings.get(container) === handle) bindings.delete(container);
|
|
170
|
-
},
|
|
171
|
-
};
|
|
172
|
-
bindings.set(container, handle);
|
|
173
|
-
return handle;
|
|
174
|
-
}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"styles.js","sourceRoot":"","sources":["styles.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;GAcG;;;AAgGH,wDAOC;AArGY,QAAA,oBAAoB,GAAG,8BAA8B,CAAC;AAEnE,MAAM,GAAG,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAyFX,CAAC;AAEF,0EAA0E;AAC1E,SAAgB,sBAAsB,CAAC,MAA4B,OAAO,QAAQ,KAAK,WAAW,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS;IACvH,IAAI,CAAC,GAAG;QAAE,OAAO;IACjB,IAAI,GAAG,CAAC,cAAc,CAAC,4BAAoB,CAAC;QAAE,OAAO;IACrD,MAAM,KAAK,GAAG,GAAG,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;IACzC,KAAK,CAAC,EAAE,GAAG,4BAAoB,CAAC;IAChC,KAAK,CAAC,WAAW,GAAG,GAAG,CAAC;IACxB,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;AAC9B,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"uml.js","sourceRoot":"","sources":["uml.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,213 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* UML class-diagram kit — typed builders for the full relationship vocabulary.
|
|
3
|
-
*
|
|
4
|
-
* The packaged form of demos/diagrams/class-uml.html + uml-relationships.html:
|
|
5
|
-
* three-compartment class cards («stereotype», name, attributes, methods) and
|
|
6
|
-
* every standard relationship with its real notation:
|
|
7
|
-
*
|
|
8
|
-
* inheritance ── solid, hollow triangle at the parent
|
|
9
|
-
* realization ┄┄ dashed, hollow triangle at the interface
|
|
10
|
-
* association ── plain line (multiplicity chips optional)
|
|
11
|
-
* directed-association ── open arrow at the target
|
|
12
|
-
* aggregation ── hollow diamond at the whole (source)
|
|
13
|
-
* composition ── FILLED diamond at the whole (source)
|
|
14
|
-
* dependency ┄┄ dashed, open arrow («uses»)
|
|
15
|
-
*
|
|
16
|
-
* ```ts
|
|
17
|
-
* const spec = umlDiagram({
|
|
18
|
-
* classes: [{ id: 'Shape', abstract: true, attributes: ['# x: float'], methods: ['+ area(): float'] }],
|
|
19
|
-
* relationships: [{ from: 'Circle', to: 'Shape', kind: 'inheritance' }],
|
|
20
|
-
* });
|
|
21
|
-
* const api = render(spec, container);
|
|
22
|
-
* spec.finalize(api); // attaches multiplicity chips (needs the live model)
|
|
23
|
-
* ```
|
|
24
|
-
*/
|
|
25
|
-
import { ensureDiagramKitStyles } from './styles';
|
|
26
|
-
import { bindRowInteractions } from './rows';
|
|
27
|
-
import { classCardContent, classAutoHeight } from './card';
|
|
28
|
-
import { bindCardEditing } from './editing';
|
|
29
|
-
|
|
30
|
-
const DEFAULT_WIDTH = 200;
|
|
31
|
-
|
|
32
|
-
export interface UmlClassSpec {
|
|
33
|
-
id: string;
|
|
34
|
-
/** Displayed name. Defaults to the id. */
|
|
35
|
-
name?: string;
|
|
36
|
-
/** Renders as «stereotype» above the name (e.g. 'interface', 'abstract', 'enum'). */
|
|
37
|
-
stereotype?: string;
|
|
38
|
-
/** Italicises the name (also set automatically for stereotype 'abstract'/'interface'). */
|
|
39
|
-
abstract?: boolean;
|
|
40
|
-
attributes?: string[];
|
|
41
|
-
methods?: string[];
|
|
42
|
-
position?: { x: number; y: number };
|
|
43
|
-
width?: number;
|
|
44
|
-
/** Fixed card height — smaller than the content makes the compartments scroll. */
|
|
45
|
-
height?: number;
|
|
46
|
-
}
|
|
47
|
-
|
|
48
|
-
export type UmlRelationKind =
|
|
49
|
-
| 'inheritance'
|
|
50
|
-
| 'realization'
|
|
51
|
-
| 'association'
|
|
52
|
-
| 'directed-association'
|
|
53
|
-
| 'aggregation'
|
|
54
|
-
| 'composition'
|
|
55
|
-
| 'dependency';
|
|
56
|
-
|
|
57
|
-
export type UmlSide = 'left' | 'right' | 'top' | 'bottom';
|
|
58
|
-
|
|
59
|
-
export interface UmlRelationshipSpec {
|
|
60
|
-
from: string;
|
|
61
|
-
to: string;
|
|
62
|
-
/** Default 'association'. */
|
|
63
|
-
kind?: UmlRelationKind;
|
|
64
|
-
label?: string;
|
|
65
|
-
/** Multiplicity / role chips at the [from, to] ends (e.g. ['0..*', '1']). */
|
|
66
|
-
multiplicity?: [string, string];
|
|
67
|
-
fromSide?: UmlSide;
|
|
68
|
-
toSide?: UmlSide;
|
|
69
|
-
id?: string;
|
|
70
|
-
}
|
|
71
|
-
|
|
72
|
-
export interface UmlDiagramOptions {
|
|
73
|
-
classes: UmlClassSpec[];
|
|
74
|
-
relationships?: UmlRelationshipSpec[];
|
|
75
|
-
/**
|
|
76
|
-
* Members are selectable by default: click one to select it (painted with
|
|
77
|
-
* .axk-row-selected; axk:row-click / axk:row-select CustomEvents fire on the
|
|
78
|
-
* container). Set false to opt out.
|
|
79
|
-
*/
|
|
80
|
-
rowSelection?: boolean;
|
|
81
|
-
/**
|
|
82
|
-
* In-canvas editing (opt-in, default false). When true: double-click the
|
|
83
|
-
* class name to rename it, double-click a member to rename it, an "add"
|
|
84
|
-
* affordance per compartment and a per-member delete control — all routed
|
|
85
|
-
* through {@link updateClass} as one undoable step.
|
|
86
|
-
*/
|
|
87
|
-
editable?: boolean;
|
|
88
|
-
}
|
|
89
|
-
|
|
90
|
-
interface EdgeStyle {
|
|
91
|
-
stroke: string;
|
|
92
|
-
strokeWidth: number;
|
|
93
|
-
strokeDasharray?: string;
|
|
94
|
-
arrowHead: { type: string; size: number; filled: boolean };
|
|
95
|
-
arrowTail?: { type: string; size: number; filled: boolean };
|
|
96
|
-
}
|
|
97
|
-
|
|
98
|
-
const STROKE = '#475569';
|
|
99
|
-
const DASH = '6,4';
|
|
100
|
-
|
|
101
|
-
/**
|
|
102
|
-
* The notation table. Every kind sets arrowHead EXPLICITLY — a plain line must
|
|
103
|
-
* carry `arrowHead: none`, or the renderer paints its default arrow (the
|
|
104
|
-
* stray-arrowhead bug the demos hit live).
|
|
105
|
-
*/
|
|
106
|
-
function edgeStyleFor(kind: UmlRelationKind): EdgeStyle {
|
|
107
|
-
const none = { type: 'none', size: 0, filled: false };
|
|
108
|
-
switch (kind) {
|
|
109
|
-
case 'inheritance':
|
|
110
|
-
return { stroke: STROKE, strokeWidth: 1.5, arrowHead: { type: 'generalization', size: 16, filled: false }, arrowTail: none };
|
|
111
|
-
case 'realization':
|
|
112
|
-
return { stroke: STROKE, strokeWidth: 1.5, strokeDasharray: DASH, arrowHead: { type: 'generalization', size: 16, filled: false }, arrowTail: none };
|
|
113
|
-
case 'association':
|
|
114
|
-
return { stroke: STROKE, strokeWidth: 1.5, arrowHead: none, arrowTail: none };
|
|
115
|
-
case 'directed-association':
|
|
116
|
-
return { stroke: STROKE, strokeWidth: 1.5, arrowHead: { type: 'open-arrow', size: 12, filled: false }, arrowTail: none };
|
|
117
|
-
case 'aggregation':
|
|
118
|
-
return { stroke: STROKE, strokeWidth: 1.5, arrowHead: none, arrowTail: { type: 'hollow-diamond', size: 14, filled: false } };
|
|
119
|
-
case 'composition':
|
|
120
|
-
return { stroke: STROKE, strokeWidth: 1.5, arrowHead: none, arrowTail: { type: 'filled-diamond', size: 14, filled: true } };
|
|
121
|
-
case 'dependency':
|
|
122
|
-
return { stroke: STROKE, strokeWidth: 1.5, strokeDasharray: DASH, arrowHead: { type: 'open-arrow', size: 12, filled: false }, arrowTail: none };
|
|
123
|
-
}
|
|
124
|
-
}
|
|
125
|
-
|
|
126
|
-
/** Multiplicity chip, positioned near an edge end. */
|
|
127
|
-
const chip = (text: string, slot: 'start' | 'end') => ({
|
|
128
|
-
text,
|
|
129
|
-
slot,
|
|
130
|
-
offset: { x: 0, y: -7 },
|
|
131
|
-
style: { fontSize: 11, fontWeight: '600', color: '#0f172a', background: '#ffffffdd', padding: 1, borderRadius: 2 },
|
|
132
|
-
});
|
|
133
|
-
|
|
134
|
-
/**
|
|
135
|
-
* Build a render() spec for a UML class diagram. Call `spec.finalize(api)`
|
|
136
|
-
* after render() — multiplicity chips are positioned labels, which only the
|
|
137
|
-
* live model's `link.addLabel` can express.
|
|
138
|
-
*/
|
|
139
|
-
export function umlDiagram(options: UmlDiagramOptions): {
|
|
140
|
-
nodes: Array<Record<string, unknown>>;
|
|
141
|
-
edges: Array<Record<string, unknown>>;
|
|
142
|
-
finalize: (api: unknown) => void;
|
|
143
|
-
} {
|
|
144
|
-
ensureDiagramKitStyles();
|
|
145
|
-
|
|
146
|
-
const editable = options.editable === true;
|
|
147
|
-
const nodes = options.classes.map((cls, i) => {
|
|
148
|
-
return {
|
|
149
|
-
id: cls.id,
|
|
150
|
-
position: cls.position ?? { x: 80 + (i % 3) * 320, y: 60 + Math.floor(i / 3) * 260 },
|
|
151
|
-
size: { width: cls.width ?? DEFAULT_WIDTH, height: classAutoHeight(cls, editable) },
|
|
152
|
-
// interactive: members are real DOM targets (hover, row selection, inline
|
|
153
|
-
// editing); node drag/select stay geometric in the binder.
|
|
154
|
-
metadata: {
|
|
155
|
-
html: { content: classCardContent(cls, editable), interactive: true },
|
|
156
|
-
kitClass: cls,
|
|
157
|
-
kitEditable: editable,
|
|
158
|
-
// Opt-out only — see the same stamp in er.ts.
|
|
159
|
-
...(options.rowSelection === false ? { kitRowSelection: false } : {}),
|
|
160
|
-
},
|
|
161
|
-
shape: { type: 'rect', fill: 'none', stroke: 'none' },
|
|
162
|
-
style: { fill: 'transparent', stroke: 'transparent', strokeWidth: 0 },
|
|
163
|
-
};
|
|
164
|
-
});
|
|
165
|
-
|
|
166
|
-
const rels = options.relationships ?? [];
|
|
167
|
-
const edges = rels.map((rel, i) => ({
|
|
168
|
-
id: rel.id ?? `uml-rel-${i + 1}`,
|
|
169
|
-
source: rel.from,
|
|
170
|
-
target: rel.to,
|
|
171
|
-
label: rel.label,
|
|
172
|
-
type: 'orthogonal',
|
|
173
|
-
...(rel.fromSide ? { sourceHandle: rel.fromSide } : {}),
|
|
174
|
-
...(rel.toSide ? { targetHandle: rel.toSide } : {}),
|
|
175
|
-
style: edgeStyleFor(rel.kind ?? 'association'),
|
|
176
|
-
}));
|
|
177
|
-
|
|
178
|
-
// finalize is idempotent per api: render() auto-runs it, and a demo may also
|
|
179
|
-
// call it — chips must not be added twice.
|
|
180
|
-
const finalized = new WeakSet<object>();
|
|
181
|
-
const finalize = (api: unknown): void => {
|
|
182
|
-
const a0 = api as { container?: HTMLElement; getModel?: () => { getNode: (id: string) => { setBehavior?: (b: { resizable: boolean }) => void } | undefined } };
|
|
183
|
-
// Own card ring only — suppress the node resize handles on the live model
|
|
184
|
-
// (the render-input path does not honour a spec-level `behavior`).
|
|
185
|
-
const m0 = a0?.getModel?.();
|
|
186
|
-
if (m0) for (const cls of options.classes) m0.getNode?.(cls.id)?.setBehavior?.({ resizable: false });
|
|
187
|
-
if (options.rowSelection !== false) {
|
|
188
|
-
const a = api as { container?: HTMLElement };
|
|
189
|
-
// bindRowInteractions disposes any prior binding for the container, so it
|
|
190
|
-
// is safe to run twice.
|
|
191
|
-
if (a?.container) bindRowInteractions(a as never);
|
|
192
|
-
}
|
|
193
|
-
if (editable && a0?.container) bindCardEditing(a0 as never);
|
|
194
|
-
if (api && typeof api === 'object') {
|
|
195
|
-
if (finalized.has(api)) return;
|
|
196
|
-
finalized.add(api);
|
|
197
|
-
}
|
|
198
|
-
const model = (api as { getModel?: () => { getLink: (id: string) => { addLabel: (l: unknown) => void } | null } })?.getModel?.();
|
|
199
|
-
if (!model) return;
|
|
200
|
-
let added = false;
|
|
201
|
-
rels.forEach((rel, i) => {
|
|
202
|
-
if (!rel.multiplicity) return;
|
|
203
|
-
const link = model.getLink((edges[i] as { id: string }).id);
|
|
204
|
-
if (!link) return;
|
|
205
|
-
link.addLabel(chip(rel.multiplicity[0], 'start'));
|
|
206
|
-
link.addLabel(chip(rel.multiplicity[1], 'end'));
|
|
207
|
-
added = true;
|
|
208
|
-
});
|
|
209
|
-
if (added) (api as { renderNow?: () => void })?.renderNow?.();
|
|
210
|
-
};
|
|
211
|
-
|
|
212
|
-
return { nodes, edges, finalize };
|
|
213
|
-
}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"update.js","sourceRoot":"","sources":["update.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,208 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* P3 — `updateEntity` / `updateClass` against a REAL model.
|
|
3
|
-
*
|
|
4
|
-
* The reconciliation only matters on live PortModels + LinkModels, so these
|
|
5
|
-
* tests build an actual DiagramModel from an erDiagram()/umlDiagram() spec and
|
|
6
|
-
* drive the edit through the real CommandManager — the same seam the kit uses
|
|
7
|
-
* live. That also proves the edit is exactly ONE undo step.
|
|
8
|
-
*/
|
|
9
|
-
import { DiagramModel, NodeModel, PortModel, LinkModel, CommandManager } from '@grafloria/engine';
|
|
10
|
-
import { erDiagram } from './er';
|
|
11
|
-
import { umlDiagram } from './uml';
|
|
12
|
-
import { updateEntity, updateClass, addColumnAt, removeColumnAt, renameColumnAt } from './update';
|
|
13
|
-
import { erRowCenterY, ER_ROW_H } from './card';
|
|
14
|
-
|
|
15
|
-
interface AnySpec {
|
|
16
|
-
nodes: Array<Record<string, unknown>>;
|
|
17
|
-
edges: Array<Record<string, unknown>>;
|
|
18
|
-
}
|
|
19
|
-
|
|
20
|
-
/** Build a live DiagramModel + a kit `api` from a builder spec. */
|
|
21
|
-
function mount(spec: AnySpec, editable = true) {
|
|
22
|
-
const model = new DiagramModel();
|
|
23
|
-
for (const n of spec.nodes as any[]) {
|
|
24
|
-
const node = new NodeModel({ id: n.id, type: 'kit', position: n.position, size: n.size });
|
|
25
|
-
for (const p of node.getPorts()) node.removePort(p.id); // drop auto-defaults
|
|
26
|
-
const meta = n.metadata ?? {};
|
|
27
|
-
node.setMetadata('html', meta.html);
|
|
28
|
-
if (meta.kitEntity) node.setMetadata('kitEntity', meta.kitEntity);
|
|
29
|
-
if (meta.kitClass) node.setMetadata('kitClass', meta.kitClass);
|
|
30
|
-
node.setMetadata('kitEditable', editable);
|
|
31
|
-
for (const p of (n.ports ?? []) as any[]) {
|
|
32
|
-
node.addPort(new PortModel({ id: p.id, type: 'bi', side: p.side, visible: p.visible, layout: p.layout }));
|
|
33
|
-
}
|
|
34
|
-
model.addNode(node);
|
|
35
|
-
}
|
|
36
|
-
for (const e of spec.edges as any[]) {
|
|
37
|
-
const link = new LinkModel(e.sourceHandle, e.targetHandle, 'orthogonal');
|
|
38
|
-
(link as any).id = e.id; // stable id so we can find it back
|
|
39
|
-
model.addLink(link);
|
|
40
|
-
}
|
|
41
|
-
const eventBus = { emit() {} };
|
|
42
|
-
const cm = new CommandManager({ diagram: model, eventBus } as any, eventBus as any);
|
|
43
|
-
const engine = { commandManager: cm, undo: () => cm.undo(), redo: () => cm.redo() };
|
|
44
|
-
const container = document.createElement('div');
|
|
45
|
-
const api = { container, getModel: () => model, getEngine: () => engine, renderNow: () => {} };
|
|
46
|
-
return { model, api, cm };
|
|
47
|
-
}
|
|
48
|
-
|
|
49
|
-
const html = (node: any) => JSON.stringify(node.getMetadata('html'));
|
|
50
|
-
const portY = (node: any, id: string) => node.getPort(id)?.layout?.args?.y as number | undefined;
|
|
51
|
-
|
|
52
|
-
/** FOO has two field ports (on b and d); TARGET is the referenced PK. */
|
|
53
|
-
function fooSpec(editable = true): AnySpec {
|
|
54
|
-
return erDiagram({
|
|
55
|
-
editable,
|
|
56
|
-
entities: [
|
|
57
|
-
{ id: 'TARGET', columns: [{ name: 'pk', type: 'int', pk: true }] },
|
|
58
|
-
{
|
|
59
|
-
id: 'FOO',
|
|
60
|
-
columns: [
|
|
61
|
-
{ name: 'a', type: 'int' },
|
|
62
|
-
{ name: 'b', type: 'int', fk: true },
|
|
63
|
-
{ name: 'c', type: 'int' },
|
|
64
|
-
{ name: 'd', type: 'int', fk: true },
|
|
65
|
-
],
|
|
66
|
-
},
|
|
67
|
-
],
|
|
68
|
-
relationships: [
|
|
69
|
-
{ from: 'FOO.b', to: 'TARGET.pk', id: 'e-b' },
|
|
70
|
-
{ from: 'FOO.d', to: 'TARGET.pk', id: 'e-d' },
|
|
71
|
-
],
|
|
72
|
-
}) as AnySpec;
|
|
73
|
-
}
|
|
74
|
-
|
|
75
|
-
describe('updateEntity — add a column', () => {
|
|
76
|
-
it('adds a row, grows the card, and shifts every port BELOW down by exactly one row', async () => {
|
|
77
|
-
const { model, api } = mount(fooSpec());
|
|
78
|
-
const foo = model.getNode('FOO')!;
|
|
79
|
-
const h0 = foo.size.height;
|
|
80
|
-
const cols = (foo.getMetadata('kitEntity') as any).columns;
|
|
81
|
-
// b is row 1, d is row 3 before the insert.
|
|
82
|
-
expect(portY(foo, 'FOO__b__right__0')).toBe(erRowCenterY(1));
|
|
83
|
-
expect(portY(foo, 'FOO__d__right__0')).toBe(erRowCenterY(3));
|
|
84
|
-
|
|
85
|
-
await updateEntity(api as any, 'FOO', { columns: addColumnAt(cols, { name: 'z', type: 'int' }, 0) });
|
|
86
|
-
|
|
87
|
-
// html gained the row; card grew by one row height.
|
|
88
|
-
expect(html(foo)).toContain('"z"');
|
|
89
|
-
expect((foo.getMetadata('kitEntity') as any).columns).toHaveLength(5);
|
|
90
|
-
expect(foo.size.height).toBe(h0 + ER_ROW_H);
|
|
91
|
-
// MUTATION-PROOF: the ports did not stay frozen at their old rows — they
|
|
92
|
-
// tracked their columns down by exactly ER_ROW_H.
|
|
93
|
-
expect(portY(foo, 'FOO__b__right__0')).toBe(erRowCenterY(2));
|
|
94
|
-
expect(portY(foo, 'FOO__d__right__0')).toBe(erRowCenterY(4));
|
|
95
|
-
expect(portY(foo, 'FOO__b__right__0')).not.toBe(erRowCenterY(1));
|
|
96
|
-
// Edges stayed glued (still present, same handles).
|
|
97
|
-
expect(model.getLinks()).toHaveLength(2);
|
|
98
|
-
expect(model.getLink('e-b')!.sourcePortId).toBe('FOO__b__right__0');
|
|
99
|
-
});
|
|
100
|
-
});
|
|
101
|
-
|
|
102
|
-
describe('updateEntity — remove a column', () => {
|
|
103
|
-
it('drops the removed column row, and a port BELOW it shifts up one row', async () => {
|
|
104
|
-
const { model, api } = mount(fooSpec());
|
|
105
|
-
const foo = model.getNode('FOO')!;
|
|
106
|
-
const cols = (foo.getMetadata('kitEntity') as any).columns;
|
|
107
|
-
// Remove 'a' (row 0, no port) → b:1→0, d:3→2 shift up.
|
|
108
|
-
await updateEntity(api as any, 'FOO', { columns: removeColumnAt(cols, 0) });
|
|
109
|
-
expect(html(foo)).not.toContain('"a"');
|
|
110
|
-
expect(portY(foo, 'FOO__b__right__0')).toBe(erRowCenterY(0));
|
|
111
|
-
expect(portY(foo, 'FOO__d__right__0')).toBe(erRowCenterY(2));
|
|
112
|
-
expect(model.getLinks()).toHaveLength(2);
|
|
113
|
-
});
|
|
114
|
-
|
|
115
|
-
it("removing a PORTED column deletes its port and drops that column's edge", async () => {
|
|
116
|
-
const { model, api } = mount(fooSpec());
|
|
117
|
-
const foo = model.getNode('FOO')!;
|
|
118
|
-
const cols = (foo.getMetadata('kitEntity') as any).columns;
|
|
119
|
-
// Remove 'b' (row 1, ported) → its port + edge e-b go; d:3→2 shifts up.
|
|
120
|
-
await updateEntity(api as any, 'FOO', { columns: removeColumnAt(cols, 1) });
|
|
121
|
-
expect(foo.getPort('FOO__b__right__0')).toBeUndefined();
|
|
122
|
-
expect(model.getLink('e-b')).toBeUndefined();
|
|
123
|
-
// The OTHER port + edge survive and track.
|
|
124
|
-
expect(foo.getPort('FOO__d__right__0')).toBeTruthy();
|
|
125
|
-
expect(portY(foo, 'FOO__d__right__0')).toBe(erRowCenterY(2));
|
|
126
|
-
expect(model.getLink('e-d')).toBeTruthy();
|
|
127
|
-
});
|
|
128
|
-
});
|
|
129
|
-
|
|
130
|
-
describe('updateEntity — rename / reorder', () => {
|
|
131
|
-
it('rename keeps the port id and the edge; the port stays on its (unchanged) row', async () => {
|
|
132
|
-
const { model, api } = mount(fooSpec());
|
|
133
|
-
const foo = model.getNode('FOO')!;
|
|
134
|
-
const cols = (foo.getMetadata('kitEntity') as any).columns;
|
|
135
|
-
await updateEntity(api as any, 'FOO', { columns: renameColumnAt(cols, 1, 'b_renamed') });
|
|
136
|
-
expect(html(foo)).toContain('"b_renamed"');
|
|
137
|
-
expect(foo.getPort('FOO__b__right__0')).toBeTruthy(); // stable id
|
|
138
|
-
expect(portY(foo, 'FOO__b__right__0')).toBe(erRowCenterY(1)); // same row
|
|
139
|
-
expect(model.getLink('e-b')!.sourcePortId).toBe('FOO__b__right__0'); // still glued
|
|
140
|
-
});
|
|
141
|
-
|
|
142
|
-
it('reorder tracks ports to their columns new rows', async () => {
|
|
143
|
-
const { model, api } = mount(fooSpec());
|
|
144
|
-
const foo = model.getNode('FOO')!;
|
|
145
|
-
const cols = (foo.getMetadata('kitEntity') as any).columns as any[];
|
|
146
|
-
// Move 'd' (idx3) to the front: [d, a, b, c] → d:0, b:2.
|
|
147
|
-
const reordered = [cols[3], cols[0], cols[1], cols[2]];
|
|
148
|
-
await updateEntity(api as any, 'FOO', { columns: reordered });
|
|
149
|
-
expect(portY(foo, 'FOO__d__right__0')).toBe(erRowCenterY(0));
|
|
150
|
-
expect(portY(foo, 'FOO__b__right__0')).toBe(erRowCenterY(2));
|
|
151
|
-
expect(model.getLinks()).toHaveLength(2);
|
|
152
|
-
});
|
|
153
|
-
|
|
154
|
-
it('renaming the table changes only the header text', async () => {
|
|
155
|
-
const { model, api } = mount(fooSpec());
|
|
156
|
-
const foo = model.getNode('FOO')!;
|
|
157
|
-
await updateEntity(api as any, 'FOO', { name: 'Widgets' });
|
|
158
|
-
expect(html(foo)).toContain('Widgets');
|
|
159
|
-
expect((foo.getMetadata('kitEntity') as any).name).toBe('Widgets');
|
|
160
|
-
// columns + ports untouched.
|
|
161
|
-
expect(portY(foo, 'FOO__b__right__0')).toBe(erRowCenterY(1));
|
|
162
|
-
});
|
|
163
|
-
});
|
|
164
|
-
|
|
165
|
-
describe('updateEntity — one undoable step', () => {
|
|
166
|
-
it('a whole edit is a single Ctrl+Z that restores rows, size, ports AND edges', async () => {
|
|
167
|
-
const { model, api, cm } = mount(fooSpec());
|
|
168
|
-
const foo = model.getNode('FOO')!;
|
|
169
|
-
const h0 = foo.size.height;
|
|
170
|
-
|
|
171
|
-
// A removal that touches html, size, one port AND one edge.
|
|
172
|
-
const cols = (foo.getMetadata('kitEntity') as any).columns;
|
|
173
|
-
await updateEntity(api as any, 'FOO', { columns: removeColumnAt(cols, 1) });
|
|
174
|
-
expect(cm.getHistory()).toHaveLength(1); // ONE history entry for the whole edit
|
|
175
|
-
expect(foo.getPort('FOO__b__right__0')).toBeUndefined();
|
|
176
|
-
expect(model.getLink('e-b')).toBeUndefined();
|
|
177
|
-
|
|
178
|
-
await cm.undo();
|
|
179
|
-
// Everything comes back in one step.
|
|
180
|
-
expect(foo.size.height).toBe(h0);
|
|
181
|
-
expect(html(foo)).toContain('"b"');
|
|
182
|
-
expect(foo.getPort('FOO__b__right__0')).toBeTruthy();
|
|
183
|
-
expect(portY(foo, 'FOO__b__right__0')).toBe(erRowCenterY(1));
|
|
184
|
-
expect(portY(foo, 'FOO__d__right__0')).toBe(erRowCenterY(3));
|
|
185
|
-
expect(model.getLink('e-b')).toBeTruthy();
|
|
186
|
-
});
|
|
187
|
-
});
|
|
188
|
-
|
|
189
|
-
describe('updateClass — UML edits (no port reconciliation)', () => {
|
|
190
|
-
it('adds/renames members and grows the card; rename changes the name text', async () => {
|
|
191
|
-
const spec = umlDiagram({
|
|
192
|
-
editable: true,
|
|
193
|
-
classes: [{ id: 'Shape', attributes: ['# x: float'], methods: ['+ area(): float'] }],
|
|
194
|
-
relationships: [],
|
|
195
|
-
}) as AnySpec;
|
|
196
|
-
const { model, api } = mount(spec);
|
|
197
|
-
const node = model.getNode('Shape')!;
|
|
198
|
-
const h0 = node.size.height;
|
|
199
|
-
|
|
200
|
-
await updateClass(api as any, 'Shape', { attributes: ['# x: float', '# y: float'] });
|
|
201
|
-
expect(html(node)).toContain('# y: float');
|
|
202
|
-
expect(node.size.height).toBeGreaterThan(h0);
|
|
203
|
-
|
|
204
|
-
await updateClass(api as any, 'Shape', { name: 'Rectangle' });
|
|
205
|
-
expect(html(node)).toContain('Rectangle');
|
|
206
|
-
expect((node.getMetadata('kitClass') as any).name).toBe('Rectangle');
|
|
207
|
-
});
|
|
208
|
-
});
|