Capítulo 64 de 988
Wraps a React component so Remotion Studio can expose its props as timeline controls.
import {
Interactive,
Sequence,
type InteractiveBaseProps,
type InteractiveTransformProps,
type SequenceControls,
type InteractivitySchema,
} from 'remotion';
type CircleProps = InteractiveBaseProps &
InteractiveTransformProps & {
readonly radius?: number;
readonly color?: string;
};
const circleSchema = {
...Interactive.baseSchema,
radius: {
type: 'number',
min: 1,
step: 1,
default: 80,
description: 'Radius',
hiddenFromList: false,
},
color: {
type: 'color',
default: '#0b84ff',
description: 'Color',
},
...Interactive.transformSchema,
} as const satisfies InteractivitySchema;
const CircleInner = forwardRef<
HTMLDivElement,
CircleProps & {
readonly controls: SequenceControls | undefined;
}
>(
(
{
radius = 80,
color = '#0b84ff',
name,
style,
controls,
...sequenceProps
},
ref,
) => {
const outlineRef = useRef<HTMLDivElement>(null);
useImperativeHandle(ref, () => outlineRef.current as HTMLDivElement, []);
return (
<Sequence
layout="none"
{...sequenceProps}
name={name ?? '<Circle>'}
controls={controls}
outlineRef={outlineRef}
>
<div
ref={outlineRef}
style={{
...style,
width: radius * 2,
height: radius * 2,
borderRa
// ...(truncated)