@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
|
@@ -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: {
|
|
@@ -1,26 +1,40 @@
|
|
|
1
|
-
|
|
1
|
+
import { createElement as h } from 'preact/compat'
|
|
2
|
+
import { forEach, toPairs } from 'lodash-es'
|
|
3
|
+
import { LogicFlow } from '../..'
|
|
4
|
+
|
|
5
|
+
export type ICircleProps = {
|
|
6
|
+
x?: number
|
|
7
|
+
y?: number
|
|
8
|
+
r?: number
|
|
9
|
+
className?: string
|
|
10
|
+
} & LogicFlow.CommonTheme
|
|
11
|
+
|
|
12
|
+
export function Circle(props: ICircleProps): h.JSX.Element {
|
|
2
13
|
const { x = 0, y = 0, r = 4, className } = props
|
|
3
|
-
|
|
14
|
+
|
|
15
|
+
const attrs: ICircleProps = {
|
|
4
16
|
cx: x,
|
|
5
17
|
cy: y,
|
|
6
18
|
r,
|
|
7
19
|
fill: 'transparent',
|
|
8
20
|
fillOpacity: 1,
|
|
9
|
-
strokeWidth:
|
|
21
|
+
strokeWidth: 1,
|
|
10
22
|
stroke: '#000',
|
|
11
23
|
strokeOpacity: 1,
|
|
12
24
|
}
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
if (
|
|
25
|
+
|
|
26
|
+
forEach(toPairs(props), ([k, v]: [k: string, v: any]) => {
|
|
27
|
+
if (typeof v !== 'object') {
|
|
16
28
|
attrs[k] = v
|
|
17
29
|
}
|
|
18
30
|
})
|
|
31
|
+
|
|
19
32
|
if (className) {
|
|
20
33
|
attrs.className = `lf-basic-shape ${className}`
|
|
21
34
|
} else {
|
|
22
|
-
attrs.className =
|
|
35
|
+
attrs.className = `lf-basic-shape`
|
|
23
36
|
}
|
|
37
|
+
|
|
24
38
|
return <circle {...attrs} />
|
|
25
39
|
}
|
|
26
40
|
|
|
@@ -1,5 +1,18 @@
|
|
|
1
|
-
|
|
1
|
+
import { createElement as h } from 'preact/compat'
|
|
2
|
+
import { forEach, toPairs } from 'lodash-es'
|
|
3
|
+
import { LogicFlow } from '../..'
|
|
4
|
+
|
|
5
|
+
export type IEllipseProps = {
|
|
6
|
+
x?: number
|
|
7
|
+
y?: number
|
|
8
|
+
rx?: number
|
|
9
|
+
ry?: number
|
|
10
|
+
className?: string
|
|
11
|
+
} & LogicFlow.CommonTheme
|
|
12
|
+
|
|
13
|
+
export function Ellipse(props: IEllipseProps): h.JSX.Element {
|
|
2
14
|
const { x = 0, y = 0, rx = 4, ry = 4, className } = props
|
|
15
|
+
|
|
3
16
|
const attrs: Record<string, any> = {
|
|
4
17
|
cx: x,
|
|
5
18
|
cy: y,
|
|
@@ -7,21 +20,22 @@ export function Ellipse(props) {
|
|
|
7
20
|
ry,
|
|
8
21
|
fill: 'transparent',
|
|
9
22
|
fillOpacity: 1,
|
|
10
|
-
strokeWidth:
|
|
23
|
+
strokeWidth: 1,
|
|
11
24
|
stroke: '#000',
|
|
12
25
|
strokeOpacity: 1,
|
|
13
26
|
}
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
if (valueType !== 'object') {
|
|
27
|
+
forEach(toPairs(props), ([k, v]: [k: string, v: any]) => {
|
|
28
|
+
if (typeof v !== 'object') {
|
|
17
29
|
attrs[k] = v
|
|
18
30
|
}
|
|
19
31
|
})
|
|
32
|
+
|
|
20
33
|
if (className) {
|
|
21
34
|
attrs.className = `lf-basic-shape ${className}`
|
|
22
35
|
} else {
|
|
23
|
-
attrs.className =
|
|
36
|
+
attrs.className = `lf-basic-shape`
|
|
24
37
|
}
|
|
38
|
+
|
|
25
39
|
return <ellipse {...attrs} />
|
|
26
40
|
}
|
|
27
41
|
|
package/src/view/shape/Line.tsx
CHANGED
|
@@ -1,23 +1,38 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
1
|
+
import { createElement as h } from 'preact/compat'
|
|
2
|
+
import { forEach, toPairs } from 'lodash-es'
|
|
3
|
+
|
|
4
|
+
export type ILineProps = {
|
|
5
|
+
id?: string
|
|
6
|
+
tabindex?: number
|
|
7
|
+
x1?: number
|
|
8
|
+
y1?: number
|
|
9
|
+
x2?: number
|
|
10
|
+
y2?: number
|
|
11
|
+
stroke?: string // Color
|
|
12
|
+
className?: string
|
|
13
|
+
style?: h.JSX.CSSProperties
|
|
14
|
+
[key: string]: any
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
export function Line(props: ILineProps): h.JSX.Element {
|
|
18
|
+
const attrs: ILineProps = {
|
|
3
19
|
// default
|
|
4
20
|
x1: 10,
|
|
5
21
|
y1: 10,
|
|
6
22
|
x2: 20,
|
|
7
23
|
y2: 20,
|
|
8
24
|
stroke: 'black',
|
|
9
|
-
// ...props
|
|
25
|
+
// ...props
|
|
10
26
|
}
|
|
11
|
-
|
|
27
|
+
|
|
28
|
+
forEach(toPairs(props), ([k, v]: [k: string, v: any]) => {
|
|
12
29
|
if (k === 'style') {
|
|
13
30
|
attrs[k] = v
|
|
14
|
-
} else {
|
|
15
|
-
|
|
16
|
-
if (valueType !== 'object') {
|
|
17
|
-
attrs[k] = v
|
|
18
|
-
}
|
|
31
|
+
} else if (typeof v !== 'object') {
|
|
32
|
+
attrs[k] = v
|
|
19
33
|
}
|
|
20
34
|
})
|
|
35
|
+
|
|
21
36
|
return <line {...attrs} />
|
|
22
37
|
}
|
|
23
38
|
|
package/src/view/shape/Path.tsx
CHANGED
|
@@ -1,18 +1,21 @@
|
|
|
1
|
-
|
|
1
|
+
import { createElement as h } from 'preact/compat'
|
|
2
|
+
import { forEach, toPairs } from 'lodash-es'
|
|
3
|
+
|
|
4
|
+
export type IPathProps = {
|
|
2
5
|
d: string
|
|
3
6
|
[key: string]: any
|
|
4
7
|
}
|
|
5
8
|
|
|
6
|
-
export function Path(props:
|
|
7
|
-
const attrs = {
|
|
9
|
+
export function Path(props: IPathProps): h.JSX.Element {
|
|
10
|
+
const attrs: Record<string, any> = {
|
|
8
11
|
d: '',
|
|
9
12
|
}
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
if (k === 'style' || valueType !== 'object') {
|
|
13
|
+
forEach(toPairs(props), ([k, v]: [key: string, v: any]) => {
|
|
14
|
+
if (k === 'style' || typeof v !== 'object') {
|
|
13
15
|
attrs[k] = v
|
|
14
16
|
}
|
|
15
17
|
})
|
|
18
|
+
|
|
16
19
|
return <path {...attrs} />
|
|
17
20
|
}
|
|
18
21
|
|
|
@@ -1,14 +1,16 @@
|
|
|
1
|
-
import
|
|
1
|
+
import { createElement as h } from 'preact/compat'
|
|
2
|
+
import { forEach, toPairs } from 'lodash-es'
|
|
3
|
+
import { LogicFlow } from '../..'
|
|
2
4
|
|
|
3
|
-
// TODO: 定义基础图形的类型
|
|
4
5
|
export type IPolygonProps = {
|
|
5
6
|
points: LogicFlow.PointTuple[]
|
|
7
|
+
x?: number
|
|
8
|
+
y?: number
|
|
6
9
|
className?: string
|
|
7
|
-
[key: string]: any
|
|
8
10
|
}
|
|
9
11
|
|
|
10
|
-
export function Polygon(props: IPolygonProps) {
|
|
11
|
-
const { points, className } = props
|
|
12
|
+
export function Polygon(props: IPolygonProps): h.JSX.Element {
|
|
13
|
+
const { points = [], className } = props
|
|
12
14
|
const attrs: Record<string, any> = {
|
|
13
15
|
fill: 'transparent',
|
|
14
16
|
fillOpacity: 1,
|
|
@@ -17,16 +19,17 @@ export function Polygon(props: IPolygonProps) {
|
|
|
17
19
|
strokeOpacity: 1,
|
|
18
20
|
points: '',
|
|
19
21
|
}
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
if (
|
|
22
|
+
|
|
23
|
+
forEach(toPairs(props), ([k, v]: [k: string, v: any]) => {
|
|
24
|
+
if (typeof v !== 'object') {
|
|
23
25
|
attrs[k] = v
|
|
24
26
|
}
|
|
25
27
|
})
|
|
28
|
+
|
|
26
29
|
if (className) {
|
|
27
|
-
attrs.
|
|
30
|
+
attrs.classNmae = `lf-basic-shape ${className}`
|
|
28
31
|
} else {
|
|
29
|
-
attrs.className = 'lf-shape'
|
|
32
|
+
attrs.className = 'lf-basic-shape'
|
|
30
33
|
}
|
|
31
34
|
attrs.points = points.map((point) => point.join(',')).join(' ')
|
|
32
35
|
|
|
@@ -1,18 +1,30 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
1
|
+
import { createElement as h } from 'preact/compat'
|
|
2
|
+
import { forEach, toPairs } from 'lodash-es'
|
|
3
|
+
|
|
4
|
+
export type IPolylineProps = {
|
|
5
|
+
points: string
|
|
6
|
+
pathLength?: number | 'none'
|
|
7
|
+
className?: string
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
export function Polyline(props: IPolylineProps): h.JSX.Element {
|
|
11
|
+
const { className } = props
|
|
12
|
+
const attrs: Record<string, unknown> = {
|
|
3
13
|
points: '',
|
|
4
14
|
fill: 'none',
|
|
5
15
|
}
|
|
6
|
-
|
|
16
|
+
|
|
17
|
+
forEach(toPairs(props), ([k, v]: [k: string, v: unknown]) => {
|
|
7
18
|
if (k === 'style') {
|
|
8
19
|
attrs[k] = v
|
|
9
|
-
} else {
|
|
10
|
-
|
|
11
|
-
if (valueType !== 'object') {
|
|
12
|
-
attrs[k] = v
|
|
13
|
-
}
|
|
20
|
+
} else if (typeof v !== 'object') {
|
|
21
|
+
attrs[k] = v
|
|
14
22
|
}
|
|
15
23
|
})
|
|
24
|
+
if (className) {
|
|
25
|
+
attrs.className = `${className}`
|
|
26
|
+
}
|
|
27
|
+
|
|
16
28
|
return <polyline {...attrs} />
|
|
17
29
|
}
|
|
18
30
|
|