|
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<typeof initialStates & ConfigActions>( |
|
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; |
|
|