diff --git a/src/components/video-editor/timeline/AudioWaveform.tsx b/src/components/video-editor/timeline/AudioWaveform.tsx index ebb4696e..5c809768 100644 --- a/src/components/video-editor/timeline/AudioWaveform.tsx +++ b/src/components/video-editor/timeline/AudioWaveform.tsx @@ -1,6 +1,6 @@ import { useTimelineContext } from "dnd-timeline"; import { memo, useCallback, useEffect, useRef, useState } from "react"; -import type { AudioPeaksData } from "./useAudioPeaks"; +import type { AudioPeaksData } from "./core/timelineTypes"; interface AudioWaveformProps { peaks: AudioPeaksData; diff --git a/src/components/video-editor/timeline/components/viewport/TimelineCanvas.tsx b/src/components/video-editor/timeline/components/viewport/TimelineCanvas.tsx index e02dfb1c..c268322b 100644 --- a/src/components/video-editor/timeline/components/viewport/TimelineCanvas.tsx +++ b/src/components/video-editor/timeline/components/viewport/TimelineCanvas.tsx @@ -7,8 +7,7 @@ import { getTimelineViewportStretchFactor, TIMELINE_AXIS_HEIGHT_PX, } from "../../timelineLayout"; -import type { AudioPeaksData } from "../../useAudioPeaks"; -import type { TimelineRenderItem } from "../../core/timelineTypes"; +import type { AudioPeaksData, TimelineRenderItem } from "../../core/timelineTypes"; import { isAnnotationTrackRowId, isAudioTrackRowId } from "../../core/rows"; import TimelineAxis from "../axis/TimelineAxis"; import PlaybackCursor from "../playhead/PlaybackCursor"; diff --git a/src/components/video-editor/timeline/components/viewport/TimelineCanvasRows.tsx b/src/components/video-editor/timeline/components/viewport/TimelineCanvasRows.tsx index 2e79633f..1acafc15 100644 --- a/src/components/video-editor/timeline/components/viewport/TimelineCanvasRows.tsx +++ b/src/components/video-editor/timeline/components/viewport/TimelineCanvasRows.tsx @@ -6,7 +6,7 @@ import glassStyles from "../../ItemGlass.module.css"; import Item from "../../Item"; import Row from "../../Row"; import { CLIP_ROW_ID, ZOOM_ROW_ID } from "../../core/constants"; -import type { TimelineRenderItem } from "../../core/timelineTypes"; +import type { AudioPeaksData, TimelineRenderItem } from "../../core/timelineTypes"; import { getAnnotationTrackIndex, getAnnotationTrackRowId, @@ -15,7 +15,6 @@ import { isAnnotationTrackRowId, isAudioTrackRowId, } from "../../core/rows"; -import type { AudioPeaksData } from "../../useAudioPeaks"; import ClipMarkerOverlay from "../overlays/ClipMarkerOverlay"; const HINT_CLIP = "Press C to split clip"; diff --git a/src/components/video-editor/timeline/core/timelineTypes.ts b/src/components/video-editor/timeline/core/timelineTypes.ts index ae5b1da8..2222f7cc 100644 --- a/src/components/video-editor/timeline/core/timelineTypes.ts +++ b/src/components/video-editor/timeline/core/timelineTypes.ts @@ -37,3 +37,8 @@ export interface TimelineRenderItem { speedValue?: number; variant: "zoom" | "trim" | "clip" | "annotation" | "speed" | "audio"; } + +export interface AudioPeaksData { + durationMs: number; + peaks: Float32Array; +} diff --git a/src/components/video-editor/timeline/useAudioPeaks.ts b/src/components/video-editor/timeline/useAudioPeaks.ts index 587659fd..9f6dfc29 100644 --- a/src/components/video-editor/timeline/useAudioPeaks.ts +++ b/src/components/video-editor/timeline/useAudioPeaks.ts @@ -1,15 +1,9 @@ import { useEffect, useRef, useState } from "react"; +import type { AudioPeaksData } from "./core/timelineTypes"; /** Number of peak bins to produce — enough for smooth display at any zoom. */ const TARGET_PEAK_COUNT = 2048; -export interface AudioPeaksData { - /** One normalised amplitude value (0–1) per bin, covering the full duration. */ - peaks: Float32Array; - /** Total duration of the decoded audio in milliseconds. */ - durationMs: number; -} - /** * Decode audio from a media file URL and produce a fixed-length array of peak * amplitudes suitable for waveform visualisation.