@xyflow/react 12.4.2 → 12.4.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 (230) hide show
  1. package/dist/esm/additional-components/Background/Background.d.ts +53 -0
  2. package/dist/esm/additional-components/Background/Background.d.ts.map +1 -1
  3. package/dist/esm/additional-components/Background/types.d.ts +11 -1
  4. package/dist/esm/additional-components/Background/types.d.ts.map +1 -1
  5. package/dist/esm/additional-components/Controls/ControlButton.d.ts +23 -0
  6. package/dist/esm/additional-components/Controls/ControlButton.d.ts.map +1 -1
  7. package/dist/esm/additional-components/Controls/Controls.d.ts +21 -0
  8. package/dist/esm/additional-components/Controls/Controls.d.ts.map +1 -1
  9. package/dist/esm/additional-components/Controls/types.d.ts +8 -1
  10. package/dist/esm/additional-components/Controls/types.d.ts.map +1 -1
  11. package/dist/esm/additional-components/MiniMap/MiniMap.d.ts +20 -0
  12. package/dist/esm/additional-components/MiniMap/MiniMap.d.ts.map +1 -1
  13. package/dist/esm/additional-components/MiniMap/MiniMapNodes.d.ts.map +1 -1
  14. package/dist/esm/additional-components/MiniMap/types.d.ts +11 -1
  15. package/dist/esm/additional-components/MiniMap/types.d.ts.map +1 -1
  16. package/dist/esm/additional-components/NodeResizer/NodeResizeControl.d.ts +5 -0
  17. package/dist/esm/additional-components/NodeResizer/NodeResizeControl.d.ts.map +1 -1
  18. package/dist/esm/additional-components/NodeResizer/NodeResizer.d.ts +24 -0
  19. package/dist/esm/additional-components/NodeResizer/NodeResizer.d.ts.map +1 -1
  20. package/dist/esm/additional-components/NodeResizer/types.d.ts +15 -3
  21. package/dist/esm/additional-components/NodeResizer/types.d.ts.map +1 -1
  22. package/dist/esm/additional-components/NodeToolbar/NodeToolbar.d.ts +35 -0
  23. package/dist/esm/additional-components/NodeToolbar/NodeToolbar.d.ts.map +1 -1
  24. package/dist/esm/additional-components/NodeToolbar/types.d.ts +7 -2
  25. package/dist/esm/additional-components/NodeToolbar/types.d.ts.map +1 -1
  26. package/dist/esm/components/BatchProvider/index.d.ts.map +1 -1
  27. package/dist/esm/components/BatchProvider/useQueue.d.ts.map +1 -1
  28. package/dist/esm/components/ConnectionLine/index.d.ts +4 -4
  29. package/dist/esm/components/ConnectionLine/index.d.ts.map +1 -1
  30. package/dist/esm/components/EdgeLabelRenderer/index.d.ts +40 -0
  31. package/dist/esm/components/EdgeLabelRenderer/index.d.ts.map +1 -1
  32. package/dist/esm/components/EdgeWrapper/index.d.ts +1 -1
  33. package/dist/esm/components/EdgeWrapper/index.d.ts.map +1 -1
  34. package/dist/esm/components/Edges/BaseEdge.d.ts +27 -0
  35. package/dist/esm/components/Edges/BaseEdge.d.ts.map +1 -1
  36. package/dist/esm/components/Edges/EdgeText.d.ts +26 -0
  37. package/dist/esm/components/Edges/EdgeText.d.ts.map +1 -1
  38. package/dist/esm/components/Edges/SimpleBezierEdge.d.ts +5 -0
  39. package/dist/esm/components/Edges/SimpleBezierEdge.d.ts.map +1 -1
  40. package/dist/esm/components/Edges/index.d.ts.map +1 -1
  41. package/dist/esm/components/Handle/index.d.ts +32 -4
  42. package/dist/esm/components/Handle/index.d.ts.map +1 -1
  43. package/dist/esm/components/NodeWrapper/index.d.ts +1 -1
  44. package/dist/esm/components/NodeWrapper/index.d.ts.map +1 -1
  45. package/dist/esm/components/NodeWrapper/useNodeObserver.d.ts.map +1 -1
  46. package/dist/esm/components/NodeWrapper/utils.d.ts.map +1 -1
  47. package/dist/esm/components/Nodes/utils.d.ts.map +1 -1
  48. package/dist/esm/components/Panel/index.d.ts +32 -4
  49. package/dist/esm/components/Panel/index.d.ts.map +1 -1
  50. package/dist/esm/components/ReactFlowProvider/index.d.ts +34 -0
  51. package/dist/esm/components/ReactFlowProvider/index.d.ts.map +1 -1
  52. package/dist/esm/components/SelectionListener/index.d.ts +4 -4
  53. package/dist/esm/components/SelectionListener/index.d.ts.map +1 -1
  54. package/dist/esm/components/StoreUpdater/index.d.ts.map +1 -1
  55. package/dist/esm/components/ViewportPortal/index.d.ts +25 -0
  56. package/dist/esm/components/ViewportPortal/index.d.ts.map +1 -1
  57. package/dist/esm/container/EdgeRenderer/MarkerDefinitions.d.ts.map +1 -1
  58. package/dist/esm/container/NodeRenderer/index.d.ts.map +1 -1
  59. package/dist/esm/container/Pane/index.d.ts.map +1 -1
  60. package/dist/esm/container/ReactFlow/Wrapper.d.ts.map +1 -1
  61. package/dist/esm/container/ReactFlow/index.d.ts +21 -1
  62. package/dist/esm/container/ReactFlow/index.d.ts.map +1 -1
  63. package/dist/esm/contexts/NodeIdContext.d.ts +28 -0
  64. package/dist/esm/contexts/NodeIdContext.d.ts.map +1 -1
  65. package/dist/esm/hooks/useConnection.d.ts +20 -1
  66. package/dist/esm/hooks/useConnection.d.ts.map +1 -1
  67. package/dist/esm/hooks/useEdges.d.ts +13 -1
  68. package/dist/esm/hooks/useEdges.d.ts.map +1 -1
  69. package/dist/esm/hooks/useInternalNode.d.ts +21 -1
  70. package/dist/esm/hooks/useInternalNode.d.ts.map +1 -1
  71. package/dist/esm/hooks/useKeyPress.d.ts +19 -1
  72. package/dist/esm/hooks/useKeyPress.d.ts.map +1 -1
  73. package/dist/esm/hooks/useMoveSelectedNodes.d.ts.map +1 -1
  74. package/dist/esm/hooks/useNodeConnections.d.ts +17 -1
  75. package/dist/esm/hooks/useNodeConnections.d.ts.map +1 -1
  76. package/dist/esm/hooks/useNodes.d.ts +14 -1
  77. package/dist/esm/hooks/useNodes.d.ts.map +1 -1
  78. package/dist/esm/hooks/useNodesData.d.ts +14 -2
  79. package/dist/esm/hooks/useNodesData.d.ts.map +1 -1
  80. package/dist/esm/hooks/useNodesEdgesState.d.ts +62 -2
  81. package/dist/esm/hooks/useNodesEdgesState.d.ts.map +1 -1
  82. package/dist/esm/hooks/useNodesInitialized.d.ts +27 -1
  83. package/dist/esm/hooks/useNodesInitialized.d.ts.map +1 -1
  84. package/dist/esm/hooks/useOnSelectionChange.d.ts +37 -5
  85. package/dist/esm/hooks/useOnSelectionChange.d.ts.map +1 -1
  86. package/dist/esm/hooks/useOnViewportChange.d.ts +19 -1
  87. package/dist/esm/hooks/useOnViewportChange.d.ts.map +1 -1
  88. package/dist/esm/hooks/useReactFlow.d.ts +24 -1
  89. package/dist/esm/hooks/useReactFlow.d.ts.map +1 -1
  90. package/dist/esm/hooks/useStore.d.ts +23 -2
  91. package/dist/esm/hooks/useStore.d.ts.map +1 -1
  92. package/dist/esm/hooks/useUpdateNodeInternals.d.ts +39 -1
  93. package/dist/esm/hooks/useUpdateNodeInternals.d.ts.map +1 -1
  94. package/dist/esm/hooks/useViewport.d.ts +24 -1
  95. package/dist/esm/hooks/useViewport.d.ts.map +1 -1
  96. package/dist/esm/hooks/useViewportHelper.d.ts.map +1 -1
  97. package/dist/esm/index.js +1107 -198
  98. package/dist/esm/index.mjs +1107 -198
  99. package/dist/esm/store/index.d.ts.map +1 -1
  100. package/dist/esm/types/component-props.d.ts +112 -57
  101. package/dist/esm/types/component-props.d.ts.map +1 -1
  102. package/dist/esm/types/edges.d.ts +27 -2
  103. package/dist/esm/types/edges.d.ts.map +1 -1
  104. package/dist/esm/types/general.d.ts +48 -7
  105. package/dist/esm/types/general.d.ts.map +1 -1
  106. package/dist/esm/types/instance.d.ts +11 -1
  107. package/dist/esm/types/instance.d.ts.map +1 -1
  108. package/dist/esm/types/nodes.d.ts +46 -4
  109. package/dist/esm/types/nodes.d.ts.map +1 -1
  110. package/dist/esm/types/store.d.ts +2 -2
  111. package/dist/esm/types/store.d.ts.map +1 -1
  112. package/dist/esm/utils/changes.d.ts +45 -23
  113. package/dist/esm/utils/changes.d.ts.map +1 -1
  114. package/dist/esm/utils/general.d.ts +27 -3
  115. package/dist/esm/utils/general.d.ts.map +1 -1
  116. package/dist/umd/additional-components/Background/Background.d.ts +53 -0
  117. package/dist/umd/additional-components/Background/Background.d.ts.map +1 -1
  118. package/dist/umd/additional-components/Background/types.d.ts +11 -1
  119. package/dist/umd/additional-components/Background/types.d.ts.map +1 -1
  120. package/dist/umd/additional-components/Controls/ControlButton.d.ts +23 -0
  121. package/dist/umd/additional-components/Controls/ControlButton.d.ts.map +1 -1
  122. package/dist/umd/additional-components/Controls/Controls.d.ts +21 -0
  123. package/dist/umd/additional-components/Controls/Controls.d.ts.map +1 -1
  124. package/dist/umd/additional-components/Controls/types.d.ts +8 -1
  125. package/dist/umd/additional-components/Controls/types.d.ts.map +1 -1
  126. package/dist/umd/additional-components/MiniMap/MiniMap.d.ts +20 -0
  127. package/dist/umd/additional-components/MiniMap/MiniMap.d.ts.map +1 -1
  128. package/dist/umd/additional-components/MiniMap/MiniMapNodes.d.ts.map +1 -1
  129. package/dist/umd/additional-components/MiniMap/types.d.ts +11 -1
  130. package/dist/umd/additional-components/MiniMap/types.d.ts.map +1 -1
  131. package/dist/umd/additional-components/NodeResizer/NodeResizeControl.d.ts +5 -0
  132. package/dist/umd/additional-components/NodeResizer/NodeResizeControl.d.ts.map +1 -1
  133. package/dist/umd/additional-components/NodeResizer/NodeResizer.d.ts +24 -0
  134. package/dist/umd/additional-components/NodeResizer/NodeResizer.d.ts.map +1 -1
  135. package/dist/umd/additional-components/NodeResizer/types.d.ts +15 -3
  136. package/dist/umd/additional-components/NodeResizer/types.d.ts.map +1 -1
  137. package/dist/umd/additional-components/NodeToolbar/NodeToolbar.d.ts +35 -0
  138. package/dist/umd/additional-components/NodeToolbar/NodeToolbar.d.ts.map +1 -1
  139. package/dist/umd/additional-components/NodeToolbar/types.d.ts +7 -2
  140. package/dist/umd/additional-components/NodeToolbar/types.d.ts.map +1 -1
  141. package/dist/umd/components/BatchProvider/index.d.ts.map +1 -1
  142. package/dist/umd/components/BatchProvider/useQueue.d.ts.map +1 -1
  143. package/dist/umd/components/ConnectionLine/index.d.ts +4 -4
  144. package/dist/umd/components/ConnectionLine/index.d.ts.map +1 -1
  145. package/dist/umd/components/EdgeLabelRenderer/index.d.ts +40 -0
  146. package/dist/umd/components/EdgeLabelRenderer/index.d.ts.map +1 -1
  147. package/dist/umd/components/EdgeWrapper/index.d.ts +1 -1
  148. package/dist/umd/components/EdgeWrapper/index.d.ts.map +1 -1
  149. package/dist/umd/components/Edges/BaseEdge.d.ts +27 -0
  150. package/dist/umd/components/Edges/BaseEdge.d.ts.map +1 -1
  151. package/dist/umd/components/Edges/EdgeText.d.ts +26 -0
  152. package/dist/umd/components/Edges/EdgeText.d.ts.map +1 -1
  153. package/dist/umd/components/Edges/SimpleBezierEdge.d.ts +5 -0
  154. package/dist/umd/components/Edges/SimpleBezierEdge.d.ts.map +1 -1
  155. package/dist/umd/components/Edges/index.d.ts.map +1 -1
  156. package/dist/umd/components/Handle/index.d.ts +32 -4
  157. package/dist/umd/components/Handle/index.d.ts.map +1 -1
  158. package/dist/umd/components/NodeWrapper/index.d.ts +1 -1
  159. package/dist/umd/components/NodeWrapper/index.d.ts.map +1 -1
  160. package/dist/umd/components/NodeWrapper/useNodeObserver.d.ts.map +1 -1
  161. package/dist/umd/components/NodeWrapper/utils.d.ts.map +1 -1
  162. package/dist/umd/components/Nodes/utils.d.ts.map +1 -1
  163. package/dist/umd/components/Panel/index.d.ts +32 -4
  164. package/dist/umd/components/Panel/index.d.ts.map +1 -1
  165. package/dist/umd/components/ReactFlowProvider/index.d.ts +34 -0
  166. package/dist/umd/components/ReactFlowProvider/index.d.ts.map +1 -1
  167. package/dist/umd/components/SelectionListener/index.d.ts +4 -4
  168. package/dist/umd/components/SelectionListener/index.d.ts.map +1 -1
  169. package/dist/umd/components/StoreUpdater/index.d.ts.map +1 -1
  170. package/dist/umd/components/ViewportPortal/index.d.ts +25 -0
  171. package/dist/umd/components/ViewportPortal/index.d.ts.map +1 -1
  172. package/dist/umd/container/EdgeRenderer/MarkerDefinitions.d.ts.map +1 -1
  173. package/dist/umd/container/NodeRenderer/index.d.ts.map +1 -1
  174. package/dist/umd/container/Pane/index.d.ts.map +1 -1
  175. package/dist/umd/container/ReactFlow/Wrapper.d.ts.map +1 -1
  176. package/dist/umd/container/ReactFlow/index.d.ts +21 -1
  177. package/dist/umd/container/ReactFlow/index.d.ts.map +1 -1
  178. package/dist/umd/contexts/NodeIdContext.d.ts +28 -0
  179. package/dist/umd/contexts/NodeIdContext.d.ts.map +1 -1
  180. package/dist/umd/hooks/useConnection.d.ts +20 -1
  181. package/dist/umd/hooks/useConnection.d.ts.map +1 -1
  182. package/dist/umd/hooks/useEdges.d.ts +13 -1
  183. package/dist/umd/hooks/useEdges.d.ts.map +1 -1
  184. package/dist/umd/hooks/useInternalNode.d.ts +21 -1
  185. package/dist/umd/hooks/useInternalNode.d.ts.map +1 -1
  186. package/dist/umd/hooks/useKeyPress.d.ts +19 -1
  187. package/dist/umd/hooks/useKeyPress.d.ts.map +1 -1
  188. package/dist/umd/hooks/useMoveSelectedNodes.d.ts.map +1 -1
  189. package/dist/umd/hooks/useNodeConnections.d.ts +17 -1
  190. package/dist/umd/hooks/useNodeConnections.d.ts.map +1 -1
  191. package/dist/umd/hooks/useNodes.d.ts +14 -1
  192. package/dist/umd/hooks/useNodes.d.ts.map +1 -1
  193. package/dist/umd/hooks/useNodesData.d.ts +14 -2
  194. package/dist/umd/hooks/useNodesData.d.ts.map +1 -1
  195. package/dist/umd/hooks/useNodesEdgesState.d.ts +62 -2
  196. package/dist/umd/hooks/useNodesEdgesState.d.ts.map +1 -1
  197. package/dist/umd/hooks/useNodesInitialized.d.ts +27 -1
  198. package/dist/umd/hooks/useNodesInitialized.d.ts.map +1 -1
  199. package/dist/umd/hooks/useOnSelectionChange.d.ts +37 -5
  200. package/dist/umd/hooks/useOnSelectionChange.d.ts.map +1 -1
  201. package/dist/umd/hooks/useOnViewportChange.d.ts +19 -1
  202. package/dist/umd/hooks/useOnViewportChange.d.ts.map +1 -1
  203. package/dist/umd/hooks/useReactFlow.d.ts +24 -1
  204. package/dist/umd/hooks/useReactFlow.d.ts.map +1 -1
  205. package/dist/umd/hooks/useStore.d.ts +23 -2
  206. package/dist/umd/hooks/useStore.d.ts.map +1 -1
  207. package/dist/umd/hooks/useUpdateNodeInternals.d.ts +39 -1
  208. package/dist/umd/hooks/useUpdateNodeInternals.d.ts.map +1 -1
  209. package/dist/umd/hooks/useViewport.d.ts +24 -1
  210. package/dist/umd/hooks/useViewport.d.ts.map +1 -1
  211. package/dist/umd/hooks/useViewportHelper.d.ts.map +1 -1
  212. package/dist/umd/index.js +2 -2
  213. package/dist/umd/store/index.d.ts.map +1 -1
  214. package/dist/umd/types/component-props.d.ts +112 -57
  215. package/dist/umd/types/component-props.d.ts.map +1 -1
  216. package/dist/umd/types/edges.d.ts +27 -2
  217. package/dist/umd/types/edges.d.ts.map +1 -1
  218. package/dist/umd/types/general.d.ts +48 -7
  219. package/dist/umd/types/general.d.ts.map +1 -1
  220. package/dist/umd/types/instance.d.ts +11 -1
  221. package/dist/umd/types/instance.d.ts.map +1 -1
  222. package/dist/umd/types/nodes.d.ts +46 -4
  223. package/dist/umd/types/nodes.d.ts.map +1 -1
  224. package/dist/umd/types/store.d.ts +2 -2
  225. package/dist/umd/types/store.d.ts.map +1 -1
  226. package/dist/umd/utils/changes.d.ts +45 -23
  227. package/dist/umd/utils/changes.d.ts.map +1 -1
  228. package/dist/umd/utils/general.d.ts +27 -3
  229. package/dist/umd/utils/general.d.ts.map +1 -1
  230. package/package.json +4 -3
