import formatDuration from 'format-duration'; import { lazy, Suspense } from 'react'; import { PlayerbarSeekSlider } from './playerbar-seek-slider'; import styles from './playerbar-slider.module.css'; import { useAppStore, useAppStoreActions, usePlayerSong, usePlayerTimestamp, } from '/@/renderer/store'; import { PlayerbarSliderType, usePlayerbarSlider } from '/@/renderer/store/settings.store'; import { Slider, SliderProps } from '/@/shared/components/slider/slider'; import { Spinner } from '/@/shared/components/spinner/spinner'; import { Text } from '/@/shared/components/text/text'; import { PlaybackSelectors } from '/@/shared/constants/playback-selectors'; const PlayerbarWaveform = lazy(() => import('./playerbar-waveform').then((module) => ({ default: module.PlayerbarWaveform, })), ); export const PlayerbarSlider = () => { const currentSong = usePlayerSong(); const playerbarSlider = usePlayerbarSlider(); const songDuration = currentSong?.duration ? currentSong.duration / 1000 : 0; const currentTime = usePlayerTimestamp(); const formattedDuration = formatDuration(songDuration * 1000 || 0); const formattedTimeRemaining = formatDuration((currentTime - songDuration) * 1000 || 0); const formattedTime = formatDuration(currentTime * 1000 || 0); const showTimeRemaining = useAppStore((state) => state.showTimeRemaining); const { setShowTimeRemaining } = useAppStoreActions(); const isWaveform = playerbarSlider?.type === PlayerbarSliderType.WAVEFORM; return ( <>
{formattedTime}
{isWaveform ? ( }> ) : ( )}
setShowTimeRemaining(!showTimeRemaining)} role="button" size="xs" style={{ cursor: 'pointer', userSelect: 'none' }} > {showTimeRemaining ? formattedTimeRemaining : formattedDuration}
); }; export const CustomPlayerbarSlider = ({ ...props }: SliderProps) => { return ( ); };