import { Button } from '@src/ui/components/Button';
import { IInfo } from '@src/ui/types';
import { useSlider } from '@src/ui/utils/useSlider';
import { withState } from '@src/ui/withState';
import cx from 'classnames';
import React from 'react';
interface VolumeButtonProps {
volumeIcon: string;
tooltipText: string;
isVolumeControlsOpen: boolean;
volumeBarPercentage: number;
toggleMute();
setVolumeControlsOpen(open: boolean);
setVolumebarState(state: any);
}
const ref = React.createRef();
export const VolumeButton = withState((props: VolumeButtonProps) => {
useSlider(ref.current as HTMLElement, props.setVolumebarState);
return (
props.setVolumeControlsOpen(true)}
onMouseLeave={() => props.setVolumeControlsOpen(false)}
>
);
}, mapProps);
function mapProps(info: IInfo): VolumeButtonProps {
let volumeIcon: string = 'volume-off';
if (info.data.volumeBarPercentage > 0.5) {
volumeIcon = 'volume-2';
} else if (info.data.volumeBarPercentage > 0) {
volumeIcon = 'volume-1';
}
return {
volumeIcon,
tooltipText: `${info.data.getTranslation(
info.data.volumeBarPercentage === 0 ? 'Unmute' : 'Mute',
)} (m)`,
toggleMute: info.actions.toggleMute,
setVolumeControlsOpen: info.actions.setVolumeControlsOpen,
setVolumebarState: info.actions.setVolumebarState,
isVolumeControlsOpen: info.data.isVolumeControlsOpen,
volumeBarPercentage: info.data.volumeBarPercentage,
};
}