import { player } from '@/web/store' import { css, cx } from '@emotion/css' import { useSnapshot } from 'valtio' import Image from '@/web/components/New/Image' import Icon from '@/web/components/Icon' import useCoverColor from '@/web/hooks/useCoverColor' import { resizeImage } from '@/web/utils/common' import { motion, PanInfo, useMotionValue } from 'framer-motion' import { useLockBodyScroll } from 'react-use' import { useState } from 'react' const PlayerMobile = () => { const { track, state } = useSnapshot(player) const bgColor = useCoverColor(track?.al?.picUrl ?? '') const [locked, setLocked] = useState(false) useLockBodyScroll(locked) const x = useMotionValue(0) const onDragEnd = ( event: MouseEvent | TouchEvent | PointerEvent, info: PanInfo ) => { console.log(JSON.stringify(info)) const { x, y } = info.offset const offset = 100 if (y > -100) { if (x > offset) player.prevTrack() if (x < -offset) player.nextTrack() } setLocked(false) } const y = useMotionValue(0) return (
{/* Indictor */}
{/* Cover */}
{/* Track info */}
setLocked(true)} onDragEnd={onDragEnd} className=' flex h-full flex-grow items-center ' >
{track?.name}
{track?.ar?.map(a => a.name).join(', ')}
{/* Like */} {/* Play or pause */}
) } export default PlayerMobile