UNPKG

react-jplayer

Version:

Html5 audio and video player library for React

164 lines (142 loc) 4.92 kB
'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; var _propTypes = require('prop-types'); var _propTypes2 = _interopRequireDefault(_propTypes); var _recompose = require('recompose'); var _reactJplayerUtils = require('react-jplayer-utils'); var _events = require('./events'); var _events2 = _interopRequireDefault(_events); var _urlNotSupportedError = require('../../../util/errorHandlers/urlNotSupportedError'); var _urlNotSupportedError2 = _interopRequireDefault(_urlNotSupportedError); 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 { src: jPlayers[id].src, pauseOthersOnPlay: jPlayers[id].pauseOthersOnPlay, otherJPlayerIds: Object.keys(jPlayers).filter(function (key) { return key !== id; }) }; }; var contextTypes = { internalEvents: _propTypes2.default.shape({ onAbort: _propTypes2.default.func, onCanPlay: _propTypes2.default.func, onCanPlayThrough: _propTypes2.default.func, onDurationChange: _propTypes2.default.func, onEmptied: _propTypes2.default.func, onEncrypted: _propTypes2.default.func, onEnded: _propTypes2.default.func, onError: _propTypes2.default.func, onLoadedData: _propTypes2.default.func, onLoadedMetadata: _propTypes2.default.func, onLoadStart: _propTypes2.default.func, onPause: _propTypes2.default.func, onPlay: _propTypes2.default.func, onPlaying: _propTypes2.default.func, onProgress: _propTypes2.default.func, onRateChange: _propTypes2.default.func, onSeeked: _propTypes2.default.func, onSeeking: _propTypes2.default.func, onStalled: _propTypes2.default.func, onSuspend: _propTypes2.default.func, onTimeUpdate: _propTypes2.default.func, onVolumeChange: _propTypes2.default.func, onWaiting: _propTypes2.default.func }) }; var defaultProps = { internalEvents: {} }; var mapEvents = function mapEvents(ownerProps) { var events = {}; Object.keys(ownerProps.internalEvents).forEach(function (key) { events[key] = function (e) { ownerProps.internalEvents[key](e); ownerProps[key](e); }; }); return _extends({}, ownerProps, events); }; var firstHandlers = { pauseOthers: function pauseOthers(props) { return function () { props.otherJPlayerIds.forEach(function (id) { return props.pause(id); }); }; } }; var secondHandlers = { onDurationChange: function onDurationChange(props) { return function (e) { props.updateMediaStatus(); props.onDurationChange(e); }; }, onEnded: function onEnded(props) { return function (e) { props.pause(props.id, 0); props.updateMediaStatus(); props.onEnded(e); }; }, onError: function onError(props) { return function (e) { props.setOption(props.id, 'error', (0, _urlNotSupportedError2.default)(props.src)); props.onError(e); }; }, onPlay: function onPlay(props) { return function (e) { if (props.pauseOthersOnPlay) { props.pauseOthers(); } props.play(props.id); props.onPlay(e); }; }, onProgress: function onProgress(props) { return function (e) { var bufferedTimeRanges = []; for (var i = 0; i < e.currentTarget.buffered.length; i += 1) { bufferedTimeRanges.push({ start: e.currentTarget.buffered.start(i), end: e.currentTarget.buffered.end(i) }); } props.updateMediaStatus(); props.setOption(props.id, 'bufferedTimeRanges', bufferedTimeRanges); props.onProgress(e); }; }, onSeeked: function onSeeked(props) { return function (e) { props.setOption(props.id, 'seeking', false); props.onSeeked(e); }; }, onSeeking: function onSeeking(props) { return function (e) { props.setOption(props.id, 'seeking', true); props.onSeeking(e); }; }, onTimeUpdate: function onTimeUpdate(props) { return function (e) { props.updateMediaStatus(); props.onTimeUpdate(e); }; } }; exports.default = (0, _recompose.compose)((0, _reactJplayerUtils.connectWithId)(mapStateToProps, { setOption: _actions.setOption, pause: _actions.pause, play: _actions.play }), (0, _recompose.getContext)(contextTypes), (0, _recompose.defaultProps)(defaultProps), (0, _recompose.mapProps)(mapEvents), (0, _recompose.withHandlers)(firstHandlers), (0, _recompose.withHandlers)(secondHandlers))(_events2.default);