diff options
| author | Maze Winther <mazewinther@gmail.com> | 2026-04-15 05:43:29 +0200 |
|---|---|---|
| committer | Maze Winther <mazewinther@gmail.com> | 2026-04-15 05:43:29 +0200 |
| commit | ac43a5a73fa905cdac905bc956763b6093d6738e (patch) | |
| tree | 8d9ff8c3a9ae55bac8860215bec69cc5b6094a1c /apps/web/src/lib/timeline/snap-utils.ts | |
| parent | 6312fc5b078689bc82c52fda9b7f92ee0a21d311 (diff) | |
| download | opencut-ac43a5a73fa905cdac905bc956763b6093d6738e.tar.gz | |
feat: move/resize multiple elements
Diffstat (limited to 'apps/web/src/lib/timeline/snap-utils.ts')
| -rw-r--r-- | apps/web/src/lib/timeline/snap-utils.ts | 11 |
1 files changed, 10 insertions, 1 deletions
diff --git a/apps/web/src/lib/timeline/snap-utils.ts b/apps/web/src/lib/timeline/snap-utils.ts index c1768deb..b2be95a9 100644 --- a/apps/web/src/lib/timeline/snap-utils.ts +++ b/apps/web/src/lib/timeline/snap-utils.ts @@ -22,6 +22,7 @@ export function findSnapPoints({ tracks, playheadTime, excludeElementId, + excludeElementIds, bookmarks = [], excludeBookmarkTime, enableElementSnapping = true, @@ -32,6 +33,7 @@ export function findSnapPoints({ tracks: SceneTracks; playheadTime: number; excludeElementId?: string; + excludeElementIds?: Set<string>; bookmarks?: Array<Bookmark>; excludeBookmarkTime?: number; enableElementSnapping?: boolean; @@ -41,10 +43,14 @@ export function findSnapPoints({ }): SnapPoint[] { const snapPoints: SnapPoint[] = []; const orderedTracks = [...tracks.overlay, tracks.main, ...tracks.audio]; + const blockedElementIds = new Set(excludeElementIds); + if (excludeElementId) { + blockedElementIds.add(excludeElementId); + } for (const track of orderedTracks) { for (const element of track.elements) { - if (element.id === excludeElementId) continue; + if (blockedElementIds.has(element.id)) continue; if (enableElementSnapping) { snapPoints.push( @@ -136,6 +142,7 @@ export function snapElementEdge({ playheadTime, zoomLevel, excludeElementId, + excludeElementIds, snapToStart = true, bookmarks = [], }: { @@ -145,6 +152,7 @@ export function snapElementEdge({ playheadTime: number; zoomLevel: number; excludeElementId?: string; + excludeElementIds?: Set<string>; snapToStart?: boolean; bookmarks?: Array<Bookmark>; }): SnapResult { @@ -152,6 +160,7 @@ export function snapElementEdge({ tracks, playheadTime, excludeElementId, + excludeElementIds, bookmarks, }); |
