Update src/App.tsx
Browse files- src/App.tsx +34 -1
src/App.tsx
CHANGED
|
@@ -1,4 +1,4 @@
|
|
| 1 |
-
import React, { useCallback } from 'react';
|
| 2 |
import ReactFlow, { Controls, useNodesState, useEdgesState, addEdge, Node, Edge } from 'reactflow';
|
| 3 |
import { FiFile } from 'react-icons/fi';
|
| 4 |
|
|
@@ -131,9 +131,25 @@ const defaultEdgeOptions = {
|
|
| 131 |
const App = () => {
|
| 132 |
const [nodes, setNodes, onNodesChange] = useNodesState(initialNodes);
|
| 133 |
const [edges, setEdges, onEdgesChange] = useEdgesState(initialEdges);
|
|
|
|
|
|
|
| 134 |
|
| 135 |
const onConnect = useCallback((params) => setEdges((els) => addEdge(params, els)), []);
|
| 136 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 137 |
return (
|
| 138 |
<div className="flow-container">
|
| 139 |
<ReactFlow
|
|
@@ -170,6 +186,23 @@ const App = () => {
|
|
| 170 |
</defs>
|
| 171 |
</svg>
|
| 172 |
</ReactFlow>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 173 |
</div>
|
| 174 |
);
|
| 175 |
};
|
|
|
|
| 1 |
+
import React, { useCallback, useState } from 'react';
|
| 2 |
import ReactFlow, { Controls, useNodesState, useEdgesState, addEdge, Node, Edge } from 'reactflow';
|
| 3 |
import { FiFile } from 'react-icons/fi';
|
| 4 |
|
|
|
|
| 131 |
const App = () => {
|
| 132 |
const [nodes, setNodes, onNodesChange] = useNodesState(initialNodes);
|
| 133 |
const [edges, setEdges, onEdgesChange] = useEdgesState(initialEdges);
|
| 134 |
+
const [recursiveSteps, setRecursiveSteps] = useState(1);
|
| 135 |
+
const [inputData, setInputData] = useState('');
|
| 136 |
|
| 137 |
const onConnect = useCallback((params) => setEdges((els) => addEdge(params, els)), []);
|
| 138 |
|
| 139 |
+
const addRecursiveStep = () => {
|
| 140 |
+
setRecursiveSteps((prevSteps) => prevSteps + 1);
|
| 141 |
+
};
|
| 142 |
+
|
| 143 |
+
const removeRecursiveStep = () => {
|
| 144 |
+
if (recursiveSteps > 1) {
|
| 145 |
+
setRecursiveSteps((prevSteps) => prevSteps - 1);
|
| 146 |
+
}
|
| 147 |
+
};
|
| 148 |
+
|
| 149 |
+
const handleInputChange = (event) => {
|
| 150 |
+
setInputData(event.target.value);
|
| 151 |
+
};
|
| 152 |
+
|
| 153 |
return (
|
| 154 |
<div className="flow-container">
|
| 155 |
<ReactFlow
|
|
|
|
| 186 |
</defs>
|
| 187 |
</svg>
|
| 188 |
</ReactFlow>
|
| 189 |
+
<div className="options-panel">
|
| 190 |
+
<div>
|
| 191 |
+
<label>Recursive Steps:</label>
|
| 192 |
+
<input
|
| 193 |
+
type="number"
|
| 194 |
+
value={recursiveSteps}
|
| 195 |
+
min={1}
|
| 196 |
+
onChange={(e) => setRecursiveSteps(parseInt(e.target.value))}
|
| 197 |
+
/>
|
| 198 |
+
<button onClick={addRecursiveStep}>+</button>
|
| 199 |
+
<button onClick={removeRecursiveStep}>-</button>
|
| 200 |
+
</div>
|
| 201 |
+
<div>
|
| 202 |
+
<label>Input Data:</label>
|
| 203 |
+
<textarea value={inputData} onChange={handleInputChange} />
|
| 204 |
+
</div>
|
| 205 |
+
</div>
|
| 206 |
</div>
|
| 207 |
);
|
| 208 |
};
|