@xyflow/react 12.0.0-next.2 → 12.0.0-next.4

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 (288) hide show
  1. package/dist/base.css +6 -1
  2. package/dist/esm/additional-components/Background/Background.d.ts +5 -5
  3. package/dist/esm/additional-components/Background/Background.d.ts.map +1 -1
  4. package/dist/esm/additional-components/Background/index.d.ts +2 -2
  5. package/dist/esm/additional-components/Background/index.d.ts.map +1 -1
  6. package/dist/esm/additional-components/Controls/ControlButton.d.ts +1 -3
  7. package/dist/esm/additional-components/Controls/ControlButton.d.ts.map +1 -1
  8. package/dist/esm/additional-components/Controls/Controls.d.ts +7 -3
  9. package/dist/esm/additional-components/Controls/Controls.d.ts.map +1 -1
  10. package/dist/esm/additional-components/Controls/Icons/FitView.d.ts +1 -2
  11. package/dist/esm/additional-components/Controls/Icons/FitView.d.ts.map +1 -1
  12. package/dist/esm/additional-components/Controls/Icons/Lock.d.ts +1 -2
  13. package/dist/esm/additional-components/Controls/Icons/Lock.d.ts.map +1 -1
  14. package/dist/esm/additional-components/Controls/Icons/Minus.d.ts +1 -2
  15. package/dist/esm/additional-components/Controls/Icons/Minus.d.ts.map +1 -1
  16. package/dist/esm/additional-components/Controls/Icons/Plus.d.ts +1 -2
  17. package/dist/esm/additional-components/Controls/Icons/Plus.d.ts.map +1 -1
  18. package/dist/esm/additional-components/Controls/Icons/Unlock.d.ts +1 -2
  19. package/dist/esm/additional-components/Controls/Icons/Unlock.d.ts.map +1 -1
  20. package/dist/esm/additional-components/Controls/index.d.ts +3 -3
  21. package/dist/esm/additional-components/Controls/index.d.ts.map +1 -1
  22. package/dist/esm/additional-components/Controls/types.d.ts +2 -1
  23. package/dist/esm/additional-components/Controls/types.d.ts.map +1 -1
  24. package/dist/esm/additional-components/MiniMap/MiniMap.d.ts +4 -4
  25. package/dist/esm/additional-components/MiniMap/MiniMap.d.ts.map +1 -1
  26. package/dist/esm/additional-components/MiniMap/MiniMapNode.d.ts +3 -3
  27. package/dist/esm/additional-components/MiniMap/MiniMapNode.d.ts.map +1 -1
  28. package/dist/esm/additional-components/MiniMap/index.d.ts +1 -1
  29. package/dist/esm/additional-components/MiniMap/index.d.ts.map +1 -1
  30. package/dist/esm/additional-components/NodeToolbar/NodeToolbar.d.ts +2 -3
  31. package/dist/esm/additional-components/NodeToolbar/NodeToolbar.d.ts.map +1 -1
  32. package/dist/esm/additional-components/NodeToolbar/NodeToolbarPortal.d.ts +1 -2
  33. package/dist/esm/additional-components/NodeToolbar/NodeToolbarPortal.d.ts.map +1 -1
  34. package/dist/esm/additional-components/NodeToolbar/index.d.ts +2 -2
  35. package/dist/esm/additional-components/NodeToolbar/index.d.ts.map +1 -1
  36. package/dist/esm/components/A11yDescriptions/index.d.ts +1 -2
  37. package/dist/esm/components/A11yDescriptions/index.d.ts.map +1 -1
  38. package/dist/esm/components/Attribution/index.d.ts +2 -2
  39. package/dist/esm/components/Attribution/index.d.ts.map +1 -1
  40. package/dist/esm/components/ConnectionLine/index.d.ts +2 -2
  41. package/dist/esm/components/ConnectionLine/index.d.ts.map +1 -1
  42. package/dist/esm/components/EdgeLabelRenderer/index.d.ts +1 -2
  43. package/dist/esm/components/EdgeLabelRenderer/index.d.ts.map +1 -1
  44. package/dist/esm/components/EdgeWrapper/EdgeUpdateAnchors.d.ts +2 -2
  45. package/dist/esm/components/EdgeWrapper/EdgeUpdateAnchors.d.ts.map +1 -1
  46. package/dist/esm/components/EdgeWrapper/index.d.ts +1 -6
  47. package/dist/esm/components/EdgeWrapper/index.d.ts.map +1 -1
  48. package/dist/esm/components/Edges/BaseEdge.d.ts +1 -5
  49. package/dist/esm/components/Edges/BaseEdge.d.ts.map +1 -1
  50. package/dist/esm/components/Edges/EdgeAnchor.d.ts +2 -2
  51. package/dist/esm/components/Edges/EdgeAnchor.d.ts.map +1 -1
  52. package/dist/esm/components/Edges/EdgeText.d.ts +7 -3
  53. package/dist/esm/components/Edges/EdgeText.d.ts.map +1 -1
  54. package/dist/esm/components/Handle/index.d.ts +1 -2
  55. package/dist/esm/components/Handle/index.d.ts.map +1 -1
  56. package/dist/esm/components/NodeWrapper/index.d.ts +1 -6
  57. package/dist/esm/components/NodeWrapper/index.d.ts.map +1 -1
  58. package/dist/esm/components/Nodes/DefaultNode.d.ts +1 -6
  59. package/dist/esm/components/Nodes/DefaultNode.d.ts.map +1 -1
  60. package/dist/esm/components/Nodes/GroupNode.d.ts +1 -5
  61. package/dist/esm/components/Nodes/GroupNode.d.ts.map +1 -1
  62. package/dist/esm/components/Nodes/InputNode.d.ts +1 -6
  63. package/dist/esm/components/Nodes/InputNode.d.ts.map +1 -1
  64. package/dist/esm/components/Nodes/OutputNode.d.ts +1 -6
  65. package/dist/esm/components/Nodes/OutputNode.d.ts.map +1 -1
  66. package/dist/esm/components/Nodes/utils.d.ts.map +1 -1
  67. package/dist/esm/components/NodesSelection/index.d.ts +1 -3
  68. package/dist/esm/components/NodesSelection/index.d.ts.map +1 -1
  69. package/dist/esm/components/Panel/index.d.ts +2 -3
  70. package/dist/esm/components/Panel/index.d.ts.map +1 -1
  71. package/dist/esm/components/ReactFlowProvider/index.d.ts +1 -5
  72. package/dist/esm/components/ReactFlowProvider/index.d.ts.map +1 -1
  73. package/dist/esm/components/SelectionListener/index.d.ts +2 -2
  74. package/dist/esm/components/SelectionListener/index.d.ts.map +1 -1
  75. package/dist/esm/components/StoreUpdater/index.d.ts +2 -2
  76. package/dist/esm/components/StoreUpdater/index.d.ts.map +1 -1
  77. package/dist/esm/components/UserSelection/index.d.ts +1 -2
  78. package/dist/esm/components/UserSelection/index.d.ts.map +1 -1
  79. package/dist/esm/components/ViewportPortal/index.d.ts +1 -2
  80. package/dist/esm/components/ViewportPortal/index.d.ts.map +1 -1
  81. package/dist/esm/container/EdgeRenderer/MarkerSymbols.d.ts +1 -1
  82. package/dist/esm/container/EdgeRenderer/MarkerSymbols.d.ts.map +1 -1
  83. package/dist/esm/container/EdgeRenderer/index.d.ts +6 -5
  84. package/dist/esm/container/EdgeRenderer/index.d.ts.map +1 -1
  85. package/dist/esm/container/FlowRenderer/index.d.ts +1 -2
  86. package/dist/esm/container/FlowRenderer/index.d.ts.map +1 -1
  87. package/dist/esm/container/GraphView/index.d.ts +6 -5
  88. package/dist/esm/container/GraphView/index.d.ts.map +1 -1
  89. package/dist/esm/container/GraphView/useNodeOrEdgeTypesWarning.d.ts +0 -1
  90. package/dist/esm/container/GraphView/useNodeOrEdgeTypesWarning.d.ts.map +1 -1
  91. package/dist/esm/container/NodeRenderer/index.d.ts +1 -2
  92. package/dist/esm/container/NodeRenderer/index.d.ts.map +1 -1
  93. package/dist/esm/container/NodeRenderer/useResizeObserver.d.ts +1 -1
  94. package/dist/esm/container/NodeRenderer/useResizeObserver.d.ts.map +1 -1
  95. package/dist/esm/container/Pane/index.d.ts +2 -2
  96. package/dist/esm/container/Pane/index.d.ts.map +1 -1
  97. package/dist/esm/container/ReactFlow/Wrapper.d.ts +1 -5
  98. package/dist/esm/container/ReactFlow/Wrapper.d.ts.map +1 -1
  99. package/dist/esm/container/ReactFlow/index.d.ts.map +1 -1
  100. package/dist/esm/container/Viewport/index.d.ts +1 -1
  101. package/dist/esm/container/Viewport/index.d.ts.map +1 -1
  102. package/dist/esm/container/ZoomPane/index.d.ts +2 -2
  103. package/dist/esm/container/ZoomPane/index.d.ts.map +1 -1
  104. package/dist/esm/hooks/useColorModeClass.d.ts +1 -1
  105. package/dist/esm/hooks/useColorModeClass.d.ts.map +1 -1
  106. package/dist/esm/hooks/useDrag.d.ts +2 -2
  107. package/dist/esm/hooks/useDrag.d.ts.map +1 -1
  108. package/dist/esm/hooks/useEdges.d.ts +1 -2
  109. package/dist/esm/hooks/useEdges.d.ts.map +1 -1
  110. package/dist/esm/hooks/useGlobalKeyHandler.d.ts +2 -3
  111. package/dist/esm/hooks/useGlobalKeyHandler.d.ts.map +1 -1
  112. package/dist/esm/hooks/useKeyPress.d.ts +1 -2
  113. package/dist/esm/hooks/useKeyPress.d.ts.map +1 -1
  114. package/dist/esm/hooks/useNodes.d.ts +1 -2
  115. package/dist/esm/hooks/useNodes.d.ts.map +1 -1
  116. package/dist/esm/hooks/useNodesInitialized.d.ts +1 -2
  117. package/dist/esm/hooks/useNodesInitialized.d.ts.map +1 -1
  118. package/dist/esm/hooks/useOnInitHandler.d.ts +1 -2
  119. package/dist/esm/hooks/useOnInitHandler.d.ts.map +1 -1
  120. package/dist/esm/hooks/useOnSelectionChange.d.ts +1 -2
  121. package/dist/esm/hooks/useOnSelectionChange.d.ts.map +1 -1
  122. package/dist/esm/hooks/useOnViewportChange.d.ts +1 -2
  123. package/dist/esm/hooks/useOnViewportChange.d.ts.map +1 -1
  124. package/dist/esm/hooks/useReactFlow.d.ts +1 -1
  125. package/dist/esm/hooks/useReactFlow.d.ts.map +1 -1
  126. package/dist/esm/hooks/useResizeHandler.d.ts +1 -2
  127. package/dist/esm/hooks/useResizeHandler.d.ts.map +1 -1
  128. package/dist/esm/hooks/useUpdateNodeInternals.d.ts +1 -2
  129. package/dist/esm/hooks/useUpdateNodeInternals.d.ts.map +1 -1
  130. package/dist/esm/hooks/useUpdateNodePositions.d.ts +1 -2
  131. package/dist/esm/hooks/useUpdateNodePositions.d.ts.map +1 -1
  132. package/dist/esm/hooks/useViewport.d.ts +1 -2
  133. package/dist/esm/hooks/useViewport.d.ts.map +1 -1
  134. package/dist/esm/hooks/useViewportSync.d.ts +1 -1
  135. package/dist/esm/hooks/useViewportSync.d.ts.map +1 -1
  136. package/dist/esm/hooks/useVisibleEdgeIds.d.ts +1 -2
  137. package/dist/esm/hooks/useVisibleEdgeIds.d.ts.map +1 -1
  138. package/dist/esm/hooks/useVisibleNodeIds.d.ts +1 -2
  139. package/dist/esm/hooks/useVisibleNodeIds.d.ts.map +1 -1
  140. package/dist/esm/index.d.ts +17 -17
  141. package/dist/esm/index.d.ts.map +1 -1
  142. package/dist/esm/index.js +163 -165
  143. package/dist/esm/index.mjs +163 -165
  144. package/dist/esm/utils/changes.d.ts.map +1 -1
  145. package/dist/style.css +6 -6
  146. package/dist/umd/additional-components/Background/Background.d.ts +5 -5
  147. package/dist/umd/additional-components/Background/Background.d.ts.map +1 -1
  148. package/dist/umd/additional-components/Background/index.d.ts +2 -2
  149. package/dist/umd/additional-components/Background/index.d.ts.map +1 -1
  150. package/dist/umd/additional-components/Controls/ControlButton.d.ts +1 -3
  151. package/dist/umd/additional-components/Controls/ControlButton.d.ts.map +1 -1
  152. package/dist/umd/additional-components/Controls/Controls.d.ts +7 -3
  153. package/dist/umd/additional-components/Controls/Controls.d.ts.map +1 -1
  154. package/dist/umd/additional-components/Controls/Icons/FitView.d.ts +1 -2
  155. package/dist/umd/additional-components/Controls/Icons/FitView.d.ts.map +1 -1
  156. package/dist/umd/additional-components/Controls/Icons/Lock.d.ts +1 -2
  157. package/dist/umd/additional-components/Controls/Icons/Lock.d.ts.map +1 -1
  158. package/dist/umd/additional-components/Controls/Icons/Minus.d.ts +1 -2
  159. package/dist/umd/additional-components/Controls/Icons/Minus.d.ts.map +1 -1
  160. package/dist/umd/additional-components/Controls/Icons/Plus.d.ts +1 -2
  161. package/dist/umd/additional-components/Controls/Icons/Plus.d.ts.map +1 -1
  162. package/dist/umd/additional-components/Controls/Icons/Unlock.d.ts +1 -2
  163. package/dist/umd/additional-components/Controls/Icons/Unlock.d.ts.map +1 -1
  164. package/dist/umd/additional-components/Controls/index.d.ts +3 -3
  165. package/dist/umd/additional-components/Controls/index.d.ts.map +1 -1
  166. package/dist/umd/additional-components/Controls/types.d.ts +2 -1
  167. package/dist/umd/additional-components/Controls/types.d.ts.map +1 -1
  168. package/dist/umd/additional-components/MiniMap/MiniMap.d.ts +4 -4
  169. package/dist/umd/additional-components/MiniMap/MiniMap.d.ts.map +1 -1
  170. package/dist/umd/additional-components/MiniMap/MiniMapNode.d.ts +3 -3
  171. package/dist/umd/additional-components/MiniMap/MiniMapNode.d.ts.map +1 -1
  172. package/dist/umd/additional-components/MiniMap/index.d.ts +1 -1
  173. package/dist/umd/additional-components/MiniMap/index.d.ts.map +1 -1
  174. package/dist/umd/additional-components/NodeToolbar/NodeToolbar.d.ts +2 -3
  175. package/dist/umd/additional-components/NodeToolbar/NodeToolbar.d.ts.map +1 -1
  176. package/dist/umd/additional-components/NodeToolbar/NodeToolbarPortal.d.ts +1 -2
  177. package/dist/umd/additional-components/NodeToolbar/NodeToolbarPortal.d.ts.map +1 -1
  178. package/dist/umd/additional-components/NodeToolbar/index.d.ts +2 -2
  179. package/dist/umd/additional-components/NodeToolbar/index.d.ts.map +1 -1
  180. package/dist/umd/components/A11yDescriptions/index.d.ts +1 -2
  181. package/dist/umd/components/A11yDescriptions/index.d.ts.map +1 -1
  182. package/dist/umd/components/Attribution/index.d.ts +2 -2
  183. package/dist/umd/components/Attribution/index.d.ts.map +1 -1
  184. package/dist/umd/components/ConnectionLine/index.d.ts +2 -2
  185. package/dist/umd/components/ConnectionLine/index.d.ts.map +1 -1
  186. package/dist/umd/components/EdgeLabelRenderer/index.d.ts +1 -2
  187. package/dist/umd/components/EdgeLabelRenderer/index.d.ts.map +1 -1
  188. package/dist/umd/components/EdgeWrapper/EdgeUpdateAnchors.d.ts +2 -2
  189. package/dist/umd/components/EdgeWrapper/EdgeUpdateAnchors.d.ts.map +1 -1
  190. package/dist/umd/components/EdgeWrapper/index.d.ts +1 -6
  191. package/dist/umd/components/EdgeWrapper/index.d.ts.map +1 -1
  192. package/dist/umd/components/Edges/BaseEdge.d.ts +1 -5
  193. package/dist/umd/components/Edges/BaseEdge.d.ts.map +1 -1
  194. package/dist/umd/components/Edges/EdgeAnchor.d.ts +2 -2
  195. package/dist/umd/components/Edges/EdgeAnchor.d.ts.map +1 -1
  196. package/dist/umd/components/Edges/EdgeText.d.ts +7 -3
  197. package/dist/umd/components/Edges/EdgeText.d.ts.map +1 -1
  198. package/dist/umd/components/Handle/index.d.ts +1 -2
  199. package/dist/umd/components/Handle/index.d.ts.map +1 -1
  200. package/dist/umd/components/NodeWrapper/index.d.ts +1 -6
  201. package/dist/umd/components/NodeWrapper/index.d.ts.map +1 -1
  202. package/dist/umd/components/Nodes/DefaultNode.d.ts +1 -6
  203. package/dist/umd/components/Nodes/DefaultNode.d.ts.map +1 -1
  204. package/dist/umd/components/Nodes/GroupNode.d.ts +1 -5
  205. package/dist/umd/components/Nodes/GroupNode.d.ts.map +1 -1
  206. package/dist/umd/components/Nodes/InputNode.d.ts +1 -6
  207. package/dist/umd/components/Nodes/InputNode.d.ts.map +1 -1
  208. package/dist/umd/components/Nodes/OutputNode.d.ts +1 -6
  209. package/dist/umd/components/Nodes/OutputNode.d.ts.map +1 -1
  210. package/dist/umd/components/Nodes/utils.d.ts.map +1 -1
  211. package/dist/umd/components/NodesSelection/index.d.ts +1 -3
  212. package/dist/umd/components/NodesSelection/index.d.ts.map +1 -1
  213. package/dist/umd/components/Panel/index.d.ts +2 -3
  214. package/dist/umd/components/Panel/index.d.ts.map +1 -1
  215. package/dist/umd/components/ReactFlowProvider/index.d.ts +1 -5
  216. package/dist/umd/components/ReactFlowProvider/index.d.ts.map +1 -1
  217. package/dist/umd/components/SelectionListener/index.d.ts +2 -2
  218. package/dist/umd/components/SelectionListener/index.d.ts.map +1 -1
  219. package/dist/umd/components/StoreUpdater/index.d.ts +2 -2
  220. package/dist/umd/components/StoreUpdater/index.d.ts.map +1 -1
  221. package/dist/umd/components/UserSelection/index.d.ts +1 -2
  222. package/dist/umd/components/UserSelection/index.d.ts.map +1 -1
  223. package/dist/umd/components/ViewportPortal/index.d.ts +1 -2
  224. package/dist/umd/components/ViewportPortal/index.d.ts.map +1 -1
  225. package/dist/umd/container/EdgeRenderer/MarkerSymbols.d.ts +1 -1
  226. package/dist/umd/container/EdgeRenderer/MarkerSymbols.d.ts.map +1 -1
  227. package/dist/umd/container/EdgeRenderer/index.d.ts +6 -5
  228. package/dist/umd/container/EdgeRenderer/index.d.ts.map +1 -1
  229. package/dist/umd/container/FlowRenderer/index.d.ts +1 -2
  230. package/dist/umd/container/FlowRenderer/index.d.ts.map +1 -1
  231. package/dist/umd/container/GraphView/index.d.ts +6 -5
  232. package/dist/umd/container/GraphView/index.d.ts.map +1 -1
  233. package/dist/umd/container/GraphView/useNodeOrEdgeTypesWarning.d.ts +0 -1
  234. package/dist/umd/container/GraphView/useNodeOrEdgeTypesWarning.d.ts.map +1 -1
  235. package/dist/umd/container/NodeRenderer/index.d.ts +1 -2
  236. package/dist/umd/container/NodeRenderer/index.d.ts.map +1 -1
  237. package/dist/umd/container/NodeRenderer/useResizeObserver.d.ts +1 -1
  238. package/dist/umd/container/NodeRenderer/useResizeObserver.d.ts.map +1 -1
  239. package/dist/umd/container/Pane/index.d.ts +2 -2
  240. package/dist/umd/container/Pane/index.d.ts.map +1 -1
  241. package/dist/umd/container/ReactFlow/Wrapper.d.ts +1 -5
  242. package/dist/umd/container/ReactFlow/Wrapper.d.ts.map +1 -1
  243. package/dist/umd/container/ReactFlow/index.d.ts.map +1 -1
  244. package/dist/umd/container/Viewport/index.d.ts +1 -1
  245. package/dist/umd/container/Viewport/index.d.ts.map +1 -1
  246. package/dist/umd/container/ZoomPane/index.d.ts +2 -2
  247. package/dist/umd/container/ZoomPane/index.d.ts.map +1 -1
  248. package/dist/umd/hooks/useColorModeClass.d.ts +1 -1
  249. package/dist/umd/hooks/useColorModeClass.d.ts.map +1 -1
  250. package/dist/umd/hooks/useDrag.d.ts +2 -2
  251. package/dist/umd/hooks/useDrag.d.ts.map +1 -1
  252. package/dist/umd/hooks/useEdges.d.ts +1 -2
  253. package/dist/umd/hooks/useEdges.d.ts.map +1 -1
  254. package/dist/umd/hooks/useGlobalKeyHandler.d.ts +2 -3
  255. package/dist/umd/hooks/useGlobalKeyHandler.d.ts.map +1 -1
  256. package/dist/umd/hooks/useKeyPress.d.ts +1 -2
  257. package/dist/umd/hooks/useKeyPress.d.ts.map +1 -1
  258. package/dist/umd/hooks/useNodes.d.ts +1 -2
  259. package/dist/umd/hooks/useNodes.d.ts.map +1 -1
  260. package/dist/umd/hooks/useNodesInitialized.d.ts +1 -2
  261. package/dist/umd/hooks/useNodesInitialized.d.ts.map +1 -1
  262. package/dist/umd/hooks/useOnInitHandler.d.ts +1 -2
  263. package/dist/umd/hooks/useOnInitHandler.d.ts.map +1 -1
  264. package/dist/umd/hooks/useOnSelectionChange.d.ts +1 -2
  265. package/dist/umd/hooks/useOnSelectionChange.d.ts.map +1 -1
  266. package/dist/umd/hooks/useOnViewportChange.d.ts +1 -2
  267. package/dist/umd/hooks/useOnViewportChange.d.ts.map +1 -1
  268. package/dist/umd/hooks/useReactFlow.d.ts +1 -1
  269. package/dist/umd/hooks/useReactFlow.d.ts.map +1 -1
  270. package/dist/umd/hooks/useResizeHandler.d.ts +1 -2
  271. package/dist/umd/hooks/useResizeHandler.d.ts.map +1 -1
  272. package/dist/umd/hooks/useUpdateNodeInternals.d.ts +1 -2
  273. package/dist/umd/hooks/useUpdateNodeInternals.d.ts.map +1 -1
  274. package/dist/umd/hooks/useUpdateNodePositions.d.ts +1 -2
  275. package/dist/umd/hooks/useUpdateNodePositions.d.ts.map +1 -1
  276. package/dist/umd/hooks/useViewport.d.ts +1 -2
  277. package/dist/umd/hooks/useViewport.d.ts.map +1 -1
  278. package/dist/umd/hooks/useViewportSync.d.ts +1 -1
  279. package/dist/umd/hooks/useViewportSync.d.ts.map +1 -1
  280. package/dist/umd/hooks/useVisibleEdgeIds.d.ts +1 -2
  281. package/dist/umd/hooks/useVisibleEdgeIds.d.ts.map +1 -1
  282. package/dist/umd/hooks/useVisibleNodeIds.d.ts +1 -2
  283. package/dist/umd/hooks/useVisibleNodeIds.d.ts.map +1 -1
  284. package/dist/umd/index.d.ts +17 -17
  285. package/dist/umd/index.d.ts.map +1 -1
  286. package/dist/umd/index.js +2 -2
  287. package/dist/umd/utils/changes.d.ts.map +1 -1
  288. package/package.json +1 -1
