Add zustand dev tools

This commit is contained in:
schroda
2025-09-22 00:50:34 +02:00
parent f6b94c838b
commit b6d7f6da5d
11 changed files with 325 additions and 147 deletions

View File

@@ -6,7 +6,7 @@
* file, You can obtain one at https://mozilla.org/MPL/2.0/.
*/
import { ImmerStateCreator } from '@/lib/zustand/Zustand.types.ts';
import { SliceCreator } from '@/lib/zustand/Zustand.types.ts';
export interface ReaderOverlayStoreSlice {
overlay: {
@@ -21,14 +21,18 @@ const DEFAULT_STATE = {
} satisfies Pick<ReaderOverlayStoreSlice['overlay'], 'isVisible'>;
export const createReaderOverlayStoreSlice = <T extends ReaderOverlayStoreSlice>(
...[set, get]: Parameters<ImmerStateCreator<T>>
...[createActionName, set, get]: Parameters<SliceCreator<T>>
): ReaderOverlayStoreSlice => ({
overlay: {
isVisible: DEFAULT_STATE.isVisible,
setIsVisible: (visible) =>
set((draft) => {
draft.overlay.isVisible = visible;
}),
set(
(draft) => {
draft.overlay.isVisible = visible;
},
undefined,
createActionName('setIsVisible'),
),
reset: () => ({ overlay: { ...get().overlay, ...DEFAULT_STATE } }),
},
});

View File

@@ -6,7 +6,7 @@
* file, You can obtain one at https://mozilla.org/MPL/2.0/.
*/
import { ImmerStateCreator } from '@/lib/zustand/Zustand.types.ts';
import { SliceCreator } from '@/lib/zustand/Zustand.types.ts';
import { TReaderProgressBarContext } from '@/features/reader/overlay/progress-bar/ReaderProgressBar.types.ts';
export interface ReaderProgressBarStoreSlice {
@@ -21,18 +21,26 @@ const DEFAULT_STATE = {
} satisfies Pick<ReaderProgressBarStoreSlice['progressBar'], 'isDragging' | 'isMaximized'>;
export const createReaderProgressBarStoreSlice = <T extends ReaderProgressBarStoreSlice>(
...[set, get]: Parameters<ImmerStateCreator<T>>
...[createActionName, set, get]: Parameters<SliceCreator<T>>
): ReaderProgressBarStoreSlice => ({
progressBar: {
...DEFAULT_STATE,
setIsMaximized: (maximized) =>
set((draft) => {
draft.progressBar.isMaximized = maximized;
}),
set(
(draft) => {
draft.progressBar.isMaximized = maximized;
},
undefined,
createActionName('setIsMaximized'),
),
setIsDragging: (dragging) =>
set((draft) => {
draft.progressBar.isDragging = dragging;
}),
set(
(draft) => {
draft.progressBar.isDragging = dragging;
},
undefined,
createActionName('setIsDragging'),
),
reset: () => ({ progressBar: { ...get().progressBar, ...DEFAULT_STATE } }),
},
});