summaryrefslogtreecommitdiff
path: root/apps/web/src/stores/timeline-store.ts
diff options
context:
space:
mode:
Diffstat (limited to 'apps/web/src/stores/timeline-store.ts')
-rw-r--r--apps/web/src/stores/timeline-store.ts25
1 files changed, 24 insertions, 1 deletions
diff --git a/apps/web/src/stores/timeline-store.ts b/apps/web/src/stores/timeline-store.ts
index 6d1a0bd1..6de24c84 100644
--- a/apps/web/src/stores/timeline-store.ts
+++ b/apps/web/src/stores/timeline-store.ts
@@ -87,6 +87,11 @@ interface TimelineStore {
trimStart: number,
trimEnd: number
) => void;
+ updateElementDuration: (
+ trackId: string,
+ elementId: string,
+ duration: number
+ ) => void;
updateElementStartTime: (
trackId: string,
elementId: string,
@@ -284,7 +289,9 @@ export const useTimelineStore = create<TimelineStore>((set, get) => {
removeTrack: (trackId) => {
get().pushHistory();
- updateTracksAndSave(get()._tracks.filter((track) => track.id !== trackId));
+ updateTracksAndSave(
+ get()._tracks.filter((track) => track.id !== trackId)
+ );
},
addElementToTrack: (trackId, elementData) => {
@@ -439,6 +446,22 @@ export const useTimelineStore = create<TimelineStore>((set, get) => {
);
},
+ updateElementDuration: (trackId, elementId, duration) => {
+ get().pushHistory();
+ updateTracksAndSave(
+ get()._tracks.map((track) =>
+ track.id === trackId
+ ? {
+ ...track,
+ elements: track.elements.map((element) =>
+ element.id === elementId ? { ...element, duration } : element
+ ),
+ }
+ : track
+ )
+ );
+ },
+
updateElementStartTime: (trackId, elementId, startTime) => {
get().pushHistory();
updateTracksAndSave(