@grafloria/element 0.3.18 → 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.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,2104 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.DomEventBinder = void 0;
|
|
4
|
+
const tslib_1 = require("tslib");
|
|
5
|
+
// wave12/connect-ergonomics (gap 1): the ONE undoable step a subflow drag commits.
|
|
6
|
+
const engine_1 = require("@grafloria/engine");
|
|
7
|
+
const platform_1 = require("../platform");
|
|
8
|
+
// Wave 6 — Card 5: the pluggable tool registry. The binder CONSUMES it; a
|
|
9
|
+
// registered tool gets first refusal on every gesture (see onMouseDown).
|
|
10
|
+
const tools_1 = require("../ext/tools");
|
|
11
|
+
// Wave 9 — Card 2: the touch/mobile gesture set (pan, pinch, tap, long-press,
|
|
12
|
+
// drag-to-connect). Nothing in the framework-free renderer handled touch before.
|
|
13
|
+
const touch_gestures_1 = require("../interaction/touch-gestures");
|
|
14
|
+
// wave12/node-resize: the floating tool layer (8 resize handles + the clamp math).
|
|
15
|
+
// It answers "what tools exist and what does grabbing one DO"; the binder is the
|
|
16
|
+
// piece that was missing — the thing that actually GRABS one from a DOM pointer.
|
|
17
|
+
const selection_tools_1 = require("../interaction/selection-tools");
|
|
18
|
+
// wave12/connect-ergonomics (gap 2): the shipped proximity-connect engine, now
|
|
19
|
+
// driven from the LIVE node drag instead of host glue.
|
|
20
|
+
const port_positioning_1 = require("../svg/port-positioning");
|
|
21
|
+
const wheel_scroll_yield_1 = require("./wheel-scroll-yield");
|
|
22
|
+
const snapping_1 = require("../interaction/snapping");
|
|
23
|
+
const in_place_editor_1 = require("../interaction/in-place-editor");
|
|
24
|
+
// visio-depth: the shipped nudge math (KeyboardNavigationController.nudgeCommand)
|
|
25
|
+
// was auto-wired only in the Angular wrapper; `enableKeyboardNudge` drives it here.
|
|
26
|
+
const keyboard_navigation_1 = require("../interaction/keyboard-navigation");
|
|
27
|
+
class DomEventBinder {
|
|
28
|
+
/**
|
|
29
|
+
* Wave 6 — Card 3. The nodes currently being DRAGGED (past the movement
|
|
30
|
+
* threshold — an armed-but-uncommitted press is a click, not a drag).
|
|
31
|
+
*
|
|
32
|
+
* Node-drag state lives here, not on the InteractionController, so a custom
|
|
33
|
+
* node component had no way to know it was being dragged — and `dragging` is
|
|
34
|
+
* one of the props the component contract promises. This is the read-only
|
|
35
|
+
* window onto it.
|
|
36
|
+
*/
|
|
37
|
+
getDraggingNodeIds() {
|
|
38
|
+
var _a;
|
|
39
|
+
return ((_a = this.nodeDrag) === null || _a === void 0 ? void 0 : _a.committed) ? [...this.nodeDrag.nodeIds] : [];
|
|
40
|
+
}
|
|
41
|
+
/**
|
|
42
|
+
* True while a resize / rotate / vertex gesture owns the pointer.
|
|
43
|
+
*
|
|
44
|
+
* The companion to {@link getDraggingNodeIds} for the gestures that are NOT node drags.
|
|
45
|
+
* Custom-node culling needs it: unmounting a host element mid-resize would take the
|
|
46
|
+
* pointer capture and the handles with it, and `SelectionToolsController` keeps the
|
|
47
|
+
* gesture's own node private, so "is a gesture live" plus the current selection is the
|
|
48
|
+
* answer available from out here.
|
|
49
|
+
*/
|
|
50
|
+
hasActiveGesture() {
|
|
51
|
+
return this.selectionTools.isActive();
|
|
52
|
+
}
|
|
53
|
+
constructor(container, host, options = {}) {
|
|
54
|
+
var _a, _b, _c, _d, _e;
|
|
55
|
+
this.container = container;
|
|
56
|
+
this.host = host;
|
|
57
|
+
this.attached = false;
|
|
58
|
+
this.spaceKeyPressed = false;
|
|
59
|
+
this.isPanning = false;
|
|
60
|
+
/** Armed by an empty-canvas left press; becomes a real pan past the drag threshold. */
|
|
61
|
+
this.pendingEmptyPan = null;
|
|
62
|
+
/**
|
|
63
|
+
* The screen point where a PORT press started a connection. A press on a
|
|
64
|
+
* port claims the gesture immediately — but a press that never travels past
|
|
65
|
+
* the drag threshold is a CLICK, and a click on a shape must select it.
|
|
66
|
+
* Without this, the port hit zones (top-centre, side-mid — a card's whole
|
|
67
|
+
* header band) were dead for selection: connect swallowed the press,
|
|
68
|
+
* completion at the same spot failed validation, and the release fell out
|
|
69
|
+
* as a silent no-op. Found by live audit, on every node type.
|
|
70
|
+
*/
|
|
71
|
+
this.pendingPortClick = null;
|
|
72
|
+
/**
|
|
73
|
+
* Same click-vs-gesture layering for POSITIONED EDGE LABELS: a press on a
|
|
74
|
+
* label arms a label DRAG, so a motionless press-release ended as a silent
|
|
75
|
+
* no-op and the label was a selection dead zone — a query-builder join pill
|
|
76
|
+
* you could not click (live audit finding, the port dead-band's twin).
|
|
77
|
+
*/
|
|
78
|
+
this.pendingLabelClick = null;
|
|
79
|
+
this.lastPanX = 0;
|
|
80
|
+
this.lastPanY = 0;
|
|
81
|
+
this.nodeDrag = null;
|
|
82
|
+
this.groupDrag = null;
|
|
83
|
+
/** The proximity candidate currently highlighted mid-drag (for commit on drop). */
|
|
84
|
+
this.proximityCandidate = null;
|
|
85
|
+
// Bound once so removeEventListener gets the SAME function object it added —
|
|
86
|
+
// `removeEventListener(this.onX.bind(this))` allocates a new function and
|
|
87
|
+
// silently removes nothing (the classic listener leak).
|
|
88
|
+
this.boundWheel = (e) => this.onWheel(e);
|
|
89
|
+
/**
|
|
90
|
+
* Have we ever seen a real PointerEvent?
|
|
91
|
+
*
|
|
92
|
+
* The mouse listeners are kept as a LEGACY FALLBACK and auto-disable the instant
|
|
93
|
+
* a pointer event arrives. Why: every real browser fires `pointerdown` before the
|
|
94
|
+
* compatibility `mousedown`, so in a browser the pointer path wins and the mouse
|
|
95
|
+
* path goes dead — no double-handling. But jsdom implements NO PointerEvent at
|
|
96
|
+
* all, and this renderer's unit suites drive the binder by dispatching real
|
|
97
|
+
* `MouseEvent`s at the container. Feature-detecting instead of hard-switching
|
|
98
|
+
* keeps those suites (and any host that synthesizes mouse events) working exactly
|
|
99
|
+
* as before, while real hardware gets the pointer pipeline.
|
|
100
|
+
*/
|
|
101
|
+
this.sawPointerEvent = false;
|
|
102
|
+
/** The container's own touch-action, restored on detach. */
|
|
103
|
+
this.previousTouchAction = null;
|
|
104
|
+
this.boundPointerDown = (e) => this.onPointerDown(e);
|
|
105
|
+
this.boundPointerMove = (e) => this.onPointerMove(e);
|
|
106
|
+
this.boundPointerUp = (e) => this.onPointerUp(e);
|
|
107
|
+
this.boundPointerCancel = (e) => this.onPointerCancel(e);
|
|
108
|
+
this.boundContextMenu = (e) => this.onContextMenu(e);
|
|
109
|
+
// The legacy mouse listeners are GATED on `sawPointerEvent`: once the environment
|
|
110
|
+
// has proved it delivers PointerEvents, the pointer pipeline owns everything and
|
|
111
|
+
// these must go silent, or every mouse gesture would be handled twice (once as
|
|
112
|
+
// pointerdown, once as the compatibility mousedown that follows it).
|
|
113
|
+
//
|
|
114
|
+
// Gated on the LISTENER, not on onMouseDown() itself — the pointer fork calls
|
|
115
|
+
// onMouseDown() directly for mouse/pen, so gating the method would deafen the
|
|
116
|
+
// very path that replaces these.
|
|
117
|
+
this.boundMouseDown = (e) => {
|
|
118
|
+
if (this.sawPointerEvent)
|
|
119
|
+
return;
|
|
120
|
+
this.onMouseDown(e);
|
|
121
|
+
};
|
|
122
|
+
this.boundMouseMove = (e) => {
|
|
123
|
+
if (this.sawPointerEvent)
|
|
124
|
+
return;
|
|
125
|
+
this.onMouseMove(e);
|
|
126
|
+
};
|
|
127
|
+
this.boundMouseUp = (e) => {
|
|
128
|
+
if (this.sawPointerEvent)
|
|
129
|
+
return;
|
|
130
|
+
this.onMouseUp(e);
|
|
131
|
+
};
|
|
132
|
+
this.boundMouseLeave = () => this.onMouseLeave();
|
|
133
|
+
this.boundDblClick = (e) => this.onDoubleClick(e);
|
|
134
|
+
this.boundKeyDown = (e) => this.onKeyDown(e);
|
|
135
|
+
this.boundKeyUp = (e) => this.onKeyUp(e);
|
|
136
|
+
/** Did the press that resolveNode just handled land ON a drag handle? */
|
|
137
|
+
this.pressViaDragHandle = false;
|
|
138
|
+
this.options = {
|
|
139
|
+
enablePan: (_a = options.enablePan) !== null && _a !== void 0 ? _a : true,
|
|
140
|
+
enableZoom: (_b = options.enableZoom) !== null && _b !== void 0 ? _b : true,
|
|
141
|
+
zoomSensitivity: (_c = options.zoomSensitivity) !== null && _c !== void 0 ? _c : 0.1,
|
|
142
|
+
dragThreshold: (_d = options.dragThreshold) !== null && _d !== void 0 ? _d : 4,
|
|
143
|
+
readonly: (_e = options.readonly) !== null && _e !== void 0 ? _e : false,
|
|
144
|
+
};
|
|
145
|
+
this.selectionTools = new selection_tools_1.SelectionToolsController({
|
|
146
|
+
showHalo: false,
|
|
147
|
+
showRotateHandle: false,
|
|
148
|
+
showRemoveButton: false,
|
|
149
|
+
showLinkTools: false,
|
|
150
|
+
});
|
|
151
|
+
this.touch = new touch_gestures_1.TouchGestureController({
|
|
152
|
+
getEngine: () => this.host.getEngine(),
|
|
153
|
+
viewport: this.host.viewport,
|
|
154
|
+
interaction: this.host.interaction,
|
|
155
|
+
getRect: () => this.host.getRect(),
|
|
156
|
+
requestRender: () => this.host.requestRender(),
|
|
157
|
+
emit: (event, payload) => this.host.emit(event, payload),
|
|
158
|
+
isReadonly: () => this.isReadonly(),
|
|
159
|
+
}, {
|
|
160
|
+
enablePan: this.options.enablePan,
|
|
161
|
+
enableZoom: this.options.enableZoom,
|
|
162
|
+
}, this.selectionTools);
|
|
163
|
+
}
|
|
164
|
+
/**
|
|
165
|
+
* Wave 9 — Card 7. Is editing forbidden RIGHT NOW?
|
|
166
|
+
*
|
|
167
|
+
* Was: `this.options.readonly` — a static constructor flag. Which meant
|
|
168
|
+
* `engine.setMode(PRESENTATION)` — the engine's own read-only mode — did not
|
|
169
|
+
* reach the event binder AT ALL. You could put the engine in presentation mode
|
|
170
|
+
* and still drag nodes with the mouse.
|
|
171
|
+
*
|
|
172
|
+
* Now the binder asks the DOCUMENT, every time, so the mode is live: flip the
|
|
173
|
+
* engine to VIEW/PRESENTATION on a mounted canvas and the very next gesture is
|
|
174
|
+
* refused. The constructor option still forces read-only for a host that has no
|
|
175
|
+
* mode concept.
|
|
176
|
+
*/
|
|
177
|
+
isReadonly() {
|
|
178
|
+
var _a, _b;
|
|
179
|
+
return this.options.readonly || ((_b = (_a = this.host.getEngine()) === null || _a === void 0 ? void 0 : _a.getDiagram()) === null || _b === void 0 ? void 0 : _b.isReadonly()) === true;
|
|
180
|
+
}
|
|
181
|
+
/** Bind DOM listeners. No-op on the server and no-op if already attached. */
|
|
182
|
+
attach() {
|
|
183
|
+
var _a;
|
|
184
|
+
if (this.attached || !(0, platform_1.isBrowser)())
|
|
185
|
+
return;
|
|
186
|
+
this.attached = true;
|
|
187
|
+
// ------------------------------------------------------------------------
|
|
188
|
+
// Wave 9 — Card 2. `touch-action: none`.
|
|
189
|
+
//
|
|
190
|
+
// THE line that makes touch work, and it did not exist anywhere in this
|
|
191
|
+
// repository. Without it the browser owns the gesture: it decides a one-finger
|
|
192
|
+
// drag is a page scroll and a two-finger spread is a page zoom, and it STOPS
|
|
193
|
+
// DELIVERING pointermove to us mid-gesture. Every handler below can be
|
|
194
|
+
// perfectly correct and the canvas still will not pan — the events never
|
|
195
|
+
// arrive. This is the difference between "touch code exists" and "touch works".
|
|
196
|
+
//
|
|
197
|
+
// Set imperatively rather than in a stylesheet because the renderer is
|
|
198
|
+
// framework-free and ships no CSS; the container belongs to the host.
|
|
199
|
+
// ------------------------------------------------------------------------
|
|
200
|
+
this.previousTouchAction = (_a = this.container.style.touchAction) !== null && _a !== void 0 ? _a : '';
|
|
201
|
+
this.container.style.touchAction = 'none';
|
|
202
|
+
this.container.addEventListener('wheel', this.boundWheel, { passive: false });
|
|
203
|
+
// Pointer events: the primary pipeline (mouse, pen AND touch).
|
|
204
|
+
this.container.addEventListener('pointerdown', this.boundPointerDown);
|
|
205
|
+
this.container.addEventListener('pointermove', this.boundPointerMove);
|
|
206
|
+
this.container.addEventListener('pointerup', this.boundPointerUp);
|
|
207
|
+
this.container.addEventListener('pointercancel', this.boundPointerCancel);
|
|
208
|
+
// Suppress the OS long-press menu on touch; we emit our own `contextmenu`
|
|
209
|
+
// payload from the gesture controller (with the node/edge under the finger).
|
|
210
|
+
this.container.addEventListener('contextmenu', this.boundContextMenu);
|
|
211
|
+
// Legacy mouse listeners. Auto-disabled the moment a real PointerEvent shows
|
|
212
|
+
// up (see `sawPointerEvent`), so in a browser these are dead and there is no
|
|
213
|
+
// double-handling — but jsdom has no PointerEvent, and the unit suites drive
|
|
214
|
+
// this binder with dispatched MouseEvents.
|
|
215
|
+
this.container.addEventListener('mousedown', this.boundMouseDown);
|
|
216
|
+
this.container.addEventListener('mousemove', this.boundMouseMove);
|
|
217
|
+
this.container.addEventListener('mouseup', this.boundMouseUp);
|
|
218
|
+
this.container.addEventListener('mouseleave', this.boundMouseLeave);
|
|
219
|
+
this.container.addEventListener('dblclick', this.boundDblClick);
|
|
220
|
+
window.addEventListener('keydown', this.boundKeyDown);
|
|
221
|
+
window.addEventListener('keyup', this.boundKeyUp);
|
|
222
|
+
}
|
|
223
|
+
/** Remove EXACTLY the listeners we added, and drop all gesture state. */
|
|
224
|
+
detach() {
|
|
225
|
+
var _a;
|
|
226
|
+
if (!this.attached)
|
|
227
|
+
return;
|
|
228
|
+
this.attached = false;
|
|
229
|
+
this.container.removeEventListener('wheel', this.boundWheel);
|
|
230
|
+
this.container.removeEventListener('pointerdown', this.boundPointerDown);
|
|
231
|
+
this.container.removeEventListener('pointermove', this.boundPointerMove);
|
|
232
|
+
this.container.removeEventListener('pointerup', this.boundPointerUp);
|
|
233
|
+
this.container.removeEventListener('pointercancel', this.boundPointerCancel);
|
|
234
|
+
this.container.removeEventListener('contextmenu', this.boundContextMenu);
|
|
235
|
+
this.container.removeEventListener('mousedown', this.boundMouseDown);
|
|
236
|
+
this.container.removeEventListener('mousemove', this.boundMouseMove);
|
|
237
|
+
this.container.removeEventListener('mouseup', this.boundMouseUp);
|
|
238
|
+
this.container.removeEventListener('mouseleave', this.boundMouseLeave);
|
|
239
|
+
this.container.removeEventListener('dblclick', this.boundDblClick);
|
|
240
|
+
if (typeof window !== 'undefined') {
|
|
241
|
+
window.removeEventListener('keydown', this.boundKeyDown);
|
|
242
|
+
window.removeEventListener('keyup', this.boundKeyUp);
|
|
243
|
+
}
|
|
244
|
+
// Give the container its touch-action back — the binder must leave no trace.
|
|
245
|
+
if (this.previousTouchAction !== null) {
|
|
246
|
+
this.container.style.touchAction = this.previousTouchAction;
|
|
247
|
+
this.previousTouchAction = null;
|
|
248
|
+
}
|
|
249
|
+
this.touch.reset();
|
|
250
|
+
this.isPanning = false;
|
|
251
|
+
this.pendingEmptyPan = null;
|
|
252
|
+
this.nodeDrag = null;
|
|
253
|
+
this.groupDrag = null;
|
|
254
|
+
this.spaceKeyPressed = false;
|
|
255
|
+
(_a = this.engine()) === null || _a === void 0 ? void 0 : _a.setSnapGuides(null);
|
|
256
|
+
this.closeTextEditor(); // T10: never leave a caret floating over a dead canvas
|
|
257
|
+
}
|
|
258
|
+
// ==========================================================================
|
|
259
|
+
// Pointer events — the fork. Touch goes to the gesture controller; mouse and
|
|
260
|
+
// pen fall through to the ladder below (a PointerEvent IS a MouseEvent).
|
|
261
|
+
// ==========================================================================
|
|
262
|
+
onPointerDown(event) {
|
|
263
|
+
var _a, _b;
|
|
264
|
+
this.sawPointerEvent = true;
|
|
265
|
+
if (event.pointerType === 'touch') {
|
|
266
|
+
// Claim the gesture: suppresses the synthesized compatibility mouse events
|
|
267
|
+
// (which would otherwise run the whole mouse ladder a second time for every
|
|
268
|
+
// tap) and the OS text-selection/callout.
|
|
269
|
+
event.preventDefault();
|
|
270
|
+
// Capture, so a finger that slides off the canvas keeps delivering move/up.
|
|
271
|
+
// Without it a drag that leaves the element silently stops mid-gesture.
|
|
272
|
+
//
|
|
273
|
+
// wave11/gallery BUG FIX — this can THROW. setPointerCapture raises
|
|
274
|
+
// NotFoundError ("no active pointer with the given id") when the pointer is not
|
|
275
|
+
// an active one — which happens for a synthetic PointerEvent (a test, an a11y
|
|
276
|
+
// tool, a programmatic gesture) and, in the wild, when the pointer has already
|
|
277
|
+
// been released by the time the handler runs. Optional chaining does not catch a
|
|
278
|
+
// throw, so an unguarded call turned a lost race into an uncaught error that
|
|
279
|
+
// aborted the whole gesture. Capture is an optimisation, not a precondition;
|
|
280
|
+
// failing to get it must not take the gesture down with it.
|
|
281
|
+
try {
|
|
282
|
+
(_b = (_a = this.container).setPointerCapture) === null || _b === void 0 ? void 0 : _b.call(_a, event.pointerId);
|
|
283
|
+
}
|
|
284
|
+
catch (_c) {
|
|
285
|
+
/* capture is best-effort; the gesture still works without it */
|
|
286
|
+
}
|
|
287
|
+
this.touch.onPointerDown(event);
|
|
288
|
+
return;
|
|
289
|
+
}
|
|
290
|
+
this.onMouseDown(event);
|
|
291
|
+
}
|
|
292
|
+
onPointerMove(event) {
|
|
293
|
+
this.sawPointerEvent = true;
|
|
294
|
+
if (event.pointerType === 'touch') {
|
|
295
|
+
this.touch.onPointerMove(event);
|
|
296
|
+
return;
|
|
297
|
+
}
|
|
298
|
+
this.onMouseMove(event);
|
|
299
|
+
}
|
|
300
|
+
onPointerUp(event) {
|
|
301
|
+
var _a, _b;
|
|
302
|
+
this.sawPointerEvent = true;
|
|
303
|
+
if (event.pointerType === 'touch') {
|
|
304
|
+
// Mirror of onPointerDown's guard — releasing a capture we never held (or that
|
|
305
|
+
// the browser already dropped) throws NotFoundError, which must not abort the
|
|
306
|
+
// gesture's own bookkeeping below.
|
|
307
|
+
try {
|
|
308
|
+
(_b = (_a = this.container).releasePointerCapture) === null || _b === void 0 ? void 0 : _b.call(_a, event.pointerId);
|
|
309
|
+
}
|
|
310
|
+
catch (_c) {
|
|
311
|
+
/* nothing to release; carry on */
|
|
312
|
+
}
|
|
313
|
+
this.touch.onPointerUp(event);
|
|
314
|
+
return;
|
|
315
|
+
}
|
|
316
|
+
this.onMouseUp(event);
|
|
317
|
+
}
|
|
318
|
+
onPointerCancel(event) {
|
|
319
|
+
var _a, _b;
|
|
320
|
+
if (event.pointerType === 'touch') {
|
|
321
|
+
try {
|
|
322
|
+
(_b = (_a = this.container).releasePointerCapture) === null || _b === void 0 ? void 0 : _b.call(_a, event.pointerId);
|
|
323
|
+
}
|
|
324
|
+
catch (_c) {
|
|
325
|
+
/* nothing to release */
|
|
326
|
+
}
|
|
327
|
+
this.touch.onPointerCancel(event);
|
|
328
|
+
return;
|
|
329
|
+
}
|
|
330
|
+
this.onMouseLeave();
|
|
331
|
+
}
|
|
332
|
+
/**
|
|
333
|
+
* The native context menu. On touch the long-press already emitted our own
|
|
334
|
+
* `contextmenu` payload, so the OS menu here would be a duplicate on top of it.
|
|
335
|
+
*/
|
|
336
|
+
onContextMenu(event) {
|
|
337
|
+
const pointerType = event.pointerType;
|
|
338
|
+
if (pointerType === 'touch' || this.touch.activePointerCount > 0) {
|
|
339
|
+
event.preventDefault();
|
|
340
|
+
}
|
|
341
|
+
}
|
|
342
|
+
get isAttached() {
|
|
343
|
+
return this.attached;
|
|
344
|
+
}
|
|
345
|
+
// ==========================================================================
|
|
346
|
+
// Wheel — ctrl/⌘ (and trackpad pinch) zooms at the cursor; a plain wheel pans.
|
|
347
|
+
// The Figma/Miro/VS Code convention.
|
|
348
|
+
// ==========================================================================
|
|
349
|
+
onWheel(event) {
|
|
350
|
+
const engine = this.engine();
|
|
351
|
+
if (!engine)
|
|
352
|
+
return;
|
|
353
|
+
if (event.ctrlKey || event.metaKey) {
|
|
354
|
+
if (!this.options.enableZoom)
|
|
355
|
+
return;
|
|
356
|
+
event.preventDefault();
|
|
357
|
+
// Multiplicative: a notch is a constant RELATIVE change, so it feels the
|
|
358
|
+
// same at 0.2× and at 3× (an additive ±sensitivity does not).
|
|
359
|
+
const factor = 1 + this.options.zoomSensitivity;
|
|
360
|
+
const zoom = this.host.viewport.getZoom();
|
|
361
|
+
const target = event.deltaY > 0 ? zoom / factor : zoom * factor;
|
|
362
|
+
this.host.viewport.zoomAtPoint(target, event.clientX, event.clientY, this.host.getRect());
|
|
363
|
+
this.host.requestRender();
|
|
364
|
+
return;
|
|
365
|
+
}
|
|
366
|
+
if (!this.options.enablePan)
|
|
367
|
+
return;
|
|
368
|
+
// A wheel over scrollable HTML content inside a node (an ER table's rows,
|
|
369
|
+
// a class card's members) belongs to THAT card. Card content is
|
|
370
|
+
// pointer-events:none (drag-through), so native scroll can never reach it —
|
|
371
|
+
// the delegate scrolls it programmatically. CONTAINMENT: while the cursor is
|
|
372
|
+
// over the card the wheel is absorbed even at the end of its range, so the
|
|
373
|
+
// canvas never pans out from under it (move off the card to pan).
|
|
374
|
+
if ((0, wheel_scroll_yield_1.delegateWheelToScrollable)(event)) {
|
|
375
|
+
event.preventDefault();
|
|
376
|
+
return;
|
|
377
|
+
}
|
|
378
|
+
event.preventDefault();
|
|
379
|
+
const [dxPx, dyPx] = event.shiftKey
|
|
380
|
+
? [event.deltaY || event.deltaX, 0] // shift → horizontal scroll
|
|
381
|
+
: [event.deltaX, event.deltaY];
|
|
382
|
+
if (!dxPx && !dyPx)
|
|
383
|
+
return;
|
|
384
|
+
this.host.viewport.panByScreenDelta(dxPx, dyPx);
|
|
385
|
+
this.host.requestRender();
|
|
386
|
+
}
|
|
387
|
+
// ==========================================================================
|
|
388
|
+
// Mouse down — the priority ladder.
|
|
389
|
+
// ==========================================================================
|
|
390
|
+
/** Wave 6 — Card 5: adapt a DOM event to the framework-free tool contract. */
|
|
391
|
+
toToolEvent(type, event, worldX, worldY) {
|
|
392
|
+
const rect = this.host.getRect();
|
|
393
|
+
return {
|
|
394
|
+
type,
|
|
395
|
+
world: { x: worldX, y: worldY },
|
|
396
|
+
screen: { x: event.clientX - rect.left, y: event.clientY - rect.top },
|
|
397
|
+
modifiers: {
|
|
398
|
+
shift: event.shiftKey,
|
|
399
|
+
ctrl: event.ctrlKey,
|
|
400
|
+
alt: event.altKey,
|
|
401
|
+
meta: event.metaKey,
|
|
402
|
+
},
|
|
403
|
+
source: event,
|
|
404
|
+
};
|
|
405
|
+
}
|
|
406
|
+
/** What the gesture landed on. Resolved ONCE, on pointerdown. */
|
|
407
|
+
toToolHit(worldX, worldY) {
|
|
408
|
+
var _a, _b, _c, _d, _e;
|
|
409
|
+
const diagram = (_a = this.engine()) === null || _a === void 0 ? void 0 : _a.getDiagram();
|
|
410
|
+
const state = this.host.interaction.getState();
|
|
411
|
+
const node = (_b = diagram === null || diagram === void 0 ? void 0 : diagram.getNodeAtPosition(worldX, worldY)) !== null && _b !== void 0 ? _b : undefined;
|
|
412
|
+
return {
|
|
413
|
+
node: node !== null && node !== void 0 ? node : undefined,
|
|
414
|
+
link: (_c = state.hoveredLink) !== null && _c !== void 0 ? _c : undefined,
|
|
415
|
+
port: (_d = state.hoveredPort) !== null && _d !== void 0 ? _d : undefined,
|
|
416
|
+
empty: !node && !state.hoveredLink && !state.hoveredPort,
|
|
417
|
+
// DELIBERATE mode's rule: a node only becomes draggable if it was ALREADY
|
|
418
|
+
// selected before this gesture. Captured here, before selection changes.
|
|
419
|
+
nodeWasSelected: node ? ((_e = node.state) === null || _e === void 0 ? void 0 : _e.selected) === true : false,
|
|
420
|
+
};
|
|
421
|
+
}
|
|
422
|
+
/**
|
|
423
|
+
* wave12/node-resize: the resize handle (if any) under a world point.
|
|
424
|
+
*
|
|
425
|
+
* Recomputes the tool layer at the CURRENT zoom on every press — the handles are
|
|
426
|
+
* a constant screen size, so their world footprint changes with the camera, and a
|
|
427
|
+
* stale layer would hit-test against last frame's zoom. Only `kind: 'resize'`
|
|
428
|
+
* handles are returned; the controller is configured to emit no others.
|
|
429
|
+
*/
|
|
430
|
+
resizeHandleAt(worldX, worldY) {
|
|
431
|
+
const engine = this.engine();
|
|
432
|
+
if (!engine)
|
|
433
|
+
return null;
|
|
434
|
+
const layer = this.selectionTools.computeLayer(engine, this.host.viewport.getZoom());
|
|
435
|
+
const hit = this.selectionTools.hitTest(layer, worldX, worldY);
|
|
436
|
+
return hit && hit.kind === 'resize' ? hit : null;
|
|
437
|
+
}
|
|
438
|
+
/**
|
|
439
|
+
* wave14/interaction (defect 1): the reconnectable link ENDPOINT HANDLE under a
|
|
440
|
+
* world point, or null.
|
|
441
|
+
*
|
|
442
|
+
* Non-null only when the part-aware edge hit resolves to a source/target
|
|
443
|
+
* endpoint (8px grab radius) of a SELECTED link with reconnection enabled —
|
|
444
|
+
* i.e. exactly when the renderer draws a handle there. The mousedown ladder
|
|
445
|
+
* consults this INSIDE the hovered-port rung, because the handle is drawn on
|
|
446
|
+
* top of the port and a press inside its radius means the handle, not the port.
|
|
447
|
+
* Same gate as the rung-5/6 reconnect branch, so hover-then-press and
|
|
448
|
+
* press-without-hover start the identical gesture.
|
|
449
|
+
*/
|
|
450
|
+
reconnectableEndpointAt(worldX, worldY, engine, config) {
|
|
451
|
+
if (!config.enableLinkReconnection)
|
|
452
|
+
return null;
|
|
453
|
+
const hit = this.host.interaction.getLinkHitAtPosition(worldX, worldY, engine);
|
|
454
|
+
if (!hit || hit.link.state !== 'selected')
|
|
455
|
+
return null;
|
|
456
|
+
if (hit.part === 'source-endpoint')
|
|
457
|
+
return { link: hit.link, endpoint: 'source' };
|
|
458
|
+
if (hit.part === 'target-endpoint')
|
|
459
|
+
return { link: hit.link, endpoint: 'target' };
|
|
460
|
+
return null;
|
|
461
|
+
}
|
|
462
|
+
onMouseDown(event) {
|
|
463
|
+
var _a, _b, _c, _d, _e;
|
|
464
|
+
const engine = this.engine();
|
|
465
|
+
const diagram = engine === null || engine === void 0 ? void 0 : engine.getDiagram();
|
|
466
|
+
if (!engine || !diagram)
|
|
467
|
+
return;
|
|
468
|
+
// A new press invalidates any recorded port/label press — only their
|
|
469
|
+
// branches below re-arm them. Stale ones would mis-read a later release.
|
|
470
|
+
this.pendingPortClick = null;
|
|
471
|
+
this.pendingLabelClick = null;
|
|
472
|
+
// 1. Pan: middle button, or left button while Space is held.
|
|
473
|
+
if (event.button === 1 || (event.button === 0 && this.spaceKeyPressed)) {
|
|
474
|
+
if (!this.options.enablePan)
|
|
475
|
+
return;
|
|
476
|
+
event.preventDefault();
|
|
477
|
+
this.isPanning = true;
|
|
478
|
+
this.lastPanX = event.clientX;
|
|
479
|
+
this.lastPanY = event.clientY;
|
|
480
|
+
this.setCursor('grabbing');
|
|
481
|
+
return;
|
|
482
|
+
}
|
|
483
|
+
if (event.button !== 0)
|
|
484
|
+
return;
|
|
485
|
+
const { x: worldX, y: worldY } = this.toWorld(event);
|
|
486
|
+
const config = engine.getInteractionConfig();
|
|
487
|
+
const state = this.host.interaction.getState();
|
|
488
|
+
// ------------------------------------------------------------------
|
|
489
|
+
// Wave 6 — Card 5: REGISTERED TOOLS get first refusal on the gesture.
|
|
490
|
+
//
|
|
491
|
+
// The five built-in behaviours below are a hardcoded priority ladder. A host
|
|
492
|
+
// that wanted to replace one — a custom lasso, a different node-drag — had
|
|
493
|
+
// no seam to do it through. Now a registered tool may CLAIM the gesture on
|
|
494
|
+
// pointerdown, and if it does it owns the whole thing (move/up/cancel) and
|
|
495
|
+
// none of the ladder runs.
|
|
496
|
+
//
|
|
497
|
+
// With NO tools registered `resolveTool` returns undefined and everything
|
|
498
|
+
// below is byte-identical to before — which is why this is additive.
|
|
499
|
+
// ------------------------------------------------------------------
|
|
500
|
+
if (!this.isReadonly()) {
|
|
501
|
+
const toolEvent = this.toToolEvent('down', event, worldX, worldY);
|
|
502
|
+
const toolHit = this.toToolHit(worldX, worldY);
|
|
503
|
+
const tool = (0, tools_1.resolveTool)(toolEvent, toolHit);
|
|
504
|
+
if (tool) {
|
|
505
|
+
event.preventDefault();
|
|
506
|
+
this.activeTool = tool;
|
|
507
|
+
this.activeToolHit = toolHit;
|
|
508
|
+
(_a = tool.onPointerDown) === null || _a === void 0 ? void 0 : _a.call(tool, toolEvent, toolHit);
|
|
509
|
+
this.host.requestRender();
|
|
510
|
+
return;
|
|
511
|
+
}
|
|
512
|
+
}
|
|
513
|
+
// ------------------------------------------------------------------
|
|
514
|
+
// wave12/node-resize: a RESIZE HANDLE on the selected node.
|
|
515
|
+
//
|
|
516
|
+
// Checked BEFORE ports and before node selection/drag: a corner handle sits
|
|
517
|
+
// exactly on the node's corner, so if the node hit-test won here every attempt
|
|
518
|
+
// to resize would drag the node instead. Handles only exist for a single
|
|
519
|
+
// selected, resizable node (see SelectionToolsController.computeLayer), so this
|
|
520
|
+
// is inert until the user has selected something — the first click selects, the
|
|
521
|
+
// handle appears, the second grabs it.
|
|
522
|
+
//
|
|
523
|
+
// resize-ux: the four SIDE handles are BANDS along the whole edge now (see
|
|
524
|
+
// ToolHandle.segment) — RF's line affordance — so side resize is reachable
|
|
525
|
+
// anywhere along the border. The port keeps its own core: when the pointer
|
|
526
|
+
// is on a hovered port OF THE SAME NODE (the port's grab radius), the PORT
|
|
527
|
+
// wins and the press falls through to the connection rung below — a user
|
|
528
|
+
// aiming at the glyph they can see draws a wire, never grows the node. One
|
|
529
|
+
// shared predicate (`sideHandleYieldsToPort`) makes the mouse ladder, the
|
|
530
|
+
// touch ladder and the hover cursor agree on that boundary. Corners never
|
|
531
|
+
// coincide with ports and always resize.
|
|
532
|
+
// ------------------------------------------------------------------
|
|
533
|
+
if (!this.isReadonly()) {
|
|
534
|
+
const handle = this.resizeHandleAt(worldX, worldY);
|
|
535
|
+
if (handle && !(0, selection_tools_1.sideHandleYieldsToPort)(handle, state.hoveredPort)) {
|
|
536
|
+
event.preventDefault();
|
|
537
|
+
this.selectionTools.beginResize(handle, engine, worldX, worldY);
|
|
538
|
+
// resize-ux: the in-flight-move branch returns before the cursor ladder,
|
|
539
|
+
// so the cursor set here is the one the WHOLE drag shows. Without it the
|
|
540
|
+
// drag kept whatever the last hover said ('pointer', over the node).
|
|
541
|
+
this.setCursor(handle.cursor);
|
|
542
|
+
this.host.requestRender();
|
|
543
|
+
return;
|
|
544
|
+
}
|
|
545
|
+
}
|
|
546
|
+
if (!this.isReadonly()) {
|
|
547
|
+
// 2. Port → start a connection drag… UNLESS the press is on a link
|
|
548
|
+
// endpoint handle drawn ON that port.
|
|
549
|
+
//
|
|
550
|
+
// wave14/interaction DEFECT-1 FIX. A selected link's endpoint handle is
|
|
551
|
+
// rendered AT the port it connects to (the routed polyline ends on the
|
|
552
|
+
// port), and the pointermove that carries the mouse onto the handle sets
|
|
553
|
+
// `hoveredPort` (≈11px hit radius: portDefaultRadius 6 × hoverScale 1.5
|
|
554
|
+
// + 2px) — so this rung used to swallow the press and the natural
|
|
555
|
+
// reconnect gesture ALWAYS started a new connection instead. When the
|
|
556
|
+
// press point is inside the endpoint's own 8px grab radius
|
|
557
|
+
// (DEFAULT_ENDPOINT_RADIUS) on a selected, reconnectable link, the user
|
|
558
|
+
// is visibly touching the handle drawn on top: the ENDPOINT wins.
|
|
559
|
+
//
|
|
560
|
+
// Starting a fresh connection from that port stays possible: the annulus
|
|
561
|
+
// 8 < d ≤ 11 around the handle still belongs to the port (3px of ring for
|
|
562
|
+
// a mouse — thin but real, and it widens by `hitSlop` on touch), every
|
|
563
|
+
// OTHER port of the node is untouched, and an endpoint drag dropped on an
|
|
564
|
+
// invalid target reverts, so the worst mis-grab costs one Escape.
|
|
565
|
+
if (state.hoveredPort) {
|
|
566
|
+
// Mode B of the link-selectability audit: the port's HOVER hit radius
|
|
567
|
+
// (~11: 6 × 1.5 + 2) is wider than its visible glyph, and this rung
|
|
568
|
+
// swallowed every press in that halo — including clicks squarely on a
|
|
569
|
+
// link's ARROWHEAD or stroke near its endpoint, which then dead-ended
|
|
570
|
+
// as an aborted wire-draw instead of selecting the edge. In the OUTER
|
|
571
|
+
// ring (beyond the port's base grab radius) a press that lands on link
|
|
572
|
+
// INK belongs to the link: fall through to the link rungs. Presses in
|
|
573
|
+
// the core (≤ base radius + 2) keep starting connections, so the
|
|
574
|
+
// PORT-WIRE gesture is untouched.
|
|
575
|
+
const hoverNode = diagram.getNode(state.hoveredPort.nodeId);
|
|
576
|
+
if (hoverNode) {
|
|
577
|
+
const anchor = (0, port_positioning_1.portWorldPosition)(state.hoveredPort, hoverNode);
|
|
578
|
+
const basePortRadius = (_c = (_b = state.hoveredPort.style) === null || _b === void 0 ? void 0 : _b['radius']) !== null && _c !== void 0 ? _c : 6;
|
|
579
|
+
const inOuterRing = Math.hypot(worldX - anchor.x, worldY - anchor.y) > basePortRadius + 2;
|
|
580
|
+
if (inOuterRing) {
|
|
581
|
+
const inkHit = this.host.interaction.getLinkHitAtPosition(worldX, worldY, engine);
|
|
582
|
+
// ANY link part claims the press, not just 'body' — near a path
|
|
583
|
+
// end the nearest part IS the endpoint handle (its anchor sits on
|
|
584
|
+
// the path), and those presses are exactly the ones the port was
|
|
585
|
+
// stealing (unselected links were unclickable within ~11px of
|
|
586
|
+
// their ends).
|
|
587
|
+
if (inkHit) {
|
|
588
|
+
// Not this rung's press — the link-body rung below selects it.
|
|
589
|
+
state.hoveredPort = null;
|
|
590
|
+
}
|
|
591
|
+
}
|
|
592
|
+
}
|
|
593
|
+
}
|
|
594
|
+
if (state.hoveredPort) {
|
|
595
|
+
event.preventDefault();
|
|
596
|
+
const endpointHit = this.reconnectableEndpointAt(worldX, worldY, engine, config);
|
|
597
|
+
if (endpointHit) {
|
|
598
|
+
this.host.interaction.startLinkReconnection(endpointHit.link, endpointHit.endpoint, worldX, worldY, engine);
|
|
599
|
+
this.host.requestRender();
|
|
600
|
+
return;
|
|
601
|
+
}
|
|
602
|
+
// Remember where this press landed: if it releases inside the drag
|
|
603
|
+
// threshold it was a click on the shape, not a connection attempt.
|
|
604
|
+
this.pendingPortClick = {
|
|
605
|
+
startX: event.clientX,
|
|
606
|
+
startY: event.clientY,
|
|
607
|
+
nodeId: state.hoveredPort.nodeId,
|
|
608
|
+
};
|
|
609
|
+
this.host.interaction.startConnection(state.hoveredPort, worldX, worldY, engine);
|
|
610
|
+
this.host.requestRender();
|
|
611
|
+
return;
|
|
612
|
+
}
|
|
613
|
+
// 3/4. Control-point and waypoint handles. These are separate SVG circles,
|
|
614
|
+
// so clicking one does NOT register as hovering the link path — which is
|
|
615
|
+
// why both are hit-tested against every SELECTED link rather than the
|
|
616
|
+
// hovered one.
|
|
617
|
+
const selectedLinks = diagram
|
|
618
|
+
.getLinks()
|
|
619
|
+
.filter((link) => link.state === 'selected');
|
|
620
|
+
if (config.enableControlPointEditing) {
|
|
621
|
+
for (const link of selectedLinks) {
|
|
622
|
+
const hit = this.host.interaction.hitTestControlPoint(worldX, worldY, link);
|
|
623
|
+
if (hit) {
|
|
624
|
+
event.preventDefault();
|
|
625
|
+
this.host.interaction.startControlPointDrag(hit.segmentIndex, hit.controlType, link);
|
|
626
|
+
this.host.requestRender();
|
|
627
|
+
return;
|
|
628
|
+
}
|
|
629
|
+
}
|
|
630
|
+
}
|
|
631
|
+
if (config.enableWaypointEditing) {
|
|
632
|
+
for (const link of selectedLinks) {
|
|
633
|
+
const waypointIndex = this.host.interaction.hitTestWaypoint(worldX, worldY, link);
|
|
634
|
+
if (waypointIndex !== null) {
|
|
635
|
+
event.preventDefault();
|
|
636
|
+
this.host.interaction.startWaypointDrag(waypointIndex, link);
|
|
637
|
+
this.host.requestRender();
|
|
638
|
+
return;
|
|
639
|
+
}
|
|
640
|
+
if (this.host.interaction.hitTestPath(worldX, worldY, link)) {
|
|
641
|
+
event.preventDefault();
|
|
642
|
+
if (this.host.interaction.addWaypoint(worldX, worldY, link)) {
|
|
643
|
+
this.host.requestRender();
|
|
644
|
+
}
|
|
645
|
+
return;
|
|
646
|
+
}
|
|
647
|
+
}
|
|
648
|
+
}
|
|
649
|
+
// 5/6. Part-aware edge hit: endpoint handle → reconnect, label → drag.
|
|
650
|
+
// A body hit deliberately falls through to link selection below.
|
|
651
|
+
const edgeHit = this.host.interaction.getLinkHitAtPosition(worldX, worldY, engine);
|
|
652
|
+
if (edgeHit) {
|
|
653
|
+
if ((edgeHit.part === 'source-endpoint' || edgeHit.part === 'target-endpoint') &&
|
|
654
|
+
config.enableLinkReconnection &&
|
|
655
|
+
edgeHit.link.state === 'selected') {
|
|
656
|
+
event.preventDefault();
|
|
657
|
+
const endpoint = edgeHit.part === 'source-endpoint' ? 'source' : 'target';
|
|
658
|
+
this.host.interaction.startLinkReconnection(edgeHit.link, endpoint, worldX, worldY, engine);
|
|
659
|
+
this.host.requestRender();
|
|
660
|
+
return;
|
|
661
|
+
}
|
|
662
|
+
if (edgeHit.part === 'label' &&
|
|
663
|
+
edgeHit.labelIndex !== undefined &&
|
|
664
|
+
(
|
|
665
|
+
// Only POSITIONED labels drag (they own position/offset). A display-
|
|
666
|
+
// label hit (synthesized box over `metadata.label`, no labels[]
|
|
667
|
+
// entry) falls through to link selection instead.
|
|
668
|
+
(_d = edgeHit.link.labels) === null || _d === void 0 ? void 0 : _d[edgeHit.labelIndex])) {
|
|
669
|
+
event.preventDefault();
|
|
670
|
+
this.pendingLabelClick = {
|
|
671
|
+
startX: event.clientX,
|
|
672
|
+
startY: event.clientY,
|
|
673
|
+
linkId: edgeHit.link.id,
|
|
674
|
+
};
|
|
675
|
+
this.host.interaction.startLabelDrag(edgeHit.link, edgeHit.labelIndex);
|
|
676
|
+
this.host.requestRender();
|
|
677
|
+
return;
|
|
678
|
+
}
|
|
679
|
+
}
|
|
680
|
+
}
|
|
681
|
+
// 7. Link body → select. Hover state is the fast path; fall back to a direct
|
|
682
|
+
// hit-test because on first load no mousemove has run yet.
|
|
683
|
+
//
|
|
684
|
+
// BUT a node body covers link ink: nodes paint in `nodes-layer`, ABOVE
|
|
685
|
+
// `links-layer`, so at a point where both coincide the user is touching the
|
|
686
|
+
// NODE — the ink is invisible under it. This rung used to win anyway, so a
|
|
687
|
+
// node dropped onto a link's path became undraggable at exactly the spot
|
|
688
|
+
// the user grabbed it (visio gate: recv adopted between pick and ship sits
|
|
689
|
+
// on the pick→ship path; the drag-out press selected that link instead and
|
|
690
|
+
// the node never moved).
|
|
691
|
+
const link = diagram.getNodeAtPosition(worldX, worldY)
|
|
692
|
+
? null
|
|
693
|
+
: ((_e = state.hoveredLink) !== null && _e !== void 0 ? _e : this.host.interaction.getLinkAtPosition(worldX, worldY, engine));
|
|
694
|
+
if (link) {
|
|
695
|
+
event.preventDefault();
|
|
696
|
+
this.host.interaction.selectLink(link, engine, event.ctrlKey || event.metaKey);
|
|
697
|
+
this.host.requestRender();
|
|
698
|
+
this.emitSelectionChange();
|
|
699
|
+
this.host.emit('edge:click', { edge: link, world: { x: worldX, y: worldY } });
|
|
700
|
+
return;
|
|
701
|
+
}
|
|
702
|
+
// 8. Node → select (+ arm a drag).
|
|
703
|
+
const node = this.resolveNode(diagram, worldX, worldY, event);
|
|
704
|
+
if (node) {
|
|
705
|
+
event.preventDefault();
|
|
706
|
+
// 8a. wave12 (gap 3) — Easy Connect: the whole node BODY is a handle. When
|
|
707
|
+
// on (and the configured modifier, if any, is held), a body press starts a
|
|
708
|
+
// CONNECTION from the node's nearest port instead of a move. A press ON a
|
|
709
|
+
// port already started a connection at step 2, so this only fires on the
|
|
710
|
+
// body. Off by default, so normal body-drag-to-move is untouched; a host
|
|
711
|
+
// that keeps move gates connect behind `easyConnectModifier` (e.g. shift).
|
|
712
|
+
if (!this.isReadonly() && config.enableEasyConnect && this.easyConnectModifierHeld(event, config)) {
|
|
713
|
+
// Select the node first (so a plain click still selects), THEN connect.
|
|
714
|
+
this.host.interaction.startNodeBodyConnection(node, worldX, worldY, engine);
|
|
715
|
+
this.host.requestRender();
|
|
716
|
+
this.host.emit('node:click', { node, world: { x: worldX, y: worldY } });
|
|
717
|
+
return;
|
|
718
|
+
}
|
|
719
|
+
this.pressNode(node, diagram, event, worldX, worldY);
|
|
720
|
+
this.host.emit('node:click', { node, world: { x: worldX, y: worldY } });
|
|
721
|
+
return;
|
|
722
|
+
}
|
|
723
|
+
// 8b. wave12 (gap 1) — Group frame → drag the whole subflow. Only reached
|
|
724
|
+
// when NO node/link/port was under the cursor (a member node wins the ladder
|
|
725
|
+
// above), so this is a press on the container's empty area / header. Opt-in
|
|
726
|
+
// via `enableGroupDrag`; off, this falls straight through to the clear below,
|
|
727
|
+
// byte-identical to the historic behaviour.
|
|
728
|
+
if (!this.isReadonly() &&
|
|
729
|
+
config.enableGroupDrag &&
|
|
730
|
+
!(event.shiftKey || event.ctrlKey || event.metaKey || event.altKey)) {
|
|
731
|
+
const group = this.findGroupAtPoint(diagram, worldX, worldY);
|
|
732
|
+
if (group) {
|
|
733
|
+
event.preventDefault();
|
|
734
|
+
this.pressGroup(group, diagram, event, worldX, worldY);
|
|
735
|
+
return;
|
|
736
|
+
}
|
|
737
|
+
}
|
|
738
|
+
// 9. Empty canvas → clear the selection (unless a modifier is extending it),
|
|
739
|
+
// and ARM a pan: dragging empty canvas is the industry-default pan
|
|
740
|
+
// gesture (React Flow, Figma, tldraw), and six demo pages documented it
|
|
741
|
+
// while the binder only panned on middle-button/Space (live audit: the
|
|
742
|
+
// printed step was a silent no-op). A plain CLICK still only deselects —
|
|
743
|
+
// the pan engages past the drag threshold in onMouseMove.
|
|
744
|
+
const hasModifier = event.shiftKey || event.ctrlKey || event.metaKey || event.altKey;
|
|
745
|
+
if (!hasModifier) {
|
|
746
|
+
diagram.clearSelection();
|
|
747
|
+
diagram.getLinks().forEach((l) => {
|
|
748
|
+
if (l.state === 'selected')
|
|
749
|
+
l.setState('default');
|
|
750
|
+
});
|
|
751
|
+
this.host.requestRender();
|
|
752
|
+
this.emitSelectionChange();
|
|
753
|
+
if (this.options.enablePan) {
|
|
754
|
+
this.pendingEmptyPan = { startX: event.clientX, startY: event.clientY };
|
|
755
|
+
}
|
|
756
|
+
}
|
|
757
|
+
}
|
|
758
|
+
// ==========================================================================
|
|
759
|
+
// Mouse move
|
|
760
|
+
// ==========================================================================
|
|
761
|
+
onMouseMove(event) {
|
|
762
|
+
var _a, _b, _c;
|
|
763
|
+
const engine = this.engine();
|
|
764
|
+
if (!engine || !engine.getDiagram())
|
|
765
|
+
return;
|
|
766
|
+
// Wave 6 — Card 5: a tool that CLAIMED this gesture owns every subsequent
|
|
767
|
+
// move until pointerup. Checked before panning so a tool can pan itself.
|
|
768
|
+
if (this.activeTool) {
|
|
769
|
+
const { x, y } = this.toWorld(event);
|
|
770
|
+
(_b = (_a = this.activeTool).onPointerMove) === null || _b === void 0 ? void 0 : _b.call(_a, this.toToolEvent('move', event, x, y), (_c = this.activeToolHit) !== null && _c !== void 0 ? _c : { empty: true });
|
|
771
|
+
this.host.requestRender();
|
|
772
|
+
return;
|
|
773
|
+
}
|
|
774
|
+
// wave12/node-resize: an in-flight resize owns the pointer. The clamp
|
|
775
|
+
// (min/max/aspect) is applied INSIDE updateResize, every move — you cannot drag
|
|
776
|
+
// the box past its limits, it is not fixed up at the end.
|
|
777
|
+
if (this.selectionTools.activeGesture() === 'resize') {
|
|
778
|
+
const { x, y } = this.toWorld(event);
|
|
779
|
+
if (this.selectionTools.updateResize(engine, x, y, {
|
|
780
|
+
shift: event.shiftKey,
|
|
781
|
+
alt: event.altKey,
|
|
782
|
+
ctrl: event.ctrlKey,
|
|
783
|
+
meta: event.metaKey,
|
|
784
|
+
},
|
|
785
|
+
// T2/visio — snap the RESIZED box to sibling edges/centres. `updateResize`
|
|
786
|
+
// always accepted this hook and the binder never passed one, so a resize
|
|
787
|
+
// was the one gesture with no alignment help. Shares `enableHelperLines`
|
|
788
|
+
// with the drag: a host that asked for snap guides means both.
|
|
789
|
+
this.resizeSnapHook(engine))) {
|
|
790
|
+
this.host.interaction.invalidatePortHitCache();
|
|
791
|
+
this.host.requestRender();
|
|
792
|
+
}
|
|
793
|
+
return;
|
|
794
|
+
}
|
|
795
|
+
if (this.pendingEmptyPan && !this.isPanning) {
|
|
796
|
+
// Only while the PRIMARY button is genuinely down: the armed state is
|
|
797
|
+
// also cleared on pointerup, but a hover move must never engage a pan.
|
|
798
|
+
if ((event.buttons & 1) === 0) {
|
|
799
|
+
this.pendingEmptyPan = null;
|
|
800
|
+
}
|
|
801
|
+
else {
|
|
802
|
+
const dx = event.clientX - this.pendingEmptyPan.startX;
|
|
803
|
+
const dy = event.clientY - this.pendingEmptyPan.startY;
|
|
804
|
+
if (Math.hypot(dx, dy) >= this.options.dragThreshold) {
|
|
805
|
+
this.isPanning = true;
|
|
806
|
+
this.lastPanX = event.clientX;
|
|
807
|
+
this.lastPanY = event.clientY;
|
|
808
|
+
this.setCursor('grabbing');
|
|
809
|
+
}
|
|
810
|
+
}
|
|
811
|
+
}
|
|
812
|
+
if (this.isPanning) {
|
|
813
|
+
// Drag RIGHT ⇒ camera LEFT, so the content follows the cursor.
|
|
814
|
+
this.host.viewport.panByScreenDelta(this.lastPanX - event.clientX, this.lastPanY - event.clientY);
|
|
815
|
+
this.lastPanX = event.clientX;
|
|
816
|
+
this.lastPanY = event.clientY;
|
|
817
|
+
this.host.requestRender();
|
|
818
|
+
return;
|
|
819
|
+
}
|
|
820
|
+
if (this.groupDrag) {
|
|
821
|
+
this.moveGroupDrag(event);
|
|
822
|
+
return;
|
|
823
|
+
}
|
|
824
|
+
if (this.nodeDrag) {
|
|
825
|
+
this.moveNodeDrag(event);
|
|
826
|
+
return;
|
|
827
|
+
}
|
|
828
|
+
const state = this.host.interaction.getState();
|
|
829
|
+
const { x: worldX, y: worldY } = this.toWorld(event);
|
|
830
|
+
if (state.isDraggingControlPoint) {
|
|
831
|
+
if (this.host.interaction.moveControlPoint(worldX, worldY, engine)) {
|
|
832
|
+
this.host.requestRender();
|
|
833
|
+
}
|
|
834
|
+
return;
|
|
835
|
+
}
|
|
836
|
+
if (state.isDraggingWaypoint) {
|
|
837
|
+
if (this.host.interaction.moveWaypoint(worldX, worldY, engine)) {
|
|
838
|
+
this.host.requestRender();
|
|
839
|
+
}
|
|
840
|
+
return;
|
|
841
|
+
}
|
|
842
|
+
if (state.isDraggingLabel) {
|
|
843
|
+
if (this.host.interaction.moveLabelDrag(worldX, worldY)) {
|
|
844
|
+
this.host.requestRender();
|
|
845
|
+
}
|
|
846
|
+
return;
|
|
847
|
+
}
|
|
848
|
+
if (state.isReconnectingLink) {
|
|
849
|
+
// Refresh hover first so reconnection validity sees the port under the cursor.
|
|
850
|
+
this.host.interaction.handleMouseMove(worldX, worldY, engine);
|
|
851
|
+
this.host.interaction.updateLinkReconnection(worldX, worldY, engine);
|
|
852
|
+
this.host.requestRender();
|
|
853
|
+
return;
|
|
854
|
+
}
|
|
855
|
+
if (this.spaceKeyPressed)
|
|
856
|
+
return;
|
|
857
|
+
let needsRender = this.host.interaction.handleMouseMove(worldX, worldY, engine);
|
|
858
|
+
if (this.host.interaction.getState().isConnecting) {
|
|
859
|
+
needsRender =
|
|
860
|
+
this.host.interaction.handleConnectionDrag(worldX, worldY, engine) || needsRender;
|
|
861
|
+
}
|
|
862
|
+
// Keep the Delete-key targets (hovered waypoint / control point) current.
|
|
863
|
+
const config = engine.getInteractionConfig();
|
|
864
|
+
if (config.enableWaypointEditing || config.enableControlPointEditing) {
|
|
865
|
+
const hovered = this.host.interaction.getState().hoveredLink;
|
|
866
|
+
const selectedLink = hovered && hovered.state === 'selected' ? hovered : null;
|
|
867
|
+
if (config.enableWaypointEditing) {
|
|
868
|
+
this.host.interaction.updateHoveredWaypoint(worldX, worldY, selectedLink);
|
|
869
|
+
}
|
|
870
|
+
if (config.enableControlPointEditing) {
|
|
871
|
+
this.host.interaction.updateHoveredControlPoint(worldX, worldY, selectedLink);
|
|
872
|
+
}
|
|
873
|
+
}
|
|
874
|
+
// resize-ux (live audit): the cursor ladder knew port/link/node but not the
|
|
875
|
+
// resize handles, so hovering a handle showed 'pointer' and nothing ever
|
|
876
|
+
// advertised resizability — RF shows nwse/nesw/ns/ew-resize per handle. The
|
|
877
|
+
// override mirrors the PRESS ladder exactly (same hit, same port-yield
|
|
878
|
+
// predicate): wherever the press would resize, the cursor says resize;
|
|
879
|
+
// wherever the port would claim the press, the crosshair stands.
|
|
880
|
+
let toolCursor = null;
|
|
881
|
+
if (!this.isReadonly()) {
|
|
882
|
+
const handle = this.resizeHandleAt(worldX, worldY);
|
|
883
|
+
if (handle && !(0, selection_tools_1.sideHandleYieldsToPort)(handle, this.host.interaction.getState().hoveredPort)) {
|
|
884
|
+
toolCursor = handle.cursor;
|
|
885
|
+
}
|
|
886
|
+
}
|
|
887
|
+
this.setCursor(toolCursor !== null && toolCursor !== void 0 ? toolCursor : this.host.interaction.getCursor(engine));
|
|
888
|
+
if (needsRender)
|
|
889
|
+
this.host.requestRender();
|
|
890
|
+
}
|
|
891
|
+
// ==========================================================================
|
|
892
|
+
// Mouse up
|
|
893
|
+
// ==========================================================================
|
|
894
|
+
onMouseUp(event) {
|
|
895
|
+
var _a, _b, _c;
|
|
896
|
+
const engine = this.engine();
|
|
897
|
+
if (!engine)
|
|
898
|
+
return;
|
|
899
|
+
if (event.button !== 0 && event.button !== 1)
|
|
900
|
+
return;
|
|
901
|
+
// Wave 6 — Card 5: hand the gesture's end to the tool that claimed it, then
|
|
902
|
+
// release it. Released in a `finally` so a throwing tool cannot wedge the
|
|
903
|
+
// canvas into a state where every future gesture is swallowed.
|
|
904
|
+
if (this.activeTool) {
|
|
905
|
+
const tool = this.activeTool;
|
|
906
|
+
const hit = (_a = this.activeToolHit) !== null && _a !== void 0 ? _a : { empty: true };
|
|
907
|
+
const { x, y } = this.toWorld(event);
|
|
908
|
+
try {
|
|
909
|
+
(_b = tool.onPointerUp) === null || _b === void 0 ? void 0 : _b.call(tool, this.toToolEvent('up', event, x, y), hit);
|
|
910
|
+
}
|
|
911
|
+
finally {
|
|
912
|
+
this.activeTool = undefined;
|
|
913
|
+
this.activeToolHit = undefined;
|
|
914
|
+
this.host.requestRender();
|
|
915
|
+
}
|
|
916
|
+
return;
|
|
917
|
+
}
|
|
918
|
+
// wave12/node-resize: commit the resize as ONE undoable command. The model
|
|
919
|
+
// already sits at its final size (updateResize mutated it live); the command
|
|
920
|
+
// re-applies that (a no-op) and records the inverse — the wave-3 gesture-commit
|
|
921
|
+
// pattern. `void`: the manager's execute() is async, but the visible state is
|
|
922
|
+
// already correct, so we don't block the pointerup on it.
|
|
923
|
+
if (this.selectionTools.activeGesture() === 'resize') {
|
|
924
|
+
event.preventDefault();
|
|
925
|
+
const command = this.selectionTools.endGesture(engine);
|
|
926
|
+
if (command) {
|
|
927
|
+
void engine.commandManager.execute(command);
|
|
928
|
+
this.emitNodesChange();
|
|
929
|
+
}
|
|
930
|
+
this.host.requestRender();
|
|
931
|
+
return;
|
|
932
|
+
}
|
|
933
|
+
const state = this.host.interaction.getState();
|
|
934
|
+
if (state.isDraggingControlPoint) {
|
|
935
|
+
event.preventDefault();
|
|
936
|
+
this.host.interaction.endControlPointDrag();
|
|
937
|
+
this.host.requestRender();
|
|
938
|
+
return;
|
|
939
|
+
}
|
|
940
|
+
if (state.isDraggingWaypoint) {
|
|
941
|
+
event.preventDefault();
|
|
942
|
+
this.host.interaction.endWaypointDrag(engine);
|
|
943
|
+
this.host.requestRender();
|
|
944
|
+
return;
|
|
945
|
+
}
|
|
946
|
+
if (state.isDraggingLabel) {
|
|
947
|
+
event.preventDefault();
|
|
948
|
+
const press = this.pendingLabelClick;
|
|
949
|
+
this.pendingLabelClick = null;
|
|
950
|
+
this.host.interaction.endLabelDrag();
|
|
951
|
+
// CLICK, not drag: select the label's link with the same semantics a
|
|
952
|
+
// press on the link body has, so a pill click drives selection:change
|
|
953
|
+
// and every inspector listening to it.
|
|
954
|
+
if (press &&
|
|
955
|
+
Math.hypot(event.clientX - press.startX, event.clientY - press.startY) <
|
|
956
|
+
this.options.dragThreshold) {
|
|
957
|
+
const diagram = engine === null || engine === void 0 ? void 0 : engine.getDiagram();
|
|
958
|
+
const link = (_c = diagram === null || diagram === void 0 ? void 0 : diagram.getLink) === null || _c === void 0 ? void 0 : _c.call(diagram, press.linkId);
|
|
959
|
+
if (engine && link) {
|
|
960
|
+
this.host.interaction.selectLink(link, engine, event.ctrlKey || event.metaKey);
|
|
961
|
+
this.emitSelectionChange();
|
|
962
|
+
this.host.emit('edge:click', { edge: link, world: this.toWorld(event) });
|
|
963
|
+
}
|
|
964
|
+
}
|
|
965
|
+
this.host.requestRender();
|
|
966
|
+
return;
|
|
967
|
+
}
|
|
968
|
+
if (state.isConnecting) {
|
|
969
|
+
event.preventDefault();
|
|
970
|
+
// CLICK, not drag: the press never left the threshold, so the user was
|
|
971
|
+
// clicking the shape — cancel the aborted connection and select the
|
|
972
|
+
// port's node with the same semantics a body click has (plain replaces,
|
|
973
|
+
// shift extends). Without this the port zones are selection dead bands.
|
|
974
|
+
const press = this.pendingPortClick;
|
|
975
|
+
this.pendingPortClick = null;
|
|
976
|
+
if (press &&
|
|
977
|
+
Math.hypot(event.clientX - press.startX, event.clientY - press.startY) <
|
|
978
|
+
this.options.dragThreshold) {
|
|
979
|
+
this.host.interaction.cancelConnection(engine);
|
|
980
|
+
const diagram = engine.getDiagram();
|
|
981
|
+
const node = diagram === null || diagram === void 0 ? void 0 : diagram.getNode(press.nodeId);
|
|
982
|
+
if (diagram && node) {
|
|
983
|
+
if (event.shiftKey)
|
|
984
|
+
diagram.addToSelection(node);
|
|
985
|
+
else
|
|
986
|
+
diagram.selectNode(node);
|
|
987
|
+
this.emitSelectionChange();
|
|
988
|
+
}
|
|
989
|
+
this.host.requestRender();
|
|
990
|
+
return;
|
|
991
|
+
}
|
|
992
|
+
// The link itself is created asynchronously by the engine's
|
|
993
|
+
// `connection:complete` handler, so `connect` is emitted from the
|
|
994
|
+
// instance's `link:added` subscription — not from here.
|
|
995
|
+
this.host.interaction.completeConnection(engine);
|
|
996
|
+
this.host.requestRender();
|
|
997
|
+
return;
|
|
998
|
+
}
|
|
999
|
+
if (state.isReconnectingLink) {
|
|
1000
|
+
event.preventDefault();
|
|
1001
|
+
// Capture BEFORE completing: completion clears the reconnection state.
|
|
1002
|
+
const link = state.reconnectingLink;
|
|
1003
|
+
const endpoint = state.reconnectingEndpoint;
|
|
1004
|
+
if (this.host.interaction.completeLinkReconnection(engine) && link && endpoint) {
|
|
1005
|
+
this.host.emit('reconnect', { link, endpoint });
|
|
1006
|
+
this.emitEdgesChange();
|
|
1007
|
+
}
|
|
1008
|
+
this.host.requestRender();
|
|
1009
|
+
return;
|
|
1010
|
+
}
|
|
1011
|
+
if (this.groupDrag) {
|
|
1012
|
+
event.preventDefault();
|
|
1013
|
+
this.endGroupDrag(engine);
|
|
1014
|
+
this.setCursor('default');
|
|
1015
|
+
return;
|
|
1016
|
+
}
|
|
1017
|
+
if (this.nodeDrag) {
|
|
1018
|
+
const drag = this.nodeDrag;
|
|
1019
|
+
const moved = drag.committed;
|
|
1020
|
+
this.nodeDrag = null;
|
|
1021
|
+
// wave12: record the completed drag as one undoable step BEFORE anything else.
|
|
1022
|
+
if (moved && engine)
|
|
1023
|
+
this.commitNodeMove(engine, drag);
|
|
1024
|
+
// T8/visio: the drop may also change WHAT CONTAINS the node.
|
|
1025
|
+
if (moved && engine)
|
|
1026
|
+
this.applyMembershipOnDrop(engine, drag);
|
|
1027
|
+
// wave12 (gap 2): a drag that ended near a compatible port auto-links on drop.
|
|
1028
|
+
const connected = moved ? this.commitProximityConnection() : false;
|
|
1029
|
+
if (moved)
|
|
1030
|
+
this.emitNodesChange();
|
|
1031
|
+
if (connected)
|
|
1032
|
+
this.emitEdgesChange();
|
|
1033
|
+
}
|
|
1034
|
+
this.isPanning = false;
|
|
1035
|
+
this.pendingEmptyPan = null;
|
|
1036
|
+
this.setCursor(this.spaceKeyPressed ? 'grab' : 'default');
|
|
1037
|
+
}
|
|
1038
|
+
/** Pointer left the canvas — abort every in-flight gesture so nothing sticks. */
|
|
1039
|
+
onMouseLeave() {
|
|
1040
|
+
const engine = this.engine();
|
|
1041
|
+
this.isPanning = false;
|
|
1042
|
+
// wave12/node-resize: the pointer left mid-resize → commit what we have (the
|
|
1043
|
+
// node already looks right; abandoning would snap it back under the user).
|
|
1044
|
+
if (engine && this.selectionTools.activeGesture() === 'resize') {
|
|
1045
|
+
const command = this.selectionTools.endGesture(engine);
|
|
1046
|
+
if (command) {
|
|
1047
|
+
void engine.commandManager.execute(command);
|
|
1048
|
+
this.emitNodesChange();
|
|
1049
|
+
}
|
|
1050
|
+
this.host.requestRender();
|
|
1051
|
+
}
|
|
1052
|
+
// wave12/connect-ergonomics (gap 1): the pointer left mid-group-drag → commit it.
|
|
1053
|
+
if (this.groupDrag) {
|
|
1054
|
+
if (engine)
|
|
1055
|
+
this.endGroupDrag(engine);
|
|
1056
|
+
else
|
|
1057
|
+
this.groupDrag = null;
|
|
1058
|
+
}
|
|
1059
|
+
if (this.nodeDrag) {
|
|
1060
|
+
const drag = this.nodeDrag;
|
|
1061
|
+
const moved = drag.committed;
|
|
1062
|
+
this.nodeDrag = null;
|
|
1063
|
+
// Pointer left mid-drag: keep the move (the node already looks moved; snapping it
|
|
1064
|
+
// back would be worse) and STILL record it as one undoable step. Do not auto-connect.
|
|
1065
|
+
if (moved && engine)
|
|
1066
|
+
this.commitNodeMove(engine, drag);
|
|
1067
|
+
this.clearProximityPreview();
|
|
1068
|
+
if (moved)
|
|
1069
|
+
this.emitNodesChange();
|
|
1070
|
+
}
|
|
1071
|
+
if (engine && this.host.interaction.getState().isConnecting) {
|
|
1072
|
+
this.pendingPortClick = null;
|
|
1073
|
+
this.host.interaction.cancelConnection(engine);
|
|
1074
|
+
this.host.requestRender();
|
|
1075
|
+
}
|
|
1076
|
+
this.setCursor('default');
|
|
1077
|
+
}
|
|
1078
|
+
/** Double-click: node → in-place rename; link label → rename; link body → waypoint. */
|
|
1079
|
+
onDoubleClick(event) {
|
|
1080
|
+
var _a, _b;
|
|
1081
|
+
const engine = this.engine();
|
|
1082
|
+
if (!engine || this.isReadonly())
|
|
1083
|
+
return;
|
|
1084
|
+
const { x: worldX, y: worldY } = this.toWorld(event);
|
|
1085
|
+
// Node bodies cover link ink (nodes-layer paints above links-layer), so a
|
|
1086
|
+
// node under the point owns the double-click — same covered-ink rule as the
|
|
1087
|
+
// mousedown ladder's link rung.
|
|
1088
|
+
const nodeUnder = (_a = engine.getDiagram()) === null || _a === void 0 ? void 0 : _a.getNodeAtPosition(worldX, worldY);
|
|
1089
|
+
const hit = nodeUnder
|
|
1090
|
+
? null
|
|
1091
|
+
: this.host.interaction.getLinkHitAtPosition(worldX, worldY, engine);
|
|
1092
|
+
if (!hit) {
|
|
1093
|
+
const node = nodeUnder;
|
|
1094
|
+
if (node) {
|
|
1095
|
+
this.host.emit('node:doubleclick', { node, world: { x: worldX, y: worldY } });
|
|
1096
|
+
// T10/visio — double-click EDITS the label. InPlaceTextEditor (session +
|
|
1097
|
+
// undoable commit) was real but auto-wired only in the Angular wrapper,
|
|
1098
|
+
// so a vanilla/React/Vue embed got an event and no editor. Opt-in via
|
|
1099
|
+
// `enableInPlaceTextEdit`; the host can still prefer its own editor by
|
|
1100
|
+
// leaving it off and handling `node:doubleclick`.
|
|
1101
|
+
if (engine.getInteractionConfig().enableInPlaceTextEdit === true) {
|
|
1102
|
+
this.openTextEditor(engine, { type: 'node', nodeId: node.id });
|
|
1103
|
+
}
|
|
1104
|
+
}
|
|
1105
|
+
return;
|
|
1106
|
+
}
|
|
1107
|
+
// visio-depth — double-click an edge LABEL edits it in place, exactly like
|
|
1108
|
+
// a node label (same editor, same undoable commit; the display-label
|
|
1109
|
+
// dialect is resolved inside InPlaceTextEditor.begin). Same opt-in flag.
|
|
1110
|
+
if (hit.part === 'label' &&
|
|
1111
|
+
engine.getInteractionConfig().enableInPlaceTextEdit === true) {
|
|
1112
|
+
event.preventDefault();
|
|
1113
|
+
this.openTextEditor(engine, {
|
|
1114
|
+
type: 'link-label',
|
|
1115
|
+
linkId: hit.link.id,
|
|
1116
|
+
labelIndex: (_b = hit.labelIndex) !== null && _b !== void 0 ? _b : 0,
|
|
1117
|
+
});
|
|
1118
|
+
return;
|
|
1119
|
+
}
|
|
1120
|
+
if (hit.part === 'body' && engine.getInteractionConfig().enableWaypointEditing) {
|
|
1121
|
+
event.preventDefault();
|
|
1122
|
+
if (this.host.interaction.addWaypoint(worldX, worldY, hit.link)) {
|
|
1123
|
+
this.host.requestRender();
|
|
1124
|
+
this.emitEdgesChange();
|
|
1125
|
+
}
|
|
1126
|
+
}
|
|
1127
|
+
}
|
|
1128
|
+
// ==========================================================================
|
|
1129
|
+
// Keyboard
|
|
1130
|
+
// ==========================================================================
|
|
1131
|
+
onKeyDown(event) {
|
|
1132
|
+
var _a, _b;
|
|
1133
|
+
const engine = this.engine();
|
|
1134
|
+
const diagram = engine === null || engine === void 0 ? void 0 : engine.getDiagram();
|
|
1135
|
+
if (!engine || !diagram)
|
|
1136
|
+
return;
|
|
1137
|
+
// Never steal keys from a focused text field / contenteditable.
|
|
1138
|
+
if (isTextEntryTarget(event.target))
|
|
1139
|
+
return;
|
|
1140
|
+
if (event.code === 'Space' && !this.spaceKeyPressed) {
|
|
1141
|
+
this.spaceKeyPressed = true;
|
|
1142
|
+
this.setCursor('grab');
|
|
1143
|
+
return;
|
|
1144
|
+
}
|
|
1145
|
+
if (event.key === 'Escape') {
|
|
1146
|
+
// wave13/stroke-edit: a REGISTERED TOOL that claimed the current gesture gets
|
|
1147
|
+
// cancelled too. Every whiteboard tool implements onCancel() (clear the overlay,
|
|
1148
|
+
// drop the in-flight state), but until now only pointercancel ever reached it —
|
|
1149
|
+
// Escape mid-drag left the tool live and still eating pointermoves. Released in
|
|
1150
|
+
// a `finally` for the same reason onMouseUp does: a throwing tool must not wedge
|
|
1151
|
+
// the canvas into a state where every future gesture is swallowed.
|
|
1152
|
+
if (this.activeTool) {
|
|
1153
|
+
try {
|
|
1154
|
+
(_b = (_a = this.activeTool).onCancel) === null || _b === void 0 ? void 0 : _b.call(_a);
|
|
1155
|
+
}
|
|
1156
|
+
finally {
|
|
1157
|
+
this.activeTool = undefined;
|
|
1158
|
+
this.activeToolHit = undefined;
|
|
1159
|
+
}
|
|
1160
|
+
// Escape LAYERS: the first press cancels the in-flight gesture and is
|
|
1161
|
+
// CONSUMED — falling through here let the clear-selection branch below
|
|
1162
|
+
// wipe the very selection the tool's onCancel just rolled back, so a
|
|
1163
|
+
// cancelled marquee ended empty instead of restored (live audit
|
|
1164
|
+
// finding). A second Escape, with no gesture active, deselects.
|
|
1165
|
+
this.host.requestRender();
|
|
1166
|
+
return;
|
|
1167
|
+
}
|
|
1168
|
+
const state = this.host.interaction.getState();
|
|
1169
|
+
if (state.isConnecting) {
|
|
1170
|
+
this.pendingPortClick = null;
|
|
1171
|
+
this.host.interaction.cancelConnection(engine);
|
|
1172
|
+
}
|
|
1173
|
+
if (state.isReconnectingLink)
|
|
1174
|
+
this.host.interaction.cancelLinkReconnection(engine);
|
|
1175
|
+
// wave12/node-resize: Escape abandons an in-flight resize, restoring the
|
|
1176
|
+
// node's pre-gesture size/position (SelectionToolsController.cancelGesture).
|
|
1177
|
+
if (this.selectionTools.activeGesture() === 'resize') {
|
|
1178
|
+
this.selectionTools.cancelGesture(engine);
|
|
1179
|
+
}
|
|
1180
|
+
// wave12 (gap 1): abandon an in-flight group drag WITHOUT restoring — matches
|
|
1181
|
+
// node-drag Escape (which also leaves the node where the drag left it).
|
|
1182
|
+
this.nodeDrag = null;
|
|
1183
|
+
this.groupDrag = null;
|
|
1184
|
+
this.clearProximityPreview(); // (gap 2) Escape never auto-connects
|
|
1185
|
+
diagram.clearSelection();
|
|
1186
|
+
this.host.requestRender();
|
|
1187
|
+
this.emitSelectionChange();
|
|
1188
|
+
return;
|
|
1189
|
+
}
|
|
1190
|
+
if ((event.key === 'Delete' || event.key === 'Backspace') && !this.isReadonly()) {
|
|
1191
|
+
const removedWaypoint = this.host.interaction.deleteHoveredWaypoint();
|
|
1192
|
+
const selectedLink = diagram
|
|
1193
|
+
.getLinks()
|
|
1194
|
+
.find((l) => l.state === 'selected');
|
|
1195
|
+
const selectedNodes = diagram.getSelectedNodes();
|
|
1196
|
+
if (removedWaypoint || selectedLink || selectedNodes.length > 0) {
|
|
1197
|
+
event.preventDefault();
|
|
1198
|
+
// THROUGH THE COMMAND STACK, as ONE undoable step. The old handler
|
|
1199
|
+
// mutated the model directly (diagram.deleteSelected / removeLink), so
|
|
1200
|
+
// keyboard Delete could not be undone — and worse, the NEXT undo
|
|
1201
|
+
// replayed whatever stale command sat on top of the stack, aimed at an
|
|
1202
|
+
// entity that no longer existed (the sweep caught MoveNodeCommand.undo
|
|
1203
|
+
// throwing exactly that way).
|
|
1204
|
+
const nodeIds = selectedNodes.map((n) => n.id);
|
|
1205
|
+
const linkId = selectedLink === null || selectedLink === void 0 ? void 0 : selectedLink.id;
|
|
1206
|
+
void (() => tslib_1.__awaiter(this, void 0, void 0, function* () {
|
|
1207
|
+
const cm = engine.commandManager;
|
|
1208
|
+
const many = nodeIds.length + (linkId ? 1 : 0) > 1;
|
|
1209
|
+
if (many)
|
|
1210
|
+
cm.beginBatch();
|
|
1211
|
+
try {
|
|
1212
|
+
if (linkId)
|
|
1213
|
+
yield engine.removeLink(linkId);
|
|
1214
|
+
for (const id of nodeIds)
|
|
1215
|
+
yield engine.removeNode(id);
|
|
1216
|
+
}
|
|
1217
|
+
finally {
|
|
1218
|
+
if (many)
|
|
1219
|
+
yield cm.endBatch('Delete Selection');
|
|
1220
|
+
}
|
|
1221
|
+
this.host.requestRender();
|
|
1222
|
+
if (nodeIds.length > 0)
|
|
1223
|
+
this.emitNodesChange();
|
|
1224
|
+
if (linkId)
|
|
1225
|
+
this.emitEdgesChange();
|
|
1226
|
+
this.emitSelectionChange();
|
|
1227
|
+
}))();
|
|
1228
|
+
}
|
|
1229
|
+
return;
|
|
1230
|
+
}
|
|
1231
|
+
// visio-depth — arrow-key NUDGE (opt-in via `enableKeyboardNudge`): the
|
|
1232
|
+
// selection moves 1 world unit per press, ×10 with Shift, each press one
|
|
1233
|
+
// undoable command — and MERGEABLE, so a held key's auto-repeat collapses
|
|
1234
|
+
// into a single undo entry inside the CommandManager's merge window. The
|
|
1235
|
+
// math is the shipped KeyboardNavigationController's; the focused-input
|
|
1236
|
+
// guard at the top of this handler keeps arrows out of a live text editor.
|
|
1237
|
+
if (!this.isReadonly() &&
|
|
1238
|
+
event.key.startsWith('Arrow') &&
|
|
1239
|
+
engine.getInteractionConfig().enableKeyboardNudge &&
|
|
1240
|
+
!(event.ctrlKey || event.metaKey || event.altKey)) {
|
|
1241
|
+
if (!this.keyboardNav)
|
|
1242
|
+
this.keyboardNav = new keyboard_navigation_1.KeyboardNavigationController();
|
|
1243
|
+
const delta = this.keyboardNav.nudgeDelta(event.key, event.shiftKey);
|
|
1244
|
+
if (delta && diagram.getSelectedNodes().length > 0) {
|
|
1245
|
+
event.preventDefault();
|
|
1246
|
+
const command = this.keyboardNav.nudgeCommand(engine, delta.x, delta.y, {
|
|
1247
|
+
mergeable: true,
|
|
1248
|
+
});
|
|
1249
|
+
if (command) {
|
|
1250
|
+
void engine.commandManager.execute(command);
|
|
1251
|
+
this.host.requestRender();
|
|
1252
|
+
this.emitNodesChange();
|
|
1253
|
+
}
|
|
1254
|
+
return;
|
|
1255
|
+
}
|
|
1256
|
+
}
|
|
1257
|
+
if ((event.ctrlKey || event.metaKey) && event.key.toLowerCase() === 'a') {
|
|
1258
|
+
event.preventDefault();
|
|
1259
|
+
diagram.selectAll();
|
|
1260
|
+
this.host.requestRender();
|
|
1261
|
+
this.emitSelectionChange();
|
|
1262
|
+
return;
|
|
1263
|
+
}
|
|
1264
|
+
// Standard editor keys. The engine has ALWAYS had the command stack and the
|
|
1265
|
+
// clipboard — but no default binding reached them, so on a live page ⌘Z /
|
|
1266
|
+
// Ctrl+Z did nothing (live report: "undo isn't working", "copy paste not
|
|
1267
|
+
// working" — the demos proved the APIs while no keyboard path existed).
|
|
1268
|
+
// ctrlKey OR metaKey throughout: a Ctrl-only chord is dead on every Mac.
|
|
1269
|
+
if ((event.ctrlKey || event.metaKey) && event.key.toLowerCase() === 'z') {
|
|
1270
|
+
event.preventDefault();
|
|
1271
|
+
if (this.isReadonly())
|
|
1272
|
+
return;
|
|
1273
|
+
void (event.shiftKey ? engine.redo() : engine.undo()).then(() => {
|
|
1274
|
+
this.host.requestRender();
|
|
1275
|
+
this.emitNodesChange();
|
|
1276
|
+
this.emitEdgesChange();
|
|
1277
|
+
this.emitSelectionChange();
|
|
1278
|
+
});
|
|
1279
|
+
return;
|
|
1280
|
+
}
|
|
1281
|
+
if ((event.ctrlKey || event.metaKey) && event.key.toLowerCase() === 'y') {
|
|
1282
|
+
event.preventDefault();
|
|
1283
|
+
if (this.isReadonly())
|
|
1284
|
+
return;
|
|
1285
|
+
void engine.redo().then(() => {
|
|
1286
|
+
this.host.requestRender();
|
|
1287
|
+
this.emitNodesChange();
|
|
1288
|
+
this.emitEdgesChange();
|
|
1289
|
+
this.emitSelectionChange();
|
|
1290
|
+
});
|
|
1291
|
+
return;
|
|
1292
|
+
}
|
|
1293
|
+
if ((event.ctrlKey || event.metaKey) && event.key.toLowerCase() === 'c') {
|
|
1294
|
+
// Copying mutates nothing — allowed even in readonly.
|
|
1295
|
+
void engine.copy();
|
|
1296
|
+
return;
|
|
1297
|
+
}
|
|
1298
|
+
if ((event.ctrlKey || event.metaKey) && event.key.toLowerCase() === 'v') {
|
|
1299
|
+
if (this.isReadonly() || !engine.hasClipboardData())
|
|
1300
|
+
return;
|
|
1301
|
+
event.preventDefault();
|
|
1302
|
+
void engine.paste().then(() => {
|
|
1303
|
+
this.host.requestRender();
|
|
1304
|
+
this.emitNodesChange();
|
|
1305
|
+
this.emitEdgesChange();
|
|
1306
|
+
this.emitSelectionChange();
|
|
1307
|
+
});
|
|
1308
|
+
return;
|
|
1309
|
+
}
|
|
1310
|
+
// visio-depth — ⌘D / Ctrl+D duplicates the selection: copy + paste-with-
|
|
1311
|
+
// offset as ONE command (DuplicateCommand shipped in Phase 1.8 with no
|
|
1312
|
+
// keyboard reaching it). preventDefault matters here: the browser's default
|
|
1313
|
+
// for this chord is bookmark-the-page.
|
|
1314
|
+
if ((event.ctrlKey || event.metaKey) && event.key.toLowerCase() === 'd') {
|
|
1315
|
+
if (this.isReadonly() || diagram.getSelectedNodes().length === 0)
|
|
1316
|
+
return;
|
|
1317
|
+
event.preventDefault();
|
|
1318
|
+
void engine.duplicate().then(() => {
|
|
1319
|
+
this.host.requestRender();
|
|
1320
|
+
this.emitNodesChange();
|
|
1321
|
+
this.emitEdgesChange();
|
|
1322
|
+
this.emitSelectionChange();
|
|
1323
|
+
});
|
|
1324
|
+
return;
|
|
1325
|
+
}
|
|
1326
|
+
// visio-depth — F2 and TYPE-TO-REPLACE, both riding the same in-place
|
|
1327
|
+
// editor double-click opens (gated on the same `enableInPlaceTextEdit`
|
|
1328
|
+
// opt-in, and the focused-input guard at the top keeps both out of a live
|
|
1329
|
+
// editor). F2 opens with the current label selected; a PRINTABLE key with
|
|
1330
|
+
// exactly one node selected opens the editor seeded with that character,
|
|
1331
|
+
// replacing the label on commit — Visio's signature affordance. Modifier
|
|
1332
|
+
// chords never trigger it: every Ctrl/Cmd chord returned above, and
|
|
1333
|
+
// Alt-composed characters are explicitly excluded here.
|
|
1334
|
+
if (!this.isReadonly() &&
|
|
1335
|
+
engine.getInteractionConfig().enableInPlaceTextEdit === true) {
|
|
1336
|
+
const selected = diagram.getSelectedNodes();
|
|
1337
|
+
if (selected.length === 1) {
|
|
1338
|
+
if (event.key === 'F2') {
|
|
1339
|
+
event.preventDefault();
|
|
1340
|
+
this.openTextEditor(engine, { type: 'node', nodeId: selected[0].id });
|
|
1341
|
+
return;
|
|
1342
|
+
}
|
|
1343
|
+
if (event.key.length === 1 && !event.ctrlKey && !event.metaKey && !event.altKey) {
|
|
1344
|
+
event.preventDefault();
|
|
1345
|
+
this.openTextEditor(engine, { type: 'node', nodeId: selected[0].id }, { seed: event.key });
|
|
1346
|
+
return;
|
|
1347
|
+
}
|
|
1348
|
+
}
|
|
1349
|
+
}
|
|
1350
|
+
}
|
|
1351
|
+
onKeyUp(event) {
|
|
1352
|
+
if (event.code === 'Space') {
|
|
1353
|
+
this.spaceKeyPressed = false;
|
|
1354
|
+
this.isPanning = false;
|
|
1355
|
+
this.setCursor('default');
|
|
1356
|
+
}
|
|
1357
|
+
}
|
|
1358
|
+
// ==========================================================================
|
|
1359
|
+
// Node press / drag (threshold-gated)
|
|
1360
|
+
// ==========================================================================
|
|
1361
|
+
pressNode(node, diagram, event, worldX, worldY) {
|
|
1362
|
+
var _a;
|
|
1363
|
+
// MUST be read before we mutate the selection — it is the sole input to
|
|
1364
|
+
// DELIBERATE-mode drag gating (select first, drag second).
|
|
1365
|
+
const wasSelected = node.isSelected();
|
|
1366
|
+
if (event.ctrlKey || event.metaKey) {
|
|
1367
|
+
diagram.toggleNodeSelection(node);
|
|
1368
|
+
}
|
|
1369
|
+
else if (!wasSelected) {
|
|
1370
|
+
diagram.selectNode(node);
|
|
1371
|
+
// A plain node click REPLACES the selection, and links are part of it.
|
|
1372
|
+
// Leaving a link in state 'selected' here made the properties panel read
|
|
1373
|
+
// "2 shapes" after edge-click → node-click (live audit finding): node
|
|
1374
|
+
// and link selection are one selection to the user, so clearing one
|
|
1375
|
+
// side must clear the other — exactly what the empty-canvas click does.
|
|
1376
|
+
diagram.getLinks().forEach((l) => {
|
|
1377
|
+
if (l.state === 'selected')
|
|
1378
|
+
l.setState('default');
|
|
1379
|
+
});
|
|
1380
|
+
}
|
|
1381
|
+
// Clicking an already-selected node without a modifier keeps the whole
|
|
1382
|
+
// selection, so a multi-node drag works.
|
|
1383
|
+
this.host.requestRender();
|
|
1384
|
+
this.emitSelectionChange();
|
|
1385
|
+
if (this.isReadonly() || !node.isDraggable() || !node.isSelected())
|
|
1386
|
+
return;
|
|
1387
|
+
// Declaring a drag handle MEANS "drag me by the handle": once a node has
|
|
1388
|
+
// one, its body press selects but no longer arms a drag — otherwise the
|
|
1389
|
+
// handle is decoration (React Flow's dragHandle has the same semantics).
|
|
1390
|
+
// A press that arrived here REDIRECTED FROM the handle still drags.
|
|
1391
|
+
if (!this.pressViaDragHandle && this.hasDragHandlerChild(node, diagram))
|
|
1392
|
+
return;
|
|
1393
|
+
const mode = (_a = this.engine()) === null || _a === void 0 ? void 0 : _a.getInteractionConfig().mode;
|
|
1394
|
+
if (mode === 'deliberate' && !wasSelected)
|
|
1395
|
+
return; // first click only selects
|
|
1396
|
+
const selected = diagram.getSelectedNodes().filter((n) => n.isDraggable());
|
|
1397
|
+
const nodeIds = selected.some((n) => n.id === node.id)
|
|
1398
|
+
? selected.map((n) => n.id)
|
|
1399
|
+
: [node.id];
|
|
1400
|
+
this.nodeDrag = {
|
|
1401
|
+
nodeIds,
|
|
1402
|
+
startClientX: event.clientX,
|
|
1403
|
+
startClientY: event.clientY,
|
|
1404
|
+
lastWorldX: worldX,
|
|
1405
|
+
lastWorldY: worldY,
|
|
1406
|
+
committed: false,
|
|
1407
|
+
snapAnchor: { x: worldX, y: worldY },
|
|
1408
|
+
};
|
|
1409
|
+
}
|
|
1410
|
+
moveNodeDrag(event) {
|
|
1411
|
+
var _a;
|
|
1412
|
+
const drag = this.nodeDrag;
|
|
1413
|
+
const diagram = (_a = this.engine()) === null || _a === void 0 ? void 0 : _a.getDiagram();
|
|
1414
|
+
if (!drag || !diagram)
|
|
1415
|
+
return;
|
|
1416
|
+
if (!drag.committed) {
|
|
1417
|
+
const dx = event.clientX - drag.startClientX;
|
|
1418
|
+
const dy = event.clientY - drag.startClientY;
|
|
1419
|
+
if (Math.hypot(dx, dy) < this.options.dragThreshold) {
|
|
1420
|
+
return; // still a click, not a drag — do NOT touch any position
|
|
1421
|
+
}
|
|
1422
|
+
drag.committed = true;
|
|
1423
|
+
// wave12: snapshot each node's pre-drag position, NOW — before the first
|
|
1424
|
+
// setPosition below — so drag-end can commit an undoable FROM→TO move. Nothing
|
|
1425
|
+
// has moved yet on this frame (the delta is applied after this block), so these
|
|
1426
|
+
// are the true start positions.
|
|
1427
|
+
drag.startPositions = new Map();
|
|
1428
|
+
for (const id of drag.nodeIds) {
|
|
1429
|
+
const n = diagram.getNode(id);
|
|
1430
|
+
if (n)
|
|
1431
|
+
drag.startPositions.set(id, { x: n.position.x, y: n.position.y, z: n.position.z });
|
|
1432
|
+
}
|
|
1433
|
+
}
|
|
1434
|
+
const { x: worldX, y: worldY } = this.toWorld(event);
|
|
1435
|
+
const dx = worldX - drag.lastWorldX;
|
|
1436
|
+
const dy = worldY - drag.lastWorldY;
|
|
1437
|
+
drag.lastWorldX = worldX;
|
|
1438
|
+
drag.lastWorldY = worldY;
|
|
1439
|
+
if (!dx && !dy)
|
|
1440
|
+
return;
|
|
1441
|
+
// wave15/helper-lines: opt-in live snaplines. `computeSnap` existed as a
|
|
1442
|
+
// pure engine while NOTHING called it from a real drag (live report: "no
|
|
1443
|
+
// matter what i try doesn't look like something is happening"). Single
|
|
1444
|
+
// top-level node drags snap against sibling boxes and publish the guides
|
|
1445
|
+
// the renderer draws; everything else keeps the raw delta path.
|
|
1446
|
+
const snapped = this.applyHelperLineSnap(drag, diagram, worldX, worldY);
|
|
1447
|
+
if (!snapped) {
|
|
1448
|
+
for (const id of drag.nodeIds) {
|
|
1449
|
+
const node = diagram.getNode(id);
|
|
1450
|
+
if (!node || node.state.locked)
|
|
1451
|
+
continue;
|
|
1452
|
+
node.setPosition(node.position.x + dx, node.position.y + dy);
|
|
1453
|
+
}
|
|
1454
|
+
}
|
|
1455
|
+
// Node geometry moved ⇒ the port hit cache is stale.
|
|
1456
|
+
this.host.interaction.invalidatePortHitCache();
|
|
1457
|
+
// wave12 (gap 2): live proximity-connect preview — light up the port pair a
|
|
1458
|
+
// drop would auto-link, and remember it for commit on mouseup.
|
|
1459
|
+
this.updateProximityPreview(drag.nodeIds);
|
|
1460
|
+
this.host.requestRender();
|
|
1461
|
+
}
|
|
1462
|
+
// ==========================================================================
|
|
1463
|
+
// wave12/connect-ergonomics (gap 2) — Proximity connect on the live node drag.
|
|
1464
|
+
// ==========================================================================
|
|
1465
|
+
/** The lazily-built proximity-connect engine (only when the feature is on). */
|
|
1466
|
+
snapController() {
|
|
1467
|
+
if (!this.snap)
|
|
1468
|
+
this.snap = new snapping_1.SnapController();
|
|
1469
|
+
return this.snap;
|
|
1470
|
+
}
|
|
1471
|
+
/**
|
|
1472
|
+
* While dragging, find the best proximity candidate for any dragged node and
|
|
1473
|
+
* highlight its port pair (the SAME flags a connection drag paints). Stores it
|
|
1474
|
+
* so {@link commitProximityConnection} can create the link on drop. No-op —
|
|
1475
|
+
* and clears any prior highlight — when the feature is off or nothing is near.
|
|
1476
|
+
*/
|
|
1477
|
+
updateProximityPreview(draggedIds) {
|
|
1478
|
+
const engine = this.engine();
|
|
1479
|
+
if (!engine)
|
|
1480
|
+
return;
|
|
1481
|
+
if (!engine.getInteractionConfig().enableProximityConnect)
|
|
1482
|
+
return;
|
|
1483
|
+
this.proximityCandidate = this.bestProximityCandidate(draggedIds);
|
|
1484
|
+
this.snapController().highlightProximityTarget(engine, this.proximityCandidate);
|
|
1485
|
+
// The renderer draws the proposal as a live dashed wire — port glyphs alone
|
|
1486
|
+
// read as "nothing is happening" (live report: "the wire isn't showing").
|
|
1487
|
+
engine.setProximityPreview(this.proximityCandidate
|
|
1488
|
+
? {
|
|
1489
|
+
sourceNodeId: this.proximityCandidate.sourceNodeId,
|
|
1490
|
+
sourcePortId: this.proximityCandidate.sourcePort.id,
|
|
1491
|
+
targetNodeId: this.proximityCandidate.targetNodeId,
|
|
1492
|
+
targetPortId: this.proximityCandidate.targetPort.id,
|
|
1493
|
+
}
|
|
1494
|
+
: null);
|
|
1495
|
+
}
|
|
1496
|
+
/**
|
|
1497
|
+
* wave15/helper-lines: snap a SINGLE top-level dragged node to sibling
|
|
1498
|
+
* alignments/equal-spacing and publish the guide segments for the renderer.
|
|
1499
|
+
* Returns true when it owned the position write (the caller then skips the
|
|
1500
|
+
* raw delta loop). Tracks the VIRTUAL position from {@link NodeDragState.snapAnchor}
|
|
1501
|
+
* so corrections never accumulate into pointer drift.
|
|
1502
|
+
*/
|
|
1503
|
+
applyHelperLineSnap(drag, diagram, worldX, worldY) {
|
|
1504
|
+
const engine = this.engine();
|
|
1505
|
+
if (!engine || engine.getInteractionConfig().enableHelperLines !== true)
|
|
1506
|
+
return false;
|
|
1507
|
+
if (drag.nodeIds.length !== 1 || !drag.snapAnchor || !drag.startPositions)
|
|
1508
|
+
return false;
|
|
1509
|
+
const id = drag.nodeIds[0];
|
|
1510
|
+
const node = diagram.getNode(id);
|
|
1511
|
+
const start = drag.startPositions.get(id);
|
|
1512
|
+
if (!node || !start || node.state.locked || node.parentId)
|
|
1513
|
+
return false;
|
|
1514
|
+
const virtualX = start.x + (worldX - drag.snapAnchor.x);
|
|
1515
|
+
const virtualY = start.y + (worldY - drag.snapAnchor.y);
|
|
1516
|
+
const snap = this.snapController();
|
|
1517
|
+
snap.syncWithEngineConfig(engine);
|
|
1518
|
+
const result = snap.computeSnap({ x: virtualX, y: virtualY, width: node.size.width, height: node.size.height }, snap.siblingBoxes(engine, [id]));
|
|
1519
|
+
node.setPosition(result.box.x, result.box.y);
|
|
1520
|
+
const segments = [
|
|
1521
|
+
...result.guides.map((g) => g.orientation === 'vertical'
|
|
1522
|
+
? { x1: g.position, y1: g.from, x2: g.position, y2: g.to, kind: 'alignment' }
|
|
1523
|
+
: { x1: g.from, y1: g.position, x2: g.to, y2: g.position, kind: 'alignment' }),
|
|
1524
|
+
...result.spacing.flatMap((s) => s.segments.map((seg) => (Object.assign(Object.assign({}, seg), { kind: 'spacing', label: s.label })))),
|
|
1525
|
+
];
|
|
1526
|
+
engine.setSnapGuides(segments.length > 0 ? segments : null);
|
|
1527
|
+
return true;
|
|
1528
|
+
}
|
|
1529
|
+
/** The closest proximity candidate across all dragged nodes (or null). */
|
|
1530
|
+
bestProximityCandidate(draggedIds) {
|
|
1531
|
+
const engine = this.engine();
|
|
1532
|
+
if (!engine)
|
|
1533
|
+
return null;
|
|
1534
|
+
const config = engine.getInteractionConfig();
|
|
1535
|
+
const radius = config.proximityConnectRadius > 0 ? config.proximityConnectRadius : undefined;
|
|
1536
|
+
let best = null;
|
|
1537
|
+
for (const id of draggedIds) {
|
|
1538
|
+
const candidate = this.snapController().findProximityConnection(engine, id, radius);
|
|
1539
|
+
if (candidate && (!best || candidate.distance < best.distance))
|
|
1540
|
+
best = candidate;
|
|
1541
|
+
}
|
|
1542
|
+
return best;
|
|
1543
|
+
}
|
|
1544
|
+
/**
|
|
1545
|
+
* Commit the highlighted proximity candidate as ONE undoable AddLinkCommand,
|
|
1546
|
+
* then clear the highlight. Called on the node-drag mouseup. Returns true when
|
|
1547
|
+
* a link was actually created.
|
|
1548
|
+
*/
|
|
1549
|
+
commitProximityConnection() {
|
|
1550
|
+
const engine = this.engine();
|
|
1551
|
+
if (!engine)
|
|
1552
|
+
return false;
|
|
1553
|
+
const candidate = this.proximityCandidate;
|
|
1554
|
+
this.proximityCandidate = null;
|
|
1555
|
+
this.snapController().highlightProximityTarget(engine, null);
|
|
1556
|
+
engine.setProximityPreview(null);
|
|
1557
|
+
engine.setSnapGuides(null); // helper lines end with the drag
|
|
1558
|
+
if (!candidate || engine.getInteractionConfig().enableProximityConnect !== true)
|
|
1559
|
+
return false;
|
|
1560
|
+
if (this.isReadonly())
|
|
1561
|
+
return false;
|
|
1562
|
+
const command = this.snapController().buildProximityLinkCommand(candidate);
|
|
1563
|
+
void engine.commandManager.execute(command);
|
|
1564
|
+
return true;
|
|
1565
|
+
}
|
|
1566
|
+
/** Drop any live proximity highlight/candidate without committing. */
|
|
1567
|
+
clearProximityPreview() {
|
|
1568
|
+
const engine = this.engine();
|
|
1569
|
+
if (this.proximityCandidate && engine) {
|
|
1570
|
+
this.snapController().highlightProximityTarget(engine, null);
|
|
1571
|
+
engine.setProximityPreview(null);
|
|
1572
|
+
}
|
|
1573
|
+
engine === null || engine === void 0 ? void 0 : engine.setSnapGuides(null); // helper lines end with the drag
|
|
1574
|
+
this.proximityCandidate = null;
|
|
1575
|
+
}
|
|
1576
|
+
// ==========================================================================
|
|
1577
|
+
// wave12/connect-ergonomics (gap 1) — Group drag: move a subflow container and
|
|
1578
|
+
// ALL its contents by the same delta, as ONE undoable step.
|
|
1579
|
+
// ==========================================================================
|
|
1580
|
+
/**
|
|
1581
|
+
* The innermost group whose outer frame contains the world point. "Innermost"
|
|
1582
|
+
* (deepest nesting, then smallest area) so grabbing a nested sub-flow drags the
|
|
1583
|
+
* sub-flow, not the pipeline around it. Skips groups with no drawable frame.
|
|
1584
|
+
*/
|
|
1585
|
+
findGroupAtPoint(diagram, worldX, worldY) {
|
|
1586
|
+
let best;
|
|
1587
|
+
let bestDepth = -Infinity;
|
|
1588
|
+
let bestArea = Infinity;
|
|
1589
|
+
for (const group of diagram.getGroups()) {
|
|
1590
|
+
if (group.isCollapsed)
|
|
1591
|
+
continue;
|
|
1592
|
+
const r = group.getOuterBounds();
|
|
1593
|
+
if (r.width <= 0 || r.height <= 0)
|
|
1594
|
+
continue;
|
|
1595
|
+
if (worldX < r.x || worldX > r.x + r.width || worldY < r.y || worldY > r.y + r.height) {
|
|
1596
|
+
continue;
|
|
1597
|
+
}
|
|
1598
|
+
const depth = diagram.getDepth(group.id);
|
|
1599
|
+
const area = r.width * r.height;
|
|
1600
|
+
if (depth > bestDepth || (depth === bestDepth && area < bestArea)) {
|
|
1601
|
+
best = group;
|
|
1602
|
+
bestDepth = depth;
|
|
1603
|
+
bestArea = area;
|
|
1604
|
+
}
|
|
1605
|
+
}
|
|
1606
|
+
return best;
|
|
1607
|
+
}
|
|
1608
|
+
/**
|
|
1609
|
+
* Every member NODE (recursively through nested groups) and every group FRAME
|
|
1610
|
+
* (this group + its descendant groups) that a drag of `group` must carry.
|
|
1611
|
+
* Cycle-guarded so a corrupt membership loop can never spin.
|
|
1612
|
+
*/
|
|
1613
|
+
collectGroupContents(diagram, group) {
|
|
1614
|
+
const nodeIds = new Set();
|
|
1615
|
+
const groupIds = new Set();
|
|
1616
|
+
const stack = [group];
|
|
1617
|
+
while (stack.length) {
|
|
1618
|
+
const g = stack.pop();
|
|
1619
|
+
if (groupIds.has(g.id))
|
|
1620
|
+
continue;
|
|
1621
|
+
groupIds.add(g.id);
|
|
1622
|
+
for (const memberId of g.members) {
|
|
1623
|
+
const node = diagram.getNode(memberId);
|
|
1624
|
+
if (node) {
|
|
1625
|
+
nodeIds.add(memberId);
|
|
1626
|
+
continue;
|
|
1627
|
+
}
|
|
1628
|
+
const child = diagram.getGroup(memberId);
|
|
1629
|
+
if (child && !groupIds.has(child.id))
|
|
1630
|
+
stack.push(child);
|
|
1631
|
+
}
|
|
1632
|
+
}
|
|
1633
|
+
return { nodeIds: [...nodeIds], groupIds: [...groupIds] };
|
|
1634
|
+
}
|
|
1635
|
+
/** Snapshot a group frame's restorable geometry (for undo). */
|
|
1636
|
+
snapshotFrame(group) {
|
|
1637
|
+
return {
|
|
1638
|
+
position: { x: group.position.x, y: group.position.y },
|
|
1639
|
+
size: group.size ? Object.assign({}, group.size) : undefined,
|
|
1640
|
+
bounds: group.bounds ? Object.assign({}, group.bounds) : undefined,
|
|
1641
|
+
};
|
|
1642
|
+
}
|
|
1643
|
+
/** Arm a group drag (threshold-gated, mirroring the node-drag arming). */
|
|
1644
|
+
pressGroup(group, diagram, event, worldX, worldY) {
|
|
1645
|
+
const { nodeIds, groupIds } = this.collectGroupContents(diagram, group);
|
|
1646
|
+
const nodeFrom = new Map();
|
|
1647
|
+
for (const id of nodeIds) {
|
|
1648
|
+
const node = diagram.getNode(id);
|
|
1649
|
+
if (node && !node.state.locked)
|
|
1650
|
+
nodeFrom.set(id, Object.assign({}, node.position));
|
|
1651
|
+
}
|
|
1652
|
+
const frameFrom = new Map();
|
|
1653
|
+
for (const id of groupIds) {
|
|
1654
|
+
const g = diagram.getGroup(id);
|
|
1655
|
+
if (g)
|
|
1656
|
+
frameFrom.set(id, this.snapshotFrame(g));
|
|
1657
|
+
}
|
|
1658
|
+
this.groupDrag = {
|
|
1659
|
+
groupId: group.id,
|
|
1660
|
+
nodeIds: [...nodeFrom.keys()],
|
|
1661
|
+
groupIds: [...frameFrom.keys()],
|
|
1662
|
+
startClientX: event.clientX,
|
|
1663
|
+
startClientY: event.clientY,
|
|
1664
|
+
lastWorldX: worldX,
|
|
1665
|
+
lastWorldY: worldY,
|
|
1666
|
+
committed: false,
|
|
1667
|
+
nodeFrom,
|
|
1668
|
+
frameFrom,
|
|
1669
|
+
};
|
|
1670
|
+
this.setCursor('move');
|
|
1671
|
+
}
|
|
1672
|
+
/** Translate the whole subflow live during a group drag (past the threshold). */
|
|
1673
|
+
moveGroupDrag(event) {
|
|
1674
|
+
var _a;
|
|
1675
|
+
const drag = this.groupDrag;
|
|
1676
|
+
const diagram = (_a = this.engine()) === null || _a === void 0 ? void 0 : _a.getDiagram();
|
|
1677
|
+
if (!drag || !diagram)
|
|
1678
|
+
return;
|
|
1679
|
+
if (!drag.committed) {
|
|
1680
|
+
const dx = event.clientX - drag.startClientX;
|
|
1681
|
+
const dy = event.clientY - drag.startClientY;
|
|
1682
|
+
if (Math.hypot(dx, dy) < this.options.dragThreshold)
|
|
1683
|
+
return;
|
|
1684
|
+
drag.committed = true;
|
|
1685
|
+
}
|
|
1686
|
+
const { x: worldX, y: worldY } = this.toWorld(event);
|
|
1687
|
+
const dx = worldX - drag.lastWorldX;
|
|
1688
|
+
const dy = worldY - drag.lastWorldY;
|
|
1689
|
+
drag.lastWorldX = worldX;
|
|
1690
|
+
drag.lastWorldY = worldY;
|
|
1691
|
+
if (!dx && !dy)
|
|
1692
|
+
return;
|
|
1693
|
+
// Members: N absolute position sets (per-property LWW converges under collab).
|
|
1694
|
+
for (const id of drag.nodeIds) {
|
|
1695
|
+
const node = diagram.getNode(id);
|
|
1696
|
+
if (!node || node.state.locked)
|
|
1697
|
+
continue;
|
|
1698
|
+
node.setPosition(node.position.x + dx, node.position.y + dy);
|
|
1699
|
+
}
|
|
1700
|
+
// Frames: translate this group + nested group frames alongside their contents.
|
|
1701
|
+
for (const id of drag.groupIds) {
|
|
1702
|
+
const g = diagram.getGroup(id);
|
|
1703
|
+
if (!g)
|
|
1704
|
+
continue;
|
|
1705
|
+
const r = g.getOuterBounds();
|
|
1706
|
+
g.setFrame({ x: r.x + dx, y: r.y + dy, width: r.width, height: r.height });
|
|
1707
|
+
}
|
|
1708
|
+
this.host.interaction.invalidatePortHitCache();
|
|
1709
|
+
this.host.requestRender();
|
|
1710
|
+
}
|
|
1711
|
+
/**
|
|
1712
|
+
* wave12: commit a finished node drag as ONE undoable step.
|
|
1713
|
+
*
|
|
1714
|
+
* The live drag mutated node positions directly for feedback and recorded NOTHING on
|
|
1715
|
+
* the command history — so Ctrl+Z could not undo a drag (keyboard-nudge and resize both
|
|
1716
|
+
* commit MoveNodeCommand; only the pointer drag skipped it). This is the same FROM→TO
|
|
1717
|
+
* snapshot endGroupDrag uses: the state is already at `to`, so each MoveNodeCommand's
|
|
1718
|
+
* execute() is a visual no-op that records one history entry, and undo restores `from`.
|
|
1719
|
+
* A multi-node drag collapses into one MacroCommand — one gesture, one undo step.
|
|
1720
|
+
*/
|
|
1721
|
+
/**
|
|
1722
|
+
* T8/visio — after a node drag COMMITS its move, reparent it into whatever
|
|
1723
|
+
* container it was dropped in (or unembed it when dropped outside every one).
|
|
1724
|
+
*
|
|
1725
|
+
* The whole drop policy already lived in `GroupMembershipService`: innermost
|
|
1726
|
+
* hit-test, per-group `canAddMember` veto, coordinate translation, and
|
|
1727
|
+
* undoable Add/RemoveFromGroupCommand on the shared stack. It was simply
|
|
1728
|
+
* never constructed outside its own specs, so a drag into a container moved
|
|
1729
|
+
* the node's x/y and nothing else. This is the missing call.
|
|
1730
|
+
*
|
|
1731
|
+
* Runs only for a single-node drag: a multi-select drop into a container is a
|
|
1732
|
+
* separate policy question (which member wins the hit-test?), and guessing it
|
|
1733
|
+
* silently is worse than leaving it to a host.
|
|
1734
|
+
*/
|
|
1735
|
+
/**
|
|
1736
|
+
* T2/visio — the snap hook handed to `updateResize`, or undefined when helper
|
|
1737
|
+
* lines are off. Snaps the resized box against every OTHER node's box and
|
|
1738
|
+
* publishes the same guides the drag path draws, so a resize aligns to its
|
|
1739
|
+
* neighbours instead of landing a pixel out.
|
|
1740
|
+
*/
|
|
1741
|
+
resizeSnapHook(engine) {
|
|
1742
|
+
if (engine.getInteractionConfig().enableHelperLines !== true)
|
|
1743
|
+
return undefined;
|
|
1744
|
+
const id = this.selectionTools.activeGestureNodeId();
|
|
1745
|
+
const snap = this.snapController();
|
|
1746
|
+
snap.syncWithEngineConfig(engine);
|
|
1747
|
+
const others = snap.siblingBoxes(engine, id ? [id] : []);
|
|
1748
|
+
return (box) => {
|
|
1749
|
+
const result = snap.computeSnap(box, others);
|
|
1750
|
+
engine.setSnapGuides(result.guides.length > 0
|
|
1751
|
+
? result.guides.map((g) => g.orientation === 'vertical'
|
|
1752
|
+
? { x1: g.position, y1: g.from, x2: g.position, y2: g.to, kind: 'alignment' }
|
|
1753
|
+
: { x1: g.from, y1: g.position, x2: g.to, y2: g.position, kind: 'alignment' })
|
|
1754
|
+
: null);
|
|
1755
|
+
return result.box;
|
|
1756
|
+
};
|
|
1757
|
+
}
|
|
1758
|
+
applyMembershipOnDrop(engine, drag) {
|
|
1759
|
+
if (engine.getInteractionConfig().enableGroupMembershipOnDrop !== true)
|
|
1760
|
+
return;
|
|
1761
|
+
if (drag.nodeIds.length !== 1 || this.isReadonly())
|
|
1762
|
+
return;
|
|
1763
|
+
const diagram = engine.getDiagram();
|
|
1764
|
+
if (!diagram)
|
|
1765
|
+
return;
|
|
1766
|
+
const node = diagram.getNode(drag.nodeIds[0]);
|
|
1767
|
+
if (!node || node.state.locked)
|
|
1768
|
+
return;
|
|
1769
|
+
if (!this.membership || this.membership.diagram !== diagram) {
|
|
1770
|
+
this.membership = {
|
|
1771
|
+
diagram,
|
|
1772
|
+
service: new engine_1.GroupMembershipService({ diagram, dispatcher: engine.commandManager }),
|
|
1773
|
+
};
|
|
1774
|
+
}
|
|
1775
|
+
const service = this.membership.service;
|
|
1776
|
+
service.refresh(); // groups may have moved during the drag
|
|
1777
|
+
// Hit-test the node's CENTRE, not the pointer: the cursor can sit outside a
|
|
1778
|
+
// small node's body, and it is the shape's position that decides where it
|
|
1779
|
+
// landed.
|
|
1780
|
+
const point = {
|
|
1781
|
+
x: node.position.x + node.size.width / 2,
|
|
1782
|
+
y: node.position.y + node.size.height / 2,
|
|
1783
|
+
};
|
|
1784
|
+
void Promise.resolve(service.handleNodeDragEnd(node.id, point)).then((result) => {
|
|
1785
|
+
if (result === null || result === void 0 ? void 0 : result.changed) {
|
|
1786
|
+
this.emitNodesChange();
|
|
1787
|
+
this.host.requestRender();
|
|
1788
|
+
}
|
|
1789
|
+
});
|
|
1790
|
+
}
|
|
1791
|
+
commitNodeMove(engine, drag) {
|
|
1792
|
+
if (!drag.committed || !drag.startPositions)
|
|
1793
|
+
return;
|
|
1794
|
+
const diagram = engine.getDiagram();
|
|
1795
|
+
if (!diagram)
|
|
1796
|
+
return;
|
|
1797
|
+
const steps = [];
|
|
1798
|
+
for (const id of drag.nodeIds) {
|
|
1799
|
+
const node = diagram.getNode(id);
|
|
1800
|
+
const from = drag.startPositions.get(id);
|
|
1801
|
+
if (!node || !from)
|
|
1802
|
+
continue;
|
|
1803
|
+
if (node.position.x === from.x && node.position.y === from.y)
|
|
1804
|
+
continue; // never moved
|
|
1805
|
+
steps.push(new engine_1.MoveNodeCommand(id, { x: node.position.x, y: node.position.y, z: node.position.z }, { x: from.x, y: from.y, z: from.z }, { mergeable: false } // a completed gesture is its own step; do not merge into it
|
|
1806
|
+
));
|
|
1807
|
+
}
|
|
1808
|
+
if (steps.length === 0)
|
|
1809
|
+
return;
|
|
1810
|
+
let command;
|
|
1811
|
+
if (steps.length === 1) {
|
|
1812
|
+
command = steps[0];
|
|
1813
|
+
}
|
|
1814
|
+
else {
|
|
1815
|
+
const macro = new engine_1.MacroCommand('Move nodes');
|
|
1816
|
+
for (const s of steps)
|
|
1817
|
+
macro.addStep(s);
|
|
1818
|
+
command = macro;
|
|
1819
|
+
}
|
|
1820
|
+
void engine.commandManager.execute(command);
|
|
1821
|
+
}
|
|
1822
|
+
/**
|
|
1823
|
+
* End a group drag: commit the whole gesture as ONE undoable MoveGroupCommand
|
|
1824
|
+
* (drag-start snapshot → current), then emit change events. The live drag has
|
|
1825
|
+
* already applied the final positions, so the command's execute() is a visual
|
|
1826
|
+
* no-op that merely records the single history entry; undo restores the start.
|
|
1827
|
+
*/
|
|
1828
|
+
endGroupDrag(engine) {
|
|
1829
|
+
const drag = this.groupDrag;
|
|
1830
|
+
this.groupDrag = null;
|
|
1831
|
+
if (!drag)
|
|
1832
|
+
return;
|
|
1833
|
+
if (!drag.committed)
|
|
1834
|
+
return; // a press with no drag — nothing moved
|
|
1835
|
+
const diagram = engine.getDiagram();
|
|
1836
|
+
if (!diagram)
|
|
1837
|
+
return;
|
|
1838
|
+
const nodeMoves = [];
|
|
1839
|
+
for (const [id, from] of drag.nodeFrom) {
|
|
1840
|
+
const node = diagram.getNode(id);
|
|
1841
|
+
if (!node)
|
|
1842
|
+
continue;
|
|
1843
|
+
nodeMoves.push({ nodeId: id, from, to: Object.assign({}, node.position) });
|
|
1844
|
+
}
|
|
1845
|
+
const frameMoves = [];
|
|
1846
|
+
for (const [id, from] of drag.frameFrom) {
|
|
1847
|
+
const g = diagram.getGroup(id);
|
|
1848
|
+
if (!g)
|
|
1849
|
+
continue;
|
|
1850
|
+
frameMoves.push({ groupId: id, from, to: this.snapshotFrame(g) });
|
|
1851
|
+
}
|
|
1852
|
+
const command = new engine_1.MoveGroupCommand(nodeMoves, frameMoves);
|
|
1853
|
+
if (!command.isNoop()) {
|
|
1854
|
+
// Record on the undo stack. State is already at `to`, so this is idempotent.
|
|
1855
|
+
void engine.commandManager.execute(command);
|
|
1856
|
+
this.emitNodesChange();
|
|
1857
|
+
}
|
|
1858
|
+
this.host.requestRender();
|
|
1859
|
+
}
|
|
1860
|
+
// ==========================================================================
|
|
1861
|
+
// helpers
|
|
1862
|
+
// ==========================================================================
|
|
1863
|
+
engine() {
|
|
1864
|
+
return this.host.getEngine();
|
|
1865
|
+
}
|
|
1866
|
+
/**
|
|
1867
|
+
* wave12 (gap 3): is the easy-connect gate satisfied for this press? With
|
|
1868
|
+
* `easyConnectModifier: 'none'` (the default when the feature is on) any plain
|
|
1869
|
+
* body press connects — the whole node is a handle and move is done via a drag
|
|
1870
|
+
* handle / selection. A specific modifier lets a host KEEP body-drag-to-move
|
|
1871
|
+
* and reserve connect for, say, a shift-drag.
|
|
1872
|
+
*/
|
|
1873
|
+
easyConnectModifierHeld(event, config) {
|
|
1874
|
+
switch (config.easyConnectModifier) {
|
|
1875
|
+
case 'shift': return event.shiftKey;
|
|
1876
|
+
case 'alt': return event.altKey;
|
|
1877
|
+
case 'ctrl': return event.ctrlKey;
|
|
1878
|
+
case 'meta': return event.metaKey;
|
|
1879
|
+
case 'none':
|
|
1880
|
+
default: return true;
|
|
1881
|
+
}
|
|
1882
|
+
}
|
|
1883
|
+
/**
|
|
1884
|
+
* T10/visio — open the transient text widget over a node's label.
|
|
1885
|
+
*
|
|
1886
|
+
* The SESSION (what text, where, single- or multi-line) and the COMMIT (an
|
|
1887
|
+
* undoable command) both come from `InPlaceTextEditor`; the only thing this
|
|
1888
|
+
* adds is the DOM input and where to put it — mapped through the live
|
|
1889
|
+
* world→client transform so it lands on the label at any zoom or pan.
|
|
1890
|
+
*/
|
|
1891
|
+
openTextEditor(engine, target, options) {
|
|
1892
|
+
var _a;
|
|
1893
|
+
if (!this.textEditor)
|
|
1894
|
+
this.textEditor = new in_place_editor_1.InPlaceTextEditor();
|
|
1895
|
+
const editor = this.textEditor;
|
|
1896
|
+
this.closeTextEditor();
|
|
1897
|
+
const session = editor.begin(engine, target);
|
|
1898
|
+
if (!session)
|
|
1899
|
+
return;
|
|
1900
|
+
const rect = this.host.getRect();
|
|
1901
|
+
const at = this.host.viewport.worldToClient(session.center.x, session.center.y, rect);
|
|
1902
|
+
const input = document.createElement('input');
|
|
1903
|
+
input.type = 'text';
|
|
1904
|
+
input.value = session.value;
|
|
1905
|
+
input.className = 'grafloria-text-editor';
|
|
1906
|
+
input.setAttribute('aria-label', 'Edit label');
|
|
1907
|
+
// Fixed positioning keys off the same client coords worldToClient reports,
|
|
1908
|
+
// so the widget needs no assumptions about the container's offset parent.
|
|
1909
|
+
Object.assign(input.style, {
|
|
1910
|
+
position: 'fixed',
|
|
1911
|
+
left: `${at.x}px`,
|
|
1912
|
+
top: `${at.y}px`,
|
|
1913
|
+
transform: 'translate(-50%, -50%)',
|
|
1914
|
+
zIndex: '1000',
|
|
1915
|
+
font: '12px sans-serif',
|
|
1916
|
+
textAlign: 'center',
|
|
1917
|
+
minWidth: '40px',
|
|
1918
|
+
padding: '1px 4px',
|
|
1919
|
+
});
|
|
1920
|
+
let settled = false;
|
|
1921
|
+
const cleanup = () => {
|
|
1922
|
+
input.removeEventListener('keydown', onKeyDown);
|
|
1923
|
+
input.removeEventListener('blur', commit);
|
|
1924
|
+
input.remove();
|
|
1925
|
+
if (this.activeTextInput === input)
|
|
1926
|
+
this.activeTextInput = undefined;
|
|
1927
|
+
};
|
|
1928
|
+
const commit = () => {
|
|
1929
|
+
if (settled)
|
|
1930
|
+
return;
|
|
1931
|
+
settled = true;
|
|
1932
|
+
const command = editor.commit(engine, input.value);
|
|
1933
|
+
cleanup();
|
|
1934
|
+
if (command)
|
|
1935
|
+
void engine.commandManager.execute(command);
|
|
1936
|
+
this.host.requestRender();
|
|
1937
|
+
// Tell the host WHAT changed: a link-label commit is an edges change —
|
|
1938
|
+
// it used to report nodes:change, so an edge-labels listener never heard.
|
|
1939
|
+
if (target.type === 'link-label')
|
|
1940
|
+
this.emitEdgesChange();
|
|
1941
|
+
else
|
|
1942
|
+
this.emitNodesChange();
|
|
1943
|
+
};
|
|
1944
|
+
const cancel = () => {
|
|
1945
|
+
if (settled)
|
|
1946
|
+
return;
|
|
1947
|
+
settled = true;
|
|
1948
|
+
editor.cancel();
|
|
1949
|
+
cleanup();
|
|
1950
|
+
this.host.requestRender();
|
|
1951
|
+
};
|
|
1952
|
+
const onKeyDown = (e) => {
|
|
1953
|
+
// The canvas' own key handling (Delete, Escape, arrows) must not fire
|
|
1954
|
+
// while a caret is live in this input.
|
|
1955
|
+
e.stopPropagation();
|
|
1956
|
+
if (e.key === 'Enter') {
|
|
1957
|
+
e.preventDefault();
|
|
1958
|
+
commit();
|
|
1959
|
+
}
|
|
1960
|
+
else if (e.key === 'Escape') {
|
|
1961
|
+
e.preventDefault();
|
|
1962
|
+
cancel();
|
|
1963
|
+
}
|
|
1964
|
+
};
|
|
1965
|
+
input.addEventListener('keydown', onKeyDown);
|
|
1966
|
+
input.addEventListener('blur', commit);
|
|
1967
|
+
((_a = this.container.ownerDocument) !== null && _a !== void 0 ? _a : document).body.appendChild(input);
|
|
1968
|
+
this.activeTextInput = input;
|
|
1969
|
+
input.focus();
|
|
1970
|
+
if ((options === null || options === void 0 ? void 0 : options.seed) !== undefined) {
|
|
1971
|
+
// Type-to-replace (Visio's signature affordance): the editor opens
|
|
1972
|
+
// holding ONLY the typed character — committing replaces the label,
|
|
1973
|
+
// Escape restores the original untouched (the session keeps it).
|
|
1974
|
+
input.value = options.seed;
|
|
1975
|
+
input.setSelectionRange(input.value.length, input.value.length);
|
|
1976
|
+
}
|
|
1977
|
+
else {
|
|
1978
|
+
input.select();
|
|
1979
|
+
}
|
|
1980
|
+
}
|
|
1981
|
+
/**
|
|
1982
|
+
* Open the in-place label editor programmatically — the seam behind F2 and a
|
|
1983
|
+
* host's context-menu Rename. Unlike the double-click path this is NOT gated
|
|
1984
|
+
* on `enableInPlaceTextEdit`: an explicit call IS the host's opt-in.
|
|
1985
|
+
* Returns false when the target does not exist / is not editable / readonly.
|
|
1986
|
+
*/
|
|
1987
|
+
beginLabelEdit(target, options) {
|
|
1988
|
+
const engine = this.engine();
|
|
1989
|
+
if (!engine || this.isReadonly())
|
|
1990
|
+
return false;
|
|
1991
|
+
this.openTextEditor(engine, target, options);
|
|
1992
|
+
return this.activeTextInput !== undefined;
|
|
1993
|
+
}
|
|
1994
|
+
/** Drop any live text widget without committing (a new edit, or teardown). */
|
|
1995
|
+
closeTextEditor() {
|
|
1996
|
+
var _a;
|
|
1997
|
+
if (!this.activeTextInput)
|
|
1998
|
+
return;
|
|
1999
|
+
const input = this.activeTextInput;
|
|
2000
|
+
this.activeTextInput = undefined;
|
|
2001
|
+
(_a = this.textEditor) === null || _a === void 0 ? void 0 : _a.cancel();
|
|
2002
|
+
input.remove();
|
|
2003
|
+
}
|
|
2004
|
+
toWorld(event) {
|
|
2005
|
+
return this.host.viewport.clientToWorld(event.clientX, event.clientY, this.host.getRect());
|
|
2006
|
+
}
|
|
2007
|
+
/**
|
|
2008
|
+
* The node under the pointer. SVG hit-testing first; then walk up from
|
|
2009
|
+
* `event.target` looking for a `data-node-id`, which is how nodes rendered
|
|
2010
|
+
* into the HTML layer (foreignObject / custom components) are found — they are
|
|
2011
|
+
* absolutely positioned DOM, invisible to the geometric hit-test.
|
|
2012
|
+
*/
|
|
2013
|
+
resolveNode(diagram, worldX, worldY, event) {
|
|
2014
|
+
var _a, _b, _c, _d, _e;
|
|
2015
|
+
this.pressViaDragHandle = false;
|
|
2016
|
+
const hit = diagram.getNodeAtPosition(worldX, worldY);
|
|
2017
|
+
if (hit) {
|
|
2018
|
+
this.pressViaDragHandle = ((_b = (_a = hit.behavior) === null || _a === void 0 ? void 0 : _a.dragHandler) === null || _b === void 0 ? void 0 : _b.isDragHandler) === true;
|
|
2019
|
+
return this.dragTargetFor(hit, diagram);
|
|
2020
|
+
}
|
|
2021
|
+
let element = event.target;
|
|
2022
|
+
while (element && element !== this.container) {
|
|
2023
|
+
const nodeId = (_c = element.getAttribute) === null || _c === void 0 ? void 0 : _c.call(element, 'data-node-id');
|
|
2024
|
+
if (nodeId) {
|
|
2025
|
+
const node = diagram.getNode(nodeId);
|
|
2026
|
+
this.pressViaDragHandle = ((_e = (_d = node === null || node === void 0 ? void 0 : node.behavior) === null || _d === void 0 ? void 0 : _d.dragHandler) === null || _e === void 0 ? void 0 : _e.isDragHandler) === true;
|
|
2027
|
+
return node ? this.dragTargetFor(node, diagram) : undefined;
|
|
2028
|
+
}
|
|
2029
|
+
element = element.parentElement;
|
|
2030
|
+
}
|
|
2031
|
+
return undefined;
|
|
2032
|
+
}
|
|
2033
|
+
/** Does this node delegate its dragging to a designated handle child? */
|
|
2034
|
+
hasDragHandlerChild(node, diagram) {
|
|
2035
|
+
var _a, _b, _c, _d;
|
|
2036
|
+
for (const childId of (_a = node.children) !== null && _a !== void 0 ? _a : []) {
|
|
2037
|
+
if (((_d = (_c = (_b = diagram.getNode(childId)) === null || _b === void 0 ? void 0 : _b.behavior) === null || _c === void 0 ? void 0 : _c.dragHandler) === null || _d === void 0 ? void 0 : _d.isDragHandler) === true)
|
|
2038
|
+
return true;
|
|
2039
|
+
}
|
|
2040
|
+
return false;
|
|
2041
|
+
}
|
|
2042
|
+
/**
|
|
2043
|
+
* Redirect the press to the node that should actually MOVE: an explicit drag
|
|
2044
|
+
* handle drags its parent, and a child that is neither draggable nor
|
|
2045
|
+
* selectable (e.g. a table row inside a node) drags its nearest draggable
|
|
2046
|
+
* ancestor.
|
|
2047
|
+
*/
|
|
2048
|
+
dragTargetFor(node, diagram) {
|
|
2049
|
+
var _a, _b, _c, _d;
|
|
2050
|
+
if (((_b = (_a = node.behavior) === null || _a === void 0 ? void 0 : _a.dragHandler) === null || _b === void 0 ? void 0 : _b.isDragHandler) === true && node.parentId) {
|
|
2051
|
+
return (_c = diagram.getNode(node.parentId)) !== null && _c !== void 0 ? _c : node;
|
|
2052
|
+
}
|
|
2053
|
+
const selectable = ((_d = node.behavior) === null || _d === void 0 ? void 0 : _d.selectable) !== false;
|
|
2054
|
+
if (node.isDraggable() || selectable)
|
|
2055
|
+
return node;
|
|
2056
|
+
let current = node;
|
|
2057
|
+
while (current === null || current === void 0 ? void 0 : current.parentId) {
|
|
2058
|
+
const parent = diagram.getNode(current.parentId);
|
|
2059
|
+
if (!parent)
|
|
2060
|
+
break;
|
|
2061
|
+
if (parent.isDraggable())
|
|
2062
|
+
return parent;
|
|
2063
|
+
current = parent;
|
|
2064
|
+
}
|
|
2065
|
+
return node;
|
|
2066
|
+
}
|
|
2067
|
+
setCursor(cursor) {
|
|
2068
|
+
var _a;
|
|
2069
|
+
if ((_a = this.container) === null || _a === void 0 ? void 0 : _a.style)
|
|
2070
|
+
this.container.style.cursor = cursor;
|
|
2071
|
+
}
|
|
2072
|
+
emitSelectionChange() {
|
|
2073
|
+
var _a;
|
|
2074
|
+
const diagram = (_a = this.engine()) === null || _a === void 0 ? void 0 : _a.getDiagram();
|
|
2075
|
+
if (!diagram)
|
|
2076
|
+
return;
|
|
2077
|
+
this.host.emit('selection:change', {
|
|
2078
|
+
nodes: diagram.getSelectedNodes(),
|
|
2079
|
+
edges: diagram.getLinks().filter((l) => l.state === 'selected'),
|
|
2080
|
+
});
|
|
2081
|
+
}
|
|
2082
|
+
emitNodesChange() {
|
|
2083
|
+
var _a;
|
|
2084
|
+
const diagram = (_a = this.engine()) === null || _a === void 0 ? void 0 : _a.getDiagram();
|
|
2085
|
+
if (diagram)
|
|
2086
|
+
this.host.emit('nodes:change', { nodes: diagram.getNodes() });
|
|
2087
|
+
}
|
|
2088
|
+
emitEdgesChange() {
|
|
2089
|
+
var _a;
|
|
2090
|
+
const diagram = (_a = this.engine()) === null || _a === void 0 ? void 0 : _a.getDiagram();
|
|
2091
|
+
if (diagram)
|
|
2092
|
+
this.host.emit('edges:change', { edges: diagram.getLinks() });
|
|
2093
|
+
}
|
|
2094
|
+
}
|
|
2095
|
+
exports.DomEventBinder = DomEventBinder;
|
|
2096
|
+
/** Is the event target a place where the user is typing? */
|
|
2097
|
+
function isTextEntryTarget(target) {
|
|
2098
|
+
const el = target;
|
|
2099
|
+
if (!el || typeof el.tagName !== 'string')
|
|
2100
|
+
return false;
|
|
2101
|
+
const tag = el.tagName.toUpperCase();
|
|
2102
|
+
return tag === 'INPUT' || tag === 'TEXTAREA' || tag === 'SELECT' || el.isContentEditable === true;
|
|
2103
|
+
}
|
|
2104
|
+
//# sourceMappingURL=dom-event-binder.js.map
|