@grafloria/element 0.3.17 → 0.3.19
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/jest.config.ts +16 -0
- package/package.json +2 -2
- package/project.json +44 -0
- package/src/front-door-probe.spec.ts +173 -0
- package/src/index.d.ts +2 -1
- package/src/index.js +11 -2
- package/src/index.js.map +1 -1
- package/src/index.ts +804 -0
- package/src/lib/dashboard-kit/dashboard.js.map +1 -1
- package/src/lib/dashboard-kit/dashboard.spec.ts +821 -0
- package/src/lib/dashboard-kit/dashboard.ts +906 -0
- package/src/lib/dashboard-kit/grid-binder.js +16 -15
- package/src/lib/dashboard-kit/grid-binder.js.map +1 -1
- package/src/lib/dashboard-kit/grid-binder.ts +1976 -0
- package/src/lib/dashboard-kit/grid-mapping.js.map +1 -1
- package/src/lib/dashboard-kit/grid-mapping.spec.ts +308 -0
- package/src/lib/dashboard-kit/grid-mapping.ts +283 -0
- package/src/lib/dashboard-kit/index.js.map +1 -1
- package/src/lib/dashboard-kit/index.ts +56 -0
- package/src/lib/dashboard-kit/styles.js +9 -3
- package/src/lib/dashboard-kit/styles.js.map +1 -1
- package/src/lib/dashboard-kit/styles.ts +206 -0
- package/src/lib/dashboard-kit/widgets.js.map +1 -1
- package/src/lib/dashboard-kit/widgets.spec.ts +239 -0
- package/src/lib/dashboard-kit/widgets.ts +484 -0
- package/src/lib/diagram-kit/card.js.map +1 -1
- package/src/lib/diagram-kit/card.ts +219 -0
- package/src/lib/diagram-kit/diagram-kit.spec.ts +465 -0
- package/src/lib/diagram-kit/editing.js +45 -54
- package/src/lib/diagram-kit/editing.js.map +1 -1
- package/src/lib/diagram-kit/editing.spec.ts +172 -0
- package/src/lib/diagram-kit/editing.ts +493 -0
- package/src/lib/diagram-kit/er.js.map +1 -1
- package/src/lib/diagram-kit/er.ts +246 -0
- package/src/lib/diagram-kit/handles.js.map +1 -1
- package/src/lib/diagram-kit/handles.spec.ts +224 -0
- package/src/lib/diagram-kit/handles.ts +375 -0
- package/src/lib/diagram-kit/index.d.ts +1 -0
- package/src/lib/diagram-kit/index.js +11 -1
- package/src/lib/diagram-kit/index.js.map +1 -1
- package/src/lib/diagram-kit/index.ts +66 -0
- package/src/lib/diagram-kit/join-guidance.d.ts +116 -0
- package/src/lib/diagram-kit/join-guidance.js +331 -0
- package/src/lib/diagram-kit/join-guidance.js.map +1 -0
- package/src/lib/diagram-kit/join-guidance.spec.ts +241 -0
- package/src/lib/diagram-kit/join-guidance.ts +390 -0
- package/src/lib/diagram-kit/rows.js.map +1 -1
- package/src/lib/diagram-kit/rows.ts +174 -0
- package/src/lib/diagram-kit/styles.js.map +1 -1
- package/src/lib/diagram-kit/styles.ts +118 -0
- package/src/lib/diagram-kit/uml.js.map +1 -1
- package/src/lib/diagram-kit/uml.ts +213 -0
- package/src/lib/diagram-kit/update.js.map +1 -1
- package/src/lib/diagram-kit/update.spec.ts +208 -0
- package/src/lib/diagram-kit/update.ts +324 -0
- package/src/lib/grafloria-flow-element.js.map +1 -1
- package/src/lib/grafloria-flow-element.spec.ts +290 -0
- package/src/lib/grafloria-flow-element.ts +298 -0
- package/src/lib/grafloria.js.map +1 -1
- package/src/lib/grafloria.ts +151 -0
- package/src/lib/load.js.map +1 -1
- package/src/lib/load.spec.ts +565 -0
- package/src/lib/load.ts +359 -0
- package/src/lib/node-type-registry.js.map +1 -1
- package/src/lib/node-type-registry.ts +76 -0
- package/src/lib/stencil-kit/builders.js.map +1 -1
- package/src/lib/stencil-kit/builders.ts +58 -0
- package/src/lib/stencil-kit/card-builders.js.map +1 -1
- package/src/lib/stencil-kit/card-builders.ts +113 -0
- package/src/lib/stencil-kit/index.js.map +1 -1
- package/src/lib/stencil-kit/index.ts +17 -0
- package/src/lib/stencil-kit/palette.js +60 -6
- package/src/lib/stencil-kit/palette.js.map +1 -1
- package/src/lib/stencil-kit/palette.ts +482 -0
- 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/shape-data.js.map +1 -1
- package/src/lib/stencil-kit/shape-data.spec.ts +470 -0
- package/src/lib/stencil-kit/shape-data.ts +680 -0
- package/src/lib/stencil-kit/styles.js +15 -0
- package/src/lib/stencil-kit/styles.js.map +1 -1
- package/src/lib/stencil-kit/styles.ts +126 -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/index.js.map +1 -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/dashboard.js.map +1 -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-binder.js.map +1 -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/grid-mapping.js.map +1 -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/index.js.map +1 -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/styles.js.map +1 -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/dashboard-kit/widgets.js.map +1 -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/card.js.map +1 -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/editing.js.map +1 -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/er.js.map +1 -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/handles.js.map +1 -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/index.js.map +1 -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/join-guidance.js.map +1 -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/rows.js.map +1 -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/styles.js.map +1 -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/uml.js.map +1 -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/diagram-kit/update.js.map +1 -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-flow-element.js.map +1 -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/grafloria.js.map +1 -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/load.js.map +1 -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/node-type-registry.js.map +1 -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/builders.js.map +1 -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/card-builders.js.map +1 -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/index.js.map +1 -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/palette.js.map +1 -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/shape-data.js.map +1 -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/element/src/lib/stencil-kit/styles.js.map +1 -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/component-adapter.interface.js.map +1 -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/adapters/index.js.map +1 -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/ClipboardManager.js.map +1 -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/clipboard/index.js.map +1 -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/apply-op.js.map +1 -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/capture.js.map +1 -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/index.js.map +1 -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/integrity.js.map +1 -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/lww.js.map +1 -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-log.js.map +1 -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/op.js.map +1 -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/replica.js.map +1 -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/collab/undo.js.map +1 -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/Command.js.map +1 -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/CommandManager.js.map +1 -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/AddGroupCommand.js.map +1 -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/AddLinkCommand.js.map +1 -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/AddNodeCommand.js.map +1 -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/AddToGroupCommand.js.map +1 -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/AlignCommands.js.map +1 -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/CollapseGroupCommand.js.map +1 -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/CopyCommand.js.map +1 -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/CutCommand.js.map +1 -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/DeleteSelectionCommand.js.map +1 -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/DuplicateCommand.js.map +1 -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/ExpandGroupCommand.js.map +1 -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/MoveGroupCommand.js.map +1 -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/MoveNodeCommand.js.map +1 -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/NodeZOrderCommands.js.map +1 -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/PasteCommand.js.map +1 -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/PortCommands.js.map +1 -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/ReconnectLinkCommand.js.map +1 -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/RemoveFromGroupCommand.js.map +1 -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/RemoveGroupCommand.js.map +1 -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/RemoveLinkCommand.js.map +1 -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/RemoveNodeCommand.js.map +1 -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/ResizeNodeCommand.js.map +1 -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/RotateNodeCommand.js.map +1 -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/SetFlexItemCommand.js.map +1 -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/SetGridItemCommand.js.map +1 -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/SetLayoutCommand.js.map +1 -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/SetLinkDisplayLabelCommand.js.map +1 -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/SetLinkLabelCommand.js.map +1 -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/SetLinkLabelsCommand.js.map +1 -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/SetLinkPathTypeCommand.js.map +1 -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/SetLinkPointsCommand.js.map +1 -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/SetNodeDataCommand.js.map +1 -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/SetNodeLabelCommand.js.map +1 -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/SetNodeShapeConfigCommand.js.map +1 -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/SetNodeStyleCommand.js.map +1 -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/SetParentCommand.js.map +1 -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/SetStrokePointsCommand.js.map +1 -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/StrokeLifecycleCommands.js.map +1 -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/UpdateLinkStyleCommand.js.map +1 -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/index.js.map +1 -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/remapNodePortIds.js.map +1 -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/basic/resolveLinkNodeIds.js.map +1 -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/BatchCommand.js.map +1 -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/MacroCommand.js.map +1 -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/composite/index.js.map +1 -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/commands/index.js.map +1 -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/comment-store.js.map +1 -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/index.js.map +1 -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/mentions.js.map +1 -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/read-state.js.map +1 -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/comments/types.js.map +1 -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/InteractionConfig.js.map +1 -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/config/index.js.map +1 -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/DSL.js.map +1 -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/StyleParser.js.map +1 -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/TemplateParser.js.map +1 -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/advanced/index.js.map +1 -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/detector/LayoutDetector.js.map +1 -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/BPMNGenerator.js.map +1 -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/BPMNParser.js.map +1 -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/ERDGenerator.js.map +1 -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/ERDParser.js.map +1 -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/ERDTransformer.js.map +1 -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/UMLGenerator.js.map +1 -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/UMLParser.js.map +1 -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/extended/index.js.map +1 -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/DSLFormatter.js.map +1 -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/DSLGenerator.js.map +1 -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/generator/DiagramAnalyzer.js.map +1 -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/index.js.map +1 -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/lexer/Lexer.js.map +1 -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/MermaidClass.js.map +1 -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/MermaidER.js.map +1 -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/MermaidState.js.map +1 -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/index.js.map +1 -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/layout.js.map +1 -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/mermaid/lines.js.map +1 -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/parser/Parser.js.map +1 -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/BidirectionalSync.js.map +1 -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/IntegratedSyncManager.js.map +1 -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/LayoutApplicator.js.map +1 -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/SyncStateManager.js.map +1 -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/sync/index.js.map +1 -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/transformer/ASTTransformer.js.map +1 -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/ASTNode.js.map +1 -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/dsl/types/Token.js.map +1 -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/DiagramEngine.js.map +1 -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/DiagramMode.js.map +1 -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/DiagramModeTypes.js.map +1 -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/ModeManager.js.map +1 -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/engine/index.js.map +1 -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/EventBus.js.map +1 -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/events/index.js.map +1 -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/index.js.map +1 -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/GroupCollapseService.js.map +1 -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/GroupMembershipService.js.map +1 -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/SemanticMembershipService.js.map +1 -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/SwimlaneService.js.map +1 -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/interaction/index.js.map +1 -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/importDrawio.js.map +1 -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/index.js.map +1 -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/interop/drawio/xml.js.map +1 -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/CompoundLayoutService.js.map +1 -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/ILayoutAlgorithm.js.map +1 -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/LayoutManager.js.map +1 -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/SmartSpacingCalculator.js.map +1 -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/ViewportTransform.js.map +1 -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/ForceDirectedLayoutAlgorithm.js.map +1 -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/GridLayoutAlgorithm.js.map +1 -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/HierarchicalLayoutAlgorithm.js.map +1 -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/algorithms/HybridLayoutAlgorithm.js.map +1 -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/community-layout-adapter.js.map +1 -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/component-packing.js.map +1 -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/dagre-layout-adapter.js.map +1 -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/edge-bundling.interface.js.map +1 -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-layout-adapter.js.map +1 -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/elk-loader.js.map +1 -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/force-layout-adapter.js.map +1 -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/grid-pack/grid-pack-engine.js.map +1 -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/mental-map.js.map +1 -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/incremental-layout.interface.js.map +1 -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/index.js.map +1 -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-adapter.interface.js.map +1 -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-auto-select.js.map +1 -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-constraints.interface.js.map +1 -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-graph.js.map +1 -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-history.js.map +1 -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-host.js.map +1 -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-presets.js.map +1 -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-extended.js.map +1 -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-quality-metrics.js.map +1 -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-registry.js.map +1 -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/layout.service.js.map +1 -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/overlap-removal.js.map +1 -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-aware-layout.interface.js.map +1 -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/port-label-bridge.js.map +1 -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/portfolio-layouts.js.map +1 -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/rng.js.map +1 -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/spectral-layout-adapter.js.map +1 -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/steppable-layout.js.map +1 -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/subgraph-layout.interface.js.map +1 -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/layered-layout.js.map +1 -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/sugiyama/sugiyama.js.map +1 -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/tree-layout.js.map +1 -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/layout/types.js.map +1 -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/lib/performance/mobile-performance.service.js.map +1 -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/DiagramEntity.js.map +1 -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/DiagramModel.js.map +1 -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/GroupModel.js.map +1 -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/LinkModel.js.map +1 -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/NodeModel.js.map +1 -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/PortModel.js.map +1 -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/StrokeModel.js.map +1 -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/index.js.map +1 -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/models/readonly-lock.js.map +1 -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/LRUCache.js.map +1 -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/PerformanceMonitor.js.map +1 -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/SpatialIndex.js.map +1 -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/performance/index.js.map +1 -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/PluginManager.js.map +1 -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/plugins/index.js.map +1 -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/connection-rules.js.map +1 -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/dynamic-ports.js.map +1 -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/index.js.map +1 -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-groups.js.map +1 -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-type-registry.js.map +1 -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/ports/port-types.js.map +1 -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/HtmlTemplateRenderer.js.map +1 -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/LemonadeJSRenderer.js.map +1 -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/rendering/index.js.map +1 -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/LiveReroutingEngine.js.map +1 -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/ObstacleIndex.js.map +1 -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/ObstacleMap.js.map +1 -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/ObstacleMapBuilder.js.map +1 -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/PathSimplifier.js.map +1 -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/RoutingEngine.js.map +1 -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/AStarRouter.js.map +1 -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/DijkstraRouter.js.map +1 -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/ElkRouter.js.map +1 -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/ManhattanRouter.js.map +1 -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/OrthogonalRouter.js.map +1 -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/StraightRouter.js.map +1 -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/algorithms/VisibilityGraphRouter.js.map +1 -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/GlobalRouteSolver.js.map +1 -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/global/solver-host.js.map +1 -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/index.js.map +1 -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/routing/types.js.map +1 -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/SelectionManager.js.map +1 -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/selection/index.js.map +1 -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/DiagramMigrations.js.map +1 -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/DiagramValidator.js.map +1 -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/DocumentEnvelope.js.map +1 -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/Incremental.js.map +1 -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/Serializer.js.map +1 -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/Subgraph.js.map +1 -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/serialization/TextFormat.js.map +1 -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/ConnectionStateManager.js.map +1 -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/DiagramStore.js.map +1 -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/state/index.js.map +1 -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/awareness.js.map +1 -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/batcher.js.map +1 -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/causal-buffer.js.map +1 -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/index.js.map +1 -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/protocol.js.map +1 -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/sync-adapter.js.map +1 -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/transport.js.map +1 -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/broadcast-channel.js.map +1 -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/memory.js.map +1 -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/unreliable.js.map +1 -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/transports/websocket.js.map +1 -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/sync/version-vector.js.map +1 -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/common-templates.js.map +1 -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/data-viz-templates.js.map +1 -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/erd-templates.js.map +1 -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/index.js.map +1 -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/integration.js.map +1 -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/template-library/workflow-templates.js.map +1 -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/NodeFactory.js.map +1 -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/NodeTemplate.js.map +1 -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/TemplateLoader.js.map +1 -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/TemplateRegistry.js.map +1 -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-business-rule-task.template.js.map +1 -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-end-event.template.js.map +1 -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-error-event.template.js.map +1 -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-exclusive-gateway.template.js.map +1 -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-inclusive-gateway.template.js.map +1 -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-intermediate-event.template.js.map +1 -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-manual-task.template.js.map +1 -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-message-event.template.js.map +1 -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-parallel-gateway.template.js.map +1 -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-script-task.template.js.map +1 -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-service-task.template.js.map +1 -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-start-event.template.js.map +1 -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-task.template.js.map +1 -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-timer-event.template.js.map +1 -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/bpmn-user-task.template.js.map +1 -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/bpmn/index.js.map +1 -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-associative-entity.template.js.map +1 -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-attribute.template.js.map +1 -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-bridge-entity.template.js.map +1 -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-composite-attribute.template.js.map +1 -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-derived-attribute.template.js.map +1 -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-discriminator.template.js.map +1 -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-entity.template.js.map +1 -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-isa.template.js.map +1 -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-key-attribute.template.js.map +1 -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-multivalued-attribute.template.js.map +1 -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-optional-attribute.template.js.map +1 -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-partial-key.template.js.map +1 -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-relationship.template.js.map +1 -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-subtype.template.js.map +1 -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-supertype.template.js.map +1 -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-table.template.js.map +1 -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-view.template.js.map +1 -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-entity.template.js.map +1 -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/erd-weak-relationship.template.js.map +1 -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/erd/index.js.map +1 -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-connector.template.js.map +1 -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-data.template.js.map +1 -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-decision.template.js.map +1 -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-delay.template.js.map +1 -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-display.template.js.map +1 -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-document.template.js.map +1 -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-input.template.js.map +1 -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-manual-operation.template.js.map +1 -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-merge.template.js.map +1 -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-or.template.js.map +1 -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-predefined-process.template.js.map +1 -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-preparation.template.js.map +1 -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-process.template.js.map +1 -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-stored-data.template.js.map +1 -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-summing-junction.template.js.map +1 -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/flowchart-terminal.template.js.map +1 -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/flowchart/index.js.map +1 -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/index.js.map +1 -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/register.js.map +1 -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/index.js.map +1 -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-abstract-class.template.js.map +1 -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-activation.template.js.map +1 -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-partition.template.js.map +1 -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-activity.template.js.map +1 -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-actor.template.js.map +1 -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-class.template.js.map +1 -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-collaboration.template.js.map +1 -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-component.template.js.map +1 -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-datatype.template.js.map +1 -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-decision.template.js.map +1 -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-enum.template.js.map +1 -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-node.template.js.map +1 -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-final-state.template.js.map +1 -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-fork.template.js.map +1 -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-node.template.js.map +1 -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-initial-state.template.js.map +1 -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-interface.template.js.map +1 -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-join.template.js.map +1 -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-lifeline.template.js.map +1 -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-merge.template.js.map +1 -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-node.template.js.map +1 -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-note.template.js.map +1 -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-object.template.js.map +1 -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-package.template.js.map +1 -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-part.template.js.map +1 -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-port.template.js.map +1 -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-primitive-type.template.js.map +1 -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-signal.template.js.map +1 -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-state.template.js.map +1 -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/generated/uml/uml-use-case.template.js.map +1 -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/index.js.map +1 -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/templates/stencils.js.map +1 -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/bpmn.js.map +1 -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/erd.js.map +1 -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/flowchart.js.map +1 -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/index.js.map +1 -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/domain/uml.js.map +1 -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/event.types.js.map +1 -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/geometry.types.js.map +1 -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/index.js.map +1 -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/layout.types.js.map +1 -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/model.types.js.map +1 -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/performance.types.js.map +1 -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/types/plugin.types.js.map +1 -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/deep-clone.js.map +1 -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/geometry.js.map +1 -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/id.js.map +1 -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/index.js.map +1 -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/utils/transform.js.map +1 -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/ConnectionGroupValidator.js.map +1 -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/TypeRegistry.js.map +1 -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/ValidationEngine.js.map +1 -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/engine/src/validation/index.js.map +1 -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/diagram-outline.js.map +1 -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/focus-containment.js.map +1 -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/graph-topology.js.map +1 -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/index.js.map +1 -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/live-region.js.map +1 -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/outline-view.js.map +1 -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/reduced-motion.js.map +1 -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/a11y/semantics.js.map +1 -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-context.js.map +1 -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/canvas-renderer.js.map +1 -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/dirty-region.js.map +1 -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/index.js.map +1 -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/path-geometry.js.map +1 -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/render-backend.js.map +1 -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/style-resolution.js.map +1 -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/tier-policy.js.map +1 -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/canvas/vnode-painter.js.map +1 -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-overlay.js.map +1 -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-panel.js.map +1 -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/comment-pins.js.map +1 -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/comments/index.js.map +1 -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/assets.js.map +1 -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/batch.js.map +1 -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/bounds.js.map +1 -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/capture-host.js.map +1 -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/custom-nodes.js.map +1 -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/index.js.map +1 -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/node-raster.js.map +1 -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/pagination.js.map +1 -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/flate.js.map +1 -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/index.js.map +1 -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-export.js.map +1 -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-path.js.map +1 -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/pdf-primitives.js.map +1 -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/pdf/png.js.map +1 -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/raster.js.map +1 -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/round-trip.js.map +1 -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/scope.js.map +1 -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/style-flattener.js.map +1 -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/svg-export.js.map +1 -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/export/vnode-serializer.js.map +1 -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/capabilities.js.map +1 -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/capability-factory.js.map +1 -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/attach.js.map +1 -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/background.js.map +1 -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/controls.js.map +1 -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/components/minimap.js.map +1 -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/diagram-registry.js.map +1 -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/disposable.js.map +1 -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/extension-host.js.map +1 -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/index.js.map +1 -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/link-pipeline.js.map +1 -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/manifest.js.map +1 -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/node-component.js.map +1 -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/plugins-loader.js.map +1 -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/portal.js.map +1 -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/public-api.js.map +1 -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/registry-scope.js.map +1 -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/ext/tools.js.map +1 -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/index.js.map +1 -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/create-diagram.js.map +1 -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/diagram-instance.js.map +1 -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/dom-event-binder.js.map +1 -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/index.js.map +1 -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/layers.js.map +1 -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/model-input.js.map +1 -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/render-scheduler.js.map +1 -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/instance/wheel-scroll-yield.js.map +1 -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/ControlPointEditor.js.map +1 -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/WaypointEditor.js.map +1 -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/highlighters.js.map +1 -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/in-place-editor.js.map +1 -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/index.js.map +1 -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/ink-overlay.js.map +1 -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/interaction-controller.js.map +1 -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/keyboard-navigation.js.map +1 -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/selection-tools.js.map +1 -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/snapping.js.map +1 -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/touch-gestures.js.map +1 -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/interaction/whiteboard-tools.js.map +1 -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/host-culling.js.map +1 -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/index.js.map +1 -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/progressive-mounter.js.map +1 -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/types.js.map +1 -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/lazy/view-lifecycle.js.map +1 -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/index.js.map +1 -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/perf-hud.js.map +1 -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/perf/quality-governor.js.map +1 -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/index.js.map +1 -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/platform/platform.js.map +1 -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/bind-presence.js.map +1 -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/index.js.map +1 -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/presence/presence-overlay.js.map +1 -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/index.js.map +1 -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/presentation.js.map +1 -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/presentation/viewport-channel.js.map +1 -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-lifecycle.js.map +1 -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-performance.service.js.map +1 -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-sequencer.js.map +1 -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/animation.service.js.map +1 -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/services/custom-animation-registry.js.map +1 -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/index.js.map +1 -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/ssr/render-to-static.js.map +1 -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/ArrowRenderer.js.map +1 -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/JumpPointDetector.js.map +1 -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/JumpPointRenderer.js.map +1 -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/LabelRenderer.js.map +1 -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/auto-size.js.map +1 -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/channel-nudging.js.map +1 -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-optimizer.js.map +1 -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/edge-templates.js.map +1 -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/html-node.js.map +1 -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/index.js.map +1 -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-fanout.js.map +1 -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/link-hit-test.js.map +1 -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/motion-tracker.js.map +1 -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-sizing.js.map +1 -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/node-toolbar.js.map +1 -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/notation-shapes.js.map +1 -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/paint-servers.js.map +1 -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/panel.js.map +1 -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/path-outline.js.map +1 -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-glyph.js.map +1 -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-label.js.map +1 -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-layout.js.map +1 -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-positioning.js.map +1 -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/port-spots.js.map +1 -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-memo.js.map +1 -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/route-solver-bridge.js.map +1 -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/shape-registry.js.map +1 -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/stroke-layer.js.map +1 -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/svg-renderer.js.map +1 -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/svg/text-block.js.map +1 -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/color-mode.js.map +1 -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/contrast.js.map +1 -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-dark-theme.js.map +1 -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-light-theme.js.map +1 -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/default-theme-set.js.map +1 -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/high-contrast-theme.js.map +1 -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/index.js.map +1 -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-cascade.js.map +1 -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/style-registry.js.map +1 -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-a11y.js.map +1 -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-css.js.map +1 -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-ref.js.map +1 -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/theme-vars.js.map +1 -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/themes/token-bridge.js.map +1 -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/geometry.types.js.map +1 -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/index.js.map +1 -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/conditions.js.map +1 -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/editor-types.js.map +1 -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/groups.js.map +1 -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/index.js.map +1 -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/property-definition.js.map +1 -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/schema.js.map +1 -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/property-schema/validation.js.map +1 -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/renderer.interface.js.map +1 -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/theme.types.js.map +1 -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/types/vnode.types.js.map +1 -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-presets.js.map +1 -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-priority.js.map +1 -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/animation-utils.js.map +1 -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/utils/lru-cache.js.map +1 -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/index.js.map +1 -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/viewport/viewport-controller.js.map +1 -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/container-id-generator.js.map +1 -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/foreign-object.js.map +1 -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/index.js.map +1 -0
- package/src/libs/renderer/src/vnode/patch.d.ts +189 -0
- package/src/libs/renderer/src/vnode/patch.js +564 -0
- package/src/libs/renderer/src/vnode/patch.js.map +1 -0
- package/src/reachability.spec.ts +173 -0
- package/tsconfig.esm.json +9 -0
- package/tsconfig.json +24 -0
- package/tsconfig.lib.json +10 -0
- package/tsconfig.spec.json +14 -0
|
@@ -0,0 +1,2190 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
// DiagramEngine - Main orchestrator for diagram functionality
|
|
3
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
4
|
+
exports.DiagramEngine = void 0;
|
|
5
|
+
const tslib_1 = require("tslib");
|
|
6
|
+
const EventBus_1 = require("../events/EventBus");
|
|
7
|
+
const TemplateRegistry_1 = require("../templates/TemplateRegistry");
|
|
8
|
+
const DiagramEntity_1 = require("../models/DiagramEntity");
|
|
9
|
+
const DiagramStore_1 = require("../state/DiagramStore");
|
|
10
|
+
const CommandManager_1 = require("../commands/CommandManager");
|
|
11
|
+
const PluginManager_1 = require("../plugins/PluginManager");
|
|
12
|
+
const TypeRegistry_1 = require("../validation/TypeRegistry");
|
|
13
|
+
const ValidationEngine_1 = require("../validation/ValidationEngine");
|
|
14
|
+
const Serializer_1 = require("../serialization/Serializer");
|
|
15
|
+
const PerformanceMonitor_1 = require("../performance/PerformanceMonitor");
|
|
16
|
+
const DiagramModel_1 = require("../models/DiagramModel");
|
|
17
|
+
const NodeModel_1 = require("../models/NodeModel");
|
|
18
|
+
const LinkModel_1 = require("../models/LinkModel");
|
|
19
|
+
const GroupModel_1 = require("../models/GroupModel"); // Phase 1.6c
|
|
20
|
+
const AddNodeCommand_1 = require("../commands/basic/AddNodeCommand");
|
|
21
|
+
const RemoveNodeCommand_1 = require("../commands/basic/RemoveNodeCommand");
|
|
22
|
+
const dynamic_ports_1 = require("../ports/dynamic-ports");
|
|
23
|
+
const AddLinkCommand_1 = require("../commands/basic/AddLinkCommand");
|
|
24
|
+
const RemoveLinkCommand_1 = require("../commands/basic/RemoveLinkCommand");
|
|
25
|
+
const basic_1 = require("../commands/basic"); // Phase 1.6c
|
|
26
|
+
const basic_2 = require("../commands/basic"); // Phase 1.7
|
|
27
|
+
const basic_3 = require("../commands/basic"); // Phase 1.8
|
|
28
|
+
const ClipboardManager_1 = require("../clipboard/ClipboardManager"); // Phase 1.8
|
|
29
|
+
const SelectionManager_1 = require("../selection/SelectionManager"); // Phase 1.8a
|
|
30
|
+
const DiagramMode_1 = require("./DiagramMode");
|
|
31
|
+
const ModeManager_1 = require("./ModeManager");
|
|
32
|
+
// Phase 1: Interaction modes
|
|
33
|
+
const ConnectionStateManager_1 = require("../state/ConnectionStateManager");
|
|
34
|
+
const InteractionConfig_1 = require("../config/InteractionConfig");
|
|
35
|
+
// Routing imports
|
|
36
|
+
const RoutingEngine_1 = require("../routing/RoutingEngine");
|
|
37
|
+
const LiveReroutingEngine_1 = require("../routing/LiveReroutingEngine"); // Phase 0.2
|
|
38
|
+
const ObstacleMapBuilder_1 = require("../routing/ObstacleMapBuilder");
|
|
39
|
+
const StraightRouter_1 = require("../routing/algorithms/StraightRouter");
|
|
40
|
+
const OrthogonalRouter_1 = require("../routing/algorithms/OrthogonalRouter");
|
|
41
|
+
const AStarRouter_1 = require("../routing/algorithms/AStarRouter");
|
|
42
|
+
const DijkstraRouter_1 = require("../routing/algorithms/DijkstraRouter");
|
|
43
|
+
const VisibilityGraphRouter_1 = require("../routing/algorithms/VisibilityGraphRouter");
|
|
44
|
+
// Wave 7 (Auto-layout) — Card 0: the unified layout entry point.
|
|
45
|
+
const layout_registry_1 = require("../layout/layout-registry");
|
|
46
|
+
const rng_1 = require("../layout/rng");
|
|
47
|
+
const mental_map_1 = require("../layout/incremental/mental-map");
|
|
48
|
+
// Wave 7 — Card 4: nested container / subgraph layout.
|
|
49
|
+
const CompoundLayoutService_1 = require("../layout/CompoundLayoutService");
|
|
50
|
+
// Wave 7 — Card 3: off-main-thread layout.
|
|
51
|
+
const layout_host_1 = require("../layout/layout-host");
|
|
52
|
+
const layout_graph_1 = require("../layout/layout-graph");
|
|
53
|
+
class DiagramEngine {
|
|
54
|
+
constructor(config = {}) {
|
|
55
|
+
// Phase 0.2: Live rerouting engine
|
|
56
|
+
this.liveReroutingEngine = null;
|
|
57
|
+
// Current diagram
|
|
58
|
+
this.diagram = null;
|
|
59
|
+
// Disposer functions for the engine's own listeners on the attached diagram.
|
|
60
|
+
// Stored on attach and invoked on detach so switching diagrams unsubscribes
|
|
61
|
+
// cleanly without accumulating duplicate handlers (and without touching the
|
|
62
|
+
// diagram's contents).
|
|
63
|
+
this.diagramDisposers = [];
|
|
64
|
+
// Wave 6 (Card 7): re-entry guard for the dynamic-port allocator.
|
|
65
|
+
this.reconcilingDynamicPorts = false;
|
|
66
|
+
// Wave 2 (Edges & links): transient endpoint-reconnection preview (see type).
|
|
67
|
+
this.reconnectionPreview = null;
|
|
68
|
+
this.proximityPreview = null;
|
|
69
|
+
this.snapGuides = null;
|
|
70
|
+
// State
|
|
71
|
+
this.initialized = false;
|
|
72
|
+
this.destroyed = false;
|
|
73
|
+
this.config = config;
|
|
74
|
+
// Initialize core systems
|
|
75
|
+
this.eventBus = new EventBus_1.EventBus();
|
|
76
|
+
this.store = new DiagramStore_1.DiagramStore();
|
|
77
|
+
// Empty by default (a plain app pays nothing); registerTemplateLibrary() /
|
|
78
|
+
// registerGeneratedTemplates() populate it. Closes the documented-but-absent
|
|
79
|
+
// `engine.templateRegistry` the template-library integration already targets.
|
|
80
|
+
this.templateRegistry = new TemplateRegistry_1.TemplateRegistry(this.eventBus);
|
|
81
|
+
// Phase 1: Initialize interaction config
|
|
82
|
+
this.interactionConfig = Object.assign(Object.assign({}, InteractionConfig_1.DEFAULT_INTERACTION_CONFIG), config.interaction);
|
|
83
|
+
// Phase 1: Initialize connection state manager
|
|
84
|
+
this.connectionStateManager = new ConnectionStateManager_1.ConnectionStateManager(this.eventBus);
|
|
85
|
+
// CRITICAL FIX: Listen for connection complete events and create the actual link
|
|
86
|
+
this.eventBus.on('connection:complete', (event) => tslib_1.__awaiter(this, void 0, void 0, function* () {
|
|
87
|
+
var _a, _b;
|
|
88
|
+
if (this.diagram && event.sourcePort && event.targetPort) {
|
|
89
|
+
const sourcePort = event.sourcePort;
|
|
90
|
+
const targetPort = event.targetPort;
|
|
91
|
+
// Find the nodes that own these ports
|
|
92
|
+
const nodes = this.diagram.getNodes();
|
|
93
|
+
let sourceNode = null;
|
|
94
|
+
let targetNode = null;
|
|
95
|
+
for (const node of nodes) {
|
|
96
|
+
if (node.getPort(sourcePort.id)) {
|
|
97
|
+
sourceNode = node;
|
|
98
|
+
}
|
|
99
|
+
if (node.getPort(targetPort.id)) {
|
|
100
|
+
targetNode = node;
|
|
101
|
+
}
|
|
102
|
+
if (sourceNode && targetNode)
|
|
103
|
+
break;
|
|
104
|
+
}
|
|
105
|
+
if (sourceNode && targetNode) {
|
|
106
|
+
// Determine path type from config
|
|
107
|
+
// Map ConnectionLineStyle enum to LinkModel pathType
|
|
108
|
+
let pathType = 'smooth';
|
|
109
|
+
switch (this.interactionConfig.connectionLineStyle) {
|
|
110
|
+
case 'bezier':
|
|
111
|
+
pathType = 'bezier';
|
|
112
|
+
break;
|
|
113
|
+
case 'step':
|
|
114
|
+
pathType = 'orthogonal';
|
|
115
|
+
break;
|
|
116
|
+
case 'straight':
|
|
117
|
+
pathType = 'direct';
|
|
118
|
+
break;
|
|
119
|
+
default:
|
|
120
|
+
pathType = 'smooth';
|
|
121
|
+
}
|
|
122
|
+
console.log(`🔗 Creating link with pathType: ${pathType} (from connectionLineStyle: ${this.interactionConfig.connectionLineStyle})`);
|
|
123
|
+
// Create the link manually (same logic as createSmartLink)
|
|
124
|
+
const link = new LinkModel_1.LinkModel(sourcePort.id, targetPort.id, pathType);
|
|
125
|
+
link.sourceNodeId = sourceNode.id;
|
|
126
|
+
link.targetNodeId = targetNode.id;
|
|
127
|
+
// Register connections in ports
|
|
128
|
+
sourcePort.addConnection(link.id, 'source');
|
|
129
|
+
targetPort.addConnection(link.id, 'target');
|
|
130
|
+
// Calculate initial path using RoutingEngine
|
|
131
|
+
const sourcePos = sourcePort.getAbsolutePosition(sourceNode.getBoundingBox());
|
|
132
|
+
const targetPos = targetPort.getAbsolutePosition(targetNode.getBoundingBox());
|
|
133
|
+
// Get port directions for routing
|
|
134
|
+
const sourceDirection = (_a = sourcePort.alignment) === null || _a === void 0 ? void 0 : _a.side;
|
|
135
|
+
const targetDirection = (_b = targetPort.alignment) === null || _b === void 0 ? void 0 : _b.side;
|
|
136
|
+
// Use RoutingEngine to calculate path with obstacle avoidance
|
|
137
|
+
yield this.generateLinkPathWithRouting(link, sourcePos, targetPos, sourceDirection, targetDirection, sourceNode, targetNode);
|
|
138
|
+
// Add link THROUGH THE COMMAND MANAGER — one undoable step, like every
|
|
139
|
+
// other edit. This used to call diagram.addLink() directly, so a link
|
|
140
|
+
// the user DREW (the port-drag gesture) was the one mutation Ctrl+Z
|
|
141
|
+
// could not take back (visio audit). The command serializes the link
|
|
142
|
+
// AFTER routing, so the routed path is what redo restores.
|
|
143
|
+
const command = new AddLinkCommand_1.AddLinkCommand(link);
|
|
144
|
+
if (this.commandManager) {
|
|
145
|
+
yield this.commandManager.execute(command);
|
|
146
|
+
}
|
|
147
|
+
else {
|
|
148
|
+
this.diagram.addLink(link); // constructor-time fallback; unreachable in practice
|
|
149
|
+
}
|
|
150
|
+
console.log('✅ Link created successfully:', link.id, 'from', sourcePort.id, 'to', targetPort.id);
|
|
151
|
+
}
|
|
152
|
+
else {
|
|
153
|
+
console.error('❌ Failed to find nodes for ports');
|
|
154
|
+
}
|
|
155
|
+
}
|
|
156
|
+
}));
|
|
157
|
+
// Initialize ModeManager with context provider
|
|
158
|
+
this.modeManager = new ModeManager_1.ModeManager(this.eventBus, () => ({
|
|
159
|
+
engine: this,
|
|
160
|
+
diagram: this.diagram,
|
|
161
|
+
}), config.mode);
|
|
162
|
+
const context = {
|
|
163
|
+
diagram: this.diagram,
|
|
164
|
+
eventBus: this.eventBus,
|
|
165
|
+
store: this.store,
|
|
166
|
+
engine: this,
|
|
167
|
+
};
|
|
168
|
+
this.commandManager = new CommandManager_1.CommandManager(context, this.eventBus);
|
|
169
|
+
this.pluginManager = new PluginManager_1.PluginManager(this, this.eventBus);
|
|
170
|
+
this.typeRegistry = new TypeRegistry_1.TypeRegistry();
|
|
171
|
+
this.validationEngine = new ValidationEngine_1.ValidationEngine(this.typeRegistry, this.eventBus); // Phase 1 - Pass EventBus
|
|
172
|
+
this.serializer = new Serializer_1.DiagramSerializer();
|
|
173
|
+
this.performanceMonitor = new PerformanceMonitor_1.PerformanceMonitor(config.performance);
|
|
174
|
+
this.routingEngine = new RoutingEngine_1.RoutingEngine(); // Initialize routing engine with LRU cache
|
|
175
|
+
this.clipboardManager = new ClipboardManager_1.ClipboardManager(); // Phase 1.8
|
|
176
|
+
this.selectionManager = new SelectionManager_1.SelectionManager(null, this.store, this.eventBus); // Phase 1.8a
|
|
177
|
+
// Configure systems
|
|
178
|
+
this.configureSystems();
|
|
179
|
+
// Install plugins
|
|
180
|
+
this.installPlugins();
|
|
181
|
+
// Mark as initialized
|
|
182
|
+
this.initialized = true;
|
|
183
|
+
this.eventBus.emit('engine:initialized');
|
|
184
|
+
}
|
|
185
|
+
/**
|
|
186
|
+
* Get current diagram
|
|
187
|
+
*/
|
|
188
|
+
getDiagram() {
|
|
189
|
+
return this.diagram;
|
|
190
|
+
}
|
|
191
|
+
/**
|
|
192
|
+
* Get configuration (Phase 1 - Critical Fixes)
|
|
193
|
+
*/
|
|
194
|
+
getConfig() {
|
|
195
|
+
return this.config;
|
|
196
|
+
}
|
|
197
|
+
/**
|
|
198
|
+
* Phase 1: Get interaction configuration
|
|
199
|
+
* Returns the current interaction mode settings
|
|
200
|
+
*/
|
|
201
|
+
getInteractionConfig() {
|
|
202
|
+
return Object.assign({}, this.interactionConfig);
|
|
203
|
+
}
|
|
204
|
+
/**
|
|
205
|
+
* Phase 1: Set interaction configuration
|
|
206
|
+
* Updates interaction mode settings and emits event
|
|
207
|
+
*/
|
|
208
|
+
setInteractionConfig(config) {
|
|
209
|
+
const oldConfig = Object.assign({}, this.interactionConfig);
|
|
210
|
+
this.interactionConfig = Object.assign(Object.assign({}, this.interactionConfig), config);
|
|
211
|
+
this.eventBus.emit('config:interaction-changed', {
|
|
212
|
+
oldConfig,
|
|
213
|
+
newConfig: this.interactionConfig,
|
|
214
|
+
});
|
|
215
|
+
}
|
|
216
|
+
/**
|
|
217
|
+
* Phase 1: Get connection state manager
|
|
218
|
+
* Used for managing connection drag operations
|
|
219
|
+
*/
|
|
220
|
+
getConnectionStateManager() {
|
|
221
|
+
return this.connectionStateManager;
|
|
222
|
+
}
|
|
223
|
+
/**
|
|
224
|
+
* Wave 2 (Edges & links): current endpoint-reconnection preview, or null when
|
|
225
|
+
* no endpoint is being dragged. The renderer reads this to draw a ghost link.
|
|
226
|
+
*/
|
|
227
|
+
getReconnectionPreview() {
|
|
228
|
+
return this.reconnectionPreview;
|
|
229
|
+
}
|
|
230
|
+
/**
|
|
231
|
+
* Wave 2 (Edges & links): set (or clear, with null) the endpoint-reconnection
|
|
232
|
+
* preview. Called by the interaction layer on start/move/end of an endpoint
|
|
233
|
+
* drag. Does not emit — the interaction layer already triggers re-render.
|
|
234
|
+
*/
|
|
235
|
+
setReconnectionPreview(preview) {
|
|
236
|
+
this.reconnectionPreview = preview;
|
|
237
|
+
// A bare field write bumps no epoch, and the renderer's frame-skip gate
|
|
238
|
+
// dropped every repaint during an endpoint drag — the ghost line froze at
|
|
239
|
+
// the grab point while the model tracked the cursor perfectly (live
|
|
240
|
+
// audit). Overlay state IS picture state; say so.
|
|
241
|
+
(0, DiagramEntity_1.bumpMutationEpoch)();
|
|
242
|
+
}
|
|
243
|
+
/** The proximity-connect proposal the renderer draws as a live wire, or null. */
|
|
244
|
+
getProximityPreview() {
|
|
245
|
+
return this.proximityPreview;
|
|
246
|
+
}
|
|
247
|
+
/** Set (or clear, with null) the proximity-connect proposal. Does not emit —
|
|
248
|
+
* the node drag that drives it already triggers re-renders. */
|
|
249
|
+
setProximityPreview(preview) {
|
|
250
|
+
this.proximityPreview = preview;
|
|
251
|
+
(0, DiagramEntity_1.bumpMutationEpoch)(); // overlay state is picture state — see setReconnectionPreview
|
|
252
|
+
}
|
|
253
|
+
/** The live snap-guide segments a node drag is showing, or null. */
|
|
254
|
+
getSnapGuides() {
|
|
255
|
+
return this.snapGuides;
|
|
256
|
+
}
|
|
257
|
+
/** Set (or clear, with null) the live snap guides. Does not emit — the node
|
|
258
|
+
* drag that drives them already triggers re-renders. */
|
|
259
|
+
setSnapGuides(guides) {
|
|
260
|
+
this.snapGuides = guides;
|
|
261
|
+
(0, DiagramEntity_1.bumpMutationEpoch)(); // overlay state is picture state — see setReconnectionPreview
|
|
262
|
+
}
|
|
263
|
+
/**
|
|
264
|
+
* Get routing engine
|
|
265
|
+
* Used for calculating link paths with various algorithms
|
|
266
|
+
*/
|
|
267
|
+
getRoutingEngine() {
|
|
268
|
+
return this.routingEngine;
|
|
269
|
+
}
|
|
270
|
+
/**
|
|
271
|
+
* Phase 0.2: Enable live rerouting
|
|
272
|
+
* Automatically updates link paths when nodes move or resize
|
|
273
|
+
*/
|
|
274
|
+
enableLiveRerouting() {
|
|
275
|
+
if (!this.diagram) {
|
|
276
|
+
console.warn('Cannot enable live rerouting: No diagram loaded');
|
|
277
|
+
return;
|
|
278
|
+
}
|
|
279
|
+
if (!this.liveReroutingEngine) {
|
|
280
|
+
this.liveReroutingEngine = new LiveReroutingEngine_1.LiveReroutingEngine(this.routingEngine, this.diagram);
|
|
281
|
+
}
|
|
282
|
+
this.liveReroutingEngine.enable();
|
|
283
|
+
console.log('✅ Live rerouting enabled');
|
|
284
|
+
}
|
|
285
|
+
/**
|
|
286
|
+
* Phase 0.2: Disable live rerouting
|
|
287
|
+
*/
|
|
288
|
+
disableLiveRerouting() {
|
|
289
|
+
if (this.liveReroutingEngine) {
|
|
290
|
+
this.liveReroutingEngine.disable();
|
|
291
|
+
console.log('⚠️ Live rerouting disabled');
|
|
292
|
+
}
|
|
293
|
+
}
|
|
294
|
+
/**
|
|
295
|
+
* Phase 0.2: Get live rerouting engine
|
|
296
|
+
*/
|
|
297
|
+
getLiveReroutingEngine() {
|
|
298
|
+
return this.liveReroutingEngine;
|
|
299
|
+
}
|
|
300
|
+
/**
|
|
301
|
+
* Set diagram
|
|
302
|
+
*/
|
|
303
|
+
setDiagram(diagram) {
|
|
304
|
+
const oldDiagram = this.diagram;
|
|
305
|
+
if (oldDiagram) {
|
|
306
|
+
this.detachDiagram(oldDiagram);
|
|
307
|
+
}
|
|
308
|
+
this.diagram = diagram;
|
|
309
|
+
if (diagram) {
|
|
310
|
+
this.attachDiagram(diagram);
|
|
311
|
+
// Wave 9 — Card 7: a diagram attached to an engine that is ALREADY in
|
|
312
|
+
// VIEW/PRESENTATION mode must come up LOCKED. Without this, read-only would
|
|
313
|
+
// depend on whether the host happened to call setMode() before or after
|
|
314
|
+
// loading the document — a race the host cannot see.
|
|
315
|
+
this.syncReadonlyLock();
|
|
316
|
+
}
|
|
317
|
+
this.store.set('diagram', diagram);
|
|
318
|
+
this.eventBus.emit('diagram:changed', { oldDiagram, newDiagram: diagram });
|
|
319
|
+
// Update command context
|
|
320
|
+
this.commandManager.updateContext({ diagram });
|
|
321
|
+
// Update selection manager diagram reference (Phase 1.8a)
|
|
322
|
+
this.selectionManager.setDiagram(diagram);
|
|
323
|
+
// Wave 6 (Card 6): the connection manager needs the graph to work out which
|
|
324
|
+
// ports are valid targets. Without this its `calculateValidTargets()` has
|
|
325
|
+
// nothing to walk — which is exactly why that method was a no-op stub and
|
|
326
|
+
// `validTargetPorts` was empty for the whole life of the feature.
|
|
327
|
+
this.connectionStateManager.setDiagram(diagram);
|
|
328
|
+
}
|
|
329
|
+
/**
|
|
330
|
+
* Create new diagram
|
|
331
|
+
*/
|
|
332
|
+
createDiagram(name = 'Untitled') {
|
|
333
|
+
const diagram = new DiagramModel_1.DiagramModel(name);
|
|
334
|
+
this.setDiagram(diagram);
|
|
335
|
+
this.eventBus.emit('diagram:created', diagram);
|
|
336
|
+
return diagram;
|
|
337
|
+
}
|
|
338
|
+
/**
|
|
339
|
+
* Clear diagram
|
|
340
|
+
*/
|
|
341
|
+
clearDiagram() {
|
|
342
|
+
if (this.diagram) {
|
|
343
|
+
this.diagram.clear();
|
|
344
|
+
this.store.set('selectedNodes', new Set());
|
|
345
|
+
this.store.set('selectedLinks', new Set());
|
|
346
|
+
this.commandManager.clear();
|
|
347
|
+
this.eventBus.emit('diagram:cleared');
|
|
348
|
+
}
|
|
349
|
+
}
|
|
350
|
+
/**
|
|
351
|
+
* Add node implementation
|
|
352
|
+
*/
|
|
353
|
+
addNode(configOrNode) {
|
|
354
|
+
return tslib_1.__awaiter(this, void 0, void 0, function* () {
|
|
355
|
+
if (!this.diagram) {
|
|
356
|
+
throw new Error('No diagram loaded');
|
|
357
|
+
}
|
|
358
|
+
return this.performanceMonitor.measure('addNode', () => tslib_1.__awaiter(this, void 0, void 0, function* () {
|
|
359
|
+
var _a, _b;
|
|
360
|
+
// Determine if we received a config or a NodeModel
|
|
361
|
+
let node;
|
|
362
|
+
if (configOrNode instanceof NodeModel_1.NodeModel) {
|
|
363
|
+
node = configOrNode;
|
|
364
|
+
}
|
|
365
|
+
else {
|
|
366
|
+
node = new NodeModel_1.NodeModel(configOrNode);
|
|
367
|
+
}
|
|
368
|
+
// Validate
|
|
369
|
+
if ((_a = this.config.validation) === null || _a === void 0 ? void 0 : _a.strict) {
|
|
370
|
+
const validation = this.validationEngine.validateNode(node);
|
|
371
|
+
if (!validation.valid) {
|
|
372
|
+
throw new Error(`Invalid node: ${(_b = validation.errors[0]) === null || _b === void 0 ? void 0 : _b.message}`);
|
|
373
|
+
}
|
|
374
|
+
}
|
|
375
|
+
// Add via command
|
|
376
|
+
const command = new AddNodeCommand_1.AddNodeCommand(node);
|
|
377
|
+
yield this.commandManager.execute(command);
|
|
378
|
+
// Return the node that was actually added (might be deserialized)
|
|
379
|
+
return (this.diagram && this.diagram.getNode(node.id)) || node;
|
|
380
|
+
}));
|
|
381
|
+
});
|
|
382
|
+
}
|
|
383
|
+
/**
|
|
384
|
+
* Remove node
|
|
385
|
+
*
|
|
386
|
+
* Wave 14: async + awaited, mirroring removeGroup(). The execute() promise
|
|
387
|
+
* used to float — a command failure became an unhandled rejection (fatal
|
|
388
|
+
* under Node), and callers could not sequence on the removal completing.
|
|
389
|
+
*/
|
|
390
|
+
removeNode(nodeId) {
|
|
391
|
+
return tslib_1.__awaiter(this, void 0, void 0, function* () {
|
|
392
|
+
if (!this.diagram) {
|
|
393
|
+
throw new Error('No diagram loaded');
|
|
394
|
+
}
|
|
395
|
+
const node = this.diagram.getNode(nodeId);
|
|
396
|
+
if (!node) {
|
|
397
|
+
throw new Error(`Node ${nodeId} not found`);
|
|
398
|
+
}
|
|
399
|
+
const command = new RemoveNodeCommand_1.RemoveNodeCommand(nodeId);
|
|
400
|
+
yield this.commandManager.execute(command);
|
|
401
|
+
});
|
|
402
|
+
}
|
|
403
|
+
/**
|
|
404
|
+
* Wave 6 (Card 7): top up (or trim) the dynamic port groups on the nodes at
|
|
405
|
+
* either end of `link`.
|
|
406
|
+
*
|
|
407
|
+
* Runs through the COMMAND layer, so a spawned port is undoable and arrives
|
|
408
|
+
* with the same events and dirty-tracking as any other model change. Guarded
|
|
409
|
+
* against re-entry: an AddPortCommand does not itself add a link, but a host
|
|
410
|
+
* validator could, and a self-feeding allocator would be a delightful way to
|
|
411
|
+
* hang the app.
|
|
412
|
+
*/
|
|
413
|
+
reconcileDynamicPorts(nodeIds) {
|
|
414
|
+
if (this.reconcilingDynamicPorts || !this.diagram)
|
|
415
|
+
return;
|
|
416
|
+
// The LINKS are the source of truth for "is this port free" — the port's
|
|
417
|
+
// own connection registry is derived state that `addLink()` never updates.
|
|
418
|
+
const links = this.diagram.getLinks();
|
|
419
|
+
const commands = [];
|
|
420
|
+
for (const nodeId of new Set(nodeIds)) {
|
|
421
|
+
const node = this.diagram.getNode(nodeId);
|
|
422
|
+
if (node)
|
|
423
|
+
commands.push(...(0, dynamic_ports_1.buildDynamicPortCommands)(node, links));
|
|
424
|
+
}
|
|
425
|
+
if (commands.length === 0)
|
|
426
|
+
return;
|
|
427
|
+
this.reconcilingDynamicPorts = true;
|
|
428
|
+
try {
|
|
429
|
+
for (const command of commands) {
|
|
430
|
+
// Port add/remove is synchronous; `execute` returns a promise only
|
|
431
|
+
// because the Command contract allows async ones. Nothing here awaits it,
|
|
432
|
+
// so the port is on the node by the time this returns — which is what the
|
|
433
|
+
// renderer, mid-frame, is entitled to assume.
|
|
434
|
+
void this.commandManager.execute(command);
|
|
435
|
+
}
|
|
436
|
+
}
|
|
437
|
+
finally {
|
|
438
|
+
this.reconcilingDynamicPorts = false;
|
|
439
|
+
}
|
|
440
|
+
}
|
|
441
|
+
/** The nodes a link touches — resolved by id, or by searching for its ports. */
|
|
442
|
+
reconcileDynamicPortsFor(link) {
|
|
443
|
+
var _a;
|
|
444
|
+
const diagram = this.diagram;
|
|
445
|
+
if (!diagram)
|
|
446
|
+
return;
|
|
447
|
+
const nodeIds = [];
|
|
448
|
+
for (const [nodeId, portId] of [
|
|
449
|
+
[link.sourceNodeId, link.sourcePortId],
|
|
450
|
+
[link.targetNodeId, link.targetPortId],
|
|
451
|
+
]) {
|
|
452
|
+
if (nodeId) {
|
|
453
|
+
nodeIds.push(nodeId);
|
|
454
|
+
}
|
|
455
|
+
else if (portId) {
|
|
456
|
+
const owner = (_a = diagram.getNodeByPortId) === null || _a === void 0 ? void 0 : _a.call(diagram, portId);
|
|
457
|
+
if (owner)
|
|
458
|
+
nodeIds.push(owner.id);
|
|
459
|
+
}
|
|
460
|
+
}
|
|
461
|
+
this.reconcileDynamicPorts(nodeIds);
|
|
462
|
+
}
|
|
463
|
+
/**
|
|
464
|
+
* Add link
|
|
465
|
+
*/
|
|
466
|
+
addLink(config) {
|
|
467
|
+
return tslib_1.__awaiter(this, void 0, void 0, function* () {
|
|
468
|
+
if (!this.diagram) {
|
|
469
|
+
throw new Error('No diagram loaded');
|
|
470
|
+
}
|
|
471
|
+
return this.performanceMonitor.measure('addLink', () => tslib_1.__awaiter(this, void 0, void 0, function* () {
|
|
472
|
+
var _a;
|
|
473
|
+
// Check ports exist
|
|
474
|
+
const sourcePort = this.findPort(config.sourcePortId);
|
|
475
|
+
const targetPort = this.findPort(config.targetPortId);
|
|
476
|
+
if (!sourcePort || !targetPort) {
|
|
477
|
+
throw new Error('Invalid ports');
|
|
478
|
+
}
|
|
479
|
+
const link = new LinkModel_1.LinkModel(config.sourcePortId, config.targetPortId, config.type);
|
|
480
|
+
// Validate
|
|
481
|
+
const validation = this.validationEngine.validateLink(link, this.diagram);
|
|
482
|
+
if (!validation.valid) {
|
|
483
|
+
throw new Error(`Invalid link: ${(_a = validation.errors[0]) === null || _a === void 0 ? void 0 : _a.message}`);
|
|
484
|
+
}
|
|
485
|
+
// Add via command
|
|
486
|
+
const command = new AddLinkCommand_1.AddLinkCommand(link);
|
|
487
|
+
yield this.commandManager.execute(command);
|
|
488
|
+
// Return the link that was actually added (might be deserialized)
|
|
489
|
+
return (this.diagram && this.diagram.getLink(link.id)) || link;
|
|
490
|
+
}));
|
|
491
|
+
});
|
|
492
|
+
}
|
|
493
|
+
/**
|
|
494
|
+
* Remove link
|
|
495
|
+
*
|
|
496
|
+
* Wave 14: async + awaited, mirroring removeGroup() — see removeNode().
|
|
497
|
+
*/
|
|
498
|
+
removeLink(linkId) {
|
|
499
|
+
return tslib_1.__awaiter(this, void 0, void 0, function* () {
|
|
500
|
+
if (!this.diagram) {
|
|
501
|
+
throw new Error('No diagram loaded');
|
|
502
|
+
}
|
|
503
|
+
const link = this.diagram.getLink(linkId);
|
|
504
|
+
if (!link) {
|
|
505
|
+
throw new Error(`Link ${linkId} not found`);
|
|
506
|
+
}
|
|
507
|
+
const command = new RemoveLinkCommand_1.RemoveLinkCommand(linkId);
|
|
508
|
+
yield this.commandManager.execute(command);
|
|
509
|
+
});
|
|
510
|
+
}
|
|
511
|
+
/**
|
|
512
|
+
* Add group (Phase 1.6c)
|
|
513
|
+
*/
|
|
514
|
+
addGroup(config) {
|
|
515
|
+
return tslib_1.__awaiter(this, void 0, void 0, function* () {
|
|
516
|
+
if (!this.diagram) {
|
|
517
|
+
throw new Error('No diagram loaded');
|
|
518
|
+
}
|
|
519
|
+
return this.performanceMonitor.measure('addGroup', () => tslib_1.__awaiter(this, void 0, void 0, function* () {
|
|
520
|
+
const group = new GroupModel_1.GroupModel(config);
|
|
521
|
+
// Add via command
|
|
522
|
+
const command = new basic_1.AddGroupCommand(group);
|
|
523
|
+
yield this.commandManager.execute(command);
|
|
524
|
+
// Return the group that was actually added
|
|
525
|
+
return (this.diagram && this.diagram.getGroup(group.id)) || group;
|
|
526
|
+
}));
|
|
527
|
+
});
|
|
528
|
+
}
|
|
529
|
+
/**
|
|
530
|
+
* Remove group (Phase 1.6c)
|
|
531
|
+
*/
|
|
532
|
+
removeGroup(groupId) {
|
|
533
|
+
return tslib_1.__awaiter(this, void 0, void 0, function* () {
|
|
534
|
+
if (!this.diagram) {
|
|
535
|
+
throw new Error('No diagram loaded');
|
|
536
|
+
}
|
|
537
|
+
const group = this.diagram.getGroup(groupId);
|
|
538
|
+
if (!group) {
|
|
539
|
+
throw new Error(`Group ${groupId} not found`);
|
|
540
|
+
}
|
|
541
|
+
const command = new basic_1.RemoveGroupCommand(groupId);
|
|
542
|
+
yield this.commandManager.execute(command);
|
|
543
|
+
});
|
|
544
|
+
}
|
|
545
|
+
/**
|
|
546
|
+
* Add entity to group (Phase 1.6c)
|
|
547
|
+
*/
|
|
548
|
+
addToGroup(groupId, entityId) {
|
|
549
|
+
return tslib_1.__awaiter(this, void 0, void 0, function* () {
|
|
550
|
+
if (!this.diagram) {
|
|
551
|
+
throw new Error('No diagram loaded');
|
|
552
|
+
}
|
|
553
|
+
const command = new basic_1.AddToGroupCommand(groupId, entityId);
|
|
554
|
+
yield this.commandManager.execute(command);
|
|
555
|
+
});
|
|
556
|
+
}
|
|
557
|
+
/**
|
|
558
|
+
* Remove entity from group (Phase 1.6c)
|
|
559
|
+
*/
|
|
560
|
+
removeFromGroup(groupId, entityId) {
|
|
561
|
+
return tslib_1.__awaiter(this, void 0, void 0, function* () {
|
|
562
|
+
if (!this.diagram) {
|
|
563
|
+
throw new Error('No diagram loaded');
|
|
564
|
+
}
|
|
565
|
+
const command = new basic_1.RemoveFromGroupCommand(groupId, entityId);
|
|
566
|
+
yield this.commandManager.execute(command);
|
|
567
|
+
});
|
|
568
|
+
}
|
|
569
|
+
/**
|
|
570
|
+
* Expand group (Phase 1.6c)
|
|
571
|
+
*/
|
|
572
|
+
expandGroup(groupId) {
|
|
573
|
+
return tslib_1.__awaiter(this, void 0, void 0, function* () {
|
|
574
|
+
if (!this.diagram) {
|
|
575
|
+
throw new Error('No diagram loaded');
|
|
576
|
+
}
|
|
577
|
+
const command = new basic_1.ExpandGroupCommand(groupId);
|
|
578
|
+
yield this.commandManager.execute(command);
|
|
579
|
+
});
|
|
580
|
+
}
|
|
581
|
+
/**
|
|
582
|
+
* Collapse group (Phase 1.6c)
|
|
583
|
+
*/
|
|
584
|
+
collapseGroup(groupId, options) {
|
|
585
|
+
return tslib_1.__awaiter(this, void 0, void 0, function* () {
|
|
586
|
+
if (!this.diagram) {
|
|
587
|
+
throw new Error('No diagram loaded');
|
|
588
|
+
}
|
|
589
|
+
const command = new basic_1.CollapseGroupCommand(groupId, options);
|
|
590
|
+
yield this.commandManager.execute(command);
|
|
591
|
+
});
|
|
592
|
+
}
|
|
593
|
+
/**
|
|
594
|
+
* Get group by ID (Phase 1.6c)
|
|
595
|
+
*/
|
|
596
|
+
getGroup(groupId) {
|
|
597
|
+
var _a;
|
|
598
|
+
return (_a = this.diagram) === null || _a === void 0 ? void 0 : _a.getGroup(groupId);
|
|
599
|
+
}
|
|
600
|
+
/**
|
|
601
|
+
* Get all groups (Phase 1.6c)
|
|
602
|
+
*/
|
|
603
|
+
getGroups() {
|
|
604
|
+
var _a;
|
|
605
|
+
return ((_a = this.diagram) === null || _a === void 0 ? void 0 : _a.getGroups()) || [];
|
|
606
|
+
}
|
|
607
|
+
/**
|
|
608
|
+
* Set layout configuration on a group (Phase 1.7)
|
|
609
|
+
*/
|
|
610
|
+
setLayout(groupId, layoutType, layoutConfig) {
|
|
611
|
+
return tslib_1.__awaiter(this, void 0, void 0, function* () {
|
|
612
|
+
if (!this.diagram) {
|
|
613
|
+
throw new Error('No diagram loaded');
|
|
614
|
+
}
|
|
615
|
+
const group = this.diagram.getGroup(groupId);
|
|
616
|
+
if (!group) {
|
|
617
|
+
throw new Error(`Group ${groupId} not found`);
|
|
618
|
+
}
|
|
619
|
+
const command = new basic_2.SetLayoutCommand(groupId, layoutType, layoutConfig);
|
|
620
|
+
yield this.commandManager.execute(command);
|
|
621
|
+
});
|
|
622
|
+
}
|
|
623
|
+
/**
|
|
624
|
+
* Clear layout configuration from a group (Phase 1.7)
|
|
625
|
+
*/
|
|
626
|
+
clearLayout(groupId) {
|
|
627
|
+
return tslib_1.__awaiter(this, void 0, void 0, function* () {
|
|
628
|
+
if (!this.diagram) {
|
|
629
|
+
throw new Error('No diagram loaded');
|
|
630
|
+
}
|
|
631
|
+
const group = this.diagram.getGroup(groupId);
|
|
632
|
+
if (!group) {
|
|
633
|
+
throw new Error(`Group ${groupId} not found`);
|
|
634
|
+
}
|
|
635
|
+
// Clear layout by setting to 'none' (this triggers a command internally through the model)
|
|
636
|
+
group.clearLayout();
|
|
637
|
+
});
|
|
638
|
+
}
|
|
639
|
+
/**
|
|
640
|
+
* Get layout configuration from a group (Phase 1.7)
|
|
641
|
+
*/
|
|
642
|
+
getLayout(groupId) {
|
|
643
|
+
var _a;
|
|
644
|
+
const group = (_a = this.diagram) === null || _a === void 0 ? void 0 : _a.getGroup(groupId);
|
|
645
|
+
return group === null || group === void 0 ? void 0 : group.getLayout();
|
|
646
|
+
}
|
|
647
|
+
/**
|
|
648
|
+
* Set flex item configuration on a node (Phase 1.7)
|
|
649
|
+
*/
|
|
650
|
+
setFlexItem(nodeId, flexConfig) {
|
|
651
|
+
return tslib_1.__awaiter(this, void 0, void 0, function* () {
|
|
652
|
+
if (!this.diagram) {
|
|
653
|
+
throw new Error('No diagram loaded');
|
|
654
|
+
}
|
|
655
|
+
const node = this.diagram.getNode(nodeId);
|
|
656
|
+
if (!node) {
|
|
657
|
+
throw new Error(`Node ${nodeId} not found`);
|
|
658
|
+
}
|
|
659
|
+
const command = new basic_2.SetFlexItemCommand(nodeId, flexConfig);
|
|
660
|
+
yield this.commandManager.execute(command);
|
|
661
|
+
});
|
|
662
|
+
}
|
|
663
|
+
/**
|
|
664
|
+
* Set grid item configuration on a node (Phase 1.7)
|
|
665
|
+
*/
|
|
666
|
+
setGridItem(nodeId, gridConfig) {
|
|
667
|
+
return tslib_1.__awaiter(this, void 0, void 0, function* () {
|
|
668
|
+
if (!this.diagram) {
|
|
669
|
+
throw new Error('No diagram loaded');
|
|
670
|
+
}
|
|
671
|
+
const node = this.diagram.getNode(nodeId);
|
|
672
|
+
if (!node) {
|
|
673
|
+
throw new Error(`Node ${nodeId} not found`);
|
|
674
|
+
}
|
|
675
|
+
const command = new basic_2.SetGridItemCommand(nodeId, gridConfig);
|
|
676
|
+
yield this.commandManager.execute(command);
|
|
677
|
+
});
|
|
678
|
+
}
|
|
679
|
+
/**
|
|
680
|
+
* Copy selected entities to clipboard (Phase 1.8)
|
|
681
|
+
*/
|
|
682
|
+
copy(options) {
|
|
683
|
+
return tslib_1.__awaiter(this, void 0, void 0, function* () {
|
|
684
|
+
if (!this.diagram) {
|
|
685
|
+
throw new Error('No diagram loaded');
|
|
686
|
+
}
|
|
687
|
+
const command = new basic_3.CopyCommand(this.clipboardManager, options);
|
|
688
|
+
yield this.commandManager.execute(command);
|
|
689
|
+
});
|
|
690
|
+
}
|
|
691
|
+
/**
|
|
692
|
+
* Paste entities from clipboard (Phase 1.8)
|
|
693
|
+
*/
|
|
694
|
+
paste(options) {
|
|
695
|
+
return tslib_1.__awaiter(this, void 0, void 0, function* () {
|
|
696
|
+
if (!this.diagram) {
|
|
697
|
+
throw new Error('No diagram loaded');
|
|
698
|
+
}
|
|
699
|
+
if (!this.clipboardManager.hasData()) {
|
|
700
|
+
throw new Error('Clipboard is empty');
|
|
701
|
+
}
|
|
702
|
+
const command = new basic_3.PasteCommand(this.clipboardManager, options);
|
|
703
|
+
yield this.commandManager.execute(command);
|
|
704
|
+
});
|
|
705
|
+
}
|
|
706
|
+
/**
|
|
707
|
+
* Duplicate selected entities (Phase 1.8)
|
|
708
|
+
*/
|
|
709
|
+
duplicate(options) {
|
|
710
|
+
return tslib_1.__awaiter(this, void 0, void 0, function* () {
|
|
711
|
+
if (!this.diagram) {
|
|
712
|
+
throw new Error('No diagram loaded');
|
|
713
|
+
}
|
|
714
|
+
// Diagram selection first — a mouse click selects through
|
|
715
|
+
// diagram.selectNode() and never writes the store's set, so gating on the
|
|
716
|
+
// store alone made this helper throw for every mouse-selected node while
|
|
717
|
+
// DuplicateCommand itself (which checks both) would have succeeded.
|
|
718
|
+
const diagramSelection = this.diagram.getSelectedNodes();
|
|
719
|
+
const selectedNodeIds = this.store.get('selectedNodes');
|
|
720
|
+
if (diagramSelection.length === 0 && (!selectedNodeIds || selectedNodeIds.size === 0)) {
|
|
721
|
+
throw new Error('No nodes selected');
|
|
722
|
+
}
|
|
723
|
+
const command = new basic_3.DuplicateCommand(options);
|
|
724
|
+
yield this.commandManager.execute(command);
|
|
725
|
+
});
|
|
726
|
+
}
|
|
727
|
+
/**
|
|
728
|
+
* Delete selected entities (Phase 1.8)
|
|
729
|
+
*/
|
|
730
|
+
deleteSelection(options) {
|
|
731
|
+
return tslib_1.__awaiter(this, void 0, void 0, function* () {
|
|
732
|
+
if (!this.diagram) {
|
|
733
|
+
throw new Error('No diagram loaded');
|
|
734
|
+
}
|
|
735
|
+
const selectedNodeIds = this.store.get('selectedNodes');
|
|
736
|
+
const selectedLinkIds = this.store.get('selectedLinks');
|
|
737
|
+
if ((!selectedNodeIds || selectedNodeIds.size === 0) &&
|
|
738
|
+
(!selectedLinkIds || selectedLinkIds.size === 0)) {
|
|
739
|
+
throw new Error('No entities selected');
|
|
740
|
+
}
|
|
741
|
+
const command = new basic_3.DeleteSelectionCommand(options);
|
|
742
|
+
yield this.commandManager.execute(command);
|
|
743
|
+
});
|
|
744
|
+
}
|
|
745
|
+
/**
|
|
746
|
+
* Get clipboard data (Phase 1.8)
|
|
747
|
+
*/
|
|
748
|
+
getClipboardData() {
|
|
749
|
+
return this.clipboardManager.get();
|
|
750
|
+
}
|
|
751
|
+
/**
|
|
752
|
+
* Check if clipboard has data (Phase 1.8)
|
|
753
|
+
*/
|
|
754
|
+
hasClipboardData() {
|
|
755
|
+
return this.clipboardManager.hasData();
|
|
756
|
+
}
|
|
757
|
+
/**
|
|
758
|
+
* Clear clipboard (Phase 1.8)
|
|
759
|
+
*/
|
|
760
|
+
clearClipboard() {
|
|
761
|
+
this.clipboardManager.clear();
|
|
762
|
+
}
|
|
763
|
+
/**
|
|
764
|
+
* Get clipboard statistics (Phase 1.8)
|
|
765
|
+
*/
|
|
766
|
+
getClipboardStats() {
|
|
767
|
+
return this.clipboardManager.getStats();
|
|
768
|
+
}
|
|
769
|
+
// ============================================================================
|
|
770
|
+
// Validation API (Phase 1 - Critical Fixes)
|
|
771
|
+
// ============================================================================
|
|
772
|
+
/**
|
|
773
|
+
* Validate the entire diagram
|
|
774
|
+
* @param options Validation options
|
|
775
|
+
* @returns Validation result with errors and warnings
|
|
776
|
+
*/
|
|
777
|
+
validateDiagram(options) {
|
|
778
|
+
if (!this.diagram) {
|
|
779
|
+
return {
|
|
780
|
+
valid: false,
|
|
781
|
+
errors: [{
|
|
782
|
+
path: 'diagram',
|
|
783
|
+
message: 'No diagram loaded',
|
|
784
|
+
code: 'NO_DIAGRAM',
|
|
785
|
+
severity: 'error'
|
|
786
|
+
}],
|
|
787
|
+
warnings: []
|
|
788
|
+
};
|
|
789
|
+
}
|
|
790
|
+
return this.validationEngine.validateDiagram(this.diagram, options);
|
|
791
|
+
}
|
|
792
|
+
/**
|
|
793
|
+
* Validate a specific node
|
|
794
|
+
* @param nodeId Node ID to validate
|
|
795
|
+
* @param options Validation options
|
|
796
|
+
* @returns Validation result with errors and warnings
|
|
797
|
+
*/
|
|
798
|
+
validateNode(nodeId, options) {
|
|
799
|
+
if (!this.diagram) {
|
|
800
|
+
return {
|
|
801
|
+
valid: false,
|
|
802
|
+
errors: [{
|
|
803
|
+
path: `node.${nodeId}`,
|
|
804
|
+
message: 'No diagram loaded',
|
|
805
|
+
code: 'NO_DIAGRAM',
|
|
806
|
+
severity: 'error'
|
|
807
|
+
}],
|
|
808
|
+
warnings: []
|
|
809
|
+
};
|
|
810
|
+
}
|
|
811
|
+
const node = this.diagram.getNode(nodeId);
|
|
812
|
+
if (!node) {
|
|
813
|
+
return {
|
|
814
|
+
valid: false,
|
|
815
|
+
errors: [{
|
|
816
|
+
path: `node.${nodeId}`,
|
|
817
|
+
message: `Node ${nodeId} not found`,
|
|
818
|
+
code: 'NODE_NOT_FOUND',
|
|
819
|
+
severity: 'error'
|
|
820
|
+
}],
|
|
821
|
+
warnings: []
|
|
822
|
+
};
|
|
823
|
+
}
|
|
824
|
+
return this.validationEngine.validateNode(node, options);
|
|
825
|
+
}
|
|
826
|
+
/**
|
|
827
|
+
* Validate a specific link
|
|
828
|
+
* @param linkId Link ID to validate
|
|
829
|
+
* @param options Validation options
|
|
830
|
+
* @returns Validation result with errors and warnings
|
|
831
|
+
*/
|
|
832
|
+
validateLink(linkId, options) {
|
|
833
|
+
if (!this.diagram) {
|
|
834
|
+
return {
|
|
835
|
+
valid: false,
|
|
836
|
+
errors: [{
|
|
837
|
+
path: `link.${linkId}`,
|
|
838
|
+
message: 'No diagram loaded',
|
|
839
|
+
code: 'NO_DIAGRAM',
|
|
840
|
+
severity: 'error'
|
|
841
|
+
}],
|
|
842
|
+
warnings: []
|
|
843
|
+
};
|
|
844
|
+
}
|
|
845
|
+
const link = this.diagram.getLink(linkId);
|
|
846
|
+
if (!link) {
|
|
847
|
+
return {
|
|
848
|
+
valid: false,
|
|
849
|
+
errors: [{
|
|
850
|
+
path: `link.${linkId}`,
|
|
851
|
+
message: `Link ${linkId} not found`,
|
|
852
|
+
code: 'LINK_NOT_FOUND',
|
|
853
|
+
severity: 'error'
|
|
854
|
+
}],
|
|
855
|
+
warnings: []
|
|
856
|
+
};
|
|
857
|
+
}
|
|
858
|
+
return this.validationEngine.validateLink(link, this.diagram, options);
|
|
859
|
+
}
|
|
860
|
+
/**
|
|
861
|
+
* Validate a specific port
|
|
862
|
+
* @param portId Port ID to validate
|
|
863
|
+
* @param nodeId Node ID containing the port
|
|
864
|
+
* @param options Validation options
|
|
865
|
+
* @returns Validation result with errors and warnings
|
|
866
|
+
*/
|
|
867
|
+
validatePort(portId, nodeId, options) {
|
|
868
|
+
if (!this.diagram) {
|
|
869
|
+
return {
|
|
870
|
+
valid: false,
|
|
871
|
+
errors: [{
|
|
872
|
+
path: `node.${nodeId}.port.${portId}`,
|
|
873
|
+
message: 'No diagram loaded',
|
|
874
|
+
code: 'NO_DIAGRAM',
|
|
875
|
+
severity: 'error'
|
|
876
|
+
}],
|
|
877
|
+
warnings: []
|
|
878
|
+
};
|
|
879
|
+
}
|
|
880
|
+
const node = this.diagram.getNode(nodeId);
|
|
881
|
+
if (!node) {
|
|
882
|
+
return {
|
|
883
|
+
valid: false,
|
|
884
|
+
errors: [{
|
|
885
|
+
path: `node.${nodeId}.port.${portId}`,
|
|
886
|
+
message: `Node ${nodeId} not found`,
|
|
887
|
+
code: 'NODE_NOT_FOUND',
|
|
888
|
+
severity: 'error'
|
|
889
|
+
}],
|
|
890
|
+
warnings: []
|
|
891
|
+
};
|
|
892
|
+
}
|
|
893
|
+
const port = node.getPorts().find(p => p.id === portId);
|
|
894
|
+
if (!port) {
|
|
895
|
+
return {
|
|
896
|
+
valid: false,
|
|
897
|
+
errors: [{
|
|
898
|
+
path: `node.${nodeId}.port.${portId}`,
|
|
899
|
+
message: `Port ${portId} not found`,
|
|
900
|
+
code: 'PORT_NOT_FOUND',
|
|
901
|
+
severity: 'error'
|
|
902
|
+
}],
|
|
903
|
+
warnings: []
|
|
904
|
+
};
|
|
905
|
+
}
|
|
906
|
+
return this.validationEngine.validatePort(port, node, options);
|
|
907
|
+
}
|
|
908
|
+
/**
|
|
909
|
+
* Validate layout configuration for a group (Phase 3 - Layout validation)
|
|
910
|
+
*/
|
|
911
|
+
validateLayout(groupId, options) {
|
|
912
|
+
if (!this.diagram) {
|
|
913
|
+
return {
|
|
914
|
+
valid: false,
|
|
915
|
+
errors: [{
|
|
916
|
+
path: `group.${groupId}.layout`,
|
|
917
|
+
message: 'No diagram loaded',
|
|
918
|
+
code: 'NO_DIAGRAM',
|
|
919
|
+
severity: 'error'
|
|
920
|
+
}],
|
|
921
|
+
warnings: []
|
|
922
|
+
};
|
|
923
|
+
}
|
|
924
|
+
const group = this.diagram.getGroup(groupId);
|
|
925
|
+
if (!group) {
|
|
926
|
+
return {
|
|
927
|
+
valid: false,
|
|
928
|
+
errors: [{
|
|
929
|
+
path: `group.${groupId}.layout`,
|
|
930
|
+
message: `Group ${groupId} not found`,
|
|
931
|
+
code: 'GROUP_NOT_FOUND',
|
|
932
|
+
severity: 'error'
|
|
933
|
+
}],
|
|
934
|
+
warnings: []
|
|
935
|
+
};
|
|
936
|
+
}
|
|
937
|
+
return this.validationEngine.validateLayout(group, this.diagram, options);
|
|
938
|
+
}
|
|
939
|
+
/**
|
|
940
|
+
* Register a node type definition
|
|
941
|
+
* @param definition Node type definition
|
|
942
|
+
*/
|
|
943
|
+
registerNodeType(definition) {
|
|
944
|
+
this.typeRegistry.registerNodeType(definition);
|
|
945
|
+
}
|
|
946
|
+
/**
|
|
947
|
+
* Register a port type definition
|
|
948
|
+
* @param definition Port type definition
|
|
949
|
+
*/
|
|
950
|
+
registerPortType(definition) {
|
|
951
|
+
this.typeRegistry.registerPortType(definition);
|
|
952
|
+
}
|
|
953
|
+
/**
|
|
954
|
+
* Register a link type definition
|
|
955
|
+
* @param definition Link type definition
|
|
956
|
+
*/
|
|
957
|
+
registerLinkType(definition) {
|
|
958
|
+
this.typeRegistry.registerLinkType(definition);
|
|
959
|
+
}
|
|
960
|
+
/**
|
|
961
|
+
* Register a group type definition (Phase 2 - Group validation)
|
|
962
|
+
* @param definition Group type definition
|
|
963
|
+
*/
|
|
964
|
+
registerGroupType(definition) {
|
|
965
|
+
this.typeRegistry.registerGroupType(definition);
|
|
966
|
+
}
|
|
967
|
+
/**
|
|
968
|
+
* Enable real-time validation
|
|
969
|
+
*/
|
|
970
|
+
enableRealTimeValidation() {
|
|
971
|
+
this.validationEngine.enableRealTimeValidation();
|
|
972
|
+
}
|
|
973
|
+
/**
|
|
974
|
+
* Disable real-time validation
|
|
975
|
+
*/
|
|
976
|
+
disableRealTimeValidation() {
|
|
977
|
+
this.validationEngine.disableRealTimeValidation();
|
|
978
|
+
}
|
|
979
|
+
/**
|
|
980
|
+
* Check if real-time validation is enabled
|
|
981
|
+
*/
|
|
982
|
+
isRealTimeValidationEnabled() {
|
|
983
|
+
return this.validationEngine.isRealTimeValidationEnabled();
|
|
984
|
+
}
|
|
985
|
+
// ============================================================================
|
|
986
|
+
// End Validation API
|
|
987
|
+
// ============================================================================
|
|
988
|
+
/**
|
|
989
|
+
* Select nodes
|
|
990
|
+
*/
|
|
991
|
+
selectNodes(nodeIds) {
|
|
992
|
+
const selectedNodes = new Set(nodeIds);
|
|
993
|
+
this.store.set('selectedNodes', selectedNodes);
|
|
994
|
+
// Update node states
|
|
995
|
+
if (this.diagram) {
|
|
996
|
+
this.diagram.getNodes().forEach((node) => {
|
|
997
|
+
node.setState({ selected: selectedNodes.has(node.id) });
|
|
998
|
+
});
|
|
999
|
+
}
|
|
1000
|
+
this.eventBus.emit('selection:changed', { nodes: nodeIds });
|
|
1001
|
+
}
|
|
1002
|
+
/**
|
|
1003
|
+
* Select links
|
|
1004
|
+
*/
|
|
1005
|
+
selectLinks(linkIds) {
|
|
1006
|
+
const selectedLinks = new Set(linkIds);
|
|
1007
|
+
this.store.set('selectedLinks', selectedLinks);
|
|
1008
|
+
// Update link states
|
|
1009
|
+
if (this.diagram) {
|
|
1010
|
+
this.diagram.getLinks().forEach((link) => {
|
|
1011
|
+
link.setState(selectedLinks.has(link.id) ? 'selected' : 'default');
|
|
1012
|
+
});
|
|
1013
|
+
}
|
|
1014
|
+
this.eventBus.emit('selection:changed', { links: linkIds });
|
|
1015
|
+
}
|
|
1016
|
+
/**
|
|
1017
|
+
* Clear selection
|
|
1018
|
+
*/
|
|
1019
|
+
clearSelection() {
|
|
1020
|
+
this.selectNodes([]);
|
|
1021
|
+
this.selectLinks([]);
|
|
1022
|
+
this.eventBus.emit('selection:cleared');
|
|
1023
|
+
}
|
|
1024
|
+
/**
|
|
1025
|
+
* Undo
|
|
1026
|
+
*/
|
|
1027
|
+
undo() {
|
|
1028
|
+
return tslib_1.__awaiter(this, void 0, void 0, function* () {
|
|
1029
|
+
yield this.commandManager.undo();
|
|
1030
|
+
});
|
|
1031
|
+
}
|
|
1032
|
+
/**
|
|
1033
|
+
* Redo
|
|
1034
|
+
*/
|
|
1035
|
+
redo() {
|
|
1036
|
+
return tslib_1.__awaiter(this, void 0, void 0, function* () {
|
|
1037
|
+
yield this.commandManager.redo();
|
|
1038
|
+
});
|
|
1039
|
+
}
|
|
1040
|
+
/**
|
|
1041
|
+
* Can undo
|
|
1042
|
+
*/
|
|
1043
|
+
canUndo() {
|
|
1044
|
+
return this.commandManager.canUndo();
|
|
1045
|
+
}
|
|
1046
|
+
/**
|
|
1047
|
+
* Can redo
|
|
1048
|
+
*/
|
|
1049
|
+
canRedo() {
|
|
1050
|
+
return this.commandManager.canRedo();
|
|
1051
|
+
}
|
|
1052
|
+
/**
|
|
1053
|
+
* Validate diagram
|
|
1054
|
+
*/
|
|
1055
|
+
validate() {
|
|
1056
|
+
if (!this.diagram) {
|
|
1057
|
+
return {
|
|
1058
|
+
valid: true,
|
|
1059
|
+
errors: [],
|
|
1060
|
+
warnings: [],
|
|
1061
|
+
};
|
|
1062
|
+
}
|
|
1063
|
+
return this.validationEngine.validateDiagram(this.diagram);
|
|
1064
|
+
}
|
|
1065
|
+
/**
|
|
1066
|
+
* Serialize diagram (with mode)
|
|
1067
|
+
*/
|
|
1068
|
+
serialize() {
|
|
1069
|
+
if (!this.diagram) {
|
|
1070
|
+
return null;
|
|
1071
|
+
}
|
|
1072
|
+
const serialized = this.serializer.serialize(this.diagram);
|
|
1073
|
+
// Include current mode
|
|
1074
|
+
serialized.mode = this.modeManager.serialize();
|
|
1075
|
+
return serialized;
|
|
1076
|
+
}
|
|
1077
|
+
/**
|
|
1078
|
+
* Deserialize diagram (with mode)
|
|
1079
|
+
*/
|
|
1080
|
+
deserialize(data, options) {
|
|
1081
|
+
const diagram = this.serializer.deserialize(data, options);
|
|
1082
|
+
this.setDiagram(diagram);
|
|
1083
|
+
// Restore mode if present
|
|
1084
|
+
this.modeManager.restore(data.mode);
|
|
1085
|
+
return diagram;
|
|
1086
|
+
}
|
|
1087
|
+
/**
|
|
1088
|
+
* Load diagram from JSON (with mode)
|
|
1089
|
+
*/
|
|
1090
|
+
loadFromJSON(json, options) {
|
|
1091
|
+
const data = typeof json === 'string' ? JSON.parse(json) : json;
|
|
1092
|
+
return this.deserialize(data, options);
|
|
1093
|
+
}
|
|
1094
|
+
/**
|
|
1095
|
+
* Save diagram to JSON
|
|
1096
|
+
*/
|
|
1097
|
+
saveToJSON() {
|
|
1098
|
+
const data = this.serialize();
|
|
1099
|
+
return data ? JSON.stringify(data, null, 2) : null;
|
|
1100
|
+
}
|
|
1101
|
+
/**
|
|
1102
|
+
* Register a plugin AND bring it to life.
|
|
1103
|
+
*
|
|
1104
|
+
* `PluginManager.register()` only RECORDS a plugin; `install()` and
|
|
1105
|
+
* `activate()` are separate steps. Calling register alone — which both of
|
|
1106
|
+
* this engine's entry points used to do — left every plugin permanently
|
|
1107
|
+
* inert: its hooks never fired, though `getPlugin()` happily returned it.
|
|
1108
|
+
* "Register a plugin" can only sensibly mean "make it run", so this drives
|
|
1109
|
+
* the full lifecycle. A plugin that throws is reported and skipped rather
|
|
1110
|
+
* than taking the host down with it.
|
|
1111
|
+
*/
|
|
1112
|
+
registerPlugin(plugin) {
|
|
1113
|
+
return tslib_1.__awaiter(this, void 0, void 0, function* () {
|
|
1114
|
+
var _a, _b;
|
|
1115
|
+
const name = (_a = plugin.metadata) === null || _a === void 0 ? void 0 : _a.name;
|
|
1116
|
+
this.pluginManager.register(plugin);
|
|
1117
|
+
if (!name)
|
|
1118
|
+
return;
|
|
1119
|
+
try {
|
|
1120
|
+
yield this.pluginManager.install(name);
|
|
1121
|
+
yield this.pluginManager.activate(name);
|
|
1122
|
+
}
|
|
1123
|
+
catch (error) {
|
|
1124
|
+
(_b = this.eventBus) === null || _b === void 0 ? void 0 : _b.emit('plugin:error', { name, error });
|
|
1125
|
+
}
|
|
1126
|
+
});
|
|
1127
|
+
}
|
|
1128
|
+
/**
|
|
1129
|
+
* Get plugin
|
|
1130
|
+
*/
|
|
1131
|
+
getPlugin(name) {
|
|
1132
|
+
return this.pluginManager.get(name);
|
|
1133
|
+
}
|
|
1134
|
+
/**
|
|
1135
|
+
* Set viewport
|
|
1136
|
+
*/
|
|
1137
|
+
setViewport(viewport) {
|
|
1138
|
+
this.store.set('viewport', viewport);
|
|
1139
|
+
this.eventBus.emit('viewport:changed', viewport);
|
|
1140
|
+
}
|
|
1141
|
+
/**
|
|
1142
|
+
* Set zoom
|
|
1143
|
+
*/
|
|
1144
|
+
setZoom(zoom) {
|
|
1145
|
+
const clampedZoom = Math.max(0.1, Math.min(5, zoom));
|
|
1146
|
+
this.store.set('zoom', clampedZoom);
|
|
1147
|
+
this.eventBus.emit('viewport:zoomed', clampedZoom);
|
|
1148
|
+
}
|
|
1149
|
+
/**
|
|
1150
|
+
* Get performance report
|
|
1151
|
+
*/
|
|
1152
|
+
getPerformanceReport() {
|
|
1153
|
+
return this.performanceMonitor.getReport();
|
|
1154
|
+
}
|
|
1155
|
+
// ============================================================================
|
|
1156
|
+
// Mode Management (Delegation to ModeManager)
|
|
1157
|
+
// ============================================================================
|
|
1158
|
+
/**
|
|
1159
|
+
* Get current diagram mode
|
|
1160
|
+
*/
|
|
1161
|
+
getMode() {
|
|
1162
|
+
return this.modeManager.getMode();
|
|
1163
|
+
}
|
|
1164
|
+
/**
|
|
1165
|
+
* Set diagram mode
|
|
1166
|
+
*/
|
|
1167
|
+
setMode(mode) {
|
|
1168
|
+
this.modeManager.setMode(mode);
|
|
1169
|
+
this.syncReadonlyLock();
|
|
1170
|
+
}
|
|
1171
|
+
/**
|
|
1172
|
+
* Wave 9 — Card 7. Push the mode's read-only verdict down onto the DOCUMENT.
|
|
1173
|
+
*
|
|
1174
|
+
* Before this wave `DiagramMode.VIEW` / `PRESENTATION` and `isReadOnlyMode()`
|
|
1175
|
+
* existed, were documented as "all editing disabled" — and gated NOTHING. Not a
|
|
1176
|
+
* command, not a model mutator, not the event binder. They were a boolean nobody
|
|
1177
|
+
* asked. This is the line that makes the mode real: the model holds the lock, and
|
|
1178
|
+
* the model is where mutation actually happens.
|
|
1179
|
+
*
|
|
1180
|
+
* Call it after any mode change, and whenever a diagram is attached (a diagram
|
|
1181
|
+
* loaded into an engine that is ALREADY in presentation mode must come up locked,
|
|
1182
|
+
* or read-only would depend on the order the host happened to call things in).
|
|
1183
|
+
*/
|
|
1184
|
+
syncReadonlyLock() {
|
|
1185
|
+
var _a;
|
|
1186
|
+
(_a = this.diagram) === null || _a === void 0 ? void 0 : _a.setReadonly(this.modeManager.isReadOnlyMode());
|
|
1187
|
+
}
|
|
1188
|
+
/**
|
|
1189
|
+
* Check if in designer mode
|
|
1190
|
+
*/
|
|
1191
|
+
isDesignerMode() {
|
|
1192
|
+
return this.modeManager.isDesignerMode();
|
|
1193
|
+
}
|
|
1194
|
+
/**
|
|
1195
|
+
* Check if in running mode
|
|
1196
|
+
*/
|
|
1197
|
+
isRunningMode() {
|
|
1198
|
+
return this.modeManager.isRunningMode();
|
|
1199
|
+
}
|
|
1200
|
+
/**
|
|
1201
|
+
* Check if in view mode
|
|
1202
|
+
*/
|
|
1203
|
+
isViewMode() {
|
|
1204
|
+
return this.modeManager.isViewMode();
|
|
1205
|
+
}
|
|
1206
|
+
/**
|
|
1207
|
+
* Check if in debug mode
|
|
1208
|
+
*/
|
|
1209
|
+
isDebugMode() {
|
|
1210
|
+
return this.modeManager.isDebugMode();
|
|
1211
|
+
}
|
|
1212
|
+
/**
|
|
1213
|
+
* Check if in presentation mode
|
|
1214
|
+
*/
|
|
1215
|
+
isPresentationMode() {
|
|
1216
|
+
return this.modeManager.isPresentationMode();
|
|
1217
|
+
}
|
|
1218
|
+
/**
|
|
1219
|
+
* Check if in read-only mode (any mode except designer)
|
|
1220
|
+
*/
|
|
1221
|
+
isReadOnlyMode() {
|
|
1222
|
+
return this.modeManager.isReadOnlyMode();
|
|
1223
|
+
}
|
|
1224
|
+
/**
|
|
1225
|
+
* Add mode transition guard
|
|
1226
|
+
*/
|
|
1227
|
+
addModeGuard(name, guard) {
|
|
1228
|
+
this.modeManager.addModeGuard(name, guard);
|
|
1229
|
+
}
|
|
1230
|
+
/**
|
|
1231
|
+
* Remove mode transition guard
|
|
1232
|
+
*/
|
|
1233
|
+
removeModeGuard(name) {
|
|
1234
|
+
this.modeManager.removeModeGuard(name);
|
|
1235
|
+
}
|
|
1236
|
+
/**
|
|
1237
|
+
* Clear all mode transition guards
|
|
1238
|
+
*/
|
|
1239
|
+
clearModeGuards() {
|
|
1240
|
+
this.modeManager.clearModeGuards();
|
|
1241
|
+
}
|
|
1242
|
+
/**
|
|
1243
|
+
* Configure viewport settings for specific mode
|
|
1244
|
+
*/
|
|
1245
|
+
configureModeViewport(mode, settings) {
|
|
1246
|
+
this.modeManager.configureModeViewport(mode, settings);
|
|
1247
|
+
}
|
|
1248
|
+
/**
|
|
1249
|
+
* Get viewport settings for specific mode
|
|
1250
|
+
*/
|
|
1251
|
+
getModeViewportSettings(mode) {
|
|
1252
|
+
return this.modeManager.getModeViewportSettings(mode);
|
|
1253
|
+
}
|
|
1254
|
+
/**
|
|
1255
|
+
* Get mode history
|
|
1256
|
+
*/
|
|
1257
|
+
getModeHistory() {
|
|
1258
|
+
return this.modeManager.getModeHistory();
|
|
1259
|
+
}
|
|
1260
|
+
/**
|
|
1261
|
+
* Clear mode history
|
|
1262
|
+
*/
|
|
1263
|
+
clearModeHistory() {
|
|
1264
|
+
this.modeManager.clearModeHistory();
|
|
1265
|
+
}
|
|
1266
|
+
/**
|
|
1267
|
+
* Navigate to previous mode
|
|
1268
|
+
*/
|
|
1269
|
+
previousMode() {
|
|
1270
|
+
this.modeManager.previousMode();
|
|
1271
|
+
}
|
|
1272
|
+
/**
|
|
1273
|
+
* Navigate to next mode
|
|
1274
|
+
*/
|
|
1275
|
+
nextMode() {
|
|
1276
|
+
this.modeManager.nextMode();
|
|
1277
|
+
}
|
|
1278
|
+
/**
|
|
1279
|
+
* Push mode onto stack (save current, switch to new)
|
|
1280
|
+
*/
|
|
1281
|
+
pushMode(mode) {
|
|
1282
|
+
this.modeManager.pushMode(mode);
|
|
1283
|
+
}
|
|
1284
|
+
/**
|
|
1285
|
+
* Pop mode from stack (return to previous)
|
|
1286
|
+
*/
|
|
1287
|
+
popMode() {
|
|
1288
|
+
this.modeManager.popMode();
|
|
1289
|
+
}
|
|
1290
|
+
/**
|
|
1291
|
+
* Get mode analytics
|
|
1292
|
+
*/
|
|
1293
|
+
getModeAnalytics() {
|
|
1294
|
+
return this.modeManager.getModeAnalytics();
|
|
1295
|
+
}
|
|
1296
|
+
/**
|
|
1297
|
+
* Register before mode change hook
|
|
1298
|
+
*/
|
|
1299
|
+
beforeModeChange(hook) {
|
|
1300
|
+
return this.modeManager.beforeModeChange(hook);
|
|
1301
|
+
}
|
|
1302
|
+
/**
|
|
1303
|
+
* Register after mode change hook
|
|
1304
|
+
*/
|
|
1305
|
+
afterModeChange(hook) {
|
|
1306
|
+
return this.modeManager.afterModeChange(hook);
|
|
1307
|
+
}
|
|
1308
|
+
// wave14/model — `getNodeBehaviorForMode` DELETED along with NodeModel.behaviorOverrides.
|
|
1309
|
+
// It had no caller outside its own spec; the real mode enforcement is the wave-9
|
|
1310
|
+
// ReadonlyLock on the model (see models/readonly-lock.ts), which every mutator actually
|
|
1311
|
+
// consults. (Its sibling getLinkBehaviorForMode below is equally caller-less — left in
|
|
1312
|
+
// place because it is outside this card's chain, flagged for a future sweep.)
|
|
1313
|
+
/**
|
|
1314
|
+
* Get link behavior adjusted for current mode
|
|
1315
|
+
*/
|
|
1316
|
+
getLinkBehaviorForMode(baseBehavior) {
|
|
1317
|
+
const defaults = {
|
|
1318
|
+
deletable: true,
|
|
1319
|
+
selectable: true,
|
|
1320
|
+
};
|
|
1321
|
+
// Merge base behavior with defaults
|
|
1322
|
+
const merged = Object.assign(Object.assign({}, defaults), baseBehavior);
|
|
1323
|
+
// Apply mode restrictions
|
|
1324
|
+
const currentMode = this.modeManager.getMode();
|
|
1325
|
+
switch (currentMode) {
|
|
1326
|
+
case DiagramMode_1.DiagramMode.DESIGNER:
|
|
1327
|
+
// In designer mode, respect all base behavior settings
|
|
1328
|
+
return merged;
|
|
1329
|
+
case DiagramMode_1.DiagramMode.RUNNING:
|
|
1330
|
+
case DiagramMode_1.DiagramMode.VIEW:
|
|
1331
|
+
case DiagramMode_1.DiagramMode.DEBUG:
|
|
1332
|
+
case DiagramMode_1.DiagramMode.PRESENTATION:
|
|
1333
|
+
// In all other modes, disable editing but keep selectable
|
|
1334
|
+
return {
|
|
1335
|
+
deletable: false,
|
|
1336
|
+
selectable: merged.selectable,
|
|
1337
|
+
};
|
|
1338
|
+
default:
|
|
1339
|
+
return merged;
|
|
1340
|
+
}
|
|
1341
|
+
}
|
|
1342
|
+
/**
|
|
1343
|
+
* Initialize the engine
|
|
1344
|
+
*/
|
|
1345
|
+
initialize() {
|
|
1346
|
+
if (this.initialized) {
|
|
1347
|
+
return;
|
|
1348
|
+
}
|
|
1349
|
+
this.initialized = true;
|
|
1350
|
+
this.destroyed = false;
|
|
1351
|
+
this.eventBus.emit('engine:initialized');
|
|
1352
|
+
}
|
|
1353
|
+
/**
|
|
1354
|
+
* Get the store
|
|
1355
|
+
*/
|
|
1356
|
+
getStore() {
|
|
1357
|
+
return this.store;
|
|
1358
|
+
}
|
|
1359
|
+
/**
|
|
1360
|
+
* Subscribe to events
|
|
1361
|
+
*/
|
|
1362
|
+
on(event, listener) {
|
|
1363
|
+
this.eventBus.on(event, listener);
|
|
1364
|
+
}
|
|
1365
|
+
/**
|
|
1366
|
+
* Unsubscribe from events
|
|
1367
|
+
*/
|
|
1368
|
+
off(event, listener) {
|
|
1369
|
+
this.eventBus.off(event, listener);
|
|
1370
|
+
}
|
|
1371
|
+
/**
|
|
1372
|
+
* Destroy engine
|
|
1373
|
+
*/
|
|
1374
|
+
destroy() {
|
|
1375
|
+
if (this.destroyed)
|
|
1376
|
+
return;
|
|
1377
|
+
this.destroyed = true;
|
|
1378
|
+
// Emit destroyed event BEFORE removing listeners
|
|
1379
|
+
this.eventBus.emit('engine:destroyed');
|
|
1380
|
+
// Cleanup
|
|
1381
|
+
if (this.diagram) {
|
|
1382
|
+
this.detachDiagram(this.diagram);
|
|
1383
|
+
}
|
|
1384
|
+
// Reset mode through ModeManager
|
|
1385
|
+
this.modeManager.restore(DiagramMode_1.DiagramMode.DESIGNER);
|
|
1386
|
+
this.initialized = false;
|
|
1387
|
+
// Note: PluginManager doesn't have destroy method yet
|
|
1388
|
+
// this.pluginManager.destroy();
|
|
1389
|
+
this.eventBus.removeAllListeners();
|
|
1390
|
+
this.store.reset();
|
|
1391
|
+
}
|
|
1392
|
+
/**
|
|
1393
|
+
* Configure systems
|
|
1394
|
+
*/
|
|
1395
|
+
configureSystems() {
|
|
1396
|
+
var _a, _b, _c;
|
|
1397
|
+
// Configure command manager
|
|
1398
|
+
if ((_a = this.config.history) === null || _a === void 0 ? void 0 : _a.maxCommands) {
|
|
1399
|
+
this.commandManager.setMaxHistorySize(this.config.history.maxCommands);
|
|
1400
|
+
}
|
|
1401
|
+
// Configure validation
|
|
1402
|
+
if ((_b = this.config.validation) === null || _b === void 0 ? void 0 : _b.realTime) {
|
|
1403
|
+
this.validationEngine.enableRealTimeValidation();
|
|
1404
|
+
}
|
|
1405
|
+
// Configure performance monitoring
|
|
1406
|
+
if ((_c = this.config.performance) === null || _c === void 0 ? void 0 : _c.warnThreshold) {
|
|
1407
|
+
this.performanceMonitor.setWarnThreshold(this.config.performance.warnThreshold);
|
|
1408
|
+
}
|
|
1409
|
+
}
|
|
1410
|
+
/**
|
|
1411
|
+
* Install plugins
|
|
1412
|
+
*/
|
|
1413
|
+
installPlugins() {
|
|
1414
|
+
return tslib_1.__awaiter(this, void 0, void 0, function* () {
|
|
1415
|
+
if (this.config.plugins) {
|
|
1416
|
+
// Same contract as registerPlugin(): a configured plugin is a LIVE one.
|
|
1417
|
+
for (const plugin of this.config.plugins) {
|
|
1418
|
+
yield this.registerPlugin(plugin);
|
|
1419
|
+
}
|
|
1420
|
+
}
|
|
1421
|
+
});
|
|
1422
|
+
}
|
|
1423
|
+
/**
|
|
1424
|
+
* Register a node as an obstacle in the routing engine
|
|
1425
|
+
*/
|
|
1426
|
+
registerNodeAsObstacle(node) {
|
|
1427
|
+
const obstacle = {
|
|
1428
|
+
id: node.id,
|
|
1429
|
+
x: node.position.x,
|
|
1430
|
+
y: node.position.y,
|
|
1431
|
+
width: node.size.width,
|
|
1432
|
+
height: node.size.height,
|
|
1433
|
+
};
|
|
1434
|
+
this.routingEngine.addObstacle(obstacle);
|
|
1435
|
+
}
|
|
1436
|
+
/**
|
|
1437
|
+
* Wave 5 (Edge routing) — Card 6: reconcile the shared ObstacleMap with the
|
|
1438
|
+
* diagram's GROUP state, idempotently:
|
|
1439
|
+
*
|
|
1440
|
+
* - a COLLAPSED group (with geometry) is ONE solid obstacle;
|
|
1441
|
+
* - members hidden under a collapsed group (at any depth) are NOT obstacles
|
|
1442
|
+
* — they are not visible, and routing around invisible things produces
|
|
1443
|
+
* inexplicable detours;
|
|
1444
|
+
* - expanding restores the members and removes the group block.
|
|
1445
|
+
*
|
|
1446
|
+
* Runs on every group add/remove/collapse/expand. Public so the grouping
|
|
1447
|
+
* feature (which owns collapse SEMANTICS but not the ObstacleMap) can force a
|
|
1448
|
+
* reconcile after batch operations.
|
|
1449
|
+
*/
|
|
1450
|
+
refreshGroupObstacles() {
|
|
1451
|
+
if (!this.diagram)
|
|
1452
|
+
return;
|
|
1453
|
+
const groups = this.diagram.getGroups();
|
|
1454
|
+
// ids of members hidden under a collapsed group at any depth
|
|
1455
|
+
const hidden = new Set();
|
|
1456
|
+
for (const g of groups) {
|
|
1457
|
+
// a group's members are hidden if IT or any of its ancestors is collapsed
|
|
1458
|
+
let cur = g;
|
|
1459
|
+
let effectiveCollapsed = false;
|
|
1460
|
+
const guard = new Set();
|
|
1461
|
+
while (cur && !guard.has(cur.id)) {
|
|
1462
|
+
guard.add(cur.id);
|
|
1463
|
+
if (cur.isCollapsed) {
|
|
1464
|
+
effectiveCollapsed = true;
|
|
1465
|
+
break;
|
|
1466
|
+
}
|
|
1467
|
+
cur = cur.parentGroupId ? this.diagram.getGroup(cur.parentGroupId) : undefined;
|
|
1468
|
+
}
|
|
1469
|
+
if (!effectiveCollapsed)
|
|
1470
|
+
continue;
|
|
1471
|
+
for (const memberId of g.members)
|
|
1472
|
+
hidden.add(memberId);
|
|
1473
|
+
}
|
|
1474
|
+
// hidden members: out of the map; visible ones: (re)registered
|
|
1475
|
+
for (const node of this.diagram.getNodes()) {
|
|
1476
|
+
if (hidden.has(node.id)) {
|
|
1477
|
+
this.routingEngine.removeObstacle(node.id);
|
|
1478
|
+
}
|
|
1479
|
+
else {
|
|
1480
|
+
this.routingEngine.updateObstacle({
|
|
1481
|
+
id: node.id,
|
|
1482
|
+
x: node.position.x,
|
|
1483
|
+
y: node.position.y,
|
|
1484
|
+
width: node.size.width,
|
|
1485
|
+
height: node.size.height,
|
|
1486
|
+
kind: 'node',
|
|
1487
|
+
});
|
|
1488
|
+
}
|
|
1489
|
+
}
|
|
1490
|
+
// group blocks: only VISIBLE collapsed groups block (a collapsed group
|
|
1491
|
+
// nested inside another collapsed group is itself hidden)
|
|
1492
|
+
for (const g of groups) {
|
|
1493
|
+
const rect = this.groupObstacleRect(g);
|
|
1494
|
+
if (g.isCollapsed && !hidden.has(g.id) && rect) {
|
|
1495
|
+
this.routingEngine.updateObstacle(Object.assign(Object.assign({ id: g.id }, rect), { kind: 'group' }));
|
|
1496
|
+
}
|
|
1497
|
+
else {
|
|
1498
|
+
this.routingEngine.removeObstacle(g.id);
|
|
1499
|
+
}
|
|
1500
|
+
}
|
|
1501
|
+
}
|
|
1502
|
+
groupObstacleRect(g) {
|
|
1503
|
+
if (g.size) {
|
|
1504
|
+
return { x: g.position.x, y: g.position.y, width: g.size.width, height: g.size.height };
|
|
1505
|
+
}
|
|
1506
|
+
if (g.bounds)
|
|
1507
|
+
return Object.assign({}, g.bounds);
|
|
1508
|
+
return null;
|
|
1509
|
+
}
|
|
1510
|
+
/**
|
|
1511
|
+
* Update a node's obstacle when it moves or resizes
|
|
1512
|
+
* Also invalidates all links so they recalculate paths with new obstacle positions
|
|
1513
|
+
*/
|
|
1514
|
+
updateNodeObstacle(node) {
|
|
1515
|
+
const obstacle = {
|
|
1516
|
+
id: node.id,
|
|
1517
|
+
x: node.position.x,
|
|
1518
|
+
y: node.position.y,
|
|
1519
|
+
width: node.size.width,
|
|
1520
|
+
height: node.size.height,
|
|
1521
|
+
};
|
|
1522
|
+
this.routingEngine.updateObstacle(obstacle);
|
|
1523
|
+
// NOTE: this method used to also mark EVERY link dirty "so they recalculate"
|
|
1524
|
+
// — a sledgehammer that was dead code while the subscription bug hid it
|
|
1525
|
+
// (see attachDiagram) and became a live perf regression the moment the fix
|
|
1526
|
+
// woke it up: one node move invalidated every link VNode in the diagram.
|
|
1527
|
+
// Link invalidation is owned by the renderer's per-frame route pre-pass +
|
|
1528
|
+
// markLinksWhoseFrameChanged (wave 4), which re-renders exactly the links
|
|
1529
|
+
// whose GEOMETRY actually changed.
|
|
1530
|
+
}
|
|
1531
|
+
/**
|
|
1532
|
+
* Unregister a node obstacle when node is removed
|
|
1533
|
+
*/
|
|
1534
|
+
unregisterNodeObstacle(nodeId) {
|
|
1535
|
+
this.routingEngine.removeObstacle(nodeId);
|
|
1536
|
+
}
|
|
1537
|
+
/**
|
|
1538
|
+
* Attach diagram
|
|
1539
|
+
*/
|
|
1540
|
+
attachDiagram(diagram) {
|
|
1541
|
+
// Subscribe to diagram events. Every subscription returns a disposer which
|
|
1542
|
+
// we store so detachDiagram can unsubscribe the engine's own listeners
|
|
1543
|
+
// without accumulating duplicates across attach/detach cycles.
|
|
1544
|
+
this.diagramDisposers.push(diagram.on('node:added', (node) => {
|
|
1545
|
+
this.eventBus.emit('node:added', node);
|
|
1546
|
+
// Register node as obstacle for routing
|
|
1547
|
+
this.registerNodeAsObstacle(node);
|
|
1548
|
+
// Listen for node position/size changes
|
|
1549
|
+
this.diagramDisposers.push(
|
|
1550
|
+
// BUGFIX (wave 5, found by the nodes agent): NodeModel emits
|
|
1551
|
+
// `change:position` (via trackChange) — never bare `position`. This
|
|
1552
|
+
// listener had NEVER fired, so the shared ObstacleMap went stale on
|
|
1553
|
+
// every node move; only the renderer's per-request obstacle list kept
|
|
1554
|
+
// visible routing honest, while the a-star/dijkstra/visibility
|
|
1555
|
+
// adapters — which read the SHARED map — routed around yesterday's
|
|
1556
|
+
// positions.
|
|
1557
|
+
node.on('change:position', () => {
|
|
1558
|
+
this.updateNodeObstacle(node);
|
|
1559
|
+
}));
|
|
1560
|
+
this.diagramDisposers.push(node.on('change:size', () => {
|
|
1561
|
+
this.updateNodeObstacle(node);
|
|
1562
|
+
}));
|
|
1563
|
+
}));
|
|
1564
|
+
this.diagramDisposers.push(diagram.on('node:removed', (node) => {
|
|
1565
|
+
this.eventBus.emit('node:removed', node);
|
|
1566
|
+
// Unregister node obstacle
|
|
1567
|
+
this.unregisterNodeObstacle(node.id);
|
|
1568
|
+
}));
|
|
1569
|
+
this.diagramDisposers.push(diagram.on('link:added', (link) => {
|
|
1570
|
+
this.eventBus.emit('link:added', link);
|
|
1571
|
+
// Wave 6 (Card 7): wiring up the last free port in a dynamic group must
|
|
1572
|
+
// conjure the next one. This is the whole feature — a `dynamic` group
|
|
1573
|
+
// whose allocator never runs is just a group.
|
|
1574
|
+
this.reconcileDynamicPortsFor(link);
|
|
1575
|
+
}));
|
|
1576
|
+
// Wave 5 — Card 6: group state drives the obstacle map. `group:added` also
|
|
1577
|
+
// subscribes to that group's own collapse/expand emitter (DiagramModel does
|
|
1578
|
+
// not forward those); existing groups are wired below.
|
|
1579
|
+
const wireGroup = (group) => {
|
|
1580
|
+
this.diagramDisposers.push(group.on('collapsed', () => this.refreshGroupObstacles()));
|
|
1581
|
+
this.diagramDisposers.push(group.on('expanded', () => this.refreshGroupObstacles()));
|
|
1582
|
+
};
|
|
1583
|
+
this.diagramDisposers.push(diagram.on('group:added', (group) => {
|
|
1584
|
+
wireGroup(group);
|
|
1585
|
+
this.refreshGroupObstacles();
|
|
1586
|
+
}));
|
|
1587
|
+
this.diagramDisposers.push(diagram.on('group:removed', () => this.refreshGroupObstacles()));
|
|
1588
|
+
this.diagramDisposers.push(diagram.on('group:changed', () => this.refreshGroupObstacles()));
|
|
1589
|
+
diagram.getGroups().forEach(wireGroup);
|
|
1590
|
+
if (diagram.getGroups().length > 0)
|
|
1591
|
+
this.refreshGroupObstacles();
|
|
1592
|
+
this.diagramDisposers.push(diagram.on('link:removed', (link) => {
|
|
1593
|
+
this.eventBus.emit('link:removed', link);
|
|
1594
|
+
// Unwiring frees a port, which may leave the group with a SURPLUS of
|
|
1595
|
+
// spares — the allocator retires the ones it spawned.
|
|
1596
|
+
this.reconcileDynamicPortsFor(link);
|
|
1597
|
+
}));
|
|
1598
|
+
// Register all existing nodes as obstacles
|
|
1599
|
+
diagram.getNodes().forEach((node) => {
|
|
1600
|
+
this.registerNodeAsObstacle(node);
|
|
1601
|
+
// Listen for node position/size changes
|
|
1602
|
+
this.diagramDisposers.push(node.on('change:position', () => {
|
|
1603
|
+
this.updateNodeObstacle(node);
|
|
1604
|
+
}));
|
|
1605
|
+
this.diagramDisposers.push(node.on('change:size', () => {
|
|
1606
|
+
this.updateNodeObstacle(node);
|
|
1607
|
+
}));
|
|
1608
|
+
});
|
|
1609
|
+
}
|
|
1610
|
+
/**
|
|
1611
|
+
* Detach diagram
|
|
1612
|
+
*/
|
|
1613
|
+
detachDiagram(diagram) {
|
|
1614
|
+
// Unregister all node obstacles from routing engine so the old diagram's
|
|
1615
|
+
// nodes don't remain as obstacles affecting the newly attached diagram.
|
|
1616
|
+
// This only touches the routing engine's obstacle registry, not the diagram.
|
|
1617
|
+
diagram.getNodes().forEach((node) => {
|
|
1618
|
+
this.unregisterNodeObstacle(node.id);
|
|
1619
|
+
});
|
|
1620
|
+
// Unsubscribe the engine's own listeners that were registered in
|
|
1621
|
+
// attachDiagram. We deliberately do NOT clear() or otherwise mutate the old
|
|
1622
|
+
// diagram: it must stay fully intact so it can be re-attached later with all
|
|
1623
|
+
// of its nodes and links preserved. Disposing the stored handlers also
|
|
1624
|
+
// prevents duplicate handlers from accumulating across attach/detach cycles.
|
|
1625
|
+
for (const dispose of this.diagramDisposers) {
|
|
1626
|
+
dispose();
|
|
1627
|
+
}
|
|
1628
|
+
this.diagramDisposers = [];
|
|
1629
|
+
}
|
|
1630
|
+
/**
|
|
1631
|
+
* Find port in diagram
|
|
1632
|
+
*/
|
|
1633
|
+
findPort(portId) {
|
|
1634
|
+
if (!this.diagram) {
|
|
1635
|
+
return undefined;
|
|
1636
|
+
}
|
|
1637
|
+
for (const node of this.diagram.getNodes()) {
|
|
1638
|
+
const port = node.getPort(portId);
|
|
1639
|
+
if (port) {
|
|
1640
|
+
return port;
|
|
1641
|
+
}
|
|
1642
|
+
}
|
|
1643
|
+
return undefined;
|
|
1644
|
+
}
|
|
1645
|
+
/**
|
|
1646
|
+
* Get node that owns a port (Phase 1.6b)
|
|
1647
|
+
*/
|
|
1648
|
+
getNodeForPort(portId) {
|
|
1649
|
+
if (!this.diagram) {
|
|
1650
|
+
return undefined;
|
|
1651
|
+
}
|
|
1652
|
+
for (const node of this.diagram.getNodes()) {
|
|
1653
|
+
if (node.getPort(portId)) {
|
|
1654
|
+
return node;
|
|
1655
|
+
}
|
|
1656
|
+
}
|
|
1657
|
+
return undefined;
|
|
1658
|
+
}
|
|
1659
|
+
/**
|
|
1660
|
+
* Get port position in global coordinates (Phase 1.6b)
|
|
1661
|
+
* @param portId Port ID
|
|
1662
|
+
* @returns Global position of the port
|
|
1663
|
+
*/
|
|
1664
|
+
getPortGlobalPosition(portId) {
|
|
1665
|
+
var _a, _b, _c, _d;
|
|
1666
|
+
const port = this.findPort(portId);
|
|
1667
|
+
if (!port) {
|
|
1668
|
+
return { x: 0, y: 0 };
|
|
1669
|
+
}
|
|
1670
|
+
const node = this.getNodeForPort(portId);
|
|
1671
|
+
if (!node) {
|
|
1672
|
+
return { x: 0, y: 0 };
|
|
1673
|
+
}
|
|
1674
|
+
// Port position is normalized (0-1) relative to node size
|
|
1675
|
+
const localPortPos = {
|
|
1676
|
+
x: ((_b = (_a = port.position) === null || _a === void 0 ? void 0 : _a.x) !== null && _b !== void 0 ? _b : 0.5) * node.size.width,
|
|
1677
|
+
y: ((_d = (_c = port.position) === null || _c === void 0 ? void 0 : _c.y) !== null && _d !== void 0 ? _d : 0.5) * node.size.height,
|
|
1678
|
+
};
|
|
1679
|
+
// Transform to global using node's global position
|
|
1680
|
+
const nodeGlobalPos = node.getGlobalPosition();
|
|
1681
|
+
return {
|
|
1682
|
+
x: nodeGlobalPos.x + localPortPos.x,
|
|
1683
|
+
y: nodeGlobalPos.y + localPortPos.y,
|
|
1684
|
+
};
|
|
1685
|
+
}
|
|
1686
|
+
/**
|
|
1687
|
+
* Compute link path using specified routing algorithm (Phase 1.6b)
|
|
1688
|
+
* @param linkId Link ID
|
|
1689
|
+
* @param algorithm Routing algorithm to use
|
|
1690
|
+
* @param options Routing options
|
|
1691
|
+
* @returns Array of points forming the path
|
|
1692
|
+
*/
|
|
1693
|
+
computeLinkPath(linkId, algorithm, options = {}) {
|
|
1694
|
+
var _a, _b;
|
|
1695
|
+
const link = (_a = this.diagram) === null || _a === void 0 ? void 0 : _a.getLink(linkId);
|
|
1696
|
+
if (!link) {
|
|
1697
|
+
return [];
|
|
1698
|
+
}
|
|
1699
|
+
// Build obstacle map (excluding source and target nodes)
|
|
1700
|
+
const sourceNode = this.getNodeForPort(link.sourcePortId);
|
|
1701
|
+
const targetNode = this.getNodeForPort(link.targetPortId);
|
|
1702
|
+
const excludeIds = [sourceNode === null || sourceNode === void 0 ? void 0 : sourceNode.id, targetNode === null || targetNode === void 0 ? void 0 : targetNode.id].filter((id) => id !== undefined);
|
|
1703
|
+
const obstacleMap = ObstacleMapBuilder_1.ObstacleMapBuilder.fromDiagramExcluding(this.diagram, excludeIds, { margin: (_b = options.obstacleMargin) !== null && _b !== void 0 ? _b : 5 });
|
|
1704
|
+
// Get port positions (in global coordinates)
|
|
1705
|
+
const start = this.getPortGlobalPosition(link.sourcePortId);
|
|
1706
|
+
const end = this.getPortGlobalPosition(link.targetPortId);
|
|
1707
|
+
// Route based on algorithm
|
|
1708
|
+
let points;
|
|
1709
|
+
switch (algorithm) {
|
|
1710
|
+
case 'straight': {
|
|
1711
|
+
const router = new StraightRouter_1.StraightRouter();
|
|
1712
|
+
const result = router.route({ start, end, obstacles: obstacleMap.getObstacles(), options });
|
|
1713
|
+
points = (result === null || result === void 0 ? void 0 : result.points) || [start, end];
|
|
1714
|
+
break;
|
|
1715
|
+
}
|
|
1716
|
+
case 'orthogonal': {
|
|
1717
|
+
const router = new OrthogonalRouter_1.OrthogonalRouter();
|
|
1718
|
+
const result = router.route({ start, end, obstacles: obstacleMap.getObstacles(), options });
|
|
1719
|
+
points = (result === null || result === void 0 ? void 0 : result.points) || [start, end];
|
|
1720
|
+
break;
|
|
1721
|
+
}
|
|
1722
|
+
case 'astar': {
|
|
1723
|
+
const router = new AStarRouter_1.AStarRouter(obstacleMap, options);
|
|
1724
|
+
points = router.route(start, end);
|
|
1725
|
+
// Fallback to direct path if no path found
|
|
1726
|
+
if (points.length === 0) {
|
|
1727
|
+
points = [start, end];
|
|
1728
|
+
}
|
|
1729
|
+
break;
|
|
1730
|
+
}
|
|
1731
|
+
case 'dijkstra': {
|
|
1732
|
+
const router = new DijkstraRouter_1.DijkstraRouter(obstacleMap, options);
|
|
1733
|
+
points = router.route(start, end);
|
|
1734
|
+
// Fallback to direct path if no path found
|
|
1735
|
+
if (points.length === 0) {
|
|
1736
|
+
points = [start, end];
|
|
1737
|
+
}
|
|
1738
|
+
break;
|
|
1739
|
+
}
|
|
1740
|
+
case 'visibility': {
|
|
1741
|
+
const router = new VisibilityGraphRouter_1.VisibilityGraphRouter(obstacleMap, options);
|
|
1742
|
+
points = router.route(start, end);
|
|
1743
|
+
// Fallback to direct path if no path found
|
|
1744
|
+
if (points.length === 0) {
|
|
1745
|
+
points = [start, end];
|
|
1746
|
+
}
|
|
1747
|
+
break;
|
|
1748
|
+
}
|
|
1749
|
+
default:
|
|
1750
|
+
throw new Error(`Unknown routing algorithm: ${algorithm}`);
|
|
1751
|
+
}
|
|
1752
|
+
return points;
|
|
1753
|
+
}
|
|
1754
|
+
/**
|
|
1755
|
+
* Generate link path using RoutingEngine with obstacle avoidance
|
|
1756
|
+
* This ensures the final link respects the routing algorithm setting (A*, none, etc.)
|
|
1757
|
+
*/
|
|
1758
|
+
generateLinkPathWithRouting(link, sourcePos, targetPos, sourceDirection, targetDirection, sourceNode, targetNode) {
|
|
1759
|
+
return tslib_1.__awaiter(this, void 0, void 0, function* () {
|
|
1760
|
+
// Get obstacles from diagram (INCLUDE ALL nodes, even source and target)
|
|
1761
|
+
// The routing algorithm uses gap offset to ensure paths start/end outside node boundaries
|
|
1762
|
+
const obstacles = [];
|
|
1763
|
+
if (this.diagram) {
|
|
1764
|
+
this.diagram.getNodes().forEach(node => {
|
|
1765
|
+
// Include ALL nodes as obstacles - the gap offset ensures we start/end outside
|
|
1766
|
+
obstacles.push({
|
|
1767
|
+
id: node.id,
|
|
1768
|
+
x: node.position.x,
|
|
1769
|
+
y: node.position.y,
|
|
1770
|
+
width: node.size.width,
|
|
1771
|
+
height: node.size.height,
|
|
1772
|
+
});
|
|
1773
|
+
});
|
|
1774
|
+
}
|
|
1775
|
+
// Use the routing engine's default algorithm
|
|
1776
|
+
const algorithm = this.routingEngine.getDefaultAlgorithm();
|
|
1777
|
+
// Route the path with obstacle avoidance
|
|
1778
|
+
// IMPORTANT: avoidObstacles should be based on whether obstacles exist, not on the algorithm
|
|
1779
|
+
// - 'orthogonal' algorithm with avoidObstacles=true uses A* with orthogonal-only movement
|
|
1780
|
+
// - 'a-star', 'dijkstra', etc. also use obstacle avoidance
|
|
1781
|
+
// - 'straight' never avoids obstacles (direct line)
|
|
1782
|
+
const shouldAvoidObstacles = obstacles.length > 0 && algorithm !== 'straight';
|
|
1783
|
+
const routedPath = yield this.routingEngine.routeAsync({
|
|
1784
|
+
start: sourcePos,
|
|
1785
|
+
end: targetPos,
|
|
1786
|
+
sourceDirection,
|
|
1787
|
+
targetDirection,
|
|
1788
|
+
obstacles,
|
|
1789
|
+
options: {
|
|
1790
|
+
algorithm,
|
|
1791
|
+
avoidObstacles: shouldAvoidObstacles,
|
|
1792
|
+
obstacleMargin: 20,
|
|
1793
|
+
gridSize: 10, // Grid size for A* pathfinding
|
|
1794
|
+
}
|
|
1795
|
+
});
|
|
1796
|
+
// Set the link points from the routed path.
|
|
1797
|
+
// Wave 9 — Card 7: a SYSTEM write. These points are DERIVED from geometry the
|
|
1798
|
+
// document already has; a read-only diagram must still route its links or it
|
|
1799
|
+
// renders with no path at all. Not reachable from user input.
|
|
1800
|
+
if (routedPath && routedPath.points.length > 0) {
|
|
1801
|
+
const points = routedPath.points;
|
|
1802
|
+
this.diagram
|
|
1803
|
+
? this.diagram.runSystemWrite(() => link.setPoints(points))
|
|
1804
|
+
: link.setPoints(points);
|
|
1805
|
+
}
|
|
1806
|
+
else {
|
|
1807
|
+
// Fallback to simple path generation if routing failed
|
|
1808
|
+
link.generatePath(sourcePos, targetPos, sourceDirection, targetDirection);
|
|
1809
|
+
}
|
|
1810
|
+
});
|
|
1811
|
+
}
|
|
1812
|
+
/**
|
|
1813
|
+
* Set layout service for diagram layouts
|
|
1814
|
+
*
|
|
1815
|
+
* @param service - Layout service instance
|
|
1816
|
+
*/
|
|
1817
|
+
setLayoutService(service) {
|
|
1818
|
+
this.layoutService = service;
|
|
1819
|
+
}
|
|
1820
|
+
/**
|
|
1821
|
+
* The named-algorithm registry, with the built-ins already registered.
|
|
1822
|
+
*
|
|
1823
|
+
* THE BUG THIS CLOSES: `applyLayout()` below requires `setLayoutService()` —
|
|
1824
|
+
* and NOTHING in the codebase ever called it (the only mention is a doc comment
|
|
1825
|
+
* in layout/index.ts). So dagre, ELK, force, spectral and community — thousands
|
|
1826
|
+
* of lines, several of them untested — were UNREACHABLE from the engine. That
|
|
1827
|
+
* is the whole "auto-layout is fragmented" finding. Layout now works out of the
|
|
1828
|
+
* box, with no setup call.
|
|
1829
|
+
*/
|
|
1830
|
+
getLayoutRegistry() {
|
|
1831
|
+
if (!this._layoutRegistry) {
|
|
1832
|
+
// ONE factory, shared with the preset applicator: adapters, then the Card-2
|
|
1833
|
+
// portfolio, then our layered engine, then the auto-selector (which takes the
|
|
1834
|
+
// registry, so its candidate pool is whatever is actually registered).
|
|
1835
|
+
this._layoutRegistry = (0, layout_registry_1.createDefaultLayoutRegistry)();
|
|
1836
|
+
}
|
|
1837
|
+
return this._layoutRegistry;
|
|
1838
|
+
}
|
|
1839
|
+
/**
|
|
1840
|
+
* Lay out the whole diagram.
|
|
1841
|
+
*
|
|
1842
|
+
* await engine.layout('dagre', { direction: 'LR' });
|
|
1843
|
+
*
|
|
1844
|
+
* DETERMINISTIC and IDEMPOTENT: the same graph and seed produce byte-identical
|
|
1845
|
+
* coordinates, and running it twice changes nothing the second time. (The seed
|
|
1846
|
+
* defaults to a fixed constant, so an author who never thinks about seeds still
|
|
1847
|
+
* gets the same picture on every reload; randomness is opt-in.)
|
|
1848
|
+
*
|
|
1849
|
+
* NOT to be confused with `DiagramModel.getLayoutManager()`, which answers a
|
|
1850
|
+
* DIFFERENT question — "where should this ONE newly-added node go?" — and is a
|
|
1851
|
+
* placement strategy, not a graph layout. The audit called them "two parallel
|
|
1852
|
+
* stacks" and asked for them to be merged; they are not parallel, and merging
|
|
1853
|
+
* them would force a single-node placer to pretend it can lay out a graph.
|
|
1854
|
+
*/
|
|
1855
|
+
layout() {
|
|
1856
|
+
return tslib_1.__awaiter(this, arguments, void 0, function* (name = layout_registry_1.DEFAULT_LAYOUT_NAME, options = {}) {
|
|
1857
|
+
var _a, _b;
|
|
1858
|
+
if (!this.diagram) {
|
|
1859
|
+
throw new Error('No diagram loaded');
|
|
1860
|
+
}
|
|
1861
|
+
const registered = this.getLayoutRegistry().get(name);
|
|
1862
|
+
if (!registered) {
|
|
1863
|
+
const available = this.getLayoutRegistry().names().join(', ');
|
|
1864
|
+
throw new Error(`Unknown layout '${name}'. Registered layouts: ${available}`);
|
|
1865
|
+
}
|
|
1866
|
+
const seed = (_a = options.seed) !== null && _a !== void 0 ? _a : rng_1.DEFAULT_LAYOUT_SEED;
|
|
1867
|
+
// Snapshot BEFORE any positions are committed: every return path below must
|
|
1868
|
+
// invalidate the routed polyline of links whose endpoints moved. See
|
|
1869
|
+
// invalidateStaleLinkRoutes for why leaving them is a real, observed bug.
|
|
1870
|
+
const positionsBeforeLayout = this.snapshotNodePositions();
|
|
1871
|
+
// Wave 7 Card 4 — nested container layout. On by default whenever the
|
|
1872
|
+
// diagram has containers, because the flat path is not just worse there, it
|
|
1873
|
+
// is WRONG: it interleaves members of different groups and never updates a
|
|
1874
|
+
// single group frame, so every container is left behind pointing at where
|
|
1875
|
+
// its members used to be. Opt out with `nested: false`.
|
|
1876
|
+
const hasGroups = this.diagram.getGroups().length > 0;
|
|
1877
|
+
if (((_b = options.nested) !== null && _b !== void 0 ? _b : hasGroups) && hasGroups) {
|
|
1878
|
+
const result = yield new CompoundLayoutService_1.CompoundLayoutService(this.diagram, {
|
|
1879
|
+
defaultAlgorithm: name,
|
|
1880
|
+
adapters: this.getLayoutRegistry().adapters(),
|
|
1881
|
+
layoutTopLevel: true,
|
|
1882
|
+
defaultPadding: options.containerPadding,
|
|
1883
|
+
gridGap: options.groupSpacing,
|
|
1884
|
+
layoutOptions: Object.assign(Object.assign({}, options), { seed }),
|
|
1885
|
+
}).layout();
|
|
1886
|
+
// CompoundLayoutService commits through setPosition/setFrame as it goes
|
|
1887
|
+
// (it has to — each level reads the geometry the level below produced).
|
|
1888
|
+
this.invalidateStaleLinkRoutes(positionsBeforeLayout);
|
|
1889
|
+
return {
|
|
1890
|
+
nodePositions: result.nodePositions,
|
|
1891
|
+
bounds: result.bounds,
|
|
1892
|
+
metadata: {
|
|
1893
|
+
algorithm: name,
|
|
1894
|
+
executionTime: 0,
|
|
1895
|
+
nested: true,
|
|
1896
|
+
containersLaidOut: result.laidOut,
|
|
1897
|
+
containersSkipped: result.skipped,
|
|
1898
|
+
containersCollapsed: result.collapsed,
|
|
1899
|
+
},
|
|
1900
|
+
algorithm: name,
|
|
1901
|
+
seed,
|
|
1902
|
+
// Card 3's run-status fields. A nested layout is a complete, synchronous
|
|
1903
|
+
// walk of the container tree — it is never cut short, so it reports itself
|
|
1904
|
+
// honestly as a finished single-pass run rather than leaving the caller to
|
|
1905
|
+
// guess from `undefined`.
|
|
1906
|
+
partial: false,
|
|
1907
|
+
iteration: 1,
|
|
1908
|
+
totalIterations: 1,
|
|
1909
|
+
};
|
|
1910
|
+
}
|
|
1911
|
+
// ---- the flat path -----------------------------------------------------
|
|
1912
|
+
//
|
|
1913
|
+
// Card 3 routes it through the layout HOST, which runs the algorithm inline
|
|
1914
|
+
// through the very same message loop a worker would run — so there is no second
|
|
1915
|
+
// code path to drift, and a test proves the two produce byte-identical
|
|
1916
|
+
// coordinates. (This replaces the direct runLayout() call: runLayout remains the
|
|
1917
|
+
// shared apply-and-commit path used by the preset applicator, and the host
|
|
1918
|
+
// commits through the same setPosition() route.)
|
|
1919
|
+
// A hand-rolled RegisteredLayout is an opaque closure over a DiagramModel.
|
|
1920
|
+
// A closure cannot cross a thread boundary, so it runs inline — not a
|
|
1921
|
+
// policy, just physics. Every built-in exposes its adapter and takes the
|
|
1922
|
+
// worker path below.
|
|
1923
|
+
if (!registered.adapter) {
|
|
1924
|
+
const result = yield registered.apply(this.diagram, Object.assign(Object.assign({}, options), { seed }));
|
|
1925
|
+
this.commitLayoutPositions(result.nodePositions);
|
|
1926
|
+
this.invalidateStaleLinkRoutes(positionsBeforeLayout);
|
|
1927
|
+
return Object.assign(Object.assign({}, result), { algorithm: name, seed, partial: false, iteration: 1, totalIterations: 1 });
|
|
1928
|
+
}
|
|
1929
|
+
// Wave 7 Card 3: ONE path, whether or not a worker port is attached. The
|
|
1930
|
+
// host runs the algorithm inline through the very same message loop the
|
|
1931
|
+
// worker would run, so there is no second code path to drift — and a test
|
|
1932
|
+
// proves the two produce byte-identical coordinates.
|
|
1933
|
+
const graph = (0, layout_graph_1.serializeGraph)(this.diagram.getNodes(), this.diagram.getLinks());
|
|
1934
|
+
const result = yield this.getLayoutHost().run(name, graph, (0, layout_registry_1.translateOptions)(name, Object.assign(Object.assign({}, options), { seed })), {
|
|
1935
|
+
signal: options.signal,
|
|
1936
|
+
onProgress: options.onProgress,
|
|
1937
|
+
timeBudgetMs: options.timeBudgetMs,
|
|
1938
|
+
sliceMs: options.sliceMs,
|
|
1939
|
+
stopAfterIteration: options.stopAfterIteration,
|
|
1940
|
+
});
|
|
1941
|
+
this.commitLayoutPositions(result.nodePositions);
|
|
1942
|
+
this.invalidateStaleLinkRoutes(positionsBeforeLayout);
|
|
1943
|
+
return Object.assign(Object.assign({}, result), { algorithm: name, seed });
|
|
1944
|
+
});
|
|
1945
|
+
}
|
|
1946
|
+
/**
|
|
1947
|
+
* Wave 7 — Card 6: mental-map-preserving incremental layout.
|
|
1948
|
+
*
|
|
1949
|
+
* await engine.layoutIncremental({ changed: [newNode.id], budget: { maxPerNode: 60 } });
|
|
1950
|
+
*
|
|
1951
|
+
* Mermaid re-renders the whole diagram from scratch on every edit and destroys the
|
|
1952
|
+
* user's spatial memory of their own diagram. This does the opposite:
|
|
1953
|
+
*
|
|
1954
|
+
* 1. everything outside the affected region becomes a Card-5 ANCHOR — an
|
|
1955
|
+
* immovable obstacle the layout works AROUND (impossible before Card 5, when
|
|
1956
|
+
* "constraints" were positions clamped after an unconstrained run);
|
|
1957
|
+
* 2. the result is RE-ALIGNED onto the previous layout by matching centroids —
|
|
1958
|
+
* exactly the translation that minimises squared displacement, because a
|
|
1959
|
+
* layered layout is defined only up to translation, so one new node widening
|
|
1960
|
+
* a rank slides the whole picture sideways and makes every node "move" while
|
|
1961
|
+
* the drawing is unchanged;
|
|
1962
|
+
* 3. movement is MEASURED against an explicit budget and reported.
|
|
1963
|
+
*
|
|
1964
|
+
* Returns a tween PLAN rather than animating: the engine says where things go at
|
|
1965
|
+
* time t, the host drives t — which is what keeps this runnable in a worker, in
|
|
1966
|
+
* SSR and in a test.
|
|
1967
|
+
*
|
|
1968
|
+
* ONE SEMANTIC, STATED PLAINLY. This runs the `layered` engine, because it is the
|
|
1969
|
+
* only one that honours anchors DURING coordinate assignment. If the diagram's
|
|
1970
|
+
* current positions came from a DIFFERENT engine, the first incremental pass
|
|
1971
|
+
* necessarily re-draws it — and that is not a bug to paper over: "move as little
|
|
1972
|
+
* as possible" is ill-posed across engines, because there is no meaningful small
|
|
1973
|
+
* move between two engines' idea of the same graph.
|
|
1974
|
+
*/
|
|
1975
|
+
layoutIncremental() {
|
|
1976
|
+
return tslib_1.__awaiter(this, arguments, void 0, function* (options = {}) {
|
|
1977
|
+
var _a, _b, _c, _d;
|
|
1978
|
+
if (!this.diagram)
|
|
1979
|
+
throw new Error('No diagram loaded');
|
|
1980
|
+
// The baseline EXCLUDES the just-added nodes. A node the user has only now
|
|
1981
|
+
// created has no meaningful "previous position" — it sits wherever the model
|
|
1982
|
+
// defaulted it (usually 0,0). Counting it is not a cosmetic error in the report:
|
|
1983
|
+
// it DRAGS THE CENTROID, so the re-alignment translates the whole diagram to
|
|
1984
|
+
// accommodate a position that never meant anything.
|
|
1985
|
+
const changed = new Set((_a = options.changed) !== null && _a !== void 0 ? _a : []);
|
|
1986
|
+
const before = new Map(this.diagram
|
|
1987
|
+
.getNodes()
|
|
1988
|
+
.filter((n) => !changed.has(n.id))
|
|
1989
|
+
.map((n) => [n.id, { x: n.position.x, y: n.position.y }]));
|
|
1990
|
+
const semantic = (0, mental_map_1.constraintsForStrategy)(this.diagram, before, options);
|
|
1991
|
+
const result = yield this.layout((_b = options.name) !== null && _b !== void 0 ? _b : 'layered', Object.assign(Object.assign({}, options), { semantic }));
|
|
1992
|
+
// Re-align onto the previous picture — but ONLY when the layout was FREE.
|
|
1993
|
+
// Alignment cancels the arbitrary translation of a free layout; if a node is
|
|
1994
|
+
// anchored the frame of reference is already pinned, and translating on top of
|
|
1995
|
+
// that DRAGS THE ANCHORED NODES, which is the one thing they exist to prevent.
|
|
1996
|
+
const raw = new Map(result.nodePositions);
|
|
1997
|
+
const anchored = Object.keys((_c = semantic.anchors) !== null && _c !== void 0 ? _c : {}).length > 0;
|
|
1998
|
+
const naive = (0, mental_map_1.measureMovement)(before, raw, options.budget);
|
|
1999
|
+
const aligned = anchored ? raw : (0, mental_map_1.alignToPrevious)(raw, before).positions;
|
|
2000
|
+
const settled = (0, mental_map_1.measureMovement)(before, aligned, options.budget);
|
|
2001
|
+
const movement = Object.assign(Object.assign({}, settled), { savedByAlignment: Math.max(0, naive.total - settled.total) });
|
|
2002
|
+
// The alignment translation below moves nodes AGAIN after layout()'s own
|
|
2003
|
+
// commit — so its own snapshot/invalidate pair, or the translated picture
|
|
2004
|
+
// keeps polylines routed for the pre-alignment coordinates.
|
|
2005
|
+
const beforeAlign = this.snapshotNodePositions();
|
|
2006
|
+
for (const [id, p] of aligned) {
|
|
2007
|
+
(_d = this.diagram.getNode(id)) === null || _d === void 0 ? void 0 : _d.setPosition(p.x, p.y);
|
|
2008
|
+
}
|
|
2009
|
+
this.invalidateStaleLinkRoutes(beforeAlign);
|
|
2010
|
+
return Object.assign(Object.assign({}, result), { nodePositions: aligned, movement, tween: (0, mental_map_1.planTween)(before, aligned) });
|
|
2011
|
+
});
|
|
2012
|
+
}
|
|
2013
|
+
/** Every node's current position, keyed by id — the pre-layout baseline. */
|
|
2014
|
+
snapshotNodePositions() {
|
|
2015
|
+
var _a, _b;
|
|
2016
|
+
const snapshot = new Map();
|
|
2017
|
+
for (const node of (_b = (_a = this.diagram) === null || _a === void 0 ? void 0 : _a.getNodes()) !== null && _b !== void 0 ? _b : []) {
|
|
2018
|
+
snapshot.set(node.id, { x: node.position.x, y: node.position.y });
|
|
2019
|
+
}
|
|
2020
|
+
return snapshot;
|
|
2021
|
+
}
|
|
2022
|
+
/**
|
|
2023
|
+
* THE FIX for the stale-polyline bug: layout moves NODES, but each link keeps
|
|
2024
|
+
* the polyline it was routed on before. The renderer treats a non-empty
|
|
2025
|
+
* `link.points` as painted geometry and edge LABELS are placed by walking it
|
|
2026
|
+
* (LabelRenderer via `link.getPointAtPosition`) — so after `engine.layout()`
|
|
2027
|
+
* the labels sat at PRE-layout midpoints, observed live as "yes"/"no"
|
|
2028
|
+
* stranded off-canvas at the old world coordinates while the nodes moved.
|
|
2029
|
+
*
|
|
2030
|
+
* Emptying the polyline is the canonical "re-route me" state: the renderer's
|
|
2031
|
+
* frame pre-pass recomputes the route from the CURRENT node/port geometry on
|
|
2032
|
+
* the next paint, and `setPoints` marks the link dirty so the cached VNode
|
|
2033
|
+
* cannot be reused. Only links whose endpoint nodes actually MOVED are
|
|
2034
|
+
* touched — an anchored subgraph's links keep their (still valid) routes.
|
|
2035
|
+
*
|
|
2036
|
+
* Manual waypoints are cleared with the route, same as `setPathType` /
|
|
2037
|
+
* `setRouter` do: they were authored against the pre-layout coordinates, and
|
|
2038
|
+
* an empty polyline with the manual flag still set would send the renderer
|
|
2039
|
+
* down its keep-the-interior-waypoints branch with no interior to keep.
|
|
2040
|
+
*/
|
|
2041
|
+
invalidateStaleLinkRoutes(before) {
|
|
2042
|
+
var _a, _b;
|
|
2043
|
+
if (!this.diagram)
|
|
2044
|
+
return;
|
|
2045
|
+
const moved = new Set();
|
|
2046
|
+
for (const node of this.diagram.getNodes()) {
|
|
2047
|
+
const prev = before.get(node.id);
|
|
2048
|
+
if (!prev || prev.x !== node.position.x || prev.y !== node.position.y) {
|
|
2049
|
+
moved.add(node.id);
|
|
2050
|
+
}
|
|
2051
|
+
}
|
|
2052
|
+
if (moved.size === 0)
|
|
2053
|
+
return;
|
|
2054
|
+
const nodeIdForPort = (portId) => { var _a; return (_a = this.diagram.getNodes().find((n) => n.getPorts().some((p) => p.id === portId))) === null || _a === void 0 ? void 0 : _a.id; };
|
|
2055
|
+
for (const link of this.diagram.getLinks()) {
|
|
2056
|
+
const sourceId = (_a = link.sourceNodeId) !== null && _a !== void 0 ? _a : nodeIdForPort(link.sourcePortId);
|
|
2057
|
+
const targetId = (_b = link.targetNodeId) !== null && _b !== void 0 ? _b : nodeIdForPort(link.targetPortId);
|
|
2058
|
+
if (!(sourceId && moved.has(sourceId)) && !(targetId && moved.has(targetId))) {
|
|
2059
|
+
continue;
|
|
2060
|
+
}
|
|
2061
|
+
if (link.points.length > 0) {
|
|
2062
|
+
link.setPoints([]);
|
|
2063
|
+
}
|
|
2064
|
+
if (link.getMetadata('hasManualWaypoints') === true) {
|
|
2065
|
+
link.setMetadata('hasManualWaypoints', false);
|
|
2066
|
+
}
|
|
2067
|
+
}
|
|
2068
|
+
}
|
|
2069
|
+
/**
|
|
2070
|
+
* Commit computed positions onto the real nodes.
|
|
2071
|
+
*
|
|
2072
|
+
* `setPosition()` rather than a raw write, so the spatial index, the routing
|
|
2073
|
+
* obstacle map and the renderer all see the move — the wave-5 lesson: a
|
|
2074
|
+
* subscription to an event nobody emits is a subscription to nothing.
|
|
2075
|
+
*
|
|
2076
|
+
* This is also the reason a partial result is USEFUL rather than merely
|
|
2077
|
+
* honest: the best-so-far positions land on the diagram exactly like final
|
|
2078
|
+
* ones, so a cancelled layout leaves a real, coherent picture behind.
|
|
2079
|
+
*/
|
|
2080
|
+
commitLayoutPositions(nodePositions) {
|
|
2081
|
+
var _a, _b;
|
|
2082
|
+
for (const [nodeId, position] of nodePositions) {
|
|
2083
|
+
(_b = (_a = this.diagram) === null || _a === void 0 ? void 0 : _a.getNode(nodeId)) === null || _b === void 0 ? void 0 : _b.setPosition(position.x, position.y);
|
|
2084
|
+
}
|
|
2085
|
+
}
|
|
2086
|
+
/**
|
|
2087
|
+
* Run layout off the main thread.
|
|
2088
|
+
*
|
|
2089
|
+
* The engine does NOT construct the Worker — that would bake one bundler's URL
|
|
2090
|
+
* scheme into the engine, which is exactly what the old (never-instantiated)
|
|
2091
|
+
* `LayoutWorkerPool` did with its hardcoded `/assets/workers/layout.worker.js`.
|
|
2092
|
+
* The caller builds the worker however its toolchain likes and hands it in:
|
|
2093
|
+
*
|
|
2094
|
+
* const worker = new Worker(new URL('./layout.worker', import.meta.url),
|
|
2095
|
+
* { type: 'module' });
|
|
2096
|
+
* engine.setLayoutPort(worker as unknown as LayoutPort);
|
|
2097
|
+
*
|
|
2098
|
+
* Pass `undefined` to go back to running inline.
|
|
2099
|
+
*/
|
|
2100
|
+
setLayoutPort(port) {
|
|
2101
|
+
this.layoutPort = port;
|
|
2102
|
+
this.layoutHost = undefined; // rebuilt lazily against the new port
|
|
2103
|
+
}
|
|
2104
|
+
getLayoutHost() {
|
|
2105
|
+
if (!this.layoutHost) {
|
|
2106
|
+
this.layoutHost = new layout_host_1.LayoutHost(this.layoutPort, {
|
|
2107
|
+
// Inline runs resolve against the LIVE registry, so a layout registered
|
|
2108
|
+
// at runtime (or a built-in that a host has replaced) is honoured. A
|
|
2109
|
+
// real worker cannot: functions do not survive postMessage.
|
|
2110
|
+
resolve: (layoutName) => { var _a; return (_a = this.getLayoutRegistry().get(layoutName)) === null || _a === void 0 ? void 0 : _a.adapter; },
|
|
2111
|
+
});
|
|
2112
|
+
}
|
|
2113
|
+
return this.layoutHost;
|
|
2114
|
+
}
|
|
2115
|
+
/**
|
|
2116
|
+
* Apply layout to current diagram
|
|
2117
|
+
*
|
|
2118
|
+
* @param config - Layout configuration
|
|
2119
|
+
* @returns Layout result with positions and metadata
|
|
2120
|
+
* @throws Error if no diagram is loaded or layout service is not initialized
|
|
2121
|
+
* @deprecated Wave 7 Card 0 — use {@link layout} instead. This path requires a
|
|
2122
|
+
* `setLayoutService()` call that nothing ever made, so it always threw.
|
|
2123
|
+
*/
|
|
2124
|
+
applyLayout(config) {
|
|
2125
|
+
return tslib_1.__awaiter(this, void 0, void 0, function* () {
|
|
2126
|
+
if (!this.diagram) {
|
|
2127
|
+
throw new Error('No diagram loaded');
|
|
2128
|
+
}
|
|
2129
|
+
if (!this.layoutService) {
|
|
2130
|
+
throw new Error('LayoutService not initialized. Call setLayoutService() first.');
|
|
2131
|
+
}
|
|
2132
|
+
return this.layoutService.applyLayout(this.diagram, config);
|
|
2133
|
+
});
|
|
2134
|
+
}
|
|
2135
|
+
/**
|
|
2136
|
+
* Quick helper: Apply Dagre layout
|
|
2137
|
+
*
|
|
2138
|
+
* @param options - Dagre layout options
|
|
2139
|
+
* @param canvasDimensions - Optional canvas dimensions for viewport fitting
|
|
2140
|
+
* @returns Layout result
|
|
2141
|
+
*/
|
|
2142
|
+
applyDagreLayout(options, canvasDimensions) {
|
|
2143
|
+
return tslib_1.__awaiter(this, void 0, void 0, function* () {
|
|
2144
|
+
return this.applyLayout({
|
|
2145
|
+
adapter: 'dagre',
|
|
2146
|
+
options,
|
|
2147
|
+
animate: true,
|
|
2148
|
+
fit: false, // Don't auto-fit by default to allow user control
|
|
2149
|
+
canvasDimensions,
|
|
2150
|
+
});
|
|
2151
|
+
});
|
|
2152
|
+
}
|
|
2153
|
+
/**
|
|
2154
|
+
* Quick helper: Apply ELK layout
|
|
2155
|
+
*
|
|
2156
|
+
* @param options - ELK layout options
|
|
2157
|
+
* @param canvasDimensions - Optional canvas dimensions for viewport fitting
|
|
2158
|
+
* @returns Layout result
|
|
2159
|
+
*/
|
|
2160
|
+
applyELKLayout(options, canvasDimensions) {
|
|
2161
|
+
return tslib_1.__awaiter(this, void 0, void 0, function* () {
|
|
2162
|
+
return this.applyLayout({
|
|
2163
|
+
adapter: 'elk',
|
|
2164
|
+
options,
|
|
2165
|
+
animate: true,
|
|
2166
|
+
fit: false, // Don't auto-fit by default to allow user control
|
|
2167
|
+
canvasDimensions,
|
|
2168
|
+
});
|
|
2169
|
+
});
|
|
2170
|
+
}
|
|
2171
|
+
/**
|
|
2172
|
+
* Cleanup and dispose of all resources
|
|
2173
|
+
* Should be called when the engine is no longer needed
|
|
2174
|
+
*/
|
|
2175
|
+
dispose() {
|
|
2176
|
+
// Clear diagram
|
|
2177
|
+
if (this.diagram) {
|
|
2178
|
+
this.diagram.clear();
|
|
2179
|
+
this.diagram = null;
|
|
2180
|
+
}
|
|
2181
|
+
// Clear command history
|
|
2182
|
+
this.commandManager.clear();
|
|
2183
|
+
// Clear performance data
|
|
2184
|
+
this.performanceMonitor.clear();
|
|
2185
|
+
// Clear clipboard
|
|
2186
|
+
this.clipboardManager.clear();
|
|
2187
|
+
}
|
|
2188
|
+
}
|
|
2189
|
+
exports.DiagramEngine = DiagramEngine;
|
|
2190
|
+
//# sourceMappingURL=DiagramEngine.js.map
|