Compare commits
4 Commits
proj-styli
...
output-wra
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
b2af83341d | ||
|
|
e6d229d5f9 | ||
|
|
1a6ae3aef7 | ||
|
|
6c060c6ea0 |
@@ -191,7 +191,7 @@ export default function OutputCell({
|
|||||||
|
|
||||||
return (
|
return (
|
||||||
<CellWrapper>
|
<CellWrapper>
|
||||||
<Text>{contentToDisplay}</Text>
|
<Text whiteSpace="pre-wrap">{contentToDisplay}</Text>
|
||||||
</CellWrapper>
|
</CellWrapper>
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|||||||
13
app/src/state/persist.ts
Normal file
13
app/src/state/persist.ts
Normal file
@@ -0,0 +1,13 @@
|
|||||||
|
import { PersistOptions } from "zustand/middleware/persist";
|
||||||
|
import { State } from "./store";
|
||||||
|
|
||||||
|
export const stateToPersist = {
|
||||||
|
selectedProjectId: null as string | null,
|
||||||
|
};
|
||||||
|
|
||||||
|
export const persistOptions: PersistOptions<State, typeof stateToPersist> = {
|
||||||
|
name: "persisted-app-store",
|
||||||
|
partialize: (state) => ({
|
||||||
|
selectedProjectId: state.selectedProjectId,
|
||||||
|
}),
|
||||||
|
};
|
||||||
@@ -1,11 +1,13 @@
|
|||||||
import { type StateCreator, create } from "zustand";
|
import { type StateCreator, create } from "zustand";
|
||||||
import { immer } from "zustand/middleware/immer";
|
import { immer } from "zustand/middleware/immer";
|
||||||
|
import { persist } from "zustand/middleware";
|
||||||
import { createSelectors } from "./createSelectors";
|
import { createSelectors } from "./createSelectors";
|
||||||
import {
|
import {
|
||||||
type SharedVariantEditorSlice,
|
type SharedVariantEditorSlice,
|
||||||
createVariantEditorSlice,
|
createVariantEditorSlice,
|
||||||
} from "./sharedVariantEditor.slice";
|
} from "./sharedVariantEditor.slice";
|
||||||
import { type APIClient } from "~/utils/api";
|
import { type APIClient } from "~/utils/api";
|
||||||
|
import { persistOptions, stateToPersist } from "./persist";
|
||||||
|
|
||||||
export type State = {
|
export type State = {
|
||||||
drawerOpen: boolean;
|
drawerOpen: boolean;
|
||||||
@@ -23,30 +25,36 @@ export type SliceCreator<T> = StateCreator<State, [["zustand/immer", never]], []
|
|||||||
export type SetFn = Parameters<SliceCreator<unknown>>[0];
|
export type SetFn = Parameters<SliceCreator<unknown>>[0];
|
||||||
export type GetFn = Parameters<SliceCreator<unknown>>[1];
|
export type GetFn = Parameters<SliceCreator<unknown>>[1];
|
||||||
|
|
||||||
const useBaseStore = create<State, [["zustand/immer", never]]>(
|
const useBaseStore = create<
|
||||||
immer((set, get, ...rest) => ({
|
State,
|
||||||
api: null,
|
[["zustand/persist", typeof stateToPersist], ["zustand/immer", never]]
|
||||||
setApi: (api) =>
|
>(
|
||||||
set((state) => {
|
persist(
|
||||||
state.api = api;
|
immer((set, get, ...rest) => ({
|
||||||
}),
|
api: null,
|
||||||
|
setApi: (api) =>
|
||||||
|
set((state) => {
|
||||||
|
state.api = api;
|
||||||
|
}),
|
||||||
|
|
||||||
drawerOpen: false,
|
drawerOpen: false,
|
||||||
openDrawer: () =>
|
openDrawer: () =>
|
||||||
set((state) => {
|
set((state) => {
|
||||||
state.drawerOpen = true;
|
state.drawerOpen = true;
|
||||||
}),
|
}),
|
||||||
closeDrawer: () =>
|
closeDrawer: () =>
|
||||||
set((state) => {
|
set((state) => {
|
||||||
state.drawerOpen = false;
|
state.drawerOpen = false;
|
||||||
}),
|
}),
|
||||||
sharedVariantEditor: createVariantEditorSlice(set, get, ...rest),
|
sharedVariantEditor: createVariantEditorSlice(set, get, ...rest),
|
||||||
selectedProjectId: null,
|
selectedProjectId: null,
|
||||||
setselectedProjectId: (id: string) =>
|
setselectedProjectId: (id: string) =>
|
||||||
set((state) => {
|
set((state) => {
|
||||||
state.selectedProjectId = id;
|
state.selectedProjectId = id;
|
||||||
}),
|
}),
|
||||||
})),
|
})),
|
||||||
|
persistOptions,
|
||||||
|
),
|
||||||
);
|
);
|
||||||
|
|
||||||
export const useAppStore = createSelectors(useBaseStore);
|
export const useAppStore = createSelectors(useBaseStore);
|
||||||
|
|||||||
Reference in New Issue
Block a user