@rxflow/workflow 0.0.1-alpha.0

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 (446) hide show
  1. package/README.md +43 -0
  2. package/cjs/components/CanvasLoading/index.d.ts +14 -0
  3. package/cjs/components/CanvasLoading/index.d.ts.map +1 -0
  4. package/cjs/components/CanvasLoading/index.js +51 -0
  5. package/cjs/components/CanvasLoading/index.less +69 -0
  6. package/cjs/components/CodeEditor/DebugPanel/index.d.ts +16 -0
  7. package/cjs/components/CodeEditor/DebugPanel/index.d.ts.map +1 -0
  8. package/cjs/components/CodeEditor/DebugPanel/index.js +156 -0
  9. package/cjs/components/CodeEditor/DebugPanel/index.less +56 -0
  10. package/cjs/components/CodeEditor/FileTree/LibraryIcon.d.ts +11 -0
  11. package/cjs/components/CodeEditor/FileTree/LibraryIcon.d.ts.map +1 -0
  12. package/cjs/components/CodeEditor/FileTree/LibraryIcon.js +33 -0
  13. package/cjs/components/CodeEditor/FileTree/icons/Javascript.d.ts +11 -0
  14. package/cjs/components/CodeEditor/FileTree/icons/Javascript.d.ts.map +1 -0
  15. package/cjs/components/CodeEditor/FileTree/icons/Javascript.js +37 -0
  16. package/cjs/components/CodeEditor/FileTree/icons/Python.d.ts +11 -0
  17. package/cjs/components/CodeEditor/FileTree/icons/Python.d.ts.map +1 -0
  18. package/cjs/components/CodeEditor/FileTree/icons/Python.js +37 -0
  19. package/cjs/components/CodeEditor/FileTree/index.d.ts +9 -0
  20. package/cjs/components/CodeEditor/FileTree/index.d.ts.map +1 -0
  21. package/cjs/components/CodeEditor/FileTree/index.js +73 -0
  22. package/cjs/components/CodeEditor/FileTree/index.less +83 -0
  23. package/cjs/components/CodeEditor/FileTree/useFileIcon.d.ts +11 -0
  24. package/cjs/components/CodeEditor/FileTree/useFileIcon.d.ts.map +1 -0
  25. package/cjs/components/CodeEditor/FileTree/useFileIcon.js +44 -0
  26. package/cjs/components/CodeEditor/Header/index.d.ts +15 -0
  27. package/cjs/components/CodeEditor/Header/index.d.ts.map +1 -0
  28. package/cjs/components/CodeEditor/Header/index.js +51 -0
  29. package/cjs/components/CodeEditor/Header/style.less +23 -0
  30. package/cjs/components/CodeEditor/Terminal/XTerm.d.ts +5 -0
  31. package/cjs/components/CodeEditor/Terminal/XTerm.d.ts.map +1 -0
  32. package/cjs/components/CodeEditor/Terminal/XTerm.js +54 -0
  33. package/cjs/components/CodeEditor/Terminal/index.d.ts +15 -0
  34. package/cjs/components/CodeEditor/Terminal/index.d.ts.map +1 -0
  35. package/cjs/components/CodeEditor/Terminal/index.js +30 -0
  36. package/cjs/components/CodeEditor/Terminal/index.less +28 -0
  37. package/cjs/components/CodeEditor/Terminal/types.d.ts +13 -0
  38. package/cjs/components/CodeEditor/editors/JSON.d.ts +12 -0
  39. package/cjs/components/CodeEditor/editors/JSON.d.ts.map +1 -0
  40. package/cjs/components/CodeEditor/editors/JSON.js +43 -0
  41. package/cjs/components/CodeEditor/editors/Python.d.ts +4 -0
  42. package/cjs/components/CodeEditor/editors/Python.d.ts.map +1 -0
  43. package/cjs/components/CodeEditor/editors/Python.js +43 -0
  44. package/cjs/components/CodeEditor/editors/index.less +11 -0
  45. package/cjs/components/CodeEditor/editors/types.d.ts +24 -0
  46. package/cjs/components/CodeEditor/index.d.ts +7 -0
  47. package/cjs/components/CodeEditor/index.d.ts.map +1 -0
  48. package/cjs/components/CodeEditor/index.js +230 -0
  49. package/cjs/components/CodeEditor/style.less +49 -0
  50. package/cjs/components/CodeEditor/types.d.ts +46 -0
  51. package/cjs/components/Handle/NodePopover.d.ts +15 -0
  52. package/cjs/components/Handle/NodePopover.d.ts.map +1 -0
  53. package/cjs/components/Handle/NodePopover.js +169 -0
  54. package/cjs/components/Handle/index.d.ts +24 -0
  55. package/cjs/components/Handle/index.d.ts.map +1 -0
  56. package/cjs/components/Handle/index.js +165 -0
  57. package/cjs/components/Handle/index.less +111 -0
  58. package/cjs/components/InlineCodeEditor/index.d.ts +11 -0
  59. package/cjs/components/InlineCodeEditor/index.d.ts.map +1 -0
  60. package/cjs/components/InlineCodeEditor/index.js +31 -0
  61. package/cjs/components/InlineCodeEditor/index.module.less +0 -0
  62. package/cjs/components/InlineCodeEditor/types.d.ts +22 -0
  63. package/cjs/components/Layout/index.d.ts +14 -0
  64. package/cjs/components/Layout/index.d.ts.map +1 -0
  65. package/cjs/components/Layout/index.js +49 -0
  66. package/cjs/components/Layout/index.less +14 -0
  67. package/cjs/components/LoadingButton.d.ts +16 -0
  68. package/cjs/components/LoadingButton.d.ts.map +1 -0
  69. package/cjs/components/LoadingButton.js +86 -0
  70. package/cjs/components/Sider/index.d.ts +15 -0
  71. package/cjs/components/Sider/index.d.ts.map +1 -0
  72. package/cjs/components/Sider/index.js +142 -0
  73. package/cjs/components/Sider/index.less +68 -0
  74. package/cjs/constants/RunningStatus.d.ts +14 -0
  75. package/cjs/constants/RunningStatus.d.ts.map +1 -0
  76. package/cjs/constants/RunningStatus.js +20 -0
  77. package/cjs/hooks/run/useActiveEdge.d.ts +15 -0
  78. package/cjs/hooks/run/useActiveEdge.d.ts.map +1 -0
  79. package/cjs/hooks/run/useActiveEdge.js +36 -0
  80. package/cjs/hooks/run/useCleanRunState.d.ts +9 -0
  81. package/cjs/hooks/run/useCleanRunState.d.ts.map +1 -0
  82. package/cjs/hooks/run/useCleanRunState.js +33 -0
  83. package/cjs/hooks/run/useNodeRunningState.d.ts +8 -0
  84. package/cjs/hooks/run/useNodeRunningState.d.ts.map +1 -0
  85. package/cjs/hooks/run/useNodeRunningState.js +30 -0
  86. package/cjs/hooks/run/useRunState.d.ts +21 -0
  87. package/cjs/hooks/run/useRunState.d.ts.map +1 -0
  88. package/cjs/hooks/run/useRunState.js +39 -0
  89. package/cjs/hooks/run/useSetRunState.d.ts +18 -0
  90. package/cjs/hooks/run/useSetRunState.d.ts.map +1 -0
  91. package/cjs/hooks/run/useSetRunState.js +39 -0
  92. package/cjs/hooks/state.d.ts +7 -0
  93. package/cjs/hooks/state.d.ts.map +1 -0
  94. package/cjs/hooks/state.js +13 -0
  95. package/cjs/hooks/useDeleteNode.d.ts +2 -0
  96. package/cjs/hooks/useDeleteNode.d.ts.map +1 -0
  97. package/cjs/hooks/useDeleteNode.js +32 -0
  98. package/cjs/hooks/useEdgeIsHover.d.ts +2 -0
  99. package/cjs/hooks/useEdgeIsHover.d.ts.map +1 -0
  100. package/cjs/hooks/useEdgeIsHover.js +20 -0
  101. package/cjs/hooks/useGetSelection.d.ts +13 -0
  102. package/cjs/hooks/useGetSelection.d.ts.map +1 -0
  103. package/cjs/hooks/useGetSelection.js +28 -0
  104. package/cjs/hooks/useGetUpstreamNodes.d.ts +14 -0
  105. package/cjs/hooks/useGetUpstreamNodes.d.ts.map +1 -0
  106. package/cjs/hooks/useGetUpstreamNodes.js +81 -0
  107. package/cjs/hooks/useGetWillDropTarget.d.ts +5 -0
  108. package/cjs/hooks/useGetWillDropTarget.d.ts.map +1 -0
  109. package/cjs/hooks/useGetWillDropTarget.js +27 -0
  110. package/cjs/hooks/useGroupIsWillDrop.d.ts +2 -0
  111. package/cjs/hooks/useGroupIsWillDrop.d.ts.map +1 -0
  112. package/cjs/hooks/useGroupIsWillDrop.js +20 -0
  113. package/cjs/hooks/useIsValidConnection.d.ts +12 -0
  114. package/cjs/hooks/useIsValidConnection.d.ts.map +1 -0
  115. package/cjs/hooks/useIsValidConnection.js +83 -0
  116. package/cjs/hooks/useMouseEvents.d.ts +19 -0
  117. package/cjs/hooks/useMouseEvents.d.ts.map +1 -0
  118. package/cjs/hooks/useMouseEvents.js +49 -0
  119. package/cjs/hooks/useNodeDragHandles.d.ts +10 -0
  120. package/cjs/hooks/useNodeDragHandles.d.ts.map +1 -0
  121. package/cjs/hooks/useNodeDragHandles.js +273 -0
  122. package/cjs/hooks/useNodes.d.ts +9 -0
  123. package/cjs/hooks/useNodes.d.ts.map +1 -0
  124. package/cjs/hooks/useNodes.js +19 -0
  125. package/cjs/hooks/useOnBeforeDelete.d.ts +19 -0
  126. package/cjs/hooks/useOnBeforeDelete.d.ts.map +1 -0
  127. package/cjs/hooks/useOnBeforeDelete.js +104 -0
  128. package/cjs/hooks/useOnConnect.d.ts +12 -0
  129. package/cjs/hooks/useOnConnect.d.ts.map +1 -0
  130. package/cjs/hooks/useOnConnect.js +36 -0
  131. package/cjs/hooks/useOnEdgeMouseEnter.d.ts +13 -0
  132. package/cjs/hooks/useOnEdgeMouseEnter.d.ts.map +1 -0
  133. package/cjs/hooks/useOnEdgeMouseEnter.js +27 -0
  134. package/cjs/hooks/useOnEdgeMouseLeave.d.ts +13 -0
  135. package/cjs/hooks/useOnEdgeMouseLeave.d.ts.map +1 -0
  136. package/cjs/hooks/useOnEdgeMouseLeave.js +27 -0
  137. package/cjs/hooks/useOnNodesChange.d.ts +4 -0
  138. package/cjs/hooks/useOnNodesChange.d.ts.map +1 -0
  139. package/cjs/hooks/useOnNodesChange.js +102 -0
  140. package/cjs/hooks/useOnSelectionChange.d.ts +13 -0
  141. package/cjs/hooks/useOnSelectionChange.d.ts.map +1 -0
  142. package/cjs/hooks/useOnSelectionChange.js +130 -0
  143. package/cjs/hooks/useSetEdges.d.ts +12 -0
  144. package/cjs/hooks/useSetEdges.d.ts.map +1 -0
  145. package/cjs/hooks/useSetEdges.js +29 -0
  146. package/cjs/hooks/useSetSelection.d.ts +3 -0
  147. package/cjs/hooks/useSetSelection.d.ts.map +1 -0
  148. package/cjs/hooks/useSetSelection.js +40 -0
  149. package/cjs/hooks/useSetWillDropTargets.d.ts +2 -0
  150. package/cjs/hooks/useSetWillDropTargets.d.ts.map +1 -0
  151. package/cjs/hooks/useSetWillDropTargets.js +26 -0
  152. package/cjs/hooks/useUpstream.d.ts +3 -0
  153. package/cjs/hooks/useUpstream.d.ts.map +1 -0
  154. package/cjs/hooks/useUpstream.js +105 -0
  155. package/cjs/hooks/useWatchSelectionNodes.d.ts +2 -0
  156. package/cjs/hooks/useWatchSelectionNodes.d.ts.map +1 -0
  157. package/cjs/hooks/useWatchSelectionNodes.js +22 -0
  158. package/cjs/hooks/useWorkFlow.d.ts +12 -0
  159. package/cjs/hooks/useWorkFlow.d.ts.map +1 -0
  160. package/cjs/hooks/useWorkFlow.js +93 -0
  161. package/cjs/hooks/useWorkFlowProps.d.ts +485 -0
  162. package/cjs/hooks/useWorkFlowProps.d.ts.map +1 -0
  163. package/cjs/hooks/useWorkFlowProps.js +98 -0
  164. package/cjs/index.d.ts +23 -0
  165. package/cjs/index.d.ts.map +1 -0
  166. package/cjs/index.js +77 -0
  167. package/cjs/types.d.ts +103 -0
  168. package/cjs/types.d.ts.map +1 -0
  169. package/cjs/types.js +8 -0
  170. package/cjs/utils/arrayUtils.d.ts +2 -0
  171. package/cjs/utils/arrayUtils.d.ts.map +1 -0
  172. package/cjs/utils/arrayUtils.js +23 -0
  173. package/cjs/utils/checkChildren.d.ts +11 -0
  174. package/cjs/utils/checkChildren.d.ts.map +1 -0
  175. package/cjs/utils/checkChildren.js +27 -0
  176. package/cjs/utils/dimensions.d.ts +12 -0
  177. package/cjs/utils/dimensions.d.ts.map +1 -0
  178. package/cjs/utils/dimensions.js +23 -0
  179. package/cjs/utils/dragDataTransfer.d.ts +19 -0
  180. package/cjs/utils/dragDataTransfer.d.ts.map +1 -0
  181. package/cjs/utils/dragDataTransfer.js +29 -0
  182. package/cjs/utils/dropTargetsCheck.d.ts +20 -0
  183. package/cjs/utils/dropTargetsCheck.d.ts.map +1 -0
  184. package/cjs/utils/dropTargetsCheck.js +105 -0
  185. package/cjs/utils/edgeEqualConnect.d.ts +11 -0
  186. package/cjs/utils/edgeEqualConnect.d.ts.map +1 -0
  187. package/cjs/utils/edgeEqualConnect.js +19 -0
  188. package/cjs/utils/events.d.ts +11 -0
  189. package/cjs/utils/events.d.ts.map +1 -0
  190. package/cjs/utils/events.js +19 -0
  191. package/cjs/utils/getEdgeId.d.ts +12 -0
  192. package/cjs/utils/getEdgeId.d.ts.map +1 -0
  193. package/cjs/utils/getEdgeId.js +22 -0
  194. package/cjs/utils/getParentFlow.d.ts +5 -0
  195. package/cjs/utils/getParentFlow.d.ts.map +1 -0
  196. package/cjs/utils/getParentFlow.js +36 -0
  197. package/cjs/utils/graph.d.ts +12 -0
  198. package/cjs/utils/graph.d.ts.map +1 -0
  199. package/cjs/utils/graph.js +55 -0
  200. package/cjs/utils/index.d.ts +18 -0
  201. package/cjs/utils/index.d.ts.map +1 -0
  202. package/cjs/utils/index.js +104 -0
  203. package/cjs/utils/isInSameParent.d.ts +11 -0
  204. package/cjs/utils/isInSameParent.d.ts.map +1 -0
  205. package/cjs/utils/isInSameParent.js +19 -0
  206. package/cjs/utils/parent.d.ts +23 -0
  207. package/cjs/utils/parent.d.ts.map +1 -0
  208. package/cjs/utils/parent.js +166 -0
  209. package/cjs/utils/position.d.ts +29 -0
  210. package/cjs/utils/position.d.ts.map +1 -0
  211. package/cjs/utils/position.js +67 -0
  212. package/cjs/utils/prepareInnerLookup.d.ts +16 -0
  213. package/cjs/utils/prepareInnerLookup.d.ts.map +1 -0
  214. package/cjs/utils/prepareInnerLookup.js +93 -0
  215. package/cjs/utils/scheduleCallback.d.ts +2 -0
  216. package/cjs/utils/scheduleCallback.d.ts.map +1 -0
  217. package/cjs/utils/scheduleCallback.js +38 -0
  218. package/cjs/utils/serialize.d.ts +31 -0
  219. package/cjs/utils/serialize.d.ts.map +1 -0
  220. package/cjs/utils/serialize.js +60 -0
  221. package/cjs/utils/triggerConnect.d.ts +12 -0
  222. package/cjs/utils/triggerConnect.d.ts.map +1 -0
  223. package/cjs/utils/triggerConnect.js +50 -0
  224. package/esm/components/CanvasLoading/index.d.ts +14 -0
  225. package/esm/components/CanvasLoading/index.d.ts.map +1 -0
  226. package/esm/components/CanvasLoading/index.js +45 -0
  227. package/esm/components/CanvasLoading/index.less +69 -0
  228. package/esm/components/CodeEditor/DebugPanel/index.d.ts +16 -0
  229. package/esm/components/CodeEditor/DebugPanel/index.d.ts.map +1 -0
  230. package/esm/components/CodeEditor/DebugPanel/index.js +199 -0
  231. package/esm/components/CodeEditor/DebugPanel/index.less +56 -0
  232. package/esm/components/CodeEditor/FileTree/LibraryIcon.d.ts +11 -0
  233. package/esm/components/CodeEditor/FileTree/LibraryIcon.d.ts.map +1 -0
  234. package/esm/components/CodeEditor/FileTree/LibraryIcon.js +27 -0
  235. package/esm/components/CodeEditor/FileTree/icons/Javascript.d.ts +11 -0
  236. package/esm/components/CodeEditor/FileTree/icons/Javascript.d.ts.map +1 -0
  237. package/esm/components/CodeEditor/FileTree/icons/Javascript.js +32 -0
  238. package/esm/components/CodeEditor/FileTree/icons/Python.d.ts +11 -0
  239. package/esm/components/CodeEditor/FileTree/icons/Python.d.ts.map +1 -0
  240. package/esm/components/CodeEditor/FileTree/icons/Python.js +32 -0
  241. package/esm/components/CodeEditor/FileTree/index.d.ts +9 -0
  242. package/esm/components/CodeEditor/FileTree/index.d.ts.map +1 -0
  243. package/esm/components/CodeEditor/FileTree/index.js +62 -0
  244. package/esm/components/CodeEditor/FileTree/index.less +83 -0
  245. package/esm/components/CodeEditor/FileTree/useFileIcon.d.ts +11 -0
  246. package/esm/components/CodeEditor/FileTree/useFileIcon.d.ts.map +1 -0
  247. package/esm/components/CodeEditor/FileTree/useFileIcon.js +39 -0
  248. package/esm/components/CodeEditor/Header/index.d.ts +15 -0
  249. package/esm/components/CodeEditor/Header/index.d.ts.map +1 -0
  250. package/esm/components/CodeEditor/Header/index.js +43 -0
  251. package/esm/components/CodeEditor/Header/style.less +23 -0
  252. package/esm/components/CodeEditor/Terminal/XTerm.d.ts +5 -0
  253. package/esm/components/CodeEditor/Terminal/XTerm.d.ts.map +1 -0
  254. package/esm/components/CodeEditor/Terminal/XTerm.js +59 -0
  255. package/esm/components/CodeEditor/Terminal/index.d.ts +15 -0
  256. package/esm/components/CodeEditor/Terminal/index.d.ts.map +1 -0
  257. package/esm/components/CodeEditor/Terminal/index.js +23 -0
  258. package/esm/components/CodeEditor/Terminal/index.less +28 -0
  259. package/esm/components/CodeEditor/Terminal/types.d.ts +13 -0
  260. package/esm/components/CodeEditor/editors/JSON.d.ts +12 -0
  261. package/esm/components/CodeEditor/editors/JSON.d.ts.map +1 -0
  262. package/esm/components/CodeEditor/editors/JSON.js +35 -0
  263. package/esm/components/CodeEditor/editors/Python.d.ts +4 -0
  264. package/esm/components/CodeEditor/editors/Python.d.ts.map +1 -0
  265. package/esm/components/CodeEditor/editors/Python.js +34 -0
  266. package/esm/components/CodeEditor/editors/index.less +11 -0
  267. package/esm/components/CodeEditor/editors/types.d.ts +24 -0
  268. package/esm/components/CodeEditor/index.d.ts +7 -0
  269. package/esm/components/CodeEditor/index.d.ts.map +1 -0
  270. package/esm/components/CodeEditor/index.js +233 -0
  271. package/esm/components/CodeEditor/style.less +49 -0
  272. package/esm/components/CodeEditor/types.d.ts +46 -0
  273. package/esm/components/Handle/NodePopover.d.ts +15 -0
  274. package/esm/components/Handle/NodePopover.d.ts.map +1 -0
  275. package/esm/components/Handle/NodePopover.js +165 -0
  276. package/esm/components/Handle/index.d.ts +24 -0
  277. package/esm/components/Handle/index.d.ts.map +1 -0
  278. package/esm/components/Handle/index.js +190 -0
  279. package/esm/components/Handle/index.less +111 -0
  280. package/esm/components/InlineCodeEditor/index.d.ts +11 -0
  281. package/esm/components/InlineCodeEditor/index.d.ts.map +1 -0
  282. package/esm/components/InlineCodeEditor/index.js +24 -0
  283. package/esm/components/InlineCodeEditor/index.module.less +0 -0
  284. package/esm/components/InlineCodeEditor/types.d.ts +22 -0
  285. package/esm/components/Layout/index.d.ts +14 -0
  286. package/esm/components/Layout/index.d.ts.map +1 -0
  287. package/esm/components/Layout/index.js +43 -0
  288. package/esm/components/Layout/index.less +14 -0
  289. package/esm/components/LoadingButton.d.ts +16 -0
  290. package/esm/components/LoadingButton.d.ts.map +1 -0
  291. package/esm/components/LoadingButton.js +112 -0
  292. package/esm/components/Sider/index.d.ts +15 -0
  293. package/esm/components/Sider/index.d.ts.map +1 -0
  294. package/esm/components/Sider/index.js +142 -0
  295. package/esm/components/Sider/index.less +68 -0
  296. package/esm/constants/RunningStatus.d.ts +14 -0
  297. package/esm/constants/RunningStatus.d.ts.map +1 -0
  298. package/esm/constants/RunningStatus.js +15 -0
  299. package/esm/hooks/run/useActiveEdge.d.ts +15 -0
  300. package/esm/hooks/run/useActiveEdge.d.ts.map +1 -0
  301. package/esm/hooks/run/useActiveEdge.js +30 -0
  302. package/esm/hooks/run/useCleanRunState.d.ts +9 -0
  303. package/esm/hooks/run/useCleanRunState.d.ts.map +1 -0
  304. package/esm/hooks/run/useCleanRunState.js +26 -0
  305. package/esm/hooks/run/useNodeRunningState.d.ts +8 -0
  306. package/esm/hooks/run/useNodeRunningState.d.ts.map +1 -0
  307. package/esm/hooks/run/useNodeRunningState.js +26 -0
  308. package/esm/hooks/run/useRunState.d.ts +21 -0
  309. package/esm/hooks/run/useRunState.d.ts.map +1 -0
  310. package/esm/hooks/run/useRunState.js +35 -0
  311. package/esm/hooks/run/useSetRunState.d.ts +18 -0
  312. package/esm/hooks/run/useSetRunState.d.ts.map +1 -0
  313. package/esm/hooks/run/useSetRunState.js +35 -0
  314. package/esm/hooks/state.d.ts +7 -0
  315. package/esm/hooks/state.d.ts.map +1 -0
  316. package/esm/hooks/state.js +6 -0
  317. package/esm/hooks/useDeleteNode.d.ts +2 -0
  318. package/esm/hooks/useDeleteNode.d.ts.map +1 -0
  319. package/esm/hooks/useDeleteNode.js +44 -0
  320. package/esm/hooks/useEdgeIsHover.d.ts +2 -0
  321. package/esm/hooks/useEdgeIsHover.d.ts.map +1 -0
  322. package/esm/hooks/useEdgeIsHover.js +14 -0
  323. package/esm/hooks/useGetSelection.d.ts +13 -0
  324. package/esm/hooks/useGetSelection.d.ts.map +1 -0
  325. package/esm/hooks/useGetSelection.js +21 -0
  326. package/esm/hooks/useGetUpstreamNodes.d.ts +14 -0
  327. package/esm/hooks/useGetUpstreamNodes.d.ts.map +1 -0
  328. package/esm/hooks/useGetUpstreamNodes.js +71 -0
  329. package/esm/hooks/useGetWillDropTarget.d.ts +5 -0
  330. package/esm/hooks/useGetWillDropTarget.d.ts.map +1 -0
  331. package/esm/hooks/useGetWillDropTarget.js +21 -0
  332. package/esm/hooks/useGroupIsWillDrop.d.ts +2 -0
  333. package/esm/hooks/useGroupIsWillDrop.d.ts.map +1 -0
  334. package/esm/hooks/useGroupIsWillDrop.js +14 -0
  335. package/esm/hooks/useIsValidConnection.d.ts +12 -0
  336. package/esm/hooks/useIsValidConnection.d.ts.map +1 -0
  337. package/esm/hooks/useIsValidConnection.js +82 -0
  338. package/esm/hooks/useMouseEvents.d.ts +19 -0
  339. package/esm/hooks/useMouseEvents.d.ts.map +1 -0
  340. package/esm/hooks/useMouseEvents.js +40 -0
  341. package/esm/hooks/useNodeDragHandles.d.ts +10 -0
  342. package/esm/hooks/useNodeDragHandles.d.ts.map +1 -0
  343. package/esm/hooks/useNodeDragHandles.js +311 -0
  344. package/esm/hooks/useNodes.d.ts +9 -0
  345. package/esm/hooks/useNodes.d.ts.map +1 -0
  346. package/esm/hooks/useNodes.js +14 -0
  347. package/esm/hooks/useOnBeforeDelete.d.ts +19 -0
  348. package/esm/hooks/useOnBeforeDelete.d.ts.map +1 -0
  349. package/esm/hooks/useOnBeforeDelete.js +138 -0
  350. package/esm/hooks/useOnConnect.d.ts +12 -0
  351. package/esm/hooks/useOnConnect.d.ts.map +1 -0
  352. package/esm/hooks/useOnConnect.js +26 -0
  353. package/esm/hooks/useOnEdgeMouseEnter.d.ts +13 -0
  354. package/esm/hooks/useOnEdgeMouseEnter.d.ts.map +1 -0
  355. package/esm/hooks/useOnEdgeMouseEnter.js +20 -0
  356. package/esm/hooks/useOnEdgeMouseLeave.d.ts +13 -0
  357. package/esm/hooks/useOnEdgeMouseLeave.d.ts.map +1 -0
  358. package/esm/hooks/useOnEdgeMouseLeave.js +20 -0
  359. package/esm/hooks/useOnNodesChange.d.ts +4 -0
  360. package/esm/hooks/useOnNodesChange.d.ts.map +1 -0
  361. package/esm/hooks/useOnNodesChange.js +107 -0
  362. package/esm/hooks/useOnSelectionChange.d.ts +13 -0
  363. package/esm/hooks/useOnSelectionChange.d.ts.map +1 -0
  364. package/esm/hooks/useOnSelectionChange.js +171 -0
  365. package/esm/hooks/useSetEdges.d.ts +12 -0
  366. package/esm/hooks/useSetEdges.d.ts.map +1 -0
  367. package/esm/hooks/useSetEdges.js +22 -0
  368. package/esm/hooks/useSetSelection.d.ts +3 -0
  369. package/esm/hooks/useSetSelection.d.ts.map +1 -0
  370. package/esm/hooks/useSetSelection.js +33 -0
  371. package/esm/hooks/useSetWillDropTargets.d.ts +2 -0
  372. package/esm/hooks/useSetWillDropTargets.d.ts.map +1 -0
  373. package/esm/hooks/useSetWillDropTargets.js +18 -0
  374. package/esm/hooks/useUpstream.d.ts +3 -0
  375. package/esm/hooks/useUpstream.d.ts.map +1 -0
  376. package/esm/hooks/useUpstream.js +101 -0
  377. package/esm/hooks/useWatchSelectionNodes.d.ts +2 -0
  378. package/esm/hooks/useWatchSelectionNodes.d.ts.map +1 -0
  379. package/esm/hooks/useWatchSelectionNodes.js +14 -0
  380. package/esm/hooks/useWorkFlow.d.ts +12 -0
  381. package/esm/hooks/useWorkFlow.d.ts.map +1 -0
  382. package/esm/hooks/useWorkFlow.js +92 -0
  383. package/esm/hooks/useWorkFlowProps.d.ts +485 -0
  384. package/esm/hooks/useWorkFlowProps.d.ts.map +1 -0
  385. package/esm/hooks/useWorkFlowProps.js +102 -0
  386. package/esm/index.d.ts +23 -0
  387. package/esm/index.d.ts.map +1 -0
  388. package/esm/index.js +28 -0
  389. package/esm/types.d.ts +103 -0
  390. package/esm/types.d.ts.map +1 -0
  391. package/esm/types.js +4 -0
  392. package/esm/utils/arrayUtils.d.ts +2 -0
  393. package/esm/utils/arrayUtils.d.ts.map +1 -0
  394. package/esm/utils/arrayUtils.js +16 -0
  395. package/esm/utils/checkChildren.d.ts +11 -0
  396. package/esm/utils/checkChildren.d.ts.map +1 -0
  397. package/esm/utils/checkChildren.js +16 -0
  398. package/esm/utils/dimensions.d.ts +12 -0
  399. package/esm/utils/dimensions.d.ts.map +1 -0
  400. package/esm/utils/dimensions.js +17 -0
  401. package/esm/utils/dragDataTransfer.d.ts +19 -0
  402. package/esm/utils/dragDataTransfer.d.ts.map +1 -0
  403. package/esm/utils/dragDataTransfer.js +21 -0
  404. package/esm/utils/dropTargetsCheck.d.ts +20 -0
  405. package/esm/utils/dropTargetsCheck.d.ts.map +1 -0
  406. package/esm/utils/dropTargetsCheck.js +116 -0
  407. package/esm/utils/edgeEqualConnect.d.ts +11 -0
  408. package/esm/utils/edgeEqualConnect.d.ts.map +1 -0
  409. package/esm/utils/edgeEqualConnect.js +12 -0
  410. package/esm/utils/events.d.ts +11 -0
  411. package/esm/utils/events.d.ts.map +1 -0
  412. package/esm/utils/events.js +12 -0
  413. package/esm/utils/getEdgeId.d.ts +12 -0
  414. package/esm/utils/getEdgeId.d.ts.map +1 -0
  415. package/esm/utils/getEdgeId.js +16 -0
  416. package/esm/utils/getParentFlow.d.ts +5 -0
  417. package/esm/utils/getParentFlow.d.ts.map +1 -0
  418. package/esm/utils/getParentFlow.js +28 -0
  419. package/esm/utils/graph.d.ts +12 -0
  420. package/esm/utils/graph.d.ts.map +1 -0
  421. package/esm/utils/graph.js +51 -0
  422. package/esm/utils/index.d.ts +18 -0
  423. package/esm/utils/index.d.ts.map +1 -0
  424. package/esm/utils/index.js +18 -0
  425. package/esm/utils/isInSameParent.d.ts +11 -0
  426. package/esm/utils/isInSameParent.d.ts.map +1 -0
  427. package/esm/utils/isInSameParent.js +12 -0
  428. package/esm/utils/parent.d.ts +23 -0
  429. package/esm/utils/parent.d.ts.map +1 -0
  430. package/esm/utils/parent.js +186 -0
  431. package/esm/utils/position.d.ts +29 -0
  432. package/esm/utils/position.d.ts.map +1 -0
  433. package/esm/utils/position.js +61 -0
  434. package/esm/utils/prepareInnerLookup.d.ts +16 -0
  435. package/esm/utils/prepareInnerLookup.d.ts.map +1 -0
  436. package/esm/utils/prepareInnerLookup.js +79 -0
  437. package/esm/utils/scheduleCallback.d.ts +2 -0
  438. package/esm/utils/scheduleCallback.d.ts.map +1 -0
  439. package/esm/utils/scheduleCallback.js +36 -0
  440. package/esm/utils/serialize.d.ts +31 -0
  441. package/esm/utils/serialize.d.ts.map +1 -0
  442. package/esm/utils/serialize.js +64 -0
  443. package/esm/utils/triggerConnect.d.ts +12 -0
  444. package/esm/utils/triggerConnect.d.ts.map +1 -0
  445. package/esm/utils/triggerConnect.js +59 -0
  446. package/package.json +70 -0
