"use client"; import { useEffect, useRef } from "react"; import { useInView } from "@/app/hooks/useInView"; import { useReducedMotion } from "@/app/hooks/useReducedMotion"; import { useSaveData } from "./showcase/useShowcaseMedia"; /** * Peça 3D em loop no cartão da oferta (`public/3d/peca-.{webm,mp4}`, 640x400, com o pôster `.webp`). É decorativa: * o nome do cartão e a lista dizem o que é. Nada baixa antes de tocar (`preload="none"`); toca só enquanto está à vista e * fica no pôster com movimento reduzido ou "Economizar dados". */ export function OfferVideo({ name }: Readonly<{ name: string }>) { const ref = useRef(null); const inView = useInView(ref, { amount: 0.3, once: false }); const reducedMotion = useReducedMotion(); const saveData = useSaveData(); const play = inView && !reducedMotion && !saveData; useEffect(() => { const video = ref.current; if (!video) return; if (!play) { video.pause(); return; } // o navegador pode recusar a reprodução (economia de energia, aba em segundo plano): o vídeo fica no pôster video.play()?.catch(() => {}); }, [play]); const src = `/3d/peca-${name}`; return ( ); }