import { useEffect, useState } from "react"; import MotionPhotoPlayer from "@/components/MotionPhotoPlayer"; import { cn } from "@/lib/utils"; interface MotionPhotoPreviewProps { posterUrl: string; motionUrl: string; alt: string; presentationTimestampUs?: bigint; containerClassName?: string; mediaClassName?: string; posterClassName?: string; videoClassName?: string; badgeClassName?: string; loop?: boolean; } const MotionPhotoPreview = ({ posterUrl, motionUrl, alt, presentationTimestampUs, containerClassName, mediaClassName, posterClassName, videoClassName, badgeClassName, loop = false, }: MotionPhotoPreviewProps) => { const [motionActive, setMotionActive] = useState(false); useEffect(() => { setMotionActive(false); }, [motionUrl, posterUrl]); return (
setMotionActive(true)} onMouseLeave={() => setMotionActive(false)} onFocus={() => setMotionActive(true)} onBlur={() => setMotionActive(false)} onPointerDown={(event) => { event.stopPropagation(); if (event.pointerType !== "mouse") { setMotionActive(true); } }} onPointerUp={(event) => { event.stopPropagation(); if (event.pointerType !== "mouse") { setMotionActive(false); } }} onPointerCancel={() => setMotionActive(false)} onKeyDown={(event) => { if (event.key === "Enter" || event.key === " ") { event.preventDefault(); setMotionActive((prev) => !prev); } }} aria-label="Hover or press to play live photo" > LIVE
); }; export default MotionPhotoPreview;