@logicflow/core 2.0.0-beta.1 → 2.0.0-beta.11
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 +10 -10
- package/.turbo/turbo-build.log +36 -36
- 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
package/src/util/edge.ts
CHANGED
|
@@ -1,10 +1,13 @@
|
|
|
1
|
-
import { pick } from 'lodash-es'
|
|
1
|
+
import { pick, forEach } from 'lodash-es'
|
|
2
2
|
import { getNodeBBox, isInNode, distance, sampleCubic } from '.'
|
|
3
3
|
import LogicFlow from '../LogicFlow'
|
|
4
4
|
import { Options } from '../options'
|
|
5
5
|
import { SegmentDirection } from '../constant'
|
|
6
|
-
import {
|
|
7
|
-
|
|
6
|
+
import {
|
|
7
|
+
getVerticalPointOfLine,
|
|
8
|
+
getCrossPointOfLine,
|
|
9
|
+
isInSegment,
|
|
10
|
+
} from '../algorithm'
|
|
8
11
|
import {
|
|
9
12
|
Model,
|
|
10
13
|
BaseNodeModel,
|
|
@@ -397,7 +400,7 @@ export const getNextNeighborPoints = (
|
|
|
397
400
|
return filterRepeatPoints(neighbors)
|
|
398
401
|
}
|
|
399
402
|
|
|
400
|
-
/* 路径查找,
|
|
403
|
+
/* 路径查找,AStar查找+曼哈顿距离
|
|
401
404
|
* 算法wiki:https://zh.wikipedia.org/wiki/A*%E6%90%9C%E5%B0%8B%E6%BC%94%E7%AE%97%E6%B3%95
|
|
402
405
|
* 方法无法复用,且调用了很多polyline相关的方法,暂不抽离到src/algorithm中
|
|
403
406
|
*/
|
|
@@ -590,10 +593,10 @@ export const getPolylinePoints = (
|
|
|
590
593
|
* @param pointsList 多个点组成的数组
|
|
591
594
|
*/
|
|
592
595
|
export const getLongestEdge = (pointsList: Point[]): [Point, Point] => {
|
|
593
|
-
let points
|
|
594
596
|
if (pointsList.length === 1) {
|
|
595
|
-
|
|
596
|
-
|
|
597
|
+
const [point] = pointsList
|
|
598
|
+
return [point, point]
|
|
599
|
+
} else {
|
|
597
600
|
let point1 = pointsList[0]
|
|
598
601
|
let point2 = pointsList[1]
|
|
599
602
|
let edgeLength = distance(point1.x, point1.y, point2.x, point2.y)
|
|
@@ -612,9 +615,8 @@ export const getLongestEdge = (pointsList: Point[]): [Point, Point] => {
|
|
|
612
615
|
point2 = newPoint2
|
|
613
616
|
}
|
|
614
617
|
}
|
|
615
|
-
|
|
618
|
+
return [point1, point2]
|
|
616
619
|
}
|
|
617
|
-
return points
|
|
618
620
|
}
|
|
619
621
|
|
|
620
622
|
/* 线段是否在节点内部,被包含了 */
|
|
@@ -650,8 +652,7 @@ export const getCrossPointInRect = (
|
|
|
650
652
|
start: Point,
|
|
651
653
|
end: Point,
|
|
652
654
|
node: BaseNodeModel,
|
|
653
|
-
): Point => {
|
|
654
|
-
let point
|
|
655
|
+
): Point | false | undefined => {
|
|
655
656
|
let crossSegments: [Point, Point] | undefined = undefined
|
|
656
657
|
const nodeBox = getNodeBBox(node)
|
|
657
658
|
const points = getPointsFromBBox(nodeBox)
|
|
@@ -667,9 +668,8 @@ export const getCrossPointInRect = (
|
|
|
667
668
|
}
|
|
668
669
|
}
|
|
669
670
|
if (crossSegments) {
|
|
670
|
-
|
|
671
|
+
return getCrossPointOfLine(start, end, crossSegments[0], crossSegments[1])
|
|
671
672
|
}
|
|
672
|
-
return point
|
|
673
673
|
}
|
|
674
674
|
/* 判断线段的方向 */
|
|
675
675
|
export const segmentDirection = (
|
|
@@ -915,6 +915,7 @@ export const getEndTangent = (
|
|
|
915
915
|
* 获取移动边后,文本位置距离边上的最近的一点
|
|
916
916
|
* @param point 边上文本的位置
|
|
917
917
|
* @param points 边的各个拐点
|
|
918
|
+
* TODO: Label实验没问题后统一改成新的计算方式,把这个方法废弃
|
|
918
919
|
*/
|
|
919
920
|
export const getClosestPointOfPolyline = (
|
|
920
921
|
point: Point,
|
|
@@ -1032,3 +1033,28 @@ export function createEdgeGenerator(
|
|
|
1032
1033
|
return Object.assign({ type: result }, currentEdge)
|
|
1033
1034
|
}
|
|
1034
1035
|
}
|
|
1036
|
+
|
|
1037
|
+
// 获取 Svg 标签文案高度,自动换行
|
|
1038
|
+
export type IGetSvgTextSizeParams = {
|
|
1039
|
+
rows: string[]
|
|
1040
|
+
rowsLength: number
|
|
1041
|
+
fontSize: number
|
|
1042
|
+
}
|
|
1043
|
+
export const getSvgTextSize = ({
|
|
1044
|
+
rows,
|
|
1045
|
+
rowsLength,
|
|
1046
|
+
fontSize,
|
|
1047
|
+
}: IGetSvgTextSizeParams): LogicFlow.RectSize => {
|
|
1048
|
+
let longestBytes = 0
|
|
1049
|
+
forEach(rows, (row) => {
|
|
1050
|
+
const rowBytesLength = getBytesLength(row)
|
|
1051
|
+
longestBytes = rowBytesLength > longestBytes ? rowBytesLength : longestBytes
|
|
1052
|
+
})
|
|
1053
|
+
|
|
1054
|
+
// 背景框宽度,最长一行字节数/2 * fontsize + 2
|
|
1055
|
+
// 背景框宽度, 行数 * fontsize + 2
|
|
1056
|
+
return {
|
|
1057
|
+
width: Math.ceil(longestBytes / 2) * fontSize + fontSize / 4,
|
|
1058
|
+
height: rowsLength * (fontSize + 2) + fontSize / 4,
|
|
1059
|
+
}
|
|
1060
|
+
}
|
package/src/util/index.ts
CHANGED
package/src/util/node.ts
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { pick } from 'lodash-es'
|
|
2
|
+
import { createElement as h } from 'preact/compat'
|
|
2
3
|
import { getBytesLength } from './edge'
|
|
3
4
|
import LogicFlow from '../LogicFlow'
|
|
4
5
|
import {
|
|
@@ -18,6 +19,7 @@ import Direction = LogicFlow.Direction
|
|
|
18
19
|
import NodeConfig = LogicFlow.NodeConfig
|
|
19
20
|
import LineSegment = LogicFlow.LineSegment
|
|
20
21
|
import AnchorInfo = Model.AnchorInfo
|
|
22
|
+
import BoxBoundsPoint = Model.BoxBoundsPoint
|
|
21
23
|
|
|
22
24
|
/* 获取所有锚点 */
|
|
23
25
|
export const getAnchors = (data: BaseNodeModel) => {
|
|
@@ -144,13 +146,9 @@ export type NodeBBox = {
|
|
|
144
146
|
y: number
|
|
145
147
|
width: number
|
|
146
148
|
height: number
|
|
147
|
-
minX: number
|
|
148
|
-
minY: number
|
|
149
|
-
maxX: number
|
|
150
|
-
maxY: number
|
|
151
149
|
centerX: number
|
|
152
150
|
centerY: number
|
|
153
|
-
}
|
|
151
|
+
} & BoxBoundsPoint
|
|
154
152
|
|
|
155
153
|
/* 获取节点bbox */
|
|
156
154
|
export const getNodeBBox = (node: BaseNodeModel): NodeBBox => {
|
|
@@ -411,9 +409,14 @@ export const pickNodeConfig = (data: NodeConfig): NodeConfig => {
|
|
|
411
409
|
'x',
|
|
412
410
|
'y',
|
|
413
411
|
'text',
|
|
412
|
+
'label',
|
|
414
413
|
'properties',
|
|
415
414
|
'virtual', // 区域节点是否为dnd添加的虚拟节点
|
|
416
415
|
'rotate',
|
|
416
|
+
|
|
417
|
+
// TODO: 确认是否可以加到此处
|
|
418
|
+
'resizable',
|
|
419
|
+
'rotatable',
|
|
417
420
|
])
|
|
418
421
|
return nodeData
|
|
419
422
|
}
|
|
@@ -444,7 +447,26 @@ export const getNodeAnchorPosition = (
|
|
|
444
447
|
}
|
|
445
448
|
}
|
|
446
449
|
|
|
447
|
-
|
|
450
|
+
/*********************************************************
|
|
451
|
+
* Text 节点文本相关工具函数
|
|
452
|
+
********************************************************/
|
|
453
|
+
// Text 相关节点工具函数
|
|
454
|
+
// TODO: 获取文案高度,设置自动换行,利用 dom 计算高度
|
|
455
|
+
// function getTextHeight(text: string, font: string): number {
|
|
456
|
+
// const span = document.createElement('span');
|
|
457
|
+
// span.textContent = text;
|
|
458
|
+
// span.style.font = font;
|
|
459
|
+
|
|
460
|
+
// const range = document.createRange();
|
|
461
|
+
// range.selectNodeContents(span);
|
|
462
|
+
|
|
463
|
+
// const rect = range.getBoundingClientRect();
|
|
464
|
+
// const height = rect.height;
|
|
465
|
+
|
|
466
|
+
// return height;
|
|
467
|
+
// }
|
|
468
|
+
|
|
469
|
+
// 获取文案高度,自动换行,利用 dom 计算高度
|
|
448
470
|
export const getHtmlTextHeight = ({
|
|
449
471
|
rows,
|
|
450
472
|
style,
|
|
@@ -452,18 +474,18 @@ export const getHtmlTextHeight = ({
|
|
|
452
474
|
className,
|
|
453
475
|
}: {
|
|
454
476
|
rows: string[]
|
|
455
|
-
style:
|
|
477
|
+
style: h.JSX.CSSProperties
|
|
456
478
|
rowsLength: number
|
|
457
479
|
className: string
|
|
458
480
|
}) => {
|
|
459
481
|
const dom = document.createElement('div')
|
|
460
|
-
dom.style.fontSize = style.fontSize
|
|
461
|
-
dom.style.width = style.width
|
|
462
482
|
dom.className = className
|
|
463
|
-
dom.style.
|
|
464
|
-
dom.style.
|
|
483
|
+
dom.style.fontSize = `${style.fontSize}`
|
|
484
|
+
dom.style.width = `${style.width}`
|
|
485
|
+
dom.style.lineHeight = `${style.lineHeight}`
|
|
486
|
+
dom.style.padding = `${style.padding}`
|
|
465
487
|
if (style.fontFamily) {
|
|
466
|
-
dom.style.fontFamily = style.fontFamily
|
|
488
|
+
dom.style.fontFamily = `${style.fontFamily}`
|
|
467
489
|
}
|
|
468
490
|
if (rowsLength > 1) {
|
|
469
491
|
rows.forEach((row) => {
|
|
@@ -479,6 +501,7 @@ export const getHtmlTextHeight = ({
|
|
|
479
501
|
document.body.removeChild(dom)
|
|
480
502
|
return height
|
|
481
503
|
}
|
|
504
|
+
|
|
482
505
|
// 获取文案高度,自动换行,利用dom计算高度
|
|
483
506
|
export const getSvgTextWidthHeight = ({
|
|
484
507
|
rows,
|
|
@@ -506,7 +529,7 @@ export const getSvgTextWidthHeight = ({
|
|
|
506
529
|
/**
|
|
507
530
|
* @description 格式化边校验信息
|
|
508
531
|
*/
|
|
509
|
-
export const
|
|
532
|
+
export const formatAnchorConnectValidateData = (
|
|
510
533
|
data: Model.ConnectRuleResult,
|
|
511
534
|
) => {
|
|
512
535
|
if (typeof data !== 'object') {
|
|
@@ -0,0 +1,286 @@
|
|
|
1
|
+
import { ResizeControl, ResizeControlIndex } from '../view/Control'
|
|
2
|
+
import { cloneDeep, find, forEach } from 'lodash-es'
|
|
3
|
+
import { BaseNodeModel, GraphModel } from '../model'
|
|
4
|
+
import { EventType } from '../constant'
|
|
5
|
+
|
|
6
|
+
import ResizeInfo = ResizeControl.ResizeInfo
|
|
7
|
+
import ResizeNodeData = ResizeControl.ResizeNodeData
|
|
8
|
+
|
|
9
|
+
/**
|
|
10
|
+
* 计算 Control 拖动后,节点的高度信息
|
|
11
|
+
* @param index
|
|
12
|
+
* @param resizeInfo
|
|
13
|
+
* @param pct
|
|
14
|
+
* @param freezeWidth
|
|
15
|
+
* @param freezeHeight
|
|
16
|
+
*/
|
|
17
|
+
export const recalcResizeInfo = (
|
|
18
|
+
index: ResizeControlIndex,
|
|
19
|
+
resizeInfo: ResizeInfo,
|
|
20
|
+
pct = 1,
|
|
21
|
+
freezeWidth = false,
|
|
22
|
+
freezeHeight = false,
|
|
23
|
+
): ResizeInfo => {
|
|
24
|
+
const nextResizeInfo = cloneDeep(resizeInfo)
|
|
25
|
+
let { deltaX, deltaY } = nextResizeInfo
|
|
26
|
+
const { width, height, PCTResizeInfo } = nextResizeInfo
|
|
27
|
+
if (PCTResizeInfo) {
|
|
28
|
+
const sensitivity = 4 // 越低越灵敏
|
|
29
|
+
let deltaScale = 0
|
|
30
|
+
let combineDelta = 0
|
|
31
|
+
switch (index) {
|
|
32
|
+
case ResizeControlIndex.LEFT_TOP:
|
|
33
|
+
combineDelta = (deltaX * -1 - deltaY) / sensitivity
|
|
34
|
+
break
|
|
35
|
+
case ResizeControlIndex.RIGHT_TOP:
|
|
36
|
+
combineDelta = (deltaX - deltaY) / sensitivity
|
|
37
|
+
break
|
|
38
|
+
case ResizeControlIndex.RIGHT_BOTTOM:
|
|
39
|
+
combineDelta = (deltaX + deltaY) / sensitivity
|
|
40
|
+
break
|
|
41
|
+
case ResizeControlIndex.LEFT_BOTTOM:
|
|
42
|
+
combineDelta = (deltaX * -1 + deltaY) / sensitivity
|
|
43
|
+
break
|
|
44
|
+
default:
|
|
45
|
+
break
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
if (combineDelta !== 0) {
|
|
49
|
+
deltaScale =
|
|
50
|
+
Math.round(
|
|
51
|
+
(combineDelta / PCTResizeInfo.ResizeBasis.basisHeight) * 100000,
|
|
52
|
+
) / 1000
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
PCTResizeInfo.ResizePCT.widthPCT = Math.max(
|
|
56
|
+
Math.min(
|
|
57
|
+
PCTResizeInfo.ResizePCT.widthPCT + deltaScale,
|
|
58
|
+
PCTResizeInfo.ScaleLimit.maxScaleLimit,
|
|
59
|
+
),
|
|
60
|
+
PCTResizeInfo.ScaleLimit.minScaleLimit,
|
|
61
|
+
)
|
|
62
|
+
PCTResizeInfo.ResizePCT.heightPCT = Math.max(
|
|
63
|
+
Math.min(
|
|
64
|
+
PCTResizeInfo.ResizePCT.heightPCT + deltaScale,
|
|
65
|
+
PCTResizeInfo.ScaleLimit.maxScaleLimit,
|
|
66
|
+
),
|
|
67
|
+
PCTResizeInfo.ScaleLimit.minScaleLimit,
|
|
68
|
+
)
|
|
69
|
+
|
|
70
|
+
const spcWidth = Math.round(
|
|
71
|
+
(PCTResizeInfo.ResizePCT.widthPCT *
|
|
72
|
+
PCTResizeInfo.ResizeBasis.basisWidth) /
|
|
73
|
+
100,
|
|
74
|
+
)
|
|
75
|
+
const spcHeight = Math.round(
|
|
76
|
+
(PCTResizeInfo.ResizePCT.heightPCT *
|
|
77
|
+
PCTResizeInfo.ResizeBasis.basisHeight) /
|
|
78
|
+
100,
|
|
79
|
+
)
|
|
80
|
+
|
|
81
|
+
switch (index) {
|
|
82
|
+
case ResizeControlIndex.LEFT_TOP:
|
|
83
|
+
deltaX = width - spcWidth
|
|
84
|
+
deltaY = height - spcHeight
|
|
85
|
+
break
|
|
86
|
+
case ResizeControlIndex.RIGHT_TOP:
|
|
87
|
+
deltaX = spcWidth - width
|
|
88
|
+
deltaY = height - spcHeight
|
|
89
|
+
break
|
|
90
|
+
case ResizeControlIndex.RIGHT_BOTTOM:
|
|
91
|
+
deltaX = spcWidth - width
|
|
92
|
+
deltaY = spcHeight - height
|
|
93
|
+
break
|
|
94
|
+
case ResizeControlIndex.LEFT_BOTTOM:
|
|
95
|
+
deltaX = width - spcWidth
|
|
96
|
+
deltaY = spcHeight - height
|
|
97
|
+
break
|
|
98
|
+
default:
|
|
99
|
+
break
|
|
100
|
+
}
|
|
101
|
+
return nextResizeInfo
|
|
102
|
+
}
|
|
103
|
+
|
|
104
|
+
// 如果限制了宽/高不变,对应的 width/height 保持一致
|
|
105
|
+
switch (index) {
|
|
106
|
+
case ResizeControlIndex.LEFT_TOP:
|
|
107
|
+
nextResizeInfo.width = freezeWidth ? width : width - deltaX * pct
|
|
108
|
+
nextResizeInfo.height = freezeHeight ? height : height - deltaY * pct
|
|
109
|
+
break
|
|
110
|
+
case ResizeControlIndex.RIGHT_TOP:
|
|
111
|
+
nextResizeInfo.width = freezeWidth ? width : width + deltaX * pct
|
|
112
|
+
nextResizeInfo.height = freezeHeight ? height : height - deltaY * pct
|
|
113
|
+
break
|
|
114
|
+
case ResizeControlIndex.RIGHT_BOTTOM:
|
|
115
|
+
nextResizeInfo.width = freezeWidth ? width : width + deltaX * pct
|
|
116
|
+
nextResizeInfo.height = freezeHeight ? height : height + deltaY * pct
|
|
117
|
+
break
|
|
118
|
+
case ResizeControlIndex.LEFT_BOTTOM:
|
|
119
|
+
nextResizeInfo.width = freezeWidth ? width : width - deltaX * pct
|
|
120
|
+
nextResizeInfo.height = freezeHeight ? height : height + deltaY * pct
|
|
121
|
+
break
|
|
122
|
+
default:
|
|
123
|
+
break
|
|
124
|
+
}
|
|
125
|
+
|
|
126
|
+
return nextResizeInfo
|
|
127
|
+
}
|
|
128
|
+
|
|
129
|
+
export const updateEdgePointByAnchors = (
|
|
130
|
+
nodeModel: BaseNodeModel,
|
|
131
|
+
graphModel: GraphModel,
|
|
132
|
+
) => {
|
|
133
|
+
// https://github.com/didi/LogicFlow/issues/807
|
|
134
|
+
// https://github.com/didi/LogicFlow/issues/875
|
|
135
|
+
// 之前的做法,比如Rect是使用getRectResizeEdgePoint()计算边的point缩放后的位置
|
|
136
|
+
// getRectResizeEdgePoint()考虑了瞄点在四条边以及在4个圆角的情况
|
|
137
|
+
// 使用的是一种等比例缩放的模式,比如:
|
|
138
|
+
// const pct = (y - beforeNode.y) / (beforeNode.height / 2 - radius)
|
|
139
|
+
// afterPoint.y = afterNode.y + (afterNode.height / 2 - radius) * pct
|
|
140
|
+
// 但是用户自定义的getDefaultAnchor()不一定是按照比例编写的
|
|
141
|
+
// 它可能是 x: x + 20:每次缩放都会保持在x右边20的位置,因此用户自定义瞄点时,然后产生无法跟随的问题
|
|
142
|
+
// 现在的做法是:直接获取用户自定义瞄点的位置,然后用这个位置作为边的新的起点,而不是自己进行计算
|
|
143
|
+
const { id, anchors } = nodeModel
|
|
144
|
+
const edges = graphModel.getNodeEdges(id)
|
|
145
|
+
// 更新边
|
|
146
|
+
forEach(edges, (edge) => {
|
|
147
|
+
if (edge.sourceNodeId === id) {
|
|
148
|
+
// 边是以该节点为 sourceNode 时
|
|
149
|
+
const anchorItem = find(
|
|
150
|
+
anchors,
|
|
151
|
+
(anchor) => anchor.id === edge.sourceAnchorId,
|
|
152
|
+
)
|
|
153
|
+
|
|
154
|
+
if (anchorItem) {
|
|
155
|
+
edge.updateStartPoint({
|
|
156
|
+
x: anchorItem.x,
|
|
157
|
+
y: anchorItem.y,
|
|
158
|
+
})
|
|
159
|
+
}
|
|
160
|
+
} else if (edge.targetNodeId === id) {
|
|
161
|
+
// 边是以该节点为 targetNode 时
|
|
162
|
+
const anchorItem = find(
|
|
163
|
+
anchors,
|
|
164
|
+
(anchor) => anchor.id === edge.targetAnchorId,
|
|
165
|
+
)
|
|
166
|
+
|
|
167
|
+
if (anchorItem) {
|
|
168
|
+
edge.updateEndPoint({
|
|
169
|
+
x: anchorItem.x,
|
|
170
|
+
y: anchorItem.y,
|
|
171
|
+
})
|
|
172
|
+
}
|
|
173
|
+
}
|
|
174
|
+
})
|
|
175
|
+
}
|
|
176
|
+
|
|
177
|
+
export const triggerResizeEvent = (
|
|
178
|
+
preNodeData: ResizeNodeData,
|
|
179
|
+
curNodeData: ResizeNodeData,
|
|
180
|
+
deltaX: number,
|
|
181
|
+
deltaY: number,
|
|
182
|
+
index: number,
|
|
183
|
+
nodeModel: BaseNodeModel,
|
|
184
|
+
graphModel: GraphModel,
|
|
185
|
+
) => {
|
|
186
|
+
graphModel.eventCenter.emit(EventType.NODE_RESIZE, {
|
|
187
|
+
preData: preNodeData,
|
|
188
|
+
data: curNodeData,
|
|
189
|
+
deltaX,
|
|
190
|
+
deltaY,
|
|
191
|
+
index,
|
|
192
|
+
model: nodeModel,
|
|
193
|
+
})
|
|
194
|
+
}
|
|
195
|
+
|
|
196
|
+
// TODO:确认 handleResize 函数的类型定义
|
|
197
|
+
// export type IHandleResizeParams = {
|
|
198
|
+
// deltaX: number
|
|
199
|
+
// deltaY: number
|
|
200
|
+
// index: ResizeControlIndex
|
|
201
|
+
// nodeModel: BaseNodeModel
|
|
202
|
+
// graphModel: GraphModel
|
|
203
|
+
// cancelCallback?: () => void
|
|
204
|
+
// }
|
|
205
|
+
|
|
206
|
+
/**
|
|
207
|
+
* 处理节点的 resize 事件,提出来放到 utils 中,方便在外面(extension)中使用
|
|
208
|
+
* @param deltaX
|
|
209
|
+
* @param deltaY
|
|
210
|
+
* @param index
|
|
211
|
+
* @param nodeModel
|
|
212
|
+
* @param graphModel
|
|
213
|
+
* @param cancelCallback
|
|
214
|
+
*/
|
|
215
|
+
export const handleResize = ({
|
|
216
|
+
deltaX,
|
|
217
|
+
deltaY,
|
|
218
|
+
index,
|
|
219
|
+
nodeModel,
|
|
220
|
+
graphModel,
|
|
221
|
+
cancelCallback,
|
|
222
|
+
}) => {
|
|
223
|
+
const {
|
|
224
|
+
r, // circle
|
|
225
|
+
rx, // ellipse/diamond
|
|
226
|
+
ry,
|
|
227
|
+
width, // rect/html
|
|
228
|
+
height,
|
|
229
|
+
PCTResizeInfo,
|
|
230
|
+
|
|
231
|
+
minWidth,
|
|
232
|
+
minHeight,
|
|
233
|
+
maxWidth,
|
|
234
|
+
maxHeight,
|
|
235
|
+
} = nodeModel
|
|
236
|
+
const isFreezeWidth = minWidth === maxWidth
|
|
237
|
+
const isFreezeHeight = minHeight === maxHeight
|
|
238
|
+
|
|
239
|
+
const resizeInfo = {
|
|
240
|
+
width: r || rx || width,
|
|
241
|
+
height: r || ry || height,
|
|
242
|
+
deltaX,
|
|
243
|
+
deltaY,
|
|
244
|
+
PCTResizeInfo,
|
|
245
|
+
}
|
|
246
|
+
|
|
247
|
+
const pct = r || (rx && ry) ? 1 / 2 : 1
|
|
248
|
+
const nextSize = recalcResizeInfo(
|
|
249
|
+
index,
|
|
250
|
+
resizeInfo,
|
|
251
|
+
pct,
|
|
252
|
+
isFreezeWidth,
|
|
253
|
+
isFreezeHeight,
|
|
254
|
+
)
|
|
255
|
+
|
|
256
|
+
// 限制放大缩小的最大最小范围
|
|
257
|
+
if (
|
|
258
|
+
nextSize.width < minWidth ||
|
|
259
|
+
nextSize.width > maxWidth ||
|
|
260
|
+
nextSize.height < minHeight ||
|
|
261
|
+
nextSize.height > maxHeight
|
|
262
|
+
) {
|
|
263
|
+
// this.dragHandler.cancelDrag()
|
|
264
|
+
cancelCallback?.()
|
|
265
|
+
return
|
|
266
|
+
}
|
|
267
|
+
// 如果限制了宽高不变,对应的 x/y 不产生位移
|
|
268
|
+
nextSize.deltaX = isFreezeWidth ? 0 : nextSize.deltaX
|
|
269
|
+
nextSize.deltaY = isFreezeWidth ? 0 : nextSize.deltaY
|
|
270
|
+
|
|
271
|
+
const preNodeData = nodeModel.getData()
|
|
272
|
+
const curNodeData = nodeModel.resize(nextSize)
|
|
273
|
+
|
|
274
|
+
// 更新边
|
|
275
|
+
updateEdgePointByAnchors(nodeModel, graphModel)
|
|
276
|
+
// 触发 resize 事件
|
|
277
|
+
triggerResizeEvent(
|
|
278
|
+
preNodeData,
|
|
279
|
+
curNodeData,
|
|
280
|
+
deltaX,
|
|
281
|
+
deltaY,
|
|
282
|
+
index,
|
|
283
|
+
nodeModel,
|
|
284
|
+
graphModel,
|
|
285
|
+
)
|
|
286
|
+
}
|
package/src/view/Anchor.tsx
CHANGED
|
@@ -6,7 +6,7 @@ import { ElementState, EventType } from '../constant'
|
|
|
6
6
|
import { GraphModel, BaseNodeModel, Model } from '../model'
|
|
7
7
|
import {
|
|
8
8
|
StepDrag,
|
|
9
|
-
|
|
9
|
+
formatAnchorConnectValidateData,
|
|
10
10
|
targetNodeInfo,
|
|
11
11
|
distance,
|
|
12
12
|
cancelRaf,
|
|
@@ -29,7 +29,7 @@ interface IProps {
|
|
|
29
29
|
anchorIndex: number
|
|
30
30
|
graphModel: GraphModel
|
|
31
31
|
nodeModel: BaseNodeModel
|
|
32
|
-
|
|
32
|
+
setHoverOff: (e: MouseEvent) => void
|
|
33
33
|
}
|
|
34
34
|
|
|
35
35
|
interface IState {
|
|
@@ -116,7 +116,7 @@ class Anchor extends Component<IProps, IState> {
|
|
|
116
116
|
endY: anchorData.y,
|
|
117
117
|
})
|
|
118
118
|
}
|
|
119
|
-
onDragging = ({ event }) => {
|
|
119
|
+
onDragging = ({ event }: IDragParams) => {
|
|
120
120
|
const { graphModel, nodeModel, anchorData } = this.props
|
|
121
121
|
const {
|
|
122
122
|
transformModel,
|
|
@@ -125,6 +125,8 @@ class Anchor extends Component<IProps, IState> {
|
|
|
125
125
|
height,
|
|
126
126
|
editConfigModel: { autoExpand, stopMoveGraph },
|
|
127
127
|
} = graphModel
|
|
128
|
+
// TODO:确认该方法是否有影响!理论上 onDragging 时 event 必有值
|
|
129
|
+
if (!event) return
|
|
128
130
|
const { clientX, clientY } = event
|
|
129
131
|
const {
|
|
130
132
|
domOverlayPosition: { x, y },
|
|
@@ -326,11 +328,11 @@ class Anchor extends Component<IProps, IState> {
|
|
|
326
328
|
)
|
|
327
329
|
this.sourceRuleResults.set(
|
|
328
330
|
targetInfoId,
|
|
329
|
-
|
|
331
|
+
formatAnchorConnectValidateData(sourceRuleResult),
|
|
330
332
|
)
|
|
331
333
|
this.targetRuleResults.set(
|
|
332
334
|
targetInfoId,
|
|
333
|
-
|
|
335
|
+
formatAnchorConnectValidateData(targetRuleResult),
|
|
334
336
|
)
|
|
335
337
|
}
|
|
336
338
|
const { isAllPass: isSourcePass } =
|