Файловый менеджер - Редактировать - /home/freeclou/app.optimyar.com/backend/node_modules/video-react/dist/video-react.cjs.js.map
Назад
{"version":3,"file":"video-react.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"],"sourcesContent":["export const LOAD_START = 'video-react/LOAD_START';\nexport const CAN_PLAY = 'video-react/CAN_PLAY';\nexport const WAITING = 'video-react/WAITING';\nexport const CAN_PLAY_THROUGH = 'video-react/CAN_PLAY_THROUGH';\nexport const PLAYING = 'video-react/PLAYING';\nexport const PLAY = 'video-react/PLAY';\nexport const PAUSE = 'video-react/PAUSE';\nexport const END = 'video-react/END';\nexport const SEEKING = 'video-react/SEEKING';\nexport const SEEKED = 'video-react/SEEKED';\nexport const SEEKING_TIME = 'video-react/SEEKING_TIME';\nexport const END_SEEKING = 'video-react/END_SEEKING';\nexport const DURATION_CHANGE = 'video-react/DURATION_CHANGE';\nexport const TIME_UPDATE = 'video-react/TIME_UPDATE';\nexport const VOLUME_CHANGE = 'video-react/VOLUME_CHANGE';\nexport const PROGRESS_CHANGE = 'video-react/PROGRESS_CHANGE';\nexport const RATE_CHANGE = 'video-react/RATE_CHANGE';\nexport const SUSPEND = 'video-react/SUSPEND';\nexport const ABORT = 'video-react/ABORT';\nexport const EMPTIED = 'video-react/EMPTIED';\nexport const STALLED = 'video-react/STALLED';\nexport const LOADED_META_DATA = 'video-react/LOADED_META_DATA';\nexport const LOADED_DATA = 'video-react/LOADED_DATA';\nexport const RESIZE = 'video-react/RESIZE';\nexport const ERROR = 'video-react/ERROR';\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","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/OPERATE';\nexport const FULLSCREEN_CHANGE = 'video-react/FULLSCREEN_CHANGE';\nexport const PLAYER_ACTIVATE = 'video-react/PLAYER_ACTIVATE';\nexport const USER_ACTIVATE = 'video-react/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 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};\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 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-big-play-button',\n `video-react-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-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-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({ poster, player, actions, className }) {\n if (!poster || player.hasStarted) {\n return null;\n }\n\n return (\n <div\n className={classNames('video-react-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 =>\n isTypeEqual(c, element)\n );\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) =>\n (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 }\n\n componentDidMount() {\n this.forceUpdate(); // make sure the children can get the video property\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 // 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 { loop, player, actions, onEnded } = 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-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-bezel': true,\n 'video-react-bezel-animation': this.state.count % 2 === 0,\n 'video-react-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-bezel-icon',\n `video-react-bezel-icon-${this.state.operation.action}`\n )}\n />\n </div>\n );\n }\n}\n\nBezel.propTypes = propTypes;\nBezel.displayName = 'Bezel';\n","import { findDOMNode } from 'react-dom';\n\n/**\n * Offset Left\n * getBoundingClientRect technique from\n * John Resig http://ejohn.org/blog/getboundingclientrect-is-awesome/\n *\n * @function findElPosition\n * @param {Element} el Element 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 element\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 {Element} el Element 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 const domNode = findDOMNode(reactNode);\n if (domNode && domNode.blur) {\n domNode.blur();\n }\n}\n\n// focus an element\nexport function focusNode(reactNode) {\n const domNode = findDOMNode(reactNode);\n if (domNode && domNode.focus) {\n domNode.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) =>\n 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-control') ||\n hasClass(document.activeElement, 'video-react-menu-button-active') ||\n // || hasClass(document.activeElement, 'video-react-slider')\n hasClass(document.activeElement, 'video-react-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 { findDOMNode } from 'react-dom';\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 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 = findDOMNode(this);\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-slider-vertical': vertical,\n 'video-react-slider-horizontal': !vertical,\n 'video-react-sliding': this.state.active\n },\n 'video-react-slider'\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-play-progress video-react-slider-bar',\n className\n )}\n style={{\n width: percentage\n }}\n >\n <span className=\"video-react-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-load-progress', className)}\n >\n <span className=\"video-react-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({ duration, mouseTime, className, text }) {\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-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-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 { findDOMNode } from 'react-dom';\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 = findDOMNode(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-progress-control video-react-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-play-control': true,\n 'video-react-control': true,\n 'video-react-button': true,\n 'video-react-paused': player.paused,\n 'video-react-playing': !player.paused\n })}\n type=\"button\"\n tabIndex=\"0\"\n onClick={this.handleClick}\n >\n <span className=\"video-react-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-control',\n 'video-react-button',\n 'video-react-icon'\n ];\n classNames.push(\n `video-react-icon-${mode}-${seconds}`,\n `video-react-${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-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-icon-fullscreen-exit': player.isFullscreen,\n 'video-react-icon-fullscreen': !player.isFullscreen\n },\n 'video-react-fullscreen-control video-react-control video-react-button video-react-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-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-remaining-time video-react-time-control video-react-control',\n className\n )}\n >\n <div className=\"video-react-remaining-time-display\" aria-live=\"off\">\n <span className=\"video-react-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-current-time video-react-time-control video-react-control',\n className\n )}\n >\n <div className=\"video-react-current-time-display\" aria-live=\"off\">\n <span className=\"video-react-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-duration video-react-time-control video-react-control'\n )}\n >\n <div className=\"video-react-duration-display\" aria-live=\"off\">\n <span className=\"video-react-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-time-control video-react-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 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-menu\" onClick={this.handleClick}>\n <div className=\"video-react-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-menu-button-inline': !!inline,\n 'video-react-menu-button-popup': !inline\n },\n 'video-react-control video-react-button video-react-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-volume-level')}\n style={style}\n >\n <span className=\"video-react-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-volume-bar video-react-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-volume-menu-button-vertical': vertical,\n 'video-react-volume-menu-button-horizontal': !vertical,\n 'video-react-vol-muted': player.muted,\n 'video-react-vol-0': level === 0 && !player.muted,\n 'video-react-vol-1': level === 1,\n 'video-react-vol-2': level === 2,\n 'video-react-vol-3': level === 3,\n 'video-react-slider-active':\n this.props.alwaysShowVolume || this.state.active,\n 'video-react-lock-showing':\n this.props.alwaysShowVolume || this.state.active\n },\n 'video-react-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-menu video-react-lock-showing\"\n role=\"presentation\"\n onClick={this.handleClick}\n >\n <ul className=\"video-react-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-menu-item': true,\n 'video-react-selected': index === activateIndex\n })}\n role=\"menuitem\"\n onClick={this.handleClick}\n >\n {item.label}\n <span className=\"video-react-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 active: false\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-menu-button-inline': !!inline,\n 'video-react-menu-button-popup': !inline,\n 'video-react-menu-button-active': this.state.active\n },\n 'video-react-control video-react-button video-react-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-playback-rate',\n this.props.className\n )}\n onSelectItem={this.handleSelectItem}\n items={items}\n selectedIndex={selectedIndex}\n >\n <span className=\"video-react-control-text\">Playback Rate</span>\n <div className=\"video-react-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-control-bar',\n {\n 'video-react-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 =\n 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-controls-enabled': true,\n 'video-react-has-started': hasStarted,\n 'video-react-paused': paused,\n 'video-react-playing': !paused,\n 'video-react-waiting': waiting,\n 'video-react-seeking': seeking,\n 'video-react-fluid': fluid,\n 'video-react-fullscreen': isFullscreen,\n 'video-react-user-inactive': !userActivity,\n 'video-react-user-active': userActivity,\n 'video-react-workinghover': !browser.IS_IOS\n },\n 'video-react',\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 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"],"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","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","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","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","forceUpdate","properties","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","domNode","findDOMNode","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","Dom","percentage","toFixed","child","PlayProgressBar","width","LoadProgressBar","bufferedEnd","end","percentify","percent","parts","start","part","push","MouseTimeDisplay","mouseTime","text","SeekBar","getNewTime","distance","slider","newTime","input","ProgressControl","handleMouseMoveThrottle","seekBar","PlayToggle","controlText","button","mode","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"],"mappings":"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"}
| ver. 1.4 |
Github
|
.
| PHP 8.1.33 | Генерация страницы: 0.05 |
proxy
|
phpinfo
|
Настройка