@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
package/src/LogicFlow.tsx
CHANGED
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
import { ComponentType, createElement as h, render } from 'preact/compat'
|
|
2
|
-
import { cloneDeep, forEach } from 'lodash-es'
|
|
2
|
+
import { cloneDeep, forEach, indexOf } from 'lodash-es'
|
|
3
3
|
import { observer } from '.'
|
|
4
4
|
import { Options as LFOptions } from './options'
|
|
5
5
|
import * as _Model from './model'
|
|
6
6
|
import {
|
|
7
7
|
BaseEdgeModel,
|
|
8
8
|
BaseNodeModel,
|
|
9
|
-
|
|
9
|
+
IEditConfigType,
|
|
10
10
|
GraphModel,
|
|
11
11
|
SnaplineModel,
|
|
12
12
|
ZoomParamType,
|
|
@@ -16,16 +16,15 @@ import Graph from './view/Graph'
|
|
|
16
16
|
import * as _View from './view'
|
|
17
17
|
import { formatData } from './util'
|
|
18
18
|
|
|
19
|
-
import Dnd from './view/behavior
|
|
20
|
-
import Tool from './tool
|
|
21
|
-
import { snapline } from './tool'
|
|
22
|
-
import Keyboard from './keyboard'
|
|
19
|
+
import { Dnd, snapline } from './view/behavior'
|
|
20
|
+
import Tool from './tool'
|
|
23
21
|
import History from './history'
|
|
22
|
+
import Keyboard, { initDefaultShortcut } from './keyboard'
|
|
24
23
|
import { EventCallback, CallbackArgs, EventArgs } from './event/eventEmitter'
|
|
25
24
|
import { ElementType, EventType, SegmentDirection } from './constant'
|
|
26
|
-
|
|
25
|
+
|
|
27
26
|
import Extension = LogicFlow.Extension
|
|
28
|
-
import
|
|
27
|
+
import ExtensionConfig = LogicFlow.ExtensionConfig
|
|
29
28
|
import ExtensionConstructor = LogicFlow.ExtensionConstructor
|
|
30
29
|
import GraphConfigData = LogicFlow.GraphConfigData
|
|
31
30
|
import NodeConfig = LogicFlow.NodeConfig
|
|
@@ -38,11 +37,13 @@ import RegisterParam = LogicFlow.RegisterParam
|
|
|
38
37
|
import GraphElements = LogicFlow.GraphElements
|
|
39
38
|
import Position = LogicFlow.Position
|
|
40
39
|
import PointTuple = LogicFlow.PointTuple
|
|
41
|
-
import
|
|
40
|
+
import ExtensionRenderFunc = LogicFlow.ExtensionRenderFunc
|
|
42
41
|
import RegisterElementFunc = LogicFlow.RegisterElementFunc
|
|
43
42
|
import PropertiesType = LogicFlow.PropertiesType
|
|
44
43
|
import BaseNodeModelCtor = LogicFlow.BaseNodeModelCtor
|
|
45
44
|
import ClientPosition = LogicFlow.ClientPosition
|
|
45
|
+
import ExtensionDefinition = LogicFlow.ExtensionDefinition
|
|
46
|
+
import ExtensionType = LogicFlow.ExtensionType
|
|
46
47
|
|
|
47
48
|
const pluginFlag = Symbol('plugin registered by Logicflow.use')
|
|
48
49
|
|
|
@@ -61,13 +62,13 @@ export class LogicFlow {
|
|
|
61
62
|
tool: Tool
|
|
62
63
|
snaplineModel?: SnaplineModel
|
|
63
64
|
|
|
64
|
-
components:
|
|
65
|
+
components: ExtensionRenderFunc[] = []
|
|
65
66
|
// 个性配置的插件,覆盖全局配置的插件
|
|
66
|
-
readonly plugins:
|
|
67
|
+
readonly plugins: ExtensionType[]
|
|
67
68
|
// 全局配置的插件,所有的LogicFlow示例都会使用
|
|
68
|
-
static extensions: Map<string,
|
|
69
|
+
static extensions: Map<string, ExtensionConfig> = new Map()
|
|
69
70
|
// 插件扩展方法
|
|
70
|
-
extension: Record<string, Extension> = {}
|
|
71
|
+
extension: Record<string, Extension | ExtensionDefinition> = {}
|
|
71
72
|
|
|
72
73
|
readonly width?: number // 只读:画布宽度
|
|
73
74
|
readonly height?: number // 只读:画布高度
|
|
@@ -78,19 +79,23 @@ export class LogicFlow {
|
|
|
78
79
|
* 包括 adapterIn 和 adapterOut 两个方法
|
|
79
80
|
*/
|
|
80
81
|
// TODO: 如何让用户执行时定义下面方法参数和返回值的类型
|
|
81
|
-
|
|
82
|
-
|
|
82
|
+
adapterIn?: (data: unknown) => GraphData
|
|
83
|
+
adapterOut?: (data: GraphData, ...rest: any) => unknown;
|
|
83
84
|
|
|
84
85
|
// 支持插件在 LogicFlow 实例上增加自定义方法
|
|
85
86
|
[propName: string]: any
|
|
86
87
|
|
|
87
|
-
private initContainer(
|
|
88
|
+
private initContainer(
|
|
89
|
+
container: HTMLElement | HTMLDivElement,
|
|
90
|
+
width?: number,
|
|
91
|
+
height?: number,
|
|
92
|
+
) {
|
|
88
93
|
// TODO: 确认是否需要,后续是否只要返回 container 即可(下面方法是为了解决事件绑定问题的)
|
|
89
94
|
// fix: destroy keyboard events while destroy LogicFlow.(#1110)
|
|
90
95
|
const lfContainer = document.createElement('div')
|
|
91
96
|
lfContainer.style.position = 'relative'
|
|
92
|
-
lfContainer.style.width = '100%'
|
|
93
|
-
lfContainer.style.height = '100%'
|
|
97
|
+
lfContainer.style.width = width ? `${width}px` : '100%'
|
|
98
|
+
lfContainer.style.height = height ? `${height}px` : '100%'
|
|
94
99
|
container.innerHTML = ''
|
|
95
100
|
container.appendChild(lfContainer)
|
|
96
101
|
return lfContainer
|
|
@@ -102,8 +107,9 @@ export class LogicFlow {
|
|
|
102
107
|
|
|
103
108
|
constructor(options: LFOptions.Common) {
|
|
104
109
|
const initOptions = LFOptions.get(options)
|
|
110
|
+
const { container, width, height } = initOptions
|
|
105
111
|
this.options = initOptions
|
|
106
|
-
this.container = this.initContainer(
|
|
112
|
+
this.container = this.initContainer(container, width, height)
|
|
107
113
|
this.graphModel = new GraphModel({
|
|
108
114
|
...initOptions,
|
|
109
115
|
container: this.container, // TODO:测试该部分是否会有问题
|
|
@@ -685,13 +691,10 @@ export class LogicFlow {
|
|
|
685
691
|
* @param edges
|
|
686
692
|
* @param distance
|
|
687
693
|
*/
|
|
688
|
-
addElements(
|
|
689
|
-
{ nodes, edges }: GraphConfigData,
|
|
690
|
-
distance = 40,
|
|
691
|
-
): GraphElements | undefined {
|
|
694
|
+
addElements({ nodes, edges }: GraphConfigData, distance = 40): GraphElements {
|
|
692
695
|
// TODO: 1. 解决下面方法中 distance 传参缺未使用的问题;该方法在快捷键中有调用
|
|
693
|
-
console.log('addElements', nodes, edges, distance)
|
|
694
696
|
// TODO: 2. review 一下本函数代码逻辑,确认 nodeIdMap 的作用,看是否有优化的空间
|
|
697
|
+
console.log('distance', distance)
|
|
695
698
|
const nodeIdMap: Record<string, string> = {}
|
|
696
699
|
const elements: GraphElements = {
|
|
697
700
|
nodes: [],
|
|
@@ -700,11 +703,9 @@ export class LogicFlow {
|
|
|
700
703
|
forEach(nodes, (node) => {
|
|
701
704
|
const nodeId = node.id
|
|
702
705
|
const nodeModel = this.addNode(node)
|
|
703
|
-
|
|
704
706
|
if (nodeId) nodeIdMap[nodeId] = nodeModel.id
|
|
705
707
|
elements.nodes.push(nodeModel)
|
|
706
708
|
})
|
|
707
|
-
|
|
708
709
|
forEach(edges, (edge) => {
|
|
709
710
|
let { sourceNodeId, targetNodeId } = edge
|
|
710
711
|
if (nodeIdMap[sourceNodeId]) sourceNodeId = nodeIdMap[sourceNodeId]
|
|
@@ -882,7 +883,7 @@ export class LogicFlow {
|
|
|
882
883
|
* @param {object} config 编辑配置
|
|
883
884
|
* @see todo docs link
|
|
884
885
|
*/
|
|
885
|
-
updateEditConfig(config:
|
|
886
|
+
updateEditConfig(config: Partial<IEditConfigType>) {
|
|
886
887
|
const { editConfigModel, transformModel } = this.graphModel
|
|
887
888
|
editConfigModel.updateEditConfig(config)
|
|
888
889
|
if (config?.stopMoveGraph !== undefined) {
|
|
@@ -1066,6 +1067,7 @@ export class LogicFlow {
|
|
|
1066
1067
|
)
|
|
1067
1068
|
this.emit(EventType.GRAPH_RENDERED, {
|
|
1068
1069
|
data: this.graphModel.modelToGraphData(),
|
|
1070
|
+
graphModel: this.graphModel,
|
|
1069
1071
|
})
|
|
1070
1072
|
}
|
|
1071
1073
|
|
|
@@ -1292,19 +1294,14 @@ export class LogicFlow {
|
|
|
1292
1294
|
* @param props
|
|
1293
1295
|
*/
|
|
1294
1296
|
static use(
|
|
1295
|
-
extension: ExtensionConstructor,
|
|
1297
|
+
extension: ExtensionConstructor | ExtensionDefinition,
|
|
1296
1298
|
props?: Record<string, unknown>,
|
|
1297
1299
|
): void {
|
|
1298
|
-
|
|
1300
|
+
const { pluginName } = extension
|
|
1299
1301
|
if (!pluginName) {
|
|
1300
|
-
|
|
1301
|
-
`请给插件${
|
|
1302
|
-
extension.name || extension.constructor.name
|
|
1303
|
-
}指定pluginName!`,
|
|
1304
|
-
)
|
|
1305
|
-
pluginName = extension.name // 兼容以前name的情况,1.0版本去掉。
|
|
1302
|
+
throw new Error(`请给插件指定 pluginName!`)
|
|
1306
1303
|
}
|
|
1307
|
-
// TODO:
|
|
1304
|
+
// TODO: 应该在何时进行插件的销毁???
|
|
1308
1305
|
// const preExtension = this.extensions.get(pluginName)?.extension
|
|
1309
1306
|
// preExtension?.destroy?.() // 该代码应该有问题,因为 preExtension 直接用的是 Constructor,没有实例化。无法访问实例方法 destroy
|
|
1310
1307
|
|
|
@@ -1316,19 +1313,26 @@ export class LogicFlow {
|
|
|
1316
1313
|
}
|
|
1317
1314
|
|
|
1318
1315
|
private installPlugins(disabledPlugins: string[] = []) {
|
|
1316
|
+
const extensionsAddByUse = Array.from(
|
|
1317
|
+
LogicFlow.extensions,
|
|
1318
|
+
([, extension]) => extension,
|
|
1319
|
+
)
|
|
1319
1320
|
// 安装插件,优先使用个性插件
|
|
1320
|
-
const extensions = this.plugins
|
|
1321
|
-
|
|
1322
|
-
let extension:
|
|
1323
|
-
let props
|
|
1324
|
-
|
|
1321
|
+
const extensions = [...this.plugins, ...extensionsAddByUse]
|
|
1322
|
+
forEach(extensions, (ext) => {
|
|
1323
|
+
let extension: ExtensionConstructor | ExtensionDefinition
|
|
1324
|
+
let props: Record<string, any> | undefined
|
|
1325
|
+
|
|
1326
|
+
if (pluginFlag in ext) {
|
|
1325
1327
|
extension = ext.extension
|
|
1326
1328
|
props = ext.props
|
|
1327
1329
|
} else {
|
|
1328
1330
|
extension = ext
|
|
1329
1331
|
}
|
|
1330
|
-
|
|
1331
|
-
|
|
1332
|
+
|
|
1333
|
+
const pluginName = extension?.pluginName
|
|
1334
|
+
|
|
1335
|
+
if (indexOf(disabledPlugins, pluginName) === -1) {
|
|
1332
1336
|
this.installPlugin(extension, props)
|
|
1333
1337
|
}
|
|
1334
1338
|
})
|
|
@@ -1337,31 +1341,41 @@ export class LogicFlow {
|
|
|
1337
1341
|
/**
|
|
1338
1342
|
* 加载插件-内部方法
|
|
1339
1343
|
*/
|
|
1340
|
-
private installPlugin(
|
|
1341
|
-
|
|
1342
|
-
|
|
1344
|
+
private installPlugin(
|
|
1345
|
+
extension: ExtensionConstructor | ExtensionDefinition,
|
|
1346
|
+
props?: Record<string, any>,
|
|
1347
|
+
) {
|
|
1348
|
+
if ('pluginName' in extension && 'install' in extension) {
|
|
1349
|
+
const { pluginName, install, render } = extension
|
|
1343
1350
|
if (pluginName) {
|
|
1344
1351
|
install && install.call(extension, this, LogicFlow)
|
|
1345
|
-
|
|
1352
|
+
render && this.components.push(render.bind(extension))
|
|
1346
1353
|
this.extension[pluginName] = extension
|
|
1347
1354
|
}
|
|
1348
1355
|
return
|
|
1349
1356
|
}
|
|
1350
|
-
|
|
1351
|
-
const
|
|
1357
|
+
|
|
1358
|
+
const ExtensionCtor = extension as ExtensionConstructor
|
|
1359
|
+
const pluginName = ExtensionCtor.pluginName
|
|
1360
|
+
const extensionIns = new ExtensionCtor({
|
|
1352
1361
|
lf: this,
|
|
1353
1362
|
LogicFlow,
|
|
1354
|
-
options: this.options.pluginsOptions ?? {},
|
|
1355
1363
|
props,
|
|
1364
|
+
// TODO: 这里的 options 应该传入插件对应的 options,而不是全局的 options
|
|
1365
|
+
// 所以应该这么写 this.options.pluginsOptions[ExtensionCtor.pluginName] ?? {}
|
|
1366
|
+
options: this.options.pluginsOptions?.[pluginName] ?? {},
|
|
1356
1367
|
})
|
|
1357
|
-
|
|
1358
|
-
this.components.push(
|
|
1359
|
-
this.extension[
|
|
1368
|
+
extensionIns.render &&
|
|
1369
|
+
this.components.push(extensionIns.render.bind(extensionIns))
|
|
1370
|
+
this.extension[pluginName] = extensionIns
|
|
1360
1371
|
}
|
|
1361
1372
|
}
|
|
1362
1373
|
|
|
1363
1374
|
// Option
|
|
1364
1375
|
export namespace LogicFlow {
|
|
1376
|
+
/**
|
|
1377
|
+
* LogicFlow init Options
|
|
1378
|
+
*/
|
|
1365
1379
|
export interface Options extends LFOptions.Common {}
|
|
1366
1380
|
|
|
1367
1381
|
export type DomAttributes = {
|
|
@@ -1369,13 +1383,19 @@ export namespace LogicFlow {
|
|
|
1369
1383
|
[key: string]: string | undefined
|
|
1370
1384
|
}
|
|
1371
1385
|
|
|
1372
|
-
export
|
|
1386
|
+
export interface PropertiesType {
|
|
1373
1387
|
width?: number
|
|
1374
1388
|
height?: number
|
|
1375
1389
|
rx?: number
|
|
1376
1390
|
ry?: number
|
|
1377
|
-
|
|
1391
|
+
|
|
1392
|
+
style?: LogicFlow.CommonTheme
|
|
1393
|
+
textStyle?: LogicFlow.CommonTheme
|
|
1394
|
+
|
|
1395
|
+
[key: string]: any
|
|
1396
|
+
}
|
|
1378
1397
|
export type AttributesType = Record<string, any>
|
|
1398
|
+
|
|
1379
1399
|
export type VectorData = {
|
|
1380
1400
|
deltaX: number
|
|
1381
1401
|
deltaY: number
|
|
@@ -1390,7 +1410,7 @@ export namespace LogicFlow {
|
|
|
1390
1410
|
}
|
|
1391
1411
|
export type Point = {
|
|
1392
1412
|
id?: string
|
|
1393
|
-
[key: string]: any
|
|
1413
|
+
[key: string]: any // TODO: 确认这个属性是干什么的呢?是有可以移除
|
|
1394
1414
|
} & Position
|
|
1395
1415
|
export type PointTuple = [number, number]
|
|
1396
1416
|
export type ClientPosition = {
|
|
@@ -1420,9 +1440,51 @@ export namespace LogicFlow {
|
|
|
1420
1440
|
}
|
|
1421
1441
|
export type TextConfig = {
|
|
1422
1442
|
value: string
|
|
1443
|
+
x: number
|
|
1444
|
+
y: number
|
|
1423
1445
|
editable?: boolean
|
|
1424
1446
|
draggable?: boolean
|
|
1425
|
-
|
|
1447
|
+
// 直接在这儿设置文本模式
|
|
1448
|
+
// overflowMode?: 'default' | 'autoWrap' | 'ellipsis'
|
|
1449
|
+
}
|
|
1450
|
+
|
|
1451
|
+
// label数据类型声明
|
|
1452
|
+
export type LabelConfig = {
|
|
1453
|
+
id?: string // label唯一标识
|
|
1454
|
+
x: number
|
|
1455
|
+
y: number
|
|
1456
|
+
content?: string // 富文本内容
|
|
1457
|
+
value: string // 纯文本内容
|
|
1458
|
+
rotate?: number // 旋转角度
|
|
1459
|
+
// 样式属性
|
|
1460
|
+
style?: h.JSX.CSSProperties // label自定义样式
|
|
1461
|
+
|
|
1462
|
+
// 编辑状态属性
|
|
1463
|
+
editable?: boolean
|
|
1464
|
+
draggable?: boolean
|
|
1465
|
+
labelWidth?: number
|
|
1466
|
+
textOverflowMode?: 'ellipsis' | 'wrap' | 'clip' | 'nowrap' | 'default'
|
|
1467
|
+
|
|
1468
|
+
// 当前 Label 是否渲染纵向文本
|
|
1469
|
+
vertical?: boolean
|
|
1470
|
+
}
|
|
1471
|
+
|
|
1472
|
+
export type LabelOption = {
|
|
1473
|
+
// 节点的所有 Label 是否纵向展示
|
|
1474
|
+
isVertical: boolean
|
|
1475
|
+
// 是否支持多个 label
|
|
1476
|
+
isMultiple: boolean
|
|
1477
|
+
// 允许设置多个 label 时最大个数
|
|
1478
|
+
maxCount?: number
|
|
1479
|
+
}
|
|
1480
|
+
|
|
1481
|
+
export interface LabelData extends LabelConfig {
|
|
1482
|
+
id: string
|
|
1483
|
+
x: number
|
|
1484
|
+
y: number
|
|
1485
|
+
content: string
|
|
1486
|
+
value: string
|
|
1487
|
+
}
|
|
1426
1488
|
|
|
1427
1489
|
export type AppendConfig = {
|
|
1428
1490
|
startIndex: number
|
|
@@ -1469,28 +1531,30 @@ export namespace LogicFlow {
|
|
|
1469
1531
|
[key: string]: any
|
|
1470
1532
|
}
|
|
1471
1533
|
|
|
1472
|
-
export interface NodeConfig {
|
|
1534
|
+
export interface NodeConfig<P extends PropertiesType = PropertiesType> {
|
|
1473
1535
|
id?: string
|
|
1474
1536
|
type: string
|
|
1475
1537
|
x: number
|
|
1476
1538
|
y: number
|
|
1477
1539
|
text?: TextConfig | string
|
|
1478
1540
|
zIndex?: number
|
|
1479
|
-
properties?:
|
|
1541
|
+
properties?: P
|
|
1480
1542
|
virtual?: boolean // 是否虚拟节点
|
|
1481
1543
|
rotate?: number
|
|
1482
1544
|
|
|
1545
|
+
rotatable?: boolean // 节点是否可旋转
|
|
1546
|
+
resizable?: boolean // 节点是否可缩放
|
|
1547
|
+
|
|
1483
1548
|
[key: string]: any
|
|
1484
1549
|
}
|
|
1485
1550
|
|
|
1486
1551
|
export interface NodeData extends NodeConfig {
|
|
1487
1552
|
id: string
|
|
1488
1553
|
text?: TextConfig
|
|
1489
|
-
|
|
1490
1554
|
[key: string]: unknown
|
|
1491
1555
|
}
|
|
1492
1556
|
|
|
1493
|
-
export interface EdgeConfig {
|
|
1557
|
+
export interface EdgeConfig<P extends PropertiesType = PropertiesType> {
|
|
1494
1558
|
id?: string
|
|
1495
1559
|
type?: string // TODO: 将所有类型选项列出来;LogicFlow 内部默认为 polyline
|
|
1496
1560
|
|
|
@@ -1498,13 +1562,12 @@ export namespace LogicFlow {
|
|
|
1498
1562
|
sourceAnchorId?: string
|
|
1499
1563
|
targetNodeId: string
|
|
1500
1564
|
targetAnchorId?: string
|
|
1501
|
-
|
|
1502
1565
|
startPoint?: Point
|
|
1503
1566
|
endPoint?: Point
|
|
1504
1567
|
text?: TextConfig | string
|
|
1505
1568
|
pointsList?: Point[]
|
|
1506
1569
|
zIndex?: number
|
|
1507
|
-
properties?:
|
|
1570
|
+
properties?: P
|
|
1508
1571
|
}
|
|
1509
1572
|
|
|
1510
1573
|
export interface EdgeData extends EdgeConfig {
|
|
@@ -1553,6 +1616,8 @@ export namespace LogicFlow {
|
|
|
1553
1616
|
radius?: number
|
|
1554
1617
|
rx?: number
|
|
1555
1618
|
ry?: number
|
|
1619
|
+
width?: number
|
|
1620
|
+
height?: number
|
|
1556
1621
|
path?: string
|
|
1557
1622
|
[key: string]: unknown
|
|
1558
1623
|
}
|
|
@@ -1636,6 +1701,7 @@ export namespace LogicFlow {
|
|
|
1636
1701
|
* ellipsis: 超出省略
|
|
1637
1702
|
*/
|
|
1638
1703
|
overflowMode?: 'default' | 'autoWrap' | 'ellipsis'
|
|
1704
|
+
textWidth?: number
|
|
1639
1705
|
background?: RectTheme
|
|
1640
1706
|
/**
|
|
1641
1707
|
* 背景区域 padding
|
|
@@ -1643,6 +1709,7 @@ export namespace LogicFlow {
|
|
|
1643
1709
|
*/
|
|
1644
1710
|
wrapPadding?: string
|
|
1645
1711
|
} & TextTheme
|
|
1712
|
+
|
|
1646
1713
|
// 边上文本样式
|
|
1647
1714
|
export type EdgeTextTheme = {
|
|
1648
1715
|
textWidth: number
|
|
@@ -1755,12 +1822,18 @@ export namespace LogicFlow {
|
|
|
1755
1822
|
|
|
1756
1823
|
// Render or Functions
|
|
1757
1824
|
export namespace LogicFlow {
|
|
1758
|
-
type FocusOnById = {
|
|
1759
|
-
|
|
1825
|
+
type FocusOnById = {
|
|
1826
|
+
id: string
|
|
1827
|
+
coordinate?: never
|
|
1828
|
+
}
|
|
1829
|
+
type FocusOnByCoordinate = {
|
|
1830
|
+
id?: string
|
|
1831
|
+
coordinate: Position
|
|
1832
|
+
}
|
|
1760
1833
|
export type FocusOnArgsType = FocusOnById | FocusOnByCoordinate
|
|
1761
1834
|
|
|
1762
|
-
export type BaseNodeModelCtor = typeof BaseNodeModel
|
|
1763
|
-
export type BaseEdgeModelCtor = typeof BaseEdgeModel
|
|
1835
|
+
export type BaseNodeModelCtor = typeof BaseNodeModel<PropertiesType>
|
|
1836
|
+
export type BaseEdgeModelCtor = typeof BaseEdgeModel<PropertiesType>
|
|
1764
1837
|
|
|
1765
1838
|
export type GraphElementCtor = BaseNodeModelCtor | BaseEdgeModelCtor
|
|
1766
1839
|
export type GraphElement = BaseNodeModel | BaseEdgeModel
|
|
@@ -1794,32 +1867,43 @@ export namespace LogicFlow {
|
|
|
1794
1867
|
new (options: LFOptions.Definition): LogicFlow
|
|
1795
1868
|
}
|
|
1796
1869
|
|
|
1797
|
-
|
|
1870
|
+
/**
|
|
1871
|
+
* Extension 插件类型
|
|
1872
|
+
*/
|
|
1873
|
+
export type ExtensionType = ExtensionConstructor | ExtensionDefinition
|
|
1874
|
+
export type ExtensionConfig = {
|
|
1798
1875
|
[pluginFlag]: symbol
|
|
1799
|
-
extension:
|
|
1800
|
-
props?: Record<string,
|
|
1876
|
+
extension: ExtensionType
|
|
1877
|
+
props?: Record<string, any> // TODO: 看这类型是否可以更精确
|
|
1801
1878
|
}
|
|
1802
1879
|
|
|
1803
|
-
export type
|
|
1880
|
+
export type IExtensionProps = {
|
|
1804
1881
|
lf: LogicFlow
|
|
1805
1882
|
LogicFlow: LogicFlowConstructor
|
|
1806
|
-
options: Record<string, unknown>
|
|
1807
1883
|
props?: Record<string, unknown>
|
|
1884
|
+
options: Record<string, unknown>
|
|
1808
1885
|
}
|
|
1809
1886
|
|
|
1810
1887
|
export interface ExtensionConstructor {
|
|
1811
1888
|
pluginName: string
|
|
1812
|
-
|
|
1813
|
-
new (props: ExtensionProps): Extension
|
|
1889
|
+
new (props: IExtensionProps): Extension
|
|
1814
1890
|
}
|
|
1815
1891
|
|
|
1816
|
-
export type
|
|
1892
|
+
export type ExtensionRenderFunc = (
|
|
1893
|
+
lf: LogicFlow,
|
|
1894
|
+
container: HTMLElement,
|
|
1895
|
+
) => void
|
|
1896
|
+
|
|
1897
|
+
// 对象形式定义的插件
|
|
1898
|
+
export type ExtensionDefinition = {
|
|
1899
|
+
pluginName: string
|
|
1900
|
+
install?: (lf: LogicFlow, LFCtor: LogicFlowConstructor) => void
|
|
1901
|
+
render?: ExtensionRenderFunc
|
|
1902
|
+
}
|
|
1817
1903
|
|
|
1818
1904
|
export interface Extension {
|
|
1819
|
-
|
|
1820
|
-
|
|
1821
|
-
render?: ExtensionRender
|
|
1822
|
-
destroy?: () => void
|
|
1905
|
+
render: ExtensionRenderFunc
|
|
1906
|
+
destroy?: () => void // TODO: 确认插件销毁函数参数类型
|
|
1823
1907
|
}
|
|
1824
1908
|
}
|
|
1825
1909
|
|
package/src/algorithm/edge.ts
CHANGED
package/src/algorithm/index.ts
CHANGED
package/src/algorithm/outline.ts
CHANGED
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
import { ModelType } from '../constant'
|
|
2
2
|
import {
|
|
3
3
|
Model,
|
|
4
|
-
PolylineEdgeModel,
|
|
5
|
-
BezierEdgeModel,
|
|
6
4
|
BaseNodeModel,
|
|
7
5
|
BaseEdgeModel,
|
|
8
6
|
LineEdgeModel,
|
|
7
|
+
BezierEdgeModel,
|
|
8
|
+
PolylineEdgeModel,
|
|
9
9
|
} from '../model'
|
|
10
10
|
import { points2PointsList, getBBoxOfPoints, getBezierPoints } from '../util'
|
|
11
11
|
|