mirror of
https://github.com/OpenCut-app/OpenCut.git
synced 2026-07-13 21:52:53 +02:00
comments + codebase index
This commit is contained in:
+113
-104
@@ -16,16 +16,6 @@ When implementing new features:
|
||||
3. Understand the API surface of your codebase
|
||||
|
||||
```typescript
|
||||
## apps/web/src/components/editor/timeline
|
||||
|
||||
audio-waveform.tsx
|
||||
export function AudioWaveform({␍
|
||||
audioUrl,␍
|
||||
audioBuffer,␍
|
||||
height = 32,␍
|
||||
className = "",␍
|
||||
}: AudioWaveformProps)
|
||||
|
||||
## apps/web/src/constants
|
||||
|
||||
editor-constants.ts
|
||||
@@ -464,46 +454,46 @@ rate-limit.ts
|
||||
scenes.ts
|
||||
export function getMainScene({ scenes }: { scenes: TScene[] }): TScene | null
|
||||
export function ensureMainScene({ scenes }: { scenes: TScene[] }): TScene[]
|
||||
export function buildDefaultScene({␍
|
||||
name,␍
|
||||
isMain,␍
|
||||
}: {␍
|
||||
name: string;␍
|
||||
isMain: boolean;␍
|
||||
export function buildDefaultScene({
|
||||
name,
|
||||
isMain,
|
||||
}: {
|
||||
name: string;
|
||||
isMain: boolean;
|
||||
}): TScene
|
||||
export function canDeleteScene({ scene }: { scene: TScene }): {␍
|
||||
canDelete: boolean;␍
|
||||
reason?: string;␍
|
||||
export function canDeleteScene({ scene }: { scene: TScene }): {
|
||||
canDelete: boolean;
|
||||
reason?: string;
|
||||
}
|
||||
export function getFallbackSceneAfterDelete({␍
|
||||
scenes,␍
|
||||
deletedSceneId,␍
|
||||
currentSceneId,␍
|
||||
}: {␍
|
||||
scenes: TScene[];␍
|
||||
deletedSceneId: string;␍
|
||||
currentSceneId: string | null;␍
|
||||
export function getFallbackSceneAfterDelete({
|
||||
scenes,
|
||||
deletedSceneId,
|
||||
currentSceneId,
|
||||
}: {
|
||||
scenes: TScene[];
|
||||
deletedSceneId: string;
|
||||
currentSceneId: string | null;
|
||||
}): TScene | null
|
||||
export function findCurrentScene({␍
|
||||
scenes,␍
|
||||
currentSceneId,␍
|
||||
}: {␍
|
||||
scenes: TScene[];␍
|
||||
currentSceneId: string;␍
|
||||
export function findCurrentScene({
|
||||
scenes,
|
||||
currentSceneId,
|
||||
}: {
|
||||
scenes: TScene[];
|
||||
currentSceneId: string;
|
||||
}): TScene | null
|
||||
export function getProjectDurationFromScenes({␍
|
||||
scenes,␍
|
||||
}: {␍
|
||||
scenes: TScene[];␍
|
||||
export function getProjectDurationFromScenes({
|
||||
scenes,
|
||||
}: {
|
||||
scenes: TScene[];
|
||||
}): number
|
||||
export function updateSceneInArray({␍
|
||||
scenes,␍
|
||||
sceneId,␍
|
||||
updates,␍
|
||||
}: {␍
|
||||
scenes: TScene[];␍
|
||||
sceneId: string;␍
|
||||
updates: Partial<TScene>;␍
|
||||
export function updateSceneInArray({
|
||||
scenes,
|
||||
sceneId,
|
||||
updates,
|
||||
}: {
|
||||
scenes: TScene[];
|
||||
sceneId: string;
|
||||
updates: Partial<TScene>;
|
||||
}): TScene[]
|
||||
|
||||
time.ts
|
||||
@@ -699,27 +689,28 @@ parser.ts
|
||||
## apps/web/src/lib/media
|
||||
|
||||
audio.ts
|
||||
export type CollectedAudioElement = Omit<␍
|
||||
AudioElement,␍
|
||||
"type" | "mediaId" | "volume" | "id" | "name" | "sourceType" | "sourceUrl...
|
||||
export type CollectedAudioElement = Omit<
|
||||
AudioElement,
|
||||
"type" | "mediaId" | "volume" | "id" | "name" | "sourceType" | "sourceUrl"
|
||||
...
|
||||
export function createAudioContext(): AudioContext
|
||||
export interface DecodedAudio {
|
||||
samples: Float32Array
|
||||
sampleRate: number
|
||||
}
|
||||
export function decodeAudioToFloat32({␍
|
||||
audioBlob,␍
|
||||
}: {␍
|
||||
audioBlob: Blob;␍
|
||||
export function decodeAudioToFloat32({
|
||||
audioBlob,
|
||||
}: {
|
||||
audioBlob: Blob;
|
||||
}): Promise<DecodedAudio>
|
||||
export function collectAudioElements({␍
|
||||
tracks,␍
|
||||
mediaAssets,␍
|
||||
audioContext,␍
|
||||
}: {␍
|
||||
tracks: TimelineTrack[];␍
|
||||
mediaAssets: MediaAsset[];␍
|
||||
audioContext: AudioContext;␍
|
||||
export function collectAudioElements({
|
||||
tracks,
|
||||
mediaAssets,
|
||||
audioContext,
|
||||
}: {
|
||||
tracks: TimelineTrack[];
|
||||
mediaAssets: MediaAsset[];
|
||||
audioContext: AudioContext;
|
||||
}): Promise<CollectedAudioElement[]>
|
||||
export interface AudioClipSource {
|
||||
id: string
|
||||
@@ -731,32 +722,32 @@ audio.ts
|
||||
trimEnd: number
|
||||
muted: boolean
|
||||
}
|
||||
export function collectAudioMixSources({␍
|
||||
tracks,␍
|
||||
mediaAssets,␍
|
||||
}: {␍
|
||||
tracks: TimelineTrack[];␍
|
||||
mediaAssets: MediaAsset[];␍
|
||||
export function collectAudioMixSources({
|
||||
tracks,
|
||||
mediaAssets,
|
||||
}: {
|
||||
tracks: TimelineTrack[];
|
||||
mediaAssets: MediaAsset[];
|
||||
}): Promise<AudioMixSource[]>
|
||||
export function collectAudioClips({␍
|
||||
tracks,␍
|
||||
mediaAssets,␍
|
||||
}: {␍
|
||||
tracks: TimelineTrack[];␍
|
||||
mediaAssets: MediaAsset[];␍
|
||||
export function collectAudioClips({
|
||||
tracks,
|
||||
mediaAssets,
|
||||
}: {
|
||||
tracks: TimelineTrack[];
|
||||
mediaAssets: MediaAsset[];
|
||||
}): Promise<AudioClipSource[]>
|
||||
export function createTimelineAudioBuffer({␍
|
||||
tracks,␍
|
||||
mediaAssets,␍
|
||||
duration,␍
|
||||
sampleRate = 44100,␍
|
||||
audioContext,␍
|
||||
}: {␍
|
||||
tracks: TimelineTrack[];␍
|
||||
mediaAssets: MediaAsset[];␍
|
||||
duration: number;␍
|
||||
sampleRate?: number;␍
|
||||
audioContext?: AudioContext;␍
|
||||
export function createTimelineAudioBuffer({
|
||||
tracks,
|
||||
mediaAssets,
|
||||
duration,
|
||||
sampleRate = 44100,
|
||||
audioContext,
|
||||
}: {
|
||||
tracks: TimelineTrack[];
|
||||
mediaAssets: MediaAsset[];
|
||||
duration: number;
|
||||
sampleRate?: number;
|
||||
audioContext?: AudioContext;
|
||||
}): Promise<AudioBuffer | null>
|
||||
|
||||
media-utils.ts
|
||||
@@ -1091,28 +1082,46 @@ track-utils.ts
|
||||
}): { isValid: boolean; errorMessage?: string }
|
||||
|
||||
zoom-utils.ts
|
||||
export function getTimelineZoomMin({
|
||||
duration,
|
||||
containerWidth,
|
||||
}: {
|
||||
duration: number;
|
||||
containerWidth: number | null | undefined;
|
||||
export function getTimelineZoomMin({␍
|
||||
duration,␍
|
||||
containerWidth,␍
|
||||
}: {␍
|
||||
duration: number;␍
|
||||
containerWidth: number | null | undefined;␍
|
||||
}): number
|
||||
export function getTimelinePaddingPx({
|
||||
containerWidth,
|
||||
zoomLevel,
|
||||
minZoom,
|
||||
}: {
|
||||
containerWidth: number;
|
||||
zoomLevel: number;
|
||||
minZoom: number;
|
||||
export function getTimelinePaddingPx({␍
|
||||
containerWidth,␍
|
||||
zoomLevel,␍
|
||||
minZoom,␍
|
||||
}: {␍
|
||||
containerWidth: number;␍
|
||||
zoomLevel: number;␍
|
||||
minZoom: number;␍
|
||||
}): number
|
||||
export function getZoomPercent({
|
||||
zoomLevel,
|
||||
minZoom,
|
||||
}: {
|
||||
zoomLevel: number;
|
||||
minZoom: number;
|
||||
export function getZoomPercent({␍
|
||||
zoomLevel,␍
|
||||
minZoom,␍
|
||||
}: {␍
|
||||
zoomLevel: number;␍
|
||||
minZoom: number;␍
|
||||
}): number
|
||||
export function sliderToZoom({␍
|
||||
sliderPosition,␍
|
||||
minZoom,␍
|
||||
maxZoom = TIMELINE_CONSTANTS.ZOOM_MAX,␍
|
||||
}: {␍
|
||||
sliderPosition: number;␍
|
||||
minZoom: number;␍
|
||||
maxZoom?: number;␍
|
||||
}): number
|
||||
export function zoomToSlider({␍
|
||||
zoomLevel,␍
|
||||
minZoom,␍
|
||||
maxZoom = TIMELINE_CONSTANTS.ZOOM_MAX,␍
|
||||
}: {␍
|
||||
zoomLevel: number;␍
|
||||
minZoom: number;␍
|
||||
maxZoom?: number;␍
|
||||
}): number
|
||||
|
||||
## apps/web/src/lib/transcription
|
||||
|
||||
Reference in New Issue
Block a user