@logicflow/core 2.0.0-beta.0 → 2.0.0-beta.10
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/.turbo/turbo-build$colon$dev.log +2 -2
- package/.turbo/turbo-build.log +16 -22
- package/__tests__/bugs/1545-spec.test.ts +19 -15
- package/__tests__/util/edge.test.ts +57 -57
- package/dist/index.min.js +32 -0
- package/dist/index.min.js.map +1 -0
- package/es/LogicFlow.d.ts +88 -40
- package/es/LogicFlow.js +38 -33
- package/es/LogicFlow.js.map +1 -1
- package/es/algorithm/edge.js.map +1 -1
- package/es/algorithm/index.d.ts +2 -0
- package/es/algorithm/index.js +2 -0
- package/es/algorithm/index.js.map +1 -1
- package/es/algorithm/outline.d.ts +1 -1
- package/es/common/drag.d.ts +51 -0
- package/es/common/drag.js +145 -0
- package/es/common/drag.js.map +1 -0
- package/es/common/history.d.ts +28 -0
- package/es/common/history.js +92 -0
- package/es/common/history.js.map +1 -0
- package/es/common/index.d.ts +5 -0
- package/es/common/index.js +6 -0
- package/es/common/index.js.map +1 -0
- package/es/common/keyboard.d.ts +34 -0
- package/es/common/keyboard.js +80 -0
- package/es/common/keyboard.js.map +1 -0
- package/es/common/matrix.d.ts +30 -0
- package/es/common/matrix.js +155 -0
- package/es/common/matrix.js.map +1 -0
- package/es/common/vector.d.ts +23 -0
- package/es/common/vector.js +97 -0
- package/es/common/vector.js.map +1 -0
- package/es/constant/index.d.ts +39 -2
- package/es/constant/index.js +41 -1
- package/es/constant/index.js.map +1 -1
- package/es/event/eventArgs.d.ts +103 -25
- package/es/event/eventEmitter.d.ts +2 -2
- package/es/event/eventEmitter.js +0 -1
- package/es/event/eventEmitter.js.map +1 -1
- package/es/index.d.ts +6 -1
- package/es/index.js +6 -1
- package/es/index.js.map +1 -1
- package/es/keyboard/index.d.ts +1 -0
- package/es/keyboard/index.js +1 -0
- package/es/keyboard/index.js.map +1 -1
- package/es/keyboard/shortcut.d.ts +8 -0
- package/es/keyboard/shortcut.js +70 -8
- package/es/keyboard/shortcut.js.map +1 -1
- package/es/model/BaseModel.d.ts +16 -7
- package/es/model/EditConfigModel.d.ts +97 -36
- package/es/model/EditConfigModel.js +169 -82
- package/es/model/EditConfigModel.js.map +1 -1
- package/es/model/GraphModel.d.ts +36 -14
- package/es/model/GraphModel.js +60 -10
- package/es/model/GraphModel.js.map +1 -1
- package/es/model/SnaplineModel.d.ts +2 -0
- package/es/model/TransformModel.js +1 -1
- package/es/model/TransformModel.js.map +1 -1
- package/es/model/edge/BaseEdgeModel.d.ts +21 -17
- package/es/model/edge/BaseEdgeModel.js +64 -42
- package/es/model/edge/BaseEdgeModel.js.map +1 -1
- package/es/model/edge/BezierEdgeModel.d.ts +5 -3
- package/es/model/edge/BezierEdgeModel.js +7 -3
- package/es/model/edge/BezierEdgeModel.js.map +1 -1
- package/es/model/edge/LineEdgeModel.d.ts +2 -0
- package/es/model/edge/LineEdgeModel.js +2 -1
- package/es/model/edge/LineEdgeModel.js.map +1 -1
- package/es/model/edge/PolylineEdgeModel.d.ts +5 -3
- package/es/model/edge/PolylineEdgeModel.js +22 -15
- package/es/model/edge/PolylineEdgeModel.js.map +1 -1
- package/es/model/node/BaseNodeModel.d.ts +42 -14
- package/es/model/node/BaseNodeModel.js +62 -48
- package/es/model/node/BaseNodeModel.js.map +1 -1
- package/es/model/node/CircleNodeModel.d.ts +4 -3
- package/es/model/node/CircleNodeModel.js +4 -7
- package/es/model/node/CircleNodeModel.js.map +1 -1
- package/es/model/node/DiamondNodeModel.d.ts +5 -4
- package/es/model/node/DiamondNodeModel.js +4 -6
- package/es/model/node/DiamondNodeModel.js.map +1 -1
- package/es/model/node/EllipseNodeModel.d.ts +5 -4
- package/es/model/node/EllipseNodeModel.js +4 -6
- package/es/model/node/EllipseNodeModel.js.map +1 -1
- package/es/model/node/HtmlNodeModel.d.ts +4 -5
- package/es/model/node/HtmlNodeModel.js +2 -12
- package/es/model/node/HtmlNodeModel.js.map +1 -1
- package/es/model/node/PolygonNodeModel.d.ts +5 -4
- package/es/model/node/PolygonNodeModel.js +4 -7
- package/es/model/node/PolygonNodeModel.js.map +1 -1
- package/es/model/node/RectNodeModel.d.ts +7 -5
- package/es/model/node/RectNodeModel.js +10 -7
- package/es/model/node/RectNodeModel.js.map +1 -1
- package/es/model/node/TextNodeModel.d.ts +17 -9
- package/es/model/node/TextNodeModel.js +2 -1
- package/es/model/node/TextNodeModel.js.map +1 -1
- package/es/options.d.ts +11 -14
- package/es/options.js +3 -42
- package/es/options.js.map +1 -1
- package/es/tool/MultipleSelectTool.d.ts +1 -1
- package/es/tool/MultipleSelectTool.js +5 -5
- package/es/tool/MultipleSelectTool.js.map +1 -1
- package/es/tool/TextEditTool.d.ts +3 -3
- package/es/tool/TextEditTool.js +2 -2
- package/es/tool/TextEditTool.js.map +1 -1
- package/es/tool/index.d.ts +24 -2
- package/es/tool/index.js +82 -2
- package/es/tool/index.js.map +1 -1
- package/es/util/drag.d.ts +5 -5
- package/es/util/drag.js +3 -1
- package/es/util/drag.js.map +1 -1
- package/es/util/edge.d.ts +9 -2
- package/es/util/edge.js +23 -12
- package/es/util/edge.js.map +1 -1
- package/es/util/index.d.ts +1 -0
- package/es/util/index.js +1 -0
- package/es/util/index.js.map +1 -1
- package/es/util/node.d.ts +8 -7
- package/es/util/node.js +26 -7
- package/es/util/node.js.map +1 -1
- package/es/util/resize.d.ts +32 -0
- package/es/util/resize.js +197 -0
- package/es/util/resize.js.map +1 -0
- package/es/view/Anchor.d.ts +6 -7
- package/es/view/Anchor.js +6 -3
- package/es/view/Anchor.js.map +1 -1
- package/es/view/Control.d.ts +1 -1
- package/es/view/Control.js +88 -39
- package/es/view/Control.js.map +1 -1
- package/es/view/Graph.d.ts +5 -1
- package/es/view/Graph.js +45 -5
- package/es/view/Graph.js.map +1 -1
- package/es/view/Rotate.js +2 -1
- package/es/view/Rotate.js.map +1 -1
- package/es/view/behavior/index.d.ts +2 -0
- package/es/view/behavior/index.js +3 -0
- package/es/view/behavior/index.js.map +1 -0
- package/es/view/behavior/snapline.d.ts +3 -0
- package/es/{tool → view/behavior}/snapline.js +0 -1
- package/es/view/behavior/snapline.js.map +1 -0
- package/es/view/edge/AdjustPoint.js +12 -23
- package/es/view/edge/AdjustPoint.js.map +1 -1
- package/es/view/edge/BaseEdge.d.ts +2 -2
- package/es/view/edge/BaseEdge.js +30 -22
- package/es/view/edge/BaseEdge.js.map +1 -1
- package/es/view/node/BaseNode.d.ts +4 -4
- package/es/view/node/BaseNode.js +33 -24
- package/es/view/node/BaseNode.js.map +1 -1
- package/es/view/node/CircleNode.d.ts +1 -1
- package/es/view/node/CircleNode.js.map +1 -1
- package/es/view/node/DiamondNode.d.ts +1 -1
- package/es/view/node/DiamondNode.js.map +1 -1
- package/es/view/node/EllipseNode.d.ts +1 -1
- package/es/view/node/EllipseNode.js.map +1 -1
- package/es/view/node/HtmlNode.d.ts +1 -1
- package/es/view/node/HtmlNode.js +2 -2
- package/es/view/node/HtmlNode.js.map +1 -1
- package/es/view/node/PolygonNode.d.ts +1 -1
- package/es/view/node/PolygonNode.js.map +1 -1
- package/es/view/node/RectNode.d.ts +1 -1
- package/es/view/node/RectNode.js.map +1 -1
- package/es/view/node/TextNode.d.ts +1 -1
- package/es/view/node/TextNode.js +1 -1
- package/es/view/node/TextNode.js.map +1 -1
- package/es/view/overlay/CanvasOverlay.js +5 -4
- package/es/view/overlay/CanvasOverlay.js.map +1 -1
- package/es/view/overlay/Grid.d.ts +35 -20
- package/es/view/overlay/Grid.js +35 -26
- package/es/view/overlay/Grid.js.map +1 -1
- package/es/view/overlay/ToolOverlay.d.ts +1 -1
- package/es/view/overlay/ToolOverlay.js +1 -1
- package/es/view/overlay/ToolOverlay.js.map +1 -1
- package/es/view/shape/Circle.d.ts +9 -1
- package/es/view/shape/Circle.js +5 -5
- package/es/view/shape/Circle.js.map +1 -1
- package/es/view/shape/Ellipse.d.ts +10 -1
- package/es/view/shape/Ellipse.js +5 -5
- package/es/view/shape/Ellipse.js.map +1 -1
- package/es/view/shape/Line.d.ts +14 -1
- package/es/view/shape/Line.js +5 -7
- package/es/view/shape/Line.js.map +1 -1
- package/es/view/shape/Path.d.ts +3 -2
- package/es/view/shape/Path.js +3 -3
- package/es/view/shape/Path.js.map +1 -1
- package/es/view/shape/Polygon.d.ts +5 -3
- package/es/view/shape/Polygon.js +6 -6
- package/es/view/shape/Polygon.js.map +1 -1
- package/es/view/shape/Polyline.d.ts +7 -1
- package/es/view/shape/Polyline.js +8 -6
- package/es/view/shape/Polyline.js.map +1 -1
- package/es/view/shape/Rect.d.ts +11 -13
- package/es/view/shape/Rect.js +6 -9
- package/es/view/shape/Rect.js.map +1 -1
- package/es/view/shape/Text.d.ts +19 -1
- package/es/view/shape/Text.js +28 -21
- package/es/view/shape/Text.js.map +1 -1
- package/es/view/text/BaseText.d.ts +12 -15
- package/es/view/text/BaseText.js +43 -29
- package/es/view/text/BaseText.js.map +1 -1
- package/es/view/text/LineText.d.ts +19 -7
- package/es/view/text/LineText.js +62 -54
- package/es/view/text/LineText.js.map +1 -1
- package/lib/LogicFlow.d.ts +88 -40
- package/lib/LogicFlow.js +40 -35
- package/lib/LogicFlow.js.map +1 -1
- package/lib/algorithm/edge.js.map +1 -1
- package/lib/algorithm/index.d.ts +2 -0
- package/lib/algorithm/index.js +17 -1
- package/lib/algorithm/index.js.map +1 -1
- package/lib/algorithm/outline.d.ts +1 -1
- package/lib/common/drag.d.ts +51 -0
- package/lib/common/drag.js +148 -0
- package/lib/common/drag.js.map +1 -0
- package/lib/common/history.d.ts +28 -0
- package/lib/common/history.js +95 -0
- package/lib/common/history.js.map +1 -0
- package/lib/common/index.d.ts +5 -0
- package/lib/common/index.js +22 -0
- package/lib/common/index.js.map +1 -0
- package/lib/common/keyboard.d.ts +34 -0
- package/lib/common/keyboard.js +86 -0
- package/lib/common/keyboard.js.map +1 -0
- package/lib/common/matrix.d.ts +30 -0
- package/lib/common/matrix.js +158 -0
- package/lib/common/matrix.js.map +1 -0
- package/lib/common/vector.d.ts +23 -0
- package/lib/common/vector.js +101 -0
- package/lib/common/vector.js.map +1 -0
- package/lib/constant/index.d.ts +39 -2
- package/lib/constant/index.js +42 -2
- package/lib/constant/index.js.map +1 -1
- package/lib/event/eventArgs.d.ts +103 -25
- package/lib/event/eventEmitter.d.ts +2 -2
- package/lib/event/eventEmitter.js +0 -1
- package/lib/event/eventEmitter.js.map +1 -1
- package/lib/index.d.ts +6 -1
- package/lib/index.js +7 -2
- package/lib/index.js.map +1 -1
- package/lib/keyboard/index.d.ts +1 -0
- package/lib/keyboard/index.js +15 -0
- package/lib/keyboard/index.js.map +1 -1
- package/lib/keyboard/shortcut.d.ts +8 -0
- package/lib/keyboard/shortcut.js +75 -9
- package/lib/keyboard/shortcut.js.map +1 -1
- package/lib/model/BaseModel.d.ts +16 -7
- package/lib/model/EditConfigModel.d.ts +97 -36
- package/lib/model/EditConfigModel.js +168 -81
- package/lib/model/EditConfigModel.js.map +1 -1
- package/lib/model/GraphModel.d.ts +36 -14
- package/lib/model/GraphModel.js +59 -9
- package/lib/model/GraphModel.js.map +1 -1
- package/lib/model/SnaplineModel.d.ts +2 -0
- package/lib/model/TransformModel.js +1 -1
- package/lib/model/TransformModel.js.map +1 -1
- package/lib/model/edge/BaseEdgeModel.d.ts +21 -17
- package/lib/model/edge/BaseEdgeModel.js +61 -39
- package/lib/model/edge/BaseEdgeModel.js.map +1 -1
- package/lib/model/edge/BezierEdgeModel.d.ts +5 -3
- package/lib/model/edge/BezierEdgeModel.js +6 -2
- package/lib/model/edge/BezierEdgeModel.js.map +1 -1
- package/lib/model/edge/LineEdgeModel.d.ts +2 -0
- package/lib/model/edge/LineEdgeModel.js +2 -1
- package/lib/model/edge/LineEdgeModel.js.map +1 -1
- package/lib/model/edge/PolylineEdgeModel.d.ts +5 -3
- package/lib/model/edge/PolylineEdgeModel.js +21 -14
- package/lib/model/edge/PolylineEdgeModel.js.map +1 -1
- package/lib/model/node/BaseNodeModel.d.ts +42 -14
- package/lib/model/node/BaseNodeModel.js +60 -46
- package/lib/model/node/BaseNodeModel.js.map +1 -1
- package/lib/model/node/CircleNodeModel.d.ts +4 -3
- package/lib/model/node/CircleNodeModel.js +4 -7
- package/lib/model/node/CircleNodeModel.js.map +1 -1
- package/lib/model/node/DiamondNodeModel.d.ts +5 -4
- package/lib/model/node/DiamondNodeModel.js +4 -6
- package/lib/model/node/DiamondNodeModel.js.map +1 -1
- package/lib/model/node/EllipseNodeModel.d.ts +5 -4
- package/lib/model/node/EllipseNodeModel.js +4 -6
- package/lib/model/node/EllipseNodeModel.js.map +1 -1
- package/lib/model/node/HtmlNodeModel.d.ts +4 -5
- package/lib/model/node/HtmlNodeModel.js +2 -12
- package/lib/model/node/HtmlNodeModel.js.map +1 -1
- package/lib/model/node/PolygonNodeModel.d.ts +5 -4
- package/lib/model/node/PolygonNodeModel.js +4 -7
- package/lib/model/node/PolygonNodeModel.js.map +1 -1
- package/lib/model/node/RectNodeModel.d.ts +7 -5
- package/lib/model/node/RectNodeModel.js +10 -7
- package/lib/model/node/RectNodeModel.js.map +1 -1
- package/lib/model/node/TextNodeModel.d.ts +17 -9
- package/lib/model/node/TextNodeModel.js +2 -1
- package/lib/model/node/TextNodeModel.js.map +1 -1
- package/lib/options.d.ts +11 -14
- package/lib/options.js +3 -42
- package/lib/options.js.map +1 -1
- package/lib/tool/MultipleSelectTool.d.ts +1 -1
- package/lib/tool/MultipleSelectTool.js +5 -5
- package/lib/tool/MultipleSelectTool.js.map +1 -1
- package/lib/tool/TextEditTool.d.ts +3 -3
- package/lib/tool/TextEditTool.js +4 -4
- package/lib/tool/TextEditTool.js.map +1 -1
- package/lib/tool/index.d.ts +24 -2
- package/lib/tool/index.js +85 -15
- package/lib/tool/index.js.map +1 -1
- package/lib/util/drag.d.ts +5 -5
- package/lib/util/drag.js +3 -1
- package/lib/util/drag.js.map +1 -1
- package/lib/util/edge.d.ts +9 -2
- package/lib/util/edge.js +27 -15
- package/lib/util/edge.js.map +1 -1
- package/lib/util/index.d.ts +1 -0
- package/lib/util/index.js +1 -0
- package/lib/util/index.js.map +1 -1
- package/lib/util/node.d.ts +8 -7
- package/lib/util/node.js +28 -9
- package/lib/util/node.js.map +1 -1
- package/lib/util/resize.d.ts +32 -0
- package/lib/util/resize.js +204 -0
- package/lib/util/resize.js.map +1 -0
- package/lib/view/Anchor.d.ts +6 -7
- package/lib/view/Anchor.js +5 -2
- package/lib/view/Anchor.js.map +1 -1
- package/lib/view/Control.d.ts +1 -1
- package/lib/view/Control.js +87 -38
- package/lib/view/Control.js.map +1 -1
- package/lib/view/Graph.d.ts +5 -1
- package/lib/view/Graph.js +44 -4
- package/lib/view/Graph.js.map +1 -1
- package/lib/view/Rotate.js +2 -1
- package/lib/view/Rotate.js.map +1 -1
- package/lib/view/behavior/index.d.ts +2 -0
- package/lib/view/behavior/index.js +19 -0
- package/lib/view/behavior/index.js.map +1 -0
- package/lib/view/behavior/snapline.d.ts +3 -0
- package/lib/{tool → view/behavior}/snapline.js +0 -1
- package/lib/view/behavior/snapline.js.map +1 -0
- package/lib/view/edge/AdjustPoint.js +11 -22
- package/lib/view/edge/AdjustPoint.js.map +1 -1
- package/lib/view/edge/BaseEdge.d.ts +2 -2
- package/lib/view/edge/BaseEdge.js +29 -21
- package/lib/view/edge/BaseEdge.js.map +1 -1
- package/lib/view/node/BaseNode.d.ts +4 -4
- package/lib/view/node/BaseNode.js +32 -23
- package/lib/view/node/BaseNode.js.map +1 -1
- package/lib/view/node/CircleNode.d.ts +1 -1
- package/lib/view/node/CircleNode.js.map +1 -1
- package/lib/view/node/DiamondNode.d.ts +1 -1
- package/lib/view/node/DiamondNode.js.map +1 -1
- package/lib/view/node/EllipseNode.d.ts +1 -1
- package/lib/view/node/EllipseNode.js.map +1 -1
- package/lib/view/node/HtmlNode.d.ts +1 -1
- package/lib/view/node/HtmlNode.js +2 -2
- package/lib/view/node/HtmlNode.js.map +1 -1
- package/lib/view/node/PolygonNode.d.ts +1 -1
- package/lib/view/node/PolygonNode.js.map +1 -1
- package/lib/view/node/RectNode.d.ts +1 -1
- package/lib/view/node/RectNode.js.map +1 -1
- package/lib/view/node/TextNode.d.ts +1 -1
- package/lib/view/node/TextNode.js +1 -1
- package/lib/view/node/TextNode.js.map +1 -1
- package/lib/view/overlay/CanvasOverlay.js +5 -4
- package/lib/view/overlay/CanvasOverlay.js.map +1 -1
- package/lib/view/overlay/Grid.d.ts +35 -20
- package/lib/view/overlay/Grid.js +35 -26
- package/lib/view/overlay/Grid.js.map +1 -1
- package/lib/view/overlay/ToolOverlay.d.ts +1 -1
- package/lib/view/overlay/ToolOverlay.js +1 -1
- package/lib/view/overlay/ToolOverlay.js.map +1 -1
- package/lib/view/shape/Circle.d.ts +9 -1
- package/lib/view/shape/Circle.js +5 -5
- package/lib/view/shape/Circle.js.map +1 -1
- package/lib/view/shape/Ellipse.d.ts +10 -1
- package/lib/view/shape/Ellipse.js +5 -5
- package/lib/view/shape/Ellipse.js.map +1 -1
- package/lib/view/shape/Line.d.ts +14 -1
- package/lib/view/shape/Line.js +5 -7
- package/lib/view/shape/Line.js.map +1 -1
- package/lib/view/shape/Path.d.ts +3 -2
- package/lib/view/shape/Path.js +3 -3
- package/lib/view/shape/Path.js.map +1 -1
- package/lib/view/shape/Polygon.d.ts +5 -3
- package/lib/view/shape/Polygon.js +6 -6
- package/lib/view/shape/Polygon.js.map +1 -1
- package/lib/view/shape/Polyline.d.ts +7 -1
- package/lib/view/shape/Polyline.js +8 -6
- package/lib/view/shape/Polyline.js.map +1 -1
- package/lib/view/shape/Rect.d.ts +11 -13
- package/lib/view/shape/Rect.js +6 -9
- package/lib/view/shape/Rect.js.map +1 -1
- package/lib/view/shape/Text.d.ts +19 -1
- package/lib/view/shape/Text.js +29 -21
- package/lib/view/shape/Text.js.map +1 -1
- package/lib/view/text/BaseText.d.ts +12 -15
- package/lib/view/text/BaseText.js +46 -29
- package/lib/view/text/BaseText.js.map +1 -1
- package/lib/view/text/LineText.d.ts +19 -7
- package/lib/view/text/LineText.js +62 -57
- package/lib/view/text/LineText.js.map +1 -1
- package/package.json +5 -4
- package/src/LogicFlow.tsx +163 -79
- package/src/algorithm/edge.ts +1 -0
- package/src/algorithm/index.ts +2 -0
- package/src/algorithm/outline.ts +2 -2
- package/src/common/drag.ts +219 -0
- package/src/common/history.ts +108 -0
- package/src/common/index.ts +6 -0
- package/src/common/keyboard.ts +108 -0
- package/src/common/matrix.ts +122 -0
- package/src/common/vector.ts +93 -0
- package/src/constant/index.ts +43 -1
- package/src/event/eventArgs.ts +173 -34
- package/src/event/eventEmitter.ts +2 -3
- package/src/index.ts +6 -1
- package/src/keyboard/index.ts +2 -0
- package/src/keyboard/shortcut.ts +79 -8
- package/src/model/BaseModel.ts +18 -7
- package/src/model/EditConfigModel.ts +209 -97
- package/src/model/GraphModel.ts +64 -9
- package/src/model/TransformModel.ts +1 -1
- package/src/model/edge/BaseEdgeModel.ts +105 -42
- package/src/model/edge/BezierEdgeModel.ts +7 -6
- package/src/model/edge/LineEdgeModel.ts +2 -0
- package/src/model/edge/PolylineEdgeModel.ts +24 -18
- package/src/model/node/BaseNodeModel.ts +72 -47
- package/src/model/node/CircleNodeModel.ts +8 -7
- package/src/model/node/DiamondNodeModel.ts +9 -6
- package/src/model/node/EllipseNodeModel.ts +9 -6
- package/src/model/node/HtmlNodeModel.ts +8 -7
- package/src/model/node/PolygonNodeModel.ts +9 -7
- package/src/model/node/RectNodeModel.ts +16 -8
- package/src/model/node/TextNodeModel.ts +14 -1
- package/src/options.ts +18 -53
- package/src/tool/MultipleSelectTool.tsx +6 -6
- package/src/tool/TextEditTool.tsx +3 -3
- package/src/tool/index.ts +96 -2
- package/src/util/drag.ts +22 -6
- package/src/util/edge.ts +39 -13
- package/src/util/index.ts +1 -0
- package/src/util/node.ts +36 -13
- package/src/util/resize.ts +286 -0
- package/src/view/Anchor.tsx +7 -5
- package/src/view/Control.tsx +93 -62
- package/src/view/Graph.tsx +23 -6
- package/src/view/Rotate.tsx +2 -1
- package/src/view/behavior/index.ts +2 -0
- package/src/{tool → view/behavior}/snapline.ts +3 -4
- package/src/view/edge/AdjustPoint.tsx +35 -49
- package/src/view/edge/BaseEdge.tsx +65 -45
- package/src/view/node/BaseNode.tsx +55 -28
- package/src/view/node/CircleNode.tsx +3 -1
- package/src/view/node/DiamondNode.tsx +3 -1
- package/src/view/node/EllipseNode.tsx +3 -1
- package/src/view/node/HtmlNode.tsx +5 -3
- package/src/view/node/PolygonNode.tsx +3 -1
- package/src/view/node/RectNode.tsx +3 -1
- package/src/view/node/TextNode.tsx +4 -2
- package/src/view/overlay/CanvasOverlay.tsx +5 -4
- package/src/view/overlay/Grid.tsx +75 -53
- package/src/view/overlay/ToolOverlay.tsx +1 -1
- package/src/view/shape/Circle.tsx +21 -7
- package/src/view/shape/Ellipse.tsx +20 -6
- package/src/view/shape/Line.tsx +24 -9
- package/src/view/shape/Path.tsx +9 -6
- package/src/view/shape/Polygon.tsx +13 -10
- package/src/view/shape/Polyline.tsx +20 -8
- package/src/view/shape/Rect.tsx +19 -19
- package/src/view/shape/Text.tsx +64 -33
- package/src/view/text/BaseText.tsx +76 -42
- package/src/view/text/LineText.tsx +94 -80
- package/tsconfig.json +1 -1
- package/dist/index.js +0 -26
- package/dist/index.js.map +0 -1
- package/es/tool/snapline.d.ts +0 -3
- package/es/tool/snapline.js.map +0 -1
- package/es/tool/tool.d.ts +0 -22
- package/es/tool/tool.js +0 -43
- package/es/tool/tool.js.map +0 -1
- package/lib/tool/snapline.d.ts +0 -3
- package/lib/tool/snapline.js.map +0 -1
- package/lib/tool/tool.d.ts +0 -22
- package/lib/tool/tool.js +0 -49
- package/lib/tool/tool.js.map +0 -1
- package/src/tool/tool.ts +0 -66
|
@@ -1,19 +1,20 @@
|
|
|
1
|
-
import { assign, pick } from 'lodash-es'
|
|
2
|
-
import { observable, action } from '
|
|
1
|
+
import { assign, isBoolean, isUndefined, pick } from 'lodash-es'
|
|
2
|
+
import { observable, action } from 'mobx'
|
|
3
|
+
import { TextMode } from '../constant'
|
|
3
4
|
|
|
4
|
-
export interface
|
|
5
|
+
export interface IEditConfigType {
|
|
5
6
|
/**
|
|
6
7
|
* 是否为静默模式
|
|
7
8
|
*/
|
|
8
|
-
isSilentMode
|
|
9
|
+
isSilentMode: boolean
|
|
9
10
|
/**
|
|
10
11
|
* 禁止缩放画布
|
|
11
12
|
*/
|
|
12
|
-
stopZoomGraph
|
|
13
|
+
stopZoomGraph: boolean
|
|
13
14
|
/**
|
|
14
15
|
* 禁止鼠标滚动移动画布
|
|
15
16
|
*/
|
|
16
|
-
stopScrollGraph
|
|
17
|
+
stopScrollGraph: boolean
|
|
17
18
|
/**
|
|
18
19
|
* 禁止拖动画布,默认为false
|
|
19
20
|
* - true:完全禁止移动
|
|
@@ -21,7 +22,7 @@ export interface EditConfigInterface {
|
|
|
21
22
|
* - horizontal:禁止水平方向拖动
|
|
22
23
|
* - [number, number, number, number]:[minX, minY, maxX, maxY] 画布可拖动范围
|
|
23
24
|
*/
|
|
24
|
-
stopMoveGraph
|
|
25
|
+
stopMoveGraph:
|
|
25
26
|
| boolean
|
|
26
27
|
| 'vertical'
|
|
27
28
|
| 'horizontal'
|
|
@@ -29,70 +30,109 @@ export interface EditConfigInterface {
|
|
|
29
30
|
/**
|
|
30
31
|
* 允许调整边
|
|
31
32
|
*/
|
|
32
|
-
adjustEdge
|
|
33
|
+
adjustEdge: boolean
|
|
34
|
+
/**
|
|
35
|
+
* 允许调整边的中间点
|
|
36
|
+
*/
|
|
37
|
+
adjustEdgeMiddle: boolean
|
|
33
38
|
/**
|
|
34
39
|
* 允许调整边起点和终点
|
|
35
40
|
*/
|
|
36
|
-
adjustEdgeStartAndEnd
|
|
41
|
+
adjustEdgeStartAndEnd: boolean
|
|
42
|
+
/**
|
|
43
|
+
* 允许调整边起点
|
|
44
|
+
*/
|
|
45
|
+
adjustEdgeStart: boolean
|
|
46
|
+
/**
|
|
47
|
+
* 允许调整边的终点
|
|
48
|
+
*/
|
|
49
|
+
adjustEdgeEnd: boolean
|
|
37
50
|
/**
|
|
38
51
|
* 允许拖动节点
|
|
39
52
|
*/
|
|
40
|
-
adjustNodePosition
|
|
53
|
+
adjustNodePosition: boolean
|
|
41
54
|
/**
|
|
42
55
|
* 隐藏节点所有锚点
|
|
43
56
|
*/
|
|
44
|
-
hideAnchors
|
|
57
|
+
hideAnchors: boolean
|
|
45
58
|
/**
|
|
46
59
|
* 是否允许节点旋转(旋转点的显隐)
|
|
47
60
|
*/
|
|
48
|
-
allowRotate
|
|
61
|
+
allowRotate: boolean
|
|
49
62
|
/**
|
|
50
63
|
* 是否允许节点缩放(缩放调整点的显隐)
|
|
51
64
|
*/
|
|
52
|
-
allowResize
|
|
65
|
+
allowResize: boolean
|
|
66
|
+
/**
|
|
67
|
+
* 是否自动展开
|
|
68
|
+
*/
|
|
69
|
+
autoExpand: boolean
|
|
53
70
|
/**
|
|
54
71
|
* 显示节点悬浮时的外框
|
|
55
72
|
*/
|
|
56
|
-
hoverOutline
|
|
73
|
+
hoverOutline: boolean
|
|
57
74
|
/**
|
|
58
75
|
* 节点被选中时是否显示outline
|
|
59
76
|
*/
|
|
60
|
-
nodeSelectedOutline
|
|
77
|
+
nodeSelectedOutline: boolean
|
|
61
78
|
/**
|
|
62
79
|
* 边被选中时是否显示outline
|
|
63
80
|
*/
|
|
64
|
-
edgeSelectedOutline
|
|
81
|
+
edgeSelectedOutline: boolean
|
|
82
|
+
/**
|
|
83
|
+
* 允许文本可编辑
|
|
84
|
+
*/
|
|
85
|
+
textEdit: boolean
|
|
65
86
|
/**
|
|
66
87
|
* 允许节点文本可以编辑
|
|
67
88
|
*/
|
|
68
|
-
nodeTextEdit
|
|
89
|
+
nodeTextEdit: boolean
|
|
69
90
|
/**
|
|
70
91
|
* 允许边文本可以编辑
|
|
71
92
|
*/
|
|
72
|
-
edgeTextEdit
|
|
93
|
+
edgeTextEdit: boolean
|
|
73
94
|
/**
|
|
74
|
-
*
|
|
95
|
+
* 允许文本可拖拽(文本包括Text、Label)
|
|
75
96
|
*/
|
|
76
|
-
|
|
97
|
+
textDraggable: boolean
|
|
77
98
|
/**
|
|
78
99
|
* 允许节点文本可以拖拽
|
|
79
100
|
*/
|
|
80
|
-
nodeTextDraggable
|
|
101
|
+
nodeTextDraggable: boolean
|
|
81
102
|
/**
|
|
82
103
|
* 允许边文本可以拖拽
|
|
83
104
|
*/
|
|
84
|
-
edgeTextDraggable
|
|
105
|
+
edgeTextDraggable: boolean
|
|
85
106
|
/**
|
|
86
107
|
* 多选按键, 支持meta(cmd)、shift、alt
|
|
87
108
|
* 不支持ctrl,ctrl会触发contextmenu
|
|
88
109
|
*/
|
|
89
|
-
multipleSelectKey
|
|
110
|
+
multipleSelectKey: string
|
|
111
|
+
|
|
112
|
+
/**
|
|
113
|
+
* 2.0.0 新增配置,启用 Label 后生效
|
|
114
|
+
* 是否支持多文本,文本文字是否垂直展示
|
|
115
|
+
* 当前文本类型
|
|
116
|
+
*/
|
|
117
|
+
nodeTextMultiple: boolean
|
|
118
|
+
edgeTextMultiple: boolean
|
|
119
|
+
nodeTextVertical: boolean
|
|
120
|
+
edgeTextVertical: boolean
|
|
121
|
+
textMode: TextMode
|
|
122
|
+
// 节点文本类型
|
|
123
|
+
nodeTextMode: TextMode
|
|
124
|
+
// 边文本类型
|
|
125
|
+
edgeTextMode: TextMode
|
|
90
126
|
}
|
|
91
127
|
|
|
92
|
-
|
|
128
|
+
export type IConfigKeys = keyof IEditConfigType
|
|
129
|
+
|
|
130
|
+
const silentModeConfig = {
|
|
131
|
+
// SilentMode 下允许用户操作画布
|
|
93
132
|
stopZoomGraph: false,
|
|
94
133
|
stopScrollGraph: false,
|
|
95
134
|
stopMoveGraph: false,
|
|
135
|
+
// 节点 & 边相关配置
|
|
96
136
|
adjustEdge: false,
|
|
97
137
|
adjustEdgeStartAndEnd: false,
|
|
98
138
|
adjustNodePosition: false,
|
|
@@ -100,115 +140,187 @@ const SilentConfig = {
|
|
|
100
140
|
allowRotate: false,
|
|
101
141
|
allowResize: false,
|
|
102
142
|
nodeSelectedOutline: true,
|
|
143
|
+
// 文本相关配置
|
|
144
|
+
textEdit: false,
|
|
103
145
|
nodeTextEdit: false,
|
|
104
146
|
edgeTextEdit: false,
|
|
147
|
+
textDraggable: false,
|
|
105
148
|
nodeTextDraggable: false,
|
|
106
149
|
edgeTextDraggable: false,
|
|
107
150
|
}
|
|
108
151
|
|
|
109
|
-
const
|
|
110
|
-
'isSilentMode',
|
|
111
|
-
'stopZoomGraph',
|
|
112
|
-
'stopScrollGraph',
|
|
113
|
-
'stopMoveGraph',
|
|
114
|
-
'adjustEdge',
|
|
115
|
-
'adjustEdgeMiddle',
|
|
116
|
-
'adjustEdgeStartAndEnd',
|
|
117
|
-
'
|
|
118
|
-
'
|
|
119
|
-
'
|
|
120
|
-
'
|
|
121
|
-
'
|
|
122
|
-
'
|
|
123
|
-
'
|
|
124
|
-
'
|
|
125
|
-
'
|
|
126
|
-
'
|
|
127
|
-
'
|
|
128
|
-
'
|
|
129
|
-
'
|
|
130
|
-
|
|
152
|
+
const allKeys = [
|
|
153
|
+
'isSilentMode', // 是否为静默模式
|
|
154
|
+
'stopZoomGraph', // 禁止缩放画布
|
|
155
|
+
'stopScrollGraph', // 禁止鼠标滚动移动画布
|
|
156
|
+
'stopMoveGraph', // 禁止拖动画布
|
|
157
|
+
'adjustEdge', // 允许调整边
|
|
158
|
+
'adjustEdgeMiddle', // 允许调整边中点
|
|
159
|
+
'adjustEdgeStartAndEnd', // 允许调整边起点和终点
|
|
160
|
+
'adjustEdgeStart', // 允许调整边起点
|
|
161
|
+
'adjustEdgeEnd', // 允许调整边终点
|
|
162
|
+
'adjustNodePosition', // 允许拖动节点
|
|
163
|
+
'hideAnchors', // 隐藏节点所有锚点
|
|
164
|
+
'allowRotate', // 是否允许节点旋转
|
|
165
|
+
'allowResize', // 是否允许节点缩放
|
|
166
|
+
'autoExpand', // 是否自动展开
|
|
167
|
+
'hoverOutline', // 显示节点悬浮时的外框
|
|
168
|
+
'nodeSelectedOutline', // 节点被选中时是否显示 outline
|
|
169
|
+
'edgeSelectedOutline', // 边被选中时是否显示 outline
|
|
170
|
+
'textEdit', // 是否允许文本可编辑(全局)
|
|
171
|
+
'nodeTextEdit', // 允许节点文本可以编辑
|
|
172
|
+
'edgeTextEdit', // 允许边文本可以编辑
|
|
173
|
+
'textDraggable', // 是否允许文本可拖拽(全局)
|
|
174
|
+
'nodeTextDraggable', // 允许节点文本可以拖拽
|
|
175
|
+
'edgeTextDraggable', // 允许边文本可以拖拽
|
|
176
|
+
'multipleSelectKey', // 多选按键
|
|
177
|
+
|
|
178
|
+
// 2.0.0 新增配置
|
|
179
|
+
'textMode', // 文本模式(全局)
|
|
180
|
+
'nodeTextMode', // 节点文本模式
|
|
181
|
+
'edgeTextMode', // 边文本模式
|
|
182
|
+
'nodeTextMultiple', // 是否支持多个节点文本
|
|
183
|
+
'edgeTextMultiple', // 是否支持多个边文本
|
|
184
|
+
'nodeTextVertical', // 节点文本是否纵向显示
|
|
185
|
+
'edgeTextVertical', // 边文本是否纵向显示
|
|
186
|
+
] as const
|
|
187
|
+
|
|
131
188
|
/**
|
|
132
189
|
* 页面编辑配置
|
|
133
190
|
*/
|
|
134
191
|
export class EditConfigModel {
|
|
192
|
+
stagedConfig?: Partial<IEditConfigType> // 暂存「设置为静默模式之前」的配置,在取消静默模式后恢复
|
|
193
|
+
|
|
194
|
+
/*********************************************************
|
|
195
|
+
* 画布相关配置
|
|
196
|
+
********************************************************/
|
|
135
197
|
@observable isSilentMode = false
|
|
136
198
|
@observable stopZoomGraph = false
|
|
137
|
-
@observable stopScrollGraph = false
|
|
138
199
|
@observable stopMoveGraph = false
|
|
139
|
-
@observable
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
200
|
+
@observable stopScrollGraph = false
|
|
201
|
+
/*********************************************************
|
|
202
|
+
* 文本相关配置(全局)
|
|
203
|
+
********************************************************/
|
|
204
|
+
@observable textMode = TextMode.TEXT // 全局的 textMode 设置
|
|
205
|
+
@observable textEdit = true
|
|
206
|
+
@observable textDraggable = false
|
|
207
|
+
// 节点
|
|
208
|
+
@observable nodeTextEdit = true
|
|
209
|
+
@observable nodeTextDraggable = false
|
|
210
|
+
@observable nodeTextMultiple = false // 是否支持多个节点文本
|
|
211
|
+
@observable nodeTextVertical = false // 节点文本朝向是否是纵向
|
|
212
|
+
@observable nodeTextMode = TextMode.TEXT // 节点文本模式
|
|
213
|
+
// 边
|
|
214
|
+
@observable edgeTextMode = TextMode.TEXT // 边文本模式
|
|
215
|
+
@observable edgeTextEdit = true
|
|
216
|
+
@observable edgeTextDraggable = false
|
|
217
|
+
@observable edgeTextMultiple = false // 是否支持多个边文本
|
|
218
|
+
@observable edgeTextVertical = false // 边文本朝向是否是纵向
|
|
219
|
+
/*********************************************************
|
|
220
|
+
* 节点相关配置
|
|
221
|
+
********************************************************/
|
|
143
222
|
@observable hideAnchors = false
|
|
144
223
|
@observable allowRotate = false
|
|
145
224
|
@observable allowResize = false
|
|
146
225
|
@observable hoverOutline = true
|
|
147
226
|
@observable nodeSelectedOutline = true
|
|
148
|
-
@observable
|
|
149
|
-
@observable nodeTextEdit = true
|
|
150
|
-
@observable edgeTextEdit = true
|
|
151
|
-
@observable nodeTextDraggable = false
|
|
152
|
-
@observable edgeTextDraggable = false
|
|
227
|
+
@observable adjustNodePosition = true
|
|
153
228
|
@observable autoExpand = false
|
|
229
|
+
/*********************************************************
|
|
230
|
+
* 边相关配置
|
|
231
|
+
********************************************************/
|
|
232
|
+
@observable adjustEdge = true
|
|
233
|
+
@observable adjustEdgeMiddle = false
|
|
234
|
+
@observable adjustEdgeStartAndEnd = false
|
|
235
|
+
@observable adjustEdgeStart = false
|
|
236
|
+
@observable adjustEdgeEnd = false
|
|
237
|
+
@observable edgeSelectedOutline = true
|
|
238
|
+
/*********************************************************
|
|
239
|
+
* 其他
|
|
240
|
+
********************************************************/
|
|
154
241
|
multipleSelectKey = ''
|
|
155
|
-
|
|
156
|
-
constructor(config:
|
|
157
|
-
assign(this, this.
|
|
242
|
+
|
|
243
|
+
constructor(config: Partial<IEditConfigType>) {
|
|
244
|
+
assign(this, this.computeConfig(config))
|
|
158
245
|
}
|
|
246
|
+
|
|
159
247
|
@action
|
|
160
|
-
updateEditConfig(config) {
|
|
161
|
-
const newConfig = this.
|
|
248
|
+
updateEditConfig(config: Partial<IEditConfigType>) {
|
|
249
|
+
const newConfig = this.computeConfig(config)
|
|
162
250
|
assign(this, newConfig)
|
|
163
251
|
}
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
252
|
+
|
|
253
|
+
// TODO: 确认一下这个函数的逻辑,是否会有误合并的问题
|
|
254
|
+
computeConfig(config: Partial<IEditConfigType>) {
|
|
255
|
+
const {
|
|
256
|
+
isSilentMode,
|
|
257
|
+
textDraggable,
|
|
258
|
+
textMode,
|
|
259
|
+
textEdit,
|
|
260
|
+
adjustEdgeStartAndEnd,
|
|
261
|
+
} = config
|
|
262
|
+
const conf: Partial<IEditConfigType> = {}
|
|
263
|
+
|
|
264
|
+
// false 表示从静默模式恢复
|
|
168
265
|
if (isSilentMode === false) {
|
|
169
|
-
assign(conf, this.
|
|
266
|
+
assign(conf, this.stagedConfig)
|
|
170
267
|
}
|
|
171
|
-
|
|
268
|
+
|
|
269
|
+
// 如果不传,默认 undefined 表示非静默模式
|
|
172
270
|
if (isSilentMode === true && isSilentMode !== this.isSilentMode) {
|
|
173
271
|
// https://github.com/didi/LogicFlow/issues/1180
|
|
174
|
-
// 如果重复调用isSilentMode=true多次,会导致this.
|
|
175
|
-
// 因此需要阻止重复赋值为true,使用config.isSilentMode !== this.isSilentMode
|
|
176
|
-
const silentConfig = pick(
|
|
177
|
-
//
|
|
178
|
-
this.
|
|
179
|
-
|
|
180
|
-
stopScrollGraph: this.stopScrollGraph,
|
|
181
|
-
stopMoveGraph: this.stopMoveGraph,
|
|
182
|
-
adjustEdge: this.adjustEdge,
|
|
183
|
-
adjustEdgeMiddle: this.adjustEdgeMiddle,
|
|
184
|
-
adjustEdgeStartAndEnd: this.adjustEdgeStartAndEnd,
|
|
185
|
-
adjustNodePosition: this.adjustNodePosition,
|
|
186
|
-
hideAnchors: this.hideAnchors,
|
|
187
|
-
allowRotate: this.allowRotate,
|
|
188
|
-
allowResize: this.allowResize,
|
|
189
|
-
hoverOutline: this.hoverOutline,
|
|
190
|
-
nodeSelectedOutline: this.nodeSelectedOutline,
|
|
191
|
-
edgeSelectedOutline: this.edgeSelectedOutline,
|
|
192
|
-
nodeTextEdit: this.nodeTextEdit,
|
|
193
|
-
edgeTextEdit: this.edgeTextEdit,
|
|
194
|
-
nodeTextDraggable: this.nodeTextDraggable,
|
|
195
|
-
edgeTextDraggable: this.edgeTextDraggable,
|
|
196
|
-
autoExpand: this.autoExpand,
|
|
197
|
-
}
|
|
272
|
+
// 如果重复调用 isSilentMode=true 多次,会导致 this.stagedConfig 状态保存错误:保存为修改之后的 Config
|
|
273
|
+
// 因此需要阻止重复赋值为 true,使用 config.isSilentMode !== this.isSilentMode
|
|
274
|
+
const silentConfig = pick(silentModeConfig, allKeys)
|
|
275
|
+
// 暂存修改之前的所有配置项
|
|
276
|
+
this.stagedConfig = pick(this, allKeys)
|
|
277
|
+
|
|
198
278
|
assign(conf, silentConfig)
|
|
199
279
|
}
|
|
280
|
+
|
|
200
281
|
// 如果不传,默认undefined表示允许文本编辑
|
|
201
|
-
if (textEdit
|
|
282
|
+
if (!isUndefined(textEdit)) {
|
|
283
|
+
assign(conf, {
|
|
284
|
+
nodeTextEdit: textEdit,
|
|
285
|
+
edgeTextEdit: textEdit,
|
|
286
|
+
})
|
|
287
|
+
}
|
|
288
|
+
|
|
289
|
+
if (!isUndefined(textDraggable)) {
|
|
290
|
+
assign(conf, {
|
|
291
|
+
nodeTextDraggable: textDraggable,
|
|
292
|
+
edgeTextDraggable: textDraggable,
|
|
293
|
+
})
|
|
294
|
+
}
|
|
295
|
+
|
|
296
|
+
if (textMode) {
|
|
202
297
|
assign(conf, {
|
|
203
|
-
|
|
204
|
-
|
|
298
|
+
nodeTextMode: textMode,
|
|
299
|
+
edgeTextMode: textMode,
|
|
205
300
|
})
|
|
206
301
|
}
|
|
207
|
-
|
|
302
|
+
|
|
303
|
+
if (isBoolean(adjustEdgeStartAndEnd)) {
|
|
304
|
+
assign(conf, {
|
|
305
|
+
adjustEdgeStart: adjustEdgeStartAndEnd,
|
|
306
|
+
adjustEdgeEnd: adjustEdgeStartAndEnd,
|
|
307
|
+
})
|
|
308
|
+
}
|
|
309
|
+
|
|
310
|
+
const userConfig = pick(config, allKeys)
|
|
208
311
|
return assign(conf, userConfig)
|
|
209
312
|
}
|
|
210
|
-
|
|
211
|
-
|
|
313
|
+
|
|
314
|
+
@action
|
|
315
|
+
updateTextMode(textMode: TextMode) {
|
|
316
|
+
// 如果更新全局 textMode,同时更新节点和边的 textMode
|
|
317
|
+
this.textMode = textMode
|
|
318
|
+
this.edgeTextMode = textMode
|
|
319
|
+
this.nodeTextMode = textMode
|
|
320
|
+
}
|
|
321
|
+
|
|
322
|
+
getConfig(): IEditConfigType {
|
|
323
|
+
return pick(this, allKeys)
|
|
212
324
|
}
|
|
213
325
|
}
|
|
214
326
|
|
package/src/model/GraphModel.ts
CHANGED
|
@@ -16,6 +16,7 @@ import {
|
|
|
16
16
|
EventType,
|
|
17
17
|
ModelType,
|
|
18
18
|
OverlapMode,
|
|
19
|
+
TextMode,
|
|
19
20
|
} from '../constant'
|
|
20
21
|
import LogicFlow from '../LogicFlow'
|
|
21
22
|
import { Options as LFOptions } from '../options'
|
|
@@ -35,7 +36,6 @@ import {
|
|
|
35
36
|
updateTheme,
|
|
36
37
|
} from '../util'
|
|
37
38
|
import EventEmitter from '../event/eventEmitter'
|
|
38
|
-
|
|
39
39
|
import Position = LogicFlow.Position
|
|
40
40
|
import PointTuple = LogicFlow.PointTuple
|
|
41
41
|
import GraphData = LogicFlow.GraphData
|
|
@@ -420,8 +420,11 @@ export class GraphModel {
|
|
|
420
420
|
this.nodes = []
|
|
421
421
|
}
|
|
422
422
|
if (graphData.edges) {
|
|
423
|
+
const currEdgeType = this.edgeType
|
|
423
424
|
this.edges = map(graphData.edges, (edge) => {
|
|
424
|
-
const Model = this.getModel(
|
|
425
|
+
const Model = this.getModel(
|
|
426
|
+
edge.type ?? currEdgeType,
|
|
427
|
+
) as BaseEdgeModelCtor
|
|
425
428
|
if (!Model) {
|
|
426
429
|
throw new Error(`找不到${edge.type}对应的边。`)
|
|
427
430
|
}
|
|
@@ -620,6 +623,40 @@ export class GraphModel {
|
|
|
620
623
|
return newId
|
|
621
624
|
}
|
|
622
625
|
|
|
626
|
+
/**
|
|
627
|
+
* 获取元素的文本模式
|
|
628
|
+
* @param model
|
|
629
|
+
*/
|
|
630
|
+
getTextModel(model: BaseNodeModel): TextMode | undefined {
|
|
631
|
+
const { textMode, nodeTextMode, edgeTextMode } = this.editConfigModel
|
|
632
|
+
|
|
633
|
+
// textMode 的优先级:
|
|
634
|
+
// 元素自身 model.textMode > editConfigModel.node(edge)TextMode > editConfigModel.textMode
|
|
635
|
+
if (model.BaseType === ElementType.NODE) {
|
|
636
|
+
return model.textMode || nodeTextMode || textMode || TextMode.TEXT
|
|
637
|
+
}
|
|
638
|
+
|
|
639
|
+
// 同上
|
|
640
|
+
if (model.BaseType === ElementType.EDGE) {
|
|
641
|
+
return model.textMode || edgeTextMode || textMode || TextMode.TEXT
|
|
642
|
+
}
|
|
643
|
+
}
|
|
644
|
+
|
|
645
|
+
/**
|
|
646
|
+
* 更新元素的文本模式
|
|
647
|
+
* @param mode
|
|
648
|
+
* @param model
|
|
649
|
+
*/
|
|
650
|
+
@action
|
|
651
|
+
setTextMode(mode: TextMode, model?: BaseNodeModel | BaseEdgeModel) {
|
|
652
|
+
// 如果有传入 model,则直接更新 model 的 textMode
|
|
653
|
+
if (model) {
|
|
654
|
+
// model.updateTextMode(mode)
|
|
655
|
+
}
|
|
656
|
+
// 调用 editConfigModel 的方法更新 textMode
|
|
657
|
+
this.editConfigModel.updateEditConfig({ textMode: mode })
|
|
658
|
+
}
|
|
659
|
+
|
|
623
660
|
/**
|
|
624
661
|
* 内部保留方法,请勿直接使用
|
|
625
662
|
*/
|
|
@@ -752,7 +789,7 @@ export class GraphModel {
|
|
|
752
789
|
if (nodeX && nodeY) {
|
|
753
790
|
node.x = snapToGrid(nodeX, this.gridSize)
|
|
754
791
|
node.y = snapToGrid(nodeY, this.gridSize)
|
|
755
|
-
if (typeof node.text === 'object') {
|
|
792
|
+
if (typeof node.text === 'object' && node.text !== null) {
|
|
756
793
|
// 原来的处理是:node.text.x -= getGridOffset(nodeX, this.gridSize)
|
|
757
794
|
// 由于snapToGrid()使用了Math.round()四舍五入的做法,因此无法判断需要执行
|
|
758
795
|
// node.text.x = node.text.x + getGridOffset()
|
|
@@ -778,7 +815,7 @@ export class GraphModel {
|
|
|
778
815
|
data.x += 30
|
|
779
816
|
data.y += 30
|
|
780
817
|
data.id = ''
|
|
781
|
-
if (data.text) {
|
|
818
|
+
if (typeof data.text === 'object' && data.text !== null) {
|
|
782
819
|
data.text.x += 30
|
|
783
820
|
data.text.y += 30
|
|
784
821
|
}
|
|
@@ -921,7 +958,9 @@ export class GraphModel {
|
|
|
921
958
|
// 如果是自定义边文本位置,则移动节点的时候重新计算其位置
|
|
922
959
|
if (edgeModel.customTextPosition) {
|
|
923
960
|
edgeModel.resetTextPosition()
|
|
924
|
-
|
|
961
|
+
return
|
|
962
|
+
}
|
|
963
|
+
if (
|
|
925
964
|
edgeModel.modelType === ModelType.POLYLINE_EDGE &&
|
|
926
965
|
edgeModel.text?.value
|
|
927
966
|
) {
|
|
@@ -931,10 +970,9 @@ export class GraphModel {
|
|
|
931
970
|
newPoint.x - textPosition.x,
|
|
932
971
|
newPoint.y - textPosition.y,
|
|
933
972
|
)
|
|
934
|
-
} else {
|
|
935
|
-
const { x: x1, y: y1 } = edgeModel.textPosition
|
|
936
|
-
edgeModel.moveText(x1 - x, y1 - y)
|
|
937
973
|
}
|
|
974
|
+
const { x: x1, y: y1 } = edgeModel.textPosition
|
|
975
|
+
edgeModel.moveText(x1 - x, y1 - y)
|
|
938
976
|
}
|
|
939
977
|
|
|
940
978
|
/**
|
|
@@ -1326,7 +1364,7 @@ export class GraphModel {
|
|
|
1326
1364
|
}
|
|
1327
1365
|
|
|
1328
1366
|
/**
|
|
1329
|
-
*
|
|
1367
|
+
* 获取节点所有的下一级节点
|
|
1330
1368
|
*/
|
|
1331
1369
|
@action getNodeOutgoingNode(nodeId?: string) {
|
|
1332
1370
|
const nodes: BaseNodeModel[] = []
|
|
@@ -1484,6 +1522,23 @@ export class GraphModel {
|
|
|
1484
1522
|
const edgeModel = this.getEdgeModelById(edgeId)
|
|
1485
1523
|
edgeModel?.closeEdgeAnimation()
|
|
1486
1524
|
}
|
|
1525
|
+
|
|
1526
|
+
/**
|
|
1527
|
+
* 获取当前局部渲染模式
|
|
1528
|
+
* @returns boolean
|
|
1529
|
+
*/
|
|
1530
|
+
getPartial(): boolean {
|
|
1531
|
+
return this.partial
|
|
1532
|
+
}
|
|
1533
|
+
|
|
1534
|
+
/**
|
|
1535
|
+
* 设置是否开启局部渲染模式
|
|
1536
|
+
* @param partial boolean
|
|
1537
|
+
* @returns
|
|
1538
|
+
*/
|
|
1539
|
+
@action setPartial(partial: boolean): void {
|
|
1540
|
+
this.partial = partial
|
|
1541
|
+
}
|
|
1487
1542
|
}
|
|
1488
1543
|
|
|
1489
1544
|
export namespace GraphModel {
|
|
@@ -40,7 +40,7 @@ export interface TransformInterface {
|
|
|
40
40
|
|
|
41
41
|
const translateLimitsMap = {
|
|
42
42
|
false: [-Infinity, -Infinity, Infinity, Infinity],
|
|
43
|
-
true: [
|
|
43
|
+
true: [-Infinity, -Infinity, Infinity, Infinity],
|
|
44
44
|
vertical: [-Infinity, 0, Infinity, 0],
|
|
45
45
|
horizontal: [0, -Infinity, 0, Infinity],
|
|
46
46
|
}
|