react-jplayer
Version:
Html5 audio and video player library for React
44 lines (36 loc) • 1.13 kB
JSX
import { connectWithId, getElementOffset } from 'react-jplayer-utils';
import { compose, withHandlers } from 'recompose';
import { setVolume } from '../../actions/actions';
import VolumeBar from './volumeBar';
const mapStateToProps = ({ jPlayers }, { id }) => ({
verticalVolume: jPlayers[id].verticalVolume,
});
const handlers = {
moveVolumeBar: props => (bar, e) => {
const offset = getElementOffset(bar);
const w = bar.getBoundingClientRect().width;
const h = bar.getBoundingClientRect().height;
const y = (h - e.clientY) + offset.top;
const x = e.clientX - offset.left;
if (props.verticalVolume) {
props.setVolume(props.id, y / h);
} else {
props.setVolume(props.id, x / w);
}
},
};
const secondHandlers = {
clickMoveBar: props => (bar, e) => props.moveVolumeBar(bar, e),
touchMoveBar: props => (bar, e) => {
// Stop page scrolling
e.preventDefault();
props.moveVolumeBar(bar, e.touches[0]);
},
};
export default compose(
connectWithId(mapStateToProps, {
setVolume,
}),
withHandlers(handlers),
withHandlers(secondHandlers),
)(VolumeBar);