video-react-new 0.20.0 → 0.21.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- {"version":3,"file":"video-react-new.cjs.js","sources":["../src/actions/video.js","../src/utils/fullscreen.js","../src/actions/player.js","../src/reducers/player.js","../src/reducers/operation.js","../src/reducers/index.js","../src/Manager.js","../src/components/BigPlayButton.js","../src/components/LoadingSpinner.js","../src/components/PosterImage.js","../src/utils/index.js","../src/components/Video.js","../src/components/Bezel.js","../src/utils/dom.js","../src/components/Shortcut.js","../src/components/Slider.js","../src/components/control-bar/PlayProgressBar.js","../src/components/control-bar/LoadProgressBar.js","../src/components/control-bar/MouseTimeDisplay.js","../src/components/control-bar/SeekBar.js","../src/components/control-bar/ProgressControl.js","../src/components/control-bar/PlayToggle.js","../src/components/control-bar/ForwardReplayControl.js","../src/components/control-bar/ForwardControl.js","../src/components/control-bar/ReplayControl.js","../src/components/control-bar/FullscreenToggle.js","../src/components/time-controls/RemainingTimeDisplay.js","../src/components/time-controls/CurrentTimeDisplay.js","../src/components/time-controls/DurationDisplay.js","../src/components/time-controls/TimeDivider.js","../src/components/ClickableComponent.js","../src/components/popup/Popup.js","../src/components/popup/PopupButton.js","../src/components/volume-control/VolumeLevel.js","../src/components/volume-control/VolumeBar.js","../src/components/control-bar/VolumeMenuButton.js","../src/components/menu/Menu.js","../src/components/menu/MenuItem.js","../src/components/menu/MenuButton.js","../src/components/control-bar/PlaybackRateMenuButton.js","../src/components/control-bar/ControlBar.js","../src/utils/browser.js","../src/components/Player.js","../src/components/control-bar/PlaybackRate.js","../src/components/control-bar/ClosedCaptionButton.js"],"sourcesContent":["export const LOAD_START = 'video-react-new/LOAD_START';\nexport const CAN_PLAY = 'video-react-new/CAN_PLAY';\nexport const WAITING = 'video-react-new/WAITING';\nexport const CAN_PLAY_THROUGH = 'video-react-new/CAN_PLAY_THROUGH';\nexport const PLAYING = 'video-react-new/PLAYING';\nexport const PLAY = 'video-react-new/PLAY';\nexport const PAUSE = 'video-react-new/PAUSE';\nexport const END = 'video-react-new/END';\nexport const SEEKING = 'video-react-new/SEEKING';\nexport const SEEKED = 'video-react-new/SEEKED';\nexport const SEEKING_TIME = 'video-react-new/SEEKING_TIME';\nexport const END_SEEKING = 'video-react-new/END_SEEKING';\nexport const DURATION_CHANGE = 'video-react-new/DURATION_CHANGE';\nexport const TIME_UPDATE = 'video-react-new/TIME_UPDATE';\nexport const VOLUME_CHANGE = 'video-react-new/VOLUME_CHANGE';\nexport const PROGRESS_CHANGE = 'video-react-new/PROGRESS_CHANGE';\nexport const RATE_CHANGE = 'video-react-new/RATE_CHANGE';\nexport const SUSPEND = 'video-react-new/SUSPEND';\nexport const ABORT = 'video-react-new/ABORT';\nexport const EMPTIED = 'video-react-new/EMPTIED';\nexport const STALLED = 'video-react-new/STALLED';\nexport const LOADED_META_DATA = 'video-react-new/LOADED_META_DATA';\nexport const LOADED_DATA = 'video-react-new/LOADED_DATA';\nexport const RESIZE = 'video-react-new/RESIZE';\nexport const ERROR = 'video-react-new/ERROR';\nexport const ACTIVATE_TEXT_TRACK = 'video-react-new/ACTIVATE_TEXT_TRACK';\n\nexport function handleLoadStart(videoProps) {\n return {\n type: LOAD_START,\n videoProps\n };\n}\n\nexport function handleCanPlay(videoProps) {\n return {\n type: CAN_PLAY,\n videoProps\n };\n}\n\nexport function handleWaiting(videoProps) {\n return {\n type: WAITING,\n videoProps\n };\n}\n\nexport function handleCanPlayThrough(videoProps) {\n return {\n type: CAN_PLAY_THROUGH,\n videoProps\n };\n}\n\nexport function handlePlaying(videoProps) {\n return {\n type: PLAYING,\n videoProps\n };\n}\n\nexport function handlePlay(videoProps) {\n return {\n type: PLAY,\n videoProps\n };\n}\n\nexport function handlePause(videoProps) {\n return {\n type: PAUSE,\n videoProps\n };\n}\n\nexport function handleEnd(videoProps) {\n return {\n type: END,\n videoProps\n };\n}\n\nexport function handleSeeking(videoProps) {\n return {\n type: SEEKING,\n videoProps\n };\n}\n\nexport function handleSeeked(videoProps) {\n return {\n type: SEEKED,\n videoProps\n };\n}\n\nexport function handleDurationChange(videoProps) {\n return {\n type: DURATION_CHANGE,\n videoProps\n };\n}\n\nexport function handleTimeUpdate(videoProps) {\n return {\n type: TIME_UPDATE,\n videoProps\n };\n}\n\nexport function handleVolumeChange(videoProps) {\n return {\n type: VOLUME_CHANGE,\n videoProps\n };\n}\n\nexport function handleProgressChange(videoProps) {\n return {\n type: PROGRESS_CHANGE,\n videoProps\n };\n}\n\nexport function handleRateChange(videoProps) {\n return {\n type: RATE_CHANGE,\n videoProps\n };\n}\n\nexport function handleSuspend(videoProps) {\n return {\n type: SUSPEND,\n videoProps\n };\n}\n\nexport function handleAbort(videoProps) {\n return {\n type: ABORT,\n videoProps\n };\n}\n\nexport function handleEmptied(videoProps) {\n return {\n type: EMPTIED,\n videoProps\n };\n}\n\nexport function handleStalled(videoProps) {\n return {\n type: STALLED,\n videoProps\n };\n}\n\nexport function handleLoadedMetaData(videoProps) {\n return {\n type: LOADED_META_DATA,\n videoProps\n };\n}\n\nexport function handleLoadedData(videoProps) {\n return {\n type: LOADED_DATA,\n videoProps\n };\n}\n\nexport function handleResize(videoProps) {\n return {\n type: RESIZE,\n videoProps\n };\n}\n\nexport function handleError(videoProps) {\n return {\n type: ERROR,\n videoProps\n };\n}\n\nexport function handleSeekingTime(time) {\n return {\n type: SEEKING_TIME,\n time\n };\n}\n\nexport function handleEndSeeking(time) {\n return {\n type: END_SEEKING,\n time\n };\n}\n\nexport function activateTextTrack(textTrack) {\n return {\n type: ACTIVATE_TEXT_TRACK,\n textTrack\n };\n}\n","class Fullscreen {\n request(elm) {\n if (elm.requestFullscreen) {\n elm.requestFullscreen();\n } else if (elm.webkitRequestFullscreen) {\n elm.webkitRequestFullscreen();\n } else if (elm.mozRequestFullScreen) {\n elm.mozRequestFullScreen();\n } else if (elm.msRequestFullscreen) {\n elm.msRequestFullscreen();\n }\n }\n\n exit() {\n if (document.exitFullscreen) {\n document.exitFullscreen();\n } else if (document.webkitExitFullscreen) {\n document.webkitExitFullscreen();\n } else if (document.mozCancelFullScreen) {\n document.mozCancelFullScreen();\n } else if (document.msExitFullscreen) {\n document.msExitFullscreen();\n }\n }\n\n get isFullscreen() {\n return (\n document.fullscreenElement\n || document.webkitFullscreenElement\n || document.mozFullScreenElement\n || document.msFullscreenElement\n );\n }\n\n get enabled() {\n return (\n document.fullscreenEnabled\n || document.webkitFullscreenEnabled\n || document.mozFullScreenEnabled\n || document.msFullscreenEnabled\n );\n }\n\n addEventListener(handler) {\n document.addEventListener('fullscreenchange', handler);\n document.addEventListener('webkitfullscreenchange', handler);\n document.addEventListener('mozfullscreenchange', handler);\n document.addEventListener('MSFullscreenChange', handler);\n }\n\n removeEventListener(handler) {\n document.removeEventListener('fullscreenchange', handler);\n document.removeEventListener('webkitfullscreenchange', handler);\n document.removeEventListener('mozfullscreenchange', handler);\n document.removeEventListener('MSFullscreenChange', handler);\n }\n}\n\nexport default new Fullscreen();\n","import fullscreen from '../utils/fullscreen';\n\nexport const OPERATE = 'video-react-new/OPERATE';\nexport const FULLSCREEN_CHANGE = 'video-react-new/FULLSCREEN_CHANGE';\nexport const PLAYER_ACTIVATE = 'video-react-new/PLAYER_ACTIVATE';\nexport const USER_ACTIVATE = 'video-react-new/USER_ACTIVATE';\n\nexport function handleFullscreenChange(isFullscreen) {\n return {\n type: FULLSCREEN_CHANGE,\n isFullscreen\n };\n}\n\nexport function activate(activity) {\n return {\n type: PLAYER_ACTIVATE,\n activity\n };\n}\n\nexport function userActivate(activity) {\n return {\n type: USER_ACTIVATE,\n activity\n };\n}\n\nexport function play(\n operation = {\n action: 'play',\n source: ''\n }\n) {\n this.video.play();\n\n return {\n type: OPERATE,\n operation\n };\n}\n\nexport function pause(\n operation = {\n action: 'pause',\n source: ''\n }\n) {\n this.video.pause();\n\n return {\n type: OPERATE,\n operation\n };\n}\n\nexport function togglePlay(\n operation = {\n action: 'toggle-play',\n source: ''\n }\n) {\n this.video.togglePlay();\n\n return {\n type: OPERATE,\n operation\n };\n}\n\n// seek video by time\nexport function seek(\n time,\n operation = {\n action: 'seek',\n source: ''\n }\n) {\n this.video.seek(time);\n\n return {\n type: OPERATE,\n operation\n };\n}\n\n// jump forward x seconds\nexport function forward(\n seconds,\n operation = {\n action: `forward-${seconds}`,\n source: ''\n }\n) {\n this.video.forward(seconds);\n\n return {\n type: OPERATE,\n operation\n };\n}\n\n// jump back x seconds\nexport function replay(\n seconds,\n operation = {\n action: `replay-${seconds}`,\n source: ''\n }\n) {\n this.video.replay(seconds);\n\n return {\n type: OPERATE,\n operation\n };\n}\n\nexport function changeRate(\n rate,\n operation = {\n action: 'change-rate',\n source: ''\n }\n) {\n this.video.playbackRate = rate;\n\n return {\n type: OPERATE,\n operation\n };\n}\n\nexport function changeVolume(\n volume,\n operation = {\n action: 'change-volume',\n source: ''\n }\n) {\n let v = volume;\n if (volume < 0) {\n v = 0;\n }\n if (volume > 1) {\n v = 1;\n }\n this.video.volume = v;\n\n return {\n type: OPERATE,\n operation\n };\n}\n\nexport function mute(\n muted,\n operation = {\n action: muted ? 'muted' : 'unmuted',\n source: ''\n }\n) {\n this.video.muted = muted;\n\n return {\n type: OPERATE,\n operation\n };\n}\n\nexport function toggleFullscreen(player) {\n if (fullscreen.enabled) {\n if (fullscreen.isFullscreen) {\n fullscreen.exit();\n } else {\n fullscreen.request(this.rootElement);\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}\n","import {\n LOAD_START,\n CAN_PLAY,\n WAITING,\n CAN_PLAY_THROUGH,\n PLAYING,\n PLAY,\n PAUSE,\n END,\n SEEKING,\n SEEKED,\n SEEKING_TIME,\n END_SEEKING,\n DURATION_CHANGE,\n TIME_UPDATE,\n VOLUME_CHANGE,\n PROGRESS_CHANGE,\n RATE_CHANGE,\n SUSPEND,\n ABORT,\n EMPTIED,\n STALLED,\n LOADED_META_DATA,\n LOADED_DATA,\n ACTIVATE_TEXT_TRACK,\n RESIZE,\n ERROR\n} from '../actions/video';\nimport {\n FULLSCREEN_CHANGE,\n PLAYER_ACTIVATE,\n USER_ACTIVATE\n} from '../actions/player';\n\nconst initialState = {\n currentSrc: null,\n duration: 0,\n currentTime: 0,\n seekingTime: 0,\n buffered: null,\n waiting: false,\n seeking: false,\n paused: true,\n autoPaused: false,\n ended: false,\n playbackRate: 1,\n muted: false,\n volume: 1,\n readyState: 0,\n networkState: 0,\n videoWidth: 0,\n videoHeight: 0,\n hasStarted: false,\n userActivity: true,\n isActive: false,\n isFullscreen: false,\n activeTextTrack: null\n};\n\nexport default function player(state = initialState, action) {\n switch (action.type) {\n case USER_ACTIVATE:\n return {\n ...state,\n userActivity: action.activity\n };\n case PLAYER_ACTIVATE:\n return {\n ...state,\n isActive: action.activity\n };\n case FULLSCREEN_CHANGE:\n return {\n ...state,\n isFullscreen: !!action.isFullscreen\n };\n case SEEKING_TIME:\n return {\n ...state,\n seekingTime: action.time\n };\n case END_SEEKING:\n return {\n ...state,\n seekingTime: 0\n };\n case LOAD_START:\n return {\n ...state,\n ...action.videoProps,\n hasStarted: false,\n ended: false\n };\n case CAN_PLAY:\n return {\n ...state,\n ...action.videoProps,\n waiting: false\n };\n case WAITING:\n return {\n ...state,\n ...action.videoProps,\n waiting: true\n };\n case CAN_PLAY_THROUGH:\n case PLAYING:\n return {\n ...state,\n ...action.videoProps,\n waiting: false\n };\n case PLAY:\n return {\n ...state,\n ...action.videoProps,\n ended: false,\n paused: false,\n autoPaused: false,\n waiting: false,\n hasStarted: true\n };\n case PAUSE:\n return {\n ...state,\n ...action.videoProps,\n paused: true\n };\n case END:\n return {\n ...state,\n ...action.videoProps,\n ended: true\n };\n case SEEKING:\n return {\n ...state,\n ...action.videoProps,\n seeking: true\n };\n case SEEKED:\n return {\n ...state,\n ...action.videoProps,\n seeking: false\n };\n case ERROR:\n return {\n ...state,\n ...action.videoProps,\n error: 'UNKNOWN ERROR',\n ended: true\n };\n case DURATION_CHANGE:\n case TIME_UPDATE:\n case VOLUME_CHANGE:\n case PROGRESS_CHANGE:\n case RATE_CHANGE:\n case SUSPEND:\n case ABORT:\n case EMPTIED:\n case STALLED:\n case LOADED_META_DATA:\n case LOADED_DATA:\n case RESIZE:\n return {\n ...state,\n ...action.videoProps\n };\n case ACTIVATE_TEXT_TRACK:\n return {\n ...state,\n activeTextTrack: action.textTrack\n };\n default:\n return state;\n }\n}\n","import { OPERATE } from '../actions/player';\n\nconst initialState = {\n count: 0,\n operation: {\n action: '',\n source: ''\n }\n};\n\nexport default function operation(state = initialState, action) {\n switch (action.type) {\n case OPERATE:\n return {\n ...state,\n count: state.count + 1,\n operation: {\n ...state.operation,\n ...action.operation\n }\n };\n default:\n return state;\n }\n}\n","import player from './player';\nimport operation from './operation';\n\nexport default function (state = {}, action) {\n return {\n player: player(state.player, action),\n operation: operation(state.operation, action)\n };\n}\n\nexport const playerReducer = player;\nexport const operationReducer = operation;\n","import { createStore } from 'redux';\nimport reducer from './reducers';\nimport * as playerActions from './actions/player';\nimport * as videoActions from './actions/video';\n\nexport default class Manager {\n constructor(store) {\n this.store = store || createStore(reducer);\n\n this.video = null;\n this.rootElement = null;\n }\n\n getActions() {\n const manager = this;\n const { dispatch } = this.store;\n const actions = {\n ...playerActions,\n ...videoActions\n };\n\n function bindActionCreator(actionCreator) {\n return function bindAction() {\n // eslint-disable-next-line prefer-rest-params\n const action = actionCreator.apply(manager, arguments);\n if (typeof action !== 'undefined') {\n dispatch(action);\n }\n };\n }\n\n return Object.keys(actions)\n .filter(key => typeof actions[key] === 'function')\n .reduce((boundActions, key) => {\n boundActions[key] = bindActionCreator(actions[key]);\n return boundActions;\n }, {});\n }\n\n getState() {\n return this.store.getState();\n }\n\n // subscribe state change\n subscribeToStateChange(listener, getState) {\n if (!getState) {\n getState = this.getState.bind(this);\n }\n\n let prevState = getState();\n\n const handleChange = () => {\n const state = getState();\n if (state === prevState) {\n return;\n }\n const prevStateCopy = prevState;\n prevState = state;\n listener(state, prevStateCopy);\n };\n\n return this.store.subscribe(handleChange);\n }\n\n // subscribe to operation state change\n subscribeToOperationStateChange(listener) {\n return this.subscribeToStateChange(\n listener,\n () => this.getState().operation\n );\n }\n\n // subscribe to player state change\n subscribeToPlayerStateChange(listener) {\n return this.subscribeToStateChange(listener, () => this.getState().player);\n }\n}\n","import PropTypes from 'prop-types';\nimport React, { Component } from 'react';\nimport classNames from 'classnames';\n\nconst propTypes = {\n actions: PropTypes.object,\n player: PropTypes.object,\n position: PropTypes.string,\n className: PropTypes.string\n};\n\nconst defaultProps = {\n position: 'left'\n};\n\nexport default class BigPlayButton extends Component {\n constructor(props, context) {\n super(props, context);\n\n this.handleClick = this.handleClick.bind(this);\n }\n\n componentDidMount() {}\n\n handleClick() {\n const { actions } = this.props;\n actions.play();\n }\n\n render() {\n const { player, position } = this.props;\n return (\n <button\n className={classNames(\n 'video-react-new-button',\n 'video-react-new-big-play-button',\n `video-react-new-big-play-button-${position}`,\n this.props.className,\n {\n 'big-play-button-hide': player.hasStarted || !player.currentSrc\n }\n )}\n type=\"button\"\n aria-live=\"polite\"\n tabIndex=\"0\"\n onClick={this.handleClick}\n >\n <span className=\"video-react-new-control-text\">Play Video</span>\n </button>\n );\n }\n}\n\nBigPlayButton.propTypes = propTypes;\nBigPlayButton.defaultProps = defaultProps;\nBigPlayButton.displayName = 'BigPlayButton';\n","import PropTypes from 'prop-types';\nimport React from 'react';\nimport classNames from 'classnames';\n\nconst propTypes = {\n player: PropTypes.object,\n className: PropTypes.string\n};\n\nexport default function LoadingSpinner({ player, className }) {\n if (player.error) {\n return null;\n }\n return (\n <div className={classNames('video-react-new-loading-spinner', className)} />\n );\n}\n\nLoadingSpinner.propTypes = propTypes;\nLoadingSpinner.displayName = 'LoadingSpinner';\n","import PropTypes from 'prop-types';\nimport React from 'react';\nimport classNames from 'classnames';\n\nconst propTypes = {\n poster: PropTypes.string,\n player: PropTypes.object,\n actions: PropTypes.object,\n className: PropTypes.string\n};\n\nfunction PosterImage({\n poster, player, actions, className\n}) {\n if (!poster || player.hasStarted) {\n return null;\n }\n\n return (\n <div\n className={classNames('video-react-new-poster', className)}\n style={{\n backgroundImage: `url(\"${poster}\")`\n }}\n onClick={() => {\n if (player.paused) {\n actions.play();\n }\n }}\n />\n );\n}\n\nPosterImage.propTypes = propTypes;\nPosterImage.displayName = 'PosterImage';\n\nexport default PosterImage;\n","import React from 'react';\n\n// NaN is the only value in javascript which is not equal to itself.\n// eslint-disable-next-line no-self-compare\nconst isNaN = Number.isNaN || (value => value !== value);\n\n/**\n * @file format-time.js\n *\n * Format seconds as a time string, H:MM:SS or M:SS\n * Supplying a guide (in seconds) will force a number of leading zeros\n * to cover the length of the guide\n *\n * @param {Number} seconds Number of seconds to be turned into a string\n * @param {Number} guide Number (in seconds) to model the string after\n * @return {String} Time formatted as H:MM:SS or M:SS\n * @private\n * @function formatTime\n */\nexport function formatTime(seconds = 0, guide = seconds) {\n let s = Math.floor(seconds % 60);\n let m = Math.floor((seconds / 60) % 60);\n let h = Math.floor(seconds / 3600);\n const gm = Math.floor((guide / 60) % 60);\n const gh = Math.floor(guide / 3600);\n\n // handle invalid times\n if (isNaN(seconds) || seconds === Infinity) {\n // '-' is false for all relational operators (e.g. <, >=) so this setting\n // will add the minimum number of fields specified by the guide\n h = '-';\n m = '-';\n s = '-';\n }\n\n // Check if we need to show hours\n h = h > 0 || gh > 0 ? `${h}:` : '';\n\n // If hours are showing, we may need to add a leading zero.\n // Always show at least one digit of minutes.\n m = `${(h || gm >= 10) && m < 10 ? `0${m}` : m}:`;\n\n // Check if leading zero is need for seconds\n s = s < 10 ? `0${s}` : s;\n\n return h + m + s;\n}\n\n// Check if the element belongs to a video element\n// only accept <source />, <track />,\n// <MyComponent isVideoChild />\n// elements\nexport function isVideoChild(c) {\n if (c.props && c.props.isVideoChild) {\n return true;\n }\n return c.type === 'source' || c.type === 'track';\n}\n\nconst find = (elements, func) => elements.filter(func)[0];\n\n// check if two components are the same type\nconst isTypeEqual = (component1, component2) => {\n const type1 = component1.type;\n const type2 = component2.type;\n\n if (typeof type1 === 'string' || typeof type2 === 'string') {\n return type1 === type2;\n }\n\n if (typeof type1 === 'function' && typeof type2 === 'function') {\n return type1.displayName === type2.displayName;\n }\n\n return false;\n};\n\n// merge default children\n// sort them by `order` property\n// filter them by `disabled` property\nexport function mergeAndSortChildren(\n defaultChildren,\n _children,\n _parentProps,\n defaultOrder = 1\n) {\n const children = React.Children.toArray(_children);\n const { order, ...parentProps } = _parentProps; // ignore order from parent\n return children\n .filter(e => !e.props.disabled) // filter the disabled components\n .concat(\n defaultChildren.filter(\n c => !find(children, component => isTypeEqual(component, c))\n )\n )\n .map((element) => {\n const defaultComponent = find(defaultChildren, c => isTypeEqual(c, element));\n\n const defaultProps = defaultComponent ? defaultComponent.props : {};\n const props = {\n ...parentProps, // inherit from parent component\n ...defaultProps, // inherit from default component\n ...element.props // element's own props\n };\n const e = React.cloneElement(element, props, element.props.children);\n return e;\n })\n .sort(\n (a, b) => (a.props.order || defaultOrder) - (b.props.order || defaultOrder)\n );\n}\n\n/**\n * Temporary utility for generating the warnings\n */\nexport function deprecatedWarning(oldMethodCall, newMethodCall) {\n // eslint-disable-next-line no-console\n console.warn(\n `WARNING: ${oldMethodCall} will be deprecated soon! Please use ${newMethodCall} instead.`\n );\n}\n\nexport function throttle(callback, limit) {\n let wait = false;\n return () => {\n if (!wait) {\n // eslint-disable-next-line prefer-rest-params\n callback(...arguments);\n wait = true;\n setTimeout(() => {\n wait = false;\n }, limit);\n }\n };\n}\n\nexport const mediaProperties = [\n 'error',\n 'src',\n 'srcObject',\n 'currentSrc',\n 'crossOrigin',\n 'networkState',\n 'preload',\n 'buffered',\n 'readyState',\n 'seeking',\n 'currentTime',\n 'duration',\n 'paused',\n 'defaultPlaybackRate',\n 'playbackRate',\n 'played',\n 'seekable',\n 'ended',\n 'autoplay',\n 'loop',\n 'mediaGroup',\n 'controller',\n 'controls',\n 'volume',\n 'muted',\n 'defaultMuted',\n 'audioTracks',\n 'videoTracks',\n 'textTracks',\n 'width',\n 'height',\n 'videoWidth',\n 'videoHeight',\n 'poster'\n];\n","import PropTypes from 'prop-types';\nimport React, { Component } from 'react';\nimport classNames from 'classnames';\n\nimport { isVideoChild, mediaProperties, throttle } from '../utils';\n\nconst propTypes = {\n actions: PropTypes.object,\n player: PropTypes.object,\n children: PropTypes.any,\n startTime: PropTypes.number,\n loop: PropTypes.bool,\n muted: PropTypes.bool,\n autoPlay: PropTypes.bool,\n playsInline: PropTypes.bool,\n src: PropTypes.string,\n poster: PropTypes.string,\n className: PropTypes.string,\n preload: PropTypes.oneOf(['auto', 'metadata', 'none']),\n crossOrigin: PropTypes.string,\n\n onLoadStart: PropTypes.func,\n onWaiting: PropTypes.func,\n onCanPlay: PropTypes.func,\n onCanPlayThrough: PropTypes.func,\n onPlaying: PropTypes.func,\n onEnded: PropTypes.func,\n onSeeking: PropTypes.func,\n onSeeked: PropTypes.func,\n onPlay: PropTypes.func,\n onPause: PropTypes.func,\n onProgress: PropTypes.func,\n onDurationChange: PropTypes.func,\n onError: PropTypes.func,\n onSuspend: PropTypes.func,\n onAbort: PropTypes.func,\n onEmptied: PropTypes.func,\n onStalled: PropTypes.func,\n onLoadedMetadata: PropTypes.func,\n onLoadedData: PropTypes.func,\n onTimeUpdate: PropTypes.func,\n onRateChange: PropTypes.func,\n onVolumeChange: PropTypes.func,\n onResize: PropTypes.func\n};\n\nexport default class Video extends Component {\n constructor(props) {\n super(props);\n\n this.video = null; // the html5 video\n this.play = this.play.bind(this);\n this.pause = this.pause.bind(this);\n this.seek = this.seek.bind(this);\n this.forward = this.forward.bind(this);\n this.replay = this.replay.bind(this);\n this.toggleFullscreen = this.toggleFullscreen.bind(this);\n this.getProperties = this.getProperties.bind(this);\n this.renderChildren = this.renderChildren.bind(this);\n this.handleLoadStart = this.handleLoadStart.bind(this);\n this.handleCanPlay = this.handleCanPlay.bind(this);\n this.handleCanPlayThrough = this.handleCanPlayThrough.bind(this);\n this.handlePlay = this.handlePlay.bind(this);\n this.handlePlaying = this.handlePlaying.bind(this);\n this.handlePause = this.handlePause.bind(this);\n this.handleEnded = this.handleEnded.bind(this);\n this.handleWaiting = this.handleWaiting.bind(this);\n this.handleSeeking = this.handleSeeking.bind(this);\n this.handleSeeked = this.handleSeeked.bind(this);\n this.handleFullscreenChange = this.handleFullscreenChange.bind(this);\n this.handleError = this.handleError.bind(this);\n this.handleSuspend = this.handleSuspend.bind(this);\n this.handleAbort = this.handleAbort.bind(this);\n this.handleEmptied = this.handleEmptied.bind(this);\n this.handleStalled = this.handleStalled.bind(this);\n this.handleLoadedMetaData = this.handleLoadedMetaData.bind(this);\n this.handleLoadedData = this.handleLoadedData.bind(this);\n this.handleTimeUpdate = this.handleTimeUpdate.bind(this);\n this.handleRateChange = this.handleRateChange.bind(this);\n this.handleVolumeChange = this.handleVolumeChange.bind(this);\n this.handleDurationChange = this.handleDurationChange.bind(this);\n this.handleProgress = throttle(this.handleProgress.bind(this), 250);\n this.handleKeypress = this.handleKeypress.bind(this);\n this.handleTextTrackChange = this.handleTextTrackChange.bind(this);\n }\n\n componentDidMount() {\n this.forceUpdate(); // make sure the children can get the video property\n if (this.video && this.video.textTracks) {\n this.video.textTracks.onaddtrack = this.handleTextTrackChange;\n this.video.textTracks.onremovetrack = this.handleTextTrackChange;\n }\n }\n\n // get all video properties\n getProperties() {\n if (!this.video) {\n return null;\n }\n\n return mediaProperties.reduce((properties, key) => {\n properties[key] = this.video[key];\n return properties;\n }, {});\n }\n\n // get playback rate\n get playbackRate() {\n return this.video.playbackRate;\n }\n\n // set playback rate\n // speed of video\n set playbackRate(rate) {\n this.video.playbackRate = rate;\n }\n\n get muted() {\n return this.video.muted;\n }\n\n set muted(val) {\n this.video.muted = val;\n }\n\n get volume() {\n return this.video.volume;\n }\n\n set volume(val) {\n if (val > 1) {\n val = 1;\n }\n if (val < 0) {\n val = 0;\n }\n this.video.volume = val;\n }\n\n // video width\n get videoWidth() {\n return this.video.videoWidth;\n }\n\n // video height\n get videoHeight() {\n return this.video.videoHeight;\n }\n\n handleTextTrackChange() {\n const { actions, player } = this.props;\n if (this.video && this.video.textTracks) {\n const activeTextTrack = Array.from(this.video.textTracks).find(\n textTrack => textTrack.mode === 'showing'\n );\n if (activeTextTrack !== player.activeTextTrack) {\n actions.activateTextTrack(activeTextTrack);\n }\n }\n }\n\n // play the video\n play() {\n const promise = this.video.play();\n if (promise !== undefined) {\n promise.catch(() => {}).then(() => {});\n }\n }\n\n // pause the video\n pause() {\n const promise = this.video.pause();\n if (promise !== undefined) {\n promise.catch(() => {}).then(() => {});\n }\n }\n\n // Change the video source and re-load the video:\n load() {\n this.video.load();\n }\n\n // Add a new text track to the video\n addTextTrack(...args) {\n this.video.addTextTrack(...args);\n }\n\n // Check if your browser can play different types of video:\n canPlayType(...args) {\n this.video.canPlayType(...args);\n }\n\n // toggle play\n togglePlay() {\n if (this.video.paused) {\n this.play();\n } else {\n this.pause();\n }\n }\n\n // seek video by time\n seek(time) {\n try {\n this.video.currentTime = time;\n } catch (e) {\n // console.log(e, 'Video is not ready.')\n }\n }\n\n // jump forward x seconds\n forward(seconds) {\n this.seek(this.video.currentTime + seconds);\n }\n\n // jump back x seconds\n replay(seconds) {\n this.forward(-seconds);\n }\n\n // enter or exist full screen\n toggleFullscreen() {\n const { player, actions } = this.props;\n actions.toggleFullscreen(player);\n }\n\n // Fired when the user agent\n // begins looking for media data\n handleLoadStart(...args) {\n const { actions, onLoadStart } = this.props;\n actions.handleLoadStart(this.getProperties());\n if (onLoadStart) {\n onLoadStart(...args);\n }\n }\n\n // A handler for events that\n // signal that waiting has ended\n handleCanPlay(...args) {\n const { actions, onCanPlay } = this.props;\n\n actions.handleCanPlay(this.getProperties());\n\n if (onCanPlay) {\n onCanPlay(...args);\n }\n }\n\n // A handler for events that\n // signal that waiting has ended\n handleCanPlayThrough(...args) {\n const { actions, onCanPlayThrough } = this.props;\n actions.handleCanPlayThrough(this.getProperties());\n\n if (onCanPlayThrough) {\n onCanPlayThrough(...args);\n }\n }\n\n // A handler for events that\n // signal that waiting has ended\n handlePlaying(...args) {\n const { actions, onPlaying } = this.props;\n actions.handlePlaying(this.getProperties());\n\n if (onPlaying) {\n onPlaying(...args);\n }\n }\n\n // Fired whenever the media has been started\n handlePlay(...args) {\n const { actions, onPlay } = this.props;\n actions.handlePlay(this.getProperties());\n\n if (onPlay) {\n onPlay(...args);\n }\n }\n\n // Fired whenever the media has been paused\n handlePause(...args) {\n const { actions, onPause } = this.props;\n actions.handlePause(this.getProperties());\n\n if (onPause) {\n onPause(...args);\n }\n }\n\n // Fired when the duration of\n // the media resource is first known or changed\n handleDurationChange(...args) {\n const { actions, onDurationChange } = this.props;\n actions.handleDurationChange(this.getProperties());\n\n if (onDurationChange) {\n onDurationChange(...args);\n }\n }\n\n // Fired while the user agent\n // is downloading media data\n handleProgress(...args) {\n const { actions, onProgress } = this.props;\n if (this.video) {\n actions.handleProgressChange(this.getProperties());\n }\n\n if (onProgress) {\n onProgress(...args);\n }\n }\n\n // Fired when the end of the media resource\n // is reached (currentTime == duration)\n handleEnded(...args) {\n const {\n loop, player, actions, onEnded\n } = this.props;\n if (loop) {\n this.seek(0);\n this.play();\n } else if (!player.paused) {\n this.pause();\n }\n actions.handleEnd(this.getProperties());\n\n if (onEnded) {\n onEnded(...args);\n }\n }\n\n // Fired whenever the media begins waiting\n handleWaiting(...args) {\n const { actions, onWaiting } = this.props;\n actions.handleWaiting(this.getProperties());\n\n if (onWaiting) {\n onWaiting(...args);\n }\n }\n\n // Fired whenever the player\n // is jumping to a new time\n handleSeeking(...args) {\n const { actions, onSeeking } = this.props;\n actions.handleSeeking(this.getProperties());\n\n if (onSeeking) {\n onSeeking(...args);\n }\n }\n\n // Fired when the player has\n // finished jumping to a new time\n handleSeeked(...args) {\n const { actions, onSeeked } = this.props;\n actions.handleSeeked(this.getProperties());\n\n if (onSeeked) {\n onSeeked(...args);\n }\n }\n\n // Handle Fullscreen Change\n handleFullscreenChange() {}\n\n // Fires when the browser is\n // intentionally not getting media data\n handleSuspend(...args) {\n const { actions, onSuspend } = this.props;\n actions.handleSuspend(this.getProperties());\n if (onSuspend) {\n onSuspend(...args);\n }\n }\n\n // Fires when the loading of an audio/video is aborted\n handleAbort(...args) {\n const { actions, onAbort } = this.props;\n actions.handleAbort(this.getProperties());\n if (onAbort) {\n onAbort(...args);\n }\n }\n\n // Fires when the current playlist is empty\n handleEmptied(...args) {\n const { actions, onEmptied } = this.props;\n actions.handleEmptied(this.getProperties());\n if (onEmptied) {\n onEmptied(...args);\n }\n }\n\n // Fires when the browser is trying to\n // get media data, but data is not available\n handleStalled(...args) {\n const { actions, onStalled } = this.props;\n actions.handleStalled(this.getProperties());\n\n if (onStalled) {\n onStalled(...args);\n }\n }\n\n // Fires when the browser has loaded\n // meta data for the audio/video\n handleLoadedMetaData(...args) {\n const { actions, onLoadedMetadata, startTime } = this.props;\n\n if (startTime && startTime > 0) {\n this.video.currentTime = startTime;\n }\n\n actions.handleLoadedMetaData(this.getProperties());\n\n if (onLoadedMetadata) {\n onLoadedMetadata(...args);\n }\n }\n\n // Fires when the browser has loaded\n // the current frame of the audio/video\n handleLoadedData(...args) {\n const { actions, onLoadedData } = this.props;\n actions.handleLoadedData(this.getProperties());\n\n if (onLoadedData) {\n onLoadedData(...args);\n }\n }\n\n // Fires when the current\n // playback position has changed\n handleTimeUpdate(...args) {\n const { actions, onTimeUpdate } = this.props;\n actions.handleTimeUpdate(this.getProperties());\n\n if (onTimeUpdate) {\n onTimeUpdate(...args);\n }\n }\n\n /**\n * Fires when the playing speed of the audio/video is changed\n */\n handleRateChange(...args) {\n const { actions, onRateChange } = this.props;\n actions.handleRateChange(this.getProperties());\n\n if (onRateChange) {\n onRateChange(...args);\n }\n }\n\n // Fires when the volume has been changed\n handleVolumeChange(...args) {\n const { actions, onVolumeChange } = this.props;\n actions.handleVolumeChange(this.getProperties());\n\n if (onVolumeChange) {\n onVolumeChange(...args);\n }\n }\n\n // Fires when an error occurred\n // during the loading of an audio/video\n handleError(...args) {\n const { actions, onError } = this.props;\n actions.handleError(this.getProperties());\n if (onError) {\n onError(...args);\n }\n }\n\n handleResize(...args) {\n const { actions, onResize } = this.props;\n actions.handleResize(this.getProperties());\n if (onResize) {\n onResize(...args);\n }\n }\n\n handleKeypress() {}\n\n renderChildren() {\n const props = {\n ...this.props,\n video: this.video\n };\n\n // to make sure the children can get video property\n if (!this.video) {\n return null;\n }\n\n // only keep <source />, <track />, <MyComponent isVideoChild /> elements\n return React.Children.toArray(this.props.children)\n .filter(isVideoChild)\n .map((c) => {\n let cprops;\n if (typeof c.type === 'string') {\n // add onError to <source />\n if (c.type === 'source') {\n cprops = { ...c.props };\n const preOnError = cprops.onError;\n cprops.onError = (...args) => {\n if (preOnError) {\n preOnError(...args);\n }\n this.handleError(...args);\n };\n }\n } else {\n cprops = props;\n }\n return React.cloneElement(c, cprops);\n });\n }\n\n render() {\n const {\n loop,\n poster,\n preload,\n src,\n autoPlay,\n playsInline,\n muted,\n crossOrigin,\n videoId\n } = this.props;\n\n return (\n <video\n className={classNames('video-react-new-video', this.props.className)}\n id={videoId}\n crossOrigin={crossOrigin}\n ref={(c) => {\n this.video = c;\n }}\n muted={muted}\n preload={preload}\n loop={loop}\n playsInline={playsInline}\n autoPlay={autoPlay}\n poster={poster}\n src={src}\n onLoadStart={this.handleLoadStart}\n onWaiting={this.handleWaiting}\n onCanPlay={this.handleCanPlay}\n onCanPlayThrough={this.handleCanPlayThrough}\n onPlaying={this.handlePlaying}\n onEnded={this.handleEnded}\n onSeeking={this.handleSeeking}\n onSeeked={this.handleSeeked}\n onPlay={this.handlePlay}\n onPause={this.handlePause}\n onProgress={this.handleProgress}\n onDurationChange={this.handleDurationChange}\n onError={this.handleError}\n onSuspend={this.handleSuspend}\n onAbort={this.handleAbort}\n onEmptied={this.handleEmptied}\n onStalled={this.handleStalled}\n onLoadedMetadata={this.handleLoadedMetaData}\n onLoadedData={this.handleLoadedData}\n onTimeUpdate={this.handleTimeUpdate}\n onRateChange={this.handleRateChange}\n onVolumeChange={this.handleVolumeChange}\n tabIndex=\"-1\"\n >\n {this.renderChildren()}\n </video>\n );\n }\n}\n\nVideo.propTypes = propTypes;\nVideo.displayName = 'Video';\n","import PropTypes from 'prop-types';\nimport React, { Component } from 'react';\nimport classNames from 'classnames';\n\nconst propTypes = {\n manager: PropTypes.object,\n className: PropTypes.string\n};\n\nexport default class Bezel extends Component {\n constructor(props, context) {\n super(props, context);\n\n this.timer = null;\n props.manager.subscribeToOperationStateChange(\n this.handleStateChange.bind(this)\n );\n\n this.state = {\n hidden: true,\n operation: {}\n };\n }\n\n handleStateChange(state, prevState) {\n if (\n state.count !== prevState.count\n && state.operation.source === 'shortcut'\n ) {\n if (this.timer) {\n // previous animation is not finished\n clearTimeout(this.timer); // cancel it\n this.timer = null;\n }\n\n // show it\n // update operation\n this.setState({\n hidden: false,\n count: state.count,\n operation: state.operation\n });\n\n // hide it after 0.5s\n this.timer = setTimeout(() => {\n this.setState({\n hidden: true\n });\n this.timer = null;\n }, 500);\n }\n }\n\n render() {\n // only displays for shortcut so far\n if (this.state.operation.source !== 'shortcut') {\n return null;\n }\n const style = this.state.hidden\n ? {\n display: 'none'\n }\n : null;\n\n return (\n <div\n className={classNames(\n {\n 'video-react-new-bezel': true,\n 'video-react-new-bezel-animation': this.state.count % 2 === 0,\n 'video-react-new-bezel-animation-alt': this.state.count % 2 === 1\n },\n this.props.className\n )}\n style={style}\n role=\"status\"\n aria-label={this.state.operation.action}\n >\n <div\n className={classNames(\n 'video-react-new-bezel-icon',\n `video-react-new-bezel-icon-${this.state.operation.action}`\n )}\n />\n </div>\n );\n }\n}\n\nBezel.propTypes = propTypes;\nBezel.displayName = 'Bezel';\n","/**\n * Offset Left\n * getBoundingClientRect technique from\n * John Resig http://ejohn.org/blog/getboundingclientrect-is-awesome/\n *\n * @function findElPosition\n * @param {ReactNodeRef} el React Node ref from which to get offset\n * @return {Object}\n */\nexport function findElPosition(el) {\n let box;\n\n if (el.getBoundingClientRect && el.parentNode) {\n box = el.getBoundingClientRect();\n }\n\n if (!box) {\n return {\n left: 0,\n top: 0\n };\n }\n\n const { body, documentElement: docEl } = document;\n\n const clientLeft = docEl.clientLeft || body.clientLeft || 0;\n const scrollLeft = window.pageXOffset || body.scrollLeft;\n const left = box.left + scrollLeft - clientLeft;\n\n const clientTop = docEl.clientTop || body.clientTop || 0;\n const scrollTop = window.pageYOffset || body.scrollTop;\n const top = box.top + scrollTop - clientTop;\n\n // Android sometimes returns slightly off decimal values, so need to round\n return {\n left: Math.round(left),\n top: Math.round(top)\n };\n}\n\n/**\n * Get pointer position in a React Node ref\n * Returns an object with x and y coordinates.\n * The base on the coordinates are the bottom left of the element.\n *\n * @function getPointerPosition\n * @param {ReactNodeRef} el React Node ref on which to get the pointer position on\n * @param {Event} event Event object\n * @return {Object} This object will have x and y coordinates corresponding to the mouse position\n */\nexport function getPointerPosition(el, event) {\n const position = {};\n const box = findElPosition(el);\n const boxW = el.offsetWidth;\n const boxH = el.offsetHeight;\n\n const boxY = box.top;\n const boxX = box.left;\n let evtPageY = event.pageY;\n let evtPageX = event.pageX;\n\n if (event.changedTouches) {\n evtPageX = event.changedTouches[0].pageX;\n evtPageY = event.changedTouches[0].pageY;\n }\n\n position.y = Math.max(0, Math.min(1, (boxY - evtPageY + boxH) / boxH));\n position.x = Math.max(0, Math.min(1, (evtPageX - boxX) / boxW));\n\n return position;\n}\n\n// blur an element\nexport function blurNode(reactNode) {\n if (reactNode && reactNode.blur) {\n reactNode.blur();\n }\n}\n\n// focus an element\nexport function focusNode(reactNode) {\n if (reactNode && reactNode.focus) {\n reactNode.focus();\n }\n}\n\n// check if an element has a class name\nexport function hasClass(elm, cls) {\n const classes = elm.className.split(' ');\n for (let i = 0; i < classes.length; i++) {\n if (classes[i].toLowerCase() === cls.toLowerCase()) {\n return true;\n }\n }\n return false;\n}\n","import { Component } from 'react';\nimport PropTypes from 'prop-types';\nimport { hasClass } from '../utils/dom';\n\nconst propTypes = {\n clickable: PropTypes.bool,\n dblclickable: PropTypes.bool,\n manager: PropTypes.object,\n actions: PropTypes.object,\n player: PropTypes.object,\n shortcuts: PropTypes.array\n};\n\nconst defaultProps = {\n clickable: true,\n dblclickable: true\n};\n\nexport default class Shortcut extends Component {\n constructor(props, context) {\n super(props, context);\n\n this.defaultShortcuts = [\n {\n keyCode: 32, // spacebar\n handle: this.togglePlay\n },\n {\n keyCode: 75, // k\n handle: this.togglePlay\n },\n {\n keyCode: 70, // f\n handle: this.toggleFullscreen\n },\n {\n keyCode: 37, // Left arrow\n handle: (player, actions) => {\n if (!player.hasStarted) {\n return;\n }\n actions.replay(5, {\n action: 'replay-5',\n source: 'shortcut'\n }); // Go back 5 seconds\n }\n },\n {\n keyCode: 74, // j\n handle: (player, actions) => {\n if (!player.hasStarted) {\n return;\n }\n actions.replay(10, {\n action: 'replay-10',\n source: 'shortcut'\n }); // Go back 10 seconds\n }\n },\n {\n keyCode: 39, // Right arrow\n handle: (player, actions) => {\n if (!player.hasStarted) {\n return;\n }\n actions.forward(5, {\n action: 'forward-5',\n source: 'shortcut'\n }); // Go forward 5 seconds\n }\n },\n {\n keyCode: 76, // l\n handle: (player, actions) => {\n if (!player.hasStarted) {\n return;\n }\n actions.forward(10, {\n action: 'forward-10',\n source: 'shortcut'\n }); // Go forward 10 seconds\n }\n },\n {\n keyCode: 36, // Home\n handle: (player, actions) => {\n if (!player.hasStarted) {\n return;\n }\n actions.seek(0); // Go to beginning of video\n }\n },\n {\n keyCode: 35, // End\n handle: (player, actions) => {\n if (!player.hasStarted) {\n return;\n }\n // Go to end of video\n actions.seek(player.duration);\n }\n },\n {\n keyCode: 38, // Up arrow\n handle: (player, actions) => {\n // Increase volume 5%\n let v = player.volume + 0.05;\n if (v > 1) {\n v = 1;\n }\n actions.changeVolume(v, {\n action: 'volume-up',\n source: 'shortcut'\n });\n }\n },\n {\n keyCode: 40, // Down arrow\n handle: (player, actions) => {\n // Decrease volume 5%\n let v = player.volume - 0.05;\n if (v < 0) {\n v = 0;\n }\n const action = v > 0 ? 'volume-down' : 'volume-off';\n actions.changeVolume(v, {\n action,\n source: 'shortcut'\n });\n }\n },\n {\n keyCode: 190, // Shift + >\n shift: true,\n handle: (player, actions) => {\n // Increase speed\n let { playbackRate } = player;\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 actions.changeRate(playbackRate, {\n action: 'fast-forward',\n source: 'shortcut'\n });\n }\n },\n {\n keyCode: 188, // Shift + <\n shift: true,\n handle: (player, actions) => {\n // Decrease speed\n let { playbackRate } = player;\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 actions.changeRate(playbackRate, {\n action: 'fast-rewind',\n source: 'shortcut'\n });\n }\n }\n ];\n\n this.shortcuts = [...this.defaultShortcuts];\n\n this.mergeShortcuts = this.mergeShortcuts.bind(this);\n this.handleKeyPress = this.handleKeyPress.bind(this);\n this.handleClick = this.handleClick.bind(this);\n this.handleDoubleClick = this.handleDoubleClick.bind(this);\n }\n\n 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 componentDidUpdate(prevProps) {\n if (prevProps.shortcuts !== this.props.shortcuts) {\n this.mergeShortcuts();\n }\n }\n\n componentWillUnmount() {\n document.removeEventListener('keydown', this.handleKeyPress);\n document.removeEventListener('click', this.handleClick);\n document.removeEventListener('dblclick', this.handleDoubleClick);\n }\n\n // merge the shortcuts from props\n mergeShortcuts() {\n const getShortcutKey = ({\n keyCode = 0,\n ctrl = false,\n shift = false,\n alt = false\n }) => `${keyCode}:${ctrl}:${shift}:${alt}`;\n const defaultShortcuts = this.defaultShortcuts.reduce(\n (shortcuts, shortcut) => Object.assign(shortcuts, {\n [getShortcutKey(shortcut)]: shortcut\n }),\n {}\n );\n const mergedShortcuts = (this.props.shortcuts || []).reduce(\n (shortcuts, shortcut) => {\n const { keyCode, handle } = shortcut;\n if (keyCode && typeof handle === 'function') {\n return Object.assign(shortcuts, {\n [getShortcutKey(shortcut)]: shortcut\n });\n }\n return shortcuts;\n },\n defaultShortcuts\n );\n\n const gradeShortcut = (s) => {\n let score = 0;\n const ps = ['ctrl', 'shift', 'alt'];\n ps.forEach((key) => {\n if (s[key]) {\n score++;\n }\n });\n return score;\n };\n\n this.shortcuts = Object.keys(mergedShortcuts)\n .map(key => mergedShortcuts[key])\n .sort((a, b) => gradeShortcut(b) - gradeShortcut(a));\n }\n\n 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 toggleFullscreen(player, actions) {\n actions.toggleFullscreen(player);\n }\n\n handleKeyPress(e) {\n const { player, actions } = this.props;\n if (!player.isActive) {\n return;\n }\n if (\n document.activeElement\n && (hasClass(document.activeElement, 'video-react-new-control')\n || hasClass(document.activeElement, 'video-react-new-menu-button-active')\n // || hasClass(document.activeElement, 'video-react-new-slider')\n || hasClass(document.activeElement, 'video-react-new-big-play-button'))\n ) {\n return;\n }\n\n const keyCode = e.keyCode || e.which;\n const ctrl = e.ctrlKey || e.metaKey;\n const shift = e.shiftKey;\n const alt = e.altKey;\n\n const shortcut = this.shortcuts.filter((s) => {\n if (!s.keyCode || s.keyCode - keyCode !== 0) {\n return false;\n }\n if (\n (s.ctrl !== undefined && s.ctrl !== ctrl)\n || (s.shift !== undefined && s.shift !== shift)\n || (s.alt !== undefined && s.alt !== alt)\n ) {\n return false;\n }\n return true;\n })[0];\n\n if (shortcut) {\n shortcut.handle(player, actions);\n e.preventDefault();\n }\n }\n\n // only if player is active and player is ready\n canBeClicked(player, e) {\n if (\n !player.isActive\n || e.target.nodeName !== 'VIDEO'\n || player.readyState !== 4\n ) {\n return false;\n }\n return true;\n }\n\n handleClick(e) {\n const { player, actions, clickable } = this.props;\n if (!this.canBeClicked(player, e) || !clickable) {\n return;\n }\n this.togglePlay(player, actions);\n // e.preventDefault();\n }\n\n handleDoubleClick(e) {\n const { player, actions, dblclickable } = this.props;\n if (!this.canBeClicked(player, e) || !dblclickable) {\n return;\n }\n this.toggleFullscreen(player, actions);\n // e.preventDefault();\n }\n\n // this component dose not render anything\n // it's just for the key down event\n render() {\n return null;\n }\n}\n\nShortcut.propTypes = propTypes;\nShortcut.defaultProps = defaultProps;\nShortcut.displayName = 'Shortcut';\n","import PropTypes from 'prop-types';\nimport React, { Component } from 'react';\nimport classNames from 'classnames';\nimport * as Dom from '../utils/dom';\n\nconst propTypes = {\n className: PropTypes.string,\n onMouseDown: PropTypes.func,\n onMouseMove: PropTypes.func,\n stepForward: PropTypes.func,\n stepBack: PropTypes.func,\n sliderActive: PropTypes.func,\n sliderInactive: PropTypes.func,\n onMouseUp: PropTypes.func,\n onFocus: PropTypes.func,\n onBlur: PropTypes.func,\n onClick: PropTypes.func,\n getPercent: PropTypes.func,\n vertical: PropTypes.bool,\n children: PropTypes.node,\n label: PropTypes.string,\n valuenow: PropTypes.string,\n valuetext: PropTypes.string\n};\n\nexport default class Slider extends Component {\n constructor(props, context) {\n super(props, context);\n\n this.handleMouseDown = this.handleMouseDown.bind(this);\n this.handleMouseMove = this.handleMouseMove.bind(this);\n this.handleMouseUp = this.handleMouseUp.bind(this);\n this.handleFocus = this.handleFocus.bind(this);\n this.handleBlur = this.handleBlur.bind(this);\n this.handleClick = this.handleClick.bind(this);\n this.handleKeyPress = this.handleKeyPress.bind(this);\n this.stepForward = this.stepForward.bind(this);\n this.stepBack = this.stepBack.bind(this);\n this.calculateDistance = this.calculateDistance.bind(this);\n this.getProgress = this.getProgress.bind(this);\n this.renderChildren = this.renderChildren.bind(this);\n\n this.state = {\n active: false\n };\n }\n\n 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 getProgress() {\n const { getPercent } = this.props;\n if (!getPercent) {\n return 0;\n }\n let progress = getPercent();\n\n // Protect against no duration and other division issues\n if (typeof progress !== 'number' || progress < 0 || progress === Infinity) {\n progress = 0;\n }\n return progress;\n }\n\n handleMouseDown(event) {\n const { onMouseDown } = this.props;\n // 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\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 handleMouseMove(event) {\n const { onMouseMove } = this.props;\n\n if (onMouseMove) {\n onMouseMove(event);\n }\n }\n\n 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 const { onMouseUp } = this.props;\n\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\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 handleFocus(e) {\n document.addEventListener('keydown', this.handleKeyPress, true);\n if (this.props.onFocus) {\n this.props.onFocus(e);\n }\n }\n\n handleBlur(e) {\n document.removeEventListener('keydown', this.handleKeyPress, true);\n if (this.props.onBlur) {\n this.props.onBlur(e);\n }\n }\n\n handleClick(event) {\n event.preventDefault();\n // event.stopPropagation();\n if (this.props.onClick) {\n this.props.onClick(event);\n }\n }\n\n 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 stepForward() {\n if (this.props.stepForward) {\n this.props.stepForward();\n }\n }\n\n stepBack() {\n if (this.props.stepBack) {\n this.props.stepBack();\n }\n }\n\n calculateDistance(event) {\n const node = this.slider;\n const position = Dom.getPointerPosition(node, event);\n if (this.props.vertical) {\n return position.y;\n }\n return position.x;\n }\n\n renderChildren() {\n const progress = this.getProgress();\n const percentage = `${(progress * 100).toFixed(2)}%`;\n return React.Children.map(this.props.children, child =>\n React.cloneElement(child, { progress, percentage })\n );\n }\n\n render() {\n const { vertical, label, valuenow, valuetext } = this.props;\n\n return (\n <div\n className={classNames(\n this.props.className,\n {\n 'video-react-new-slider-vertical': vertical,\n 'video-react-new-slider-horizontal': !vertical,\n 'video-react-new-sliding': this.state.active\n },\n 'video-react-new-slider'\n )}\n ref={c => {\n this.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 >\n {this.renderChildren()}\n </div>\n );\n }\n}\n\nSlider.propTypes = propTypes;\nSlider.displayName = 'Slider';\n","import PropTypes from 'prop-types';\nimport React from 'react';\nimport classNames from 'classnames';\n\nimport { formatTime } from '../../utils';\n\nconst propTypes = {\n currentTime: PropTypes.number,\n duration: PropTypes.number,\n percentage: PropTypes.string,\n className: PropTypes.string\n};\n\n// Shows play progress\nexport default function PlayProgressBar({\n currentTime,\n duration,\n percentage,\n className\n}) {\n return (\n <div\n data-current-time={formatTime(currentTime, duration)}\n className={classNames(\n 'video-react-new-play-progress video-react-new-slider-bar',\n className\n )}\n style={{\n width: percentage\n }}\n >\n <span className=\"video-react-new-control-text\">\n {`Progress: ${percentage}`}\n </span>\n </div>\n );\n}\n\nPlayProgressBar.propTypes = propTypes;\nPlayProgressBar.displayName = 'PlayProgressBar';\n","import PropTypes from 'prop-types';\nimport React from 'react';\nimport classNames from 'classnames';\n\nconst propTypes = {\n duration: PropTypes.number,\n buffered: PropTypes.object,\n className: PropTypes.string\n};\n\n// Shows load progress\nexport default function LoadProgressBar({ buffered, duration, className }) {\n if (!buffered || !buffered.length) {\n return null;\n }\n let bufferedEnd = buffered.end(buffered.length - 1);\n const style = {};\n\n if (bufferedEnd > duration) {\n bufferedEnd = duration;\n }\n\n // get the percent width of a time compared to the total end\n function percentify(time, end) {\n const percent = time / end || 0; // no NaN\n return `${(percent >= 1 ? 1 : percent) * 100}%`;\n }\n\n // the width of the progress bar\n style.width = percentify(bufferedEnd, duration);\n\n let parts = [];\n\n // add child elements to represent the individual buffered time ranges\n for (let i = 0; i < buffered.length; i++) {\n const start = buffered.start(i);\n const end = buffered.end(i);\n // set the percent based on the width of the progress bar (bufferedEnd)\n const part = (\n <div\n style={{\n left: percentify(start, bufferedEnd),\n width: percentify(end - start, bufferedEnd)\n }}\n key={`part-${i}`}\n />\n );\n parts.push(part);\n }\n\n if (parts.length === 0) {\n parts = null;\n }\n\n return (\n <div\n style={style}\n className={classNames('video-react-new-load-progress', className)}\n >\n <span className=\"video-react-new-control-text\">Loaded: 0%</span>\n {parts}\n </div>\n );\n}\n\nLoadProgressBar.propTypes = propTypes;\nLoadProgressBar.displayName = 'LoadProgressBar';\n","import PropTypes from 'prop-types';\nimport React from 'react';\nimport classNames from 'classnames';\n\nimport { formatTime } from '../../utils';\n\nfunction MouseTimeDisplay({\n duration, mouseTime, className, text\n}) {\n if (!mouseTime.time) {\n return null;\n }\n\n const time = text || formatTime(mouseTime.time, duration);\n\n return (\n <div\n className={classNames('video-react-new-mouse-display', className)}\n style={{\n left: `${mouseTime.position}px`\n }}\n data-current-time={time}\n />\n );\n}\n\nMouseTimeDisplay.propTypes = {\n duration: PropTypes.number,\n mouseTime: PropTypes.object,\n className: PropTypes.string\n};\nMouseTimeDisplay.displayName = 'MouseTimeDisplay';\n\nexport default MouseTimeDisplay;\n","import PropTypes from 'prop-types';\nimport React, { Component } from 'react';\nimport classNames from 'classnames';\n\nimport Slider from '../Slider';\nimport PlayProgressBar from './PlayProgressBar';\nimport LoadProgressBar from './LoadProgressBar';\nimport MouseTimeDisplay from './MouseTimeDisplay';\nimport { formatTime } from '../../utils';\n\nconst propTypes = {\n player: PropTypes.object,\n mouseTime: PropTypes.object,\n actions: PropTypes.object,\n className: PropTypes.string\n};\n\nexport default class SeekBar extends Component {\n constructor(props, context) {\n super(props, context);\n\n this.getPercent = this.getPercent.bind(this);\n this.getNewTime = this.getNewTime.bind(this);\n this.stepForward = this.stepForward.bind(this);\n this.stepBack = this.stepBack.bind(this);\n\n this.handleMouseDown = this.handleMouseDown.bind(this);\n this.handleMouseMove = this.handleMouseMove.bind(this);\n this.handleMouseUp = this.handleMouseUp.bind(this);\n }\n\n componentDidMount() {}\n\n componentDidUpdate() {}\n\n /**\n * Get percentage of video played\n *\n * @return {Number} Percentage played\n * @method getPercent\n */\n getPercent() {\n const { currentTime, seekingTime, duration } = this.props.player;\n const time = seekingTime || currentTime;\n const percent = time / duration;\n return percent >= 1 ? 1 : percent;\n }\n\n getNewTime(event) {\n const {\n player: { duration }\n } = this.props;\n const distance = this.slider.calculateDistance(event);\n const newTime = distance * duration;\n\n // Don't let video end while scrubbing.\n return newTime === duration ? newTime - 0.1 : newTime;\n }\n\n handleMouseDown() {}\n\n handleMouseUp(event) {\n const { actions } = this.props;\n const newTime = this.getNewTime(event);\n // Set new time (tell video to seek to new time)\n actions.seek(newTime);\n actions.handleEndSeeking(newTime);\n }\n\n handleMouseMove(event) {\n const { actions } = this.props;\n const newTime = this.getNewTime(event);\n actions.handleSeekingTime(newTime);\n }\n\n stepForward() {\n const { actions } = this.props;\n actions.forward(5);\n }\n\n stepBack() {\n const { actions } = this.props;\n actions.replay(5);\n }\n\n render() {\n const {\n player: { currentTime, seekingTime, duration, buffered },\n mouseTime\n } = this.props;\n const time = seekingTime || currentTime;\n\n return (\n <Slider\n ref={input => {\n this.slider = input;\n }}\n label=\"video progress bar\"\n className={classNames(\n 'video-react-new-progress-holder',\n this.props.className\n )}\n valuenow={(this.getPercent() * 100).toFixed(2)}\n valuetext={formatTime(time, duration)}\n onMouseDown={this.handleMouseDown}\n onMouseMove={this.handleMouseMove}\n onMouseUp={this.handleMouseUp}\n getPercent={this.getPercent}\n stepForward={this.stepForward}\n stepBack={this.stepBack}\n >\n <LoadProgressBar\n buffered={buffered}\n currentTime={time}\n duration={duration}\n />\n <MouseTimeDisplay duration={duration} mouseTime={mouseTime} />\n <PlayProgressBar currentTime={time} duration={duration} />\n </Slider>\n );\n }\n}\n\nSeekBar.propTypes = propTypes;\nSeekBar.displayName = 'SeekBar';\n","import PropTypes from 'prop-types';\nimport React, { Component } from 'react';\nimport classNames from 'classnames';\n\nimport * as Dom from '../../utils/dom';\nimport SeekBar from './SeekBar';\n\nconst propTypes = {\n player: PropTypes.object,\n className: PropTypes.string\n};\n\nexport default class ProgressControl extends Component {\n constructor(props, context) {\n super(props, context);\n\n this.state = {\n mouseTime: {\n time: null,\n position: 0\n }\n };\n\n this.handleMouseMoveThrottle = this.handleMouseMove.bind(this);\n }\n\n handleMouseMove(event) {\n if (!event.pageX) {\n return;\n }\n const {\n player: { duration }\n } = this.props;\n const node = this.seekBar;\n const newTime = Dom.getPointerPosition(node, event).x * duration;\n const position = event.pageX - Dom.findElPosition(node).left;\n\n this.setState({\n mouseTime: {\n time: newTime,\n position\n }\n });\n }\n\n render() {\n const { className } = this.props;\n return (\n <div\n onMouseMove={this.handleMouseMoveThrottle}\n className={classNames(\n 'video-react-new-progress-control video-react-new-control',\n className\n )}\n >\n <SeekBar\n mouseTime={this.state.mouseTime}\n ref={c => {\n this.seekBar = c;\n }}\n {...this.props}\n />\n </div>\n );\n }\n}\n\nProgressControl.propTypes = propTypes;\nProgressControl.displayName = 'ProgressControl';\n","import PropTypes from 'prop-types';\nimport React, { Component } from 'react';\nimport classNames from 'classnames';\n\nconst propTypes = {\n actions: PropTypes.object,\n player: PropTypes.object,\n className: PropTypes.string\n};\n\nexport default class PlayToggle extends Component {\n constructor(props, context) {\n super(props, context);\n this.handleClick = this.handleClick.bind(this);\n }\n\n handleClick() {\n const { actions, player } = this.props;\n if (player.paused) {\n actions.play();\n } else {\n actions.pause();\n }\n }\n\n render() {\n const { player, className } = this.props;\n const controlText = player.paused ? 'Play' : 'Pause';\n\n return (\n <button\n ref={(c) => {\n this.button = c;\n }}\n className={classNames(className, {\n 'video-react-new-play-control': true,\n 'video-react-new-control': true,\n 'video-react-new-button': true,\n 'video-react-new-paused': player.paused,\n 'video-react-new-playing': !player.paused\n })}\n type=\"button\"\n tabIndex=\"0\"\n onClick={this.handleClick}\n >\n <span className=\"video-react-new-control-text\">{controlText}</span>\n </button>\n );\n }\n}\n\nPlayToggle.propTypes = propTypes;\nPlayToggle.displayName = 'PlayToggle';\n","import PropTypes from 'prop-types';\nimport React, { Component } from 'react';\n\nconst propTypes = {\n actions: PropTypes.object,\n className: PropTypes.string,\n seconds: PropTypes.oneOf([5, 10, 30])\n};\n\nconst defaultProps = {\n seconds: 10\n};\n\nexport default (mode) => {\n class ForwardReplayControl extends Component {\n constructor(props, context) {\n super(props, context);\n this.handleClick = this.handleClick.bind(this);\n }\n\n handleClick() {\n const { actions, seconds } = this.props;\n // Depends mode to implement different actions\n if (mode === 'forward') {\n actions.forward(seconds);\n } else {\n actions.replay(seconds);\n }\n }\n\n render() {\n const { seconds, className } = this.props;\n const classNames = [\n 'video-react-new-control',\n 'video-react-new-button',\n 'video-react-new-icon'\n ];\n classNames.push(\n `video-react-new-icon-${mode}-${seconds}`,\n `video-react-new-${mode}-control`\n );\n if (className) {\n classNames.push(className);\n }\n return (\n <button\n ref={(c) => {\n this.button = c;\n }}\n className={classNames.join(' ')}\n type=\"button\"\n onClick={this.handleClick}\n >\n <span className=\"video-react-new-control-text\">{`${mode} ${seconds} seconds`}</span>\n </button>\n );\n }\n }\n\n ForwardReplayControl.propTypes = propTypes;\n ForwardReplayControl.defaultProps = defaultProps;\n return ForwardReplayControl;\n};\n","import ForwardReplayControl from './ForwardReplayControl';\n\n// Pass mode into parent function\nconst ForwardControl = ForwardReplayControl('forward');\n\nForwardControl.displayName = 'ForwardControl';\nexport default ForwardControl;\n","import ForwardReplayControl from './ForwardReplayControl';\n\n// Pass mode into parent function\nconst ReplayControl = ForwardReplayControl('replay');\nReplayControl.displayName = 'ReplayControl';\n\nexport default ReplayControl;\n","import PropTypes from 'prop-types';\nimport React, { Component } from 'react';\nimport classNames from 'classnames';\n\nconst propTypes = {\n actions: PropTypes.object,\n player: PropTypes.object,\n className: PropTypes.string\n};\n\nexport default class FullscreenToggle extends Component {\n constructor(props, context) {\n super(props, context);\n\n this.handleClick = this.handleClick.bind(this);\n }\n\n handleClick() {\n const { player, actions } = this.props;\n actions.toggleFullscreen(player);\n }\n\n render() {\n const { player, className } = this.props;\n return (\n <button\n className={classNames(\n className,\n {\n 'video-react-new-icon-fullscreen-exit': player.isFullscreen,\n 'video-react-new-icon-fullscreen': !player.isFullscreen\n },\n 'video-react-new-fullscreen-control video-react-new-control video-react-new-button video-react-new-icon'\n )}\n ref={(c) => {\n this.button = c;\n }}\n type=\"button\"\n tabIndex=\"0\"\n onClick={this.handleClick}\n >\n <span className=\"video-react-new-control-text\">Non-Fullscreen</span>\n </button>\n );\n }\n}\n\nFullscreenToggle.propTypes = propTypes;\nFullscreenToggle.displayName = 'FullscreenToggle';\n","import PropTypes from 'prop-types';\nimport React from 'react';\nimport classNames from 'classnames';\n\nimport { formatTime } from '../../utils';\n\nconst propTypes = {\n player: PropTypes.object,\n className: PropTypes.string\n};\n\nfunction RemainingTimeDisplay({\n player: { currentTime, duration },\n className\n}) {\n const remainingTime = duration - currentTime;\n const formattedTime = formatTime(remainingTime);\n return (\n <div\n className={classNames(\n 'video-react-new-remaining-time video-react-new-time-control video-react-new-control',\n className\n )}\n >\n <div className=\"video-react-new-remaining-time-display\" aria-live=\"off\">\n <span className=\"video-react-new-control-text\">Remaining Time </span>\n {`-${formattedTime}`}\n </div>\n </div>\n );\n}\n\nRemainingTimeDisplay.propTypes = propTypes;\nRemainingTimeDisplay.displayName = 'RemainingTimeDisplay';\n\nexport default RemainingTimeDisplay;\n","import PropTypes from 'prop-types';\nimport React from 'react';\nimport classNames from 'classnames';\n\nimport { formatTime } from '../../utils';\n\nconst propTypes = {\n player: PropTypes.object,\n className: PropTypes.string\n};\n\nfunction CurrentTimeDisplay({ player: { currentTime, duration }, className }) {\n const formattedTime = formatTime(currentTime, duration);\n return (\n <div\n className={classNames(\n 'video-react-new-current-time video-react-new-time-control video-react-new-control',\n className\n )}\n >\n <div className=\"video-react-new-current-time-display\" aria-live=\"off\">\n <span className=\"video-react-new-control-text\">Current Time </span>\n {formattedTime}\n </div>\n </div>\n );\n}\n\nCurrentTimeDisplay.propTypes = propTypes;\nCurrentTimeDisplay.displayName = 'CurrentTimeDisplay';\n\nexport default CurrentTimeDisplay;\n","import PropTypes from 'prop-types';\nimport React from 'react';\nimport classNames from 'classnames';\n\nimport { formatTime } from '../../utils';\n\nconst propTypes = {\n player: PropTypes.object,\n className: PropTypes.string\n};\n\nfunction DurationDisplay({ player: { duration }, className }) {\n const formattedTime = formatTime(duration);\n return (\n <div\n className={classNames(\n className,\n 'video-react-new-duration video-react-new-time-control video-react-new-control'\n )}\n >\n <div className=\"video-react-new-duration-display\" aria-live=\"off\">\n <span className=\"video-react-new-control-text\">Duration Time </span>\n {formattedTime}\n </div>\n </div>\n );\n}\n\nDurationDisplay.propTypes = propTypes;\nDurationDisplay.displayName = 'DurationDisplay';\n\nexport default DurationDisplay;\n","import PropTypes from 'prop-types';\nimport React from 'react';\nimport classNames from 'classnames';\n\nconst propTypes = {\n separator: PropTypes.string,\n className: PropTypes.string\n};\n\nexport default function TimeDivider({ separator, className }) {\n const separatorText = separator || '/';\n return (\n <div\n className={classNames(\n 'video-react-new-time-control video-react-new-time-divider',\n className\n )}\n dir=\"ltr\"\n >\n <div>\n <span>{separatorText}</span>\n </div>\n </div>\n );\n}\n\nTimeDivider.propTypes = propTypes;\nTimeDivider.displayName = 'TimeDivider';\n","import PropTypes from 'prop-types';\nimport React, { Component } from 'react';\nimport classNames from 'classnames';\n\nconst propTypes = {\n tagName: PropTypes.string,\n onClick: PropTypes.func.isRequired,\n onFocus: PropTypes.func,\n onBlur: PropTypes.func,\n className: PropTypes.string\n};\n\nconst defaultProps = {\n tagName: 'div'\n};\n\nexport default class ClickableComponent extends Component {\n constructor(props, context) {\n super(props, context);\n\n this.handleClick = this.handleClick.bind(this);\n this.handleFocus = this.handleFocus.bind(this);\n this.handleBlur = this.handleBlur.bind(this);\n this.handleKeypress = this.handleKeypress.bind(this);\n }\n\n componentWillUnmount(e) {\n this.handleBlur(e);\n }\n\n 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 handleClick(event) {\n const { onClick } = this.props;\n onClick(event);\n }\n\n handleFocus(e) {\n document.addEventListener('keydown', this.handleKeypress);\n if (this.props.onFocus) {\n this.props.onFocus(e);\n }\n }\n\n handleBlur(e) {\n document.removeEventListener('keydown', this.handleKeypress);\n if (this.props.onBlur) {\n this.props.onBlur(e);\n }\n }\n\n render() {\n const Tag = this.props.tagName;\n const props = { ...this.props };\n delete props.tagName;\n delete props.className;\n return (\n <Tag\n className={classNames(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 }\n}\n\nClickableComponent.propTypes = propTypes;\nClickableComponent.defaultProps = defaultProps;\nClickableComponent.displayName = 'ClickableComponent';\n","import PropTypes from 'prop-types';\nimport React, { Component } from 'react';\n\nconst propTypes = {\n player: PropTypes.object,\n children: PropTypes.any\n};\n\nexport default class Popup extends Component {\n constructor(props, context) {\n super(props, context);\n\n this.handleClick = this.handleClick.bind(this);\n }\n\n handleClick(event) {\n event.preventDefault();\n // event.stopPropagation();\n }\n\n render() {\n const { children } = this.props;\n return (\n <div className=\"video-react-new-menu\" onClick={this.handleClick}>\n <div className=\"video-react-new-menu-content\">{children}</div>\n </div>\n );\n }\n}\n\nPopup.propTypes = propTypes;\nPopup.displayName = 'Popup';\n","import PropTypes from 'prop-types';\nimport React from 'react';\nimport classNames from 'classnames';\nimport ClickableComponent from '../ClickableComponent';\nimport Popup from './Popup';\n\nconst propTypes = {\n inline: PropTypes.bool,\n onClick: PropTypes.func.isRequired,\n onFocus: PropTypes.func,\n onBlur: PropTypes.func,\n className: PropTypes.string\n};\n\nconst defaultProps = {\n inline: true\n};\n\nexport default function PopupButton(props) {\n const { inline, className } = props;\n const ps = { ...props };\n delete ps.children;\n delete ps.inline;\n delete ps.className;\n return (\n <ClickableComponent\n className={classNames(\n className,\n {\n 'video-react-new-menu-button-inline': !!inline,\n 'video-react-new-menu-button-popup': !inline\n },\n 'video-react-new-control video-react-new-button video-react-new-menu-button'\n )}\n {...ps}\n >\n <Popup {...props} />\n </ClickableComponent>\n );\n}\n\nPopupButton.propTypes = propTypes;\nPopupButton.defaultProps = defaultProps;\nPopupButton.displayName = 'PopupButton';\n","import PropTypes from 'prop-types';\nimport React from 'react';\nimport classNames from 'classnames';\n\nconst propTypes = {\n percentage: PropTypes.string,\n vertical: PropTypes.bool,\n className: PropTypes.string\n};\n\nconst defaultProps = {\n percentage: '100%',\n vertical: false\n};\n\nfunction VolumeLevel({ percentage, vertical, className }) {\n const style = {};\n if (vertical) {\n style.height = percentage;\n } else {\n style.width = percentage;\n }\n\n return (\n <div\n className={classNames(className, 'video-react-new-volume-level')}\n style={style}\n >\n <span className=\"video-react-new-control-text\" />\n </div>\n );\n}\n\nVolumeLevel.propTypes = propTypes;\nVolumeLevel.defaultProps = defaultProps;\nVolumeLevel.displayName = 'VolumeLevel';\nexport default VolumeLevel;\n","import PropTypes from 'prop-types';\nimport React, { Component } from 'react';\nimport classNames from 'classnames';\n\nimport Slider from '../Slider';\nimport VolumeLevel from './VolumeLevel';\n\nconst propTypes = {\n actions: PropTypes.object,\n player: PropTypes.object,\n className: PropTypes.string,\n onFocus: PropTypes.func,\n onBlur: PropTypes.func\n};\n\nclass VolumeBar extends Component {\n constructor(props, context) {\n super(props, context);\n\n this.state = {\n percentage: '0%'\n };\n\n this.handleMouseMove = this.handleMouseMove.bind(this);\n this.handlePercentageChange = this.handlePercentageChange.bind(this);\n this.checkMuted = this.checkMuted.bind(this);\n this.getPercent = this.getPercent.bind(this);\n this.stepForward = this.stepForward.bind(this);\n this.stepBack = this.stepBack.bind(this);\n this.handleFocus = this.handleFocus.bind(this);\n this.handleBlur = this.handleBlur.bind(this);\n this.handleClick = this.handleClick.bind(this);\n }\n\n componentDidMount() {}\n\n getPercent() {\n const { player } = this.props;\n if (player.muted) {\n return 0;\n }\n return player.volume;\n }\n\n checkMuted() {\n const { player, actions } = this.props;\n if (player.muted) {\n actions.mute(false);\n }\n }\n\n handleMouseMove(event) {\n const { actions } = this.props;\n this.checkMuted();\n const distance = this.slider.calculateDistance(event);\n actions.changeVolume(distance);\n }\n\n stepForward() {\n const { player, actions } = this.props;\n this.checkMuted();\n actions.changeVolume(player.volume + 0.1);\n }\n\n stepBack() {\n const { player, actions } = this.props;\n this.checkMuted();\n actions.changeVolume(player.volume - 0.1);\n }\n\n handleFocus(e) {\n if (this.props.onFocus) {\n this.props.onFocus(e);\n }\n }\n\n handleBlur(e) {\n if (this.props.onBlur) {\n this.props.onBlur(e);\n }\n }\n\n handlePercentageChange(percentage) {\n if (percentage !== this.state.percentage) {\n this.setState({\n percentage\n });\n }\n }\n\n handleClick(event) {\n event.stopPropagation();\n }\n\n render() {\n const { player, className } = this.props;\n\n const volume = (player.volume * 100).toFixed(2);\n return (\n <Slider\n ref={(c) => {\n this.slider = c;\n }}\n label=\"volume level\"\n valuenow={volume}\n valuetext={`${volume}%`}\n onMouseMove={this.handleMouseMove}\n onFocus={this.handleFocus}\n onBlur={this.handleBlur}\n onClick={this.handleClick}\n sliderActive={this.handleFocus}\n sliderInactive={this.handleBlur}\n getPercent={this.getPercent}\n onPercentageChange={this.handlePercentageChange}\n stepForward={this.stepForward}\n stepBack={this.stepBack}\n {...this.props}\n className={classNames(\n className,\n 'video-react-new-volume-bar video-react-new-slider-bar'\n )}\n >\n <VolumeLevel {...this.props} />\n </Slider>\n );\n }\n}\n\nVolumeBar.propTypes = propTypes;\nVolumeBar.displayName = 'VolumeBar';\n\nexport default VolumeBar;\n","import PropTypes from 'prop-types';\nimport React, { Component } from 'react';\nimport classNames from 'classnames';\n\nimport PopupButton from '../popup/PopupButton';\nimport VolumeBar from '../volume-control/VolumeBar';\n\nconst propTypes = {\n player: PropTypes.object,\n actions: PropTypes.object,\n vertical: PropTypes.bool,\n className: PropTypes.string,\n alwaysShowVolume: PropTypes.bool\n};\n\nconst defaultProps = {\n vertical: false\n};\n\nclass VolumeMenuButton extends Component {\n constructor(props, context) {\n super(props, context);\n\n this.state = {\n active: false\n };\n\n this.handleClick = this.handleClick.bind(this);\n this.handleFocus = this.handleFocus.bind(this);\n this.handleBlur = this.handleBlur.bind(this);\n }\n\n get volumeLevel() {\n const {\n player: { volume, muted }\n } = this.props;\n let level = 3;\n if (volume === 0 || muted) {\n level = 0;\n } else if (volume < 0.33) {\n level = 1;\n } else if (volume < 0.67) {\n level = 2;\n }\n return level;\n }\n\n handleClick() {\n const { player, actions } = this.props;\n actions.mute(!player.muted);\n }\n\n handleFocus() {\n this.setState({\n active: true\n });\n }\n\n handleBlur() {\n this.setState({\n active: false\n });\n }\n\n render() {\n const { vertical, player, className } = this.props;\n const inline = !vertical;\n const level = this.volumeLevel;\n return (\n <PopupButton\n className={classNames(\n className,\n {\n 'video-react-new-volume-menu-button-vertical': vertical,\n 'video-react-new-volume-menu-button-horizontal': !vertical,\n 'video-react-new-vol-muted': player.muted,\n 'video-react-new-vol-0': level === 0 && !player.muted,\n 'video-react-new-vol-1': level === 1,\n 'video-react-new-vol-2': level === 2,\n 'video-react-new-vol-3': level === 3,\n 'video-react-new-slider-active':\n this.props.alwaysShowVolume || this.state.active,\n 'video-react-new-lock-showing':\n this.props.alwaysShowVolume || this.state.active\n },\n 'video-react-new-volume-menu-button'\n )}\n onClick={this.handleClick}\n inline={inline}\n >\n <VolumeBar\n onFocus={this.handleFocus}\n onBlur={this.handleBlur}\n {...this.props}\n />\n </PopupButton>\n );\n }\n}\n\nVolumeMenuButton.propTypes = propTypes;\nVolumeMenuButton.defaultProps = defaultProps;\nVolumeMenuButton.displayName = 'VolumeMenuButton';\nexport default VolumeMenuButton;\n","import PropTypes from 'prop-types';\nimport React, { Component } from 'react';\n\nconst propTypes = {\n children: PropTypes.any\n};\n\nexport default class Menu extends Component {\n constructor(props, context) {\n super(props, context);\n\n this.handleClick = this.handleClick.bind(this);\n }\n\n handleClick(event) {\n event.preventDefault();\n // event.stopPropagation();\n }\n\n render() {\n return (\n <div\n className=\"video-react-new-menu video-react-new-lock-showing\"\n role=\"presentation\"\n onClick={this.handleClick}\n >\n <ul className=\"video-react-new-menu-content\">{this.props.children}</ul>\n </div>\n );\n }\n}\n\nMenu.propTypes = propTypes;\nMenu.displayName = 'Menu';\n","import PropTypes from 'prop-types';\nimport React, { Component } from 'react';\nimport classNames from 'classnames';\n\nconst propTypes = {\n item: PropTypes.object,\n index: PropTypes.number,\n activateIndex: PropTypes.number,\n onSelectItem: PropTypes.func\n};\n\nexport default class MenuItem extends Component {\n constructor(props, context) {\n super(props, context);\n\n this.handleClick = this.handleClick.bind(this);\n }\n\n handleClick() {\n const { index, onSelectItem } = this.props;\n onSelectItem(index);\n }\n\n render() {\n const { item, index, activateIndex } = this.props;\n return (\n <li\n className={classNames({\n 'video-react-new-menu-item': true,\n 'video-react-new-selected': index === activateIndex\n })}\n role=\"menuitem\"\n onClick={this.handleClick}\n >\n {item.label}\n <span className=\"video-react-new-control-text\" />\n </li>\n );\n }\n}\n\nMenuItem.propTypes = propTypes;\nMenuItem.displayName = 'MenuItem';\n","import PropTypes from 'prop-types';\nimport React, { Component } from 'react';\nimport classNames from 'classnames';\nimport Menu from './Menu';\nimport MenuItem from './MenuItem';\nimport ClickableComponent from '../ClickableComponent';\n\nconst propTypes = {\n inline: PropTypes.bool,\n items: PropTypes.array,\n className: PropTypes.string,\n onSelectItem: PropTypes.func,\n children: PropTypes.any,\n selectedIndex: PropTypes.number\n};\n\nexport default class MenuButton extends Component {\n constructor(props, context) {\n super(props, context);\n\n this.state = {\n active: false,\n activateIndex: props.selectedIndex || 0\n };\n\n this.commitSelection = this.commitSelection.bind(this);\n this.activateMenuItem = this.activateMenuItem.bind(this);\n this.handleClick = this.handleClick.bind(this);\n this.renderMenu = this.renderMenu.bind(this);\n this.handleFocus = this.handleFocus.bind(this);\n this.handleBlur = this.handleBlur.bind(this);\n this.handleUpArrow = this.handleUpArrow.bind(this);\n this.handleDownArrow = this.handleDownArrow.bind(this);\n this.handleEscape = this.handleEscape.bind(this);\n this.handleReturn = this.handleReturn.bind(this);\n this.handleTab = this.handleTab.bind(this);\n this.handleKeyPress = this.handleKeyPress.bind(this);\n this.handleSelectItem = this.handleSelectItem.bind(this);\n this.handleIndexChange = this.handleIndexChange.bind(this);\n }\n\n componentDidUpdate(prevProps) {\n if (prevProps.selectedIndex !== this.props.selectedIndex) {\n this.activateMenuItem(this.props.selectedIndex);\n }\n }\n\n commitSelection(index) {\n this.setState({\n activateIndex: index\n });\n this.handleIndexChange(index);\n }\n\n activateMenuItem(index) {\n this.setState({\n activateIndex: index\n });\n this.handleIndexChange(index);\n }\n\n handleIndexChange(index) {\n const { onSelectItem } = this.props;\n onSelectItem(index);\n }\n\n handleClick() {\n this.setState(prevState => ({\n active: !prevState.active\n }));\n }\n\n handleFocus() {\n document.addEventListener('keydown', this.handleKeyPress);\n }\n\n handleBlur() {\n this.setState({\n active: false\n });\n document.removeEventListener('keydown', this.handleKeyPress);\n }\n\n handleUpArrow(e) {\n const { items } = this.props;\n if (this.state.active) {\n e.preventDefault();\n let newIndex = this.state.activateIndex - 1;\n if (newIndex < 0) {\n newIndex = items.length ? items.length - 1 : 0;\n }\n this.activateMenuItem(newIndex);\n }\n }\n\n handleDownArrow(e) {\n const { items } = this.props;\n if (this.state.active) {\n e.preventDefault();\n let newIndex = this.state.activateIndex + 1;\n if (newIndex >= items.length) {\n newIndex = 0;\n }\n this.activateMenuItem(newIndex);\n }\n }\n\n handleTab(e) {\n if (this.state.active) {\n e.preventDefault();\n this.commitSelection(this.state.activateIndex);\n }\n }\n\n handleReturn(e) {\n e.preventDefault();\n if (this.state.active) {\n this.commitSelection(this.state.activateIndex);\n } else {\n this.setState({\n active: true\n });\n }\n }\n\n handleEscape() {\n this.setState({\n active: false,\n activateIndex: 0\n });\n }\n\n handleKeyPress(event) {\n // Escape (27) key\n if (event.which === 27) {\n this.handleEscape(event);\n } else if (event.which === 9) {\n // Tab (9) key\n this.handleTab(event);\n } else if (event.which === 13) {\n // Enter (13) key\n this.handleReturn(event);\n } else if (event.which === 38) {\n // Up (38) key\n this.handleUpArrow(event);\n } else if (event.which === 40) {\n // Down (40) key press\n this.handleDownArrow(event);\n }\n }\n\n handleSelectItem(i) {\n this.commitSelection(i);\n }\n\n renderMenu() {\n if (!this.state.active) {\n return null;\n }\n\n const { items } = this.props;\n return (\n <Menu>\n {items.map((item, i) => (\n <MenuItem\n item={item}\n index={i}\n onSelectItem={this.handleSelectItem}\n activateIndex={this.state.activateIndex}\n key={`item-${i++}`}\n />\n ))}\n </Menu>\n );\n }\n\n render() {\n const { inline, className } = this.props;\n\n return (\n <ClickableComponent\n className={classNames(\n className,\n {\n 'video-react-new-menu-button-inline': !!inline,\n 'video-react-new-menu-button-popup': !inline,\n 'video-react-new-menu-button-active': this.state.active\n },\n 'video-react-new-control video-react-new-button video-react-new-menu-button'\n )}\n role=\"button\"\n tabIndex=\"0\"\n ref={(c) => {\n this.menuButton = c;\n }}\n onClick={this.handleClick}\n onFocus={this.handleFocus}\n onBlur={this.handleBlur}\n >\n {this.props.children}\n {this.renderMenu()}\n </ClickableComponent>\n );\n }\n}\n\nMenuButton.propTypes = propTypes;\nMenuButton.displayName = 'MenuButton';\n","import PropTypes from 'prop-types';\nimport React, { Component } from 'react';\nimport classNames from 'classnames';\nimport MenuButton from '../menu/MenuButton';\n\nconst propTypes = {\n player: PropTypes.object,\n actions: PropTypes.object,\n rates: PropTypes.array,\n className: PropTypes.string\n};\n\nconst defaultProps = {\n rates: [2, 1.5, 1.25, 1, 0.5, 0.25]\n};\n\nclass PlaybackRateMenuButton extends Component {\n constructor(props, context) {\n super(props, context);\n\n this.handleSelectItem = this.handleSelectItem.bind(this);\n }\n\n handleSelectItem(index) {\n const { rates, actions } = this.props;\n if (index >= 0 && index < rates.length) {\n actions.changeRate(rates[index]);\n }\n }\n\n render() {\n const { rates, player } = this.props;\n const items = rates.map(rate => ({\n label: `${rate}x`,\n value: rate\n }));\n const selectedIndex = rates.indexOf(player.playbackRate) || 0;\n\n return (\n <MenuButton\n className={classNames(\n 'video-react-new-playback-rate',\n this.props.className\n )}\n onSelectItem={this.handleSelectItem}\n items={items}\n selectedIndex={selectedIndex}\n >\n <span className=\"video-react-new-control-text\">Playback Rate</span>\n <div className=\"video-react-new-playback-rate-value\">\n {`${player.playbackRate.toFixed(2)}x`}\n </div>\n </MenuButton>\n );\n }\n}\n\nPlaybackRateMenuButton.propTypes = propTypes;\nPlaybackRateMenuButton.defaultProps = defaultProps;\nPlaybackRateMenuButton.displayName = 'PlaybackRateMenuButton';\nexport default PlaybackRateMenuButton;\n","import PropTypes from 'prop-types';\nimport React, { Component } from 'react';\nimport classNames from 'classnames';\n\nimport ProgressControl from './ProgressControl';\nimport PlayToggle from './PlayToggle';\nimport ForwardControl from './ForwardControl';\nimport ReplayControl from './ReplayControl';\nimport FullscreenToggle from './FullscreenToggle';\nimport RemainingTimeDisplay from '../time-controls/RemainingTimeDisplay';\nimport CurrentTimeDisplay from '../time-controls/CurrentTimeDisplay';\nimport DurationDisplay from '../time-controls/DurationDisplay';\nimport TimeDivider from '../time-controls/TimeDivider';\nimport VolumeMenuButton from './VolumeMenuButton';\nimport PlaybackRateMenuButton from './PlaybackRateMenuButton';\nimport { mergeAndSortChildren } from '../../utils';\n\nconst propTypes = {\n children: PropTypes.any,\n autoHide: PropTypes.bool,\n autoHideTime: PropTypes.number, // used in Player\n disableDefaultControls: PropTypes.bool,\n disableCompletely: PropTypes.bool,\n className: PropTypes.string\n};\n\nconst defaultProps = {\n autoHide: true,\n disableCompletely: false\n};\n\nexport default class ControlBar extends Component {\n constructor(props) {\n super(props);\n\n this.getDefaultChildren = this.getDefaultChildren.bind(this);\n this.getFullChildren = this.getFullChildren.bind(this);\n }\n\n getDefaultChildren() {\n return [\n <PlayToggle key=\"play-toggle\" order={1} />,\n <VolumeMenuButton key=\"volume-menu-button\" order={4} />,\n <CurrentTimeDisplay key=\"current-time-display\" order={5.1} />,\n <TimeDivider key=\"time-divider\" order={5.2} />,\n <DurationDisplay key=\"duration-display\" order={5.3} />,\n <ProgressControl key=\"progress-control\" order={6} />,\n <FullscreenToggle key=\"fullscreen-toggle\" order={8} />\n ];\n }\n\n getFullChildren() {\n return [\n <PlayToggle key=\"play-toggle\" order={1} />,\n <ReplayControl key=\"replay-control\" order={2} />,\n <ForwardControl key=\"forward-control\" order={3} />,\n <VolumeMenuButton key=\"volume-menu-button\" order={4} />,\n <CurrentTimeDisplay key=\"current-time-display\" order={5} />,\n <TimeDivider key=\"time-divider\" order={6} />,\n <DurationDisplay key=\"duration-display\" order={7} />,\n <ProgressControl key=\"progress-control\" order={8} />,\n <RemainingTimeDisplay key=\"remaining-time-display\" order={9} />,\n <PlaybackRateMenuButton\n rates={[1, 1.25, 1.5, 2]}\n key=\"playback-rate\"\n order={10}\n />,\n <FullscreenToggle key=\"fullscreen-toggle\" order={11} />\n ];\n }\n\n getChildren() {\n const children = React.Children.toArray(this.props.children);\n const defaultChildren = this.props.disableDefaultControls\n ? []\n : this.getDefaultChildren();\n const { className, ...parentProps } = this.props; // remove className\n return mergeAndSortChildren(defaultChildren, children, parentProps);\n }\n\n render() {\n const { autoHide, className, disableCompletely } = this.props;\n const children = this.getChildren();\n\n return disableCompletely ? null : (\n <div\n className={classNames(\n 'video-react-new-control-bar',\n {\n 'video-react-new-control-bar-auto-hide': autoHide\n },\n className\n )}\n >\n {children}\n </div>\n );\n }\n}\n\nControlBar.propTypes = propTypes;\nControlBar.defaultProps = defaultProps;\nControlBar.displayName = 'ControlBar';\n","const USER_AGENT = typeof window !== 'undefined' && window.navigator\n ? window.navigator.userAgent\n : '';\n// const webkitVersionMap = (/AppleWebKit\\/([\\d.]+)/i).exec(USER_AGENT);\n// const appleWebkitVersion = webkitVersionMap ? parseFloat(webkitVersionMap.pop()) : null;\n\n/*\n * Device is an iPhone\n *\n * @type {Boolean}\n * @constant\n * @private\n */\nexport const IS_IPAD = /iPad/i.test(USER_AGENT);\n\n// The Facebook app's UIWebView identifies as both an iPhone and iPad, so\n// to identify iPhones, we need to exclude iPads.\n// http://artsy.github.io/blog/2012/10/18/the-perils-of-ios-user-agent-sniffing/\nexport const IS_IPHONE = /iPhone/i.test(USER_AGENT) && !IS_IPAD;\nexport const IS_IPOD = /iPod/i.test(USER_AGENT);\nexport const IS_IOS = IS_IPHONE || IS_IPAD || IS_IPOD;\n","import PropTypes from 'prop-types';\nimport React, { Component } from 'react';\nimport classNames from 'classnames';\n\nimport Manager from '../Manager';\n\nimport BigPlayButton from './BigPlayButton';\nimport LoadingSpinner from './LoadingSpinner';\nimport PosterImage from './PosterImage';\nimport Video from './Video';\nimport Bezel from './Bezel';\nimport Shortcut from './Shortcut';\nimport ControlBar from './control-bar/ControlBar';\n\nimport * as browser from '../utils/browser';\nimport { focusNode } from '../utils/dom';\nimport { mergeAndSortChildren, isVideoChild, throttle } from '../utils';\nimport fullscreen from '../utils/fullscreen';\n\nconst propTypes = {\n children: PropTypes.any,\n\n width: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\n height: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\n fluid: PropTypes.bool,\n muted: PropTypes.bool,\n playsInline: PropTypes.bool,\n aspectRatio: PropTypes.string,\n className: PropTypes.string,\n videoId: PropTypes.string,\n\n startTime: PropTypes.number,\n loop: PropTypes.bool,\n autoPlay: PropTypes.bool,\n src: PropTypes.string,\n poster: PropTypes.string,\n preload: PropTypes.oneOf(['auto', 'metadata', 'none']),\n\n onLoadStart: PropTypes.func,\n onWaiting: PropTypes.func,\n onCanPlay: PropTypes.func,\n onCanPlayThrough: PropTypes.func,\n onPlaying: PropTypes.func,\n onEnded: PropTypes.func,\n onSeeking: PropTypes.func,\n onSeeked: PropTypes.func,\n onPlay: PropTypes.func,\n onPause: PropTypes.func,\n onProgress: PropTypes.func,\n onDurationChange: PropTypes.func,\n onError: PropTypes.func,\n onSuspend: PropTypes.func,\n onAbort: PropTypes.func,\n onEmptied: PropTypes.func,\n onStalled: PropTypes.func,\n onLoadedMetadata: PropTypes.func,\n onLoadedData: PropTypes.func,\n onTimeUpdate: PropTypes.func,\n onRateChange: PropTypes.func,\n onVolumeChange: PropTypes.func,\n\n store: PropTypes.object\n};\n\nconst defaultProps = {\n fluid: true,\n muted: false,\n playsInline: false,\n preload: 'auto',\n aspectRatio: 'auto'\n};\n\nexport default class Player extends Component {\n constructor(props) {\n super(props);\n\n this.controlsHideTimer = null;\n\n this.video = null; // the Video component\n this.manager = new Manager(props.store);\n this.actions = this.manager.getActions();\n this.manager.subscribeToPlayerStateChange(\n this.handleStateChange.bind(this)\n );\n\n this.getStyle = this.getStyle.bind(this);\n this.handleResize = this.handleResize.bind(this);\n this.getChildren = this.getChildren.bind(this);\n this.handleMouseMove = throttle(this.handleMouseMove.bind(this), 250);\n this.handleMouseDown = this.handleMouseDown.bind(this);\n this.startControlsTimer = this.startControlsTimer.bind(this);\n this.handleFullScreenChange = this.handleFullScreenChange.bind(this);\n this.handleKeyDown = this.handleKeyDown.bind(this);\n this.handleFocus = this.handleFocus.bind(this);\n this.handleBlur = this.handleBlur.bind(this);\n }\n\n componentDidMount() {\n this.handleResize();\n window.addEventListener('resize', this.handleResize);\n\n fullscreen.addEventListener(this.handleFullScreenChange);\n }\n\n componentWillUnmount() {\n // Remove event listener\n window.removeEventListener('resize', this.handleResize);\n fullscreen.removeEventListener(this.handleFullScreenChange);\n if (this.controlsHideTimer) {\n window.clearTimeout(this.controlsHideTimer);\n }\n }\n\n getDefaultChildren(originalChildren) {\n return [\n <Video\n ref={c => {\n this.video = c;\n this.manager.video = this.video;\n }}\n key=\"video\"\n order={0.0}\n >\n {originalChildren}\n </Video>,\n <PosterImage key=\"poster-image\" order={1.0} />,\n <LoadingSpinner key=\"loading-spinner\" order={2.0} />,\n <Bezel key=\"bezel\" order={3.0} />,\n <BigPlayButton key=\"big-play-button\" order={4.0} />,\n <ControlBar key=\"control-bar\" order={5.0} />,\n <Shortcut key=\"shortcut\" order={99.0} />\n ];\n }\n\n getChildren(props) {\n const {\n className: _, // remove className\n children: originalChildren,\n ...propsWithoutChildren\n } = props;\n const children = React.Children.toArray(this.props.children).filter(\n e => !isVideoChild(e)\n );\n const defaultChildren = this.getDefaultChildren(originalChildren);\n return mergeAndSortChildren(\n defaultChildren,\n children,\n propsWithoutChildren\n );\n }\n\n setWidthOrHeight(style, name, value) {\n let styleVal;\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 = `${value}px`;\n }\n Object.assign(style, {\n [name]: styleVal\n });\n }\n\n getStyle() {\n const {\n fluid,\n aspectRatio: propsAspectRatio,\n height: propsHeight,\n width: propsWidth\n } = this.props;\n const { player } = this.manager.getState();\n const style = {};\n let width;\n let height;\n let aspectRatio;\n\n // The aspect ratio is either used directly or to calculate width and height.\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 = `${player.videoWidth}:${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 }\n\n // Get the ratio as a decimal we can use to calculate dimensions\n const ratioParts = aspectRatio.split(':');\n const 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 = `${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 }\n\n // get redux state\n // { player, operation }\n getState() {\n return this.manager.getState();\n }\n\n // get playback rate\n get playbackRate() {\n return this.video.playbackRate;\n }\n\n // set playback rate\n // speed of video\n set playbackRate(rate) {\n this.video.playbackRate = rate;\n }\n\n get muted() {\n return this.video.muted;\n }\n\n set muted(val) {\n this.video.muted = val;\n }\n\n get volume() {\n return this.video.volume;\n }\n\n set volume(val) {\n this.video.volume = val;\n }\n\n // video width\n get videoWidth() {\n return this.video.videoWidth;\n }\n\n // video height\n get videoHeight() {\n return this.video.videoHeight;\n }\n\n // play the video\n play() {\n this.video.play();\n }\n\n // pause the video\n pause() {\n this.video.pause();\n }\n\n // Change the video source and re-load the video:\n load() {\n this.video.load();\n }\n\n // Add a new text track to the video\n addTextTrack(...args) {\n this.video.addTextTrack(...args);\n }\n\n // Check if your browser can play different types of video:\n canPlayType(...args) {\n this.video.canPlayType(...args);\n }\n\n // seek video by time\n seek(time) {\n this.video.seek(time);\n }\n\n // jump forward x seconds\n forward(seconds) {\n this.video.forward(seconds);\n }\n\n // jump back x seconds\n replay(seconds) {\n this.video.replay(seconds);\n }\n\n // enter or exist full screen\n toggleFullscreen() {\n this.video.toggleFullscreen();\n }\n\n // subscribe to player state change\n subscribeToStateChange(listener) {\n return this.manager.subscribeToPlayerStateChange(listener);\n }\n\n // player resize\n handleResize() {}\n\n handleFullScreenChange(event) {\n if (event.target === this.manager.rootElement) {\n this.actions.handleFullscreenChange(fullscreen.isFullscreen);\n }\n }\n\n handleMouseDown() {\n this.startControlsTimer();\n }\n\n handleMouseMove() {\n this.startControlsTimer();\n }\n\n handleKeyDown() {\n this.startControlsTimer();\n }\n\n startControlsTimer() {\n let controlBarActiveTime = 3000;\n React.Children.forEach(this.props.children, element => {\n if (!React.isValidElement(element) || element.type !== ControlBar) {\n return;\n }\n\n const { autoHideTime } = element.props;\n if (typeof autoHideTime === 'number') {\n controlBarActiveTime = autoHideTime;\n }\n });\n\n this.actions.userActivate(true);\n clearTimeout(this.controlsHideTimer);\n this.controlsHideTimer = setTimeout(() => {\n this.actions.userActivate(false);\n }, controlBarActiveTime);\n }\n\n handleStateChange(state, prevState) {\n if (state.isFullscreen !== prevState.isFullscreen) {\n this.handleResize();\n // focus root when switching fullscreen mode to avoid confusion #276\n focusNode(this.manager.rootElement);\n }\n this.forceUpdate(); // re-render\n }\n\n handleFocus() {\n this.actions.activate(true);\n }\n\n handleBlur() {\n this.actions.activate(false);\n }\n\n render() {\n const { fluid } = this.props;\n const { player } = this.manager.getState();\n const {\n paused,\n hasStarted,\n waiting,\n seeking,\n isFullscreen,\n userActivity\n } = player;\n\n const props = {\n ...this.props,\n player,\n actions: this.actions,\n manager: this.manager,\n store: this.manager.store,\n video: this.video ? this.video.video : null\n };\n const children = this.getChildren(props);\n\n return (\n <div\n className={classNames(\n {\n 'video-react-new-controls-enabled': true,\n 'video-react-new-has-started': hasStarted,\n 'video-react-new-paused': paused,\n 'video-react-new-playing': !paused,\n 'video-react-new-waiting': waiting,\n 'video-react-new-seeking': seeking,\n 'video-react-new-fluid': fluid,\n 'video-react-new-fullscreen': isFullscreen,\n 'video-react-new-user-inactive': !userActivity,\n 'video-react-new-user-active': userActivity,\n 'video-react-new-workinghover': !browser.IS_IOS\n },\n 'video-react-new',\n this.props.className\n )}\n style={this.getStyle()}\n ref={c => {\n this.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 >\n {children}\n </div>\n );\n }\n}\n\nPlayer.contextTypes = { store: PropTypes.object };\nPlayer.propTypes = propTypes;\nPlayer.defaultProps = defaultProps;\nPlayer.displayName = 'Player';\n","import React, { Component } from 'react';\nimport PlaybackRateMenuButton from './PlaybackRateMenuButton';\nimport { deprecatedWarning } from '../../utils';\n\nexport default class PlaybackRate extends Component {\n constructor(props, context) {\n super(props, context);\n\n deprecatedWarning('PlaybackRate', 'PlaybackRateMenuButton');\n }\n\n render() {\n return <PlaybackRateMenuButton {...this.props} />;\n }\n}\n\nPlaybackRate.displayName = 'PlaybackRate';\n","import PropTypes from 'prop-types';\nimport React, { Component } from 'react';\nimport classNames from 'classnames';\nimport MenuButton from '../menu/MenuButton';\n\nconst propTypes = {\n player: PropTypes.object,\n actions: PropTypes.object,\n className: PropTypes.string,\n offMenuText: PropTypes.string,\n showOffMenu: PropTypes.bool,\n kinds: PropTypes.array\n};\n\nconst defaultProps = {\n offMenuText: 'Off',\n showOffMenu: true,\n kinds: ['captions', 'subtitles'] // `kind`s of TextTrack to look for to associate it with this menu.\n};\n\nclass ClosedCaptionButton extends Component {\n constructor(props, context) {\n super(props, context);\n\n this.getTextTrackItems = this.getTextTrackItems.bind(this);\n this.updateState = this.updateState.bind(this);\n this.handleSelectItem = this.handleSelectItem.bind(this);\n\n this.state = this.getTextTrackItems();\n }\n\n componentDidUpdate() {\n this.updateState();\n }\n\n getTextTrackItems() {\n const {\n kinds, player, offMenuText, showOffMenu\n } = this.props;\n const { textTracks, activeTextTrack } = player;\n const textTrackItems = {\n items: [],\n selectedIndex: 0\n };\n const tracks = Array.from(textTracks || []);\n\n if (tracks.length === 0) {\n return textTrackItems;\n }\n\n if (showOffMenu) {\n textTrackItems.items.push({\n label: offMenuText || 'Off',\n value: null\n });\n }\n\n tracks.forEach((textTrack) => {\n // ignore invalid text track kind\n if (kinds.length && !kinds.includes(textTrack.kind)) {\n return;\n }\n\n textTrackItems.items.push({\n label: textTrack.label,\n value: textTrack.language\n });\n });\n\n textTrackItems.selectedIndex = textTrackItems.items.findIndex(\n item => activeTextTrack && activeTextTrack.language === item.value\n );\n\n if (textTrackItems.selectedIndex === -1) {\n textTrackItems.selectedIndex = 0;\n }\n\n return textTrackItems;\n }\n\n updateState() {\n const textTrackItems = this.getTextTrackItems();\n if (\n textTrackItems.selectedIndex !== this.state.selectedIndex\n || !this.textTrackItemsAreEqual(textTrackItems.items, this.state.items)\n ) {\n this.setState(textTrackItems);\n }\n }\n\n textTrackItemsAreEqual(items1, items2) {\n if (items1.length !== items2.length) {\n return false;\n }\n\n for (let i = 0; i < items1.length; i++) {\n if (\n !items2[i]\n || items1[i].label !== items2[i].label\n || items1[i].value !== items2[i].value\n ) {\n return false;\n }\n }\n\n return true;\n }\n\n handleSelectItem(index) {\n const { player, actions, showOffMenu } = this.props;\n const { textTracks } = player;\n\n // For the 'subtitles-off' button, the first condition will never match\n // so all subtitles will be turned off\n Array.from(textTracks).forEach((textTrack, i) => {\n // if it shows the `Off` menu, the first item is `Off`\n if (index === (showOffMenu ? i + 1 : i)) {\n textTrack.mode = 'showing';\n actions.activateTextTrack(textTrack);\n } else {\n textTrack.mode = 'hidden';\n }\n });\n }\n\n render() {\n const { items, selectedIndex } = this.state;\n\n return (\n <MenuButton\n className={classNames(\n 'video-react-new-closed-caption',\n this.props.className\n )}\n onSelectItem={this.handleSelectItem}\n items={items}\n selectedIndex={selectedIndex}\n >\n <span className=\"video-react-new-control-text\">Closed Caption</span>\n </MenuButton>\n );\n }\n}\n\nClosedCaptionButton.propTypes = propTypes;\nClosedCaptionButton.defaultProps = defaultProps;\nClosedCaptionButton.displayName = 'ClosedCaptionButton';\nexport default ClosedCaptionButton;\n"],"names":["LOAD_START","CAN_PLAY","WAITING","CAN_PLAY_THROUGH","PLAYING","PLAY","PAUSE","END","SEEKING","SEEKED","SEEKING_TIME","END_SEEKING","DURATION_CHANGE","TIME_UPDATE","VOLUME_CHANGE","PROGRESS_CHANGE","RATE_CHANGE","SUSPEND","ABORT","EMPTIED","STALLED","LOADED_META_DATA","LOADED_DATA","RESIZE","ERROR","ACTIVATE_TEXT_TRACK","handleLoadStart","videoProps","type","handleCanPlay","handleWaiting","handleCanPlayThrough","handlePlaying","handlePlay","handlePause","handleEnd","handleSeeking","handleSeeked","handleDurationChange","handleTimeUpdate","handleVolumeChange","handleProgressChange","handleRateChange","handleSuspend","handleAbort","handleEmptied","handleStalled","handleLoadedMetaData","handleLoadedData","handleResize","handleError","handleSeekingTime","time","handleEndSeeking","activateTextTrack","textTrack","Fullscreen","request","elm","requestFullscreen","webkitRequestFullscreen","mozRequestFullScreen","msRequestFullscreen","exit","document","exitFullscreen","webkitExitFullscreen","mozCancelFullScreen","msExitFullscreen","addEventListener","handler","removeEventListener","fullscreenElement","webkitFullscreenElement","mozFullScreenElement","msFullscreenElement","fullscreenEnabled","webkitFullscreenEnabled","mozFullScreenEnabled","msFullscreenEnabled","OPERATE","FULLSCREEN_CHANGE","PLAYER_ACTIVATE","USER_ACTIVATE","handleFullscreenChange","isFullscreen","activate","activity","userActivate","play","operation","action","source","video","pause","togglePlay","seek","forward","seconds","replay","changeRate","rate","playbackRate","changeVolume","volume","v","mute","muted","toggleFullscreen","player","fullscreen","enabled","rootElement","initialState","currentSrc","duration","currentTime","seekingTime","buffered","waiting","seeking","paused","autoPaused","ended","readyState","networkState","videoWidth","videoHeight","hasStarted","userActivity","isActive","activeTextTrack","state","error","count","playerReducer","operationReducer","Manager","store","createStore","reducer","getActions","manager","dispatch","actions","playerActions","videoActions","bindActionCreator","actionCreator","bindAction","apply","arguments","Object","keys","filter","key","reduce","boundActions","getState","subscribeToStateChange","listener","bind","prevState","handleChange","prevStateCopy","subscribe","subscribeToOperationStateChange","subscribeToPlayerStateChange","propTypes","PropTypes","object","position","string","className","defaultProps","BigPlayButton","props","context","handleClick","componentDidMount","render","React","classNames","Component","displayName","LoadingSpinner","poster","PosterImage","backgroundImage","isNaN","Number","value","formatTime","guide","s","Math","floor","m","h","gm","gh","Infinity","isVideoChild","c","find","elements","func","isTypeEqual","component1","component2","type1","type2","mergeAndSortChildren","defaultChildren","_children","_parentProps","defaultOrder","children","Children","toArray","order","parentProps","e","disabled","concat","component","map","element","defaultComponent","cloneElement","sort","a","b","deprecatedWarning","oldMethodCall","newMethodCall","console","warn","throttle","callback","limit","wait","setTimeout","mediaProperties","any","startTime","number","loop","bool","autoPlay","playsInline","src","preload","oneOf","crossOrigin","onLoadStart","onWaiting","onCanPlay","onCanPlayThrough","onPlaying","onEnded","onSeeking","onSeeked","onPlay","onPause","onProgress","onDurationChange","onError","onSuspend","onAbort","onEmptied","onStalled","onLoadedMetadata","onLoadedData","onTimeUpdate","onRateChange","onVolumeChange","onResize","Video","getProperties","renderChildren","handleEnded","handleProgress","handleKeypress","handleTextTrackChange","forceUpdate","textTracks","onaddtrack","onremovetrack","properties","Array","from","mode","promise","undefined","catch","then","load","addTextTrack","canPlayType","cprops","preOnError","videoId","val","Bezel","timer","handleStateChange","hidden","clearTimeout","setState","style","display","findElPosition","el","box","getBoundingClientRect","parentNode","left","top","body","docEl","documentElement","clientLeft","scrollLeft","window","pageXOffset","clientTop","scrollTop","pageYOffset","round","getPointerPosition","event","boxW","offsetWidth","boxH","offsetHeight","boxY","boxX","evtPageY","pageY","evtPageX","pageX","changedTouches","y","max","min","x","focusNode","reactNode","focus","hasClass","cls","classes","split","i","length","toLowerCase","clickable","dblclickable","shortcuts","array","Shortcut","defaultShortcuts","keyCode","handle","shift","mergeShortcuts","handleKeyPress","handleDoubleClick","componentDidUpdate","prevProps","componentWillUnmount","getShortcutKey","ctrl","alt","shortcut","assign","mergedShortcuts","gradeShortcut","score","ps","forEach","activeElement","which","ctrlKey","metaKey","shiftKey","altKey","preventDefault","canBeClicked","target","nodeName","onMouseDown","onMouseMove","stepForward","stepBack","sliderActive","sliderInactive","onMouseUp","onFocus","onBlur","onClick","getPercent","vertical","node","label","valuenow","valuetext","Slider","handleMouseDown","handleMouseMove","handleMouseUp","handleFocus","handleBlur","calculateDistance","getProgress","active","progress","stopPropagation","slider","Dom","percentage","toFixed","child","PlayProgressBar","width","LoadProgressBar","bufferedEnd","end","percentify","percent","parts","start","part","push","MouseTimeDisplay","mouseTime","text","SeekBar","getNewTime","distance","newTime","input","ProgressControl","handleMouseMoveThrottle","seekBar","PlayToggle","controlText","button","ForwardReplayControl","join","ForwardControl","ReplayControl","FullscreenToggle","RemainingTimeDisplay","remainingTime","formattedTime","CurrentTimeDisplay","DurationDisplay","separator","TimeDivider","separatorText","tagName","isRequired","ClickableComponent","Tag","Popup","inline","PopupButton","VolumeLevel","height","VolumeBar","handlePercentageChange","checkMuted","alwaysShowVolume","VolumeMenuButton","level","volumeLevel","Menu","item","index","activateIndex","onSelectItem","MenuItem","items","selectedIndex","MenuButton","commitSelection","activateMenuItem","renderMenu","handleUpArrow","handleDownArrow","handleEscape","handleReturn","handleTab","handleSelectItem","handleIndexChange","newIndex","menuButton","rates","PlaybackRateMenuButton","indexOf","autoHide","autoHideTime","disableDefaultControls","disableCompletely","ControlBar","getDefaultChildren","getFullChildren","getChildren","USER_AGENT","navigator","userAgent","IS_IPAD","test","IS_IPHONE","IS_IPOD","IS_IOS","oneOfType","fluid","aspectRatio","Player","controlsHideTimer","getStyle","startControlsTimer","handleFullScreenChange","handleKeyDown","originalChildren","_","propsWithoutChildren","setWidthOrHeight","name","styleVal","match","propsAspectRatio","propsHeight","propsWidth","ratioParts","ratioMultiplier","paddingTop","controlBarActiveTime","isValidElement","browser","contextTypes","PlaybackRate","offMenuText","showOffMenu","kinds","ClosedCaptionButton","getTextTrackItems","updateState","textTrackItems","tracks","includes","kind","language","findIndex","textTrackItemsAreEqual","items1","items2"],"mappings":"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"}
1
+ {"version":3,"file":"video-react-new.cjs.js","sources":["../src/actions/video.js","../src/utils/fullscreen.js","../src/actions/player.js","../src/reducers/player.js","../src/reducers/operation.js","../src/reducers/index.js","../src/Manager.js","../src/components/BigPlayButton.js","../src/components/LoadingSpinner.js","../src/components/PosterImage.js","../src/utils/index.js","../src/components/Video.js","../src/components/Bezel.js","../src/utils/dom.js","../src/components/Shortcut.js","../src/components/Slider.js","../src/components/control-bar/PlayProgressBar.js","../src/components/control-bar/LoadProgressBar.js","../src/components/control-bar/MouseTimeDisplay.js","../src/components/control-bar/SeekBar.js","../src/components/control-bar/ProgressControl.js","../src/components/control-bar/PlayToggle.js","../src/components/control-bar/ForwardReplayControl.js","../src/components/control-bar/ForwardControl.js","../src/components/control-bar/ReplayControl.js","../src/components/control-bar/FullscreenToggle.js","../src/components/time-controls/RemainingTimeDisplay.js","../src/components/time-controls/CurrentTimeDisplay.js","../src/components/time-controls/DurationDisplay.js","../src/components/time-controls/TimeDivider.js","../src/components/ClickableComponent.js","../src/components/popup/Popup.js","../src/components/popup/PopupButton.js","../src/components/volume-control/VolumeLevel.js","../src/components/volume-control/VolumeBar.js","../src/components/control-bar/VolumeMenuButton.js","../src/components/menu/Menu.js","../src/components/menu/MenuItem.js","../src/components/menu/MenuButton.js","../src/components/control-bar/PlaybackRateMenuButton.js","../src/components/control-bar/ControlBar.js","../src/utils/browser.js","../src/components/Player.js","../src/components/control-bar/PlaybackRate.js","../src/components/control-bar/ClosedCaptionButton.js"],"sourcesContent":["export const LOAD_START = 'video-react-new/LOAD_START';\nexport const CAN_PLAY = 'video-react-new/CAN_PLAY';\nexport const WAITING = 'video-react-new/WAITING';\nexport const CAN_PLAY_THROUGH = 'video-react-new/CAN_PLAY_THROUGH';\nexport const PLAYING = 'video-react-new/PLAYING';\nexport const PLAY = 'video-react-new/PLAY';\nexport const PAUSE = 'video-react-new/PAUSE';\nexport const END = 'video-react-new/END';\nexport const SEEKING = 'video-react-new/SEEKING';\nexport const SEEKED = 'video-react-new/SEEKED';\nexport const SEEKING_TIME = 'video-react-new/SEEKING_TIME';\nexport const END_SEEKING = 'video-react-new/END_SEEKING';\nexport const DURATION_CHANGE = 'video-react-new/DURATION_CHANGE';\nexport const TIME_UPDATE = 'video-react-new/TIME_UPDATE';\nexport const VOLUME_CHANGE = 'video-react-new/VOLUME_CHANGE';\nexport const PROGRESS_CHANGE = 'video-react-new/PROGRESS_CHANGE';\nexport const RATE_CHANGE = 'video-react-new/RATE_CHANGE';\nexport const SUSPEND = 'video-react-new/SUSPEND';\nexport const ABORT = 'video-react-new/ABORT';\nexport const EMPTIED = 'video-react-new/EMPTIED';\nexport const STALLED = 'video-react-new/STALLED';\nexport const LOADED_META_DATA = 'video-react-new/LOADED_META_DATA';\nexport const LOADED_DATA = 'video-react-new/LOADED_DATA';\nexport const RESIZE = 'video-react-new/RESIZE';\nexport const ERROR = 'video-react-new/ERROR';\nexport const ACTIVATE_TEXT_TRACK = 'video-react-new/ACTIVATE_TEXT_TRACK';\n\nexport function handleLoadStart(videoProps) {\n return {\n type: LOAD_START,\n videoProps\n };\n}\n\nexport function handleCanPlay(videoProps) {\n return {\n type: CAN_PLAY,\n videoProps\n };\n}\n\nexport function handleWaiting(videoProps) {\n return {\n type: WAITING,\n videoProps\n };\n}\n\nexport function handleCanPlayThrough(videoProps) {\n return {\n type: CAN_PLAY_THROUGH,\n videoProps\n };\n}\n\nexport function handlePlaying(videoProps) {\n return {\n type: PLAYING,\n videoProps\n };\n}\n\nexport function handlePlay(videoProps) {\n return {\n type: PLAY,\n videoProps\n };\n}\n\nexport function handlePause(videoProps) {\n return {\n type: PAUSE,\n videoProps\n };\n}\n\nexport function handleEnd(videoProps) {\n return {\n type: END,\n videoProps\n };\n}\n\nexport function handleSeeking(videoProps) {\n return {\n type: SEEKING,\n videoProps\n };\n}\n\nexport function handleSeeked(videoProps) {\n return {\n type: SEEKED,\n videoProps\n };\n}\n\nexport function handleDurationChange(videoProps) {\n return {\n type: DURATION_CHANGE,\n videoProps\n };\n}\n\nexport function handleTimeUpdate(videoProps) {\n return {\n type: TIME_UPDATE,\n videoProps\n };\n}\n\nexport function handleVolumeChange(videoProps) {\n return {\n type: VOLUME_CHANGE,\n videoProps\n };\n}\n\nexport function handleProgressChange(videoProps) {\n return {\n type: PROGRESS_CHANGE,\n videoProps\n };\n}\n\nexport function handleRateChange(videoProps) {\n return {\n type: RATE_CHANGE,\n videoProps\n };\n}\n\nexport function handleSuspend(videoProps) {\n return {\n type: SUSPEND,\n videoProps\n };\n}\n\nexport function handleAbort(videoProps) {\n return {\n type: ABORT,\n videoProps\n };\n}\n\nexport function handleEmptied(videoProps) {\n return {\n type: EMPTIED,\n videoProps\n };\n}\n\nexport function handleStalled(videoProps) {\n return {\n type: STALLED,\n videoProps\n };\n}\n\nexport function handleLoadedMetaData(videoProps) {\n return {\n type: LOADED_META_DATA,\n videoProps\n };\n}\n\nexport function handleLoadedData(videoProps) {\n return {\n type: LOADED_DATA,\n videoProps\n };\n}\n\nexport function handleResize(videoProps) {\n return {\n type: RESIZE,\n videoProps\n };\n}\n\nexport function handleError(videoProps) {\n return {\n type: ERROR,\n videoProps\n };\n}\n\nexport function handleSeekingTime(time) {\n return {\n type: SEEKING_TIME,\n time\n };\n}\n\nexport function handleEndSeeking(time) {\n return {\n type: END_SEEKING,\n time\n };\n}\n\nexport function activateTextTrack(textTrack) {\n return {\n type: ACTIVATE_TEXT_TRACK,\n textTrack\n };\n}\n","class Fullscreen {\n request(elm) {\n if (elm.requestFullscreen) {\n elm.requestFullscreen();\n } else if (elm.webkitRequestFullscreen) {\n elm.webkitRequestFullscreen();\n } else if (elm.mozRequestFullScreen) {\n elm.mozRequestFullScreen();\n } else if (elm.msRequestFullscreen) {\n elm.msRequestFullscreen();\n }\n }\n\n exit() {\n if (document.exitFullscreen) {\n document.exitFullscreen();\n } else if (document.webkitExitFullscreen) {\n document.webkitExitFullscreen();\n } else if (document.mozCancelFullScreen) {\n document.mozCancelFullScreen();\n } else if (document.msExitFullscreen) {\n document.msExitFullscreen();\n }\n }\n\n get isFullscreen() {\n return (\n document.fullscreenElement\n || document.webkitFullscreenElement\n || document.mozFullScreenElement\n || document.msFullscreenElement\n );\n }\n\n get enabled() {\n return (\n document.fullscreenEnabled\n || document.webkitFullscreenEnabled\n || document.mozFullScreenEnabled\n || document.msFullscreenEnabled\n );\n }\n\n addEventListener(handler) {\n document.addEventListener('fullscreenchange', handler);\n document.addEventListener('webkitfullscreenchange', handler);\n document.addEventListener('mozfullscreenchange', handler);\n document.addEventListener('MSFullscreenChange', handler);\n }\n\n removeEventListener(handler) {\n document.removeEventListener('fullscreenchange', handler);\n document.removeEventListener('webkitfullscreenchange', handler);\n document.removeEventListener('mozfullscreenchange', handler);\n document.removeEventListener('MSFullscreenChange', handler);\n }\n}\n\nexport default new Fullscreen();\n","import fullscreen from '../utils/fullscreen';\n\nexport const OPERATE = 'video-react-new/OPERATE';\nexport const FULLSCREEN_CHANGE = 'video-react-new/FULLSCREEN_CHANGE';\nexport const PLAYER_ACTIVATE = 'video-react-new/PLAYER_ACTIVATE';\nexport const USER_ACTIVATE = 'video-react-new/USER_ACTIVATE';\n\nexport function handleFullscreenChange(isFullscreen) {\n return {\n type: FULLSCREEN_CHANGE,\n isFullscreen\n };\n}\n\nexport function activate(activity) {\n return {\n type: PLAYER_ACTIVATE,\n activity\n };\n}\n\nexport function userActivate(activity) {\n return {\n type: USER_ACTIVATE,\n activity\n };\n}\n\nexport function play(\n operation = {\n action: 'play',\n source: ''\n }\n) {\n this.video.play();\n\n return {\n type: OPERATE,\n operation\n };\n}\n\nexport function pause(\n operation = {\n action: 'pause',\n source: ''\n }\n) {\n this.video.pause();\n\n return {\n type: OPERATE,\n operation\n };\n}\n\nexport function togglePlay(\n operation = {\n action: 'toggle-play',\n source: ''\n }\n) {\n this.video.togglePlay();\n\n return {\n type: OPERATE,\n operation\n };\n}\n\n// seek video by time\nexport function seek(\n time,\n operation = {\n action: 'seek',\n source: ''\n }\n) {\n this.video.seek(time);\n\n return {\n type: OPERATE,\n operation\n };\n}\n\n// jump forward x seconds\nexport function forward(\n seconds,\n operation = {\n action: `forward-${seconds}`,\n source: ''\n }\n) {\n this.video.forward(seconds);\n\n return {\n type: OPERATE,\n operation\n };\n}\n\n// jump back x seconds\nexport function replay(\n seconds,\n operation = {\n action: `replay-${seconds}`,\n source: ''\n }\n) {\n this.video.replay(seconds);\n\n return {\n type: OPERATE,\n operation\n };\n}\n\nexport function changeRate(\n rate,\n operation = {\n action: 'change-rate',\n source: ''\n }\n) {\n this.video.playbackRate = rate;\n\n return {\n type: OPERATE,\n operation\n };\n}\n\nexport function changeVolume(\n volume,\n operation = {\n action: 'change-volume',\n source: ''\n }\n) {\n let v = volume;\n if (volume < 0) {\n v = 0;\n }\n if (volume > 1) {\n v = 1;\n }\n this.video.volume = v;\n\n return {\n type: OPERATE,\n operation\n };\n}\n\nexport function mute(\n muted,\n operation = {\n action: muted ? 'muted' : 'unmuted',\n source: ''\n }\n) {\n this.video.muted = muted;\n\n return {\n type: OPERATE,\n operation\n };\n}\n\nexport function toggleFullscreen(player) {\n if (fullscreen.enabled) {\n if (fullscreen.isFullscreen) {\n fullscreen.exit();\n } else {\n fullscreen.request(this.rootElement);\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}\n","import {\n LOAD_START,\n CAN_PLAY,\n WAITING,\n CAN_PLAY_THROUGH,\n PLAYING,\n PLAY,\n PAUSE,\n END,\n SEEKING,\n SEEKED,\n SEEKING_TIME,\n END_SEEKING,\n DURATION_CHANGE,\n TIME_UPDATE,\n VOLUME_CHANGE,\n PROGRESS_CHANGE,\n RATE_CHANGE,\n SUSPEND,\n ABORT,\n EMPTIED,\n STALLED,\n LOADED_META_DATA,\n LOADED_DATA,\n ACTIVATE_TEXT_TRACK,\n RESIZE,\n ERROR\n} from '../actions/video';\nimport {\n FULLSCREEN_CHANGE,\n PLAYER_ACTIVATE,\n USER_ACTIVATE\n} from '../actions/player';\n\nconst initialState = {\n currentSrc: null,\n duration: 0,\n currentTime: 0,\n seekingTime: 0,\n buffered: null,\n waiting: false,\n seeking: false,\n paused: true,\n autoPaused: false,\n ended: false,\n playbackRate: 1,\n muted: false,\n volume: 1,\n readyState: 0,\n networkState: 0,\n videoWidth: 0,\n videoHeight: 0,\n hasStarted: false,\n userActivity: true,\n isActive: false,\n isFullscreen: false,\n activeTextTrack: null\n};\n\nexport default function player(state = initialState, action) {\n switch (action.type) {\n case USER_ACTIVATE:\n return {\n ...state,\n userActivity: action.activity\n };\n case PLAYER_ACTIVATE:\n return {\n ...state,\n isActive: action.activity\n };\n case FULLSCREEN_CHANGE:\n return {\n ...state,\n isFullscreen: !!action.isFullscreen\n };\n case SEEKING_TIME:\n return {\n ...state,\n seekingTime: action.time\n };\n case END_SEEKING:\n return {\n ...state,\n seekingTime: 0\n };\n case LOAD_START:\n return {\n ...state,\n ...action.videoProps,\n hasStarted: false,\n ended: false\n };\n case CAN_PLAY:\n return {\n ...state,\n ...action.videoProps,\n waiting: false\n };\n case WAITING:\n return {\n ...state,\n ...action.videoProps,\n waiting: true\n };\n case CAN_PLAY_THROUGH:\n case PLAYING:\n return {\n ...state,\n ...action.videoProps,\n waiting: false\n };\n case PLAY:\n return {\n ...state,\n ...action.videoProps,\n ended: false,\n paused: false,\n autoPaused: false,\n waiting: false,\n hasStarted: true\n };\n case PAUSE:\n return {\n ...state,\n ...action.videoProps,\n paused: true\n };\n case END:\n return {\n ...state,\n ...action.videoProps,\n ended: true\n };\n case SEEKING:\n return {\n ...state,\n ...action.videoProps,\n seeking: true\n };\n case SEEKED:\n return {\n ...state,\n ...action.videoProps,\n seeking: false\n };\n case ERROR:\n return {\n ...state,\n ...action.videoProps,\n error: 'UNKNOWN ERROR',\n ended: true\n };\n case DURATION_CHANGE:\n case TIME_UPDATE:\n case VOLUME_CHANGE:\n case PROGRESS_CHANGE:\n case RATE_CHANGE:\n case SUSPEND:\n case ABORT:\n case EMPTIED:\n case STALLED:\n case LOADED_META_DATA:\n case LOADED_DATA:\n case RESIZE:\n return {\n ...state,\n ...action.videoProps\n };\n case ACTIVATE_TEXT_TRACK:\n return {\n ...state,\n activeTextTrack: action.textTrack\n };\n default:\n return state;\n }\n}\n","import { OPERATE } from '../actions/player';\n\nconst initialState = {\n count: 0,\n operation: {\n action: '',\n source: ''\n }\n};\n\nexport default function operation(state = initialState, action) {\n switch (action.type) {\n case OPERATE:\n return {\n ...state,\n count: state.count + 1,\n operation: {\n ...state.operation,\n ...action.operation\n }\n };\n default:\n return state;\n }\n}\n","import player from './player';\nimport operation from './operation';\n\nexport default function (state = {}, action) {\n return {\n player: player(state.player, action),\n operation: operation(state.operation, action)\n };\n}\n\nexport const playerReducer = player;\nexport const operationReducer = operation;\n","import { createStore } from 'redux';\nimport reducer from './reducers';\nimport * as playerActions from './actions/player';\nimport * as videoActions from './actions/video';\n\nexport default class Manager {\n constructor(store) {\n this.store = store || createStore(reducer);\n\n this.video = null;\n this.rootElement = null;\n }\n\n getActions() {\n const manager = this;\n const { dispatch } = this.store;\n const actions = {\n ...playerActions,\n ...videoActions\n };\n\n function bindActionCreator(actionCreator) {\n return function bindAction() {\n // eslint-disable-next-line prefer-rest-params\n const action = actionCreator.apply(manager, arguments);\n if (typeof action !== 'undefined') {\n dispatch(action);\n }\n };\n }\n\n return Object.keys(actions)\n .filter(key => typeof actions[key] === 'function')\n .reduce((boundActions, key) => {\n boundActions[key] = bindActionCreator(actions[key]);\n return boundActions;\n }, {});\n }\n\n getState() {\n return this.store.getState();\n }\n\n // subscribe state change\n subscribeToStateChange(listener, getState) {\n if (!getState) {\n getState = this.getState.bind(this);\n }\n\n let prevState = getState();\n\n const handleChange = () => {\n const state = getState();\n if (state === prevState) {\n return;\n }\n const prevStateCopy = prevState;\n prevState = state;\n listener(state, prevStateCopy);\n };\n\n return this.store.subscribe(handleChange);\n }\n\n // subscribe to operation state change\n subscribeToOperationStateChange(listener) {\n return this.subscribeToStateChange(\n listener,\n () => this.getState().operation\n );\n }\n\n // subscribe to player state change\n subscribeToPlayerStateChange(listener) {\n return this.subscribeToStateChange(listener, () => this.getState().player);\n }\n}\n","import PropTypes from 'prop-types';\nimport React, { Component } from 'react';\nimport classNames from 'classnames';\n\nconst propTypes = {\n actions: PropTypes.object,\n player: PropTypes.object,\n position: PropTypes.string,\n className: PropTypes.string\n};\n\nconst defaultProps = {\n position: 'left'\n};\n\nexport default class BigPlayButton extends Component {\n constructor(props, context) {\n super(props, context);\n\n this.handleClick = this.handleClick.bind(this);\n }\n\n componentDidMount() {}\n\n handleClick() {\n const { actions } = this.props;\n actions.play();\n }\n\n render() {\n const { player, position } = this.props;\n return (\n <button\n className={classNames(\n 'video-react-new-button',\n 'video-react-new-big-play-button',\n `video-react-new-big-play-button-${position}`,\n this.props.className,\n {\n 'big-play-button-hide': player.hasStarted || !player.currentSrc\n }\n )}\n type=\"button\"\n aria-live=\"polite\"\n tabIndex=\"0\"\n onClick={this.handleClick}\n >\n <span className=\"video-react-new-control-text\">Play Video</span>\n </button>\n );\n }\n}\n\nBigPlayButton.propTypes = propTypes;\nBigPlayButton.defaultProps = defaultProps;\nBigPlayButton.displayName = 'BigPlayButton';\n","import PropTypes from 'prop-types';\nimport React from 'react';\nimport classNames from 'classnames';\n\nconst propTypes = {\n player: PropTypes.object,\n className: PropTypes.string\n};\n\nexport default function LoadingSpinner({ player, className }) {\n if (player.error) {\n return null;\n }\n return (\n <div className={classNames('video-react-new-loading-spinner', className)} />\n );\n}\n\nLoadingSpinner.propTypes = propTypes;\nLoadingSpinner.displayName = 'LoadingSpinner';\n","import PropTypes from 'prop-types';\nimport React from 'react';\nimport classNames from 'classnames';\n\nconst propTypes = {\n poster: PropTypes.string,\n player: PropTypes.object,\n actions: PropTypes.object,\n className: PropTypes.string\n};\n\nfunction PosterImage({\n poster, player, actions, className\n}) {\n if (!poster || player.hasStarted) {\n return null;\n }\n\n return (\n <div\n className={classNames('video-react-new-poster', className)}\n style={{\n backgroundImage: `url(\"${poster}\")`\n }}\n onClick={() => {\n if (player.paused) {\n actions.play();\n }\n }}\n />\n );\n}\n\nPosterImage.propTypes = propTypes;\nPosterImage.displayName = 'PosterImage';\n\nexport default PosterImage;\n","import React from 'react';\n\n// NaN is the only value in javascript which is not equal to itself.\n// eslint-disable-next-line no-self-compare\nconst isNaN = Number.isNaN || (value => value !== value);\n\n/**\n * @file format-time.js\n *\n * Format seconds as a time string, H:MM:SS or M:SS\n * Supplying a guide (in seconds) will force a number of leading zeros\n * to cover the length of the guide\n *\n * @param {Number} seconds Number of seconds to be turned into a string\n * @param {Number} guide Number (in seconds) to model the string after\n * @return {String} Time formatted as H:MM:SS or M:SS\n * @private\n * @function formatTime\n */\nexport function formatTime(seconds = 0, guide = seconds) {\n let s = Math.floor(seconds % 60);\n let m = Math.floor((seconds / 60) % 60);\n let h = Math.floor(seconds / 3600);\n const gm = Math.floor((guide / 60) % 60);\n const gh = Math.floor(guide / 3600);\n\n // handle invalid times\n if (isNaN(seconds) || seconds === Infinity) {\n // '-' is false for all relational operators (e.g. <, >=) so this setting\n // will add the minimum number of fields specified by the guide\n h = '-';\n m = '-';\n s = '-';\n }\n\n // Check if we need to show hours\n h = h > 0 || gh > 0 ? `${h}:` : '';\n\n // If hours are showing, we may need to add a leading zero.\n // Always show at least one digit of minutes.\n m = `${(h || gm >= 10) && m < 10 ? `0${m}` : m}:`;\n\n // Check if leading zero is need for seconds\n s = s < 10 ? `0${s}` : s;\n\n return h + m + s;\n}\n\n// Check if the element belongs to a video element\n// only accept <source />, <track />,\n// <MyComponent isVideoChild />\n// elements\nexport function isVideoChild(c) {\n if (c.props && c.props.isVideoChild) {\n return true;\n }\n return c.type === 'source' || c.type === 'track';\n}\n\nconst find = (elements, func) => elements.filter(func)[0];\n\n// check if two components are the same type\nconst isTypeEqual = (component1, component2) => {\n const type1 = component1.type;\n const type2 = component2.type;\n\n if (typeof type1 === 'string' || typeof type2 === 'string') {\n return type1 === type2;\n }\n\n if (typeof type1 === 'function' && typeof type2 === 'function') {\n return type1.displayName === type2.displayName;\n }\n\n return false;\n};\n\n// merge default children\n// sort them by `order` property\n// filter them by `disabled` property\nexport function mergeAndSortChildren(\n defaultChildren,\n _children,\n _parentProps,\n defaultOrder = 1\n) {\n const children = React.Children.toArray(_children);\n const { order, ...parentProps } = _parentProps; // ignore order from parent\n return children\n .filter(e => !e.props.disabled) // filter the disabled components\n .concat(\n defaultChildren.filter(\n c => !find(children, component => isTypeEqual(component, c))\n )\n )\n .map((element) => {\n const defaultComponent = find(defaultChildren, c => isTypeEqual(c, element));\n\n const defaultProps = defaultComponent ? defaultComponent.props : {};\n const props = {\n ...parentProps, // inherit from parent component\n ...defaultProps, // inherit from default component\n ...element.props // element's own props\n };\n const e = React.cloneElement(element, props, element.props.children);\n return e;\n })\n .sort(\n (a, b) => (a.props.order || defaultOrder) - (b.props.order || defaultOrder)\n );\n}\n\n/**\n * Temporary utility for generating the warnings\n */\nexport function deprecatedWarning(oldMethodCall, newMethodCall) {\n // eslint-disable-next-line no-console\n console.warn(\n `WARNING: ${oldMethodCall} will be deprecated soon! Please use ${newMethodCall} instead.`\n );\n}\n\nexport function throttle(callback, limit) {\n let wait = false;\n return () => {\n if (!wait) {\n // eslint-disable-next-line prefer-rest-params\n callback(...arguments);\n wait = true;\n setTimeout(() => {\n wait = false;\n }, limit);\n }\n };\n}\n\nexport const mediaProperties = [\n 'error',\n 'src',\n 'srcObject',\n 'currentSrc',\n 'crossOrigin',\n 'networkState',\n 'preload',\n 'buffered',\n 'readyState',\n 'seeking',\n 'currentTime',\n 'duration',\n 'paused',\n 'defaultPlaybackRate',\n 'playbackRate',\n 'played',\n 'seekable',\n 'ended',\n 'autoplay',\n 'loop',\n 'mediaGroup',\n 'controller',\n 'controls',\n 'volume',\n 'muted',\n 'defaultMuted',\n 'audioTracks',\n 'videoTracks',\n 'textTracks',\n 'width',\n 'height',\n 'videoWidth',\n 'videoHeight',\n 'poster'\n];\n","import PropTypes from 'prop-types';\nimport React, { Component } from 'react';\nimport classNames from 'classnames';\n\nimport { isVideoChild, mediaProperties, throttle } from '../utils';\n\nconst propTypes = {\n actions: PropTypes.object,\n player: PropTypes.object,\n children: PropTypes.any,\n startTime: PropTypes.number,\n loop: PropTypes.bool,\n muted: PropTypes.bool,\n autoPlay: PropTypes.bool,\n playsInline: PropTypes.bool,\n src: PropTypes.string,\n poster: PropTypes.string,\n className: PropTypes.string,\n preload: PropTypes.oneOf(['auto', 'metadata', 'none']),\n crossOrigin: PropTypes.string,\n\n onLoadStart: PropTypes.func,\n onWaiting: PropTypes.func,\n onCanPlay: PropTypes.func,\n onCanPlayThrough: PropTypes.func,\n onPlaying: PropTypes.func,\n onEnded: PropTypes.func,\n onSeeking: PropTypes.func,\n onSeeked: PropTypes.func,\n onPlay: PropTypes.func,\n onPause: PropTypes.func,\n onProgress: PropTypes.func,\n onDurationChange: PropTypes.func,\n onError: PropTypes.func,\n onSuspend: PropTypes.func,\n onAbort: PropTypes.func,\n onEmptied: PropTypes.func,\n onStalled: PropTypes.func,\n onLoadedMetadata: PropTypes.func,\n onLoadedData: PropTypes.func,\n onTimeUpdate: PropTypes.func,\n onRateChange: PropTypes.func,\n onVolumeChange: PropTypes.func,\n onResize: PropTypes.func\n};\n\nexport default class Video extends Component {\n constructor(props) {\n super(props);\n\n this.video = null; // the html5 video\n this.play = this.play.bind(this);\n this.pause = this.pause.bind(this);\n this.seek = this.seek.bind(this);\n this.forward = this.forward.bind(this);\n this.replay = this.replay.bind(this);\n this.toggleFullscreen = this.toggleFullscreen.bind(this);\n this.getProperties = this.getProperties.bind(this);\n this.renderChildren = this.renderChildren.bind(this);\n this.handleLoadStart = this.handleLoadStart.bind(this);\n this.handleCanPlay = this.handleCanPlay.bind(this);\n this.handleCanPlayThrough = this.handleCanPlayThrough.bind(this);\n this.handlePlay = this.handlePlay.bind(this);\n this.handlePlaying = this.handlePlaying.bind(this);\n this.handlePause = this.handlePause.bind(this);\n this.handleEnded = this.handleEnded.bind(this);\n this.handleWaiting = this.handleWaiting.bind(this);\n this.handleSeeking = this.handleSeeking.bind(this);\n this.handleSeeked = this.handleSeeked.bind(this);\n this.handleFullscreenChange = this.handleFullscreenChange.bind(this);\n this.handleError = this.handleError.bind(this);\n this.handleSuspend = this.handleSuspend.bind(this);\n this.handleAbort = this.handleAbort.bind(this);\n this.handleEmptied = this.handleEmptied.bind(this);\n this.handleStalled = this.handleStalled.bind(this);\n this.handleLoadedMetaData = this.handleLoadedMetaData.bind(this);\n this.handleLoadedData = this.handleLoadedData.bind(this);\n this.handleTimeUpdate = this.handleTimeUpdate.bind(this);\n this.handleRateChange = this.handleRateChange.bind(this);\n this.handleVolumeChange = this.handleVolumeChange.bind(this);\n this.handleDurationChange = this.handleDurationChange.bind(this);\n this.handleProgress = throttle(this.handleProgress.bind(this), 250);\n this.handleKeypress = this.handleKeypress.bind(this);\n this.handleTextTrackChange = this.handleTextTrackChange.bind(this);\n }\n\n componentDidMount() {\n this.forceUpdate(); // make sure the children can get the video property\n if (this.video && this.video.textTracks) {\n this.video.textTracks.onaddtrack = this.handleTextTrackChange;\n this.video.textTracks.onremovetrack = this.handleTextTrackChange;\n }\n }\n\n // get all video properties\n getProperties() {\n if (!this.video) {\n return null;\n }\n\n return mediaProperties.reduce((properties, key) => {\n properties[key] = this.video[key];\n return properties;\n }, {});\n }\n\n // get playback rate\n get playbackRate() {\n return this.video.playbackRate;\n }\n\n // set playback rate\n // speed of video\n set playbackRate(rate) {\n this.video.playbackRate = rate;\n }\n\n get muted() {\n return this.video.muted;\n }\n\n set muted(val) {\n this.video.muted = val;\n }\n\n get volume() {\n return this.video.volume;\n }\n\n set volume(val) {\n if (val > 1) {\n val = 1;\n }\n if (val < 0) {\n val = 0;\n }\n this.video.volume = val;\n }\n\n // video width\n get videoWidth() {\n return this.video.videoWidth;\n }\n\n // video height\n get videoHeight() {\n return this.video.videoHeight;\n }\n\n handleTextTrackChange() {\n const { actions, player } = this.props;\n if (this.video && this.video.textTracks) {\n const activeTextTrack = Array.from(this.video.textTracks).find(\n textTrack => textTrack.mode === 'showing'\n );\n if (activeTextTrack !== player.activeTextTrack) {\n actions.activateTextTrack(activeTextTrack);\n }\n }\n }\n\n // play the video\n play() {\n const promise = this.video.play();\n if (promise !== undefined) {\n promise.catch(() => {}).then(() => {});\n }\n }\n\n // pause the video\n pause() {\n const promise = this.video.pause();\n if (promise !== undefined) {\n promise.catch(() => {}).then(() => {});\n }\n }\n\n // Change the video source and re-load the video:\n load() {\n this.video.load();\n }\n\n // Add a new text track to the video\n addTextTrack(...args) {\n this.video.addTextTrack(...args);\n }\n\n // Check if your browser can play different types of video:\n canPlayType(...args) {\n this.video.canPlayType(...args);\n }\n\n // toggle play\n togglePlay() {\n if (this.video.paused) {\n this.play();\n } else {\n this.pause();\n }\n }\n\n // seek video by time\n seek(time) {\n try {\n this.video.currentTime = time;\n } catch (e) {\n // console.log(e, 'Video is not ready.')\n }\n }\n\n // jump forward x seconds\n forward(seconds) {\n this.seek(this.video.currentTime + seconds);\n }\n\n // jump back x seconds\n replay(seconds) {\n this.forward(-seconds);\n }\n\n // enter or exist full screen\n toggleFullscreen() {\n const { player, actions } = this.props;\n actions.toggleFullscreen(player);\n }\n\n // Fired when the user agent\n // begins looking for media data\n handleLoadStart(...args) {\n const { actions, onLoadStart } = this.props;\n actions.handleLoadStart(this.getProperties());\n if (onLoadStart) {\n onLoadStart(...args);\n }\n }\n\n // A handler for events that\n // signal that waiting has ended\n handleCanPlay(...args) {\n const { actions, onCanPlay } = this.props;\n\n actions.handleCanPlay(this.getProperties());\n\n if (onCanPlay) {\n onCanPlay(...args);\n }\n }\n\n // A handler for events that\n // signal that waiting has ended\n handleCanPlayThrough(...args) {\n const { actions, onCanPlayThrough } = this.props;\n actions.handleCanPlayThrough(this.getProperties());\n\n if (onCanPlayThrough) {\n onCanPlayThrough(...args);\n }\n }\n\n // A handler for events that\n // signal that waiting has ended\n handlePlaying(...args) {\n const { actions, onPlaying } = this.props;\n actions.handlePlaying(this.getProperties());\n\n if (onPlaying) {\n onPlaying(...args);\n }\n }\n\n // Fired whenever the media has been started\n handlePlay(...args) {\n const { actions, onPlay } = this.props;\n actions.handlePlay(this.getProperties());\n\n if (onPlay) {\n onPlay(...args);\n }\n }\n\n // Fired whenever the media has been paused\n handlePause(...args) {\n const { actions, onPause } = this.props;\n actions.handlePause(this.getProperties());\n\n if (onPause) {\n onPause(...args);\n }\n }\n\n // Fired when the duration of\n // the media resource is first known or changed\n handleDurationChange(...args) {\n const { actions, onDurationChange } = this.props;\n actions.handleDurationChange(this.getProperties());\n\n if (onDurationChange) {\n onDurationChange(...args);\n }\n }\n\n // Fired while the user agent\n // is downloading media data\n handleProgress(...args) {\n const { actions, onProgress } = this.props;\n if (this.video) {\n actions.handleProgressChange(this.getProperties());\n }\n\n if (onProgress) {\n onProgress(...args);\n }\n }\n\n // Fired when the end of the media resource\n // is reached (currentTime == duration)\n handleEnded(...args) {\n const {\n loop, player, actions, onEnded\n } = this.props;\n if (loop) {\n this.seek(0);\n this.play();\n } else if (!player.paused) {\n this.pause();\n }\n actions.handleEnd(this.getProperties());\n\n if (onEnded) {\n onEnded(...args);\n }\n }\n\n // Fired whenever the media begins waiting\n handleWaiting(...args) {\n const { actions, onWaiting } = this.props;\n actions.handleWaiting(this.getProperties());\n\n if (onWaiting) {\n onWaiting(...args);\n }\n }\n\n // Fired whenever the player\n // is jumping to a new time\n handleSeeking(...args) {\n const { actions, onSeeking } = this.props;\n actions.handleSeeking(this.getProperties());\n\n if (onSeeking) {\n onSeeking(...args);\n }\n }\n\n // Fired when the player has\n // finished jumping to a new time\n handleSeeked(...args) {\n const { actions, onSeeked } = this.props;\n actions.handleSeeked(this.getProperties());\n\n if (onSeeked) {\n onSeeked(...args);\n }\n }\n\n // Handle Fullscreen Change\n handleFullscreenChange() {}\n\n // Fires when the browser is\n // intentionally not getting media data\n handleSuspend(...args) {\n const { actions, onSuspend } = this.props;\n actions.handleSuspend(this.getProperties());\n if (onSuspend) {\n onSuspend(...args);\n }\n }\n\n // Fires when the loading of an audio/video is aborted\n handleAbort(...args) {\n const { actions, onAbort } = this.props;\n actions.handleAbort(this.getProperties());\n if (onAbort) {\n onAbort(...args);\n }\n }\n\n // Fires when the current playlist is empty\n handleEmptied(...args) {\n const { actions, onEmptied } = this.props;\n actions.handleEmptied(this.getProperties());\n if (onEmptied) {\n onEmptied(...args);\n }\n }\n\n // Fires when the browser is trying to\n // get media data, but data is not available\n handleStalled(...args) {\n const { actions, onStalled } = this.props;\n actions.handleStalled(this.getProperties());\n\n if (onStalled) {\n onStalled(...args);\n }\n }\n\n // Fires when the browser has loaded\n // meta data for the audio/video\n handleLoadedMetaData(...args) {\n const { actions, onLoadedMetadata, startTime } = this.props;\n\n if (startTime && startTime > 0) {\n this.video.currentTime = startTime;\n }\n\n actions.handleLoadedMetaData(this.getProperties());\n\n if (onLoadedMetadata) {\n onLoadedMetadata(...args);\n }\n }\n\n // Fires when the browser has loaded\n // the current frame of the audio/video\n handleLoadedData(...args) {\n const { actions, onLoadedData } = this.props;\n actions.handleLoadedData(this.getProperties());\n\n if (onLoadedData) {\n onLoadedData(...args);\n }\n }\n\n // Fires when the current\n // playback position has changed\n handleTimeUpdate(...args) {\n const { actions, onTimeUpdate } = this.props;\n actions.handleTimeUpdate(this.getProperties());\n\n if (onTimeUpdate) {\n onTimeUpdate(...args);\n }\n }\n\n /**\n * Fires when the playing speed of the audio/video is changed\n */\n handleRateChange(...args) {\n const { actions, onRateChange } = this.props;\n actions.handleRateChange(this.getProperties());\n\n if (onRateChange) {\n onRateChange(...args);\n }\n }\n\n // Fires when the volume has been changed\n handleVolumeChange(...args) {\n const { actions, onVolumeChange } = this.props;\n actions.handleVolumeChange(this.getProperties());\n\n if (onVolumeChange) {\n onVolumeChange(...args);\n }\n }\n\n // Fires when an error occurred\n // during the loading of an audio/video\n handleError(...args) {\n const { actions, onError } = this.props;\n actions.handleError(this.getProperties());\n if (onError) {\n onError(...args);\n }\n }\n\n handleResize(...args) {\n const { actions, onResize } = this.props;\n actions.handleResize(this.getProperties());\n if (onResize) {\n onResize(...args);\n }\n }\n\n handleKeypress() {}\n\n renderChildren() {\n const props = {\n ...this.props,\n video: this.video\n };\n\n // to make sure the children can get video property\n if (!this.video) {\n return null;\n }\n\n // only keep <source />, <track />, <MyComponent isVideoChild /> elements\n return React.Children.toArray(this.props.children)\n .filter(isVideoChild)\n .map((c) => {\n let cprops;\n if (typeof c.type === 'string') {\n // add onError to <source />\n if (c.type === 'source') {\n cprops = { ...c.props };\n const preOnError = cprops.onError;\n cprops.onError = (...args) => {\n if (preOnError) {\n preOnError(...args);\n }\n this.handleError(...args);\n };\n }\n } else {\n cprops = props;\n }\n return React.cloneElement(c, cprops);\n });\n }\n\n render() {\n const {\n loop,\n poster,\n preload,\n src,\n autoPlay,\n playsInline,\n muted,\n crossOrigin,\n videoId\n } = this.props;\n\n return (\n <video\n className={classNames('video-react-new-video', this.props.className)}\n id={videoId}\n crossOrigin={crossOrigin}\n ref={(c) => {\n this.video = c;\n }}\n muted={muted}\n preload={preload}\n loop={loop}\n playsInline={playsInline}\n autoPlay={autoPlay}\n poster={poster}\n src={src}\n onLoadStart={this.handleLoadStart}\n onWaiting={this.handleWaiting}\n onCanPlay={this.handleCanPlay}\n onCanPlayThrough={this.handleCanPlayThrough}\n onPlaying={this.handlePlaying}\n onEnded={this.handleEnded}\n onSeeking={this.handleSeeking}\n onSeeked={this.handleSeeked}\n onPlay={this.handlePlay}\n onPause={this.handlePause}\n onProgress={this.handleProgress}\n onDurationChange={this.handleDurationChange}\n onError={this.handleError}\n onSuspend={this.handleSuspend}\n onAbort={this.handleAbort}\n onEmptied={this.handleEmptied}\n onStalled={this.handleStalled}\n onLoadedMetadata={this.handleLoadedMetaData}\n onLoadedData={this.handleLoadedData}\n onTimeUpdate={this.handleTimeUpdate}\n onRateChange={this.handleRateChange}\n onVolumeChange={this.handleVolumeChange}\n tabIndex=\"-1\"\n >\n {this.renderChildren()}\n </video>\n );\n }\n}\n\nVideo.propTypes = propTypes;\nVideo.displayName = 'Video';\n","import PropTypes from 'prop-types';\nimport React, { Component } from 'react';\nimport classNames from 'classnames';\n\nconst propTypes = {\n manager: PropTypes.object,\n className: PropTypes.string\n};\n\nexport default class Bezel extends Component {\n constructor(props, context) {\n super(props, context);\n\n this.timer = null;\n props.manager.subscribeToOperationStateChange(\n this.handleStateChange.bind(this)\n );\n\n this.state = {\n hidden: true,\n operation: {}\n };\n }\n\n handleStateChange(state, prevState) {\n if (\n state.count !== prevState.count\n && state.operation.source === 'shortcut'\n ) {\n if (this.timer) {\n // previous animation is not finished\n clearTimeout(this.timer); // cancel it\n this.timer = null;\n }\n\n // show it\n // update operation\n this.setState({\n hidden: false,\n count: state.count,\n operation: state.operation\n });\n\n // hide it after 0.5s\n this.timer = setTimeout(() => {\n this.setState({\n hidden: true\n });\n this.timer = null;\n }, 500);\n }\n }\n\n render() {\n // only displays for shortcut so far\n if (this.state.operation.source !== 'shortcut') {\n return null;\n }\n const style = this.state.hidden\n ? {\n display: 'none'\n }\n : null;\n\n return (\n <div\n className={classNames(\n {\n 'video-react-new-bezel': true,\n 'video-react-new-bezel-animation': this.state.count % 2 === 0,\n 'video-react-new-bezel-animation-alt': this.state.count % 2 === 1\n },\n this.props.className\n )}\n style={style}\n role=\"status\"\n aria-label={this.state.operation.action}\n >\n <div\n className={classNames(\n 'video-react-new-bezel-icon',\n `video-react-new-bezel-icon-${this.state.operation.action}`\n )}\n />\n </div>\n );\n }\n}\n\nBezel.propTypes = propTypes;\nBezel.displayName = 'Bezel';\n","/**\n * Offset Left\n * getBoundingClientRect technique from\n * John Resig http://ejohn.org/blog/getboundingclientrect-is-awesome/\n *\n * @function findElPosition\n * @param {ReactNodeRef} el React Node ref from which to get offset\n * @return {Object}\n */\nexport function findElPosition(el) {\n let box;\n\n if (el.getBoundingClientRect && el.parentNode) {\n box = el.getBoundingClientRect();\n }\n\n if (!box) {\n return {\n left: 0,\n top: 0\n };\n }\n\n const { body, documentElement: docEl } = document;\n\n const clientLeft = docEl.clientLeft || body.clientLeft || 0;\n const scrollLeft = window.pageXOffset || body.scrollLeft;\n const left = box.left + scrollLeft - clientLeft;\n\n const clientTop = docEl.clientTop || body.clientTop || 0;\n const scrollTop = window.pageYOffset || body.scrollTop;\n const top = box.top + scrollTop - clientTop;\n\n // Android sometimes returns slightly off decimal values, so need to round\n return {\n left: Math.round(left),\n top: Math.round(top)\n };\n}\n\n/**\n * Get pointer position in a React Node ref\n * Returns an object with x and y coordinates.\n * The base on the coordinates are the bottom left of the element.\n *\n * @function getPointerPosition\n * @param {ReactNodeRef} el React Node ref on which to get the pointer position on\n * @param {Event} event Event object\n * @return {Object} This object will have x and y coordinates corresponding to the mouse position\n */\nexport function getPointerPosition(el, event) {\n const position = {};\n const box = findElPosition(el);\n const boxW = el.offsetWidth;\n const boxH = el.offsetHeight;\n\n const boxY = box.top;\n const boxX = box.left;\n let evtPageY = event.pageY;\n let evtPageX = event.pageX;\n\n if (event.changedTouches) {\n evtPageX = event.changedTouches[0].pageX;\n evtPageY = event.changedTouches[0].pageY;\n }\n\n position.y = Math.max(0, Math.min(1, (boxY - evtPageY + boxH) / boxH));\n position.x = Math.max(0, Math.min(1, (evtPageX - boxX) / boxW));\n\n return position;\n}\n\n// blur an element\nexport function blurNode(reactNode) {\n if (reactNode && reactNode.blur) {\n reactNode.blur();\n }\n}\n\n// focus an element\nexport function focusNode(reactNode) {\n if (reactNode && reactNode.focus) {\n reactNode.focus();\n }\n}\n\n// check if an element has a class name\nexport function hasClass(elm, cls) {\n const classes = elm.className.split(' ');\n for (let i = 0; i < classes.length; i++) {\n if (classes[i].toLowerCase() === cls.toLowerCase()) {\n return true;\n }\n }\n return false;\n}\n","import { Component } from 'react';\nimport PropTypes from 'prop-types';\nimport { hasClass } from '../utils/dom';\n\nconst propTypes = {\n clickable: PropTypes.bool,\n dblclickable: PropTypes.bool,\n manager: PropTypes.object,\n actions: PropTypes.object,\n player: PropTypes.object,\n shortcuts: PropTypes.array\n};\n\nconst defaultProps = {\n clickable: true,\n dblclickable: true\n};\n\nexport default class Shortcut extends Component {\n constructor(props, context) {\n super(props, context);\n\n this.defaultShortcuts = [\n {\n keyCode: 32, // spacebar\n handle: this.togglePlay\n },\n {\n keyCode: 75, // k\n handle: this.togglePlay\n },\n {\n keyCode: 70, // f\n handle: this.toggleFullscreen\n },\n {\n keyCode: 37, // Left arrow\n handle: (player, actions) => {\n if (!player.hasStarted) {\n return;\n }\n actions.replay(5, {\n action: 'replay-5',\n source: 'shortcut'\n }); // Go back 5 seconds\n }\n },\n {\n keyCode: 74, // j\n handle: (player, actions) => {\n if (!player.hasStarted) {\n return;\n }\n actions.replay(10, {\n action: 'replay-10',\n source: 'shortcut'\n }); // Go back 10 seconds\n }\n },\n {\n keyCode: 39, // Right arrow\n handle: (player, actions) => {\n if (!player.hasStarted) {\n return;\n }\n actions.forward(5, {\n action: 'forward-5',\n source: 'shortcut'\n }); // Go forward 5 seconds\n }\n },\n {\n keyCode: 76, // l\n handle: (player, actions) => {\n if (!player.hasStarted) {\n return;\n }\n actions.forward(10, {\n action: 'forward-10',\n source: 'shortcut'\n }); // Go forward 10 seconds\n }\n },\n {\n keyCode: 36, // Home\n handle: (player, actions) => {\n if (!player.hasStarted) {\n return;\n }\n actions.seek(0); // Go to beginning of video\n }\n },\n {\n keyCode: 35, // End\n handle: (player, actions) => {\n if (!player.hasStarted) {\n return;\n }\n // Go to end of video\n actions.seek(player.duration);\n }\n },\n {\n keyCode: 38, // Up arrow\n handle: (player, actions) => {\n // Increase volume 5%\n let v = player.volume + 0.05;\n if (v > 1) {\n v = 1;\n }\n actions.changeVolume(v, {\n action: 'volume-up',\n source: 'shortcut'\n });\n }\n },\n {\n keyCode: 40, // Down arrow\n handle: (player, actions) => {\n // Decrease volume 5%\n let v = player.volume - 0.05;\n if (v < 0) {\n v = 0;\n }\n const action = v > 0 ? 'volume-down' : 'volume-off';\n actions.changeVolume(v, {\n action,\n source: 'shortcut'\n });\n }\n },\n {\n keyCode: 190, // Shift + >\n shift: true,\n handle: (player, actions) => {\n // Increase speed\n let { playbackRate } = player;\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 actions.changeRate(playbackRate, {\n action: 'fast-forward',\n source: 'shortcut'\n });\n }\n },\n {\n keyCode: 188, // Shift + <\n shift: true,\n handle: (player, actions) => {\n // Decrease speed\n let { playbackRate } = player;\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 actions.changeRate(playbackRate, {\n action: 'fast-rewind',\n source: 'shortcut'\n });\n }\n }\n ];\n\n this.shortcuts = [...this.defaultShortcuts];\n\n this.mergeShortcuts = this.mergeShortcuts.bind(this);\n this.handleKeyPress = this.handleKeyPress.bind(this);\n this.handleClick = this.handleClick.bind(this);\n this.handleDoubleClick = this.handleDoubleClick.bind(this);\n }\n\n 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 componentDidUpdate(prevProps) {\n if (prevProps.shortcuts !== this.props.shortcuts) {\n this.mergeShortcuts();\n }\n }\n\n componentWillUnmount() {\n document.removeEventListener('keydown', this.handleKeyPress);\n document.removeEventListener('click', this.handleClick);\n document.removeEventListener('dblclick', this.handleDoubleClick);\n }\n\n // merge the shortcuts from props\n mergeShortcuts() {\n const getShortcutKey = ({\n keyCode = 0,\n ctrl = false,\n shift = false,\n alt = false\n }) => `${keyCode}:${ctrl}:${shift}:${alt}`;\n const defaultShortcuts = this.defaultShortcuts.reduce(\n (shortcuts, shortcut) => Object.assign(shortcuts, {\n [getShortcutKey(shortcut)]: shortcut\n }),\n {}\n );\n const mergedShortcuts = (this.props.shortcuts || []).reduce(\n (shortcuts, shortcut) => {\n const { keyCode, handle } = shortcut;\n if (keyCode && typeof handle === 'function') {\n return Object.assign(shortcuts, {\n [getShortcutKey(shortcut)]: shortcut\n });\n }\n return shortcuts;\n },\n defaultShortcuts\n );\n\n const gradeShortcut = (s) => {\n let score = 0;\n const ps = ['ctrl', 'shift', 'alt'];\n ps.forEach((key) => {\n if (s[key]) {\n score++;\n }\n });\n return score;\n };\n\n this.shortcuts = Object.keys(mergedShortcuts)\n .map(key => mergedShortcuts[key])\n .sort((a, b) => gradeShortcut(b) - gradeShortcut(a));\n }\n\n 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 toggleFullscreen(player, actions) {\n actions.toggleFullscreen(player);\n }\n\n handleKeyPress(e) {\n const { player, actions } = this.props;\n if (!player.isActive) {\n return;\n }\n if (\n document.activeElement\n && (hasClass(document.activeElement, 'video-react-new-control')\n || hasClass(document.activeElement, 'video-react-new-menu-button-active')\n // || hasClass(document.activeElement, 'video-react-new-slider')\n || hasClass(document.activeElement, 'video-react-new-big-play-button'))\n ) {\n return;\n }\n\n const keyCode = e.keyCode || e.which;\n const ctrl = e.ctrlKey || e.metaKey;\n const shift = e.shiftKey;\n const alt = e.altKey;\n\n const shortcut = this.shortcuts.filter((s) => {\n if (!s.keyCode || s.keyCode - keyCode !== 0) {\n return false;\n }\n if (\n (s.ctrl !== undefined && s.ctrl !== ctrl)\n || (s.shift !== undefined && s.shift !== shift)\n || (s.alt !== undefined && s.alt !== alt)\n ) {\n return false;\n }\n return true;\n })[0];\n\n if (shortcut) {\n shortcut.handle(player, actions);\n e.preventDefault();\n }\n }\n\n // only if player is active and player is ready\n canBeClicked(player, e) {\n if (\n !player.isActive\n || e.target.nodeName !== 'VIDEO'\n || player.readyState !== 4\n ) {\n return false;\n }\n return true;\n }\n\n handleClick(e) {\n const { player, actions, clickable } = this.props;\n if (!this.canBeClicked(player, e) || !clickable) {\n return;\n }\n this.togglePlay(player, actions);\n // e.preventDefault();\n }\n\n handleDoubleClick(e) {\n const { player, actions, dblclickable } = this.props;\n if (!this.canBeClicked(player, e) || !dblclickable) {\n return;\n }\n this.toggleFullscreen(player, actions);\n // e.preventDefault();\n }\n\n // this component dose not render anything\n // it's just for the key down event\n render() {\n return null;\n }\n}\n\nShortcut.propTypes = propTypes;\nShortcut.defaultProps = defaultProps;\nShortcut.displayName = 'Shortcut';\n","import PropTypes from 'prop-types';\nimport React, { Component } from 'react';\nimport classNames from 'classnames';\nimport * as Dom from '../utils/dom';\n\nconst propTypes = {\n className: PropTypes.string,\n onMouseDown: PropTypes.func,\n onMouseMove: PropTypes.func,\n stepForward: PropTypes.func,\n stepBack: PropTypes.func,\n sliderActive: PropTypes.func,\n sliderInactive: PropTypes.func,\n onMouseUp: PropTypes.func,\n onFocus: PropTypes.func,\n onBlur: PropTypes.func,\n onClick: PropTypes.func,\n getPercent: PropTypes.func,\n vertical: PropTypes.bool,\n children: PropTypes.node,\n label: PropTypes.string,\n valuenow: PropTypes.string,\n valuetext: PropTypes.string\n};\n\nexport default class Slider extends Component {\n constructor(props, context) {\n super(props, context);\n\n this.handleMouseDown = this.handleMouseDown.bind(this);\n this.handleMouseMove = this.handleMouseMove.bind(this);\n this.handleMouseUp = this.handleMouseUp.bind(this);\n this.handleFocus = this.handleFocus.bind(this);\n this.handleBlur = this.handleBlur.bind(this);\n this.handleClick = this.handleClick.bind(this);\n this.handleKeyPress = this.handleKeyPress.bind(this);\n this.stepForward = this.stepForward.bind(this);\n this.stepBack = this.stepBack.bind(this);\n this.calculateDistance = this.calculateDistance.bind(this);\n this.getProgress = this.getProgress.bind(this);\n this.renderChildren = this.renderChildren.bind(this);\n\n this.state = {\n active: false\n };\n }\n\n 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 getProgress() {\n const { getPercent } = this.props;\n if (!getPercent) {\n return 0;\n }\n let progress = getPercent();\n\n // Protect against no duration and other division issues\n if (typeof progress !== 'number' || progress < 0 || progress === Infinity) {\n progress = 0;\n }\n return progress;\n }\n\n handleMouseDown(event) {\n const { onMouseDown } = this.props;\n // 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\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 handleMouseMove(event) {\n const { onMouseMove } = this.props;\n\n if (onMouseMove) {\n onMouseMove(event);\n }\n }\n\n 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 const { onMouseUp } = this.props;\n\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\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 handleFocus(e) {\n document.addEventListener('keydown', this.handleKeyPress, true);\n if (this.props.onFocus) {\n this.props.onFocus(e);\n }\n }\n\n handleBlur(e) {\n document.removeEventListener('keydown', this.handleKeyPress, true);\n if (this.props.onBlur) {\n this.props.onBlur(e);\n }\n }\n\n handleClick(event) {\n event.preventDefault();\n // event.stopPropagation();\n if (this.props.onClick) {\n this.props.onClick(event);\n }\n }\n\n 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 stepForward() {\n if (this.props.stepForward) {\n this.props.stepForward();\n }\n }\n\n stepBack() {\n if (this.props.stepBack) {\n this.props.stepBack();\n }\n }\n\n calculateDistance(event) {\n const node = this.slider;\n const position = Dom.getPointerPosition(node, event);\n if (this.props.vertical) {\n return position.y;\n }\n return position.x;\n }\n\n renderChildren() {\n const progress = this.getProgress();\n const percentage = `${(progress * 100).toFixed(2)}%`;\n return React.Children.map(this.props.children, child =>\n React.cloneElement(child, { progress, percentage })\n );\n }\n\n render() {\n const { vertical, label, valuenow, valuetext } = this.props;\n\n return (\n <div\n className={classNames(\n this.props.className,\n {\n 'video-react-new-slider-vertical': vertical,\n 'video-react-new-slider-horizontal': !vertical,\n 'video-react-new-sliding': this.state.active\n },\n 'video-react-new-slider'\n )}\n ref={c => {\n this.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 >\n {this.renderChildren()}\n </div>\n );\n }\n}\n\nSlider.propTypes = propTypes;\nSlider.displayName = 'Slider';\n","import PropTypes from 'prop-types';\nimport React from 'react';\nimport classNames from 'classnames';\n\nimport { formatTime } from '../../utils';\n\nconst propTypes = {\n currentTime: PropTypes.number,\n duration: PropTypes.number,\n percentage: PropTypes.string,\n className: PropTypes.string\n};\n\n// Shows play progress\nexport default function PlayProgressBar({\n currentTime,\n duration,\n percentage,\n className\n}) {\n return (\n <div\n data-current-time={formatTime(currentTime, duration)}\n className={classNames(\n 'video-react-new-play-progress video-react-new-slider-bar',\n className\n )}\n style={{\n width: percentage\n }}\n >\n <span className=\"video-react-new-control-text\">\n {`Progress: ${percentage}`}\n </span>\n </div>\n );\n}\n\nPlayProgressBar.propTypes = propTypes;\nPlayProgressBar.displayName = 'PlayProgressBar';\n","import PropTypes from 'prop-types';\nimport React from 'react';\nimport classNames from 'classnames';\n\nconst propTypes = {\n duration: PropTypes.number,\n buffered: PropTypes.object,\n className: PropTypes.string\n};\n\n// Shows load progress\nexport default function LoadProgressBar({ buffered, duration, className }) {\n if (!buffered || !buffered.length) {\n return null;\n }\n let bufferedEnd = buffered.end(buffered.length - 1);\n const style = {};\n\n if (bufferedEnd > duration) {\n bufferedEnd = duration;\n }\n\n // get the percent width of a time compared to the total end\n function percentify(time, end) {\n const percent = time / end || 0; // no NaN\n return `${(percent >= 1 ? 1 : percent) * 100}%`;\n }\n\n // the width of the progress bar\n style.width = percentify(bufferedEnd, duration);\n\n let parts = [];\n\n // add child elements to represent the individual buffered time ranges\n for (let i = 0; i < buffered.length; i++) {\n const start = buffered.start(i);\n const end = buffered.end(i);\n // set the percent based on the width of the progress bar (bufferedEnd)\n const part = (\n <div\n style={{\n left: percentify(start, bufferedEnd),\n width: percentify(end - start, bufferedEnd)\n }}\n key={`part-${i}`}\n />\n );\n parts.push(part);\n }\n\n if (parts.length === 0) {\n parts = null;\n }\n\n return (\n <div\n style={style}\n className={classNames('video-react-new-load-progress', className)}\n >\n <span className=\"video-react-new-control-text\">Loaded: 0%</span>\n {parts}\n </div>\n );\n}\n\nLoadProgressBar.propTypes = propTypes;\nLoadProgressBar.displayName = 'LoadProgressBar';\n","import PropTypes from 'prop-types';\nimport React from 'react';\nimport classNames from 'classnames';\n\nimport { formatTime } from '../../utils';\n\nfunction MouseTimeDisplay({\n duration, mouseTime, className, text\n}) {\n if (!mouseTime.time) {\n return null;\n }\n\n const time = text || formatTime(mouseTime.time, duration);\n\n return (\n <div\n className={classNames('video-react-new-mouse-display', className)}\n style={{\n left: `${mouseTime.position}px`\n }}\n data-current-time={time}\n />\n );\n}\n\nMouseTimeDisplay.propTypes = {\n duration: PropTypes.number,\n mouseTime: PropTypes.object,\n className: PropTypes.string\n};\nMouseTimeDisplay.displayName = 'MouseTimeDisplay';\n\nexport default MouseTimeDisplay;\n","import PropTypes from 'prop-types';\nimport React, { Component } from 'react';\nimport classNames from 'classnames';\n\nimport Slider from '../Slider';\nimport PlayProgressBar from './PlayProgressBar';\nimport LoadProgressBar from './LoadProgressBar';\nimport MouseTimeDisplay from './MouseTimeDisplay';\nimport { formatTime } from '../../utils';\n\nconst propTypes = {\n player: PropTypes.object,\n mouseTime: PropTypes.object,\n actions: PropTypes.object,\n className: PropTypes.string\n};\n\nexport default class SeekBar extends Component {\n constructor(props, context) {\n super(props, context);\n\n this.getPercent = this.getPercent.bind(this);\n this.getNewTime = this.getNewTime.bind(this);\n this.stepForward = this.stepForward.bind(this);\n this.stepBack = this.stepBack.bind(this);\n\n this.handleMouseDown = this.handleMouseDown.bind(this);\n this.handleMouseMove = this.handleMouseMove.bind(this);\n this.handleMouseUp = this.handleMouseUp.bind(this);\n }\n\n componentDidMount() {}\n\n componentDidUpdate() {}\n\n /**\n * Get percentage of video played\n *\n * @return {Number} Percentage played\n * @method getPercent\n */\n getPercent() {\n const { currentTime, seekingTime, duration } = this.props.player;\n const time = seekingTime || currentTime;\n const percent = time / duration;\n return percent >= 1 ? 1 : percent;\n }\n\n getNewTime(event) {\n const {\n player: { duration }\n } = this.props;\n const distance = this.slider.calculateDistance(event);\n const newTime = distance * duration;\n\n // Don't let video end while scrubbing.\n return newTime === duration ? newTime - 0.1 : newTime;\n }\n\n handleMouseDown() {}\n\n handleMouseUp(event) {\n const { actions } = this.props;\n const newTime = this.getNewTime(event);\n // Set new time (tell video to seek to new time)\n actions.seek(newTime);\n actions.handleEndSeeking(newTime);\n }\n\n handleMouseMove(event) {\n const { actions } = this.props;\n const newTime = this.getNewTime(event);\n actions.handleSeekingTime(newTime);\n }\n\n stepForward() {\n const { actions } = this.props;\n actions.forward(5);\n }\n\n stepBack() {\n const { actions } = this.props;\n actions.replay(5);\n }\n\n render() {\n const {\n player: { currentTime, seekingTime, duration, buffered },\n mouseTime\n } = this.props;\n const time = seekingTime || currentTime;\n\n return (\n <Slider\n ref={input => {\n this.slider = input;\n }}\n label=\"video progress bar\"\n className={classNames(\n 'video-react-new-progress-holder',\n this.props.className\n )}\n valuenow={(this.getPercent() * 100).toFixed(2)}\n valuetext={formatTime(time, duration)}\n onMouseDown={this.handleMouseDown}\n onMouseMove={this.handleMouseMove}\n onMouseUp={this.handleMouseUp}\n getPercent={this.getPercent}\n stepForward={this.stepForward}\n stepBack={this.stepBack}\n >\n <LoadProgressBar\n buffered={buffered}\n currentTime={time}\n duration={duration}\n />\n <MouseTimeDisplay duration={duration} mouseTime={mouseTime} />\n <PlayProgressBar currentTime={time} duration={duration} />\n </Slider>\n );\n }\n}\n\nSeekBar.propTypes = propTypes;\nSeekBar.displayName = 'SeekBar';\n","import PropTypes from 'prop-types';\nimport React, { Component } from 'react';\nimport classNames from 'classnames';\n\nimport * as Dom from '../../utils/dom';\nimport SeekBar from './SeekBar';\n\nconst propTypes = {\n player: PropTypes.object,\n className: PropTypes.string\n};\n\nexport default class ProgressControl extends Component {\n constructor(props, context) {\n super(props, context);\n\n this.state = {\n mouseTime: {\n time: null,\n position: 0\n }\n };\n\n this.handleMouseMoveThrottle = this.handleMouseMove.bind(this);\n }\n\n handleMouseMove(event) {\n if (!event.pageX) {\n return;\n }\n const {\n player: { duration }\n } = this.props;\n const node = this.seekBar;\n const newTime = Dom.getPointerPosition(node, event).x * duration;\n const position = event.pageX - Dom.findElPosition(node).left;\n\n this.setState({\n mouseTime: {\n time: newTime,\n position\n }\n });\n }\n\n render() {\n const { className } = this.props;\n return (\n <div\n onMouseMove={this.handleMouseMoveThrottle}\n className={classNames(\n 'video-react-new-progress-control video-react-new-control',\n className\n )}\n >\n <SeekBar\n mouseTime={this.state.mouseTime}\n ref={c => {\n this.seekBar = c;\n }}\n {...this.props}\n />\n </div>\n );\n }\n}\n\nProgressControl.propTypes = propTypes;\nProgressControl.displayName = 'ProgressControl';\n","import PropTypes from 'prop-types';\nimport React, { Component } from 'react';\nimport classNames from 'classnames';\n\nconst propTypes = {\n actions: PropTypes.object,\n player: PropTypes.object,\n className: PropTypes.string\n};\n\nexport default class PlayToggle extends Component {\n constructor(props, context) {\n super(props, context);\n this.handleClick = this.handleClick.bind(this);\n }\n\n handleClick() {\n const { actions, player } = this.props;\n if (player.paused) {\n actions.play();\n } else {\n actions.pause();\n }\n }\n\n render() {\n const { player, className } = this.props;\n const controlText = player.paused ? 'Play' : 'Pause';\n\n return (\n <button\n ref={(c) => {\n this.button = c;\n }}\n className={classNames(className, {\n 'video-react-new-play-control': true,\n 'video-react-new-control': true,\n 'video-react-new-button': true,\n 'video-react-new-paused': player.paused,\n 'video-react-new-playing': !player.paused\n })}\n type=\"button\"\n tabIndex=\"0\"\n onClick={this.handleClick}\n >\n <span className=\"video-react-new-control-text\">{controlText}</span>\n </button>\n );\n }\n}\n\nPlayToggle.propTypes = propTypes;\nPlayToggle.displayName = 'PlayToggle';\n","import PropTypes from 'prop-types';\nimport React, { Component } from 'react';\n\nconst propTypes = {\n actions: PropTypes.object,\n className: PropTypes.string,\n seconds: PropTypes.oneOf([5, 10, 30])\n};\n\nconst defaultProps = {\n seconds: 10\n};\n\nexport default (mode) => {\n class ForwardReplayControl extends Component {\n constructor(props, context) {\n super(props, context);\n this.handleClick = this.handleClick.bind(this);\n }\n\n handleClick() {\n const { actions, seconds } = this.props;\n // Depends mode to implement different actions\n if (mode === 'forward') {\n actions.forward(seconds);\n } else {\n actions.replay(seconds);\n }\n }\n\n render() {\n const { seconds, className } = this.props;\n const classNames = [\n 'video-react-new-control',\n 'video-react-new-button',\n 'video-react-new-icon'\n ];\n classNames.push(\n `video-react-new-icon-${mode}-${seconds}`,\n `video-react-new-${mode}-control`\n );\n if (className) {\n classNames.push(className);\n }\n return (\n <button\n ref={(c) => {\n this.button = c;\n }}\n className={classNames.join(' ')}\n type=\"button\"\n onClick={this.handleClick}\n >\n <span className=\"video-react-new-control-text\">{`${mode} ${seconds} seconds`}</span>\n </button>\n );\n }\n }\n\n ForwardReplayControl.propTypes = propTypes;\n ForwardReplayControl.defaultProps = defaultProps;\n return ForwardReplayControl;\n};\n","import ForwardReplayControl from './ForwardReplayControl';\n\n// Pass mode into parent function\nconst ForwardControl = ForwardReplayControl('forward');\n\nForwardControl.displayName = 'ForwardControl';\nexport default ForwardControl;\n","import ForwardReplayControl from './ForwardReplayControl';\n\n// Pass mode into parent function\nconst ReplayControl = ForwardReplayControl('replay');\nReplayControl.displayName = 'ReplayControl';\n\nexport default ReplayControl;\n","import PropTypes from 'prop-types';\nimport React, { Component } from 'react';\nimport classNames from 'classnames';\n\nconst propTypes = {\n actions: PropTypes.object,\n player: PropTypes.object,\n className: PropTypes.string\n};\n\nexport default class FullscreenToggle extends Component {\n constructor(props, context) {\n super(props, context);\n\n this.handleClick = this.handleClick.bind(this);\n }\n\n handleClick() {\n const { player, actions } = this.props;\n actions.toggleFullscreen(player);\n }\n\n render() {\n const { player, className } = this.props;\n return (\n <button\n className={classNames(\n className,\n {\n 'video-react-new-icon-fullscreen-exit': player.isFullscreen,\n 'video-react-new-icon-fullscreen': !player.isFullscreen\n },\n 'video-react-new-fullscreen-control video-react-new-control video-react-new-button video-react-new-icon'\n )}\n ref={(c) => {\n this.button = c;\n }}\n type=\"button\"\n tabIndex=\"0\"\n onClick={this.handleClick}\n >\n <span className=\"video-react-new-control-text\">Non-Fullscreen</span>\n </button>\n );\n }\n}\n\nFullscreenToggle.propTypes = propTypes;\nFullscreenToggle.displayName = 'FullscreenToggle';\n","import PropTypes from 'prop-types';\nimport React from 'react';\nimport classNames from 'classnames';\n\nimport { formatTime } from '../../utils';\n\nconst propTypes = {\n player: PropTypes.object,\n className: PropTypes.string\n};\n\nfunction RemainingTimeDisplay({\n player: { currentTime, duration },\n className\n}) {\n const remainingTime = duration - currentTime;\n const formattedTime = formatTime(remainingTime);\n return (\n <div\n className={classNames(\n 'video-react-new-remaining-time video-react-new-time-control video-react-new-control',\n className\n )}\n >\n <div className=\"video-react-new-remaining-time-display\" aria-live=\"off\">\n <span className=\"video-react-new-control-text\">Remaining Time </span>\n {`-${formattedTime}`}\n </div>\n </div>\n );\n}\n\nRemainingTimeDisplay.propTypes = propTypes;\nRemainingTimeDisplay.displayName = 'RemainingTimeDisplay';\n\nexport default RemainingTimeDisplay;\n","import PropTypes from 'prop-types';\nimport React from 'react';\nimport classNames from 'classnames';\n\nimport { formatTime } from '../../utils';\n\nconst propTypes = {\n player: PropTypes.object,\n className: PropTypes.string\n};\n\nfunction CurrentTimeDisplay({ player: { currentTime, duration }, className }) {\n const formattedTime = formatTime(currentTime, duration);\n return (\n <div\n className={classNames(\n 'video-react-new-current-time video-react-new-time-control video-react-new-control',\n className\n )}\n >\n <div className=\"video-react-new-current-time-display\" aria-live=\"off\">\n <span className=\"video-react-new-control-text\">Current Time </span>\n {formattedTime}\n </div>\n </div>\n );\n}\n\nCurrentTimeDisplay.propTypes = propTypes;\nCurrentTimeDisplay.displayName = 'CurrentTimeDisplay';\n\nexport default CurrentTimeDisplay;\n","import PropTypes from 'prop-types';\nimport React from 'react';\nimport classNames from 'classnames';\n\nimport { formatTime } from '../../utils';\n\nconst propTypes = {\n player: PropTypes.object,\n className: PropTypes.string\n};\n\nfunction DurationDisplay({ player: { duration }, className }) {\n const formattedTime = formatTime(duration);\n return (\n <div\n className={classNames(\n className,\n 'video-react-new-duration video-react-new-time-control video-react-new-control'\n )}\n >\n <div className=\"video-react-new-duration-display\" aria-live=\"off\">\n <span className=\"video-react-new-control-text\">Duration Time </span>\n {formattedTime}\n </div>\n </div>\n );\n}\n\nDurationDisplay.propTypes = propTypes;\nDurationDisplay.displayName = 'DurationDisplay';\n\nexport default DurationDisplay;\n","import PropTypes from 'prop-types';\nimport React from 'react';\nimport classNames from 'classnames';\n\nconst propTypes = {\n separator: PropTypes.string,\n className: PropTypes.string\n};\n\nexport default function TimeDivider({ separator, className }) {\n const separatorText = separator || '/';\n return (\n <div\n className={classNames(\n 'video-react-new-time-control video-react-new-time-divider',\n className\n )}\n dir=\"ltr\"\n >\n <div>\n <span>{separatorText}</span>\n </div>\n </div>\n );\n}\n\nTimeDivider.propTypes = propTypes;\nTimeDivider.displayName = 'TimeDivider';\n","import PropTypes from 'prop-types';\nimport React, { Component } from 'react';\nimport classNames from 'classnames';\n\nconst propTypes = {\n tagName: PropTypes.string,\n onClick: PropTypes.func.isRequired,\n onFocus: PropTypes.func,\n onBlur: PropTypes.func,\n className: PropTypes.string\n};\n\nconst defaultProps = {\n tagName: 'div'\n};\n\nexport default class ClickableComponent extends Component {\n constructor(props, context) {\n super(props, context);\n\n this.handleClick = this.handleClick.bind(this);\n this.handleFocus = this.handleFocus.bind(this);\n this.handleBlur = this.handleBlur.bind(this);\n this.handleKeypress = this.handleKeypress.bind(this);\n }\n\n componentWillUnmount(e) {\n this.handleBlur(e);\n }\n\n 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 handleClick(event) {\n const { onClick } = this.props;\n onClick(event);\n }\n\n handleFocus(e) {\n document.addEventListener('keydown', this.handleKeypress);\n if (this.props.onFocus) {\n this.props.onFocus(e);\n }\n }\n\n handleBlur(e) {\n document.removeEventListener('keydown', this.handleKeypress);\n if (this.props.onBlur) {\n this.props.onBlur(e);\n }\n }\n\n render() {\n const Tag = this.props.tagName;\n const props = { ...this.props };\n delete props.tagName;\n delete props.className;\n return (\n <Tag\n className={classNames(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 }\n}\n\nClickableComponent.propTypes = propTypes;\nClickableComponent.defaultProps = defaultProps;\nClickableComponent.displayName = 'ClickableComponent';\n","import PropTypes from 'prop-types';\nimport React, { Component } from 'react';\n\nconst propTypes = {\n player: PropTypes.object,\n children: PropTypes.any\n};\n\nexport default class Popup extends Component {\n constructor(props, context) {\n super(props, context);\n\n this.handleClick = this.handleClick.bind(this);\n }\n\n handleClick(event) {\n event.preventDefault();\n // event.stopPropagation();\n }\n\n render() {\n const { children } = this.props;\n return (\n <div className=\"video-react-new-menu\" onClick={this.handleClick}>\n <div className=\"video-react-new-menu-content\">{children}</div>\n </div>\n );\n }\n}\n\nPopup.propTypes = propTypes;\nPopup.displayName = 'Popup';\n","import PropTypes from 'prop-types';\nimport React from 'react';\nimport classNames from 'classnames';\nimport ClickableComponent from '../ClickableComponent';\nimport Popup from './Popup';\n\nconst propTypes = {\n inline: PropTypes.bool,\n onClick: PropTypes.func.isRequired,\n onFocus: PropTypes.func,\n onBlur: PropTypes.func,\n className: PropTypes.string\n};\n\nconst defaultProps = {\n inline: true\n};\n\nexport default function PopupButton(props) {\n const { inline, className } = props;\n const ps = { ...props };\n delete ps.children;\n delete ps.inline;\n delete ps.className;\n return (\n <ClickableComponent\n className={classNames(\n className,\n {\n 'video-react-new-menu-button-inline': !!inline,\n 'video-react-new-menu-button-popup': !inline\n },\n 'video-react-new-control video-react-new-button video-react-new-menu-button'\n )}\n {...ps}\n >\n <Popup {...props} />\n </ClickableComponent>\n );\n}\n\nPopupButton.propTypes = propTypes;\nPopupButton.defaultProps = defaultProps;\nPopupButton.displayName = 'PopupButton';\n","import PropTypes from 'prop-types';\nimport React from 'react';\nimport classNames from 'classnames';\n\nconst propTypes = {\n percentage: PropTypes.string,\n vertical: PropTypes.bool,\n className: PropTypes.string\n};\n\nconst defaultProps = {\n percentage: '100%',\n vertical: false\n};\n\nfunction VolumeLevel({ percentage, vertical, className }) {\n const style = {};\n if (vertical) {\n style.height = percentage;\n } else {\n style.width = percentage;\n }\n\n return (\n <div\n className={classNames(className, 'video-react-new-volume-level')}\n style={style}\n >\n <span className=\"video-react-new-control-text\" />\n </div>\n );\n}\n\nVolumeLevel.propTypes = propTypes;\nVolumeLevel.defaultProps = defaultProps;\nVolumeLevel.displayName = 'VolumeLevel';\nexport default VolumeLevel;\n","import PropTypes from 'prop-types';\nimport React, { Component } from 'react';\nimport classNames from 'classnames';\n\nimport Slider from '../Slider';\nimport VolumeLevel from './VolumeLevel';\n\nconst propTypes = {\n actions: PropTypes.object,\n player: PropTypes.object,\n className: PropTypes.string,\n onFocus: PropTypes.func,\n onBlur: PropTypes.func\n};\n\nclass VolumeBar extends Component {\n constructor(props, context) {\n super(props, context);\n\n this.state = {\n percentage: '0%'\n };\n\n this.handleMouseMove = this.handleMouseMove.bind(this);\n this.handlePercentageChange = this.handlePercentageChange.bind(this);\n this.checkMuted = this.checkMuted.bind(this);\n this.getPercent = this.getPercent.bind(this);\n this.stepForward = this.stepForward.bind(this);\n this.stepBack = this.stepBack.bind(this);\n this.handleFocus = this.handleFocus.bind(this);\n this.handleBlur = this.handleBlur.bind(this);\n this.handleClick = this.handleClick.bind(this);\n }\n\n componentDidMount() {}\n\n getPercent() {\n const { player } = this.props;\n if (player.muted) {\n return 0;\n }\n return player.volume;\n }\n\n checkMuted() {\n const { player, actions } = this.props;\n if (player.muted) {\n actions.mute(false);\n }\n }\n\n handleMouseMove(event) {\n const { actions } = this.props;\n this.checkMuted();\n const distance = this.slider.calculateDistance(event);\n actions.changeVolume(distance);\n }\n\n stepForward() {\n const { player, actions } = this.props;\n this.checkMuted();\n actions.changeVolume(player.volume + 0.1);\n }\n\n stepBack() {\n const { player, actions } = this.props;\n this.checkMuted();\n actions.changeVolume(player.volume - 0.1);\n }\n\n handleFocus(e) {\n if (this.props.onFocus) {\n this.props.onFocus(e);\n }\n }\n\n handleBlur(e) {\n if (this.props.onBlur) {\n this.props.onBlur(e);\n }\n }\n\n handlePercentageChange(percentage) {\n if (percentage !== this.state.percentage) {\n this.setState({\n percentage\n });\n }\n }\n\n handleClick(event) {\n event.stopPropagation();\n }\n\n render() {\n const { player, className } = this.props;\n\n const volume = (player.volume * 100).toFixed(2);\n return (\n <Slider\n ref={(c) => {\n this.slider = c;\n }}\n label=\"volume level\"\n valuenow={volume}\n valuetext={`${volume}%`}\n onMouseMove={this.handleMouseMove}\n onFocus={this.handleFocus}\n onBlur={this.handleBlur}\n onClick={this.handleClick}\n sliderActive={this.handleFocus}\n sliderInactive={this.handleBlur}\n getPercent={this.getPercent}\n onPercentageChange={this.handlePercentageChange}\n stepForward={this.stepForward}\n stepBack={this.stepBack}\n {...this.props}\n className={classNames(\n className,\n 'video-react-new-volume-bar video-react-new-slider-bar'\n )}\n >\n <VolumeLevel {...this.props} />\n </Slider>\n );\n }\n}\n\nVolumeBar.propTypes = propTypes;\nVolumeBar.displayName = 'VolumeBar';\n\nexport default VolumeBar;\n","import PropTypes from 'prop-types';\nimport React, { Component } from 'react';\nimport classNames from 'classnames';\n\nimport PopupButton from '../popup/PopupButton';\nimport VolumeBar from '../volume-control/VolumeBar';\n\nconst propTypes = {\n player: PropTypes.object,\n actions: PropTypes.object,\n vertical: PropTypes.bool,\n className: PropTypes.string,\n alwaysShowVolume: PropTypes.bool\n};\n\nconst defaultProps = {\n vertical: false\n};\n\nclass VolumeMenuButton extends Component {\n constructor(props, context) {\n super(props, context);\n\n this.state = {\n active: false\n };\n\n this.handleClick = this.handleClick.bind(this);\n this.handleFocus = this.handleFocus.bind(this);\n this.handleBlur = this.handleBlur.bind(this);\n }\n\n get volumeLevel() {\n const {\n player: { volume, muted }\n } = this.props;\n let level = 3;\n if (volume === 0 || muted) {\n level = 0;\n } else if (volume < 0.33) {\n level = 1;\n } else if (volume < 0.67) {\n level = 2;\n }\n return level;\n }\n\n handleClick() {\n const { player, actions } = this.props;\n actions.mute(!player.muted);\n }\n\n handleFocus() {\n this.setState({\n active: true\n });\n }\n\n handleBlur() {\n this.setState({\n active: false\n });\n }\n\n render() {\n const { vertical, player, className } = this.props;\n const inline = !vertical;\n const level = this.volumeLevel;\n return (\n <PopupButton\n className={classNames(\n className,\n {\n 'video-react-new-volume-menu-button-vertical': vertical,\n 'video-react-new-volume-menu-button-horizontal': !vertical,\n 'video-react-new-vol-muted': player.muted,\n 'video-react-new-vol-0': level === 0 && !player.muted,\n 'video-react-new-vol-1': level === 1,\n 'video-react-new-vol-2': level === 2,\n 'video-react-new-vol-3': level === 3,\n 'video-react-new-slider-active':\n this.props.alwaysShowVolume || this.state.active,\n 'video-react-new-lock-showing':\n this.props.alwaysShowVolume || this.state.active\n },\n 'video-react-new-volume-menu-button'\n )}\n onClick={this.handleClick}\n inline={inline}\n >\n <VolumeBar\n onFocus={this.handleFocus}\n onBlur={this.handleBlur}\n {...this.props}\n />\n </PopupButton>\n );\n }\n}\n\nVolumeMenuButton.propTypes = propTypes;\nVolumeMenuButton.defaultProps = defaultProps;\nVolumeMenuButton.displayName = 'VolumeMenuButton';\nexport default VolumeMenuButton;\n","import PropTypes from 'prop-types';\nimport React, { Component } from 'react';\n\nconst propTypes = {\n children: PropTypes.any\n};\n\nexport default class Menu extends Component {\n constructor(props, context) {\n super(props, context);\n\n this.handleClick = this.handleClick.bind(this);\n }\n\n handleClick(event) {\n event.preventDefault();\n // event.stopPropagation();\n }\n\n render() {\n return (\n <div\n className=\"video-react-new-menu video-react-new-lock-showing\"\n role=\"presentation\"\n onClick={this.handleClick}\n >\n <ul className=\"video-react-new-menu-content\">{this.props.children}</ul>\n </div>\n );\n }\n}\n\nMenu.propTypes = propTypes;\nMenu.displayName = 'Menu';\n","import PropTypes from 'prop-types';\nimport React, { Component } from 'react';\nimport classNames from 'classnames';\n\nconst propTypes = {\n item: PropTypes.object,\n index: PropTypes.number,\n activateIndex: PropTypes.number,\n onSelectItem: PropTypes.func\n};\n\nexport default class MenuItem extends Component {\n constructor(props, context) {\n super(props, context);\n\n this.handleClick = this.handleClick.bind(this);\n }\n\n handleClick() {\n const { index, onSelectItem } = this.props;\n onSelectItem(index);\n }\n\n render() {\n const { item, index, activateIndex } = this.props;\n return (\n <li\n className={classNames({\n 'video-react-new-menu-item': true,\n 'video-react-new-selected': index === activateIndex\n })}\n role=\"menuitem\"\n onClick={this.handleClick}\n >\n {item.label}\n <span className=\"video-react-new-control-text\" />\n </li>\n );\n }\n}\n\nMenuItem.propTypes = propTypes;\nMenuItem.displayName = 'MenuItem';\n","import PropTypes from 'prop-types';\nimport React, { Component } from 'react';\nimport classNames from 'classnames';\nimport Menu from './Menu';\nimport MenuItem from './MenuItem';\nimport ClickableComponent from '../ClickableComponent';\n\nconst propTypes = {\n inline: PropTypes.bool,\n items: PropTypes.array,\n className: PropTypes.string,\n onSelectItem: PropTypes.func,\n children: PropTypes.any,\n selectedIndex: PropTypes.number\n};\n\nexport default class MenuButton extends Component {\n constructor(props, context) {\n super(props, context);\n\n this.state = {\n active: false,\n activateIndex: props.selectedIndex || 0\n };\n\n this.commitSelection = this.commitSelection.bind(this);\n this.activateMenuItem = this.activateMenuItem.bind(this);\n this.handleClick = this.handleClick.bind(this);\n this.renderMenu = this.renderMenu.bind(this);\n this.handleFocus = this.handleFocus.bind(this);\n this.handleBlur = this.handleBlur.bind(this);\n this.handleUpArrow = this.handleUpArrow.bind(this);\n this.handleDownArrow = this.handleDownArrow.bind(this);\n this.handleEscape = this.handleEscape.bind(this);\n this.handleReturn = this.handleReturn.bind(this);\n this.handleTab = this.handleTab.bind(this);\n this.handleKeyPress = this.handleKeyPress.bind(this);\n this.handleSelectItem = this.handleSelectItem.bind(this);\n this.handleIndexChange = this.handleIndexChange.bind(this);\n }\n\n componentDidUpdate(prevProps) {\n if (prevProps.selectedIndex !== this.props.selectedIndex) {\n this.activateMenuItem(this.props.selectedIndex);\n }\n }\n\n commitSelection(index) {\n this.setState({\n activateIndex: index\n });\n this.handleIndexChange(index);\n }\n\n activateMenuItem(index) {\n this.setState({\n activateIndex: index\n });\n this.handleIndexChange(index);\n }\n\n handleIndexChange(index) {\n const { onSelectItem } = this.props;\n onSelectItem(index);\n }\n\n handleClick() {\n this.setState(prevState => ({\n active: !prevState.active\n }));\n }\n\n handleFocus() {\n document.addEventListener('keydown', this.handleKeyPress);\n }\n\n handleBlur() {\n this.setState({\n active: false\n });\n document.removeEventListener('keydown', this.handleKeyPress);\n }\n\n handleUpArrow(e) {\n const { items } = this.props;\n if (this.state.active) {\n e.preventDefault();\n let newIndex = this.state.activateIndex - 1;\n if (newIndex < 0) {\n newIndex = items.length ? items.length - 1 : 0;\n }\n this.activateMenuItem(newIndex);\n }\n }\n\n handleDownArrow(e) {\n const { items } = this.props;\n if (this.state.active) {\n e.preventDefault();\n let newIndex = this.state.activateIndex + 1;\n if (newIndex >= items.length) {\n newIndex = 0;\n }\n this.activateMenuItem(newIndex);\n }\n }\n\n handleTab(e) {\n if (this.state.active) {\n e.preventDefault();\n this.commitSelection(this.state.activateIndex);\n }\n }\n\n handleReturn(e) {\n e.preventDefault();\n if (this.state.active) {\n this.commitSelection(this.state.activateIndex);\n } else {\n this.setState({\n active: true\n });\n }\n }\n\n handleEscape() {\n this.setState({\n active: false,\n activateIndex: 0\n });\n }\n\n handleKeyPress(event) {\n // Escape (27) key\n if (event.which === 27) {\n this.handleEscape(event);\n } else if (event.which === 9) {\n // Tab (9) key\n this.handleTab(event);\n } else if (event.which === 13) {\n // Enter (13) key\n this.handleReturn(event);\n } else if (event.which === 38) {\n // Up (38) key\n this.handleUpArrow(event);\n } else if (event.which === 40) {\n // Down (40) key press\n this.handleDownArrow(event);\n }\n }\n\n handleSelectItem(i) {\n this.commitSelection(i);\n }\n\n renderMenu() {\n if (!this.state.active) {\n return null;\n }\n\n const { items } = this.props;\n return (\n <Menu>\n {items.map((item, i) => (\n <MenuItem\n item={item}\n index={i}\n onSelectItem={this.handleSelectItem}\n activateIndex={this.state.activateIndex}\n key={`item-${i++}`}\n />\n ))}\n </Menu>\n );\n }\n\n render() {\n const { inline, className } = this.props;\n\n return (\n <ClickableComponent\n className={classNames(\n className,\n {\n 'video-react-new-menu-button-inline': !!inline,\n 'video-react-new-menu-button-popup': !inline,\n 'video-react-new-menu-button-active': this.state.active\n },\n 'video-react-new-control video-react-new-button video-react-new-menu-button'\n )}\n role=\"button\"\n tabIndex=\"0\"\n ref={(c) => {\n this.menuButton = c;\n }}\n onClick={this.handleClick}\n onFocus={this.handleFocus}\n onBlur={this.handleBlur}\n >\n {this.props.children}\n {this.renderMenu()}\n </ClickableComponent>\n );\n }\n}\n\nMenuButton.propTypes = propTypes;\nMenuButton.displayName = 'MenuButton';\n","import PropTypes from 'prop-types';\nimport React, { Component } from 'react';\nimport classNames from 'classnames';\nimport MenuButton from '../menu/MenuButton';\n\nconst propTypes = {\n player: PropTypes.object,\n actions: PropTypes.object,\n rates: PropTypes.array,\n className: PropTypes.string\n};\n\nconst defaultProps = {\n rates: [2, 1.5, 1.25, 1, 0.5, 0.25]\n};\n\nclass PlaybackRateMenuButton extends Component {\n constructor(props, context) {\n super(props, context);\n\n this.handleSelectItem = this.handleSelectItem.bind(this);\n }\n\n handleSelectItem(index) {\n const { rates, actions } = this.props;\n if (index >= 0 && index < rates.length) {\n actions.changeRate(rates[index]);\n }\n }\n\n render() {\n const { rates, player } = this.props;\n const items = rates.map(rate => ({\n label: `${rate}x`,\n value: rate\n }));\n const selectedIndex = rates.indexOf(player.playbackRate) || 0;\n\n return (\n <MenuButton\n className={classNames(\n 'video-react-new-playback-rate',\n this.props.className\n )}\n onSelectItem={this.handleSelectItem}\n items={items}\n selectedIndex={selectedIndex}\n >\n <span className=\"video-react-new-control-text\">Playback Rate</span>\n <div className=\"video-react-new-playback-rate-value\">\n {`${player.playbackRate.toFixed(2)}x`}\n </div>\n </MenuButton>\n );\n }\n}\n\nPlaybackRateMenuButton.propTypes = propTypes;\nPlaybackRateMenuButton.defaultProps = defaultProps;\nPlaybackRateMenuButton.displayName = 'PlaybackRateMenuButton';\nexport default PlaybackRateMenuButton;\n","import PropTypes from 'prop-types';\nimport React, { Component } from 'react';\nimport classNames from 'classnames';\n\nimport ProgressControl from './ProgressControl';\nimport PlayToggle from './PlayToggle';\nimport ForwardControl from './ForwardControl';\nimport ReplayControl from './ReplayControl';\nimport FullscreenToggle from './FullscreenToggle';\nimport RemainingTimeDisplay from '../time-controls/RemainingTimeDisplay';\nimport CurrentTimeDisplay from '../time-controls/CurrentTimeDisplay';\nimport DurationDisplay from '../time-controls/DurationDisplay';\nimport TimeDivider from '../time-controls/TimeDivider';\nimport VolumeMenuButton from './VolumeMenuButton';\nimport PlaybackRateMenuButton from './PlaybackRateMenuButton';\nimport { mergeAndSortChildren } from '../../utils';\n\nconst propTypes = {\n children: PropTypes.any,\n autoHide: PropTypes.bool,\n autoHideTime: PropTypes.number, // used in Player\n disableDefaultControls: PropTypes.bool,\n disableCompletely: PropTypes.bool,\n className: PropTypes.string\n};\n\nconst defaultProps = {\n autoHide: true,\n disableCompletely: false\n};\n\nexport default class ControlBar extends Component {\n constructor(props) {\n super(props);\n\n this.getDefaultChildren = this.getDefaultChildren.bind(this);\n this.getFullChildren = this.getFullChildren.bind(this);\n }\n\n getDefaultChildren() {\n return [\n <PlayToggle key=\"play-toggle\" order={1} />,\n <VolumeMenuButton key=\"volume-menu-button\" order={4} />,\n <CurrentTimeDisplay key=\"current-time-display\" order={5.1} />,\n <TimeDivider key=\"time-divider\" order={5.2} />,\n <DurationDisplay key=\"duration-display\" order={5.3} />,\n <ProgressControl key=\"progress-control\" order={6} />,\n <FullscreenToggle key=\"fullscreen-toggle\" order={8} />\n ];\n }\n\n getFullChildren() {\n return [\n <PlayToggle key=\"play-toggle\" order={1} />,\n <ReplayControl key=\"replay-control\" order={2} />,\n <ForwardControl key=\"forward-control\" order={3} />,\n <VolumeMenuButton key=\"volume-menu-button\" order={4} />,\n <CurrentTimeDisplay key=\"current-time-display\" order={5} />,\n <TimeDivider key=\"time-divider\" order={6} />,\n <DurationDisplay key=\"duration-display\" order={7} />,\n <ProgressControl key=\"progress-control\" order={8} />,\n <RemainingTimeDisplay key=\"remaining-time-display\" order={9} />,\n <PlaybackRateMenuButton\n rates={[1, 1.25, 1.5, 2]}\n key=\"playback-rate\"\n order={10}\n />,\n <FullscreenToggle key=\"fullscreen-toggle\" order={11} />\n ];\n }\n\n getChildren() {\n const children = React.Children.toArray(this.props.children);\n const defaultChildren = this.props.disableDefaultControls\n ? []\n : this.getDefaultChildren();\n const { className, ...parentProps } = this.props; // remove className\n return mergeAndSortChildren(defaultChildren, children, parentProps);\n }\n\n render() {\n const { autoHide, className, disableCompletely } = this.props;\n const children = this.getChildren();\n\n return disableCompletely ? null : (\n <div\n className={classNames(\n 'video-react-new-control-bar',\n {\n 'video-react-new-control-bar-auto-hide': autoHide\n },\n className\n )}\n >\n {children}\n </div>\n );\n }\n}\n\nControlBar.propTypes = propTypes;\nControlBar.defaultProps = defaultProps;\nControlBar.displayName = 'ControlBar';\n","const USER_AGENT = typeof window !== 'undefined' && window.navigator\n ? window.navigator.userAgent\n : '';\n// const webkitVersionMap = (/AppleWebKit\\/([\\d.]+)/i).exec(USER_AGENT);\n// const appleWebkitVersion = webkitVersionMap ? parseFloat(webkitVersionMap.pop()) : null;\n\n/*\n * Device is an iPhone\n *\n * @type {Boolean}\n * @constant\n * @private\n */\nexport const IS_IPAD = /iPad/i.test(USER_AGENT);\n\n// The Facebook app's UIWebView identifies as both an iPhone and iPad, so\n// to identify iPhones, we need to exclude iPads.\n// http://artsy.github.io/blog/2012/10/18/the-perils-of-ios-user-agent-sniffing/\nexport const IS_IPHONE = /iPhone/i.test(USER_AGENT) && !IS_IPAD;\nexport const IS_IPOD = /iPod/i.test(USER_AGENT);\nexport const IS_IOS = IS_IPHONE || IS_IPAD || IS_IPOD;\n","import PropTypes from 'prop-types';\nimport React, { Component } from 'react';\nimport classNames from 'classnames';\n\nimport Manager from '../Manager';\n\nimport BigPlayButton from './BigPlayButton';\nimport LoadingSpinner from './LoadingSpinner';\nimport PosterImage from './PosterImage';\nimport Video from './Video';\nimport Bezel from './Bezel';\nimport Shortcut from './Shortcut';\nimport ControlBar from './control-bar/ControlBar';\n\nimport * as browser from '../utils/browser';\nimport { focusNode } from '../utils/dom';\nimport { mergeAndSortChildren, isVideoChild, throttle } from '../utils';\nimport fullscreen from '../utils/fullscreen';\n\nconst propTypes = {\n children: PropTypes.any,\n\n width: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\n height: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\n fluid: PropTypes.bool,\n muted: PropTypes.bool,\n playsInline: PropTypes.bool,\n aspectRatio: PropTypes.string,\n className: PropTypes.string,\n videoId: PropTypes.string,\n\n startTime: PropTypes.number,\n loop: PropTypes.bool,\n autoPlay: PropTypes.bool,\n src: PropTypes.string,\n poster: PropTypes.string,\n preload: PropTypes.oneOf(['auto', 'metadata', 'none']),\n\n onLoadStart: PropTypes.func,\n onWaiting: PropTypes.func,\n onCanPlay: PropTypes.func,\n onCanPlayThrough: PropTypes.func,\n onPlaying: PropTypes.func,\n onEnded: PropTypes.func,\n onSeeking: PropTypes.func,\n onSeeked: PropTypes.func,\n onPlay: PropTypes.func,\n onPause: PropTypes.func,\n onProgress: PropTypes.func,\n onDurationChange: PropTypes.func,\n onError: PropTypes.func,\n onSuspend: PropTypes.func,\n onAbort: PropTypes.func,\n onEmptied: PropTypes.func,\n onStalled: PropTypes.func,\n onLoadedMetadata: PropTypes.func,\n onLoadedData: PropTypes.func,\n onTimeUpdate: PropTypes.func,\n onRateChange: PropTypes.func,\n onVolumeChange: PropTypes.func,\n\n store: PropTypes.object\n};\n\nconst defaultProps = {\n fluid: true,\n muted: false,\n playsInline: false,\n preload: 'auto',\n aspectRatio: 'auto'\n};\n\nexport default class Player extends Component {\n constructor(props) {\n super(props);\n\n this.controlsHideTimer = null;\n\n this.video = null; // the Video component\n this.manager = new Manager(props.store);\n this.actions = this.manager.getActions();\n this.manager.subscribeToPlayerStateChange(\n this.handleStateChange.bind(this)\n );\n\n this.getStyle = this.getStyle.bind(this);\n this.handleResize = this.handleResize.bind(this);\n this.getChildren = this.getChildren.bind(this);\n this.handleMouseMove = throttle(this.handleMouseMove.bind(this), 250);\n this.handleMouseDown = this.handleMouseDown.bind(this);\n this.startControlsTimer = this.startControlsTimer.bind(this);\n this.handleFullScreenChange = this.handleFullScreenChange.bind(this);\n this.handleKeyDown = this.handleKeyDown.bind(this);\n this.handleFocus = this.handleFocus.bind(this);\n this.handleBlur = this.handleBlur.bind(this);\n }\n\n componentDidMount() {\n this.handleResize();\n window.addEventListener('resize', this.handleResize);\n\n fullscreen.addEventListener(this.handleFullScreenChange);\n }\n\n componentWillUnmount() {\n // Remove event listener\n window.removeEventListener('resize', this.handleResize);\n fullscreen.removeEventListener(this.handleFullScreenChange);\n if (this.controlsHideTimer) {\n window.clearTimeout(this.controlsHideTimer);\n }\n }\n\n getDefaultChildren(originalChildren) {\n return [\n <Video\n ref={c => {\n this.video = c;\n this.manager.video = this.video;\n }}\n key=\"video\"\n order={0.0}\n >\n {originalChildren}\n </Video>,\n <PosterImage key=\"poster-image\" order={1.0} />,\n <LoadingSpinner key=\"loading-spinner\" order={2.0} />,\n <Bezel key=\"bezel\" order={3.0} />,\n <BigPlayButton key=\"big-play-button\" order={4.0} />,\n <ControlBar key=\"control-bar\" order={5.0} />,\n <Shortcut key=\"shortcut\" order={99.0} />\n ];\n }\n\n getChildren(props) {\n const {\n className: _, // remove className\n children: originalChildren,\n ...propsWithoutChildren\n } = props;\n const children = React.Children.toArray(this.props.children).filter(\n e => !isVideoChild(e)\n );\n const defaultChildren = this.getDefaultChildren(originalChildren);\n return mergeAndSortChildren(\n defaultChildren,\n children,\n propsWithoutChildren\n );\n }\n\n setWidthOrHeight(style, name, value) {\n let styleVal;\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 = `${value}px`;\n }\n Object.assign(style, {\n [name]: styleVal\n });\n }\n\n getStyle() {\n const {\n fluid,\n aspectRatio: propsAspectRatio,\n height: propsHeight,\n width: propsWidth\n } = this.props;\n const { player } = this.manager.getState();\n const style = {};\n let width;\n let height;\n let aspectRatio;\n\n // The aspect ratio is either used directly or to calculate width and height.\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 = `${player.videoWidth}:${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 }\n\n // Get the ratio as a decimal we can use to calculate dimensions\n const ratioParts = aspectRatio.split(':');\n const 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 = `${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 }\n\n // get redux state\n // { player, operation }\n getState() {\n return this.manager.getState();\n }\n\n // get playback rate\n get playbackRate() {\n return this.video.playbackRate;\n }\n\n // set playback rate\n // speed of video\n set playbackRate(rate) {\n this.video.playbackRate = rate;\n }\n\n get muted() {\n return this.video.muted;\n }\n\n set muted(val) {\n this.video.muted = val;\n }\n\n get volume() {\n return this.video.volume;\n }\n\n set volume(val) {\n this.video.volume = val;\n }\n\n // video width\n get videoWidth() {\n return this.video.videoWidth;\n }\n\n // video height\n get videoHeight() {\n return this.video.videoHeight;\n }\n\n // play the video\n play() {\n this.video.play();\n }\n\n // pause the video\n pause() {\n this.video.pause();\n }\n\n // Change the video source and re-load the video:\n load() {\n this.video.load();\n }\n\n // Add a new text track to the video\n addTextTrack(...args) {\n this.video.addTextTrack(...args);\n }\n\n // Check if your browser can play different types of video:\n canPlayType(...args) {\n this.video.canPlayType(...args);\n }\n\n // seek video by time\n seek(time) {\n this.video.seek(time);\n }\n\n // jump forward x seconds\n forward(seconds) {\n this.video.forward(seconds);\n }\n\n // jump back x seconds\n replay(seconds) {\n this.video.replay(seconds);\n }\n\n // enter or exist full screen\n toggleFullscreen() {\n this.video.toggleFullscreen();\n }\n\n // subscribe to player state change\n subscribeToStateChange(listener) {\n return this.manager.subscribeToPlayerStateChange(listener);\n }\n\n // player resize\n handleResize() {}\n\n handleFullScreenChange(event) {\n if (event.target === this.manager.rootElement) {\n this.actions.handleFullscreenChange(fullscreen.isFullscreen);\n }\n }\n\n handleMouseDown() {\n this.startControlsTimer();\n }\n\n handleMouseMove() {\n this.startControlsTimer();\n }\n\n handleKeyDown() {\n this.startControlsTimer();\n }\n\n startControlsTimer() {\n let controlBarActiveTime = 3000;\n React.Children.forEach(this.props.children, element => {\n if (!React.isValidElement(element) || element.type !== ControlBar) {\n return;\n }\n\n const { autoHideTime } = element.props;\n if (typeof autoHideTime === 'number') {\n controlBarActiveTime = autoHideTime;\n }\n });\n\n this.actions.userActivate(true);\n clearTimeout(this.controlsHideTimer);\n this.controlsHideTimer = setTimeout(() => {\n this.actions.userActivate(false);\n }, controlBarActiveTime);\n }\n\n handleStateChange(state, prevState) {\n if (state.isFullscreen !== prevState.isFullscreen) {\n this.handleResize();\n // focus root when switching fullscreen mode to avoid confusion #276\n focusNode(this.manager.rootElement);\n }\n this.forceUpdate(); // re-render\n }\n\n handleFocus() {\n this.actions.activate(true);\n }\n\n handleBlur() {\n this.actions.activate(false);\n }\n\n render() {\n const { fluid } = this.props;\n const { player } = this.manager.getState();\n const {\n paused,\n hasStarted,\n waiting,\n seeking,\n isFullscreen,\n userActivity\n } = player;\n\n const props = {\n ...this.props,\n player,\n actions: this.actions,\n manager: this.manager,\n store: this.manager.store,\n video: this.video ? this.video.video : null\n };\n const children = this.getChildren(props);\n\n return (\n <div\n className={classNames(\n {\n 'video-react-new-controls-enabled': true,\n 'video-react-new-has-started': hasStarted,\n 'video-react-new-paused': paused,\n 'video-react-new-playing': !paused,\n 'video-react-new-waiting': waiting,\n 'video-react-new-seeking': seeking,\n 'video-react-new-fluid': fluid,\n 'video-react-new-fullscreen': isFullscreen,\n 'video-react-new-user-inactive': !userActivity,\n 'video-react-new-user-active': userActivity,\n 'video-react-new-workinghover': !browser.IS_IOS\n },\n 'video-react-new',\n this.props.className\n )}\n style={this.getStyle()}\n ref={c => {\n this.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 >\n {children}\n </div>\n );\n }\n}\n\nPlayer.propTypes = propTypes;\nPlayer.defaultProps = defaultProps;\nPlayer.displayName = 'Player';\n","import React, { Component } from 'react';\nimport PlaybackRateMenuButton from './PlaybackRateMenuButton';\nimport { deprecatedWarning } from '../../utils';\n\nexport default class PlaybackRate extends Component {\n constructor(props, context) {\n super(props, context);\n\n deprecatedWarning('PlaybackRate', 'PlaybackRateMenuButton');\n }\n\n render() {\n return <PlaybackRateMenuButton {...this.props} />;\n }\n}\n\nPlaybackRate.displayName = 'PlaybackRate';\n","import PropTypes from 'prop-types';\nimport React, { Component } from 'react';\nimport classNames from 'classnames';\nimport MenuButton from '../menu/MenuButton';\n\nconst propTypes = {\n player: PropTypes.object,\n actions: PropTypes.object,\n className: PropTypes.string,\n offMenuText: PropTypes.string,\n showOffMenu: PropTypes.bool,\n kinds: PropTypes.array\n};\n\nconst defaultProps = {\n offMenuText: 'Off',\n showOffMenu: true,\n kinds: ['captions', 'subtitles'] // `kind`s of TextTrack to look for to associate it with this menu.\n};\n\nclass ClosedCaptionButton extends Component {\n constructor(props, context) {\n super(props, context);\n\n this.getTextTrackItems = this.getTextTrackItems.bind(this);\n this.updateState = this.updateState.bind(this);\n this.handleSelectItem = this.handleSelectItem.bind(this);\n\n this.state = this.getTextTrackItems();\n }\n\n componentDidUpdate() {\n this.updateState();\n }\n\n getTextTrackItems() {\n const {\n kinds, player, offMenuText, showOffMenu\n } = this.props;\n const { textTracks, activeTextTrack } = player;\n const textTrackItems = {\n items: [],\n selectedIndex: 0\n };\n const tracks = Array.from(textTracks || []);\n\n if (tracks.length === 0) {\n return textTrackItems;\n }\n\n if (showOffMenu) {\n textTrackItems.items.push({\n label: offMenuText || 'Off',\n value: null\n });\n }\n\n tracks.forEach((textTrack) => {\n // ignore invalid text track kind\n if (kinds.length && !kinds.includes(textTrack.kind)) {\n return;\n }\n\n textTrackItems.items.push({\n label: textTrack.label,\n value: textTrack.language\n });\n });\n\n textTrackItems.selectedIndex = textTrackItems.items.findIndex(\n item => activeTextTrack && activeTextTrack.language === item.value\n );\n\n if (textTrackItems.selectedIndex === -1) {\n textTrackItems.selectedIndex = 0;\n }\n\n return textTrackItems;\n }\n\n updateState() {\n const textTrackItems = this.getTextTrackItems();\n if (\n textTrackItems.selectedIndex !== this.state.selectedIndex\n || !this.textTrackItemsAreEqual(textTrackItems.items, this.state.items)\n ) {\n this.setState(textTrackItems);\n }\n }\n\n textTrackItemsAreEqual(items1, items2) {\n if (items1.length !== items2.length) {\n return false;\n }\n\n for (let i = 0; i < items1.length; i++) {\n if (\n !items2[i]\n || items1[i].label !== items2[i].label\n || items1[i].value !== items2[i].value\n ) {\n return false;\n }\n }\n\n return true;\n }\n\n handleSelectItem(index) {\n const { player, actions, showOffMenu } = this.props;\n const { textTracks } = player;\n\n // For the 'subtitles-off' button, the first condition will never match\n // so all subtitles will be turned off\n Array.from(textTracks).forEach((textTrack, i) => {\n // if it shows the `Off` menu, the first item is `Off`\n if (index === (showOffMenu ? i + 1 : i)) {\n textTrack.mode = 'showing';\n actions.activateTextTrack(textTrack);\n } else {\n textTrack.mode = 'hidden';\n }\n });\n }\n\n render() {\n const { items, selectedIndex } = this.state;\n\n return (\n <MenuButton\n className={classNames(\n 'video-react-new-closed-caption',\n this.props.className\n )}\n onSelectItem={this.handleSelectItem}\n items={items}\n selectedIndex={selectedIndex}\n >\n <span className=\"video-react-new-control-text\">Closed Caption</span>\n </MenuButton>\n );\n }\n}\n\nClosedCaptionButton.propTypes = propTypes;\nClosedCaptionButton.defaultProps = defaultProps;\nClosedCaptionButton.displayName = 'ClosedCaptionButton';\nexport default ClosedCaptionButton;\n"],"names":["LOAD_START","CAN_PLAY","WAITING","CAN_PLAY_THROUGH","PLAYING","PLAY","PAUSE","END","SEEKING","SEEKED","SEEKING_TIME","END_SEEKING","DURATION_CHANGE","TIME_UPDATE","VOLUME_CHANGE","PROGRESS_CHANGE","RATE_CHANGE","SUSPEND","ABORT","EMPTIED","STALLED","LOADED_META_DATA","LOADED_DATA","RESIZE","ERROR","ACTIVATE_TEXT_TRACK","handleLoadStart","videoProps","type","handleCanPlay","handleWaiting","handleCanPlayThrough","handlePlaying","handlePlay","handlePause","handleEnd","handleSeeking","handleSeeked","handleDurationChange","handleTimeUpdate","handleVolumeChange","handleProgressChange","handleRateChange","handleSuspend","handleAbort","handleEmptied","handleStalled","handleLoadedMetaData","handleLoadedData","handleResize","handleError","handleSeekingTime","time","handleEndSeeking","activateTextTrack","textTrack","Fullscreen","request","elm","requestFullscreen","webkitRequestFullscreen","mozRequestFullScreen","msRequestFullscreen","exit","document","exitFullscreen","webkitExitFullscreen","mozCancelFullScreen","msExitFullscreen","addEventListener","handler","removeEventListener","fullscreenElement","webkitFullscreenElement","mozFullScreenElement","msFullscreenElement","fullscreenEnabled","webkitFullscreenEnabled","mozFullScreenEnabled","msFullscreenEnabled","OPERATE","FULLSCREEN_CHANGE","PLAYER_ACTIVATE","USER_ACTIVATE","handleFullscreenChange","isFullscreen","activate","activity","userActivate","play","operation","action","source","video","pause","togglePlay","seek","forward","seconds","replay","changeRate","rate","playbackRate","changeVolume","volume","v","mute","muted","toggleFullscreen","player","fullscreen","enabled","rootElement","initialState","currentSrc","duration","currentTime","seekingTime","buffered","waiting","seeking","paused","autoPaused","ended","readyState","networkState","videoWidth","videoHeight","hasStarted","userActivity","isActive","activeTextTrack","state","error","count","playerReducer","operationReducer","Manager","store","createStore","reducer","getActions","manager","dispatch","actions","playerActions","videoActions","bindActionCreator","actionCreator","bindAction","apply","arguments","Object","keys","filter","key","reduce","boundActions","getState","subscribeToStateChange","listener","bind","prevState","handleChange","prevStateCopy","subscribe","subscribeToOperationStateChange","subscribeToPlayerStateChange","propTypes","PropTypes","object","position","string","className","defaultProps","BigPlayButton","props","context","handleClick","componentDidMount","render","React","classNames","Component","displayName","LoadingSpinner","poster","PosterImage","backgroundImage","isNaN","Number","value","formatTime","guide","s","Math","floor","m","h","gm","gh","Infinity","isVideoChild","c","find","elements","func","isTypeEqual","component1","component2","type1","type2","mergeAndSortChildren","defaultChildren","_children","_parentProps","defaultOrder","children","Children","toArray","order","parentProps","e","disabled","concat","component","map","element","defaultComponent","cloneElement","sort","a","b","deprecatedWarning","oldMethodCall","newMethodCall","console","warn","throttle","callback","limit","wait","setTimeout","mediaProperties","any","startTime","number","loop","bool","autoPlay","playsInline","src","preload","oneOf","crossOrigin","onLoadStart","onWaiting","onCanPlay","onCanPlayThrough","onPlaying","onEnded","onSeeking","onSeeked","onPlay","onPause","onProgress","onDurationChange","onError","onSuspend","onAbort","onEmptied","onStalled","onLoadedMetadata","onLoadedData","onTimeUpdate","onRateChange","onVolumeChange","onResize","Video","getProperties","renderChildren","handleEnded","handleProgress","handleKeypress","handleTextTrackChange","forceUpdate","textTracks","onaddtrack","onremovetrack","properties","Array","from","mode","promise","undefined","catch","then","load","addTextTrack","canPlayType","cprops","preOnError","videoId","val","Bezel","timer","handleStateChange","hidden","clearTimeout","setState","style","display","findElPosition","el","box","getBoundingClientRect","parentNode","left","top","body","docEl","documentElement","clientLeft","scrollLeft","window","pageXOffset","clientTop","scrollTop","pageYOffset","round","getPointerPosition","event","boxW","offsetWidth","boxH","offsetHeight","boxY","boxX","evtPageY","pageY","evtPageX","pageX","changedTouches","y","max","min","x","focusNode","reactNode","focus","hasClass","cls","classes","split","i","length","toLowerCase","clickable","dblclickable","shortcuts","array","Shortcut","defaultShortcuts","keyCode","handle","shift","mergeShortcuts","handleKeyPress","handleDoubleClick","componentDidUpdate","prevProps","componentWillUnmount","getShortcutKey","ctrl","alt","shortcut","assign","mergedShortcuts","gradeShortcut","score","ps","forEach","activeElement","which","ctrlKey","metaKey","shiftKey","altKey","preventDefault","canBeClicked","target","nodeName","onMouseDown","onMouseMove","stepForward","stepBack","sliderActive","sliderInactive","onMouseUp","onFocus","onBlur","onClick","getPercent","vertical","node","label","valuenow","valuetext","Slider","handleMouseDown","handleMouseMove","handleMouseUp","handleFocus","handleBlur","calculateDistance","getProgress","active","progress","stopPropagation","slider","Dom","percentage","toFixed","child","PlayProgressBar","width","LoadProgressBar","bufferedEnd","end","percentify","percent","parts","start","part","push","MouseTimeDisplay","mouseTime","text","SeekBar","getNewTime","distance","newTime","input","ProgressControl","handleMouseMoveThrottle","seekBar","PlayToggle","controlText","button","ForwardReplayControl","join","ForwardControl","ReplayControl","FullscreenToggle","RemainingTimeDisplay","remainingTime","formattedTime","CurrentTimeDisplay","DurationDisplay","separator","TimeDivider","separatorText","tagName","isRequired","ClickableComponent","Tag","Popup","inline","PopupButton","VolumeLevel","height","VolumeBar","handlePercentageChange","checkMuted","alwaysShowVolume","VolumeMenuButton","level","volumeLevel","Menu","item","index","activateIndex","onSelectItem","MenuItem","items","selectedIndex","MenuButton","commitSelection","activateMenuItem","renderMenu","handleUpArrow","handleDownArrow","handleEscape","handleReturn","handleTab","handleSelectItem","handleIndexChange","newIndex","menuButton","rates","PlaybackRateMenuButton","indexOf","autoHide","autoHideTime","disableDefaultControls","disableCompletely","ControlBar","getDefaultChildren","getFullChildren","getChildren","USER_AGENT","navigator","userAgent","IS_IPAD","test","IS_IPHONE","IS_IPOD","IS_IOS","oneOfType","fluid","aspectRatio","Player","controlsHideTimer","getStyle","startControlsTimer","handleFullScreenChange","handleKeyDown","originalChildren","_","propsWithoutChildren","setWidthOrHeight","name","styleVal","match","propsAspectRatio","propsHeight","propsWidth","ratioParts","ratioMultiplier","paddingTop","controlBarActiveTime","isValidElement","browser","PlaybackRate","offMenuText","showOffMenu","kinds","ClosedCaptionButton","getTextTrackItems","updateState","textTrackItems","tracks","includes","kind","language","findIndex","textTrackItemsAreEqual","items1","items2"],"mappings":"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"}