@logicflow/core 2.2.0 → 2.2.1

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.
Files changed (236) hide show
  1. package/dist/index.css +3 -2
  2. package/dist/index.min.js +1 -1
  3. package/dist/index.min.js.map +1 -1
  4. package/es/LogicFlow.d.ts +9 -0
  5. package/es/LogicFlow.js +0 -1
  6. package/es/constant/index.d.ts +1 -1
  7. package/es/constant/index.js +1 -1
  8. package/es/constant/theme.d.ts +136 -0
  9. package/es/constant/theme.js +680 -0
  10. package/es/index.css +3 -2
  11. package/es/model/GraphModel.d.ts +10 -2
  12. package/es/model/GraphModel.js +48 -14
  13. package/es/model/TransformModel.js +9 -9
  14. package/es/model/edge/BaseEdgeModel.js +7 -2
  15. package/es/model/edge/PolylineEdgeModel.d.ts +7 -0
  16. package/es/model/edge/PolylineEdgeModel.js +136 -7
  17. package/es/model/node/BaseNodeModel.d.ts +12 -1
  18. package/es/model/node/BaseNodeModel.js +9 -2
  19. package/es/model/node/HtmlNodeModel.d.ts +12 -0
  20. package/es/model/node/HtmlNodeModel.js +19 -0
  21. package/es/model/node/PolygonNodeModel.js +3 -3
  22. package/es/options.d.ts +4 -2
  23. package/es/style/index.css +3 -2
  24. package/es/style/index.less +3 -2
  25. package/es/style/raw.d.ts +1 -1
  26. package/es/style/raw.js +1 -1
  27. package/es/tool/MultipleSelectTool.js +10 -5
  28. package/es/util/drag.js +0 -1
  29. package/es/util/edge.d.ts +40 -1
  30. package/es/util/edge.js +43 -9
  31. package/es/util/geometry.d.ts +8 -0
  32. package/es/util/geometry.js +79 -0
  33. package/es/util/theme.d.ts +2 -65
  34. package/es/util/theme.js +4 -281
  35. package/es/view/Anchor.d.ts +1 -0
  36. package/es/view/Anchor.js +24 -21
  37. package/es/view/Control.d.ts +5 -0
  38. package/es/view/Control.js +44 -57
  39. package/es/view/edge/BaseEdge.js +9 -0
  40. package/es/view/edge/PolylineEdge.js +13 -2
  41. package/es/view/node/BaseNode.d.ts +1 -0
  42. package/es/view/node/BaseNode.js +23 -11
  43. package/es/view/node/HtmlNode.js +2 -4
  44. package/es/view/overlay/CanvasOverlay.js +5 -2
  45. package/es/view/overlay/Grid.d.ts +12 -1
  46. package/es/view/overlay/Grid.js +85 -23
  47. package/es/view/overlay/OutlineOverlay.d.ts +1 -0
  48. package/es/view/overlay/OutlineOverlay.js +18 -17
  49. package/es/view/overlay/gridConfig.d.ts +46 -0
  50. package/es/view/overlay/gridConfig.js +99 -0
  51. package/es/view/shape/Polygon.d.ts +0 -7
  52. package/es/view/shape/Polygon.js +12 -43
  53. package/lib/LogicFlow.d.ts +9 -0
  54. package/lib/LogicFlow.js +0 -1
  55. package/lib/constant/index.d.ts +1 -1
  56. package/lib/constant/index.js +16 -2
  57. package/lib/constant/theme.d.ts +136 -0
  58. package/lib/constant/theme.js +683 -0
  59. package/lib/index.css +3 -2
  60. package/lib/model/GraphModel.d.ts +10 -2
  61. package/lib/model/GraphModel.js +49 -15
  62. package/lib/model/TransformModel.js +9 -9
  63. package/lib/model/edge/BaseEdgeModel.js +7 -2
  64. package/lib/model/edge/PolylineEdgeModel.d.ts +7 -0
  65. package/lib/model/edge/PolylineEdgeModel.js +136 -7
  66. package/lib/model/node/BaseNodeModel.d.ts +12 -1
  67. package/lib/model/node/BaseNodeModel.js +9 -2
  68. package/lib/model/node/HtmlNodeModel.d.ts +12 -0
  69. package/lib/model/node/HtmlNodeModel.js +19 -0
  70. package/lib/model/node/PolygonNodeModel.js +3 -3
  71. package/lib/options.d.ts +4 -2
  72. package/lib/style/index.css +3 -2
  73. package/lib/style/index.less +3 -2
  74. package/lib/style/raw.d.ts +1 -1
  75. package/lib/style/raw.js +1 -1
  76. package/lib/tool/MultipleSelectTool.js +10 -5
  77. package/lib/util/drag.js +0 -1
  78. package/lib/util/edge.d.ts +40 -1
  79. package/lib/util/edge.js +43 -9
  80. package/lib/util/geometry.d.ts +8 -0
  81. package/lib/util/geometry.js +81 -1
  82. package/lib/util/theme.d.ts +2 -65
  83. package/lib/util/theme.js +15 -292
  84. package/lib/view/Anchor.d.ts +1 -0
  85. package/lib/view/Anchor.js +24 -21
  86. package/lib/view/Control.d.ts +5 -0
  87. package/lib/view/Control.js +44 -57
  88. package/lib/view/edge/BaseEdge.js +9 -0
  89. package/lib/view/edge/PolylineEdge.js +13 -2
  90. package/lib/view/node/BaseNode.d.ts +1 -0
  91. package/lib/view/node/BaseNode.js +22 -10
  92. package/lib/view/node/HtmlNode.js +1 -3
  93. package/lib/view/overlay/CanvasOverlay.js +5 -2
  94. package/lib/view/overlay/Grid.d.ts +12 -1
  95. package/lib/view/overlay/Grid.js +83 -21
  96. package/lib/view/overlay/OutlineOverlay.d.ts +1 -0
  97. package/lib/view/overlay/OutlineOverlay.js +18 -17
  98. package/lib/view/overlay/gridConfig.d.ts +46 -0
  99. package/lib/view/overlay/gridConfig.js +104 -0
  100. package/lib/view/shape/Polygon.d.ts +0 -7
  101. package/lib/view/shape/Polygon.js +13 -45
  102. package/package.json +6 -1
  103. package/.turbo/turbo-build$colon$dev.log +0 -10
  104. package/.turbo/turbo-build.log +0 -33
  105. package/CHANGELOG.md +0 -1849
  106. package/__tests__/algorithm/egde.test.ts +0 -131
  107. package/__tests__/algorithm/index.test.ts +0 -74
  108. package/__tests__/algorithm/outline.test.ts +0 -43
  109. package/__tests__/bugs/1545-spec.test.ts +0 -42
  110. package/__tests__/event/event.test.ts +0 -22
  111. package/__tests__/history/history.test.ts +0 -28
  112. package/__tests__/logicflow.test.ts +0 -575
  113. package/__tests__/model/graphmodel.test.ts +0 -87
  114. package/__tests__/util/compatible.test.ts +0 -48
  115. package/__tests__/util/edge.test.ts +0 -224
  116. package/__tests__/util/geometry.test.ts +0 -14
  117. package/__tests__/util/graph.test.ts +0 -16
  118. package/__tests__/util/matrix.test.ts +0 -41
  119. package/__tests__/util/node.test.ts +0 -68
  120. package/__tests__/util/sampling.test.ts +0 -12
  121. package/__tests__/util/vector.test.ts +0 -50
  122. package/__tests__/util/zIndex.test.ts +0 -10
  123. package/src/LogicFlow.tsx +0 -2008
  124. package/src/algorithm/edge.ts +0 -67
  125. package/src/algorithm/index.ts +0 -70
  126. package/src/algorithm/outline.ts +0 -77
  127. package/src/algorithm/rotate.ts +0 -55
  128. package/src/common/drag.ts +0 -219
  129. package/src/common/history.ts +0 -108
  130. package/src/common/index.ts +0 -6
  131. package/src/common/keyboard.ts +0 -108
  132. package/src/common/matrix.ts +0 -122
  133. package/src/common/vector.ts +0 -93
  134. package/src/constant/index.ts +0 -179
  135. package/src/event/event.md +0 -66
  136. package/src/event/eventArgs.ts +0 -643
  137. package/src/event/eventEmitter.ts +0 -156
  138. package/src/history/index.ts +0 -119
  139. package/src/index.less +0 -1
  140. package/src/index.ts +0 -26
  141. package/src/keyboard/index.ts +0 -112
  142. package/src/keyboard/shortcut.ts +0 -200
  143. package/src/model/BaseModel.ts +0 -250
  144. package/src/model/EditConfigModel.ts +0 -334
  145. package/src/model/GraphModel.ts +0 -1788
  146. package/src/model/NestedTransformModel.ts +0 -121
  147. package/src/model/SnaplineModel.ts +0 -256
  148. package/src/model/TransformModel.ts +0 -258
  149. package/src/model/edge/BaseEdgeModel.ts +0 -777
  150. package/src/model/edge/BezierEdgeModel.ts +0 -197
  151. package/src/model/edge/LineEdgeModel.ts +0 -36
  152. package/src/model/edge/PolylineEdgeModel.ts +0 -672
  153. package/src/model/edge/index.ts +0 -4
  154. package/src/model/index.ts +0 -9
  155. package/src/model/node/BaseNodeModel.ts +0 -949
  156. package/src/model/node/CircleNodeModel.ts +0 -91
  157. package/src/model/node/DiamondNodeModel.ts +0 -132
  158. package/src/model/node/EllipseNodeModel.ts +0 -98
  159. package/src/model/node/HtmlNodeModel.ts +0 -50
  160. package/src/model/node/PolygonNodeModel.ts +0 -150
  161. package/src/model/node/RectNodeModel.ts +0 -69
  162. package/src/model/node/TextNodeModel.ts +0 -54
  163. package/src/model/node/index.ts +0 -8
  164. package/src/options.ts +0 -145
  165. package/src/style/index.less +0 -261
  166. package/src/style/raw.ts +0 -220
  167. package/src/tool/MultipleSelectTool.tsx +0 -132
  168. package/src/tool/TextEditTool.tsx +0 -193
  169. package/src/tool/index.ts +0 -101
  170. package/src/typings.d.ts +0 -5
  171. package/src/util/animation.ts +0 -29
  172. package/src/util/browser.ts +0 -4
  173. package/src/util/compatible.ts +0 -15
  174. package/src/util/drag.ts +0 -220
  175. package/src/util/edge.ts +0 -1060
  176. package/src/util/geometry.ts +0 -55
  177. package/src/util/graph.ts +0 -46
  178. package/src/util/index.ts +0 -17
  179. package/src/util/matrix.ts +0 -129
  180. package/src/util/mobx.ts +0 -23
  181. package/src/util/node.ts +0 -543
  182. package/src/util/raf.ts +0 -28
  183. package/src/util/resize.ts +0 -606
  184. package/src/util/sampling.ts +0 -85
  185. package/src/util/theme.ts +0 -375
  186. package/src/util/uuid.ts +0 -26
  187. package/src/util/vector.ts +0 -93
  188. package/src/util/zIndex.ts +0 -6
  189. package/src/view/Anchor.tsx +0 -445
  190. package/src/view/Control.tsx +0 -512
  191. package/src/view/Graph.tsx +0 -141
  192. package/src/view/Rotate.tsx +0 -113
  193. package/src/view/behavior/dnd.ts +0 -162
  194. package/src/view/behavior/index.ts +0 -2
  195. package/src/view/behavior/snapline.ts +0 -16
  196. package/src/view/edge/AdjustPoint.tsx +0 -425
  197. package/src/view/edge/Arrow.tsx +0 -54
  198. package/src/view/edge/BaseEdge.tsx +0 -650
  199. package/src/view/edge/BezierEdge.tsx +0 -101
  200. package/src/view/edge/LineEdge.tsx +0 -81
  201. package/src/view/edge/PolylineEdge.tsx +0 -299
  202. package/src/view/edge/index.ts +0 -6
  203. package/src/view/index.ts +0 -8
  204. package/src/view/node/BaseNode.tsx +0 -571
  205. package/src/view/node/CircleNode.tsx +0 -21
  206. package/src/view/node/DiamondNode.tsx +0 -24
  207. package/src/view/node/EllipseNode.tsx +0 -22
  208. package/src/view/node/HtmlNode.tsx +0 -95
  209. package/src/view/node/PolygonNode.tsx +0 -28
  210. package/src/view/node/RectNode.tsx +0 -30
  211. package/src/view/node/TextNode.tsx +0 -39
  212. package/src/view/node/index.ts +0 -8
  213. package/src/view/overlay/BackgroundOverlay.tsx +0 -34
  214. package/src/view/overlay/BezierAdjustOverlay.tsx +0 -150
  215. package/src/view/overlay/CanvasOverlay.tsx +0 -288
  216. package/src/view/overlay/Grid.tsx +0 -162
  217. package/src/view/overlay/ModificationOverlay.tsx +0 -31
  218. package/src/view/overlay/OutlineOverlay.tsx +0 -170
  219. package/src/view/overlay/SnaplineOverlay.tsx +0 -44
  220. package/src/view/overlay/ToolOverlay.tsx +0 -65
  221. package/src/view/overlay/getTransformHoc.tsx +0 -50
  222. package/src/view/overlay/index.ts +0 -8
  223. package/src/view/shape/Circle.tsx +0 -41
  224. package/src/view/shape/Ellipse.tsx +0 -42
  225. package/src/view/shape/Line.tsx +0 -39
  226. package/src/view/shape/Path.tsx +0 -22
  227. package/src/view/shape/Polygon.tsx +0 -91
  228. package/src/view/shape/Polyline.tsx +0 -31
  229. package/src/view/shape/Rect.tsx +0 -44
  230. package/src/view/shape/Text.tsx +0 -169
  231. package/src/view/shape/index.ts +0 -8
  232. package/src/view/text/BaseText.tsx +0 -134
  233. package/src/view/text/LineText.tsx +0 -168
  234. package/src/view/text/index.ts +0 -2
  235. package/stats.html +0 -4842
  236. package/tsconfig.json +0 -18
