@lahzenegar/video-react
Version:
Video-React is a web video player built from the ground up for an HTML5 world using React library.
224 lines (213 loc) • 6.42 kB
JavaScript
'use strict';
Object.defineProperty(exports, "__esModule", {
value: true
});
var _extends2 = require('babel-runtime/helpers/extends');
var _extends3 = _interopRequireDefault(_extends2);
exports.player = player;
var _video = require('../actions/video');
var _player = require('../actions/player');
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
var initialState = {
currentSrc: null,
duration: 0,
currentTime: 0,
seekingTime: 0,
buffered: null,
waiting: false,
seeking: false,
paused: true,
autoPaused: false,
ended: false,
playbackRate: 1,
muted: false,
volume: 1,
isLive: false,
hasDVR: false,
liveTime: 0,
latency: 0,
activeTrack: -1,
realActiveTrack: -1,
switchingTrack: false,
tracks: [],
readyState: 0,
networkState: 0,
videoWidth: 0,
videoHeight: 0,
hasStarted: false,
userActivity: true,
isActive: false,
isFullscreen: false,
hls: null,
secondsPlayed: 0,
percentPlayed: 0,
waitingTime: 0,
delayToStartPlaying: 0,
waitingDuration: 0,
audioOnly: false,
mediaDuration: 0,
playOffset: 0,
controlsVisibility: true,
contentLoading: true
};
function player() {
var state = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : initialState;
var action = arguments[1];
switch (action.type) {
case _player.USER_ACTIVATE:
return (0, _extends3.default)({}, state, {
userActivity: action.activity
});
case _player.PLAYER_ACTIVATE:
return (0, _extends3.default)({}, state, {
isActive: action.activity
});
case _player.FULLSCREEN_CHANGE:
return (0, _extends3.default)({}, state, {
isFullscreen: !!action.isFullscreen
});
case _player.AUDIO_ONLY_CHANGE:
return (0, _extends3.default)({}, state, {
audioOnly: action.audioOnly
});
case _video.AD_START:
return (0, _extends3.default)({}, state, {
ads: true
});
case _video.AD_ENDED:
return (0, _extends3.default)({}, state, {
ads: false
});
case _video.CONTENT_LOADING_STARTED:
return (0, _extends3.default)({}, state, {
contentLoading: true
});
case _video.CONTENT_LOADING_ENDED:
return (0, _extends3.default)({}, state, {
contentLoading: false
});
case _video.AD_ERROR:
case _video.ALL_ADS_COMPLETED:
return (0, _extends3.default)({}, state);
case _video.SEEKING_TIME:
return (0, _extends3.default)({}, state, {
seekingTime: action.time
});
case _video.END_SEEKING:
return (0, _extends3.default)({}, state, {
seekingTime: 0
});
case _video.LOAD_START:
return (0, _extends3.default)({}, state, action.videoProps, {
hasStarted: false,
ended: false
});
case _video.CAN_PLAY_THROUGH:
var newStateCanPlayThrough = (0, _extends3.default)({}, state, action.videoProps);
if (action.videoProps.paused === true) {
// newStateCanPlayThrough.hasStarted = true;
newStateCanPlayThrough.waiting = false;
}
return newStateCanPlayThrough;
case _video.CAN_PLAY:
var newStateCanPlay = (0, _extends3.default)({}, state, action.videoProps, {
waitingDuration: action.waitingDuration,
delayToStartPlaying: action.delayToStartPlaying
});
if (action.videoProps.paused === true) {
// newStateCanPlay.hasStarted = true;
newStateCanPlay.waiting = false;
}
return newStateCanPlay;
case _video.WAITING:
return (0, _extends3.default)({}, state, action.videoProps, {
waiting: true
});
case _video.PLAYING:
return (0, _extends3.default)({}, state, action.videoProps, {
waiting: false,
hasStarted: true
});
case _video.PLAY:
return (0, _extends3.default)({}, state, action.videoProps, {
ended: false,
paused: false,
autoPaused: false,
waiting: false
// hasStarted: true,
});
case _video.PAUSE:
return (0, _extends3.default)({}, state, action.videoProps, {
paused: true
});
case _video.END:
return (0, _extends3.default)({}, state, action.videoProps, {
ended: true
});
case _video.SEEKING:
return (0, _extends3.default)({}, state, action.videoProps, {
seeking: true
});
case _video.SEEKED:
return (0, _extends3.default)({}, state, action.videoProps, {
seeking: false
});
case _video.ERROR:
return (0, _extends3.default)({}, state, action.videoProps, {
error: 'UNKNOWN ERROR',
ended: true
});
case _video.MEDIA_STATE_CHANGE:
return (0, _extends3.default)({}, state, {
hasDVR: action.hasDVR,
isLive: action.isLive,
mediaDuration: action.mediaDuration,
playOffset: action.playOffset
});
case _video.MEDIA_LATENCY_CHANGE:
return (0, _extends3.default)({}, state, {
liveTime: action.liveTime,
latency: action.latency
});
case _video.LOADED_LEVELS:
return (0, _extends3.default)({}, state, {
tracks: action.tracks
});
case _video.MANIFEST_PARSED:
return (0, _extends3.default)({}, state, {
hls: action.hls
});
case _video.TRACK_CHANGE:
return (0, _extends3.default)({}, state, {
activeTrack: action.activeTrack
});
case _video.REAL_TRACK_CHANGE:
return (0, _extends3.default)({}, state, {
realActiveTrack: action.realActiveTrack,
switchingTrack: action.switchingTrack
});
case _video.TIME_UPDATE:
return (0, _extends3.default)({}, state, action.videoProps, {
secondsPlayed: action.secondsPlayed,
percentPlayed: action.percentPlayed,
waitingTime: action.waitingTime,
waiting: false
});
case _video.DURATION_CHANGE:
case _video.VOLUME_CHANGE:
case _video.PROGRESS_CHANGE:
case _video.RATE_CHANGE:
return (0, _extends3.default)({}, state, action.videoProps);
case _video.SUSPEND:
case _video.ABORT:
case _video.EMPTIED:
case _video.STALLED:
case _video.LOADED_META_DATA:
case _video.LOADED_DATA:
case _video.RESIZE:
return (0, _extends3.default)({}, state, action.videoProps);
default:
return state;
}
}
exports.default = player;