@@ -2,11 +2,37 @@ export type UseNodesInitializedOptions = {
2
2
  includeHiddenNodes?: boolean;
3
3
  };
4
4
  /**
5
- * Hook which returns true when all nodes are initialized.
5
+ * This hook tells you whether all the nodes in a flow have been measured and given
6
+ *a width and height. When you add a node to the flow, this hook will return
7
+ *`false` and then `true` again once the node has been measured.
6
8
  *
7
9
  * @public
8
10
  * @param options.includeHiddenNodes - defaults to false
9
11
  * @returns boolean indicating whether all nodes are initialized
12
+ *
13
+ * @example
14
+ * ```jsx
15
+ *import { useReactFlow, useNodesInitialized } from '@xyflow/react';
16
+ *import { useEffect, useState } from 'react';
17
+ *
18
+ *const options = {
19
+ * includeHiddenNodes: false,
20
+ *};
21
+ *
22
+ *export default function useLayout() {
23
+ * const { getNodes } = useReactFlow();
24
+ * const nodesInitialized = useNodesInitialized(options);
25
+ * const [layoutedNodes, setLayoutedNodes] = useState(getNodes());
26
+ *
27
+ * useEffect(() => {
28
+ * if (nodesInitialized) {
29
+ * setLayoutedNodes(yourLayoutingFunction(getNodes()));
30
+ * }
31
+ * }, [nodesInitialized]);
32
+ *
33
+ * return layoutedNodes;
34
+ *}
35
+ *```
10
36
  */
