@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
|
@@ -4,7 +4,7 @@ import { GraphModel, BaseNodeModel, BaseEdgeModel, Model } from '../../model'
|
|
|
4
4
|
import {
|
|
5
5
|
IDragParams,
|
|
6
6
|
StepDrag,
|
|
7
|
-
|
|
7
|
+
formatAnchorConnectValidateData,
|
|
8
8
|
targetNodeInfo,
|
|
9
9
|
NodeContaint,
|
|
10
10
|
} from '../../util'
|
|
@@ -125,54 +125,40 @@ export class AdjustPoint extends Component<IProps, IState> {
|
|
|
125
125
|
)
|
|
126
126
|
// 如果一定的坐标能够找到目标节点,预结算当前节点与目标节点的路径进行展示
|
|
127
127
|
if (info && info.node && this.isAllowAdjust(info).pass) {
|
|
128
|
-
let params: {
|
|
129
|
-
startPoint: Point
|
|
130
|
-
endPoint: Point
|
|
131
|
-
sourceNode: BaseNodeModel
|
|
132
|
-
targetNode: BaseNodeModel
|
|
133
|
-
}
|
|
134
128
|
const { startPoint, endPoint, sourceNode, targetNode } = edgeModel
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
x,
|
|
167
|
-
y,
|
|
168
|
-
})
|
|
169
|
-
} else if (type === AdjustType.TARGET) {
|
|
170
|
-
edgeModel.updateEndPoint({
|
|
171
|
-
x,
|
|
172
|
-
y,
|
|
173
|
-
})
|
|
129
|
+
const params =
|
|
130
|
+
type === AdjustType.SOURCE
|
|
131
|
+
? {
|
|
132
|
+
startPoint: {
|
|
133
|
+
x: info.anchor.x,
|
|
134
|
+
y: info.anchor.y,
|
|
135
|
+
},
|
|
136
|
+
endPoint: {
|
|
137
|
+
x: endPoint.x,
|
|
138
|
+
y: endPoint.y,
|
|
139
|
+
},
|
|
140
|
+
sourceNode: info.node,
|
|
141
|
+
targetNode,
|
|
142
|
+
}
|
|
143
|
+
: {
|
|
144
|
+
startPoint: {
|
|
145
|
+
x: startPoint.x,
|
|
146
|
+
y: startPoint.y,
|
|
147
|
+
},
|
|
148
|
+
endPoint: {
|
|
149
|
+
x: info.anchor.x,
|
|
150
|
+
y: info.anchor.y,
|
|
151
|
+
},
|
|
152
|
+
sourceNode,
|
|
153
|
+
targetNode: info.node,
|
|
154
|
+
}
|
|
155
|
+
edgeModel.updateAfterAdjustStartAndEnd(params)
|
|
156
|
+
} else {
|
|
157
|
+
// 如果没有找到目标节点,更新起终点为当前坐标
|
|
158
|
+
type === AdjustType.SOURCE
|
|
159
|
+
? edgeModel.updateStartPoint({ x, y })
|
|
160
|
+
: edgeModel.updateEndPoint({ x, y })
|
|
174
161
|
}
|
|
175
|
-
|
|
176
162
|
if (edgeModel.text.value && editConfigModel.adjustEdge) {
|
|
177
163
|
edgeModel.setText(
|
|
178
164
|
Object.assign({}, edgeModel.text, edgeModel.textPosition),
|
|
@@ -394,11 +380,11 @@ export class AdjustPoint extends Component<IProps, IState> {
|
|
|
394
380
|
)
|
|
395
381
|
this.sourceRuleResults.set(
|
|
396
382
|
targetInfoId,
|
|
397
|
-
|
|
383
|
+
formatAnchorConnectValidateData(sourceRuleResult),
|
|
398
384
|
)
|
|
399
385
|
this.targetRuleResults.set(
|
|
400
386
|
targetInfoId,
|
|
401
|
-
|
|
387
|
+
formatAnchorConnectValidateData(targetRuleResult),
|
|
402
388
|
)
|
|
403
389
|
}
|
|
404
390
|
const { isAllPass: isSourcePass, msg: sourceMsg } =
|
|
@@ -3,7 +3,7 @@ import { Circle } from '../shape'
|
|
|
3
3
|
import { LineText } from '../text'
|
|
4
4
|
import LogicFlow from '../../LogicFlow'
|
|
5
5
|
import { GraphModel, BaseEdgeModel, PolylineEdgeModel } from '../../model'
|
|
6
|
-
import { ElementState, EventType, ModelType } from '../../constant'
|
|
6
|
+
import { ElementState, EventType, ModelType, TextMode } from '../../constant'
|
|
7
7
|
import {
|
|
8
8
|
isMultipleSelect,
|
|
9
9
|
getClosestPointOfPolyline,
|
|
@@ -56,24 +56,31 @@ export abstract class BaseEdge<P extends IProps> extends Component<
|
|
|
56
56
|
*/
|
|
57
57
|
getText(): h.JSX.Element | null {
|
|
58
58
|
const { model, graphModel } = this.props
|
|
59
|
-
// 文本被编辑的时候,显示编辑框,不显示文本。
|
|
60
|
-
if (model.state === ElementState.TEXT_EDIT) {
|
|
61
|
-
return null
|
|
62
|
-
}
|
|
63
|
-
let draggable = false
|
|
64
59
|
const { editConfigModel } = graphModel
|
|
65
|
-
|
|
66
|
-
|
|
60
|
+
|
|
61
|
+
// 当 边文本模式非 TEXT 时,不显示文本
|
|
62
|
+
if (editConfigModel.edgeTextMode !== TextMode.TEXT) return null
|
|
63
|
+
// 文本被编辑的时候,显示编辑框,不显示文本。
|
|
64
|
+
if (model.state === ElementState.TEXT_EDIT) return null
|
|
65
|
+
|
|
66
|
+
if (model.text) {
|
|
67
|
+
let draggable = false
|
|
68
|
+
if (editConfigModel.edgeTextDraggable && model.text.draggable) {
|
|
69
|
+
draggable = true
|
|
70
|
+
}
|
|
71
|
+
return (
|
|
72
|
+
<LineText
|
|
73
|
+
ref={this.textRef}
|
|
74
|
+
editable={
|
|
75
|
+
editConfigModel.edgeTextEdit && (model.text.editable ?? true)
|
|
76
|
+
}
|
|
77
|
+
model={model}
|
|
78
|
+
graphModel={graphModel}
|
|
79
|
+
draggable={draggable}
|
|
80
|
+
/>
|
|
81
|
+
)
|
|
67
82
|
}
|
|
68
|
-
return
|
|
69
|
-
<LineText
|
|
70
|
-
ref={this.textRef}
|
|
71
|
-
editable={editConfigModel.edgeTextEdit && model.text.editable}
|
|
72
|
-
model={model}
|
|
73
|
-
graphModel={graphModel}
|
|
74
|
-
draggable={draggable}
|
|
75
|
-
/>
|
|
76
|
-
)
|
|
83
|
+
return null
|
|
77
84
|
}
|
|
78
85
|
|
|
79
86
|
/**
|
|
@@ -240,24 +247,36 @@ export abstract class BaseEdge<P extends IProps> extends Component<
|
|
|
240
247
|
*/
|
|
241
248
|
private getAdjustPoints() {
|
|
242
249
|
const { model, graphModel } = this.props
|
|
250
|
+
const {
|
|
251
|
+
editConfigModel: {
|
|
252
|
+
adjustEdgeStartAndEnd,
|
|
253
|
+
adjustEdgeStart,
|
|
254
|
+
adjustEdgeEnd,
|
|
255
|
+
},
|
|
256
|
+
} = graphModel
|
|
243
257
|
const start = model.getAdjustStart()
|
|
244
258
|
const end = model.getAdjustEnd()
|
|
259
|
+
|
|
245
260
|
return (
|
|
246
261
|
<g>
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
262
|
+
{adjustEdgeStartAndEnd && adjustEdgeStart && (
|
|
263
|
+
<AdjustPoint
|
|
264
|
+
type={AdjustType.SOURCE}
|
|
265
|
+
{...start}
|
|
266
|
+
getAdjustPointShape={this.getAdjustPointShape}
|
|
267
|
+
edgeModel={model}
|
|
268
|
+
graphModel={graphModel}
|
|
269
|
+
/>
|
|
270
|
+
)}
|
|
271
|
+
{adjustEdgeStartAndEnd && adjustEdgeEnd && (
|
|
272
|
+
<AdjustPoint
|
|
273
|
+
type={AdjustType.TARGET}
|
|
274
|
+
{...end}
|
|
275
|
+
getAdjustPointShape={this.getAdjustPointShape}
|
|
276
|
+
edgeModel={model}
|
|
277
|
+
graphModel={graphModel}
|
|
278
|
+
/>
|
|
279
|
+
)}
|
|
261
280
|
</g>
|
|
262
281
|
)
|
|
263
282
|
}
|
|
@@ -307,24 +326,24 @@ export abstract class BaseEdge<P extends IProps> extends Component<
|
|
|
307
326
|
/**
|
|
308
327
|
* 不支持重写,如果想要基于hover状态设置不同的样式,请在model中使用isHovered属性。
|
|
309
328
|
*/
|
|
310
|
-
|
|
329
|
+
setHoverOn = (ev: MouseEvent) => {
|
|
311
330
|
// ! hover多次触发, onMouseOver + onMouseEnter
|
|
312
331
|
const {
|
|
313
332
|
model: { isHovered },
|
|
314
333
|
} = this.props
|
|
315
334
|
if (isHovered) return
|
|
316
|
-
this.textRef && this.textRef.current && this.textRef.current.
|
|
335
|
+
this.textRef && this.textRef.current && this.textRef.current.setHoverOn()
|
|
317
336
|
this.handleHover(true, ev)
|
|
318
337
|
}
|
|
319
338
|
/**
|
|
320
339
|
* 不支持重写,如果想要基于hover状态设置不同的样式,请在model中使用isHovered属性。
|
|
321
340
|
*/
|
|
322
|
-
|
|
341
|
+
setHoverOff = (ev: MouseEvent) => {
|
|
323
342
|
const {
|
|
324
343
|
model: { isHovered },
|
|
325
344
|
} = this.props
|
|
326
345
|
if (!isHovered) return
|
|
327
|
-
this.textRef && this.textRef.current && this.textRef.current.
|
|
346
|
+
this.textRef && this.textRef.current && this.textRef.current.setHoverOff()
|
|
328
347
|
this.handleHover(false, ev)
|
|
329
348
|
}
|
|
330
349
|
/**
|
|
@@ -385,15 +404,17 @@ export abstract class BaseEdge<P extends IProps> extends Component<
|
|
|
385
404
|
})
|
|
386
405
|
if (isDoubleClick) {
|
|
387
406
|
const { editConfigModel, textEditElement } = graphModel
|
|
407
|
+
const { id, text, modelType } = model
|
|
388
408
|
// 当前边正在编辑,需要先重置状态才能变更文本框位置
|
|
389
|
-
if (textEditElement && textEditElement.id ===
|
|
390
|
-
graphModel.setElementStateById(
|
|
409
|
+
if (textEditElement && textEditElement.id === id) {
|
|
410
|
+
graphModel.setElementStateById(id, ElementState.DEFAULT)
|
|
391
411
|
}
|
|
392
412
|
// 边文案可编辑状态,才可以进行文案编辑
|
|
393
|
-
if (editConfigModel.edgeTextEdit &&
|
|
394
|
-
|
|
413
|
+
if (editConfigModel.edgeTextEdit && text.editable) {
|
|
414
|
+
model.setSelected(false)
|
|
415
|
+
graphModel.setElementStateById(id, ElementState.TEXT_EDIT)
|
|
395
416
|
}
|
|
396
|
-
if (
|
|
417
|
+
if (modelType === ModelType.POLYLINE_EDGE) {
|
|
397
418
|
const polylineEdgeModel = model as PolylineEdgeModel
|
|
398
419
|
const {
|
|
399
420
|
canvasOverlayPosition: { x, y },
|
|
@@ -401,14 +422,13 @@ export abstract class BaseEdge<P extends IProps> extends Component<
|
|
|
401
422
|
x: e.x,
|
|
402
423
|
y: e.y,
|
|
403
424
|
})
|
|
404
|
-
|
|
425
|
+
polylineEdgeModel.dbClickPosition = getClosestPointOfPolyline(
|
|
405
426
|
{
|
|
406
427
|
x,
|
|
407
428
|
y,
|
|
408
429
|
},
|
|
409
430
|
polylineEdgeModel.points,
|
|
410
431
|
)
|
|
411
|
-
polylineEdgeModel.dbClickPosition = crossPoint
|
|
412
432
|
}
|
|
413
433
|
graphModel.eventCenter.emit(EventType.EDGE_DBCLICK, {
|
|
414
434
|
data: edgeData,
|
|
@@ -471,9 +491,9 @@ export abstract class BaseEdge<P extends IProps> extends Component<
|
|
|
471
491
|
onMouseDown={this.handleMouseDown}
|
|
472
492
|
onMouseUp={this.handleMouseUp}
|
|
473
493
|
onContextMenu={this.handleContextMenu}
|
|
474
|
-
onMouseOver={this.
|
|
475
|
-
onMouseEnter={this.
|
|
476
|
-
onMouseLeave={this.
|
|
494
|
+
onMouseOver={this.setHoverOn}
|
|
495
|
+
onMouseEnter={this.setHoverOn}
|
|
496
|
+
onMouseLeave={this.setHoverOff}
|
|
477
497
|
>
|
|
478
498
|
{this.getShape()}
|
|
479
499
|
{this.getAppend()}
|
|
@@ -5,7 +5,7 @@ import Anchor from '../Anchor'
|
|
|
5
5
|
import { BaseText } from '../text'
|
|
6
6
|
import LogicFlow from '../../LogicFlow'
|
|
7
7
|
import { GraphModel, BaseNodeModel, Model } from '../../model'
|
|
8
|
-
import { ElementState, EventType } from '../../constant'
|
|
8
|
+
import { ElementState, EventType, TextMode } from '../../constant'
|
|
9
9
|
import {
|
|
10
10
|
StepDrag,
|
|
11
11
|
snapToGrid,
|
|
@@ -29,7 +29,10 @@ type IState = {
|
|
|
29
29
|
isDragging?: boolean
|
|
30
30
|
}
|
|
31
31
|
|
|
32
|
-
export abstract class BaseNode<P extends IProps> extends Component<
|
|
32
|
+
export abstract class BaseNode<P extends IProps = IProps> extends Component<
|
|
33
|
+
P,
|
|
34
|
+
IState
|
|
35
|
+
> {
|
|
33
36
|
static isObserved: boolean = false
|
|
34
37
|
static extendsKey?: string
|
|
35
38
|
|
|
@@ -106,7 +109,7 @@ export abstract class BaseNode<P extends IProps> extends Component<P, IState> {
|
|
|
106
109
|
anchorIndex={index}
|
|
107
110
|
nodeModel={model}
|
|
108
111
|
graphModel={graphModel}
|
|
109
|
-
|
|
112
|
+
setHoverOff={this.setHoverOff}
|
|
110
113
|
/>
|
|
111
114
|
)
|
|
112
115
|
})
|
|
@@ -116,9 +119,16 @@ export abstract class BaseNode<P extends IProps> extends Component<P, IState> {
|
|
|
116
119
|
|
|
117
120
|
getRotateControl() {
|
|
118
121
|
const { model, graphModel } = this.props
|
|
119
|
-
const {
|
|
122
|
+
const {
|
|
123
|
+
editConfigModel: { isSilentMode, allowRotate },
|
|
124
|
+
} = graphModel
|
|
125
|
+
const { isSelected, isHitable, rotatable, isHovered } = model
|
|
126
|
+
|
|
127
|
+
// 合并全局 allResize 和节点自身的 resizable 配置,以节点配置高于全局配置
|
|
128
|
+
const canRotate = allowRotate && rotatable // 全局开关 > 节点配置
|
|
129
|
+
|
|
120
130
|
const style = model.getRotateControlStyle()
|
|
121
|
-
if (isHitable && (isSelected || isHovered) &&
|
|
131
|
+
if (!isSilentMode && isHitable && (isSelected || isHovered) && canRotate) {
|
|
122
132
|
return (
|
|
123
133
|
<RotateControlPoint
|
|
124
134
|
graphModel={graphModel}
|
|
@@ -132,9 +142,15 @@ export abstract class BaseNode<P extends IProps> extends Component<P, IState> {
|
|
|
132
142
|
|
|
133
143
|
getResizeControl(): h.JSX.Element | null {
|
|
134
144
|
const { model, graphModel } = this.props
|
|
135
|
-
const {
|
|
145
|
+
const {
|
|
146
|
+
editConfigModel: { isSilentMode, allowResize },
|
|
147
|
+
} = graphModel
|
|
148
|
+
const { isSelected, isHitable, resizable, isHovered } = model
|
|
149
|
+
|
|
150
|
+
// 合并全局 allResize 和节点自身的 resizable 配置,以节点配置高于全局配置
|
|
151
|
+
const canResize = allowResize && resizable // 全局开关 > 节点配置
|
|
136
152
|
const style = model.getResizeControlStyle()
|
|
137
|
-
if (isHitable && (isSelected || isHovered) &&
|
|
153
|
+
if (!isSilentMode && isHitable && (isSelected || isHovered) && canResize) {
|
|
138
154
|
return (
|
|
139
155
|
<ResizeControlGroup
|
|
140
156
|
style={style}
|
|
@@ -148,14 +164,16 @@ export abstract class BaseNode<P extends IProps> extends Component<P, IState> {
|
|
|
148
164
|
|
|
149
165
|
getText(): h.JSX.Element | null {
|
|
150
166
|
const { model, graphModel } = this.props
|
|
167
|
+
const { editConfigModel } = graphModel
|
|
168
|
+
|
|
169
|
+
// 当 节点文本模式非 TEXT 时,不显示文本
|
|
170
|
+
if (editConfigModel.nodeTextMode !== TextMode.TEXT) return null
|
|
151
171
|
// 文本被编辑的时候,显示编辑框,不显示文本。
|
|
152
|
-
if (model.state === ElementState.TEXT_EDIT)
|
|
153
|
-
|
|
154
|
-
}
|
|
172
|
+
if (model.state === ElementState.TEXT_EDIT) return null
|
|
173
|
+
|
|
155
174
|
if (model.text) {
|
|
156
|
-
const { editConfigModel } = graphModel
|
|
157
175
|
let draggable = false
|
|
158
|
-
if (model.text.draggable
|
|
176
|
+
if (editConfigModel.nodeTextDraggable && model.text.draggable) {
|
|
159
177
|
draggable = true
|
|
160
178
|
}
|
|
161
179
|
return (
|
|
@@ -189,7 +207,7 @@ export abstract class BaseNode<P extends IProps> extends Component<P, IState> {
|
|
|
189
207
|
break
|
|
190
208
|
}
|
|
191
209
|
if (isDragging) {
|
|
192
|
-
className += ' lf-
|
|
210
|
+
className += ' lf-dragging'
|
|
193
211
|
}
|
|
194
212
|
if (isSelected) {
|
|
195
213
|
className += ' lf-node-selected'
|
|
@@ -212,9 +230,9 @@ export abstract class BaseNode<P extends IProps> extends Component<P, IState> {
|
|
|
212
230
|
}
|
|
213
231
|
}
|
|
214
232
|
}
|
|
233
|
+
|
|
215
234
|
onDragging = ({ event }: IDragParams) => {
|
|
216
235
|
const { model, graphModel } = this.props
|
|
217
|
-
// const { isDragging } = model;
|
|
218
236
|
const {
|
|
219
237
|
editConfigModel: { stopMoveGraph, autoExpand },
|
|
220
238
|
transformModel,
|
|
@@ -294,6 +312,7 @@ export abstract class BaseNode<P extends IProps> extends Component<P, IState> {
|
|
|
294
312
|
graphModel.moveNodes(moveNodes, x - model.x, y - model.y)
|
|
295
313
|
}
|
|
296
314
|
}
|
|
315
|
+
|
|
297
316
|
onDragEnd = () => {
|
|
298
317
|
if (this.t) {
|
|
299
318
|
cancelRaf(this.t)
|
|
@@ -301,10 +320,17 @@ export abstract class BaseNode<P extends IProps> extends Component<P, IState> {
|
|
|
301
320
|
const { model } = this.props
|
|
302
321
|
model.isDragging = false
|
|
303
322
|
}
|
|
323
|
+
onMouseOut = (ev: MouseEvent) => {
|
|
324
|
+
if (isIe) {
|
|
325
|
+
this.setHoverOff(ev)
|
|
326
|
+
}
|
|
327
|
+
}
|
|
328
|
+
|
|
304
329
|
handleMouseUp = () => {
|
|
305
330
|
const { model } = this.props
|
|
306
331
|
this.mouseUpDrag = model.isDragging
|
|
307
332
|
}
|
|
333
|
+
|
|
308
334
|
handleClick = (e: MouseEvent) => {
|
|
309
335
|
// 节点拖拽进画布之后,不触发click事件相关emit
|
|
310
336
|
// 点拖拽进画布没有触发mousedown事件,没有startTime,用这个值做区分
|
|
@@ -350,9 +376,11 @@ export abstract class BaseNode<P extends IProps> extends Component<P, IState> {
|
|
|
350
376
|
|
|
351
377
|
// 不是双击的,默认都是单击
|
|
352
378
|
if (isDoubleClick) {
|
|
353
|
-
if (editConfigModel.nodeTextEdit
|
|
354
|
-
model.
|
|
355
|
-
|
|
379
|
+
if (editConfigModel.nodeTextEdit) {
|
|
380
|
+
if (model.text.editable) {
|
|
381
|
+
model.setSelected(false)
|
|
382
|
+
graphModel.setElementStateById(model.id, ElementState.TEXT_EDIT)
|
|
383
|
+
}
|
|
356
384
|
}
|
|
357
385
|
graphModel.eventCenter.emit(EventType.NODE_DBCLICK, eventOptions)
|
|
358
386
|
} else {
|
|
@@ -360,6 +388,7 @@ export abstract class BaseNode<P extends IProps> extends Component<P, IState> {
|
|
|
360
388
|
graphModel.eventCenter.emit(EventType.NODE_CLICK, eventOptions)
|
|
361
389
|
}
|
|
362
390
|
}
|
|
391
|
+
|
|
363
392
|
handleContextMenu = (ev: MouseEvent) => {
|
|
364
393
|
ev.preventDefault()
|
|
365
394
|
const { model, graphModel } = this.props
|
|
@@ -385,6 +414,7 @@ export abstract class BaseNode<P extends IProps> extends Component<P, IState> {
|
|
|
385
414
|
})
|
|
386
415
|
this.toFront()
|
|
387
416
|
}
|
|
417
|
+
|
|
388
418
|
handleMouseDown = (ev: MouseEvent) => {
|
|
389
419
|
const { model, graphModel } = this.props
|
|
390
420
|
this.startTime = new Date().getTime()
|
|
@@ -393,9 +423,9 @@ export abstract class BaseNode<P extends IProps> extends Component<P, IState> {
|
|
|
393
423
|
this.stepDrag && this.stepDrag.handleMouseDown(ev)
|
|
394
424
|
}
|
|
395
425
|
}
|
|
396
|
-
|
|
426
|
+
|
|
397
427
|
// 因为自定义节点的时候,可能会基于hover状态自定义不同的样式。
|
|
398
|
-
|
|
428
|
+
setHoverOn = (ev: MouseEvent) => {
|
|
399
429
|
const { model, graphModel } = this.props
|
|
400
430
|
if (model.isHovered) return
|
|
401
431
|
const nodeData = model.getData()
|
|
@@ -405,9 +435,11 @@ export abstract class BaseNode<P extends IProps> extends Component<P, IState> {
|
|
|
405
435
|
e: ev,
|
|
406
436
|
})
|
|
407
437
|
}
|
|
408
|
-
|
|
438
|
+
|
|
439
|
+
setHoverOff = (ev: MouseEvent) => {
|
|
409
440
|
const { model, graphModel } = this.props
|
|
410
441
|
const nodeData = model.getData()
|
|
442
|
+
// 文本focus时,关联的元素也需要高亮,所以元素失焦时还要判断下是否有文本处于focus状态
|
|
411
443
|
if (!model.isHovered) return
|
|
412
444
|
model.setHovered(false)
|
|
413
445
|
graphModel.eventCenter.emit(EventType.NODE_MOUSELEAVE, {
|
|
@@ -415,11 +447,6 @@ export abstract class BaseNode<P extends IProps> extends Component<P, IState> {
|
|
|
415
447
|
e: ev,
|
|
416
448
|
})
|
|
417
449
|
}
|
|
418
|
-
onMouseOut = (ev: MouseEvent) => {
|
|
419
|
-
if (isIe) {
|
|
420
|
-
this.setHoverOFF(ev)
|
|
421
|
-
}
|
|
422
|
-
}
|
|
423
450
|
|
|
424
451
|
/**
|
|
425
452
|
* @overridable 支持重写, 节点置顶,可以被某些不需要置顶的节点重写,如group节点。
|
|
@@ -476,9 +503,9 @@ export abstract class BaseNode<P extends IProps> extends Component<P, IState> {
|
|
|
476
503
|
onMouseDown={this.handleMouseDown}
|
|
477
504
|
onMouseUp={this.handleMouseUp}
|
|
478
505
|
onClick={this.handleClick}
|
|
479
|
-
onMouseEnter={this.
|
|
480
|
-
onMouseOver={this.
|
|
481
|
-
onMouseLeave={this.
|
|
506
|
+
onMouseEnter={this.setHoverOn}
|
|
507
|
+
onMouseOver={this.setHoverOn}
|
|
508
|
+
onMouseLeave={this.setHoverOff}
|
|
482
509
|
onMouseOut={this.onMouseOut}
|
|
483
510
|
onContextMenu={this.handleContextMenu}
|
|
484
511
|
{...restAttributes}
|
|
@@ -7,7 +7,9 @@ export type ICircleNodeProps = {
|
|
|
7
7
|
graphModel: GraphModel
|
|
8
8
|
}
|
|
9
9
|
|
|
10
|
-
export class CircleNode
|
|
10
|
+
export class CircleNode<
|
|
11
|
+
P extends ICircleNodeProps = ICircleNodeProps,
|
|
12
|
+
> extends BaseNode<P> {
|
|
11
13
|
getShape() {
|
|
12
14
|
const { model } = this.props
|
|
13
15
|
const { x, y, r } = model
|
|
@@ -7,7 +7,9 @@ export type IDiamondNodeProps = {
|
|
|
7
7
|
graphModel: GraphModel
|
|
8
8
|
}
|
|
9
9
|
|
|
10
|
-
export class DiamondNode
|
|
10
|
+
export class DiamondNode<
|
|
11
|
+
P extends IDiamondNodeProps = IDiamondNodeProps,
|
|
12
|
+
> extends BaseNode<P> {
|
|
11
13
|
getShape() {
|
|
12
14
|
const { model } = this.props
|
|
13
15
|
const style = model.getNodeStyle()
|
|
@@ -7,7 +7,9 @@ export type IEllipseNodeProps = {
|
|
|
7
7
|
graphModel: GraphModel
|
|
8
8
|
}
|
|
9
9
|
|
|
10
|
-
export class EllipseNode
|
|
10
|
+
export class EllipseNode<
|
|
11
|
+
P extends IEllipseNodeProps = IEllipseNodeProps,
|
|
12
|
+
> extends BaseNode<P> {
|
|
11
13
|
getShape() {
|
|
12
14
|
const { model } = this.props
|
|
13
15
|
const style = model.getNodeStyle()
|
|
@@ -7,7 +7,9 @@ export type IHtmlNodeProps = {
|
|
|
7
7
|
graphModel: GraphModel
|
|
8
8
|
}
|
|
9
9
|
|
|
10
|
-
export class HtmlNode
|
|
10
|
+
export class HtmlNode<
|
|
11
|
+
P extends IHtmlNodeProps = IHtmlNodeProps,
|
|
12
|
+
> extends BaseNode<P> {
|
|
11
13
|
ref = createRef()
|
|
12
14
|
currentProperties?: string
|
|
13
15
|
preProperties?: string
|
|
@@ -52,14 +54,14 @@ export class HtmlNode extends BaseNode<IHtmlNodeProps> {
|
|
|
52
54
|
}
|
|
53
55
|
|
|
54
56
|
componentDidMount() {
|
|
55
|
-
console.log('HtmlNode --->>> componentDidMount - 初始化内容')
|
|
57
|
+
// console.log('HtmlNode --->>> componentDidMount - 初始化内容')
|
|
56
58
|
if (this.shouldUpdate() && this.rootEl) {
|
|
57
59
|
this.setHtml(this.rootEl)
|
|
58
60
|
}
|
|
59
61
|
}
|
|
60
62
|
|
|
61
63
|
componentDidUpdate() {
|
|
62
|
-
console.log('HtmlNode --->>> componentDidUpdate - 更新节点内容')
|
|
64
|
+
// console.log('HtmlNode --->>> componentDidUpdate - 更新节点内容')
|
|
63
65
|
// DONE: 将 componentDidMount 和 componentDidUpdate 区分开,如果写在一次,渲染 React 组件会重复初始化,消耗过多资源
|
|
64
66
|
// 为了保证历史兼容性,先将默认 HTML 节点的 setHtml 和 confirmUpdate 保持一直,用户可通过自定义的方式重新定义
|
|
65
67
|
if (this.shouldUpdate() && this.rootEl) {
|
|
@@ -7,7 +7,9 @@ export type IPolygonNodeProps = {
|
|
|
7
7
|
graphModel: GraphModel
|
|
8
8
|
}
|
|
9
9
|
|
|
10
|
-
export class PolygonNode
|
|
10
|
+
export class PolygonNode<
|
|
11
|
+
P extends IPolygonNodeProps = IPolygonNodeProps,
|
|
12
|
+
> extends BaseNode<P> {
|
|
11
13
|
getShape() {
|
|
12
14
|
const { model } = this.props
|
|
13
15
|
const { x, y, width, height, points } = model as PolygonNodeModel
|
|
@@ -8,7 +8,9 @@ export type IRectNodeProps = {
|
|
|
8
8
|
graphModel: GraphModel
|
|
9
9
|
}
|
|
10
10
|
|
|
11
|
-
export class RectNode
|
|
11
|
+
export class RectNode<
|
|
12
|
+
P extends IRectNodeProps = IRectNodeProps,
|
|
13
|
+
> extends BaseNode<P> {
|
|
12
14
|
getShape(): h.JSX.Element | null {
|
|
13
15
|
const { model } = this.props
|
|
14
16
|
const style = model.getNodeStyle()
|
|
@@ -7,7 +7,9 @@ export type ITextNodeProps = {
|
|
|
7
7
|
graphModel: GraphModel
|
|
8
8
|
}
|
|
9
9
|
|
|
10
|
-
export class TextNode
|
|
10
|
+
export class TextNode<
|
|
11
|
+
P extends ITextNodeProps = ITextNodeProps,
|
|
12
|
+
> extends BaseNode<P> {
|
|
11
13
|
getBackground() {
|
|
12
14
|
const { model } = this.props
|
|
13
15
|
const style = model.getTextStyle()
|
|
@@ -18,7 +20,7 @@ export class TextNode extends BaseNode<ITextNodeProps> {
|
|
|
18
20
|
const rectAttr = {
|
|
19
21
|
...style.background,
|
|
20
22
|
x,
|
|
21
|
-
y
|
|
23
|
+
y,
|
|
22
24
|
width,
|
|
23
25
|
height,
|
|
24
26
|
}
|
|
@@ -33,7 +33,7 @@ export class CanvasOverlay extends Component<IProps, IState> {
|
|
|
33
33
|
eventCenter,
|
|
34
34
|
model: undefined,
|
|
35
35
|
})
|
|
36
|
-
// 当ctrl键被按住的时候,可以放大缩小。
|
|
36
|
+
// 当 ctrl、cmd 键被按住的时候,可以放大缩小。
|
|
37
37
|
this.state = {
|
|
38
38
|
isDragging: false,
|
|
39
39
|
}
|
|
@@ -65,8 +65,8 @@ export class CanvasOverlay extends Component<IProps, IState> {
|
|
|
65
65
|
graphModel,
|
|
66
66
|
} = this.props
|
|
67
67
|
const { deltaX: eX, deltaY: eY } = ev
|
|
68
|
-
// 如果没有禁止滚动移动画布, 并且当前触发的时候ctrl键没有按住, 那么移动画布
|
|
69
|
-
if (!editConfigModel.stopScrollGraph && ev.ctrlKey
|
|
68
|
+
// 如果没有禁止滚动移动画布, 并且当前触发的时候ctrl键、cmd键没有按住, 那么移动画布
|
|
69
|
+
if (!editConfigModel.stopScrollGraph && !ev.ctrlKey && !ev.metaKey) {
|
|
70
70
|
ev.preventDefault()
|
|
71
71
|
this.stepScrollX += eX
|
|
72
72
|
this.stepScrollY += eY
|
|
@@ -84,7 +84,7 @@ export class CanvasOverlay extends Component<IProps, IState> {
|
|
|
84
84
|
}
|
|
85
85
|
return
|
|
86
86
|
}
|
|
87
|
-
// 如果没有禁止缩放画布,那么进行缩放. 在禁止缩放画布后,按住ctrl键也不能缩放了。
|
|
87
|
+
// 如果没有禁止缩放画布,那么进行缩放. 在禁止缩放画布后,按住 ctrl、cmd 键也不能缩放了。
|
|
88
88
|
if (!editConfigModel.stopZoomGraph) {
|
|
89
89
|
ev.preventDefault()
|
|
90
90
|
const position = graphModel.getPointByClient({
|
|
@@ -123,6 +123,7 @@ export class CanvasOverlay extends Component<IProps, IState> {
|
|
|
123
123
|
})
|
|
124
124
|
}
|
|
125
125
|
}
|
|
126
|
+
// 鼠标、触摸板 按下
|
|
126
127
|
mouseDownHandler = (ev: MouseEvent) => {
|
|
127
128
|
const {
|
|
128
129
|
graphModel: {
|