@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.
Files changed (469) hide show
  1. package/.turbo/turbo-build$colon$dev.log +2 -2
  2. package/.turbo/turbo-build.log +9 -9
  3. package/__tests__/bugs/1545-spec.test.ts +19 -15
  4. package/__tests__/util/edge.test.ts +57 -57
  5. package/dist/index.min.js +9 -3
  6. package/es/LogicFlow.d.ts +88 -40
  7. package/es/LogicFlow.js +38 -33
  8. package/es/LogicFlow.js.map +1 -1
  9. package/es/algorithm/edge.js.map +1 -1
  10. package/es/algorithm/index.d.ts +2 -0
  11. package/es/algorithm/index.js +2 -0
  12. package/es/algorithm/index.js.map +1 -1
  13. package/es/algorithm/outline.d.ts +1 -1
  14. package/es/common/drag.d.ts +51 -0
  15. package/es/common/drag.js +145 -0
  16. package/es/common/drag.js.map +1 -0
  17. package/es/common/history.d.ts +28 -0
  18. package/es/common/history.js +92 -0
  19. package/es/common/history.js.map +1 -0
  20. package/es/common/index.d.ts +5 -0
  21. package/es/common/index.js +6 -0
  22. package/es/common/index.js.map +1 -0
  23. package/es/common/keyboard.d.ts +34 -0
  24. package/es/common/keyboard.js +80 -0
  25. package/es/common/keyboard.js.map +1 -0
  26. package/es/common/matrix.d.ts +30 -0
  27. package/es/common/matrix.js +155 -0
  28. package/es/common/matrix.js.map +1 -0
  29. package/es/common/vector.d.ts +23 -0
  30. package/es/common/vector.js +97 -0
  31. package/es/common/vector.js.map +1 -0
  32. package/es/constant/index.d.ts +39 -2
  33. package/es/constant/index.js +41 -1
  34. package/es/constant/index.js.map +1 -1
  35. package/es/event/eventArgs.d.ts +103 -25
  36. package/es/event/eventEmitter.d.ts +2 -2
  37. package/es/event/eventEmitter.js +0 -1
  38. package/es/event/eventEmitter.js.map +1 -1
  39. package/es/index.d.ts +6 -1
  40. package/es/index.js +6 -1
  41. package/es/index.js.map +1 -1
  42. package/es/keyboard/index.d.ts +1 -0
  43. package/es/keyboard/index.js +1 -0
  44. package/es/keyboard/index.js.map +1 -1
  45. package/es/keyboard/shortcut.d.ts +8 -0
  46. package/es/keyboard/shortcut.js +70 -8
  47. package/es/keyboard/shortcut.js.map +1 -1
  48. package/es/model/BaseModel.d.ts +16 -7
  49. package/es/model/EditConfigModel.d.ts +97 -36
  50. package/es/model/EditConfigModel.js +169 -82
  51. package/es/model/EditConfigModel.js.map +1 -1
  52. package/es/model/GraphModel.d.ts +36 -14
  53. package/es/model/GraphModel.js +60 -10
  54. package/es/model/GraphModel.js.map +1 -1
  55. package/es/model/SnaplineModel.d.ts +2 -0
  56. package/es/model/TransformModel.js +1 -1
  57. package/es/model/TransformModel.js.map +1 -1
  58. package/es/model/edge/BaseEdgeModel.d.ts +21 -17
  59. package/es/model/edge/BaseEdgeModel.js +64 -42
  60. package/es/model/edge/BaseEdgeModel.js.map +1 -1
  61. package/es/model/edge/BezierEdgeModel.d.ts +5 -3
  62. package/es/model/edge/BezierEdgeModel.js +7 -3
  63. package/es/model/edge/BezierEdgeModel.js.map +1 -1
  64. package/es/model/edge/LineEdgeModel.d.ts +2 -0
  65. package/es/model/edge/LineEdgeModel.js +2 -1
  66. package/es/model/edge/LineEdgeModel.js.map +1 -1
  67. package/es/model/edge/PolylineEdgeModel.d.ts +5 -3
  68. package/es/model/edge/PolylineEdgeModel.js +22 -15
  69. package/es/model/edge/PolylineEdgeModel.js.map +1 -1
  70. package/es/model/node/BaseNodeModel.d.ts +42 -14
  71. package/es/model/node/BaseNodeModel.js +62 -48
  72. package/es/model/node/BaseNodeModel.js.map +1 -1
  73. package/es/model/node/CircleNodeModel.d.ts +4 -3
  74. package/es/model/node/CircleNodeModel.js +4 -7
  75. package/es/model/node/CircleNodeModel.js.map +1 -1
  76. package/es/model/node/DiamondNodeModel.d.ts +5 -4
  77. package/es/model/node/DiamondNodeModel.js +4 -6
  78. package/es/model/node/DiamondNodeModel.js.map +1 -1
  79. package/es/model/node/EllipseNodeModel.d.ts +5 -4
  80. package/es/model/node/EllipseNodeModel.js +4 -6
  81. package/es/model/node/EllipseNodeModel.js.map +1 -1
  82. package/es/model/node/HtmlNodeModel.d.ts +4 -5
  83. package/es/model/node/HtmlNodeModel.js +2 -12
  84. package/es/model/node/HtmlNodeModel.js.map +1 -1
  85. package/es/model/node/PolygonNodeModel.d.ts +5 -4
  86. package/es/model/node/PolygonNodeModel.js +4 -7
  87. package/es/model/node/PolygonNodeModel.js.map +1 -1
  88. package/es/model/node/RectNodeModel.d.ts +7 -5
  89. package/es/model/node/RectNodeModel.js +10 -7
  90. package/es/model/node/RectNodeModel.js.map +1 -1
  91. package/es/model/node/TextNodeModel.d.ts +17 -9
  92. package/es/model/node/TextNodeModel.js +2 -1
  93. package/es/model/node/TextNodeModel.js.map +1 -1
  94. package/es/options.d.ts +6 -3
  95. package/es/options.js +2 -11
  96. package/es/options.js.map +1 -1
  97. package/es/tool/MultipleSelectTool.d.ts +1 -1
  98. package/es/tool/MultipleSelectTool.js +5 -5
  99. package/es/tool/MultipleSelectTool.js.map +1 -1
  100. package/es/tool/TextEditTool.d.ts +3 -3
  101. package/es/tool/TextEditTool.js +2 -2
  102. package/es/tool/TextEditTool.js.map +1 -1
  103. package/es/tool/index.d.ts +24 -2
  104. package/es/tool/index.js +82 -2
  105. package/es/tool/index.js.map +1 -1
  106. package/es/util/drag.d.ts +5 -5
  107. package/es/util/drag.js +3 -1
  108. package/es/util/drag.js.map +1 -1
  109. package/es/util/edge.d.ts +9 -2
  110. package/es/util/edge.js +23 -12
  111. package/es/util/edge.js.map +1 -1
  112. package/es/util/index.d.ts +1 -0
  113. package/es/util/index.js +1 -0
  114. package/es/util/index.js.map +1 -1
  115. package/es/util/node.d.ts +8 -7
  116. package/es/util/node.js +26 -7
  117. package/es/util/node.js.map +1 -1
  118. package/es/util/resize.d.ts +32 -0
  119. package/es/util/resize.js +197 -0
  120. package/es/util/resize.js.map +1 -0
  121. package/es/view/Anchor.d.ts +6 -7
  122. package/es/view/Anchor.js +6 -3
  123. package/es/view/Anchor.js.map +1 -1
  124. package/es/view/Control.d.ts +1 -1
  125. package/es/view/Control.js +88 -39
  126. package/es/view/Control.js.map +1 -1
  127. package/es/view/Graph.d.ts +5 -1
  128. package/es/view/Graph.js +43 -3
  129. package/es/view/Graph.js.map +1 -1
  130. package/es/view/Rotate.js +2 -1
  131. package/es/view/Rotate.js.map +1 -1
  132. package/es/view/behavior/index.d.ts +2 -0
  133. package/es/view/behavior/index.js +3 -0
  134. package/es/view/behavior/index.js.map +1 -0
  135. package/es/view/behavior/snapline.d.ts +3 -0
  136. package/es/{tool → view/behavior}/snapline.js +0 -1
  137. package/es/view/behavior/snapline.js.map +1 -0
  138. package/es/view/edge/AdjustPoint.js +12 -23
  139. package/es/view/edge/AdjustPoint.js.map +1 -1
  140. package/es/view/edge/BaseEdge.d.ts +2 -2
  141. package/es/view/edge/BaseEdge.js +30 -22
  142. package/es/view/edge/BaseEdge.js.map +1 -1
  143. package/es/view/node/BaseNode.d.ts +4 -4
  144. package/es/view/node/BaseNode.js +33 -24
  145. package/es/view/node/BaseNode.js.map +1 -1
  146. package/es/view/node/CircleNode.d.ts +1 -1
  147. package/es/view/node/CircleNode.js.map +1 -1
  148. package/es/view/node/DiamondNode.d.ts +1 -1
  149. package/es/view/node/DiamondNode.js.map +1 -1
  150. package/es/view/node/EllipseNode.d.ts +1 -1
  151. package/es/view/node/EllipseNode.js.map +1 -1
  152. package/es/view/node/HtmlNode.d.ts +1 -1
  153. package/es/view/node/HtmlNode.js +2 -2
  154. package/es/view/node/HtmlNode.js.map +1 -1
  155. package/es/view/node/PolygonNode.d.ts +1 -1
  156. package/es/view/node/PolygonNode.js.map +1 -1
  157. package/es/view/node/RectNode.d.ts +1 -1
  158. package/es/view/node/RectNode.js.map +1 -1
  159. package/es/view/node/TextNode.d.ts +1 -1
  160. package/es/view/node/TextNode.js +1 -1
  161. package/es/view/node/TextNode.js.map +1 -1
  162. package/es/view/overlay/CanvasOverlay.js +5 -4
  163. package/es/view/overlay/CanvasOverlay.js.map +1 -1
  164. package/es/view/overlay/ToolOverlay.d.ts +1 -1
  165. package/es/view/overlay/ToolOverlay.js +1 -1
  166. package/es/view/overlay/ToolOverlay.js.map +1 -1
  167. package/es/view/shape/Circle.d.ts +9 -1
  168. package/es/view/shape/Circle.js +5 -5
  169. package/es/view/shape/Circle.js.map +1 -1
  170. package/es/view/shape/Ellipse.d.ts +10 -1
  171. package/es/view/shape/Ellipse.js +5 -5
  172. package/es/view/shape/Ellipse.js.map +1 -1
  173. package/es/view/shape/Line.d.ts +14 -1
  174. package/es/view/shape/Line.js +5 -7
  175. package/es/view/shape/Line.js.map +1 -1
  176. package/es/view/shape/Path.d.ts +3 -2
  177. package/es/view/shape/Path.js +3 -3
  178. package/es/view/shape/Path.js.map +1 -1
  179. package/es/view/shape/Polygon.d.ts +5 -3
  180. package/es/view/shape/Polygon.js +6 -6
  181. package/es/view/shape/Polygon.js.map +1 -1
  182. package/es/view/shape/Polyline.d.ts +7 -1
  183. package/es/view/shape/Polyline.js +8 -6
  184. package/es/view/shape/Polyline.js.map +1 -1
  185. package/es/view/shape/Rect.d.ts +11 -13
  186. package/es/view/shape/Rect.js +6 -9
  187. package/es/view/shape/Rect.js.map +1 -1
  188. package/es/view/shape/Text.d.ts +19 -1
  189. package/es/view/shape/Text.js +28 -21
  190. package/es/view/shape/Text.js.map +1 -1
  191. package/es/view/text/BaseText.d.ts +12 -15
  192. package/es/view/text/BaseText.js +43 -29
  193. package/es/view/text/BaseText.js.map +1 -1
  194. package/es/view/text/LineText.d.ts +19 -7
  195. package/es/view/text/LineText.js +62 -54
  196. package/es/view/text/LineText.js.map +1 -1
  197. package/lib/LogicFlow.d.ts +88 -40
  198. package/lib/LogicFlow.js +40 -35
  199. package/lib/LogicFlow.js.map +1 -1
  200. package/lib/algorithm/edge.js.map +1 -1
  201. package/lib/algorithm/index.d.ts +2 -0
  202. package/lib/algorithm/index.js +17 -1
  203. package/lib/algorithm/index.js.map +1 -1
  204. package/lib/algorithm/outline.d.ts +1 -1
  205. package/lib/common/drag.d.ts +51 -0
  206. package/lib/common/drag.js +148 -0
  207. package/lib/common/drag.js.map +1 -0
  208. package/lib/common/history.d.ts +28 -0
  209. package/lib/common/history.js +95 -0
  210. package/lib/common/history.js.map +1 -0
  211. package/lib/common/index.d.ts +5 -0
  212. package/lib/common/index.js +22 -0
  213. package/lib/common/index.js.map +1 -0
  214. package/lib/common/keyboard.d.ts +34 -0
  215. package/lib/common/keyboard.js +86 -0
  216. package/lib/common/keyboard.js.map +1 -0
  217. package/lib/common/matrix.d.ts +30 -0
  218. package/lib/common/matrix.js +158 -0
  219. package/lib/common/matrix.js.map +1 -0
  220. package/lib/common/vector.d.ts +23 -0
  221. package/lib/common/vector.js +101 -0
  222. package/lib/common/vector.js.map +1 -0
  223. package/lib/constant/index.d.ts +39 -2
  224. package/lib/constant/index.js +42 -2
  225. package/lib/constant/index.js.map +1 -1
  226. package/lib/event/eventArgs.d.ts +103 -25
  227. package/lib/event/eventEmitter.d.ts +2 -2
  228. package/lib/event/eventEmitter.js +0 -1
  229. package/lib/event/eventEmitter.js.map +1 -1
  230. package/lib/index.d.ts +6 -1
  231. package/lib/index.js +7 -2
  232. package/lib/index.js.map +1 -1
  233. package/lib/keyboard/index.d.ts +1 -0
  234. package/lib/keyboard/index.js +15 -0
  235. package/lib/keyboard/index.js.map +1 -1
  236. package/lib/keyboard/shortcut.d.ts +8 -0
  237. package/lib/keyboard/shortcut.js +75 -9
  238. package/lib/keyboard/shortcut.js.map +1 -1
  239. package/lib/model/BaseModel.d.ts +16 -7
  240. package/lib/model/EditConfigModel.d.ts +97 -36
  241. package/lib/model/EditConfigModel.js +168 -81
  242. package/lib/model/EditConfigModel.js.map +1 -1
  243. package/lib/model/GraphModel.d.ts +36 -14
  244. package/lib/model/GraphModel.js +59 -9
  245. package/lib/model/GraphModel.js.map +1 -1
  246. package/lib/model/SnaplineModel.d.ts +2 -0
  247. package/lib/model/TransformModel.js +1 -1
  248. package/lib/model/TransformModel.js.map +1 -1
  249. package/lib/model/edge/BaseEdgeModel.d.ts +21 -17
  250. package/lib/model/edge/BaseEdgeModel.js +61 -39
  251. package/lib/model/edge/BaseEdgeModel.js.map +1 -1
  252. package/lib/model/edge/BezierEdgeModel.d.ts +5 -3
  253. package/lib/model/edge/BezierEdgeModel.js +6 -2
  254. package/lib/model/edge/BezierEdgeModel.js.map +1 -1
  255. package/lib/model/edge/LineEdgeModel.d.ts +2 -0
  256. package/lib/model/edge/LineEdgeModel.js +2 -1
  257. package/lib/model/edge/LineEdgeModel.js.map +1 -1
  258. package/lib/model/edge/PolylineEdgeModel.d.ts +5 -3
  259. package/lib/model/edge/PolylineEdgeModel.js +21 -14
  260. package/lib/model/edge/PolylineEdgeModel.js.map +1 -1
  261. package/lib/model/node/BaseNodeModel.d.ts +42 -14
  262. package/lib/model/node/BaseNodeModel.js +60 -46
  263. package/lib/model/node/BaseNodeModel.js.map +1 -1
  264. package/lib/model/node/CircleNodeModel.d.ts +4 -3
  265. package/lib/model/node/CircleNodeModel.js +4 -7
  266. package/lib/model/node/CircleNodeModel.js.map +1 -1
  267. package/lib/model/node/DiamondNodeModel.d.ts +5 -4
  268. package/lib/model/node/DiamondNodeModel.js +4 -6
  269. package/lib/model/node/DiamondNodeModel.js.map +1 -1
  270. package/lib/model/node/EllipseNodeModel.d.ts +5 -4
  271. package/lib/model/node/EllipseNodeModel.js +4 -6
  272. package/lib/model/node/EllipseNodeModel.js.map +1 -1
  273. package/lib/model/node/HtmlNodeModel.d.ts +4 -5
  274. package/lib/model/node/HtmlNodeModel.js +2 -12
  275. package/lib/model/node/HtmlNodeModel.js.map +1 -1
  276. package/lib/model/node/PolygonNodeModel.d.ts +5 -4
  277. package/lib/model/node/PolygonNodeModel.js +4 -7
  278. package/lib/model/node/PolygonNodeModel.js.map +1 -1
  279. package/lib/model/node/RectNodeModel.d.ts +7 -5
  280. package/lib/model/node/RectNodeModel.js +10 -7
  281. package/lib/model/node/RectNodeModel.js.map +1 -1
  282. package/lib/model/node/TextNodeModel.d.ts +17 -9
  283. package/lib/model/node/TextNodeModel.js +2 -1
  284. package/lib/model/node/TextNodeModel.js.map +1 -1
  285. package/lib/options.d.ts +6 -3
  286. package/lib/options.js +2 -11
  287. package/lib/options.js.map +1 -1
  288. package/lib/tool/MultipleSelectTool.d.ts +1 -1
  289. package/lib/tool/MultipleSelectTool.js +5 -5
  290. package/lib/tool/MultipleSelectTool.js.map +1 -1
  291. package/lib/tool/TextEditTool.d.ts +3 -3
  292. package/lib/tool/TextEditTool.js +4 -4
  293. package/lib/tool/TextEditTool.js.map +1 -1
  294. package/lib/tool/index.d.ts +24 -2
  295. package/lib/tool/index.js +85 -15
  296. package/lib/tool/index.js.map +1 -1
  297. package/lib/util/drag.d.ts +5 -5
  298. package/lib/util/drag.js +3 -1
  299. package/lib/util/drag.js.map +1 -1
  300. package/lib/util/edge.d.ts +9 -2
  301. package/lib/util/edge.js +27 -15
  302. package/lib/util/edge.js.map +1 -1
  303. package/lib/util/index.d.ts +1 -0
  304. package/lib/util/index.js +1 -0
  305. package/lib/util/index.js.map +1 -1
  306. package/lib/util/node.d.ts +8 -7
  307. package/lib/util/node.js +28 -9
  308. package/lib/util/node.js.map +1 -1
  309. package/lib/util/resize.d.ts +32 -0
  310. package/lib/util/resize.js +204 -0
  311. package/lib/util/resize.js.map +1 -0
  312. package/lib/view/Anchor.d.ts +6 -7
  313. package/lib/view/Anchor.js +5 -2
  314. package/lib/view/Anchor.js.map +1 -1
  315. package/lib/view/Control.d.ts +1 -1
  316. package/lib/view/Control.js +87 -38
  317. package/lib/view/Control.js.map +1 -1
  318. package/lib/view/Graph.d.ts +5 -1
  319. package/lib/view/Graph.js +42 -2
  320. package/lib/view/Graph.js.map +1 -1
  321. package/lib/view/Rotate.js +2 -1
  322. package/lib/view/Rotate.js.map +1 -1
  323. package/lib/view/behavior/index.d.ts +2 -0
  324. package/lib/view/behavior/index.js +19 -0
  325. package/lib/view/behavior/index.js.map +1 -0
  326. package/lib/view/behavior/snapline.d.ts +3 -0
  327. package/lib/{tool → view/behavior}/snapline.js +0 -1
  328. package/lib/view/behavior/snapline.js.map +1 -0
  329. package/lib/view/edge/AdjustPoint.js +11 -22
  330. package/lib/view/edge/AdjustPoint.js.map +1 -1
  331. package/lib/view/edge/BaseEdge.d.ts +2 -2
  332. package/lib/view/edge/BaseEdge.js +29 -21
  333. package/lib/view/edge/BaseEdge.js.map +1 -1
  334. package/lib/view/node/BaseNode.d.ts +4 -4
  335. package/lib/view/node/BaseNode.js +32 -23
  336. package/lib/view/node/BaseNode.js.map +1 -1
  337. package/lib/view/node/CircleNode.d.ts +1 -1
  338. package/lib/view/node/CircleNode.js.map +1 -1
  339. package/lib/view/node/DiamondNode.d.ts +1 -1
  340. package/lib/view/node/DiamondNode.js.map +1 -1
  341. package/lib/view/node/EllipseNode.d.ts +1 -1
  342. package/lib/view/node/EllipseNode.js.map +1 -1
  343. package/lib/view/node/HtmlNode.d.ts +1 -1
  344. package/lib/view/node/HtmlNode.js +2 -2
  345. package/lib/view/node/HtmlNode.js.map +1 -1
  346. package/lib/view/node/PolygonNode.d.ts +1 -1
  347. package/lib/view/node/PolygonNode.js.map +1 -1
  348. package/lib/view/node/RectNode.d.ts +1 -1
  349. package/lib/view/node/RectNode.js.map +1 -1
  350. package/lib/view/node/TextNode.d.ts +1 -1
  351. package/lib/view/node/TextNode.js +1 -1
  352. package/lib/view/node/TextNode.js.map +1 -1
  353. package/lib/view/overlay/CanvasOverlay.js +5 -4
  354. package/lib/view/overlay/CanvasOverlay.js.map +1 -1
  355. package/lib/view/overlay/ToolOverlay.d.ts +1 -1
  356. package/lib/view/overlay/ToolOverlay.js +1 -1
  357. package/lib/view/overlay/ToolOverlay.js.map +1 -1
  358. package/lib/view/shape/Circle.d.ts +9 -1
  359. package/lib/view/shape/Circle.js +5 -5
  360. package/lib/view/shape/Circle.js.map +1 -1
  361. package/lib/view/shape/Ellipse.d.ts +10 -1
  362. package/lib/view/shape/Ellipse.js +5 -5
  363. package/lib/view/shape/Ellipse.js.map +1 -1
  364. package/lib/view/shape/Line.d.ts +14 -1
  365. package/lib/view/shape/Line.js +5 -7
  366. package/lib/view/shape/Line.js.map +1 -1
  367. package/lib/view/shape/Path.d.ts +3 -2
  368. package/lib/view/shape/Path.js +3 -3
  369. package/lib/view/shape/Path.js.map +1 -1
  370. package/lib/view/shape/Polygon.d.ts +5 -3
  371. package/lib/view/shape/Polygon.js +6 -6
  372. package/lib/view/shape/Polygon.js.map +1 -1
  373. package/lib/view/shape/Polyline.d.ts +7 -1
  374. package/lib/view/shape/Polyline.js +8 -6
  375. package/lib/view/shape/Polyline.js.map +1 -1
  376. package/lib/view/shape/Rect.d.ts +11 -13
  377. package/lib/view/shape/Rect.js +6 -9
  378. package/lib/view/shape/Rect.js.map +1 -1
  379. package/lib/view/shape/Text.d.ts +19 -1
  380. package/lib/view/shape/Text.js +29 -21
  381. package/lib/view/shape/Text.js.map +1 -1
  382. package/lib/view/text/BaseText.d.ts +12 -15
  383. package/lib/view/text/BaseText.js +46 -29
  384. package/lib/view/text/BaseText.js.map +1 -1
  385. package/lib/view/text/LineText.d.ts +19 -7
  386. package/lib/view/text/LineText.js +62 -57
  387. package/lib/view/text/LineText.js.map +1 -1
  388. package/package.json +2 -1
  389. package/src/LogicFlow.tsx +163 -79
  390. package/src/algorithm/edge.ts +1 -0
  391. package/src/algorithm/index.ts +2 -0
  392. package/src/algorithm/outline.ts +2 -2
  393. package/src/common/drag.ts +219 -0
  394. package/src/common/history.ts +108 -0
  395. package/src/common/index.ts +6 -0
  396. package/src/common/keyboard.ts +108 -0
  397. package/src/common/matrix.ts +122 -0
  398. package/src/common/vector.ts +93 -0
  399. package/src/constant/index.ts +43 -1
  400. package/src/event/eventArgs.ts +173 -34
  401. package/src/event/eventEmitter.ts +2 -3
  402. package/src/index.ts +6 -1
  403. package/src/keyboard/index.ts +2 -0
  404. package/src/keyboard/shortcut.ts +79 -8
  405. package/src/model/BaseModel.ts +18 -7
  406. package/src/model/EditConfigModel.ts +209 -97
  407. package/src/model/GraphModel.ts +64 -9
  408. package/src/model/TransformModel.ts +1 -1
  409. package/src/model/edge/BaseEdgeModel.ts +75 -44
  410. package/src/model/edge/BezierEdgeModel.ts +7 -6
  411. package/src/model/edge/LineEdgeModel.ts +2 -0
  412. package/src/model/edge/PolylineEdgeModel.ts +24 -18
  413. package/src/model/node/BaseNodeModel.ts +72 -47
  414. package/src/model/node/CircleNodeModel.ts +8 -7
  415. package/src/model/node/DiamondNodeModel.ts +9 -6
  416. package/src/model/node/EllipseNodeModel.ts +9 -6
  417. package/src/model/node/HtmlNodeModel.ts +8 -7
  418. package/src/model/node/PolygonNodeModel.ts +9 -7
  419. package/src/model/node/RectNodeModel.ts +16 -8
  420. package/src/model/node/TextNodeModel.ts +14 -1
  421. package/src/options.ts +11 -15
  422. package/src/tool/MultipleSelectTool.tsx +6 -6
  423. package/src/tool/TextEditTool.tsx +3 -3
  424. package/src/tool/index.ts +96 -2
  425. package/src/util/drag.ts +22 -6
  426. package/src/util/edge.ts +39 -13
  427. package/src/util/index.ts +1 -0
  428. package/src/util/node.ts +36 -13
  429. package/src/util/resize.ts +286 -0
  430. package/src/view/Anchor.tsx +7 -5
  431. package/src/view/Control.tsx +93 -62
  432. package/src/view/Graph.tsx +21 -4
  433. package/src/view/Rotate.tsx +2 -1
  434. package/src/view/behavior/index.ts +2 -0
  435. package/src/{tool → view/behavior}/snapline.ts +3 -4
  436. package/src/view/edge/AdjustPoint.tsx +35 -49
  437. package/src/view/edge/BaseEdge.tsx +65 -45
  438. package/src/view/node/BaseNode.tsx +55 -28
  439. package/src/view/node/CircleNode.tsx +3 -1
  440. package/src/view/node/DiamondNode.tsx +3 -1
  441. package/src/view/node/EllipseNode.tsx +3 -1
  442. package/src/view/node/HtmlNode.tsx +5 -3
  443. package/src/view/node/PolygonNode.tsx +3 -1
  444. package/src/view/node/RectNode.tsx +3 -1
  445. package/src/view/node/TextNode.tsx +4 -2
  446. package/src/view/overlay/CanvasOverlay.tsx +5 -4
  447. package/src/view/overlay/ToolOverlay.tsx +1 -1
  448. package/src/view/shape/Circle.tsx +21 -7
  449. package/src/view/shape/Ellipse.tsx +20 -6
  450. package/src/view/shape/Line.tsx +24 -9
  451. package/src/view/shape/Path.tsx +9 -6
  452. package/src/view/shape/Polygon.tsx +13 -10
  453. package/src/view/shape/Polyline.tsx +20 -8
  454. package/src/view/shape/Rect.tsx +19 -19
  455. package/src/view/shape/Text.tsx +64 -33
  456. package/src/view/text/BaseText.tsx +76 -42
  457. package/src/view/text/LineText.tsx +94 -80
  458. package/tsconfig.json +1 -1
  459. package/es/tool/snapline.d.ts +0 -3
  460. package/es/tool/snapline.js.map +0 -1
  461. package/es/tool/tool.d.ts +0 -22
  462. package/es/tool/tool.js +0 -43
  463. package/es/tool/tool.js.map +0 -1
  464. package/lib/tool/snapline.d.ts +0 -3
  465. package/lib/tool/snapline.js.map +0 -1
  466. package/lib/tool/tool.d.ts +0 -22
  467. package/lib/tool/tool.js +0 -49
  468. package/lib/tool/tool.js.map +0 -1
  469. 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
