import { Button } from '@src/ui/components/Button'; import { IActions, IData, SettingsTabs } from '@src/ui/types'; import { withState } from '@src/ui/withState'; import * as React from 'react'; const tabs = {}; tabs[SettingsTabs.OPTIONS] = (props: SettingsProps) => ( <> {!!props.data.visibleSettingsTabs.length ? ( !!item)} /> ) : (
No settings available
)} ); tabs[SettingsTabs.TRACKS] = (props: SettingsProps) => ( <> props.actions.setSettingsTab(SettingsTabs.OPTIONS)} /> { props.actions.selectTrack(track); props.actions.toggleSettings(); }} items={[ ...props.data.tracks.map(track => ({ item: track, label: `${track.width}`, })), { item: 'auto', label: props.data.getTranslation('Automatic quality'), }, ]} /> ); tabs[SettingsTabs.SUBTITLES] = (props: SettingsProps) => ( <> props.actions.setSettingsTab(SettingsTabs.OPTIONS)} /> { props.actions.selectSubtitle(subtitle); props.actions.toggleSettings(); }} items={[ ...props.data.subtitles.map(subtitle => ({ item: subtitle, label: subtitle.label, })), { item: null, label: props.data.getTranslation('No subtitles'), }, ]} /> ); tabs[SettingsTabs.PLAYBACKRATES] = (props: SettingsProps) => ( <> props.actions.setSettingsTab(SettingsTabs.OPTIONS)} /> { props.actions.setPlaybackRate(playbackRate); props.actions.toggleSettings(); }} items={[ { item: 0.25, label: '0.25', }, { item: 0.5, label: '0.5', }, { item: 1, label: props.data.getTranslation('Normal speed'), }, { item: 1.5, label: '1.5', }, { item: 2, label: '2', }, ]} /> ); interface SettingsHeaderProps { title: string; onBackClick?(); onOptionsClick?(); } const SettingsHeader = (props: SettingsHeaderProps) => (
{!!props.onBackClick && ( )}
); interface SettingsSelectProps { selected?: any; items: Array<{ item: any; label: string; info?: string; }>; onClick(item: any); } const SettingsSelect = (props: SettingsSelectProps) => (
{props.items.map(item => ( ))}
); interface SettingsProps { data: IData; actions: IActions; } export const Settings = withState((props: SettingsProps) => { const renderTab = tabs[props.data.settingsTab]; return renderTab ? (
{props.data.isMobile && ( )} {renderTab(props)}
) : null; });