@logicflow/core 2.2.0 → 2.2.2

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 (361) hide show
  1. package/dist/docs/api/logicflow-constructor/index.en.md +106 -0
  2. package/dist/docs/api/logicflow-constructor/index.zh.md +106 -0
  3. package/dist/docs/api/logicflow-constructor/use.en.md +61 -0
  4. package/dist/docs/api/logicflow-constructor/use.zh.md +61 -0
  5. package/dist/docs/api/logicflow-instance/canvas.en.md +197 -0
  6. package/dist/docs/api/logicflow-instance/canvas.zh.md +199 -0
  7. package/dist/docs/api/logicflow-instance/edge.en.md +273 -0
  8. package/dist/docs/api/logicflow-instance/edge.zh.md +273 -0
  9. package/dist/docs/api/logicflow-instance/edit-config.en.md +59 -0
  10. package/dist/docs/api/logicflow-instance/edit-config.zh.md +59 -0
  11. package/dist/docs/api/logicflow-instance/element.en.md +375 -0
  12. package/dist/docs/api/logicflow-instance/element.zh.md +379 -0
  13. package/dist/docs/api/logicflow-instance/event.en.md +326 -0
  14. package/dist/docs/api/logicflow-instance/event.zh.md +406 -0
  15. package/dist/docs/api/logicflow-instance/history.en.md +38 -0
  16. package/dist/docs/api/logicflow-instance/history.zh.md +38 -0
  17. package/dist/docs/api/logicflow-instance/index.en.md +41 -0
  18. package/dist/docs/api/logicflow-instance/index.zh.md +41 -0
  19. package/dist/docs/api/logicflow-instance/node.en.md +308 -0
  20. package/dist/docs/api/logicflow-instance/node.zh.md +308 -0
  21. package/dist/docs/api/logicflow-instance/register.en.md +76 -0
  22. package/dist/docs/api/logicflow-instance/register.zh.md +76 -0
  23. package/dist/docs/api/logicflow-instance/render-and-data.en.md +179 -0
  24. package/dist/docs/api/logicflow-instance/render-and-data.zh.md +181 -0
  25. package/dist/docs/api/logicflow-instance/text.en.md +60 -0
  26. package/dist/docs/api/logicflow-instance/text.zh.md +60 -0
  27. package/dist/docs/api/logicflow-instance/theme.en.md +179 -0
  28. package/dist/docs/api/logicflow-instance/theme.zh.md +179 -0
  29. package/dist/docs/api/runtime-model/edgeModel.en.md +29 -0
  30. package/dist/docs/api/runtime-model/edgeModel.zh.md +325 -0
  31. package/dist/docs/api/runtime-model/graphModel.en.md +275 -0
  32. package/dist/docs/api/runtime-model/graphModel.zh.md +1153 -0
  33. package/dist/docs/api/runtime-model/nodeModel.en.md +37 -0
  34. package/dist/docs/api/runtime-model/nodeModel.zh.md +644 -0
  35. package/dist/docs/api/type/MainTypes.en.md +598 -0
  36. package/dist/docs/api/type/MainTypes.zh.md +867 -0
  37. package/dist/docs/api/type/Theme.en.md +187 -0
  38. package/dist/docs/api/type/Theme.zh.md +187 -0
  39. package/dist/docs/api/type/canvas-types.en.md +25 -0
  40. package/dist/docs/api/type/canvas-types.zh.md +25 -0
  41. package/dist/docs/api/type/index.en.md +96 -0
  42. package/dist/docs/api/type/index.zh.md +99 -0
  43. package/dist/docs/api/type/node-types.en.md +21 -0
  44. package/dist/docs/api/type/node-types.zh.md +21 -0
  45. package/dist/docs/api/type/plugin-types.en.md +24 -0
  46. package/dist/docs/api/type/plugin-types.zh.md +24 -0
  47. package/dist/docs/index.md +11 -0
  48. package/dist/docs/tutorial/about.en.md +38 -0
  49. package/dist/docs/tutorial/about.zh.md +65 -0
  50. package/dist/docs/tutorial/advanced/dnd.en.md +62 -0
  51. package/dist/docs/tutorial/advanced/dnd.zh.md +52 -0
  52. package/dist/docs/tutorial/advanced/edge.en.md +64 -0
  53. package/dist/docs/tutorial/advanced/edge.zh.md +66 -0
  54. package/dist/docs/tutorial/advanced/keyboard.en.md +70 -0
  55. package/dist/docs/tutorial/advanced/keyboard.zh.md +67 -0
  56. package/dist/docs/tutorial/advanced/node.en.md +338 -0
  57. package/dist/docs/tutorial/advanced/node.zh.md +338 -0
  58. package/dist/docs/tutorial/advanced/react.en.md +106 -0
  59. package/dist/docs/tutorial/advanced/react.zh.md +114 -0
  60. package/dist/docs/tutorial/advanced/silent-mode.en.md +75 -0
  61. package/dist/docs/tutorial/advanced/silent-mode.zh.md +71 -0
  62. package/dist/docs/tutorial/advanced/snapline.en.md +54 -0
  63. package/dist/docs/tutorial/advanced/vue.en.md +249 -0
  64. package/dist/docs/tutorial/advanced/vue.zh.md +248 -0
  65. package/dist/docs/tutorial/ai.en.md +64 -0
  66. package/dist/docs/tutorial/ai.zh.md +64 -0
  67. package/dist/docs/tutorial/basic/background.en.md +50 -0
  68. package/dist/docs/tutorial/basic/canvas.en.md +164 -0
  69. package/dist/docs/tutorial/basic/canvas.zh.md +183 -0
  70. package/dist/docs/tutorial/basic/class.en.md +106 -0
  71. package/dist/docs/tutorial/basic/class.zh.md +103 -0
  72. package/dist/docs/tutorial/basic/edge.en.md +151 -0
  73. package/dist/docs/tutorial/basic/edge.zh.md +152 -0
  74. package/dist/docs/tutorial/basic/event.en.md +70 -0
  75. package/dist/docs/tutorial/basic/event.zh.md +66 -0
  76. package/dist/docs/tutorial/basic/grid.en.md +77 -0
  77. package/dist/docs/tutorial/basic/node.en.md +358 -0
  78. package/dist/docs/tutorial/basic/node.zh.md +318 -0
  79. package/dist/docs/tutorial/basic/theme.en.md +154 -0
  80. package/dist/docs/tutorial/basic/theme.zh.md +157 -0
  81. package/dist/docs/tutorial/extension/adapter.en.md +446 -0
  82. package/dist/docs/tutorial/extension/adapter.zh.md +429 -0
  83. package/dist/docs/tutorial/extension/bpmn-element.en.md +1427 -0
  84. package/dist/docs/tutorial/extension/bpmn-element.zh.md +1472 -0
  85. package/dist/docs/tutorial/extension/control.en.md +117 -0
  86. package/dist/docs/tutorial/extension/control.zh.md +118 -0
  87. package/dist/docs/tutorial/extension/curved-edge.en.md +46 -0
  88. package/dist/docs/tutorial/extension/curved-edge.zh.md +46 -0
  89. package/dist/docs/tutorial/extension/custom.en.md +142 -0
  90. package/dist/docs/tutorial/extension/custom.zh.md +138 -0
  91. package/dist/docs/tutorial/extension/dnd-panel.en.md +109 -0
  92. package/dist/docs/tutorial/extension/dnd-panel.zh.md +109 -0
  93. package/dist/docs/tutorial/extension/dynamic-group.en.md +606 -0
  94. package/dist/docs/tutorial/extension/dynamic-group.zh.md +606 -0
  95. package/dist/docs/tutorial/extension/group.en.md +217 -0
  96. package/dist/docs/tutorial/extension/group.zh.md +209 -0
  97. package/dist/docs/tutorial/extension/highlight.en.md +50 -0
  98. package/dist/docs/tutorial/extension/highlight.zh.md +50 -0
  99. package/dist/docs/tutorial/extension/insert-node-in-polyline.en.md +52 -0
  100. package/dist/docs/tutorial/extension/insert-node-in-polyline.zh.md +47 -0
  101. package/dist/docs/tutorial/extension/intro.en.md +72 -0
  102. package/dist/docs/tutorial/extension/intro.zh.md +95 -0
  103. package/dist/docs/tutorial/extension/label.en.md +136 -0
  104. package/dist/docs/tutorial/extension/label.zh.md +135 -0
  105. package/dist/docs/tutorial/extension/layout.en.md +156 -0
  106. package/dist/docs/tutorial/extension/layout.zh.md +156 -0
  107. package/dist/docs/tutorial/extension/menu.en.md +319 -0
  108. package/dist/docs/tutorial/extension/menu.zh.md +377 -0
  109. package/dist/docs/tutorial/extension/minimap.en.md +164 -0
  110. package/dist/docs/tutorial/extension/minimap.zh.md +180 -0
  111. package/dist/docs/tutorial/extension/node-resize.en.md +199 -0
  112. package/dist/docs/tutorial/extension/node-resize.zh.md +221 -0
  113. package/dist/docs/tutorial/extension/pool.en.md +227 -0
  114. package/dist/docs/tutorial/extension/pool.zh.md +227 -0
  115. package/dist/docs/tutorial/extension/proximity-connect.en.md +104 -0
  116. package/dist/docs/tutorial/extension/proximity-connect.zh.md +107 -0
  117. package/dist/docs/tutorial/extension/selection.en.md +166 -0
  118. package/dist/docs/tutorial/extension/selection.zh.md +150 -0
  119. package/dist/docs/tutorial/extension/snapshot.en.md +276 -0
  120. package/dist/docs/tutorial/extension/snapshot.zh.md +276 -0
  121. package/dist/docs/tutorial/get-started.en.md +501 -0
  122. package/dist/docs/tutorial/get-started.zh.md +139 -0
  123. package/dist/docs/tutorial/update.en.md +213 -0
  124. package/dist/docs/tutorial/update.zh.md +212 -0
  125. package/dist/index.css +3 -2
  126. package/dist/index.min.js +1 -1
  127. package/dist/index.min.js.map +1 -1
  128. package/es/LogicFlow.d.ts +9 -0
  129. package/es/LogicFlow.js +0 -1
  130. package/es/constant/index.d.ts +1 -1
  131. package/es/constant/index.js +1 -1
  132. package/es/constant/theme.d.ts +136 -0
  133. package/es/constant/theme.js +680 -0
  134. package/es/index.css +3 -2
  135. package/es/model/GraphModel.d.ts +10 -2
  136. package/es/model/GraphModel.js +48 -14
  137. package/es/model/TransformModel.js +9 -9
  138. package/es/model/edge/BaseEdgeModel.js +7 -2
  139. package/es/model/edge/PolylineEdgeModel.d.ts +7 -0
  140. package/es/model/edge/PolylineEdgeModel.js +136 -7
  141. package/es/model/node/BaseNodeModel.d.ts +12 -1
  142. package/es/model/node/BaseNodeModel.js +9 -2
  143. package/es/model/node/HtmlNodeModel.d.ts +12 -0
  144. package/es/model/node/HtmlNodeModel.js +19 -0
  145. package/es/model/node/PolygonNodeModel.js +3 -3
  146. package/es/options.d.ts +4 -2
  147. package/es/style/index.css +3 -2
  148. package/es/style/index.less +3 -2
  149. package/es/style/raw.d.ts +1 -1
  150. package/es/style/raw.js +1 -1
  151. package/es/tool/MultipleSelectTool.js +10 -5
  152. package/es/util/drag.js +0 -1
  153. package/es/util/edge.d.ts +40 -1
  154. package/es/util/edge.js +43 -9
  155. package/es/util/geometry.d.ts +8 -0
  156. package/es/util/geometry.js +79 -0
  157. package/es/util/theme.d.ts +2 -65
  158. package/es/util/theme.js +4 -281
  159. package/es/view/Anchor.d.ts +1 -0
  160. package/es/view/Anchor.js +24 -21
  161. package/es/view/Control.d.ts +5 -0
  162. package/es/view/Control.js +44 -57
  163. package/es/view/edge/BaseEdge.js +9 -0
  164. package/es/view/edge/PolylineEdge.js +13 -2
  165. package/es/view/node/BaseNode.d.ts +1 -0
  166. package/es/view/node/BaseNode.js +23 -11
  167. package/es/view/node/HtmlNode.js +2 -4
  168. package/es/view/overlay/CanvasOverlay.js +5 -2
  169. package/es/view/overlay/Grid.d.ts +12 -1
  170. package/es/view/overlay/Grid.js +85 -23
  171. package/es/view/overlay/OutlineOverlay.d.ts +1 -0
  172. package/es/view/overlay/OutlineOverlay.js +18 -17
  173. package/es/view/overlay/gridConfig.d.ts +46 -0
  174. package/es/view/overlay/gridConfig.js +99 -0
  175. package/es/view/shape/Polygon.d.ts +0 -7
  176. package/es/view/shape/Polygon.js +12 -43
  177. package/lib/LogicFlow.d.ts +9 -0
  178. package/lib/LogicFlow.js +0 -1
  179. package/lib/constant/index.d.ts +1 -1
  180. package/lib/constant/index.js +16 -2
  181. package/lib/constant/theme.d.ts +136 -0
  182. package/lib/constant/theme.js +683 -0
  183. package/lib/index.css +3 -2
  184. package/lib/model/GraphModel.d.ts +10 -2
  185. package/lib/model/GraphModel.js +49 -15
  186. package/lib/model/TransformModel.js +9 -9
  187. package/lib/model/edge/BaseEdgeModel.js +7 -2
  188. package/lib/model/edge/PolylineEdgeModel.d.ts +7 -0
  189. package/lib/model/edge/PolylineEdgeModel.js +136 -7
  190. package/lib/model/node/BaseNodeModel.d.ts +12 -1
  191. package/lib/model/node/BaseNodeModel.js +9 -2
  192. package/lib/model/node/HtmlNodeModel.d.ts +12 -0
  193. package/lib/model/node/HtmlNodeModel.js +19 -0
  194. package/lib/model/node/PolygonNodeModel.js +3 -3
  195. package/lib/options.d.ts +4 -2
  196. package/lib/style/index.css +3 -2
  197. package/lib/style/index.less +3 -2
  198. package/lib/style/raw.d.ts +1 -1
  199. package/lib/style/raw.js +1 -1
  200. package/lib/tool/MultipleSelectTool.js +10 -5
  201. package/lib/util/drag.js +0 -1
  202. package/lib/util/edge.d.ts +40 -1
  203. package/lib/util/edge.js +43 -9
  204. package/lib/util/geometry.d.ts +8 -0
  205. package/lib/util/geometry.js +81 -1
  206. package/lib/util/theme.d.ts +2 -65
  207. package/lib/util/theme.js +15 -292
  208. package/lib/view/Anchor.d.ts +1 -0
  209. package/lib/view/Anchor.js +24 -21
  210. package/lib/view/Control.d.ts +5 -0
  211. package/lib/view/Control.js +44 -57
  212. package/lib/view/edge/BaseEdge.js +9 -0
  213. package/lib/view/edge/PolylineEdge.js +13 -2
  214. package/lib/view/node/BaseNode.d.ts +1 -0
  215. package/lib/view/node/BaseNode.js +22 -10
  216. package/lib/view/node/HtmlNode.js +1 -3
  217. package/lib/view/overlay/CanvasOverlay.js +5 -2
  218. package/lib/view/overlay/Grid.d.ts +12 -1
  219. package/lib/view/overlay/Grid.js +83 -21
  220. package/lib/view/overlay/OutlineOverlay.d.ts +1 -0
  221. package/lib/view/overlay/OutlineOverlay.js +18 -17
  222. package/lib/view/overlay/gridConfig.d.ts +46 -0
  223. package/lib/view/overlay/gridConfig.js +104 -0
  224. package/lib/view/shape/Polygon.d.ts +0 -7
  225. package/lib/view/shape/Polygon.js +13 -45
  226. package/package.json +9 -2
  227. package/scripts/postinstall-ai-prompt.js +67 -0
  228. package/.turbo/turbo-build$colon$dev.log +0 -10
  229. package/.turbo/turbo-build.log +0 -33
  230. package/CHANGELOG.md +0 -1849
  231. package/__tests__/algorithm/egde.test.ts +0 -131
  232. package/__tests__/algorithm/index.test.ts +0 -74
  233. package/__tests__/algorithm/outline.test.ts +0 -43
  234. package/__tests__/bugs/1545-spec.test.ts +0 -42
  235. package/__tests__/event/event.test.ts +0 -22
  236. package/__tests__/history/history.test.ts +0 -28
  237. package/__tests__/logicflow.test.ts +0 -575
  238. package/__tests__/model/graphmodel.test.ts +0 -87
  239. package/__tests__/util/compatible.test.ts +0 -48
  240. package/__tests__/util/edge.test.ts +0 -224
  241. package/__tests__/util/geometry.test.ts +0 -14
  242. package/__tests__/util/graph.test.ts +0 -16
  243. package/__tests__/util/matrix.test.ts +0 -41
  244. package/__tests__/util/node.test.ts +0 -68
  245. package/__tests__/util/sampling.test.ts +0 -12
  246. package/__tests__/util/vector.test.ts +0 -50
  247. package/__tests__/util/zIndex.test.ts +0 -10
  248. package/src/LogicFlow.tsx +0 -2008
  249. package/src/algorithm/edge.ts +0 -67
  250. package/src/algorithm/index.ts +0 -70
  251. package/src/algorithm/outline.ts +0 -77
  252. package/src/algorithm/rotate.ts +0 -55
  253. package/src/common/drag.ts +0 -219
  254. package/src/common/history.ts +0 -108
  255. package/src/common/index.ts +0 -6
  256. package/src/common/keyboard.ts +0 -108
  257. package/src/common/matrix.ts +0 -122
  258. package/src/common/vector.ts +0 -93
  259. package/src/constant/index.ts +0 -179
  260. package/src/event/event.md +0 -66
  261. package/src/event/eventArgs.ts +0 -643
  262. package/src/event/eventEmitter.ts +0 -156
  263. package/src/history/index.ts +0 -119
  264. package/src/index.less +0 -1
  265. package/src/index.ts +0 -26
  266. package/src/keyboard/index.ts +0 -112
  267. package/src/keyboard/shortcut.ts +0 -200
  268. package/src/model/BaseModel.ts +0 -250
  269. package/src/model/EditConfigModel.ts +0 -334
  270. package/src/model/GraphModel.ts +0 -1788
  271. package/src/model/NestedTransformModel.ts +0 -121
  272. package/src/model/SnaplineModel.ts +0 -256
  273. package/src/model/TransformModel.ts +0 -258
  274. package/src/model/edge/BaseEdgeModel.ts +0 -777
  275. package/src/model/edge/BezierEdgeModel.ts +0 -197
  276. package/src/model/edge/LineEdgeModel.ts +0 -36
  277. package/src/model/edge/PolylineEdgeModel.ts +0 -672
  278. package/src/model/edge/index.ts +0 -4
  279. package/src/model/index.ts +0 -9
  280. package/src/model/node/BaseNodeModel.ts +0 -949
  281. package/src/model/node/CircleNodeModel.ts +0 -91
  282. package/src/model/node/DiamondNodeModel.ts +0 -132
  283. package/src/model/node/EllipseNodeModel.ts +0 -98
  284. package/src/model/node/HtmlNodeModel.ts +0 -50
  285. package/src/model/node/PolygonNodeModel.ts +0 -150
  286. package/src/model/node/RectNodeModel.ts +0 -69
  287. package/src/model/node/TextNodeModel.ts +0 -54
  288. package/src/model/node/index.ts +0 -8
  289. package/src/options.ts +0 -145
  290. package/src/style/index.less +0 -261
  291. package/src/style/raw.ts +0 -220
  292. package/src/tool/MultipleSelectTool.tsx +0 -132
  293. package/src/tool/TextEditTool.tsx +0 -193
  294. package/src/tool/index.ts +0 -101
  295. package/src/typings.d.ts +0 -5
  296. package/src/util/animation.ts +0 -29
  297. package/src/util/browser.ts +0 -4
  298. package/src/util/compatible.ts +0 -15
  299. package/src/util/drag.ts +0 -220
  300. package/src/util/edge.ts +0 -1060
  301. package/src/util/geometry.ts +0 -55
  302. package/src/util/graph.ts +0 -46
  303. package/src/util/index.ts +0 -17
  304. package/src/util/matrix.ts +0 -129
  305. package/src/util/mobx.ts +0 -23
  306. package/src/util/node.ts +0 -543
  307. package/src/util/raf.ts +0 -28
  308. package/src/util/resize.ts +0 -606
  309. package/src/util/sampling.ts +0 -85
  310. package/src/util/theme.ts +0 -375
  311. package/src/util/uuid.ts +0 -26
  312. package/src/util/vector.ts +0 -93
  313. package/src/util/zIndex.ts +0 -6
  314. package/src/view/Anchor.tsx +0 -445
  315. package/src/view/Control.tsx +0 -512
  316. package/src/view/Graph.tsx +0 -141
  317. package/src/view/Rotate.tsx +0 -113
  318. package/src/view/behavior/dnd.ts +0 -162
  319. package/src/view/behavior/index.ts +0 -2
  320. package/src/view/behavior/snapline.ts +0 -16
  321. package/src/view/edge/AdjustPoint.tsx +0 -425
  322. package/src/view/edge/Arrow.tsx +0 -54
  323. package/src/view/edge/BaseEdge.tsx +0 -650
  324. package/src/view/edge/BezierEdge.tsx +0 -101
  325. package/src/view/edge/LineEdge.tsx +0 -81
  326. package/src/view/edge/PolylineEdge.tsx +0 -299
  327. package/src/view/edge/index.ts +0 -6
  328. package/src/view/index.ts +0 -8
  329. package/src/view/node/BaseNode.tsx +0 -571
  330. package/src/view/node/CircleNode.tsx +0 -21
  331. package/src/view/node/DiamondNode.tsx +0 -24
  332. package/src/view/node/EllipseNode.tsx +0 -22
  333. package/src/view/node/HtmlNode.tsx +0 -95
  334. package/src/view/node/PolygonNode.tsx +0 -28
  335. package/src/view/node/RectNode.tsx +0 -30
  336. package/src/view/node/TextNode.tsx +0 -39
  337. package/src/view/node/index.ts +0 -8
  338. package/src/view/overlay/BackgroundOverlay.tsx +0 -34
  339. package/src/view/overlay/BezierAdjustOverlay.tsx +0 -150
  340. package/src/view/overlay/CanvasOverlay.tsx +0 -288
  341. package/src/view/overlay/Grid.tsx +0 -162
  342. package/src/view/overlay/ModificationOverlay.tsx +0 -31
  343. package/src/view/overlay/OutlineOverlay.tsx +0 -170
  344. package/src/view/overlay/SnaplineOverlay.tsx +0 -44
  345. package/src/view/overlay/ToolOverlay.tsx +0 -65
  346. package/src/view/overlay/getTransformHoc.tsx +0 -50
  347. package/src/view/overlay/index.ts +0 -8
  348. package/src/view/shape/Circle.tsx +0 -41
  349. package/src/view/shape/Ellipse.tsx +0 -42
  350. package/src/view/shape/Line.tsx +0 -39
  351. package/src/view/shape/Path.tsx +0 -22
  352. package/src/view/shape/Polygon.tsx +0 -91
  353. package/src/view/shape/Polyline.tsx +0 -31
  354. package/src/view/shape/Rect.tsx +0 -44
  355. package/src/view/shape/Text.tsx +0 -169
  356. package/src/view/shape/index.ts +0 -8
  357. package/src/view/text/BaseText.tsx +0 -134
  358. package/src/view/text/LineText.tsx +0 -168
  359. package/src/view/text/index.ts +0 -2
  360. package/stats.html +0 -4842
  361. package/tsconfig.json +0 -18
