// import { useState, useCallback, type Dispatch, type SetStateAction } from 'react'; import { applyNodeChanges, applyEdgeChanges } from '../utils/changes'; import type { Node, Edge, OnNodesChange, OnEdgesChange } from '../types'; import { Accessor, Setter, createSignal } from 'solid-js'; /** * Hook for managing the state of nodes - should only be used for prototyping / simple use cases. * * @public * @param initialNodes * @returns an array [nodes, setNodes, onNodesChange] */ export function useNodesState( initialNodes: NodeType[] ): [Accessor, Setter, OnNodesChange] { const [nodes, setNodes] = createSignal(initialNodes); const onNodesChange: OnNodesChange = (changes) => setNodes((nds) => applyNodeChanges(changes, nds)); return [nodes, setNodes, onNodesChange]; } /** * Hook for managing the state of edges - should only be used for prototyping / simple use cases. * * @public * @param initialEdges * @returns an array [edges, setEdges, onEdgesChange] */ export function useEdgesState( initialEdges: EdgeType[] ): [Accessor,Setter, OnEdgesChange] { const [edges, setEdges] = createSignal(initialEdges); const onEdgesChange: OnEdgesChange = (changes) => setEdges((eds) => applyEdgeChanges(changes, eds)); return [edges, setEdges, onEdgesChange]; }