UNPKG

12.4 kBJavaScriptView Raw
1'use strict';
2
3Object.defineProperty(exports, "__esModule", {
4 value: true
5});
6exports.PhenixPlayer = exports.JWPlayer = exports.VAST = exports.FilePlayer = exports.Mixcloud = exports.Iframe = exports.UstreamVideo = exports.UstreamLive = exports.DailyMotion = exports.Twitch = exports.Wistia = exports.FaceMask = exports.Streamable = exports.Facebook = exports.Vimeo = exports.SoundCloud = exports.YouTube = undefined;
7
8var _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; };
9
10var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
11
12var _YouTube = require('./players/YouTube');
13
14Object.defineProperty(exports, 'YouTube', {
15 enumerable: true,
16 get: function get() {
17 return _interopRequireDefault(_YouTube)['default'];
18 }
19});
20
21var _SoundCloud = require('./players/SoundCloud');
22
23Object.defineProperty(exports, 'SoundCloud', {
24 enumerable: true,
25 get: function get() {
26 return _interopRequireDefault(_SoundCloud)['default'];
27 }
28});
29
30var _Vimeo = require('./players/Vimeo');
31
32Object.defineProperty(exports, 'Vimeo', {
33 enumerable: true,
34 get: function get() {
35 return _interopRequireDefault(_Vimeo)['default'];
36 }
37});
38
39var _Facebook = require('./players/Facebook');
40
41Object.defineProperty(exports, 'Facebook', {
42 enumerable: true,
43 get: function get() {
44 return _interopRequireDefault(_Facebook)['default'];
45 }
46});
47
48var _Streamable = require('./players/Streamable');
49
50Object.defineProperty(exports, 'Streamable', {
51 enumerable: true,
52 get: function get() {
53 return _interopRequireDefault(_Streamable)['default'];
54 }
55});
56
57var _FaceMask = require('./players/FaceMask');
58
59Object.defineProperty(exports, 'FaceMask', {
60 enumerable: true,
61 get: function get() {
62 return _interopRequireDefault(_FaceMask)['default'];
63 }
64});
65
66var _Wistia = require('./players/Wistia');
67
68Object.defineProperty(exports, 'Wistia', {
69 enumerable: true,
70 get: function get() {
71 return _interopRequireDefault(_Wistia)['default'];
72 }
73});
74
75var _Twitch = require('./players/Twitch');
76
77Object.defineProperty(exports, 'Twitch', {
78 enumerable: true,
79 get: function get() {
80 return _interopRequireDefault(_Twitch)['default'];
81 }
82});
83
84var _DailyMotion = require('./players/DailyMotion');
85
86Object.defineProperty(exports, 'DailyMotion', {
87 enumerable: true,
88 get: function get() {
89 return _interopRequireDefault(_DailyMotion)['default'];
90 }
91});
92
93var _UstreamLive = require('./players/UstreamLive');
94
95Object.defineProperty(exports, 'UstreamLive', {
96 enumerable: true,
97 get: function get() {
98 return _interopRequireDefault(_UstreamLive)['default'];
99 }
100});
101
102var _UstreamVideo = require('./players/UstreamVideo');
103
104Object.defineProperty(exports, 'UstreamVideo', {
105 enumerable: true,
106 get: function get() {
107 return _interopRequireDefault(_UstreamVideo)['default'];
108 }
109});
110
111var _Iframe = require('./players/Iframe');
112
113Object.defineProperty(exports, 'Iframe', {
114 enumerable: true,
115 get: function get() {
116 return _interopRequireDefault(_Iframe)['default'];
117 }
118});
119
120var _Mixcloud = require('./players/Mixcloud');
121
122Object.defineProperty(exports, 'Mixcloud', {
123 enumerable: true,
124 get: function get() {
125 return _interopRequireDefault(_Mixcloud)['default'];
126 }
127});
128
129var _FilePlayer = require('./players/FilePlayer');
130
131Object.defineProperty(exports, 'FilePlayer', {
132 enumerable: true,
133 get: function get() {
134 return _interopRequireDefault(_FilePlayer)['default'];
135 }
136});
137
138var _VAST = require('./players/VAST');
139
140Object.defineProperty(exports, 'VAST', {
141 enumerable: true,
142 get: function get() {
143 return _interopRequireDefault(_VAST)['default'];
144 }
145});
146
147var _JWPlayer = require('./players/JWPlayer');
148
149Object.defineProperty(exports, 'JWPlayer', {
150 enumerable: true,
151 get: function get() {
152 return _interopRequireDefault(_JWPlayer)['default'];
153 }
154});
155
156var _PhenixPlayer = require('./players/PhenixPlayer');
157
158Object.defineProperty(exports, 'PhenixPlayer', {
159 enumerable: true,
160 get: function get() {
161 return _interopRequireDefault(_PhenixPlayer)['default'];
162 }
163});
164
165var _react = require('react');
166
167var _react2 = _interopRequireDefault(_react);
168
169var _props2 = require('./props');
170
171var _utils = require('./utils');
172
173var _players = require('./players');
174
175var _players2 = _interopRequireDefault(_players);
176
177var _Player4 = require('./Player');
178
179var _Player5 = _interopRequireDefault(_Player4);
180
181var _Preview = require('./Preview');
182
183var _Preview2 = _interopRequireDefault(_Preview);
184
185var _preload = require('./preload');
186
187var _preload2 = _interopRequireDefault(_preload);
188
189function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }
190
191function _toConsumableArray(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } else { return Array.from(arr); } }
192
193function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
194
195function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; }
196
197function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }
198
199var SUPPORTED_PROPS = Object.keys(_props2.propTypes);
200
201var customPlayers = [];
202
203var ReactPlayer = function (_Component) {
204 _inherits(ReactPlayer, _Component);
205
206 function ReactPlayer() {
207 var _ref;
208
209 var _temp, _this, _ret;
210
211 _classCallCheck(this, ReactPlayer);
212
213 for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {
214 args[_key] = arguments[_key];
215 }
216
217 return _ret = (_temp = (_this = _possibleConstructorReturn(this, (_ref = ReactPlayer.__proto__ || Object.getPrototypeOf(ReactPlayer)).call.apply(_ref, [this].concat(args))), _this), _this.config = (0, _utils.getConfig)(_this.props, _props2.defaultProps, true), _this.state = {
218 showPreview: !!_this.props.light
219 }, _this.onClickPreview = function () {
220 _this.setState({ showPreview: false });
221 }, _this.getDuration = function () {
222 if (!_this.player) return null;
223 return _this.player.getDuration();
224 }, _this.getCurrentTime = function () {
225 if (!_this.player) return null;
226 return _this.player.getCurrentTime();
227 }, _this.getSecondsLoaded = function () {
228 if (!_this.player) return null;
229 return _this.player.getSecondsLoaded();
230 }, _this.getInternalPlayer = function () {
231 var key = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 'player';
232
233 if (!_this.player) return null;
234 return _this.player.getInternalPlayer(key);
235 }, _this.seekTo = function (fraction, type) {
236 if (!_this.player) return null;
237 _this.player.seekTo(fraction, type);
238 }, _this.onReady = function () {
239 _this.props.onReady(_this);
240 }, _this.wrapperRef = function (wrapper) {
241 _this.wrapper = wrapper;
242 }, _this.activePlayerRef = function (player) {
243 _this.player = player;
244 }, _temp), _possibleConstructorReturn(_this, _ret);
245 }
246
247 _createClass(ReactPlayer, [{
248 key: 'componentDidMount',
249 value: function componentDidMount() {
250 if (this.props.progressFrequency) {
251 var message = 'ReactPlayer: %cprogressFrequency%c is deprecated, please use %cprogressInterval%c instead';
252 console.warn(message, 'font-weight: bold', '', 'font-weight: bold', '');
253 }
254 }
255 }, {
256 key: 'shouldComponentUpdate',
257 value: function shouldComponentUpdate(nextProps, nextState) {
258 return !(0, _utils.isEqual)(this.props, nextProps) || !(0, _utils.isEqual)(this.state, nextState);
259 }
260 }, {
261 key: 'componentWillUpdate',
262 value: function componentWillUpdate(nextProps) {
263 this.config = (0, _utils.getConfig)(nextProps, _props2.defaultProps);
264 if (!this.props.light && nextProps.light) {
265 this.setState({ showPreview: true });
266 }
267 }
268 }, {
269 key: 'getActivePlayer',
270 value: function getActivePlayer(url) {
271 var _arr = [].concat(_toConsumableArray(customPlayers), _toConsumableArray(_players2['default']));
272
273 for (var _i = 0; _i < _arr.length; _i++) {
274 var _Player = _arr[_i];
275 if (_Player.canPlay(url)) {
276 return _Player;
277 }
278 }
279 // Fall back to FilePlayer if nothing else can play the URL
280 return _Iframe.Iframe;
281 }
282 }, {
283 key: 'renderActivePlayer',
284 value: function renderActivePlayer(url, activePlayer) {
285 if (!url) return null;
286 return _react2['default'].createElement(_Player5['default'], _extends({}, this.props, {
287 key: activePlayer.displayName,
288 ref: this.activePlayerRef,
289 config: this.config,
290 activePlayer: activePlayer,
291 onReady: this.onReady
292 }));
293 }
294 }, {
295 key: 'sortPlayers',
296 value: function sortPlayers(a, b) {
297 // Retain player order to prevent weird iframe behaviour when switching players
298 if (a && b) {
299 return a.key < b.key ? -1 : 1;
300 }
301 return 0;
302 }
303 }, {
304 key: 'render',
305 value: function render() {
306 var _props = this.props,
307 url = _props.url,
308 controls = _props.controls,
309 style = _props.style,
310 width = _props.width,
311 height = _props.height,
312 light = _props.light,
313 Wrapper = _props.wrapper;
314
315 var showPreview = this.state.showPreview && url;
316 var otherProps = (0, _utils.omit)(this.props, SUPPORTED_PROPS, _props2.DEPRECATED_CONFIG_PROPS);
317 var activePlayer = this.getActivePlayer(url);
318 var renderedActivePlayer = this.renderActivePlayer(url, activePlayer);
319 var preloadPlayers = (0, _preload2['default'])(url, controls, this.config);
320 var players = [renderedActivePlayer].concat(_toConsumableArray(preloadPlayers)).sort(this.sortPlayers);
321 var preview = _react2['default'].createElement(_Preview2['default'], { url: url, light: light, onClick: this.onClickPreview });
322 return _react2['default'].createElement(
323 Wrapper,
324 _extends({ ref: this.wrapperRef, style: _extends({}, style, { width: width, height: height }) }, otherProps),
325 showPreview ? preview : players
326 );
327 }
328 }]);
329
330 return ReactPlayer;
331}(_react.Component);
332
333ReactPlayer.addCustomPlayer = function (player) {
334 customPlayers.push(player);
335};
336
337ReactPlayer.removeCustomPlayers = function () {
338 customPlayers = [];
339};
340
341ReactPlayer.displayName = 'ReactPlayer';
342ReactPlayer.propTypes = _props2.propTypes;
343ReactPlayer.defaultProps = _props2.defaultProps;
344
345ReactPlayer.canPlay = function (url) {
346 var _arr2 = [].concat(_toConsumableArray(customPlayers), _toConsumableArray(_players2['default']));
347
348 for (var _i2 = 0; _i2 < _arr2.length; _i2++) {
349 var _Player2 = _arr2[_i2];
350 if (_Player2.canPlay(url)) {
351 return true;
352 }
353 }
354 return false;
355};
356
357ReactPlayer.canEnablePIP = function (url) {
358 var _arr3 = [].concat(_toConsumableArray(customPlayers), _toConsumableArray(_players2['default']));
359
360 for (var _i3 = 0; _i3 < _arr3.length; _i3++) {
361 var _Player3 = _arr3[_i3];
362 if (_Player3.canEnablePIP && _Player3.canEnablePIP(url)) {
363 return true;
364 }
365 }
366 return false;
367};
368
369exports['default'] = ReactPlayer;
\No newline at end of file