chore(react/store): cleanup
This commit is contained in:
@@ -56,18 +56,19 @@ const initialEdges: Edge[] = [
|
|||||||
const defaultEdgeOptions = {};
|
const defaultEdgeOptions = {};
|
||||||
|
|
||||||
const BasicFlow = () => {
|
const BasicFlow = () => {
|
||||||
const { setNodes, getNodes, setEdges, getEdges, deleteElements, updateNodeData, toObject, setViewport } =
|
const { addNodes, setNodes, getNodes, setEdges, getEdges, deleteElements, updateNodeData, toObject, setViewport } =
|
||||||
useReactFlow();
|
useReactFlow();
|
||||||
|
|
||||||
const updatePos = () => {
|
const updatePos = () => {
|
||||||
setNodes((nodes) =>
|
setNodes((nodes) =>
|
||||||
nodes.map((node) => {
|
nodes.map((node) => {
|
||||||
node.position = {
|
return {
|
||||||
x: Math.random() * 400,
|
...node,
|
||||||
y: Math.random() * 400,
|
position: {
|
||||||
|
x: Math.random() * 400,
|
||||||
|
y: Math.random() * 400,
|
||||||
|
},
|
||||||
};
|
};
|
||||||
|
|
||||||
return node;
|
|
||||||
})
|
})
|
||||||
);
|
);
|
||||||
};
|
};
|
||||||
@@ -78,9 +79,10 @@ const BasicFlow = () => {
|
|||||||
const toggleClassnames = () => {
|
const toggleClassnames = () => {
|
||||||
setNodes((nodes) =>
|
setNodes((nodes) =>
|
||||||
nodes.map((node) => {
|
nodes.map((node) => {
|
||||||
node.className = node.className === 'light' ? 'dark' : 'light';
|
return {
|
||||||
|
...node,
|
||||||
return node;
|
className: node.className === 'light' ? 'dark' : 'light',
|
||||||
|
};
|
||||||
})
|
})
|
||||||
);
|
);
|
||||||
};
|
};
|
||||||
@@ -108,6 +110,14 @@ const BasicFlow = () => {
|
|||||||
updateNodeData('1', { label: 'update' });
|
updateNodeData('1', { label: 'update' });
|
||||||
updateNodeData('2', { label: 'update' });
|
updateNodeData('2', { label: 'update' });
|
||||||
};
|
};
|
||||||
|
const addNode = () => {
|
||||||
|
addNodes({
|
||||||
|
id: `${Math.random()}`,
|
||||||
|
data: { label: 'Node' },
|
||||||
|
position: { x: Math.random() * 300, y: Math.random() * 300 },
|
||||||
|
className: 'light',
|
||||||
|
});
|
||||||
|
};
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<ReactFlow
|
<ReactFlow
|
||||||
@@ -144,6 +154,7 @@ const BasicFlow = () => {
|
|||||||
<button onClick={deleteSomeElements}>deleteSomeElements</button>
|
<button onClick={deleteSomeElements}>deleteSomeElements</button>
|
||||||
<button onClick={onSetNodes}>setNodes</button>
|
<button onClick={onSetNodes}>setNodes</button>
|
||||||
<button onClick={onUpdateNode}>updateNode</button>
|
<button onClick={onUpdateNode}>updateNode</button>
|
||||||
|
<button onClick={addNode}>addNode</button>
|
||||||
</Panel>
|
</Panel>
|
||||||
</ReactFlow>
|
</ReactFlow>
|
||||||
);
|
);
|
||||||
|
|||||||
@@ -138,7 +138,6 @@ export function StoreUpdater<NodeType extends Node = Node, EdgeType extends Edge
|
|||||||
|
|
||||||
if (fieldValue === previousFieldValue) continue;
|
if (fieldValue === previousFieldValue) continue;
|
||||||
if (typeof props[fieldName] === 'undefined') continue;
|
if (typeof props[fieldName] === 'undefined') continue;
|
||||||
|
|
||||||
// Custom handling with dedicated setters for some fields
|
// Custom handling with dedicated setters for some fields
|
||||||
if (fieldName === 'nodes') setNodes(fieldValue as Node[]);
|
if (fieldName === 'nodes') setNodes(fieldValue as Node[]);
|
||||||
else if (fieldName === 'edges') setEdges(fieldValue as Edge[]);
|
else if (fieldName === 'edges') setEdges(fieldValue as Edge[]);
|
||||||
|
|||||||
@@ -73,7 +73,6 @@ const createRFStore = ({
|
|||||||
// new dimensions and update the nodes.
|
// new dimensions and update the nodes.
|
||||||
updateNodeDimensions: (updates) => {
|
updateNodeDimensions: (updates) => {
|
||||||
const {
|
const {
|
||||||
nodes,
|
|
||||||
onNodesChange,
|
onNodesChange,
|
||||||
fitView,
|
fitView,
|
||||||
nodeLookup,
|
nodeLookup,
|
||||||
@@ -98,7 +97,7 @@ const createRFStore = ({
|
|||||||
if (!fitViewDone && fitViewOnInit) {
|
if (!fitViewDone && fitViewOnInit) {
|
||||||
nextFitViewDone = fitView({
|
nextFitViewDone = fitView({
|
||||||
...fitViewOnInitOptions,
|
...fitViewOnInitOptions,
|
||||||
nodes: fitViewOnInitOptions?.nodes || nodes,
|
nodes: fitViewOnInitOptions?.nodes,
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -107,7 +106,7 @@ const createRFStore = ({
|
|||||||
// has not provided an onNodesChange handler.
|
// has not provided an onNodesChange handler.
|
||||||
// Nodes are only rendered if they have a width and height
|
// Nodes are only rendered if they have a width and height
|
||||||
// attribute which they get from this handler.
|
// attribute which they get from this handler.
|
||||||
set({ nodes, fitViewDone: nextFitViewDone });
|
set({ fitViewDone: nextFitViewDone });
|
||||||
|
|
||||||
if (changes?.length > 0) {
|
if (changes?.length > 0) {
|
||||||
if (debug) {
|
if (debug) {
|
||||||
|
|||||||
Reference in New Issue
Block a user