"use client";
import React, { useMemo } from "react";
import { Player } from "@remotion/player";
import { Sequence, AbsoluteFill } from "remotion";
import { Audio } from "@remotion/media";
import { FPS } from "@/lib/remotion/constants";
export interface CompiledSlide {
component: React.ComponentType;
title: string;
code: string;
durationInFrames: number;
audioUrl?: string;
}
function CombinedComposition({ scenes }: { scenes: CompiledSlide[] }) {
let offset = 0;
return (
{scenes.map((scene, i) => {
const from = offset;
offset += scene.durationInFrames;
return (
{scene.audioUrl && }
);
})}
);
}
export function buildCompositionComponent(slides: CompiledSlide[]): React.FC {
const scenesSnapshot = [...slides];
const Comp: React.FC = () => ;
return Comp;
}
interface CombinedPlayerProps {
slides: CompiledSlide[];
}
export function CombinedPlayer({ slides }: CombinedPlayerProps) {
const CompositionWithScenes = useMemo(() => {
const scenesSnapshot = [...slides];
const Comp: React.FC = () => ;
return Comp;
}, [slides]);
const totalFrames = useMemo(
() => slides.reduce((sum, s) => sum + s.durationInFrames, 0),
[slides],
);
return (
);
}