This commit is contained in:
Maze Winther
2025-07-15 14:16:54 +02:00
parent 5e86ed9efc
commit 1fdf2a0515
6 changed files with 214 additions and 361 deletions
-39
View File
@@ -44,19 +44,9 @@ interface TimelineStore {
// Snapping settings
snappingEnabled: boolean;
gridSnappingEnabled: boolean;
elementSnappingEnabled: boolean;
playheadSnappingEnabled: boolean;
snapThreshold: number;
gridInterval: number;
// Snapping actions
toggleSnapping: () => void;
toggleGridSnapping: () => void;
toggleElementSnapping: () => void;
togglePlayheadSnapping: () => void;
setSnapThreshold: (threshold: number) => void;
setGridInterval: (interval: number) => void;
// Multi-selection
selectedElements: { trackId: string; elementId: string }[];
@@ -221,11 +211,6 @@ export const useTimelineStore = create<TimelineStore>((set, get) => {
// Snapping settings defaults
snappingEnabled: true,
gridSnappingEnabled: true,
elementSnappingEnabled: true,
playheadSnappingEnabled: true,
snapThreshold: 10, // pixels
gridInterval: 1, // seconds
getSortedTracks: () => {
const { _tracks } = get();
@@ -978,29 +963,5 @@ export const useTimelineStore = create<TimelineStore>((set, get) => {
toggleSnapping: () => {
set((state) => ({ snappingEnabled: !state.snappingEnabled }));
},
toggleGridSnapping: () => {
set((state) => ({ gridSnappingEnabled: !state.gridSnappingEnabled }));
},
toggleElementSnapping: () => {
set((state) => ({
elementSnappingEnabled: !state.elementSnappingEnabled,
}));
},
togglePlayheadSnapping: () => {
set((state) => ({
playheadSnappingEnabled: !state.playheadSnappingEnabled,
}));
},
setSnapThreshold: (threshold) => {
set({ snapThreshold: Math.max(0, threshold) }); // Ensure non-negative threshold
},
setGridInterval: (interval) => {
set({ gridInterval: Math.max(0.1, interval) }); // Ensure minimum interval
},
};
});