@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,87 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.captureElement = captureElement;
7
+ exports.copyBlobToClipboard = copyBlobToClipboard;
8
+ exports.triggerDownload = triggerDownload;
9
+ const MIME_MAP = {
10
+ png: "image/png",
11
+ jpeg: "image/jpeg",
12
+ webp: "image/webp"
13
+ };
14
+ const EXT_MAP = {
15
+ png: "png",
16
+ jpeg: "jpeg",
17
+ webp: "webp"
18
+ };
19
+ function dataUrlToBlob(dataUrl, _mimeType) {
20
+ return fetch(dataUrl).then(res => res.blob());
21
+ }
22
+ async function captureElement(element, options) {
23
+ const {
24
+ imageType,
25
+ imageQuality,
26
+ pixelRatio,
27
+ backgroundColor
28
+ } = options;
29
+ const mod = await Promise.resolve().then(() => require("html-to-image"));
30
+ const htmlToImage = typeof mod.toPng === "function" ? mod : mod.default;
31
+ const baseOptions = {
32
+ backgroundColor,
33
+ pixelRatio
34
+ };
35
+ let dataUrl;
36
+ let resolvedType = imageType;
37
+ switch (imageType) {
38
+ case "jpeg":
39
+ dataUrl = await htmlToImage.toJpeg(element, {
40
+ ...baseOptions,
41
+ quality: imageQuality
42
+ });
43
+ break;
44
+ case "webp":
45
+ if (typeof htmlToImage.toWebp === "function") {
46
+ dataUrl = await htmlToImage.toWebp(element, {
47
+ ...baseOptions,
48
+ quality: imageQuality
49
+ });
50
+ } else {
51
+ resolvedType = "png";
52
+ dataUrl = await htmlToImage.toPng(element, baseOptions);
53
+ }
54
+ break;
55
+ case "png":
56
+ default:
57
+ dataUrl = await htmlToImage.toPng(element, baseOptions);
58
+ break;
59
+ }
60
+ const mimeType = MIME_MAP[resolvedType];
61
+ const blob = await dataUrlToBlob(dataUrl, mimeType);
62
+ const width = Math.round(element.offsetWidth * pixelRatio);
63
+ const height = Math.round(element.offsetHeight * pixelRatio);
64
+ return {
65
+ dataUrl,
66
+ blob,
67
+ width,
68
+ height,
69
+ mimeType,
70
+ extension: EXT_MAP[resolvedType]
71
+ };
72
+ }
73
+ function triggerDownload(dataUrl, fileName, extension) {
74
+ const link = document.createElement("a");
75
+ link.download = `${fileName}.${extension}`;
76
+ link.href = dataUrl;
77
+ link.click();
78
+ }
79
+ async function copyBlobToClipboard(blob) {
80
+ if (typeof navigator?.clipboard?.write === "function") {
81
+ await navigator.clipboard.write([new ClipboardItem({
82
+ [blob.type]: blob
83
+ })]);
84
+ } else {
85
+ throw new Error("[Flow Screenshot] Clipboard API not available");
86
+ }
87
+ }
@@ -0,0 +1,22 @@
1
+ /**
2
+ * 截图工具:将 DOM 元素导出为图片(DataURL + Blob)
3
+ * - 动态加载 html-to-image,零默认体积
4
+ * - 严格类型,无 any
5
+ * - 支持 png / jpeg / webp,可调质量与 pixelRatio
6
+ */
7
+ import type { ScreenshotImageType, ScreenshotResult } from '../types';
8
+ export interface CaptureElementOptions {
9
+ imageType: ScreenshotImageType;
10
+ imageQuality: number;
11
+ pixelRatio: number;
12
+ backgroundColor: string;
13
+ }
14
+ /**
15
+ * 截取指定 DOM 元素为图片(仅负责「当前视野」的 DOM → 图,不处理 full 模式视口)
16
+ * 依赖可选:html-to-image(动态 import,未安装时抛出)
17
+ */
18
+ export declare function captureElement(element: HTMLElement, options: CaptureElementOptions): Promise<ScreenshotResult>;
19
+ /** 触发浏览器下载(文件名 + 扩展名) */
20
+ export declare function triggerDownload(dataUrl: string, fileName: string, extension: string): void;
21
+ /** 将 Blob 写入剪贴板(需现代浏览器 Clipboard API) */
22
+ export declare function copyBlobToClipboard(blob: Blob): Promise<void>;
@@ -0,0 +1,66 @@
1
+ const MIME_MAP = {
2
+ png: "image/png",
3
+ jpeg: "image/jpeg",
4
+ webp: "image/webp"
5
+ };
6
+ const EXT_MAP = {
7
+ png: "png",
8
+ jpeg: "jpeg",
9
+ webp: "webp"
10
+ };
11
+ function dataUrlToBlob(dataUrl, _mimeType) {
12
+ return fetch(dataUrl).then((res) => res.blob());
13
+ }
14
+ export async function captureElement(element, options) {
15
+ const { imageType, imageQuality, pixelRatio, backgroundColor } = options;
16
+ const mod = await import("html-to-image");
17
+ const htmlToImage = typeof mod.toPng === "function" ? mod : mod.default;
18
+ const baseOptions = {
19
+ backgroundColor,
20
+ pixelRatio
21
+ };
22
+ let dataUrl;
23
+ let resolvedType = imageType;
24
+ switch (imageType) {
25
+ case "jpeg":
26
+ dataUrl = await htmlToImage.toJpeg(element, { ...baseOptions, quality: imageQuality });
27
+ break;
28
+ case "webp":
29
+ if (typeof htmlToImage.toWebp === "function") {
30
+ dataUrl = await htmlToImage.toWebp(element, { ...baseOptions, quality: imageQuality });
31
+ } else {
32
+ resolvedType = "png";
33
+ dataUrl = await htmlToImage.toPng(element, baseOptions);
34
+ }
35
+ break;
36
+ case "png":
37
+ default:
38
+ dataUrl = await htmlToImage.toPng(element, baseOptions);
39
+ break;
40
+ }
41
+ const mimeType = MIME_MAP[resolvedType];
42
+ const blob = await dataUrlToBlob(dataUrl, mimeType);
43
+ const width = Math.round(element.offsetWidth * pixelRatio);
44
+ const height = Math.round(element.offsetHeight * pixelRatio);
45
+ return {
46
+ dataUrl,
47
+ blob,
48
+ width,
49
+ height,
50
+ mimeType,
51
+ extension: EXT_MAP[resolvedType]
52
+ };
53
+ }
54
+ export function triggerDownload(dataUrl, fileName, extension) {
55
+ const link = document.createElement("a");
56
+ link.download = `${fileName}.${extension}`;
57
+ link.href = dataUrl;
58
+ link.click();
59
+ }
60
+ export async function copyBlobToClipboard(blob) {
61
+ if (typeof navigator?.clipboard?.write === "function") {
62
+ await navigator.clipboard.write([new ClipboardItem({ [blob.type]: blob })]);
63
+ } else {
64
+ throw new Error("[Flow Screenshot] Clipboard API not available");
65
+ }
66
+ }
@@ -0,0 +1,228 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.applyFlowTheme = applyFlowTheme;
7
+ exports.createCustomTheme = createCustomTheme;
8
+ exports.flowThemePresets = exports.flowThemeDark = exports.flowTheme = void 0;
9
+ const flowTheme = exports.flowTheme = {
10
+ // 节点样式
11
+ "flow-node-background": "#ffffff",
12
+ "flow-node-border": "#dcdfe6",
13
+ "flow-node-border-radius": "8px",
14
+ "flow-node-padding": "10px",
15
+ "flow-node-shadow": "0 2px 4px rgba(0, 0, 0, 0.1)",
16
+ "flow-node-selected-border": "#409eff",
17
+ "flow-node-selected-shadow": "0 0 8px rgba(64, 158, 255, 0.4)",
18
+ "flow-node-dragging-opacity": "0.8",
19
+ // 节点文字
20
+ "flow-node-label-color": "#303133",
21
+ "flow-node-label-font-size": "14px",
22
+ "flow-node-label-font-weight": "500",
23
+ "flow-node-description-color": "#909399",
24
+ "flow-node-description-font-size": "12px",
25
+ // 连接点(Handle)
26
+ "flow-handle-background": "#ffffff",
27
+ "flow-handle-border": "#409eff",
28
+ "flow-handle-border-radius": "50%",
29
+ "flow-handle-size": "12px",
30
+ "flow-handle-hover-background": "#409eff",
31
+ "flow-handle-connected-background": "#67c23a",
32
+ // 连线样式
33
+ "flow-edge-stroke": "#b1b3b8",
34
+ "flow-edge-stroke-width": "2",
35
+ "flow-edge-selected-stroke": "#409eff",
36
+ "flow-edge-animated-stroke": "#409eff",
37
+ "flow-edge-label-background": "#ffffff",
38
+ "flow-edge-label-color": "#606266",
39
+ // BPMN 节点
40
+ "flow-bpmn-start-fill": "#e6f7ed",
41
+ "flow-bpmn-start-stroke": "#67c23a",
42
+ "flow-bpmn-end-fill": "#fef0f0",
43
+ "flow-bpmn-end-stroke": "#f56c6c",
44
+ "flow-bpmn-task-fill": "#ecf5ff",
45
+ "flow-bpmn-task-stroke": "#409eff",
46
+ "flow-bpmn-gateway-fill": "#fdf6ec",
47
+ "flow-bpmn-gateway-stroke": "#e6a23c",
48
+ "flow-bpmn-gateway-color": "#e6a23c",
49
+ // AI 节点
50
+ "flow-ai-node-background": "#f0f9ff",
51
+ "flow-ai-node-border": "#0ea5e9",
52
+ "flow-ai-node-accent": "#0284c7",
53
+ // 背景
54
+ "flow-background-color": "#fafafa",
55
+ "flow-grid-color": "#e4e7ed",
56
+ "flow-grid-size": "20",
57
+ // 辅助线
58
+ "flow-alignment-line-color": "#c0c4cc",
59
+ "flow-alignment-line-active-color": "#409eff",
60
+ // 选框
61
+ "flow-selection-box-border": "#409eff",
62
+ "flow-selection-box-background": "rgba(64, 158, 255, 0.1)",
63
+ // 控制按钮
64
+ "flow-control-background": "#ffffff",
65
+ "flow-control-border": "#dcdfe6",
66
+ "flow-control-icon-color": "#606266",
67
+ "flow-control-hover-background": "#f5f7fa",
68
+ "flow-control-active-background": "#ecf5ff",
69
+ // 小地图
70
+ "flow-minimap-background": "#f5f7fa",
71
+ "flow-minimap-mask-background": "rgba(255, 255, 255, 0.8)",
72
+ "flow-minimap-node-color": "#c0c4cc",
73
+ "flow-minimap-viewport-border": "#409eff",
74
+ // 编辑面板
75
+ "flow-panel-background": "#ffffff",
76
+ "flow-panel-border": "#e4e7ed",
77
+ "flow-panel-shadow": "0 4px 12px rgba(0, 0, 0, 0.15)",
78
+ "flow-panel-header-background": "#fafafa",
79
+ "flow-panel-title-color": "#303133",
80
+ // 工具栏
81
+ "flow-toolbar-background": "#ffffff",
82
+ "flow-toolbar-border": "#e4e7ed",
83
+ "flow-toolbar-icon-color": "#606266",
84
+ "flow-toolbar-hover-background": "#f5f7fa",
85
+ "flow-toolbar-active-background": "#ecf5ff"
86
+ };
87
+ const flowThemeDark = exports.flowThemeDark = {
88
+ // 节点样式
89
+ "flow-node-background": "#1f1f1f",
90
+ "flow-node-border": "#3a3a3a",
91
+ "flow-node-border-radius": "8px",
92
+ "flow-node-padding": "10px",
93
+ "flow-node-shadow": "0 2px 8px rgba(0, 0, 0, 0.3)",
94
+ "flow-node-selected-border": "#409eff",
95
+ "flow-node-selected-shadow": "0 0 8px rgba(64, 158, 255, 0.5)",
96
+ "flow-node-dragging-opacity": "0.7",
97
+ // 节点文字
98
+ "flow-node-label-color": "#e5e5e5",
99
+ "flow-node-label-font-size": "14px",
100
+ "flow-node-label-font-weight": "500",
101
+ "flow-node-description-color": "#8c8c8c",
102
+ "flow-node-description-font-size": "12px",
103
+ // 连接点(Handle)
104
+ "flow-handle-background": "#262626",
105
+ "flow-handle-border": "#409eff",
106
+ "flow-handle-border-radius": "50%",
107
+ "flow-handle-size": "12px",
108
+ "flow-handle-hover-background": "#409eff",
109
+ "flow-handle-connected-background": "#67c23a",
110
+ // 连线样式
111
+ "flow-edge-stroke": "#5c5c5c",
112
+ "flow-edge-stroke-width": "2",
113
+ "flow-edge-selected-stroke": "#409eff",
114
+ "flow-edge-animated-stroke": "#409eff",
115
+ "flow-edge-label-background": "#1f1f1f",
116
+ "flow-edge-label-color": "#e5e5e5",
117
+ // BPMN 节点
118
+ "flow-bpmn-start-fill": "#1a2e1a",
119
+ "flow-bpmn-start-stroke": "#67c23a",
120
+ "flow-bpmn-end-fill": "#2e1a1a",
121
+ "flow-bpmn-end-stroke": "#f56c6c",
122
+ "flow-bpmn-task-fill": "#1a2a33",
123
+ "flow-bpmn-task-stroke": "#409eff",
124
+ "flow-bpmn-gateway-fill": "#2e2a1a",
125
+ "flow-bpmn-gateway-stroke": "#e6a23c",
126
+ "flow-bpmn-gateway-color": "#e6a23c",
127
+ // AI 节点
128
+ "flow-ai-node-background": "#1a1a2e",
129
+ "flow-ai-node-border": "#0ea5e9",
130
+ "flow-ai-node-accent": "#38bdf8",
131
+ // 背景
132
+ "flow-background-color": "#141414",
133
+ "flow-grid-color": "#2a2a2a",
134
+ "flow-grid-size": "20",
135
+ // 辅助线
136
+ "flow-alignment-line-color": "#404040",
137
+ "flow-alignment-line-active-color": "#409eff",
138
+ // 选框
139
+ "flow-selection-box-border": "#409eff",
140
+ "flow-selection-box-background": "rgba(64, 158, 255, 0.2)",
141
+ // 控制按钮
142
+ "flow-control-background": "#1f1f1f",
143
+ "flow-control-border": "#3a3a3a",
144
+ "flow-control-icon-color": "#8c8c8c",
145
+ "flow-control-hover-background": "#2a2a2a",
146
+ "flow-control-active-background": "#1a2a33",
147
+ // 小地图
148
+ "flow-minimap-background": "#1a1a1a",
149
+ "flow-minimap-mask-background": "rgba(0, 0, 0, 0.7)",
150
+ "flow-minimap-node-color": "#404040",
151
+ "flow-minimap-viewport-border": "#409eff",
152
+ // 编辑面板
153
+ "flow-panel-background": "#1f1f1f",
154
+ "flow-panel-border": "#3a3a3a",
155
+ "flow-panel-shadow": "0 4px 12px rgba(0, 0, 0, 0.5)",
156
+ "flow-panel-header-background": "#262626",
157
+ "flow-panel-title-color": "#e5e5e5",
158
+ // 工具栏
159
+ "flow-toolbar-background": "#1f1f1f",
160
+ "flow-toolbar-border": "#3a3a3a",
161
+ "flow-toolbar-icon-color": "#8c8c8c",
162
+ "flow-toolbar-hover-background": "#2a2a2a",
163
+ "flow-toolbar-active-background": "#1a2a33"
164
+ };
165
+ function applyFlowTheme(theme, target = document) {
166
+ const root = target instanceof Document ? target.documentElement : target;
167
+ for (const [key, value] of Object.entries(theme)) {
168
+ root.style.setProperty(`--${key}`, value);
169
+ }
170
+ }
171
+ function createCustomTheme(overrides) {
172
+ return {
173
+ ...flowTheme,
174
+ ...overrides
175
+ };
176
+ }
177
+ const flowThemePresets = exports.flowThemePresets = {
178
+ default: flowTheme,
179
+ dark: flowThemeDark,
180
+ blue: createCustomTheme({
181
+ "flow-node-background": "#e6f7ff",
182
+ "flow-node-border": "#91d5ff",
183
+ "flow-node-selected-border": "#1890ff",
184
+ "flow-node-selected-shadow": "0 0 8px rgba(24, 144, 255, 0.4)",
185
+ "flow-handle-border": "#1890ff",
186
+ "flow-edge-selected-stroke": "#1890ff",
187
+ "flow-edge-animated-stroke": "#1890ff",
188
+ "flow-background-color": "#f0f7ff",
189
+ "flow-grid-color": "#d0e6ff",
190
+ "flow-bpmn-start-stroke": "#52c41a",
191
+ "flow-bpmn-task-stroke": "#1890ff",
192
+ "flow-bpmn-gateway-stroke": "#faad14",
193
+ "flow-ai-node-border": "#722ed1",
194
+ "flow-ai-node-accent": "#b37feb"
195
+ }),
196
+ green: createCustomTheme({
197
+ "flow-node-background": "#f6ffed",
198
+ "flow-node-border": "#b7eb8f",
199
+ "flow-node-selected-border": "#52c41a",
200
+ "flow-node-selected-shadow": "0 0 8px rgba(82, 196, 26, 0.4)",
201
+ "flow-handle-border": "#52c41a",
202
+ "flow-edge-selected-stroke": "#52c41a",
203
+ "flow-edge-animated-stroke": "#52c41a",
204
+ "flow-background-color": "#f6ffed",
205
+ "flow-grid-color": "#d9f7be",
206
+ "flow-bpmn-start-stroke": "#52c41a",
207
+ "flow-bpmn-task-stroke": "#1890ff",
208
+ "flow-bpmn-gateway-stroke": "#faad14",
209
+ "flow-ai-node-border": "#13c2c2",
210
+ "flow-ai-node-accent": "#36cfc9"
211
+ }),
212
+ purple: createCustomTheme({
213
+ "flow-node-background": "#f9f0ff",
214
+ "flow-node-border": "#d3adf7",
215
+ "flow-node-selected-border": "#722ed1",
216
+ "flow-node-selected-shadow": "0 0 8px rgba(114, 46, 209, 0.4)",
217
+ "flow-handle-border": "#722ed1",
218
+ "flow-edge-selected-stroke": "#722ed1",
219
+ "flow-edge-animated-stroke": "#722ed1",
220
+ "flow-background-color": "#f9f0ff",
221
+ "flow-grid-color": "#efdbff",
222
+ "flow-bpmn-start-stroke": "#52c41a",
223
+ "flow-bpmn-task-stroke": "#1890ff",
224
+ "flow-bpmn-gateway-stroke": "#faad14",
225
+ "flow-ai-node-border": "#722ed1",
226
+ "flow-ai-node-accent": "#b37feb"
227
+ })
228
+ };
@@ -0,0 +1,92 @@
1
+ /**
2
+ * ============================================
3
+ * Flow Theme System
4
+ * Flow 流程图主题系统
5
+ * ============================================
6
+ */
7
+ export interface FlowTheme {
8
+ 'flow-node-background': string;
9
+ 'flow-node-border': string;
10
+ 'flow-node-border-radius': string;
11
+ 'flow-node-padding': string;
12
+ 'flow-node-shadow': string;
13
+ 'flow-node-selected-border': string;
14
+ 'flow-node-selected-shadow': string;
15
+ 'flow-node-dragging-opacity': string;
16
+ 'flow-node-label-color': string;
17
+ 'flow-node-label-font-size': string;
18
+ 'flow-node-label-font-weight': string;
19
+ 'flow-node-description-color': string;
20
+ 'flow-node-description-font-size': string;
21
+ 'flow-handle-background': string;
22
+ 'flow-handle-border': string;
23
+ 'flow-handle-border-radius': string;
24
+ 'flow-handle-size': string;
25
+ 'flow-handle-hover-background': string;
26
+ 'flow-handle-connected-background': string;
27
+ 'flow-edge-stroke': string;
28
+ 'flow-edge-stroke-width': string;
29
+ 'flow-edge-selected-stroke': string;
30
+ 'flow-edge-animated-stroke': string;
31
+ 'flow-edge-label-background': string;
32
+ 'flow-edge-label-color': string;
33
+ 'flow-bpmn-start-fill': string;
34
+ 'flow-bpmn-start-stroke': string;
35
+ 'flow-bpmn-end-fill': string;
36
+ 'flow-bpmn-end-stroke': string;
37
+ 'flow-bpmn-task-fill': string;
38
+ 'flow-bpmn-task-stroke': string;
39
+ 'flow-bpmn-gateway-fill': string;
40
+ 'flow-bpmn-gateway-stroke': string;
41
+ 'flow-bpmn-gateway-color': string;
42
+ 'flow-ai-node-background': string;
43
+ 'flow-ai-node-border': string;
44
+ 'flow-ai-node-accent': string;
45
+ 'flow-background-color': string;
46
+ 'flow-grid-color': string;
47
+ 'flow-grid-size': string;
48
+ 'flow-alignment-line-color': string;
49
+ 'flow-alignment-line-active-color': string;
50
+ 'flow-selection-box-border': string;
51
+ 'flow-selection-box-background': string;
52
+ 'flow-control-background': string;
53
+ 'flow-control-border': string;
54
+ 'flow-control-icon-color': string;
55
+ 'flow-control-hover-background': string;
56
+ 'flow-control-active-background': string;
57
+ 'flow-minimap-background': string;
58
+ 'flow-minimap-mask-background': string;
59
+ 'flow-minimap-node-color': string;
60
+ 'flow-minimap-viewport-border': string;
61
+ 'flow-panel-background': string;
62
+ 'flow-panel-border': string;
63
+ 'flow-panel-shadow': string;
64
+ 'flow-panel-header-background': string;
65
+ 'flow-panel-title-color': string;
66
+ 'flow-toolbar-background': string;
67
+ 'flow-toolbar-border': string;
68
+ 'flow-toolbar-icon-color': string;
69
+ 'flow-toolbar-hover-background': string;
70
+ 'flow-toolbar-active-background': string;
71
+ }
72
+ export declare const flowTheme: FlowTheme;
73
+ export declare const flowThemeDark: FlowTheme;
74
+ /**
75
+ * 应用主题到 DOM
76
+ */
77
+ export declare function applyFlowTheme(theme: FlowTheme, target?: HTMLElement | Document): void;
78
+ /**
79
+ * 创建自定义主题
80
+ */
81
+ export declare function createCustomTheme(overrides: Partial<FlowTheme>): FlowTheme;
82
+ /**
83
+ * 主题预设
84
+ */
85
+ export declare const flowThemePresets: {
86
+ default: FlowTheme;
87
+ dark: FlowTheme;
88
+ blue: FlowTheme;
89
+ green: FlowTheme;
90
+ purple: FlowTheme;
91
+ };
92
+ export type FlowThemeName = keyof typeof flowThemePresets;