import { memo, useCallback } from "react"; import type { ArcPathConfig, ArcPathSegment } from "@hyperframes/core/gsap-parser"; import { SliderControl } from "./propertyPanelPrimitives"; import { LABEL } from "./propertyPanelHelpers"; import { P } from "./panelTokens"; interface ArcPathControlsProps { arcPath: ArcPathConfig; segmentCount: number; onToggle: (enabled: boolean) => void; onUpdateSegment: (index: number, update: Partial) => void; onToggleAutoRotate: (autoRotate: boolean) => void; disabled?: boolean; } export const ArcPathControls = memo(function ArcPathControls({ arcPath, segmentCount, onToggle, onUpdateSegment, onToggleAutoRotate, disabled, }: ArcPathControlsProps) { const handleToggle = useCallback(() => { onToggle(!arcPath.enabled); }, [arcPath.enabled, onToggle]); const handleAutoRotate = useCallback(() => { onToggleAutoRotate(!arcPath.autoRotate); }, [arcPath.autoRotate, onToggleAutoRotate]); if (segmentCount < 1) { return (

Add at least 2 position keyframes to enable arc motion.

); } return (
Arc Motion
{arcPath.enabled && ( <>
Auto-Rotate
{arcPath.segments.map((seg, i) => (
{segmentCount === 1 ? "Curviness" : `Segment ${i + 1}`} {seg.cp1 && seg.cp2 && ( )}
v.toFixed(1)} onCommit={(v) => onUpdateSegment(i, { curviness: v })} />
))} )}
); });