@yh-ui/flow 0.1.21

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 (354) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +234 -0
  3. package/dist/Flow.d.vue.ts +306 -0
  4. package/dist/Flow.vue +959 -0
  5. package/dist/Flow.vue.d.ts +306 -0
  6. package/dist/__tests__/ai-workflow.ssr.test.cjs +352 -0
  7. package/dist/__tests__/ai-workflow.ssr.test.d.ts +1 -0
  8. package/dist/__tests__/ai-workflow.ssr.test.mjs +283 -0
  9. package/dist/__tests__/ai-workflow.test.cjs +109 -0
  10. package/dist/__tests__/ai-workflow.test.d.ts +1 -0
  11. package/dist/__tests__/ai-workflow.test.mjs +112 -0
  12. package/dist/__tests__/bpmn.ssr.test.cjs +278 -0
  13. package/dist/__tests__/bpmn.ssr.test.d.ts +1 -0
  14. package/dist/__tests__/bpmn.ssr.test.mjs +237 -0
  15. package/dist/__tests__/bpmn.test.cjs +103 -0
  16. package/dist/__tests__/bpmn.test.d.ts +1 -0
  17. package/dist/__tests__/bpmn.test.mjs +106 -0
  18. package/dist/__tests__/custom-types.test.cjs +300 -0
  19. package/dist/__tests__/custom-types.test.d.ts +1 -0
  20. package/dist/__tests__/custom-types.test.mjs +248 -0
  21. package/dist/__tests__/edge.test.cjs +56 -0
  22. package/dist/__tests__/edge.test.d.ts +1 -0
  23. package/dist/__tests__/edge.test.mjs +69 -0
  24. package/dist/__tests__/event-bus.test.cjs +80 -0
  25. package/dist/__tests__/event-bus.test.d.ts +1 -0
  26. package/dist/__tests__/event-bus.test.mjs +51 -0
  27. package/dist/__tests__/flow.ssr.test.cjs +156 -0
  28. package/dist/__tests__/flow.ssr.test.d.ts +1 -0
  29. package/dist/__tests__/flow.ssr.test.mjs +112 -0
  30. package/dist/__tests__/geometry.test.cjs +191 -0
  31. package/dist/__tests__/geometry.test.d.ts +1 -0
  32. package/dist/__tests__/geometry.test.mjs +105 -0
  33. package/dist/__tests__/graph.test.cjs +115 -0
  34. package/dist/__tests__/graph.test.d.ts +1 -0
  35. package/dist/__tests__/graph.test.mjs +85 -0
  36. package/dist/__tests__/history-plugin.test.cjs +191 -0
  37. package/dist/__tests__/history-plugin.test.d.ts +1 -0
  38. package/dist/__tests__/history-plugin.test.mjs +161 -0
  39. package/dist/__tests__/history.test.cjs +81 -0
  40. package/dist/__tests__/history.test.d.ts +1 -0
  41. package/dist/__tests__/history.test.mjs +43 -0
  42. package/dist/__tests__/layout.test.cjs +213 -0
  43. package/dist/__tests__/layout.test.d.ts +1 -0
  44. package/dist/__tests__/layout.test.mjs +170 -0
  45. package/dist/__tests__/node-edit-panel.ssr.test.cjs +168 -0
  46. package/dist/__tests__/node-edit-panel.ssr.test.d.ts +1 -0
  47. package/dist/__tests__/node-edit-panel.ssr.test.mjs +118 -0
  48. package/dist/__tests__/node-group-plugin.test.cjs +235 -0
  49. package/dist/__tests__/node-group-plugin.test.d.ts +1 -0
  50. package/dist/__tests__/node-group-plugin.test.mjs +187 -0
  51. package/dist/__tests__/node-handles.test.cjs +340 -0
  52. package/dist/__tests__/node-handles.test.d.ts +1 -0
  53. package/dist/__tests__/node-handles.test.mjs +230 -0
  54. package/dist/__tests__/plugin.test.cjs +151 -0
  55. package/dist/__tests__/plugin.test.d.ts +1 -0
  56. package/dist/__tests__/plugin.test.mjs +116 -0
  57. package/dist/__tests__/transform.test.cjs +58 -0
  58. package/dist/__tests__/transform.test.d.ts +1 -0
  59. package/dist/__tests__/transform.test.mjs +38 -0
  60. package/dist/__tests__/useAlignment.test.cjs +91 -0
  61. package/dist/__tests__/useAlignment.test.d.ts +1 -0
  62. package/dist/__tests__/useAlignment.test.mjs +52 -0
  63. package/dist/__tests__/useEdges.test.cjs +117 -0
  64. package/dist/__tests__/useEdges.test.d.ts +1 -0
  65. package/dist/__tests__/useEdges.test.mjs +80 -0
  66. package/dist/__tests__/useKeyboard.test.cjs +88 -0
  67. package/dist/__tests__/useKeyboard.test.d.ts +1 -0
  68. package/dist/__tests__/useKeyboard.test.mjs +56 -0
  69. package/dist/__tests__/useNodes.test.cjs +150 -0
  70. package/dist/__tests__/useNodes.test.d.ts +1 -0
  71. package/dist/__tests__/useNodes.test.mjs +80 -0
  72. package/dist/__tests__/useSelection.test.cjs +112 -0
  73. package/dist/__tests__/useSelection.test.d.ts +1 -0
  74. package/dist/__tests__/useSelection.test.mjs +76 -0
  75. package/dist/__tests__/useViewport.test.cjs +171 -0
  76. package/dist/__tests__/useViewport.test.d.ts +1 -0
  77. package/dist/__tests__/useViewport.test.mjs +82 -0
  78. package/dist/__tests__/utils/ssr.cjs +124 -0
  79. package/dist/__tests__/utils/ssr.d.ts +33 -0
  80. package/dist/__tests__/utils/ssr.mjs +129 -0
  81. package/dist/__tests__/validation.test.cjs +95 -0
  82. package/dist/__tests__/validation.test.d.ts +1 -0
  83. package/dist/__tests__/validation.test.mjs +36 -0
  84. package/dist/components/AiNodeEditPanel.d.vue.ts +13 -0
  85. package/dist/components/AiNodeEditPanel.vue +413 -0
  86. package/dist/components/AiNodeEditPanel.vue.d.ts +13 -0
  87. package/dist/components/EdgeEditPanel.d.vue.ts +14 -0
  88. package/dist/components/EdgeEditPanel.vue +205 -0
  89. package/dist/components/EdgeEditPanel.vue.d.ts +14 -0
  90. package/dist/components/NodeEditPanel.d.vue.ts +13 -0
  91. package/dist/components/NodeEditPanel.vue +214 -0
  92. package/dist/components/NodeEditPanel.vue.d.ts +13 -0
  93. package/dist/components/edges/BaseEdge.d.vue.ts +23 -0
  94. package/dist/components/edges/BaseEdge.vue +55 -0
  95. package/dist/components/edges/BaseEdge.vue.d.ts +23 -0
  96. package/dist/components/edges/BezierEdge.d.vue.ts +22 -0
  97. package/dist/components/edges/BezierEdge.vue +57 -0
  98. package/dist/components/edges/BezierEdge.vue.d.ts +22 -0
  99. package/dist/components/edges/DataFlowEdge.d.vue.ts +41 -0
  100. package/dist/components/edges/DataFlowEdge.vue +211 -0
  101. package/dist/components/edges/DataFlowEdge.vue.d.ts +41 -0
  102. package/dist/components/edges/SmoothEdge.d.vue.ts +22 -0
  103. package/dist/components/edges/SmoothEdge.vue +53 -0
  104. package/dist/components/edges/SmoothEdge.vue.d.ts +22 -0
  105. package/dist/components/edges/StepEdge.d.vue.ts +22 -0
  106. package/dist/components/edges/StepEdge.vue +42 -0
  107. package/dist/components/edges/StepEdge.vue.d.ts +22 -0
  108. package/dist/components/edges/index.cjs +41 -0
  109. package/dist/components/edges/index.d.ts +5 -0
  110. package/dist/components/edges/index.mjs +5 -0
  111. package/dist/components/nodes/BaseNode.d.vue.ts +25 -0
  112. package/dist/components/nodes/BaseNode.vue +93 -0
  113. package/dist/components/nodes/BaseNode.vue.d.ts +25 -0
  114. package/dist/components/nodes/CustomNode.d.vue.ts +36 -0
  115. package/dist/components/nodes/CustomNode.vue +44 -0
  116. package/dist/components/nodes/CustomNode.vue.d.ts +36 -0
  117. package/dist/components/nodes/DatabaseNode.d.vue.ts +19 -0
  118. package/dist/components/nodes/DatabaseNode.vue +62 -0
  119. package/dist/components/nodes/DatabaseNode.vue.d.ts +19 -0
  120. package/dist/components/nodes/DiamondNode.d.vue.ts +19 -0
  121. package/dist/components/nodes/DiamondNode.vue +62 -0
  122. package/dist/components/nodes/DiamondNode.vue.d.ts +19 -0
  123. package/dist/components/nodes/GroupNode.d.vue.ts +31 -0
  124. package/dist/components/nodes/GroupNode.vue +48 -0
  125. package/dist/components/nodes/GroupNode.vue.d.ts +31 -0
  126. package/dist/components/nodes/InputNode.d.vue.ts +23 -0
  127. package/dist/components/nodes/InputNode.vue +63 -0
  128. package/dist/components/nodes/InputNode.vue.d.ts +23 -0
  129. package/dist/components/nodes/NodeResizer.d.vue.ts +27 -0
  130. package/dist/components/nodes/NodeResizer.vue +89 -0
  131. package/dist/components/nodes/NodeResizer.vue.d.ts +27 -0
  132. package/dist/components/nodes/NodeToolbar.d.vue.ts +32 -0
  133. package/dist/components/nodes/NodeToolbar.vue +101 -0
  134. package/dist/components/nodes/NodeToolbar.vue.d.ts +32 -0
  135. package/dist/components/nodes/OutputNode.d.vue.ts +21 -0
  136. package/dist/components/nodes/OutputNode.vue +53 -0
  137. package/dist/components/nodes/OutputNode.vue.d.ts +21 -0
  138. package/dist/components/nodes/ai-workflow/AiAgentNode.d.vue.ts +20 -0
  139. package/dist/components/nodes/ai-workflow/AiAgentNode.vue +59 -0
  140. package/dist/components/nodes/ai-workflow/AiAgentNode.vue.d.ts +20 -0
  141. package/dist/components/nodes/ai-workflow/AiConditionNode.d.vue.ts +19 -0
  142. package/dist/components/nodes/ai-workflow/AiConditionNode.vue +65 -0
  143. package/dist/components/nodes/ai-workflow/AiConditionNode.vue.d.ts +19 -0
  144. package/dist/components/nodes/ai-workflow/AiEndNode.d.vue.ts +19 -0
  145. package/dist/components/nodes/ai-workflow/AiEndNode.vue +47 -0
  146. package/dist/components/nodes/ai-workflow/AiEndNode.vue.d.ts +19 -0
  147. package/dist/components/nodes/ai-workflow/AiLlmNode.d.vue.ts +19 -0
  148. package/dist/components/nodes/ai-workflow/AiLlmNode.vue +64 -0
  149. package/dist/components/nodes/ai-workflow/AiLlmNode.vue.d.ts +19 -0
  150. package/dist/components/nodes/ai-workflow/AiMemoryNode.d.vue.ts +19 -0
  151. package/dist/components/nodes/ai-workflow/AiMemoryNode.vue +59 -0
  152. package/dist/components/nodes/ai-workflow/AiMemoryNode.vue.d.ts +19 -0
  153. package/dist/components/nodes/ai-workflow/AiPromptNode.d.vue.ts +19 -0
  154. package/dist/components/nodes/ai-workflow/AiPromptNode.vue +61 -0
  155. package/dist/components/nodes/ai-workflow/AiPromptNode.vue.d.ts +19 -0
  156. package/dist/components/nodes/ai-workflow/AiStartNode.d.vue.ts +19 -0
  157. package/dist/components/nodes/ai-workflow/AiStartNode.vue +47 -0
  158. package/dist/components/nodes/ai-workflow/AiStartNode.vue.d.ts +19 -0
  159. package/dist/components/nodes/ai-workflow/AiToolNode.d.vue.ts +19 -0
  160. package/dist/components/nodes/ai-workflow/AiToolNode.vue +59 -0
  161. package/dist/components/nodes/ai-workflow/AiToolNode.vue.d.ts +19 -0
  162. package/dist/components/nodes/ai-workflow/index.cjs +109 -0
  163. package/dist/components/nodes/ai-workflow/index.d.ts +23 -0
  164. package/dist/components/nodes/ai-workflow/index.mjs +37 -0
  165. package/dist/components/nodes/bpmn/BpmnEndEvent.d.vue.ts +19 -0
  166. package/dist/components/nodes/bpmn/BpmnEndEvent.vue +50 -0
  167. package/dist/components/nodes/bpmn/BpmnEndEvent.vue.d.ts +19 -0
  168. package/dist/components/nodes/bpmn/BpmnExclusiveGateway.d.vue.ts +19 -0
  169. package/dist/components/nodes/bpmn/BpmnExclusiveGateway.vue +60 -0
  170. package/dist/components/nodes/bpmn/BpmnExclusiveGateway.vue.d.ts +19 -0
  171. package/dist/components/nodes/bpmn/BpmnInclusiveGateway.d.vue.ts +19 -0
  172. package/dist/components/nodes/bpmn/BpmnInclusiveGateway.vue +60 -0
  173. package/dist/components/nodes/bpmn/BpmnInclusiveGateway.vue.d.ts +19 -0
  174. package/dist/components/nodes/bpmn/BpmnParallelGateway.d.vue.ts +19 -0
  175. package/dist/components/nodes/bpmn/BpmnParallelGateway.vue +60 -0
  176. package/dist/components/nodes/bpmn/BpmnParallelGateway.vue.d.ts +19 -0
  177. package/dist/components/nodes/bpmn/BpmnServiceTask.d.vue.ts +19 -0
  178. package/dist/components/nodes/bpmn/BpmnServiceTask.vue +55 -0
  179. package/dist/components/nodes/bpmn/BpmnServiceTask.vue.d.ts +19 -0
  180. package/dist/components/nodes/bpmn/BpmnStartEvent.d.vue.ts +19 -0
  181. package/dist/components/nodes/bpmn/BpmnStartEvent.vue +50 -0
  182. package/dist/components/nodes/bpmn/BpmnStartEvent.vue.d.ts +19 -0
  183. package/dist/components/nodes/bpmn/BpmnTask.d.vue.ts +19 -0
  184. package/dist/components/nodes/bpmn/BpmnTask.vue +54 -0
  185. package/dist/components/nodes/bpmn/BpmnTask.vue.d.ts +19 -0
  186. package/dist/components/nodes/bpmn/BpmnUserTask.d.vue.ts +19 -0
  187. package/dist/components/nodes/bpmn/BpmnUserTask.vue +55 -0
  188. package/dist/components/nodes/bpmn/BpmnUserTask.vue.d.ts +19 -0
  189. package/dist/components/nodes/bpmn/index.cjs +109 -0
  190. package/dist/components/nodes/bpmn/index.d.ts +23 -0
  191. package/dist/components/nodes/bpmn/index.mjs +37 -0
  192. package/dist/components/nodes/index.cjs +246 -0
  193. package/dist/components/nodes/index.d.ts +13 -0
  194. package/dist/components/nodes/index.mjs +44 -0
  195. package/dist/core/FlowContext.cjs +21 -0
  196. package/dist/core/FlowContext.d.ts +10 -0
  197. package/dist/core/FlowContext.mjs +13 -0
  198. package/dist/core/index.cjs +104 -0
  199. package/dist/core/index.d.ts +9 -0
  200. package/dist/core/index.mjs +9 -0
  201. package/dist/core/useAlignment.cjs +81 -0
  202. package/dist/core/useAlignment.d.ts +33 -0
  203. package/dist/core/useAlignment.mjs +71 -0
  204. package/dist/core/useEdges.cjs +132 -0
  205. package/dist/core/useEdges.d.ts +29 -0
  206. package/dist/core/useEdges.mjs +89 -0
  207. package/dist/core/useFlow.cjs +40 -0
  208. package/dist/core/useFlow.d.ts +31 -0
  209. package/dist/core/useFlow.mjs +32 -0
  210. package/dist/core/useHistory.cjs +63 -0
  211. package/dist/core/useHistory.d.ts +15 -0
  212. package/dist/core/useHistory.mjs +54 -0
  213. package/dist/core/useKeyboard.cjs +54 -0
  214. package/dist/core/useKeyboard.d.ts +18 -0
  215. package/dist/core/useKeyboard.mjs +45 -0
  216. package/dist/core/useNodeDistribution.cjs +171 -0
  217. package/dist/core/useNodeDistribution.d.ts +12 -0
  218. package/dist/core/useNodeDistribution.mjs +145 -0
  219. package/dist/core/useNodes.cjs +146 -0
  220. package/dist/core/useNodes.d.ts +26 -0
  221. package/dist/core/useNodes.mjs +101 -0
  222. package/dist/core/useSelection.cjs +83 -0
  223. package/dist/core/useSelection.d.ts +18 -0
  224. package/dist/core/useSelection.mjs +53 -0
  225. package/dist/core/useViewport.cjs +157 -0
  226. package/dist/core/useViewport.d.ts +65 -0
  227. package/dist/core/useViewport.mjs +125 -0
  228. package/dist/flow.cjs +240 -0
  229. package/dist/flow.d.ts +276 -0
  230. package/dist/flow.mjs +230 -0
  231. package/dist/index.cjs +378 -0
  232. package/dist/index.d.ts +28 -0
  233. package/dist/index.mjs +50 -0
  234. package/dist/plugins/index.cjs +96 -0
  235. package/dist/plugins/index.d.ts +34 -0
  236. package/dist/plugins/index.mjs +47 -0
  237. package/dist/plugins/plugin.cjs +117 -0
  238. package/dist/plugins/plugin.d.ts +72 -0
  239. package/dist/plugins/plugin.mjs +110 -0
  240. package/dist/plugins/plugins/controls.cjs +38 -0
  241. package/dist/plugins/plugins/controls.d.ts +12 -0
  242. package/dist/plugins/plugins/controls.mjs +28 -0
  243. package/dist/plugins/plugins/export.cjs +102 -0
  244. package/dist/plugins/plugins/export.d.ts +12 -0
  245. package/dist/plugins/plugins/export.mjs +89 -0
  246. package/dist/plugins/plugins/grid.cjs +36 -0
  247. package/dist/plugins/plugins/grid.d.ts +11 -0
  248. package/dist/plugins/plugins/grid.mjs +26 -0
  249. package/dist/plugins/plugins/history.cjs +140 -0
  250. package/dist/plugins/plugins/history.d.ts +53 -0
  251. package/dist/plugins/plugins/history.mjs +132 -0
  252. package/dist/plugins/plugins/index.cjs +104 -0
  253. package/dist/plugins/plugins/index.d.ts +9 -0
  254. package/dist/plugins/plugins/index.mjs +9 -0
  255. package/dist/plugins/plugins/keyboard.cjs +27 -0
  256. package/dist/plugins/plugins/keyboard.d.ts +10 -0
  257. package/dist/plugins/plugins/keyboard.mjs +18 -0
  258. package/dist/plugins/plugins/layout.cjs +275 -0
  259. package/dist/plugins/plugins/layout.d.ts +34 -0
  260. package/dist/plugins/plugins/layout.mjs +246 -0
  261. package/dist/plugins/plugins/minimap.cjs +60 -0
  262. package/dist/plugins/plugins/minimap.d.ts +25 -0
  263. package/dist/plugins/plugins/minimap.mjs +50 -0
  264. package/dist/plugins/plugins/node-group.cjs +209 -0
  265. package/dist/plugins/plugins/node-group.d.ts +26 -0
  266. package/dist/plugins/plugins/node-group.mjs +178 -0
  267. package/dist/plugins/plugins/snap.cjs +36 -0
  268. package/dist/plugins/plugins/snap.d.ts +12 -0
  269. package/dist/plugins/plugins/snap.mjs +26 -0
  270. package/dist/renderer/AlignmentLines.d.vue.ts +5 -0
  271. package/dist/renderer/AlignmentLines.vue +113 -0
  272. package/dist/renderer/AlignmentLines.vue.d.ts +5 -0
  273. package/dist/renderer/Background.d.vue.ts +7 -0
  274. package/dist/renderer/Background.vue +86 -0
  275. package/dist/renderer/Background.vue.d.ts +7 -0
  276. package/dist/renderer/Controls.d.vue.ts +13 -0
  277. package/dist/renderer/Controls.vue +82 -0
  278. package/dist/renderer/Controls.vue.d.ts +13 -0
  279. package/dist/renderer/EdgeHandlesRenderer.d.vue.ts +11 -0
  280. package/dist/renderer/EdgeHandlesRenderer.vue +75 -0
  281. package/dist/renderer/EdgeHandlesRenderer.vue.d.ts +11 -0
  282. package/dist/renderer/EdgeRenderer.d.vue.ts +39 -0
  283. package/dist/renderer/EdgeRenderer.vue +204 -0
  284. package/dist/renderer/EdgeRenderer.vue.d.ts +39 -0
  285. package/dist/renderer/FlowBackground.d.vue.ts +11 -0
  286. package/dist/renderer/FlowBackground.vue +82 -0
  287. package/dist/renderer/FlowBackground.vue.d.ts +11 -0
  288. package/dist/renderer/Minimap.d.vue.ts +30 -0
  289. package/dist/renderer/Minimap.vue +290 -0
  290. package/dist/renderer/Minimap.vue.d.ts +30 -0
  291. package/dist/renderer/NodeRenderer.d.vue.ts +56 -0
  292. package/dist/renderer/NodeRenderer.vue +328 -0
  293. package/dist/renderer/NodeRenderer.vue.d.ts +56 -0
  294. package/dist/renderer/SelectionBox.d.vue.ts +11 -0
  295. package/dist/renderer/SelectionBox.vue +28 -0
  296. package/dist/renderer/SelectionBox.vue.d.ts +11 -0
  297. package/dist/types/edge.cjs +13 -0
  298. package/dist/types/edge.d.ts +65 -0
  299. package/dist/types/edge.mjs +6 -0
  300. package/dist/types/events.cjs +1 -0
  301. package/dist/types/events.d.ts +115 -0
  302. package/dist/types/events.mjs +0 -0
  303. package/dist/types/index.cjs +1 -0
  304. package/dist/types/index.d.ts +366 -0
  305. package/dist/types/index.mjs +0 -0
  306. package/dist/types/node.cjs +9 -0
  307. package/dist/types/node.d.ts +90 -0
  308. package/dist/types/node.mjs +3 -0
  309. package/dist/types/viewport.cjs +42 -0
  310. package/dist/types/viewport.d.ts +62 -0
  311. package/dist/types/viewport.mjs +36 -0
  312. package/dist/utils/bpmn-engine.cjs +390 -0
  313. package/dist/utils/bpmn-engine.d.ts +164 -0
  314. package/dist/utils/bpmn-engine.mjs +378 -0
  315. package/dist/utils/bpmn.cjs +492 -0
  316. package/dist/utils/bpmn.d.ts +53 -0
  317. package/dist/utils/bpmn.mjs +430 -0
  318. package/dist/utils/collaboration.cjs +537 -0
  319. package/dist/utils/collaboration.d.ts +189 -0
  320. package/dist/utils/collaboration.mjs +521 -0
  321. package/dist/utils/custom-types.cjs +138 -0
  322. package/dist/utils/custom-types.d.ts +78 -0
  323. package/dist/utils/custom-types.mjs +108 -0
  324. package/dist/utils/edge.cjs +235 -0
  325. package/dist/utils/edge.d.ts +79 -0
  326. package/dist/utils/edge.mjs +172 -0
  327. package/dist/utils/event-bus.cjs +91 -0
  328. package/dist/utils/event-bus.d.ts +39 -0
  329. package/dist/utils/event-bus.mjs +82 -0
  330. package/dist/utils/geometry.cjs +178 -0
  331. package/dist/utils/geometry.d.ts +186 -0
  332. package/dist/utils/geometry.mjs +144 -0
  333. package/dist/utils/graph.cjs +158 -0
  334. package/dist/utils/graph.d.ts +40 -0
  335. package/dist/utils/graph.mjs +147 -0
  336. package/dist/utils/index.cjs +137 -0
  337. package/dist/utils/index.d.ts +12 -0
  338. package/dist/utils/index.mjs +12 -0
  339. package/dist/utils/performance.cjs +94 -0
  340. package/dist/utils/performance.d.ts +18 -0
  341. package/dist/utils/performance.mjs +82 -0
  342. package/dist/utils/screenshot.cjs +87 -0
  343. package/dist/utils/screenshot.d.ts +22 -0
  344. package/dist/utils/screenshot.mjs +66 -0
  345. package/dist/utils/theme.cjs +228 -0
  346. package/dist/utils/theme.d.ts +92 -0
  347. package/dist/utils/theme.mjs +217 -0
  348. package/dist/utils/transform.cjs +76 -0
  349. package/dist/utils/transform.d.ts +45 -0
  350. package/dist/utils/transform.mjs +57 -0
  351. package/dist/utils/validation.cjs +107 -0
  352. package/dist/utils/validation.d.ts +29 -0
  353. package/dist/utils/validation.mjs +85 -0
  354. package/package.json +61 -0
