@eventcatalogtest/studio
Version:
A drag and drop UI for distributed systems that keeps your diagrams where they belong – in your repo
28 lines (23 loc) • 853 B
text/typescript
// Create a zustand store to manage notifications
import { registeredNodeTypes, nodeCategories } from '@/components/core/designer/nodes/index';
import { create } from 'zustand';
interface Node {
type: string;
configuration: any;
category: string;
rules: any;
}
interface NodesStore {
nodes: any
nodeCategories: any
registerNode: (node: Node) => void;
getNodeConfiguration: (type: string) => any;
}
export const useNodesStore = create<NodesStore>((set) => ({
nodes: registeredNodeTypes ? [...registeredNodeTypes] : [],
nodeCategories: nodeCategories ? [...nodeCategories] : [],
registerNode: (node: Node) => set((state) => ({ nodes: [...state.nodes, node] })),
getNodeConfiguration: (type: string) => {
return registeredNodeTypes?.find((node) => node.type === type)?.configuration;
},
}));