format all files

This commit is contained in:
Maze Winther
2026-01-21 12:52:34 +01:00
parent 8500dd770b
commit afdf7d22cf
176 changed files with 2596 additions and 6480 deletions
@@ -124,7 +124,9 @@ function getDragDropTarget({
if (!containerRect || !scrollContainer) return null;
const sourceTrack = tracks.find(({ id }) => id === trackId);
const movingElement = sourceTrack?.elements.find(({ id }) => id === elementId);
const movingElement = sourceTrack?.elements.find(
({ id }) => id === elementId,
);
if (!movingElement) return null;
const elementDuration = movingElement.duration;
@@ -149,8 +151,10 @@ function getDragDropTarget({
});
}
interface StartDragParams
extends Omit<ElementDragState, "isDragging" | "currentTime" | "currentMouseY"> {
interface StartDragParams extends Omit<
ElementDragState,
"isDragging" | "currentTime" | "currentMouseY"
> {
initialCurrentTime: number;
initialCurrentMouseY: number;
}
@@ -538,9 +542,7 @@ export function useElementInteraction({
// start drag
const clickOffsetTime = getClickOffsetTime({
clientX: event.clientX,
elementRect: (
event.currentTarget
).getBoundingClientRect(),
elementRect: event.currentTarget.getBoundingClientRect(),
zoomLevel,
});
pendingDragRef.current = {
@@ -234,7 +234,8 @@ export function useTimelineElementResize({
if (newTrimEnd < 0) {
if (canExtendElementDuration()) {
const extensionNeeded = Math.abs(newTrimEnd);
const baseDuration = resizing.initialDuration + resizing.initialTrimEnd;
const baseDuration =
resizing.initialDuration + resizing.initialTrimEnd;
const newDuration = snapTimeToFrame({
time: baseDuration + extensionNeeded,
fps: projectFps,
@@ -47,7 +47,7 @@ export function useEdgeAutoScroll({
const intrinsicContentWidth = rulerViewport.scrollWidth;
const effectiveContentWidth = Math.max(
contentWidth,
intrinsicContentWidth
intrinsicContentWidth,
);
const scrollMax = Math.max(0, effectiveContentWidth - viewportWidth);
@@ -63,7 +63,7 @@ export function useEdgeAutoScroll({
) {
const edgeDistance = Math.max(
0,
viewportWidth - edgeThreshold - mouseXRelative
viewportWidth - edgeThreshold - mouseXRelative,
);
const intensity = 1 - edgeDistance / edgeThreshold;
scrollSpeed = maxScrollSpeed * intensity;
@@ -72,7 +72,7 @@ export function useEdgeAutoScroll({
if (scrollSpeed !== 0) {
const newScrollLeft = Math.max(
0,
Math.min(scrollMax, rulerViewport.scrollLeft + scrollSpeed)
Math.min(scrollMax, rulerViewport.scrollLeft + scrollSpeed),
);
rulerViewport.scrollLeft = newScrollLeft;
tracksViewport.scrollLeft = newScrollLeft;
@@ -369,9 +369,9 @@ export function useTimelineDragDrop({
added.type === "audio" ? "audio" : "video";
const trackId = dropTarget.isNewTrack
? editor.timeline.addTrack({
type: trackType,
index: dropTarget.trackIndex,
})
type: trackType,
index: dropTarget.trackIndex,
})
: currentTracks[dropTarget.trackIndex]?.id;
if (!trackId) return;
@@ -441,13 +441,7 @@ export function useTimelineDragDrop({
}
}
},
[
activeProject,
editor.media,
editor.timeline,
currentTime,
zoomLevel,
],
[activeProject, editor.media, editor.timeline, currentTime, zoomLevel],
);
const handleDrop = useCallback(
@@ -132,7 +132,7 @@ export function useTimelineInteractions({
Math.min(
duration,
(mouseX + scrollLeft) /
(TIMELINE_CONSTANTS.PIXELS_PER_SECOND * zoomLevel),
(TIMELINE_CONSTANTS.PIXELS_PER_SECOND * zoomLevel),
),
);
@@ -101,9 +101,7 @@ export function useTimelineSnapping({
}
return {
snappedTime: closestSnapPoint
? closestSnapPoint.time
: targetTime,
snappedTime: closestSnapPoint ? closestSnapPoint.time : targetTime,
snapPoint: closestSnapPoint,
snapDistance: closestDistance,
};
@@ -26,30 +26,33 @@ export function useTimelineZoom({
}: UseTimelineZoomProps): UseTimelineZoomReturn {
const [zoomLevel, setZoomLevel] = useState(1);
const handleWheel = useCallback((event: ReactWheelEvent) => {
const isZoomGesture = event.ctrlKey || event.metaKey;
const isHorizontalScrollGesture =
event.shiftKey || Math.abs(event.deltaX) > Math.abs(event.deltaY);
const handleWheel = useCallback(
(event: ReactWheelEvent) => {
const isZoomGesture = event.ctrlKey || event.metaKey;
const isHorizontalScrollGesture =
event.shiftKey || Math.abs(event.deltaX) > Math.abs(event.deltaY);
if (isHorizontalScrollGesture) {
return;
}
if (isHorizontalScrollGesture) {
return;
}
// pinch-zoom (ctrl/meta + wheel)
if (isZoomGesture) {
const zoomMultiplier = event.deltaY > 0 ? 1 / 1.1 : 1.1;
setZoomLevel((prev) => {
const nextZoom = Math.max(
minZoom,
Math.min(TIMELINE_CONSTANTS.ZOOM_MAX, prev * zoomMultiplier),
);
return nextZoom;
});
// for horizontal scrolling (when shift is held or horizontal wheel movement),
// let the event bubble up to allow ScrollArea to handle it
return;
}
}, [minZoom]);
// pinch-zoom (ctrl/meta + wheel)
if (isZoomGesture) {
const zoomMultiplier = event.deltaY > 0 ? 1 / 1.1 : 1.1;
setZoomLevel((prev) => {
const nextZoom = Math.max(
minZoom,
Math.min(TIMELINE_CONSTANTS.ZOOM_MAX, prev * zoomMultiplier),
);
return nextZoom;
});
// for horizontal scrolling (when shift is held or horizontal wheel movement),
// let the event bubble up to allow ScrollArea to handle it
return;
}
},
[minZoom],
);
useEffect(() => {
setZoomLevel((prev) => (prev < minZoom ? minZoom : prev));
+1 -1
View File
@@ -28,7 +28,7 @@ export function useInfiniteScroll({
onLoadMore();
}
},
[onLoadMore, hasMore, isLoading, threshold, enabled]
[onLoadMore, hasMore, isLoading, threshold, enabled],
);
return { scrollAreaRef, handleScroll };