@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,50 @@
1
+ ---
2
+ nav: Guide
3
+ group:
4
+ title: Basics
5
+ order: 1
6
+ title: Background
7
+ order: 5
8
+ toc: content
9
+ ---
10
+
11
+ ### Provides methods to modify the background of the canvas, including background color or background image, which is located at the bottom of the canvas. <Badge>info</Badge>
12
+
13
+ The `background` option sets the style of the background layer of the canvas when it is created, and
14
+ supports passthrough of any style attribute to the background layer. The default value of `false`
15
+ means no background.
16
+
17
+ ```tsx | pure
18
+ const lf = new LogicFlow({
19
+ background: false | BackgroundConfig,
20
+ })
21
+
22
+ type BackgroundConfig = {
23
+ backgroundImage?: string,
24
+ backgroundColor?: string,
25
+ backgroundRepeat?: string,
26
+ backgroundPosition?: string,
27
+ backgroundSize?: string,
28
+ backgroundOpacity?: number,
29
+ filter?: string, // Filter
30
+ [key: string]: any,
31
+ };
32
+ ```
33
+
34
+ ### Configuration items
35
+
36
+ ### Set the background image
37
+
38
+ ```tsx | pure
39
+ const lf = new LogicFlow({
40
+ // ...
41
+ background: {
42
+ backgroundImage: "url(../asserts/img/grid.svg)",
43
+ backgroundRepeat: "repeat",
44
+ },
45
+ });
46
+ ```
47
+
48
+ ## example
49
+
50
+ <a href="https://codesandbox.io/embed/infallible-goldberg-mrwgz?fontsize=14&hidenavigation=1&theme=dark&view=preview" target="_blank"> Go to CodeSandbox for examples</a>
@@ -0,0 +1,164 @@
1
+ ---
2
+ nav: Guide
3
+ group:
4
+ title: Basics
5
+ order: 1
6
+ title: Canvas
7
+ order: 4
8
+ toc: content
9
+ ---
10
+
11
+ This page covers three canvas-related topics: **grid** (alignment and snapping), **background** (underlay styling), and **snaplines** (alignment guides while dragging nodes).
12
+
13
+ ## Grid
14
+
15
+ The grid is the smallest step used when rendering or moving nodes. It keeps node centers on grid points so elements line up cleanly. Larger spacing makes alignment easier; smaller spacing feels smoother when dragging.
16
+
17
+ By default the grid is off and the step is 1px. When enabled, the default size is 20px: rendering snaps to that step, and each move step is 20px.
18
+
19
+ :::warning{title=Note}
20
+ When you set node coordinates they are quantized to the grid. For example center `{ x: 124, y: 138 }` may become `{ x: 120, y: 140 }` on the canvas. Migrating from another designer may require normalizing historical coordinates.
21
+
22
+ If you need both center alignment and edge alignment, prefer node widths and heights that are **even multiples** of the grid size (e.g. with a 20px grid use 20, 40, 80, 120, …).
23
+ :::
24
+
25
+ ### Enable the grid
26
+
27
+ Pass `grid` when constructing LogicFlow:
28
+
29
+ ```tsx | pure
30
+ const lf1 = new LogicFlow({
31
+ grid: true,
32
+ })
33
+
34
+ // Equivalent to explicit defaults
35
+ const lf2 = new LogicFlow({
36
+ grid: {
37
+ size: 20,
38
+ visible: true,
39
+ type: 'dot',
40
+ config: {
41
+ color: '#ababab',
42
+ thickness: 1,
43
+ },
44
+ },
45
+ })
46
+ ```
47
+
48
+ ### Grid options
49
+
50
+ You can control size, pattern, color, and line thickness.
51
+
52
+ ```tsx | pure
53
+ export type GridOptions = {
54
+ size?: number
55
+ visible?: boolean
56
+ type?: 'dot' | 'mesh'
57
+ config?: {
58
+ color?: string
59
+ thickness?: number
60
+ }
61
+ }
62
+ ```
63
+
64
+ ### Snap to grid (`snapGrid`)
65
+
66
+ `grid` and `snapGrid` work together but differ:
67
+
68
+ - **`grid`**: How the grid is drawn and its cell size (`size`, `visible`, `type`, …).
69
+ - **`snapGrid`**: Whether dragging and placement snap to that grid.
70
+
71
+ So `grid` is mostly visual and sizing; `snapGrid` is an editing behavior flag.
72
+
73
+ #### Turning on snap
74
+
75
+ `snapGrid` is part of edit config: set it at init or update at runtime:
76
+
77
+ ```tsx | pure
78
+ const lf = new LogicFlow({
79
+ container: document.querySelector('#app'),
80
+ grid: {
81
+ size: 20,
82
+ visible: true,
83
+ type: 'dot',
84
+ },
85
+ snapGrid: true,
86
+ })
87
+
88
+ lf.updateEditConfig({
89
+ snapGrid: false,
90
+ })
91
+ ```
92
+
93
+ For more edit options (including `snapGrid`) see [`editConfigModel`](../../api/runtime-model/graphModel.en.md#editconfigmodel) on the runtime model page and [Edit config](../../api/logicflow-instance/edit-config.en.md) for `lf.updateEditConfig` / `lf.getEditConfig`.
94
+
95
+ ### Grid demo
96
+
97
+ <a href="https://codesandbox.io/embed/logicflow-base8-hxtqr?fontsize=14&hidenavigation=1&theme=dark&view=preview" target="_blank">Open the CodeSandbox example</a>
98
+
99
+ ## Background
100
+
101
+ LogicFlow can draw a background layer under the diagram (color, image, etc.). Use the `background` option; `false` disables the layer (default).
102
+
103
+ ```tsx | pure
104
+ const lf = new LogicFlow({
105
+ background: false | BackgroundConfig,
106
+ })
107
+
108
+ type BackgroundConfig = {
109
+ backgroundImage?: string
110
+ backgroundColor?: string
111
+ backgroundRepeat?: string
112
+ backgroundPosition?: string
113
+ backgroundSize?: string
114
+ backgroundOpacity?: number
115
+ filter?: string
116
+ [key: string]: any
117
+ }
118
+ ```
119
+
120
+ ### Background image
121
+
122
+ ```tsx | pure
123
+ const lf = new LogicFlow({
124
+ background: {
125
+ backgroundImage: 'url(../asserts/img/grid.svg)',
126
+ backgroundRepeat: 'repeat',
127
+ },
128
+ })
129
+ ```
130
+
131
+ ### Background demo
132
+
133
+ <a href="https://codesandbox.io/embed/infallible-goldberg-mrwgz?fontsize=14&hidenavigation=1&theme=dark&view=preview" target="_blank">Open the CodeSandbox example</a>
134
+
135
+ ## Snaplines
136
+
137
+ Snaplines help align a moving node with others by comparing centers and bounding boxes.
138
+
139
+ ### Usage
140
+
141
+ Snaplines are on by default in normal edit mode and can be disabled via options. In [silent mode](../advanced/silent-mode.en.md#silent-mode) nodes cannot be moved, so snaplines stay off.
142
+
143
+ ```tsx | pure
144
+ const lf = new LogicFlow({
145
+ snapline: false,
146
+ })
147
+ ```
148
+
149
+ ### Styling
150
+
151
+ Change color and width through the theme:
152
+
153
+ ```tsx | pure
154
+ lf.setTheme({
155
+ snapline: {
156
+ stroke: '#1E90FF',
157
+ strokeWidth: 1,
158
+ },
159
+ })
160
+ ```
161
+
162
+ <example :height="400" ></example>
163
+
164
+ More styling options: [Theme](./theme.en.md).
@@ -0,0 +1,183 @@
1
+ ---
2
+ nav: 指南
3
+ group:
4
+ title: 基础
5
+ order: 1
6
+ title: 画布
7
+ order: 4
8
+ toc: content
9
+ ---
10
+
11
+ 本页介绍与画布外观和编辑辅助相关的三项能力:**网格**(对齐与吸附的最小单位)、**背景**(画布底层样式),以及**对齐线**(拖动节点时与其他节点对齐参考)。
12
+
13
+ ## 网格
14
+
15
+ 网格是指渲染/移动节点的最小单位。网格最主要的作用是在移动节点的时候,保证每个节点中心点的位置都是在网格上。这样更有利于节点之间的对齐。一般来说,网格的间隔越大,在编辑流程图的时候,节点就更好对齐;网格的间隔越小,拖动节点的感觉就更加流畅。
16
+
17
+ 网格默认关闭,渲染/移动最小单位为 1px,若开启网格,则网格默认大小为 20px,渲染节点时表示以 20
18
+ 为最小单位对齐到网格,移动节点时表示每次移动最小距离为 20px。
19
+
20
+ :::warning{title=注意}
21
+ 在设置节点坐标时会按照网格的大小来对坐标进行转换,如设置中心点位置`{ x: 124, y: 138 }`
22
+ 的节点渲染到画布后的实际位置为 `{ x: 120, y: 140 }`。所以使用 LogicFlow
23
+ 替换项目中旧的流程设计器时,需要对历史数据的坐标进行处理。<br>
24
+ 在实际开发中,如果期望节点既可以中心对齐,也可以按照两边对齐。那么自定义节点的宽高需要是 grid
25
+ 的偶数倍。也就是假设 grid 为 20,那么所有的节点宽度最好是 20、40、80、120 这种偶数倍的宽度。
26
+ :::
27
+
28
+ ### 开启网格
29
+
30
+ 在创建画布的时候通过配置 `grid` 来设置网格属性
31
+
32
+ 开启网格并应用默认属性:
33
+
34
+ ```tsx | pure
35
+ const lf1 = new LogicFlow({
36
+ grid: true,
37
+ })
38
+
39
+ // 等同于默认属性如下
40
+ const lf2 = new LogicFlow({
41
+ grid: {
42
+ size: 20,
43
+ visible: true,
44
+ type: 'dot',
45
+ config: {
46
+ color: '#ababab',
47
+ thickness: 1,
48
+ },
49
+ },
50
+ })
51
+ ```
52
+
53
+ ### 设置网格属性
54
+
55
+ 支持设置网格大小、类型、网格线颜色和宽度等属性。
56
+
57
+ ```tsx | pure
58
+ export type GridOptions = {
59
+ size?: number // 设置网格大小
60
+ visible?: boolean, // 设置是否可见,若设置为false则不显示网格线但是仍然保留size栅格的效果
61
+ type?: 'dot' | 'mesh', // 设置网格类型,目前支持 dot 点状和 mesh 线状两种
62
+ config?: {
63
+ color: string, // 设置网格的颜色
64
+ thickness?: number, // 设置网格线的宽度
65
+ }
66
+ };
67
+ ```
68
+
69
+ ### 网格对齐(snapGrid)
70
+
71
+ `grid` 和 `snapGrid` 是一组强关联配置,但职责不同:
72
+
73
+ - `grid`:控制网格怎么显示,以及网格尺寸(`size`、`visible`、`type` 等)
74
+ - `snapGrid`:控制节点拖拽、放置时是否吸附到网格
75
+
76
+ 也就是说,`grid` 偏“网格参数与视觉”,`snapGrid` 偏“编辑行为开关”。
77
+
78
+ #### 如何开启网格对齐
79
+
80
+ `snapGrid` 属于编辑配置,可以在初始化时传入,也可以在运行时动态更新:
81
+
82
+ ```tsx | pure
83
+ const lf = new LogicFlow({
84
+ container: document.querySelector('#app'),
85
+ grid: {
86
+ size: 20,
87
+ visible: true,
88
+ type: 'dot',
89
+ },
90
+ snapGrid: true, // 初始化时开启网格吸附
91
+ })
92
+
93
+ // 运行时切换
94
+ lf.updateEditConfig({
95
+ snapGrid: false,
96
+ })
97
+ ```
98
+
99
+ 更多编辑配置(包含 `snapGrid`)见 [editConfigModel](../../api/runtime-model/graphModel.zh.md#editconfigmodel)。
100
+
101
+ ### 网格示例
102
+
103
+ <a href="https://codesandbox.io/embed/logicflow-base8-hxtqr?fontsize=14&hidenavigation=1&theme=dark&view=preview" target="_blank"> 去 CodeSandbox 查看示例</a>
104
+
105
+ ## 背景
106
+
107
+ LogicFlow 支持在画布最底层设置背景层样式,包括背景颜色或背景图片等。创建画布时,通过 `background` 选项来配置;默认值为 `false` 表示不启用背景层。
108
+
109
+ ```tsx | pure
110
+ const lf = new LogicFlow({
111
+ background: false | BackgroundConfig,
112
+ })
113
+
114
+ type BackgroundConfig = {
115
+ backgroundImage?: string,
116
+ backgroundColor?: string,
117
+ backgroundRepeat?: string,
118
+ backgroundPosition?: string,
119
+ backgroundSize?: string,
120
+ backgroundOpacity?: number,
121
+ filter?: string, // 滤镜
122
+ [key: string]: any,
123
+ };
124
+ ```
125
+
126
+ ### 设置背景图片
127
+
128
+ ```tsx | pure
129
+ const lf = new LogicFlow({
130
+ // ...
131
+ background: {
132
+ backgroundImage: "url(../asserts/img/grid.svg)",
133
+ backgroundRepeat: "repeat",
134
+ },
135
+ });
136
+ ```
137
+
138
+ ### 背景示例
139
+
140
+ <a href="https://codesandbox.io/embed/infallible-goldberg-mrwgz?fontsize=14&hidenavigation=1&theme=dark&view=preview" target="_blank"> 去 CodeSandbox 查看示例</a>
141
+
142
+ ## 对齐线
143
+
144
+ 对齐线能够在节点移动过程中,将移动节点的位置与画布中其他节点位置进行对比,辅助位置调整。位置对比有如下两个方面。
145
+
146
+ - 节点中心位置
147
+ - 节点的边框
148
+
149
+ ### 对齐线使用
150
+
151
+ 普通编辑模式下,默认开启对齐线,也可通过配置进行关闭。
152
+ 在 [静默模式](../advanced/silent-mode.zh.md#静默模式) 下,无法移动节点,所以关闭了对齐线功能,无法通过配置开启。
153
+
154
+ ```tsx | pure
155
+ // 关闭对齐线功能
156
+ const lf = new LogicFlow({
157
+ snapline: false,
158
+ })
159
+ ```
160
+
161
+ ### 对齐线样式设置
162
+
163
+ 对齐线的样式包括颜色和宽度,可以通过设置主题的方式进行修改。
164
+
165
+ ```tsx | pure
166
+ // 默认配置
167
+ // {
168
+ // stroke: '#1E90FF',
169
+ // strokeWidth: 1,
170
+ // }
171
+
172
+ // 修改对齐线样式
173
+ lf.setTheme({
174
+ snapline: {
175
+ stroke: '#1E90FF', // 对齐线颜色
176
+ strokeWidth: 1, // 对齐线宽度
177
+ },
178
+ })
179
+ ```
180
+
181
+ <example :height="400" ></example>
182
+
183
+ 更多样式修改参见 [主题](./theme.zh.md)。
@@ -0,0 +1,106 @@
1
+ ---
2
+ nav: Guide
3
+ group:
4
+ title: Basics
5
+ order: 1
6
+ title: Instance and graph data
7
+ order: 0
8
+ toc: content
9
+ ---
10
+
11
+ This page answers two basics: **how to create a LogicFlow instance**, and **what the graph data passed to `render` looks like**.
12
+
13
+ ::::info{title=Reading guide}
14
+ - If you only want to run the first example end-to-end, start with [Get started](../get-started.en.md).
15
+ - If you have already run the minimal example, this page fills in the instance, initialization options, and `graphData` fundamentals.
16
+ ::::
17
+
18
+ The LogicFlow instance is the main object for designing and managing flowcharts. It initializes, renders, operates, and manages all elements on the diagram, including nodes and edges. With it you can build and manipulate diagrams and implement richer business logic and interactions.
19
+
20
+ ## Creating an instance
21
+
22
+ Each flow-design surface is one LogicFlow instance. Create one with `new LogicFlow`, for example:
23
+
24
+ <iframe src="/initialized-demo.html" style="border: none; width: 100%; height: 400px; margin: auto;"></iframe>
25
+
26
+ ```html
27
+ <style>
28
+ #container {
29
+ width: 1000px;
30
+ height: 500px
31
+ }
32
+ </style>
33
+
34
+ <div id="container"></div>
35
+ ```
36
+
37
+ ```js
38
+ const lf = new LogicFlow({
39
+ container: document.querySelector('#container')
40
+ });
41
+ ```
42
+
43
+ :::info{title=Tip}
44
+ For consistent terminology, we write LogicFlow instances as `lf` in code examples from here on.
45
+ :::
46
+
47
+ When creating an instance you pass initialization options. LogicFlow supports many options, but **`container`** (the DOM element that hosts the canvas) is the only required field. For the full option list see [Constructor options](../../api/logicflow-constructor/index.en.md).
48
+
49
+ ## Graph data
50
+
51
+ Inside LogicFlow a flowchart is a graph made of nodes and edges. Graph data uses the following shape:
52
+
53
+ ```json
54
+ {
55
+ "nodes": [
56
+ {
57
+ "id",
58
+ "type",
59
+ "x",
60
+ "y",
61
+ "text",
62
+ "properties"
63
+ }
64
+ ],
65
+ "edges": [
66
+ {
67
+ "id",
68
+ "type",
69
+ "sourceNodeId",
70
+ "targetNodeId"
71
+ }
72
+ ]
73
+ }
74
+ ```
75
+
76
+ - **`id`**: Optional for nodes and edges; generated when omitted.
77
+ - **`type`**: Required; a built-in type such as `rect` / `polyline` or your custom type.
78
+ - **`x` / `y`**: Required node coordinates.
79
+ - **`text`**: Optional node or edge text.
80
+ - **`properties`**: Custom data attached to the element.
81
+
82
+ **`nodes`**: All nodes to render. Full field definitions: [Type guide](../../api/type/index.en.md).
83
+
84
+ **`edges`**: All edges to render, linked by `sourceNodeId` and `targetNodeId`. Full field definitions: [Type guide](../../api/type/index.en.md).
85
+
86
+ After data is passed into the instance, LogicFlow builds a `nodeModel` and `edgeModel` for each element to hold state, behavior, and rendering. See [NodeModel](../../api/runtime-model/nodeModel.en.md) and [EdgeModel](../../api/runtime-model/edgeModel.en.md) for details.
87
+
88
+ ## Rendering
89
+
90
+ Call `render` with data in the format above:
91
+
92
+ ```js
93
+ lf.render(graphData)
94
+ ```
95
+
96
+ The example below shows how graph data is defined and passed in:
97
+
98
+ <code id="graphData" src="../../../src/tutorial/basic/instance/graphData"></code>
99
+
100
+ Beyond rendering, LogicFlow exposes many APIs. Start from the [API overview](../../api/logicflow-instance/index.en.md), then open the [full method index](../../api/logicflow-instance/index.en.md) as needed.
101
+
102
+ ## Next
103
+
104
+ 1. [Theme](theme.en.md): unify node, edge, and text styling
105
+ 2. [Events](event.en.md): listen to canvas, node, and edge interactions
106
+ 3. [Nodes](node.en.md) / [Edges](edge.en.md): move on to customization
@@ -0,0 +1,103 @@
1
+ ---
2
+ nav: 指南
3
+ group:
4
+ title: 基础
5
+ order: 1
6
+ title: 实例与图数据
7
+ order: 0
8
+ toc: content
9
+ ---
10
+
11
+ 这页回答两个基础问题:**如何创建 LogicFlow 实例**,以及**传给 `render` 的图数据长什么样**。
12
+
13
+ ::::info{title=阅读提示}
14
+ - 如果你只想先把第一个示例跑通,请先看 [快速上手](../get-started.zh.md)
15
+ - 如果你已经跑通过最小示例,这一页会补上实例、初始化配置和 `graphData` 的基础认知
16
+ ::::
17
+
18
+ LogicFlow 实例的定位是作为流程图设计和管理的核心对象。它负责初始化、渲染、操作和管理流程图中的所有元素,包括节点和边。
19
+ 使用 LogicFlow 实例,开发者可以方便地创建和操作流程图,实现复杂的业务逻辑和交互功能。
20
+
21
+ ## 创建实例
22
+
23
+ 一个流程设计界面,就是一个LogicFlow的实例。要创建一个实例我们只需要`new LogicFlow`一下,就像这样:
24
+
25
+ <iframe src="/initialized-demo.html" style="border: none; width: 100%; height: 400px; margin: auto;"></iframe>
26
+
27
+ ```html
28
+ <style>
29
+ #container {
30
+ width: 1000px;
31
+ height: 500px
32
+ }
33
+ </style>
34
+
35
+ <div id="container"></div>
36
+ ```
37
+
38
+ ```js
39
+ const lf = new LogicFlow({
40
+ container: document.querySelector('#container')
41
+ });
42
+ ```
43
+
44
+ :::info{title=Tip}
45
+ 为了统一术语,我们后面统一在代码层面将`LogicFlow`
46
+ 的实例写作`lf`。
47
+ :::
48
+
49
+ 当创建一个实例的时候,我们需要传递初始化 LogicFlow 实例的配置项。LogicFlow 支持非常丰富的初始化配置项,但 **container**(用于挂载画布的 DOM 节点)是唯一必填项。有关完整的配置项,请参阅 [初始化选项](../../api/logicflow-constructor/index.zh.md)。
50
+
51
+ ## 图数据
52
+
53
+ 在LogicFlow里面,我们把流程图看做是由节点和边组成的图。因此我们采用如下数据结构来表示LogicFlow的图数据:
54
+ ```json
55
+ {
56
+ nodes: [ // 节点数据
57
+ {
58
+ id, // 节点ID,可选参数,不传时内部会自动生成
59
+ type, // 节点类型,必传,可以是LogicFlow内置的基础类型,也可以是用户自定义的类型
60
+ x, // 节点x坐标,必传
61
+ y, // 节点y坐标,必传
62
+ text, // 节点文本,可选参数
63
+ properties, // 自定义属性
64
+ // ...其他属性
65
+ }
66
+ ],
67
+ edges: [ // 边数据
68
+ {
69
+ id, // 边ID,可选参数,不传时内部会自动生成
70
+ type, // 边类型,必传,可以是LogicFlow内置的基础类型,也可以是用户自定义的类型
71
+ sourceNodeId, // 起始节点ID,必传
72
+ targetNodeId, // 目标节点ID,必传
73
+ // ...其他属性
74
+ }
75
+ ],
76
+ }
77
+ ```
78
+
79
+ **`nodes`**: 包含所有要渲染的节点,完整的字段配置项见 [类型导览](../../api/type/index.zh.md)
80
+
81
+ **`edges`**: 包含所有要渲染的边,通过起始 `sourceNodeId` 和 `targetNodeId`
82
+ 将两个节点相连。完整的字段配置项见 [类型导览](../../api/type/index.zh.md)
83
+
84
+ 当图数据传入 LogicFlow 实例后,系统会为每个节点和边分别创建对应的数据模型:`nodeModel` 和 `edgeModel`,它用于管理节点的相关数据和行为,包括节点的属性、状态、交互逻辑以及与其他节点和边的关系,每个节点和边的实际表现(例如位置、样式等)都由对应的 model 来定义并控制。更多信息详见 [NodeModel](../../api/runtime-model/nodeModel.zh.md)、[EdgeModel](../../api/runtime-model/edgeModel.zh.md)
85
+
86
+ ## 图渲染
87
+
88
+ 接着只需要传入一个遵循格式的数据给`render`方法执行就可以渲染出图了。
89
+
90
+ ```js
91
+ lf.render(graphData)
92
+ ```
93
+
94
+ 下面是一个图数据渲染的例子,从例子中你能看到实际图数据是如何定义和传递给实例的:
95
+ <code id="graphData" src="../../../src/tutorial/basic/instance/graphData"></code>
96
+
97
+ 当然,除了渲染外 LogicFlow 还对外提供了很多 API 以支持开发者调用。建议先从 [API 导览](../../api/logicflow-instance/index.zh.md) 了解能力分组,再按需进入 [完整方法参考](../../api/logicflow-instance/index.zh.md)。
98
+
99
+ ## 下一步阅读
100
+
101
+ 1. [主题](theme.zh.md):统一调整节点、边和文本样式
102
+ 2. [事件](event.zh.md):监听画布、节点和边的交互
103
+ 3. [节点](node.zh.md) / [边](edge.zh.md):开始进入业务自定义