@@ -1,6 +1,6 @@
1
1
  "use client"
2
- import { jsx, jsxs, Fragment } from 'react/jsx-runtime';
3
- import { createContext, useContext, useMemo, memo, useEffect, useRef, useState, useCallback, forwardRef } from 'react';
2
+ import { jsxs, Fragment, jsx } from 'react/jsx-runtime';
3
+ import { createContext, useContext, useMemo, useEffect, useRef, useState, useCallback, forwardRef, memo } from 'react';
4
4
  import cc from 'classcat';
5
5
  import { errorMessages, infiniteExtent, isInputDOMNode, fitView, getViewportForBounds, pointToRendererPoint, rendererPointToPoint, isNodeBase, isEdgeBase, getOutgoersBase, getIncomersBase, addEdgeBase, updateEdgeBase, getConnectedEdgesBase, getElementsToRemove, isRectObject, nodeToRect, getOverlappingArea, getDimensions, XYPanZoom, PanOnScrollMode, SelectionMode, getEventPosition, getNodesInside, XYDrag, snapPosition, calcNextPosition, Position, isMouseEvent, XYHandle, getHostForElement, getNodesBounds, clampPosition, internalsSymbol, getPositionWithOrigin, elementSelectionKeys, isEdgeVisible, MarkerType, createMarkerIds, isNumeric, getBezierEdgeCenter, getSmoothStepPath, getStraightPath, getBezierPath, getEdgePosition, getElevatedEdgeZIndex, getMarkerId, ConnectionMode, ConnectionLineType, updateConnectionLookup, adoptUserProvidedNodes, updateNodeDimensions, updateAbsolutePositions, panBy, isMacOs, areConnectionMapsEqual, handleConnectionChange, getNodePositionWithOrigin, XYMinimap, getBoundsOfRects, getPointerPosition, clamp, getNodeToolbarTransform } from '@xyflow/system';
6
6
  export { ConnectionLineType, ConnectionMode, MarkerType, PanOnScrollMode, Position, SelectionMode, getBezierEdgeCenter, getBezierPath, getEdgeCenter, getNodesBounds, getSmoothStepPath, getStraightPath, getViewportForBounds, internalsSymbol } from '@xyflow/system';
@@ -42,9 +42,33 @@ const useStoreApi = () => {
42
42
  }), [store]);
43
43
  };
44
44
 