11
37
  export declare function useNodesInitialized(options?: UseNodesInitializedOptions): boolean;
12
38
  //# sourceMappingURL=useNodesInitialized.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"useNodesInitialized.d.ts","sourceRoot":"","sources":["../../src/hooks/useNodesInitialized.ts"],"names":[],"mappings":"AAIA,MAAM,MAAM,0BAA0B,GAAG;IACvC,kBAAkB,CAAC,EAAE,OAAO,CAAC;CAC9B,CAAC;AAsBF;;;;;;GAMG;AACH,wBAAgB,mBAAmB,CAAC,OAAO,GAAE,0BAA2C,GAAG,OAAO,CAIjG"}
1
+ {"version":3,"file":"useNodesInitialized.d.ts","sourceRoot":"","sources":["../../src/hooks/useNodesInitialized.ts"],"names":[],"mappings":"AAKA,MAAM,MAAM,0BAA0B,GAAG;IACvC,kBAAkB,CAAC,EAAE,OAAO,CAAC;CAC9B,CAAC;AAkBF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgCG;AACH,wBAAgB,mBAAmB,CACjC,OAAO,GAAE,0BAER,GACA,OAAO,CAIT"}
@@ -1,12 +1,44 @@
1
- import type { OnSelectionChangeFunc } from '../types';
2
- export type UseOnSelectionChangeOptions = {
3
- onChange: OnSelectionChangeFunc;
1
+ import type { OnSelectionChangeFunc, Node, Edge } from '../types';
2
+ export type UseOnSelectionChangeOptions<NodeType extends Node = Node, EdgeType extends Edge = Edge> = {
3
+ onChange: OnSelectionChangeFunc<NodeType, EdgeType>;
4
4
  };
5
5
  /**
6
- * Hook for registering an onSelectionChange handler.
6
+ * This hook lets you listen for changes to both node and edge selection. As the
7
+ *name implies, the callback you provide will be called whenever the selection of
8
+ *_either_ nodes or edges changes.
7
9
  *
8
10
  * @public
9
11
  * @param params.onChange - The handler to register
12
+ *
13
+ * @example
14
+ * ```jsx
15
+ *import { useState } from 'react';
16
+ *import { ReactFlow, useOnSelectionChange } from '@xyflow/react';
17
+ *
18
+ *function SelectionDisplay() {
19
+ * const [selectedNodes, setSelectedNodes] = useState([]);
20
+ * const [selectedEdges, setSelectedEdges] = useState([]);
21
+ *
22
+ * // the passed handler has to be memoized, otherwise the hook will not work correctly
23
+ * const onChange = useCallback(({ nodes, edges }) => {
24
+ * setSelectedNodes(nodes.map((node) => node.id));
25
+ * setSelectedEdges(edges.map((edge) => edge.id));
26
+ * }, []);
27
+ *
28
+ * useOnSelectionChange({
29
+ * onChange,
30
+ * });
31
+ *
32
+ * return (
33
+ * <div>
34
+ * <p>Selected nodes: {selectedNodes.join(', ')}</p>
35
+ * <p>Selected edges: {selectedEdges.join(', ')}</p>
36
+ * </div>
37
+ * );
38
+ *}
39
+ *```
40
+ *
41
+ * @remarks You need to memoize the passed `onChange` handler, otherwise the hook will not work correctly.
10
42
  */
11
- export declare function useOnSelectionChange({ onChange }: UseOnSelectionChangeOptions): void;
43
+ export declare function useOnSelectionChange<NodeType extends Node = Node, EdgeType extends Edge = Edge>({ onChange, }: UseOnSelectionChangeOptions<NodeType, EdgeType>): void;
12
44
  //# sourceMappingURL=useOnSelectionChange.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"useOnSelectionChange.d.ts","sourceRoot":"","sources":["../../src/hooks/useOnSelectionChange.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,UAAU,CAAC;AAEtD,MAAM,MAAM,2BAA2B,GAAG;IACxC,QAAQ,EAAE,qBAAqB,CAAC;CACjC,CAAC;AAEF;;;;;GAKG;AACH,wBAAgB,oBAAoB,CAAC,EAAE,QAAQ,EAAE,EAAE,2BAA2B,QAY7E"}
1
+ {"version":3,"file":"useOnSelectionChange.d.ts","sourceRoot":"","sources":["../../src/hooks/useOnSelectionChange.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,qBAAqB,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,UAAU,CAAC;AAElE,MAAM,MAAM,2BAA2B,CAAC,QAAQ,SAAS,IAAI,GAAG,IAAI,EAAE,QAAQ,SAAS,IAAI,GAAG,IAAI,IAAI;IACpG,QAAQ,EAAE,qBAAqB,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;CACrD,CAAC;AAEF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAqCG;AACH,wBAAgB,oBAAoB,CAAC,QAAQ,SAAS,IAAI,GAAG,IAAI,EAAE,QAAQ,SAAS,IAAI,GAAG,IAAI,EAAE,EAC/F,QAAQ,GACT,EAAE,2BAA2B,CAAC,QAAQ,EAAE,QAAQ,CAAC,QAYjD"}
@@ -5,12 +5,30 @@ export type UseOnViewportChangeOptions = {
5
5
  onEnd?: OnViewportChange;
6
6
  };
7
7
  /**
8
- * Hook for registering an onViewportChange handler.
8
+ * The `useOnViewportChange` hook lets you listen for changes to the viewport such
9
+ *as panning and zooming. You can provide a callback for each phase of a viewport
10
+ *change: `onStart`, `onChange`, and `onEnd`.
9
11
  *
10
12
  * @public
11
13
  * @param params.onStart - gets called when the viewport starts changing
12
14
  * @param params.onChange - gets called when the viewport changes
13
15
  * @param params.onEnd - gets called when the viewport stops changing
16
+ *
17
+ * @example
18
+ * ```jsx
19
+ *import { useCallback } from 'react';
20
+ *import { useOnViewportChange } from '@xyflow/react';
21
+ *
22
+ *function ViewportChangeLogger() {
23
+ * useOnViewportChange({
24
+ * onStart: (viewport: Viewport) => console.log('start', viewport),
25
+ * onChange: (viewport: Viewport) => console.log('change', viewport),
26
+ * onEnd: (viewport: Viewport) => console.log('end', viewport),
27
+ * });
28
+ *
29
+ * return null;
30
+ *}
31
+ *```
14
32
  */
15
33
  export declare function useOnViewportChange({ onStart, onChange, onEnd }: UseOnViewportChangeOptions): void;
16
34
  //# sourceMappingURL=useOnViewportChange.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"useOnViewportChange.d.ts","sourceRoot":"","sources":["../../src/hooks/useOnViewportChange.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAIvD,MAAM,MAAM,0BAA0B,GAAG;IACvC,OAAO,CAAC,EAAE,gBAAgB,CAAC;IAC3B,QAAQ,CAAC,EAAE,gBAAgB,CAAC;IAC5B,KAAK,CAAC,EAAE,gBAAgB,CAAC;CAC1B,CAAC;AAEF;;;;;;;GAOG;AACH,wBAAgB,mBAAmB,CAAC,EAAE,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,EAAE,0BAA0B,QAc3F"}
1
+ {"version":3,"file":"useOnViewportChange.d.ts","sourceRoot":"","sources":["../../src/hooks/useOnViewportChange.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAIvD,MAAM,MAAM,0BAA0B,GAAG;IACvC,OAAO,CAAC,EAAE,gBAAgB,CAAC;IAC3B,QAAQ,CAAC,EAAE,gBAAgB,CAAC;IAC5B,KAAK,CAAC,EAAE,gBAAgB,CAAC;CAC1B,CAAC;AAEF;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,wBAAgB,mBAAmB,CAAC,EAAE,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,EAAE,0BAA0B,QAc3F"}
@@ -1,9 +1,32 @@
1
1
  import type { ReactFlowInstance, Node, Edge } from '../types';
2
2
  /**
3
- * Hook for accessing the ReactFlow instance.
3
+ * This hook returns a ReactFlowInstance that can be used to update nodes and edges, manipulate the viewport, or query the current state of the flow.
4
4
  *
5
5
  * @public
6
6
  * @returns ReactFlowInstance
7
+ *
8
+ * @example
9
+ * ```jsx
10
+ *import { useCallback, useState } from 'react';
11
+ *import { useReactFlow } from '@xyflow/react';
12
+ *
13
+ *export function NodeCounter() {
14
+ * const reactFlow = useReactFlow();
15
+ * const [count, setCount] = useState(0);
16
+ * const countNodes = useCallback(() => {
17
+ * setCount(reactFlow.getNodes().length);
18
+ * // you need to pass it as a dependency if you are using it with useEffect or useCallback
19
+ * // because at the first render, it's not initialized yet and some functions might not work.
20
+ * }, [reactFlow]);
21
+ *
22
+ * return (
23
+ * <div>
24
+ * <button onClick={countNodes}>Update count</button>
25
+ * <p>There are {count} nodes in the flow.</p>
26
+ * </div>
27
+ * );
28
+ *}
29
+ *```
7
30
  */
8
31
  export declare function useReactFlow<NodeType extends Node = Node, EdgeType extends Edge = Edge>(): ReactFlowInstance<NodeType, EdgeType>;
9
32
  //# sourceMappingURL=useReactFlow.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"useReactFlow.d.ts","sourceRoot":"","sources":["../../src/hooks/useReactFlow.ts"],"names":[],"mappings":"AAiBA,OAAO,KAAK,EAAE,iBAAiB,EAAE,IAAI,EAAE,IAAI,EAAgD,MAAM,UAAU,CAAC;AAI5G;;;;;GAKG;AACH,wBAAgB,YAAY,CAAC,QAAQ,SAAS,IAAI,GAAG,IAAI,EAAE,QAAQ,SAAS,IAAI,GAAG,IAAI,KAAK,iBAAiB,CAC3G,QAAQ,EACR,QAAQ,CACT,CAsOA"}
1
+ {"version":3,"file":"useReactFlow.d.ts","sourceRoot":"","sources":["../../src/hooks/useReactFlow.ts"],"names":[],"mappings":"AAiBA,OAAO,KAAK,EAAE,iBAAiB,EAAE,IAAI,EAAE,IAAI,EAAgD,MAAM,UAAU,CAAC;AAI5G;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AACH,wBAAgB,YAAY,CAAC,QAAQ,SAAS,IAAI,GAAG,IAAI,EAAE,QAAQ,SAAS,IAAI,GAAG,IAAI,KAAK,iBAAiB,CAC3G,QAAQ,EACR,QAAQ,CACT,CAsOA"}
@@ -1,6 +1,8 @@
1
1
  import type { Edge, Node, ReactFlowState } from '../types';
2
2
  /**
3
- * Hook for accessing the internal store. Should only be used in rare cases.
3
+ * This hook can be used to subscribe to internal state changes of the React Flow
4
+ * component. The `useStore` hook is re-exported from the [Zustand](https://github.com/pmndrs/zustand)
5
+ * state management library, so you should check out their docs for more details.
4
6
  *
5
7
  * @public
6
8
  * @param selector
@@ -8,10 +10,29 @@ import type { Edge, Node, ReactFlowState } from '../types';
8
10
  * @returns The selected state slice
9
11
  *
10
12
  * @example
11
- * const nodes = useStore((state: ReactFlowState<MyNodeType>) => state.nodes);
13
+ * ```ts
14
+ * const nodes = useStore((state) => state.nodes);
15
+ * ```
12
16
  *
17
+ * @remarks This hook should only be used if there is no other way to access the internal
18
+ * state. For many of the common use cases, there are dedicated hooks available
19
+ * such as {@link useReactFlow}, {@link useViewport}, etc.
13
20
  */
14
21
  declare function useStore<StateSlice = unknown>(selector: (state: ReactFlowState) => StateSlice, equalityFn?: (a: StateSlice, b: StateSlice) => boolean): StateSlice;
22
+ /**
23
+ * In some cases, you might need to access the store directly. This hook returns the store object which can be used on demand to access the state or dispatch actions.
24
+ *
25
+ * @returns The store object
26
+ *
27
+ * @example
28
+ * ```ts
29
+ * const store = useStoreApi();
30
+ * ```
31
+ *
32
+ * @remarks This hook should only be used if there is no other way to access the internal
33
+ * state. For many of the common use cases, there are dedicated hooks available
34
+ * such as {@link useReactFlow}, {@link useViewport}, etc.
35
+ */
15
36
  declare function useStoreApi<NodeType extends Node = Node, EdgeType extends Edge = Edge>(): {
16
37
  getState: () => ReactFlowState<NodeType, EdgeType>;
17
38
  setState: (partial: ReactFlowState<NodeType, EdgeType> | Partial<ReactFlowState<NodeType, EdgeType>> | ((state: ReactFlowState<NodeType, EdgeType>) => ReactFlowState<NodeType, EdgeType> | Partial<ReactFlowState<NodeType, EdgeType>>), replace?: boolean | undefined) => void;
@@ -1 +1 @@
1
- {"version":3,"file":"useStore.d.ts","sourceRoot":"","sources":["../../src/hooks/useStore.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AAI3D;;;;;;;;;;;GAWG;AACH,iBAAS,QAAQ,CAAC,UAAU,GAAG,OAAO,EACpC,QAAQ,EAAE,CAAC,KAAK,EAAE,cAAc,KAAK,UAAU,EAC/C,UAAU,CAAC,EAAE,CAAC,CAAC,EAAE,UAAU,EAAE,CAAC,EAAE,UAAU,KAAK,OAAO,cASvD;AAED,iBAAS,WAAW,CAAC,QAAQ,SAAS,IAAI,GAAG,IAAI,EAAE,QAAQ,SAAS,IAAI,GAAG,IAAI;;;;EAiB9E;AAED,OAAO,EAAE,QAAQ,EAAE,WAAW,EAAE,CAAC"}
1
+ {"version":3,"file":"useStore.d.ts","sourceRoot":"","sources":["../../src/hooks/useStore.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AAI3D;;;;;;;;;;;;;;;;;;GAkBG;AACH,iBAAS,QAAQ,CAAC,UAAU,GAAG,OAAO,EACpC,QAAQ,EAAE,CAAC,KAAK,EAAE,cAAc,KAAK,UAAU,EAC/C,UAAU,CAAC,EAAE,CAAC,CAAC,EAAE,UAAU,EAAE,CAAC,EAAE,UAAU,KAAK,OAAO,cASvD;AAED;;;;;;;;;;;;;GAaG;AACH,iBAAS,WAAW,CAAC,QAAQ,SAAS,IAAI,GAAG,IAAI,EAAE,QAAQ,SAAS,IAAI,GAAG,IAAI;;;;EAiB9E;AAED,OAAO,EAAE,QAAQ,EAAE,WAAW,EAAE,CAAC"}
@@ -1,9 +1,47 @@
1
1
  import type { UpdateNodeInternals } from '@xyflow/system';
2
2
  /**
3
- * Hook for updating node internals.
3
+ * When you programmatically add or remove handles to a node or update a node's
4
+ *handle position, you need to let React Flow know about it using this hook. This
5
+ *will update the internal dimensions of the node and properly reposition handles
6
+ *on the canvas if necessary.
4
7
  *
5
8
  * @public
6
9
  * @returns function for updating node internals
10
+ *
11
+ * @example
12
+ * ```jsx
13
+ *import { useCallback, useState } from 'react';
14
+ *import { Handle, useUpdateNodeInternals } from '@xyflow/react';
15
+ *
16
+ *export default function RandomHandleNode({ id }) {
17
+ * const updateNodeInternals = useUpdateNodeInternals();
18
+ * const [handleCount, setHandleCount] = useState(0);
19
+ * const randomizeHandleCount = useCallback(() => {
20
+ * setHandleCount(Math.floor(Math.random() * 10));
21
+ * updateNodeInternals(id);
22
+ * }, [id, updateNodeInternals]);
23
+ *
24
+ * return (
25
+ * <>
26
+ * {Array.from({ length: handleCount }).map((_, index) => (
27
+ * <Handle
28
+ * key={index}
29
+ * type="target"
30
+ * position="left"
31
+ * id={`handle-${index}`}
32
+ * />
33
+ * ))}
34
+ *
35
+ * <div>
36
+ * <button onClick={randomizeHandleCount}>Randomize handle count</button>
37
+ * <p>There are {handleCount} handles on this node.</p>
38
+ * </div>
39
+ * </>
40
+ * );
41
+ *}
42
+ *```
43
+ * @remarks This hook can only be used in a component that is a child of a
44
+ *{@link ReactFlowProvider} or a {@link ReactFlow} component.
7
45
  */
8
46
  export declare function useUpdateNodeInternals(): UpdateNodeInternals;
9
47
  //# sourceMappingURL=useUpdateNodeInternals.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"useUpdateNodeInternals.d.ts","sourceRoot":"","sources":["../../src/hooks/useUpdateNodeInternals.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,mBAAmB,EAAsB,MAAM,gBAAgB,CAAC;AAI9E;;;;;GAKG;AACH,wBAAgB,sBAAsB,IAAI,mBAAmB,CAkB5D"}
1
+ {"version":3,"file":"useUpdateNodeInternals.d.ts","sourceRoot":"","sources":["../../src/hooks/useUpdateNodeInternals.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,mBAAmB,EAAsB,MAAM,gBAAgB,CAAC;AAI9E;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2CG;AACH,wBAAgB,sBAAsB,IAAI,mBAAmB,CAkB5D"}
@@ -1,9 +1,32 @@
1
1
  import type { Viewport } from '@xyflow/system';
2
2
  /**
3
- * Hook for getting the current viewport from the store.
3
+ * The `useViewport` hook is a convenient way to read the current state of the
4
+ *{@link Viewport} in a component. Components that use this hook
5
+ *will re-render **whenever the viewport changes**.
4
6
  *
5
7
  * @public
6
8
  * @returns The current viewport
9
+ *
10
+ * @example
11
+ *
12
+ *```jsx
13
+ *import { useViewport } from '@xyflow/react';
14
+ *
15
+ *export default function ViewportDisplay() {
16
+ * const { x, y, zoom } = useViewport();
17
+ *
18
+ * return (
19
+ * <div>
20
+ * <p>
21
+ * The viewport is currently at ({x}, {y}) and zoomed to {zoom}.
22
+ * </p>
23
+ * </div>
24
+ * );
25
+ *}
26
+ *```
27
+ *
28
+ * @remarks This hook can only be used in a component that is a child of a
29
+ *{@link ReactFlowProvider} or a {@link ReactFlow} component.
7
30
  */
8
31
  export declare function useViewport(): Viewport;
9
32
  //# sourceMappingURL=useViewport.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"useViewport.d.ts","sourceRoot":"","sources":["../../src/hooks/useViewport.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAW/C;;;;;GAKG;AACH,wBAAgB,WAAW,IAAI,QAAQ,CAItC"}
1
+ {"version":3,"file":"useViewport.d.ts","sourceRoot":"","sources":["../../src/hooks/useViewport.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAW/C;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AACH,wBAAgB,WAAW,IAAI,QAAQ,CAItC"}
@@ -1 +1 @@
1
- {"version":3,"file":"useViewportHelper.d.ts","sourceRoot":"","sources":["../../src/hooks/useViewportHelper.ts"],"names":[],"mappings":"AAYA,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,UAAU,CAAC;AAExD;;;;;GAKG;AACH,QAAA,MAAM,iBAAiB,QAAO,uBAsI7B,CAAC;AAEF,eAAe,iBAAiB,CAAC"}
1
+ {"version":3,"file":"useViewportHelper.d.ts","sourceRoot":"","sources":["../../src/hooks/useViewportHelper.ts"],"names":[],"mappings":"AAaA,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,UAAU,CAAC;AAExD;;;;;GAKG;AACH,QAAA,MAAM,iBAAiB,QAAO,uBA0I7B,CAAC;AAEF,eAAe,iBAAiB,CAAC"}