@@ -1,425 +0,0 @@
1
- import { createElement as h, Component } from 'preact/compat'
2
- import LogicFlow from '../../LogicFlow'
3
- import { GraphModel, BaseNodeModel, BaseEdgeModel, Model } from '../../model'
4
- import {
5
- IDragParams,
6
- StepDrag,
7
- formatAnchorConnectValidateData,
8
- targetNodeInfo,
9
- NodeContaint,
10
- } from '../../util'
11
- import { ElementState, EventType, ModelType } from '../../constant'
12
- import Point = LogicFlow.Point
13
- import NodeData = LogicFlow.NodeData
14
- import AnchorConfig = Model.AnchorConfig
15
-
16
- interface IProps {
17
- x: number
18
- y: number
19
- type: AdjustType
20
- id?: string
21
- getAdjustPointShape: (
22
- x: number,
23
- y: number,
24
- model: BaseEdgeModel,
25
- ) => h.JSX.Element | null
26
- graphModel: GraphModel
27
- edgeModel: BaseEdgeModel
28
- }
29
-
30
- interface IState {
31
- dragging: boolean
32
- endX: number
33
- endY: number
34
- }
35
-
36
- interface OldEdge {
37
- startPoint: Point
38
- endPoint: Point
39
- pointsList: Point[]
40
- }
41
-
42
- export enum AdjustType {
43
- SOURCE = 'SOURCE',
44
- TARGET = 'TARGET',
45
- }
46
-
47
- export class AdjustPoint extends Component<IProps, IState> {
48
- stepDragData: any
49
- stepDrag: StepDrag
50
- oldEdge?: OldEdge
51
- preTargetNode: any
52
- targetRuleResults: Map<any, any>
53
- sourceRuleResults: Map<any, any>
54
-
55
- constructor(props: IProps) {
56
- super()
57
- this.state = {
58
- dragging: false,
59
- endX: 0,
60
- endY: 0,
61
- }
62
- this.targetRuleResults = new Map()
63
- this.sourceRuleResults = new Map()
64
- const { type, edgeModel, graphModel } = props
65
- const { eventCenter } = graphModel
66
- this.stepDragData = {
67
- type,
68
- edgeData: edgeModel.getData(),
69
- }
70
- this.stepDrag = new StepDrag({
71
- onDragStart: this.onDragStart,
72
- onDragging: this.onDragging,
73
- onDragEnd: this.onDragEnd,
74
- eventType: 'ADJUST_POINT',
75
- isStopPropagation: false,
76
- eventCenter,
77
- data: this.stepDragData,
78
- })
79
- }
80
-
81
- handleMouseDown = (ev: PointerEvent) => {
82
- if (this.stepDrag) {
83
- this.stepDrag.handleMouseDown(ev)
84
- }
85
- }
86
- onDragStart = () => {
87
- const { x, y, edgeModel } = this.props
88
- const { startPoint, endPoint, pointsList } = edgeModel
89
- // 记录下原始路径信息,在调整中,如果放弃调整,进行路径还原
90
- this.oldEdge = {
91
- startPoint,
92
- endPoint,
93
- pointsList,
94
- }
95
- this.setState({
96
- endX: x,
97
- endY: y,
98
- dragging: true,
99
- })
100
- // 拖拽AdjustPoint时不修改edgeModel.isHitable,避免偶尔会出现边不能点击问题(https://github.com/didi/LogicFlow/issues/974)
101
- // edgeModel.isHitable = false;
102
- }
103
- onDragging = ({ deltaX, deltaY }: IDragParams) => {
104
- const { endX, endY } = this.state
105
- const { graphModel, type } = this.props
106
- const { transformModel, editConfigModel } = graphModel
107
- const [x, y] = transformModel.moveCanvasPointByHtml(
108
- [endX, endY],
109
- deltaX,
110
- deltaY,
111
- )
112
- this.setState({
113
- endX: x,
114
- endY: y,
115
- dragging: true,
116
- })
117
- // 调整过程中实时更新路径
118
- const { edgeModel } = this.props
119
- const info = targetNodeInfo(
120
- {
121
- x: endX,
122
- y: endY,
123
- },
124
- graphModel,
125
- )
126
- // 如果一定的坐标能够找到目标节点,预结算当前节点与目标节点的路径进行展示
127
- if (info && info.node && this.isAllowAdjust(info).pass) {
128
- const { startPoint, endPoint, sourceNode, targetNode } = edgeModel
129
- const params =
130
- type === AdjustType.SOURCE
131
- ? {
132
- startPoint: {
133
- x: info.anchor.x,
134
- y: info.anchor.y,
135
- },
136
- endPoint: {
137
- x: endPoint.x,
138
- y: endPoint.y,
139
- },
140
- sourceNode: info.node,
141
- targetNode,
142
- }
143
- : {
144
- startPoint: {
145
- x: startPoint.x,
146
- y: startPoint.y,
147
- },
148
- endPoint: {
149
- x: info.anchor.x,
150
- y: info.anchor.y,
151
- },
152
- sourceNode,
153
- targetNode: info.node,
154
- }
155
- edgeModel.updateAfterAdjustStartAndEnd(params)
156
- } else {
157
- // 如果没有找到目标节点,更新起终点为当前坐标
158
- type === AdjustType.SOURCE
159
- ? edgeModel.updateStartPoint({ x, y })
160
- : edgeModel.updateEndPoint({ x, y })
161
- }
162
- if (edgeModel.text.value && editConfigModel.adjustEdge) {
163
- edgeModel.setText(
164
- Object.assign({}, edgeModel.text, edgeModel.textPosition),
165
- )
166
- }
167
- }
168
- onDragEnd = ({ event }: Partial<IDragParams>) => {
169
- try {
170
- // 将状态置为非拖拽状态
171
- this.setState({
172
- dragging: false,
173
- })
174
- const { graphModel, edgeModel, type } = this.props
175
- // 拖拽AdjustPoint时不修改edgeModel.isHitable,避免偶尔会出现边不能点击问题(https://github.com/didi/LogicFlow/issues/974)
176
- // edgeModel.isHitable = true;
177
- const { endX, endY, dragging } = this.state
178
- const info = targetNodeInfo(
179
- {
180
- x: endX,
181
- y: endY,
182
- },
183
- graphModel,
184
- )
185
- // 没有dragging就结束边
186
- if (!dragging) return
187
- // 如果找到目标节点,删除老边,创建新边
188
- let needRecoveryEdge = false
189
- let createEdgeInfo: LogicFlow.EdgeConfig
190
- if (info && info.node) {
191
- const { pass, msg, newTargetNode } = this.isAllowAdjust(info)
192
- if (pass) {
193
- const {
194
- text,
195
- sourceAnchorId = '',
196
- targetAnchorId = '',
197
- ...rest
198
- } = edgeModel.getData()
199
- createEdgeInfo = {
200
- sourceAnchorId,
201
- targetAnchorId,
202
- ...rest,
203
- text: text?.value || '',
204
- }
205
- // 根据调整点是边的起点或重点,计算创建边需要的参数
206
- if (type === AdjustType.SOURCE) {
207
- const sourceNode = graphModel.getNodeModelById(info.node.id)
208
- const targetNode = graphModel.getNodeModelById(
209
- edgeModel.targetNodeId,
210
- )
211
- const edgeInfo = graphModel.edgeGenerator?.(
212
- sourceNode?.getData() as NodeData,
213
- targetNode?.getData() as NodeData,
214
- createEdgeInfo,
215
- )
216
- createEdgeInfo = {
217
- ...edgeInfo,
218
- sourceNodeId: info.node.id,
219
- sourceAnchorId: info.anchor.id,
220
- startPoint: {
221
- x: info.anchor.x,
222
- y: info.anchor.y,
223
- },
224
- targetNodeId: edgeModel.targetNodeId,
225
- endPoint: { ...edgeModel.endPoint },
226
- }
227
- // 找到的是原有的源节点上的原锚点时,还原边
228
- if (
229
- edgeModel.sourceNodeId === info.node.id &&
230
- edgeModel.sourceAnchorId === info.anchor.id
231
- ) {
232
- needRecoveryEdge = true
233
- }
234
- } else if (type === AdjustType.TARGET) {
235
- const sourceNode = graphModel.getNodeModelById(
236
- edgeModel.sourceNodeId,
237
- )
238
- const targetNode = graphModel.getNodeModelById(info.node.id)
239
- const edgeInfo = graphModel.edgeGenerator?.(
240
- sourceNode?.getData() as NodeData,
241
- targetNode?.getData() as NodeData,
242
- createEdgeInfo,
243
- )
244
- createEdgeInfo = {
245
- ...edgeInfo,
246
- sourceNodeId: edgeModel.sourceNodeId,
247
- startPoint: { ...edgeModel.startPoint },
248
- targetNodeId: info.node.id,
249
- targetAnchorId: info.anchor.id,
250
- endPoint: {
251
- x: info.anchor.x,
252
- y: info.anchor.y,
253
- },
254
- }
255
- // 找到的是原有的目标节点上的原锚点时,还原边
256
- if (
257
- edgeModel.targetNodeId === info.node.id &&
258
- edgeModel.targetAnchorId === info.anchor.id
259
- ) {
260
- needRecoveryEdge = true
261
- }
262
- }
263
- } else {
264
- // 如果没有通过校验,还原边并抛出CONNECTION_NOT_ALLOWED事件
265
- needRecoveryEdge = true
266
- const nodeData = newTargetNode.getData()
267
- graphModel.eventCenter.emit(EventType.CONNECTION_NOT_ALLOWED, {
268
- data: nodeData,
269
- msg,
270
- })
271
- }
272
- } else {
273
- // 如果没有找到目标节点,还原边
274
- needRecoveryEdge = true
275
- }
276
- if (!needRecoveryEdge) {
277
- // 为了保证id不变必须要先删除老边,再创建新边,创建新边是会判断是否有重复的id
278
- // 删除老边
279
- const oldEdgeData = edgeModel.getData()
280
- graphModel.deleteEdgeById(edgeModel.id)
281
- // 创建新边
282
- const edge = graphModel.addEdge({ ...createEdgeInfo! })
283
- // 向外抛出事件
284
- graphModel.eventCenter.emit(EventType.EDGE_EXCHANGE_NODE, {
285
- data: {
286
- newEdge: edge.getData(),
287
- oldEdge: oldEdgeData,
288
- },
289
- })
290
- } else {
291
- // 如果没有找到目标节点或者没有通过校验,还原边
292
- this.recoveryEdge()
293
- }
294
- this.preTargetNode?.setElementState(ElementState.DEFAULT)
295
- } finally {
296
- const { graphModel } = this.props
297
- graphModel.eventCenter.emit(EventType.ADJUST_POINT_DRAGEND, {
298
- e: event,
299
- data: this.stepDragData,
300
- })
301
- }
302
- }
303
- // 还原边
304
- recoveryEdge = () => {
305
- const { edgeModel } = this.props
306
- const { startPoint, endPoint, pointsList } = this.oldEdge!
307
- edgeModel.updateStartPoint(startPoint)
308
- edgeModel.updateEndPoint(endPoint)
309
- // 折线和曲线还需要更新其pointsList
310
- if (edgeModel.modelType !== ModelType.LINE_EDGE) {
311
- edgeModel.pointsList = pointsList ?? []
312
- edgeModel.initPoints()
313
- }
314
- }
315
- // 调整点的样式默认从主题中读取, 可以复写此方法进行更加个性化的自定义
316
- // 目前仅支持圆形图标进行标识,可以从圆形的r和颜色上进行调整
317
- getAdjustPointStyle = () => {
318
- const {
319
- graphModel: { theme },
320
- } = this.props
321
- const { edgeAdjust } = theme
322
-
323
- return edgeAdjust
324
- }
325
-
326
- isAllowAdjust(info: NodeContaint): {
327
- pass: boolean
328
- msg?: string
329
- newTargetNode: BaseNodeModel
330
- } {
331
- const {
332
- edgeModel: { id, sourceNode, targetNode, sourceAnchorId, targetAnchorId },
333
- type,
334
- } = this.props
335
- // const newTargetNode = info.node;
336
- let newSourceNode: BaseNodeModel
337
- let newTargetNode: BaseNodeModel
338
- let newSourceAnchor: AnchorConfig
339
- let newTargetAnchor: AnchorConfig
340
-
341
- // 如果调整的是连线起点
342
- if (type === AdjustType.SOURCE) {
343
- newSourceNode = info.node
344
- newTargetNode = targetNode
345
- newSourceAnchor = info.anchor
346
- newTargetAnchor = targetNode.getAnchorInfo(targetAnchorId)!
347
- } else {
348
- newSourceNode = sourceNode
349
- newTargetNode = info.node
350
- newTargetAnchor = info.anchor
351
- newSourceAnchor = sourceNode.getAnchorInfo(sourceAnchorId)!
352
- }
353
- // 如果前一个接触的节点和此时接触的节点不相等,则将前一个节点状态重新设置为默认状态。
354
- if (this.preTargetNode && this.preTargetNode !== info.node) {
355
- this.preTargetNode.setElementState(ElementState.DEFAULT)
356
- }
357
- this.preTargetNode = info.node
358
- // #500 不允许锚点自己连自己, 在锚点一开始连接的时候, 不触发自己连接自己的校验。
359
- if (newTargetAnchor.id === newSourceAnchor.id) {
360
- return {
361
- pass: false,
362
- msg: '',
363
- newTargetNode,
364
- }
365
- }
366
- const targetInfoId = `${newSourceNode.id}_${newTargetNode.id}_${newSourceAnchor.id}_${newTargetAnchor.id}`
367
- // 查看鼠标是否进入过target,若有检验结果,表示进入过, 就不重复计算了。
368
- if (!this.targetRuleResults.has(targetInfoId)) {
369
- const sourceRuleResult = newSourceNode.isAllowConnectedAsSource(
370
- newTargetNode,
371
- newSourceAnchor,
372
- newTargetAnchor,
373
- id,
374
- )
375
- const targetRuleResult = newTargetNode.isAllowConnectedAsTarget(
376
- newSourceNode,
377
- newSourceAnchor,
378
- newTargetAnchor,
379
- id,
380
- )
381
- this.sourceRuleResults.set(
382
- targetInfoId,
383
- formatAnchorConnectValidateData(sourceRuleResult),
384
- )
385
- this.targetRuleResults.set(
386
- targetInfoId,
387
- formatAnchorConnectValidateData(targetRuleResult),
388
- )
389
- }
390
- const { isAllPass: isSourcePass, msg: sourceMsg } =
391
- this.sourceRuleResults.get(targetInfoId)
392
- const { isAllPass: isTargetPass, msg: targetMsg } =
393
- this.targetRuleResults.get(targetInfoId)
394
- // 实时提示出即将连接的节点是否允许连接
395
- const state =
396
- isSourcePass && isTargetPass
397
- ? ElementState.ALLOW_CONNECT
398
- : ElementState.NOT_ALLOW_CONNECT
399
- if (type === AdjustType.SOURCE) {
400
- newSourceNode.setElementState(state)
401
- } else {
402
- newTargetNode.setElementState(state)
403
- }
404
- return {
405
- pass: isSourcePass && isTargetPass,
406
- msg: targetMsg || sourceMsg,
407
- newTargetNode,
408
- }
409
- }
410
-
411
- render() {
412
- const { x, y, getAdjustPointShape, edgeModel } = this.props
413
- const { dragging } = this.state
414
- return (
415
- <g
416
- pointerEvents={dragging ? 'none' : ''}
417
- onPointerDown={this.handleMouseDown}
418
- >
419
- {!dragging ? getAdjustPointShape(x, y, edgeModel) : ''}
420
- </g>
421
- )
422
- }
423
- }
424
-
425
- export default AdjustPoint
@@ -1,54 +0,0 @@
1
- import { Component } from 'preact/compat'
2
- import { Path } from '../shape'
3
- import LogicFlow from '../../LogicFlow'
4
- import { getVerticalPointOfLine } from '../../algorithm'
5
- import ArrowInfo = LogicFlow.ArrowInfo
6
-
7
- export type ArrowStyle = {
8
- stroke?: string
9
- fill?: string
10
- strokeWidth?: number
11
- offset: number
12
- refX?: number
13
- refY?: number
14
- verticalLength: number
15
- }
16
-
17
- type ArrowAttributesType = {
18
- d: string
19
- } & ArrowStyle
20
-
21
- type IProps = {
22
- arrowInfo: ArrowInfo
23
- style: ArrowStyle
24
- }
25
-
26
- export class Arrow extends Component<IProps> {
27
- getArrowAttributes(): ArrowAttributesType {
28
- const { arrowInfo, style } = this.props
29
- const { start, end } = arrowInfo
30
- const config = {
31
- start,
32
- end,
33
- offset: style.offset,
34
- verticalLength: style.verticalLength,
35
- type: 'end',
36
- }
37
- const { leftX, leftY, rightX, rightY } = getVerticalPointOfLine(config)
38
- return {
39
- d: `M${leftX} ${leftY} L${end.x} ${end.y} L${rightX} ${rightY} z`,
40
- ...style,
41
- }
42
- }
43
-
44
- getShape() {
45
- const { d, strokeWidth, stroke, fill } = this.getArrowAttributes()
46
- return <Path d={d} fill={fill} strokeWidth={strokeWidth} stroke={stroke} />
47
- }
48
-
49
- render() {
50
- return <g className="lf-arrow">{this.getShape()}</g>
51
- }
52
- }
53
-
54
- export default Arrow