mirror of
https://github.com/OpenCut-app/OpenCut.git
synced 2026-07-13 21:52:53 +02:00
45 lines
871 B
TypeScript
45 lines
871 B
TypeScript
/**
|
|
* UI state for the timeline
|
|
* For core logic, use EditorCore instead.
|
|
*/
|
|
|
|
import { create } from "zustand";
|
|
import type { ClipboardItem } from "@/types/timeline";
|
|
|
|
interface TimelineStore {
|
|
snappingEnabled: boolean;
|
|
toggleSnapping: () => void;
|
|
rippleEditingEnabled: boolean;
|
|
toggleRippleEditing: () => void;
|
|
clipboard: {
|
|
items: ClipboardItem[];
|
|
} | null;
|
|
setClipboard: (
|
|
clipboard: {
|
|
items: ClipboardItem[];
|
|
} | null,
|
|
) => void;
|
|
}
|
|
|
|
export const useTimelineStore = create<TimelineStore>((set) => ({
|
|
snappingEnabled: true,
|
|
|
|
toggleSnapping: () => {
|
|
set((state) => ({ snappingEnabled: !state.snappingEnabled }));
|
|
},
|
|
|
|
rippleEditingEnabled: false,
|
|
|
|
toggleRippleEditing: () => {
|
|
set((state) => ({
|
|
rippleEditingEnabled: !state.rippleEditingEnabled,
|
|
}));
|
|
},
|
|
|
|
clipboard: null,
|
|
|
|
setClipboard: (clipboard) => {
|
|
set({ clipboard });
|
|
},
|
|
}));
|