ruv commited on
Commit
94e07f6
·
verified ·
1 Parent(s): b8cc9bf

Create nodes-edges.jsnodes-edges.js

Browse files
Files changed (1) hide show
  1. src/nodes-edges.jsnodes-edges.js +49 -0
src/nodes-edges.jsnodes-edges.js ADDED
@@ -0,0 +1,49 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import React, { useCallback } from 'react';
2
+ import ReactFlow, {
3
+ ReactFlowProvider,
4
+ useNodesState,
5
+ useEdgesState,
6
+ useReactFlow,
7
+ } from 'reactflow';
8
+
9
+ import { initialNodes, initialEdges } from './nodes-edges.js';
10
+ import 'reactflow/dist/style.css';
11
+
12
+ const getLayoutedElements = (nodes, edges) => {
13
+ return { nodes, edges };
14
+ };
15
+
16
+ const LayoutFlow = () => {
17
+ const { fitView } = useReactFlow();
18
+ const [nodes, setNodes, onNodesChange] = useNodesState(initialNodes);
19
+ const [edges, setEdges, onEdgesChange] = useEdgesState(initialEdges);
20
+
21
+ const onLayout = useCallback(() => {
22
+ const layouted = getLayoutedElements(nodes, edges);
23
+
24
+ setNodes([...layouted.nodes]);
25
+ setEdges([...layouted.edges]);
26
+
27
+ window.requestAnimationFrame(() => {
28
+ fitView();
29
+ });
30
+ }, [nodes, edges]);
31
+
32
+ return (
33
+ <ReactFlow
34
+ nodes={nodes}
35
+ edges={edges}
36
+ onNodesChange={onNodesChange}
37
+ onEdgesChange={onEdgesChange}
38
+ fitView
39
+ />
40
+ );
41
+ };
42
+
43
+ export default function () {
44
+ return (
45
+ <ReactFlowProvider>
46
+ <LayoutFlow />
47
+ </ReactFlowProvider>
48
+ );
49
+ }