@grafloria/element 0.3.18 → 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/esm/src/index.js +295 -0
- 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/esm/src/lib/dashboard-kit/styles.js +205 -0
- 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/esm/src/lib/diagram-kit/styles.js +118 -0
- 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/esm/src/lib/stencil-kit/styles.js +126 -0
- package/package.json +13 -4
- package/src/index.d.ts +2 -1
- package/src/index.js +11 -2
- package/src/lib/dashboard-kit/grid-binder.js +16 -15
- package/src/lib/dashboard-kit/styles.js +9 -3
- package/src/lib/diagram-kit/index.d.ts +1 -0
- package/src/lib/diagram-kit/index.js +11 -1
- package/src/lib/diagram-kit/join-guidance.d.ts +116 -0
- package/src/lib/diagram-kit/join-guidance.js +331 -0
- package/src/lib/stencil-kit/palette.js +60 -6
- package/src/lib/stencil-kit/shape-data.d.ts +3 -2
- package/src/lib/stencil-kit/shape-data.js +323 -31
- package/src/lib/stencil-kit/styles.js +15 -0
- package/src/libs/element/src/index.d.ts +92 -0
- package/src/libs/element/src/index.js +576 -0
- package/src/libs/element/src/lib/dashboard-kit/dashboard.d.ts +345 -0
- package/src/libs/element/src/lib/dashboard-kit/dashboard.js +594 -0
- package/src/libs/element/src/lib/dashboard-kit/grid-binder.d.ts +277 -0
- package/src/libs/element/src/lib/dashboard-kit/grid-binder.js +1636 -0
- package/src/libs/element/src/lib/dashboard-kit/grid-mapping.d.ts +141 -0
- package/src/libs/element/src/lib/dashboard-kit/grid-mapping.js +176 -0
- package/src/libs/element/src/lib/dashboard-kit/index.d.ts +5 -0
- package/src/libs/element/src/lib/dashboard-kit/index.js +33 -0
- package/src/libs/element/src/lib/dashboard-kit/styles.d.ts +25 -0
- package/src/libs/element/src/lib/dashboard-kit/styles.js +209 -0
- package/src/libs/element/src/lib/dashboard-kit/widgets.d.ts +112 -0
- package/src/libs/element/src/lib/dashboard-kit/widgets.js +389 -0
- package/src/libs/element/src/lib/diagram-kit/card.d.ts +75 -0
- package/src/libs/element/src/lib/diagram-kit/card.js +209 -0
- package/src/libs/element/src/lib/diagram-kit/editing.d.ts +58 -0
- package/src/libs/element/src/lib/diagram-kit/editing.js +453 -0
- package/src/libs/element/src/lib/diagram-kit/er.d.ts +73 -0
- package/src/libs/element/src/lib/diagram-kit/er.js +163 -0
- package/src/libs/element/src/lib/diagram-kit/handles.d.ts +181 -0
- package/src/libs/element/src/lib/diagram-kit/handles.js +325 -0
- package/src/libs/element/src/lib/diagram-kit/index.d.ts +10 -0
- package/src/libs/element/src/lib/diagram-kit/index.js +55 -0
- package/src/libs/element/src/lib/diagram-kit/join-guidance.d.ts +116 -0
- package/src/libs/element/src/lib/diagram-kit/join-guidance.js +331 -0
- package/src/libs/element/src/lib/diagram-kit/rows.d.ts +53 -0
- package/src/libs/element/src/lib/diagram-kit/rows.js +147 -0
- package/src/libs/element/src/lib/diagram-kit/styles.d.ts +18 -0
- package/src/libs/element/src/lib/diagram-kit/styles.js +122 -0
- package/src/libs/element/src/lib/diagram-kit/uml.d.ts +59 -0
- package/src/libs/element/src/lib/diagram-kit/uml.js +138 -0
- package/src/libs/element/src/lib/diagram-kit/update.d.ts +133 -0
- package/src/libs/element/src/lib/diagram-kit/update.js +251 -0
- package/src/libs/element/src/lib/grafloria-flow-element.d.ts +48 -0
- package/src/libs/element/src/lib/grafloria-flow-element.js +271 -0
- package/src/libs/element/src/lib/grafloria.d.ts +72 -0
- package/src/libs/element/src/lib/grafloria.js +74 -0
- package/src/libs/element/src/lib/load.d.ts +72 -0
- package/src/libs/element/src/lib/load.js +255 -0
- package/src/libs/element/src/lib/node-type-registry.d.ts +39 -0
- package/src/libs/element/src/lib/node-type-registry.js +50 -0
- package/src/libs/element/src/lib/stencil-kit/builders.d.ts +45 -0
- package/src/libs/element/src/lib/stencil-kit/builders.js +24 -0
- package/src/libs/element/src/lib/stencil-kit/card-builders.d.ts +2 -0
- package/src/libs/element/src/lib/stencil-kit/card-builders.js +108 -0
- package/src/libs/element/src/lib/stencil-kit/index.d.ts +7 -0
- package/src/libs/element/src/lib/stencil-kit/index.js +19 -0
- package/src/libs/element/src/lib/stencil-kit/palette.d.ts +93 -0
- package/src/libs/element/src/lib/stencil-kit/palette.js +430 -0
- package/src/libs/element/src/lib/stencil-kit/shape-data.d.ts +28 -0
- package/src/libs/element/src/lib/stencil-kit/shape-data.js +540 -0
- package/src/libs/element/src/lib/stencil-kit/styles.d.ts +2 -0
- package/src/libs/element/src/lib/stencil-kit/styles.js +129 -0
- package/src/libs/engine/src/adapters/component-adapter.interface.d.ts +302 -0
- package/src/libs/engine/src/adapters/component-adapter.interface.js +84 -0
- package/src/libs/engine/src/adapters/index.d.ts +7 -0
- package/src/libs/engine/src/adapters/index.js +11 -0
- package/src/libs/engine/src/clipboard/ClipboardManager.d.ts +81 -0
- package/src/libs/engine/src/clipboard/ClipboardManager.js +108 -0
- package/src/libs/engine/src/clipboard/index.d.ts +1 -0
- package/src/libs/engine/src/clipboard/index.js +6 -0
- package/src/libs/engine/src/collab/apply-op.d.ts +42 -0
- package/src/libs/engine/src/collab/apply-op.js +939 -0
- package/src/libs/engine/src/collab/capture.d.ts +147 -0
- package/src/libs/engine/src/collab/capture.js +510 -0
- package/src/libs/engine/src/collab/index.d.ts +12 -0
- package/src/libs/engine/src/collab/index.js +84 -0
- package/src/libs/engine/src/collab/integrity.d.ts +178 -0
- package/src/libs/engine/src/collab/integrity.js +438 -0
- package/src/libs/engine/src/collab/lww.d.ts +47 -0
- package/src/libs/engine/src/collab/lww.js +188 -0
- package/src/libs/engine/src/collab/op-log.d.ts +50 -0
- package/src/libs/engine/src/collab/op-log.js +167 -0
- package/src/libs/engine/src/collab/op.d.ts +120 -0
- package/src/libs/engine/src/collab/op.js +118 -0
- package/src/libs/engine/src/collab/replica.d.ts +188 -0
- package/src/libs/engine/src/collab/replica.js +526 -0
- package/src/libs/engine/src/collab/undo.d.ts +106 -0
- package/src/libs/engine/src/collab/undo.js +388 -0
- package/src/libs/engine/src/commands/Command.d.ts +66 -0
- package/src/libs/engine/src/commands/Command.js +64 -0
- package/src/libs/engine/src/commands/CommandManager.d.ts +161 -0
- package/src/libs/engine/src/commands/CommandManager.js +417 -0
- package/src/libs/engine/src/commands/basic/AddGroupCommand.d.ts +13 -0
- package/src/libs/engine/src/commands/basic/AddGroupCommand.js +50 -0
- package/src/libs/engine/src/commands/basic/AddLinkCommand.d.ts +13 -0
- package/src/libs/engine/src/commands/basic/AddLinkCommand.js +50 -0
- package/src/libs/engine/src/commands/basic/AddNodeCommand.d.ts +13 -0
- package/src/libs/engine/src/commands/basic/AddNodeCommand.js +65 -0
- package/src/libs/engine/src/commands/basic/AddToGroupCommand.d.ts +12 -0
- package/src/libs/engine/src/commands/basic/AddToGroupCommand.js +73 -0
- package/src/libs/engine/src/commands/basic/AlignCommands.d.ts +42 -0
- package/src/libs/engine/src/commands/basic/AlignCommands.js +138 -0
- package/src/libs/engine/src/commands/basic/CollapseGroupCommand.d.ts +14 -0
- package/src/libs/engine/src/commands/basic/CollapseGroupCommand.js +70 -0
- package/src/libs/engine/src/commands/basic/CopyCommand.d.ts +29 -0
- package/src/libs/engine/src/commands/basic/CopyCommand.js +131 -0
- package/src/libs/engine/src/commands/basic/CutCommand.d.ts +49 -0
- package/src/libs/engine/src/commands/basic/CutCommand.js +68 -0
- package/src/libs/engine/src/commands/basic/DeleteSelectionCommand.d.ts +58 -0
- package/src/libs/engine/src/commands/basic/DeleteSelectionCommand.js +309 -0
- package/src/libs/engine/src/commands/basic/DuplicateCommand.d.ts +31 -0
- package/src/libs/engine/src/commands/basic/DuplicateCommand.js +232 -0
- package/src/libs/engine/src/commands/basic/ExpandGroupCommand.d.ts +12 -0
- package/src/libs/engine/src/commands/basic/ExpandGroupCommand.js +69 -0
- package/src/libs/engine/src/commands/basic/MoveGroupCommand.d.ts +46 -0
- package/src/libs/engine/src/commands/basic/MoveGroupCommand.js +77 -0
- package/src/libs/engine/src/commands/basic/MoveNodeCommand.d.ts +30 -0
- package/src/libs/engine/src/commands/basic/MoveNodeCommand.js +87 -0
- package/src/libs/engine/src/commands/basic/NodeZOrderCommands.d.ts +39 -0
- package/src/libs/engine/src/commands/basic/NodeZOrderCommands.js +120 -0
- package/src/libs/engine/src/commands/basic/PasteCommand.d.ts +33 -0
- package/src/libs/engine/src/commands/basic/PasteCommand.js +228 -0
- package/src/libs/engine/src/commands/basic/PortCommands.d.ts +22 -0
- package/src/libs/engine/src/commands/basic/PortCommands.js +85 -0
- package/src/libs/engine/src/commands/basic/ReconnectLinkCommand.d.ts +15 -0
- package/src/libs/engine/src/commands/basic/ReconnectLinkCommand.js +59 -0
- package/src/libs/engine/src/commands/basic/RemoveFromGroupCommand.d.ts +12 -0
- package/src/libs/engine/src/commands/basic/RemoveFromGroupCommand.js +64 -0
- package/src/libs/engine/src/commands/basic/RemoveGroupCommand.d.ts +12 -0
- package/src/libs/engine/src/commands/basic/RemoveGroupCommand.js +56 -0
- package/src/libs/engine/src/commands/basic/RemoveLinkCommand.d.ts +12 -0
- package/src/libs/engine/src/commands/basic/RemoveLinkCommand.js +57 -0
- package/src/libs/engine/src/commands/basic/RemoveNodeCommand.d.ts +23 -0
- package/src/libs/engine/src/commands/basic/RemoveNodeCommand.js +108 -0
- package/src/libs/engine/src/commands/basic/ResizeNodeCommand.d.ts +16 -0
- package/src/libs/engine/src/commands/basic/ResizeNodeCommand.js +81 -0
- package/src/libs/engine/src/commands/basic/RotateNodeCommand.d.ts +37 -0
- package/src/libs/engine/src/commands/basic/RotateNodeCommand.js +88 -0
- package/src/libs/engine/src/commands/basic/SetFlexItemCommand.d.ts +14 -0
- package/src/libs/engine/src/commands/basic/SetFlexItemCommand.js +74 -0
- package/src/libs/engine/src/commands/basic/SetGridItemCommand.d.ts +14 -0
- package/src/libs/engine/src/commands/basic/SetGridItemCommand.js +74 -0
- package/src/libs/engine/src/commands/basic/SetLayoutCommand.d.ts +16 -0
- package/src/libs/engine/src/commands/basic/SetLayoutCommand.js +80 -0
- package/src/libs/engine/src/commands/basic/SetLinkDisplayLabelCommand.d.ts +28 -0
- package/src/libs/engine/src/commands/basic/SetLinkDisplayLabelCommand.js +83 -0
- package/src/libs/engine/src/commands/basic/SetLinkLabelCommand.d.ts +24 -0
- package/src/libs/engine/src/commands/basic/SetLinkLabelCommand.js +81 -0
- package/src/libs/engine/src/commands/basic/SetLinkLabelsCommand.d.ts +14 -0
- package/src/libs/engine/src/commands/basic/SetLinkLabelsCommand.js +75 -0
- package/src/libs/engine/src/commands/basic/SetLinkPathTypeCommand.d.ts +14 -0
- package/src/libs/engine/src/commands/basic/SetLinkPathTypeCommand.js +77 -0
- package/src/libs/engine/src/commands/basic/SetLinkPointsCommand.d.ts +32 -0
- package/src/libs/engine/src/commands/basic/SetLinkPointsCommand.js +87 -0
- package/src/libs/engine/src/commands/basic/SetNodeDataCommand.d.ts +14 -0
- package/src/libs/engine/src/commands/basic/SetNodeDataCommand.js +93 -0
- package/src/libs/engine/src/commands/basic/SetNodeLabelCommand.d.ts +26 -0
- package/src/libs/engine/src/commands/basic/SetNodeLabelCommand.js +81 -0
- package/src/libs/engine/src/commands/basic/SetNodeShapeConfigCommand.d.ts +14 -0
- package/src/libs/engine/src/commands/basic/SetNodeShapeConfigCommand.js +69 -0
- package/src/libs/engine/src/commands/basic/SetNodeStyleCommand.d.ts +15 -0
- package/src/libs/engine/src/commands/basic/SetNodeStyleCommand.js +88 -0
- package/src/libs/engine/src/commands/basic/SetParentCommand.d.ts +13 -0
- package/src/libs/engine/src/commands/basic/SetParentCommand.js +109 -0
- package/src/libs/engine/src/commands/basic/SetStrokePointsCommand.d.ts +34 -0
- package/src/libs/engine/src/commands/basic/SetStrokePointsCommand.js +86 -0
- package/src/libs/engine/src/commands/basic/StrokeLifecycleCommands.d.ts +31 -0
- package/src/libs/engine/src/commands/basic/StrokeLifecycleCommands.js +88 -0
- package/src/libs/engine/src/commands/basic/UpdateLinkStyleCommand.d.ts +15 -0
- package/src/libs/engine/src/commands/basic/UpdateLinkStyleCommand.js +72 -0
- package/src/libs/engine/src/commands/basic/index.d.ts +41 -0
- package/src/libs/engine/src/commands/basic/index.js +52 -0
- package/src/libs/engine/src/commands/basic/remapNodePortIds.d.ts +23 -0
- package/src/libs/engine/src/commands/basic/remapNodePortIds.js +46 -0
- package/src/libs/engine/src/commands/basic/resolveLinkNodeIds.d.ts +31 -0
- package/src/libs/engine/src/commands/basic/resolveLinkNodeIds.js +49 -0
- package/src/libs/engine/src/commands/composite/BatchCommand.d.ts +19 -0
- package/src/libs/engine/src/commands/composite/BatchCommand.js +61 -0
- package/src/libs/engine/src/commands/composite/MacroCommand.d.ts +35 -0
- package/src/libs/engine/src/commands/composite/MacroCommand.js +87 -0
- package/src/libs/engine/src/commands/composite/index.d.ts +2 -0
- package/src/libs/engine/src/commands/composite/index.js +7 -0
- package/src/libs/engine/src/commands/index.d.ts +4 -0
- package/src/libs/engine/src/commands/index.js +9 -0
- package/src/libs/engine/src/comments/comment-store.d.ts +238 -0
- package/src/libs/engine/src/comments/comment-store.js +538 -0
- package/src/libs/engine/src/comments/index.d.ts +4 -0
- package/src/libs/engine/src/comments/index.js +31 -0
- package/src/libs/engine/src/comments/mentions.d.ts +52 -0
- package/src/libs/engine/src/comments/mentions.js +94 -0
- package/src/libs/engine/src/comments/read-state.d.ts +37 -0
- package/src/libs/engine/src/comments/read-state.js +105 -0
- package/src/libs/engine/src/comments/types.d.ts +154 -0
- package/src/libs/engine/src/comments/types.js +107 -0
- package/src/libs/engine/src/config/InteractionConfig.d.ts +330 -0
- package/src/libs/engine/src/config/InteractionConfig.js +154 -0
- package/src/libs/engine/src/config/index.d.ts +1 -0
- package/src/libs/engine/src/config/index.js +6 -0
- package/src/libs/engine/src/dsl/DSL.d.ts +197 -0
- package/src/libs/engine/src/dsl/DSL.js +564 -0
- package/src/libs/engine/src/dsl/advanced/StyleParser.d.ts +75 -0
- package/src/libs/engine/src/dsl/advanced/StyleParser.js +166 -0
- package/src/libs/engine/src/dsl/advanced/TemplateParser.d.ts +88 -0
- package/src/libs/engine/src/dsl/advanced/TemplateParser.js +226 -0
- package/src/libs/engine/src/dsl/advanced/index.d.ts +9 -0
- package/src/libs/engine/src/dsl/advanced/index.js +13 -0
- package/src/libs/engine/src/dsl/detector/LayoutDetector.d.ts +80 -0
- package/src/libs/engine/src/dsl/detector/LayoutDetector.js +333 -0
- package/src/libs/engine/src/dsl/extended/BPMNGenerator.d.ts +38 -0
- package/src/libs/engine/src/dsl/extended/BPMNGenerator.js +90 -0
- package/src/libs/engine/src/dsl/extended/BPMNParser.d.ts +83 -0
- package/src/libs/engine/src/dsl/extended/BPMNParser.js +198 -0
- package/src/libs/engine/src/dsl/extended/ERDGenerator.d.ts +38 -0
- package/src/libs/engine/src/dsl/extended/ERDGenerator.js +126 -0
- package/src/libs/engine/src/dsl/extended/ERDParser.d.ts +81 -0
- package/src/libs/engine/src/dsl/extended/ERDParser.js +161 -0
- package/src/libs/engine/src/dsl/extended/ERDTransformer.d.ts +43 -0
- package/src/libs/engine/src/dsl/extended/ERDTransformer.js +105 -0
- package/src/libs/engine/src/dsl/extended/UMLGenerator.d.ts +42 -0
- package/src/libs/engine/src/dsl/extended/UMLGenerator.js +157 -0
- package/src/libs/engine/src/dsl/extended/UMLParser.d.ts +99 -0
- package/src/libs/engine/src/dsl/extended/UMLParser.js +200 -0
- package/src/libs/engine/src/dsl/extended/index.d.ts +13 -0
- package/src/libs/engine/src/dsl/extended/index.js +27 -0
- package/src/libs/engine/src/dsl/generator/DSLFormatter.d.ts +87 -0
- package/src/libs/engine/src/dsl/generator/DSLFormatter.js +261 -0
- package/src/libs/engine/src/dsl/generator/DSLGenerator.d.ts +96 -0
- package/src/libs/engine/src/dsl/generator/DSLGenerator.js +328 -0
- package/src/libs/engine/src/dsl/generator/DiagramAnalyzer.d.ts +111 -0
- package/src/libs/engine/src/dsl/generator/DiagramAnalyzer.js +361 -0
- package/src/libs/engine/src/dsl/index.d.ts +35 -0
- package/src/libs/engine/src/dsl/index.js +64 -0
- package/src/libs/engine/src/dsl/lexer/Lexer.d.ts +117 -0
- package/src/libs/engine/src/dsl/lexer/Lexer.js +521 -0
- package/src/libs/engine/src/dsl/mermaid/MermaidClass.d.ts +136 -0
- package/src/libs/engine/src/dsl/mermaid/MermaidClass.js +429 -0
- package/src/libs/engine/src/dsl/mermaid/MermaidER.d.ts +118 -0
- package/src/libs/engine/src/dsl/mermaid/MermaidER.js +338 -0
- package/src/libs/engine/src/dsl/mermaid/MermaidState.d.ts +89 -0
- package/src/libs/engine/src/dsl/mermaid/MermaidState.js +613 -0
- package/src/libs/engine/src/dsl/mermaid/index.d.ts +10 -0
- package/src/libs/engine/src/dsl/mermaid/index.js +33 -0
- package/src/libs/engine/src/dsl/mermaid/layout.d.ts +70 -0
- package/src/libs/engine/src/dsl/mermaid/layout.js +162 -0
- package/src/libs/engine/src/dsl/mermaid/lines.d.ts +25 -0
- package/src/libs/engine/src/dsl/mermaid/lines.js +74 -0
- package/src/libs/engine/src/dsl/parser/Parser.d.ts +131 -0
- package/src/libs/engine/src/dsl/parser/Parser.js +725 -0
- package/src/libs/engine/src/dsl/sync/BidirectionalSync.d.ts +154 -0
- package/src/libs/engine/src/dsl/sync/BidirectionalSync.js +389 -0
- package/src/libs/engine/src/dsl/sync/IntegratedSyncManager.d.ts +128 -0
- package/src/libs/engine/src/dsl/sync/IntegratedSyncManager.js +244 -0
- package/src/libs/engine/src/dsl/sync/LayoutApplicator.d.ts +140 -0
- package/src/libs/engine/src/dsl/sync/LayoutApplicator.js +271 -0
- package/src/libs/engine/src/dsl/sync/SyncStateManager.d.ts +145 -0
- package/src/libs/engine/src/dsl/sync/SyncStateManager.js +253 -0
- package/src/libs/engine/src/dsl/sync/index.d.ts +13 -0
- package/src/libs/engine/src/dsl/sync/index.js +21 -0
- package/src/libs/engine/src/dsl/transformer/ASTTransformer.d.ts +150 -0
- package/src/libs/engine/src/dsl/transformer/ASTTransformer.js +605 -0
- package/src/libs/engine/src/dsl/types/ASTNode.d.ts +159 -0
- package/src/libs/engine/src/dsl/types/ASTNode.js +31 -0
- package/src/libs/engine/src/dsl/types/Token.d.ts +79 -0
- package/src/libs/engine/src/dsl/types/Token.js +84 -0
- package/src/libs/engine/src/engine/DiagramEngine.d.ts +917 -0
- package/src/libs/engine/src/engine/DiagramEngine.js +2190 -0
- package/src/libs/engine/src/engine/DiagramMode.d.ts +51 -0
- package/src/libs/engine/src/engine/DiagramMode.js +53 -0
- package/src/libs/engine/src/engine/DiagramModeTypes.d.ts +73 -0
- package/src/libs/engine/src/engine/DiagramModeTypes.js +4 -0
- package/src/libs/engine/src/engine/ModeManager.d.ts +155 -0
- package/src/libs/engine/src/engine/ModeManager.js +387 -0
- package/src/libs/engine/src/engine/index.d.ts +2 -0
- package/src/libs/engine/src/engine/index.js +7 -0
- package/src/libs/engine/src/events/EventBus.d.ts +106 -0
- package/src/libs/engine/src/events/EventBus.js +226 -0
- package/src/libs/engine/src/events/index.d.ts +1 -0
- package/src/libs/engine/src/events/index.js +6 -0
- package/src/libs/engine/src/index.d.ts +43 -0
- package/src/libs/engine/src/index.js +142 -0
- package/src/libs/engine/src/interaction/GroupCollapseService.d.ts +53 -0
- package/src/libs/engine/src/interaction/GroupCollapseService.js +274 -0
- package/src/libs/engine/src/interaction/GroupMembershipService.d.ts +107 -0
- package/src/libs/engine/src/interaction/GroupMembershipService.js +245 -0
- package/src/libs/engine/src/interaction/SemanticMembershipService.d.ts +28 -0
- package/src/libs/engine/src/interaction/SemanticMembershipService.js +168 -0
- package/src/libs/engine/src/interaction/SwimlaneService.d.ts +62 -0
- package/src/libs/engine/src/interaction/SwimlaneService.js +180 -0
- package/src/libs/engine/src/interaction/index.d.ts +4 -0
- package/src/libs/engine/src/interaction/index.js +9 -0
- package/src/libs/engine/src/interop/drawio/importDrawio.d.ts +52 -0
- package/src/libs/engine/src/interop/drawio/importDrawio.js +940 -0
- package/src/libs/engine/src/interop/drawio/index.d.ts +1 -0
- package/src/libs/engine/src/interop/drawio/index.js +12 -0
- package/src/libs/engine/src/interop/drawio/xml.d.ts +26 -0
- package/src/libs/engine/src/interop/drawio/xml.js +213 -0
- package/src/libs/engine/src/layout/CompoundLayoutService.d.ts +121 -0
- package/src/libs/engine/src/layout/CompoundLayoutService.js +616 -0
- package/src/libs/engine/src/layout/ILayoutAlgorithm.d.ts +120 -0
- package/src/libs/engine/src/layout/ILayoutAlgorithm.js +88 -0
- package/src/libs/engine/src/layout/LayoutManager.d.ts +155 -0
- package/src/libs/engine/src/layout/LayoutManager.js +640 -0
- package/src/libs/engine/src/layout/SmartSpacingCalculator.d.ts +62 -0
- package/src/libs/engine/src/layout/SmartSpacingCalculator.js +134 -0
- package/src/libs/engine/src/layout/ViewportTransform.d.ts +55 -0
- package/src/libs/engine/src/layout/ViewportTransform.js +118 -0
- package/src/libs/engine/src/layout/algorithms/ForceDirectedLayoutAlgorithm.d.ts +34 -0
- package/src/libs/engine/src/layout/algorithms/ForceDirectedLayoutAlgorithm.js +317 -0
- package/src/libs/engine/src/layout/algorithms/GridLayoutAlgorithm.d.ts +56 -0
- package/src/libs/engine/src/layout/algorithms/GridLayoutAlgorithm.js +223 -0
- package/src/libs/engine/src/layout/algorithms/HierarchicalLayoutAlgorithm.d.ts +60 -0
- package/src/libs/engine/src/layout/algorithms/HierarchicalLayoutAlgorithm.js +307 -0
- package/src/libs/engine/src/layout/algorithms/HybridLayoutAlgorithm.d.ts +62 -0
- package/src/libs/engine/src/layout/algorithms/HybridLayoutAlgorithm.js +324 -0
- package/src/libs/engine/src/layout/community-layout-adapter.d.ts +107 -0
- package/src/libs/engine/src/layout/community-layout-adapter.js +486 -0
- package/src/libs/engine/src/layout/component-packing.d.ts +98 -0
- package/src/libs/engine/src/layout/component-packing.js +307 -0
- package/src/libs/engine/src/layout/dagre-layout-adapter.d.ts +122 -0
- package/src/libs/engine/src/layout/dagre-layout-adapter.js +697 -0
- package/src/libs/engine/src/layout/edge-bundling.interface.d.ts +159 -0
- package/src/libs/engine/src/layout/edge-bundling.interface.js +379 -0
- package/src/libs/engine/src/layout/elk-layout-adapter.d.ts +121 -0
- package/src/libs/engine/src/layout/elk-layout-adapter.js +586 -0
- package/src/libs/engine/src/layout/elk-loader.d.ts +1 -0
- package/src/libs/engine/src/layout/elk-loader.js +24 -0
- package/src/libs/engine/src/layout/force-layout-adapter.d.ts +167 -0
- package/src/libs/engine/src/layout/force-layout-adapter.js +790 -0
- package/src/libs/engine/src/layout/grid-pack/grid-pack-engine.d.ts +323 -0
- package/src/libs/engine/src/layout/grid-pack/grid-pack-engine.js +685 -0
- package/src/libs/engine/src/layout/incremental/mental-map.d.ts +98 -0
- package/src/libs/engine/src/layout/incremental/mental-map.js +221 -0
- package/src/libs/engine/src/layout/incremental-layout.interface.d.ts +145 -0
- package/src/libs/engine/src/layout/incremental-layout.interface.js +300 -0
- package/src/libs/engine/src/layout/index.d.ts +83 -0
- package/src/libs/engine/src/layout/index.js +116 -0
- package/src/libs/engine/src/layout/layout-adapter.interface.d.ts +185 -0
- package/src/libs/engine/src/layout/layout-adapter.interface.js +10 -0
- package/src/libs/engine/src/layout/layout-auto-select.d.ts +160 -0
- package/src/libs/engine/src/layout/layout-auto-select.js +621 -0
- package/src/libs/engine/src/layout/layout-constraints.interface.d.ts +117 -0
- package/src/libs/engine/src/layout/layout-constraints.interface.js +138 -0
- package/src/libs/engine/src/layout/layout-graph.d.ts +70 -0
- package/src/libs/engine/src/layout/layout-graph.js +119 -0
- package/src/libs/engine/src/layout/layout-history.d.ts +147 -0
- package/src/libs/engine/src/layout/layout-history.js +258 -0
- package/src/libs/engine/src/layout/layout-host.d.ts +172 -0
- package/src/libs/engine/src/layout/layout-host.js +523 -0
- package/src/libs/engine/src/layout/layout-presets.d.ts +91 -0
- package/src/libs/engine/src/layout/layout-presets.js +333 -0
- package/src/libs/engine/src/layout/layout-quality-extended.d.ts +66 -0
- package/src/libs/engine/src/layout/layout-quality-extended.js +246 -0
- package/src/libs/engine/src/layout/layout-quality-metrics.d.ts +127 -0
- package/src/libs/engine/src/layout/layout-quality-metrics.js +466 -0
- package/src/libs/engine/src/layout/layout-registry.d.ts +309 -0
- package/src/libs/engine/src/layout/layout-registry.js +414 -0
- package/src/libs/engine/src/layout/layout.service.d.ts +100 -0
- package/src/libs/engine/src/layout/layout.service.js +216 -0
- package/src/libs/engine/src/layout/overlap-removal.d.ts +20 -0
- package/src/libs/engine/src/layout/overlap-removal.js +117 -0
- package/src/libs/engine/src/layout/port-aware-layout.interface.d.ts +232 -0
- package/src/libs/engine/src/layout/port-aware-layout.interface.js +413 -0
- package/src/libs/engine/src/layout/port-label-bridge.d.ts +77 -0
- package/src/libs/engine/src/layout/port-label-bridge.js +250 -0
- package/src/libs/engine/src/layout/portfolio-layouts.d.ts +53 -0
- package/src/libs/engine/src/layout/portfolio-layouts.js +388 -0
- package/src/libs/engine/src/layout/rng.d.ts +34 -0
- package/src/libs/engine/src/layout/rng.js +71 -0
- package/src/libs/engine/src/layout/spectral-layout-adapter.d.ts +72 -0
- package/src/libs/engine/src/layout/spectral-layout-adapter.js +379 -0
- package/src/libs/engine/src/layout/steppable-layout.d.ts +40 -0
- package/src/libs/engine/src/layout/steppable-layout.js +34 -0
- package/src/libs/engine/src/layout/subgraph-layout.interface.d.ts +269 -0
- package/src/libs/engine/src/layout/subgraph-layout.interface.js +452 -0
- package/src/libs/engine/src/layout/sugiyama/layered-layout.d.ts +9 -0
- package/src/libs/engine/src/layout/sugiyama/layered-layout.js +83 -0
- package/src/libs/engine/src/layout/sugiyama/sugiyama.d.ts +91 -0
- package/src/libs/engine/src/layout/sugiyama/sugiyama.js +797 -0
- package/src/libs/engine/src/layout/tree-layout.d.ts +43 -0
- package/src/libs/engine/src/layout/tree-layout.js +426 -0
- package/src/libs/engine/src/layout/types.d.ts +263 -0
- package/src/libs/engine/src/layout/types.js +6 -0
- package/src/libs/engine/src/lib/performance/mobile-performance.service.d.ts +43 -0
- package/src/libs/engine/src/lib/performance/mobile-performance.service.js +95 -0
- package/src/libs/engine/src/models/DiagramEntity.d.ts +174 -0
- package/src/libs/engine/src/models/DiagramEntity.js +366 -0
- package/src/libs/engine/src/models/DiagramModel.d.ts +960 -0
- package/src/libs/engine/src/models/DiagramModel.js +2416 -0
- package/src/libs/engine/src/models/GroupModel.d.ts +573 -0
- package/src/libs/engine/src/models/GroupModel.js +1373 -0
- package/src/libs/engine/src/models/LinkModel.d.ts +395 -0
- package/src/libs/engine/src/models/LinkModel.js +1045 -0
- package/src/libs/engine/src/models/NodeModel.d.ts +666 -0
- package/src/libs/engine/src/models/NodeModel.js +1512 -0
- package/src/libs/engine/src/models/PortModel.d.ts +292 -0
- package/src/libs/engine/src/models/PortModel.js +637 -0
- package/src/libs/engine/src/models/StrokeModel.d.ts +160 -0
- package/src/libs/engine/src/models/StrokeModel.js +387 -0
- package/src/libs/engine/src/models/index.d.ts +7 -0
- package/src/libs/engine/src/models/index.js +12 -0
- package/src/libs/engine/src/models/readonly-lock.d.ts +108 -0
- package/src/libs/engine/src/models/readonly-lock.js +125 -0
- package/src/libs/engine/src/performance/LRUCache.d.ts +78 -0
- package/src/libs/engine/src/performance/LRUCache.js +179 -0
- package/src/libs/engine/src/performance/PerformanceMonitor.d.ts +47 -0
- package/src/libs/engine/src/performance/PerformanceMonitor.js +112 -0
- package/src/libs/engine/src/performance/SpatialIndex.d.ts +157 -0
- package/src/libs/engine/src/performance/SpatialIndex.js +306 -0
- package/src/libs/engine/src/performance/index.d.ts +2 -0
- package/src/libs/engine/src/performance/index.js +7 -0
- package/src/libs/engine/src/plugins/PluginManager.d.ts +95 -0
- package/src/libs/engine/src/plugins/PluginManager.js +388 -0
- package/src/libs/engine/src/plugins/index.d.ts +1 -0
- package/src/libs/engine/src/plugins/index.js +6 -0
- package/src/libs/engine/src/ports/connection-rules.d.ts +32 -0
- package/src/libs/engine/src/ports/connection-rules.js +131 -0
- package/src/libs/engine/src/ports/dynamic-ports.d.ts +27 -0
- package/src/libs/engine/src/ports/dynamic-ports.js +135 -0
- package/src/libs/engine/src/ports/index.d.ts +5 -0
- package/src/libs/engine/src/ports/index.js +16 -0
- package/src/libs/engine/src/ports/port-groups.d.ts +43 -0
- package/src/libs/engine/src/ports/port-groups.js +185 -0
- package/src/libs/engine/src/ports/port-type-registry.d.ts +34 -0
- package/src/libs/engine/src/ports/port-type-registry.js +87 -0
- package/src/libs/engine/src/ports/port-types.d.ts +266 -0
- package/src/libs/engine/src/ports/port-types.js +30 -0
- package/src/libs/engine/src/rendering/HtmlTemplateRenderer.d.ts +136 -0
- package/src/libs/engine/src/rendering/HtmlTemplateRenderer.js +292 -0
- package/src/libs/engine/src/rendering/LemonadeJSRenderer.d.ts +160 -0
- package/src/libs/engine/src/rendering/LemonadeJSRenderer.js +362 -0
- package/src/libs/engine/src/rendering/index.d.ts +2 -0
- package/src/libs/engine/src/rendering/index.js +7 -0
- package/src/libs/engine/src/routing/LiveReroutingEngine.d.ts +75 -0
- package/src/libs/engine/src/routing/LiveReroutingEngine.js +173 -0
- package/src/libs/engine/src/routing/ObstacleIndex.d.ts +42 -0
- package/src/libs/engine/src/routing/ObstacleIndex.js +215 -0
- package/src/libs/engine/src/routing/ObstacleMap.d.ts +68 -0
- package/src/libs/engine/src/routing/ObstacleMap.js +312 -0
- package/src/libs/engine/src/routing/ObstacleMapBuilder.d.ts +28 -0
- package/src/libs/engine/src/routing/ObstacleMapBuilder.js +76 -0
- package/src/libs/engine/src/routing/PathSimplifier.d.ts +119 -0
- package/src/libs/engine/src/routing/PathSimplifier.js +224 -0
- package/src/libs/engine/src/routing/RoutingEngine.d.ts +118 -0
- package/src/libs/engine/src/routing/RoutingEngine.js +546 -0
- package/src/libs/engine/src/routing/algorithms/AStarRouter.d.ts +90 -0
- package/src/libs/engine/src/routing/algorithms/AStarRouter.js +331 -0
- package/src/libs/engine/src/routing/algorithms/DijkstraRouter.d.ts +74 -0
- package/src/libs/engine/src/routing/algorithms/DijkstraRouter.js +297 -0
- package/src/libs/engine/src/routing/algorithms/ElkRouter.d.ts +34 -0
- package/src/libs/engine/src/routing/algorithms/ElkRouter.js +210 -0
- package/src/libs/engine/src/routing/algorithms/ManhattanRouter.d.ts +18 -0
- package/src/libs/engine/src/routing/algorithms/ManhattanRouter.js +224 -0
- package/src/libs/engine/src/routing/algorithms/OrthogonalRouter.d.ts +173 -0
- package/src/libs/engine/src/routing/algorithms/OrthogonalRouter.js +1092 -0
- package/src/libs/engine/src/routing/algorithms/StraightRouter.d.ts +8 -0
- package/src/libs/engine/src/routing/algorithms/StraightRouter.js +53 -0
- package/src/libs/engine/src/routing/algorithms/VisibilityGraphRouter.d.ts +59 -0
- package/src/libs/engine/src/routing/algorithms/VisibilityGraphRouter.js +258 -0
- package/src/libs/engine/src/routing/global/GlobalRouteSolver.d.ts +64 -0
- package/src/libs/engine/src/routing/global/GlobalRouteSolver.js +334 -0
- package/src/libs/engine/src/routing/global/solver-host.d.ts +65 -0
- package/src/libs/engine/src/routing/global/solver-host.js +87 -0
- package/src/libs/engine/src/routing/index.d.ts +15 -0
- package/src/libs/engine/src/routing/index.js +20 -0
- package/src/libs/engine/src/routing/types.d.ts +161 -0
- package/src/libs/engine/src/routing/types.js +4 -0
- package/src/libs/engine/src/selection/SelectionManager.d.ts +161 -0
- package/src/libs/engine/src/selection/SelectionManager.js +483 -0
- package/src/libs/engine/src/selection/index.d.ts +1 -0
- package/src/libs/engine/src/selection/index.js +6 -0
- package/src/libs/engine/src/serialization/DiagramMigrations.d.ts +41 -0
- package/src/libs/engine/src/serialization/DiagramMigrations.js +124 -0
- package/src/libs/engine/src/serialization/DiagramValidator.d.ts +20 -0
- package/src/libs/engine/src/serialization/DiagramValidator.js +136 -0
- package/src/libs/engine/src/serialization/DocumentEnvelope.d.ts +53 -0
- package/src/libs/engine/src/serialization/DocumentEnvelope.js +111 -0
- package/src/libs/engine/src/serialization/Incremental.d.ts +77 -0
- package/src/libs/engine/src/serialization/Incremental.js +227 -0
- package/src/libs/engine/src/serialization/Serializer.d.ts +29 -0
- package/src/libs/engine/src/serialization/Serializer.js +45 -0
- package/src/libs/engine/src/serialization/Subgraph.d.ts +51 -0
- package/src/libs/engine/src/serialization/Subgraph.js +172 -0
- package/src/libs/engine/src/serialization/TextFormat.d.ts +71 -0
- package/src/libs/engine/src/serialization/TextFormat.js +261 -0
- package/src/libs/engine/src/state/ConnectionStateManager.d.ts +178 -0
- package/src/libs/engine/src/state/ConnectionStateManager.js +319 -0
- package/src/libs/engine/src/state/DiagramStore.d.ts +134 -0
- package/src/libs/engine/src/state/DiagramStore.js +372 -0
- package/src/libs/engine/src/state/index.d.ts +2 -0
- package/src/libs/engine/src/state/index.js +7 -0
- package/src/libs/engine/src/sync/awareness.d.ts +91 -0
- package/src/libs/engine/src/sync/awareness.js +221 -0
- package/src/libs/engine/src/sync/batcher.d.ts +84 -0
- package/src/libs/engine/src/sync/batcher.js +0 -0
- package/src/libs/engine/src/sync/causal-buffer.d.ts +81 -0
- package/src/libs/engine/src/sync/causal-buffer.js +199 -0
- package/src/libs/engine/src/sync/index.d.ts +20 -0
- package/src/libs/engine/src/sync/index.js +41 -0
- package/src/libs/engine/src/sync/protocol.d.ts +74 -0
- package/src/libs/engine/src/sync/protocol.js +39 -0
- package/src/libs/engine/src/sync/sync-adapter.d.ts +243 -0
- package/src/libs/engine/src/sync/sync-adapter.js +524 -0
- package/src/libs/engine/src/sync/transport.d.ts +30 -0
- package/src/libs/engine/src/sync/transport.js +28 -0
- package/src/libs/engine/src/sync/transports/broadcast-channel.d.ts +39 -0
- package/src/libs/engine/src/sync/transports/broadcast-channel.js +117 -0
- package/src/libs/engine/src/sync/transports/memory.d.ts +38 -0
- package/src/libs/engine/src/sync/transports/memory.js +111 -0
- package/src/libs/engine/src/sync/transports/unreliable.d.ts +59 -0
- package/src/libs/engine/src/sync/transports/unreliable.js +153 -0
- package/src/libs/engine/src/sync/transports/websocket.d.ts +60 -0
- package/src/libs/engine/src/sync/transports/websocket.js +210 -0
- package/src/libs/engine/src/sync/version-vector.d.ts +47 -0
- package/src/libs/engine/src/sync/version-vector.js +218 -0
- package/src/libs/engine/src/template-library/common-templates.d.ts +46 -0
- package/src/libs/engine/src/template-library/common-templates.js +395 -0
- package/src/libs/engine/src/template-library/data-viz-templates.d.ts +52 -0
- package/src/libs/engine/src/template-library/data-viz-templates.js +471 -0
- package/src/libs/engine/src/template-library/erd-templates.d.ts +71 -0
- package/src/libs/engine/src/template-library/erd-templates.js +773 -0
- package/src/libs/engine/src/template-library/index.d.ts +141 -0
- package/src/libs/engine/src/template-library/index.js +271 -0
- package/src/libs/engine/src/template-library/integration.d.ts +80 -0
- package/src/libs/engine/src/template-library/integration.js +141 -0
- package/src/libs/engine/src/template-library/workflow-templates.d.ts +52 -0
- package/src/libs/engine/src/template-library/workflow-templates.js +438 -0
- package/src/libs/engine/src/templates/NodeFactory.d.ts +118 -0
- package/src/libs/engine/src/templates/NodeFactory.js +436 -0
- package/src/libs/engine/src/templates/NodeTemplate.d.ts +342 -0
- package/src/libs/engine/src/templates/NodeTemplate.js +13 -0
- package/src/libs/engine/src/templates/TemplateLoader.d.ts +46 -0
- package/src/libs/engine/src/templates/TemplateLoader.js +114 -0
- package/src/libs/engine/src/templates/TemplateRegistry.d.ts +70 -0
- package/src/libs/engine/src/templates/TemplateRegistry.js +128 -0
- package/src/libs/engine/src/templates/generated/bpmn/bpmn-business-rule-task.template.d.ts +11 -0
- package/src/libs/engine/src/templates/generated/bpmn/bpmn-business-rule-task.template.js +123 -0
- package/src/libs/engine/src/templates/generated/bpmn/bpmn-end-event.template.d.ts +11 -0
- package/src/libs/engine/src/templates/generated/bpmn/bpmn-end-event.template.js +123 -0
- package/src/libs/engine/src/templates/generated/bpmn/bpmn-error-event.template.d.ts +11 -0
- package/src/libs/engine/src/templates/generated/bpmn/bpmn-error-event.template.js +123 -0
- package/src/libs/engine/src/templates/generated/bpmn/bpmn-exclusive-gateway.template.d.ts +11 -0
- package/src/libs/engine/src/templates/generated/bpmn/bpmn-exclusive-gateway.template.js +124 -0
- package/src/libs/engine/src/templates/generated/bpmn/bpmn-inclusive-gateway.template.d.ts +11 -0
- package/src/libs/engine/src/templates/generated/bpmn/bpmn-inclusive-gateway.template.js +123 -0
- package/src/libs/engine/src/templates/generated/bpmn/bpmn-intermediate-event.template.d.ts +11 -0
- package/src/libs/engine/src/templates/generated/bpmn/bpmn-intermediate-event.template.js +124 -0
- package/src/libs/engine/src/templates/generated/bpmn/bpmn-manual-task.template.d.ts +11 -0
- package/src/libs/engine/src/templates/generated/bpmn/bpmn-manual-task.template.js +123 -0
- package/src/libs/engine/src/templates/generated/bpmn/bpmn-message-event.template.d.ts +11 -0
- package/src/libs/engine/src/templates/generated/bpmn/bpmn-message-event.template.js +122 -0
- package/src/libs/engine/src/templates/generated/bpmn/bpmn-parallel-gateway.template.d.ts +11 -0
- package/src/libs/engine/src/templates/generated/bpmn/bpmn-parallel-gateway.template.js +125 -0
- package/src/libs/engine/src/templates/generated/bpmn/bpmn-script-task.template.d.ts +11 -0
- package/src/libs/engine/src/templates/generated/bpmn/bpmn-script-task.template.js +123 -0
- package/src/libs/engine/src/templates/generated/bpmn/bpmn-service-task.template.d.ts +11 -0
- package/src/libs/engine/src/templates/generated/bpmn/bpmn-service-task.template.js +123 -0
- package/src/libs/engine/src/templates/generated/bpmn/bpmn-start-event.template.d.ts +11 -0
- package/src/libs/engine/src/templates/generated/bpmn/bpmn-start-event.template.js +123 -0
- package/src/libs/engine/src/templates/generated/bpmn/bpmn-task.template.d.ts +11 -0
- package/src/libs/engine/src/templates/generated/bpmn/bpmn-task.template.js +152 -0
- package/src/libs/engine/src/templates/generated/bpmn/bpmn-timer-event.template.d.ts +11 -0
- package/src/libs/engine/src/templates/generated/bpmn/bpmn-timer-event.template.js +123 -0
- package/src/libs/engine/src/templates/generated/bpmn/bpmn-user-task.template.d.ts +11 -0
- package/src/libs/engine/src/templates/generated/bpmn/bpmn-user-task.template.js +123 -0
- package/src/libs/engine/src/templates/generated/bpmn/index.d.ts +15 -0
- package/src/libs/engine/src/templates/generated/bpmn/index.js +34 -0
- package/src/libs/engine/src/templates/generated/erd/erd-associative-entity.template.d.ts +11 -0
- package/src/libs/engine/src/templates/generated/erd/erd-associative-entity.template.js +152 -0
- package/src/libs/engine/src/templates/generated/erd/erd-attribute.template.d.ts +11 -0
- package/src/libs/engine/src/templates/generated/erd/erd-attribute.template.js +122 -0
- package/src/libs/engine/src/templates/generated/erd/erd-bridge-entity.template.d.ts +11 -0
- package/src/libs/engine/src/templates/generated/erd/erd-bridge-entity.template.js +151 -0
- package/src/libs/engine/src/templates/generated/erd/erd-composite-attribute.template.d.ts +11 -0
- package/src/libs/engine/src/templates/generated/erd/erd-composite-attribute.template.js +122 -0
- package/src/libs/engine/src/templates/generated/erd/erd-derived-attribute.template.d.ts +11 -0
- package/src/libs/engine/src/templates/generated/erd/erd-derived-attribute.template.js +122 -0
- package/src/libs/engine/src/templates/generated/erd/erd-discriminator.template.d.ts +11 -0
- package/src/libs/engine/src/templates/generated/erd/erd-discriminator.template.js +123 -0
- package/src/libs/engine/src/templates/generated/erd/erd-entity.template.d.ts +11 -0
- package/src/libs/engine/src/templates/generated/erd/erd-entity.template.js +149 -0
- package/src/libs/engine/src/templates/generated/erd/erd-isa.template.d.ts +11 -0
- package/src/libs/engine/src/templates/generated/erd/erd-isa.template.js +123 -0
- package/src/libs/engine/src/templates/generated/erd/erd-key-attribute.template.d.ts +11 -0
- package/src/libs/engine/src/templates/generated/erd/erd-key-attribute.template.js +122 -0
- package/src/libs/engine/src/templates/generated/erd/erd-multivalued-attribute.template.d.ts +11 -0
- package/src/libs/engine/src/templates/generated/erd/erd-multivalued-attribute.template.js +122 -0
- package/src/libs/engine/src/templates/generated/erd/erd-optional-attribute.template.d.ts +11 -0
- package/src/libs/engine/src/templates/generated/erd/erd-optional-attribute.template.js +122 -0
- package/src/libs/engine/src/templates/generated/erd/erd-partial-key.template.d.ts +11 -0
- package/src/libs/engine/src/templates/generated/erd/erd-partial-key.template.js +123 -0
- package/src/libs/engine/src/templates/generated/erd/erd-relationship.template.d.ts +11 -0
- package/src/libs/engine/src/templates/generated/erd/erd-relationship.template.js +121 -0
- package/src/libs/engine/src/templates/generated/erd/erd-subtype.template.d.ts +11 -0
- package/src/libs/engine/src/templates/generated/erd/erd-subtype.template.js +123 -0
- package/src/libs/engine/src/templates/generated/erd/erd-supertype.template.d.ts +11 -0
- package/src/libs/engine/src/templates/generated/erd/erd-supertype.template.js +123 -0
- package/src/libs/engine/src/templates/generated/erd/erd-table.template.d.ts +11 -0
- package/src/libs/engine/src/templates/generated/erd/erd-table.template.js +123 -0
- package/src/libs/engine/src/templates/generated/erd/erd-view.template.d.ts +11 -0
- package/src/libs/engine/src/templates/generated/erd/erd-view.template.js +123 -0
- package/src/libs/engine/src/templates/generated/erd/erd-weak-entity.template.d.ts +11 -0
- package/src/libs/engine/src/templates/generated/erd/erd-weak-entity.template.js +149 -0
- package/src/libs/engine/src/templates/generated/erd/erd-weak-relationship.template.d.ts +11 -0
- package/src/libs/engine/src/templates/generated/erd/erd-weak-relationship.template.js +122 -0
- package/src/libs/engine/src/templates/generated/erd/index.d.ts +19 -0
- package/src/libs/engine/src/templates/generated/erd/index.js +42 -0
- package/src/libs/engine/src/templates/generated/flowchart/flowchart-connector.template.d.ts +11 -0
- package/src/libs/engine/src/templates/generated/flowchart/flowchart-connector.template.js +123 -0
- package/src/libs/engine/src/templates/generated/flowchart/flowchart-data.template.d.ts +11 -0
- package/src/libs/engine/src/templates/generated/flowchart/flowchart-data.template.js +123 -0
- package/src/libs/engine/src/templates/generated/flowchart/flowchart-decision.template.d.ts +11 -0
- package/src/libs/engine/src/templates/generated/flowchart/flowchart-decision.template.js +123 -0
- package/src/libs/engine/src/templates/generated/flowchart/flowchart-delay.template.d.ts +11 -0
- package/src/libs/engine/src/templates/generated/flowchart/flowchart-delay.template.js +124 -0
- package/src/libs/engine/src/templates/generated/flowchart/flowchart-display.template.d.ts +11 -0
- package/src/libs/engine/src/templates/generated/flowchart/flowchart-display.template.js +124 -0
- package/src/libs/engine/src/templates/generated/flowchart/flowchart-document.template.d.ts +11 -0
- package/src/libs/engine/src/templates/generated/flowchart/flowchart-document.template.js +123 -0
- package/src/libs/engine/src/templates/generated/flowchart/flowchart-manual-input.template.d.ts +11 -0
- package/src/libs/engine/src/templates/generated/flowchart/flowchart-manual-input.template.js +123 -0
- package/src/libs/engine/src/templates/generated/flowchart/flowchart-manual-operation.template.d.ts +11 -0
- package/src/libs/engine/src/templates/generated/flowchart/flowchart-manual-operation.template.js +122 -0
- package/src/libs/engine/src/templates/generated/flowchart/flowchart-merge.template.d.ts +11 -0
- package/src/libs/engine/src/templates/generated/flowchart/flowchart-merge.template.js +122 -0
- package/src/libs/engine/src/templates/generated/flowchart/flowchart-or.template.d.ts +11 -0
- package/src/libs/engine/src/templates/generated/flowchart/flowchart-or.template.js +123 -0
- package/src/libs/engine/src/templates/generated/flowchart/flowchart-predefined-process.template.d.ts +11 -0
- package/src/libs/engine/src/templates/generated/flowchart/flowchart-predefined-process.template.js +123 -0
- package/src/libs/engine/src/templates/generated/flowchart/flowchart-preparation.template.d.ts +11 -0
- package/src/libs/engine/src/templates/generated/flowchart/flowchart-preparation.template.js +123 -0
- package/src/libs/engine/src/templates/generated/flowchart/flowchart-process.template.d.ts +11 -0
- package/src/libs/engine/src/templates/generated/flowchart/flowchart-process.template.js +122 -0
- package/src/libs/engine/src/templates/generated/flowchart/flowchart-stored-data.template.d.ts +11 -0
- package/src/libs/engine/src/templates/generated/flowchart/flowchart-stored-data.template.js +123 -0
- package/src/libs/engine/src/templates/generated/flowchart/flowchart-summing-junction.template.d.ts +11 -0
- package/src/libs/engine/src/templates/generated/flowchart/flowchart-summing-junction.template.js +124 -0
- package/src/libs/engine/src/templates/generated/flowchart/flowchart-terminal.template.d.ts +11 -0
- package/src/libs/engine/src/templates/generated/flowchart/flowchart-terminal.template.js +124 -0
- package/src/libs/engine/src/templates/generated/flowchart/index.d.ts +16 -0
- package/src/libs/engine/src/templates/generated/flowchart/index.js +36 -0
- package/src/libs/engine/src/templates/generated/index.d.ts +9 -0
- package/src/libs/engine/src/templates/generated/index.js +13 -0
- package/src/libs/engine/src/templates/generated/register.d.ts +23 -0
- package/src/libs/engine/src/templates/generated/register.js +31 -0
- package/src/libs/engine/src/templates/generated/uml/index.d.ts +30 -0
- package/src/libs/engine/src/templates/generated/uml/index.js +64 -0
- package/src/libs/engine/src/templates/generated/uml/uml-abstract-class.template.d.ts +11 -0
- package/src/libs/engine/src/templates/generated/uml/uml-abstract-class.template.js +204 -0
- package/src/libs/engine/src/templates/generated/uml/uml-activation.template.d.ts +11 -0
- package/src/libs/engine/src/templates/generated/uml/uml-activation.template.js +124 -0
- package/src/libs/engine/src/templates/generated/uml/uml-activity-partition.template.d.ts +11 -0
- package/src/libs/engine/src/templates/generated/uml/uml-activity-partition.template.js +124 -0
- package/src/libs/engine/src/templates/generated/uml/uml-activity.template.d.ts +11 -0
- package/src/libs/engine/src/templates/generated/uml/uml-activity.template.js +123 -0
- package/src/libs/engine/src/templates/generated/uml/uml-actor.template.d.ts +11 -0
- package/src/libs/engine/src/templates/generated/uml/uml-actor.template.js +123 -0
- package/src/libs/engine/src/templates/generated/uml/uml-class.template.d.ts +11 -0
- package/src/libs/engine/src/templates/generated/uml/uml-class.template.js +204 -0
- package/src/libs/engine/src/templates/generated/uml/uml-collaboration.template.d.ts +11 -0
- package/src/libs/engine/src/templates/generated/uml/uml-collaboration.template.js +122 -0
- package/src/libs/engine/src/templates/generated/uml/uml-component.template.d.ts +11 -0
- package/src/libs/engine/src/templates/generated/uml/uml-component.template.js +122 -0
- package/src/libs/engine/src/templates/generated/uml/uml-datatype.template.d.ts +11 -0
- package/src/libs/engine/src/templates/generated/uml/uml-datatype.template.js +204 -0
- package/src/libs/engine/src/templates/generated/uml/uml-decision.template.d.ts +11 -0
- package/src/libs/engine/src/templates/generated/uml/uml-decision.template.js +124 -0
- package/src/libs/engine/src/templates/generated/uml/uml-enum.template.d.ts +11 -0
- package/src/libs/engine/src/templates/generated/uml/uml-enum.template.js +204 -0
- package/src/libs/engine/src/templates/generated/uml/uml-final-node.template.d.ts +11 -0
- package/src/libs/engine/src/templates/generated/uml/uml-final-node.template.js +124 -0
- package/src/libs/engine/src/templates/generated/uml/uml-final-state.template.d.ts +11 -0
- package/src/libs/engine/src/templates/generated/uml/uml-final-state.template.js +124 -0
- package/src/libs/engine/src/templates/generated/uml/uml-fork.template.d.ts +11 -0
- package/src/libs/engine/src/templates/generated/uml/uml-fork.template.js +125 -0
- package/src/libs/engine/src/templates/generated/uml/uml-initial-node.template.d.ts +11 -0
- package/src/libs/engine/src/templates/generated/uml/uml-initial-node.template.js +123 -0
- package/src/libs/engine/src/templates/generated/uml/uml-initial-state.template.d.ts +11 -0
- package/src/libs/engine/src/templates/generated/uml/uml-initial-state.template.js +123 -0
- package/src/libs/engine/src/templates/generated/uml/uml-interface.template.d.ts +11 -0
- package/src/libs/engine/src/templates/generated/uml/uml-interface.template.js +204 -0
- package/src/libs/engine/src/templates/generated/uml/uml-join.template.d.ts +11 -0
- package/src/libs/engine/src/templates/generated/uml/uml-join.template.js +125 -0
- package/src/libs/engine/src/templates/generated/uml/uml-lifeline.template.d.ts +11 -0
- package/src/libs/engine/src/templates/generated/uml/uml-lifeline.template.js +123 -0
- package/src/libs/engine/src/templates/generated/uml/uml-merge.template.d.ts +11 -0
- package/src/libs/engine/src/templates/generated/uml/uml-merge.template.js +122 -0
- package/src/libs/engine/src/templates/generated/uml/uml-node.template.d.ts +11 -0
- package/src/libs/engine/src/templates/generated/uml/uml-node.template.js +122 -0
- package/src/libs/engine/src/templates/generated/uml/uml-note.template.d.ts +11 -0
- package/src/libs/engine/src/templates/generated/uml/uml-note.template.js +123 -0
- package/src/libs/engine/src/templates/generated/uml/uml-object.template.d.ts +11 -0
- package/src/libs/engine/src/templates/generated/uml/uml-object.template.js +204 -0
- package/src/libs/engine/src/templates/generated/uml/uml-package.template.d.ts +11 -0
- package/src/libs/engine/src/templates/generated/uml/uml-package.template.js +123 -0
- package/src/libs/engine/src/templates/generated/uml/uml-part.template.d.ts +11 -0
- package/src/libs/engine/src/templates/generated/uml/uml-part.template.js +122 -0
- package/src/libs/engine/src/templates/generated/uml/uml-port.template.d.ts +11 -0
- package/src/libs/engine/src/templates/generated/uml/uml-port.template.js +123 -0
- package/src/libs/engine/src/templates/generated/uml/uml-primitive-type.template.d.ts +11 -0
- package/src/libs/engine/src/templates/generated/uml/uml-primitive-type.template.js +204 -0
- package/src/libs/engine/src/templates/generated/uml/uml-signal.template.d.ts +11 -0
- package/src/libs/engine/src/templates/generated/uml/uml-signal.template.js +123 -0
- package/src/libs/engine/src/templates/generated/uml/uml-state.template.d.ts +11 -0
- package/src/libs/engine/src/templates/generated/uml/uml-state.template.js +123 -0
- package/src/libs/engine/src/templates/generated/uml/uml-use-case.template.d.ts +11 -0
- package/src/libs/engine/src/templates/generated/uml/uml-use-case.template.js +122 -0
- package/src/libs/engine/src/templates/index.d.ts +12 -0
- package/src/libs/engine/src/templates/index.js +27 -0
- package/src/libs/engine/src/templates/stencils.d.ts +45 -0
- package/src/libs/engine/src/templates/stencils.js +85 -0
- package/src/libs/engine/src/types/domain/bpmn.d.ts +25 -0
- package/src/libs/engine/src/types/domain/bpmn.js +313 -0
- package/src/libs/engine/src/types/domain/erd.d.ts +29 -0
- package/src/libs/engine/src/types/domain/erd.js +394 -0
- package/src/libs/engine/src/types/domain/flowchart.d.ts +26 -0
- package/src/libs/engine/src/types/domain/flowchart.js +434 -0
- package/src/libs/engine/src/types/domain/index.d.ts +4 -0
- package/src/libs/engine/src/types/domain/index.js +9 -0
- package/src/libs/engine/src/types/domain/uml.d.ts +40 -0
- package/src/libs/engine/src/types/domain/uml.js +758 -0
- package/src/libs/engine/src/types/event.types.d.ts +142 -0
- package/src/libs/engine/src/types/event.types.js +96 -0
- package/src/libs/engine/src/types/geometry.types.d.ts +84 -0
- package/src/libs/engine/src/types/geometry.types.js +16 -0
- package/src/libs/engine/src/types/index.d.ts +7 -0
- package/src/libs/engine/src/types/index.js +14 -0
- package/src/libs/engine/src/types/layout.types.d.ts +148 -0
- package/src/libs/engine/src/types/layout.types.js +28 -0
- package/src/libs/engine/src/types/model.types.d.ts +378 -0
- package/src/libs/engine/src/types/model.types.js +4 -0
- package/src/libs/engine/src/types/performance.types.d.ts +109 -0
- package/src/libs/engine/src/types/performance.types.js +122 -0
- package/src/libs/engine/src/types/plugin.types.d.ts +30 -0
- package/src/libs/engine/src/types/plugin.types.js +4 -0
- package/src/libs/engine/src/utils/deep-clone.d.ts +9 -0
- package/src/libs/engine/src/utils/deep-clone.js +123 -0
- package/src/libs/engine/src/utils/geometry.d.ts +45 -0
- package/src/libs/engine/src/utils/geometry.js +241 -0
- package/src/libs/engine/src/utils/id.d.ts +22 -0
- package/src/libs/engine/src/utils/id.js +44 -0
- package/src/libs/engine/src/utils/index.d.ts +3 -0
- package/src/libs/engine/src/utils/index.js +8 -0
- package/src/libs/engine/src/utils/transform.d.ts +84 -0
- package/src/libs/engine/src/utils/transform.js +200 -0
- package/src/libs/engine/src/validation/ConnectionGroupValidator.d.ts +22 -0
- package/src/libs/engine/src/validation/ConnectionGroupValidator.js +56 -0
- package/src/libs/engine/src/validation/TypeRegistry.d.ts +179 -0
- package/src/libs/engine/src/validation/TypeRegistry.js +358 -0
- package/src/libs/engine/src/validation/ValidationEngine.d.ts +79 -0
- package/src/libs/engine/src/validation/ValidationEngine.js +1150 -0
- package/src/libs/engine/src/validation/index.d.ts +3 -0
- package/src/libs/engine/src/validation/index.js +8 -0
- package/src/libs/renderer/src/a11y/diagram-outline.d.ts +93 -0
- package/src/libs/renderer/src/a11y/diagram-outline.js +0 -0
- package/src/libs/renderer/src/a11y/focus-containment.d.ts +90 -0
- package/src/libs/renderer/src/a11y/focus-containment.js +173 -0
- package/src/libs/renderer/src/a11y/graph-topology.d.ts +70 -0
- package/src/libs/renderer/src/a11y/graph-topology.js +0 -0
- package/src/libs/renderer/src/a11y/index.d.ts +26 -0
- package/src/libs/renderer/src/a11y/index.js +30 -0
- package/src/libs/renderer/src/a11y/live-region.d.ts +83 -0
- package/src/libs/renderer/src/a11y/live-region.js +170 -0
- package/src/libs/renderer/src/a11y/outline-view.d.ts +62 -0
- package/src/libs/renderer/src/a11y/outline-view.js +158 -0
- package/src/libs/renderer/src/a11y/reduced-motion.d.ts +48 -0
- package/src/libs/renderer/src/a11y/reduced-motion.js +223 -0
- package/src/libs/renderer/src/a11y/semantics.d.ts +76 -0
- package/src/libs/renderer/src/a11y/semantics.js +229 -0
- package/src/libs/renderer/src/canvas/canvas-context.d.ts +167 -0
- package/src/libs/renderer/src/canvas/canvas-context.js +267 -0
- package/src/libs/renderer/src/canvas/canvas-renderer.d.ts +194 -0
- package/src/libs/renderer/src/canvas/canvas-renderer.js +600 -0
- package/src/libs/renderer/src/canvas/dirty-region.d.ts +56 -0
- package/src/libs/renderer/src/canvas/dirty-region.js +171 -0
- package/src/libs/renderer/src/canvas/index.d.ts +16 -0
- package/src/libs/renderer/src/canvas/index.js +79 -0
- package/src/libs/renderer/src/canvas/path-geometry.d.ts +112 -0
- package/src/libs/renderer/src/canvas/path-geometry.js +673 -0
- package/src/libs/renderer/src/canvas/render-backend.d.ts +133 -0
- package/src/libs/renderer/src/canvas/render-backend.js +339 -0
- package/src/libs/renderer/src/canvas/style-resolution.d.ts +101 -0
- package/src/libs/renderer/src/canvas/style-resolution.js +466 -0
- package/src/libs/renderer/src/canvas/tier-policy.d.ts +33 -0
- package/src/libs/renderer/src/canvas/tier-policy.js +89 -0
- package/src/libs/renderer/src/canvas/vnode-painter.d.ts +154 -0
- package/src/libs/renderer/src/canvas/vnode-painter.js +649 -0
- package/src/libs/renderer/src/comments/comment-overlay.d.ts +56 -0
- package/src/libs/renderer/src/comments/comment-overlay.js +127 -0
- package/src/libs/renderer/src/comments/comment-panel.d.ts +45 -0
- package/src/libs/renderer/src/comments/comment-panel.js +287 -0
- package/src/libs/renderer/src/comments/comment-pins.d.ts +34 -0
- package/src/libs/renderer/src/comments/comment-pins.js +227 -0
- package/src/libs/renderer/src/comments/index.d.ts +3 -0
- package/src/libs/renderer/src/comments/index.js +17 -0
- package/src/libs/renderer/src/export/assets.d.ts +96 -0
- package/src/libs/renderer/src/export/assets.js +350 -0
- package/src/libs/renderer/src/export/batch.d.ts +49 -0
- package/src/libs/renderer/src/export/batch.js +95 -0
- package/src/libs/renderer/src/export/bounds.d.ts +81 -0
- package/src/libs/renderer/src/export/bounds.js +367 -0
- package/src/libs/renderer/src/export/capture-host.d.ts +39 -0
- package/src/libs/renderer/src/export/capture-host.js +1259 -0
- package/src/libs/renderer/src/export/custom-nodes.d.ts +88 -0
- package/src/libs/renderer/src/export/custom-nodes.js +237 -0
- package/src/libs/renderer/src/export/index.d.ts +14 -0
- package/src/libs/renderer/src/export/index.js +30 -0
- package/src/libs/renderer/src/export/node-raster.d.ts +60 -0
- package/src/libs/renderer/src/export/node-raster.js +161 -0
- package/src/libs/renderer/src/export/pagination.d.ts +116 -0
- package/src/libs/renderer/src/export/pagination.js +245 -0
- package/src/libs/renderer/src/export/pdf/flate.d.ts +13 -0
- package/src/libs/renderer/src/export/pdf/flate.js +287 -0
- package/src/libs/renderer/src/export/pdf/index.d.ts +4 -0
- package/src/libs/renderer/src/export/pdf/index.js +15 -0
- package/src/libs/renderer/src/export/pdf/pdf-export.d.ts +64 -0
- package/src/libs/renderer/src/export/pdf/pdf-export.js +1076 -0
- package/src/libs/renderer/src/export/pdf/pdf-path.d.ts +17 -0
- package/src/libs/renderer/src/export/pdf/pdf-path.js +85 -0
- package/src/libs/renderer/src/export/pdf/pdf-primitives.d.ts +115 -0
- package/src/libs/renderer/src/export/pdf/pdf-primitives.js +338 -0
- package/src/libs/renderer/src/export/pdf/png.d.ts +25 -0
- package/src/libs/renderer/src/export/pdf/png.js +596 -0
- package/src/libs/renderer/src/export/raster.d.ts +42 -0
- package/src/libs/renderer/src/export/raster.js +126 -0
- package/src/libs/renderer/src/export/round-trip.d.ts +83 -0
- package/src/libs/renderer/src/export/round-trip.js +432 -0
- package/src/libs/renderer/src/export/scope.d.ts +16 -0
- package/src/libs/renderer/src/export/scope.js +69 -0
- package/src/libs/renderer/src/export/style-flattener.d.ts +23 -0
- package/src/libs/renderer/src/export/style-flattener.js +144 -0
- package/src/libs/renderer/src/export/svg-export.d.ts +123 -0
- package/src/libs/renderer/src/export/svg-export.js +178 -0
- package/src/libs/renderer/src/export/vnode-serializer.d.ts +75 -0
- package/src/libs/renderer/src/export/vnode-serializer.js +344 -0
- package/src/libs/renderer/src/ext/capabilities.d.ts +178 -0
- package/src/libs/renderer/src/ext/capabilities.js +22 -0
- package/src/libs/renderer/src/ext/capability-factory.d.ts +44 -0
- package/src/libs/renderer/src/ext/capability-factory.js +194 -0
- package/src/libs/renderer/src/ext/components/attach.d.ts +66 -0
- package/src/libs/renderer/src/ext/components/attach.js +112 -0
- package/src/libs/renderer/src/ext/components/background.d.ts +84 -0
- package/src/libs/renderer/src/ext/components/background.js +202 -0
- package/src/libs/renderer/src/ext/components/controls.d.ts +49 -0
- package/src/libs/renderer/src/ext/components/controls.js +144 -0
- package/src/libs/renderer/src/ext/components/minimap.d.ts +78 -0
- package/src/libs/renderer/src/ext/components/minimap.js +326 -0
- package/src/libs/renderer/src/ext/diagram-registry.d.ts +109 -0
- package/src/libs/renderer/src/ext/diagram-registry.js +303 -0
- package/src/libs/renderer/src/ext/disposable.d.ts +51 -0
- package/src/libs/renderer/src/ext/disposable.js +104 -0
- package/src/libs/renderer/src/ext/extension-host.d.ts +144 -0
- package/src/libs/renderer/src/ext/extension-host.js +272 -0
- package/src/libs/renderer/src/ext/index.d.ts +62 -0
- package/src/libs/renderer/src/ext/index.js +91 -0
- package/src/libs/renderer/src/ext/link-pipeline.d.ts +195 -0
- package/src/libs/renderer/src/ext/link-pipeline.js +431 -0
- package/src/libs/renderer/src/ext/manifest.d.ts +73 -0
- package/src/libs/renderer/src/ext/manifest.js +149 -0
- package/src/libs/renderer/src/ext/node-component.d.ts +114 -0
- package/src/libs/renderer/src/ext/node-component.js +290 -0
- package/src/libs/renderer/src/ext/plugins-loader.d.ts +1 -0
- package/src/libs/renderer/src/ext/plugins-loader.js +18 -0
- package/src/libs/renderer/src/ext/portal.d.ts +129 -0
- package/src/libs/renderer/src/ext/portal.js +267 -0
- package/src/libs/renderer/src/ext/public-api.d.ts +101 -0
- package/src/libs/renderer/src/ext/public-api.js +201 -0
- package/src/libs/renderer/src/ext/registry-scope.d.ts +93 -0
- package/src/libs/renderer/src/ext/registry-scope.js +142 -0
- package/src/libs/renderer/src/ext/tools.d.ts +164 -0
- package/src/libs/renderer/src/ext/tools.js +170 -0
- package/src/libs/renderer/src/index.d.ts +34 -0
- package/src/libs/renderer/src/index.js +108 -0
- package/src/libs/renderer/src/instance/create-diagram.d.ts +385 -0
- package/src/libs/renderer/src/instance/create-diagram.js +1150 -0
- package/src/libs/renderer/src/instance/diagram-instance.d.ts +48 -0
- package/src/libs/renderer/src/instance/diagram-instance.js +51 -0
- package/src/libs/renderer/src/instance/dom-event-binder.d.ts +394 -0
- package/src/libs/renderer/src/instance/dom-event-binder.js +2104 -0
- package/src/libs/renderer/src/instance/index.d.ts +5 -0
- package/src/libs/renderer/src/instance/index.js +13 -0
- package/src/libs/renderer/src/instance/layers.d.ts +31 -0
- package/src/libs/renderer/src/instance/layers.js +43 -0
- package/src/libs/renderer/src/instance/model-input.d.ts +229 -0
- package/src/libs/renderer/src/instance/model-input.js +325 -0
- package/src/libs/renderer/src/instance/render-scheduler.d.ts +79 -0
- package/src/libs/renderer/src/instance/render-scheduler.js +96 -0
- package/src/libs/renderer/src/instance/wheel-scroll-yield.d.ts +38 -0
- package/src/libs/renderer/src/instance/wheel-scroll-yield.js +118 -0
- package/src/libs/renderer/src/interaction/ControlPointEditor.d.ts +160 -0
- package/src/libs/renderer/src/interaction/ControlPointEditor.js +360 -0
- package/src/libs/renderer/src/interaction/WaypointEditor.d.ts +133 -0
- package/src/libs/renderer/src/interaction/WaypointEditor.js +263 -0
- package/src/libs/renderer/src/interaction/highlighters.d.ts +88 -0
- package/src/libs/renderer/src/interaction/highlighters.js +212 -0
- package/src/libs/renderer/src/interaction/in-place-editor.d.ts +63 -0
- package/src/libs/renderer/src/interaction/in-place-editor.js +141 -0
- package/src/libs/renderer/src/interaction/index.d.ts +11 -0
- package/src/libs/renderer/src/interaction/index.js +29 -0
- package/src/libs/renderer/src/interaction/ink-overlay.d.ts +53 -0
- package/src/libs/renderer/src/interaction/ink-overlay.js +154 -0
- package/src/libs/renderer/src/interaction/interaction-controller.d.ts +555 -0
- package/src/libs/renderer/src/interaction/interaction-controller.js +1733 -0
- package/src/libs/renderer/src/interaction/keyboard-navigation.d.ts +223 -0
- package/src/libs/renderer/src/interaction/keyboard-navigation.js +885 -0
- package/src/libs/renderer/src/interaction/selection-tools.d.ts +343 -0
- package/src/libs/renderer/src/interaction/selection-tools.js +918 -0
- package/src/libs/renderer/src/interaction/snapping.d.ts +210 -0
- package/src/libs/renderer/src/interaction/snapping.js +569 -0
- package/src/libs/renderer/src/interaction/touch-gestures.d.ts +160 -0
- package/src/libs/renderer/src/interaction/touch-gestures.js +549 -0
- package/src/libs/renderer/src/interaction/whiteboard-tools.d.ts +171 -0
- package/src/libs/renderer/src/interaction/whiteboard-tools.js +476 -0
- package/src/libs/renderer/src/lazy/host-culling.d.ts +116 -0
- package/src/libs/renderer/src/lazy/host-culling.js +135 -0
- package/src/libs/renderer/src/lazy/index.d.ts +7 -0
- package/src/libs/renderer/src/lazy/index.js +28 -0
- package/src/libs/renderer/src/lazy/progressive-mounter.d.ts +80 -0
- package/src/libs/renderer/src/lazy/progressive-mounter.js +264 -0
- package/src/libs/renderer/src/lazy/types.d.ts +43 -0
- package/src/libs/renderer/src/lazy/types.js +14 -0
- package/src/libs/renderer/src/lazy/view-lifecycle.d.ts +97 -0
- package/src/libs/renderer/src/lazy/view-lifecycle.js +221 -0
- package/src/libs/renderer/src/perf/index.d.ts +2 -0
- package/src/libs/renderer/src/perf/index.js +7 -0
- package/src/libs/renderer/src/perf/perf-hud.d.ts +46 -0
- package/src/libs/renderer/src/perf/perf-hud.js +105 -0
- package/src/libs/renderer/src/perf/quality-governor.d.ts +77 -0
- package/src/libs/renderer/src/perf/quality-governor.js +154 -0
- package/src/libs/renderer/src/platform/index.d.ts +1 -0
- package/src/libs/renderer/src/platform/index.js +5 -0
- package/src/libs/renderer/src/platform/platform.d.ts +34 -0
- package/src/libs/renderer/src/platform/platform.js +64 -0
- package/src/libs/renderer/src/presence/bind-presence.d.ts +51 -0
- package/src/libs/renderer/src/presence/bind-presence.js +144 -0
- package/src/libs/renderer/src/presence/index.d.ts +4 -0
- package/src/libs/renderer/src/presence/index.js +18 -0
- package/src/libs/renderer/src/presence/presence-overlay.d.ts +121 -0
- package/src/libs/renderer/src/presence/presence-overlay.js +465 -0
- package/src/libs/renderer/src/presentation/index.d.ts +3 -0
- package/src/libs/renderer/src/presentation/index.js +14 -0
- package/src/libs/renderer/src/presentation/presentation.d.ts +94 -0
- package/src/libs/renderer/src/presentation/presentation.js +158 -0
- package/src/libs/renderer/src/presentation/viewport-channel.d.ts +78 -0
- package/src/libs/renderer/src/presentation/viewport-channel.js +86 -0
- package/src/libs/renderer/src/services/animation-lifecycle.d.ts +153 -0
- package/src/libs/renderer/src/services/animation-lifecycle.js +326 -0
- package/src/libs/renderer/src/services/animation-performance.service.d.ts +191 -0
- package/src/libs/renderer/src/services/animation-performance.service.js +371 -0
- package/src/libs/renderer/src/services/animation-sequencer.d.ts +226 -0
- package/src/libs/renderer/src/services/animation-sequencer.js +379 -0
- package/src/libs/renderer/src/services/animation.service.d.ts +182 -0
- package/src/libs/renderer/src/services/animation.service.js +858 -0
- package/src/libs/renderer/src/services/custom-animation-registry.d.ts +182 -0
- package/src/libs/renderer/src/services/custom-animation-registry.js +361 -0
- package/src/libs/renderer/src/ssr/index.d.ts +1 -0
- package/src/libs/renderer/src/ssr/index.js +6 -0
- package/src/libs/renderer/src/ssr/render-to-static.d.ts +91 -0
- package/src/libs/renderer/src/ssr/render-to-static.js +81 -0
- package/src/libs/renderer/src/svg/ArrowRenderer.d.ts +159 -0
- package/src/libs/renderer/src/svg/ArrowRenderer.js +723 -0
- package/src/libs/renderer/src/svg/JumpPointDetector.d.ts +79 -0
- package/src/libs/renderer/src/svg/JumpPointDetector.js +176 -0
- package/src/libs/renderer/src/svg/JumpPointRenderer.d.ts +59 -0
- package/src/libs/renderer/src/svg/JumpPointRenderer.js +309 -0
- package/src/libs/renderer/src/svg/LabelRenderer.d.ts +76 -0
- package/src/libs/renderer/src/svg/LabelRenderer.js +273 -0
- package/src/libs/renderer/src/svg/auto-size.d.ts +76 -0
- package/src/libs/renderer/src/svg/auto-size.js +142 -0
- package/src/libs/renderer/src/svg/channel-nudging.d.ts +34 -0
- package/src/libs/renderer/src/svg/channel-nudging.js +226 -0
- package/src/libs/renderer/src/svg/edge-optimizer.d.ts +228 -0
- package/src/libs/renderer/src/svg/edge-optimizer.js +606 -0
- package/src/libs/renderer/src/svg/edge-templates.d.ts +152 -0
- package/src/libs/renderer/src/svg/edge-templates.js +233 -0
- package/src/libs/renderer/src/svg/html-node.d.ts +50 -0
- package/src/libs/renderer/src/svg/html-node.js +214 -0
- package/src/libs/renderer/src/svg/index.d.ts +25 -0
- package/src/libs/renderer/src/svg/index.js +32 -0
- package/src/libs/renderer/src/svg/link-fanout.d.ts +127 -0
- package/src/libs/renderer/src/svg/link-fanout.js +333 -0
- package/src/libs/renderer/src/svg/link-hit-test.d.ts +142 -0
- package/src/libs/renderer/src/svg/link-hit-test.js +182 -0
- package/src/libs/renderer/src/svg/motion-tracker.d.ts +18 -0
- package/src/libs/renderer/src/svg/motion-tracker.js +71 -0
- package/src/libs/renderer/src/svg/node-sizing.d.ts +51 -0
- package/src/libs/renderer/src/svg/node-sizing.js +65 -0
- package/src/libs/renderer/src/svg/node-toolbar.d.ts +30 -0
- package/src/libs/renderer/src/svg/node-toolbar.js +45 -0
- package/src/libs/renderer/src/svg/notation-shapes.d.ts +2 -0
- package/src/libs/renderer/src/svg/notation-shapes.js +126 -0
- package/src/libs/renderer/src/svg/paint-servers.d.ts +49 -0
- package/src/libs/renderer/src/svg/paint-servers.js +225 -0
- package/src/libs/renderer/src/svg/panel.d.ts +115 -0
- package/src/libs/renderer/src/svg/panel.js +353 -0
- package/src/libs/renderer/src/svg/path-outline.d.ts +35 -0
- package/src/libs/renderer/src/svg/path-outline.js +134 -0
- package/src/libs/renderer/src/svg/port-glyph.d.ts +27 -0
- package/src/libs/renderer/src/svg/port-glyph.js +97 -0
- package/src/libs/renderer/src/svg/port-label.d.ts +74 -0
- package/src/libs/renderer/src/svg/port-label.js +201 -0
- package/src/libs/renderer/src/svg/port-layout.d.ts +50 -0
- package/src/libs/renderer/src/svg/port-layout.js +212 -0
- package/src/libs/renderer/src/svg/port-positioning.d.ts +33 -0
- package/src/libs/renderer/src/svg/port-positioning.js +101 -0
- package/src/libs/renderer/src/svg/port-spots.d.ts +69 -0
- package/src/libs/renderer/src/svg/port-spots.js +154 -0
- package/src/libs/renderer/src/svg/route-memo.d.ts +63 -0
- package/src/libs/renderer/src/svg/route-memo.js +206 -0
- package/src/libs/renderer/src/svg/route-solver-bridge.d.ts +48 -0
- package/src/libs/renderer/src/svg/route-solver-bridge.js +151 -0
- package/src/libs/renderer/src/svg/shape-registry.d.ts +189 -0
- package/src/libs/renderer/src/svg/shape-registry.js +1104 -0
- package/src/libs/renderer/src/svg/stroke-layer.d.ts +36 -0
- package/src/libs/renderer/src/svg/stroke-layer.js +183 -0
- package/src/libs/renderer/src/svg/svg-renderer.d.ts +1737 -0
- package/src/libs/renderer/src/svg/svg-renderer.js +7772 -0
- package/src/libs/renderer/src/svg/text-block.d.ts +54 -0
- package/src/libs/renderer/src/svg/text-block.js +171 -0
- package/src/libs/renderer/src/themes/color-mode.d.ts +81 -0
- package/src/libs/renderer/src/themes/color-mode.js +158 -0
- package/src/libs/renderer/src/themes/contrast.d.ts +67 -0
- package/src/libs/renderer/src/themes/contrast.js +215 -0
- package/src/libs/renderer/src/themes/default-dark-theme.d.ts +6 -0
- package/src/libs/renderer/src/themes/default-dark-theme.js +126 -0
- package/src/libs/renderer/src/themes/default-light-theme.d.ts +6 -0
- package/src/libs/renderer/src/themes/default-light-theme.js +168 -0
- package/src/libs/renderer/src/themes/default-theme-set.d.ts +10 -0
- package/src/libs/renderer/src/themes/default-theme-set.js +25 -0
- package/src/libs/renderer/src/themes/high-contrast-theme.d.ts +5 -0
- package/src/libs/renderer/src/themes/high-contrast-theme.js +170 -0
- package/src/libs/renderer/src/themes/index.d.ts +22 -0
- package/src/libs/renderer/src/themes/index.js +93 -0
- package/src/libs/renderer/src/themes/style-cascade.d.ts +23 -0
- package/src/libs/renderer/src/themes/style-cascade.js +194 -0
- package/src/libs/renderer/src/themes/style-registry.d.ts +40 -0
- package/src/libs/renderer/src/themes/style-registry.js +129 -0
- package/src/libs/renderer/src/themes/theme-a11y.d.ts +65 -0
- package/src/libs/renderer/src/themes/theme-a11y.js +256 -0
- package/src/libs/renderer/src/themes/theme-css.d.ts +30 -0
- package/src/libs/renderer/src/themes/theme-css.js +304 -0
- package/src/libs/renderer/src/themes/theme-ref.d.ts +63 -0
- package/src/libs/renderer/src/themes/theme-ref.js +206 -0
- package/src/libs/renderer/src/themes/theme-vars.d.ts +49 -0
- package/src/libs/renderer/src/themes/theme-vars.js +112 -0
- package/src/libs/renderer/src/themes/token-bridge.d.ts +62 -0
- package/src/libs/renderer/src/themes/token-bridge.js +354 -0
- package/src/libs/renderer/src/types/geometry.types.d.ts +10 -0
- package/src/libs/renderer/src/types/geometry.types.js +3 -0
- package/src/libs/renderer/src/types/index.d.ts +5 -0
- package/src/libs/renderer/src/types/index.js +14 -0
- package/src/libs/renderer/src/types/property-schema/conditions.d.ts +96 -0
- package/src/libs/renderer/src/types/property-schema/conditions.js +8 -0
- package/src/libs/renderer/src/types/property-schema/editor-types.d.ts +310 -0
- package/src/libs/renderer/src/types/property-schema/editor-types.js +8 -0
- package/src/libs/renderer/src/types/property-schema/groups.d.ts +58 -0
- package/src/libs/renderer/src/types/property-schema/groups.js +8 -0
- package/src/libs/renderer/src/types/property-schema/index.d.ts +101 -0
- package/src/libs/renderer/src/types/property-schema/index.js +98 -0
- package/src/libs/renderer/src/types/property-schema/property-definition.d.ts +117 -0
- package/src/libs/renderer/src/types/property-schema/property-definition.js +8 -0
- package/src/libs/renderer/src/types/property-schema/schema.d.ts +108 -0
- package/src/libs/renderer/src/types/property-schema/schema.js +8 -0
- package/src/libs/renderer/src/types/property-schema/validation.d.ts +181 -0
- package/src/libs/renderer/src/types/property-schema/validation.js +8 -0
- package/src/libs/renderer/src/types/renderer.interface.d.ts +623 -0
- package/src/libs/renderer/src/types/renderer.interface.js +3 -0
- package/src/libs/renderer/src/types/theme.types.d.ts +305 -0
- package/src/libs/renderer/src/types/theme.types.js +3 -0
- package/src/libs/renderer/src/types/vnode.types.d.ts +139 -0
- package/src/libs/renderer/src/types/vnode.types.js +3 -0
- package/src/libs/renderer/src/utils/animation-presets.d.ts +310 -0
- package/src/libs/renderer/src/utils/animation-presets.js +406 -0
- package/src/libs/renderer/src/utils/animation-priority.d.ts +118 -0
- package/src/libs/renderer/src/utils/animation-priority.js +258 -0
- package/src/libs/renderer/src/utils/animation-utils.d.ts +159 -0
- package/src/libs/renderer/src/utils/animation-utils.js +323 -0
- package/src/libs/renderer/src/utils/lru-cache.d.ts +34 -0
- package/src/libs/renderer/src/utils/lru-cache.js +72 -0
- package/src/libs/renderer/src/viewport/index.d.ts +1 -0
- package/src/libs/renderer/src/viewport/index.js +6 -0
- package/src/libs/renderer/src/viewport/viewport-controller.d.ts +198 -0
- package/src/libs/renderer/src/viewport/viewport-controller.js +315 -0
- package/src/libs/renderer/src/vnode/container-id-generator.d.ts +94 -0
- package/src/libs/renderer/src/vnode/container-id-generator.js +110 -0
- package/src/libs/renderer/src/vnode/foreign-object.d.ts +157 -0
- package/src/libs/renderer/src/vnode/foreign-object.js +167 -0
- package/src/libs/renderer/src/vnode/index.d.ts +56 -0
- package/src/libs/renderer/src/vnode/index.js +78 -0
- package/src/libs/renderer/src/vnode/patch.d.ts +189 -0
- package/src/libs/renderer/src/vnode/patch.js +564 -0
- package/src/index.js.map +0 -1
- package/src/lib/dashboard-kit/dashboard.js.map +0 -1
- package/src/lib/dashboard-kit/grid-binder.js.map +0 -1
- package/src/lib/dashboard-kit/grid-mapping.js.map +0 -1
- package/src/lib/dashboard-kit/index.js.map +0 -1
- package/src/lib/dashboard-kit/styles.js.map +0 -1
- package/src/lib/dashboard-kit/widgets.js.map +0 -1
- package/src/lib/diagram-kit/card.js.map +0 -1
- package/src/lib/diagram-kit/editing.js.map +0 -1
- package/src/lib/diagram-kit/er.js.map +0 -1
- package/src/lib/diagram-kit/handles.js.map +0 -1
- package/src/lib/diagram-kit/index.js.map +0 -1
- package/src/lib/diagram-kit/rows.js.map +0 -1
- 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/update.js.map +0 -1
- package/src/lib/grafloria-flow-element.js.map +0 -1
- package/src/lib/grafloria.js.map +0 -1
- package/src/lib/load.js.map +0 -1
- package/src/lib/node-type-registry.js.map +0 -1
- package/src/lib/stencil-kit/builders.js.map +0 -1
- package/src/lib/stencil-kit/card-builders.js.map +0 -1
- package/src/lib/stencil-kit/index.js.map +0 -1
- package/src/lib/stencil-kit/palette.js.map +0 -1
- package/src/lib/stencil-kit/shape-data.js.map +0 -1
- package/src/lib/stencil-kit/styles.js.map +0 -1
|
@@ -0,0 +1,1104 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
// Shape registry + geometry contract (Nodes & shapes foundation)
|
|
3
|
+
//
|
|
4
|
+
// Historically the five built-in node shapes (rect, circle, ellipse, diamond,
|
|
5
|
+
// hexagon) were hardcoded across FIVE parallel switch statements:
|
|
6
|
+
// - SVGRenderer.renderNodeShape (node body)
|
|
7
|
+
// - SVGRenderer.renderSelectionHighlight
|
|
8
|
+
// - SVGRenderer.renderShadow
|
|
9
|
+
// - SVGRenderer.shapeEdgePoint (smart-connection boundary)
|
|
10
|
+
// - getPortPositionForShape (port-positioning.ts)
|
|
11
|
+
// Adding a shape meant editing every switch in lock-step.
|
|
12
|
+
//
|
|
13
|
+
// This module introduces ONE `ShapeDefinition` geometry contract and a
|
|
14
|
+
// registry so every shape lives in a single place. The five render sites now
|
|
15
|
+
// consult the registry instead of switching on `shapeConfig.type`.
|
|
16
|
+
//
|
|
17
|
+
// GEOMETRY CONTRACT — each shape exposes just three geometry primitives:
|
|
18
|
+
// 1. outline(w, h, transform) — the shape's outline as an SVG element +
|
|
19
|
+
// geometry props. A single `transform` (grow outward by `grow` px,
|
|
20
|
+
// translate by dx/dy, optional corner radius) drives ALL THREE render
|
|
21
|
+
// sites: the node body (identity transform), the selection highlight
|
|
22
|
+
// (grow = padding) and the drop shadow (dx = dy = offset). This is why
|
|
23
|
+
// "selection + shadow reuse outline".
|
|
24
|
+
// 2. boundaryPoint(rect, side, cross) — the point on the outline used by
|
|
25
|
+
// smart connection points; returns null to fall back to the bbox edge.
|
|
26
|
+
// 3. portAnchor(w, h, side, rank, count) — the local-space port position.
|
|
27
|
+
//
|
|
28
|
+
// The exact rendered output of the five built-ins is preserved bit-for-bit;
|
|
29
|
+
// this is a structural refactor, not a visual change.
|
|
30
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
31
|
+
exports.registerShape = registerShape;
|
|
32
|
+
exports.registerPathShape = registerPathShape;
|
|
33
|
+
exports.buildPathShapeDefinition = buildPathShapeDefinition;
|
|
34
|
+
exports.getShape = getShape;
|
|
35
|
+
exports.hasShape = hasShape;
|
|
36
|
+
exports.listShapes = listShapes;
|
|
37
|
+
exports.unregisterShape = unregisterShape;
|
|
38
|
+
exports.getShapeDefinition = getShapeDefinition;
|
|
39
|
+
exports.getShapeRegistryVersion = getShapeRegistryVersion;
|
|
40
|
+
exports.onShapeRegistryChange = onShapeRegistryChange;
|
|
41
|
+
exports.notifyShapeRegistered = notifyShapeRegistered;
|
|
42
|
+
exports.getInnerRect = getInnerRect;
|
|
43
|
+
exports.defaultInnerRect = defaultInnerRect;
|
|
44
|
+
exports.buildShapeBody = buildShapeBody;
|
|
45
|
+
exports.buildShapeSelection = buildShapeSelection;
|
|
46
|
+
exports.buildShapeShadow = buildShapeShadow;
|
|
47
|
+
const tslib_1 = require("tslib");
|
|
48
|
+
const path_outline_1 = require("./path-outline");
|
|
49
|
+
const path_geometry_1 = require("../canvas/path-geometry");
|
|
50
|
+
const registry_scope_1 = require("../ext/registry-scope");
|
|
51
|
+
// ---------------------------------------------------------------------------
|
|
52
|
+
// Shared geometry helpers (extracted verbatim from the original switch sites)
|
|
53
|
+
// ---------------------------------------------------------------------------
|
|
54
|
+
function fmt(verts) {
|
|
55
|
+
return verts.map((v) => `${v.x},${v.y}`).join(' ');
|
|
56
|
+
}
|
|
57
|
+
/** Even fraction along an edge: 1 port → 1/2; 2 ports → 1/3, 2/3; … */
|
|
58
|
+
function edgeFraction(rank, count) {
|
|
59
|
+
return (rank + 1) / (count + 1);
|
|
60
|
+
}
|
|
61
|
+
/** Base perimeter angle for each side (radians) — circle/ellipse anchors. */
|
|
62
|
+
const SIDE_ANGLES = {
|
|
63
|
+
top: -Math.PI / 2,
|
|
64
|
+
right: 0,
|
|
65
|
+
bottom: Math.PI / 2,
|
|
66
|
+
left: Math.PI,
|
|
67
|
+
};
|
|
68
|
+
/**
|
|
69
|
+
* Symmetric angular fan around the side's base angle: a single port sits on
|
|
70
|
+
* the base angle; additional ports spread ±15° steps, centered.
|
|
71
|
+
*/
|
|
72
|
+
function fanAngle(side, rank, count) {
|
|
73
|
+
const spacing = Math.PI / 12; // 15 degrees between adjacent ports
|
|
74
|
+
return SIDE_ANGLES[side] + (rank - (count - 1) / 2) * spacing;
|
|
75
|
+
}
|
|
76
|
+
/**
|
|
77
|
+
* Analytic projection onto an ellipse/circle outline for a smart attachment.
|
|
78
|
+
* Mirrors the original shapeEdgePoint ellipse/circle branch exactly.
|
|
79
|
+
*/
|
|
80
|
+
function ellipseBoundaryPoint(rect, side, cross, rx, ry) {
|
|
81
|
+
const cx = rect.x + rect.w / 2;
|
|
82
|
+
const cy = rect.y + rect.h / 2;
|
|
83
|
+
const vertical = side === 'top' || side === 'bottom';
|
|
84
|
+
const clampv = (v, lo, hi) => Math.max(lo, Math.min(hi, v));
|
|
85
|
+
if (vertical) {
|
|
86
|
+
const x = clampv(cross, cx - rx * 0.9, cx + rx * 0.9);
|
|
87
|
+
const dy = ry * Math.sqrt(Math.max(0, 1 - Math.pow(((x - cx) / rx), 2)));
|
|
88
|
+
return { x, y: side === 'top' ? cy - dy : cy + dy };
|
|
89
|
+
}
|
|
90
|
+
const y = clampv(cross, cy - ry * 0.9, cy + ry * 0.9);
|
|
91
|
+
const dx = rx * Math.sqrt(Math.max(0, 1 - Math.pow(((y - cy) / ry), 2)));
|
|
92
|
+
return { x: side === 'left' ? cx - dx : cx + dx, y };
|
|
93
|
+
}
|
|
94
|
+
/**
|
|
95
|
+
* Intersect the outline polygon with the axis line at `cross`, keeping the
|
|
96
|
+
* intersection that belongs to the requested side. Mirrors the original
|
|
97
|
+
* shapeEdgePoint hexagon/diamond branch exactly (returns null at a degenerate
|
|
98
|
+
* vertex tangent so the caller falls through to the box edge).
|
|
99
|
+
*/
|
|
100
|
+
function polygonBoundaryPoint(verts, side, cross) {
|
|
101
|
+
const vertical = side === 'top' || side === 'bottom';
|
|
102
|
+
let best = null;
|
|
103
|
+
for (let i = 0; i < verts.length; i++) {
|
|
104
|
+
const a = verts[i];
|
|
105
|
+
const b = verts[(i + 1) % verts.length];
|
|
106
|
+
if (vertical) {
|
|
107
|
+
const lo = Math.min(a.x, b.x);
|
|
108
|
+
const hi = Math.max(a.x, b.x);
|
|
109
|
+
if (cross < lo || cross > hi || lo === hi)
|
|
110
|
+
continue;
|
|
111
|
+
const y = a.y + ((cross - a.x) / (b.x - a.x)) * (b.y - a.y);
|
|
112
|
+
if (best === null || (side === 'top' ? y < best : y > best))
|
|
113
|
+
best = y;
|
|
114
|
+
}
|
|
115
|
+
else {
|
|
116
|
+
const lo = Math.min(a.y, b.y);
|
|
117
|
+
const hi = Math.max(a.y, b.y);
|
|
118
|
+
if (cross < lo || cross > hi || lo === hi)
|
|
119
|
+
continue;
|
|
120
|
+
const x = a.x + ((cross - a.y) / (b.y - a.y)) * (b.x - a.x);
|
|
121
|
+
if (best === null || (side === 'left' ? x < best : x > best))
|
|
122
|
+
best = x;
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
if (best !== null) {
|
|
126
|
+
return vertical ? { x: cross, y: best } : { x: best, y: cross };
|
|
127
|
+
}
|
|
128
|
+
return null;
|
|
129
|
+
}
|
|
130
|
+
// ---------------------------------------------------------------------------
|
|
131
|
+
// Built-in shape definitions (existing geometry — extracted, not invented)
|
|
132
|
+
// ---------------------------------------------------------------------------
|
|
133
|
+
const RectShape = {
|
|
134
|
+
type: 'rect',
|
|
135
|
+
styleMode: 'inline',
|
|
136
|
+
bodyDeferGeomKeys: ['rx', 'ry'],
|
|
137
|
+
outline(width, height, t = {}) {
|
|
138
|
+
var _a, _b, _c;
|
|
139
|
+
const grow = (_a = t.grow) !== null && _a !== void 0 ? _a : 0;
|
|
140
|
+
const dx = (_b = t.dx) !== null && _b !== void 0 ? _b : 0;
|
|
141
|
+
const dy = (_c = t.dy) !== null && _c !== void 0 ? _c : 0;
|
|
142
|
+
const geom = {
|
|
143
|
+
x: -grow + dx,
|
|
144
|
+
y: -grow + dy,
|
|
145
|
+
width: width + 2 * grow,
|
|
146
|
+
height: height + 2 * grow,
|
|
147
|
+
};
|
|
148
|
+
if (t.radius !== undefined && (t.radiusAlways || t.radius)) {
|
|
149
|
+
geom['rx'] = t.radius;
|
|
150
|
+
if (t.radiusY)
|
|
151
|
+
geom['ry'] = t.radius;
|
|
152
|
+
}
|
|
153
|
+
return { el: 'rect', geom };
|
|
154
|
+
},
|
|
155
|
+
boundaryPoint() {
|
|
156
|
+
// Rects use the bounding-box edge — handled by the caller's fallback.
|
|
157
|
+
return null;
|
|
158
|
+
},
|
|
159
|
+
portAnchor(width, height, side, rank, count) {
|
|
160
|
+
const f = edgeFraction(rank, count);
|
|
161
|
+
switch (side) {
|
|
162
|
+
case 'left':
|
|
163
|
+
return { x: 0, y: height * f };
|
|
164
|
+
case 'right':
|
|
165
|
+
return { x: width, y: height * f };
|
|
166
|
+
case 'top':
|
|
167
|
+
return { x: width * f, y: 0 };
|
|
168
|
+
case 'bottom':
|
|
169
|
+
return { x: width * f, y: height };
|
|
170
|
+
default:
|
|
171
|
+
return { x: 0, y: 0 };
|
|
172
|
+
}
|
|
173
|
+
},
|
|
174
|
+
};
|
|
175
|
+
const CircleShape = {
|
|
176
|
+
type: 'circle',
|
|
177
|
+
styleMode: 'inline',
|
|
178
|
+
// rx/ry are rect corner-radius styles — meaningless (and confusing) on a circle
|
|
179
|
+
bodyStripKeys: ['rx', 'ry'],
|
|
180
|
+
outline(width, height, t = {}) {
|
|
181
|
+
var _a, _b, _c;
|
|
182
|
+
const grow = (_a = t.grow) !== null && _a !== void 0 ? _a : 0;
|
|
183
|
+
const dx = (_b = t.dx) !== null && _b !== void 0 ? _b : 0;
|
|
184
|
+
const dy = (_c = t.dy) !== null && _c !== void 0 ? _c : 0;
|
|
185
|
+
const radius = Math.min(width, height) / 2 + grow;
|
|
186
|
+
return {
|
|
187
|
+
el: 'circle',
|
|
188
|
+
geom: { cx: width / 2 + dx, cy: height / 2 + dy, r: radius },
|
|
189
|
+
};
|
|
190
|
+
},
|
|
191
|
+
boundaryPoint(rect, side, cross) {
|
|
192
|
+
const r = Math.min(rect.w, rect.h) / 2;
|
|
193
|
+
return ellipseBoundaryPoint(rect, side, cross, r, r);
|
|
194
|
+
},
|
|
195
|
+
portAnchor(width, height, side, rank, count) {
|
|
196
|
+
const radius = Math.min(width, height) / 2;
|
|
197
|
+
const cx = width / 2;
|
|
198
|
+
const cy = height / 2;
|
|
199
|
+
const angle = fanAngle(side, rank, count);
|
|
200
|
+
return { x: cx + radius * Math.cos(angle), y: cy + radius * Math.sin(angle) };
|
|
201
|
+
},
|
|
202
|
+
// A square inscribed in the circle: side = 2r/√2 ≈ 0.707·(2r). Use 0.6·min
|
|
203
|
+
// as a conservative label box so text never bleeds past the curve.
|
|
204
|
+
innerRect(width, height) {
|
|
205
|
+
const d = Math.min(width, height);
|
|
206
|
+
return { x: (width - 0.6 * d) / 2, y: (height - 0.6 * d) / 2, w: 0.6 * d, h: 0.6 * d };
|
|
207
|
+
},
|
|
208
|
+
};
|
|
209
|
+
const EllipseShape = {
|
|
210
|
+
type: 'ellipse',
|
|
211
|
+
// Ellipse spreads node styles directly; geometry is merged AFTER so a rect
|
|
212
|
+
// corner-radius `rx` (borderRadius) in the styles never wins over rx = w/2.
|
|
213
|
+
styleMode: 'spread',
|
|
214
|
+
outline(width, height, t = {}) {
|
|
215
|
+
var _a, _b, _c;
|
|
216
|
+
const grow = (_a = t.grow) !== null && _a !== void 0 ? _a : 0;
|
|
217
|
+
const dx = (_b = t.dx) !== null && _b !== void 0 ? _b : 0;
|
|
218
|
+
const dy = (_c = t.dy) !== null && _c !== void 0 ? _c : 0;
|
|
219
|
+
return {
|
|
220
|
+
el: 'ellipse',
|
|
221
|
+
geom: {
|
|
222
|
+
cx: width / 2 + dx,
|
|
223
|
+
cy: height / 2 + dy,
|
|
224
|
+
rx: width / 2 + grow,
|
|
225
|
+
ry: height / 2 + grow,
|
|
226
|
+
},
|
|
227
|
+
};
|
|
228
|
+
},
|
|
229
|
+
boundaryPoint(rect, side, cross) {
|
|
230
|
+
return ellipseBoundaryPoint(rect, side, cross, rect.w / 2, rect.h / 2);
|
|
231
|
+
},
|
|
232
|
+
portAnchor(width, height, side, rank, count) {
|
|
233
|
+
const rx = width / 2;
|
|
234
|
+
const ry = height / 2;
|
|
235
|
+
const cx = width / 2;
|
|
236
|
+
const cy = height / 2;
|
|
237
|
+
const angle = fanAngle(side, rank, count);
|
|
238
|
+
return { x: cx + rx * Math.cos(angle), y: cy + ry * Math.sin(angle) };
|
|
239
|
+
},
|
|
240
|
+
// ~0.6·w × ~0.6·h centered box (inscribed-rectangle approximation).
|
|
241
|
+
innerRect(width, height) {
|
|
242
|
+
return { x: 0.2 * width, y: 0.2 * height, w: 0.6 * width, h: 0.6 * height };
|
|
243
|
+
},
|
|
244
|
+
};
|
|
245
|
+
function diamondVerts(width, height, t) {
|
|
246
|
+
var _a, _b, _c;
|
|
247
|
+
// Diamond of the reference box expanded by `grow` on every side, translated
|
|
248
|
+
// by (dx, dy). Center is invariant under grow, so vertices push outward.
|
|
249
|
+
const grow = (_a = t.grow) !== null && _a !== void 0 ? _a : 0;
|
|
250
|
+
const dx = (_b = t.dx) !== null && _b !== void 0 ? _b : 0;
|
|
251
|
+
const dy = (_c = t.dy) !== null && _c !== void 0 ? _c : 0;
|
|
252
|
+
const x0 = -grow + dx;
|
|
253
|
+
const y0 = -grow + dy;
|
|
254
|
+
const w = width + 2 * grow;
|
|
255
|
+
const h = height + 2 * grow;
|
|
256
|
+
const cx = x0 + w / 2;
|
|
257
|
+
const cy = y0 + h / 2;
|
|
258
|
+
return [
|
|
259
|
+
{ x: cx, y: y0 }, // top
|
|
260
|
+
{ x: x0 + w, y: cy }, // right
|
|
261
|
+
{ x: cx, y: y0 + h }, // bottom
|
|
262
|
+
{ x: x0, y: cy }, // left
|
|
263
|
+
];
|
|
264
|
+
}
|
|
265
|
+
const DiamondShape = {
|
|
266
|
+
type: 'diamond',
|
|
267
|
+
styleMode: 'inline',
|
|
268
|
+
outline(width, height, t = {}) {
|
|
269
|
+
const verts = diamondVerts(width, height, t);
|
|
270
|
+
return { el: 'polygon', geom: { points: fmt(verts) }, verts };
|
|
271
|
+
},
|
|
272
|
+
boundaryPoint(rect, side, cross) {
|
|
273
|
+
const local = diamondVerts(rect.w, rect.h, {});
|
|
274
|
+
const world = local.map((v) => ({ x: v.x + rect.x, y: v.y + rect.y }));
|
|
275
|
+
return polygonBoundaryPoint(world, side, cross);
|
|
276
|
+
},
|
|
277
|
+
portAnchor(width, height, side) {
|
|
278
|
+
const cx = width / 2;
|
|
279
|
+
const cy = height / 2;
|
|
280
|
+
const vertices = {
|
|
281
|
+
top: { x: cx, y: 0 },
|
|
282
|
+
right: { x: width, y: cy },
|
|
283
|
+
bottom: { x: cx, y: height },
|
|
284
|
+
left: { x: 0, y: cy },
|
|
285
|
+
};
|
|
286
|
+
return vertices[side];
|
|
287
|
+
},
|
|
288
|
+
// The largest axis-aligned rectangle inside a diamond is half its span; use
|
|
289
|
+
// ~0.5 so text clears the sloped edges (documented approximation).
|
|
290
|
+
innerRect(width, height) {
|
|
291
|
+
return { x: 0.25 * width, y: 0.25 * height, w: 0.5 * width, h: 0.5 * height };
|
|
292
|
+
},
|
|
293
|
+
};
|
|
294
|
+
function hexagonVerts(width, height, t) {
|
|
295
|
+
var _a, _b, _c;
|
|
296
|
+
// Flat-top hexagon. The horizontal 25% offset stays keyed to the ORIGINAL
|
|
297
|
+
// width; `grow` pushes each vertex outward and (dx, dy) translates. This
|
|
298
|
+
// matches the original renderHexagonShape / selection / shadow geometry.
|
|
299
|
+
const grow = (_a = t.grow) !== null && _a !== void 0 ? _a : 0;
|
|
300
|
+
const dx = (_b = t.dx) !== null && _b !== void 0 ? _b : 0;
|
|
301
|
+
const dy = (_c = t.dy) !== null && _c !== void 0 ? _c : 0;
|
|
302
|
+
const ox = width * 0.25;
|
|
303
|
+
const cy = height / 2;
|
|
304
|
+
return [
|
|
305
|
+
{ x: ox - grow + dx, y: -grow + dy }, // top-left
|
|
306
|
+
{ x: width - ox + grow + dx, y: -grow + dy }, // top-right
|
|
307
|
+
{ x: width + grow + dx, y: cy + dy }, // right
|
|
308
|
+
{ x: width - ox + grow + dx, y: height + grow + dy }, // bottom-right
|
|
309
|
+
{ x: ox - grow + dx, y: height + grow + dy }, // bottom-left
|
|
310
|
+
{ x: -grow + dx, y: cy + dy }, // left
|
|
311
|
+
];
|
|
312
|
+
}
|
|
313
|
+
const HexagonShape = {
|
|
314
|
+
type: 'hexagon',
|
|
315
|
+
// Hexagon spreads node styles directly (historical parity with ellipse).
|
|
316
|
+
styleMode: 'spread',
|
|
317
|
+
outline(width, height, t = {}) {
|
|
318
|
+
const verts = hexagonVerts(width, height, t);
|
|
319
|
+
return { el: 'polygon', geom: { points: fmt(verts) }, verts };
|
|
320
|
+
},
|
|
321
|
+
boundaryPoint(rect, side, cross) {
|
|
322
|
+
const local = hexagonVerts(rect.w, rect.h, {});
|
|
323
|
+
const world = local.map((v) => ({ x: v.x + rect.x, y: v.y + rect.y }));
|
|
324
|
+
return polygonBoundaryPoint(world, side, cross);
|
|
325
|
+
},
|
|
326
|
+
portAnchor(width, height, side, rank, count) {
|
|
327
|
+
const cy = height / 2;
|
|
328
|
+
const edgeStart = width * 0.25;
|
|
329
|
+
const edgeSpan = width * 0.5;
|
|
330
|
+
switch (side) {
|
|
331
|
+
case 'top':
|
|
332
|
+
return { x: edgeStart + edgeSpan * edgeFraction(rank, count), y: 0 };
|
|
333
|
+
case 'bottom':
|
|
334
|
+
return { x: edgeStart + edgeSpan * edgeFraction(rank, count), y: height };
|
|
335
|
+
case 'right':
|
|
336
|
+
return { x: width, y: cy };
|
|
337
|
+
case 'left':
|
|
338
|
+
default:
|
|
339
|
+
return { x: 0, y: cy };
|
|
340
|
+
}
|
|
341
|
+
},
|
|
342
|
+
};
|
|
343
|
+
function boxOf(width, height, t) {
|
|
344
|
+
var _a, _b, _c;
|
|
345
|
+
const grow = (_a = t.grow) !== null && _a !== void 0 ? _a : 0;
|
|
346
|
+
return { x0: -grow + ((_b = t.dx) !== null && _b !== void 0 ? _b : 0), y0: -grow + ((_c = t.dy) !== null && _c !== void 0 ? _c : 0), w: width + 2 * grow, h: height + 2 * grow };
|
|
347
|
+
}
|
|
348
|
+
/** Round to 3dp so path/point strings stay compact and diff-stable. */
|
|
349
|
+
function r3(n) {
|
|
350
|
+
return Math.round(n * 1000) / 1000;
|
|
351
|
+
}
|
|
352
|
+
/** Clamp a scalar into [lo, hi]. */
|
|
353
|
+
function clampN(v, lo, hi) {
|
|
354
|
+
return Math.max(lo, Math.min(hi, v));
|
|
355
|
+
}
|
|
356
|
+
/**
|
|
357
|
+
* Port anchor on a polygon's REAL edge: intersect the outline with the center
|
|
358
|
+
* line at the even edge-fraction; fall back to the box edge at a vertex tangent.
|
|
359
|
+
*/
|
|
360
|
+
function polygonPortAnchor(verts, width, height, side, rank, count) {
|
|
361
|
+
const f = edgeFraction(rank, count);
|
|
362
|
+
const cross = side === 'top' || side === 'bottom' ? width * f : height * f;
|
|
363
|
+
const p = polygonBoundaryPoint(verts, side, cross);
|
|
364
|
+
if (p)
|
|
365
|
+
return p;
|
|
366
|
+
return side === 'left'
|
|
367
|
+
? { x: 0, y: cross }
|
|
368
|
+
: side === 'right'
|
|
369
|
+
? { x: width, y: cross }
|
|
370
|
+
: side === 'top'
|
|
371
|
+
? { x: cross, y: 0 }
|
|
372
|
+
: { x: cross, y: height };
|
|
373
|
+
}
|
|
374
|
+
/** Rect-style box-edge port anchor (used by the ~rectangular path shapes). */
|
|
375
|
+
function boxPortAnchor(width, height, side, rank, count) {
|
|
376
|
+
const f = edgeFraction(rank, count);
|
|
377
|
+
switch (side) {
|
|
378
|
+
case 'left':
|
|
379
|
+
return { x: 0, y: height * f };
|
|
380
|
+
case 'right':
|
|
381
|
+
return { x: width, y: height * f };
|
|
382
|
+
case 'top':
|
|
383
|
+
return { x: width * f, y: 0 };
|
|
384
|
+
default:
|
|
385
|
+
return { x: width * f, y: height };
|
|
386
|
+
}
|
|
387
|
+
}
|
|
388
|
+
/** Build a straight-edged (polygon) shape from a box-parameterized vertex list. */
|
|
389
|
+
function polygonShape(type, vertsFn, opts = {}) {
|
|
390
|
+
var _a;
|
|
391
|
+
return {
|
|
392
|
+
type,
|
|
393
|
+
styleMode: (_a = opts.styleMode) !== null && _a !== void 0 ? _a : 'inline',
|
|
394
|
+
outline(width, height, t = {}) {
|
|
395
|
+
const verts = vertsFn(boxOf(width, height, t));
|
|
396
|
+
return { el: 'polygon', geom: { points: fmt(verts) }, verts };
|
|
397
|
+
},
|
|
398
|
+
boundaryPoint(rect, side, cross) {
|
|
399
|
+
const local = vertsFn({ x0: 0, y0: 0, w: rect.w, h: rect.h });
|
|
400
|
+
const world = local.map((v) => ({ x: v.x + rect.x, y: v.y + rect.y }));
|
|
401
|
+
return polygonBoundaryPoint(world, side, cross);
|
|
402
|
+
},
|
|
403
|
+
portAnchor(width, height, side, rank, count) {
|
|
404
|
+
if (opts.portAnchor)
|
|
405
|
+
return opts.portAnchor(width, height, side, rank, count);
|
|
406
|
+
const verts = vertsFn({ x0: 0, y0: 0, w: width, h: height });
|
|
407
|
+
return polygonPortAnchor(verts, width, height, side, rank, count);
|
|
408
|
+
},
|
|
409
|
+
innerRect: opts.innerRect,
|
|
410
|
+
};
|
|
411
|
+
}
|
|
412
|
+
/** Build a curved / compound shape emitted as a single <path> (`d` from box). */
|
|
413
|
+
function pathShape(type, dFn, opts = {}) {
|
|
414
|
+
var _a, _b;
|
|
415
|
+
return {
|
|
416
|
+
type,
|
|
417
|
+
styleMode: 'inline',
|
|
418
|
+
outline(width, height, t = {}) {
|
|
419
|
+
return { el: 'path', geom: { d: dFn(boxOf(width, height, t)) } };
|
|
420
|
+
},
|
|
421
|
+
// ~rectangular footprint → the bounding-box edge is a good attachment.
|
|
422
|
+
boundaryPoint: (_a = opts.boundaryPoint) !== null && _a !== void 0 ? _a : (() => null),
|
|
423
|
+
portAnchor: (_b = opts.portAnchor) !== null && _b !== void 0 ? _b : boxPortAnchor,
|
|
424
|
+
innerRect: opts.innerRect,
|
|
425
|
+
};
|
|
426
|
+
}
|
|
427
|
+
// ── Vertex builders (skew = horizontal shear used by parallelogram/trapezoid) ─
|
|
428
|
+
const SKEW = 0.25; // fraction of width sheared off — the classic flowchart lean
|
|
429
|
+
function parallelogramVerts(b, lean) {
|
|
430
|
+
const s = b.w * SKEW;
|
|
431
|
+
// lean = 1 → top edge shifted right (data / I-O); lean = -1 → shifted left.
|
|
432
|
+
return lean === 1
|
|
433
|
+
? [
|
|
434
|
+
{ x: r3(b.x0 + s), y: b.y0 },
|
|
435
|
+
{ x: r3(b.x0 + b.w), y: b.y0 },
|
|
436
|
+
{ x: r3(b.x0 + b.w - s), y: r3(b.y0 + b.h) },
|
|
437
|
+
{ x: b.x0, y: r3(b.y0 + b.h) },
|
|
438
|
+
]
|
|
439
|
+
: [
|
|
440
|
+
{ x: b.x0, y: b.y0 },
|
|
441
|
+
{ x: r3(b.x0 + b.w - s), y: b.y0 },
|
|
442
|
+
{ x: r3(b.x0 + b.w), y: r3(b.y0 + b.h) },
|
|
443
|
+
{ x: r3(b.x0 + s), y: r3(b.y0 + b.h) },
|
|
444
|
+
];
|
|
445
|
+
}
|
|
446
|
+
function trapezoidVerts(b, narrow) {
|
|
447
|
+
const s = b.w * SKEW;
|
|
448
|
+
return narrow === 'top'
|
|
449
|
+
? [
|
|
450
|
+
{ x: r3(b.x0 + s), y: b.y0 },
|
|
451
|
+
{ x: r3(b.x0 + b.w - s), y: b.y0 },
|
|
452
|
+
{ x: r3(b.x0 + b.w), y: r3(b.y0 + b.h) },
|
|
453
|
+
{ x: b.x0, y: r3(b.y0 + b.h) },
|
|
454
|
+
]
|
|
455
|
+
: [
|
|
456
|
+
{ x: b.x0, y: b.y0 },
|
|
457
|
+
{ x: r3(b.x0 + b.w), y: b.y0 },
|
|
458
|
+
{ x: r3(b.x0 + b.w - s), y: r3(b.y0 + b.h) },
|
|
459
|
+
{ x: r3(b.x0 + s), y: r3(b.y0 + b.h) },
|
|
460
|
+
];
|
|
461
|
+
}
|
|
462
|
+
function triangleVerts(b, dir) {
|
|
463
|
+
const cx = r3(b.x0 + b.w / 2);
|
|
464
|
+
return dir === 'up'
|
|
465
|
+
? [
|
|
466
|
+
{ x: cx, y: b.y0 },
|
|
467
|
+
{ x: r3(b.x0 + b.w), y: r3(b.y0 + b.h) },
|
|
468
|
+
{ x: b.x0, y: r3(b.y0 + b.h) },
|
|
469
|
+
]
|
|
470
|
+
: [
|
|
471
|
+
{ x: b.x0, y: b.y0 },
|
|
472
|
+
{ x: r3(b.x0 + b.w), y: b.y0 },
|
|
473
|
+
{ x: cx, y: r3(b.y0 + b.h) },
|
|
474
|
+
];
|
|
475
|
+
}
|
|
476
|
+
/** UML package (folder): a tab on the top-left plus the body — a 7-vertex poly. */
|
|
477
|
+
function packageVerts(b) {
|
|
478
|
+
const tabW = b.w * 0.4;
|
|
479
|
+
const tabH = b.h * 0.2;
|
|
480
|
+
return [
|
|
481
|
+
{ x: b.x0, y: r3(b.y0 + tabH) },
|
|
482
|
+
{ x: b.x0, y: b.y0 },
|
|
483
|
+
{ x: r3(b.x0 + tabW), y: b.y0 },
|
|
484
|
+
{ x: r3(b.x0 + tabW), y: r3(b.y0 + tabH) },
|
|
485
|
+
{ x: r3(b.x0 + b.w), y: r3(b.y0 + tabH) },
|
|
486
|
+
{ x: r3(b.x0 + b.w), y: r3(b.y0 + b.h) },
|
|
487
|
+
{ x: b.x0, y: r3(b.y0 + b.h) },
|
|
488
|
+
];
|
|
489
|
+
}
|
|
490
|
+
/** Isometric cube outer silhouette (a 6-vertex hexagon; edges drawn by cubePath). */
|
|
491
|
+
function cubeSilhouetteVerts(b) {
|
|
492
|
+
const d = Math.min(b.w, b.h) * 0.22;
|
|
493
|
+
return [
|
|
494
|
+
{ x: b.x0, y: r3(b.y0 + d) },
|
|
495
|
+
{ x: r3(b.x0 + d), y: b.y0 },
|
|
496
|
+
{ x: r3(b.x0 + b.w), y: b.y0 },
|
|
497
|
+
{ x: r3(b.x0 + b.w), y: r3(b.y0 + b.h - d) },
|
|
498
|
+
{ x: r3(b.x0 + b.w - d), y: r3(b.y0 + b.h) },
|
|
499
|
+
{ x: b.x0, y: r3(b.y0 + b.h) },
|
|
500
|
+
];
|
|
501
|
+
}
|
|
502
|
+
/** Note silhouette (folded top-right corner) — a 6-vertex poly; fold by notePath. */
|
|
503
|
+
function noteVerts(b) {
|
|
504
|
+
const f = Math.min(b.w, b.h) * 0.25;
|
|
505
|
+
return [
|
|
506
|
+
{ x: b.x0, y: b.y0 },
|
|
507
|
+
{ x: r3(b.x0 + b.w - f), y: b.y0 },
|
|
508
|
+
{ x: r3(b.x0 + b.w), y: r3(b.y0 + f) },
|
|
509
|
+
{ x: r3(b.x0 + b.w), y: r3(b.y0 + b.h) },
|
|
510
|
+
{ x: b.x0, y: r3(b.y0 + b.h) },
|
|
511
|
+
];
|
|
512
|
+
}
|
|
513
|
+
// ── Straight-edged shapes ──────────────────────────────────────────────────
|
|
514
|
+
const ParallelogramShape = polygonShape('parallelogram', (b) => parallelogramVerts(b, 1));
|
|
515
|
+
const ParallelogramTopShape = polygonShape('parallelogram-top', (b) => parallelogramVerts(b, -1));
|
|
516
|
+
const TrapezoidShape = polygonShape('trapezoid', (b) => trapezoidVerts(b, 'top'));
|
|
517
|
+
const TrapezoidBottomShape = polygonShape('trapezoid-bottom', (b) => trapezoidVerts(b, 'bottom'));
|
|
518
|
+
const TriangleShape = polygonShape('triangle', (b) => triangleVerts(b, 'up'), {
|
|
519
|
+
// apex/base custom anchors read better than generic edge intersections
|
|
520
|
+
portAnchor(width, height, side, rank, count) {
|
|
521
|
+
if (side === 'top')
|
|
522
|
+
return { x: width / 2, y: 0 };
|
|
523
|
+
if (side === 'bottom')
|
|
524
|
+
return { x: width * edgeFraction(rank, count), y: height };
|
|
525
|
+
if (side === 'left')
|
|
526
|
+
return { x: width * 0.25, y: height / 2 };
|
|
527
|
+
return { x: width * 0.75, y: height / 2 };
|
|
528
|
+
},
|
|
529
|
+
innerRect: (w, h) => ({ x: 0.25 * w, y: 0.45 * h, w: 0.5 * w, h: 0.5 * h }),
|
|
530
|
+
});
|
|
531
|
+
const TriangleDownShape = polygonShape('triangle-down', (b) => triangleVerts(b, 'down'), {
|
|
532
|
+
innerRect: (w, h) => ({ x: 0.25 * w, y: 0.05 * h, w: 0.5 * w, h: 0.5 * h }),
|
|
533
|
+
});
|
|
534
|
+
const PackageShape = polygonShape('package', packageVerts, {
|
|
535
|
+
innerRect: (w, h) => ({ x: 0.08 * w, y: 0.28 * h, w: 0.84 * w, h: 0.64 * h }),
|
|
536
|
+
});
|
|
537
|
+
const CubeShape = Object.assign(Object.assign({}, polygonShape('cube', cubeSilhouetteVerts, {
|
|
538
|
+
innerRect: (w, h) => ({ x: 0.06 * w, y: 0.32 * h, w: 0.62 * w, h: 0.6 * h }),
|
|
539
|
+
})), {
|
|
540
|
+
// Override the outline to draw the two interior 3D edges as extra subpaths.
|
|
541
|
+
outline(width, height, t = {}) {
|
|
542
|
+
const b = boxOf(width, height, t);
|
|
543
|
+
const d = Math.min(b.w, b.h) * 0.22;
|
|
544
|
+
const { x0, y0 } = b;
|
|
545
|
+
const w = b.w;
|
|
546
|
+
const h = b.h;
|
|
547
|
+
const front = `M ${r3(x0)},${r3(y0 + d)} L ${r3(x0)},${r3(y0 + h)} L ${r3(x0 + w - d)},${r3(y0 + h)} L ${r3(x0 + w - d)},${r3(y0 + d)} Z`;
|
|
548
|
+
const top = `M ${r3(x0)},${r3(y0 + d)} L ${r3(x0 + d)},${r3(y0)} L ${r3(x0 + w)},${r3(y0)} L ${r3(x0 + w - d)},${r3(y0 + d)}`;
|
|
549
|
+
const rightEdge = `M ${r3(x0 + w - d)},${r3(y0 + d)} L ${r3(x0 + w)},${r3(y0)} L ${r3(x0 + w)},${r3(y0 + h - d)} L ${r3(x0 + w - d)},${r3(y0 + h)}`;
|
|
550
|
+
return { el: 'path', geom: { d: `${front} ${top} ${rightEdge}` } };
|
|
551
|
+
} });
|
|
552
|
+
// ── Curved / compound (path) shapes ────────────────────────────────────────
|
|
553
|
+
const DocumentShape = pathShape('document', (b) => {
|
|
554
|
+
const wave = b.h * 0.12;
|
|
555
|
+
const { x0, y0, w, h } = b;
|
|
556
|
+
// rect top + sides, then a double Q-curve wavy bottom
|
|
557
|
+
return (`M ${r3(x0)},${r3(y0)} L ${r3(x0 + w)},${r3(y0)} L ${r3(x0 + w)},${r3(y0 + h - wave)} ` +
|
|
558
|
+
`Q ${r3(x0 + 0.75 * w)},${r3(y0 + h - 2 * wave)} ${r3(x0 + 0.5 * w)},${r3(y0 + h - wave)} ` +
|
|
559
|
+
`Q ${r3(x0 + 0.25 * w)},${r3(y0 + h)} ${r3(x0)},${r3(y0 + h - wave)} Z`);
|
|
560
|
+
}, { innerRect: (w, h) => ({ x: 0.08 * w, y: 0.08 * h, w: 0.84 * w, h: 0.72 * h }) });
|
|
561
|
+
/** Classic DB-cylinder rim radius (must match the outline generator exactly). */
|
|
562
|
+
function cylinderRy(w, h) {
|
|
563
|
+
return Math.min(h / 2, w / 2 / (2.5 + w / h));
|
|
564
|
+
}
|
|
565
|
+
const CylinderShape = Object.assign(Object.assign({}, pathShape('cylinder', (b) => {
|
|
566
|
+
const { x0, y0, w, h } = b;
|
|
567
|
+
const rx = w / 2;
|
|
568
|
+
const ry = cylinderRy(w, h); // classic DB rim curvature
|
|
569
|
+
const body = h - 2 * ry;
|
|
570
|
+
// full top ellipse (two arcs) + body sides + front bottom arc
|
|
571
|
+
return (`M ${r3(x0)},${r3(y0 + ry)} ` +
|
|
572
|
+
`a ${r3(rx)},${r3(ry)} 0 0 0 ${r3(w)} 0 ` +
|
|
573
|
+
`a ${r3(rx)},${r3(ry)} 0 0 0 ${r3(-w)} 0 ` +
|
|
574
|
+
`l 0 ${r3(body)} ` +
|
|
575
|
+
`a ${r3(rx)},${r3(ry)} 0 0 0 ${r3(w)} 0 ` +
|
|
576
|
+
`l 0 ${r3(-body)}`);
|
|
577
|
+
}, { innerRect: (w, h) => ({ x: 0.1 * w, y: 0.28 * h, w: 0.8 * w, h: 0.5 * h }) })), {
|
|
578
|
+
// Card 7 — geometry-true anchors. Ports ride the cylinder's real geometry: the
|
|
579
|
+
// top port sits on the FRONT RIM SEAM (the visible top edge of the body, at
|
|
580
|
+
// y = 2·ry), the bottom on the front base arc, and the sides on the vertical
|
|
581
|
+
// body seam — not the bounding box.
|
|
582
|
+
portAnchor(width, height, side, rank, count) {
|
|
583
|
+
const ry = cylinderRy(width, height);
|
|
584
|
+
const rx = width / 2;
|
|
585
|
+
const cx = width / 2;
|
|
586
|
+
const f = edgeFraction(rank, count);
|
|
587
|
+
if (side === 'left' || side === 'right') {
|
|
588
|
+
return { x: side === 'left' ? 0 : width, y: ry + (height - 2 * ry) * f };
|
|
589
|
+
}
|
|
590
|
+
const x = Math.max(0, Math.min(width, cx + (f - 0.5) * rx * 1.6));
|
|
591
|
+
const dx = rx > 0 ? (x - cx) / rx : 0;
|
|
592
|
+
const off = ry * Math.sqrt(Math.max(0, 1 - dx * dx));
|
|
593
|
+
// front rim seam (top) / front base arc (bottom)
|
|
594
|
+
return side === 'top' ? { x, y: ry + off } : { x, y: height - ry + off };
|
|
595
|
+
},
|
|
596
|
+
// Smart-connection boundary: project onto the SILHOUETTE — the top/bottom rim
|
|
597
|
+
// curves and the vertical sides — instead of the bounding box.
|
|
598
|
+
boundaryPoint(rect, side, cross) {
|
|
599
|
+
const ry = cylinderRy(rect.w, rect.h);
|
|
600
|
+
const rx = rect.w / 2;
|
|
601
|
+
const cx = rect.x + rect.w / 2;
|
|
602
|
+
if (side === 'left')
|
|
603
|
+
return { x: rect.x, y: clampN(cross, rect.y + ry, rect.y + rect.h - ry) };
|
|
604
|
+
if (side === 'right')
|
|
605
|
+
return { x: rect.x + rect.w, y: clampN(cross, rect.y + ry, rect.y + rect.h - ry) };
|
|
606
|
+
const px = clampN(cross, rect.x, rect.x + rect.w);
|
|
607
|
+
const dx = rx > 0 ? (px - cx) / rx : 0;
|
|
608
|
+
const off = ry * Math.sqrt(Math.max(0, 1 - dx * dx));
|
|
609
|
+
return side === 'top'
|
|
610
|
+
? { x: px, y: rect.y + ry - off } // upper half of the top rim
|
|
611
|
+
: { x: px, y: rect.y + rect.h - ry + off }; // lower half of the base
|
|
612
|
+
} });
|
|
613
|
+
const CloudShape = pathShape('cloud', (b) => {
|
|
614
|
+
// Five bump arcs around the box — a recognizable cloud silhouette scaled
|
|
615
|
+
// to (w, h). Bumps are cubic beziers so grow/dx-dy just move the box.
|
|
616
|
+
const { x0, y0, w, h } = b;
|
|
617
|
+
const X = (fx) => r3(x0 + fx * w);
|
|
618
|
+
const Y = (fy) => r3(y0 + fy * h);
|
|
619
|
+
return (`M ${X(0.25)},${Y(0.85)} ` +
|
|
620
|
+
`C ${X(0.05)},${Y(0.85)} ${X(0.05)},${Y(0.55)} ${X(0.2)},${Y(0.5)} ` +
|
|
621
|
+
`C ${X(0.15)},${Y(0.2)} ${X(0.45)},${Y(0.1)} ${X(0.55)},${Y(0.3)} ` +
|
|
622
|
+
`C ${X(0.65)},${Y(0.08)} ${X(0.95)},${Y(0.15)} ${X(0.85)},${Y(0.45)} ` +
|
|
623
|
+
`C ${X(1.02)},${Y(0.5)} ${X(0.98)},${Y(0.82)} ${X(0.78)},${Y(0.85)} ` +
|
|
624
|
+
`Z`);
|
|
625
|
+
}, { innerRect: (w, h) => ({ x: 0.2 * w, y: 0.35 * h, w: 0.6 * w, h: 0.45 * h }) });
|
|
626
|
+
// Predefined process / subroutine: rect + a vertical bar inset on each side.
|
|
627
|
+
const PredefinedProcessShape = pathShape('predefined-process', (b) => {
|
|
628
|
+
const { x0, y0, w, h } = b;
|
|
629
|
+
const bar = w * 0.1;
|
|
630
|
+
const rect = `M ${r3(x0)},${r3(y0)} L ${r3(x0 + w)},${r3(y0)} L ${r3(x0 + w)},${r3(y0 + h)} L ${r3(x0)},${r3(y0 + h)} Z`;
|
|
631
|
+
const left = `M ${r3(x0 + bar)},${r3(y0)} L ${r3(x0 + bar)},${r3(y0 + h)}`;
|
|
632
|
+
const right = `M ${r3(x0 + w - bar)},${r3(y0)} L ${r3(x0 + w - bar)},${r3(y0 + h)}`;
|
|
633
|
+
return `${rect} ${left} ${right}`;
|
|
634
|
+
}, { innerRect: (w, h) => ({ x: 0.12 * w, y: 0.12 * h, w: 0.76 * w, h: 0.76 * h }) });
|
|
635
|
+
// UML component: body rect + two small tabs protruding on the left edge.
|
|
636
|
+
const ComponentShape = pathShape('component', (b) => {
|
|
637
|
+
const { x0, y0, w, h } = b;
|
|
638
|
+
const tw = w * 0.14;
|
|
639
|
+
const th = h * 0.16;
|
|
640
|
+
const bodyX = x0 + tw / 2;
|
|
641
|
+
const bodyW = w - tw / 2;
|
|
642
|
+
const y1 = y0 + h * 0.2;
|
|
643
|
+
const y2 = y0 + h * 0.55;
|
|
644
|
+
const body = `M ${r3(bodyX)},${r3(y0)} L ${r3(x0 + bodyW)},${r3(y0)} L ${r3(x0 + bodyW)},${r3(y0 + h)} L ${r3(bodyX)},${r3(y0 + h)} Z`;
|
|
645
|
+
const tab = (ty) => `M ${r3(x0)},${r3(ty)} L ${r3(x0 + tw)},${r3(ty)} L ${r3(x0 + tw)},${r3(ty + th)} L ${r3(x0)},${r3(ty + th)} Z`;
|
|
646
|
+
return `${body} ${tab(y1)} ${tab(y2)}`;
|
|
647
|
+
}, { innerRect: (w, h) => ({ x: 0.16 * w, y: 0.1 * h, w: 0.76 * w, h: 0.8 * h }) });
|
|
648
|
+
// Note: folded top-right corner rect + the little fold triangle.
|
|
649
|
+
const NoteShape = Object.assign(Object.assign({}, pathShape('note', () => '', {
|
|
650
|
+
innerRect: (w, h) => ({ x: 0.08 * w, y: 0.08 * h, w: 0.84 * w, h: 0.84 * h }),
|
|
651
|
+
})), { outline(width, height, t = {}) {
|
|
652
|
+
const b = boxOf(width, height, t);
|
|
653
|
+
const f = Math.min(b.w, b.h) * 0.25;
|
|
654
|
+
const { x0, y0, w, h } = b;
|
|
655
|
+
const body = `M ${r3(x0)},${r3(y0)} L ${r3(x0 + w - f)},${r3(y0)} L ${r3(x0 + w)},${r3(y0 + f)} L ${r3(x0 + w)},${r3(y0 + h)} L ${r3(x0)},${r3(y0 + h)} Z`;
|
|
656
|
+
const fold = `M ${r3(x0 + w - f)},${r3(y0)} L ${r3(x0 + w - f)},${r3(y0 + f)} L ${r3(x0 + w)},${r3(y0 + f)}`;
|
|
657
|
+
return { el: 'path', geom: { d: `${body} ${fold}` } };
|
|
658
|
+
},
|
|
659
|
+
boundaryPoint(rect, side, cross) {
|
|
660
|
+
const local = noteVerts({ x0: 0, y0: 0, w: rect.w, h: rect.h });
|
|
661
|
+
const world = local.map((v) => ({ x: v.x + rect.x, y: v.y + rect.y }));
|
|
662
|
+
return polygonBoundaryPoint(world, side, cross);
|
|
663
|
+
} });
|
|
664
|
+
// Terminal / stadium / pill: a fully rounded rectangle (rx = ry = height/2).
|
|
665
|
+
const TerminalShape = {
|
|
666
|
+
type: 'terminal',
|
|
667
|
+
styleMode: 'inline',
|
|
668
|
+
bodyStripKeys: ['rx', 'ry'], // never let a themed borderRadius fight rx = h/2
|
|
669
|
+
outline(width, height, t = {}) {
|
|
670
|
+
const b = boxOf(width, height, t);
|
|
671
|
+
const rad = b.h / 2;
|
|
672
|
+
return { el: 'rect', geom: { x: r3(b.x0), y: r3(b.y0), width: r3(b.w), height: r3(b.h), rx: r3(rad), ry: r3(rad) } };
|
|
673
|
+
},
|
|
674
|
+
boundaryPoint() {
|
|
675
|
+
return null; // straight top/bottom + semicircle ends → bbox edge is fine
|
|
676
|
+
},
|
|
677
|
+
portAnchor: boxPortAnchor,
|
|
678
|
+
innerRect: (w, h) => ({ x: h * 0.5, y: 0.15 * h, w: Math.max(0, w - h), h: 0.7 * h }),
|
|
679
|
+
};
|
|
680
|
+
// Actor (UML use-case): stick figure — head circle + torso/arms/legs strokes.
|
|
681
|
+
const ActorShape = {
|
|
682
|
+
type: 'actor',
|
|
683
|
+
styleMode: 'inline',
|
|
684
|
+
outline(width, height, t = {}) {
|
|
685
|
+
const b = boxOf(width, height, t);
|
|
686
|
+
const { x0, y0, w, h } = b;
|
|
687
|
+
const cx = x0 + w / 2;
|
|
688
|
+
const rHead = Math.min(w * 0.22, h * 0.16);
|
|
689
|
+
const headCy = y0 + rHead;
|
|
690
|
+
const neck = headCy + rHead;
|
|
691
|
+
const hip = y0 + h * 0.62;
|
|
692
|
+
const arms = y0 + h * 0.4;
|
|
693
|
+
// head as two arcs (full circle), then torso, arms, and two legs
|
|
694
|
+
const head = `M ${r3(cx - rHead)},${r3(headCy)} a ${r3(rHead)},${r3(rHead)} 0 1 0 ${r3(2 * rHead)} 0 a ${r3(rHead)},${r3(rHead)} 0 1 0 ${r3(-2 * rHead)} 0`;
|
|
695
|
+
const torso = `M ${r3(cx)},${r3(neck)} L ${r3(cx)},${r3(hip)}`;
|
|
696
|
+
const armLine = `M ${r3(x0 + w * 0.18)},${r3(arms)} L ${r3(x0 + w * 0.82)},${r3(arms)}`;
|
|
697
|
+
const legs = `M ${r3(x0 + w * 0.2)},${r3(y0 + h)} L ${r3(cx)},${r3(hip)} L ${r3(x0 + w * 0.8)},${r3(y0 + h)}`;
|
|
698
|
+
return { el: 'path', geom: { d: `${head} ${torso} ${armLine} ${legs}` } };
|
|
699
|
+
},
|
|
700
|
+
boundaryPoint() {
|
|
701
|
+
return null;
|
|
702
|
+
},
|
|
703
|
+
// Card 7 — geometry-true anchors: the side ports attach to the actor's HANDS
|
|
704
|
+
// (the ends of the arm line at 40% height), the top to the head crown, and the
|
|
705
|
+
// bottom between the feet. Multiple ports on a side fan slightly so they don't
|
|
706
|
+
// stack on the same hand.
|
|
707
|
+
portAnchor(width, height, side, rank, count) {
|
|
708
|
+
const armY = height * 0.4;
|
|
709
|
+
const spread = (rank - (count - 1) / 2) * height * 0.12;
|
|
710
|
+
switch (side) {
|
|
711
|
+
case 'left':
|
|
712
|
+
return { x: width * 0.18, y: clampN(armY + spread, 0, height) };
|
|
713
|
+
case 'right':
|
|
714
|
+
return { x: width * 0.82, y: clampN(armY + spread, 0, height) };
|
|
715
|
+
case 'top':
|
|
716
|
+
return { x: width / 2, y: 0 };
|
|
717
|
+
case 'bottom':
|
|
718
|
+
default:
|
|
719
|
+
return { x: width * (0.2 + 0.6 * edgeFraction(rank, count)), y: height };
|
|
720
|
+
}
|
|
721
|
+
},
|
|
722
|
+
};
|
|
723
|
+
// ---------------------------------------------------------------------------
|
|
724
|
+
// Registry
|
|
725
|
+
// ---------------------------------------------------------------------------
|
|
726
|
+
const registry = new Map();
|
|
727
|
+
/**
|
|
728
|
+
* Register (or replace) a shape definition. This is the payoff: a new shape is
|
|
729
|
+
* added in ONE place and immediately works across body/selection/shadow,
|
|
730
|
+
* smart-connection boundaries and port positioning — no switch edits.
|
|
731
|
+
*/
|
|
732
|
+
function registerShape(type, def) {
|
|
733
|
+
registry.set(type, Object.assign(Object.assign({}, def), { type }));
|
|
734
|
+
// Wave 6: participate in the version/notify protocol (see `unregisterShape`
|
|
735
|
+
// below) so cached renders invalidate and ExtensionHost disposers are exact.
|
|
736
|
+
notifyShapeRegistered();
|
|
737
|
+
}
|
|
738
|
+
/**
|
|
739
|
+
* Register an arbitrary SVG-path shape (Card 2). This is the payoff of the
|
|
740
|
+
* geometry contract: a userland caller adds a brand-new silhouette in ONE call
|
|
741
|
+
* and it works everywhere the built-ins do — node body, selection highlight,
|
|
742
|
+
* drop shadow, smart-connection boundary and geometry-true port anchors — with
|
|
743
|
+
* NO core-team switch edits.
|
|
744
|
+
*
|
|
745
|
+
* ```ts
|
|
746
|
+
* // Parametric — a 5-point star that fills any box.
|
|
747
|
+
* registerPathShape('star', (w, h) => starPath(w, h));
|
|
748
|
+
* // Static — a chevron authored in a 24×24 art box.
|
|
749
|
+
* registerPathShape('chevron', 'M2,4 L14,4 L22,12 L14,20 L2,20 L10,12 Z',
|
|
750
|
+
* { viewBox: { x: 0, y: 0, w: 24, h: 24 } });
|
|
751
|
+
* ```
|
|
752
|
+
*/
|
|
753
|
+
function registerPathShape(type, path, opts = {}) {
|
|
754
|
+
registry.set(type, buildPathShapeDefinition(type, path, opts));
|
|
755
|
+
// Wave 6: path shapes bypass `registerShape` (they build the definition here),
|
|
756
|
+
// so they must bump the version themselves or an extension that contributes a
|
|
757
|
+
// path shape would be invisible to cache invalidation and to its own disposer.
|
|
758
|
+
notifyShapeRegistered();
|
|
759
|
+
}
|
|
760
|
+
/**
|
|
761
|
+
* BUILD a path shape's definition without storing it anywhere.
|
|
762
|
+
*
|
|
763
|
+
* Extracted from {@link registerPathShape} so a PER-DIAGRAM registry can offer
|
|
764
|
+
* `registerPathShape` too. Everything expensive and everything subtle — path
|
|
765
|
+
* parsing, the one-slot outline sample memo, the derived boundary and port
|
|
766
|
+
* anchors — lives here, so the global and scoped paths cannot drift into
|
|
767
|
+
* producing different geometry for the same path.
|
|
768
|
+
*/
|
|
769
|
+
function buildPathShapeDefinition(type, path, opts = {}) {
|
|
770
|
+
var _a, _b;
|
|
771
|
+
const steps = (_a = opts.sampleSteps) !== null && _a !== void 0 ? _a : 24;
|
|
772
|
+
const viewBox = (_b = opts.viewBox) !== null && _b !== void 0 ? _b : { x: 0, y: 0, w: 1, h: 1 };
|
|
773
|
+
// Commands for a natural (origin-anchored) `width × height` box. Static strings
|
|
774
|
+
// are parsed ONCE and rescaled per size; generators re-parse their output.
|
|
775
|
+
const staticCmds = typeof path === 'string' ? (0, path_geometry_1.parsePath)(path) : null;
|
|
776
|
+
const cmdsForSize = (width, height) => staticCmds
|
|
777
|
+
? (0, path_outline_1.fitCmdsToBox)(staticCmds, viewBox, width, height)
|
|
778
|
+
: (0, path_geometry_1.parsePath)(path(width, height));
|
|
779
|
+
// One-slot memo for the sampled outline — port positions are recomputed every
|
|
780
|
+
// frame per port, so re-flattening the path each call would be wasteful.
|
|
781
|
+
let sampleKey = '';
|
|
782
|
+
let sampleCache = [];
|
|
783
|
+
const outlinePoints = (width, height) => {
|
|
784
|
+
const key = `${width}x${height}`;
|
|
785
|
+
if (key !== sampleKey) {
|
|
786
|
+
sampleKey = key;
|
|
787
|
+
sampleCache = (0, path_outline_1.sampleOutlinePoints)(cmdsForSize(width, height), steps);
|
|
788
|
+
}
|
|
789
|
+
return sampleCache;
|
|
790
|
+
};
|
|
791
|
+
return {
|
|
792
|
+
type,
|
|
793
|
+
styleMode: 'inline',
|
|
794
|
+
outline(width, height, t = {}) {
|
|
795
|
+
const box = boxOf(width, height, t);
|
|
796
|
+
// Draw at the (grown) box size, then translate to the box origin so grow
|
|
797
|
+
// (selection padding) and dx/dy (shadow offset) compose exactly as they do
|
|
798
|
+
// for every other shape.
|
|
799
|
+
const cmds = (0, path_outline_1.translateCmds)(cmdsForSize(box.w, box.h), box.x0, box.y0);
|
|
800
|
+
return { el: 'path', geom: { d: (0, path_outline_1.serializePathCmds)(cmds) } };
|
|
801
|
+
},
|
|
802
|
+
boundaryPoint(rect, side, cross) {
|
|
803
|
+
if (opts.boundaryPoint)
|
|
804
|
+
return opts.boundaryPoint(rect, side, cross);
|
|
805
|
+
const local = outlinePoints(rect.w, rect.h);
|
|
806
|
+
if (local.length < 3)
|
|
807
|
+
return null; // degenerate → caller uses bbox edge
|
|
808
|
+
const world = local.map((v) => ({ x: v.x + rect.x, y: v.y + rect.y }));
|
|
809
|
+
return polygonBoundaryPoint(world, side, cross);
|
|
810
|
+
},
|
|
811
|
+
portAnchor(width, height, side, rank, count) {
|
|
812
|
+
if (opts.portAnchor)
|
|
813
|
+
return opts.portAnchor(width, height, side, rank, count);
|
|
814
|
+
const verts = outlinePoints(width, height);
|
|
815
|
+
if (verts.length < 3)
|
|
816
|
+
return boxPortAnchor(width, height, side, rank, count);
|
|
817
|
+
return polygonPortAnchor(verts, width, height, side, rank, count);
|
|
818
|
+
},
|
|
819
|
+
innerRect: opts.innerRect,
|
|
820
|
+
};
|
|
821
|
+
}
|
|
822
|
+
/**
|
|
823
|
+
* The rect shape is the default fallback for unknown / unset shape types.
|
|
824
|
+
*
|
|
825
|
+
* Resolution order is DIAGRAM-FIRST, then process-global. A diagram that
|
|
826
|
+
* contributed its own `badge` sees its own; every other diagram — and this one,
|
|
827
|
+
* for every name it did not claim — still sees the global registry. See
|
|
828
|
+
* `ext/registry-scope.ts` for why the lookup is ambient rather than threaded.
|
|
829
|
+
*/
|
|
830
|
+
function getShape(type) {
|
|
831
|
+
var _a, _b, _c;
|
|
832
|
+
if (!type)
|
|
833
|
+
return RectShape;
|
|
834
|
+
return (_c = (_b = (_a = (0, registry_scope_1.scopedTable)(registry_scope_1.SHAPES)) === null || _a === void 0 ? void 0 : _a.get(type)) !== null && _b !== void 0 ? _b : registry.get(type)) !== null && _c !== void 0 ? _c : RectShape;
|
|
835
|
+
}
|
|
836
|
+
/** Whether a shape type is registered (excludes the implicit rect fallback). */
|
|
837
|
+
function hasShape(type) {
|
|
838
|
+
var _a;
|
|
839
|
+
return ((_a = (0, registry_scope_1.scopedTable)(registry_scope_1.SHAPES)) === null || _a === void 0 ? void 0 : _a.has(type)) === true || registry.has(type);
|
|
840
|
+
}
|
|
841
|
+
/** All registered shape type names (built-ins + extended library + aliases). */
|
|
842
|
+
function listShapes() {
|
|
843
|
+
const scoped = (0, registry_scope_1.scopedTable)(registry_scope_1.SHAPES);
|
|
844
|
+
if (!scoped || scoped.size === 0)
|
|
845
|
+
return [...registry.keys()];
|
|
846
|
+
// Union, global order first, so an override renames nothing and adds nothing twice.
|
|
847
|
+
return [...new Set([...registry.keys(), ...scoped.keys()])];
|
|
848
|
+
}
|
|
849
|
+
// ---------------------------------------------------------------------------
|
|
850
|
+
// Wave 6 — Card 0: removal + invalidation.
|
|
851
|
+
//
|
|
852
|
+
// The registry previously had NO removal path and NO change signal, which made
|
|
853
|
+
// a leak-free `ExtensionHost` disposer impossible to synthesize: an extension
|
|
854
|
+
// could add a shape but never take it back, so tearing an extension down left
|
|
855
|
+
// its shapes live forever. These are PURELY ADDITIVE — `registerShape` and the
|
|
856
|
+
// lookup path above are untouched — and they are what `shapes.register()` on the
|
|
857
|
+
// ExtensionHost returns its disposer against.
|
|
858
|
+
//
|
|
859
|
+
// The version counter mirrors the one edge-templates and the style registry
|
|
860
|
+
// already expose, so a renderer can invalidate a cached VNode when the shape
|
|
861
|
+
// catalogue changes underneath it.
|
|
862
|
+
// ---------------------------------------------------------------------------
|
|
863
|
+
let shapeVersion = 0;
|
|
864
|
+
const shapeListeners = new Set();
|
|
865
|
+
function bumpShapes() {
|
|
866
|
+
shapeVersion++;
|
|
867
|
+
for (const listener of [...shapeListeners])
|
|
868
|
+
listener();
|
|
869
|
+
}
|
|
870
|
+
/** Remove a registered shape. Returns false when the type was not registered. */
|
|
871
|
+
function unregisterShape(type) {
|
|
872
|
+
const existed = registry.delete(type);
|
|
873
|
+
if (existed)
|
|
874
|
+
bumpShapes();
|
|
875
|
+
return existed;
|
|
876
|
+
}
|
|
877
|
+
/**
|
|
878
|
+
* Snapshot the current catalogue, so a caller can restore it later. Used by the
|
|
879
|
+
* ExtensionHost to give a scoped extension an exact "undo" even when it OVERWROTE
|
|
880
|
+
* an existing shape rather than adding a new one.
|
|
881
|
+
*/
|
|
882
|
+
function getShapeDefinition(type) {
|
|
883
|
+
var _a, _b;
|
|
884
|
+
return (_b = (_a = (0, registry_scope_1.scopedTable)(registry_scope_1.SHAPES)) === null || _a === void 0 ? void 0 : _a.get(type)) !== null && _b !== void 0 ? _b : registry.get(type);
|
|
885
|
+
}
|
|
886
|
+
/**
|
|
887
|
+
* Monotonic counter, incremented on every add/remove. Cheap cache key.
|
|
888
|
+
* NOTE: `registerShape` itself bumps it — see the wrapper installed below.
|
|
889
|
+
*/
|
|
890
|
+
function getShapeRegistryVersion() {
|
|
891
|
+
return shapeVersion;
|
|
892
|
+
}
|
|
893
|
+
/** Subscribe to catalogue changes. Returns a disposer. */
|
|
894
|
+
function onShapeRegistryChange(listener) {
|
|
895
|
+
shapeListeners.add(listener);
|
|
896
|
+
return () => shapeListeners.delete(listener);
|
|
897
|
+
}
|
|
898
|
+
/** Internal: let `registerShape` participate in the version/notify protocol. */
|
|
899
|
+
function notifyShapeRegistered() {
|
|
900
|
+
bumpShapes();
|
|
901
|
+
}
|
|
902
|
+
/**
|
|
903
|
+
* The label box for a shape in local coords. Falls back to a padded bounding
|
|
904
|
+
* box when the shape doesn't override `innerRect`.
|
|
905
|
+
*/
|
|
906
|
+
function getInnerRect(def, width, height) {
|
|
907
|
+
return def.innerRect ? def.innerRect(width, height) : defaultInnerRect(width, height);
|
|
908
|
+
}
|
|
909
|
+
/** Padded-bbox label box: inset by up to 8px, clamped so it never inverts. */
|
|
910
|
+
function defaultInnerRect(width, height) {
|
|
911
|
+
const pad = Math.max(0, Math.min(8, width / 2 - 1, height / 2 - 1));
|
|
912
|
+
return { x: pad, y: pad, w: width - 2 * pad, h: height - 2 * pad };
|
|
913
|
+
}
|
|
914
|
+
// Register the five built-ins.
|
|
915
|
+
for (const def of [RectShape, CircleShape, EllipseShape, DiamondShape, HexagonShape]) {
|
|
916
|
+
registry.set(def.type, def);
|
|
917
|
+
}
|
|
918
|
+
// Register the extended flowchart / BPMN / UML / ERD figure library. Each is a
|
|
919
|
+
// full ShapeDefinition, so it works everywhere the built-ins do — no switch
|
|
920
|
+
// edits at any of the five render sites.
|
|
921
|
+
for (const def of [
|
|
922
|
+
ParallelogramShape,
|
|
923
|
+
ParallelogramTopShape,
|
|
924
|
+
TrapezoidShape,
|
|
925
|
+
TrapezoidBottomShape,
|
|
926
|
+
TriangleShape,
|
|
927
|
+
TriangleDownShape,
|
|
928
|
+
PackageShape,
|
|
929
|
+
CubeShape,
|
|
930
|
+
DocumentShape,
|
|
931
|
+
CylinderShape,
|
|
932
|
+
CloudShape,
|
|
933
|
+
PredefinedProcessShape,
|
|
934
|
+
ComponentShape,
|
|
935
|
+
NoteShape,
|
|
936
|
+
TerminalShape,
|
|
937
|
+
ActorShape,
|
|
938
|
+
]) {
|
|
939
|
+
registry.set(def.type, def);
|
|
940
|
+
}
|
|
941
|
+
// Common aliases (draw.io / mermaid / BPMN vocabulary) → the same definitions.
|
|
942
|
+
const SHAPE_ALIASES = {
|
|
943
|
+
data: ParallelogramShape, // flowchart I/O
|
|
944
|
+
'input-output': ParallelogramShape,
|
|
945
|
+
database: CylinderShape,
|
|
946
|
+
cylinder3d: CylinderShape,
|
|
947
|
+
subroutine: PredefinedProcessShape,
|
|
948
|
+
'predefined-process-alt': PredefinedProcessShape,
|
|
949
|
+
stadium: TerminalShape,
|
|
950
|
+
pill: TerminalShape,
|
|
951
|
+
terminator: TerminalShape,
|
|
952
|
+
'manual-operation': TrapezoidShape, // narrow-bottom in some dialects; near enough
|
|
953
|
+
folder: PackageShape,
|
|
954
|
+
comment: NoteShape,
|
|
955
|
+
'use-case-actor': ActorShape,
|
|
956
|
+
};
|
|
957
|
+
for (const [alias, def] of Object.entries(SHAPE_ALIASES)) {
|
|
958
|
+
registry.set(alias, def);
|
|
959
|
+
}
|
|
960
|
+
// ---------------------------------------------------------------------------
|
|
961
|
+
// VNode builders — turn a ShapeDefinition + styles into the exact VNodes the
|
|
962
|
+
// three render sites used to build inline. Kept here so all shape geometry and
|
|
963
|
+
// its style-composition rules live together.
|
|
964
|
+
// ---------------------------------------------------------------------------
|
|
965
|
+
/**
|
|
966
|
+
* Node body VNode. Reproduces the historical per-shape style composition:
|
|
967
|
+
* - 'inline' shapes (rect/circle/diamond) hoist fill/stroke/strokeWidth into
|
|
968
|
+
* an inline `style` string (highest CSS specificity) and pass the rest
|
|
969
|
+
* through; circle strips the meaningless rect rx/ry.
|
|
970
|
+
* - 'spread' shapes (ellipse/hexagon) spread node styles as presentation
|
|
971
|
+
* attributes with geometry merged last.
|
|
972
|
+
*/
|
|
973
|
+
/** CSS property name for each paint key that may carry a `var()` reference. */
|
|
974
|
+
const CSS_PAINT_PROPS = {
|
|
975
|
+
fill: 'fill',
|
|
976
|
+
stroke: 'stroke',
|
|
977
|
+
strokeWidth: 'stroke-width',
|
|
978
|
+
};
|
|
979
|
+
/**
|
|
980
|
+
* Pull any paint whose value is a `var(--…)` reference out of the attribute bag
|
|
981
|
+
* and into an inline CSS style string (where variables are legal).
|
|
982
|
+
*
|
|
983
|
+
* `hoisted` is `''` when nothing needed moving — the overwhelmingly common case,
|
|
984
|
+
* and the caller then emits the original props untouched.
|
|
985
|
+
*/
|
|
986
|
+
function hoistCssVarPaints(styles) {
|
|
987
|
+
const rest = Object.assign({}, styles);
|
|
988
|
+
const decls = [];
|
|
989
|
+
for (const [key, cssProp] of Object.entries(CSS_PAINT_PROPS)) {
|
|
990
|
+
const value = rest[key];
|
|
991
|
+
if (typeof value === 'string' && value.includes('var(')) {
|
|
992
|
+
decls.push(`${cssProp}: ${value}`);
|
|
993
|
+
delete rest[key];
|
|
994
|
+
}
|
|
995
|
+
}
|
|
996
|
+
if (decls.length === 0)
|
|
997
|
+
return { hoisted: '', rest };
|
|
998
|
+
// Preserve an existing style string, with the hoisted paints appended so they
|
|
999
|
+
// still win over anything the caller had already put there.
|
|
1000
|
+
const existing = typeof rest['style'] === 'string' ? rest['style'] : '';
|
|
1001
|
+
delete rest['style'];
|
|
1002
|
+
return { hoisted: [existing, decls.join('; ')].filter(Boolean).join('; '), rest };
|
|
1003
|
+
}
|
|
1004
|
+
function buildShapeBody(def, width, height, cornerRadius,
|
|
1005
|
+
// `any` (not Record<string, any>) so the inline `style` string below is
|
|
1006
|
+
// accepted — matches the original render helpers' loosely-typed styles arg.
|
|
1007
|
+
styles) {
|
|
1008
|
+
var _a, _b;
|
|
1009
|
+
const spec = def.outline(width, height, { radius: cornerRadius, radiusY: true });
|
|
1010
|
+
if (def.styleMode === 'spread') {
|
|
1011
|
+
// TWO bugs met on this line, found independently by the export and the theming
|
|
1012
|
+
// work. Both are the same root cause — a 'spread' shape paints through
|
|
1013
|
+
// PRESENTATION ATTRIBUTES — and the fix for one subsumes the other:
|
|
1014
|
+
//
|
|
1015
|
+
// 1. A presentation attribute LOSES to any author stylesheet rule. So
|
|
1016
|
+
// `[data-grafloria-instance] .diagram-node { fill: var(--grafloria-node-fill) }`
|
|
1017
|
+
// beat `fill="#e8f5e9"`, and in CSS mode an ellipse/hexagon (and every
|
|
1018
|
+
// 'spread' figure) silently rendered the THEME fill instead of its own.
|
|
1019
|
+
// 'inline' shapes never had this, because they hoist the same values into
|
|
1020
|
+
// an inline `style`, which DOES beat the stylesheet — the two style modes
|
|
1021
|
+
// simply disagreed about the cascade.
|
|
1022
|
+
// 2. An attribute cannot hold a CSS variable: `fill="var(--grafloria-…)"` is
|
|
1023
|
+
// invalid, the attribute is dropped, and the shape paints BLACK. Wave 4
|
|
1024
|
+
// made that reachable, because a theme-bound property (`themeRef(...)`)
|
|
1025
|
+
// emits exactly such a var() reference.
|
|
1026
|
+
//
|
|
1027
|
+
// Hoisting EVERY paint into the inline style fixes both: inline style outranks
|
|
1028
|
+
// the stylesheet (1) and is the one place var() is legal (2). The presentation
|
|
1029
|
+
// attributes are KEPT, because Canvas/programmatic consumers and existing tests
|
|
1030
|
+
// read props.fill — and where the value is a var(), the inline style is what
|
|
1031
|
+
// actually paints.
|
|
1032
|
+
const inlineStyle = composeInlineStyle(styles);
|
|
1033
|
+
// Literal paints KEEP their presentation attribute (Canvas + programmatic
|
|
1034
|
+
// consumers and the existing tests read props.fill). A var() paint DROPS it:
|
|
1035
|
+
// the attribute is invalid, so it is not merely outranked — it is garbage that
|
|
1036
|
+
// every downstream consumer would have to special-case (the headless exporter
|
|
1037
|
+
// would write `fill="var(--…)"` into a standalone file, where nothing resolves
|
|
1038
|
+
// it and the shape paints BLACK).
|
|
1039
|
+
const { rest } = hoistCssVarPaints(styles);
|
|
1040
|
+
return {
|
|
1041
|
+
type: spec.el,
|
|
1042
|
+
props: Object.assign(Object.assign(Object.assign({}, rest), (inlineStyle ? { style: mergeInlineStyle(styles.style, inlineStyle) } : {})), spec.geom),
|
|
1043
|
+
};
|
|
1044
|
+
}
|
|
1045
|
+
// Split geometry into pre/post so deferred keys (rect rx/ry) win over any
|
|
1046
|
+
// same-named key arriving via the pass-through styles.
|
|
1047
|
+
const deferKeys = (_a = def.bodyDeferGeomKeys) !== null && _a !== void 0 ? _a : [];
|
|
1048
|
+
const pre = {};
|
|
1049
|
+
const post = {};
|
|
1050
|
+
for (const [k, v] of Object.entries(spec.geom)) {
|
|
1051
|
+
(deferKeys.includes(k) ? post : pre)[k] = v;
|
|
1052
|
+
}
|
|
1053
|
+
const { fill, stroke, strokeWidth, className } = styles, rest = tslib_1.__rest(styles, ["fill", "stroke", "strokeWidth", "className"]);
|
|
1054
|
+
for (const k of (_b = def.bodyStripKeys) !== null && _b !== void 0 ? _b : [])
|
|
1055
|
+
delete rest[k];
|
|
1056
|
+
const inlineStyle = composeInlineStyle({ fill, stroke, strokeWidth });
|
|
1057
|
+
return {
|
|
1058
|
+
type: spec.el,
|
|
1059
|
+
props: Object.assign(Object.assign(Object.assign(Object.assign(Object.assign({}, pre), (className ? { className } : {})), (inlineStyle ? { style: inlineStyle } : {})), rest), post),
|
|
1060
|
+
};
|
|
1061
|
+
}
|
|
1062
|
+
/**
|
|
1063
|
+
* The paint values a node body must carry as an INLINE style, so they beat the
|
|
1064
|
+
* themed `.diagram-node` stylesheet rule (a presentation attribute would not).
|
|
1065
|
+
* Returns '' when no layer above the theme set anything — which is what lets an
|
|
1066
|
+
* untouched node still fall back to the theme.
|
|
1067
|
+
*/
|
|
1068
|
+
function composeInlineStyle(styles) {
|
|
1069
|
+
return [
|
|
1070
|
+
styles.fill ? `fill: ${styles.fill}` : '',
|
|
1071
|
+
styles.stroke ? `stroke: ${styles.stroke}` : '',
|
|
1072
|
+
styles.strokeWidth !== undefined ? `stroke-width: ${styles.strokeWidth}` : '',
|
|
1073
|
+
]
|
|
1074
|
+
.filter(Boolean)
|
|
1075
|
+
.join('; ');
|
|
1076
|
+
}
|
|
1077
|
+
/** Append the hoisted paint to a style the caller already had (string or object form). */
|
|
1078
|
+
function mergeInlineStyle(existing, hoisted) {
|
|
1079
|
+
if (existing === null || existing === undefined || existing === '')
|
|
1080
|
+
return hoisted;
|
|
1081
|
+
if (typeof existing === 'string')
|
|
1082
|
+
return `${existing}; ${hoisted}`;
|
|
1083
|
+
const parts = Object.entries(existing)
|
|
1084
|
+
.filter(([, v]) => v !== null && v !== undefined)
|
|
1085
|
+
.map(([k, v]) => `${k.replace(/([a-z0-9])([A-Z])/g, '$1-$2').toLowerCase()}: ${v}`);
|
|
1086
|
+
return [...parts, hoisted].join('; ');
|
|
1087
|
+
}
|
|
1088
|
+
/** Selection-highlight VNode: the outline grown by `padding`, plus baseProps. */
|
|
1089
|
+
function buildShapeSelection(def, width, height, padding, baseProps) {
|
|
1090
|
+
const spec = def.outline(width, height, { grow: padding, radius: 6, radiusY: true });
|
|
1091
|
+
return { type: spec.el, props: Object.assign(Object.assign({}, spec.geom), baseProps) };
|
|
1092
|
+
}
|
|
1093
|
+
/** Drop-shadow VNode: the outline offset by (offset, offset), plus baseProps. */
|
|
1094
|
+
function buildShapeShadow(def, width, height, offset, borderRadius, baseProps) {
|
|
1095
|
+
const spec = def.outline(width, height, {
|
|
1096
|
+
dx: offset,
|
|
1097
|
+
dy: offset,
|
|
1098
|
+
radius: borderRadius,
|
|
1099
|
+
radiusAlways: true,
|
|
1100
|
+
radiusY: false,
|
|
1101
|
+
});
|
|
1102
|
+
return { type: spec.el, props: Object.assign(Object.assign({}, spec.geom), baseProps) };
|
|
1103
|
+
}
|
|
1104
|
+
//# sourceMappingURL=shape-registry.js.map
|