From 1762dc077dd512f6e8afff855b1ca6696338e0be Mon Sep 17 00:00:00 2001 From: Maze Winther Date: Mon, 23 Feb 2026 06:56:05 +0100 Subject: [PATCH] persist snapping + ripple --- apps/web/src/stores/timeline-store.ts | 44 +++++++++++++++++---------- 1 file changed, 28 insertions(+), 16 deletions(-) diff --git a/apps/web/src/stores/timeline-store.ts b/apps/web/src/stores/timeline-store.ts index 7b555cd9..e5723bfa 100644 --- a/apps/web/src/stores/timeline-store.ts +++ b/apps/web/src/stores/timeline-store.ts @@ -4,6 +4,7 @@ */ import { create } from "zustand"; +import { persist } from "zustand/middleware"; import type { ClipboardItem } from "@/types/timeline"; interface TimelineStore { @@ -21,24 +22,35 @@ interface TimelineStore { ) => void; } -export const useTimelineStore = create((set) => ({ - snappingEnabled: true, +export const useTimelineStore = create()( + persist( + (set) => ({ + snappingEnabled: true, - toggleSnapping: () => { - set((state) => ({ snappingEnabled: !state.snappingEnabled })); - }, + toggleSnapping: () => { + set((state) => ({ snappingEnabled: !state.snappingEnabled })); + }, - rippleEditingEnabled: false, + rippleEditingEnabled: false, - toggleRippleEditing: () => { - set((state) => ({ - rippleEditingEnabled: !state.rippleEditingEnabled, - })); - }, + toggleRippleEditing: () => { + set((state) => ({ + rippleEditingEnabled: !state.rippleEditingEnabled, + })); + }, - clipboard: null, + clipboard: null, - setClipboard: (clipboard) => { - set({ clipboard }); - }, -})); + setClipboard: (clipboard) => { + set({ clipboard }); + }, + }), + { + name: "timeline-store", + partialize: (state) => ({ + snappingEnabled: state.snappingEnabled, + rippleEditingEnabled: state.rippleEditingEnabled, + }), + }, + ), +);