@@ -0,0 +1,36 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.getParentFlow = void 0;
7
+ var _base = require("@rxflow/base");
8
+ /**
9
+ * @author: yanxianliang
10
+ * @date: 2025-08-24 15:50
11
+ * @modified:2025/8/24 15:50 by yanxianliang
12
+ * @desc: 获取父工作流节点
13
+ *
14
+ * Copyright (c) 2025 by yanxianliang, All Rights Reserved.
15
+ */
16
+
17
+ const getParentFlow = (nodeLookup, nodeTypeLookup, targetNodeId) => {
18
+ if (!targetNodeId) {
19
+ return undefined;
20
+ }
21
+ const targetNode = nodeLookup.get(targetNodeId);
22
+ if (!targetNode) {
23
+ return undefined;
24
+ }
25
+ const definition = nodeTypeLookup.get(targetNode.type);
26
+ if (!definition) return undefined;
27
+ if (definition.nodeRoleType === _base.NodeRoleType.SubFlow) {
28
+ // 子工作流
29
+ return targetNode;
30
+ }
31
+ if (targetNode.parentId) {
32
+ return getParentFlow(nodeLookup, nodeTypeLookup, targetNode.parentId);
33
+ }
34
+ return undefined;
35
+ };
36
+ exports.getParentFlow = getParentFlow;
@@ -0,0 +1,12 @@
1
+ /**
2
+ * @author: yanxianliang
3
+ * @date: 2025-10-09 21:27
4
+ * @modified:2025/10/9 21:27 by yanxianliang
5
+ * @desc: graph 计算
6
+ *
7
+ * Copyright (c) 2025 by yanxianliang, All Rights Reserved.
8
+ */
9
+ import { WorkFlowSubFlowNodeDefinition } from "..";
10
+ import { Edge, InternalNode, Node, NodeOrigin, XYPosition } from "@xyflow/react";
11
+ export declare const calcPositionInSubFlow: <NodeType extends Node = Node, EdgeType extends Edge = Edge>(workflowDefinition: WorkFlowSubFlowNodeDefinition, parentNode: NodeType | InternalNode<NodeType>, node: NodeType, nodeOrigin: NodeOrigin, position: XYPosition) => XYPosition;
12
+ //# sourceMappingURL=graph.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"graph.d.ts","sourceRoot":"","sources":["graph.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,OAAO,EAAC,6BAA6B,EAAC,WAAyB;AAC/D,OAAO,EAAC,IAAI,EAAE,YAAY,EAAE,IAAI,EAAE,UAAU,EAAE,UAAU,EAAC,MAAM,eAAe,CAAC;AAG/E,eAAO,MAAM,qBAAqB,mFACZ,6BAA6B,cACrC,QAAQ,GAAG,aAAa,QAAQ,CAAC,QACvC,QAAQ,oCAEJ,UAAU,eA4CrB,CAAA"}
@@ -0,0 +1,55 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.calcPositionInSubFlow = void 0;
7
+ var _system = require("@xyflow/system");
8
+ /**
9
+ * @author: yanxianliang
10
+ * @date: 2025-10-09 21:27
11
+ * @modified:2025/10/9 21:27 by yanxianliang
12
+ * @desc: graph 计算
13
+ *
14
+ * Copyright (c) 2025 by yanxianliang, All Rights Reserved.
15
+ */
16
+
17
+ const calcPositionInSubFlow = (workflowDefinition, parentNode, node, nodeOrigin, position) => {
18
+ const subFlowViewPort = workflowDefinition?.subFlowViewPort;
19
+ const {
20
+ left = 0,
21
+ top = 0,
22
+ right = 0,
23
+ bottom = 0
24
+ } = subFlowViewPort || {};
25
+ const parentDimensions = (0, _system.getNodeDimensions)(parentNode);
26
+ const dimensions = (0, _system.getNodeDimensions)(node);
27
+ const nodeWidth = dimensions.width;
28
+ const nodeHeight = dimensions.height;
29
+ const x = left;
30
+ const x2 = parentDimensions.width - right;
31
+ const y = top;
32
+ const y2 = parentDimensions.height - bottom;
33
+
34
+ // 设置 extent 限制范围,需要更新父级节点的 size。
35
+ const origin = node.origin || nodeOrigin || [0, 0];
36
+ const offsetX = nodeWidth * origin[0];
37
+ const offsetY = nodeHeight * origin[1];
38
+ if (position.x - offsetX < x) {
39
+ position.x = x + offsetX;
40
+ }
41
+ if (position.y - offsetY < y) {
42
+ position.y = y + offsetY;
43
+ }
44
+ if (position.x - offsetX + nodeWidth > x2) {
45
+ position.x = x2 - nodeWidth + offsetX;
46
+ }
47
+ if (position.y - offsetY + nodeHeight > y2) {
48
+ position.y = y2 - nodeHeight + offsetY;
49
+ }
50
+ node.extent = [[left, top], [Number.POSITIVE_INFINITY, Number.POSITIVE_INFINITY]];
51
+ delete node.expandParent; // 强制关闭 expandParent 逻辑,会互相冲突
52
+
53
+ return position;
54
+ };
55
+ exports.calcPositionInSubFlow = calcPositionInSubFlow;
@@ -0,0 +1,18 @@
1
+ /**
2
+ * @author: yanxianliang
3
+ * @date: 2025-08-24 16:28
4
+ * @modified:2025/8/24 16:28 by yanxianliang
5
+ * @desc: export utils
6
+ *
7
+ * Copyright (c) 2025 by yanxianliang, All Rights Reserved.
8
+ */
9
+ export * from './position';
10
+ export * from './getParentFlow';
11
+ export * from './dimensions';
12
+ export * from './checkChildren';
13
+ export * from './edgeEqualConnect';
14
+ export * from './getEdgeId';
15
+ export * from './isInSameParent';
16
+ export * from './scheduleCallback';
17
+ export * from './serialize';
18
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["index.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,cAAc,YAAY,CAAC;AAC3B,cAAc,iBAAiB,CAAC;AAChC,cAAc,cAAc,CAAC;AAC7B,cAAc,iBAAiB,CAAC;AAChC,cAAc,oBAAoB,CAAC;AACnC,cAAc,aAAa,CAAC;AAC5B,cAAc,kBAAkB,CAAC;AACjC,cAAc,oBAAoB,CAAC;AACnC,cAAc,aAAa,CAAC"}
@@ -0,0 +1,104 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ var _position = require("./position");
7
+ Object.keys(_position).forEach(function (key) {
8
+ if (key === "default" || key === "__esModule") return;
9
+ if (key in exports && exports[key] === _position[key]) return;
10
+ Object.defineProperty(exports, key, {
11
+ enumerable: true,
12
+ get: function () {
13
+ return _position[key];
14
+ }
15
+ });
16
+ });
17
+ var _getParentFlow = require("./getParentFlow");
18
+ Object.keys(_getParentFlow).forEach(function (key) {
19
+ if (key === "default" || key === "__esModule") return;
20
+ if (key in exports && exports[key] === _getParentFlow[key]) return;
21
+ Object.defineProperty(exports, key, {
22
+ enumerable: true,
23
+ get: function () {
24
+ return _getParentFlow[key];
25
+ }
26
+ });
27
+ });
28
+ var _dimensions = require("./dimensions");
29
+ Object.keys(_dimensions).forEach(function (key) {
30
+ if (key === "default" || key === "__esModule") return;
31
+ if (key in exports && exports[key] === _dimensions[key]) return;
32
+ Object.defineProperty(exports, key, {
33
+ enumerable: true,
34
+ get: function () {
35
+ return _dimensions[key];
36
+ }
37
+ });
38
+ });
39
+ var _checkChildren = require("./checkChildren");
40
+ Object.keys(_checkChildren).forEach(function (key) {
41
+ if (key === "default" || key === "__esModule") return;
42
+ if (key in exports && exports[key] === _checkChildren[key]) return;
43
+ Object.defineProperty(exports, key, {
44
+ enumerable: true,
45
+ get: function () {
46
+ return _checkChildren[key];
47
+ }
48
+ });
49
+ });
50
+ var _edgeEqualConnect = require("./edgeEqualConnect");
51
+ Object.keys(_edgeEqualConnect).forEach(function (key) {
52
+ if (key === "default" || key === "__esModule") return;
53
+ if (key in exports && exports[key] === _edgeEqualConnect[key]) return;
54
+ Object.defineProperty(exports, key, {
55
+ enumerable: true,
56
+ get: function () {
57
+ return _edgeEqualConnect[key];
58
+ }
59
+ });
60
+ });
61
+ var _getEdgeId = require("./getEdgeId");
62
+ Object.keys(_getEdgeId).forEach(function (key) {
63
+ if (key === "default" || key === "__esModule") return;
64
+ if (key in exports && exports[key] === _getEdgeId[key]) return;
65
+ Object.defineProperty(exports, key, {
66
+ enumerable: true,
67
+ get: function () {
68
+ return _getEdgeId[key];
69
+ }
70
+ });
71
+ });
72
+ var _isInSameParent = require("./isInSameParent");
73
+ Object.keys(_isInSameParent).forEach(function (key) {
74
+ if (key === "default" || key === "__esModule") return;
75
+ if (key in exports && exports[key] === _isInSameParent[key]) return;
76
+ Object.defineProperty(exports, key, {
77
+ enumerable: true,
78
+ get: function () {
79
+ return _isInSameParent[key];
80
+ }
81
+ });
82
+ });
83
+ var _scheduleCallback = require("./scheduleCallback");
84
+ Object.keys(_scheduleCallback).forEach(function (key) {
85
+ if (key === "default" || key === "__esModule") return;
86
+ if (key in exports && exports[key] === _scheduleCallback[key]) return;
87
+ Object.defineProperty(exports, key, {
88
+ enumerable: true,
89
+ get: function () {
90
+ return _scheduleCallback[key];
91
+ }
92
+ });
93
+ });
94
+ var _serialize = require("./serialize");
95
+ Object.keys(_serialize).forEach(function (key) {
96
+ if (key === "default" || key === "__esModule") return;
97
+ if (key in exports && exports[key] === _serialize[key]) return;
98
+ Object.defineProperty(exports, key, {
99
+ enumerable: true,
100
+ get: function () {
101
+ return _serialize[key];
102
+ }
103
+ });
104
+ });
@@ -0,0 +1,11 @@
1
+ /**
2
+ * @author: yanxianliang
3
+ * @date: 2025-08-19 10:58
4
+ * @modified:2025/8/19 10:58 by yanxianliang
5
+ * @desc: 是否处于同一个父容器中
6
+ *
7
+ * Copyright (c) 2025 by yanxianliang, All Rights Reserved.
8
+ */
9
+ import { Node } from "@xyflow/react";
10
+ export declare const isInSameParent: (from: Node, target: Node) => boolean;
11
+ //# sourceMappingURL=isInSameParent.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"isInSameParent.d.ts","sourceRoot":"","sources":["isInSameParent.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,OAAO,EAAC,IAAI,EAAC,MAAM,eAAe,CAAC;AAEnC,eAAO,MAAM,cAAc,SAAU,IAAI,UAAU,IAAI,YAEtD,CAAA"}
@@ -0,0 +1,19 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.isInSameParent = void 0;
7
+ /**
8
+ * @author: yanxianliang
9
+ * @date: 2025-08-19 10:58
10
+ * @modified:2025/8/19 10:58 by yanxianliang
11
+ * @desc: 是否处于同一个父容器中
12
+ *
13
+ * Copyright (c) 2025 by yanxianliang, All Rights Reserved.
14
+ */
15
+
16
+ const isInSameParent = (from, target) => {
17
+ return !from.parentId && !target.parentId || from.parentId === target.parentId;
18
+ };
19
+ exports.isInSameParent = isInSameParent;
@@ -0,0 +1,23 @@
1
+ import { NodeTypeLookup, WorkflowNode } from "..";
2
+ import { InternalNode, NodeChange, NodeOrigin, Rect } from "@xyflow/react";
3
+ import { NodeLookup, ParentExpandChild, ParentLookup } from "@xyflow/system";
4
+ /**
5
+ * 计算 父工作流的rect,x,y 不变,计算宽度和高度
6
+ * @param parent
7
+ * @param childrenMap
8
+ * @param parentLookup
9
+ * @param nodeOrigin
10
+ * @param nodeTypeLookup
11
+ * @param nodeLookup
12
+ */
13
+ export declare function getExpectedRect(parent: InternalNode, childrenMap: Map<string, ParentExpandChild>, parentLookup: ParentLookup, nodeOrigin: NodeOrigin, nodeTypeLookup: NodeTypeLookup, nodeLookup: NodeLookup<InternalNode>): Rect;
14
+ /**
15
+ * 自动调整父节点大小,同步放大和缩小
16
+ * @param childrenPositionMap
17
+ * @param nodeLookup
18
+ * @param parentLookup
19
+ * @param nodeOrigin
20
+ * @param nodeTypeLookup
21
+ */
22
+ export declare function handleResizeParent<NodeType extends WorkflowNode = WorkflowNode>(childrenPositionMap: Map<string, ParentExpandChild>, nodeLookup: NodeLookup<InternalNode<NodeType>>, parentLookup: ParentLookup<InternalNode<NodeType>>, nodeOrigin: NodeOrigin | undefined, nodeTypeLookup: NodeTypeLookup): NodeChange<NodeType>[];
23
+ //# sourceMappingURL=parent.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"parent.d.ts","sourceRoot":"","sources":["parent.ts"],"names":[],"mappings":"AASA,OAAO,EAAC,cAAc,EAAE,YAAY,EAAC,WAAyB;AAC9D,OAAO,EAAC,YAAY,EAAE,UAAU,EAAE,UAAU,EAAE,IAAI,EAAC,MAAM,eAAe,CAAC;AACzE,OAAO,EAIL,UAAU,EAEV,iBAAiB,EACjB,YAAY,EACb,MAAM,gBAAgB,CAAC;AAGxB;;;;;;;;GAQG;AACH,wBAAgB,eAAe,CAC7B,MAAM,EAAE,YAAY,EACpB,WAAW,EAAE,GAAG,CAAC,MAAM,EAAE,iBAAiB,CAAC,EAC3C,YAAY,EAAE,YAAY,EAC1B,UAAU,EAAE,UAAU,EACtB,cAAc,EAAE,cAAc,EAC9B,UAAU,EAAE,UAAU,CAAC,YAAY,CAAC,QA4CrC;AAGD;;;;;;;GAOG;AACH,wBAAgB,kBAAkB,CAAC,QAAQ,SAAS,YAAY,GAAG,YAAY,EAC7E,mBAAmB,EAAE,GAAG,CAAC,MAAM,EAAE,iBAAiB,CAAC,EACnD,UAAU,EAAE,UAAU,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC,EAC9C,YAAY,EAAE,YAAY,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC,EAClD,UAAU,wBAAqB,EAC/B,cAAc,EAAE,cAAc,GAC7B,UAAU,CAAC,QAAQ,CAAC,EAAE,CAuFxB"}
@@ -0,0 +1,166 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.getExpectedRect = getExpectedRect;
7
+ exports.handleResizeParent = handleResizeParent;
8
+ var _base = require("@rxflow/base");
9
+ var _system = require("@xyflow/system");
10
+ /**
11
+ * @author: yanxianliang
12
+ * @date: 2025-08-31 10:08
13
+ * @modified:2025/8/31 10:08 by yanxianliang
14
+ * @desc: 父工作流处理
15
+ *
16
+ * Copyright (c) 2025 by yanxianliang, All Rights Reserved.
17
+ */
18
+
19
+ /**
20
+ * 计算 父工作流的rect,x,y 不变,计算宽度和高度
21
+ * @param parent
22
+ * @param childrenMap
23
+ * @param parentLookup
24
+ * @param nodeOrigin
25
+ * @param nodeTypeLookup
26
+ * @param nodeLookup
27
+ */
28
+ function getExpectedRect(parent, childrenMap, parentLookup, nodeOrigin, nodeTypeLookup, nodeLookup) {
29
+ const parentId = parent.id;
30
+ const parentRect = (0, _system.nodeToRect)(parent);
31
+ const children = parentLookup.get(parentId);
32
+ // 父节点x,y 不会发生改变,只伸缩width 和 height
33
+
34
+ // 所有子节点
35
+ const parentBox = {
36
+ ...parentRect,
37
+ x2: parentRect.x,
38
+ y2: parentRect.y
39
+ }; // 父工作流 rect
40
+
41
+ children?.forEach(childNode => {
42
+ const childDefinition = nodeTypeLookup.get(childNode.type);
43
+ if (childDefinition?.nodeRoleType !== _base.NodeRoleType.SubFlowBegin && childDefinition?.nodeRoleType !== _base.NodeRoleType.SubFlowEnd) {
44
+ // 这个可能并没有更新
45
+ const nodeId = childNode.id;
46
+ const innerNode = nodeLookup.get(nodeId); // parentLookup中会存在更新不及时的情况,不能直接使用 parentLookup 中的 innerNode获取 rect
47
+
48
+ const childRect = childrenMap.get(nodeId)?.rect ?? (0, _system.nodeToRect)(innerNode, nodeOrigin);
49
+ const childBox = (0, _system.rectToBox)(childRect);
50
+ if (childBox.x2 > parentBox.x2) {
51
+ parentBox.x2 = childBox.x2;
52
+ }
53
+ if (childBox.y2 > parentBox.y2) {
54
+ parentBox.y2 = childBox.y2;
55
+ }
56
+ }
57
+ });
58
+ const definition = nodeTypeLookup.get(parent.type);
59
+ if (definition && definition.subFlowViewPort) {
60
+ const {
61
+ right = 0,
62
+ bottom = 0
63
+ } = definition.subFlowViewPort;
64
+ parentBox.x2 += right;
65
+ parentBox.y2 += bottom;
66
+ }
67
+ return (0, _system.boxToRect)(parentBox);
68
+ }
69
+
70
+ /**
71
+ * 自动调整父节点大小,同步放大和缩小
72
+ * @param childrenPositionMap
73
+ * @param nodeLookup
74
+ * @param parentLookup
75
+ * @param nodeOrigin
76
+ * @param nodeTypeLookup
77
+ */
78
+ function handleResizeParent(childrenPositionMap, nodeLookup, parentLookup, nodeOrigin = [0, 0], nodeTypeLookup) {
79
+ const changes = [];
80
+ const parentExpansions = new Map();
81
+
82
+ // determine the expanded rectangle the child nodes would take for each parent
83
+ for (const [childId, child] of childrenPositionMap.entries()) {
84
+ const parent = nodeLookup.get(child.parentId);
85
+ if (!parent || parentExpansions.has(child.parentId)) {
86
+ continue;
87
+ }
88
+ const expandedRect = getExpectedRect(parent, childrenPositionMap, parentLookup, nodeOrigin, nodeTypeLookup, nodeLookup); // 还需要和其它节点对比
89
+
90
+ parentExpansions.set(child.parentId, {
91
+ expandedRect,
92
+ parent
93
+ });
94
+ }
95
+ if (parentExpansions.size > 0) {
96
+ parentExpansions.forEach(({
97
+ expandedRect,
98
+ parent
99
+ }, parentId) => {
100
+ // determine the position & dimensions of the parent
101
+ const dimensions = (0, _system.getNodeDimensions)(parent); // 现在的宽和高
102
+ const origin = parent.origin ?? nodeOrigin;
103
+ const definition = nodeTypeLookup.get(parent.type);
104
+ const {
105
+ minWidth = 0,
106
+ minHeight = 0
107
+ } = definition.subFlowViewPort || {};
108
+ const newWidth = Math.round(Math.max(expandedRect.width, minWidth)); // 新的宽度
109
+ const newHeight = Math.round(Math.max(expandedRect.height, minHeight)); // 新的高度
110
+
111
+ const widthChange = (newWidth - dimensions.width) * origin[0]; // 多减去的值
112
+ const heightChange = (newHeight - dimensions.height) * origin[1]; // 多减去的值
113
+
114
+ if (newWidth !== dimensions.width || newHeight !== dimensions.height) {
115
+ // 父节点触发 resize, 修改子节点的 extend
116
+ changes.push({
117
+ type: 'replace',
118
+ id: parentId,
119
+ item: {
120
+ ...parent.internals.userNode,
121
+ position: {
122
+ x: parent.position.x + widthChange,
123
+ y: parent.position.y + heightChange
124
+ },
125
+ measured: {
126
+ width: newWidth,
127
+ height: newHeight
128
+ },
129
+ width: newWidth,
130
+ height: newHeight
131
+ }
132
+ });
133
+ const definition = nodeTypeLookup.get(parent.type);
134
+ const children = parentLookup.get(parentId);
135
+ // 更新 start 和 end节点位置
136
+ if (definition?.nodeRoleType === _base.NodeRoleType.SubFlow) {
137
+ // 工作流父节点
138
+ children?.forEach(child => {
139
+ const definition = nodeTypeLookup.get(child.type);
140
+ if (definition?.nodeRoleType === _base.NodeRoleType.SubFlowBegin) {
141
+ // 开始节点
142
+ changes.push({
143
+ id: child.id,
144
+ type: 'position',
145
+ position: {
146
+ x: 0,
147
+ y: newHeight / 2
148
+ }
149
+ });
150
+ } else if (definition?.nodeRoleType === _base.NodeRoleType.SubFlowEnd) {
151
+ changes.push({
152
+ id: child.id,
153
+ type: 'position',
154
+ position: {
155
+ x: newWidth,
156
+ y: newHeight / 2
157
+ }
158
+ });
159
+ }
160
+ });
161
+ }
162
+ }
163
+ });
164
+ }
165
+ return changes;
166
+ }
@@ -0,0 +1,29 @@
1
+ /**
2
+ * @author: yanxianliang
3
+ * @date: 2025-08-19 09:20
4
+ * @modified:2025/8/19 09:20 by yanxianliang
5
+ * @desc: 位置转换工具
6
+ *
7
+ * Copyright (c) 2025 by yanxianliang, All Rights Reserved.
8
+ */
9
+ import { InternalNode, Node, NodeOrigin, XYPosition } from "@xyflow/react";
10
+ import { NodeLookup } from "@xyflow/system";
11
+ /**
12
+ * Convert position out of parent
13
+ *
14
+ * @internal
15
+ * @param internalNode
16
+ * @param nodeOrigin
17
+ * @returns an internal node with an absolute position
18
+ */
19
+ export declare function evaluatePositionOutParent(internalNode: InternalNode, nodeOrigin: NodeOrigin): XYPosition;
20
+ export declare function evaluatePositionInParent(position: XYPosition, parentNode: InternalNode): XYPosition;
21
+ /**
22
+ * 根据节点最新的position计算节点变化后的绝对位置
23
+ * @param nodeLookup
24
+ * @param position
25
+ * @param node
26
+ * @param nodeOrigin 工作流设置的全局偏移量
27
+ */
28
+ export declare function getPositionAbsolute(nodeLookup: NodeLookup, position: XYPosition, node: Node, nodeOrigin?: NodeOrigin): XYPosition;
29
+ //# sourceMappingURL=position.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"position.d.ts","sourceRoot":"","sources":["position.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,OAAO,EAAC,YAAY,EAAE,IAAI,EAAE,UAAU,EAAE,UAAU,EAAC,MAAM,eAAe,CAAC;AACzE,OAAO,EAAC,UAAU,EAAC,MAAM,gBAAgB,CAAC;AAG1C;;;;;;;GAOG;AACH,wBAAgB,yBAAyB,CAAC,YAAY,EAAE,YAAY,EAAE,UAAU,EAAE,UAAU,GAAG,UAAU,CAOxG;AAGD,wBAAgB,wBAAwB,CACtC,QAAQ,EAAE,UAAU,EACpB,UAAU,EAAE,YAAY,GACvB,UAAU,CAMZ;AAGD;;;;;;GAMG;AACH,wBAAgB,mBAAmB,CAAC,UAAU,EAAE,UAAU,EAAE,QAAQ,EAAE,UAAU,EAAE,IAAI,EAAE,IAAI,EAAE,UAAU,GAAE,UAAiB,GAAG,UAAU,CAUvI"}
@@ -0,0 +1,67 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.evaluatePositionInParent = evaluatePositionInParent;
7
+ exports.evaluatePositionOutParent = evaluatePositionOutParent;
8
+ exports.getPositionAbsolute = getPositionAbsolute;
9
+ var _dimensions = require("./dimensions");
10
+ /**
11
+ * @author: yanxianliang
12
+ * @date: 2025-08-19 09:20
13
+ * @modified:2025/8/19 09:20 by yanxianliang
14
+ * @desc: 位置转换工具
15
+ *
16
+ * Copyright (c) 2025 by yanxianliang, All Rights Reserved.
17
+ */
18
+
19
+ /**
20
+ * Convert position out of parent
21
+ *
22
+ * @internal
23
+ * @param internalNode
24
+ * @param nodeOrigin
25
+ * @returns an internal node with an absolute position
26
+ */
27
+ function evaluatePositionOutParent(internalNode, nodeOrigin) {
28
+ const origin = internalNode.origin || nodeOrigin;
29
+ const absolutePosition = internalNode.internals.positionAbsolute;
30
+ return {
31
+ x: absolutePosition.x + (0, _dimensions.getNodeWidth)(internalNode) * origin[0],
32
+ y: absolutePosition.y + (0, _dimensions.getNodeHeight)(internalNode) * origin[1]
33
+ };
34
+ }
35
+ function evaluatePositionInParent(position, parentNode // 需要根据绝对位置进行计算
36
+ ) {
37
+ const parentAbsolutePosition = parentNode.internals.positionAbsolute;
38
+ return {
39
+ x: position.x - parentAbsolutePosition.x,
40
+ y: position.y - parentAbsolutePosition.y
41
+ };
42
+ }
43
+
44
+ /**
45
+ * 根据节点最新的position计算节点变化后的绝对位置
46
+ * @param nodeLookup
47
+ * @param position
48
+ * @param node
49
+ * @param nodeOrigin 工作流设置的全局偏移量
50
+ */
51
+ function getPositionAbsolute(nodeLookup, position, node, nodeOrigin = [0, 0]) {
52
+ const origin = node.origin ?? nodeOrigin;
53
+ const {
54
+ x: parentX,
55
+ y: parentY
56
+ } = node.parentId ? nodeLookup.get(node.parentId)?.internals?.positionAbsolute ?? {
57
+ x: 0,
58
+ y: 0
59
+ } : {
60
+ x: 0,
61
+ y: 0
62
+ };
63
+ return {
64
+ x: parentX + position.x - (0, _dimensions.getNodeWidth)(node) * origin[0],
65
+ y: parentY + position.y - (0, _dimensions.getNodeHeight)(node) * origin[1]
66
+ };
67
+ }
@@ -0,0 +1,16 @@
1
+ /**
2
+ * @author: yanxianliang
3
+ * @date: 2025-08-30 15:13
4
+ * @modified:2025/8/30 15:13 by yanxianliang
5
+ * @desc: 预生成内置的Lookup 数据
6
+ *
7
+ * Copyright (c) 2025 by yanxianliang, All Rights Reserved.
8
+ */
9
+ import { WorkFlowNodeDefinition } from "..";
10
+ import { Edge, Node } from "@xyflow/react";
11
+ import { LayoutConfig } from "@rxflow/base";
12
+ export declare function prepareInnerLookup<NodeType extends Node = Node, EdgeType extends Edge = Edge>(config: LayoutConfig<NodeType, EdgeType>, nodeTypeMap: Map<string, WorkFlowNodeDefinition<NodeType['data']>>): {
13
+ nodes: NodeType[];
14
+ edges: EdgeType[];
15
+ };
16
+ //# sourceMappingURL=prepareInnerLookup.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"prepareInnerLookup.d.ts","sourceRoot":"","sources":["prepareInnerLookup.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,OAAO,EAAC,sBAAsB,EAAC,WAAyB;AACxD,OAAO,EAAC,IAAI,EAAE,IAAI,EAAC,MAAM,eAAe,CAAC;AACzC,OAAO,EAA8B,YAAY,EAAiB,MAAM,cAAc,CAAC;AAIvF,wBAAgB,kBAAkB,CAAC,QAAQ,SAAS,IAAI,GAAG,IAAI,EAAE,QAAQ,SAAS,IAAI,GAAG,IAAI,EAC3F,MAAM,EAAE,YAAY,CAAC,QAAQ,EAAE,QAAQ,CAAC,EACxC,WAAW,EAAE,GAAG,CAAC,MAAM,EAAE,sBAAsB,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC;;;EAwEnE"}
@@ -0,0 +1,93 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.prepareInnerLookup = prepareInnerLookup;
7
+ var _base = require("@rxflow/base");
8
+ var _graph = require("./graph");
9
+ /**
10
+ * @author: yanxianliang
11
+ * @date: 2025-08-30 15:13
12
+ * @modified:2025/8/30 15:13 by yanxianliang
13
+ * @desc: 预生成内置的Lookup 数据
14
+ *
15
+ * Copyright (c) 2025 by yanxianliang, All Rights Reserved.
16
+ */
17
+
18
+ function prepareInnerLookup(config, nodeTypeMap) {
19
+ const {
20
+ originNodes,
21
+ nodeTypes,
22
+ originEdges,
23
+ theme,
24
+ store
25
+ } = config;
26
+ const {
27
+ nodeLookup,
28
+ edgeLookup,
29
+ nodeOrigin
30
+ } = store;
31
+ const innerNodeLookup = new Map();
32
+
33
+ // originNodes 需要进行排序,父节点需要排在前面
34
+
35
+ // 缓存
36
+ if (originNodes && nodeLookup) {
37
+ for (let i = 0; i < originNodes.length; i++) {
38
+ const node = originNodes[i];
39
+ const {
40
+ id,
41
+ type
42
+ } = node;
43
+ const definition = type ? nodeTypeMap.get(type) : undefined;
44
+ const parentNode = node.parentId ? nodeLookup.get(node.parentId) || innerNodeLookup.get(node.parentId) : undefined;
45
+ const internalNode = nodeLookup.get(id);
46
+ if (!internalNode) {
47
+ innerNodeLookup.set(id, node);
48
+ const nodeWidth = (0, _base.getNodeWidth)(node, nodeTypes, theme); // 节点的宽和高
49
+ const nodeHeight = (0, _base.getNodeHeight)(node, nodeTypes, theme);
50
+ node.width = nodeWidth;
51
+ if (definition?.nodeRoleType === _base.NodeRoleType.SubFlow) {
52
+ // 组合/子工作流,内置了 resize逻辑,需要设置初始的高度
53
+ node.height = nodeHeight;
54
+ } else {
55
+ delete node.height; // 无 height时会自动按照内容来计算高度,节点内置的 resizeObserver 会生效
56
+ }
57
+ node.measured = {
58
+ width: nodeWidth,
59
+ height: nodeHeight
60
+ };
61
+
62
+ // extent 序列化可能会存在问题,不使用保存的配置,直接重新生成
63
+ if (parentNode && parentNode.type) {
64
+ const parentNodeDefinition = nodeTypeMap.get(parentNode.type);
65
+ if (parentNodeDefinition?.nodeRoleType === _base.NodeRoleType.SubFlow && definition?.nodeRoleType !== _base.NodeRoleType.SubFlowBegin && definition?.nodeRoleType !== _base.NodeRoleType.SubFlowEnd) {
66
+ node.position = (0, _graph.calcPositionInSubFlow)(parentNodeDefinition, parentNode, node, nodeOrigin, node.position);
67
+ }
68
+ }
69
+ } else {
70
+ delete node.handles; // 清除 handles,强制复用内部的 handles
71
+ }
72
+ }
73
+ }
74
+ if (originEdges && edgeLookup) {
75
+ for (let i = 0; i < originEdges.length; i++) {
76
+ const edge = originEdges[i];
77
+ const {
78
+ id
79
+ } = edge;
80
+ const internalEdge = edgeLookup.get(id);
81
+ if (!internalEdge) {
82
+ edgeLookup.set(id, edge);
83
+ }
84
+ }
85
+ }
86
+
87
+ // handles 需要清除,否则 nodes 更新时会触发
88
+
89
+ return {
90
+ nodes: originNodes || [],
91
+ edges: originEdges || []
92
+ };
93
+ }