@@ -1,101 +0,0 @@
1
- import BaseEdge, { IEdgeState } from './BaseEdge'
2
- import { Path } from '../shape'
3
- import LogicFlow from '../../LogicFlow'
4
- import { getEndTangent } from '../../util'
5
- import { BezierEdgeModel, GraphModel } from '../../model'
6
-
7
- import Point = LogicFlow.Point
8
-
9
- import ArrowInfo = LogicFlow.ArrowInfo
10
-
11
- export type IBezierEdgeProps = {
12
- model: BezierEdgeModel
13
- graphModel: GraphModel
14
- }
15
-
16
- export class BezierEdge extends BaseEdge<IBezierEdgeProps> {
17
- /**
18
- * @overridable 支持重写, 此方法为获取边的形状,如果需要自定义边的形状,请重写此方法。
19
- * @example https://docs.logic-flow.cn/docs/#/zh/guide/basic/edge?id=%e5%9f%ba%e4%ba%8e-react-%e7%bb%84%e4%bb%b6%e8%87%aa%e5%ae%9a%e4%b9%89%e8%be%b9
20
- */
21
- getEdge() {
22
- const { model } = this.props
23
- const style = model.getEdgeStyle()
24
- const { path, isAnimation, arrowConfig } = model as BezierEdgeModel
25
- const animationStyle = model.getEdgeAnimationStyle()
26
- const {
27
- strokeDasharray,
28
- stroke,
29
- strokeDashoffset,
30
- animationName,
31
- animationDuration,
32
- animationIterationCount,
33
- animationTimingFunction,
34
- animationDirection,
35
- } = animationStyle
36
-
37
- return (
38
- <Path
39
- d={path}
40
- {...style}
41
- {...arrowConfig}
42
- {...(isAnimation
43
- ? {
44
- strokeDasharray,
45
- stroke,
46
- style: {
47
- strokeDashoffset,
48
- animationName,
49
- animationDuration,
50
- animationIterationCount,
51
- animationTimingFunction,
52
- animationDirection,
53
- },
54
- }
55
- : {})}
56
- />
57
- )
58
- }
59
-
60
- /**
61
- * @overridable 可重写,在完全自定义边的时候,可以重写此方法,来自定义边的选区。
62
- */
63
- getAppendWidth() {
64
- const { path } = this.props.model as BezierEdgeModel
65
- return <Path d={path} strokeWidth={10} stroke="transparent" fill="none" />
66
- }
67
-
68
- /**
69
- * @deprecated
70
- */
71
- getArrowInfo(): ArrowInfo {
72
- const { model } = this.props
73
- const { hover } = this.state as IEdgeState
74
- const { isSelected } = model as BezierEdgeModel
75
- const { offset } = model.getArrowStyle()
76
- const points = model.pointsList.map((point) => ({
77
- x: point.x,
78
- y: point.y,
79
- }))
80
- const [ePre, end] = getEndTangent(points, offset)
81
- const arrowInfo = {
82
- start: ePre,
83
- end,
84
- hover,
85
- isSelected,
86
- }
87
- return arrowInfo
88
- }
89
-
90
- getLastTwoPoints(): [Point, Point] {
91
- const { model } = this.props
92
- const { offset } = model.getArrowStyle()
93
- const points = model.pointsList.map((point) => ({
94
- x: point.x,
95
- y: point.y,
96
- }))
97
- return getEndTangent(points, offset)
98
- }
99
- }
100
-
101
- export default BezierEdge
@@ -1,81 +0,0 @@
1
- import BaseEdge from './BaseEdge'
2
- import { Line, Path } from '../shape'
3
- import { getAppendAttributes } from '../../util'
4
- import { GraphModel, LineEdgeModel } from '../../model'
5
-
6
- export type ILineEdgeProps = {
7
- model: LineEdgeModel
8
- graphModel: GraphModel
9
- }
10
-
11
- export class LineEdge extends BaseEdge<ILineEdgeProps> {
12
- /**
13
- * @overridable 支持重写, 此方法为获取边的形状,如果需要自定义边的形状,请重写此方法。
14
- * @example https://docs.logic-flow.cn/docs/#/zh/guide/basic/edge?id=%e5%9f%ba%e4%ba%8e-react-%e7%bb%84%e4%bb%b6%e8%87%aa%e5%ae%9a%e4%b9%89%e8%be%b9
15
- */
16
- getEdge() {
17
- const { model } = this.props
18
- const { startPoint, endPoint, isAnimation, arrowConfig } = model
19
- const style = model.getEdgeStyle()
20
- const animationStyle = model.getEdgeAnimationStyle()
21
- const {
22
- strokeDasharray,
23
- stroke,
24
- strokeDashoffset,
25
- animationName,
26
- animationDuration,
27
- animationIterationCount,
28
- animationTimingFunction,
29
- animationDirection,
30
- } = animationStyle
31
- return (
32
- <Line
33
- {...style}
34
- x1={startPoint.x}
35
- y1={startPoint.y}
36
- x2={endPoint.x}
37
- y2={endPoint.y}
38
- {...arrowConfig}
39
- {...(isAnimation
40
- ? {
41
- strokeDasharray,
42
- stroke,
43
- style: {
44
- strokeDashoffset,
45
- animationName,
46
- animationDuration,
47
- animationIterationCount,
48
- animationTimingFunction,
49
- animationDirection,
50
- },
51
- }
52
- : {})}
53
- />
54
- )
55
- }
56
-
57
- /**
58
- * @overridable 可重写,在完全自定义边的时候,可以重写此方法,来自定义边的选区。
59
- */
60
- getAppendWidth() {
61
- const { model } = this.props
62
- const { startPoint, endPoint } = model
63
- const appendInfo = {
64
- start: startPoint,
65
- end: endPoint,
66
- }
67
- const { d, strokeWidth, fill, strokeDasharray, stroke } =
68
- getAppendAttributes(appendInfo)
69
- return (
70
- <Path
71
- d={d}
72
- fill={fill}
73
- strokeWidth={strokeWidth}
74
- stroke={stroke}
75
- strokeDasharray={strokeDasharray}
76
- />
77
- )
78
- }
79
- }
80
-
81
- export default LineEdge
@@ -1,299 +0,0 @@
1
- import { createElement as h } from 'preact/compat'
2
- import BaseEdge, { IEdgeState } from './BaseEdge'
3
- import { Polyline, Path } from '../shape'
4
- import LogicFlow from '../../LogicFlow'
5
- import { GraphModel, PolylineEdgeModel } from '../../model'
6
- import { EventType, SegmentDirection } from '../../constant'
7
- import { StepDrag, points2PointsList } from '../../util'
8
- import { getVerticalPointOfLine } from '../../algorithm'
9
-
10
- import ArrowInfo = LogicFlow.ArrowInfo
11
- import AppendConfig = LogicFlow.AppendConfig
12
- import Point = LogicFlow.Point
13
-
14
- type AppendAttributesType = {
15
- d: string
16
- fill: string
17
- stroke: string
18
- strokeWidth: number
19
- strokeDasharray: string
20
- }
21
-
22
- export type IPolylineEdgeProps = {
23
- model: PolylineEdgeModel
24
- graphModel: GraphModel
25
- }
26
-
27
- export class PolylineEdge extends BaseEdge<IPolylineEdgeProps> {
28
- drag: StepDrag
29
- isDragging?: boolean
30
- isShowAdjustPointTemp?: boolean
31
- appendInfo?: AppendConfig
32
-
33
- constructor() {
34
- super()
35
- this.drag = new StepDrag({
36
- onDragStart: this.onDragStart,
37
- onDragging: this.onDragging,
38
- onDragEnd: this.onDragEnd,
39
- isStopPropagation: false,
40
- })
41
- }
42
-
43
- /**
44
- * 不支持重写
45
- */
46
- onDragStart = () => {
47
- const polylineModel = this.props.model as PolylineEdgeModel
48
- polylineModel.dragAppendStart()
49
- this.isShowAdjustPointTemp = polylineModel.isShowAdjustPoint
50
- polylineModel.isShowAdjustPoint = false
51
- }
52
- /**
53
- * 不支持重写
54
- */
55
- onDragging = ({ deltaX, deltaY }) => {
56
- const { model, graphModel } = this.props
57
- this.isDragging = true
58
- const { transformModel, editConfigModel } = graphModel
59
- const [curDeltaX, curDeltaY] = transformModel.fixDeltaXY(deltaX, deltaY)
60
- const polylineModel = model as PolylineEdgeModel
61
- // 更新当前拖拽的线段信息
62
- // 1、如果只允许调整中间线段调用dragAppendSimple
63
- // 2、如果允许调整所有线段调用dragAppend
64
- const { adjustEdgeMiddle } = editConfigModel
65
- if (adjustEdgeMiddle) {
66
- this.appendInfo = polylineModel.dragAppendSimple(this.appendInfo!, {
67
- x: curDeltaX,
68
- y: curDeltaY,
69
- })
70
- } else {
71
- this.appendInfo = polylineModel.dragAppend(this.appendInfo!, {
72
- x: curDeltaX,
73
- y: curDeltaY,
74
- })
75
- }
76
- }
77
- /**
78
- * 不支持重写
79
- */
80
- onDragEnd = () => {
81
- const {
82
- model,
83
- graphModel: { eventCenter },
84
- } = this.props
85
- const polylineModel = model as PolylineEdgeModel
86
- polylineModel.dragAppendEnd()
87
- this.isDragging = false
88
-
89
- polylineModel.isShowAdjustPoint = this.isShowAdjustPointTemp ?? false
90
- // 情况当前拖拽的线段信息
91
- this.appendInfo = undefined
92
- // 向外抛出事件
93
- eventCenter.emit(EventType.EDGE_ADJUST, { data: polylineModel.getData() })
94
- }
95
- /**
96
- * 不支持重写
97
- */
98
- beforeDragStart = (e: PointerEvent, appendInfo) => {
99
- // 如果允许拖拽调整触发事件处理
100
- if (appendInfo.draggable) {
101
- this.drag.handleMouseDown(e)
102
- }
103
- // 记录当前拖拽的线段信息
104
- this.appendInfo = appendInfo
105
- }
106
-
107
- /**
108
- * @overridable 支持重写, 此方法为获取边的形状,如果需要自定义边的形状,请重写此方法。
109
- * @example https://docs.logic-flow.cn/docs/#/zh/guide/basic/edge?id=%e5%9f%ba%e4%ba%8e-react-%e7%bb%84%e4%bb%b6%e8%87%aa%e5%ae%9a%e4%b9%89%e8%be%b9
110
- */
111
- getEdge() {
112
- const { model } = this.props
113
- const { points, isAnimation, arrowConfig } = model
114
- const style = model.getEdgeStyle()
115
- const animationStyle = model.getEdgeAnimationStyle()
116
- const {
117
- strokeDasharray,
118
- stroke,
119
- strokeDashoffset,
120
- animationName,
121
- animationDuration,
122
- animationIterationCount,
123
- animationTimingFunction,
124
- animationDirection,
125
- } = animationStyle
126
- return (
127
- <Polyline
128
- points={points}
129
- {...style}
130
- {...arrowConfig}
131
- {...(isAnimation
132
- ? {
133
- strokeDasharray,
134
- stroke,
135
- style: {
136
- strokeDashoffset,
137
- animationName,
138
- animationDuration,
139
- animationIterationCount,
140
- animationTimingFunction,
141
- animationDirection,
142
- },
143
- }
144
- : {})}
145
- />
146
- )
147
- }
148
-
149
- /**
150
- * @deprecated
151
- */
152
- getArrowInfo(): ArrowInfo {
153
- const { model } = this.props
154
- const { points, isSelected } = model
155
- const { hover } = this.state as IEdgeState
156
- const currentPositionList = points2PointsList(points)
157
- let startPoint: LogicFlow.Point = currentPositionList[0]
158
- let endPoint: LogicFlow.Point = currentPositionList[0]
159
-
160
- // 两点重合时不计算起终点
161
- if (currentPositionList.length >= 2) {
162
- startPoint = currentPositionList[currentPositionList.length - 2]
163
- endPoint = currentPositionList[currentPositionList.length - 1]
164
- }
165
- return {
166
- start: startPoint,
167
- end: endPoint,
168
- hover,
169
- isSelected,
170
- }
171
- }
172
-
173
- getLastTwoPoints(): [Point, Point] {
174
- const { model } = this.props
175
- const { points } = model
176
- const currentPositionList = points2PointsList(points)
177
- let startPoint: LogicFlow.Point = currentPositionList[0]
178
- let endPoint: LogicFlow.Point = currentPositionList[0]
179
- // 两点重合时不计算起终点
180
- if (currentPositionList.length >= 2) {
181
- startPoint = currentPositionList[currentPositionList.length - 2]
182
- endPoint = currentPositionList[currentPositionList.length - 1]
183
- }
184
- return [startPoint, endPoint]
185
- }
186
-
187
- private getAppendAttributes(appendInfo: AppendConfig): AppendAttributesType {
188
- const { start, end } = appendInfo
189
- let d
190
- if (start.x === end.x && start.y === end.y) {
191
- // 拖拽过程中会出现起终点重合的情况,这时候append无法计算
192
- d = ''
193
- } else {
194
- const config = {
195
- start,
196
- end,
197
- offset: 10,
198
- verticalLength: 5,
199
- }
200
- const startPosition = getVerticalPointOfLine({
201
- ...config,
202
- type: 'start',
203
- })
204
- const endPosition = getVerticalPointOfLine({
205
- ...config,
206
- type: 'end',
207
- })
208
- d = `M${startPosition.leftX} ${startPosition.leftY}
209
- L${startPosition.rightX} ${startPosition.rightY}
210
- L${endPosition.rightX} ${endPosition.rightY}
211
- L${endPosition.leftX} ${endPosition.leftY} z`
212
- }
213
- return {
214
- d,
215
- fill: 'transparent',
216
- stroke: 'transparent',
217
- strokeWidth: 1,
218
- strokeDasharray: '4, 4',
219
- }
220
- }
221
-
222
- private getAppendShape(appendInfo: AppendConfig) {
223
- const { d, strokeWidth, fill, strokeDasharray, stroke } =
224
- this.getAppendAttributes(appendInfo)
225
- return (
226
- <Path
227
- d={d}
228
- fill={fill}
229
- strokeWidth={strokeWidth}
230
- stroke={stroke}
231
- strokeDasharray={strokeDasharray}
232
- />
233
- )
234
- }
235
-
236
- /**
237
- * @overridable 可重写,在完全自定义边的时候,可以重写此方法,来自定义边的选区。
238
- */
239
- getAppendWidth() {
240
- const { model, graphModel } = this.props
241
- const { pointsList, draggable } = model
242
- const LineAppendList: h.JSX.Element[] = []
243
- const pointsLen = pointsList.length
244
- for (let i = 0; i < pointsLen - 1; i++) {
245
- let className = 'lf-polyline-append'
246
- const appendInfo: AppendConfig = {
247
- start: {
248
- x: pointsList[i].x,
249
- y: pointsList[i].y,
250
- },
251
- end: {
252
- x: pointsList[i + 1].x,
253
- y: pointsList[i + 1].y,
254
- },
255
- startIndex: i,
256
- endIndex: i + 1,
257
- direction: SegmentDirection.HORIZONTAL,
258
- draggable: true,
259
- }
260
- let append: h.JSX.Element = (
261
- <g className={className}>{this.getAppendShape(appendInfo)}</g>
262
- )
263
- const { editConfigModel } = graphModel
264
- const { adjustEdge, adjustEdgeMiddle } = editConfigModel
265
- if (adjustEdge && draggable) {
266
- const { startIndex, endIndex } = appendInfo
267
- // 如果不允许调整起点和终点相连的线段,设置该线段appendInfo的dragAble为false
268
- const dragDisable =
269
- adjustEdgeMiddle && (startIndex === 0 || endIndex === pointsLen - 1)
270
- appendInfo.draggable = !dragDisable
271
- if (appendInfo.start.x === appendInfo.end.x) {
272
- // 水平
273
- if (appendInfo.draggable) {
274
- className += '-ew-resize'
275
- }
276
- appendInfo.direction = SegmentDirection.VERTICAL
277
- } else if (appendInfo.start.y === appendInfo.end.y) {
278
- // 垂直
279
- if (appendInfo.draggable) {
280
- className += '-ns-resize'
281
- }
282
- appendInfo.direction = SegmentDirection.HORIZONTAL
283
- }
284
- append = (
285
- <g
286
- className={this.isDragging ? 'lf-dragging' : 'lf-drag-able'}
287
- onPointerDown={(e) => this.beforeDragStart(e, appendInfo)}
288
- >
289
- <g className={className}>{this.getAppendShape(appendInfo)}</g>
290
- </g>
291
- )
292
- }
293
- LineAppendList.push(append)
294
- }
295
- return <g>{LineAppendList}</g>
296
- }
297
- }
298
-
299
- export default PolylineEdge
@@ -1,6 +0,0 @@
1
- export * from './AdjustPoint'
2
- export * from './Arrow'
3
- export * from './BaseEdge'
4
- export * from './BezierEdge'
5
- export * from './LineEdge'
6
- export * from './PolylineEdge'
package/src/view/index.ts DELETED
@@ -1,8 +0,0 @@
1
- export * from './Anchor'
2
- export * from './Rotate'
3
- export * from './Graph'
4
-
5
- export * from './shape'
6
- export * from './node'
7
- export * from './edge'
8
- export * from './text'