@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
@@ -0,0 +1,867 @@
1
+ ---
2
+ nav: API
3
+ group:
4
+ title: 类型字典
5
+ order: 3
6
+ title: 配置相关
7
+ toc: content
8
+ order: 1
9
+ ---
10
+
11
+ ## **简介**
12
+
13
+ 这篇文档中主要介绍`LogicFlow`各个配置项的类型定义
14
+
15
+ ## 实例相关
16
+
17
+ ### **Common(实例基础配置项)**
18
+ | 属性名 | 类型 | 描述 |
19
+ | ---------------- | ---------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------ |
20
+ | container | [HTMLElement](https://developer.mozilla.org/zh-CN/docs/Web/API/HTMLElement) | 用于挂载 LogicFlow 画布的 DOM 节点。 |
21
+ | width | number (可选) | 画布的宽度。 |
22
+ | height | number (可选) | 画布的高度。 |
23
+ | background | false \| BackgroundConfig (可选) | 画布的背景配置,可以是 `false` 或者 `BackgroundConfig` 对象。 |
24
+ | grid | number \| boolean \| GridOptions (可选) | 网格配置,可以是网格大小的数值、布尔值或者 `GridOptions` 对象。 |
25
+ | partial | boolean (可选) | 是否启用局部渲染。 |
26
+ | keyboard | KeyboardDef (可选) | 键盘配置。 |
27
+ | style | Partial<LogicFlow.Theme> (可选) | 主题样式配置。 |
28
+ | edgeType | EdgeType (可选) | 边的类型。 |
29
+ | adjustEdge | boolean (可选) | 是否允许调整边。 |
30
+ | textMode | TextMode (可选) | 文本模式。 |
31
+ | edgeTextMode | TextMode (可选) | 边文本模式。 |
32
+ | nodeTextMode | TextMode (可选) | 节点文本模式。 |
33
+ | allowRotate | boolean (可选) | 是否允许节点旋转。 |
34
+ | allowResize | boolean (可选) | 是否允许节点缩放。 |
35
+ | isSilentMode | boolean (可选) | 是否为静默模式。在静默模式下,画布中的节点和边不可移动,不可进行文案修改,没有锚点。 |
36
+ | stopScrollGraph | boolean (可选) | 是否停止滚动画布。 |
37
+ | stopZoomGraph | boolean (可选) | 是否停止缩放画布。 |
38
+ | stopMoveGraph | boolean \| 'vertical' \| 'horizontal' \| [number, number, number, number] (可选) | 是否停止移动画布,可以是布尔值、字符串或数组。 |
39
+ | animation | boolean \| Partial<`AnimationConfig`> (可选) | 动画配置,可以是布尔值或者 `AnimationConfig` 对象。 |
40
+ | history | boolean (可选) | 是否启用历史记录。 |
41
+ | outline | boolean (可选) | 是否启用轮廓。 |
42
+ | snapline | boolean (可选) | 是否启用对齐线。 |
43
+ | textEdit | boolean (可选) | 是否启用文本编辑。 |
44
+ | guards | GuardsConfig (可选) | 守卫配置。 |
45
+ | overlapMode | OverlapMode (可选) | 重叠模式。 |
46
+ | plugins | ExtensionType[] (可选) | 插件列表。 |
47
+ | pluginsOptions | Record<string, any> (可选) | 插件选项。 |
48
+ | disabledPlugins | string[] (可选) | 禁用的插件列表。 |
49
+ | disabledTools | string[] (可选) | 禁用的工具列表。 |
50
+ | idGenerator | (type?: string) => string (可选) | ID 生成器函数。 |
51
+ | edgeGenerator | EdgeGeneratorType (可选) | 边生成器函数。 |
52
+ | customTargetAnchor | customTargetAnchorType (可选) | 自定义锚点连接规则(连线到目标节点时,决定使用哪个锚点)。 |
53
+ | customTrajectory | (props: CustomAnchorLineProps) => h.JSX.Element (可选) | 自定义轨迹函数。 |
54
+ | [key: string] | unknown | 其他自定义属性。 |
55
+
56
+ ### **IEditConfigType(编辑控制配置)**
57
+
58
+ `IEditConfigType` 是运行时编辑控制的完整配置类型,`updateEditConfig` 与 `getEditConfig` 基于该类型工作。
59
+
60
+ | 属性名 | 类型 | 描述 |
61
+ | --- | --- | --- |
62
+ | `isSilentMode` | `boolean` | 是否为静默模式。 |
63
+ | `stopZoomGraph` | `boolean` | 禁止缩放画布。 |
64
+ | `stopScrollGraph` | `boolean` | 禁止鼠标滚动画布。 |
65
+ | `stopMoveGraph` | `boolean \| 'vertical' \| 'horizontal' \| [number, number, number, number]` | 禁止拖动画布或限制拖动方向/范围。 |
66
+ | `adjustEdge` | `boolean` | 是否允许调整边。 |
67
+ | `adjustEdgeMiddle` | `boolean` | 是否允许调整边中间点。 |
68
+ | `adjustEdgeStartAndEnd` | `boolean` | 是否允许调整边起终点。 |
69
+ | `adjustNodePosition` | `boolean` | 是否允许拖动节点。 |
70
+ | `hideAnchors` | `boolean` | 是否隐藏锚点。 |
71
+ | `allowRotate` | `boolean` | 是否允许节点旋转。 |
72
+ | `allowResize` | `boolean` | 是否允许节点缩放。 |
73
+ | `autoExpand` | `boolean` | 元素超出画布时是否自动扩展。 |
74
+ | `hoverOutline` | `boolean` | 是否显示悬停外框。 |
75
+ | `nodeSelectedOutline` | `boolean` | 是否显示节点选中外框。 |
76
+ | `edgeSelectedOutline` | `boolean` | 是否显示边选中外框。 |
77
+ | `textEdit` | `boolean` | 是否允许文本编辑。 |
78
+ | `nodeTextEdit` | `boolean` | 是否允许节点文本编辑。 |
79
+ | `edgeTextEdit` | `boolean` | 是否允许边文本编辑。 |
80
+ | `textDraggable` | `boolean` | 是否允许文本拖拽。 |
81
+ | `nodeTextDraggable` | `boolean` | 是否允许节点文本拖拽。 |
82
+ | `edgeTextDraggable` | `boolean` | 是否允许边文本拖拽。 |
83
+ | `multipleSelectKey` | `string` | 多选按键(`meta` / `shift` / `alt`)。 |
84
+
85
+
86
+ ### **BackgroundConfig(背景配置)**
87
+ | 属性名 | 类型 | 描述 |
88
+ | ---------------- | -------------------------------------------------------------------------------------- | --------------------------------------------------- |
89
+ | backgroundImage | string (可选) | 背景图片地址。 |
90
+ | backgroundRepeat | 'repeat' \| 'repeat-x' \| 'repeat-y' \| 'no-repeat' \| 'initial' \| 'inherit' (可选) | 背景平铺方式,效果同 CSS `background-repeat` 属性。 |
91
+ | [key: string] | any | 允许扩展额外的CSS样式。 |
92
+
93
+ 该类型主要用于约束初始化时传入的`background`参数,传入的属性最终会直接作用在`LogicFlow`画布的背景图层`BackgroundOverlay`上。
94
+
95
+ ### **GridOptions(网格配置)**
96
+ | 属性名 | 类型 | 描述 |
97
+ | ---------------- | ----------------------------------------------- | ----------------------------------------------------------------------------------- |
98
+ | size | number (可选) | 网格格子间距。 |
99
+ | visible | boolean (可选) | 网格是否可见 |
100
+ | type | 'dot' \| 'mesh' (可选) | 网格类型,可选值:`dot` 点状网格 / `mesh` 交叉线网格 |
101
+ | config | { color?: string, thickness?: number } (可选) | 网格线配置 |
102
+ | config.color | string (可选) | 网格线颜色 |
103
+ | config.thickness | number (可选) | 网格的宽度,对于 `dot` 点状网格,表示点的大小;对于 `mesh` 交叉线网格,表示线的宽度 |
104
+
105
+ ### **KeyboardDef(快捷键参数类型)**
106
+ | 属性名 | 类型 | 描述 |
107
+ | ------------------ | -------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------- |
108
+ | enabled | boolean | 是否启用键盘快捷键。 |
109
+ | shortcuts | Array<{ keys: string \| string[], callback: Handler, action?: Action }> (可选) | 自定义快捷键配置。 |
110
+ | shortcuts.keys | string \| string[] | 触发快捷键的按键组合。 |
111
+ | shortcuts.callback | Handler | 快捷键触发后的回调函数。 |
112
+ | shortcuts.action | Action (可选) | 监听的键盘事件类型,例如 `keypress`、`keydown`、`keyup`。 |
113
+
114
+ ### **EdgeType(边类型)**
115
+ ```ts
116
+ export type EdgeType = 'line' | 'polyline' | 'bezier' | string
117
+ ```
118
+ 定义边的类型,可选值:
119
+ - `'line'`:直线
120
+ - `'polyline'`:折线
121
+ - `'bezier'`:贝塞尔曲线
122
+ - `string`:其他自定义类型
123
+
124
+ ### **AnimationConfig(动画配置)**
125
+ | 属性名 | 类型 | 描述 |
126
+ | ------ | ------- | -------------------- |
127
+ | node | boolean | 是否对节点启用动画。 |
128
+ | edge | boolean | 是否对边启用动画。 |
129
+
130
+ ### **EdgeGeneratorType(自定义边生成函数)**
131
+ ``` ts
132
+ export type EdgeGeneratorType = (
133
+ sourceNode: LogicFlow.NodeData,
134
+ targetNode: LogicFlow.NodeData,
135
+ currentEdge?: Partial<LogicFlow.EdgeConfig>,
136
+ ) => any
137
+ ```
138
+ | 属性名 | 类型 | 描述 |
139
+ | ----------- | -------------------------------------- | -------------------- |
140
+ | sourceNode | LogicFlow.NodeData | 起始节点数据。 |
141
+ | targetNode | LogicFlow.NodeData | 目标节点数据。 |
142
+ | currentEdge | Partial<LogicFlow.EdgeConfig> (可选) | 当前连线的部分配置。 |
143
+
144
+ 该类型主要用于约束初始化时传入的`edgeGenerator`参数。
145
+
146
+ 例如在创建实例的时候加入下面的代码,就能实现矩形节点连出的边是曲线边,其他节点连出的边是折线边的效果:
147
+ ``` typescript
148
+ edgeGenerator: (sourceNode, targetNode, currentEdge) => {
149
+ // 起始节点类型 rect 时使用bezier
150
+ if (sourceNode.type === 'rect') return 'bezier'
151
+ if (currentEdge) return currentEdge.type
152
+ return 'polyline'
153
+ },
154
+ ```
155
+
156
+ ### **customTargetAnchorType(自定义锚点连接规则)**
157
+ ```ts
158
+ export type customTargetAnchorType = (
159
+ nodeModel: BaseNodeModel,
160
+ position: LogicFlow.Point,
161
+ ) => Model.AnchorInfo | undefined
162
+ ```
163
+ | 属性名 | 类型 | 描述 |
164
+ | -------- | ------------------ | ------------------------------------------------------------ |
165
+ | nodeModel | BaseNodeModel | 当前作为“目标节点”的节点模型。 |
166
+ | position | LogicFlow.Point | 鼠标释放时的坐标(画布坐标系)。 |
167
+ | 返回值 | Model.AnchorInfo \| undefined | 要连接的锚点信息;返回 undefined 时回退为默认逻辑(连接到距离 position 最近的锚点)。 |
168
+
169
+ 该类型主要用于约束初始化时传入的 `customTargetAnchor` 参数。
170
+
171
+ 例如在创建实例的时候加入下面的代码,就能实现无论拖拽到节点的哪个位置,始终连接到最左侧锚点:
172
+ ``` typescript
173
+ customTargetAnchor: (nodeModel) => {
174
+ const anchors = nodeModel?.anchors || []
175
+ if (!anchors.length) return
176
+ const left = anchors.reduce((min, a) => (a.x < min.x ? a : min), anchors[0])
177
+ return {
178
+ index: anchors.indexOf(left),
179
+ anchor: left,
180
+ }
181
+ },
182
+ ```
183
+
184
+ ### **GuardsConfig(守卫函数类型)**
185
+ ```ts
186
+ export interface GuardsConfig {
187
+ beforeClone?: (data: NodeData | GraphData) => boolean
188
+ beforeDelete?: (data: NodeData | EdgeData) => boolean
189
+ }
190
+ ```
191
+ | 属性名 | 类型 | 描述 |
192
+ | ------------ | ------------------------------------------------- | --------------------------------------------------- |
193
+ | beforeClone | (data: NodeData \| GraphData) => boolean (可选) | 克隆节点/图形前的拦截函数,返回 `false` 则阻止克隆. |
194
+ | beforeDelete | (data: NodeData \| EdgeData) => boolean (可选) | 删除节点/边前的拦截函数,返回 `false` 则阻止删除。 |
195
+
196
+
197
+ ### **AppendConfig(折线边选区信息)**
198
+ | 属性名 | 类型 | 描述 |
199
+ | ---------- | -------------- | ---------------------------------------------------------------------- |
200
+ | startIndex | number | 折线边选区起点位置。这表示新元素将相对于现有元素插入的位置。 |
201
+ | endIndex | number | 折线边选区终点位置。这表示新元素将追加到的位置。 |
202
+ | direction | Direction | 折线边选区方向。此属性指定新元素添加的方向,这会影响元素的布局和连接。 |
203
+ | draggable | boolean (可选) | 是否可以拖动选区。这允许 LogicFlow 画布中调整某段折线的位置。 |
204
+ | start | Point | 选区起点坐标。由 `Point` 类型表示,包括 x 和 y 坐标。 |
205
+ | end | Point | 选区终点坐标。与起点相同,也由 `Point` 类型表示。 |
206
+
207
+ ### **ArrowConfig(箭头配置)**
208
+ | 属性名 | 类型 | 描述 |
209
+ | ----------- | ------ | ------------------------------------------------------------------------------------------------------------- |
210
+ | markerStart | string | 这个属性用来设置箭头起点的样式。通常,它是一个指向 SVG 标记的 URL 或一个预定义的标记类型。 |
211
+ | markerEnd | string | 这个属性用来设置箭头终点的样式。和 `markerStart` 类似,它也是一个指向 SVG 标记的 URL 或一个预定义的标记类型。 |
212
+
213
+ ### **AttributesType(通用属性类型)**
214
+
215
+ ```typescript
216
+ export type AttributesType = Record<string, any>
217
+ ```
218
+ AttributesType 是一个通用类型,允许任何字符串作为键,值可以是任何类型。这提供了一种方法,可以向 LogicFlow 元素附加自定义属性,而不需要提前定义每个可能的属性。
219
+
220
+ ### **RegisterConfig(注册配置)**
221
+ `RegisterConfig` 类型定义注册新元素的配置,它包含以下属性:
222
+ | 属性名 | 类型 | 描述 |
223
+ | -------------- | --------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------- |
224
+ | type | string | 指定要注册的图元素类型。此字段为必填项。 |
225
+ | view | ComponentType<any> & { isObserved?: boolean } | 表示与图元素关联的视图组件。它可以是任何 React 组件类型,并且可以包含一个可选的 `isObserved` 布尔值,指示该组件是否应被观察以检测更改。 |
226
+ | model | GraphElementCtor | 定义图元素的模型构造函数。此字段为必填项,应为 `BaseNodeModelCtor` 或 `BaseEdgeModelCtor` 类型。 |
227
+ | isObserverView | boolean (可选) | 指示视图是否为观察者视图。如果设为 `true`,表示视图会响应模型的变化。 |
228
+
229
+ ### **RegisterElement(注册元素配置)**
230
+
231
+ `RegisterElement` 类型定义注册新元素类型的配置,它包含以下属性:
232
+ | 属性名 | 类型 | 描述 |
233
+ | ------ | ------------------------ | ---------------------------------------------------------------------------------------------- |
234
+ | view | React.ComponentType<any> | 表示与元素关联的可视化组件。它可以是任何有效的 React 组件,用于在 LogicFlow 画布上渲染该元素。 |
235
+ | model | any | 表示元素的底层数据模型。它定义了元素的行为和属性,使其能够在 LogicFlow 框架内进行交互和操作。 |
236
+
237
+ ### **RegisterElementFunc**
238
+
239
+ `RegisterElementFunc` 定义了注册元素的函数类型。它接受一个 `params` 参数,该参数包含注册过程中所需的各种属性,并返回一个 `RegisterElement` 对象。
240
+
241
+ ```ts
242
+ export type RegisterElementFunc = (params: RegisterParam) => RegisterElement
243
+ ```
244
+
245
+ #### 参数
246
+
247
+ | 参数名 | 类型 | 描述 |
248
+ | ------ | ------------- | ------------------------------ |
249
+ | params | RegisterParam | 包含注册过程中所需的各种属性。 |
250
+
251
+ #### 属性
252
+
253
+ | 属性名 | 类型 | 描述 |
254
+ | ------------- | -------- | ------------------------------------------------------ |
255
+ | h | Function | 用于创建虚拟 DOM 元素的 hyperscript 函数的引用。 |
256
+ | [key: string] | any | 用户定义的其他属性,可包括任何与元素注册相关的键值对。 |
257
+
258
+ #### 返回值
259
+
260
+ | 返回值 | 类型 | 描述 |
261
+ | ------ | ------------------------ | ------------------------------------ |
262
+ | view | React.ComponentType<any> | 表示元素可视部分的组件。 |
263
+ | model | any | 与元素关联的模型,定义其行为和属性。 |
264
+
265
+ ### **RegisterParam**
266
+
267
+ `RegisterParam` 类型定义了以方法方式注册元素时,方法返回值的类型
268
+
269
+ ```typescript
270
+ export type RegisterParam = {
271
+ h: typeof h;
272
+ [key: string]: unknown;
273
+ }
274
+ ```
275
+ | 属性名 | 类型 | 描述 |
276
+ | ------------- | -------- | ------------------------------------------------------ |
277
+ | h | Function | 用于创建虚拟 DOM 元素的 hyperscript 函数的引用。 |
278
+ | [key: string] | any | 用户定义的其他属性,可包括任何与元素注册相关的键值对。 |
279
+
280
+ `RegisterParam` 类型通常与 `RegisterElementFunc` 结合使用,以下是 `RegisterParam` 在注册函数中的使用示例:
281
+ ```typescript
282
+ const registerElement: RegisterElementFunc = (params: RegisterParam) => {
283
+ const { h, customProperty } = params;
284
+ // 使用 h 创建虚拟 DOM 元素
285
+ return {
286
+ view: h('div', { className: 'custom-element' }, customProperty),
287
+ model: CustomModel,
288
+ };
289
+ };
290
+ ```
291
+
292
+
293
+ ### **BaseNodeModelCtor(基础节点构造函数)**
294
+ `BaseNodeModelCtor` 类型是 LogicFlow 框架中用于创建 `BaseNodeModel` 实例的构造函数类型。它主要用于确保任何分配给它的构造函数都符合 `BaseNodeModel` 预期的结构和行为。该类型对于在 LogicFlow 中使用节点模型时维护类型安全性和一致性至关重要。
295
+ 以下是LogicFlow用`BaseNodeModelCtor`约束渲染数据转换成`nodeModel`的例子:
296
+ ``` ts
297
+ const Model = this.getModel(node.type) as BaseNodeModelCtor
298
+ if (!Model) {
299
+ throw new Error(
300
+ `找不到${node.type}对应的节点,请确认是否已注册此类型节点。`,
301
+ )
302
+ }
303
+ ```
304
+
305
+ ### **BaseEdgeModelCtor(基础边构造函数)**
306
+ `BaseEdgeModelCtor` 类型是 LogicFlow 框架中用于创建 `BaseEdgeModel` 实例的构造函数类型。它主要在render渲染数据时用来约束转换model的类型,确保任何创建的边模型都符合 `BaseEdgeModel` 规定的结构和行为。
307
+ 以下是LogicFlow用`BaseEdgeModelCtor`约束渲染数据转换成`edgeModel`的例子:
308
+ ``` ts
309
+ const Model = this.getModel(
310
+ edge.type ?? currEdgeType,
311
+ ) as BaseEdgeModelCtor
312
+ if (!Model) {
313
+ throw new Error(`找不到${edge.type}对应的边。`)
314
+ }
315
+ ```
316
+
317
+
318
+
319
+
320
+ ## 画布相关
321
+
322
+ ### **GraphConfigData(流程图渲染数据类型)**
323
+ `GraphConfigData` 是 LogicFlow 流程图渲染数据的类型。
324
+
325
+ | 属性名 | 类型 | 描述 |
326
+ | ------ | ----------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------- |
327
+ | nodes | `NodeConfig[]` \| `undefined` | 一个可选的数组,包含图中节点的配置。每个节点由 [NodeConfig](#nodeconfig节点配置) 接口定义,包括 `id`、`type`、`x`、`y` 以及其他可选配置。 |
328
+ | edges | `EdgeConfig[]` \| `undefined` | 一个可选的数组,包含图中边的配置。每条边由 [EdgeConfig](#edgeconfig边配置) 接口定义,包括 `id`、`sourceNodeId`、`targetNodeId` 以及其他可选配置。 |
329
+
330
+ ### **GraphData(画布数据)**
331
+ `GraphData` 是 LogicFlow 渲染数据导出时的数据类型。
332
+ ```typescript
333
+ interface GraphData {
334
+ nodes: NodeData[]; // 图中的节点数组,每个节点由 NodeData 接口定义。
335
+ edges: EdgeData[]; // 图中的边数组,每条边由 EdgeData 接口定义。
336
+ }
337
+ ```
338
+
339
+ | 属性名 | 类型 | 描述 |
340
+ | ------ | ---------- | ------------------------------------------------------------------------------------------------------------------------------ |
341
+ | nodes | NodeData[] | 这个属性是一个包含图中所有连接节点的数组。每个节点是 `NodeData` 类型的数据,包括节点 Id 和节点文本。 |
342
+ | edges | EdgeData[] | 这个属性是一个包含图中所有连接节点的边的数组。每条边是 `EdgeData` 类型的数据,包括源节点和目标节点、边的类型以及任何附加属性。 |
343
+
344
+ `GraphData` 通常在 `LogicFlow` 框架获取流程图数据时使用。它提供了一种结构化的方法来定义图中元素的关系和属性,确保数据一致且易于管理。
345
+
346
+
347
+ 下面是一个使用 `GraphData` 接口的示例:
348
+
349
+ ```typescript
350
+ const graphData = lf.getGraphData()
351
+ console.log(graphData)
352
+ // {
353
+ // nodes: [
354
+ // {
355
+ // id: 'node_1',
356
+ // type: 'rect',
357
+ // x: 100,
358
+ // y: 100,
359
+ // text: {
360
+ // value: 'Start',
361
+ // x: 100,
362
+ // y: 100,
363
+ // },
364
+ // },
365
+ // {
366
+ // id: 'node_2',
367
+ // type: 'circle',
368
+ // x: 300,
369
+ // y: 200,
370
+ // text: {
371
+ // value: 'End',
372
+ // x: 300,
373
+ // y: 200,
374
+ // },
375
+ // },
376
+ // ],
377
+ // edges: [
378
+ // {
379
+ // id: 'edge_1',
380
+ // type: 'polyline',
381
+ // sourceNodeId: 'node_1',
382
+ // targetNodeId: 'node_2',
383
+ // },
384
+ // ],
385
+ // };
386
+ ```
387
+
388
+ 在这个示例调用的`getGraphData` 方法返回了一个GraphData类型的图数据,这个图由一个矩形、一个圆形和一条折线组成
389
+
390
+
391
+ ### **GraphElement**
392
+ LogicFlow画布上的边和节点统称为元素,`GraphElement` 定义的就是元素的类型,它有两个取值`BaseNodeModel` 或 `BaseEdgeModel`。主要用来约束从画布上取元素信息的返回值,例如`getModelById`接口返回的就是这个类型的数据
393
+ ```ts
394
+ /**
395
+ * 获取节点或边对象
396
+ * @param id id
397
+ */
398
+ getModelById(id: string): LogicFlow.GraphElement | undefined {
399
+ return this.graphModel.getElement(id)
400
+ }
401
+ ```
402
+
403
+ ### **GraphElementCtor(画布元素构造函数)**
404
+ `GraphElementCtor` 类型是一个联合类型,表示 LogicFlow 框架中图元素的构造函数。它可以是 `BaseNodeModelCtor` 或 `BaseEdgeModelCtor`,用于定义图元素在 LogicFlow 系统中的创建和管理方式。
405
+
406
+ ```typescript
407
+ export type GraphElementCtor = BaseNodeModelCtor | BaseEdgeModelCtor;
408
+ ```
409
+
410
+
411
+ ### **Position(坐标类型)**
412
+ `Position` 类型是 LogicFlow 框架中的基础类型,用于表示二维空间中的一个点。
413
+
414
+ | 属性名 | 类型 | 描述 |
415
+ | ------ | ------ | ------------------------------------------- |
416
+ | x | number | 表示位置的水平坐标,指示点在 x 轴上的位置。 |
417
+ | y | number | 表示位置的垂直坐标,指示点在 y 轴上的位置。 |
418
+
419
+ ### **Point(点类型)**
420
+
421
+ `Point` 类型表示二维空间中的一个点,LogicFlow中的大部分点数据(例如锚点、起点、终点)都是通过这个类型约束,扩展自 `Position` 类型。它包括以下属性:
422
+
423
+ | 属性名 | 类型 | 描述 |
424
+ | ------------- | ------ | ------------------------------------------------------------- |
425
+ | id (可选) | string | 点的唯一标识符。可以用于在各种操作或数据结构中引用该点。 |
426
+ | x | number | 点在二维空间中的 x 坐标。 |
427
+ | y | number | 点在二维空间中的 y 坐标。 |
428
+ | [key: string] | any | 允许为 `Point` 类型添加其他属性,提供了灵活性以适应各种用例。 |
429
+
430
+ ### **PointTuple(点坐标组)**
431
+ `PointTuple` 类型是一个表示二维空间中点的元组。它由两个数值组成,分别对应点的 x 坐标和 y 坐标。例如获取指定范围内所有元素的函数`getAreaElement`接收的参数`leftTopPoint`、`rightBottomPoint`就是这个类型。
432
+
433
+ ### **PropertiesType(元素属性)**
434
+ `PropertiesType`定义了流程图元素properties属性的类型,它包括以下属性:
435
+
436
+ | 属性名 | 类型 | 描述 |
437
+ | ------------- | ---------------------------- | ------------------------------------------------------------------------------------ |
438
+ | width | number (可选) | 指定元素的宽度。 |
439
+ | height | number (可选) | 指定元素的高度。 |
440
+ | rx | number (可选) | 定义元素圆角的 x 轴半径。 |
441
+ | ry | number (可选) | 定义元素圆角的 y 轴半径。 |
442
+ | style | LogicFlow.CommonTheme (可选) | 允许为元素应用通用主题样式。 |
443
+ | textStyle | LogicFlow.CommonTheme (可选) | 允许为元素内的文本应用通用主题样式。 |
444
+ | [key: string] | any (可选) | 这个索引签名允许向 `PropertiesType` 接口添加任何其他属性,提供了自定义属性的灵活性。 |
445
+
446
+ ### **TextConfig(文本配置)**
447
+ `TextConfig` 类型用于定义文本元素的配置。它包括指定文本内容、位置以及编辑和拖动的附加选项的属性。
448
+
449
+ | 属性名 | 类型 | 描述 |
450
+ | ------------ | -------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
451
+ | value | string | 要显示的实际文本内容。 |
452
+ | x | number | 在画布上定位文本的 x 坐标。 |
453
+ | y | number | 在画布上定位文本的 y 坐标。 |
454
+ | editable | boolean (可选) | 一个标志,指示文本是否可以由用户编辑。如果设置为 `true`,文本元素将是可编辑的。 |
455
+ | draggable | boolean (可选) | 一个标志,指示文本是否可以在画布上拖动。如果设置为 `true`,文本元素将是可拖动的。 |
456
+ | overflowMode | 'default' \| 'autoWrap' \| 'ellipsis' (可选) | 该属性定义文本在超过指定宽度时的行为。<br> - `default`: 无特殊处理,允许溢出。<br> - `autoWrap`: 当文本超过宽度时自动换行。<br> - `ellipsis`: 当文本溢出时在末尾显示省略号 (`...`)。 |
457
+
458
+ ### **ClientPosition(元素位置)**
459
+ `ClientPosition` 类型表示在 LogicFlow 应用中事件相对于 DOM 覆盖层和画布覆盖层的位置。这个类型对于准确确定用户交互在图形界面中的发生位置非常重要,它的类型定义如下:
460
+
461
+ ```typescript
462
+ export type ClientPosition = {
463
+ domOverlayPosition: Position; // 相对于 DOM 覆盖层的位置
464
+ canvasOverlayPosition: Position; // 相对于画布覆盖层的位置
465
+ };
466
+ ```
467
+
468
+ | 属性名 | 类型 | 描述 |
469
+ | --------------------- | -------- | ------------------------------------------------------- |
470
+ | domOverlayPosition | Position | 表示事件相对于 DOM 覆盖层的位置,包含 `x` 和 `y` 坐标。 |
471
+ | canvasOverlayPosition | Position | 表示事件相对于画布覆盖层的位置,包含 `x` 和 `y` 坐标。 |
472
+
473
+ `ClientPosition` 类型是LogicFlow部分事件返回给外部的数据的格式,例如`lf.graphModel.getPointByClient`方法返回的数据,节点、边、画布的单双击事件和右键点击事件中返回的`position`字段的数据就是这个格式。
474
+
475
+ ### **ElementState(元素状态)**
476
+
477
+ `ElementState` 表示元素状态码,常用于 `graphModel.setElementStateById` 的 `state` 参数。
478
+
479
+ | 状态名 | 值 | 说明 |
480
+ | ------ | --- | --- |
481
+ | `DEFAULT` | `1` | 默认显示 |
482
+ | `TEXT_EDIT` | `2` | 元素处于文本编辑态 |
483
+ | `SHOW_MENU` | `3` | 显示菜单(已废弃,建议使用菜单插件) |
484
+ | `ALLOW_CONNECT` | `4` | 元素允许作为当前边目标节点 |
485
+ | `NOT_ALLOW_CONNECT` | `5` | 元素不允许作为当前边目标节点 |
486
+
487
+ ## 节点相关
488
+
489
+ ### **NodeConfig(节点配置)**
490
+ `NodeConfig` 定义了节点的配置结构。它包含一些关键属性,用于指定节点的特性、位置和行为。以下是 `NodeConfig` 接口中各个属性的详细说明:
491
+
492
+ | 属性名 | 类型 | 描述 |
493
+ | ---------- | --------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------- |
494
+ | id | string (可选) | 节点的唯一标识符。此属性用于在 LogicFlow 框架内引用该节点。 |
495
+ | type | string | 指定节点的类型。此属性是必需的,它决定了节点的渲染方式及其在流程中的行为。 |
496
+ | x | number | 节点在画布上的 x 坐标。此属性对于准确放置节点至关重要。 |
497
+ | y | number | 节点在画布上的 y 坐标。与 x 坐标类似,该属性同样用于确定节点的位置。 |
498
+ | text | TextConfig \| string (可选) | 该属性可以是 `TextConfig` 对象或一个字符串,表示要显示在节点上的文本。如果提供 `TextConfig` 对象,则可以更详细地配置文本,包括其位置和样式。 |
499
+ | zIndex | number (可选) | 决定节点相对于其他节点的堆叠顺序。`zIndex` 值越大,节点的渲染层级越高。 |
500
+ | properties | PropertiesType (可选) | 可以为节点关联的一组自定义属性,允许对节点的功能或外观进行额外的配置。 |
501
+ | virtual | boolean (可选) | 指示节点是否为虚拟节点。虚拟节点的渲染方式可能与标准节点不同,并可用于流程中的特定需求。 |
502
+ | rotate | number (可选) | 指定节点的旋转角度(单位:度)。该属性允许调整节点的方向。 |
503
+ | rotatable | boolean (可选) | 指示节点是否可以被用户旋转。如果设为 `true`,用户可以交互式地更改节点的旋转角度。 |
504
+ | resizable | boolean (可选) | 指示节点是否可以被用户调整大小。如果设为 `true`,用户可以交互式地改变节点的尺寸。 |
505
+
506
+ ### **OffsetData(移动偏移)**
507
+ `OffsetData` 定义了节点在拖拽时移动偏移值存储的数据结构,详细属性如下:
508
+
509
+ | 属性名 | 类型 | 描述 |
510
+ | ------ | ------ | ------------------------------------------------- |
511
+ | dx | number | 表示沿 x 轴的偏移量,指示从给定点水平移动的距离。 |
512
+ | dy | number | 表示沿 y 轴的偏移量,指示从给定点垂直移动的距离。 |
513
+
514
+ ### **FakeNodeConfig(虚拟节点配置)**
515
+ `FakeNodeConfig` 类型用于定义 LogicFlow 框架中虚拟节点的配置。虚拟节点通常是在拖拽创建节点过程中作为临时节点占位,在底层数据存储中,主要将节点的`virtual`属性设置为`true`以与真实节点区分。
516
+
517
+ | 属性名 | 类型 | 描述 |
518
+ | ------------- | --------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------- |
519
+ | type | string | 这个属性指定虚拟节点的类型。它是一个必填字段,决定节点在 LogicFlow 中的渲染和交互方式。 |
520
+ | text | TextConfig \| string (可选) | 这个属性可以是 `TextConfig` 对象或简单的字符串。如果是 `TextConfig` 对象,它允许详细配置节点上显示的文本,包括位置和样式选项。如果是字符串,它直接表示节点文本。 |
521
+ | properties | PropertiesType (可选) | 这个属性主要用于设置虚拟节点关联的自定义属性。它可以包括各种属性,如尺寸、样式等属性。 |
522
+ | [key: string] | unknown | 这个索引签名允许添加任何其他可能未明确定义在类型中的属性。这提供了扩展配置的灵活性。 |
523
+
524
+ ### **VectorData(向量数据)**
525
+ `VectorData` 类型用于表示二维空间中的向量,它包含用于定义 x 轴和 y 轴位置变化的属性,具体属性如下:
526
+
527
+ | 属性名 | 类型 | 描述 |
528
+ | ------ | ------ | ------------------------------------------------------------------------------------ |
529
+ | deltaX | number | 表示 x 坐标的变化量。该值可以是正数或负数,分别表示向右或向左移动。 |
530
+ | deltaY | number | 表示 y 坐标的变化量。类似于 `deltaX`,该值可以是正数或负数,分别表示向上或向下移动。 |
531
+
532
+ 这个属性主要在`resize`模块中约束`resizeNode`方法的入参
533
+ ```ts
534
+ resizeNode = ({ deltaX, deltaY }: VectorData) => {
535
+ const { index } = this
536
+ const { model, graphModel, x, y } = this.props
537
+ handleResize({
538
+ x,
539
+ y,
540
+ deltaX,
541
+ deltaY,
542
+ index,
543
+ nodeModel: model,
544
+ graphModel,
545
+ cancelCallback: () => {
546
+ this.dragHandler.cancelDrag()
547
+ },
548
+ })
549
+ }
550
+ ```
551
+
552
+ ### **DomAttributes(Dom属性)**
553
+ `DomAttributes` 类型在 LogicFlow 中主要用于约束节点`getOuterGAttributes`方法的返回值
554
+
555
+ | 属性名 | 类型 | 描述 |
556
+ | ------------- | ------------------- | --------------------------------------------------------------------------------------------------------- |
557
+ | className | string | 一个可选属性,允许你为 SVG 元素指定一个 CSS 类名。可以用来应用你在 CSS 文件中定义的自定义样式。 |
558
+ | [key: string] | string \| undefined | 这个索引签名允许包含 SVG 元素所需的任何其他属性。这些属性可以作为键值对指定,其中键是属性名,值是属性值。 |
559
+
560
+ 下面是一个在 LogicFlow 组件中使用 `DomAttributes` 类型的示例:
561
+
562
+ ```typescript
563
+ getOuterGAttributes(): LogicFlow.DomAttributes {
564
+ return {
565
+ className: '',
566
+ fill: '#fff',
567
+ stroke: 'green',
568
+ }
569
+ }
570
+ ```
571
+
572
+ 在这个示例中,`getOuterGAttributes` 把节点最外层g标签设置为白底绿边框的样式。
573
+
574
+ ## 边相关
575
+
576
+ ### **EdgeConfig(边配置)**
577
+
578
+ | 属性名 | 类型 | 描述 |
579
+ | -------------- | --------------------------- | ------------------------------------------------------------------------- |
580
+ | id | string (可选) | 边的唯一标识符。此属性用于在 LogicFlow 实例中引用边。 |
581
+ | type | string (可选) | 指定边的类型。默认类型是 `polyline`。 |
582
+ | sourceNodeId | string | 标识边的源节点。此属性是必需的,用于确定边的起点。 |
583
+ | sourceAnchorId | string (可选) | 指定源节点上边的起始锚点。 |
584
+ | targetNodeId | string | 标识边的目标节点。此属性是必需的,用于确定边的终点。 |
585
+ | targetAnchorId | string (可选) | 指定目标节点上边的连接锚点。 |
586
+ | startPoint | Point (可选) | 一个 `Point` 类型的对象,定义边的起始坐标。可以用来手动设置边的起始位置。 |
587
+ | endPoint | Point (可选) | 一个 `Point` 类型的对象,定义边的结束坐标。可以用来手动设置边的结束位置。 |
588
+ | text | string \| TextConfig (可选) | 指定要在边上显示的文本。 |
589
+ | pointsList | Point[] (可选) | 一个 `Point` 对象数组,定义边上的额外点,允许创建更复杂的形状。 |
590
+ | zIndex | number (可选) | 确定边相对于其他元素的堆叠顺序。较高的值会使边渲染在较低值的元素之上。 |
591
+ | properties | PropertiesType (可选) | 一个 `PropertiesType` 类型的对象,允许为边关联额外的自定义属性。 |
592
+
593
+ ### **EdgeData(边数据)**
594
+
595
+ `EdgeData` 接口扩展了 `EdgeConfig` 接口,表示 LogicFlow 框架中边的数据结构。它包括定义图中边的特性和行为的必需属性。
596
+
597
+ | 属性名 | 类型 | 描述 |
598
+ | ---------- | -------------------- | -------------------------------------------------------------------------------------------------- |
599
+ | id | string | 边的唯一标识符。此属性对于区分图中的不同边非常重要。 |
600
+ | type | string | 指定边的类型。默认类型通常设置为 "polyline",但可以根据具体需求定义其他类型。 |
601
+ | text | TextConfig \| string | 包含与边相关的文本。可以是定义文本属性(如位置和样式)的 `TextConfig` 对象,也可以是简单的字符串。 |
602
+ | startPoint | Point | 表示边的起点。使用包含 x 和 y 坐标的 `Point` 类型定义。 |
603
+ | endPoint | Point | 表示边的终点,也使用 `Point` 类型定义。 |
604
+ | pointsList | Point[] | 表示折线的拐点路径。 |
605
+
606
+ 以下是一个定义edgeData的例子:
607
+ ```typescript
608
+ const edge: EdgeData = {
609
+ id: 'edge_1',
610
+ type: 'polyline',
611
+ text: {
612
+ value: 'Connection',
613
+ x: 150,
614
+ y: 100,
615
+ },
616
+ startPoint: { x: 100, y: 100 },
617
+ endPoint: { x: 300, y: 200 },
618
+ pointsList: [
619
+ { x: 150, y: 150 },
620
+ { x: 250, y: 150 },
621
+ { x: 150, y: 175 },
622
+ { x: 250, y: 175 },
623
+ ],
624
+ };
625
+ ```
626
+
627
+ 在这个示例中,定义了一条具有唯一 ID、类型、相关文本和指定起点和终点的边,并通过`pointsList`参数约定了折线的路径是Z型。
628
+
629
+ ## 插件相关
630
+
631
+ ### **Extension(插件)**
632
+ `Extension` 接口定义了 LogicFlow 框架中扩展的结构和行为。扩展允许开发者通过添加自定义功能或修改现有功能来增强 LogicFlow 的能力。
633
+
634
+ | 属性名 | 类型 | 描述 |
635
+ | ------- | ----------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------- |
636
+ | render | (lf: LogicFlow, container: HTMLElement) => void | 一个接收两个参数的函数:<br> - `lf`:`LogicFlow` 类的实例,提供对框架核心功能的访问。<br> - `container`:一个 `HTMLElement`,用于渲染扩展内容。 |
637
+ | destroy | () => void (可选) | 一个函数,在不再需要扩展时调用,以清理资源或移除事件监听器。该函数不接收任何参数。 |
638
+
639
+ ### **ExtensionRenderFunc(插件渲染函数)**
640
+ `ExtensionRenderFunc` 类型是 LogicFlow 框架中用于渲染扩展的函数签名。它定义了扩展如何在 LogicFlow 环境中渲染其内容。
641
+
642
+ ```typescript
643
+ export type ExtensionRenderFunc = (
644
+ lf: LogicFlow,
645
+ container: HTMLElement,
646
+ ) => void;
647
+ ```
648
+
649
+ | 参数名 | 类型 | 描述 |
650
+ | --------- | ----------- | ------------------------------------------------------------------------------------------------ |
651
+ | lf | LogicFlow | `LogicFlow` 类的实例。此参数提供对 LogicFlow API 的访问,使扩展能够与主 LogicFlow 实例进行交互。 |
652
+ | container | HTMLElement | 一个 `HTMLElement`,用于渲染扩展的内容。扩展可以操作该 DOM 元素来显示其 UI。 |
653
+
654
+ `ExtensionRenderFunc` 通常用于创建 LogicFlow 的扩展。在定义扩展时,可以实现此函数来指定扩展的渲染方式。
655
+ 以下是一个扩展如何实现 `ExtensionRenderFunc` 的简单示例:
656
+
657
+ ```typescript
658
+ const myExtension: ExtensionDefinition = {
659
+ pluginName: 'MyCustomExtension',
660
+ render: (lf, container) => {
661
+ const element = document.createElement('div');
662
+ element.innerHTML = 'Hello from MyCustomExtension!';
663
+ container.appendChild(element);
664
+ },
665
+ };
666
+ ```
667
+
668
+ ### **ExtensionType(插件类型)**
669
+ `ExtensionType` 是一个联合类型,表示 LogicFlow 框架中可用的不同形式的扩展。它提供了灵活性,可以支持基于构造函数的扩展和基于对象的扩展定义
670
+
671
+ ```typescript
672
+ export type ExtensionType = ExtensionConstructor | ExtensionDefinition;
673
+ ```
674
+
675
+ | 组件名 | 描述 |
676
+ | -------------------- | ----------------------------------------------------------------------------------------------------- |
677
+ | ExtensionConstructor | 这是一个类构造函数类型,定义了扩展的实例化方式。通常包括 `pluginName`,并且其构造函数接受扩展的属性。 |
678
+ | ExtensionDefinition | 这是基于对象的扩展定义。包含 `pluginName`,并且可以包含可选方法,如 `install` 和 `render`。 |
679
+
680
+
681
+
682
+ ### **ExtensionConfig(插件配置)**
683
+
684
+ `ExtensionConfig` 类型用于定义插件的配置。遵循该结构可以确保扩展正确配置,并能够与 LogicFlow 核心功能无缝交互。
685
+
686
+ | 属性名 | 类型 | 描述 |
687
+ | ---------- | ------------------------------------------- | -------------------------------------------- |
688
+ | pluginFlag | Symbol | 用于标识插件的唯一符号。 |
689
+ | extension | ExtensionConstructor \| ExtensionDefinition | 用于定义扩展的行为和渲染逻辑。 |
690
+ | props | Record<string, any> (可选) | 额外的属性记录,可用于向扩展传递自定义配置。 |
691
+
692
+ ```typescript
693
+ const myExtensionConfig: LogicFlow.ExtensionConfig = {
694
+ pluginFlag: Symbol('myExtension'),
695
+ extension: myExtension, // 这可以是 ExtensionConstructor 或 ExtensionDefinition 的实例
696
+ props: {
697
+ // 传递给扩展的额外属性
698
+ }
699
+ };
700
+ ```
701
+
702
+ ### **IExtensionProps(插件参数类型)**
703
+ `IExtensionProps` 定义了LogicFlow插件入参的类型。它为扩展提供必要的上下文和功能,以便与 LogicFlow 实例进行交互。
704
+
705
+ | 属性名 | 类型 | 描述 |
706
+ | --------- | -------------------------------- | ------------------------------------------------------------------------- |
707
+ | lf | `LogicFlow` | 该扩展所关联的 `LogicFlow` 类实例。允许扩展访问和操作 LogicFlow 实例。 |
708
+ | LogicFlow | `LogicFlowConstructor` | `LogicFlow` 构造函数的引用。可用于创建新的 LogicFlow 实例或访问静态方法。 |
709
+ | props | `Record<string, unknown>` (可选) | 传递给扩展的额外属性。允许对扩展的行为进行自定义和配置。 |
710
+ | options | `Record<string, unknown>` | 一组可用于配置扩展的选项。可能包括扩展功能的特定设置。 |
711
+
712
+ ### **ExtensionConstructor(插件构造函数)**
713
+ `ExtensionConstructor` 定义的是 LogicFlow 插件的构造函数。
714
+ | 属性名 | 类型 | 描述 |
715
+ | ---------------------------- | --------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------ |
716
+ | pluginName | string | 该属性保存插件的名称,是必需的字段,用于唯一标识 LogicFlow 生态系统中的扩展。 |
717
+ | new (props: IExtensionProps) | Extension | 这是一个构造函数签名,接受一个 `IExtensionProps` 类型的对象作为参数,并返回一个 `Extension` 接口的实例。`IExtensionProps` 包含为扩展提供上下文和配置的属性。 |
718
+
719
+ 要使用 ExtensionConstructor,通常会定义一个实现该接口的类。以下是一个示例:
720
+ ``` typescript
721
+ class MyCustomExtension implements ExtensionConstructor {
722
+ pluginName = 'MyCustomExtension';
723
+
724
+ constructor(props: IExtensionProps) {
725
+ // 使用提供的 props 初始化扩展
726
+ }
727
+ }
728
+ ```
729
+
730
+ ### **ExtensionDefinition(插件定义)**
731
+
732
+ `ExtensionDefinition` 类型用于为 LogicFlow 框架定义插件。它允许开发者创建自定义扩展,从而增强 LogicFlow 实例的功能。
733
+
734
+ | 属性名 | 类型 | 描述 |
735
+ | ---------- | --------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------- |
736
+ | pluginName | string | 插件的唯一标识符。此名称用于在 LogicFlow 实例中注册和引用该插件。 |
737
+ | install | `(lf: LogicFlow, LFCtor: LogicFlowConstructor) => void`(可选) | 当插件被安装时调用的函数。它接收当前 LogicFlow 实例和其构造函数作为参数,使插件能够与 LogicFlow API 交互。 |
738
+ | render | `ExtensionRenderFunc`(可选) | 定义插件如何渲染其 UI 组件的函数。它接收 LogicFlow 实例和一个容器元素作为参数,允许插件根据需要操作 DOM。 |
739
+
740
+ **使用方式**
741
+
742
+ 要使用 `ExtensionDefinition` 类型创建新扩展,通常需要定义一个符合该结构的对象。以下是示例:
743
+
744
+ ```typescript
745
+ const myCustomExtension: LogicFlow.ExtensionDefinition = {
746
+ pluginName: 'MyCustomExtension',
747
+ install: (lf, LFCtor) => {
748
+ // 插件的初始化代码
749
+ },
750
+ render: (lf, container) => {
751
+ // 插件 UI 的渲染代码
752
+ }
753
+ };
754
+ ```
755
+
756
+ ### **LabelConfig(Label插件数据类型)**
757
+ 这个类型定义了Label插件支持的渲染数据的结构
758
+
759
+ | 属性名 | 类型 | 描述 |
760
+ | ---------------- | -------------------------- | ----------------------------------------------------------------------------------------------- |
761
+ | id | string (可选) | 标签的唯一标识符。这个属性对于以编程方式引用标签非常有用。 |
762
+ | type | string (可选) | 指定标签的类型。可以用来区分不同样式或行为的标签。 |
763
+ | x | number | 标签在流程图二维空间中的 x 坐标。 |
764
+ | y | number | 标签在流程图二维空间中的 y 坐标。 |
765
+ | content | string (可选) | 标签的富文本内容。可以包含 HTML 或其他标记来设置标签的外观。 |
766
+ | value | string | 标签的纯文本内容。如果不使用富文本,将显示此文本。 |
767
+ | rotate | number (可选) | 标签的旋转角度(以度为单位)。允许以角度显示文本。 |
768
+ | style | Record<string, any> (可选) | 自定义 CSS 属性,用于设置标签的样式。可以包括颜色、字体大小和其他视觉属性。 |
769
+ | editable | boolean (可选) | 一个布尔值,指示标签是否可以由用户编辑。如果设置为 true,用户可以修改标签的内容。 |
770
+ | draggable | boolean (可选) | 一个布尔值,指示标签是否可以在流程图中拖动和重新定位。 |
771
+ | labelWidth | number (可选) | 指定标签的宽度。对于控制标签与其他元素的布局非常有用。 |
772
+ | textOverflowMode | string (可选) | 定义文本在超出标签宽度时的行为。可能的值包括:`ellipsis`、`wrap`、`clip`、`nowrap`、`default`。 |
773
+ | vertical | boolean (可选) | 一个布尔值,指示标签是否应垂直渲染。对于特定布局要求非常有用。 |
774
+
775
+ ### **LabelOption(Label插件配置项类型)**
776
+ `LabelOption` 类型定义了Label插件的的配置设置。以下是类型中包含的属性的详细信息:
777
+
778
+ | 属性名 | 类型 | 描述 |
779
+ | ---------- | ------------------- | ---------------------------------------------------------------------------------------------------- |
780
+ | isVertical | boolean | 指示与节点关联的所有标签是否应垂直显示。如果设置为 `true`,标签将垂直排列;否则,将水平显示。 |
781
+ | isMultiple | boolean | 指定单个节点是否允许多个标签。如果设置为 `true`,用户可以为一个节点添加多个标签。 |
782
+ | maxCount | number \| undefined | 定义在 `isMultiple` 设置为 `true` 时可以添加到节点的最大标签数。如果未指定,则标签数量可能没有限制。 |
783
+
784
+ ### **MenuConfig(Menu插件菜单项类型)**
785
+ `MenuConfig` 定义了Menu插件中菜单项的配置结构。开发者可以遵循类型要求为每个菜单项指定各种属性,从而增强菜单的自定义性和功能性。
786
+
787
+ | 属性名 | 类型 | 描述 |
788
+ | --------- | -------------------------------- | ---------------------------------------------------------------------------------------------------------- |
789
+ | text | string (可选) | 菜单项的显示文本,即用户可见的标签。 |
790
+ | className | string (可选) | 自定义 CSS 类名,用于为菜单项添加额外的样式。 |
791
+ | icon | boolean (可选) | 是否显示图标。如果设为 `true`,则会在菜单文本旁边渲染一个图标。 |
792
+ | callback | `(id: string \| number) => void` | 当菜单项被点击时调用的回调函数。该函数接收菜单项的 `id` 作为参数,开发者可以根据选中的菜单项执行特定操作。 |
793
+
794
+ ### **BPMNElements相关类型**
795
+
796
+ #### DefinitionConfigType(定义配置)
797
+ 用于批量为多个节点类型注册事件或任务的定义。
798
+
799
+ | 属性名 | 类型 | 描述 |
800
+ | ---------- | --------------------------------------------- | ------------------------------------- |
801
+ | nodes | string[] | 节点类型名称列表(如 `startEvent`)。 |
802
+ | definition | EventDefinitionType[] \| TaskDefinitionType[] | 对应的事件/任务定义数组。 |
803
+
804
+ #### DefinitionPropertiesType(定义属性)
805
+ 事件或任务定义携带的业务属性集合。
806
+
807
+ | 属性名 | 类型 | 描述 |
808
+ | -------------- | ------ | ---------------------------------------- |
809
+ | definitionType | string | 定义类型标识(需要与bpmn元素类型对应)。 |
810
+ | [key: string] | any | 其他自定义属性。 |
811
+
812
+ #### EventDefinitionType(事件定义)
813
+ 定义事件节点的渲染与序列化行为。
814
+
815
+ | 属性名 | 类型 | 描述 |
816
+ | ------------- | ----------------------------- | ---------------------------------------------------------- |
817
+ | type | string | 定义类型名称(与 `definitionType` 对应)。 |
818
+ | icon | string \| Record<string, any> | 事件图标定义(支持单个 `path d` 或由多子元素组成的 `g`)。 |
819
+ | toJSON | (data?: unknown) => unknown | 将事件定义序列化为 JSON 的方法。 |
820
+ | properties | DefinitionPropertiesType | 事件默认属性(如中断/非中断、计时器配置等)。 |
821
+ | [key: string] | any | 其他扩展字段。 |
822
+
823
+ #### TaskDefinitionType(任务定义)
824
+ 定义任务节点的属性集合。
825
+
826
+ | 属性名 | 类型 | 描述 |
827
+ | ------------- | ------ | -------------- |
828
+ | type | string | 定义类型名称。 |
829
+ | [key: string] | any | 其他扩展字段。 |
830
+
831
+ #### 示例(类型定义)
832
+ ```ts
833
+ const customDefinition: DefinitionConfigType[] = [
834
+ {
835
+ // 为startEvent、intermediateCatchEvent、boundaryEvent添加definition
836
+ nodes: ['startEvent', 'intermediateCatchEvent', 'boundaryEvent'],
837
+ definition: { // EventDefinitionType类型
838
+ /**
839
+ * definition的type属性,对应XML数据中的节点名
840
+ * 例如一个时间非中断边界事件的XML数据如下:
841
+ * <bpmn:boundaryEvent id="BoundaryEvent_1" cancelActivity="false" attachedToRef="Task_1">
842
+ * <bpmn:timerEventDefinition>
843
+ * <bpmn:timeDuration>
844
+ * P1D
845
+ * </bpmn:timeDuration>
846
+ * </bpmn:timerEventDefinition>
847
+ * </bpmn:boundaryEvent>
848
+ */
849
+ type: 'bpmn:timerEventDefinition',
850
+ // icon可以是svg的path路径m, 也可以是@logicflow/core 导出的h函数生成的svg, 这里是通过h函数生成的svg
851
+ icon: timerIcon,
852
+ /**
853
+ * 对应definition需要的属性,例如这里是timerType和timerValue
854
+ * timerType值可以"timeCycle", "timerDate", "timeDuration", 用于区分 <bpmn:timeCycle/>、<bpmn:timeDate/>、<bpmn:timeDuration/>
855
+ * timerValue是timerType对应的cron表达式
856
+ * 最终会生成 `<bpmn:${timerType} xsi:type="bpmn:tFormalExpression">${timerValue}</bpmn:${timerType}>`
857
+ */
858
+ properties: { // DefinitionPropertiesType 类型
859
+ definitionType: 'bpmn:timerEventDefinition',
860
+ timerValue: '',
861
+ timerType: '',
862
+ }
863
+ }
864
+ }
865
+ ]
866
+ ```
867
+