mirror of
https://github.com/GiriNeko/YesPlayMusic.git
synced 2025-12-17 13:48:02 +00:00
feat: updates
This commit is contained in:
parent
47e41dea9b
commit
ebebf2a733
160 changed files with 4148 additions and 2001 deletions
62
packages/web/pages/New/MV.tsx
Normal file
62
packages/web/pages/New/MV.tsx
Normal file
|
|
@ -0,0 +1,62 @@
|
|||
import PageTransition from '@/web/components/New/PageTransition'
|
||||
import useMV, { useMVUrl } from '@/web/api/hooks/useMV'
|
||||
import { useParams } from 'react-router-dom'
|
||||
import Plyr, { PlyrOptions, PlyrSource } from 'plyr-react'
|
||||
import 'plyr-react/plyr.css'
|
||||
import { useMemo } from 'react'
|
||||
import { css, cx } from '@emotion/css'
|
||||
|
||||
const plyrStyle = css`
|
||||
--plyr-color-main: rgb(152 208 11);
|
||||
--plyr-video-control-background-hover: rgba(255, 255, 255, 0.3);
|
||||
--plyr-control-radius: 8px;
|
||||
--plyr-range-fill-background: white;
|
||||
button[data-plyr='play']:not(.plyr__controls__item) {
|
||||
--plyr-video-control-background-hover: var(--plyr-color-main);
|
||||
}
|
||||
`
|
||||
|
||||
const plyrOptions: PlyrOptions = {
|
||||
settings: [],
|
||||
controls: [
|
||||
'play-large',
|
||||
'play',
|
||||
'progress',
|
||||
'current-time',
|
||||
'mute',
|
||||
'volume',
|
||||
'fullscreen',
|
||||
],
|
||||
resetOnEnd: true,
|
||||
ratio: '16:9',
|
||||
}
|
||||
|
||||
const MV = () => {
|
||||
const params = useParams()
|
||||
const { data: mv } = useMV({ mvid: Number(params.id) || 0 })
|
||||
const { data: mvUrl } = useMVUrl({ id: Number(params.id) || 0 })
|
||||
const source: PlyrSource = useMemo(
|
||||
() => ({
|
||||
type: 'video',
|
||||
sources: [
|
||||
{
|
||||
src: mvUrl?.data?.url || '',
|
||||
},
|
||||
],
|
||||
poster: mv?.data.cover,
|
||||
title: mv?.data.name,
|
||||
}),
|
||||
[mv?.data.cover, mv?.data.name, mvUrl?.data?.url]
|
||||
)
|
||||
|
||||
return (
|
||||
<PageTransition>
|
||||
<div className='text-white'>{mv?.data.name}</div>
|
||||
<div className={cx('aspect-video overflow-hidden rounded-24', plyrStyle)}>
|
||||
{mvUrl && <Plyr options={plyrOptions} source={source} />}
|
||||
</div>
|
||||
</PageTransition>
|
||||
)
|
||||
}
|
||||
|
||||
export default MV
|
||||
Loading…
Add table
Add a link
Reference in a new issue