a||125d?(a.sortIndex=c,f(t,a),null===h(r)&&a===h(t)&&(B?(E(L),L=-1):B=!0,K(H,c-d))):(a.sortIndex=e,f(r,a),A||z||(A=!0,I(J)));return a};\nexports.unstable_shouldYield=M;exports.unstable_wrapCallback=function(a){var b=y;return function(){var c=y;y=b;try{return a.apply(this,arguments)}finally{y=c}}};\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/scheduler.production.min.js');\n} else {\n module.exports = require('./cjs/scheduler.development.js');\n}\n","\"use strict\";\n\nvar _interopRequireWildcard = require(\"@babel/runtime/helpers/interopRequireWildcard\");\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports[\"default\"] = void 0;\n\nvar _objectSpread2 = _interopRequireDefault(require(\"@babel/runtime/helpers/objectSpread\"));\n\nvar _classCallCheck2 = _interopRequireDefault(require(\"@babel/runtime/helpers/classCallCheck\"));\n\nvar _createClass2 = _interopRequireDefault(require(\"@babel/runtime/helpers/createClass\"));\n\nvar _redux = require(\"redux\");\n\nvar _reducers = _interopRequireDefault(require(\"./reducers\"));\n\nvar playerActions = _interopRequireWildcard(require(\"./actions/player\"));\n\nvar videoActions = _interopRequireWildcard(require(\"./actions/video\"));\n\nvar Manager =\n/*#__PURE__*/\nfunction () {\n function Manager(store) {\n (0, _classCallCheck2[\"default\"])(this, Manager);\n this.store = store || (0, _redux.createStore)(_reducers[\"default\"]);\n this.video = null;\n this.rootElement = null;\n }\n\n (0, _createClass2[\"default\"])(Manager, [{\n key: \"getActions\",\n value: function getActions() {\n var manager = this;\n var dispatch = this.store.dispatch;\n var actions = (0, _objectSpread2[\"default\"])({}, playerActions, videoActions);\n\n function bindActionCreator(actionCreator) {\n return function bindAction() {\n // eslint-disable-next-line prefer-rest-params\n var action = actionCreator.apply(manager, arguments);\n\n if (typeof action !== 'undefined') {\n dispatch(action);\n }\n };\n }\n\n return Object.keys(actions).filter(function (key) {\n return typeof actions[key] === 'function';\n }).reduce(function (boundActions, key) {\n boundActions[key] = bindActionCreator(actions[key]);\n return boundActions;\n }, {});\n }\n }, {\n key: \"getState\",\n value: function getState() {\n return this.store.getState();\n } // subscribe state change\n\n }, {\n key: \"subscribeToStateChange\",\n value: function subscribeToStateChange(listener, getState) {\n if (!getState) {\n getState = this.getState.bind(this);\n }\n\n var prevState = getState();\n\n var handleChange = function handleChange() {\n var state = getState();\n\n if (state === prevState) {\n return;\n }\n\n var prevStateCopy = prevState;\n prevState = state;\n listener(state, prevStateCopy);\n };\n\n return this.store.subscribe(handleChange);\n } // subscribe to operation state change\n\n }, {\n key: \"subscribeToOperationStateChange\",\n value: function subscribeToOperationStateChange(listener) {\n var _this = this;\n\n return this.subscribeToStateChange(listener, function () {\n return _this.getState().operation;\n });\n } // subscribe to player state change\n\n }, {\n key: \"subscribeToPlayerStateChange\",\n value: function subscribeToPlayerStateChange(listener) {\n var _this2 = this;\n\n return this.subscribeToStateChange(listener, function () {\n return _this2.getState().player;\n });\n }\n }]);\n return Manager;\n}();\n\nexports[\"default\"] = Manager;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.handleFullscreenChange = handleFullscreenChange;\nexports.activate = activate;\nexports.userActivate = userActivate;\nexports.play = play;\nexports.pause = pause;\nexports.togglePlay = togglePlay;\nexports.seek = seek;\nexports.forward = forward;\nexports.replay = replay;\nexports.changeRate = changeRate;\nexports.changeVolume = changeVolume;\nexports.mute = mute;\nexports.toggleFullscreen = toggleFullscreen;\nexports.USER_ACTIVATE = exports.PLAYER_ACTIVATE = exports.FULLSCREEN_CHANGE = exports.OPERATE = void 0;\n\nvar _fullscreen = _interopRequireDefault(require(\"../utils/fullscreen\"));\n\nvar OPERATE = 'video-react/OPERATE';\nexports.OPERATE = OPERATE;\nvar FULLSCREEN_CHANGE = 'video-react/FULLSCREEN_CHANGE';\nexports.FULLSCREEN_CHANGE = FULLSCREEN_CHANGE;\nvar PLAYER_ACTIVATE = 'video-react/PLAYER_ACTIVATE';\nexports.PLAYER_ACTIVATE = PLAYER_ACTIVATE;\nvar USER_ACTIVATE = 'video-react/USER_ACTIVATE';\nexports.USER_ACTIVATE = USER_ACTIVATE;\n\nfunction handleFullscreenChange(isFullscreen) {\n return {\n type: FULLSCREEN_CHANGE,\n isFullscreen: isFullscreen\n };\n}\n\nfunction activate(activity) {\n return {\n type: PLAYER_ACTIVATE,\n activity: activity\n };\n}\n\nfunction userActivate(activity) {\n return {\n type: USER_ACTIVATE,\n activity: activity\n };\n}\n\nfunction play() {\n var operation = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {\n action: 'play',\n source: ''\n };\n this.video.play();\n return {\n type: OPERATE,\n operation: operation\n };\n}\n\nfunction pause() {\n var operation = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {\n action: 'pause',\n source: ''\n };\n this.video.pause();\n return {\n type: OPERATE,\n operation: operation\n };\n}\n\nfunction togglePlay() {\n var operation = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {\n action: 'toggle-play',\n source: ''\n };\n this.video.togglePlay();\n return {\n type: OPERATE,\n operation: operation\n };\n} // seek video by time\n\n\nfunction seek(time) {\n var operation = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {\n action: 'seek',\n source: ''\n };\n this.video.seek(time);\n return {\n type: OPERATE,\n operation: operation\n };\n} // jump forward x seconds\n\n\nfunction forward(seconds) {\n var operation = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {\n action: \"forward-\".concat(seconds),\n source: ''\n };\n this.video.forward(seconds);\n return {\n type: OPERATE,\n operation: operation\n };\n} // jump back x seconds\n\n\nfunction replay(seconds) {\n var operation = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {\n action: \"replay-\".concat(seconds),\n source: ''\n };\n this.video.replay(seconds);\n return {\n type: OPERATE,\n operation: operation\n };\n}\n\nfunction changeRate(rate) {\n var operation = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {\n action: 'change-rate',\n source: ''\n };\n this.video.playbackRate = rate;\n return {\n type: OPERATE,\n operation: operation\n };\n}\n\nfunction changeVolume(volume) {\n var operation = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {\n action: 'change-volume',\n source: ''\n };\n var v = volume;\n\n if (volume < 0) {\n v = 0;\n }\n\n if (volume > 1) {\n v = 1;\n }\n\n this.video.volume = v;\n return {\n type: OPERATE,\n operation: operation\n };\n}\n\nfunction mute(muted) {\n var operation = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {\n action: muted ? 'muted' : 'unmuted',\n source: ''\n };\n this.video.muted = muted;\n return {\n type: OPERATE,\n operation: operation\n };\n}\n\nfunction toggleFullscreen(player) {\n if (_fullscreen[\"default\"].enabled) {\n if (_fullscreen[\"default\"].isFullscreen) {\n _fullscreen[\"default\"].exit();\n } else {\n _fullscreen[\"default\"].request(this.rootElement);\n }\n\n return {\n type: OPERATE,\n operation: {\n action: 'toggle-fullscreen',\n source: ''\n }\n };\n }\n\n return {\n type: FULLSCREEN_CHANGE,\n isFullscreen: !player.isFullscreen\n };\n}","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.handleLoadStart = handleLoadStart;\nexports.handleCanPlay = handleCanPlay;\nexports.handleWaiting = handleWaiting;\nexports.handleCanPlayThrough = handleCanPlayThrough;\nexports.handlePlaying = handlePlaying;\nexports.handlePlay = handlePlay;\nexports.handlePause = handlePause;\nexports.handleEnd = handleEnd;\nexports.handleSeeking = handleSeeking;\nexports.handleSeeked = handleSeeked;\nexports.handleDurationChange = handleDurationChange;\nexports.handleTimeUpdate = handleTimeUpdate;\nexports.handleVolumeChange = handleVolumeChange;\nexports.handleProgressChange = handleProgressChange;\nexports.handleRateChange = handleRateChange;\nexports.handleSuspend = handleSuspend;\nexports.handleAbort = handleAbort;\nexports.handleEmptied = handleEmptied;\nexports.handleStalled = handleStalled;\nexports.handleLoadedMetaData = handleLoadedMetaData;\nexports.handleLoadedData = handleLoadedData;\nexports.handleResize = handleResize;\nexports.handleError = handleError;\nexports.handleSeekingTime = handleSeekingTime;\nexports.handleEndSeeking = handleEndSeeking;\nexports.activateTextTrack = activateTextTrack;\nexports.ACTIVATE_TEXT_TRACK = exports.ERROR = exports.RESIZE = exports.LOADED_DATA = exports.LOADED_META_DATA = exports.STALLED = exports.EMPTIED = exports.ABORT = exports.SUSPEND = exports.RATE_CHANGE = exports.PROGRESS_CHANGE = exports.VOLUME_CHANGE = exports.TIME_UPDATE = exports.DURATION_CHANGE = exports.END_SEEKING = exports.SEEKING_TIME = exports.SEEKED = exports.SEEKING = exports.END = exports.PAUSE = exports.PLAY = exports.PLAYING = exports.CAN_PLAY_THROUGH = exports.WAITING = exports.CAN_PLAY = exports.LOAD_START = void 0;\nvar LOAD_START = 'video-react/LOAD_START';\nexports.LOAD_START = LOAD_START;\nvar CAN_PLAY = 'video-react/CAN_PLAY';\nexports.CAN_PLAY = CAN_PLAY;\nvar WAITING = 'video-react/WAITING';\nexports.WAITING = WAITING;\nvar CAN_PLAY_THROUGH = 'video-react/CAN_PLAY_THROUGH';\nexports.CAN_PLAY_THROUGH = CAN_PLAY_THROUGH;\nvar PLAYING = 'video-react/PLAYING';\nexports.PLAYING = PLAYING;\nvar PLAY = 'video-react/PLAY';\nexports.PLAY = PLAY;\nvar PAUSE = 'video-react/PAUSE';\nexports.PAUSE = PAUSE;\nvar END = 'video-react/END';\nexports.END = END;\nvar SEEKING = 'video-react/SEEKING';\nexports.SEEKING = SEEKING;\nvar SEEKED = 'video-react/SEEKED';\nexports.SEEKED = SEEKED;\nvar SEEKING_TIME = 'video-react/SEEKING_TIME';\nexports.SEEKING_TIME = SEEKING_TIME;\nvar END_SEEKING = 'video-react/END_SEEKING';\nexports.END_SEEKING = END_SEEKING;\nvar DURATION_CHANGE = 'video-react/DURATION_CHANGE';\nexports.DURATION_CHANGE = DURATION_CHANGE;\nvar TIME_UPDATE = 'video-react/TIME_UPDATE';\nexports.TIME_UPDATE = TIME_UPDATE;\nvar VOLUME_CHANGE = 'video-react/VOLUME_CHANGE';\nexports.VOLUME_CHANGE = VOLUME_CHANGE;\nvar PROGRESS_CHANGE = 'video-react/PROGRESS_CHANGE';\nexports.PROGRESS_CHANGE = PROGRESS_CHANGE;\nvar RATE_CHANGE = 'video-react/RATE_CHANGE';\nexports.RATE_CHANGE = RATE_CHANGE;\nvar SUSPEND = 'video-react/SUSPEND';\nexports.SUSPEND = SUSPEND;\nvar ABORT = 'video-react/ABORT';\nexports.ABORT = ABORT;\nvar EMPTIED = 'video-react/EMPTIED';\nexports.EMPTIED = EMPTIED;\nvar STALLED = 'video-react/STALLED';\nexports.STALLED = STALLED;\nvar LOADED_META_DATA = 'video-react/LOADED_META_DATA';\nexports.LOADED_META_DATA = LOADED_META_DATA;\nvar LOADED_DATA = 'video-react/LOADED_DATA';\nexports.LOADED_DATA = LOADED_DATA;\nvar RESIZE = 'video-react/RESIZE';\nexports.RESIZE = RESIZE;\nvar ERROR = 'video-react/ERROR';\nexports.ERROR = ERROR;\nvar ACTIVATE_TEXT_TRACK = 'video-react/ACTIVATE_TEXT_TRACK';\nexports.ACTIVATE_TEXT_TRACK = ACTIVATE_TEXT_TRACK;\n\nfunction handleLoadStart(videoProps) {\n return {\n type: LOAD_START,\n videoProps: videoProps\n };\n}\n\nfunction handleCanPlay(videoProps) {\n return {\n type: CAN_PLAY,\n videoProps: videoProps\n };\n}\n\nfunction handleWaiting(videoProps) {\n return {\n type: WAITING,\n videoProps: videoProps\n };\n}\n\nfunction handleCanPlayThrough(videoProps) {\n return {\n type: CAN_PLAY_THROUGH,\n videoProps: videoProps\n };\n}\n\nfunction handlePlaying(videoProps) {\n return {\n type: PLAYING,\n videoProps: videoProps\n };\n}\n\nfunction handlePlay(videoProps) {\n return {\n type: PLAY,\n videoProps: videoProps\n };\n}\n\nfunction handlePause(videoProps) {\n return {\n type: PAUSE,\n videoProps: videoProps\n };\n}\n\nfunction handleEnd(videoProps) {\n return {\n type: END,\n videoProps: videoProps\n };\n}\n\nfunction handleSeeking(videoProps) {\n return {\n type: SEEKING,\n videoProps: videoProps\n };\n}\n\nfunction handleSeeked(videoProps) {\n return {\n type: SEEKED,\n videoProps: videoProps\n };\n}\n\nfunction handleDurationChange(videoProps) {\n return {\n type: DURATION_CHANGE,\n videoProps: videoProps\n };\n}\n\nfunction handleTimeUpdate(videoProps) {\n return {\n type: TIME_UPDATE,\n videoProps: videoProps\n };\n}\n\nfunction handleVolumeChange(videoProps) {\n return {\n type: VOLUME_CHANGE,\n videoProps: videoProps\n };\n}\n\nfunction handleProgressChange(videoProps) {\n return {\n type: PROGRESS_CHANGE,\n videoProps: videoProps\n };\n}\n\nfunction handleRateChange(videoProps) {\n return {\n type: RATE_CHANGE,\n videoProps: videoProps\n };\n}\n\nfunction handleSuspend(videoProps) {\n return {\n type: SUSPEND,\n videoProps: videoProps\n };\n}\n\nfunction handleAbort(videoProps) {\n return {\n type: ABORT,\n videoProps: videoProps\n };\n}\n\nfunction handleEmptied(videoProps) {\n return {\n type: EMPTIED,\n videoProps: videoProps\n };\n}\n\nfunction handleStalled(videoProps) {\n return {\n type: STALLED,\n videoProps: videoProps\n };\n}\n\nfunction handleLoadedMetaData(videoProps) {\n return {\n type: LOADED_META_DATA,\n videoProps: videoProps\n };\n}\n\nfunction handleLoadedData(videoProps) {\n return {\n type: LOADED_DATA,\n videoProps: videoProps\n };\n}\n\nfunction handleResize(videoProps) {\n return {\n type: RESIZE,\n videoProps: videoProps\n };\n}\n\nfunction handleError(videoProps) {\n return {\n type: ERROR,\n videoProps: videoProps\n };\n}\n\nfunction handleSeekingTime(time) {\n return {\n type: SEEKING_TIME,\n time: time\n };\n}\n\nfunction handleEndSeeking(time) {\n return {\n type: END_SEEKING,\n time: time\n };\n}\n\nfunction activateTextTrack(textTrack) {\n return {\n type: ACTIVATE_TEXT_TRACK,\n textTrack: textTrack\n };\n}","\"use strict\";\n\nvar _interopRequireWildcard = require(\"@babel/runtime/helpers/interopRequireWildcard\");\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports[\"default\"] = void 0;\n\nvar _classCallCheck2 = _interopRequireDefault(require(\"@babel/runtime/helpers/classCallCheck\"));\n\nvar _createClass2 = _interopRequireDefault(require(\"@babel/runtime/helpers/createClass\"));\n\nvar _possibleConstructorReturn2 = _interopRequireDefault(require(\"@babel/runtime/helpers/possibleConstructorReturn\"));\n\nvar _getPrototypeOf2 = _interopRequireDefault(require(\"@babel/runtime/helpers/getPrototypeOf\"));\n\nvar _assertThisInitialized2 = _interopRequireDefault(require(\"@babel/runtime/helpers/assertThisInitialized\"));\n\nvar _inherits2 = _interopRequireDefault(require(\"@babel/runtime/helpers/inherits\"));\n\nvar _propTypes = _interopRequireDefault(require(\"prop-types\"));\n\nvar _react = _interopRequireWildcard(require(\"react\"));\n\nvar _classnames = _interopRequireDefault(require(\"classnames\"));\n\nvar propTypes = {\n manager: _propTypes[\"default\"].object,\n className: _propTypes[\"default\"].string\n};\n\nvar Bezel =\n/*#__PURE__*/\nfunction (_Component) {\n (0, _inherits2[\"default\"])(Bezel, _Component);\n\n function Bezel(props, context) {\n var _this;\n\n (0, _classCallCheck2[\"default\"])(this, Bezel);\n _this = (0, _possibleConstructorReturn2[\"default\"])(this, (0, _getPrototypeOf2[\"default\"])(Bezel).call(this, props, context));\n _this.timer = null;\n props.manager.subscribeToOperationStateChange(_this.handleStateChange.bind((0, _assertThisInitialized2[\"default\"])(_this)));\n _this.state = {\n hidden: true,\n operation: {}\n };\n return _this;\n }\n\n (0, _createClass2[\"default\"])(Bezel, [{\n key: \"handleStateChange\",\n value: function handleStateChange(state, prevState) {\n var _this2 = this;\n\n if (state.count !== prevState.count && state.operation.source === 'shortcut') {\n if (this.timer) {\n // previous animation is not finished\n clearTimeout(this.timer); // cancel it\n\n this.timer = null;\n } // show it\n // update operation\n\n\n this.setState({\n hidden: false,\n count: state.count,\n operation: state.operation\n }); // hide it after 0.5s\n\n this.timer = setTimeout(function () {\n _this2.setState({\n hidden: true\n });\n\n _this2.timer = null;\n }, 500);\n }\n }\n }, {\n key: \"render\",\n value: function render() {\n // only displays for shortcut so far\n if (this.state.operation.source !== 'shortcut') {\n return null;\n }\n\n var style = this.state.hidden ? {\n display: 'none'\n } : null;\n return _react[\"default\"].createElement(\"div\", {\n className: (0, _classnames[\"default\"])({\n 'video-react-bezel': true,\n 'video-react-bezel-animation': this.state.count % 2 === 0,\n 'video-react-bezel-animation-alt': this.state.count % 2 === 1\n }, this.props.className),\n style: style,\n role: \"status\",\n \"aria-label\": this.state.operation.action\n }, _react[\"default\"].createElement(\"div\", {\n className: (0, _classnames[\"default\"])('video-react-bezel-icon', \"video-react-bezel-icon-\".concat(this.state.operation.action))\n }));\n }\n }]);\n return Bezel;\n}(_react.Component);\n\nexports[\"default\"] = Bezel;\nBezel.propTypes = propTypes;\nBezel.displayName = 'Bezel';","\"use strict\";\n\nvar _interopRequireWildcard = require(\"@babel/runtime/helpers/interopRequireWildcard\");\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports[\"default\"] = void 0;\n\nvar _classCallCheck2 = _interopRequireDefault(require(\"@babel/runtime/helpers/classCallCheck\"));\n\nvar _createClass2 = _interopRequireDefault(require(\"@babel/runtime/helpers/createClass\"));\n\nvar _possibleConstructorReturn2 = _interopRequireDefault(require(\"@babel/runtime/helpers/possibleConstructorReturn\"));\n\nvar _getPrototypeOf2 = _interopRequireDefault(require(\"@babel/runtime/helpers/getPrototypeOf\"));\n\nvar _assertThisInitialized2 = _interopRequireDefault(require(\"@babel/runtime/helpers/assertThisInitialized\"));\n\nvar _inherits2 = _interopRequireDefault(require(\"@babel/runtime/helpers/inherits\"));\n\nvar _propTypes = _interopRequireDefault(require(\"prop-types\"));\n\nvar _react = _interopRequireWildcard(require(\"react\"));\n\nvar _classnames = _interopRequireDefault(require(\"classnames\"));\n\nvar propTypes = {\n actions: _propTypes[\"default\"].object,\n player: _propTypes[\"default\"].object,\n position: _propTypes[\"default\"].string,\n className: _propTypes[\"default\"].string\n};\nvar defaultProps = {\n position: 'left'\n};\n\nvar BigPlayButton =\n/*#__PURE__*/\nfunction (_Component) {\n (0, _inherits2[\"default\"])(BigPlayButton, _Component);\n\n function BigPlayButton(props, context) {\n var _this;\n\n (0, _classCallCheck2[\"default\"])(this, BigPlayButton);\n _this = (0, _possibleConstructorReturn2[\"default\"])(this, (0, _getPrototypeOf2[\"default\"])(BigPlayButton).call(this, props, context));\n _this.handleClick = _this.handleClick.bind((0, _assertThisInitialized2[\"default\"])(_this));\n return _this;\n }\n\n (0, _createClass2[\"default\"])(BigPlayButton, [{\n key: \"componentDidMount\",\n value: function componentDidMount() {}\n }, {\n key: \"handleClick\",\n value: function handleClick() {\n var actions = this.props.actions;\n actions.play();\n }\n }, {\n key: \"render\",\n value: function render() {\n var _this$props = this.props,\n player = _this$props.player,\n position = _this$props.position;\n return _react[\"default\"].createElement(\"button\", {\n className: (0, _classnames[\"default\"])('video-react-button', 'video-react-big-play-button', \"video-react-big-play-button-\".concat(position), this.props.className, {\n 'big-play-button-hide': player.hasStarted || !player.currentSrc\n }),\n type: \"button\",\n \"aria-live\": \"polite\",\n tabIndex: \"0\",\n onClick: this.handleClick\n }, _react[\"default\"].createElement(\"span\", {\n className: \"video-react-control-text\"\n }, \"Play Video\"));\n }\n }]);\n return BigPlayButton;\n}(_react.Component);\n\nexports[\"default\"] = BigPlayButton;\nBigPlayButton.propTypes = propTypes;\nBigPlayButton.defaultProps = defaultProps;\nBigPlayButton.displayName = 'BigPlayButton';","\"use strict\";\n\nvar _interopRequireWildcard = require(\"@babel/runtime/helpers/interopRequireWildcard\");\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports[\"default\"] = void 0;\n\nvar _extends2 = _interopRequireDefault(require(\"@babel/runtime/helpers/extends\"));\n\nvar _objectSpread2 = _interopRequireDefault(require(\"@babel/runtime/helpers/objectSpread\"));\n\nvar _classCallCheck2 = _interopRequireDefault(require(\"@babel/runtime/helpers/classCallCheck\"));\n\nvar _createClass2 = _interopRequireDefault(require(\"@babel/runtime/helpers/createClass\"));\n\nvar _possibleConstructorReturn2 = _interopRequireDefault(require(\"@babel/runtime/helpers/possibleConstructorReturn\"));\n\nvar _getPrototypeOf2 = _interopRequireDefault(require(\"@babel/runtime/helpers/getPrototypeOf\"));\n\nvar _assertThisInitialized2 = _interopRequireDefault(require(\"@babel/runtime/helpers/assertThisInitialized\"));\n\nvar _inherits2 = _interopRequireDefault(require(\"@babel/runtime/helpers/inherits\"));\n\nvar _propTypes = _interopRequireDefault(require(\"prop-types\"));\n\nvar _react = _interopRequireWildcard(require(\"react\"));\n\nvar _classnames = _interopRequireDefault(require(\"classnames\"));\n\nvar propTypes = {\n tagName: _propTypes[\"default\"].string,\n onClick: _propTypes[\"default\"].func.isRequired,\n onFocus: _propTypes[\"default\"].func,\n onBlur: _propTypes[\"default\"].func,\n className: _propTypes[\"default\"].string\n};\nvar defaultProps = {\n tagName: 'div'\n};\n\nvar ClickableComponent =\n/*#__PURE__*/\nfunction (_Component) {\n (0, _inherits2[\"default\"])(ClickableComponent, _Component);\n\n function ClickableComponent(props, context) {\n var _this;\n\n (0, _classCallCheck2[\"default\"])(this, ClickableComponent);\n _this = (0, _possibleConstructorReturn2[\"default\"])(this, (0, _getPrototypeOf2[\"default\"])(ClickableComponent).call(this, props, context));\n _this.handleClick = _this.handleClick.bind((0, _assertThisInitialized2[\"default\"])(_this));\n _this.handleFocus = _this.handleFocus.bind((0, _assertThisInitialized2[\"default\"])(_this));\n _this.handleBlur = _this.handleBlur.bind((0, _assertThisInitialized2[\"default\"])(_this));\n _this.handleKeypress = _this.handleKeypress.bind((0, _assertThisInitialized2[\"default\"])(_this));\n return _this;\n }\n\n (0, _createClass2[\"default\"])(ClickableComponent, [{\n key: \"componentWillUnmount\",\n value: function componentWillUnmount(e) {\n this.handleBlur(e);\n }\n }, {\n key: \"handleKeypress\",\n value: function handleKeypress(event) {\n // Support Space (32) or Enter (13) key operation to fire a click event\n if (event.which === 32 || event.which === 13) {\n event.preventDefault();\n this.handleClick(event);\n }\n }\n }, {\n key: \"handleClick\",\n value: function handleClick(event) {\n var onClick = this.props.onClick;\n onClick(event);\n }\n }, {\n key: \"handleFocus\",\n value: function handleFocus(e) {\n document.addEventListener('keydown', this.handleKeypress);\n\n if (this.props.onFocus) {\n this.props.onFocus(e);\n }\n }\n }, {\n key: \"handleBlur\",\n value: function handleBlur(e) {\n document.removeEventListener('keydown', this.handleKeypress);\n\n if (this.props.onBlur) {\n this.props.onBlur(e);\n }\n }\n }, {\n key: \"render\",\n value: function render() {\n var Tag = this.props.tagName;\n var props = (0, _objectSpread2[\"default\"])({}, this.props);\n delete props.tagName;\n delete props.className;\n return _react[\"default\"].createElement(Tag, (0, _extends2[\"default\"])({\n className: (0, _classnames[\"default\"])(this.props.className),\n role: \"button\",\n tabIndex: \"0\",\n onClick: this.handleClick,\n onFocus: this.handleFocus,\n onBlur: this.handleBlur\n }, props));\n }\n }]);\n return ClickableComponent;\n}(_react.Component);\n\nexports[\"default\"] = ClickableComponent;\nClickableComponent.propTypes = propTypes;\nClickableComponent.defaultProps = defaultProps;\nClickableComponent.displayName = 'ClickableComponent';","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports[\"default\"] = LoadingSpinner;\n\nvar _propTypes = _interopRequireDefault(require(\"prop-types\"));\n\nvar _react = _interopRequireDefault(require(\"react\"));\n\nvar _classnames = _interopRequireDefault(require(\"classnames\"));\n\nvar propTypes = {\n player: _propTypes[\"default\"].object,\n className: _propTypes[\"default\"].string\n};\n\nfunction LoadingSpinner(_ref) {\n var player = _ref.player,\n className = _ref.className;\n\n if (player.error) {\n return null;\n }\n\n return _react[\"default\"].createElement(\"div\", {\n className: (0, _classnames[\"default\"])('video-react-loading-spinner', className)\n });\n}\n\nLoadingSpinner.propTypes = propTypes;\nLoadingSpinner.displayName = 'LoadingSpinner';","\"use strict\";\n\nvar _interopRequireWildcard = require(\"@babel/runtime/helpers/interopRequireWildcard\");\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports[\"default\"] = void 0;\n\nvar _objectSpread2 = _interopRequireDefault(require(\"@babel/runtime/helpers/objectSpread\"));\n\nvar _defineProperty2 = _interopRequireDefault(require(\"@babel/runtime/helpers/defineProperty\"));\n\nvar _objectWithoutProperties2 = _interopRequireDefault(require(\"@babel/runtime/helpers/objectWithoutProperties\"));\n\nvar _classCallCheck2 = _interopRequireDefault(require(\"@babel/runtime/helpers/classCallCheck\"));\n\nvar _createClass2 = _interopRequireDefault(require(\"@babel/runtime/helpers/createClass\"));\n\nvar _possibleConstructorReturn2 = _interopRequireDefault(require(\"@babel/runtime/helpers/possibleConstructorReturn\"));\n\nvar _getPrototypeOf2 = _interopRequireDefault(require(\"@babel/runtime/helpers/getPrototypeOf\"));\n\nvar _assertThisInitialized2 = _interopRequireDefault(require(\"@babel/runtime/helpers/assertThisInitialized\"));\n\nvar _inherits2 = _interopRequireDefault(require(\"@babel/runtime/helpers/inherits\"));\n\nvar _propTypes = _interopRequireDefault(require(\"prop-types\"));\n\nvar _react = _interopRequireWildcard(require(\"react\"));\n\nvar _classnames = _interopRequireDefault(require(\"classnames\"));\n\nvar _Manager = _interopRequireDefault(require(\"../Manager\"));\n\nvar _BigPlayButton = _interopRequireDefault(require(\"./BigPlayButton\"));\n\nvar _LoadingSpinner = _interopRequireDefault(require(\"./LoadingSpinner\"));\n\nvar _PosterImage = _interopRequireDefault(require(\"./PosterImage\"));\n\nvar _Video = _interopRequireDefault(require(\"./Video\"));\n\nvar _Bezel = _interopRequireDefault(require(\"./Bezel\"));\n\nvar _Shortcut = _interopRequireDefault(require(\"./Shortcut\"));\n\nvar _ControlBar = _interopRequireDefault(require(\"./control-bar/ControlBar\"));\n\nvar browser = _interopRequireWildcard(require(\"../utils/browser\"));\n\nvar _dom = require(\"../utils/dom\");\n\nvar _utils = require(\"../utils\");\n\nvar _fullscreen = _interopRequireDefault(require(\"../utils/fullscreen\"));\n\nvar propTypes = {\n children: _propTypes[\"default\"].any,\n width: _propTypes[\"default\"].oneOfType([_propTypes[\"default\"].string, _propTypes[\"default\"].number]),\n height: _propTypes[\"default\"].oneOfType([_propTypes[\"default\"].string, _propTypes[\"default\"].number]),\n fluid: _propTypes[\"default\"].bool,\n muted: _propTypes[\"default\"].bool,\n playsInline: _propTypes[\"default\"].bool,\n aspectRatio: _propTypes[\"default\"].string,\n className: _propTypes[\"default\"].string,\n videoId: _propTypes[\"default\"].string,\n startTime: _propTypes[\"default\"].number,\n loop: _propTypes[\"default\"].bool,\n autoPlay: _propTypes[\"default\"].bool,\n src: _propTypes[\"default\"].string,\n poster: _propTypes[\"default\"].string,\n preload: _propTypes[\"default\"].oneOf(['auto', 'metadata', 'none']),\n onLoadStart: _propTypes[\"default\"].func,\n onWaiting: _propTypes[\"default\"].func,\n onCanPlay: _propTypes[\"default\"].func,\n onCanPlayThrough: _propTypes[\"default\"].func,\n onPlaying: _propTypes[\"default\"].func,\n onEnded: _propTypes[\"default\"].func,\n onSeeking: _propTypes[\"default\"].func,\n onSeeked: _propTypes[\"default\"].func,\n onPlay: _propTypes[\"default\"].func,\n onPause: _propTypes[\"default\"].func,\n onProgress: _propTypes[\"default\"].func,\n onDurationChange: _propTypes[\"default\"].func,\n onError: _propTypes[\"default\"].func,\n onSuspend: _propTypes[\"default\"].func,\n onAbort: _propTypes[\"default\"].func,\n onEmptied: _propTypes[\"default\"].func,\n onStalled: _propTypes[\"default\"].func,\n onLoadedMetadata: _propTypes[\"default\"].func,\n onLoadedData: _propTypes[\"default\"].func,\n onTimeUpdate: _propTypes[\"default\"].func,\n onRateChange: _propTypes[\"default\"].func,\n onVolumeChange: _propTypes[\"default\"].func,\n store: _propTypes[\"default\"].object\n};\nvar defaultProps = {\n fluid: true,\n muted: false,\n playsInline: false,\n preload: 'auto',\n aspectRatio: 'auto'\n};\n\nvar Player =\n/*#__PURE__*/\nfunction (_Component) {\n (0, _inherits2[\"default\"])(Player, _Component);\n\n function Player(props) {\n var _this;\n\n (0, _classCallCheck2[\"default\"])(this, Player);\n _this = (0, _possibleConstructorReturn2[\"default\"])(this, (0, _getPrototypeOf2[\"default\"])(Player).call(this, props));\n _this.controlsHideTimer = null;\n _this.video = null; // the Video component\n\n _this.manager = new _Manager[\"default\"](props.store);\n _this.actions = _this.manager.getActions();\n\n _this.manager.subscribeToPlayerStateChange(_this.handleStateChange.bind((0, _assertThisInitialized2[\"default\"])(_this)));\n\n _this.getStyle = _this.getStyle.bind((0, _assertThisInitialized2[\"default\"])(_this));\n _this.handleResize = _this.handleResize.bind((0, _assertThisInitialized2[\"default\"])(_this));\n _this.getChildren = _this.getChildren.bind((0, _assertThisInitialized2[\"default\"])(_this));\n _this.handleMouseMove = (0, _utils.throttle)(_this.handleMouseMove.bind((0, _assertThisInitialized2[\"default\"])(_this)), 250);\n _this.handleMouseDown = _this.handleMouseDown.bind((0, _assertThisInitialized2[\"default\"])(_this));\n _this.startControlsTimer = _this.startControlsTimer.bind((0, _assertThisInitialized2[\"default\"])(_this));\n _this.handleFullScreenChange = _this.handleFullScreenChange.bind((0, _assertThisInitialized2[\"default\"])(_this));\n _this.handleKeyDown = _this.handleKeyDown.bind((0, _assertThisInitialized2[\"default\"])(_this));\n _this.handleFocus = _this.handleFocus.bind((0, _assertThisInitialized2[\"default\"])(_this));\n _this.handleBlur = _this.handleBlur.bind((0, _assertThisInitialized2[\"default\"])(_this));\n return _this;\n }\n\n (0, _createClass2[\"default\"])(Player, [{\n key: \"componentDidMount\",\n value: function componentDidMount() {\n this.handleResize();\n window.addEventListener('resize', this.handleResize);\n\n _fullscreen[\"default\"].addEventListener(this.handleFullScreenChange);\n }\n }, {\n key: \"componentWillUnmount\",\n value: function componentWillUnmount() {\n // Remove event listener\n window.removeEventListener('resize', this.handleResize);\n\n _fullscreen[\"default\"].removeEventListener(this.handleFullScreenChange);\n\n if (this.controlsHideTimer) {\n window.clearTimeout(this.controlsHideTimer);\n }\n }\n }, {\n key: \"getDefaultChildren\",\n value: function getDefaultChildren(originalChildren) {\n var _this2 = this;\n\n return [_react[\"default\"].createElement(_Video[\"default\"], {\n ref: function ref(c) {\n _this2.video = c;\n _this2.manager.video = _this2.video;\n },\n key: \"video\",\n order: 0.0\n }, originalChildren), _react[\"default\"].createElement(_PosterImage[\"default\"], {\n key: \"poster-image\",\n order: 1.0\n }), _react[\"default\"].createElement(_LoadingSpinner[\"default\"], {\n key: \"loading-spinner\",\n order: 2.0\n }), _react[\"default\"].createElement(_Bezel[\"default\"], {\n key: \"bezel\",\n order: 3.0\n }), _react[\"default\"].createElement(_BigPlayButton[\"default\"], {\n key: \"big-play-button\",\n order: 4.0\n }), _react[\"default\"].createElement(_ControlBar[\"default\"], {\n key: \"control-bar\",\n order: 5.0\n }), _react[\"default\"].createElement(_Shortcut[\"default\"], {\n key: \"shortcut\",\n order: 99.0\n })];\n }\n }, {\n key: \"getChildren\",\n value: function getChildren(props) {\n var _ = props.className,\n originalChildren = props.children,\n propsWithoutChildren = (0, _objectWithoutProperties2[\"default\"])(props, [\"className\", \"children\"]);\n\n var children = _react[\"default\"].Children.toArray(this.props.children).filter(function (e) {\n return !(0, _utils.isVideoChild)(e);\n });\n\n var defaultChildren = this.getDefaultChildren(originalChildren);\n return (0, _utils.mergeAndSortChildren)(defaultChildren, children, propsWithoutChildren);\n }\n }, {\n key: \"setWidthOrHeight\",\n value: function setWidthOrHeight(style, name, value) {\n var styleVal;\n\n if (typeof value === 'string') {\n if (value === 'auto') {\n styleVal = 'auto';\n } else if (value.match(/\\d+%/)) {\n styleVal = value;\n }\n } else if (typeof value === 'number') {\n styleVal = \"\".concat(value, \"px\");\n }\n\n Object.assign(style, (0, _defineProperty2[\"default\"])({}, name, styleVal));\n }\n }, {\n key: \"getStyle\",\n value: function getStyle() {\n var _this$props = this.props,\n fluid = _this$props.fluid,\n propsAspectRatio = _this$props.aspectRatio,\n propsHeight = _this$props.height,\n propsWidth = _this$props.width;\n\n var _this$manager$getStat = this.manager.getState(),\n player = _this$manager$getStat.player;\n\n var style = {};\n var width;\n var height;\n var aspectRatio; // The aspect ratio is either used directly or to calculate width and height.\n\n if (propsAspectRatio !== undefined && propsAspectRatio !== 'auto') {\n // Use any aspectRatio that's been specifically set\n aspectRatio = propsAspectRatio;\n } else if (player.videoWidth) {\n // Otherwise try to get the aspect ratio from the video metadata\n aspectRatio = \"\".concat(player.videoWidth, \":\").concat(player.videoHeight);\n } else {\n // Or use a default. The video element's is 2:1, but 16:9 is more common.\n aspectRatio = '16:9';\n } // Get the ratio as a decimal we can use to calculate dimensions\n\n\n var ratioParts = aspectRatio.split(':');\n var ratioMultiplier = ratioParts[1] / ratioParts[0];\n\n if (propsWidth !== undefined) {\n // Use any width that's been specifically set\n width = propsWidth;\n } else if (propsHeight !== undefined) {\n // Or calulate the width from the aspect ratio if a height has been set\n width = propsHeight / ratioMultiplier;\n } else {\n // Or use the video's metadata, or use the video el's default of 300\n width = player.videoWidth || 400;\n }\n\n if (propsHeight !== undefined) {\n // Use any height that's been specifically set\n height = propsHeight;\n } else {\n // Otherwise calculate the height from the ratio and the width\n height = width * ratioMultiplier;\n }\n\n if (fluid) {\n style.paddingTop = \"\".concat(ratioMultiplier * 100, \"%\");\n } else {\n // If Width contains \"auto\", set \"auto\" in style\n this.setWidthOrHeight(style, 'width', width);\n this.setWidthOrHeight(style, 'height', height);\n }\n\n return style;\n } // get redux state\n // { player, operation }\n\n }, {\n key: \"getState\",\n value: function getState() {\n return this.manager.getState();\n } // get playback rate\n\n }, {\n key: \"play\",\n // play the video\n value: function play() {\n this.video.play();\n } // pause the video\n\n }, {\n key: \"pause\",\n value: function pause() {\n this.video.pause();\n } // Change the video source and re-load the video:\n\n }, {\n key: \"load\",\n value: function load() {\n this.video.load();\n } // Add a new text track to the video\n\n }, {\n key: \"addTextTrack\",\n value: function addTextTrack() {\n var _this$video;\n\n (_this$video = this.video).addTextTrack.apply(_this$video, arguments);\n } // Check if your browser can play different types of video:\n\n }, {\n key: \"canPlayType\",\n value: function canPlayType() {\n var _this$video2;\n\n (_this$video2 = this.video).canPlayType.apply(_this$video2, arguments);\n } // seek video by time\n\n }, {\n key: \"seek\",\n value: function seek(time) {\n this.video.seek(time);\n } // jump forward x seconds\n\n }, {\n key: \"forward\",\n value: function forward(seconds) {\n this.video.forward(seconds);\n } // jump back x seconds\n\n }, {\n key: \"replay\",\n value: function replay(seconds) {\n this.video.replay(seconds);\n } // enter or exist full screen\n\n }, {\n key: \"toggleFullscreen\",\n value: function toggleFullscreen() {\n this.video.toggleFullscreen();\n } // subscribe to player state change\n\n }, {\n key: \"subscribeToStateChange\",\n value: function subscribeToStateChange(listener) {\n return this.manager.subscribeToPlayerStateChange(listener);\n } // player resize\n\n }, {\n key: \"handleResize\",\n value: function handleResize() {}\n }, {\n key: \"handleFullScreenChange\",\n value: function handleFullScreenChange(event) {\n if (event.target === this.manager.rootElement) {\n this.actions.handleFullscreenChange(_fullscreen[\"default\"].isFullscreen);\n }\n }\n }, {\n key: \"handleMouseDown\",\n value: function handleMouseDown() {\n this.startControlsTimer();\n }\n }, {\n key: \"handleMouseMove\",\n value: function handleMouseMove() {\n this.startControlsTimer();\n }\n }, {\n key: \"handleKeyDown\",\n value: function handleKeyDown() {\n this.startControlsTimer();\n }\n }, {\n key: \"startControlsTimer\",\n value: function startControlsTimer() {\n var _this3 = this;\n\n var controlBarActiveTime = 3000;\n\n _react[\"default\"].Children.forEach(this.props.children, function (element) {\n if (!_react[\"default\"].isValidElement(element) || element.type !== _ControlBar[\"default\"]) {\n return;\n }\n\n var autoHideTime = element.props.autoHideTime;\n\n if (typeof autoHideTime === 'number') {\n controlBarActiveTime = autoHideTime;\n }\n });\n\n this.actions.userActivate(true);\n clearTimeout(this.controlsHideTimer);\n this.controlsHideTimer = setTimeout(function () {\n _this3.actions.userActivate(false);\n }, controlBarActiveTime);\n }\n }, {\n key: \"handleStateChange\",\n value: function handleStateChange(state, prevState) {\n if (state.isFullscreen !== prevState.isFullscreen) {\n this.handleResize(); // focus root when switching fullscreen mode to avoid confusion #276\n\n (0, _dom.focusNode)(this.manager.rootElement);\n }\n\n this.forceUpdate(); // re-render\n }\n }, {\n key: \"handleFocus\",\n value: function handleFocus() {\n this.actions.activate(true);\n }\n }, {\n key: \"handleBlur\",\n value: function handleBlur() {\n this.actions.activate(false);\n }\n }, {\n key: \"render\",\n value: function render() {\n var _this4 = this;\n\n var fluid = this.props.fluid;\n\n var _this$manager$getStat2 = this.manager.getState(),\n player = _this$manager$getStat2.player;\n\n var paused = player.paused,\n hasStarted = player.hasStarted,\n waiting = player.waiting,\n seeking = player.seeking,\n isFullscreen = player.isFullscreen,\n userActivity = player.userActivity;\n var props = (0, _objectSpread2[\"default\"])({}, this.props, {\n player: player,\n actions: this.actions,\n manager: this.manager,\n store: this.manager.store,\n video: this.video ? this.video.video : null\n });\n var children = this.getChildren(props);\n return _react[\"default\"].createElement(\"div\", {\n className: (0, _classnames[\"default\"])({\n 'video-react-controls-enabled': true,\n 'video-react-has-started': hasStarted,\n 'video-react-paused': paused,\n 'video-react-playing': !paused,\n 'video-react-waiting': waiting,\n 'video-react-seeking': seeking,\n 'video-react-fluid': fluid,\n 'video-react-fullscreen': isFullscreen,\n 'video-react-user-inactive': !userActivity,\n 'video-react-user-active': userActivity,\n 'video-react-workinghover': !browser.IS_IOS\n }, 'video-react', this.props.className),\n style: this.getStyle(),\n ref: function ref(c) {\n _this4.manager.rootElement = c;\n },\n role: \"region\",\n onTouchStart: this.handleMouseDown,\n onMouseDown: this.handleMouseDown,\n onTouchMove: this.handleMouseMove,\n onMouseMove: this.handleMouseMove,\n onKeyDown: this.handleKeyDown,\n onFocus: this.handleFocus,\n onBlur: this.handleBlur,\n tabIndex: \"-1\"\n }, children);\n }\n }, {\n key: \"playbackRate\",\n get: function get() {\n return this.video.playbackRate;\n } // set playback rate\n // speed of video\n ,\n set: function set(rate) {\n this.video.playbackRate = rate;\n }\n }, {\n key: \"muted\",\n get: function get() {\n return this.video.muted;\n },\n set: function set(val) {\n this.video.muted = val;\n }\n }, {\n key: \"volume\",\n get: function get() {\n return this.video.volume;\n },\n set: function set(val) {\n this.video.volume = val;\n } // video width\n\n }, {\n key: \"videoWidth\",\n get: function get() {\n return this.video.videoWidth;\n } // video height\n\n }, {\n key: \"videoHeight\",\n get: function get() {\n return this.video.videoHeight;\n }\n }]);\n return Player;\n}(_react.Component);\n\nexports[\"default\"] = Player;\nPlayer.contextTypes = {\n store: _propTypes[\"default\"].object\n};\nPlayer.propTypes = propTypes;\nPlayer.defaultProps = defaultProps;\nPlayer.displayName = 'Player';","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports[\"default\"] = void 0;\n\nvar _propTypes = _interopRequireDefault(require(\"prop-types\"));\n\nvar _react = _interopRequireDefault(require(\"react\"));\n\nvar _classnames = _interopRequireDefault(require(\"classnames\"));\n\nvar propTypes = {\n poster: _propTypes[\"default\"].string,\n player: _propTypes[\"default\"].object,\n actions: _propTypes[\"default\"].object,\n className: _propTypes[\"default\"].string\n};\n\nfunction PosterImage(_ref) {\n var poster = _ref.poster,\n player = _ref.player,\n actions = _ref.actions,\n className = _ref.className;\n\n if (!poster || player.hasStarted) {\n return null;\n }\n\n return _react[\"default\"].createElement(\"div\", {\n className: (0, _classnames[\"default\"])('video-react-poster', className),\n style: {\n backgroundImage: \"url(\\\"\".concat(poster, \"\\\")\")\n },\n onClick: function onClick() {\n if (player.paused) {\n actions.play();\n }\n }\n });\n}\n\nPosterImage.propTypes = propTypes;\nPosterImage.displayName = 'PosterImage';\nvar _default = PosterImage;\nexports[\"default\"] = _default;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports[\"default\"] = void 0;\n\nvar _defineProperty2 = _interopRequireDefault(require(\"@babel/runtime/helpers/defineProperty\"));\n\nvar _toConsumableArray2 = _interopRequireDefault(require(\"@babel/runtime/helpers/toConsumableArray\"));\n\nvar _classCallCheck2 = _interopRequireDefault(require(\"@babel/runtime/helpers/classCallCheck\"));\n\nvar _createClass2 = _interopRequireDefault(require(\"@babel/runtime/helpers/createClass\"));\n\nvar _possibleConstructorReturn2 = _interopRequireDefault(require(\"@babel/runtime/helpers/possibleConstructorReturn\"));\n\nvar _getPrototypeOf2 = _interopRequireDefault(require(\"@babel/runtime/helpers/getPrototypeOf\"));\n\nvar _assertThisInitialized2 = _interopRequireDefault(require(\"@babel/runtime/helpers/assertThisInitialized\"));\n\nvar _inherits2 = _interopRequireDefault(require(\"@babel/runtime/helpers/inherits\"));\n\nvar _react = require(\"react\");\n\nvar _propTypes = _interopRequireDefault(require(\"prop-types\"));\n\nvar _dom = require(\"../utils/dom\");\n\nvar propTypes = {\n clickable: _propTypes[\"default\"].bool,\n dblclickable: _propTypes[\"default\"].bool,\n manager: _propTypes[\"default\"].object,\n actions: _propTypes[\"default\"].object,\n player: _propTypes[\"default\"].object,\n shortcuts: _propTypes[\"default\"].array\n};\nvar defaultProps = {\n clickable: true,\n dblclickable: true\n};\n\nvar Shortcut =\n/*#__PURE__*/\nfunction (_Component) {\n (0, _inherits2[\"default\"])(Shortcut, _Component);\n\n function Shortcut(props, context) {\n var _this;\n\n (0, _classCallCheck2[\"default\"])(this, Shortcut);\n _this = (0, _possibleConstructorReturn2[\"default\"])(this, (0, _getPrototypeOf2[\"default\"])(Shortcut).call(this, props, context));\n _this.defaultShortcuts = [{\n keyCode: 32,\n // spacebar\n handle: _this.togglePlay\n }, {\n keyCode: 75,\n // k\n handle: _this.togglePlay\n }, {\n keyCode: 70,\n // f\n handle: _this.toggleFullscreen\n }, {\n keyCode: 37,\n // Left arrow\n handle: function handle(player, actions) {\n if (!player.hasStarted) {\n return;\n }\n\n actions.replay(5, {\n action: 'replay-5',\n source: 'shortcut'\n }); // Go back 5 seconds\n }\n }, {\n keyCode: 74,\n // j\n handle: function handle(player, actions) {\n if (!player.hasStarted) {\n return;\n }\n\n actions.replay(10, {\n action: 'replay-10',\n source: 'shortcut'\n }); // Go back 10 seconds\n }\n }, {\n keyCode: 39,\n // Right arrow\n handle: function handle(player, actions) {\n if (!player.hasStarted) {\n return;\n }\n\n actions.forward(5, {\n action: 'forward-5',\n source: 'shortcut'\n }); // Go forward 5 seconds\n }\n }, {\n keyCode: 76,\n // l\n handle: function handle(player, actions) {\n if (!player.hasStarted) {\n return;\n }\n\n actions.forward(10, {\n action: 'forward-10',\n source: 'shortcut'\n }); // Go forward 10 seconds\n }\n }, {\n keyCode: 36,\n // Home\n handle: function handle(player, actions) {\n if (!player.hasStarted) {\n return;\n }\n\n actions.seek(0); // Go to beginning of video\n }\n }, {\n keyCode: 35,\n // End\n handle: function handle(player, actions) {\n if (!player.hasStarted) {\n return;\n } // Go to end of video\n\n\n actions.seek(player.duration);\n }\n }, {\n keyCode: 38,\n // Up arrow\n handle: function handle(player, actions) {\n // Increase volume 5%\n var v = player.volume + 0.05;\n\n if (v > 1) {\n v = 1;\n }\n\n actions.changeVolume(v, {\n action: 'volume-up',\n source: 'shortcut'\n });\n }\n }, {\n keyCode: 40,\n // Down arrow\n handle: function handle(player, actions) {\n // Decrease volume 5%\n var v = player.volume - 0.05;\n\n if (v < 0) {\n v = 0;\n }\n\n var action = v > 0 ? 'volume-down' : 'volume-off';\n actions.changeVolume(v, {\n action: action,\n source: 'shortcut'\n });\n }\n }, {\n keyCode: 190,\n // Shift + >\n shift: true,\n handle: function handle(player, actions) {\n // Increase speed\n var playbackRate = player.playbackRate;\n\n if (playbackRate >= 1.5) {\n playbackRate = 2;\n } else if (playbackRate >= 1.25) {\n playbackRate = 1.5;\n } else if (playbackRate >= 1.0) {\n playbackRate = 1.25;\n } else if (playbackRate >= 0.5) {\n playbackRate = 1.0;\n } else if (playbackRate >= 0.25) {\n playbackRate = 0.5;\n } else if (playbackRate >= 0) {\n playbackRate = 0.25;\n }\n\n actions.changeRate(playbackRate, {\n action: 'fast-forward',\n source: 'shortcut'\n });\n }\n }, {\n keyCode: 188,\n // Shift + <\n shift: true,\n handle: function handle(player, actions) {\n // Decrease speed\n var playbackRate = player.playbackRate;\n\n if (playbackRate <= 0.5) {\n playbackRate = 0.25;\n } else if (playbackRate <= 1.0) {\n playbackRate = 0.5;\n } else if (playbackRate <= 1.25) {\n playbackRate = 1.0;\n } else if (playbackRate <= 1.5) {\n playbackRate = 1.25;\n } else if (playbackRate <= 2) {\n playbackRate = 1.5;\n }\n\n actions.changeRate(playbackRate, {\n action: 'fast-rewind',\n source: 'shortcut'\n });\n }\n }];\n _this.shortcuts = (0, _toConsumableArray2[\"default\"])(_this.defaultShortcuts);\n _this.mergeShortcuts = _this.mergeShortcuts.bind((0, _assertThisInitialized2[\"default\"])(_this));\n _this.handleKeyPress = _this.handleKeyPress.bind((0, _assertThisInitialized2[\"default\"])(_this));\n _this.handleClick = _this.handleClick.bind((0, _assertThisInitialized2[\"default\"])(_this));\n _this.handleDoubleClick = _this.handleDoubleClick.bind((0, _assertThisInitialized2[\"default\"])(_this));\n return _this;\n }\n\n (0, _createClass2[\"default\"])(Shortcut, [{\n key: \"componentDidMount\",\n value: function componentDidMount() {\n this.mergeShortcuts();\n document.addEventListener('keydown', this.handleKeyPress);\n document.addEventListener('click', this.handleClick);\n document.addEventListener('dblclick', this.handleDoubleClick);\n }\n }, {\n key: \"componentDidUpdate\",\n value: function componentDidUpdate(prevProps) {\n if (prevProps.shortcuts !== this.props.shortcuts) {\n this.mergeShortcuts();\n }\n }\n }, {\n key: \"componentWillUnmount\",\n value: function componentWillUnmount() {\n document.removeEventListener('keydown', this.handleKeyPress);\n document.removeEventListener('click', this.handleClick);\n document.removeEventListener('dblclick', this.handleDoubleClick);\n } // merge the shortcuts from props\n\n }, {\n key: \"mergeShortcuts\",\n value: function mergeShortcuts() {\n var getShortcutKey = function getShortcutKey(_ref) {\n var _ref$keyCode = _ref.keyCode,\n keyCode = _ref$keyCode === void 0 ? 0 : _ref$keyCode,\n _ref$ctrl = _ref.ctrl,\n ctrl = _ref$ctrl === void 0 ? false : _ref$ctrl,\n _ref$shift = _ref.shift,\n shift = _ref$shift === void 0 ? false : _ref$shift,\n _ref$alt = _ref.alt,\n alt = _ref$alt === void 0 ? false : _ref$alt;\n return \"\".concat(keyCode, \":\").concat(ctrl, \":\").concat(shift, \":\").concat(alt);\n };\n\n var defaultShortcuts = this.defaultShortcuts.reduce(function (shortcuts, shortcut) {\n return Object.assign(shortcuts, (0, _defineProperty2[\"default\"])({}, getShortcutKey(shortcut), shortcut));\n }, {});\n var mergedShortcuts = (this.props.shortcuts || []).reduce(function (shortcuts, shortcut) {\n var keyCode = shortcut.keyCode,\n handle = shortcut.handle;\n\n if (keyCode && typeof handle === 'function') {\n return Object.assign(shortcuts, (0, _defineProperty2[\"default\"])({}, getShortcutKey(shortcut), shortcut));\n }\n\n return shortcuts;\n }, defaultShortcuts);\n\n var gradeShortcut = function gradeShortcut(s) {\n var score = 0;\n var ps = ['ctrl', 'shift', 'alt'];\n ps.forEach(function (key) {\n if (s[key]) {\n score++;\n }\n });\n return score;\n };\n\n this.shortcuts = Object.keys(mergedShortcuts).map(function (key) {\n return mergedShortcuts[key];\n }).sort(function (a, b) {\n return gradeShortcut(b) - gradeShortcut(a);\n });\n }\n }, {\n key: \"togglePlay\",\n value: function togglePlay(player, actions) {\n if (player.paused) {\n actions.play({\n action: 'play',\n source: 'shortcut'\n });\n } else {\n actions.pause({\n action: 'pause',\n source: 'shortcut'\n });\n }\n }\n }, {\n key: \"toggleFullscreen\",\n value: function toggleFullscreen(player, actions) {\n actions.toggleFullscreen(player);\n }\n }, {\n key: \"handleKeyPress\",\n value: function handleKeyPress(e) {\n var _this$props = this.props,\n player = _this$props.player,\n actions = _this$props.actions;\n\n if (!player.isActive) {\n return;\n }\n\n if (document.activeElement && ((0, _dom.hasClass)(document.activeElement, 'video-react-control') || (0, _dom.hasClass)(document.activeElement, 'video-react-menu-button-active') // || hasClass(document.activeElement, 'video-react-slider')\n || (0, _dom.hasClass)(document.activeElement, 'video-react-big-play-button'))) {\n return;\n }\n\n var keyCode = e.keyCode || e.which;\n var ctrl = e.ctrlKey || e.metaKey;\n var shift = e.shiftKey;\n var alt = e.altKey;\n var shortcut = this.shortcuts.filter(function (s) {\n if (!s.keyCode || s.keyCode - keyCode !== 0) {\n return false;\n }\n\n if (s.ctrl !== undefined && s.ctrl !== ctrl || s.shift !== undefined && s.shift !== shift || s.alt !== undefined && s.alt !== alt) {\n return false;\n }\n\n return true;\n })[0];\n\n if (shortcut) {\n shortcut.handle(player, actions);\n e.preventDefault();\n }\n } // only if player is active and player is ready\n\n }, {\n key: \"canBeClicked\",\n value: function canBeClicked(player, e) {\n if (!player.isActive || e.target.nodeName !== 'VIDEO' || player.readyState !== 4) {\n return false;\n }\n\n return true;\n }\n }, {\n key: \"handleClick\",\n value: function handleClick(e) {\n var _this$props2 = this.props,\n player = _this$props2.player,\n actions = _this$props2.actions,\n clickable = _this$props2.clickable;\n\n if (!this.canBeClicked(player, e) || !clickable) {\n return;\n }\n\n this.togglePlay(player, actions); // e.preventDefault();\n }\n }, {\n key: \"handleDoubleClick\",\n value: function handleDoubleClick(e) {\n var _this$props3 = this.props,\n player = _this$props3.player,\n actions = _this$props3.actions,\n dblclickable = _this$props3.dblclickable;\n\n if (!this.canBeClicked(player, e) || !dblclickable) {\n return;\n }\n\n this.toggleFullscreen(player, actions); // e.preventDefault();\n } // this component dose not render anything\n // it's just for the key down event\n\n }, {\n key: \"render\",\n value: function render() {\n return null;\n }\n }]);\n return Shortcut;\n}(_react.Component);\n\nexports[\"default\"] = Shortcut;\nShortcut.propTypes = propTypes;\nShortcut.defaultProps = defaultProps;\nShortcut.displayName = 'Shortcut';","\"use strict\";\n\nvar _interopRequireWildcard = require(\"@babel/runtime/helpers/interopRequireWildcard\");\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports[\"default\"] = void 0;\n\nvar _classCallCheck2 = _interopRequireDefault(require(\"@babel/runtime/helpers/classCallCheck\"));\n\nvar _createClass2 = _interopRequireDefault(require(\"@babel/runtime/helpers/createClass\"));\n\nvar _possibleConstructorReturn2 = _interopRequireDefault(require(\"@babel/runtime/helpers/possibleConstructorReturn\"));\n\nvar _getPrototypeOf2 = _interopRequireDefault(require(\"@babel/runtime/helpers/getPrototypeOf\"));\n\nvar _assertThisInitialized2 = _interopRequireDefault(require(\"@babel/runtime/helpers/assertThisInitialized\"));\n\nvar _inherits2 = _interopRequireDefault(require(\"@babel/runtime/helpers/inherits\"));\n\nvar _propTypes = _interopRequireDefault(require(\"prop-types\"));\n\nvar _react = _interopRequireWildcard(require(\"react\"));\n\nvar _classnames = _interopRequireDefault(require(\"classnames\"));\n\nvar Dom = _interopRequireWildcard(require(\"../utils/dom\"));\n\nvar propTypes = {\n className: _propTypes[\"default\"].string,\n onMouseDown: _propTypes[\"default\"].func,\n onMouseMove: _propTypes[\"default\"].func,\n stepForward: _propTypes[\"default\"].func,\n stepBack: _propTypes[\"default\"].func,\n sliderActive: _propTypes[\"default\"].func,\n sliderInactive: _propTypes[\"default\"].func,\n onMouseUp: _propTypes[\"default\"].func,\n onFocus: _propTypes[\"default\"].func,\n onBlur: _propTypes[\"default\"].func,\n onClick: _propTypes[\"default\"].func,\n getPercent: _propTypes[\"default\"].func,\n vertical: _propTypes[\"default\"].bool,\n children: _propTypes[\"default\"].node,\n label: _propTypes[\"default\"].string,\n valuenow: _propTypes[\"default\"].string,\n valuetext: _propTypes[\"default\"].string\n};\n\nvar Slider =\n/*#__PURE__*/\nfunction (_Component) {\n (0, _inherits2[\"default\"])(Slider, _Component);\n\n function Slider(props, context) {\n var _this;\n\n (0, _classCallCheck2[\"default\"])(this, Slider);\n _this = (0, _possibleConstructorReturn2[\"default\"])(this, (0, _getPrototypeOf2[\"default\"])(Slider).call(this, props, context));\n _this.handleMouseDown = _this.handleMouseDown.bind((0, _assertThisInitialized2[\"default\"])(_this));\n _this.handleMouseMove = _this.handleMouseMove.bind((0, _assertThisInitialized2[\"default\"])(_this));\n _this.handleMouseUp = _this.handleMouseUp.bind((0, _assertThisInitialized2[\"default\"])(_this));\n _this.handleFocus = _this.handleFocus.bind((0, _assertThisInitialized2[\"default\"])(_this));\n _this.handleBlur = _this.handleBlur.bind((0, _assertThisInitialized2[\"default\"])(_this));\n _this.handleClick = _this.handleClick.bind((0, _assertThisInitialized2[\"default\"])(_this));\n _this.handleKeyPress = _this.handleKeyPress.bind((0, _assertThisInitialized2[\"default\"])(_this));\n _this.stepForward = _this.stepForward.bind((0, _assertThisInitialized2[\"default\"])(_this));\n _this.stepBack = _this.stepBack.bind((0, _assertThisInitialized2[\"default\"])(_this));\n _this.calculateDistance = _this.calculateDistance.bind((0, _assertThisInitialized2[\"default\"])(_this));\n _this.getProgress = _this.getProgress.bind((0, _assertThisInitialized2[\"default\"])(_this));\n _this.renderChildren = _this.renderChildren.bind((0, _assertThisInitialized2[\"default\"])(_this));\n _this.state = {\n active: false\n };\n return _this;\n }\n\n (0, _createClass2[\"default\"])(Slider, [{\n key: \"componentWillUnmount\",\n value: function componentWillUnmount() {\n document.removeEventListener('mousemove', this.handleMouseMove, true);\n document.removeEventListener('mouseup', this.handleMouseUp, true);\n document.removeEventListener('touchmove', this.handleMouseMove, true);\n document.removeEventListener('touchend', this.handleMouseUp, true);\n document.removeEventListener('keydown', this.handleKeyPress, true);\n }\n }, {\n key: \"getProgress\",\n value: function getProgress() {\n var getPercent = this.props.getPercent;\n\n if (!getPercent) {\n return 0;\n }\n\n var progress = getPercent(); // Protect against no duration and other division issues\n\n if (typeof progress !== 'number' || progress < 0 || progress === Infinity) {\n progress = 0;\n }\n\n return progress;\n }\n }, {\n key: \"handleMouseDown\",\n value: function handleMouseDown(event) {\n var onMouseDown = this.props.onMouseDown; // event.preventDefault();\n // event.stopPropagation();\n\n document.addEventListener('mousemove', this.handleMouseMove, true);\n document.addEventListener('mouseup', this.handleMouseUp, true);\n document.addEventListener('touchmove', this.handleMouseMove, true);\n document.addEventListener('touchend', this.handleMouseUp, true);\n this.setState({\n active: true\n });\n\n if (this.props.sliderActive) {\n this.props.sliderActive(event);\n }\n\n this.handleMouseMove(event);\n\n if (onMouseDown) {\n onMouseDown(event);\n }\n }\n }, {\n key: \"handleMouseMove\",\n value: function handleMouseMove(event) {\n var onMouseMove = this.props.onMouseMove;\n\n if (onMouseMove) {\n onMouseMove(event);\n }\n }\n }, {\n key: \"handleMouseUp\",\n value: function handleMouseUp(event) {\n // On iOS safari, a subsequent mouseup event will be fired after touchend.\n // Its weird event positions make the player seek a wrong time.\n // calling preventDefault (at touchend phase) will prevent the mouseup event\n event.preventDefault();\n var onMouseUp = this.props.onMouseUp;\n document.removeEventListener('mousemove', this.handleMouseMove, true);\n document.removeEventListener('mouseup', this.handleMouseUp, true);\n document.removeEventListener('touchmove', this.handleMouseMove, true);\n document.removeEventListener('touchend', this.handleMouseUp, true);\n this.setState({\n active: false\n });\n\n if (this.props.sliderInactive) {\n this.props.sliderInactive(event);\n }\n\n if (onMouseUp) {\n onMouseUp(event);\n }\n }\n }, {\n key: \"handleFocus\",\n value: function handleFocus(e) {\n document.addEventListener('keydown', this.handleKeyPress, true);\n\n if (this.props.onFocus) {\n this.props.onFocus(e);\n }\n }\n }, {\n key: \"handleBlur\",\n value: function handleBlur(e) {\n document.removeEventListener('keydown', this.handleKeyPress, true);\n\n if (this.props.onBlur) {\n this.props.onBlur(e);\n }\n }\n }, {\n key: \"handleClick\",\n value: function handleClick(event) {\n event.preventDefault(); // event.stopPropagation();\n\n if (this.props.onClick) {\n this.props.onClick(event);\n }\n }\n }, {\n key: \"handleKeyPress\",\n value: function handleKeyPress(event) {\n if (event.which === 37 || event.which === 40) {\n // Left and Down Arrows\n event.preventDefault();\n event.stopPropagation();\n this.stepBack();\n } else if (event.which === 38 || event.which === 39) {\n // Up and Right Arrows\n event.preventDefault();\n event.stopPropagation();\n this.stepForward();\n }\n }\n }, {\n key: \"stepForward\",\n value: function stepForward() {\n if (this.props.stepForward) {\n this.props.stepForward();\n }\n }\n }, {\n key: \"stepBack\",\n value: function stepBack() {\n if (this.props.stepBack) {\n this.props.stepBack();\n }\n }\n }, {\n key: \"calculateDistance\",\n value: function calculateDistance(event) {\n var node = this.slider;\n var position = Dom.getPointerPosition(node, event);\n\n if (this.props.vertical) {\n return position.y;\n }\n\n return position.x;\n }\n }, {\n key: \"renderChildren\",\n value: function renderChildren() {\n var progress = this.getProgress();\n var percentage = \"\".concat((progress * 100).toFixed(2), \"%\");\n return _react[\"default\"].Children.map(this.props.children, function (child) {\n return _react[\"default\"].cloneElement(child, {\n progress: progress,\n percentage: percentage\n });\n });\n }\n }, {\n key: \"render\",\n value: function render() {\n var _this2 = this;\n\n var _this$props = this.props,\n vertical = _this$props.vertical,\n label = _this$props.label,\n valuenow = _this$props.valuenow,\n valuetext = _this$props.valuetext;\n return _react[\"default\"].createElement(\"div\", {\n className: (0, _classnames[\"default\"])(this.props.className, {\n 'video-react-slider-vertical': vertical,\n 'video-react-slider-horizontal': !vertical,\n 'video-react-sliding': this.state.active\n }, 'video-react-slider'),\n ref: function ref(c) {\n _this2.slider = c;\n },\n tabIndex: \"0\",\n role: \"slider\",\n onMouseDown: this.handleMouseDown,\n onTouchStart: this.handleMouseDown,\n onFocus: this.handleFocus,\n onBlur: this.handleBlur,\n onClick: this.handleClick,\n \"aria-label\": label || '',\n \"aria-valuenow\": valuenow || '',\n \"aria-valuetext\": valuetext || '',\n \"aria-valuemin\": 0,\n \"aria-valuemax\": 100\n }, this.renderChildren());\n }\n }]);\n return Slider;\n}(_react.Component);\n\nexports[\"default\"] = Slider;\nSlider.propTypes = propTypes;\nSlider.displayName = 'Slider';","\"use strict\";\n\nvar _interopRequireWildcard = require(\"@babel/runtime/helpers/interopRequireWildcard\");\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports[\"default\"] = void 0;\n\nvar _objectSpread2 = _interopRequireDefault(require(\"@babel/runtime/helpers/objectSpread\"));\n\nvar _classCallCheck2 = _interopRequireDefault(require(\"@babel/runtime/helpers/classCallCheck\"));\n\nvar _createClass2 = _interopRequireDefault(require(\"@babel/runtime/helpers/createClass\"));\n\nvar _possibleConstructorReturn2 = _interopRequireDefault(require(\"@babel/runtime/helpers/possibleConstructorReturn\"));\n\nvar _getPrototypeOf2 = _interopRequireDefault(require(\"@babel/runtime/helpers/getPrototypeOf\"));\n\nvar _assertThisInitialized2 = _interopRequireDefault(require(\"@babel/runtime/helpers/assertThisInitialized\"));\n\nvar _inherits2 = _interopRequireDefault(require(\"@babel/runtime/helpers/inherits\"));\n\nvar _propTypes = _interopRequireDefault(require(\"prop-types\"));\n\nvar _react = _interopRequireWildcard(require(\"react\"));\n\nvar _classnames = _interopRequireDefault(require(\"classnames\"));\n\nvar _utils = require(\"../utils\");\n\nvar propTypes = {\n actions: _propTypes[\"default\"].object,\n player: _propTypes[\"default\"].object,\n children: _propTypes[\"default\"].any,\n startTime: _propTypes[\"default\"].number,\n loop: _propTypes[\"default\"].bool,\n muted: _propTypes[\"default\"].bool,\n autoPlay: _propTypes[\"default\"].bool,\n playsInline: _propTypes[\"default\"].bool,\n src: _propTypes[\"default\"].string,\n poster: _propTypes[\"default\"].string,\n className: _propTypes[\"default\"].string,\n preload: _propTypes[\"default\"].oneOf(['auto', 'metadata', 'none']),\n crossOrigin: _propTypes[\"default\"].string,\n onLoadStart: _propTypes[\"default\"].func,\n onWaiting: _propTypes[\"default\"].func,\n onCanPlay: _propTypes[\"default\"].func,\n onCanPlayThrough: _propTypes[\"default\"].func,\n onPlaying: _propTypes[\"default\"].func,\n onEnded: _propTypes[\"default\"].func,\n onSeeking: _propTypes[\"default\"].func,\n onSeeked: _propTypes[\"default\"].func,\n onPlay: _propTypes[\"default\"].func,\n onPause: _propTypes[\"default\"].func,\n onProgress: _propTypes[\"default\"].func,\n onDurationChange: _propTypes[\"default\"].func,\n onError: _propTypes[\"default\"].func,\n onSuspend: _propTypes[\"default\"].func,\n onAbort: _propTypes[\"default\"].func,\n onEmptied: _propTypes[\"default\"].func,\n onStalled: _propTypes[\"default\"].func,\n onLoadedMetadata: _propTypes[\"default\"].func,\n onLoadedData: _propTypes[\"default\"].func,\n onTimeUpdate: _propTypes[\"default\"].func,\n onRateChange: _propTypes[\"default\"].func,\n onVolumeChange: _propTypes[\"default\"].func,\n onResize: _propTypes[\"default\"].func\n};\n\nvar Video =\n/*#__PURE__*/\nfunction (_Component) {\n (0, _inherits2[\"default\"])(Video, _Component);\n\n function Video(props) {\n var _this;\n\n (0, _classCallCheck2[\"default\"])(this, Video);\n _this = (0, _possibleConstructorReturn2[\"default\"])(this, (0, _getPrototypeOf2[\"default\"])(Video).call(this, props));\n _this.video = null; // the html5 video\n\n _this.play = _this.play.bind((0, _assertThisInitialized2[\"default\"])(_this));\n _this.pause = _this.pause.bind((0, _assertThisInitialized2[\"default\"])(_this));\n _this.seek = _this.seek.bind((0, _assertThisInitialized2[\"default\"])(_this));\n _this.forward = _this.forward.bind((0, _assertThisInitialized2[\"default\"])(_this));\n _this.replay = _this.replay.bind((0, _assertThisInitialized2[\"default\"])(_this));\n _this.toggleFullscreen = _this.toggleFullscreen.bind((0, _assertThisInitialized2[\"default\"])(_this));\n _this.getProperties = _this.getProperties.bind((0, _assertThisInitialized2[\"default\"])(_this));\n _this.renderChildren = _this.renderChildren.bind((0, _assertThisInitialized2[\"default\"])(_this));\n _this.handleLoadStart = _this.handleLoadStart.bind((0, _assertThisInitialized2[\"default\"])(_this));\n _this.handleCanPlay = _this.handleCanPlay.bind((0, _assertThisInitialized2[\"default\"])(_this));\n _this.handleCanPlayThrough = _this.handleCanPlayThrough.bind((0, _assertThisInitialized2[\"default\"])(_this));\n _this.handlePlay = _this.handlePlay.bind((0, _assertThisInitialized2[\"default\"])(_this));\n _this.handlePlaying = _this.handlePlaying.bind((0, _assertThisInitialized2[\"default\"])(_this));\n _this.handlePause = _this.handlePause.bind((0, _assertThisInitialized2[\"default\"])(_this));\n _this.handleEnded = _this.handleEnded.bind((0, _assertThisInitialized2[\"default\"])(_this));\n _this.handleWaiting = _this.handleWaiting.bind((0, _assertThisInitialized2[\"default\"])(_this));\n _this.handleSeeking = _this.handleSeeking.bind((0, _assertThisInitialized2[\"default\"])(_this));\n _this.handleSeeked = _this.handleSeeked.bind((0, _assertThisInitialized2[\"default\"])(_this));\n _this.handleFullscreenChange = _this.handleFullscreenChange.bind((0, _assertThisInitialized2[\"default\"])(_this));\n _this.handleError = _this.handleError.bind((0, _assertThisInitialized2[\"default\"])(_this));\n _this.handleSuspend = _this.handleSuspend.bind((0, _assertThisInitialized2[\"default\"])(_this));\n _this.handleAbort = _this.handleAbort.bind((0, _assertThisInitialized2[\"default\"])(_this));\n _this.handleEmptied = _this.handleEmptied.bind((0, _assertThisInitialized2[\"default\"])(_this));\n _this.handleStalled = _this.handleStalled.bind((0, _assertThisInitialized2[\"default\"])(_this));\n _this.handleLoadedMetaData = _this.handleLoadedMetaData.bind((0, _assertThisInitialized2[\"default\"])(_this));\n _this.handleLoadedData = _this.handleLoadedData.bind((0, _assertThisInitialized2[\"default\"])(_this));\n _this.handleTimeUpdate = _this.handleTimeUpdate.bind((0, _assertThisInitialized2[\"default\"])(_this));\n _this.handleRateChange = _this.handleRateChange.bind((0, _assertThisInitialized2[\"default\"])(_this));\n _this.handleVolumeChange = _this.handleVolumeChange.bind((0, _assertThisInitialized2[\"default\"])(_this));\n _this.handleDurationChange = _this.handleDurationChange.bind((0, _assertThisInitialized2[\"default\"])(_this));\n _this.handleProgress = (0, _utils.throttle)(_this.handleProgress.bind((0, _assertThisInitialized2[\"default\"])(_this)), 250);\n _this.handleKeypress = _this.handleKeypress.bind((0, _assertThisInitialized2[\"default\"])(_this));\n _this.handleTextTrackChange = _this.handleTextTrackChange.bind((0, _assertThisInitialized2[\"default\"])(_this));\n return _this;\n }\n\n (0, _createClass2[\"default\"])(Video, [{\n key: \"componentDidMount\",\n value: function componentDidMount() {\n this.forceUpdate(); // make sure the children can get the video property\n\n if (this.video && this.video.textTracks) {\n this.video.textTracks.onaddtrack = this.handleTextTrackChange;\n this.video.textTracks.onremovetrack = this.handleTextTrackChange;\n }\n } // get all video properties\n\n }, {\n key: \"getProperties\",\n value: function getProperties() {\n var _this2 = this;\n\n if (!this.video) {\n return null;\n }\n\n return _utils.mediaProperties.reduce(function (properties, key) {\n properties[key] = _this2.video[key];\n return properties;\n }, {});\n } // get playback rate\n\n }, {\n key: \"handleTextTrackChange\",\n value: function handleTextTrackChange() {\n var _this$props = this.props,\n actions = _this$props.actions,\n player = _this$props.player;\n\n if (this.video && this.video.textTracks) {\n var activeTextTrack = Array.from(this.video.textTracks).find(function (textTrack) {\n return textTrack.mode === 'showing';\n });\n\n if (activeTextTrack !== player.activeTextTrack) {\n actions.activateTextTrack(activeTextTrack);\n }\n }\n } // play the video\n\n }, {\n key: \"play\",\n value: function play() {\n var promise = this.video.play();\n\n if (promise !== undefined) {\n promise[\"catch\"](function () {}).then(function () {});\n }\n } // pause the video\n\n }, {\n key: \"pause\",\n value: function pause() {\n var promise = this.video.pause();\n\n if (promise !== undefined) {\n promise[\"catch\"](function () {}).then(function () {});\n }\n } // Change the video source and re-load the video:\n\n }, {\n key: \"load\",\n value: function load() {\n this.video.load();\n } // Add a new text track to the video\n\n }, {\n key: \"addTextTrack\",\n value: function addTextTrack() {\n var _this$video;\n\n (_this$video = this.video).addTextTrack.apply(_this$video, arguments);\n } // Check if your browser can play different types of video:\n\n }, {\n key: \"canPlayType\",\n value: function canPlayType() {\n var _this$video2;\n\n (_this$video2 = this.video).canPlayType.apply(_this$video2, arguments);\n } // toggle play\n\n }, {\n key: \"togglePlay\",\n value: function togglePlay() {\n if (this.video.paused) {\n this.play();\n } else {\n this.pause();\n }\n } // seek video by time\n\n }, {\n key: \"seek\",\n value: function seek(time) {\n try {\n this.video.currentTime = time;\n } catch (e) {// console.log(e, 'Video is not ready.')\n }\n } // jump forward x seconds\n\n }, {\n key: \"forward\",\n value: function forward(seconds) {\n this.seek(this.video.currentTime + seconds);\n } // jump back x seconds\n\n }, {\n key: \"replay\",\n value: function replay(seconds) {\n this.forward(-seconds);\n } // enter or exist full screen\n\n }, {\n key: \"toggleFullscreen\",\n value: function toggleFullscreen() {\n var _this$props2 = this.props,\n player = _this$props2.player,\n actions = _this$props2.actions;\n actions.toggleFullscreen(player);\n } // Fired when the user agent\n // begins looking for media data\n\n }, {\n key: \"handleLoadStart\",\n value: function handleLoadStart() {\n var _this$props3 = this.props,\n actions = _this$props3.actions,\n onLoadStart = _this$props3.onLoadStart;\n actions.handleLoadStart(this.getProperties());\n\n if (onLoadStart) {\n onLoadStart.apply(void 0, arguments);\n }\n } // A handler for events that\n // signal that waiting has ended\n\n }, {\n key: \"handleCanPlay\",\n value: function handleCanPlay() {\n var _this$props4 = this.props,\n actions = _this$props4.actions,\n onCanPlay = _this$props4.onCanPlay;\n actions.handleCanPlay(this.getProperties());\n\n if (onCanPlay) {\n onCanPlay.apply(void 0, arguments);\n }\n } // A handler for events that\n // signal that waiting has ended\n\n }, {\n key: \"handleCanPlayThrough\",\n value: function handleCanPlayThrough() {\n var _this$props5 = this.props,\n actions = _this$props5.actions,\n onCanPlayThrough = _this$props5.onCanPlayThrough;\n actions.handleCanPlayThrough(this.getProperties());\n\n if (onCanPlayThrough) {\n onCanPlayThrough.apply(void 0, arguments);\n }\n } // A handler for events that\n // signal that waiting has ended\n\n }, {\n key: \"handlePlaying\",\n value: function handlePlaying() {\n var _this$props6 = this.props,\n actions = _this$props6.actions,\n onPlaying = _this$props6.onPlaying;\n actions.handlePlaying(this.getProperties());\n\n if (onPlaying) {\n onPlaying.apply(void 0, arguments);\n }\n } // Fired whenever the media has been started\n\n }, {\n key: \"handlePlay\",\n value: function handlePlay() {\n var _this$props7 = this.props,\n actions = _this$props7.actions,\n onPlay = _this$props7.onPlay;\n actions.handlePlay(this.getProperties());\n\n if (onPlay) {\n onPlay.apply(void 0, arguments);\n }\n } // Fired whenever the media has been paused\n\n }, {\n key: \"handlePause\",\n value: function handlePause() {\n var _this$props8 = this.props,\n actions = _this$props8.actions,\n onPause = _this$props8.onPause;\n actions.handlePause(this.getProperties());\n\n if (onPause) {\n onPause.apply(void 0, arguments);\n }\n } // Fired when the duration of\n // the media resource is first known or changed\n\n }, {\n key: \"handleDurationChange\",\n value: function handleDurationChange() {\n var _this$props9 = this.props,\n actions = _this$props9.actions,\n onDurationChange = _this$props9.onDurationChange;\n actions.handleDurationChange(this.getProperties());\n\n if (onDurationChange) {\n onDurationChange.apply(void 0, arguments);\n }\n } // Fired while the user agent\n // is downloading media data\n\n }, {\n key: \"handleProgress\",\n value: function handleProgress() {\n var _this$props10 = this.props,\n actions = _this$props10.actions,\n onProgress = _this$props10.onProgress;\n\n if (this.video) {\n actions.handleProgressChange(this.getProperties());\n }\n\n if (onProgress) {\n onProgress.apply(void 0, arguments);\n }\n } // Fired when the end of the media resource\n // is reached (currentTime == duration)\n\n }, {\n key: \"handleEnded\",\n value: function handleEnded() {\n var _this$props11 = this.props,\n loop = _this$props11.loop,\n player = _this$props11.player,\n actions = _this$props11.actions,\n onEnded = _this$props11.onEnded;\n\n if (loop) {\n this.seek(0);\n this.play();\n } else if (!player.paused) {\n this.pause();\n }\n\n actions.handleEnd(this.getProperties());\n\n if (onEnded) {\n onEnded.apply(void 0, arguments);\n }\n } // Fired whenever the media begins waiting\n\n }, {\n key: \"handleWaiting\",\n value: function handleWaiting() {\n var _this$props12 = this.props,\n actions = _this$props12.actions,\n onWaiting = _this$props12.onWaiting;\n actions.handleWaiting(this.getProperties());\n\n if (onWaiting) {\n onWaiting.apply(void 0, arguments);\n }\n } // Fired whenever the player\n // is jumping to a new time\n\n }, {\n key: \"handleSeeking\",\n value: function handleSeeking() {\n var _this$props13 = this.props,\n actions = _this$props13.actions,\n onSeeking = _this$props13.onSeeking;\n actions.handleSeeking(this.getProperties());\n\n if (onSeeking) {\n onSeeking.apply(void 0, arguments);\n }\n } // Fired when the player has\n // finished jumping to a new time\n\n }, {\n key: \"handleSeeked\",\n value: function handleSeeked() {\n var _this$props14 = this.props,\n actions = _this$props14.actions,\n onSeeked = _this$props14.onSeeked;\n actions.handleSeeked(this.getProperties());\n\n if (onSeeked) {\n onSeeked.apply(void 0, arguments);\n }\n } // Handle Fullscreen Change\n\n }, {\n key: \"handleFullscreenChange\",\n value: function handleFullscreenChange() {} // Fires when the browser is\n // intentionally not getting media data\n\n }, {\n key: \"handleSuspend\",\n value: function handleSuspend() {\n var _this$props15 = this.props,\n actions = _this$props15.actions,\n onSuspend = _this$props15.onSuspend;\n actions.handleSuspend(this.getProperties());\n\n if (onSuspend) {\n onSuspend.apply(void 0, arguments);\n }\n } // Fires when the loading of an audio/video is aborted\n\n }, {\n key: \"handleAbort\",\n value: function handleAbort() {\n var _this$props16 = this.props,\n actions = _this$props16.actions,\n onAbort = _this$props16.onAbort;\n actions.handleAbort(this.getProperties());\n\n if (onAbort) {\n onAbort.apply(void 0, arguments);\n }\n } // Fires when the current playlist is empty\n\n }, {\n key: \"handleEmptied\",\n value: function handleEmptied() {\n var _this$props17 = this.props,\n actions = _this$props17.actions,\n onEmptied = _this$props17.onEmptied;\n actions.handleEmptied(this.getProperties());\n\n if (onEmptied) {\n onEmptied.apply(void 0, arguments);\n }\n } // Fires when the browser is trying to\n // get media data, but data is not available\n\n }, {\n key: \"handleStalled\",\n value: function handleStalled() {\n var _this$props18 = this.props,\n actions = _this$props18.actions,\n onStalled = _this$props18.onStalled;\n actions.handleStalled(this.getProperties());\n\n if (onStalled) {\n onStalled.apply(void 0, arguments);\n }\n } // Fires when the browser has loaded\n // meta data for the audio/video\n\n }, {\n key: \"handleLoadedMetaData\",\n value: function handleLoadedMetaData() {\n var _this$props19 = this.props,\n actions = _this$props19.actions,\n onLoadedMetadata = _this$props19.onLoadedMetadata,\n startTime = _this$props19.startTime;\n\n if (startTime && startTime > 0) {\n this.video.currentTime = startTime;\n }\n\n actions.handleLoadedMetaData(this.getProperties());\n\n if (onLoadedMetadata) {\n onLoadedMetadata.apply(void 0, arguments);\n }\n } // Fires when the browser has loaded\n // the current frame of the audio/video\n\n }, {\n key: \"handleLoadedData\",\n value: function handleLoadedData() {\n var _this$props20 = this.props,\n actions = _this$props20.actions,\n onLoadedData = _this$props20.onLoadedData;\n actions.handleLoadedData(this.getProperties());\n\n if (onLoadedData) {\n onLoadedData.apply(void 0, arguments);\n }\n } // Fires when the current\n // playback position has changed\n\n }, {\n key: \"handleTimeUpdate\",\n value: function handleTimeUpdate() {\n var _this$props21 = this.props,\n actions = _this$props21.actions,\n onTimeUpdate = _this$props21.onTimeUpdate;\n actions.handleTimeUpdate(this.getProperties());\n\n if (onTimeUpdate) {\n onTimeUpdate.apply(void 0, arguments);\n }\n }\n /**\n * Fires when the playing speed of the audio/video is changed\n */\n\n }, {\n key: \"handleRateChange\",\n value: function handleRateChange() {\n var _this$props22 = this.props,\n actions = _this$props22.actions,\n onRateChange = _this$props22.onRateChange;\n actions.handleRateChange(this.getProperties());\n\n if (onRateChange) {\n onRateChange.apply(void 0, arguments);\n }\n } // Fires when the volume has been changed\n\n }, {\n key: \"handleVolumeChange\",\n value: function handleVolumeChange() {\n var _this$props23 = this.props,\n actions = _this$props23.actions,\n onVolumeChange = _this$props23.onVolumeChange;\n actions.handleVolumeChange(this.getProperties());\n\n if (onVolumeChange) {\n onVolumeChange.apply(void 0, arguments);\n }\n } // Fires when an error occurred\n // during the loading of an audio/video\n\n }, {\n key: \"handleError\",\n value: function handleError() {\n var _this$props24 = this.props,\n actions = _this$props24.actions,\n onError = _this$props24.onError;\n actions.handleError(this.getProperties());\n\n if (onError) {\n onError.apply(void 0, arguments);\n }\n }\n }, {\n key: \"handleResize\",\n value: function handleResize() {\n var _this$props25 = this.props,\n actions = _this$props25.actions,\n onResize = _this$props25.onResize;\n actions.handleResize(this.getProperties());\n\n if (onResize) {\n onResize.apply(void 0, arguments);\n }\n }\n }, {\n key: \"handleKeypress\",\n value: function handleKeypress() {}\n }, {\n key: \"renderChildren\",\n value: function renderChildren() {\n var _this3 = this;\n\n var props = (0, _objectSpread2[\"default\"])({}, this.props, {\n video: this.video\n }); // to make sure the children can get video property\n\n if (!this.video) {\n return null;\n } // only keep 💿 Hey developer 👋 \n You can provide a way better UX than this when your app throws errors by\n providing your own \n \r\n
\r\n
\r\n
Unhandled Thrown Error!
\n {message}
\n {stack ? {stack}
: null}\n errorElement
props on \n <Route>
\n