import { useLocation, useNavigate } from 'react-router-dom' import { Loader2, Pause, Play, X } from 'lucide-react' import { useReaderAudioStore } from '../../stores/readerAudio' import { readerCoverSrc } from '../../utils/readerCover' import { getReaderAudioEngine } from './readerAudioEngine' // 全局听书迷你条。 // // 播放引擎是常驻单例(见 readerAudioEngine.ts),离开阅读页后音频仍在播;这个条 // 保证在其他页面也能暂停/回到阅读,否则用户会「听到声音但找不到控制」。 // 面板所在的阅读页内部不显示它(那里有完整播放面板),避免两套控制打架。 export function ReaderMiniPlayer() { const location = useLocation() const navigate = useNavigate() const track = useReaderAudioStore((s) => s.track) const bookId = useReaderAudioStore((s) => s.bookId) const title = useReaderAudioStore((s) => s.chapterTitle) const bookName = useReaderAudioStore((s) => s.bookName) const cover = useReaderAudioStore((s) => s.cover) const status = useReaderAudioStore((s) => s.status) const onReaderView = bookId !== '' && location.pathname === `/reader/view/${bookId}` if (!track || !bookId || onReaderView || status === 'idle') return null const engine = getReaderAudioEngine() const playing = status === 'playing' const loading = status === 'loading' const coverSrc = readerCoverSrc(cover) return (