mirror of
https://github.com/cfngc4594/monaco-editor-lsp-next.git
synced 2025-05-19 07:56:34 +00:00
37 lines
942 B
TypeScript
37 lines
942 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",
|
||
|
onRehydrateStorage:
|
||
|
() =>
|
||
|
(state, error) => {
|
||
|
if (error) {
|
||
|
console.error("hydrate error", error);
|
||
|
} else if (state) {
|
||
|
state.setHydrated(true);
|
||
|
}
|
||
|
},
|
||
|
}
|
||
|
)
|
||
|
);
|