import { Button } from '@src/ui/components/Button'; import { Center } from '@src/ui/components/Center'; import { Nod } from '@src/ui/components/Nod'; import { Rebuffer } from '@src/ui/components/Rebuffer'; import { Seekbar } from '@src/ui/components/Seekbar'; import { Settings } from '@src/ui/components/Settings'; import { TimeStat } from '@src/ui/components/TimeStat'; import { VolumeButton } from '@src/ui/components/VolumeButton'; import { IInfo, SettingsTabs } from '@src/ui/types'; import { withState } from '@src/ui/withState'; import * as React from 'react'; interface ControlsViewProps { isCenterClickAllowed: boolean; showRebuffer: boolean; playIcon: string; playTooltipText: string; showSubtitlesToggle: boolean; isSubtitleActive: boolean; subtitleToggleTooltipText: string; showPip: boolean; pipTooltipText: string; settingsTooltipText: string; fullscreenIcon: string; isFullscreenDisabled: boolean; fullscreenTooltipText: string; isSettingsTabActive: boolean; playOrPause(); toggleActiveSubtitle(); togglePip(); toggleSettings(); toggleFullscreen(); } export const ControlsView = withState((props: ControlsViewProps) => { return ( <> {props.isCenterClickAllowed &&
} {props.showRebuffer && }
); }, mapProps); function mapProps(info: IInfo): ControlsViewProps { const createTooltipText = (text: string, shortcut?: string) => { return `${info.data.getTranslation(text)} ${ shortcut ? `(${shortcut})` : '' }`.trim(); }; return { isCenterClickAllowed: info.data.isCenterClickAllowed, isSettingsTabActive: info.data.settingsTab !== SettingsTabs.NONE, showRebuffer: info.data.rebuffering, playIcon: info.data.playRequested ? 'pause' : 'play', playOrPause: info.actions.playOrPause, playTooltipText: createTooltipText( info.data.playRequested ? 'Pause' : 'Play', 'k', ), showSubtitlesToggle: !!info.data.subtitles.length, isSubtitleActive: !!info.data.activeSubtitle, toggleActiveSubtitle: info.actions.toggleActiveSubtitle, subtitleToggleTooltipText: createTooltipText( !!info.data.activeSubtitle ? 'Disable subtitles' : 'Enable subtitles', 'c', ), showPip: info.data.pipSupported && !info.data.pip, togglePip: info.actions.togglePip, pipTooltipText: createTooltipText('Miniplayer', 'i'), toggleSettings: info.actions.toggleSettings, settingsTooltipText: createTooltipText('Settings'), fullscreenIcon: !info.data.isFullscreen ? 'fullscreen' : 'fullscreen-exit', toggleFullscreen: info.actions.toggleFullscreen, isFullscreenDisabled: !info.data.fullscreenSupported, fullscreenTooltipText: createTooltipText( info.data.isFullscreen ? 'Exit full screen' : 'Full screen', 'f', ), }; }