react-jplayer
Version:
Html5 audio and video player library for React
77 lines (66 loc) • 2.42 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
var _screenfull = require('screenfull');
var _screenfull2 = _interopRequireDefault(_screenfull);
var _reactJplayerUtils = require('react-jplayer-utils');
var _recompose = require('recompose');
var _actions = require('../../../actions/actions');
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
var mapStateToProps = function mapStateToProps(_ref, _ref2) {
var jPlayers = _ref.jPlayers;
var id = _ref2.id;
return {
fullScreen: jPlayers[id].fullScreen
};
};
var handlers = {
closeFullScreenListener: function closeFullScreenListener(props) {
return function () {
if (!_screenfull2.default.isFullscreen && props.fullScreen) {
props.setOption(props.id, 'fullScreen', false);
}
};
}
};
var lifecycleFunctions = {
requestFullScreen: function requestFullScreen() {
if (this.props.fullScreen) {
if (_screenfull2.default.enabled) {
_screenfull2.default.request(this.props.jPlayer);
}
// Legacy browsers don't implement full screen api
// Safari 5.1 doesn't hide the other elements even with fullscreen api
document.body.style.visibility = 'hidden';
}
},
exitFullScreen: function exitFullScreen() {
if (!this.props.fullScreen) {
if (_screenfull2.default.enabled) {
_screenfull2.default.exit();
}
document.body.style.visibility = 'visible';
}
},
componentDidMount: function componentDidMount() {
if (_screenfull2.default.enabled) {
document.addEventListener(_screenfull2.default.raw.fullscreenchange, this.props.closeFullScreenListener);
}
this.requestFullScreen();
},
componentDidUpdate: function componentDidUpdate(prevProps) {
this.requestFullScreen();
if (prevProps.fullScreen !== this.props.fullScreen) {
this.exitFullScreen();
}
},
componentWillUnmount: function componentWillUnmount() {
if (_screenfull2.default.enabled) {
document.removeEventListener(_screenfull2.default.raw.fullscreenchange, this.props.closeFullScreenListener);
}
}
};
exports.default = (0, _recompose.compose)((0, _reactJplayerUtils.connectWithId)(mapStateToProps, {
setOption: _actions.setOption
}), (0, _recompose.withHandlers)(handlers), (0, _recompose.lifecycle)(lifecycleFunctions))((0, _recompose.renderNothing)(null));