@lahzenegar/video-react
Version:
Video-React is a web video player built from the ground up for an HTML5 world using React library.
133 lines (96 loc) • 3.66 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
var _keys = require('babel-runtime/core-js/object/keys');
var _keys2 = _interopRequireDefault(_keys);
var _extends2 = require('babel-runtime/helpers/extends');
var _extends3 = _interopRequireDefault(_extends2);
var _classCallCheck2 = require('babel-runtime/helpers/classCallCheck');
var _classCallCheck3 = _interopRequireDefault(_classCallCheck2);
var _createClass2 = require('babel-runtime/helpers/createClass');
var _createClass3 = _interopRequireDefault(_createClass2);
var _redux = require('redux');
var _reducers = require('./reducers');
var _reducers2 = _interopRequireDefault(_reducers);
var _player = require('./actions/player');
var playerActions = _interopRequireWildcard(_player);
var _video = require('./actions/video');
var videoActions = _interopRequireWildcard(_video);
function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
var Manager = function () {
function Manager(store) {
(0, _classCallCheck3.default)(this, Manager);
this.store = store || (0, _redux.createStore)(_reducers2.default);
this.video = null;
this.rootElement = null;
}
(0, _createClass3.default)(Manager, [{
key: 'getActions',
value: function getActions() {
var manager = this;
var dispatch = this.store.dispatch;
var actions = (0, _extends3.default)({}, playerActions, videoActions);
function bindActionCreator(actionCreator) {
return function bindAction() {
// eslint-disable-next-line prefer-rest-params
var action = actionCreator.apply(manager, arguments);
if (typeof action !== 'undefined') {
dispatch(action);
}
};
}
return (0, _keys2.default)(actions).filter(function (key) {
return typeof actions[key] === 'function';
}).reduce(function (boundActions, key) {
boundActions[key] = bindActionCreator(actions[key]);
return boundActions;
}, {});
}
}, {
key: 'getState',
value: function getState() {
return this.store.getState();
}
// subscribe state change
}, {
key: 'subscribeToStateChange',
value: function subscribeToStateChange(listener, getState) {
if (!getState) {
getState = this.getState.bind(this);
}
var prevState = getState();
var handleChange = function handleChange() {
var state = getState();
if (state === prevState) {
return;
}
var prevStateCopy = prevState;
prevState = state;
listener(state, prevStateCopy);
};
return this.store.subscribe(handleChange);
}
// subscribe to operation state change
}, {
key: 'subscribeToOperationStateChange',
value: function subscribeToOperationStateChange(listener) {
var _this = this;
return this.subscribeToStateChange(listener, function () {
return _this.getState().operation;
});
}
// subscribe to player state change
}, {
key: 'subscribeToPlayerStateChange',
value: function subscribeToPlayerStateChange(listener) {
var _this2 = this;
return this.subscribeToStateChange(listener, function () {
return _this2.getState().player;
});
}
}]);
return Manager;
}();
exports.default = Manager;