Core Components
This page lists the main primitives used in FrameScript projects.
Project and Timeline
<Project>
Root of the render tree. Provides a fixed render surface.
import { Project } from "../src/lib/project"
export const PROJECT = () => (
<Project>
{/* scenes/clips */}
</Project>
)
<TimeLine>
Registers clips and visualizes them in the Timeline UI.
import { TimeLine } from "../src/lib/timeline"
export const PROJECT = () => (
<Project>
<TimeLine>
{/* Clip / ClipSequence */}
</TimeLine>
</Project>
)
Clips
<Clip>
Determines its length from children or the duration prop. Inactive clips are not rendered.
If you omit duration, it will use the length of child elements such as <Video/> or <Sound/>.
<Clip label="Intro" duration={seconds(3.5)}>
<IntroScene durationFrames={seconds(3.5)} />
</Clip>
<ClipSequence>
Chains multiple <Clip> on a single lane. Start positions are calculated automatically.
<ClipSequence>
<Clip label="Intro" duration={introFrames}>
<IntroScene durationFrames={introFrames} />
</Clip>
<Clip label="Features" duration={featureFrames}>
<FeaturesScene durationFrames={featureFrames} />
</Clip>
</ClipSequence>
Clip utilities
useClipStart()
Returns the start frame of the current clip.
const start = useClipStart()
useClipRange()
Returns the frame range of the current clip.
const range = useClipRange()
const start = range.start
const end = range.end
useClipId()
Returns the current clip ID.
const id = useClipId()
useClipDepth()
Returns the nesting depth of the current clip.
const depth = useClipDepth()
useClipActive()
Returns true when the current clip is active and visible.
const active = useClipActive()
<ClipStatic>
Explicit start/end clip. Useful when you need strict boundaries.
<ClipStatic start={0} end={119} label="Custom Range">
<MyScene />
</ClipStatic>
<Serial>
Utility to place <ClipStatic> elements back-to-back while preserving their length.
<Serial>
<ClipStatic start={0} end={89} label="A">
<SceneA />
</ClipStatic>
<ClipStatic start={0} end={59} label="B">
<SceneB />
</ClipStatic>
</Serial>
Frame utilities
useCurrentFrame()
Returns the current frame. Inside a <Clip>, the value is relative to the clip start.
// Current local frame
const currentFrame = useCurrentFrame()
// Current global frame
const globalCurrentFrame = useGlobalCurrentFrame()
seconds()
Converts seconds to frames.
const introFrames = seconds(3.5)
Layout
<FillFrame>
Full-frame absolute container.
<FillFrame>
<Background />
<Foreground />
</FillFrame>