import { forwardRef, useEffect, useState } from 'react' import { motion } from 'framer-motion' import ScaledPortal from '@/components/layout/ScaledPortal' import FlipActionButton from '@/components/button/FlipActionButton' import PuzzlePieceDisplay from './PuzzlePieceDisplay' interface PuzzlePiecePortalProps { residence: string pieceId: number /** 是否隐藏(飞行时隐藏原始碎片) */ hidden?: boolean awaitingCollect?: boolean confirming?: boolean puzzlePieceTitle?: string | null onCollect?: () => void } const PuzzlePiecePortal = forwardRef( ( { residence, pieceId, hidden = false, awaitingCollect = false, confirming = false, puzzlePieceTitle, onCollect, }, ref ) => { const [isAnimating, setIsAnimating] = useState(true) useEffect(() => { setIsAnimating(true) const timer = setTimeout(() => { setIsAnimating(false) }, 800) return () => clearTimeout(timer) }, [pieceId]) return (
{awaitingCollect && !hidden && !confirming && ( )}
{awaitingCollect && !hidden && ( {puzzlePieceTitle && (
{puzzlePieceTitle.split('\n').map((line) => (
{line}
))}
)} 收下
)}
) } ) PuzzlePiecePortal.displayName = 'PuzzlePiecePortal' export default PuzzlePiecePortal