mirror of
https://github.com/massbug/judge4c.git
synced 2025-05-18 15:26:33 +00:00
39 lines
1022 B
TypeScript
39 lines
1022 B
TypeScript
import { create } from "zustand";
|
|
import { persist } from "zustand/middleware";
|
|
|
|
interface TabsState {
|
|
problemTab: string;
|
|
workspaceTab: string;
|
|
hydrated: boolean;
|
|
setProblemTab: (value: string) => void;
|
|
setWorkspaceTab: (value: string) => void;
|
|
setHydrated: (value: boolean) => void;
|
|
}
|
|
|
|
export const useTabsStore = create<TabsState>()(
|
|
persist(
|
|
(set) => ({
|
|
problemTab: "description",
|
|
workspaceTab: "editor",
|
|
hydrated: false,
|
|
setProblemTab: (value) => set({ problemTab: value }),
|
|
setWorkspaceTab: (value) => set({ workspaceTab: value }),
|
|
setHydrated: (value) => set({ hydrated: value }),
|
|
}),
|
|
{
|
|
name: "tabs-active",
|
|
partialize: (state) => ({
|
|
problemTab: state.problemTab,
|
|
workspaceTab: state.workspaceTab,
|
|
}),
|
|
onRehydrateStorage: () => (state, error) => {
|
|
if (error) {
|
|
console.error("hydrate error", error);
|
|
} else if (state) {
|
|
state.setHydrated(true);
|
|
}
|
|
},
|
|
}
|
|
)
|
|
);
|