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
|
@@ -0,0 +1,238 @@
|
|
|
1
|
+
import React, { useEffect, useMemo, useRef, useState } from 'react';
|
|
2
|
+
import type { ElementLinkConnectingEvent, ElementLinkEndedEvent } from '../../api';
|
|
3
|
+
import DisplayBoxControls from '../DisplayBoxControls';
|
|
4
|
+
import DisplayBoxStage from '../DisplayBoxStage';
|
|
5
|
+
import useDemoControls from '../useDemoControls';
|
|
6
|
+
import useDemoEditor from '../useDemoEditor';
|
|
7
|
+
import useOffsetSequence from '../useOffsetSequence';
|
|
8
|
+
import type { DemoActionHelpers } from '../types';
|
|
9
|
+
import { linkCancelDemoConfig } from './linkCancelDemo';
|
|
10
|
+
|
|
11
|
+
type LinkEndedWithMeta = ElementLinkEndedEvent & { cancelledByHost?: boolean };
|
|
12
|
+
type LinkConnectingSnapshot = Omit<ElementLinkConnectingEvent, 'cancel'>;
|
|
13
|
+
|
|
14
|
+
const badgeStyle: React.CSSProperties = {
|
|
15
|
+
display: 'inline-flex',
|
|
16
|
+
alignItems: 'center',
|
|
17
|
+
gap: 8,
|
|
18
|
+
padding: '6px 10px',
|
|
19
|
+
borderRadius: 10,
|
|
20
|
+
fontWeight: 600,
|
|
21
|
+
background: '#f3f4f6',
|
|
22
|
+
border: '1px solid #d0d5dd',
|
|
23
|
+
};
|
|
24
|
+
|
|
25
|
+
const LinkCancelDemo = () => {
|
|
26
|
+
const demo = linkCancelDemoConfig;
|
|
27
|
+
const { containerRef, editorRef, diagramState, selection, snapEnabled, setSnapEnabled } = useDemoEditor({
|
|
28
|
+
createState: demo.createState,
|
|
29
|
+
elementShapes: demo.elementShapes,
|
|
30
|
+
portShapes: demo.portShapes,
|
|
31
|
+
});
|
|
32
|
+
|
|
33
|
+
const nextOffset = useOffsetSequence();
|
|
34
|
+
const actionHelpers: DemoActionHelpers = useMemo(() => ({ nextOffset }), [nextOffset]);
|
|
35
|
+
|
|
36
|
+
const controls = useDemoControls({
|
|
37
|
+
demo,
|
|
38
|
+
editorRef,
|
|
39
|
+
diagramState,
|
|
40
|
+
selection,
|
|
41
|
+
snapEnabled,
|
|
42
|
+
setSnapEnabled,
|
|
43
|
+
actionHelpers,
|
|
44
|
+
});
|
|
45
|
+
|
|
46
|
+
const [lastEvent, setLastEvent] = useState<LinkEndedWithMeta | null>(null);
|
|
47
|
+
const [history, setHistory] = useState<LinkEndedWithMeta[]>([]);
|
|
48
|
+
const [hostCancels, setHostCancels] = useState<boolean>(true);
|
|
49
|
+
const [lastConnecting, setLastConnecting] = useState<LinkConnectingSnapshot | null>(null);
|
|
50
|
+
const cancelledByHostRef = useRef(false);
|
|
51
|
+
|
|
52
|
+
useEffect(() => {
|
|
53
|
+
const editor = editorRef.current;
|
|
54
|
+
if (!editor) return undefined;
|
|
55
|
+
setLastEvent(null);
|
|
56
|
+
setHistory([]);
|
|
57
|
+
return editor.on('elementLinkEnded', (payload) => {
|
|
58
|
+
const withMeta: LinkEndedWithMeta = {
|
|
59
|
+
...payload,
|
|
60
|
+
cancelledByHost: payload.cancelled && cancelledByHostRef.current,
|
|
61
|
+
};
|
|
62
|
+
cancelledByHostRef.current = false;
|
|
63
|
+
setLastEvent(withMeta);
|
|
64
|
+
setHistory((prev) => [withMeta, ...prev].slice(0, 6));
|
|
65
|
+
});
|
|
66
|
+
}, [editorRef]);
|
|
67
|
+
|
|
68
|
+
useEffect(() => {
|
|
69
|
+
const editor = editorRef.current;
|
|
70
|
+
if (!editor) return undefined;
|
|
71
|
+
setLastConnecting(null);
|
|
72
|
+
return editor.on('elementLinkConnecting', (payload) => {
|
|
73
|
+
cancelledByHostRef.current = false;
|
|
74
|
+
if (hostCancels) {
|
|
75
|
+
payload.cancel();
|
|
76
|
+
cancelledByHostRef.current = true;
|
|
77
|
+
}
|
|
78
|
+
setLastConnecting({
|
|
79
|
+
sourcePortId: payload.sourcePortId,
|
|
80
|
+
sourceElementId: payload.sourceElementId,
|
|
81
|
+
targetPortId: payload.targetPortId,
|
|
82
|
+
targetElementId: payload.targetElementId,
|
|
83
|
+
cancelled: payload.cancelled,
|
|
84
|
+
});
|
|
85
|
+
});
|
|
86
|
+
}, [editorRef, hostCancels]);
|
|
87
|
+
|
|
88
|
+
const statusLabel = lastEvent
|
|
89
|
+
? lastEvent.cancelled
|
|
90
|
+
? lastEvent.cancelledByHost
|
|
91
|
+
? 'Cancelled by host'
|
|
92
|
+
: 'Cancelled'
|
|
93
|
+
: 'Link created'
|
|
94
|
+
: 'Awaiting drag';
|
|
95
|
+
const statusColor = lastEvent ? (lastEvent.cancelled ? '#b42318' : '#027a48') : '#444';
|
|
96
|
+
const statusTone = lastEvent ? (lastEvent.cancelled ? '#fee4e2' : '#eaf6ec') : '#f3f4f6';
|
|
97
|
+
|
|
98
|
+
return (
|
|
99
|
+
<section>
|
|
100
|
+
<div style={{ marginBottom: 12 }}>
|
|
101
|
+
<h2 style={{ marginTop: 0, marginBottom: 4 }}>{demo.title}</h2>
|
|
102
|
+
<p style={{ marginTop: 0 }}>
|
|
103
|
+
Start a link drag from the left port and enter the right port area to complete immediately (before mouse
|
|
104
|
+
up). Drop on empty canvas to cancel. Use the toggle to simulate host-driven cancellation; payloads from
|
|
105
|
+
<code> elementLinkConnecting</code> and <code>elementLinkEnded</code> appear below.
|
|
106
|
+
</p>
|
|
107
|
+
</div>
|
|
108
|
+
<DisplayBoxControls
|
|
109
|
+
actions={demo.actions}
|
|
110
|
+
snapEnabled={controls.snapEnabled}
|
|
111
|
+
selectedLinkRouting={controls.selectedLinkRouting}
|
|
112
|
+
canToggleLinkRouting={controls.canToggleLinkRouting}
|
|
113
|
+
onReload={controls.handleReload}
|
|
114
|
+
onZoomIn={controls.handleZoomIn}
|
|
115
|
+
onZoomOut={controls.handleZoomOut}
|
|
116
|
+
onResetViewport={controls.handleResetViewport}
|
|
117
|
+
onToggleSnap={controls.handleToggleSnap}
|
|
118
|
+
onManualRender={controls.handleManualRender}
|
|
119
|
+
onToggleLinkRouting={controls.handleToggleLinkRouting}
|
|
120
|
+
onAction={controls.handleAction}
|
|
121
|
+
/>
|
|
122
|
+
<div style={{ display: 'grid', gap: 12, marginBottom: 12 }}>
|
|
123
|
+
<div style={{ display: 'flex', flexWrap: 'wrap', gap: 12, alignItems: 'center' }}>
|
|
124
|
+
<span style={{ ...badgeStyle, background: statusTone, color: statusColor, borderColor: statusColor }}>
|
|
125
|
+
<span
|
|
126
|
+
style={{
|
|
127
|
+
width: 10,
|
|
128
|
+
height: 10,
|
|
129
|
+
borderRadius: '50%',
|
|
130
|
+
background: statusColor,
|
|
131
|
+
display: 'inline-block',
|
|
132
|
+
}}
|
|
133
|
+
/>
|
|
134
|
+
{statusLabel}
|
|
135
|
+
</span>
|
|
136
|
+
<label style={{ display: 'inline-flex', alignItems: 'center', gap: 8, fontSize: 13 }}>
|
|
137
|
+
<input
|
|
138
|
+
type="checkbox"
|
|
139
|
+
checked={hostCancels}
|
|
140
|
+
onChange={(event) => setHostCancels(event.target.checked)}
|
|
141
|
+
/>
|
|
142
|
+
Cancel link drops from host
|
|
143
|
+
</label>
|
|
144
|
+
{lastEvent && (
|
|
145
|
+
<div style={{ fontSize: 12, color: '#333' }}>
|
|
146
|
+
{lastEvent.cancelled
|
|
147
|
+
? lastEvent.cancelledByHost
|
|
148
|
+
? 'Host cancelled this drop.'
|
|
149
|
+
: 'Drop missed a valid port.'
|
|
150
|
+
: `Link ${lastEvent.linkId ?? '(generated)'} connected ${lastEvent.sourcePortId} → ${lastEvent.targetPortId}`}
|
|
151
|
+
</div>
|
|
152
|
+
)}
|
|
153
|
+
</div>
|
|
154
|
+
<div style={{ display: 'grid', gridTemplateColumns: '1fr 1fr', gap: 12 }}>
|
|
155
|
+
<div>
|
|
156
|
+
<label style={{ display: 'block', fontWeight: 600, marginBottom: 6 }}>Latest connecting payload</label>
|
|
157
|
+
<textarea
|
|
158
|
+
readOnly
|
|
159
|
+
value={lastConnecting ? JSON.stringify(lastConnecting, null, 2) : ''}
|
|
160
|
+
placeholder="Hover a destination port to see elementLinkConnecting."
|
|
161
|
+
style={{
|
|
162
|
+
width: '100%',
|
|
163
|
+
minHeight: 170,
|
|
164
|
+
padding: '8px 10px',
|
|
165
|
+
borderRadius: 8,
|
|
166
|
+
border: '1px solid #d0d5dd',
|
|
167
|
+
background: '#fff',
|
|
168
|
+
fontFamily:
|
|
169
|
+
'ui-monospace, SFMono-Regular, SFMono-Regular, Menlo, Monaco, Consolas, \"Liberation Mono\", \"Courier New\", monospace',
|
|
170
|
+
fontSize: 12,
|
|
171
|
+
resize: 'vertical',
|
|
172
|
+
}}
|
|
173
|
+
/>
|
|
174
|
+
</div>
|
|
175
|
+
<div>
|
|
176
|
+
<label style={{ display: 'block', fontWeight: 600, marginBottom: 6 }}>Latest ended payload</label>
|
|
177
|
+
<textarea
|
|
178
|
+
readOnly
|
|
179
|
+
value={lastEvent ? JSON.stringify(lastEvent, null, 2) : ''}
|
|
180
|
+
placeholder="Drag a link to see the payload."
|
|
181
|
+
style={{
|
|
182
|
+
width: '100%',
|
|
183
|
+
minHeight: 170,
|
|
184
|
+
padding: '8px 10px',
|
|
185
|
+
borderRadius: 8,
|
|
186
|
+
border: '1px solid #d0d5dd',
|
|
187
|
+
background: '#fff',
|
|
188
|
+
fontFamily:
|
|
189
|
+
'ui-monospace, SFMono-Regular, SFMono-Regular, Menlo, Monaco, Consolas, \"Liberation Mono\", \"Courier New\", monospace',
|
|
190
|
+
fontSize: 12,
|
|
191
|
+
resize: 'vertical',
|
|
192
|
+
}}
|
|
193
|
+
/>
|
|
194
|
+
</div>
|
|
195
|
+
<div>
|
|
196
|
+
<label style={{ display: 'block', fontWeight: 600, marginBottom: 6 }}>Recent drags</label>
|
|
197
|
+
<div
|
|
198
|
+
style={{
|
|
199
|
+
display: 'grid',
|
|
200
|
+
gap: 8,
|
|
201
|
+
padding: 8,
|
|
202
|
+
borderRadius: 8,
|
|
203
|
+
border: '1px solid #e0e0e0',
|
|
204
|
+
background: '#fafafa',
|
|
205
|
+
}}
|
|
206
|
+
>
|
|
207
|
+
{history.length === 0 && <div style={{ color: '#666', fontSize: 12 }}>No drags yet.</div>}
|
|
208
|
+
{history.map((event, index) => (
|
|
209
|
+
<div
|
|
210
|
+
key={`${event.sourcePortId}-${event.targetPortId ?? 'none'}-${index}`}
|
|
211
|
+
style={{
|
|
212
|
+
padding: 8,
|
|
213
|
+
borderRadius: 6,
|
|
214
|
+
background: event.cancelled ? '#fff4f3' : '#f1f8f4',
|
|
215
|
+
border: `1px solid ${event.cancelled ? '#f2b8b5' : '#b9dfc7'}`,
|
|
216
|
+
fontSize: 12,
|
|
217
|
+
}}
|
|
218
|
+
>
|
|
219
|
+
<div style={{ fontWeight: 600, marginBottom: 4 }}>
|
|
220
|
+
{event.cancelled ? (event.cancelledByHost ? 'Cancelled by host' : 'Cancelled') : 'Created'} —{' '}
|
|
221
|
+
{new Date().toLocaleTimeString()}
|
|
222
|
+
</div>
|
|
223
|
+
<div>sourcePortId: {event.sourcePortId}</div>
|
|
224
|
+
<div>targetPortId: {event.targetPortId ?? '—'}</div>
|
|
225
|
+
<div>linkId: {event.linkId ?? '—'}</div>
|
|
226
|
+
{event.targetElementId && <div>targetElementId: {event.targetElementId}</div>}
|
|
227
|
+
</div>
|
|
228
|
+
))}
|
|
229
|
+
</div>
|
|
230
|
+
</div>
|
|
231
|
+
</div>
|
|
232
|
+
</div>
|
|
233
|
+
<DisplayBoxStage containerRef={containerRef} />
|
|
234
|
+
</section>
|
|
235
|
+
);
|
|
236
|
+
};
|
|
237
|
+
|
|
238
|
+
export default LinkCancelDemo;
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import SimpleDemo from './SimpleDemo';
|
|
3
|
+
import { obstacleRoutingDemoConfig } from './obstacleRoutingDemo';
|
|
4
|
+
|
|
5
|
+
const ObstacleRoutingDemo = () => (
|
|
6
|
+
<SimpleDemo
|
|
7
|
+
demo={obstacleRoutingDemoConfig}
|
|
8
|
+
beforeStage={
|
|
9
|
+
<div
|
|
10
|
+
style={{
|
|
11
|
+
marginBottom: 12,
|
|
12
|
+
padding: '10px 12px',
|
|
13
|
+
borderRadius: 8,
|
|
14
|
+
border: '1px solid #2d2d2d',
|
|
15
|
+
background: '#f4f4f4',
|
|
16
|
+
}}
|
|
17
|
+
>
|
|
18
|
+
<strong>Expected routing behavior</strong>
|
|
19
|
+
<ul style={{ margin: '6px 0 0 16px' }}>
|
|
20
|
+
<li>Links between top nodes should route around the blocking element.</li>
|
|
21
|
+
<li>Sibling links inside a shared parent should ignore the parent as an obstacle.</li>
|
|
22
|
+
<li>Parent-child links should stay within the parent and avoid the child interior when ports are on edges.</li>
|
|
23
|
+
<li>Grandchild links should ignore shared ancestors (parent + grandparent containers).</li>
|
|
24
|
+
</ul>
|
|
25
|
+
</div>
|
|
26
|
+
}
|
|
27
|
+
/>
|
|
28
|
+
);
|
|
29
|
+
|
|
30
|
+
export default ObstacleRoutingDemo;
|