- EditConfigInterface,
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/dnd'
20
- import Tool from './tool/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
- import { initDefaultShortcut } from './keyboard/shortcut'
25
+
27
26
  import Extension = LogicFlow.Extension
28
- import RegisteredExtension = LogicFlow.RegisteredExtension
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 ExtensionRender = LogicFlow.ExtensionRender
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: ExtensionRender[] = []
65
+ components: ExtensionRenderFunc[] = []
65
66
  // 个性配置的插件,覆盖全局配置的插件
66
- readonly plugins: ExtensionConstructor[]
67
+ readonly plugins: ExtensionType[]
67
68
  // 全局配置的插件,所有的LogicFlow示例都会使用
68
- static extensions: Map<string, RegisteredExtension> = new Map()
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
- private adapterIn?: (data: unknown) => GraphData
82
- private adapterOut?: (data: GraphData, ...rest: any) => unknown;
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(container: HTMLElement | HTMLDivElement) {
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(initOptions.container)
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: EditConfigInterface) {
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
- let { pluginName } = extension
1300
+ const { pluginName } = extension
1299
1301
  if (!pluginName) {
1300
- console.warn(
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 ?? LogicFlow.extensions
1321
- extensions.forEach((ext: any) => {
1322
- let extension: any
1323
- let props = null
1324
- if (ext[pluginFlag]) {
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
- const pluginName = extension?.pluginName || extension?.name
1331
- if (disabledPlugins.indexOf(pluginName) === -1) {
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(extension: Extension, props: any) {
1341
- if (typeof extension === 'object') {
1342
- const { pluginName, install, render: renderComponent } = extension
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
- renderComponent && this.components.push(renderComponent.bind(extension))
1352
+ render && this.components.push(render.bind(extension))
1346
1353
  this.extension[pluginName] = extension
1347
1354
  }
1348
1355
  return
1349
1356
  }
1350
- const ExtensionCls = extension as ExtensionConstructor
1351
- const extensionInstance = new ExtensionCls({
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
- extensionInstance.render &&
1358
- this.components.push(extensionInstance.render.bind(extensionInstance))
1359
- this.extension[ExtensionCls.pluginName] = extensionInstance
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 type PropertiesType = {
1386
+ export interface PropertiesType {
1373
1387
  width?: number
1374
1388
  height?: number
1375
1389
  rx?: number
1376
1390
  ry?: number
1377
- } & Record<string, any>
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
- } & Point
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?: PropertiesType
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?: PropertiesType
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 = { id: string; coordinate?: never }
1759
- type FocusOnByCoordinate = { id?: string; coordinate: Position }
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
- export type RegisteredExtension = {
1870
+ /**
1871
+ * Extension 插件类型
1872
+ */
1873
+ export type ExtensionType = ExtensionConstructor | ExtensionDefinition
1874
+ export type ExtensionConfig = {
1798
1875
  [pluginFlag]: symbol
1799
- extension: ExtensionConstructor
1800
- props?: Record<string, unknown>
1876
+ extension: ExtensionType
1877
+ props?: Record<string, any> // TODO: 看这类型是否可以更精确
1801
1878
  }
1802
1879
 
1803
- export type ExtensionProps = {
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 ExtensionRender = (lf: LogicFlow, container: HTMLElement) => void
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
- readonly pluginName?: string // 插件名称,只用用于插件覆盖和细粒度控制加载哪些插件
1820
- install?: (lf: LogicFlow, logicFlow: LogicFlowConstructor) => void
1821
- render?: ExtensionRender
1822
- destroy?: () => void
1905
+ render: ExtensionRenderFunc
1906
+ destroy?: () => void // TODO: 确认插件销毁函数参数类型
1823
1907
  }
1824
1908
  }
1825
1909
 
@@ -1,4 +1,5 @@
1
1
  import LogicFlow from '../LogicFlow'
2
+
2
3
  import Point = LogicFlow.Point
3
4
 
4
5
  /**
@@ -1,4 +1,6 @@
1
1
  // 各类算法的实现
2
+ export * from './outline'
3
+ export * from './edge'
2
4
 
3
5
  /*
4
6
  * 计算垂直边的与起始点有一定距离对称,边垂直于边的点
@@ -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