diff options
| author | Maze Winther <mazewinther@gmail.com> | 2026-02-23 06:56:05 +0100 |
|---|---|---|
| committer | Maze Winther <mazewinther@gmail.com> | 2026-02-23 06:56:05 +0100 |
| commit | 1762dc077dd512f6e8afff855b1ca6696338e0be (patch) | |
| tree | 7b951308c80ab17b77e9a8c4dc9933eaaae4295a /apps/web/src/stores | |
| parent | a982304bb3af7d3a26be1bfbd38eb0a67b2ff42d (diff) | |
| download | opencut-1762dc077dd512f6e8afff855b1ca6696338e0be.tar.gz | |
persist snapping + ripple
Diffstat (limited to 'apps/web/src/stores')
| -rw-r--r-- | apps/web/src/stores/timeline-store.ts | 44 |
1 files 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<TimelineStore>((set) => ({ - snappingEnabled: true, +export const useTimelineStore = create<TimelineStore>()( + 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, + }), + }, + ), +); |