45
- const selector$q = (s) => (s.userSelectionActive ? 'none' : 'all');
46
- function Panel({ position, children, className, style, ...rest }) {
47
- const pointerEvents = useStore(selector$q);
45
+ const style = { display: 'none' };
46
+ const ariaLiveStyle = {
47
+ position: 'absolute',
48
+ width: 1,
49
+ height: 1,
50
+ margin: -1,
51
+ border: 0,
52
+ padding: 0,
53
+ overflow: 'hidden',
54
+ clip: 'rect(0px, 0px, 0px, 0px)',
55
+ clipPath: 'inset(100%)',
56
+ };
57
+ const ARIA_NODE_DESC_KEY = 'react-flow__node-desc';
58
+ const ARIA_EDGE_DESC_KEY = 'react-flow__edge-desc';
59
+ const ARIA_LIVE_MESSAGE = 'react-flow__aria-live';
60
+ const selector$q = (s) => s.ariaLiveMessage;
61
+ function AriaLiveMessage({ rfId }) {
62
+ const ariaLiveMessage = useStore(selector$q);
63
+ return (jsx("div", { id: `${ARIA_LIVE_MESSAGE}-${rfId}`, "aria-live": "assertive", "aria-atomic": "true", style: ariaLiveStyle, children: ariaLiveMessage }));
64
+ }
65
+ function A11yDescriptions({ rfId, disableKeyboardA11y }) {
66
+ return (jsxs(Fragment, { children: [jsxs("div", { id: `${ARIA_NODE_DESC_KEY}-${rfId}`, style: style, children: ["Press enter or space to select a node.", !disableKeyboardA11y && 'You can then use the arrow keys to move the node around.', " Press delete to remove it and escape to cancel.", ' '] }), jsx("div", { id: `${ARIA_EDGE_DESC_KEY}-${rfId}`, style: style, children: "Press enter or space to select an edge. You can then press delete to remove it or escape to cancel." }), !disableKeyboardA11y && jsx(AriaLiveMessage, { rfId: rfId })] }));
67
+ }
68
+
69
+ const selector$p = (s) => (s.userSelectionActive ? 'none' : 'all');
70
+ function Panel({ position = 'top-left', children, className, style, ...rest }) {
71
+ const pointerEvents = useStore(selector$p);
48
72
  const positionClasses = `${position}`.split('-');
49
73
  return (jsx("div", { className: cc(['react-flow__panel', className, ...positionClasses]), style: { ...style, pointerEvents }, ...rest, children: children }));
50
74
  }
@@ -56,7 +80,7 @@ function Attribution({ proOptions, position = 'bottom-right' }) {
56
80
  return (jsx(Panel, { position: position, className: "react-flow__attribution", "data-message": "Please only hide this attribution when you are subscribed to React Flow Pro: https://pro.reactflow.dev", children: jsx("a", { href: "https://reactflow.dev", target: "_blank", rel: "noopener noreferrer", "aria-label": "React Flow attribution", children: "React Flow" }) }));
57
81
  }
58
82
 
59
- const selector$p = (s) => ({
83
+ const selector$o = (s) => ({
60
84
  selectedNodes: s.nodes.filter((n) => n.selected),
61
85
  selectedEdges: s.edges.filter((e) => e.selected),
62
86
  });
@@ -65,22 +89,21 @@ function areEqual(a, b) {
65
89
  return (shallow(a.selectedNodes.map(selectId), b.selectedNodes.map(selectId)) &&
66
90
  shallow(a.selectedEdges.map(selectId), b.selectedEdges.map(selectId)));
67
91
  }
68
- const SelectionListener = memo(({ onSelectionChange }) => {
92
+ function SelectionListenerInner({ onSelectionChange }) {
69
93
  const store = useStoreApi();
70
- const { selectedNodes, selectedEdges } = useStore(selector$p, areEqual);
94
+ const { selectedNodes, selectedEdges } = useStore(selector$o, areEqual);
71
95
  useEffect(() => {
72
96
  const params = { nodes: selectedNodes, edges: selectedEdges };
73
97
  onSelectionChange?.(params);
74
98
  store.getState().onSelectionChangeHandlers.forEach((fn) => fn(params));
75
99
  }, [selectedNodes, selectedEdges, onSelectionChange]);
76
100
  return null;
77
- });
78
- SelectionListener.displayName = 'SelectionListener';
101
+ }
79
102
  const changeSelector = (s) => !!s.onSelectionChangeHandlers;
80
- function Wrapper$1({ onSelectionChange }) {
103
+ function SelectionListener({ onSelectionChange }) {
81
104
  const storeHasSelectionChangeHandlers = useStore(changeSelector);
82
105
  if (onSelectionChange || storeHasSelectionChangeHandlers) {
83
- return jsx(SelectionListener, { onSelectionChange: onSelectionChange });
106
+ return jsx(SelectionListenerInner, { onSelectionChange: onSelectionChange });
84
107
  }
85
108
  return null;
86
109
  }
@@ -147,7 +170,7 @@ const reactFlowFieldsToTrack = [
147
170
  ];
148
171
  // rfId doesn't exist in ReactFlowProps, but it's one of the fields we want to update
149
172
  const fieldsToTrack = [...reactFlowFieldsToTrack, 'rfId'];
150
- const selector$o = (s) => ({
173
+ const selector$n = (s) => ({
151
174
  setNodes: s.setNodes,
152
175
  setEdges: s.setEdges,
153
176
  setDefaultNodesAndEdges: s.setDefaultNodesAndEdges,
@@ -157,8 +180,8 @@ const selector$o = (s) => ({
157
180
  setNodeExtent: s.setNodeExtent,
158
181
  reset: s.reset,
159
182
  });
160
- const StoreUpdater = (props) => {
161
- const { setNodes, setEdges, setDefaultNodesAndEdges, setMinZoom, setMaxZoom, setTranslateExtent, setNodeExtent, reset, } = useStore(selector$o, shallow);
183
+ function StoreUpdater(props) {
184
+ const { setNodes, setEdges, setDefaultNodesAndEdges, setMinZoom, setMaxZoom, setTranslateExtent, setNodeExtent, reset, } = useStore(selector$n, shallow);
162
185
  const store = useStoreApi();
163
186
  useEffect(() => {
164
187
  const edgesWithDefaults = props.defaultEdges?.map((e) => ({ ...e, ...props.defaultEdgeOptions }));
@@ -214,30 +237,36 @@ const StoreUpdater = (props) => {
214
237
  // Only re-run the effect if one of the fields we track changes
215
238
  fieldsToTrack.map((fieldName) => props[fieldName]));
216
239
  return null;
217
- };
240
+ }
218
241
 
219
- const style = { display: 'none' };
220
- const ariaLiveStyle = {
221
- position: 'absolute',
222
- width: 1,
223
- height: 1,
224
- margin: -1,
225
- border: 0,
226
- padding: 0,
227
- overflow: 'hidden',
228
- clip: 'rect(0px, 0px, 0px, 0px)',
229
- clipPath: 'inset(100%)',
230
- };
231
- const ARIA_NODE_DESC_KEY = 'react-flow__node-desc';
232
- const ARIA_EDGE_DESC_KEY = 'react-flow__edge-desc';
233
- const ARIA_LIVE_MESSAGE = 'react-flow__aria-live';
234
- const selector$n = (s) => s.ariaLiveMessage;
235
- function AriaLiveMessage({ rfId }) {
236
- const ariaLiveMessage = useStore(selector$n);
237
- return (jsx("div", { id: `${ARIA_LIVE_MESSAGE}-${rfId}`, "aria-live": "assertive", "aria-atomic": "true", style: ariaLiveStyle, children: ariaLiveMessage }));
242
+ function getMediaQuery() {
243
+ if (typeof window === 'undefined' || !window.matchMedia) {
244
+ return null;
245
+ }
246
+ return window.matchMedia('(prefers-color-scheme: dark)');
238
247
  }
239
- function A11yDescriptions({ rfId, disableKeyboardA11y }) {
240
- return (jsxs(Fragment, { children: [jsxs("div", { id: `${ARIA_NODE_DESC_KEY}-${rfId}`, style: style, children: ["Press enter or space to select a node.", !disableKeyboardA11y && 'You can then use the arrow keys to move the node around.', " Press delete to remove it and escape to cancel.", ' '] }), jsx("div", { id: `${ARIA_EDGE_DESC_KEY}-${rfId}`, style: style, children: "Press enter or space to select an edge. You can then press delete to remove it or escape to cancel." }), !disableKeyboardA11y && jsx(AriaLiveMessage, { rfId: rfId })] }));
248
+ /**
249
+ * Hook for receiving the current color mode class 'dark' or 'light'.
250
+ *
251
+ * @internal
252
+ * @param colorMode - The color mode to use ('dark', 'light' or 'system')
253
+ */
254
+ function useColorModeClass(colorMode) {
255
+ const [colorModeClass, setColorModeClass] = useState(colorMode === 'system' ? null : colorMode);
256
+ useEffect(() => {
257
+ if (colorMode !== 'system') {
258
+ setColorModeClass(colorMode);
259
+ return;
260
+ }
261
+ const mediaQuery = getMediaQuery();
262
+ const updateColorModeClass = () => setColorModeClass(mediaQuery?.matches ? 'dark' : 'light');
263
+ updateColorModeClass();
264
+ mediaQuery?.addEventListener('change', updateColorModeClass);
265
+ return () => {
266
+ mediaQuery?.removeEventListener('change', updateColorModeClass);
267
+ };
268
+ }, [colorMode]);
269
+ return colorModeClass !== null ? colorModeClass : getMediaQuery()?.matches ? 'dark' : 'light';
241
270
  }
242
271
 
243
272
  const defaultDoc = typeof document !== 'undefined' ? document : null;
@@ -249,12 +278,12 @@ const defaultDoc = typeof document !== 'undefined' ? document : null;
249
278
  * @param param.options - Options
250
279
  * @returns boolean
251
280
  */
252
- var useKeyPress = (
281
+ function useKeyPress(
253
282
  // the keycode can be a string 'a' or an array of strings ['a', 'a+d']
254
283
  // a string means a single key 'a' or a combination when '+' is used 'a+d'
255
284
  // an array means different possibilites. Explainer: ['a', 'd+s'] here the
256
285
  // user can use the single key 'a' or the combination 'd' + 's'
257
- keyCode = null, options = { target: defaultDoc, actInsideInputWithModifier: true }) => {
286
+ keyCode = null, options = { target: defaultDoc, actInsideInputWithModifier: true }) {
258
287
  const [keyPressed, setKeyPressed] = useState(false);
259
288
  // we need to remember if a modifier key is pressed in order to track it
260
289
  const modifierPressed = useRef(false);
@@ -323,7 +352,7 @@ keyCode = null, options = { target: defaultDoc, actInsideInputWithModifier: true
323
352
  }
324
353
  }, [keyCode, setKeyPressed]);
325
354
  return keyPressed;
326
- };
355
+ }
327
356
  // utils
328
357
  function isMatchingKey(keyCodes, pressedKeys, isUp) {
329
358
  return (keyCodes
@@ -470,20 +499,25 @@ function applyChanges(changes, elements) {
470
499
  if (changes.some((c) => c.type === 'reset')) {
471
500
  return changes.filter((c) => c.type === 'reset').map((c) => c.item);
472
501
  }
473
- let remainingChanges = changes;
502
+ let remainingChanges = [];
474
503
  const updatedElements = [];
504
+ for (const change of changes) {
505
+ if (change.type === 'add') {
506
+ updatedElements.push(change.item);
507
+ }
508
+ else {
509
+ remainingChanges.push(change);
510
+ }
511
+ }
475
512
  for (const item of elements) {
476
513
  const nextChanges = [];
477
514
  const _remainingChanges = [];
478
- for (const c of remainingChanges) {
479
- if (c.type === 'add') {
480
- updatedElements.push(c.item);
481
- }
482
- else if (c.id === item.id) {
483
- nextChanges.push(c);
515
+ for (const change of remainingChanges) {
516
+ if (change.id === item.id) {
517
+ nextChanges.push(change);
484
518
  }
485
519
  else {
486
- _remainingChanges.push(c);
520
+ _remainingChanges.push(change);
487
521
  }
488
522
  }
489
523
  remainingChanges = _remainingChanges;
@@ -886,7 +920,7 @@ const deleteKeyOptions = { actInsideInputWithModifier: false };
886
920
  *
887
921
  * @internal
888
922
  */
889
- var useGlobalKeyHandler = ({ deleteKeyCode, multiSelectionKeyCode, }) => {
923
+ function useGlobalKeyHandler({ deleteKeyCode, multiSelectionKeyCode, }) {
890
924
  const store = useStoreApi();
891
925
  const { deleteElements } = useReactFlow();
892
926
  const deleteKeyPressed = useKeyPress(deleteKeyCode, deleteKeyOptions);
@@ -901,7 +935,7 @@ var useGlobalKeyHandler = ({ deleteKeyCode, multiSelectionKeyCode, }) => {
901
935
  useEffect(() => {
902
936
  store.setState({ multiSelectionActive: multiSelectionKeyPressed });
903
937
  }, [multiSelectionKeyPressed]);
904
- };
938
+ }
905
939
 
906
940
  /**
907
941
  * Hook for handling resize events.
@@ -948,7 +982,7 @@ const selector$l = (s) => ({
948
982
  userSelectionActive: s.userSelectionActive,
949
983
  lib: s.lib,
950
984
  });
951
- const ZoomPane = ({ onPaneContextMenu, zoomOnScroll = true, zoomOnPinch = true, panOnScroll = false, panOnScrollSpeed = 0.5, panOnScrollMode = PanOnScrollMode.Free, zoomOnDoubleClick = true, panOnDrag = true, defaultViewport, translateExtent, minZoom, maxZoom, zoomActivationKeyCode, preventScrolling = true, children, noWheelClassName, noPanClassName, onViewportChange, isControlledViewport, }) => {
985
+ function ZoomPane({ onPaneContextMenu, zoomOnScroll = true, zoomOnPinch = true, panOnScroll = false, panOnScrollSpeed = 0.5, panOnScrollMode = PanOnScrollMode.Free, zoomOnDoubleClick = true, panOnDrag = true, defaultViewport, translateExtent, minZoom, maxZoom, zoomActivationKeyCode, preventScrolling = true, children, noWheelClassName, noPanClassName, onViewportChange, isControlledViewport, }) {
952
986
  const store = useStoreApi();
953
987
  const zoomPane = useRef(null);
954
988
  const { userSelectionActive, lib } = useStore(selector$l, shallow);
@@ -1031,7 +1065,7 @@ const ZoomPane = ({ onPaneContextMenu, zoomOnScroll = true, zoomOnPinch = true,
1031
1065
  lib,
1032
1066
  ]);
1033
1067
  return (jsx("div", { className: "react-flow__renderer", ref: zoomPane, style: containerStyle, children: children }));
1034
- };
1068
+ }
1035
1069
 
1036
1070
  const selector$k = (s) => ({
1037
1071
  userSelectionActive: s.userSelectionActive,
@@ -1063,7 +1097,7 @@ const selector$j = (s) => ({
1063
1097
  elementsSelectable: s.elementsSelectable,
1064
1098
  dragging: s.paneDragging,
1065
1099
  });
1066
- const Pane = memo(({ isSelecting, selectionMode = SelectionMode.Full, panOnDrag, onSelectionStart, onSelectionEnd, onPaneClick, onPaneContextMenu, onPaneScroll, onPaneMouseEnter, onPaneMouseMove, onPaneMouseLeave, children, }) => {
1100
+ function Pane({ isSelecting, selectionMode = SelectionMode.Full, panOnDrag, onSelectionStart, onSelectionEnd, onPaneClick, onPaneContextMenu, onPaneScroll, onPaneMouseEnter, onPaneMouseMove, onPaneMouseLeave, children, }) {
1067
1101
  const container = useRef(null);
1068
1102
  const store = useStoreApi();
1069
1103
  const prevSelectedNodesCount = useRef(0);
@@ -1180,8 +1214,7 @@ const Pane = memo(({ isSelecting, selectionMode = SelectionMode.Full, panOnDrag,
1180
1214
  };
1181
1215
  const hasActiveSelection = elementsSelectable && (isSelecting || userSelectionActive);
1182
1216
  return (jsxs("div", { className: cc(['react-flow__pane', { dragging, selection: isSelecting }]), onClick: hasActiveSelection ? undefined : wrapHandler(onClick, container), onContextMenu: wrapHandler(onContextMenu, container), onWheel: wrapHandler(onWheel, container), onMouseEnter: hasActiveSelection ? undefined : onPaneMouseEnter, onMouseDown: hasActiveSelection ? onMouseDown : undefined, onMouseMove: hasActiveSelection ? onMouseMove : onPaneMouseMove, onMouseUp: hasActiveSelection ? onMouseUp : undefined, onMouseLeave: hasActiveSelection ? onMouseLeave : onPaneMouseLeave, ref: container, style: containerStyle, children: [children, jsx(UserSelection, {})] }));
1183
- });
1184
- Pane.displayName = 'Pane';
1217
+ }
1185
1218
 
1186
1219
  // this handler is called by
1187
1220
  // 1. the click handler when node is not draggable or selectNodesOnDrag = false
@@ -1209,7 +1242,7 @@ function handleNodeClick({ id, store, unselect = false, nodeRef, }) {
1209
1242
  *
1210
1243
  * @internal
1211
1244
  */
1212
- function useDrag({ nodeRef, disabled = false, noDragClassName, handleSelector, nodeId, isSelectable }) {
1245
+ function useDrag({ nodeRef, disabled = false, noDragClassName, handleSelector, nodeId, isSelectable, }) {
1213
1246
  const store = useStoreApi();
1214
1247
  const [dragging, setDragging] = useState(false);
1215
1248
  const xyDrag = useRef();
@@ -1317,7 +1350,7 @@ const connectingSelector = (nodeId, handleId, type) => (state) => {
1317
1350
  clickConnecting: clickHandle?.nodeId === nodeId && clickHandle?.handleId === handleId && clickHandle?.type === type,
1318
1351
  };
1319
1352
  };
1320
- const Handle = forwardRef(({ type = 'source', position = Position.Top, isValidConnection, isConnectable = true, isConnectableStart = true, isConnectableEnd = true, id, onConnect, children, className, onMouseDown, onTouchStart, ...rest }, ref) => {
1353
+ const HandleComponent = forwardRef(({ type = 'source', position = Position.Top, isValidConnection, isConnectable = true, isConnectableStart = true, isConnectableEnd = true, id, onConnect, children, className, onMouseDown, onTouchStart, ...rest }, ref) => {
1321
1354
  const handleId = id || null;
1322
1355
  const isTarget = type === 'target';
1323
1356
  const store = useStoreApi();
@@ -1425,25 +1458,24 @@ const Handle = forwardRef(({ type = 'source', position = Position.Top, isValidCo
1425
1458
  },
1426
1459
  ]), onMouseDown: onPointerDown, onTouchStart: onPointerDown, onClick: connectOnClick ? onClick : undefined, ref: ref, ...rest, children: children }));
1427
1460
  });
1428
- Handle.displayName = 'Handle';
1429
- var Handle$1 = memo(Handle);
1461
+ HandleComponent.displayName = 'Handle';
1462
+ const Handle = memo(HandleComponent);
1430
1463
 
1431
- const InputNode = ({ data, isConnectable, sourcePosition = Position.Bottom }) => (jsxs(Fragment, { children: [data?.label, jsx(Handle$1, { type: "source", position: sourcePosition, isConnectable: isConnectable })] }));
1432
- InputNode.displayName = 'InputNode';
1433
- var InputNode$1 = memo(InputNode);
1464
+ function InputNode({ data, isConnectable, sourcePosition = Position.Bottom }) {
1465
+ return (jsxs(Fragment, { children: [data?.label, jsx(Handle, { type: "source", position: sourcePosition, isConnectable: isConnectable })] }));
1466
+ }
1434
1467
 
1435
- const DefaultNode = ({ data, isConnectable, targetPosition = Position.Top, sourcePosition = Position.Bottom, }) => {
1436
- return (jsxs(Fragment, { children: [jsx(Handle$1, { type: "target", position: targetPosition, isConnectable: isConnectable }), data?.label, jsx(Handle$1, { type: "source", position: sourcePosition, isConnectable: isConnectable })] }));
1437
- };
1438
- DefaultNode.displayName = 'DefaultNode';
1439
- var DefaultNode$1 = memo(DefaultNode);
1468
+ function DefaultNode({ data, isConnectable, targetPosition = Position.Top, sourcePosition = Position.Bottom, }) {
1469
+ return (jsxs(Fragment, { children: [jsx(Handle, { type: "target", position: targetPosition, isConnectable: isConnectable }), data?.label, jsx(Handle, { type: "source", position: sourcePosition, isConnectable: isConnectable })] }));
1470
+ }
1440
1471
 
1441
- const GroupNode = () => null;
1442
- GroupNode.displayName = 'GroupNode';
1472
+ function GroupNode() {
1473
+ return null;
1474
+ }
1443
1475
 
1444
- const OutputNode = ({ data, isConnectable, targetPosition = Position.Top }) => (jsxs(Fragment, { children: [jsx(Handle$1, { type: "target", position: targetPosition, isConnectable: isConnectable }), data?.label] }));
1445
- OutputNode.displayName = 'OutputNode';
1446
- var OutputNode$1 = memo(OutputNode);
1476
+ function OutputNode({ data, isConnectable, targetPosition = Position.Top }) {
1477
+ return (jsxs(Fragment, { children: [jsx(Handle, { type: "target", position: targetPosition, isConnectable: isConnectable }), data?.label] }));
1478
+ }
1447
1479
 
1448
1480
  const arrowKeyDiffs = {
1449
1481
  ArrowUp: { x: 0, y: -1 },
@@ -1452,9 +1484,9 @@ const arrowKeyDiffs = {
1452
1484
  ArrowRight: { x: 1, y: 0 },
1453
1485
  };
1454
1486
  const builtinNodeTypes = {
1455
- input: InputNode$1,
1456
- default: DefaultNode$1,
1457
- output: OutputNode$1,
1487
+ input: InputNode,
1488
+ default: DefaultNode,
1489
+ output: OutputNode,
1458
1490
  group: GroupNode,
1459
1491
  };
1460
1492
 
@@ -1508,10 +1540,9 @@ function NodesSelection({ onSelectionContextMenu, noPanClassName, disableKeyboar
1508
1540
  height,
1509
1541
  } }) }));
1510
1542
  }
1511
- var NodesSelection$1 = memo(NodesSelection);
1512
1543
 
1513
1544
  const selector$g = (s) => s.nodesSelectionActive;
1514
- const FlowRenderer = ({ children, onPaneClick, onPaneMouseEnter, onPaneMouseMove, onPaneMouseLeave, onPaneContextMenu, onPaneScroll, deleteKeyCode, selectionKeyCode, selectionOnDrag, selectionMode, onSelectionStart, onSelectionEnd, multiSelectionKeyCode, panActivationKeyCode, zoomActivationKeyCode, elementsSelectable, zoomOnScroll, zoomOnPinch, panOnScroll: _panOnScroll, panOnScrollSpeed, panOnScrollMode, zoomOnDoubleClick, panOnDrag: _panOnDrag, defaultViewport, translateExtent, minZoom, maxZoom, preventScrolling, onSelectionContextMenu, noWheelClassName, noPanClassName, disableKeyboardA11y, onViewportChange, isControlledViewport, }) => {
1545
+ const FlowRendererComponent = ({ children, onPaneClick, onPaneMouseEnter, onPaneMouseMove, onPaneMouseLeave, onPaneContextMenu, onPaneScroll, deleteKeyCode, selectionKeyCode, selectionOnDrag, selectionMode, onSelectionStart, onSelectionEnd, multiSelectionKeyCode, panActivationKeyCode, zoomActivationKeyCode, elementsSelectable, zoomOnScroll, zoomOnPinch, panOnScroll: _panOnScroll, panOnScrollSpeed, panOnScrollMode, zoomOnDoubleClick, panOnDrag: _panOnDrag, defaultViewport, translateExtent, minZoom, maxZoom, preventScrolling, onSelectionContextMenu, noWheelClassName, noPanClassName, disableKeyboardA11y, onViewportChange, isControlledViewport, }) => {
1515
1546
  const nodesSelectionActive = useStore(selector$g);
1516
1547
  const selectionKeyPressed = useKeyPress(selectionKeyCode);
1517
1548
  const panActivationKeyPressed = useKeyPress(panActivationKeyCode);
@@ -1519,10 +1550,10 @@ const FlowRenderer = ({ children, onPaneClick, onPaneMouseEnter, onPaneMouseMove
1519
1550
  const panOnScroll = panActivationKeyPressed || _panOnScroll;
1520
1551
  const isSelecting = selectionKeyPressed || (selectionOnDrag && panOnDrag !== true);
1521
1552
  useGlobalKeyHandler({ deleteKeyCode, multiSelectionKeyCode });
1522
- return (jsx(ZoomPane, { onPaneContextMenu: onPaneContextMenu, elementsSelectable: elementsSelectable, zoomOnScroll: zoomOnScroll, zoomOnPinch: zoomOnPinch, panOnScroll: panOnScroll, panOnScrollSpeed: panOnScrollSpeed, panOnScrollMode: panOnScrollMode, zoomOnDoubleClick: zoomOnDoubleClick, panOnDrag: !selectionKeyPressed && panOnDrag, defaultViewport: defaultViewport, translateExtent: translateExtent, minZoom: minZoom, maxZoom: maxZoom, zoomActivationKeyCode: zoomActivationKeyCode, preventScrolling: preventScrolling, noWheelClassName: noWheelClassName, noPanClassName: noPanClassName, onViewportChange: onViewportChange, isControlledViewport: isControlledViewport, children: jsxs(Pane, { onSelectionStart: onSelectionStart, onSelectionEnd: onSelectionEnd, onPaneClick: onPaneClick, onPaneMouseEnter: onPaneMouseEnter, onPaneMouseMove: onPaneMouseMove, onPaneMouseLeave: onPaneMouseLeave, onPaneContextMenu: onPaneContextMenu, onPaneScroll: onPaneScroll, panOnDrag: panOnDrag, isSelecting: !!isSelecting, selectionMode: selectionMode, children: [children, nodesSelectionActive && (jsx(NodesSelection$1, { onSelectionContextMenu: onSelectionContextMenu, noPanClassName: noPanClassName, disableKeyboardA11y: disableKeyboardA11y }))] }) }));
1553
+ return (jsx(ZoomPane, { onPaneContextMenu: onPaneContextMenu, elementsSelectable: elementsSelectable, zoomOnScroll: zoomOnScroll, zoomOnPinch: zoomOnPinch, panOnScroll: panOnScroll, panOnScrollSpeed: panOnScrollSpeed, panOnScrollMode: panOnScrollMode, zoomOnDoubleClick: zoomOnDoubleClick, panOnDrag: !selectionKeyPressed && panOnDrag, defaultViewport: defaultViewport, translateExtent: translateExtent, minZoom: minZoom, maxZoom: maxZoom, zoomActivationKeyCode: zoomActivationKeyCode, preventScrolling: preventScrolling, noWheelClassName: noWheelClassName, noPanClassName: noPanClassName, onViewportChange: onViewportChange, isControlledViewport: isControlledViewport, children: jsxs(Pane, { onSelectionStart: onSelectionStart, onSelectionEnd: onSelectionEnd, onPaneClick: onPaneClick, onPaneMouseEnter: onPaneMouseEnter, onPaneMouseMove: onPaneMouseMove, onPaneMouseLeave: onPaneMouseLeave, onPaneContextMenu: onPaneContextMenu, onPaneScroll: onPaneScroll, panOnDrag: panOnDrag, isSelecting: !!isSelecting, selectionMode: selectionMode, children: [children, nodesSelectionActive && (jsx(NodesSelection, { onSelectionContextMenu: onSelectionContextMenu, noPanClassName: noPanClassName, disableKeyboardA11y: disableKeyboardA11y }))] }) }));
1523
1554
  };
1524
- FlowRenderer.displayName = 'FlowRenderer';
1525
- var FlowRenderer$1 = memo(FlowRenderer);
1555
+ FlowRendererComponent.displayName = 'FlowRenderer';
1556
+ const FlowRenderer = memo(FlowRendererComponent);
1526
1557
 
1527
1558
  const selector$f = (onlyRenderVisible) => (s) => {
1528
1559
  return onlyRenderVisible
@@ -1572,7 +1603,7 @@ function useResizeObserver() {
1572
1603
  return resizeObserver;
1573
1604
  }
1574
1605
 
1575
- const NodeWrapper = ({ id, onClick, onMouseEnter, onMouseMove, onMouseLeave, onContextMenu, onDoubleClick, nodesDraggable, elementsSelectable, nodesConnectable, nodesFocusable, resizeObserver, noDragClassName, noPanClassName, disableKeyboardA11y, rfId, nodeTypes, nodeExtent, nodeOrigin, onError, }) => {
1606
+ function NodeWrapper({ id, onClick, onMouseEnter, onMouseMove, onMouseLeave, onContextMenu, onDoubleClick, nodesDraggable, elementsSelectable, nodesConnectable, nodesFocusable, resizeObserver, noDragClassName, noPanClassName, disableKeyboardA11y, rfId, nodeTypes, nodeExtent, nodeOrigin, onError, }) {
1576
1607
  const { node, positionAbsoluteX, positionAbsoluteY, zIndex, isParent } = useStore((s) => {
1577
1608
  const node = s.nodeLookup.get(id);
1578
1609
  const positionAbsolute = nodeExtent
@@ -1726,9 +1757,7 @@ const NodeWrapper = ({ id, onClick, onMouseEnter, onMouseMove, onMouseLeave, onC
1726
1757
  height,
1727
1758
  ...node.style,
1728
1759
  }, "data-id": id, "data-testid": `rf__node-${id}`, onMouseEnter: onMouseEnterHandler, onMouseMove: onMouseMoveHandler, onMouseLeave: onMouseLeaveHandler, onContextMenu: onContextMenuHandler, onClick: onSelectNodeHandler, onDoubleClick: onDoubleClickHandler, onKeyDown: isFocusable ? onKeyDown : undefined, tabIndex: isFocusable ? 0 : undefined, role: isFocusable ? 'button' : undefined, "aria-describedby": disableKeyboardA11y ? undefined : `${ARIA_NODE_DESC_KEY}-${rfId}`, "aria-label": node.ariaLabel, children: jsx(Provider, { value: id, children: jsx(NodeComponent, { id: id, data: node.data, type: nodeType, width: computedWidth, height: computedHeight, positionAbsoluteX: positionAbsoluteX, positionAbsoluteY: positionAbsoluteY, selected: node.selected, isConnectable: isConnectable, sourcePosition: node.sourcePosition, targetPosition: node.targetPosition, dragging: dragging, dragHandle: node.dragHandle, zIndex: zIndex }) }) }));
1729
- };
1730
- NodeWrapper.displayName = 'NodeWrapper';
1731
- var NodeWrapper$1 = memo(NodeWrapper);
1760
+ }
1732
1761
 
1733
1762
  const selector$d = (s) => ({
1734
1763
  nodesDraggable: s.nodesDraggable,
@@ -1737,7 +1766,7 @@ const selector$d = (s) => ({
1737
1766
  elementsSelectable: s.elementsSelectable,
1738
1767
  onError: s.onError,
1739
1768
  });
1740
- const NodeRenderer = (props) => {
1769
+ const NodeRendererComponent = (props) => {
1741
1770
  const { nodesDraggable, nodesConnectable, nodesFocusable, elementsSelectable, onError } = useStore(selector$d, shallow);
1742
1771
  const nodeIds = useVisibleNodeIds(props.onlyRenderVisibleElements);
1743
1772
  const resizeObserver = useResizeObserver();
@@ -1766,11 +1795,11 @@ const NodeRenderer = (props) => {
1766
1795
  // moved into `NodeComponentWrapper`. This ensures they are
1767
1796
  // memorized – so if `NodeRenderer` *has* to rerender, it only
1768
1797
  // needs to regenerate the list of nodes, nothing else.
1769
- jsx(NodeWrapper$1, { id: nodeId, nodeTypes: props.nodeTypes, nodeExtent: props.nodeExtent, nodeOrigin: props.nodeOrigin, onClick: props.onNodeClick, onMouseEnter: props.onNodeMouseEnter, onMouseMove: props.onNodeMouseMove, onMouseLeave: props.onNodeMouseLeave, onContextMenu: props.onNodeContextMenu, onDoubleClick: props.onNodeDoubleClick, noDragClassName: props.noDragClassName, noPanClassName: props.noPanClassName, rfId: props.rfId, disableKeyboardA11y: props.disableKeyboardA11y, resizeObserver: resizeObserver, nodesDraggable: nodesDraggable, nodesConnectable: nodesConnectable, nodesFocusable: nodesFocusable, elementsSelectable: elementsSelectable, onError: onError }, nodeId));
1798
+ jsx(NodeWrapper, { id: nodeId, nodeTypes: props.nodeTypes, nodeExtent: props.nodeExtent, nodeOrigin: props.nodeOrigin, onClick: props.onNodeClick, onMouseEnter: props.onNodeMouseEnter, onMouseMove: props.onNodeMouseMove, onMouseLeave: props.onNodeMouseLeave, onContextMenu: props.onNodeContextMenu, onDoubleClick: props.onNodeDoubleClick, noDragClassName: props.noDragClassName, noPanClassName: props.noPanClassName, rfId: props.rfId, disableKeyboardA11y: props.disableKeyboardA11y, resizeObserver: resizeObserver, nodesDraggable: nodesDraggable, nodesConnectable: nodesConnectable, nodesFocusable: nodesFocusable, elementsSelectable: elementsSelectable, onError: onError }, nodeId));
1770
1799
  }) }));
1771
1800
  };
1772
- NodeRenderer.displayName = 'NodeRenderer';
1773
- var NodeRenderer$1 = memo(NodeRenderer);
1801
+ NodeRendererComponent.displayName = 'NodeRenderer';
1802
+ const NodeRenderer = memo(NodeRendererComponent);
1774
1803
 
1775
1804
  /**
1776
1805
  * Hook for getting the visible edge ids from the store.
@@ -1864,7 +1893,7 @@ const MarkerDefinitions = ({ defaultColor, rfId }) => {
1864
1893
  MarkerDefinitions.displayName = 'MarkerDefinitions';
1865
1894
  var MarkerDefinitions$1 = memo(MarkerDefinitions);
1866
1895
 
1867
- const EdgeText = ({ x, y, label, labelStyle = {}, labelShowBg = true, labelBgStyle = {}, labelBgPadding = [2, 4], labelBgBorderRadius = 2, children, className, ...rest }) => {
1896
+ function EdgeTextComponent({ x, y, label, labelStyle = {}, labelShowBg = true, labelBgStyle = {}, labelBgPadding = [2, 4], labelBgBorderRadius = 2, children, className, ...rest }) {
1868
1897
  const [edgeTextBbox, setEdgeTextBbox] = useState({ x: 1, y: 0, width: 0, height: 0 });
1869
1898
  const edgeTextClasses = cc(['react-flow__edge-textwrapper', className]);
1870
1899
  const onEdgeTextRefChange = useCallback((edgeRef) => {
@@ -1882,13 +1911,13 @@ const EdgeText = ({ x, y, label, labelStyle = {}, labelShowBg = true, labelBgSty
1882
1911
  return null;
1883
1912
  }
1884
1913
  return (jsxs("g", { transform: `translate(${x - edgeTextBbox.width / 2} ${y - edgeTextBbox.height / 2})`, className: edgeTextClasses, visibility: edgeTextBbox.width ? 'visible' : 'hidden', ...rest, children: [labelShowBg && (jsx("rect", { width: edgeTextBbox.width + 2 * labelBgPadding[0], x: -labelBgPadding[0], y: -labelBgPadding[1], height: edgeTextBbox.height + 2 * labelBgPadding[1], className: "react-flow__edge-textbg", style: labelBgStyle, rx: labelBgBorderRadius, ry: labelBgBorderRadius })), jsx("text", { className: "react-flow__edge-text", y: edgeTextBbox.height / 2, dy: "0.3em", ref: onEdgeTextRefChange, style: labelStyle, children: label }), children] }));
1885
- };
1886
- var EdgeText$1 = memo(EdgeText);
1914
+ }
1915
+ EdgeTextComponent.displayName = 'EdgeText';
1916
+ const EdgeText = memo(EdgeTextComponent);
1887
1917
 
1888
- const BaseEdge = ({ id, path, labelX, labelY, label, labelStyle, labelShowBg, labelBgStyle, labelBgPadding, labelBgBorderRadius, style, markerEnd, markerStart, className, interactionWidth = 20, }) => {
1889
- return (jsxs(Fragment, { children: [jsx("path", { id: id, style: style, d: path, fill: "none", className: cc(['react-flow__edge-path', className]), markerEnd: markerEnd, markerStart: markerStart }), interactionWidth && (jsx("path", { d: path, fill: "none", strokeOpacity: 0, strokeWidth: interactionWidth, className: "react-flow__edge-interaction" })), label && isNumeric(labelX) && isNumeric(labelY) ? (jsx(EdgeText$1, { x: labelX, y: labelY, label: label, labelStyle: labelStyle, labelShowBg: labelShowBg, labelBgStyle: labelBgStyle, labelBgPadding: labelBgPadding, labelBgBorderRadius: labelBgBorderRadius })) : null] }));
1890
- };
1891
- BaseEdge.displayName = 'BaseEdge';
1918
+ function BaseEdge({ id, path, labelX, labelY, label, labelStyle, labelShowBg, labelBgStyle, labelBgPadding, labelBgBorderRadius, style, markerEnd, markerStart, className, interactionWidth = 20, }) {
1919
+ return (jsxs(Fragment, { children: [jsx("path", { id: id, style: style, d: path, fill: "none", className: cc(['react-flow__edge-path', className]), markerEnd: markerEnd, markerStart: markerStart }), interactionWidth && (jsx("path", { d: path, fill: "none", strokeOpacity: 0, strokeWidth: interactionWidth, className: "react-flow__edge-interaction" })), label && isNumeric(labelX) && isNumeric(labelY) ? (jsx(EdgeText, { x: labelX, y: labelY, label: label, labelStyle: labelStyle, labelShowBg: labelShowBg, labelBgStyle: labelBgStyle, labelBgPadding: labelBgPadding, labelBgBorderRadius: labelBgBorderRadius })) : null] }));
1920
+ }
1892
1921
 
1893
1922
  function getControl({ pos, x1, y1, x2, y2 }) {
1894
1923
  if (pos === Position.Left || pos === Position.Right) {
@@ -2048,7 +2077,9 @@ const shiftY = (y, shift, position) => {
2048
2077
  return y;
2049
2078
  };
2050
2079
  const EdgeUpdaterClassName = 'react-flow__edgeupdater';
2051
- const EdgeAnchor = ({ position, centerX, centerY, radius = 10, onMouseDown, onMouseEnter, onMouseOut, type, }) => (jsx("circle", { onMouseDown: onMouseDown, onMouseEnter: onMouseEnter, onMouseOut: onMouseOut, className: cc([EdgeUpdaterClassName, `${EdgeUpdaterClassName}-${type}`]), cx: shiftX(centerX, radius, position), cy: shiftY(centerY, radius, position), r: radius, stroke: "transparent", fill: "transparent" }));
2080
+ function EdgeAnchor({ position, centerX, centerY, radius = 10, onMouseDown, onMouseEnter, onMouseOut, type, }) {
2081
+ return (jsx("circle", { onMouseDown: onMouseDown, onMouseEnter: onMouseEnter, onMouseOut: onMouseOut, className: cc([EdgeUpdaterClassName, `${EdgeUpdaterClassName}-${type}`]), cx: shiftX(centerX, radius, position), cy: shiftY(centerY, radius, position), r: radius, stroke: "transparent", fill: "transparent" }));
2082
+ }
2052
2083
 
2053
2084
  function EdgeUpdateAnchors({ isUpdatable, edgeUpdaterRadius, edge, targetHandleId, sourceHandleId, sourceX, sourceY, targetX, targetY, sourcePosition, targetPosition, onEdgeUpdate, onEdgeUpdateStart, onEdgeUpdateEnd, setUpdating, setUpdateHover, }) {
2054
2085
  const store = useStoreApi();
@@ -2219,8 +2250,6 @@ function EdgeWrapper({ id, edgesFocusable, edgesUpdatable, elementsSelectable, o
2219
2250
  },
2220
2251
  ]), onClick: onEdgeClick, onDoubleClick: onEdgeDoubleClick, onContextMenu: onEdgeContextMenu, onMouseEnter: onEdgeMouseEnter, onMouseMove: onEdgeMouseMove, onMouseLeave: onEdgeMouseLeave, onKeyDown: isFocusable ? onKeyDown : undefined, tabIndex: isFocusable ? 0 : undefined, role: isFocusable ? 'button' : 'img', "data-id": id, "data-testid": `rf__edge-${id}`, "aria-label": edge.ariaLabel === null ? undefined : edge.ariaLabel || `Edge from ${edge.source} to ${edge.target}`, "aria-describedby": isFocusable ? `${ARIA_EDGE_DESC_KEY}-${rfId}` : undefined, ref: edgeRef, children: [!updating && (jsx(EdgeComponent, { id: id, source: edge.source, target: edge.target, selected: edge.selected, animated: edge.animated, label: edge.label, labelStyle: edge.labelStyle, labelShowBg: edge.labelShowBg, labelBgStyle: edge.labelBgStyle, labelBgPadding: edge.labelBgPadding, labelBgBorderRadius: edge.labelBgBorderRadius, sourceX: sourceX, sourceY: sourceY, targetX: targetX, targetY: targetY, sourcePosition: sourcePosition, targetPosition: targetPosition, data: edge.data, style: edge.style, sourceHandleId: edge.sourceHandle, targetHandleId: edge.targetHandle, markerStart: markerStartUrl, markerEnd: markerEndUrl, pathOptions: 'pathOptions' in edge ? edge.pathOptions : undefined, interactionWidth: edge.interactionWidth })), isUpdatable && (jsx(EdgeUpdateAnchors, { edge: edge, isUpdatable: isUpdatable, edgeUpdaterRadius: edgeUpdaterRadius, onEdgeUpdate: onEdgeUpdate, onEdgeUpdateStart: onEdgeUpdateStart, onEdgeUpdateEnd: onEdgeUpdateEnd, sourceX: sourceX, sourceY: sourceY, targetX: targetX, targetY: targetY, sourcePosition: sourcePosition, targetPosition: targetPosition, setUpdateHover: setUpdateHover, setUpdating: setUpdating, sourceHandleId: edge.sourceHandle, targetHandleId: edge.targetHandle }))] }) }));
2221
2252
  }
2222
- EdgeWrapper.displayName = 'EdgeWrapper';
2223
- var EdgeWrapper$1 = memo(EdgeWrapper);
2224
2253
 
2225
2254
  const selector$c = (s) => ({
2226
2255
  width: s.width,
@@ -2231,15 +2260,15 @@ const selector$c = (s) => ({
2231
2260
  connectionMode: s.connectionMode,
2232
2261
  onError: s.onError,
2233
2262
  });
2234
- const EdgeRenderer = ({ defaultMarkerColor, onlyRenderVisibleElements, rfId, edgeTypes, noPanClassName, onEdgeUpdate, onEdgeContextMenu, onEdgeMouseEnter, onEdgeMouseMove, onEdgeMouseLeave, onEdgeClick, edgeUpdaterRadius, onEdgeDoubleClick, onEdgeUpdateStart, onEdgeUpdateEnd, children, }) => {
2263
+ function EdgeRendererComponent({ defaultMarkerColor, onlyRenderVisibleElements, rfId, edgeTypes, noPanClassName, onEdgeUpdate, onEdgeContextMenu, onEdgeMouseEnter, onEdgeMouseMove, onEdgeMouseLeave, onEdgeClick, edgeUpdaterRadius, onEdgeDoubleClick, onEdgeUpdateStart, onEdgeUpdateEnd, }) {
2235
2264
  const { edgesFocusable, edgesUpdatable, elementsSelectable, onError } = useStore(selector$c, shallow);
2236
2265
  const edgeIds = useVisibleEdgeIds(onlyRenderVisibleElements);
2237
2266
  return (jsxs("div", { className: "react-flow__edges", children: [jsx(MarkerDefinitions$1, { defaultColor: defaultMarkerColor, rfId: rfId }), edgeIds.map((id) => {
2238
- return (jsx(EdgeWrapper$1, { id: id, edgesFocusable: edgesFocusable, edgesUpdatable: edgesUpdatable, elementsSelectable: elementsSelectable, noPanClassName: noPanClassName, onEdgeUpdate: onEdgeUpdate, onContextMenu: onEdgeContextMenu, onMouseEnter: onEdgeMouseEnter, onMouseMove: onEdgeMouseMove, onMouseLeave: onEdgeMouseLeave, onClick: onEdgeClick, edgeUpdaterRadius: edgeUpdaterRadius, onDoubleClick: onEdgeDoubleClick, onEdgeUpdateStart: onEdgeUpdateStart, onEdgeUpdateEnd: onEdgeUpdateEnd, rfId: rfId, onError: onError, edgeTypes: edgeTypes }, id));
2239
- }), children] }));
2240
- };
2241
- EdgeRenderer.displayName = 'EdgeRenderer';
2242
- var EdgeRenderer$1 = memo(EdgeRenderer);
2267
+ return (jsx(EdgeWrapper, { id: id, edgesFocusable: edgesFocusable, edgesUpdatable: edgesUpdatable, elementsSelectable: elementsSelectable, noPanClassName: noPanClassName, onEdgeUpdate: onEdgeUpdate, onContextMenu: onEdgeContextMenu, onMouseEnter: onEdgeMouseEnter, onMouseMove: onEdgeMouseMove, onMouseLeave: onEdgeMouseLeave, onClick: onEdgeClick, edgeUpdaterRadius: edgeUpdaterRadius, onDoubleClick: onEdgeDoubleClick, onEdgeUpdateStart: onEdgeUpdateStart, onEdgeUpdateEnd: onEdgeUpdateEnd, rfId: rfId, onError: onError, edgeTypes: edgeTypes }, id));
2268
+ })] }));
2269
+ }
2270
+ EdgeRendererComponent.displayName = 'EdgeRenderer';
2271
+ const EdgeRenderer = memo(EdgeRendererComponent);
2243
2272
 
2244
2273
  const selector$b = (s) => `translate(${s.transform[0]}px,${s.transform[1]}px) scale(${s.transform[2]})`;
2245
2274
  function Viewport({ children }) {
@@ -2380,15 +2409,15 @@ function useNodeOrEdgeTypesWarning(nodeOrEdgeTypes = emptyTypes) {
2380
2409
  }, [nodeOrEdgeTypes]);
2381
2410
  }
2382
2411
 
2383
- const GraphView = ({ nodeTypes, edgeTypes, onInit, onNodeClick, onEdgeClick, onNodeDoubleClick, onEdgeDoubleClick, onNodeMouseEnter, onNodeMouseMove, onNodeMouseLeave, onNodeContextMenu, onSelectionContextMenu, onSelectionStart, onSelectionEnd, connectionLineType, connectionLineStyle, connectionLineComponent, connectionLineContainerStyle, selectionKeyCode, selectionOnDrag, selectionMode, multiSelectionKeyCode, panActivationKeyCode, zoomActivationKeyCode, deleteKeyCode, onlyRenderVisibleElements, elementsSelectable, defaultViewport, translateExtent, minZoom, maxZoom, preventScrolling, defaultMarkerColor, zoomOnScroll, zoomOnPinch, panOnScroll, panOnScrollSpeed, panOnScrollMode, zoomOnDoubleClick, panOnDrag, onPaneClick, onPaneMouseEnter, onPaneMouseMove, onPaneMouseLeave, onPaneScroll, onPaneContextMenu, onEdgeUpdate, onEdgeContextMenu, onEdgeMouseEnter, onEdgeMouseMove, onEdgeMouseLeave, edgeUpdaterRadius, onEdgeUpdateStart, onEdgeUpdateEnd, noDragClassName, noWheelClassName, noPanClassName, disableKeyboardA11y, nodeOrigin, nodeExtent, rfId, viewport, onViewportChange, }) => {
2412
+ function GraphViewComponent({ nodeTypes, edgeTypes, onInit, onNodeClick, onEdgeClick, onNodeDoubleClick, onEdgeDoubleClick, onNodeMouseEnter, onNodeMouseMove, onNodeMouseLeave, onNodeContextMenu, onSelectionContextMenu, onSelectionStart, onSelectionEnd, connectionLineType, connectionLineStyle, connectionLineComponent, connectionLineContainerStyle, selectionKeyCode, selectionOnDrag, selectionMode, multiSelectionKeyCode, panActivationKeyCode, zoomActivationKeyCode, deleteKeyCode, onlyRenderVisibleElements, elementsSelectable, defaultViewport, translateExtent, minZoom, maxZoom, preventScrolling, defaultMarkerColor, zoomOnScroll, zoomOnPinch, panOnScroll, panOnScrollSpeed, panOnScrollMode, zoomOnDoubleClick, panOnDrag, onPaneClick, onPaneMouseEnter, onPaneMouseMove, onPaneMouseLeave, onPaneScroll, onPaneContextMenu, onEdgeUpdate, onEdgeContextMenu, onEdgeMouseEnter, onEdgeMouseMove, onEdgeMouseLeave, edgeUpdaterRadius, onEdgeUpdateStart, onEdgeUpdateEnd, noDragClassName, noWheelClassName, noPanClassName, disableKeyboardA11y, nodeOrigin, nodeExtent, rfId, viewport, onViewportChange, }) {
2384
2413
  useNodeOrEdgeTypesWarning(nodeTypes);
2385
2414
  useNodeOrEdgeTypesWarning(edgeTypes);
2386
2415
  useOnInitHandler(onInit);
2387
2416
  useViewportSync(viewport);
2388
- return (jsx(FlowRenderer$1, { onPaneClick: onPaneClick, onPaneMouseEnter: onPaneMouseEnter, onPaneMouseMove: onPaneMouseMove, onPaneMouseLeave: onPaneMouseLeave, onPaneContextMenu: onPaneContextMenu, onPaneScroll: onPaneScroll, deleteKeyCode: deleteKeyCode, selectionKeyCode: selectionKeyCode, selectionOnDrag: selectionOnDrag, selectionMode: selectionMode, onSelectionStart: onSelectionStart, onSelectionEnd: onSelectionEnd, multiSelectionKeyCode: multiSelectionKeyCode, panActivationKeyCode: panActivationKeyCode, zoomActivationKeyCode: zoomActivationKeyCode, elementsSelectable: elementsSelectable, zoomOnScroll: zoomOnScroll, zoomOnPinch: zoomOnPinch, zoomOnDoubleClick: zoomOnDoubleClick, panOnScroll: panOnScroll, panOnScrollSpeed: panOnScrollSpeed, panOnScrollMode: panOnScrollMode, panOnDrag: panOnDrag, defaultViewport: defaultViewport, translateExtent: translateExtent, minZoom: minZoom, maxZoom: maxZoom, onSelectionContextMenu: onSelectionContextMenu, preventScrolling: preventScrolling, noDragClassName: noDragClassName, noWheelClassName: noWheelClassName, noPanClassName: noPanClassName, disableKeyboardA11y: disableKeyboardA11y, onViewportChange: onViewportChange, isControlledViewport: !!viewport, children: jsxs(Viewport, { children: [jsx(EdgeRenderer$1, { edgeTypes: edgeTypes, onEdgeClick: onEdgeClick, onEdgeDoubleClick: onEdgeDoubleClick, onEdgeUpdate: onEdgeUpdate, onlyRenderVisibleElements: onlyRenderVisibleElements, onEdgeContextMenu: onEdgeContextMenu, onEdgeMouseEnter: onEdgeMouseEnter, onEdgeMouseMove: onEdgeMouseMove, onEdgeMouseLeave: onEdgeMouseLeave, onEdgeUpdateStart: onEdgeUpdateStart, onEdgeUpdateEnd: onEdgeUpdateEnd, edgeUpdaterRadius: edgeUpdaterRadius, defaultMarkerColor: defaultMarkerColor, noPanClassName: noPanClassName, disableKeyboardA11y: disableKeyboardA11y, rfId: rfId }), jsx(ConnectionLineWrapper, { style: connectionLineStyle, type: connectionLineType, component: connectionLineComponent, containerStyle: connectionLineContainerStyle }), jsx("div", { className: "react-flow__edgelabel-renderer" }), jsx("div", { className: "react-flow__viewport-portal" }), jsx(NodeRenderer$1, { nodeTypes: nodeTypes, onNodeClick: onNodeClick, onNodeDoubleClick: onNodeDoubleClick, onNodeMouseEnter: onNodeMouseEnter, onNodeMouseMove: onNodeMouseMove, onNodeMouseLeave: onNodeMouseLeave, onNodeContextMenu: onNodeContextMenu, onlyRenderVisibleElements: onlyRenderVisibleElements, noPanClassName: noPanClassName, noDragClassName: noDragClassName, disableKeyboardA11y: disableKeyboardA11y, nodeOrigin: nodeOrigin, nodeExtent: nodeExtent, rfId: rfId })] }) }));
2389
- };
2390
- GraphView.displayName = 'GraphView';
2391
- var GraphView$1 = memo(GraphView);
2417
+ return (jsx(FlowRenderer, { onPaneClick: onPaneClick, onPaneMouseEnter: onPaneMouseEnter, onPaneMouseMove: onPaneMouseMove, onPaneMouseLeave: onPaneMouseLeave, onPaneContextMenu: onPaneContextMenu, onPaneScroll: onPaneScroll, deleteKeyCode: deleteKeyCode, selectionKeyCode: selectionKeyCode, selectionOnDrag: selectionOnDrag, selectionMode: selectionMode, onSelectionStart: onSelectionStart, onSelectionEnd: onSelectionEnd, multiSelectionKeyCode: multiSelectionKeyCode, panActivationKeyCode: panActivationKeyCode, zoomActivationKeyCode: zoomActivationKeyCode, elementsSelectable: elementsSelectable, zoomOnScroll: zoomOnScroll, zoomOnPinch: zoomOnPinch, zoomOnDoubleClick: zoomOnDoubleClick, panOnScroll: panOnScroll, panOnScrollSpeed: panOnScrollSpeed, panOnScrollMode: panOnScrollMode, panOnDrag: panOnDrag, defaultViewport: defaultViewport, translateExtent: translateExtent, minZoom: minZoom, maxZoom: maxZoom, onSelectionContextMenu: onSelectionContextMenu, preventScrolling: preventScrolling, noDragClassName: noDragClassName, noWheelClassName: noWheelClassName, noPanClassName: noPanClassName, disableKeyboardA11y: disableKeyboardA11y, onViewportChange: onViewportChange, isControlledViewport: !!viewport, children: jsxs(Viewport, { children: [jsx(EdgeRenderer, { edgeTypes: edgeTypes, onEdgeClick: onEdgeClick, onEdgeDoubleClick: onEdgeDoubleClick, onEdgeUpdate: onEdgeUpdate, onlyRenderVisibleElements: onlyRenderVisibleElements, onEdgeContextMenu: onEdgeContextMenu, onEdgeMouseEnter: onEdgeMouseEnter, onEdgeMouseMove: onEdgeMouseMove, onEdgeMouseLeave: onEdgeMouseLeave, onEdgeUpdateStart: onEdgeUpdateStart, onEdgeUpdateEnd: onEdgeUpdateEnd, edgeUpdaterRadius: edgeUpdaterRadius, defaultMarkerColor: defaultMarkerColor, noPanClassName: noPanClassName, disableKeyboardA11y: disableKeyboardA11y, rfId: rfId }), jsx(ConnectionLineWrapper, { style: connectionLineStyle, type: connectionLineType, component: connectionLineComponent, containerStyle: connectionLineContainerStyle }), jsx("div", { className: "react-flow__edgelabel-renderer" }), jsx("div", { className: "react-flow__viewport-portal" }), jsx(NodeRenderer, { nodeTypes: nodeTypes, onNodeClick: onNodeClick, onNodeDoubleClick: onNodeDoubleClick, onNodeMouseEnter: onNodeMouseEnter, onNodeMouseMove: onNodeMouseMove, onNodeMouseLeave: onNodeMouseLeave, onNodeContextMenu: onNodeContextMenu, onlyRenderVisibleElements: onlyRenderVisibleElements, noPanClassName: noPanClassName, noDragClassName: noDragClassName, disableKeyboardA11y: disableKeyboardA11y, nodeOrigin: nodeOrigin, nodeExtent: nodeExtent, rfId: rfId })] }) }));
2418
+ }
2419
+ GraphViewComponent.displayName = 'GraphView';
2420
+ const GraphView = memo(GraphViewComponent);
2392
2421
 
2393
2422
  function handleControlledSelectionChange(changes, items) {
2394
2423
  return items.map((item) => {
@@ -2750,7 +2779,6 @@ function ReactFlowProvider({ children, initialNodes, initialEdges, initialWidth,
2750
2779
  }
2751
2780
  return jsx(Provider$1, { value: storeRef.current, children: children });
2752
2781
  }
2753
- ReactFlowProvider.displayName = 'ReactFlowProvider';
2754
2782
 
2755
2783
  function Wrapper({ children, nodes, edges, width, height, fitView, }) {
2756
2784
  const isWrapped = useContext(StoreContext);
@@ -2761,37 +2789,6 @@ function Wrapper({ children, nodes, edges, width, height, fitView, }) {
2761
2789
  }
2762
2790
  return (jsx(ReactFlowProvider, { initialNodes: nodes, initialEdges: edges, initialWidth: width, initialHeight: height, fitView: fitView, children: children }));
2763
2791
  }
2764
- Wrapper.displayName = 'ReactFlowWrapper';
2765
-
2766
- function getMediaQuery() {
2767
- if (typeof window === 'undefined' || !window.matchMedia) {
2768
- return null;
2769
- }
2770
- return window.matchMedia('(prefers-color-scheme: dark)');
2771
- }
2772
- /**
2773
- * Hook for receiving the current color mode class 'dark' or 'light'.
2774
- *
2775
- * @internal
2776
- * @param colorMode - The color mode to use ('dark', 'light' or 'system')
2777
- */
2778
- function useColorModeClass(colorMode) {
2779
- const [colorModeClass, setColorModeClass] = useState(colorMode === 'system' ? null : colorMode);
2780
- useEffect(() => {
2781
- if (colorMode !== 'system') {
2782
- setColorModeClass(colorMode);
2783
- return;
2784
- }
2785
- const mediaQuery = getMediaQuery();
2786
- const updateColorModeClass = () => setColorModeClass(mediaQuery?.matches ? 'dark' : 'light');
2787
- updateColorModeClass();
2788
- mediaQuery?.addEventListener('change', updateColorModeClass);
2789
- return () => {
2790
- mediaQuery?.removeEventListener('change', updateColorModeClass);
2791
- };
2792
- }, [colorMode]);
2793
- return colorModeClass !== null ? colorModeClass : getMediaQuery()?.matches ? 'dark' : 'light';
2794
- }
2795
2792
 
2796
2793
  const initNodeOrigin = [0, 0];
2797
2794
  const initDefaultViewport = { x: 0, y: 0, zoom: 1 };
@@ -2805,7 +2802,7 @@ const wrapperStyle = {
2805
2802
  const ReactFlow = forwardRef(({ nodes, edges, defaultNodes, defaultEdges, className, nodeTypes, edgeTypes, onNodeClick, onEdgeClick, onInit, onMove, onMoveStart, onMoveEnd, onConnect, onConnectStart, onConnectEnd, onClickConnectStart, onClickConnectEnd, onNodeMouseEnter, onNodeMouseMove, onNodeMouseLeave, onNodeContextMenu, onNodeDoubleClick, onNodeDragStart, onNodeDrag, onNodeDragStop, onNodesDelete, onEdgesDelete, onDelete, onSelectionChange, onSelectionDragStart, onSelectionDrag, onSelectionDragStop, onSelectionContextMenu, onSelectionStart, onSelectionEnd, onBeforeDelete, connectionMode, connectionLineType = ConnectionLineType.Bezier, connectionLineStyle, connectionLineComponent, connectionLineContainerStyle, deleteKeyCode = 'Backspace', selectionKeyCode = 'Shift', selectionOnDrag = false, selectionMode = SelectionMode.Full, panActivationKeyCode = 'Space', multiSelectionKeyCode = isMacOs() ? 'Meta' : 'Control', zoomActivationKeyCode = isMacOs() ? 'Meta' : 'Control', snapToGrid, snapGrid, onlyRenderVisibleElements = false, selectNodesOnDrag, nodesDraggable, nodesConnectable, nodesFocusable, nodeOrigin = initNodeOrigin, edgesFocusable, edgesUpdatable, elementsSelectable = true, defaultViewport = initDefaultViewport, minZoom = 0.5, maxZoom = 2, translateExtent = infiniteExtent, preventScrolling = true, nodeExtent, defaultMarkerColor = '#b1b1b7', zoomOnScroll = true, zoomOnPinch = true, panOnScroll = false, panOnScrollSpeed = 0.5, panOnScrollMode = PanOnScrollMode.Free, zoomOnDoubleClick = true, panOnDrag = true, onPaneClick, onPaneMouseEnter, onPaneMouseMove, onPaneMouseLeave, onPaneScroll, onPaneContextMenu, children, onEdgeUpdate, onEdgeContextMenu, onEdgeDoubleClick, onEdgeMouseEnter, onEdgeMouseMove, onEdgeMouseLeave, onEdgeUpdateStart, onEdgeUpdateEnd, edgeUpdaterRadius = 10, onNodesChange, onEdgesChange, noDragClassName = 'nodrag', noWheelClassName = 'nowheel', noPanClassName = 'nopan', fitView, fitViewOptions, connectOnClick, attributionPosition, proOptions, defaultEdgeOptions, elevateNodesOnSelect, elevateEdgesOnSelect, disableKeyboardA11y = false, autoPanOnConnect, autoPanOnNodeDrag, connectionRadius, isValidConnection, onError, style, id, nodeDragThreshold, viewport, onViewportChange, width, height, colorMode = 'light', ...rest }, ref) => {
2806
2803
  const rfId = id || '1';
2807
2804
  const colorModeClassName = useColorModeClass(colorMode);
2808
- return (jsx("div", { ...rest, style: { ...style, ...wrapperStyle }, ref: ref, className: cc(['react-flow', className, colorModeClassName]), "data-testid": "rf__wrapper", id: id, children: jsxs(Wrapper, { nodes: nodes, edges: edges, width: width, height: height, fitView: fitView, children: [jsx(GraphView$1, { onInit: onInit, onNodeClick: onNodeClick, onEdgeClick: onEdgeClick, onNodeMouseEnter: onNodeMouseEnter, onNodeMouseMove: onNodeMouseMove, onNodeMouseLeave: onNodeMouseLeave, onNodeContextMenu: onNodeContextMenu, onNodeDoubleClick: onNodeDoubleClick, nodeTypes: nodeTypes, edgeTypes: edgeTypes, connectionLineType: connectionLineType, connectionLineStyle: connectionLineStyle, connectionLineComponent: connectionLineComponent, connectionLineContainerStyle: connectionLineContainerStyle, selectionKeyCode: selectionKeyCode, selectionOnDrag: selectionOnDrag, selectionMode: selectionMode, deleteKeyCode: deleteKeyCode, multiSelectionKeyCode: multiSelectionKeyCode, panActivationKeyCode: panActivationKeyCode, zoomActivationKeyCode: zoomActivationKeyCode, onlyRenderVisibleElements: onlyRenderVisibleElements, defaultViewport: defaultViewport, translateExtent: translateExtent, minZoom: minZoom, maxZoom: maxZoom, preventScrolling: preventScrolling, zoomOnScroll: zoomOnScroll, zoomOnPinch: zoomOnPinch, zoomOnDoubleClick: zoomOnDoubleClick, panOnScroll: panOnScroll, panOnScrollSpeed: panOnScrollSpeed, panOnScrollMode: panOnScrollMode, panOnDrag: panOnDrag, onPaneClick: onPaneClick, onPaneMouseEnter: onPaneMouseEnter, onPaneMouseMove: onPaneMouseMove, onPaneMouseLeave: onPaneMouseLeave, onPaneScroll: onPaneScroll, onPaneContextMenu: onPaneContextMenu, onSelectionContextMenu: onSelectionContextMenu, onSelectionStart: onSelectionStart, onSelectionEnd: onSelectionEnd, onEdgeUpdate: onEdgeUpdate, onEdgeContextMenu: onEdgeContextMenu, onEdgeDoubleClick: onEdgeDoubleClick, onEdgeMouseEnter: onEdgeMouseEnter, onEdgeMouseMove: onEdgeMouseMove, onEdgeMouseLeave: onEdgeMouseLeave, onEdgeUpdateStart: onEdgeUpdateStart, onEdgeUpdateEnd: onEdgeUpdateEnd, edgeUpdaterRadius: edgeUpdaterRadius, defaultMarkerColor: defaultMarkerColor, noDragClassName: noDragClassName, noWheelClassName: noWheelClassName, noPanClassName: noPanClassName, rfId: rfId, disableKeyboardA11y: disableKeyboardA11y, nodeOrigin: nodeOrigin, nodeExtent: nodeExtent, viewport: viewport, onViewportChange: onViewportChange }), jsx(StoreUpdater, { nodes: nodes, edges: edges, defaultNodes: defaultNodes, defaultEdges: defaultEdges, onConnect: onConnect, onConnectStart: onConnectStart, onConnectEnd: onConnectEnd, onClickConnectStart: onClickConnectStart, onClickConnectEnd: onClickConnectEnd, nodesDraggable: nodesDraggable, nodesConnectable: nodesConnectable, nodesFocusable: nodesFocusable, edgesFocusable: edgesFocusable, edgesUpdatable: edgesUpdatable, elementsSelectable: elementsSelectable, elevateNodesOnSelect: elevateNodesOnSelect, elevateEdgesOnSelect: elevateEdgesOnSelect, minZoom: minZoom, maxZoom: maxZoom, nodeExtent: nodeExtent, onNodesChange: onNodesChange, onEdgesChange: onEdgesChange, snapToGrid: snapToGrid, snapGrid: snapGrid, connectionMode: connectionMode, translateExtent: translateExtent, connectOnClick: connectOnClick, defaultEdgeOptions: defaultEdgeOptions, fitView: fitView, fitViewOptions: fitViewOptions, onNodesDelete: onNodesDelete, onEdgesDelete: onEdgesDelete, onDelete: onDelete, onNodeDragStart: onNodeDragStart, onNodeDrag: onNodeDrag, onNodeDragStop: onNodeDragStop, onSelectionDrag: onSelectionDrag, onSelectionDragStart: onSelectionDragStart, onSelectionDragStop: onSelectionDragStop, onMove: onMove, onMoveStart: onMoveStart, onMoveEnd: onMoveEnd, noPanClassName: noPanClassName, nodeOrigin: nodeOrigin, rfId: rfId, autoPanOnConnect: autoPanOnConnect, autoPanOnNodeDrag: autoPanOnNodeDrag, onError: onError, connectionRadius: connectionRadius, isValidConnection: isValidConnection, selectNodesOnDrag: selectNodesOnDrag, nodeDragThreshold: nodeDragThreshold, onBeforeDelete: onBeforeDelete }), jsx(Wrapper$1, { onSelectionChange: onSelectionChange }), children, jsx(Attribution, { proOptions: proOptions, position: attributionPosition }), jsx(A11yDescriptions, { rfId: rfId, disableKeyboardA11y: disableKeyboardA11y })] }) }));
2805
+ return (jsx("div", { ...rest, style: { ...style, ...wrapperStyle }, ref: ref, className: cc(['react-flow', className, colorModeClassName]), "data-testid": "rf__wrapper", id: id, children: jsxs(Wrapper, { nodes: nodes, edges: edges, width: width, height: height, fitView: fitView, children: [jsx(GraphView, { onInit: onInit, onNodeClick: onNodeClick, onEdgeClick: onEdgeClick, onNodeMouseEnter: onNodeMouseEnter, onNodeMouseMove: onNodeMouseMove, onNodeMouseLeave: onNodeMouseLeave, onNodeContextMenu: onNodeContextMenu, onNodeDoubleClick: onNodeDoubleClick, nodeTypes: nodeTypes, edgeTypes: edgeTypes, connectionLineType: connectionLineType, connectionLineStyle: connectionLineStyle, connectionLineComponent: connectionLineComponent, connectionLineContainerStyle: connectionLineContainerStyle, selectionKeyCode: selectionKeyCode, selectionOnDrag: selectionOnDrag, selectionMode: selectionMode, deleteKeyCode: deleteKeyCode, multiSelectionKeyCode: multiSelectionKeyCode, panActivationKeyCode: panActivationKeyCode, zoomActivationKeyCode: zoomActivationKeyCode, onlyRenderVisibleElements: onlyRenderVisibleElements, defaultViewport: defaultViewport, translateExtent: translateExtent, minZoom: minZoom, maxZoom: maxZoom, preventScrolling: preventScrolling, zoomOnScroll: zoomOnScroll, zoomOnPinch: zoomOnPinch, zoomOnDoubleClick: zoomOnDoubleClick, panOnScroll: panOnScroll, panOnScrollSpeed: panOnScrollSpeed, panOnScrollMode: panOnScrollMode, panOnDrag: panOnDrag, onPaneClick: onPaneClick, onPaneMouseEnter: onPaneMouseEnter, onPaneMouseMove: onPaneMouseMove, onPaneMouseLeave: onPaneMouseLeave, onPaneScroll: onPaneScroll, onPaneContextMenu: onPaneContextMenu, onSelectionContextMenu: onSelectionContextMenu, onSelectionStart: onSelectionStart, onSelectionEnd: onSelectionEnd, onEdgeUpdate: onEdgeUpdate, onEdgeContextMenu: onEdgeContextMenu, onEdgeDoubleClick: onEdgeDoubleClick, onEdgeMouseEnter: onEdgeMouseEnter, onEdgeMouseMove: onEdgeMouseMove, onEdgeMouseLeave: onEdgeMouseLeave, onEdgeUpdateStart: onEdgeUpdateStart, onEdgeUpdateEnd: onEdgeUpdateEnd, edgeUpdaterRadius: edgeUpdaterRadius, defaultMarkerColor: defaultMarkerColor, noDragClassName: noDragClassName, noWheelClassName: noWheelClassName, noPanClassName: noPanClassName, rfId: rfId, disableKeyboardA11y: disableKeyboardA11y, nodeOrigin: nodeOrigin, nodeExtent: nodeExtent, viewport: viewport, onViewportChange: onViewportChange }), jsx(StoreUpdater, { nodes: nodes, edges: edges, defaultNodes: defaultNodes, defaultEdges: defaultEdges, onConnect: onConnect, onConnectStart: onConnectStart, onConnectEnd: onConnectEnd, onClickConnectStart: onClickConnectStart, onClickConnectEnd: onClickConnectEnd, nodesDraggable: nodesDraggable, nodesConnectable: nodesConnectable, nodesFocusable: nodesFocusable, edgesFocusable: edgesFocusable, edgesUpdatable: edgesUpdatable, elementsSelectable: elementsSelectable, elevateNodesOnSelect: elevateNodesOnSelect, elevateEdgesOnSelect: elevateEdgesOnSelect, minZoom: minZoom, maxZoom: maxZoom, nodeExtent: nodeExtent, onNodesChange: onNodesChange, onEdgesChange: onEdgesChange, snapToGrid: snapToGrid, snapGrid: snapGrid, connectionMode: connectionMode, translateExtent: translateExtent, connectOnClick: connectOnClick, defaultEdgeOptions: defaultEdgeOptions, fitView: fitView, fitViewOptions: fitViewOptions, onNodesDelete: onNodesDelete, onEdgesDelete: onEdgesDelete, onDelete: onDelete, onNodeDragStart: onNodeDragStart, onNodeDrag: onNodeDrag, onNodeDragStop: onNodeDragStop, onSelectionDrag: onSelectionDrag, onSelectionDragStart: onSelectionDragStart, onSelectionDragStop: onSelectionDragStop, onMove: onMove, onMoveStart: onMoveStart, onMoveEnd: onMoveEnd, noPanClassName: noPanClassName, nodeOrigin: nodeOrigin, rfId: rfId, autoPanOnConnect: autoPanOnConnect, autoPanOnNodeDrag: autoPanOnNodeDrag, onError: onError, connectionRadius: connectionRadius, isValidConnection: isValidConnection, selectNodesOnDrag: selectNodesOnDrag, nodeDragThreshold: nodeDragThreshold, onBeforeDelete: onBeforeDelete }), jsx(SelectionListener, { onSelectionChange: onSelectionChange }), children, jsx(Attribution, { proOptions: proOptions, position: attributionPosition }), jsx(A11yDescriptions, { rfId: rfId, disableKeyboardA11y: disableKeyboardA11y })] }) }));
2809
2806
  });
2810
2807
  ReactFlow.displayName = 'ReactFlow';
2811
2808
 
@@ -3039,13 +3036,6 @@ function useConnection() {
3039
3036
  return ongoingConnection;
3040
3037
  }
3041
3038
 
3042
- var BackgroundVariant;
3043
- (function (BackgroundVariant) {
3044
- BackgroundVariant["Lines"] = "lines";
3045
- BackgroundVariant["Dots"] = "dots";
3046
- BackgroundVariant["Cross"] = "cross";
3047
- })(BackgroundVariant || (BackgroundVariant = {}));
3048
-
3049
3039
  function LinePattern({ dimensions, lineWidth, variant, className }) {
3050
3040
  return (jsx("path", { strokeWidth: lineWidth, d: `M${dimensions[0] / 2} 0 V${dimensions[1]} M0 ${dimensions[1] / 2} H${dimensions[0]}`, className: cc(['react-flow__background-pattern', variant, className]) }));
3051
3041
  }
@@ -3053,13 +3043,20 @@ function DotPattern({ radius, className }) {
3053
3043
  return (jsx("circle", { cx: radius, cy: radius, r: radius, className: cc(['react-flow__background-pattern', 'dots', className]) }));
3054
3044
  }
3055
3045
 
3046
+ var BackgroundVariant;
3047
+ (function (BackgroundVariant) {
3048
+ BackgroundVariant["Lines"] = "lines";
3049
+ BackgroundVariant["Dots"] = "dots";
3050
+ BackgroundVariant["Cross"] = "cross";
3051
+ })(BackgroundVariant || (BackgroundVariant = {}));
3052
+
3056
3053
  const defaultSize = {
3057
3054
  [BackgroundVariant.Dots]: 1,
3058
3055
  [BackgroundVariant.Lines]: 1,
3059
3056
  [BackgroundVariant.Cross]: 6,
3060
3057
  };
3061
3058
  const selector$4 = (s) => ({ transform: s.transform, patternId: `pattern-${s.rfId}` });
3062
- function Background({ id, variant = BackgroundVariant.Dots,
3059
+ function BackgroundComponent({ id, variant = BackgroundVariant.Dots,
3063
3060
  // only used for dots and cross
3064
3061
  gap = 20,
3065
3062
  // only used for lines and cross
@@ -3084,8 +3081,8 @@ size, lineWidth = 1, offset = 2, color, bgColor, style, className, patternClassN
3084
3081
  '--xy-background-pattern-color-props': color,
3085
3082
  }, ref: ref, "data-testid": "rf__background", children: [jsx("pattern", { id: _patternId, x: transform[0] % scaledGap[0], y: transform[1] % scaledGap[1], width: scaledGap[0], height: scaledGap[1], patternUnits: "userSpaceOnUse", patternTransform: `translate(-${patternOffset[0]},-${patternOffset[1]})`, children: isDots ? (jsx(DotPattern, { radius: scaledSize / offset, className: patternClassName })) : (jsx(LinePattern, { dimensions: patternDimensions, lineWidth: lineWidth, variant: variant, className: patternClassName })) }), jsx("rect", { x: "0", y: "0", width: "100%", height: "100%", fill: `url(#${_patternId})` })] }));
3086
3083
  }
3087
- Background.displayName = 'Background';
3088
- var Background$1 = memo(Background);
3084
+ BackgroundComponent.displayName = 'Background';
3085
+ const Background = memo(BackgroundComponent);
3089
3086
 
3090
3087
  function PlusIcon() {
3091
3088
  return (jsx("svg", { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 32 32", children: jsx("path", { d: "M32 18.133H18.133V32h-4.266V18.133H0v-4.266h13.867V0h4.266v13.867H32z" }) }));
@@ -3107,15 +3104,16 @@ function UnlockIcon() {
3107
3104
  return (jsx("svg", { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 25 32", children: jsx("path", { d: "M21.333 10.667H19.81V7.619C19.81 3.429 16.38 0 12.19 0c-4.114 1.828-1.37 2.133.305 2.438 1.676.305 4.42 2.59 4.42 5.181v3.048H3.047A3.056 3.056 0 000 13.714v15.238A3.056 3.056 0 003.048 32h18.285a3.056 3.056 0 003.048-3.048V13.714a3.056 3.056 0 00-3.048-3.047zM12.19 24.533a3.056 3.056 0 01-3.047-3.047 3.056 3.056 0 013.047-3.048 3.056 3.056 0 013.048 3.048 3.056 3.056 0 01-3.048 3.047z" }) }));
3108
3105
  }
3109
3106
 
3110
- const ControlButton = ({ children, className, ...rest }) => (jsx("button", { type: "button", className: cc(['react-flow__controls-button', className]), ...rest, children: children }));
3111
- ControlButton.displayName = 'ControlButton';
3107
+ function ControlButton({ children, className, ...rest }) {
3108
+ return (jsx("button", { type: "button", className: cc(['react-flow__controls-button', className]), ...rest, children: children }));
3109
+ }
3112
3110
 
3113
3111
  const selector$3 = (s) => ({
3114
3112
  isInteractive: s.nodesDraggable || s.nodesConnectable || s.elementsSelectable,
3115
3113
  minZoomReached: s.transform[2] <= s.minZoom,
3116
3114
  maxZoomReached: s.transform[2] >= s.maxZoom,
3117
3115
  });
3118
- const Controls = ({ style, showZoom = true, showFitView = true, showInteractive = true, fitViewOptions, onZoomIn, onZoomOut, onFitView, onInteractiveChange, className, children, position = 'bottom-left', }) => {
3116
+ function ControlsComponent({ style, showZoom = true, showFitView = true, showInteractive = true, fitViewOptions, onZoomIn, onZoomOut, onFitView, onInteractiveChange, className, children, position = 'bottom-left', }) {
3119
3117
  const store = useStoreApi();
3120
3118
  const { isInteractive, minZoomReached, maxZoomReached } = useStore(selector$3, shallow);
3121
3119
  const { zoomIn, zoomOut, fitView } = useReactFlow();
@@ -3140,11 +3138,11 @@ const Controls = ({ style, showZoom = true, showFitView = true, showInteractive
3140
3138
  onInteractiveChange?.(!isInteractive);
3141
3139
  };
3142
3140
  return (jsxs(Panel, { className: cc(['react-flow__controls', className]), position: position, style: style, "data-testid": "rf__controls", children: [showZoom && (jsxs(Fragment, { children: [jsx(ControlButton, { onClick: onZoomInHandler, className: "react-flow__controls-zoomin", title: "zoom in", "aria-label": "zoom in", disabled: maxZoomReached, children: jsx(PlusIcon, {}) }), jsx(ControlButton, { onClick: onZoomOutHandler, className: "react-flow__controls-zoomout", title: "zoom out", "aria-label": "zoom out", disabled: minZoomReached, children: jsx(MinusIcon, {}) })] })), showFitView && (jsx(ControlButton, { className: "react-flow__controls-fitview", onClick: onFitViewHandler, title: "fit view", "aria-label": "fit view", children: jsx(FitViewIcon, {}) })), showInteractive && (jsx(ControlButton, { className: "react-flow__controls-interactive", onClick: onToggleInteractivity, title: "toggle interactivity", "aria-label": "toggle interactivity", children: isInteractive ? jsx(UnlockIcon, {}) : jsx(LockIcon, {}) })), children] }));
3143
- };
3144
- Controls.displayName = 'Controls';
3145
- var Controls$1 = memo(Controls);
3141
+ }
3142
+ ControlsComponent.displayName = 'Controls';
3143
+ const Controls = memo(ControlsComponent);
3146
3144
 
3147
- function MiniMapNode({ id, x, y, width, height, style, color, strokeColor, strokeWidth, className, borderRadius, shapeRendering, selected, onClick, }) {
3145
+ function MiniMapNodeComponent({ id, x, y, width, height, style, color, strokeColor, strokeWidth, className, borderRadius, shapeRendering, selected, onClick, }) {
3148
3146
  const { background, backgroundColor } = style || {};
3149
3147
  const fill = (color || background || backgroundColor);
3150
3148
  return (jsx("rect", { className: cc(['react-flow__minimap-node', { selected }, className]), x: x, y: y, rx: borderRadius, ry: borderRadius, width: width, height: height, style: {
@@ -3153,7 +3151,7 @@ function MiniMapNode({ id, x, y, width, height, style, color, strokeColor, strok
3153
3151
  strokeWidth,
3154
3152
  }, shapeRendering: shapeRendering, onClick: onClick ? (event) => onClick(event, id) : undefined }));
3155
3153
  }
3156
- var MiniMapNode$1 = memo(MiniMapNode);
3154
+ const MiniMapNode = memo(MiniMapNodeComponent);
3157
3155
 
3158
3156
  const selector$2 = (s) => s.nodeOrigin;
3159
3157
  const selectorNodeIds = (s) => s.nodes.map((node) => node.id);
@@ -3161,7 +3159,7 @@ const getAttrFunction = (func) => (func instanceof Function ? func : () => func)
3161
3159
  function MiniMapNodes({ nodeStrokeColor, nodeColor, nodeClassName = '', nodeBorderRadius = 5, nodeStrokeWidth,
3162
3160
  // We need to rename the prop to be `CapitalCase` so that JSX will render it as
3163
3161
  // a component properly.
3164
- nodeComponent: NodeComponent = MiniMapNode$1, onClick, }) {
3162
+ nodeComponent: NodeComponent = MiniMapNode, onClick, }) {
3165
3163
  const nodeIds = useStore(selectorNodeIds, shallow);
3166
3164
  const nodeOrigin = useStore(selector$2);
3167
3165
  const nodeColorFunc = getAttrFunction(nodeColor);
@@ -3214,7 +3212,7 @@ const selector$1 = (s) => {
3214
3212
  };
3215
3213
  };
3216
3214
  const ARIA_LABEL_KEY = 'react-flow__minimap-desc';
3217
- function MiniMap({ style, className, nodeStrokeColor, nodeColor, nodeClassName = '', nodeBorderRadius = 5, nodeStrokeWidth,
3215
+ function MiniMapComponent({ style, className, nodeStrokeColor, nodeColor, nodeClassName = '', nodeBorderRadius = 5, nodeStrokeWidth,
3218
3216
  // We need to rename the prop to be `CapitalCase` so that JSX will render it as
3219
3217
  // a component properly.
3220
3218
  nodeComponent, maskColor, maskStrokeColor = 'none', maskStrokeWidth = 1, position = 'bottom-right', onClick, onNodeClick, pannable = false, zoomable = false, ariaLabel = 'React Flow mini map', inversePan, zoomStep = 10, offsetScale = 5, }) {
@@ -3282,8 +3280,8 @@ nodeComponent, maskColor, maskStrokeColor = 'none', maskStrokeWidth = 1, positio
3282
3280
  }, className: cc(['react-flow__minimap', className]), "data-testid": "rf__minimap", children: jsxs("svg", { width: elementWidth, height: elementHeight, viewBox: `${x} ${y} ${width} ${height}`, role: "img", "aria-labelledby": labelledBy, ref: svg, onClick: onSvgClick, children: [ariaLabel && jsx("title", { id: labelledBy, children: ariaLabel }), jsx(MiniMapNodes$1, { onClick: onSvgNodeClick, nodeColor: nodeColor, nodeStrokeColor: nodeStrokeColor, nodeBorderRadius: nodeBorderRadius, nodeClassName: nodeClassName, nodeStrokeWidth: nodeStrokeWidth, nodeComponent: nodeComponent }), jsx("path", { className: "react-flow__minimap-mask", d: `M${x - offset},${y - offset}h${width + offset * 2}v${height + offset * 2}h${-width - offset * 2}z
3283
3281
  M${viewBB.x},${viewBB.y}h${viewBB.width}v${viewBB.height}h${-viewBB.width}z`, fillRule: "evenodd", stroke: maskStrokeColor, strokeWidth: maskStrokeWidth, pointerEvents: "none" })] }) }));
3284
3282
  }
3285
- MiniMap.displayName = 'MiniMap';
3286
- var MiniMap$1 = memo(MiniMap);
3283
+ MiniMapComponent.displayName = 'MiniMap';
3284
+ const MiniMap = memo(MiniMapComponent);
3287
3285
 
3288
3286
  var ResizeControlVariant;
3289
3287
  (function (ResizeControlVariant) {
@@ -3544,4 +3542,4 @@ function NodeToolbar({ nodeId, children, className, style, isVisible, position =
3544
3542
  return (jsx(NodeToolbarPortal, { children: jsx("div", { style: wrapperStyle, className: cc(['react-flow__node-toolbar', className]), ...rest, "data-id": nodes.reduce((acc, node) => `${acc}${node.id} `, '').trim(), children: children }) }));
3545
3543
  }
3546
3544
 
3547
- export { Background$1 as Background, BackgroundVariant, BaseEdge, BezierEdge, ControlButton, Controls$1 as Controls, EdgeLabelRenderer, EdgeText$1 as EdgeText, Handle$1 as Handle, MiniMap$1 as MiniMap, ResizeControl$1 as NodeResizeControl, NodeResizer, NodeToolbar, Panel, ReactFlow, ReactFlowProvider, ResizeControlVariant, SimpleBezierEdge, SmoothStepEdge, StepEdge, StraightEdge, ViewportPortal, addEdge, applyEdgeChanges, applyNodeChanges, getConnectedEdges, getIncomers, getOutgoers, getSimpleBezierPath, handleParentExpand, isEdge, isNode, updateEdge, useConnection, useEdges, useEdgesState, useHandleConnections, useKeyPress, useNodeId, useNodes, useNodesData, useNodesInitialized, useNodesState, useOnSelectionChange, useOnViewportChange, useReactFlow, useStore, useStoreApi, useUpdateNodeInternals, useViewport };
3545
+ export { Background, BackgroundVariant, BaseEdge, BezierEdge, ControlButton, Controls, EdgeLabelRenderer, EdgeText, Handle, MiniMap, ResizeControl$1 as NodeResizeControl, NodeResizer, NodeToolbar, Panel, ReactFlow, ReactFlowProvider, ResizeControlVariant, SimpleBezierEdge, SmoothStepEdge, StepEdge, StraightEdge, ViewportPortal, addEdge, applyEdgeChanges, applyNodeChanges, getConnectedEdges, getIncomers, getOutgoers, getSimpleBezierPath, handleParentExpand, isEdge, isNode, updateEdge, useConnection, useEdges, useEdgesState, useHandleConnections, useKeyPress, useNodeId, useNodes, useNodesData, useNodesInitialized, useNodesState, useOnSelectionChange, useOnViewportChange, useReactFlow, useStore, useStoreApi, useUpdateNodeInternals, useViewport };