orcasvn-react-diagrams 0.2.1 → 0.2.2
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/README.md +99 -88
- package/ai/api-contract.json +257 -205
- package/ai/invariants.json +43 -41
- package/ai/manifest.json +34 -34
- package/dist/cjs/{displaybox.js → examples.js} +5974 -1413
- package/dist/cjs/index.js +3889 -1112
- package/dist/cjs/types/api/createDiagramEditor.d.ts +7 -2
- package/dist/cjs/types/api/types.d.ts +178 -0
- package/dist/cjs/types/displaybox/demos/DeletionEventsDemoTab.d.ts +3 -0
- package/dist/cjs/types/displaybox/demos/ShapeHoverControlsDemoTab.d.ts +3 -0
- package/dist/cjs/types/displaybox/demos/TextLayoutDemoTab.d.ts +3 -0
- package/dist/cjs/types/displaybox/demos/deletionEventsDemo.d.ts +2 -0
- package/dist/cjs/types/displaybox/demos/rotatedCreationDemo.d.ts +2 -0
- package/dist/cjs/types/displaybox/demos/roundedRectRadiusDemo.d.ts +2 -0
- package/dist/cjs/types/displaybox/demos/shapeBorderMovementDemo.d.ts +2 -0
- package/dist/cjs/types/displaybox/demos/shapeHoverControlsDemo.d.ts +10 -0
- package/dist/cjs/types/displaybox/demos/textDemo.d.ts +4 -0
- package/dist/cjs/types/displaybox/useDemoEditor.d.ts +5 -2
- package/dist/cjs/types/engine/AutoLayoutService.d.ts +24 -0
- package/dist/cjs/types/engine/DiagramEngine.d.ts +32 -14
- package/dist/cjs/types/engine/EngineCommands.d.ts +4 -1
- package/dist/cjs/types/engine/LinkRoutingService.d.ts +35 -0
- package/dist/cjs/types/engine/MutationPipeline.d.ts +23 -0
- package/dist/cjs/types/engine/TextLayoutService.d.ts +40 -0
- package/dist/cjs/types/examples/index.d.ts +2 -0
- package/dist/cjs/types/measure/textStyleDefaults.d.ts +9 -0
- package/dist/cjs/types/models/DiagramModel.d.ts +1 -0
- package/dist/cjs/types/models/ElementModel.d.ts +1 -0
- package/dist/cjs/types/models/PortModel.d.ts +3 -0
- package/dist/cjs/types/models/TextModel.d.ts +8 -0
- package/dist/cjs/types/renderer/RenderTypes.d.ts +34 -1
- package/dist/cjs/types/renderer/konva/KonvaHitTester.d.ts +1 -1
- package/dist/cjs/types/renderer/konva/KonvaInteraction.d.ts +53 -3
- package/dist/cjs/types/renderer/konva/KonvaNodeFactory.d.ts +18 -1
- package/dist/cjs/types/renderer/konva/KonvaRenderer.d.ts +49 -2
- package/dist/cjs/types/shapes/BuiltInShapes.d.ts +107 -0
- package/dist/cjs/types/shapes/__tests__/BuiltInShapes.test.d.ts +1 -0
- package/dist/cjs/types/shapes/index.d.ts +1 -0
- package/dist/cjs/types/utils/__tests__/borderGeometry.test.d.ts +1 -0
- package/dist/cjs/types/utils/borderGeometry.d.ts +6 -0
- package/dist/cjs/types/utils/geometry.d.ts +22 -0
- package/dist/esm/{displaybox.js → examples.js} +5969 -1414
- package/dist/esm/examples.js.map +1 -0
- package/dist/esm/index.js +3890 -1113
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/types/api/createDiagramEditor.d.ts +7 -2
- package/dist/esm/types/api/types.d.ts +178 -0
- package/dist/esm/types/displaybox/demos/DeletionEventsDemoTab.d.ts +3 -0
- package/dist/esm/types/displaybox/demos/ShapeHoverControlsDemoTab.d.ts +3 -0
- package/dist/esm/types/displaybox/demos/TextLayoutDemoTab.d.ts +3 -0
- package/dist/esm/types/displaybox/demos/deletionEventsDemo.d.ts +2 -0
- package/dist/esm/types/displaybox/demos/rotatedCreationDemo.d.ts +2 -0
- package/dist/esm/types/displaybox/demos/roundedRectRadiusDemo.d.ts +2 -0
- package/dist/esm/types/displaybox/demos/shapeBorderMovementDemo.d.ts +2 -0
- package/dist/esm/types/displaybox/demos/shapeHoverControlsDemo.d.ts +10 -0
- package/dist/esm/types/displaybox/demos/textDemo.d.ts +4 -0
- package/dist/esm/types/displaybox/useDemoEditor.d.ts +5 -2
- package/dist/esm/types/engine/AutoLayoutService.d.ts +24 -0
- package/dist/esm/types/engine/DiagramEngine.d.ts +32 -14
- package/dist/esm/types/engine/EngineCommands.d.ts +4 -1
- package/dist/esm/types/engine/LinkRoutingService.d.ts +35 -0
- package/dist/esm/types/engine/MutationPipeline.d.ts +23 -0
- package/dist/esm/types/engine/TextLayoutService.d.ts +40 -0
- package/dist/esm/types/examples/index.d.ts +2 -0
- package/dist/esm/types/measure/textStyleDefaults.d.ts +9 -0
- package/dist/esm/types/models/DiagramModel.d.ts +1 -0
- package/dist/esm/types/models/ElementModel.d.ts +1 -0
- package/dist/esm/types/models/PortModel.d.ts +3 -0
- package/dist/esm/types/models/TextModel.d.ts +8 -0
- package/dist/esm/types/renderer/RenderTypes.d.ts +34 -1
- package/dist/esm/types/renderer/konva/KonvaHitTester.d.ts +1 -1
- package/dist/esm/types/renderer/konva/KonvaInteraction.d.ts +53 -3
- package/dist/esm/types/renderer/konva/KonvaNodeFactory.d.ts +18 -1
- package/dist/esm/types/renderer/konva/KonvaRenderer.d.ts +49 -2
- package/dist/esm/types/shapes/BuiltInShapes.d.ts +107 -0
- package/dist/esm/types/shapes/__tests__/BuiltInShapes.test.d.ts +1 -0
- package/dist/esm/types/shapes/index.d.ts +1 -0
- package/dist/esm/types/utils/__tests__/borderGeometry.test.d.ts +1 -0
- package/dist/esm/types/utils/borderGeometry.d.ts +6 -0
- package/dist/esm/types/utils/geometry.d.ts +22 -0
- package/dist/{displaybox.d.ts → examples.d.ts} +169 -5
- package/dist/index.d.ts +233 -2
- package/docs/API_CONTRACT.md +200 -144
- package/docs/ARCHITECTURE.md +32 -31
- package/docs/CAPABILITIES.md +40 -38
- package/docs/COMMANDS_EVENTS.md +65 -60
- package/docs/DOCUMENTATION_WORKFLOW.md +27 -29
- package/docs/INDEX.md +41 -41
- package/docs/INTEGRATION_PLAYBOOK.md +56 -54
- package/docs/PORTING_CHECKLIST.md +59 -58
- package/docs/STATE_INVARIANTS.md +60 -56
- package/docs/fixtures/basic-linked-elements.json +52 -52
- package/docs/fixtures/empty-state.json +11 -11
- package/docs/fixtures/nested-layout.json +54 -54
- package/package.json +13 -16
- package/src/displaybox/demos/AutoLayoutDemoTab.tsx +501 -0
- package/src/displaybox/demos/DeletionEventsDemoTab.tsx +147 -0
- package/src/displaybox/demos/EngineEventsDemoTab.tsx +151 -0
- package/src/displaybox/demos/EventHandlersDemoTab.tsx +110 -0
- package/src/displaybox/demos/ExternalDragDropDemoTab.tsx +261 -0
- package/src/displaybox/demos/LinkCancelDemoTab.tsx +238 -0
- package/src/displaybox/demos/ObstacleRoutingDemoTab.tsx +30 -0
- package/src/displaybox/demos/ShapeHoverControlsDemoTab.tsx +558 -0
- package/src/displaybox/demos/SimpleDemo.tsx +73 -0
- package/src/displaybox/demos/SvgPathDemoTab.tsx +327 -0
- package/src/displaybox/demos/TextLayoutDemoTab.tsx +386 -0
- package/src/displaybox/demos/autoLayoutDemo.ts +111 -0
- package/src/displaybox/demos/basicDemo.ts +131 -0
- package/src/displaybox/demos/childConstraintsDemo.ts +65 -0
- package/src/displaybox/demos/customDemo.ts +59 -0
- package/src/displaybox/demos/deletionEventsDemo.ts +91 -0
- package/src/displaybox/demos/engineEventsDemo.ts +64 -0
- package/src/displaybox/demos/eventHandlersDemo.ts +41 -0
- package/src/displaybox/demos/externalDragDropDemo.ts +28 -0
- package/src/displaybox/demos/gridOverlayDemo.ts +50 -0
- package/src/displaybox/demos/index.tsx +217 -0
- package/src/displaybox/demos/linkBendHandlesDemo.ts +143 -0
- package/src/displaybox/demos/linkCancelDemo.ts +56 -0
- package/src/displaybox/demos/linkPortCreationDemo.ts +46 -0
- package/src/displaybox/demos/multiLevelTreeDemo.ts +120 -0
- package/src/displaybox/demos/multipleElementsDemo.ts +62 -0
- package/src/displaybox/demos/nestedDemo.ts +78 -0
- package/src/displaybox/demos/obstacleRoutingDemo.ts +176 -0
- package/src/displaybox/demos/portBorderDemo.ts +98 -0
- package/src/displaybox/demos/portConstraintsDemo.ts +175 -0
- package/src/displaybox/demos/rotatedCreationDemo.ts +185 -0
- package/src/displaybox/demos/roundedRectRadiusDemo.ts +93 -0
- package/src/displaybox/demos/routingDemo.ts +57 -0
- package/src/displaybox/demos/selectionDemo.ts +49 -0
- package/src/displaybox/demos/shapeBorderMovementDemo.ts +126 -0
- package/src/displaybox/demos/shapeGalleryDemo.ts +73 -0
- package/src/displaybox/demos/shapeHoverControlsDemo.ts +172 -0
- package/src/displaybox/demos/shared.ts +161 -0
- package/src/displaybox/demos/svgPathDemo.ts +71 -0
- package/src/displaybox/demos/textDemo.ts +62 -0
- package/src/displaybox/types.ts +66 -0
- package/src/examples/index.ts +21 -0
- package/displaybox/package.json +0 -5
- package/dist/cjs/types/components/BBoxDebugger.d.ts +0 -6
- package/dist/cjs/types/components/CloseIcon.d.ts +0 -6
- package/dist/cjs/types/components/LinkDebugger.d.ts +0 -8
- package/dist/cjs/types/components/editor.d.ts +0 -9
- package/dist/cjs/types/components/elementShowbox.d.ts +0 -3
- package/dist/cjs/types/components/elements/dragDropHandlerElement.d.ts +0 -7
- package/dist/cjs/types/components/elements/element.d.ts +0 -4
- package/dist/cjs/types/components/elements/elementWrapper.d.ts +0 -18
- package/dist/cjs/types/components/links/elementLink.d.ts +0 -4
- package/dist/cjs/types/components/links/index.d.ts +0 -2
- package/dist/cjs/types/components/links/point.d.ts +0 -11
- package/dist/cjs/types/components/paper.d.ts +0 -49
- package/dist/cjs/types/components/ports/index.d.ts +0 -2
- package/dist/cjs/types/components/ports/port.d.ts +0 -3
- package/dist/cjs/types/components/shapeShowbox.d.ts +0 -3
- package/dist/cjs/types/components/shapes/circle.d.ts +0 -9
- package/dist/cjs/types/components/shapes/customShape.d.ts +0 -7
- package/dist/cjs/types/components/shapes/halfCircle.d.ts +0 -9
- package/dist/cjs/types/components/shapes/index.d.ts +0 -7
- package/dist/cjs/types/components/shapes/polygon.d.ts +0 -8
- package/dist/cjs/types/components/shapes/rectangle.d.ts +0 -10
- package/dist/cjs/types/components/shapes/rectangularFrame.d.ts +0 -12
- package/dist/cjs/types/components/shapes/shapeWrapper.d.ts +0 -8
- package/dist/cjs/types/components/svgUtilsShowbox.d.ts +0 -3
- package/dist/cjs/types/components/texts/index.d.ts +0 -2
- package/dist/cjs/types/components/texts/text.d.ts +0 -4
- package/dist/cjs/types/components/viewControls/ruler.d.ts +0 -10
- package/dist/cjs/types/components/viewControls/selectionFrame.d.ts +0 -4
- package/dist/cjs/types/contexts/editorConfigurationContext.d.ts +0 -4
- package/dist/cjs/types/contexts/paperEventEmitterContext.d.ts +0 -45
- package/dist/cjs/types/contexts/zoomContext.d.ts +0 -16
- package/dist/cjs/types/contexts/zoomPanContext.d.ts +0 -23
- package/dist/cjs/types/displaybox/index.d.ts +0 -3
- package/dist/cjs/types/hooks/useKeyboardCommands.d.ts +0 -5
- package/dist/cjs/types/hooks/useSelectionFrame.d.ts +0 -6
- package/dist/cjs/types/logs/Logger.d.ts +0 -14
- package/dist/cjs/types/logs/configureLogger.d.ts +0 -4
- package/dist/cjs/types/main.d.ts +0 -8
- package/dist/cjs/types/mocks/customPortWithBuiltinShape.d.ts +0 -2
- package/dist/cjs/types/mocks/diamondElement.d.ts +0 -11
- package/dist/cjs/types/mocks/editorContext.d.ts +0 -2
- package/dist/cjs/types/mocks/editorContextElementMoveAsPort.d.ts +0 -2
- package/dist/cjs/types/mocks/editorContextForOptimizeRerender.d.ts +0 -2
- package/dist/cjs/types/mocks/editorContextMultipleElements.d.ts +0 -2
- package/dist/cjs/types/mocks/editorContextSingleElement.d.ts +0 -2
- package/dist/cjs/types/mocks/editorContextSingleElementTestEvents.d.ts +0 -2
- package/dist/cjs/types/mocks/editorContextTriggerRenderElements.d.ts +0 -2
- package/dist/cjs/types/mocks/editorContextWithElementAnchorCenter.d.ts +0 -2
- package/dist/cjs/types/mocks/port1.d.ts +0 -5
- package/dist/cjs/types/mocks/port2.d.ts +0 -5
- package/dist/cjs/types/mocks/portIn.d.ts +0 -4
- package/dist/cjs/types/mocks/rectangularFrameElement.d.ts +0 -11
- package/dist/cjs/types/mocks/textsWithFlexBox.d.ts +0 -2
- package/dist/cjs/types/models/IEditorConfiguration.d.ts +0 -7
- package/dist/cjs/types/models/IEditorContext.d.ts +0 -56
- package/dist/cjs/types/models/IElement.d.ts +0 -46
- package/dist/cjs/types/models/IElementLink.d.ts +0 -23
- package/dist/cjs/types/models/IElementLinkProps.d.ts +0 -31
- package/dist/cjs/types/models/IElementProps.d.ts +0 -36
- package/dist/cjs/types/models/IElementSelectorProps.d.ts +0 -25
- package/dist/cjs/types/models/IFlexboxType.d.ts +0 -20
- package/dist/cjs/types/models/IPaperBounds.d.ts +0 -6
- package/dist/cjs/types/models/IPort.d.ts +0 -13
- package/dist/cjs/types/models/IPortProps.d.ts +0 -31
- package/dist/cjs/types/models/IResizability.d.ts +0 -4
- package/dist/cjs/types/models/IShape.d.ts +0 -18
- package/dist/cjs/types/models/IText.d.ts +0 -20
- package/dist/cjs/types/models/ITextProps.d.ts +0 -25
- package/dist/cjs/types/models/callbackTypes.d.ts +0 -21
- package/dist/cjs/types/models/enums/PositioningAnchor.d.ts +0 -4
- package/dist/cjs/types/models/enums/ResizingDirection.d.ts +0 -10
- package/dist/cjs/types/models/enums/SubObjectDirection.d.ts +0 -4
- package/dist/cjs/types/models/enums/TextAlign.d.ts +0 -5
- package/dist/cjs/types/models/enums/index.d.ts +0 -4
- package/dist/cjs/types/models/implementations/CustomPort.d.ts +0 -7
- package/dist/cjs/types/models/implementations/CustomPortFromJSXElement.d.ts +0 -7
- package/dist/cjs/types/models/implementations/CustomPortFromShape.d.ts +0 -7
- package/dist/cjs/types/models/implementations/EditorContext.d.ts +0 -67
- package/dist/cjs/types/models/implementations/Element.d.ts +0 -61
- package/dist/cjs/types/models/implementations/ElementLink.d.ts +0 -25
- package/dist/cjs/types/models/implementations/Port.d.ts +0 -22
- package/dist/cjs/types/models/implementations/Text.d.ts +0 -20
- package/dist/cjs/types/models/implementations/diamondElement.d.ts +0 -11
- package/dist/cjs/types/models/implementations/index.d.ts +0 -6
- package/dist/cjs/types/models/implementations/rectangularFrameElement.d.ts +0 -11
- package/dist/cjs/types/models/index.d.ts +0 -19
- package/dist/cjs/types/models/position.d.ts +0 -4
- package/dist/cjs/types/models/size.d.ts +0 -4
- package/dist/cjs/types/utils/constants.d.ts +0 -54
- package/dist/cjs/types/utils/elementLinkUtil.d.ts +0 -2
- package/dist/cjs/types/utils/generateUniqueId.d.ts +0 -1
- package/dist/cjs/types/utils/index.d.ts +0 -9
- package/dist/cjs/types/utils/lineUtil.d.ts +0 -3
- package/dist/cjs/types/utils/mathUtil.d.ts +0 -6
- package/dist/cjs/types/utils/pathUtil.d.ts +0 -13
- package/dist/cjs/types/utils/portSlideRailSVGUtil.d.ts +0 -3
- package/dist/cjs/types/utils/positionUtil.d.ts +0 -55
- package/dist/cjs/types/utils/svgUtil.d.ts +0 -3
- package/dist/esm/displaybox.js.map +0 -1
- package/dist/esm/types/components/BBoxDebugger.d.ts +0 -6
- package/dist/esm/types/components/CloseIcon.d.ts +0 -6
- package/dist/esm/types/components/LinkDebugger.d.ts +0 -8
- package/dist/esm/types/components/editor.d.ts +0 -9
- package/dist/esm/types/components/elementShowbox.d.ts +0 -3
- package/dist/esm/types/components/elements/dragDropHandlerElement.d.ts +0 -7
- package/dist/esm/types/components/elements/element.d.ts +0 -4
- package/dist/esm/types/components/elements/elementWrapper.d.ts +0 -18
- package/dist/esm/types/components/links/elementLink.d.ts +0 -4
- package/dist/esm/types/components/links/index.d.ts +0 -2
- package/dist/esm/types/components/links/point.d.ts +0 -11
- package/dist/esm/types/components/paper.d.ts +0 -49
- package/dist/esm/types/components/ports/index.d.ts +0 -2
- package/dist/esm/types/components/ports/port.d.ts +0 -3
- package/dist/esm/types/components/shapeShowbox.d.ts +0 -3
- package/dist/esm/types/components/shapes/circle.d.ts +0 -9
- package/dist/esm/types/components/shapes/customShape.d.ts +0 -7
- package/dist/esm/types/components/shapes/halfCircle.d.ts +0 -9
- package/dist/esm/types/components/shapes/index.d.ts +0 -7
- package/dist/esm/types/components/shapes/polygon.d.ts +0 -8
- package/dist/esm/types/components/shapes/rectangle.d.ts +0 -10
- package/dist/esm/types/components/shapes/rectangularFrame.d.ts +0 -12
- package/dist/esm/types/components/shapes/shapeWrapper.d.ts +0 -8
- package/dist/esm/types/components/svgUtilsShowbox.d.ts +0 -3
- package/dist/esm/types/components/texts/index.d.ts +0 -2
- package/dist/esm/types/components/texts/text.d.ts +0 -4
- package/dist/esm/types/components/viewControls/ruler.d.ts +0 -10
- package/dist/esm/types/components/viewControls/selectionFrame.d.ts +0 -4
- package/dist/esm/types/contexts/editorConfigurationContext.d.ts +0 -4
- package/dist/esm/types/contexts/paperEventEmitterContext.d.ts +0 -45
- package/dist/esm/types/contexts/zoomContext.d.ts +0 -16
- package/dist/esm/types/contexts/zoomPanContext.d.ts +0 -23
- package/dist/esm/types/displaybox/index.d.ts +0 -3
- package/dist/esm/types/hooks/useKeyboardCommands.d.ts +0 -5
- package/dist/esm/types/hooks/useSelectionFrame.d.ts +0 -6
- package/dist/esm/types/logs/Logger.d.ts +0 -14
- package/dist/esm/types/logs/configureLogger.d.ts +0 -4
- package/dist/esm/types/main.d.ts +0 -8
- package/dist/esm/types/mocks/customPortWithBuiltinShape.d.ts +0 -2
- package/dist/esm/types/mocks/diamondElement.d.ts +0 -11
- package/dist/esm/types/mocks/editorContext.d.ts +0 -2
- package/dist/esm/types/mocks/editorContextElementMoveAsPort.d.ts +0 -2
- package/dist/esm/types/mocks/editorContextForOptimizeRerender.d.ts +0 -2
- package/dist/esm/types/mocks/editorContextMultipleElements.d.ts +0 -2
- package/dist/esm/types/mocks/editorContextSingleElement.d.ts +0 -2
- package/dist/esm/types/mocks/editorContextSingleElementTestEvents.d.ts +0 -2
- package/dist/esm/types/mocks/editorContextTriggerRenderElements.d.ts +0 -2
- package/dist/esm/types/mocks/editorContextWithElementAnchorCenter.d.ts +0 -2
- package/dist/esm/types/mocks/port1.d.ts +0 -5
- package/dist/esm/types/mocks/port2.d.ts +0 -5
- package/dist/esm/types/mocks/portIn.d.ts +0 -4
- package/dist/esm/types/mocks/rectangularFrameElement.d.ts +0 -11
- package/dist/esm/types/mocks/textsWithFlexBox.d.ts +0 -2
- package/dist/esm/types/models/IEditorConfiguration.d.ts +0 -7
- package/dist/esm/types/models/IEditorContext.d.ts +0 -56
- package/dist/esm/types/models/IElement.d.ts +0 -46
- package/dist/esm/types/models/IElementLink.d.ts +0 -23
- package/dist/esm/types/models/IElementLinkProps.d.ts +0 -31
- package/dist/esm/types/models/IElementProps.d.ts +0 -36
- package/dist/esm/types/models/IElementSelectorProps.d.ts +0 -25
- package/dist/esm/types/models/IFlexboxType.d.ts +0 -20
- package/dist/esm/types/models/IPaperBounds.d.ts +0 -6
- package/dist/esm/types/models/IPort.d.ts +0 -13
- package/dist/esm/types/models/IPortProps.d.ts +0 -31
- package/dist/esm/types/models/IResizability.d.ts +0 -4
- package/dist/esm/types/models/IShape.d.ts +0 -18
- package/dist/esm/types/models/IText.d.ts +0 -20
- package/dist/esm/types/models/ITextProps.d.ts +0 -25
- package/dist/esm/types/models/callbackTypes.d.ts +0 -21
- package/dist/esm/types/models/enums/PositioningAnchor.d.ts +0 -4
- package/dist/esm/types/models/enums/ResizingDirection.d.ts +0 -10
- package/dist/esm/types/models/enums/SubObjectDirection.d.ts +0 -4
- package/dist/esm/types/models/enums/TextAlign.d.ts +0 -5
- package/dist/esm/types/models/enums/index.d.ts +0 -4
- package/dist/esm/types/models/implementations/CustomPort.d.ts +0 -7
- package/dist/esm/types/models/implementations/CustomPortFromJSXElement.d.ts +0 -7
- package/dist/esm/types/models/implementations/CustomPortFromShape.d.ts +0 -7
- package/dist/esm/types/models/implementations/EditorContext.d.ts +0 -67
- package/dist/esm/types/models/implementations/Element.d.ts +0 -61
- package/dist/esm/types/models/implementations/ElementLink.d.ts +0 -25
- package/dist/esm/types/models/implementations/Port.d.ts +0 -22
- package/dist/esm/types/models/implementations/Text.d.ts +0 -20
- package/dist/esm/types/models/implementations/diamondElement.d.ts +0 -11
- package/dist/esm/types/models/implementations/index.d.ts +0 -6
- package/dist/esm/types/models/implementations/rectangularFrameElement.d.ts +0 -11
- package/dist/esm/types/models/index.d.ts +0 -19
- package/dist/esm/types/models/position.d.ts +0 -4
- package/dist/esm/types/models/size.d.ts +0 -4
- package/dist/esm/types/utils/constants.d.ts +0 -54
- package/dist/esm/types/utils/elementLinkUtil.d.ts +0 -2
- package/dist/esm/types/utils/generateUniqueId.d.ts +0 -1
- package/dist/esm/types/utils/index.d.ts +0 -9
- package/dist/esm/types/utils/lineUtil.d.ts +0 -3
- package/dist/esm/types/utils/mathUtil.d.ts +0 -6
- package/dist/esm/types/utils/pathUtil.d.ts +0 -13
- package/dist/esm/types/utils/portSlideRailSVGUtil.d.ts +0 -3
- package/dist/esm/types/utils/positionUtil.d.ts +0 -55
- package/dist/esm/types/utils/svgUtil.d.ts +0 -3
package/docs/API_CONTRACT.md
CHANGED
|
@@ -1,144 +1,200 @@
|
|
|
1
|
-
# API Contract
|
|
2
|
-
> Navigation: [Docs Index](INDEX.md) | Previous: [Architecture](ARCHITECTURE.md) | Next: [State Invariants](STATE_INVARIANTS.md)
|
|
3
|
-
> Sections: [Entrypoints](#entrypoints) | [Editor Config](#editor-config-diagrameditorconfig) | [Engine Config](#engine-config-diagramengineconfig) | [Public State Types](#public-state-types) | [Handle Methods](#handle-methods) | [Events](#events-engineeventmap) | [Behavioral Notes](#behavioral-notes)
|
|
4
|
-
|
|
5
|
-
## Entrypoints
|
|
6
|
-
- `createDiagramEditor(config): DiagramEditorHandle`
|
|
7
|
-
- `createDiagramEngine(config): DiagramEngineHandle`
|
|
8
|
-
|
|
9
|
-
Primary definitions:
|
|
10
|
-
- `src/api/types.ts`
|
|
11
|
-
- `src/api/createDiagramEditor.ts`
|
|
12
|
-
- `src/engine/DiagramEngine.ts`
|
|
13
|
-
|
|
14
|
-
## Editor Config (`DiagramEditorConfig`)
|
|
15
|
-
|
|
16
|
-
### Required
|
|
17
|
-
- `container: HTMLDivElement | string`
|
|
18
|
-
|
|
19
|
-
### Optional
|
|
20
|
-
- `width?: number` (default: `900`)
|
|
21
|
-
- `height?: number` (default: `560`)
|
|
22
|
-
- `initialState?: DiagramState`
|
|
23
|
-
- `elementShapes?: SimpleShape[]`
|
|
24
|
-
- `portShapes?: SimpleShape[]`
|
|
25
|
-
- `panKey?: 'Control' | 'Shift' | 'Alt' | 'Meta'` (default: `'Control'`)
|
|
26
|
-
- `
|
|
27
|
-
- `
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
###
|
|
35
|
-
- `
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
- `
|
|
39
|
-
- `
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
- `
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
- `
|
|
46
|
-
- `
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
- `
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
-
|
|
74
|
-
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
-
|
|
82
|
-
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
-
|
|
88
|
-
-
|
|
89
|
-
-
|
|
90
|
-
- `
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
-
|
|
96
|
-
-
|
|
97
|
-
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
-
|
|
101
|
-
-
|
|
102
|
-
-
|
|
103
|
-
-
|
|
104
|
-
-
|
|
105
|
-
|
|
106
|
-
###
|
|
107
|
-
- `
|
|
108
|
-
- `
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
- `
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
- `
|
|
116
|
-
-
|
|
117
|
-
-
|
|
118
|
-
- `
|
|
119
|
-
-
|
|
120
|
-
-
|
|
121
|
-
- `
|
|
122
|
-
- `
|
|
123
|
-
- `
|
|
124
|
-
-
|
|
125
|
-
- `
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
-
|
|
131
|
-
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
-
|
|
136
|
-
- `
|
|
137
|
-
-
|
|
138
|
-
- `
|
|
139
|
-
- `
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
- `
|
|
143
|
-
- `
|
|
144
|
-
- `
|
|
1
|
+
# API Contract
|
|
2
|
+
> Navigation: [Docs Index](INDEX.md) | Previous: [Architecture](ARCHITECTURE.md) | Next: [State Invariants](STATE_INVARIANTS.md)
|
|
3
|
+
> Sections: [Entrypoints](#entrypoints) | [Editor Config](#editor-config-diagrameditorconfig) | [Engine Config](#engine-config-diagramengineconfig) | [Public State Types](#public-state-types) | [Handle Methods](#handle-methods) | [Events](#events-engineeventmap) | [Behavioral Notes](#behavioral-notes)
|
|
4
|
+
|
|
5
|
+
## Entrypoints
|
|
6
|
+
- `createDiagramEditor(config): DiagramEditorHandle`
|
|
7
|
+
- `createDiagramEngine(config): DiagramEngineHandle`
|
|
8
|
+
|
|
9
|
+
Primary definitions:
|
|
10
|
+
- `src/api/types.ts`
|
|
11
|
+
- `src/api/createDiagramEditor.ts`
|
|
12
|
+
- `src/engine/DiagramEngine.ts`
|
|
13
|
+
|
|
14
|
+
## Editor Config (`DiagramEditorConfig`)
|
|
15
|
+
|
|
16
|
+
### Required
|
|
17
|
+
- `container: HTMLDivElement | string`
|
|
18
|
+
|
|
19
|
+
### Optional
|
|
20
|
+
- `width?: number` (default: `900`)
|
|
21
|
+
- `height?: number` (default: `560`)
|
|
22
|
+
- `initialState?: DiagramState`
|
|
23
|
+
- `elementShapes?: SimpleShape[]`
|
|
24
|
+
- `portShapes?: SimpleShape[]`
|
|
25
|
+
- `panKey?: 'Control' | 'Shift' | 'Alt' | 'Meta'` (default: `'Control'`)
|
|
26
|
+
- `elementShapeHoverControls?: ElementShapeHoverControls`
|
|
27
|
+
- `onElementShapeHoverControlInteraction?: (event: ElementShapeHoverControlInteractionEvent) => void`
|
|
28
|
+
- `onElementShapeHoverControlActivated?: (event: ElementShapeHoverControlActivationEvent) => void` (deprecated callback contract)
|
|
29
|
+
- `onChange?: (event: EngineChangeEvent) => void`
|
|
30
|
+
- `onSelection?: (event: EngineSelectionEvent) => void`
|
|
31
|
+
|
|
32
|
+
## Engine Config (`DiagramEngineConfig`)
|
|
33
|
+
|
|
34
|
+
### Required
|
|
35
|
+
- `renderer: Renderer`
|
|
36
|
+
|
|
37
|
+
### Optional
|
|
38
|
+
- `scheduler?: RenderScheduler`
|
|
39
|
+
- `router?: RouterStrategy`
|
|
40
|
+
- `snapper?: SnapStrategy`
|
|
41
|
+
- `shapeRegistry?: ShapeRegistry`
|
|
42
|
+
- `textMeasurer?: TextMeasurer`
|
|
43
|
+
|
|
44
|
+
Defaults:
|
|
45
|
+
- `scheduler`: `RenderScheduler`
|
|
46
|
+
- `router`: `ObstacleRouter`
|
|
47
|
+
- `snapper`: `DefaultSnapper`
|
|
48
|
+
- `shapeRegistry`: `ShapeRegistry`
|
|
49
|
+
- `textMeasurer`: `CanvasTextMeasurer`
|
|
50
|
+
|
|
51
|
+
## Public State Types
|
|
52
|
+
|
|
53
|
+
### `DiagramState`
|
|
54
|
+
- `elements: ElementData[]` (required)
|
|
55
|
+
- `ports: PortData[]` (required)
|
|
56
|
+
- `links: LinkData[]` (required)
|
|
57
|
+
- `texts: TextData[]` (required)
|
|
58
|
+
|
|
59
|
+
### `ElementData`
|
|
60
|
+
- Required: `id`, `position`, `size`, `shapeId`
|
|
61
|
+
- Optional: `style`, `portIds`, `textIds`, `parentId`, `moveMode`, `anchorCenter`, `layout`, `portMovement`
|
|
62
|
+
- Defaults at runtime/model:
|
|
63
|
+
- `portIds`: `[]`
|
|
64
|
+
- `textIds`: `[]`
|
|
65
|
+
- `parentId`: `null`
|
|
66
|
+
|
|
67
|
+
### `ElementLayout`
|
|
68
|
+
- Required: `mode: 'manual' | 'horizontal' | 'vertical'`
|
|
69
|
+
- Optional: `padding?: number | { x: number; y: number }`, `gap?: number`, `align?: 'start' | 'center' | 'end'`
|
|
70
|
+
- Optional fit controls: `childFitMainAxis?: 'none' | 'distribute'`, `childFitCrossAxis?: 'none' | 'stretch'`, `childFitMinSize?: Partial<Size>`, `childFitMaxSize?: Partial<Size>`
|
|
71
|
+
- Layout defaults when `mode !== 'manual'`:
|
|
72
|
+
- `padding`: `12` (or `{ x: 12, y: 12 }`)
|
|
73
|
+
- `gap`: `12`
|
|
74
|
+
- `align`: `'center'`
|
|
75
|
+
|
|
76
|
+
### `ElementPortMovementPolicy`
|
|
77
|
+
- `moveMode: 'free' | 'inside' | 'border' | 'anchors'`
|
|
78
|
+
- Optional `anchorConstraint?: PortAnchorConstraint`
|
|
79
|
+
|
|
80
|
+
### `PortAnchorConstraint`
|
|
81
|
+
- `preset: 'vertices' | 'cardinal'`
|
|
82
|
+
- Optional `fallback?: 'nearest'`
|
|
83
|
+
|
|
84
|
+
### `PortData`
|
|
85
|
+
- Required: `id`, `elementId`, `position`
|
|
86
|
+
- Optional: `shapeId`, `size`, `style`, `textIds`, `moveMode`, `anchorCenter`, `orientToHostBorder`, `currentAnchorId`
|
|
87
|
+
- Defaults at runtime/model:
|
|
88
|
+
- `textIds`: `[]`
|
|
89
|
+
- `anchorCenter`: `true`
|
|
90
|
+
- `orientToHostBorder`: `true`
|
|
91
|
+
|
|
92
|
+
### `LinkData`
|
|
93
|
+
- Required: `id`, `sourcePortId`, `targetPortId`, `points`
|
|
94
|
+
- Optional: `routing`, `style`, `textIds`
|
|
95
|
+
- Defaults at runtime/model:
|
|
96
|
+
- `routing`: `'auto'`
|
|
97
|
+
- `textIds`: `[]`
|
|
98
|
+
|
|
99
|
+
### `TextData`
|
|
100
|
+
- Required: `id`, `content`, `position`
|
|
101
|
+
- Optional: `size`, `style`, `ownerId`, `layout`, `displayContent`, `displayOffset`, `displayClipSize`
|
|
102
|
+
- Defaults at runtime/model:
|
|
103
|
+
- `ownerId`: `null`
|
|
104
|
+
- `displayContent`: mirrors `content` at creation
|
|
105
|
+
|
|
106
|
+
### `TextLayout`
|
|
107
|
+
- Optional `boundsMode?: 'owner-width' | 'owner-box' | 'fixed'`
|
|
108
|
+
- Optional `wrap?: 'none' | 'word' | 'char'`
|
|
109
|
+
- Optional `overflow?: 'clip' | 'ellipsis-end' | 'ellipsis-middle' | 'ellipsis-start'`
|
|
110
|
+
- Optional `padding?: number`
|
|
111
|
+
- Optional `maxLines?: number`
|
|
112
|
+
- Optional `fixedSize?: Size`
|
|
113
|
+
|
|
114
|
+
### Hover Control Contracts
|
|
115
|
+
- `ElementShapeHoverControls`:
|
|
116
|
+
- Preferred: `controls?: ShapeControlDefinition[]`
|
|
117
|
+
- Legacy deprecated: `edge`, `vertex`, `priority`
|
|
118
|
+
- `ShapeControlDefinition`:
|
|
119
|
+
- Required: `id`, `targetKind`, `icon`
|
|
120
|
+
- Optional: `targetIndices`, `ellipseMidPoints`, `allowAllTargets`, `visibilityTriggers`, `lineStyle`, `tolerance`
|
|
121
|
+
- `ShapeControlTargetKind`: `'vertex' | 'edge' | 'midpoint' | 'ellipse-midpoint'`
|
|
122
|
+
- `ShapeControlVisibilityTrigger`: `'element-hover' | 'target-hover'`
|
|
123
|
+
- `ElementShapeHoverControlInteractionEvent`:
|
|
124
|
+
- lifecycle: `eventType` is `'click' | 'drag-start' | 'drag-move' | 'drag-end'`
|
|
125
|
+
- includes `controlId`, `elementId`, `targetKind`, `targetIndex`, `pointer`, and resolved target payload (`edge`, `vertex`, or `ellipseMidPoint`) when available
|
|
126
|
+
|
|
127
|
+
## Handle Methods
|
|
128
|
+
|
|
129
|
+
### Shared (`DiagramEngineHandle` and `DiagramEditorHandle`)
|
|
130
|
+
- State: `load`, `getState`, `getViewport`
|
|
131
|
+
- Coordinates: `clientToWorld`
|
|
132
|
+
- Overlay: `createOverlayShape`
|
|
133
|
+
- Events: `on`
|
|
134
|
+
- Element: `addElement`, `moveElementTo`, `resizeElement`, `setElementLayout`, `removeElement`
|
|
135
|
+
- Port: `addPortToElement`, `movePortTo`, `removePort`
|
|
136
|
+
- Link: `addLink`, `updateLinkPoints`, `setLinkRoutingMode`, `rerouteAllLinks`, `rerouteLinks`, `removeLink`
|
|
137
|
+
- Text: `addText`, `updateText`, `moveTextTo`, `removeText`
|
|
138
|
+
- Selection/viewport/config: `setSelection`, `setViewport`, `setRouting`, `setSnapping`
|
|
139
|
+
- Rendering: `registerShape`, `render`
|
|
140
|
+
|
|
141
|
+
### Editor Only (`DiagramEditorHandle`)
|
|
142
|
+
- `resize(width, height)`
|
|
143
|
+
- `setElementShapeHoverControls(controls?)`
|
|
144
|
+
- `destroy()`
|
|
145
|
+
|
|
146
|
+
### `registerShape` Definition Contract
|
|
147
|
+
- Required: `id`
|
|
148
|
+
- Optional behavior hooks:
|
|
149
|
+
- `baseRotation?: number`
|
|
150
|
+
- `draw?(context)`
|
|
151
|
+
- `createNode?(model)`
|
|
152
|
+
- `svgPath?: string`
|
|
153
|
+
- `svgSize?: Size`
|
|
154
|
+
- `projectToBorder?(point, rect)`
|
|
155
|
+
- `resolveBorderSide?(point, rect)`
|
|
156
|
+
- `resolvePortAnchors?(rect, options)`
|
|
157
|
+
- `resolveHoverGeometry?(rect)`
|
|
158
|
+
- `resolveEllipseMidPoints?(rect)`
|
|
159
|
+
|
|
160
|
+
## Events (`EngineEventMap`)
|
|
161
|
+
|
|
162
|
+
- `change: EngineChangeEvent`
|
|
163
|
+
- `selection: EngineSelectionEvent`
|
|
164
|
+
- `config: EngineConfigEvent`
|
|
165
|
+
- `elementDrop: ElementDropEvent`
|
|
166
|
+
- `element-drop: ElementDropEvent` (deprecated legacy event name)
|
|
167
|
+
- `paperClick: PaperClickEvent`
|
|
168
|
+
- `portMouseDown: PortMouseEvent`
|
|
169
|
+
- `portMouseUp: PortMouseEvent`
|
|
170
|
+
- `portMoved: PortMovedEvent`
|
|
171
|
+
- `portSelected: PortSelectedEvent`
|
|
172
|
+
- `elementClick: ElementPointerEvent`
|
|
173
|
+
- `elementDragged: ElementDropEvent`
|
|
174
|
+
- `elementMoved: ElementMovedEvent`
|
|
175
|
+
- `elementResized: ElementResizedEvent`
|
|
176
|
+
- `elementDeleted: ElementDeletedEvent`
|
|
177
|
+
- `portDeleted: PortDeletedEvent`
|
|
178
|
+
- `linkDeleted: LinkDeletedEvent`
|
|
179
|
+
- `textDeleted: TextDeletedEvent`
|
|
180
|
+
- `textUpdated: TextUpdatedEvent`
|
|
181
|
+
- `elementSelected: ElementSelectedEvent`
|
|
182
|
+
- `elementLinkStarted: ElementLinkStartedEvent`
|
|
183
|
+
- `elementLinkConnecting: ElementLinkConnectingEvent` (cancelable through `cancel()`)
|
|
184
|
+
- `elementLinkEnded: ElementLinkEndedEvent`
|
|
185
|
+
- `textSelected: TextSelectedEvent`
|
|
186
|
+
|
|
187
|
+
## Behavioral Notes
|
|
188
|
+
|
|
189
|
+
- Missing IDs in most mutators are no-op (non-throwing).
|
|
190
|
+
- `setViewport` emits a `change` patch with `entity: 'viewport'` and skips immediate render scheduling.
|
|
191
|
+
- `clientToWorld` uses: `world = (client - containerRect - pan) / zoom`, with zoom fallback to `1` when zoom is `0`.
|
|
192
|
+
- `rerouteLinks(ids)` skips manual links unless `options.includeManual === true`.
|
|
193
|
+
- `updateLinkPoints` always marks the link as manual routing.
|
|
194
|
+
- Text layout/overflow resolution updates `displayContent` and emits `textUpdated` when `updateText` is called.
|
|
195
|
+
- Deletion mutators emit cascading `portDeleted`/`linkDeleted`/`textDeleted` for removed dependent entities.
|
|
196
|
+
|
|
197
|
+
## Verification References
|
|
198
|
+
- `src/api/__tests__/createDiagramEditor.test.ts`
|
|
199
|
+
- `src/engine/__tests__/DiagramEngine.test.ts`
|
|
200
|
+
- `src/renderer/konva/__tests__/KonvaInteraction.test.ts`
|
package/docs/ARCHITECTURE.md
CHANGED
|
@@ -1,31 +1,32 @@
|
|
|
1
|
-
# Architecture
|
|
2
|
-
> Navigation: [Docs Index](INDEX.md) | Previous: [Capabilities](CAPABILITIES.md) | Next: [API Contract](API_CONTRACT.md)
|
|
3
|
-
> Sections: [Module Boundaries](#module-boundaries) | [Runtime Flow](#runtime-flow) | [Integration Boundary](#integration-boundary) | [Key Sources](#key-sources)
|
|
4
|
-
|
|
5
|
-
## Module Boundaries
|
|
6
|
-
- `src/api/`: public entry points and type contracts.
|
|
7
|
-
- `src/engine/`: command execution, event bus, selection, viewport, routing/snap integration.
|
|
8
|
-
- `src/
|
|
9
|
-
- `src/
|
|
10
|
-
- `src/renderer
|
|
11
|
-
- `src/
|
|
12
|
-
- `src/
|
|
13
|
-
- `src/
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
- `src/
|
|
29
|
-
- `src/
|
|
30
|
-
- `src/
|
|
31
|
-
- `
|
|
1
|
+
# Architecture
|
|
2
|
+
> Navigation: [Docs Index](INDEX.md) | Previous: [Capabilities](CAPABILITIES.md) | Next: [API Contract](API_CONTRACT.md)
|
|
3
|
+
> Sections: [Module Boundaries](#module-boundaries) | [Runtime Flow](#runtime-flow) | [Integration Boundary](#integration-boundary) | [Key Sources](#key-sources)
|
|
4
|
+
|
|
5
|
+
## Module Boundaries
|
|
6
|
+
- `src/api/`: public entry points and type contracts.
|
|
7
|
+
- `src/engine/`: command execution, event bus, selection, viewport, routing/snap integration.
|
|
8
|
+
- `src/engine/`: `DiagramEngine` orchestration plus extracted services (`TextLayoutService`, `AutoLayoutService`, `LinkRoutingService`, `MutationPipeline`).
|
|
9
|
+
- `src/models/`: in-memory state graph for elements/ports/links/texts.
|
|
10
|
+
- `src/renderer/`: renderer interface and shape registry contracts.
|
|
11
|
+
- `src/renderer/konva/`: Konva implementation for render + interaction overlays.
|
|
12
|
+
- `src/strategies/`: pluggable router and snap strategy interfaces/defaults.
|
|
13
|
+
- `src/measure/`: text measuring abstraction and canvas implementation.
|
|
14
|
+
- `src/utils/`: geometry, patch helpers, guards, ids.
|
|
15
|
+
|
|
16
|
+
## Runtime Flow
|
|
17
|
+
1. Host calls API mutator.
|
|
18
|
+
2. Engine executes command(s) against model.
|
|
19
|
+
3. Engine emits patches + latest state via `change`.
|
|
20
|
+
4. Scheduler requests render.
|
|
21
|
+
5. Renderer syncs model to view nodes.
|
|
22
|
+
|
|
23
|
+
## Integration Boundary
|
|
24
|
+
- Engine core does not require Konva if you use `createDiagramEngine` with a custom `Renderer`.
|
|
25
|
+
- `createDiagramEditor` wires Konva stage, hit testing, and interaction defaults.
|
|
26
|
+
|
|
27
|
+
## Key Sources
|
|
28
|
+
- `src/api/createDiagramEditor.ts`
|
|
29
|
+
- `src/engine/DiagramEngine.ts`
|
|
30
|
+
- `src/models/DiagramModel.ts`
|
|
31
|
+
- `src/renderer/Renderer.ts`
|
|
32
|
+
- `analysis/Development Analysis/folder-structure.md`
|
package/docs/CAPABILITIES.md
CHANGED
|
@@ -1,38 +1,40 @@
|
|
|
1
|
-
# Capabilities
|
|
2
|
-
> Navigation: [Docs Index](INDEX.md) | Next: [Architecture](ARCHITECTURE.md)
|
|
3
|
-
> Sections: [Supports](#supports) | [Does Not Support](#does-not-support) | [Preconditions](#preconditions) | [Side Effects](#side-effects) | [Failure Modes](#failure-modes) | [Verification References](#verification-references)
|
|
4
|
-
|
|
5
|
-
## Supports
|
|
6
|
-
- CRUD for elements, ports, links, and texts.
|
|
7
|
-
- Nested elements with world/local coordinate resolution.
|
|
8
|
-
- Link routing modes: `auto` and `manual`.
|
|
9
|
-
- Manual bend editing while preserving interior bends during endpoint moves.
|
|
10
|
-
- Selection, marquee selection, and viewport pan/zoom.
|
|
11
|
-
- Shape registration by canvas draw, custom node factory, or SVG path metadata.
|
|
12
|
-
-
|
|
13
|
-
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
-
|
|
19
|
-
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
- `src/
|
|
1
|
+
# Capabilities
|
|
2
|
+
> Navigation: [Docs Index](INDEX.md) | Next: [Architecture](ARCHITECTURE.md)
|
|
3
|
+
> Sections: [Supports](#supports) | [Does Not Support](#does-not-support) | [Preconditions](#preconditions) | [Side Effects](#side-effects) | [Failure Modes](#failure-modes) | [Verification References](#verification-references)
|
|
4
|
+
|
|
5
|
+
## Supports
|
|
6
|
+
- CRUD for elements, ports, links, and texts.
|
|
7
|
+
- Nested elements with world/local coordinate resolution.
|
|
8
|
+
- Link routing modes: `auto` and `manual`.
|
|
9
|
+
- Manual bend editing while preserving interior bends during endpoint moves.
|
|
10
|
+
- Selection, marquee selection, and viewport pan/zoom.
|
|
11
|
+
- Shape registration by canvas draw, custom node factory, or SVG path metadata.
|
|
12
|
+
- Shape-aware host border projection and anchor-constrained port placement.
|
|
13
|
+
- Element shape hover controls with edge/vertex/midpoint targets and interaction callbacks.
|
|
14
|
+
- Overlay shapes for external drag ghosting and previews.
|
|
15
|
+
- Event-driven host integration (`change`, `selection`, pointer/link lifecycle events).
|
|
16
|
+
|
|
17
|
+
## Does Not Support
|
|
18
|
+
- Real-time collaborative editing.
|
|
19
|
+
- Rich text editing beyond plain text entry.
|
|
20
|
+
- WebGL rendering backend in this package.
|
|
21
|
+
- Server-side conflict resolution or persistence workflows.
|
|
22
|
+
|
|
23
|
+
## Preconditions
|
|
24
|
+
- Runtime: Node `>=20.17.0 <21.0.0` for this repo toolchain.
|
|
25
|
+
- Browser host with Konva-compatible canvas environment when using `createDiagramEditor`.
|
|
26
|
+
|
|
27
|
+
## Side Effects
|
|
28
|
+
- Engine mutators emit `change` events with patches and latest state.
|
|
29
|
+
- Selection updates emit both `selection` and derived entity-specific selection events.
|
|
30
|
+
- Rendering is scheduled after model changes, except viewport patches that set `render: false`.
|
|
31
|
+
|
|
32
|
+
## Failure Modes
|
|
33
|
+
- Missing IDs are ignored in most mutators (no throw, no mutation).
|
|
34
|
+
- Link reroute skips links whose endpoints are unresolved.
|
|
35
|
+
- Text owner references can be orphaned; text remains standalone in world coordinates.
|
|
36
|
+
|
|
37
|
+
## Verification References
|
|
38
|
+
- `src/engine/__tests__/DiagramEngine.test.ts`
|
|
39
|
+
- `src/renderer/konva/__tests__/KonvaInteraction.test.ts`
|
|
40
|
+
- `src/models/__tests__/DiagramModel.test.ts`
|
package/docs/COMMANDS_EVENTS.md
CHANGED
|
@@ -1,60 +1,65 @@
|
|
|
1
|
-
# Commands And Events
|
|
2
|
-
> Navigation: [Docs Index](INDEX.md) | Previous: [State Invariants](STATE_INVARIANTS.md) | Next: [Integration Playbook](INTEGRATION_PLAYBOOK.md)
|
|
3
|
-
> Sections: [Command Model](#command-model) | [Patch Entities](#patch-entities) | [Mutation To Events](#mutation-to-events-mapping) | [Interaction Lifecycle](#interaction-lifecycle-events) | [Failure Modes](#failure-modes)
|
|
4
|
-
|
|
5
|
-
## Command Model
|
|
6
|
-
- Engine mutators route through command factories in `src/engine/EngineCommands.ts`.
|
|
7
|
-
- Each command applies model mutation and returns one or more patches.
|
|
8
|
-
- `emitChange` publishes `{ patches, state }` on `change`.
|
|
9
|
-
|
|
10
|
-
## Patch Entities
|
|
11
|
-
- `element`
|
|
12
|
-
- `port`
|
|
13
|
-
- `link`
|
|
14
|
-
- `text`
|
|
15
|
-
- `selection`
|
|
16
|
-
- `viewport`
|
|
17
|
-
- `config`
|
|
18
|
-
|
|
19
|
-
## Mutation To Events Mapping
|
|
20
|
-
- `add/move/resize/remove element`
|
|
21
|
-
- Always `change`
|
|
22
|
-
- Plus `elementMoved`, `elementResized`, or `elementDeleted` when applicable
|
|
23
|
-
- `add/move/remove port`
|
|
24
|
-
- Always `change`
|
|
25
|
-
- Plus `portMoved` on effective movement
|
|
26
|
-
- `
|
|
27
|
-
|
|
28
|
-
-
|
|
29
|
-
-
|
|
30
|
-
- `
|
|
31
|
-
- `
|
|
32
|
-
- `
|
|
33
|
-
- `
|
|
34
|
-
- `
|
|
35
|
-
- `
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
-
|
|
39
|
-
- `
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
-
|
|
43
|
-
-
|
|
44
|
-
- `
|
|
45
|
-
- `
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
-
|
|
50
|
-
-
|
|
51
|
-
|
|
52
|
-
##
|
|
53
|
-
-
|
|
54
|
-
-
|
|
55
|
-
|
|
56
|
-
##
|
|
57
|
-
-
|
|
58
|
-
- `
|
|
59
|
-
- `
|
|
60
|
-
|
|
1
|
+
# Commands And Events
|
|
2
|
+
> Navigation: [Docs Index](INDEX.md) | Previous: [State Invariants](STATE_INVARIANTS.md) | Next: [Integration Playbook](INTEGRATION_PLAYBOOK.md)
|
|
3
|
+
> Sections: [Command Model](#command-model) | [Patch Entities](#patch-entities) | [Mutation To Events](#mutation-to-events-mapping) | [Interaction Lifecycle](#interaction-lifecycle-events) | [Failure Modes](#failure-modes)
|
|
4
|
+
|
|
5
|
+
## Command Model
|
|
6
|
+
- Engine mutators route through command factories in `src/engine/EngineCommands.ts`.
|
|
7
|
+
- Each command applies model mutation and returns one or more patches.
|
|
8
|
+
- `emitChange` publishes `{ patches, state }` on `change`.
|
|
9
|
+
|
|
10
|
+
## Patch Entities
|
|
11
|
+
- `element`
|
|
12
|
+
- `port`
|
|
13
|
+
- `link`
|
|
14
|
+
- `text`
|
|
15
|
+
- `selection`
|
|
16
|
+
- `viewport`
|
|
17
|
+
- `config`
|
|
18
|
+
|
|
19
|
+
## Mutation To Events Mapping
|
|
20
|
+
- `add/move/resize/remove element`
|
|
21
|
+
- Always `change`
|
|
22
|
+
- Plus `elementMoved`, `elementResized`, or `elementDeleted` when applicable
|
|
23
|
+
- `add/move/remove port`
|
|
24
|
+
- Always `change`
|
|
25
|
+
- Plus `portMoved` on effective movement
|
|
26
|
+
- Plus `portDeleted` on removal (including cascade removal)
|
|
27
|
+
- `add/update/remove link`
|
|
28
|
+
- Always `change`
|
|
29
|
+
- Plus `linkDeleted` on removal (including cascade removal)
|
|
30
|
+
- `add/update/move/remove text`
|
|
31
|
+
- Always `change`
|
|
32
|
+
- Plus `textUpdated` when `updateText` resolves display layout
|
|
33
|
+
- Plus `textDeleted` on removal (including cascade removal)
|
|
34
|
+
- `setSelection/toggleSelection/deleteSelection`
|
|
35
|
+
- `selection` plus derived selected entity events
|
|
36
|
+
- `setViewport`
|
|
37
|
+
- `change` with viewport patch (`render: false`)
|
|
38
|
+
- `setRouting/setSnapping/registerShape`
|
|
39
|
+
- `config` events
|
|
40
|
+
|
|
41
|
+
## Interaction Lifecycle Events
|
|
42
|
+
- Drag element:
|
|
43
|
+
- `elementDrop`
|
|
44
|
+
- legacy `element-drop`
|
|
45
|
+
- `elementDragged`
|
|
46
|
+
- Click paper: `paperClick`
|
|
47
|
+
- Linking:
|
|
48
|
+
- `elementLinkStarted`
|
|
49
|
+
- `elementLinkConnecting` (cancelable via `cancel()`)
|
|
50
|
+
- `elementLinkEnded`
|
|
51
|
+
|
|
52
|
+
## Preconditions
|
|
53
|
+
- Events are emitted only after engine state transition logic.
|
|
54
|
+
- Derived events require selected IDs to resolve to known entity types.
|
|
55
|
+
|
|
56
|
+
## Failure Modes
|
|
57
|
+
- Unknown IDs do not emit entity-specific movement/selection events.
|
|
58
|
+
- Canceled link creation emits `elementLinkEnded` with `cancelled=true` and no link creation.
|
|
59
|
+
- `textUpdated` emits only when target text exists; missing IDs remain no-op.
|
|
60
|
+
|
|
61
|
+
## Verification References
|
|
62
|
+
- `src/engine/EngineCommands.ts`
|
|
63
|
+
- `src/engine/DiagramEngine.ts`
|
|
64
|
+
- `src/engine/__tests__/DiagramEngine.test.ts`
|
|
65
|
+
- `src/renderer/konva/__tests__/KonvaInteraction.test.ts`
|