@@ -0,0 +1,125 @@
1
+ import { screenToCanvas, canvasToScreen } from "../utils/transform.mjs";
2
+ export function useViewport(initialTransform, options = {}) {
3
+ const { minZoom = 0.1, maxZoom = 5, zoomStep: _zoomStep = 0.1, panZoomSpeed = 1 } = options;
4
+ const transform = initialTransform;
5
+ const setTransform = (newTransform) => {
6
+ transform.value = {
7
+ x: newTransform.x,
8
+ y: newTransform.y,
9
+ zoom: Math.min(Math.max(newTransform.zoom, minZoom), maxZoom)
10
+ };
11
+ };
12
+ const setViewport = (x, y, zoom) => {
13
+ setTransform({ x, y, zoom });
14
+ };
15
+ const zoomIn = (factor = 1.2) => {
16
+ const newZoom = Math.min(transform.value.zoom * factor, maxZoom);
17
+ transform.value = { ...transform.value, zoom: newZoom };
18
+ };
19
+ const zoomOut = (factor = 1.2) => {
20
+ const newZoom = Math.max(transform.value.zoom / factor, minZoom);
21
+ transform.value = { ...transform.value, zoom: newZoom };
22
+ };
23
+ const zoomTo = (zoom, point) => {
24
+ const boundedZoom = Math.min(Math.max(zoom, minZoom), maxZoom);
25
+ if (!point) {
26
+ transform.value = { ...transform.value, zoom: boundedZoom };
27
+ return;
28
+ }
29
+ const canvasPoint = screenToCanvas(point.x, point.y, transform.value);
30
+ const newTransform = {
31
+ ...transform.value,
32
+ zoom: boundedZoom
33
+ };
34
+ const screenPoint = canvasToScreen(canvasPoint.x, canvasPoint.y, newTransform);
35
+ const dx = point.x - screenPoint.x;
36
+ const dy = point.y - screenPoint.y;
37
+ transform.value = {
38
+ ...newTransform,
39
+ x: newTransform.x + dx,
40
+ y: newTransform.y + dy
41
+ };
42
+ };
43
+ const pan = (dx, dy) => {
44
+ transform.value = {
45
+ ...transform.value,
46
+ x: transform.value.x + dx * panZoomSpeed,
47
+ y: transform.value.y + dy * panZoomSpeed
48
+ };
49
+ };
50
+ const panTo = (x, y) => {
51
+ transform.value = { ...transform.value, x, y };
52
+ };
53
+ const fitView = (bounds, nodes, options2 = {}) => {
54
+ if (nodes.length === 0) return;
55
+ const padding = options2.padding ?? 50;
56
+ let minX = Infinity;
57
+ let minY = Infinity;
58
+ let maxX = -Infinity;
59
+ let maxY = -Infinity;
60
+ for (const node of nodes) {
61
+ const w = node.width || 200;
62
+ const h = node.height || 50;
63
+ minX = Math.min(minX, node.position.x);
64
+ minY = Math.min(minY, node.position.y);
65
+ maxX = Math.max(maxX, node.position.x + w);
66
+ maxY = Math.max(maxY, node.position.y + h);
67
+ }
68
+ const graphWidth = maxX - minX + padding * 2;
69
+ const graphHeight = maxY - minY + padding * 2;
70
+ const zoomX = bounds.width / graphWidth;
71
+ const zoomY = bounds.height / graphHeight;
72
+ const zoom = Math.min(zoomX, zoomY, 1);
73
+ const x = (bounds.width - graphWidth * zoom) / 2 - minX * zoom + padding * zoom;
74
+ const y = (bounds.height - graphHeight * zoom) / 2 - minY * zoom + padding * zoom;
75
+ setTransform({ x, y, zoom });
76
+ };
77
+ const center = (bounds, nodes, options2 = {}) => {
78
+ if (nodes.length === 0) return;
79
+ const padding = options2.padding ?? 50;
80
+ let centerX = 0;
81
+ let centerY = 0;
82
+ for (const node of nodes) {
83
+ const w = node.width || 200;
84
+ const h = node.height || 50;
85
+ centerX += node.position.x + w / 2;
86
+ centerY += node.position.y + h / 2;
87
+ }
88
+ centerX /= nodes.length;
89
+ centerY /= nodes.length;
90
+ const x = bounds.width / 2 - centerX * transform.value.zoom + padding;
91
+ const y = bounds.height / 2 - centerY * transform.value.zoom + padding;
92
+ panTo(x, y);
93
+ };
94
+ const _screenToCanvas = (screenX, screenY) => {
95
+ return screenToCanvas(screenX, screenY, transform.value);
96
+ };
97
+ const _canvasToScreen = (canvasX, canvasY) => {
98
+ return canvasToScreen(canvasX, canvasY, transform.value);
99
+ };
100
+ const isNodeVisible = (nodeBounds, containerBounds) => {
101
+ const padding = 100;
102
+ const visibleBounds = {
103
+ x: -transform.value.x / transform.value.zoom - padding,
104
+ y: -transform.value.y / transform.value.zoom - padding,
105
+ width: containerBounds.width / transform.value.zoom + padding * 2,
106
+ height: containerBounds.height / transform.value.zoom + padding * 2
107
+ };
108
+ return !(nodeBounds.x + nodeBounds.width < visibleBounds.x || nodeBounds.x > visibleBounds.x + visibleBounds.width || nodeBounds.y + nodeBounds.height < visibleBounds.y || nodeBounds.y > visibleBounds.y + visibleBounds.height);
109
+ };
110
+ return {
111
+ transform,
112
+ setTransform,
113
+ setViewport,
114
+ zoomIn,
115
+ zoomOut,
116
+ zoomTo,
117
+ pan,
118
+ panTo,
119
+ fitView,
120
+ center,
121
+ screenToCanvas: _screenToCanvas,
122
+ canvasToScreen: _canvasToScreen,
123
+ isNodeVisible
124
+ };
125
+ }
package/dist/flow.cjs ADDED
@@ -0,0 +1,240 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.flowProps = exports.flowEmits = void 0;
7
+ const flowProps = exports.flowProps = {
8
+ /**
9
+ * @description 节点数据
10
+ */
11
+ nodes: {
12
+ type: Array,
13
+ default: () => []
14
+ },
15
+ /**
16
+ * @description 连线数据
17
+ */
18
+ edges: {
19
+ type: Array,
20
+ default: () => []
21
+ },
22
+ /**
23
+ * @description 视口变换 (支持 v-model)
24
+ */
25
+ modelValue: {
26
+ type: Object,
27
+ default: () => ({
28
+ x: 0,
29
+ y: 0,
30
+ zoom: 1
31
+ })
32
+ },
33
+ /**
34
+ * @description 最小缩放比例
35
+ */
36
+ minZoom: {
37
+ type: Number,
38
+ default: 0.1
39
+ },
40
+ /**
41
+ * @description 最大缩放比例
42
+ */
43
+ maxZoom: {
44
+ type: Number,
45
+ default: 5
46
+ },
47
+ /**
48
+ * @description 缩放步长
49
+ */
50
+ zoomStep: {
51
+ type: Number,
52
+ default: 0.1
53
+ },
54
+ /**
55
+ * @description 平移速度
56
+ */
57
+ panZoomSpeed: {
58
+ type: Number,
59
+ default: 1
60
+ },
61
+ /**
62
+ * @description 默认节点类型
63
+ */
64
+ defaultNodeType: {
65
+ type: String,
66
+ default: "default"
67
+ },
68
+ /**
69
+ * @description 默认连线类型
70
+ */
71
+ defaultEdgeType: {
72
+ type: String,
73
+ default: "bezier"
74
+ },
75
+ /**
76
+ * @description 是否启用拖拽
77
+ */
78
+ nodesDraggable: {
79
+ type: Boolean,
80
+ default: true
81
+ },
82
+ /**
83
+ * @description 是否启用连线
84
+ */
85
+ edgesConnectable: {
86
+ type: Boolean,
87
+ default: true
88
+ },
89
+ /**
90
+ * @description 是否启用选择
91
+ */
92
+ selectable: {
93
+ type: Boolean,
94
+ default: true
95
+ },
96
+ /**
97
+ * @description 是否支持多选
98
+ */
99
+ multiSelectKey: {
100
+ type: String,
101
+ default: "Shift"
102
+ },
103
+ /**
104
+ * @description 背景类型
105
+ */
106
+ background: {
107
+ type: String,
108
+ default: "dots"
109
+ },
110
+ /**
111
+ * @description 背景颜色
112
+ */
113
+ backgroundColor: {
114
+ type: String,
115
+ default: "#f8f9fa"
116
+ },
117
+ /**
118
+ * @description 网格大小
119
+ */
120
+ gridSize: {
121
+ type: Number,
122
+ default: 20
123
+ },
124
+ /**
125
+ * @description 是否吸附到网格
126
+ */
127
+ snapToGrid: {
128
+ type: Boolean,
129
+ default: false
130
+ },
131
+ /**
132
+ * @description 吸附间距
133
+ */
134
+ snapGrid: {
135
+ type: Array,
136
+ default: () => [15, 15]
137
+ },
138
+ /**
139
+ * @description 是否只读
140
+ */
141
+ readonly: {
142
+ type: Boolean,
143
+ default: false
144
+ },
145
+ /**
146
+ * @description 是否启用键盘快捷键
147
+ */
148
+ keyboardShortcuts: {
149
+ type: Boolean,
150
+ default: true
151
+ },
152
+ /**
153
+ * @description 是否显示控制栏
154
+ */
155
+ showControls: {
156
+ type: Boolean,
157
+ default: true
158
+ },
159
+ /**
160
+ * @description 是否显示小地图
161
+ */
162
+ showMinimap: {
163
+ type: Boolean,
164
+ default: false
165
+ },
166
+ /**
167
+ * @description 小地图颜色
168
+ */
169
+ minimapNodeColor: {
170
+ type: String,
171
+ default: "#b1b1b7"
172
+ },
173
+ /**
174
+ * @description 是否显示对齐线
175
+ */
176
+ showAlignmentGuides: {
177
+ type: Boolean,
178
+ default: true
179
+ },
180
+ /**
181
+ * @description 是否启用撤销/重做
182
+ */
183
+ history: {
184
+ type: Boolean,
185
+ default: true
186
+ },
187
+ /**
188
+ * @description 最大历史记录数
189
+ */
190
+ maxHistory: {
191
+ type: Number,
192
+ default: 50
193
+ },
194
+ /**
195
+ * @description 是否启用虚拟滚动
196
+ */
197
+ virtualized: {
198
+ type: Boolean,
199
+ default: false
200
+ },
201
+ /**
202
+ * @description 虚拟滚动缓冲区
203
+ */
204
+ virtualizationThreshold: {
205
+ type: Number,
206
+ default: 100
207
+ },
208
+ /**
209
+ * @description 连接校验函数
210
+ */
211
+ isValidConnection: {
212
+ type: Function,
213
+ default: null
214
+ },
215
+ /**
216
+ * @description 主题覆盖变量
217
+ */
218
+ themeOverrides: {
219
+ type: Object,
220
+ default: void 0
221
+ }
222
+ };
223
+ const flowEmits = exports.flowEmits = {
224
+ "update:modelValue": transform => typeof transform.x === "number" && typeof transform.y === "number" && typeof transform.zoom === "number",
225
+ "update:nodes": nodes => Array.isArray(nodes),
226
+ "update:edges": edges => Array.isArray(edges),
227
+ nodeClick: event => !!event,
228
+ nodeDblClick: event => !!event,
229
+ nodeDragStart: event => !!event,
230
+ nodeDrag: event => !!event,
231
+ nodeDragEnd: event => !!event,
232
+ nodeContextMenu: event => !!event,
233
+ edgeClick: event => !!event,
234
+ edgeDblClick: event => !!event,
235
+ edgeContextMenu: event => !!event,
236
+ edgeConnect: _connection => true,
237
+ selectionChange: event => !!event,
238
+ historyChange: event => !!event,
239
+ viewportChange: transform => !!transform
240
+ };
package/dist/flow.d.ts ADDED
@@ -0,0 +1,276 @@
1
+ import type { ExtractPropTypes, PropType } from 'vue';
2
+ import type { Node, Edge, ViewportTransform, ValidConnectionFunc } from './types';
3
+ export declare const flowProps: {
4
+ /**
5
+ * @description 节点数据
6
+ */
7
+ readonly nodes: {
8
+ readonly type: PropType<Node[]>;
9
+ readonly default: () => never[];
10
+ };
11
+ /**
12
+ * @description 连线数据
13
+ */
14
+ readonly edges: {
15
+ readonly type: PropType<Edge[]>;
16
+ readonly default: () => never[];
17
+ };
18
+ /**
19
+ * @description 视口变换 (支持 v-model)
20
+ */
21
+ readonly modelValue: {
22
+ readonly type: PropType<ViewportTransform>;
23
+ readonly default: () => {
24
+ x: number;
25
+ y: number;
26
+ zoom: number;
27
+ };
28
+ };
29
+ /**
30
+ * @description 最小缩放比例
31
+ */
32
+ readonly minZoom: {
33
+ readonly type: NumberConstructor;
34
+ readonly default: 0.1;
35
+ };
36
+ /**
37
+ * @description 最大缩放比例
38
+ */
39
+ readonly maxZoom: {
40
+ readonly type: NumberConstructor;
41
+ readonly default: 5;
42
+ };
43
+ /**
44
+ * @description 缩放步长
45
+ */
46
+ readonly zoomStep: {
47
+ readonly type: NumberConstructor;
48
+ readonly default: 0.1;
49
+ };
50
+ /**
51
+ * @description 平移速度
52
+ */
53
+ readonly panZoomSpeed: {
54
+ readonly type: NumberConstructor;
55
+ readonly default: 1;
56
+ };
57
+ /**
58
+ * @description 默认节点类型
59
+ */
60
+ readonly defaultNodeType: {
61
+ readonly type: StringConstructor;
62
+ readonly default: "default";
63
+ };
64
+ /**
65
+ * @description 默认连线类型
66
+ */
67
+ readonly defaultEdgeType: {
68
+ readonly type: StringConstructor;
69
+ readonly default: "bezier";
70
+ };
71
+ /**
72
+ * @description 是否启用拖拽
73
+ */
74
+ readonly nodesDraggable: {
75
+ readonly type: BooleanConstructor;
76
+ readonly default: true;
77
+ };
78
+ /**
79
+ * @description 是否启用连线
80
+ */
81
+ readonly edgesConnectable: {
82
+ readonly type: BooleanConstructor;
83
+ readonly default: true;
84
+ };
85
+ /**
86
+ * @description 是否启用选择
87
+ */
88
+ readonly selectable: {
89
+ readonly type: BooleanConstructor;
90
+ readonly default: true;
91
+ };
92
+ /**
93
+ * @description 是否支持多选
94
+ */
95
+ readonly multiSelectKey: {
96
+ readonly type: StringConstructor;
97
+ readonly default: "Shift";
98
+ };
99
+ /**
100
+ * @description 背景类型
101
+ */
102
+ readonly background: {
103
+ readonly type: PropType<"none" | "dots" | "grid">;
104
+ readonly default: "dots";
105
+ };
106
+ /**
107
+ * @description 背景颜色
108
+ */
109
+ readonly backgroundColor: {
110
+ readonly type: StringConstructor;
111
+ readonly default: "#f8f9fa";
112
+ };
113
+ /**
114
+ * @description 网格大小
115
+ */
116
+ readonly gridSize: {
117
+ readonly type: NumberConstructor;
118
+ readonly default: 20;
119
+ };
120
+ /**
121
+ * @description 是否吸附到网格
122
+ */
123
+ readonly snapToGrid: {
124
+ readonly type: BooleanConstructor;
125
+ readonly default: false;
126
+ };
127
+ /**
128
+ * @description 吸附间距
129
+ */
130
+ readonly snapGrid: {
131
+ readonly type: PropType<[number, number]>;
132
+ readonly default: () => number[];
133
+ };
134
+ /**
135
+ * @description 是否只读
136
+ */
137
+ readonly readonly: {
138
+ readonly type: BooleanConstructor;
139
+ readonly default: false;
140
+ };
141
+ /**
142
+ * @description 是否启用键盘快捷键
143
+ */
144
+ readonly keyboardShortcuts: {
145
+ readonly type: BooleanConstructor;
146
+ readonly default: true;
147
+ };
148
+ /**
149
+ * @description 是否显示控制栏
150
+ */
151
+ readonly showControls: {
152
+ readonly type: BooleanConstructor;
153
+ readonly default: true;
154
+ };
155
+ /**
156
+ * @description 是否显示小地图
157
+ */
158
+ readonly showMinimap: {
159
+ readonly type: BooleanConstructor;
160
+ readonly default: false;
161
+ };
162
+ /**
163
+ * @description 小地图颜色
164
+ */
165
+ readonly minimapNodeColor: {
166
+ readonly type: StringConstructor;
167
+ readonly default: "#b1b1b7";
168
+ };
169
+ /**
170
+ * @description 是否显示对齐线
171
+ */
172
+ readonly showAlignmentGuides: {
173
+ readonly type: BooleanConstructor;
174
+ readonly default: true;
175
+ };
176
+ /**
177
+ * @description 是否启用撤销/重做
178
+ */
179
+ readonly history: {
180
+ readonly type: BooleanConstructor;
181
+ readonly default: true;
182
+ };
183
+ /**
184
+ * @description 最大历史记录数
185
+ */
186
+ readonly maxHistory: {
187
+ readonly type: NumberConstructor;
188
+ readonly default: 50;
189
+ };
190
+ /**
191
+ * @description 是否启用虚拟滚动
192
+ */
193
+ readonly virtualized: {
194
+ readonly type: BooleanConstructor;
195
+ readonly default: false;
196
+ };
197
+ /**
198
+ * @description 虚拟滚动缓冲区
199
+ */
200
+ readonly virtualizationThreshold: {
201
+ readonly type: NumberConstructor;
202
+ readonly default: 100;
203
+ };
204
+ /**
205
+ * @description 连接校验函数
206
+ */
207
+ readonly isValidConnection: {
208
+ readonly type: PropType<ValidConnectionFunc>;
209
+ readonly default: null;
210
+ };
211
+ /**
212
+ * @description 主题覆盖变量
213
+ */
214
+ readonly themeOverrides: {
215
+ readonly type: PropType<Record<string, unknown>>;
216
+ readonly default: undefined;
217
+ };
218
+ };
219
+ export type FlowProps = ExtractPropTypes<typeof flowProps>;
220
+ export declare const flowEmits: {
221
+ 'update:modelValue': (transform: ViewportTransform) => boolean;
222
+ 'update:nodes': (nodes: Node[]) => boolean;
223
+ 'update:edges': (edges: Edge[]) => boolean;
224
+ nodeClick: (event: {
225
+ node: Node;
226
+ nativeEvent: MouseEvent;
227
+ }) => boolean;
228
+ nodeDblClick: (event: {
229
+ node: Node;
230
+ nativeEvent: MouseEvent;
231
+ }) => boolean;
232
+ nodeDragStart: (event: {
233
+ node: Node;
234
+ nativeEvent: MouseEvent;
235
+ }) => boolean;
236
+ nodeDrag: (event: {
237
+ node: Node;
238
+ nativeEvent: MouseEvent;
239
+ }) => boolean;
240
+ nodeDragEnd: (event: {
241
+ node: Node;
242
+ nativeEvent: MouseEvent;
243
+ }) => boolean;
244
+ nodeContextMenu: (event: {
245
+ node: Node;
246
+ nativeEvent: MouseEvent;
247
+ }) => boolean;
248
+ edgeClick: (event: {
249
+ edge: Edge;
250
+ nativeEvent: MouseEvent;
251
+ }) => boolean;
252
+ edgeDblClick: (event: {
253
+ edge: Edge;
254
+ nativeEvent: MouseEvent;
255
+ }) => boolean;
256
+ edgeContextMenu: (event: {
257
+ edge: Edge;
258
+ nativeEvent: MouseEvent;
259
+ }) => boolean;
260
+ edgeConnect: (_connection: {
261
+ source: string;
262
+ target: string;
263
+ sourceHandle?: string;
264
+ targetHandle?: string;
265
+ }) => boolean;
266
+ selectionChange: (event: {
267
+ selectedNodes: Node[];
268
+ selectedEdges: Edge[];
269
+ }) => boolean;
270
+ historyChange: (event: {
271
+ canUndo: boolean;
272
+ canRedo: boolean;
273
+ }) => boolean;
274
+ viewportChange: (transform: ViewportTransform) => boolean;
275
+ };
276
+ export type FlowEmits = typeof flowEmits;