mirror of
https://github.com/heygen-com/hyperframes.git
synced 2026-09-07 10:06:21 +00:00
51 lines
1.9 KiB
TypeScript
51 lines
1.9 KiB
TypeScript
import { memo } from "react";
|
|
import type { GsapAnimation } from "@hyperframes/core/gsap-parser";
|
|
import { Film } from "../../icons/SystemIcons";
|
|
import { Section } from "./propertyPanelPrimitives";
|
|
import type { GsapAnimationEditCallbacks } from "./gsapAnimationCallbacks";
|
|
import { GsapAnimationList } from "./GsapAnimationList";
|
|
|
|
interface GsapAnimationSectionProps extends GsapAnimationEditCallbacks {
|
|
elementId: string;
|
|
animations: GsapAnimation[];
|
|
multipleTimelines?: boolean;
|
|
unsupportedTimelinePattern?: boolean;
|
|
onAddAnimation: (method: "to" | "from" | "set" | "fromTo") => void;
|
|
}
|
|
|
|
export const GsapAnimationSection = memo(function GsapAnimationSection({
|
|
elementId,
|
|
animations,
|
|
multipleTimelines,
|
|
unsupportedTimelinePattern,
|
|
onAddAnimation,
|
|
...callbacks
|
|
}: GsapAnimationSectionProps) {
|
|
return (
|
|
<Section title="Animation" icon={<Film size={15} />}>
|
|
{multipleTimelines && (
|
|
<p className="mb-2 rounded-lg bg-amber-500/10 px-3 py-2 text-[11px] leading-relaxed text-amber-400">
|
|
This file has multiple GSAP timelines. Animation editing is disabled to prevent data loss
|
|
— consolidate into a single timeline to enable editing.
|
|
</p>
|
|
)}
|
|
{unsupportedTimelinePattern && (
|
|
<p className="mb-2 rounded-lg bg-amber-500/10 px-3 py-2 text-[11px] leading-relaxed text-amber-400">
|
|
This timeline uses a computed key (window.__timelines[variable]) the editor can't
|
|
resolve statically. Use a string-literal key (window.__timelines["id"]) or a
|
|
variable declaration (const tl = gsap.timeline()) to enable editing.
|
|
</p>
|
|
)}
|
|
{multipleTimelines || unsupportedTimelinePattern ? null : (
|
|
<GsapAnimationList
|
|
{...callbacks}
|
|
elementId={elementId}
|
|
animations={animations}
|
|
onAddAnimation={onAddAnimation}
|
|
variant="classic"
|
|
/>
|
|
)}
|
|
</Section>
|
|
);
|
|
});
|