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
|
@@ -1,7 +1,8 @@
|
|
|
1
|
-
import { DiagramEngineHandle, DiagramState, EngineChangeEvent, EngineSelectionEvent } from './types';
|
|
1
|
+
import { DiagramEngineHandle, DiagramState, ElementShapeHoverControlActivationEvent, ElementShapeHoverControlInteractionEvent, ElementShapeHoverControls, EngineChangeEvent, EngineSelectionEvent } from './types';
|
|
2
|
+
import { type BuiltInShapeKind } from '../shapes';
|
|
2
3
|
export type SimpleShape = {
|
|
3
4
|
id: string;
|
|
4
|
-
kind:
|
|
5
|
+
kind: BuiltInShapeKind;
|
|
5
6
|
style?: Record<string, unknown>;
|
|
6
7
|
};
|
|
7
8
|
export type DiagramEditorConfig = {
|
|
@@ -12,11 +13,15 @@ export type DiagramEditorConfig = {
|
|
|
12
13
|
elementShapes?: SimpleShape[];
|
|
13
14
|
portShapes?: SimpleShape[];
|
|
14
15
|
panKey?: 'Control' | 'Shift' | 'Alt' | 'Meta';
|
|
16
|
+
elementShapeHoverControls?: ElementShapeHoverControls;
|
|
17
|
+
onElementShapeHoverControlInteraction?: (event: ElementShapeHoverControlInteractionEvent) => void;
|
|
18
|
+
onElementShapeHoverControlActivated?: (event: ElementShapeHoverControlActivationEvent) => void;
|
|
15
19
|
onChange?: (event: EngineChangeEvent) => void;
|
|
16
20
|
onSelection?: (event: EngineSelectionEvent) => void;
|
|
17
21
|
};
|
|
18
22
|
export type DiagramEditorHandle = DiagramEngineHandle & {
|
|
19
23
|
resize: (width: number, height: number) => void;
|
|
24
|
+
setElementShapeHoverControls: (controls?: ElementShapeHoverControls) => void;
|
|
20
25
|
destroy: () => void;
|
|
21
26
|
};
|
|
22
27
|
export declare const createDiagramEditor: (config: DiagramEditorConfig) => DiagramEditorHandle;
|
|
@@ -20,6 +20,130 @@ export type DiagramContainer = {
|
|
|
20
20
|
getBoundingClientRect: () => ClientRectLike;
|
|
21
21
|
};
|
|
22
22
|
export type MoveConstraint = 'free' | 'inside' | 'border';
|
|
23
|
+
export type BorderSide = 'left' | 'right' | 'top' | 'bottom';
|
|
24
|
+
export type HostAnchorPreset = 'vertices' | 'cardinal';
|
|
25
|
+
export type PortAnchor = {
|
|
26
|
+
id: string;
|
|
27
|
+
position: Point;
|
|
28
|
+
side?: BorderSide;
|
|
29
|
+
normal?: Point;
|
|
30
|
+
meta?: Record<string, unknown>;
|
|
31
|
+
};
|
|
32
|
+
export type PortAnchorConstraint = {
|
|
33
|
+
preset: HostAnchorPreset;
|
|
34
|
+
fallback?: 'nearest';
|
|
35
|
+
};
|
|
36
|
+
export type ResolvePortAnchorsOptions = {
|
|
37
|
+
preset: HostAnchorPreset;
|
|
38
|
+
};
|
|
39
|
+
export type ShapeVertexTarget = {
|
|
40
|
+
id: string;
|
|
41
|
+
position: Point;
|
|
42
|
+
};
|
|
43
|
+
export type ShapeEdgeTarget = {
|
|
44
|
+
id: string;
|
|
45
|
+
start: Point;
|
|
46
|
+
end: Point;
|
|
47
|
+
midpoint: Point;
|
|
48
|
+
};
|
|
49
|
+
export declare enum EllipseMidPoint {
|
|
50
|
+
top = "top",
|
|
51
|
+
right = "right",
|
|
52
|
+
bottom = "bottom",
|
|
53
|
+
left = "left"
|
|
54
|
+
}
|
|
55
|
+
export type ShapeEllipseMidPointTarget = {
|
|
56
|
+
id: EllipseMidPoint;
|
|
57
|
+
ellipseMidPoint: EllipseMidPoint;
|
|
58
|
+
position: Point;
|
|
59
|
+
};
|
|
60
|
+
export type ShapeHoverGeometry = {
|
|
61
|
+
vertices: ShapeVertexTarget[];
|
|
62
|
+
edges: ShapeEdgeTarget[];
|
|
63
|
+
};
|
|
64
|
+
export type HoverControlIcon = {
|
|
65
|
+
svgPath: string;
|
|
66
|
+
size?: Size;
|
|
67
|
+
style?: Record<string, unknown>;
|
|
68
|
+
};
|
|
69
|
+
export type ShapeControlTargetKind = 'vertex' | 'edge' | 'midpoint' | 'ellipse-midpoint';
|
|
70
|
+
export type ShapeControlVisibilityTrigger = 'element-hover' | 'target-hover';
|
|
71
|
+
export type ShapeControlDefinition = {
|
|
72
|
+
id: string;
|
|
73
|
+
targetKind: ShapeControlTargetKind;
|
|
74
|
+
icon: HoverControlIcon;
|
|
75
|
+
targetIndices?: number[];
|
|
76
|
+
ellipseMidPoints?: EllipseMidPoint | EllipseMidPoint[];
|
|
77
|
+
allowAllTargets?: boolean;
|
|
78
|
+
visibilityTriggers?: ShapeControlVisibilityTrigger[];
|
|
79
|
+
lineStyle?: Record<string, unknown>;
|
|
80
|
+
tolerance?: number;
|
|
81
|
+
};
|
|
82
|
+
/**
|
|
83
|
+
* @deprecated Use ShapeControlDefinition with targetKind='edge'.
|
|
84
|
+
*/
|
|
85
|
+
export type EdgeHoverControl = {
|
|
86
|
+
kind: 'edge';
|
|
87
|
+
icon: HoverControlIcon;
|
|
88
|
+
lineStyle?: Record<string, unknown>;
|
|
89
|
+
tolerance?: number;
|
|
90
|
+
};
|
|
91
|
+
/**
|
|
92
|
+
* @deprecated Use ShapeControlDefinition with targetKind='vertex'.
|
|
93
|
+
*/
|
|
94
|
+
export type VertexHoverControl = {
|
|
95
|
+
kind: 'vertex';
|
|
96
|
+
icon: HoverControlIcon;
|
|
97
|
+
tolerance?: number;
|
|
98
|
+
};
|
|
99
|
+
export type ElementShapeHoverControls = {
|
|
100
|
+
controls?: ShapeControlDefinition[];
|
|
101
|
+
/**
|
|
102
|
+
* @deprecated Legacy singleton edge control. Use controls[] instead.
|
|
103
|
+
*/
|
|
104
|
+
edge?: EdgeHoverControl;
|
|
105
|
+
/**
|
|
106
|
+
* @deprecated Legacy singleton vertex control. Use controls[] instead.
|
|
107
|
+
*/
|
|
108
|
+
vertex?: VertexHoverControl;
|
|
109
|
+
/**
|
|
110
|
+
* @deprecated Legacy resolution preference for singleton edge/vertex controls.
|
|
111
|
+
*/
|
|
112
|
+
priority?: 'vertex-first';
|
|
113
|
+
};
|
|
114
|
+
export type ElementShapeControlEventType = 'click' | 'drag-start' | 'drag-move' | 'drag-end';
|
|
115
|
+
export type ElementShapeControlDragEvent = {
|
|
116
|
+
sessionId: string;
|
|
117
|
+
startPointer: EnginePointerInfo;
|
|
118
|
+
delta: Point;
|
|
119
|
+
};
|
|
120
|
+
export type ElementShapeHoverControlInteractionEvent = {
|
|
121
|
+
eventType: ElementShapeControlEventType;
|
|
122
|
+
controlId: string;
|
|
123
|
+
elementId: string;
|
|
124
|
+
targetKind: ShapeControlTargetKind;
|
|
125
|
+
targetIndex: number;
|
|
126
|
+
pointer: EnginePointerInfo;
|
|
127
|
+
edge?: ShapeEdgeTarget;
|
|
128
|
+
vertex?: ShapeVertexTarget;
|
|
129
|
+
ellipseMidPoint?: EllipseMidPoint;
|
|
130
|
+
drag?: ElementShapeControlDragEvent;
|
|
131
|
+
};
|
|
132
|
+
/**
|
|
133
|
+
* @deprecated Use ElementShapeHoverControlInteractionEvent with eventType='click'.
|
|
134
|
+
*/
|
|
135
|
+
export type ElementShapeHoverControlActivationEvent = {
|
|
136
|
+
controlKind: 'edge' | 'vertex';
|
|
137
|
+
elementId: string;
|
|
138
|
+
targetId: string;
|
|
139
|
+
pointer: EnginePointerInfo;
|
|
140
|
+
edge?: ShapeEdgeTarget;
|
|
141
|
+
vertex?: ShapeVertexTarget;
|
|
142
|
+
};
|
|
143
|
+
export type ElementPortMovementPolicy = {
|
|
144
|
+
moveMode: MoveConstraint | 'anchors';
|
|
145
|
+
anchorConstraint?: PortAnchorConstraint;
|
|
146
|
+
};
|
|
23
147
|
export type LinkRoutingMode = 'auto' | 'manual';
|
|
24
148
|
export type AnchorReference = 'top-left' | 'center';
|
|
25
149
|
export type RerouteLinksOptions = {
|
|
@@ -27,6 +151,11 @@ export type RerouteLinksOptions = {
|
|
|
27
151
|
};
|
|
28
152
|
export type ElementLayoutMode = 'manual' | 'horizontal' | 'vertical';
|
|
29
153
|
export type ElementLayoutAlign = 'start' | 'center' | 'end';
|
|
154
|
+
export type ElementLayoutChildFitMainAxis = 'none' | 'distribute';
|
|
155
|
+
export type ElementLayoutChildFitCrossAxis = 'none' | 'stretch';
|
|
156
|
+
export type TextLayoutBoundsMode = 'owner-width' | 'owner-box' | 'fixed';
|
|
157
|
+
export type TextLayoutWrapMode = 'none' | 'word' | 'char';
|
|
158
|
+
export type TextLayoutOverflowMode = 'clip' | 'ellipsis-end' | 'ellipsis-middle' | 'ellipsis-start';
|
|
30
159
|
export type ElementLayout = {
|
|
31
160
|
mode: ElementLayoutMode;
|
|
32
161
|
padding?: number | {
|
|
@@ -35,6 +164,18 @@ export type ElementLayout = {
|
|
|
35
164
|
};
|
|
36
165
|
gap?: number;
|
|
37
166
|
align?: ElementLayoutAlign;
|
|
167
|
+
childFitMainAxis?: ElementLayoutChildFitMainAxis;
|
|
168
|
+
childFitCrossAxis?: ElementLayoutChildFitCrossAxis;
|
|
169
|
+
childFitMinSize?: Partial<Size>;
|
|
170
|
+
childFitMaxSize?: Partial<Size>;
|
|
171
|
+
};
|
|
172
|
+
export type TextLayout = {
|
|
173
|
+
boundsMode?: TextLayoutBoundsMode;
|
|
174
|
+
wrap?: TextLayoutWrapMode;
|
|
175
|
+
overflow?: TextLayoutOverflowMode;
|
|
176
|
+
padding?: number;
|
|
177
|
+
maxLines?: number;
|
|
178
|
+
fixedSize?: Size;
|
|
38
179
|
};
|
|
39
180
|
export type ElementDropEvent = {
|
|
40
181
|
elementId: string;
|
|
@@ -68,6 +209,7 @@ export type ElementData = {
|
|
|
68
209
|
moveMode?: MoveConstraint;
|
|
69
210
|
anchorCenter?: boolean;
|
|
70
211
|
layout?: ElementLayout;
|
|
212
|
+
portMovement?: ElementPortMovementPolicy;
|
|
71
213
|
};
|
|
72
214
|
export type PortData = {
|
|
73
215
|
id: string;
|
|
@@ -79,6 +221,8 @@ export type PortData = {
|
|
|
79
221
|
textIds?: string[];
|
|
80
222
|
moveMode?: MoveConstraint;
|
|
81
223
|
anchorCenter?: boolean;
|
|
224
|
+
orientToHostBorder?: boolean;
|
|
225
|
+
currentAnchorId?: string;
|
|
82
226
|
};
|
|
83
227
|
export type ShapeDrawContext = {
|
|
84
228
|
ctx: CanvasRenderingContext2D;
|
|
@@ -100,6 +244,10 @@ export type TextData = {
|
|
|
100
244
|
size?: Size;
|
|
101
245
|
style?: Record<string, unknown>;
|
|
102
246
|
ownerId?: string | null;
|
|
247
|
+
layout?: TextLayout;
|
|
248
|
+
displayContent?: string;
|
|
249
|
+
displayOffset?: Point;
|
|
250
|
+
displayClipSize?: Size;
|
|
103
251
|
};
|
|
104
252
|
export type DiagramState = {
|
|
105
253
|
elements: ElementData[];
|
|
@@ -172,6 +320,26 @@ export type ElementResizedEvent = {
|
|
|
172
320
|
export type ElementDeletedEvent = {
|
|
173
321
|
elementId: string;
|
|
174
322
|
};
|
|
323
|
+
export type PortDeletedEvent = {
|
|
324
|
+
portId: string;
|
|
325
|
+
elementId: string;
|
|
326
|
+
};
|
|
327
|
+
export type LinkDeletedEvent = {
|
|
328
|
+
linkId: string;
|
|
329
|
+
sourcePortId: string;
|
|
330
|
+
targetPortId: string;
|
|
331
|
+
};
|
|
332
|
+
export type TextDeletedEvent = {
|
|
333
|
+
textId: string;
|
|
334
|
+
ownerId?: string | null;
|
|
335
|
+
};
|
|
336
|
+
export type TextUpdatedEvent = {
|
|
337
|
+
textId: string;
|
|
338
|
+
ownerId?: string | null;
|
|
339
|
+
content: string;
|
|
340
|
+
displayContent: string;
|
|
341
|
+
reason: 'content' | 'layout';
|
|
342
|
+
};
|
|
175
343
|
export type ElementLinkStartedEvent = {
|
|
176
344
|
sourcePortId: string;
|
|
177
345
|
sourceElementId: string;
|
|
@@ -218,6 +386,10 @@ export type EngineEventMap = {
|
|
|
218
386
|
elementMoved: ElementMovedEvent;
|
|
219
387
|
elementResized: ElementResizedEvent;
|
|
220
388
|
elementDeleted: ElementDeletedEvent;
|
|
389
|
+
portDeleted: PortDeletedEvent;
|
|
390
|
+
linkDeleted: LinkDeletedEvent;
|
|
391
|
+
textDeleted: TextDeletedEvent;
|
|
392
|
+
textUpdated: TextUpdatedEvent;
|
|
221
393
|
elementSelected: ElementSelectedEvent;
|
|
222
394
|
elementLinkStarted: ElementLinkStartedEvent;
|
|
223
395
|
elementLinkConnecting: ElementLinkConnectingEvent;
|
|
@@ -262,10 +434,16 @@ export type DiagramEngineHandle = {
|
|
|
262
434
|
setSnapping: (snapper: unknown) => void;
|
|
263
435
|
registerShape: (shape: {
|
|
264
436
|
id: string;
|
|
437
|
+
baseRotation?: number;
|
|
265
438
|
draw?: (context: ShapeDrawContext) => void;
|
|
266
439
|
createNode?: (model: ElementData | PortData) => unknown;
|
|
267
440
|
svgPath?: string;
|
|
268
441
|
svgSize?: Size;
|
|
442
|
+
projectToBorder?: (point: Point, rect: Rect) => Point;
|
|
443
|
+
resolveBorderSide?: (point: Point, rect: Rect) => BorderSide;
|
|
444
|
+
resolvePortAnchors?: (rect: Rect, options: ResolvePortAnchorsOptions) => PortAnchor[];
|
|
445
|
+
resolveHoverGeometry?: (rect: Rect) => ShapeHoverGeometry | undefined;
|
|
446
|
+
resolveEllipseMidPoints?: (rect: Rect) => ShapeEllipseMidPointTarget[] | undefined;
|
|
269
447
|
}) => void;
|
|
270
448
|
render: () => void;
|
|
271
449
|
};
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import type { DemoConfig } from '../types';
|
|
2
|
+
export declare const shapeHoverDemoIds: {
|
|
3
|
+
readonly drawer: "hover-drawer";
|
|
4
|
+
readonly diamond: "hover-diamond";
|
|
5
|
+
readonly target: "hover-target-rect";
|
|
6
|
+
readonly ellipse: "hover-ellipse-host";
|
|
7
|
+
readonly circle: "hover-circle-host";
|
|
8
|
+
readonly noopRect: "hover-noop-rect";
|
|
9
|
+
};
|
|
10
|
+
export declare const shapeHoverControlsDemoConfig: DemoConfig;
|
|
@@ -1,2 +1,6 @@
|
|
|
1
1
|
import type { DemoConfig } from '../types';
|
|
2
|
+
export declare const textDemoOwnerId = "text-layout-owner";
|
|
3
|
+
export declare const textDemoOwnedTextId = "text-owned-overflow";
|
|
4
|
+
export declare const textDemoFloatingTextId = "text-floating-overflow";
|
|
5
|
+
export declare const textDemoLongSample = "Long diagram label: middle ellipsis should keep the beginning and end visible while preserving the full canonical content in model state.";
|
|
2
6
|
export declare const textDemoConfig: DemoConfig;
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/// <reference types="react" />
|
|
2
|
-
import type { DiagramEditorHandle, DiagramState, SimpleShape } from '../api';
|
|
2
|
+
import type { DiagramEditorHandle, DiagramState, ElementShapeHoverControlActivationEvent, ElementShapeHoverControlInteractionEvent, ElementShapeHoverControls, SimpleShape } from '../api';
|
|
3
3
|
import type { RouterStrategy } from '../strategies/RouterStrategy';
|
|
4
4
|
import type { ViewportSnapshot } from './types';
|
|
5
5
|
type DemoEditorConfig = {
|
|
@@ -8,8 +8,11 @@ type DemoEditorConfig = {
|
|
|
8
8
|
portShapes?: SimpleShape[];
|
|
9
9
|
router?: RouterStrategy;
|
|
10
10
|
snapDefault?: boolean;
|
|
11
|
+
elementShapeHoverControls?: ElementShapeHoverControls;
|
|
12
|
+
onElementShapeHoverControlInteraction?: (event: ElementShapeHoverControlInteractionEvent) => void;
|
|
13
|
+
onElementShapeHoverControlActivated?: (event: ElementShapeHoverControlActivationEvent) => void;
|
|
11
14
|
};
|
|
12
|
-
declare const useDemoEditor: ({ createState, elementShapes, portShapes, router, snapDefault }: DemoEditorConfig) => {
|
|
15
|
+
declare const useDemoEditor: ({ createState, elementShapes, portShapes, router, snapDefault, elementShapeHoverControls, onElementShapeHoverControlInteraction, onElementShapeHoverControlActivated, }: DemoEditorConfig) => {
|
|
13
16
|
containerRef: import("react").MutableRefObject<HTMLDivElement | null>;
|
|
14
17
|
editorRef: import("react").MutableRefObject<DiagramEditorHandle | null>;
|
|
15
18
|
diagramState: DiagramState | null;
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { DiagramPatch } from '../api/types';
|
|
2
|
+
import DiagramModel from '../models/DiagramModel';
|
|
3
|
+
import CommandQueue from './CommandQueue';
|
|
4
|
+
export type AutoLayoutResult = {
|
|
5
|
+
patches: DiagramPatch[];
|
|
6
|
+
movedPortIds: string[];
|
|
7
|
+
};
|
|
8
|
+
export type AutoLayoutServiceConfig = {
|
|
9
|
+
model: DiagramModel;
|
|
10
|
+
commandQueue: CommandQueue;
|
|
11
|
+
collectElementPortIds: (elementId: string) => string[];
|
|
12
|
+
};
|
|
13
|
+
export default class AutoLayoutService {
|
|
14
|
+
private model;
|
|
15
|
+
private commandQueue;
|
|
16
|
+
private collectElementPortIds;
|
|
17
|
+
constructor(config: AutoLayoutServiceConfig);
|
|
18
|
+
applyLayoutForParent(parentId: string): AutoLayoutResult;
|
|
19
|
+
applyLayoutCascade(startParentId: string | null): AutoLayoutResult;
|
|
20
|
+
applyAllLayouts(): AutoLayoutResult;
|
|
21
|
+
private resolveLayoutPadding;
|
|
22
|
+
private clampLayoutSize;
|
|
23
|
+
private distributeLayoutSizes;
|
|
24
|
+
}
|
|
@@ -3,7 +3,7 @@ import { Renderer } from '../renderer/Renderer';
|
|
|
3
3
|
import RenderScheduler from '../renderer/RenderScheduler';
|
|
4
4
|
import { RouterStrategy } from '../strategies/RouterStrategy';
|
|
5
5
|
import { SnapStrategy } from '../strategies/SnapStrategy';
|
|
6
|
-
import { ShapeDefinition, ShapeRegistry } from '../renderer/RenderTypes';
|
|
6
|
+
import { ShapeDefinition, ShapeRegistry, ShapeResizeHandle } from '../renderer/RenderTypes';
|
|
7
7
|
import { TextMeasurer } from '../measure/TextMeasurer';
|
|
8
8
|
export type DiagramEngineConfig = {
|
|
9
9
|
renderer: Renderer;
|
|
@@ -21,10 +21,12 @@ export default class DiagramEngine {
|
|
|
21
21
|
private viewport;
|
|
22
22
|
private renderer;
|
|
23
23
|
private scheduler;
|
|
24
|
-
private router;
|
|
25
24
|
private snapper;
|
|
26
25
|
private shapeRegistry;
|
|
27
|
-
private
|
|
26
|
+
private textLayoutService;
|
|
27
|
+
private autoLayoutService;
|
|
28
|
+
private linkRoutingService;
|
|
29
|
+
private mutationPipeline;
|
|
28
30
|
constructor(config: DiagramEngineConfig);
|
|
29
31
|
static create(config: DiagramEngineConfig): DiagramEngine;
|
|
30
32
|
load(state: DiagramState): void;
|
|
@@ -63,6 +65,18 @@ export default class DiagramEngine {
|
|
|
63
65
|
toggleSelection(id: string): void;
|
|
64
66
|
getSelection(): string[];
|
|
65
67
|
getElementWorldPosition(id: string): Point | null;
|
|
68
|
+
getElementRotation(id: string): number;
|
|
69
|
+
normalizeElementResize(id: string, proposal: {
|
|
70
|
+
x: number;
|
|
71
|
+
y: number;
|
|
72
|
+
width: number;
|
|
73
|
+
height: number;
|
|
74
|
+
}, handle: ShapeResizeHandle, minSize?: number): {
|
|
75
|
+
x: number;
|
|
76
|
+
y: number;
|
|
77
|
+
width: number;
|
|
78
|
+
height: number;
|
|
79
|
+
};
|
|
66
80
|
getPortWorldPosition(id: string): Point | null;
|
|
67
81
|
getTextWorldPosition(id: string): Point | null;
|
|
68
82
|
getPortElementId(portId: string): string | null;
|
|
@@ -92,24 +106,28 @@ export default class DiagramEngine {
|
|
|
92
106
|
cancelled: boolean;
|
|
93
107
|
}): void;
|
|
94
108
|
private emitChange;
|
|
109
|
+
private appendTextLayoutPatches;
|
|
110
|
+
private reprojectBorderPortsForResizedElements;
|
|
111
|
+
private collectResizedElementSizes;
|
|
112
|
+
private resolveBorderPortResizeProjection;
|
|
113
|
+
private resolveConstrainedPortRelativePosition;
|
|
114
|
+
private resolveEffectivePortMoveMode;
|
|
115
|
+
private resolvePortAnchorsForElement;
|
|
116
|
+
private resolveNearestPortAnchor;
|
|
117
|
+
private findNearestPortAnchor;
|
|
118
|
+
private resolveAnchoredPortResizeProjection;
|
|
119
|
+
private resolveTextPresentation;
|
|
95
120
|
private emitSelection;
|
|
96
|
-
private resolveLayoutPadding;
|
|
97
121
|
private applyLayoutForParent;
|
|
98
122
|
private applyLayoutCascade;
|
|
99
123
|
private applyAllLayouts;
|
|
100
124
|
private updateLinksForPorts;
|
|
101
125
|
private collectElementPortIds;
|
|
102
|
-
private resolveLinkPointsForUpdate;
|
|
103
|
-
private updateManualRoute;
|
|
104
126
|
private computeAutoRoute;
|
|
105
|
-
private
|
|
106
|
-
private
|
|
107
|
-
private getAncestorChain;
|
|
108
|
-
private getAncestorExclusions;
|
|
109
|
-
private resolveRouteBounds;
|
|
110
|
-
private isPointOnRectEdge;
|
|
111
|
-
private resolveEdgeSide;
|
|
127
|
+
private constrainPortToHostBorder;
|
|
128
|
+
private projectPointToHostBorder;
|
|
112
129
|
private routeLinksWithEmptyPoints;
|
|
113
|
-
private
|
|
130
|
+
private computeRemovalDiff;
|
|
131
|
+
private emitEntityDeletionEvents;
|
|
114
132
|
}
|
|
115
133
|
export declare const createDiagramEngine: (config: DiagramEngineConfig) => DiagramEngineHandle;
|
|
@@ -14,7 +14,10 @@ export declare const createResizeElementCommand: (id: string, size: {
|
|
|
14
14
|
export declare const createRemoveElementCommand: (id: string) => EngineCommand;
|
|
15
15
|
export declare const createSetElementLayoutCommand: (id: string, layout: ElementData['layout']) => EngineCommand;
|
|
16
16
|
export declare const createAddPortCommand: (port: PortData) => EngineCommand;
|
|
17
|
-
export declare const createMovePortCommand: (id: string,
|
|
17
|
+
export declare const createMovePortCommand: (id: string, update: {
|
|
18
|
+
position: Point;
|
|
19
|
+
currentAnchorId?: string | null;
|
|
20
|
+
}) => EngineCommand;
|
|
18
21
|
export declare const createRemovePortCommand: (id: string) => EngineCommand;
|
|
19
22
|
export declare const createAddLinkCommand: (link: LinkData) => EngineCommand;
|
|
20
23
|
export declare const createUpdateLinkCommand: (id: string, update: {
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import { DiagramPatch, LinkData, Point } from '../api/types';
|
|
2
|
+
import DiagramModel from '../models/DiagramModel';
|
|
3
|
+
import { ShapeRegistry } from '../renderer/RenderTypes';
|
|
4
|
+
import { RouterStrategy } from '../strategies/RouterStrategy';
|
|
5
|
+
import CommandQueue from './CommandQueue';
|
|
6
|
+
export type LinkRoutingServiceConfig = {
|
|
7
|
+
model: DiagramModel;
|
|
8
|
+
commandQueue: CommandQueue;
|
|
9
|
+
router: RouterStrategy;
|
|
10
|
+
shapeRegistry: ShapeRegistry;
|
|
11
|
+
};
|
|
12
|
+
export default class LinkRoutingService {
|
|
13
|
+
private model;
|
|
14
|
+
private commandQueue;
|
|
15
|
+
private router;
|
|
16
|
+
private shapeRegistry;
|
|
17
|
+
constructor(config: LinkRoutingServiceConfig);
|
|
18
|
+
setRouter(router: RouterStrategy): void;
|
|
19
|
+
updateLinksForPorts(portIds: string[]): DiagramPatch[];
|
|
20
|
+
routeLinksWithEmptyPoints(): DiagramPatch[];
|
|
21
|
+
computeAutoRoute(link: LinkData, source: Point, target: Point): Point[];
|
|
22
|
+
private resolveLinkPointsForUpdate;
|
|
23
|
+
private updateManualRoute;
|
|
24
|
+
private buildRouteContext;
|
|
25
|
+
private resolveEndpointGeometry;
|
|
26
|
+
private resolveCornerTieBreakSide;
|
|
27
|
+
private resolveElementShape;
|
|
28
|
+
private isPointOnProjectedBorder;
|
|
29
|
+
private getElementRect;
|
|
30
|
+
private getAncestorChain;
|
|
31
|
+
private getAncestorExclusions;
|
|
32
|
+
private resolveRouteBounds;
|
|
33
|
+
private isPointOnRectEdge;
|
|
34
|
+
private resolveEdgeSide;
|
|
35
|
+
}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { DiagramPatch } from '../api/types';
|
|
2
|
+
import { AutoLayoutResult } from './AutoLayoutService';
|
|
3
|
+
export type MutationPipelineConfig = {
|
|
4
|
+
routeLinksWithEmptyPoints: () => DiagramPatch[];
|
|
5
|
+
reprojectBorderPortsForResizedElements: (patches: DiagramPatch[]) => {
|
|
6
|
+
patches: DiagramPatch[];
|
|
7
|
+
movedPortIds: string[];
|
|
8
|
+
};
|
|
9
|
+
updateLinksForPorts: (portIds: string[]) => DiagramPatch[];
|
|
10
|
+
};
|
|
11
|
+
export type MutationPipelineRunOptions = {
|
|
12
|
+
basePatches: DiagramPatch[];
|
|
13
|
+
layoutSteps?: Array<() => AutoLayoutResult>;
|
|
14
|
+
movedPortIds?: string[];
|
|
15
|
+
includeEmptyLinkRouting?: boolean;
|
|
16
|
+
};
|
|
17
|
+
export default class MutationPipeline {
|
|
18
|
+
private routeLinksWithEmptyPoints;
|
|
19
|
+
private reprojectBorderPortsForResizedElements;
|
|
20
|
+
private updateLinksForPorts;
|
|
21
|
+
constructor(config: MutationPipelineConfig);
|
|
22
|
+
run(options: MutationPipelineRunOptions): DiagramPatch[];
|
|
23
|
+
}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import { DiagramPatch, EngineEventMap, Point, TextData } from '../api/types';
|
|
2
|
+
import { TextMeasurer } from '../measure/TextMeasurer';
|
|
3
|
+
import DiagramModel from '../models/DiagramModel';
|
|
4
|
+
export type ResolvedTextPresentation = {
|
|
5
|
+
size: {
|
|
6
|
+
width: number;
|
|
7
|
+
height: number;
|
|
8
|
+
};
|
|
9
|
+
displayContent: string;
|
|
10
|
+
displayOffset?: Point;
|
|
11
|
+
displayClipSize?: {
|
|
12
|
+
width: number;
|
|
13
|
+
height: number;
|
|
14
|
+
};
|
|
15
|
+
};
|
|
16
|
+
export type TextLayoutServiceConfig = {
|
|
17
|
+
model: DiagramModel;
|
|
18
|
+
textMeasurer: TextMeasurer;
|
|
19
|
+
};
|
|
20
|
+
export default class TextLayoutService {
|
|
21
|
+
private model;
|
|
22
|
+
private textMeasurer;
|
|
23
|
+
constructor(config: TextLayoutServiceConfig);
|
|
24
|
+
resolveTextPresentation(text: TextData): ResolvedTextPresentation;
|
|
25
|
+
appendTextLayoutPatches(patches: DiagramPatch[], options?: {
|
|
26
|
+
emitTextUpdated?: boolean;
|
|
27
|
+
onTextUpdated?: (payload: EngineEventMap['textUpdated']) => void;
|
|
28
|
+
}): DiagramPatch[];
|
|
29
|
+
private collectResizedElementIds;
|
|
30
|
+
private shouldTrackOwnerBoundLayout;
|
|
31
|
+
private resolveTextLayoutBounds;
|
|
32
|
+
private wrapText;
|
|
33
|
+
private wrapByWord;
|
|
34
|
+
private wrapByChar;
|
|
35
|
+
private truncateToWidth;
|
|
36
|
+
private clipToWidth;
|
|
37
|
+
private measureTextWidth;
|
|
38
|
+
private resolveTruncationWidthSafety;
|
|
39
|
+
private resolveTextRenderPadding;
|
|
40
|
+
}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
export { demoTabs, baseElementShapes, basePortShapes, customGalleryShapes, defaultGhostSize, defaultSvgPath, defaultSvgPathSize, externalToolboxItems, } from '../displaybox/demos';
|
|
2
|
+
export type { DemoAction, DemoActionHelpers, DemoConfig, DemoDefinition, ToolboxItem, DiagramCounts, ViewportSnapshot, DisplayBoxMetrics, } from '../displaybox/types';
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
export declare const DEFAULT_TEXT_FONT_SIZE = 12;
|
|
2
|
+
export declare const DEFAULT_TEXT_FONT_FAMILY = "Arial";
|
|
3
|
+
export declare const DEFAULT_TEXT_LINE_HEIGHT = 1.2;
|
|
4
|
+
export type ResolvedTextStyle = {
|
|
5
|
+
fontSize: number;
|
|
6
|
+
fontFamily: string;
|
|
7
|
+
lineHeight: number;
|
|
8
|
+
};
|
|
9
|
+
export declare const resolveTextStyleDefaults: (style?: Record<string, unknown>) => ResolvedTextStyle;
|
|
@@ -31,6 +31,7 @@ export default class DiagramModel {
|
|
|
31
31
|
removeElement(id: string): void;
|
|
32
32
|
addPort(data: PortData): PortModel;
|
|
33
33
|
movePort(id: string, position: Point): void;
|
|
34
|
+
setPortCurrentAnchorId(id: string, currentAnchorId?: string): void;
|
|
34
35
|
removePort(id: string): void;
|
|
35
36
|
addLink(data: LinkData): LinkModel;
|
|
36
37
|
updateLinkPoints(id: string, points: Point[]): void;
|
|
@@ -11,6 +11,7 @@ export default class ElementModel {
|
|
|
11
11
|
moveMode?: MoveConstraint;
|
|
12
12
|
anchorCenter?: boolean;
|
|
13
13
|
layout?: ElementData['layout'];
|
|
14
|
+
portMovement?: ElementData['portMovement'];
|
|
14
15
|
constructor(data: ElementData);
|
|
15
16
|
setPosition(position: Point): void;
|
|
16
17
|
setSize(size: Size): void;
|
|
@@ -9,8 +9,11 @@ export default class PortModel {
|
|
|
9
9
|
textIds: string[];
|
|
10
10
|
moveMode?: MoveConstraint;
|
|
11
11
|
anchorCenter?: boolean;
|
|
12
|
+
orientToHostBorder: boolean;
|
|
13
|
+
currentAnchorId?: string;
|
|
12
14
|
constructor(data: PortData);
|
|
13
15
|
setPosition(position: Point): void;
|
|
16
|
+
setCurrentAnchorId(currentAnchorId?: string): void;
|
|
14
17
|
addText(textId: string): void;
|
|
15
18
|
removeText(textId: string): void;
|
|
16
19
|
toData(): PortData;
|
|
@@ -6,9 +6,17 @@ export default class TextModel {
|
|
|
6
6
|
size?: Size;
|
|
7
7
|
style?: Record<string, unknown>;
|
|
8
8
|
ownerId?: string | null;
|
|
9
|
+
layout?: TextData['layout'];
|
|
10
|
+
displayContent?: string;
|
|
11
|
+
displayOffset?: Point;
|
|
12
|
+
displayClipSize?: Size;
|
|
9
13
|
constructor(data: TextData);
|
|
10
14
|
setContent(content: string): void;
|
|
11
15
|
setSize(size: Size): void;
|
|
16
|
+
setDisplayContent(content: string): void;
|
|
17
|
+
setDisplayOffset(offset: Point | undefined): void;
|
|
18
|
+
setDisplayClipSize(size: Size | undefined): void;
|
|
19
|
+
setLayout(layout: TextData['layout']): void;
|
|
12
20
|
setPosition(position: Point): void;
|
|
13
21
|
toData(): TextData;
|
|
14
22
|
}
|