import { create } from "zustand"; import { persist } from "zustand/middleware"; import { ViewMode } from "src/enums/viewMode.enum"; import useGraph from "./useGraph"; const initialStates = { darkmodeEnabled: false, collapseButtonVisible: true, childrenCountVisible: true, imagePreviewEnabled: true, liveTransformEnabled: true, gesturesEnabled: false, rulersEnabled: true, viewMode: ViewMode.Graph, aiEnabled: true, }; export interface ConfigActions { toggleDarkMode: (value: boolean) => void; toggleCollapseButton: (value: boolean) => void; toggleChildrenCount: (value: boolean) => void; toggleImagePreview: (value: boolean) => void; toggleLiveTransform: (value: boolean) => void; toggleGestures: (value: boolean) => void; toggleRulers: (value: boolean) => void; setViewMode: (value: ViewMode) => void; toggleAI: (value: boolean) => void; } const useConfig = create( persist( set => ({ ...initialStates, toggleAI: aiEnabled => set({ aiEnabled }), toggleRulers: rulersEnabled => set({ rulersEnabled }), toggleGestures: gesturesEnabled => set({ gesturesEnabled }), toggleLiveTransform: liveTransformEnabled => set({ liveTransformEnabled }), toggleDarkMode: darkmodeEnabled => set({ darkmodeEnabled }), toggleCollapseButton: collapseButtonVisible => set({ collapseButtonVisible }), toggleChildrenCount: childrenCountVisible => set({ childrenCountVisible }), toggleImagePreview: imagePreviewEnabled => { set({ imagePreviewEnabled }); useGraph.getState().setGraph(); }, setViewMode: viewMode => set({ viewMode }), }), { name: "config", } ) ); export default useConfig;