@logicflow/core 2.0.0-beta.1 → 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 +9 -9
- package/__tests__/bugs/1545-spec.test.ts +19 -15
- package/__tests__/util/edge.test.ts +57 -57
- package/dist/index.min.js +9 -3
- 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 +6 -3
- package/es/options.js +2 -11
- 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 +43 -3
- 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/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 +6 -3
- package/lib/options.js +2 -11
- 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 +42 -2
- 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/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 +2 -1
- 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 +75 -44
- 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 +11 -15
- 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 +21 -4
- 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/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/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,5 +1,5 @@
|
|
|
1
|
-
import { assign, cloneDeep, find } from 'lodash-es'
|
|
2
|
-
import { action, computed, observable, toJS } from 'mobx'
|
|
1
|
+
import { assign, cloneDeep, find, isUndefined } from 'lodash-es'
|
|
2
|
+
import { action, computed, isObservable, observable, toJS } from 'mobx'
|
|
3
3
|
import { BaseNodeModel, GraphModel, Model } from '..'
|
|
4
4
|
import LogicFlow from '../../LogicFlow'
|
|
5
5
|
import {
|
|
@@ -15,17 +15,22 @@ import {
|
|
|
15
15
|
ElementType,
|
|
16
16
|
ModelType,
|
|
17
17
|
OverlapMode,
|
|
18
|
+
TextMode,
|
|
18
19
|
} from '../../constant'
|
|
19
20
|
|
|
20
21
|
import Point = LogicFlow.Point
|
|
21
22
|
import EdgeData = LogicFlow.EdgeData
|
|
22
23
|
import EdgeConfig = LogicFlow.EdgeConfig
|
|
24
|
+
import TextConfig = LogicFlow.TextConfig
|
|
25
|
+
import PropertiesType = LogicFlow.PropertiesType
|
|
23
26
|
|
|
24
|
-
export interface IBaseEdgeModel extends
|
|
27
|
+
export interface IBaseEdgeModel<P extends PropertiesType>
|
|
28
|
+
extends Model.BaseModel<P> {
|
|
25
29
|
/**
|
|
26
30
|
* model 基础类型,固定为 edge
|
|
27
31
|
*/
|
|
28
32
|
readonly BaseType: ElementType.EDGE
|
|
33
|
+
properties: P
|
|
29
34
|
|
|
30
35
|
sourceNodeId: string
|
|
31
36
|
targetNodeId: string
|
|
@@ -44,7 +49,9 @@ export interface IBaseEdgeModel extends Model.BaseModel {
|
|
|
44
49
|
arrowConfig?: LogicFlow.ArrowConfig
|
|
45
50
|
}
|
|
46
51
|
|
|
47
|
-
export class BaseEdgeModel
|
|
52
|
+
export class BaseEdgeModel<P extends PropertiesType = PropertiesType>
|
|
53
|
+
implements IBaseEdgeModel<P>
|
|
54
|
+
{
|
|
48
55
|
readonly BaseType = ElementType.EDGE
|
|
49
56
|
static BaseType: ElementType = ElementType.EDGE
|
|
50
57
|
|
|
@@ -56,14 +63,15 @@ export class BaseEdgeModel implements IBaseEdgeModel {
|
|
|
56
63
|
@observable startPoint!: Point
|
|
57
64
|
@observable endPoint!: Point
|
|
58
65
|
|
|
59
|
-
@observable
|
|
66
|
+
@observable textMode = TextMode.TEXT
|
|
67
|
+
@observable text: Required<TextConfig> = {
|
|
60
68
|
value: '',
|
|
61
69
|
x: 0,
|
|
62
70
|
y: 0,
|
|
63
71
|
draggable: false,
|
|
64
72
|
editable: true,
|
|
65
73
|
}
|
|
66
|
-
@observable properties:
|
|
74
|
+
@observable properties: P
|
|
67
75
|
@observable points = ''
|
|
68
76
|
@observable pointsList: Point[] = []
|
|
69
77
|
|
|
@@ -83,7 +91,6 @@ export class BaseEdgeModel implements IBaseEdgeModel {
|
|
|
83
91
|
graphModel: GraphModel
|
|
84
92
|
@observable zIndex: number = 0
|
|
85
93
|
@observable state = ElementState.DEFAULT
|
|
86
|
-
|
|
87
94
|
modelType = ModelType.EDGE
|
|
88
95
|
additionStateData?: Model.AdditionStateDataType
|
|
89
96
|
|
|
@@ -102,8 +109,10 @@ export class BaseEdgeModel implements IBaseEdgeModel {
|
|
|
102
109
|
};
|
|
103
110
|
[propName: string]: unknown // 支持自定义
|
|
104
111
|
|
|
105
|
-
constructor(data: EdgeConfig
|
|
112
|
+
constructor(data: EdgeConfig<P>, graphModel: GraphModel) {
|
|
106
113
|
this.graphModel = graphModel
|
|
114
|
+
this.properties = data.properties ?? ({} as P)
|
|
115
|
+
|
|
107
116
|
this.initEdgeData(data)
|
|
108
117
|
this.setAttributes()
|
|
109
118
|
}
|
|
@@ -182,7 +191,6 @@ export class BaseEdgeModel implements IBaseEdgeModel {
|
|
|
182
191
|
...this.graphModel.theme.edgeAdjust,
|
|
183
192
|
}
|
|
184
193
|
}
|
|
185
|
-
|
|
186
194
|
/**
|
|
187
195
|
* 自定义边文本样式
|
|
188
196
|
*
|
|
@@ -373,16 +381,23 @@ export class BaseEdgeModel implements IBaseEdgeModel {
|
|
|
373
381
|
* @overridable 支持重写
|
|
374
382
|
*/
|
|
375
383
|
getData(): EdgeData {
|
|
376
|
-
|
|
384
|
+
let { properties } = this
|
|
385
|
+
if (isObservable(properties)) {
|
|
386
|
+
properties = toJS(properties)
|
|
387
|
+
}
|
|
377
388
|
const data: EdgeData = {
|
|
378
389
|
id: this.id,
|
|
379
390
|
type: this.type,
|
|
391
|
+
properties,
|
|
380
392
|
sourceNodeId: this.sourceNode.id,
|
|
381
393
|
targetNodeId: this.targetNode.id,
|
|
382
394
|
startPoint: assign({}, this.startPoint),
|
|
383
395
|
endPoint: assign({}, this.endPoint),
|
|
384
|
-
properties: toJS(this.properties),
|
|
385
396
|
}
|
|
397
|
+
if (this.graphModel.overlapMode === OverlapMode.INCREASE) {
|
|
398
|
+
data.zIndex = this.zIndex
|
|
399
|
+
}
|
|
400
|
+
const { x, y, value } = this.text
|
|
386
401
|
if (value) {
|
|
387
402
|
data.text = {
|
|
388
403
|
x,
|
|
@@ -390,9 +405,6 @@ export class BaseEdgeModel implements IBaseEdgeModel {
|
|
|
390
405
|
value,
|
|
391
406
|
}
|
|
392
407
|
}
|
|
393
|
-
if (this.graphModel.overlapMode === OverlapMode.INCREASE) {
|
|
394
|
-
data.zIndex = this.zIndex
|
|
395
|
-
}
|
|
396
408
|
return data
|
|
397
409
|
}
|
|
398
410
|
|
|
@@ -415,7 +427,12 @@ export class BaseEdgeModel implements IBaseEdgeModel {
|
|
|
415
427
|
*/
|
|
416
428
|
@action
|
|
417
429
|
setProperty(key: string, val: any): void {
|
|
418
|
-
|
|
430
|
+
const preProperties = toJS(this.properties)
|
|
431
|
+
this.properties = {
|
|
432
|
+
...preProperties,
|
|
433
|
+
[key]: formatData(val),
|
|
434
|
+
}
|
|
435
|
+
|
|
419
436
|
this.setAttributes()
|
|
420
437
|
}
|
|
421
438
|
|
|
@@ -431,8 +448,7 @@ export class BaseEdgeModel implements IBaseEdgeModel {
|
|
|
431
448
|
|
|
432
449
|
/**
|
|
433
450
|
* 设置边的属性,会触发重新渲染
|
|
434
|
-
* @param
|
|
435
|
-
* @param val 属性值
|
|
451
|
+
* @param properties 要更新的 properties,会做合并
|
|
436
452
|
*/
|
|
437
453
|
@action
|
|
438
454
|
setProperties(properties: Record<string, any>): void {
|
|
@@ -493,34 +509,51 @@ export class BaseEdgeModel implements IBaseEdgeModel {
|
|
|
493
509
|
}
|
|
494
510
|
}
|
|
495
511
|
|
|
512
|
+
/**
|
|
513
|
+
* 设置当前元素的文本模式
|
|
514
|
+
* @param mode
|
|
515
|
+
*/
|
|
516
|
+
@action setTextMode(mode: TextMode) {
|
|
517
|
+
this.textMode = mode
|
|
518
|
+
}
|
|
519
|
+
|
|
496
520
|
/**
|
|
497
521
|
* 内部方法,处理初始化文本格式
|
|
498
522
|
*/
|
|
499
523
|
@action formatText(data: EdgeConfig) {
|
|
500
|
-
// 暂时处理,只传入text的情况
|
|
501
524
|
const { x, y } = this.textPosition
|
|
502
|
-
|
|
503
|
-
|
|
504
|
-
|
|
505
|
-
|
|
506
|
-
|
|
507
|
-
|
|
508
|
-
|
|
509
|
-
}
|
|
510
|
-
return
|
|
525
|
+
const { text } = data
|
|
526
|
+
let textConfig: Required<TextConfig> = {
|
|
527
|
+
value: '',
|
|
528
|
+
x,
|
|
529
|
+
y,
|
|
530
|
+
draggable: false,
|
|
531
|
+
editable: true,
|
|
511
532
|
}
|
|
512
533
|
|
|
513
|
-
if (
|
|
514
|
-
|
|
515
|
-
|
|
516
|
-
|
|
517
|
-
|
|
518
|
-
|
|
519
|
-
|
|
534
|
+
if (text) {
|
|
535
|
+
if (typeof text === 'string') {
|
|
536
|
+
textConfig = {
|
|
537
|
+
...textConfig,
|
|
538
|
+
value: text,
|
|
539
|
+
}
|
|
540
|
+
} else {
|
|
541
|
+
textConfig = {
|
|
542
|
+
...textConfig,
|
|
543
|
+
x: text.x ?? x,
|
|
544
|
+
y: text.y ?? y,
|
|
545
|
+
value: text.value ?? '',
|
|
546
|
+
}
|
|
547
|
+
if (!isUndefined(text.draggable)) {
|
|
548
|
+
textConfig.draggable = text.draggable
|
|
549
|
+
}
|
|
550
|
+
if (!isUndefined(text.editable)) {
|
|
551
|
+
textConfig.editable = text.editable
|
|
552
|
+
}
|
|
520
553
|
}
|
|
521
554
|
}
|
|
555
|
+
this.text = textConfig
|
|
522
556
|
}
|
|
523
|
-
|
|
524
557
|
/**
|
|
525
558
|
* 重置文本位置
|
|
526
559
|
*/
|
|
@@ -534,15 +567,13 @@ export class BaseEdgeModel implements IBaseEdgeModel {
|
|
|
534
567
|
* 移动边上的文本
|
|
535
568
|
*/
|
|
536
569
|
@action moveText(deltaX: number, deltaY: number): void {
|
|
537
|
-
|
|
538
|
-
|
|
539
|
-
|
|
540
|
-
|
|
541
|
-
|
|
542
|
-
|
|
543
|
-
|
|
544
|
-
editable,
|
|
545
|
-
}
|
|
570
|
+
const { x, y, value, draggable, editable } = this.text
|
|
571
|
+
this.text = {
|
|
572
|
+
value,
|
|
573
|
+
editable,
|
|
574
|
+
draggable,
|
|
575
|
+
x: x + deltaX,
|
|
576
|
+
y: y + deltaY,
|
|
546
577
|
}
|
|
547
578
|
}
|
|
548
579
|
|
|
@@ -1,11 +1,11 @@
|
|
|
1
|
-
import { cloneDeep } from 'lodash-es'
|
|
1
|
+
import { assign, cloneDeep } from 'lodash-es'
|
|
2
2
|
import { action, observable } from 'mobx'
|
|
3
3
|
import BaseEdgeModel from './BaseEdgeModel'
|
|
4
4
|
import { BaseNodeModel } from '../node'
|
|
5
5
|
import LogicFlow from '../../LogicFlow'
|
|
6
|
+
import GraphModel from '../GraphModel'
|
|
6
7
|
import { ModelType } from '../../constant'
|
|
7
8
|
import { getBezierControlPoints, IBezierControls } from '../../util'
|
|
8
|
-
import GraphModel from '../GraphModel'
|
|
9
9
|
|
|
10
10
|
import Point = LogicFlow.Point
|
|
11
11
|
import EdgeConfig = LogicFlow.EdgeConfig
|
|
@@ -15,14 +15,11 @@ export class BezierEdgeModel extends BaseEdgeModel {
|
|
|
15
15
|
|
|
16
16
|
offset!: number
|
|
17
17
|
@observable path = ''
|
|
18
|
-
|
|
19
18
|
constructor(data: EdgeConfig, graphModel: GraphModel) {
|
|
20
19
|
super(data, graphModel)
|
|
21
|
-
|
|
22
20
|
this.initEdgeData(data)
|
|
23
21
|
this.setAttributes()
|
|
24
22
|
}
|
|
25
|
-
|
|
26
23
|
initEdgeData(data: EdgeConfig): void {
|
|
27
24
|
this.offset = 100
|
|
28
25
|
super.initEdgeData(data)
|
|
@@ -30,9 +27,11 @@ export class BezierEdgeModel extends BaseEdgeModel {
|
|
|
30
27
|
getEdgeStyle() {
|
|
31
28
|
const { bezier } = this.graphModel.theme
|
|
32
29
|
const style = super.getEdgeStyle()
|
|
30
|
+
const { style: customStyle = {} } = this.properties
|
|
33
31
|
return {
|
|
34
32
|
...style,
|
|
35
33
|
...cloneDeep(bezier),
|
|
34
|
+
...cloneDeep(customStyle),
|
|
36
35
|
}
|
|
37
36
|
}
|
|
38
37
|
getTextPosition(): Point {
|
|
@@ -155,7 +154,9 @@ export class BezierEdgeModel extends BaseEdgeModel {
|
|
|
155
154
|
this.pointsList[2] = anchor
|
|
156
155
|
}
|
|
157
156
|
this.path = this.getPath(this.pointsList)
|
|
158
|
-
|
|
157
|
+
if (this.text?.value) {
|
|
158
|
+
this.setText(assign({}, this.text, this.textPosition))
|
|
159
|
+
}
|
|
159
160
|
}
|
|
160
161
|
// 获取边调整的起点
|
|
161
162
|
@action
|
|
@@ -10,9 +10,11 @@ export class LineEdgeModel extends BaseEdgeModel {
|
|
|
10
10
|
getEdgeStyle() {
|
|
11
11
|
const { line } = this.graphModel.theme
|
|
12
12
|
const style = super.getEdgeStyle()
|
|
13
|
+
const { style: customStyle = {} } = this.properties
|
|
13
14
|
return {
|
|
14
15
|
...style,
|
|
15
16
|
...cloneDeep(line),
|
|
17
|
+
...cloneDeep(customStyle),
|
|
16
18
|
}
|
|
17
19
|
}
|
|
18
20
|
getTextPosition(): Point {
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { cloneDeep } from 'lodash-es'
|
|
1
|
+
import { assign, cloneDeep } from 'lodash-es'
|
|
2
2
|
import { observable, action } from 'mobx'
|
|
3
3
|
import { BaseEdgeModel } from '.'
|
|
4
4
|
import { BaseNodeModel, RectNodeModel, CircleNodeModel, Model } from '..'
|
|
@@ -25,7 +25,7 @@ import {
|
|
|
25
25
|
import Point = LogicFlow.Point
|
|
26
26
|
import Position = LogicFlow.Position
|
|
27
27
|
import AppendConfig = LogicFlow.AppendConfig
|
|
28
|
-
import
|
|
28
|
+
import AnchorConfig = Model.AnchorConfig
|
|
29
29
|
|
|
30
30
|
export class PolylineEdgeModel extends BaseEdgeModel {
|
|
31
31
|
modelType = ModelType.POLYLINE_EDGE
|
|
@@ -41,22 +41,22 @@ export class PolylineEdgeModel extends BaseEdgeModel {
|
|
|
41
41
|
getEdgeStyle() {
|
|
42
42
|
const { polyline } = this.graphModel.theme
|
|
43
43
|
const style = super.getEdgeStyle()
|
|
44
|
+
const { style: customStyle = {} } = this.properties
|
|
44
45
|
return {
|
|
45
46
|
...style,
|
|
46
47
|
...cloneDeep(polyline),
|
|
48
|
+
...cloneDeep(customStyle),
|
|
47
49
|
}
|
|
48
50
|
}
|
|
49
51
|
|
|
50
52
|
getTextPosition() {
|
|
51
|
-
//
|
|
53
|
+
// 在文本为空的情况下,文本位置为双击位置
|
|
52
54
|
const textValue = this.text?.value
|
|
53
55
|
if (this.dbClickPosition && !textValue) {
|
|
54
56
|
const { x, y } = this.dbClickPosition
|
|
55
|
-
return {
|
|
56
|
-
x,
|
|
57
|
-
y,
|
|
58
|
-
}
|
|
57
|
+
return { x, y }
|
|
59
58
|
}
|
|
59
|
+
// 文本不为空或者没有双击位置时,取最长边的中点作为文本位置
|
|
60
60
|
const currentPositionList = points2PointsList(this.points)
|
|
61
61
|
const [p1, p2] = getLongestEdge(currentPositionList)
|
|
62
62
|
return {
|
|
@@ -69,9 +69,9 @@ export class PolylineEdgeModel extends BaseEdgeModel {
|
|
|
69
69
|
getAfterAnchor(
|
|
70
70
|
direction: SegmentDirection,
|
|
71
71
|
position: Position,
|
|
72
|
-
anchorList:
|
|
72
|
+
anchorList: AnchorConfig[],
|
|
73
73
|
) {
|
|
74
|
-
let anchor:
|
|
74
|
+
let anchor: AnchorConfig
|
|
75
75
|
let minDistance: number
|
|
76
76
|
anchorList.forEach((item) => {
|
|
77
77
|
let distanceX: number
|
|
@@ -186,7 +186,7 @@ export class PolylineEdgeModel extends BaseEdgeModel {
|
|
|
186
186
|
direction: SegmentDirection,
|
|
187
187
|
positionType: string,
|
|
188
188
|
position: Position,
|
|
189
|
-
anchorList:
|
|
189
|
+
anchorList: AnchorConfig[],
|
|
190
190
|
draggingPointList: Point[],
|
|
191
191
|
) {
|
|
192
192
|
const pointList = draggingPointList.map((i) => i)
|
|
@@ -438,10 +438,13 @@ export class PolylineEdgeModel extends BaseEdgeModel {
|
|
|
438
438
|
}
|
|
439
439
|
this.updatePointsAfterDrag(draggingPointList)
|
|
440
440
|
this.draggingPointList = draggingPointList
|
|
441
|
-
|
|
441
|
+
// TODO: 判断该逻辑是否需要
|
|
442
|
+
if (this.text?.value) {
|
|
443
|
+
this.setText(assign({}, this.text, this.textPosition))
|
|
444
|
+
}
|
|
442
445
|
return {
|
|
443
|
-
start:
|
|
444
|
-
end:
|
|
446
|
+
start: assign({}, pointsList[startIndex]),
|
|
447
|
+
end: assign({}, pointsList[endIndex]),
|
|
445
448
|
startIndex,
|
|
446
449
|
endIndex,
|
|
447
450
|
direction,
|
|
@@ -571,10 +574,13 @@ export class PolylineEdgeModel extends BaseEdgeModel {
|
|
|
571
574
|
this.updatePointsAfterDrag(draggingPointList)
|
|
572
575
|
this.draggingPointList = draggingPointList
|
|
573
576
|
}
|
|
574
|
-
|
|
577
|
+
// TODO: 确认该判断逻辑是否需要
|
|
578
|
+
if (this.text?.value) {
|
|
579
|
+
this.setText(assign({}, this.text, this.textPosition))
|
|
580
|
+
}
|
|
575
581
|
return {
|
|
576
|
-
start:
|
|
577
|
-
end:
|
|
582
|
+
start: assign({}, pointsList[startIndex]),
|
|
583
|
+
end: assign({}, pointsList[endIndex]),
|
|
578
584
|
startIndex,
|
|
579
585
|
endIndex,
|
|
580
586
|
direction,
|
|
@@ -591,9 +597,9 @@ export class PolylineEdgeModel extends BaseEdgeModel {
|
|
|
591
597
|
this.draggingPointList = []
|
|
592
598
|
// 更新起终点
|
|
593
599
|
const startPoint = pointsList[0]
|
|
594
|
-
this.startPoint =
|
|
600
|
+
this.startPoint = assign({}, startPoint)
|
|
595
601
|
const endPoint = pointsList[pointsList.length - 1]
|
|
596
|
-
this.endPoint =
|
|
602
|
+
this.endPoint = assign({}, endPoint)
|
|
597
603
|
}
|
|
598
604
|
this.isDragging = false
|
|
599
605
|
}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { action, computed, isObservable, observable, toJS } from 'mobx'
|
|
2
|
-
import { assign, cloneDeep, has, isNil, mapKeys } from 'lodash-es'
|
|
2
|
+
import { assign, cloneDeep, has, isNil, mapKeys, isUndefined } from 'lodash-es'
|
|
3
3
|
import { GraphModel, Model } from '..'
|
|
4
4
|
import LogicFlow from '../../LogicFlow'
|
|
5
5
|
import {
|
|
@@ -17,6 +17,7 @@ import {
|
|
|
17
17
|
EventType,
|
|
18
18
|
ModelType,
|
|
19
19
|
OverlapMode,
|
|
20
|
+
TextMode,
|
|
20
21
|
} from '../../constant'
|
|
21
22
|
import { ResizeControl } from '../../view/Control'
|
|
22
23
|
import AnchorConfig = Model.AnchorConfig
|
|
@@ -26,26 +27,30 @@ import NodeConfig = LogicFlow.NodeConfig
|
|
|
26
27
|
import NodeData = LogicFlow.NodeData
|
|
27
28
|
import Point = LogicFlow.Point
|
|
28
29
|
import CommonTheme = LogicFlow.CommonTheme
|
|
30
|
+
import PropertiesType = LogicFlow.PropertiesType
|
|
29
31
|
|
|
30
32
|
import ResizeInfo = ResizeControl.ResizeInfo
|
|
31
33
|
import ResizeNodeData = ResizeControl.ResizeNodeData
|
|
32
34
|
import PCTResizeParams = ResizeControl.PCTResizeParams
|
|
33
35
|
|
|
34
|
-
export interface IBaseNodeModel extends
|
|
36
|
+
export interface IBaseNodeModel<P extends PropertiesType>
|
|
37
|
+
extends Model.BaseModel<P> {
|
|
35
38
|
/**
|
|
36
39
|
* model基础类型,固定为node
|
|
37
40
|
*/
|
|
38
41
|
readonly BaseType: ElementType.NODE
|
|
42
|
+
properties: P
|
|
39
43
|
|
|
40
44
|
isDragging: boolean
|
|
41
45
|
isShowAnchor: boolean
|
|
42
46
|
getNodeStyle: () => CommonTheme
|
|
43
47
|
getTextStyle: () => LogicFlow.TextNodeTheme
|
|
44
|
-
|
|
45
48
|
setIsShowAnchor: (isShowAnchor: boolean) => void
|
|
46
49
|
}
|
|
47
50
|
|
|
48
|
-
export class BaseNodeModel
|
|
51
|
+
export class BaseNodeModel<P extends PropertiesType = PropertiesType>
|
|
52
|
+
implements IBaseNodeModel<P>
|
|
53
|
+
{
|
|
49
54
|
readonly BaseType = ElementType.NODE
|
|
50
55
|
static BaseType: ElementType = ElementType.NODE
|
|
51
56
|
|
|
@@ -54,6 +59,7 @@ export class BaseNodeModel implements IBaseNodeModel {
|
|
|
54
59
|
@observable readonly type = ''
|
|
55
60
|
@observable x = 0
|
|
56
61
|
@observable y = 0
|
|
62
|
+
@observable textMode = TextMode.TEXT
|
|
57
63
|
@observable text: TextConfig = {
|
|
58
64
|
value: '',
|
|
59
65
|
x: 0,
|
|
@@ -61,7 +67,7 @@ export class BaseNodeModel implements IBaseNodeModel {
|
|
|
61
67
|
draggable: false,
|
|
62
68
|
editable: true,
|
|
63
69
|
}
|
|
64
|
-
@observable properties:
|
|
70
|
+
@observable properties: P
|
|
65
71
|
// 形状属性
|
|
66
72
|
@observable private _width = 100
|
|
67
73
|
public get width() {
|
|
@@ -100,8 +106,9 @@ export class BaseNodeModel implements IBaseNodeModel {
|
|
|
100
106
|
@observable isHittable = true // 细粒度控制节点是否对用户操作进行反应
|
|
101
107
|
@observable draggable = true
|
|
102
108
|
@observable visible = true
|
|
103
|
-
|
|
104
|
-
@observable
|
|
109
|
+
|
|
110
|
+
@observable rotatable = true // 节点可旋转
|
|
111
|
+
@observable resizable = true // 节点可缩放
|
|
105
112
|
|
|
106
113
|
// 其它属性
|
|
107
114
|
graphModel: GraphModel
|
|
@@ -137,9 +144,9 @@ export class BaseNodeModel implements IBaseNodeModel {
|
|
|
137
144
|
hasSetSourceRules = false; // 用来限制rules的重复值
|
|
138
145
|
[propName: string]: any // 支持用户自定义属性
|
|
139
146
|
|
|
140
|
-
constructor(data: NodeConfig
|
|
147
|
+
constructor(data: NodeConfig<P>, graphModel: GraphModel) {
|
|
141
148
|
this.graphModel = graphModel
|
|
142
|
-
this.properties = data.properties
|
|
149
|
+
this.properties = data.properties ?? ({} as P)
|
|
143
150
|
|
|
144
151
|
this.initNodeData(data)
|
|
145
152
|
this.setAttributes()
|
|
@@ -168,9 +175,9 @@ export class BaseNodeModel implements IBaseNodeModel {
|
|
|
168
175
|
/**
|
|
169
176
|
* @overridable 可以重写
|
|
170
177
|
* 初始化节点数据
|
|
171
|
-
* initNodeData和setAttributes的区别在于
|
|
172
|
-
* initNodeData只在节点初始化的时候调用,用于初始化节点的所有属性。
|
|
173
|
-
* setAttributes除了初始化调用外,还会在properties发生变化了调用。
|
|
178
|
+
* initNodeData 和 setAttributes 的区别在于
|
|
179
|
+
* initNodeData 只在节点初始化的时候调用,用于初始化节点的所有属性。
|
|
180
|
+
* setAttributes 除了初始化调用外,还会在 properties 发生变化了调用。
|
|
174
181
|
*/
|
|
175
182
|
public initNodeData(data: NodeConfig) {
|
|
176
183
|
if (!data.properties) {
|
|
@@ -186,7 +193,10 @@ export class BaseNodeModel implements IBaseNodeModel {
|
|
|
186
193
|
}
|
|
187
194
|
|
|
188
195
|
this.formatText(data)
|
|
189
|
-
|
|
196
|
+
// 在下面又将 NodeConfig 中的数据赋值给了 this,应该会触发 setAttributes,确认是否符合预期
|
|
197
|
+
// TODO: 确认 constructor 中赋值 properties 是否必要,此处将 NodeConfig 中所有属性赋值给 this,包括 rotate、rotatable,resizable 等
|
|
198
|
+
assign(this, pickNodeConfig(data))
|
|
199
|
+
|
|
190
200
|
const { overlapMode } = this.graphModel
|
|
191
201
|
if (overlapMode === OverlapMode.INCREASE) {
|
|
192
202
|
this.zIndex = data.zIndex || getZIndex()
|
|
@@ -215,31 +225,46 @@ export class BaseNodeModel implements IBaseNodeModel {
|
|
|
215
225
|
return null
|
|
216
226
|
}
|
|
217
227
|
|
|
228
|
+
/**
|
|
229
|
+
* 设置当前元素的文本模式
|
|
230
|
+
* @param mode
|
|
231
|
+
*/
|
|
232
|
+
@action setTextMode(mode: TextMode) {
|
|
233
|
+
this.textMode = mode
|
|
234
|
+
}
|
|
235
|
+
|
|
218
236
|
/**
|
|
219
237
|
* 始化文本属性
|
|
220
238
|
*/
|
|
221
239
|
private formatText(data: NodeConfig): void {
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
if (typeof
|
|
232
|
-
|
|
233
|
-
value: data.text,
|
|
234
|
-
x: data.x,
|
|
235
|
-
y: data.y,
|
|
236
|
-
draggable: false,
|
|
237
|
-
editable: true,
|
|
238
|
-
}
|
|
240
|
+
const { x, y, text } = data
|
|
241
|
+
let textConfig: TextConfig = {
|
|
242
|
+
value: '',
|
|
243
|
+
x,
|
|
244
|
+
y,
|
|
245
|
+
draggable: false,
|
|
246
|
+
editable: true,
|
|
247
|
+
}
|
|
248
|
+
if (text) {
|
|
249
|
+
if (typeof text === 'string') {
|
|
250
|
+
textConfig.value = text
|
|
239
251
|
} else {
|
|
240
|
-
|
|
252
|
+
textConfig = {
|
|
253
|
+
...textConfig,
|
|
254
|
+
x: text.x ?? x,
|
|
255
|
+
y: text.y ?? y,
|
|
256
|
+
value: text.value ?? '',
|
|
257
|
+
}
|
|
258
|
+
if (!isUndefined(text.draggable)) {
|
|
259
|
+
textConfig.draggable = text.draggable
|
|
260
|
+
}
|
|
261
|
+
if (!isUndefined(text.editable)) {
|
|
262
|
+
textConfig.draggable = text.draggable
|
|
263
|
+
}
|
|
241
264
|
}
|
|
242
265
|
}
|
|
266
|
+
|
|
267
|
+
data.text = textConfig
|
|
243
268
|
}
|
|
244
269
|
|
|
245
270
|
/**
|
|
@@ -257,7 +282,6 @@ export class BaseNodeModel implements IBaseNodeModel {
|
|
|
257
282
|
width,
|
|
258
283
|
height,
|
|
259
284
|
})
|
|
260
|
-
|
|
261
285
|
return this.getData()
|
|
262
286
|
}
|
|
263
287
|
|
|
@@ -343,7 +367,11 @@ export class BaseNodeModel implements IBaseNodeModel {
|
|
|
343
367
|
getTextStyle() {
|
|
344
368
|
// 透传 nodeText
|
|
345
369
|
const { nodeText } = this.graphModel.theme
|
|
346
|
-
|
|
370
|
+
const { textStyle = {} } = this.properties
|
|
371
|
+
return {
|
|
372
|
+
...cloneDeep(nodeText),
|
|
373
|
+
...cloneDeep(textStyle),
|
|
374
|
+
}
|
|
347
375
|
}
|
|
348
376
|
|
|
349
377
|
/**
|
|
@@ -576,10 +604,10 @@ export class BaseNodeModel implements IBaseNodeModel {
|
|
|
576
604
|
*/
|
|
577
605
|
public getBounds(): Model.BoxBoundsPoint {
|
|
578
606
|
return {
|
|
579
|
-
|
|
580
|
-
|
|
581
|
-
|
|
582
|
-
|
|
607
|
+
minX: this.x - this.width / 2,
|
|
608
|
+
minY: this.y - this.height / 2,
|
|
609
|
+
maxX: this.x + this.width / 2,
|
|
610
|
+
maxY: this.y + this.height / 2,
|
|
583
611
|
}
|
|
584
612
|
}
|
|
585
613
|
|
|
@@ -683,12 +711,9 @@ export class BaseNodeModel implements IBaseNodeModel {
|
|
|
683
711
|
@action moveTo(x: number, y: number, isIgnoreRule = false): boolean {
|
|
684
712
|
const deltaX = x - this.x
|
|
685
713
|
const deltaY = y - this.y
|
|
686
|
-
if (!isIgnoreRule && !this.isAllowMoveNode(deltaX, deltaY))
|
|
687
|
-
|
|
688
|
-
|
|
689
|
-
if (this.text) {
|
|
690
|
-
this.text && this.moveText(deltaX, deltaY)
|
|
691
|
-
}
|
|
714
|
+
if (!isIgnoreRule && !this.isAllowMoveNode(deltaX, deltaY)) return false
|
|
715
|
+
|
|
716
|
+
this.text && this.moveText(deltaX, deltaY)
|
|
692
717
|
this.x = x
|
|
693
718
|
this.y = y
|
|
694
719
|
return true
|
|
@@ -725,12 +750,12 @@ export class BaseNodeModel implements IBaseNodeModel {
|
|
|
725
750
|
this.isShowAnchor = flag
|
|
726
751
|
}
|
|
727
752
|
|
|
728
|
-
@action
|
|
729
|
-
this.
|
|
753
|
+
@action setRotatable(flag = true): void {
|
|
754
|
+
this.rotatable = flag
|
|
730
755
|
}
|
|
731
756
|
|
|
732
|
-
@action
|
|
733
|
-
this.
|
|
757
|
+
@action setResizable(flag = true): void {
|
|
758
|
+
this.resizable = flag
|
|
734
759
|
}
|
|
735
760
|
|
|
736
761
|
@action setHitable(flag = true): void {
|