{"version":3,"file":"static/js/1580.f436e9c7.chunk.js","mappings":"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","sources":["../node_modules/fast-deep-equal/index.js","../node_modules/load-script/index.js","../node_modules/react-youtube/src/YouTube.tsx","../node_modules/sister/src/sister.js","../node_modules/youtube-player/dist/FunctionStateMap.js","../node_modules/youtube-player/dist/YouTubePlayer.js","../node_modules/youtube-player/dist/constants/PlayerStates.js","../node_modules/youtube-player/dist/eventNames.js","../node_modules/youtube-player/dist/functionNames.js","../node_modules/youtube-player/dist/index.js","../node_modules/youtube-player/dist/loadYouTubeIframeApi.js","../node_modules/youtube-player/node_modules/debug/src/browser.js","../node_modules/youtube-player/node_modules/debug/src/debug.js","../node_modules/youtube-player/node_modules/ms/index.js"],"sourcesContent":["'use strict';\n\n// do not edit .js files directly - edit src/index.jst\n\n\n\nmodule.exports = function equal(a, b) {\n  if (a === b) return true;\n\n  if (a && b && typeof a == 'object' && typeof b == 'object') {\n    if (a.constructor !== b.constructor) return false;\n\n    var length, i, keys;\n    if (Array.isArray(a)) {\n      length = a.length;\n      if (length != b.length) return false;\n      for (i = length; i-- !== 0;)\n        if (!equal(a[i], b[i])) return false;\n      return true;\n    }\n\n\n\n    if (a.constructor === RegExp) return a.source === b.source && a.flags === b.flags;\n    if (a.valueOf !== Object.prototype.valueOf) return a.valueOf() === b.valueOf();\n    if (a.toString !== Object.prototype.toString) return a.toString() === b.toString();\n\n    keys = Object.keys(a);\n    length = keys.length;\n    if (length !== Object.keys(b).length) return false;\n\n    for (i = length; i-- !== 0;)\n      if (!Object.prototype.hasOwnProperty.call(b, keys[i])) return false;\n\n    for (i = length; i-- !== 0;) {\n      var key = keys[i];\n\n      if (!equal(a[key], b[key])) return false;\n    }\n\n    return true;\n  }\n\n  // true if both NaN, false otherwise\n  return a!==a && b!==b;\n};\n","\nmodule.exports = function load (src, opts, cb) {\n  var head = document.head || document.getElementsByTagName('head')[0]\n  var script = document.createElement('script')\n\n  if (typeof opts === 'function') {\n    cb = opts\n    opts = {}\n  }\n\n  opts = opts || {}\n  cb = cb || function() {}\n\n  script.type = opts.type || 'text/javascript'\n  script.charset = opts.charset || 'utf8';\n  script.async = 'async' in opts ? !!opts.async : true\n  script.src = src\n\n  if (opts.attrs) {\n    setAttributes(script, opts.attrs)\n  }\n\n  if (opts.text) {\n    script.text = '' + opts.text\n  }\n\n  var onend = 'onload' in script ? stdOnEnd : ieOnEnd\n  onend(script, cb)\n\n  // some good legacy browsers (firefox) fail the 'in' detection above\n  // so as a fallback we always set onload\n  // old IE will ignore this and new IE will set onload\n  if (!script.onload) {\n    stdOnEnd(script, cb);\n  }\n\n  head.appendChild(script)\n}\n\nfunction setAttributes(script, attrs) {\n  for (var attr in attrs) {\n    script.setAttribute(attr, attrs[attr]);\n  }\n}\n\nfunction stdOnEnd (script, cb) {\n  script.onload = function () {\n    this.onerror = this.onload = null\n    cb(null, script)\n  }\n  script.onerror = function () {\n    // this.onload = null here is necessary\n    // because even IE9 works not like others\n    this.onerror = this.onload = null\n    cb(new Error('Failed to load ' + this.src), script)\n  }\n}\n\nfunction ieOnEnd (script, cb) {\n  script.onreadystatechange = function () {\n    if (this.readyState != 'complete' && this.readyState != 'loaded') return\n    this.onreadystatechange = null\n    cb(null, script) // there is no way to catch loading errors in IE8\n  }\n}\n","/** @jsxRuntime classic */\nimport PropTypes from 'prop-types';\nimport React from 'react';\nimport isEqual from 'fast-deep-equal';\nimport youTubePlayer from 'youtube-player';\nimport type { YouTubePlayer, Options } from 'youtube-player/dist/types';\n\n/**\n * Check whether a `props` change should result in the video being updated.\n */\nfunction shouldUpdateVideo(prevProps: YouTubeProps, props: YouTubeProps) {\n  // A changing video should always trigger an update\n  if (prevProps.videoId !== props.videoId) {\n    return true;\n  }\n\n  // Otherwise, a change in the start/end time playerVars also requires a player\n  // update.\n  const prevVars = prevProps.opts?.playerVars || {};\n  const vars = props.opts?.playerVars || {};\n\n  return prevVars.start !== vars.start || prevVars.end !== vars.end;\n}\n\n/**\n * Neutralize API options that only require a video update, leaving only options\n * that require a player reset. The results can then be compared to see if a\n * player reset is necessary.\n */\nfunction filterResetOptions(opts: Options = {}) {\n  return {\n    ...opts,\n    height: 0,\n    width: 0,\n    playerVars: {\n      ...opts.playerVars,\n      autoplay: 0,\n      start: 0,\n      end: 0,\n    },\n  };\n}\n\n/**\n * Check whether a `props` change should result in the player being reset.\n * The player is reset when the `props.opts` change, except if the only change\n * is in the `start` and `end` playerVars, because a video update can deal with\n * those.\n */\nfunction shouldResetPlayer(prevProps: YouTubeProps, props: YouTubeProps) {\n  return (\n    prevProps.videoId !== props.videoId || !isEqual(filterResetOptions(prevProps.opts), filterResetOptions(props.opts))\n  );\n}\n\n/**\n * Check whether a props change should result in an update of player.\n */\nfunction shouldUpdatePlayer(prevProps: YouTubeProps, props: YouTubeProps) {\n  return (\n    prevProps.id !== props.id ||\n    prevProps.className !== props.className ||\n    prevProps.opts?.width !== props.opts?.width ||\n    prevProps.opts?.height !== props.opts?.height ||\n    prevProps.iframeClassName !== props.iframeClassName ||\n    prevProps.title !== props.title\n  );\n}\n\ntype YoutubePlayerCueVideoOptions = {\n  videoId: string;\n  startSeconds?: number;\n  endSeconds?: number;\n  suggestedQuality?: string;\n};\n\nexport { YouTubePlayer };\n\nexport type YouTubeEvent<T = any> = {\n  data: T;\n  target: YouTubePlayer;\n};\n\nexport type YouTubeProps = {\n  /**\n   * The YouTube video ID.\n   *\n   * Examples\n   * - https://www.youtube.com/watch?v=XxVg_s8xAms (`XxVg_s8xAms` is the ID)\n   * - https://www.youtube.com/embed/-DX3vJiqxm4 (`-DX3vJiqxm4` is the ID)\n   */\n  videoId?: string;\n  /**\n   * Custom ID for the player element\n   */\n  id?: string;\n  /**\n   * Custom class name for the player element\n   */\n  className?: string;\n  /**\n   * Custom class name for the iframe element\n   */\n  iframeClassName?: string;\n  /**\n   * Custom style for the player container element\n   */\n  style?: React.CSSProperties;\n  /**\n   * Title of the video for the iframe's title tag.\n   */\n  title?: React.IframeHTMLAttributes<HTMLIFrameElement>['title'];\n  /**\n   * Indicates how the browser should load the iframe\n   * {@link https://developer.mozilla.org/en-US/docs/Web/HTML/Element/iframe#attr-loading}\n   */\n  loading?: React.IframeHTMLAttributes<HTMLIFrameElement>['loading'];\n  /**\n   * An object that specifies player options\n   * {@link https://developers.google.com/youtube/iframe_api_reference#Loading_a_Video_Player}\n   */\n  opts?: Options;\n  /**\n   * This event fires whenever a player has finished loading and is ready to begin receiving API calls.\n   * {@link https://developers.google.com/youtube/iframe_api_reference#onReady}\n   */\n  onReady?: (event: YouTubeEvent) => void;\n  /**\n   * This event fires if an error occurs in the player.\n   * {@link https://developers.google.com/youtube/iframe_api_reference#onError}\n   */\n  onError?: (event: YouTubeEvent<number>) => void;\n  /**\n   * This event fires when the layer's state changes to PlayerState.PLAYING.\n   */\n  onPlay?: (event: YouTubeEvent<number>) => void;\n  /**\n   * This event fires when the layer's state changes to PlayerState.PAUSED.\n   */\n  onPause?: (event: YouTubeEvent<number>) => void;\n  /**\n   * This event fires when the layer's state changes to PlayerState.ENDED.\n   */\n  onEnd?: (event: YouTubeEvent<number>) => void;\n  /**\n   * This event fires whenever the player's state changes.\n   * {@link https://developers.google.com/youtube/iframe_api_reference#onStateChange}\n   */\n  onStateChange?: (event: YouTubeEvent<number>) => void;\n  /**\n   * This event fires whenever the video playback quality changes.\n   * {@link https://developers.google.com/youtube/iframe_api_reference#onPlaybackRateChange}\n   */\n  onPlaybackRateChange?: (event: YouTubeEvent<number>) => void;\n  /**\n   * This event fires whenever the video playback rate changes.\n   * {@link https://developers.google.com/youtube/iframe_api_reference#onPlaybackQualityChange}\n   */\n  onPlaybackQualityChange?: (event: YouTubeEvent<string>) => void;\n};\n\nconst defaultProps: YouTubeProps = {\n  videoId: '',\n  id: '',\n  className: '',\n  iframeClassName: '',\n  style: {},\n  title: '',\n  loading: undefined,\n  opts: {},\n  onReady: () => {},\n  onError: () => {},\n  onPlay: () => {},\n  onPause: () => {},\n  onEnd: () => {},\n  onStateChange: () => {},\n  onPlaybackRateChange: () => {},\n  onPlaybackQualityChange: () => {},\n};\n\nconst propTypes = {\n  videoId: PropTypes.string,\n  id: PropTypes.string,\n  className: PropTypes.string,\n  iframeClassName: PropTypes.string,\n  style: PropTypes.object,\n  title: PropTypes.string,\n  loading: PropTypes.oneOf(['lazy', 'eager']),\n  opts: PropTypes.objectOf(PropTypes.any),\n  onReady: PropTypes.func,\n  onError: PropTypes.func,\n  onPlay: PropTypes.func,\n  onPause: PropTypes.func,\n  onEnd: PropTypes.func,\n  onStateChange: PropTypes.func,\n  onPlaybackRateChange: PropTypes.func,\n  onPlaybackQualityChange: PropTypes.func,\n};\n\nclass YouTube extends React.Component<YouTubeProps> {\n  static propTypes = propTypes;\n  static defaultProps = defaultProps;\n\n  /**\n   * Expose PlayerState constants for convenience. These constants can also be\n   * accessed through the global YT object after the YouTube IFrame API is instantiated.\n   * https://developers.google.com/youtube/iframe_api_reference#onStateChange\n   */\n  static PlayerState = {\n    UNSTARTED: -1,\n    ENDED: 0,\n    PLAYING: 1,\n    PAUSED: 2,\n    BUFFERING: 3,\n    CUED: 5,\n  };\n\n  container: HTMLDivElement | null;\n  internalPlayer: YouTubePlayer | null;\n\n  constructor(props: any) {\n    super(props);\n\n    this.container = null;\n    this.internalPlayer = null;\n  }\n\n  /**\n   * Note: The `youtube-player` package that is used promisifies all YouTube\n   * Player API calls, which introduces a delay of a tick before it actually\n   * gets destroyed.\n   *\n   * The promise to destroy the player is stored here so we can make sure to\n   * only re-create the Player after it's been destroyed.\n   *\n   * See: https://github.com/tjallingt/react-youtube/issues/355\n   */\n  destroyPlayerPromise: Promise<void> | undefined = undefined;\n\n  componentDidMount() {\n    this.createPlayer();\n  }\n\n  async componentDidUpdate(prevProps: YouTubeProps) {\n    if (shouldUpdatePlayer(prevProps, this.props)) {\n      this.updatePlayer();\n    }\n\n    if (shouldResetPlayer(prevProps, this.props)) {\n      await this.resetPlayer();\n    }\n\n    if (shouldUpdateVideo(prevProps, this.props)) {\n      this.updateVideo();\n    }\n  }\n\n  componentWillUnmount() {\n    this.destroyPlayer();\n  }\n\n  /**\n   * This event fires whenever a player has finished loading and is ready to begin receiving API calls.\n   * https://developers.google.com/youtube/iframe_api_reference#onReady\n   */\n  onPlayerReady = (event: YouTubeEvent) => this.props.onReady?.(event);\n\n  /**\n   * This event fires if an error occurs in the player.\n   * https://developers.google.com/youtube/iframe_api_reference#onError\n   */\n  onPlayerError = (event: YouTubeEvent<number>) => this.props.onError?.(event);\n\n  /**\n   * This event fires whenever the video playback quality changes.\n   * https://developers.google.com/youtube/iframe_api_reference#onStateChange\n   */\n  onPlayerStateChange = (event: YouTubeEvent<number>) => {\n    this.props.onStateChange?.(event);\n    // @ts-ignore\n    switch (event.data) {\n      case YouTube.PlayerState.ENDED:\n        this.props.onEnd?.(event);\n        break;\n\n      case YouTube.PlayerState.PLAYING:\n        this.props.onPlay?.(event);\n        break;\n\n      case YouTube.PlayerState.PAUSED:\n        this.props.onPause?.(event);\n        break;\n\n      default:\n    }\n  };\n\n  /**\n   * This event fires whenever the video playback quality changes.\n   * https://developers.google.com/youtube/iframe_api_reference#onPlaybackRateChange\n   */\n  onPlayerPlaybackRateChange = (event: YouTubeEvent<number>) => this.props.onPlaybackRateChange?.(event);\n\n  /**\n   * This event fires whenever the video playback rate changes.\n   * https://developers.google.com/youtube/iframe_api_reference#onPlaybackQualityChange\n   */\n  onPlayerPlaybackQualityChange = (event: YouTubeEvent<string>) => this.props.onPlaybackQualityChange?.(event);\n\n  /**\n   * Destroy the YouTube Player using its async API and store the promise so we\n   * can await before re-creating it.\n   */\n  destroyPlayer = () => {\n    if (this.internalPlayer) {\n      this.destroyPlayerPromise = this.internalPlayer.destroy().then(() => (this.destroyPlayerPromise = undefined));\n      return this.destroyPlayerPromise;\n    }\n    return Promise.resolve();\n  };\n\n  /**\n   * Initialize the YouTube Player API on the container and attach event handlers\n   */\n  createPlayer = () => {\n    // do not attempt to create a player server-side, it won't work\n    if (typeof document === 'undefined') return;\n    if (this.destroyPlayerPromise) {\n      // We need to first await the existing player to be destroyed before\n      // we can re-create it.\n      this.destroyPlayerPromise.then(this.createPlayer);\n      return;\n    }\n    // create player\n    const playerOpts: Options = {\n      ...this.props.opts,\n      // preload the `videoId` video if one is already given\n      videoId: this.props.videoId,\n    };\n    this.internalPlayer = youTubePlayer(this.container!, playerOpts);\n    // attach event handlers\n    this.internalPlayer.on('ready', this.onPlayerReady as any);\n    this.internalPlayer.on('error', this.onPlayerError as any);\n    this.internalPlayer.on('stateChange', this.onPlayerStateChange as any);\n    this.internalPlayer.on('playbackRateChange', this.onPlayerPlaybackRateChange as any);\n    this.internalPlayer.on('playbackQualityChange', this.onPlayerPlaybackQualityChange as any);\n    if (this.props.title || this.props.loading) {\n      this.internalPlayer.getIframe().then((iframe) => {\n        if (this.props.title) iframe.setAttribute('title', this.props.title);\n        if (this.props.loading) iframe.setAttribute('loading', this.props.loading);\n      });\n    }\n  };\n\n  /**\n   * Shorthand for destroying and then re-creating the YouTube Player\n   */\n  resetPlayer = () => this.destroyPlayer().then(this.createPlayer);\n\n  /**\n   * Method to update the id and class of the YouTube Player iframe.\n   * React should update this automatically but since the YouTube Player API\n   * replaced the DIV that is mounted by React we need to do this manually.\n   */\n  updatePlayer = () => {\n    this.internalPlayer?.getIframe().then((iframe) => {\n      if (this.props.id) iframe.setAttribute('id', this.props.id);\n      else iframe.removeAttribute('id');\n      if (this.props.iframeClassName) iframe.setAttribute('class', this.props.iframeClassName);\n      else iframe.removeAttribute('class');\n      if (this.props.opts && this.props.opts.width) iframe.setAttribute('width', this.props.opts.width.toString());\n      else iframe.removeAttribute('width');\n      if (this.props.opts && this.props.opts.height) iframe.setAttribute('height', this.props.opts.height.toString());\n      else iframe.removeAttribute('height');\n      if (this.props.title) iframe.setAttribute('title', this.props.title);\n      else iframe.setAttribute('title', 'YouTube video player');\n      if (this.props.loading) iframe.setAttribute('loading', this.props.loading);\n      else iframe.removeAttribute('loading');\n    });\n  };\n\n  /**\n   *  Method to return the internalPlayer object.\n   */\n  getInternalPlayer = () => {\n    return this.internalPlayer;\n  };\n\n  /**\n   * Call YouTube Player API methods to update the currently playing video.\n   * Depending on the `opts.playerVars.autoplay` this function uses one of two\n   * YouTube Player API methods to update the video.\n   */\n  updateVideo = () => {\n    if (typeof this.props.videoId === 'undefined' || this.props.videoId === null) {\n      this.internalPlayer?.stopVideo();\n      return;\n    }\n\n    // set queueing options\n    let autoplay = false;\n    const opts: YoutubePlayerCueVideoOptions = {\n      videoId: this.props.videoId,\n    };\n\n    if (this.props.opts?.playerVars) {\n      autoplay = this.props.opts.playerVars.autoplay === 1;\n      if ('start' in this.props.opts.playerVars) {\n        opts.startSeconds = this.props.opts.playerVars.start;\n      }\n      if ('end' in this.props.opts.playerVars) {\n        opts.endSeconds = this.props.opts.playerVars.end;\n      }\n    }\n\n    // if autoplay is enabled loadVideoById\n    if (autoplay) {\n      this.internalPlayer?.loadVideoById(opts);\n      return;\n    }\n    // default behaviour just cues the video\n    this.internalPlayer?.cueVideoById(opts);\n  };\n\n  refContainer = (container: HTMLDivElement) => {\n    this.container = container;\n  };\n\n  render() {\n    return (\n      <div className={this.props.className} style={this.props.style}>\n        <div id={this.props.id} className={this.props.iframeClassName} ref={this.refContainer} />\n      </div>\n    );\n  }\n}\n\nexport default YouTube;\n","'use strict';\n\nvar Sister;\n\n/**\n* @link https://github.com/gajus/sister for the canonical source repository\n* @license https://github.com/gajus/sister/blob/master/LICENSE BSD 3-Clause\n*/\nSister = function () {\n    var sister = {},\n        events = {};\n\n    /**\n     * @name handler\n     * @function\n     * @param {Object} data Event data.\n     */\n\n    /**\n     * @param {String} name Event name.\n     * @param {handler} handler\n     * @return {listener}\n     */\n    sister.on = function (name, handler) {\n        var listener = {name: name, handler: handler};\n        events[name] = events[name] || [];\n        events[name].unshift(listener);\n        return listener;\n    };\n\n    /**\n     * @param {listener}\n     */\n    sister.off = function (listener) {\n        var index = events[listener.name].indexOf(listener);\n\n        if (index !== -1) {\n            events[listener.name].splice(index, 1);\n        }\n    };\n\n    /**\n     * @param {String} name Event name.\n     * @param {Object} data Event data.\n     */\n    sister.trigger = function (name, data) {\n        var listeners = events[name],\n            i;\n\n        if (listeners) {\n            i = listeners.length;\n            while (i--) {\n                listeners[i].handler(data);\n            }\n        }\n    };\n\n    return sister;\n};\n\nmodule.exports = Sister;\n","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\nvar _PlayerStates = require('./constants/PlayerStates');\n\nvar _PlayerStates2 = _interopRequireDefault(_PlayerStates);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.default = {\n  pauseVideo: {\n    acceptableStates: [_PlayerStates2.default.ENDED, _PlayerStates2.default.PAUSED],\n    stateChangeRequired: false\n  },\n  playVideo: {\n    acceptableStates: [_PlayerStates2.default.ENDED, _PlayerStates2.default.PLAYING],\n    stateChangeRequired: false\n  },\n  seekTo: {\n    acceptableStates: [_PlayerStates2.default.ENDED, _PlayerStates2.default.PLAYING, _PlayerStates2.default.PAUSED],\n    stateChangeRequired: true,\n\n    // TRICKY: `seekTo` may not cause a state change if no buffering is\n    // required.\n    timeout: 3000\n  }\n};\nmodule.exports = exports['default'];","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\nvar _debug = require('debug');\n\nvar _debug2 = _interopRequireDefault(_debug);\n\nvar _functionNames = require('./functionNames');\n\nvar _functionNames2 = _interopRequireDefault(_functionNames);\n\nvar _eventNames = require('./eventNames');\n\nvar _eventNames2 = _interopRequireDefault(_eventNames);\n\nvar _FunctionStateMap = require('./FunctionStateMap');\n\nvar _FunctionStateMap2 = _interopRequireDefault(_FunctionStateMap);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/* eslint-disable promise/prefer-await-to-then */\n\nvar debug = (0, _debug2.default)('youtube-player');\n\nvar YouTubePlayer = {};\n\n/**\n * Construct an object that defines an event handler for all of the YouTube\n * player events. Proxy captured events through an event emitter.\n *\n * @todo Capture event parameters.\n * @see https://developers.google.com/youtube/iframe_api_reference#Events\n */\nYouTubePlayer.proxyEvents = function (emitter) {\n  var events = {};\n\n  var _loop = function _loop(eventName) {\n    var onEventName = 'on' + eventName.slice(0, 1).toUpperCase() + eventName.slice(1);\n\n    events[onEventName] = function (event) {\n      debug('event \"%s\"', onEventName, event);\n\n      emitter.trigger(eventName, event);\n    };\n  };\n\n  var _iteratorNormalCompletion = true;\n  var _didIteratorError = false;\n  var _iteratorError = undefined;\n\n  try {\n    for (var _iterator = _eventNames2.default[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {\n      var eventName = _step.value;\n\n      _loop(eventName);\n    }\n  } catch (err) {\n    _didIteratorError = true;\n    _iteratorError = err;\n  } finally {\n    try {\n      if (!_iteratorNormalCompletion && _iterator.return) {\n        _iterator.return();\n      }\n    } finally {\n      if (_didIteratorError) {\n        throw _iteratorError;\n      }\n    }\n  }\n\n  return events;\n};\n\n/**\n * Delays player API method execution until player state is ready.\n *\n * @todo Proxy all of the methods using Object.keys.\n * @todo See TRICKY below.\n * @param playerAPIReady Promise that resolves when player is ready.\n * @param strictState A flag designating whether or not to wait for\n * an acceptable state when calling supported functions.\n * @returns {Object}\n */\nYouTubePlayer.promisifyPlayer = function (playerAPIReady) {\n  var strictState = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n\n  var functions = {};\n\n  var _loop2 = function _loop2(functionName) {\n    if (strictState && _FunctionStateMap2.default[functionName]) {\n      functions[functionName] = function () {\n        for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n          args[_key] = arguments[_key];\n        }\n\n        return playerAPIReady.then(function (player) {\n          var stateInfo = _FunctionStateMap2.default[functionName];\n          var playerState = player.getPlayerState();\n\n          // eslint-disable-next-line no-warning-comments\n          // TODO: Just spread the args into the function once Babel is fixed:\n          // https://github.com/babel/babel/issues/4270\n          //\n          // eslint-disable-next-line prefer-spread\n          var value = player[functionName].apply(player, args);\n\n          // TRICKY: For functions like `seekTo`, a change in state must be\n          // triggered given that the resulting state could match the initial\n          // state.\n          if (stateInfo.stateChangeRequired ||\n\n          // eslint-disable-next-line no-extra-parens\n          Array.isArray(stateInfo.acceptableStates) && stateInfo.acceptableStates.indexOf(playerState) === -1) {\n            return new Promise(function (resolve) {\n              var onPlayerStateChange = function onPlayerStateChange() {\n                var playerStateAfterChange = player.getPlayerState();\n\n                var timeout = void 0;\n\n                if (typeof stateInfo.timeout === 'number') {\n                  timeout = setTimeout(function () {\n                    player.removeEventListener('onStateChange', onPlayerStateChange);\n\n                    resolve();\n                  }, stateInfo.timeout);\n                }\n\n                if (Array.isArray(stateInfo.acceptableStates) && stateInfo.acceptableStates.indexOf(playerStateAfterChange) !== -1) {\n                  player.removeEventListener('onStateChange', onPlayerStateChange);\n\n                  clearTimeout(timeout);\n\n                  resolve();\n                }\n              };\n\n              player.addEventListener('onStateChange', onPlayerStateChange);\n            }).then(function () {\n              return value;\n            });\n          }\n\n          return value;\n        });\n      };\n    } else {\n      functions[functionName] = function () {\n        for (var _len2 = arguments.length, args = Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n          args[_key2] = arguments[_key2];\n        }\n\n        return playerAPIReady.then(function (player) {\n          // eslint-disable-next-line no-warning-comments\n          // TODO: Just spread the args into the function once Babel is fixed:\n          // https://github.com/babel/babel/issues/4270\n          //\n          // eslint-disable-next-line prefer-spread\n          return player[functionName].apply(player, args);\n        });\n      };\n    }\n  };\n\n  var _iteratorNormalCompletion2 = true;\n  var _didIteratorError2 = false;\n  var _iteratorError2 = undefined;\n\n  try {\n    for (var _iterator2 = _functionNames2.default[Symbol.iterator](), _step2; !(_iteratorNormalCompletion2 = (_step2 = _iterator2.next()).done); _iteratorNormalCompletion2 = true) {\n      var functionName = _step2.value;\n\n      _loop2(functionName);\n    }\n  } catch (err) {\n    _didIteratorError2 = true;\n    _iteratorError2 = err;\n  } finally {\n    try {\n      if (!_iteratorNormalCompletion2 && _iterator2.return) {\n        _iterator2.return();\n      }\n    } finally {\n      if (_didIteratorError2) {\n        throw _iteratorError2;\n      }\n    }\n  }\n\n  return functions;\n};\n\nexports.default = YouTubePlayer;\nmodule.exports = exports['default'];","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = {\n  BUFFERING: 3,\n  ENDED: 0,\n  PAUSED: 2,\n  PLAYING: 1,\n  UNSTARTED: -1,\n  VIDEO_CUED: 5\n};\nmodule.exports = exports[\"default\"];","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\n\n/**\n * @see https://developers.google.com/youtube/iframe_api_reference#Events\n * `volumeChange` is not officially supported but seems to work\n * it emits an object: `{volume: 82.6923076923077, muted: false}`\n */\nexports.default = ['ready', 'stateChange', 'playbackQualityChange', 'playbackRateChange', 'error', 'apiChange', 'volumeChange'];\nmodule.exports = exports['default'];","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\n\n/**\n * @see https://developers.google.com/youtube/iframe_api_reference#Functions\n */\nexports.default = ['cueVideoById', 'loadVideoById', 'cueVideoByUrl', 'loadVideoByUrl', 'playVideo', 'pauseVideo', 'stopVideo', 'getVideoLoadedFraction', 'cuePlaylist', 'loadPlaylist', 'nextVideo', 'previousVideo', 'playVideoAt', 'setShuffle', 'setLoop', 'getPlaylist', 'getPlaylistIndex', 'setOption', 'mute', 'unMute', 'isMuted', 'setVolume', 'getVolume', 'seekTo', 'getPlayerState', 'getPlaybackRate', 'setPlaybackRate', 'getAvailablePlaybackRates', 'getPlaybackQuality', 'setPlaybackQuality', 'getAvailableQualityLevels', 'getCurrentTime', 'getDuration', 'removeEventListener', 'getVideoUrl', 'getVideoEmbedCode', 'getOptions', 'getOption', 'addEventListener', 'destroy', 'setSize', 'getIframe'];\nmodule.exports = exports['default'];","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\nvar _sister = require('sister');\n\nvar _sister2 = _interopRequireDefault(_sister);\n\nvar _loadYouTubeIframeApi = require('./loadYouTubeIframeApi');\n\nvar _loadYouTubeIframeApi2 = _interopRequireDefault(_loadYouTubeIframeApi);\n\nvar _YouTubePlayer = require('./YouTubePlayer');\n\nvar _YouTubePlayer2 = _interopRequireDefault(_YouTubePlayer);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/**\n * @typedef YT.Player\n * @see https://developers.google.com/youtube/iframe_api_reference\n * */\n\n/**\n * @see https://developers.google.com/youtube/iframe_api_reference#Loading_a_Video_Player\n */\nvar youtubeIframeAPI = void 0;\n\n/**\n * A factory function used to produce an instance of YT.Player and queue function calls and proxy events of the resulting object.\n *\n * @param maybeElementId Either An existing YT.Player instance,\n * the DOM element or the id of the HTML element where the API will insert an <iframe>.\n * @param options See `options` (Ignored when using an existing YT.Player instance).\n * @param strictState A flag designating whether or not to wait for\n * an acceptable state when calling supported functions. Default: `false`.\n * See `FunctionStateMap.js` for supported functions and acceptable states.\n */\n\nexports.default = function (maybeElementId) {\n  var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n  var strictState = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n\n  var emitter = (0, _sister2.default)();\n\n  if (!youtubeIframeAPI) {\n    youtubeIframeAPI = (0, _loadYouTubeIframeApi2.default)(emitter);\n  }\n\n  if (options.events) {\n    throw new Error('Event handlers cannot be overwritten.');\n  }\n\n  if (typeof maybeElementId === 'string' && !document.getElementById(maybeElementId)) {\n    throw new Error('Element \"' + maybeElementId + '\" does not exist.');\n  }\n\n  options.events = _YouTubePlayer2.default.proxyEvents(emitter);\n\n  var playerAPIReady = new Promise(function (resolve) {\n    if ((typeof maybeElementId === 'undefined' ? 'undefined' : _typeof(maybeElementId)) === 'object' && maybeElementId.playVideo instanceof Function) {\n      var player = maybeElementId;\n\n      resolve(player);\n    } else {\n      // asume maybeElementId can be rendered inside\n      // eslint-disable-next-line promise/catch-or-return\n      youtubeIframeAPI.then(function (YT) {\n        // eslint-disable-line promise/prefer-await-to-then\n        var player = new YT.Player(maybeElementId, options);\n\n        emitter.on('ready', function () {\n          resolve(player);\n        });\n\n        return null;\n      });\n    }\n  });\n\n  var playerApi = _YouTubePlayer2.default.promisifyPlayer(playerAPIReady, strictState);\n\n  playerApi.on = emitter.on;\n  playerApi.off = emitter.off;\n\n  return playerApi;\n};\n\nmodule.exports = exports['default'];","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\nvar _loadScript = require('load-script');\n\nvar _loadScript2 = _interopRequireDefault(_loadScript);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.default = function (emitter) {\n  /**\n   * A promise that is resolved when window.onYouTubeIframeAPIReady is called.\n   * The promise is resolved with a reference to window.YT object.\n   */\n  var iframeAPIReady = new Promise(function (resolve) {\n    if (window.YT && window.YT.Player && window.YT.Player instanceof Function) {\n      resolve(window.YT);\n\n      return;\n    } else {\n      var protocol = window.location.protocol === 'http:' ? 'http:' : 'https:';\n\n      (0, _loadScript2.default)(protocol + '//www.youtube.com/iframe_api', function (error) {\n        if (error) {\n          emitter.trigger('error', error);\n        }\n      });\n    }\n\n    var previous = window.onYouTubeIframeAPIReady;\n\n    // The API will call this function when page has finished downloading\n    // the JavaScript for the player API.\n    window.onYouTubeIframeAPIReady = function () {\n      if (previous) {\n        previous();\n      }\n\n      resolve(window.YT);\n    };\n  });\n\n  return iframeAPIReady;\n};\n\nmodule.exports = exports['default'];","/**\n * This is the web browser implementation of `debug()`.\n *\n * Expose `debug()` as the module.\n */\n\nexports = module.exports = require('./debug');\nexports.log = log;\nexports.formatArgs = formatArgs;\nexports.save = save;\nexports.load = load;\nexports.useColors = useColors;\nexports.storage = 'undefined' != typeof chrome\n               && 'undefined' != typeof chrome.storage\n                  ? chrome.storage.local\n                  : localstorage();\n\n/**\n * Colors.\n */\n\nexports.colors = [\n  'lightseagreen',\n  'forestgreen',\n  'goldenrod',\n  'dodgerblue',\n  'darkorchid',\n  'crimson'\n];\n\n/**\n * Currently only WebKit-based Web Inspectors, Firefox >= v31,\n * and the Firebug extension (any Firefox version) are known\n * to support \"%c\" CSS customizations.\n *\n * TODO: add a `localStorage` variable to explicitly enable/disable colors\n */\n\nfunction useColors() {\n  // NB: In an Electron preload script, document will be defined but not fully\n  // initialized. Since we know we're in Chrome, we'll just detect this case\n  // explicitly\n  if (typeof window !== 'undefined' && window.process && window.process.type === 'renderer') {\n    return true;\n  }\n\n  // is webkit? http://stackoverflow.com/a/16459606/376773\n  // document is undefined in react-native: https://github.com/facebook/react-native/pull/1632\n  return (typeof document !== 'undefined' && document.documentElement && document.documentElement.style && document.documentElement.style.WebkitAppearance) ||\n    // is firebug? http://stackoverflow.com/a/398120/376773\n    (typeof window !== 'undefined' && window.console && (window.console.firebug || (window.console.exception && window.console.table))) ||\n    // is firefox >= v31?\n    // https://developer.mozilla.org/en-US/docs/Tools/Web_Console#Styling_messages\n    (typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/firefox\\/(\\d+)/) && parseInt(RegExp.$1, 10) >= 31) ||\n    // double check webkit in userAgent just in case we are in a worker\n    (typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/applewebkit\\/(\\d+)/));\n}\n\n/**\n * Map %j to `JSON.stringify()`, since no Web Inspectors do that by default.\n */\n\nexports.formatters.j = function(v) {\n  try {\n    return JSON.stringify(v);\n  } catch (err) {\n    return '[UnexpectedJSONParseError]: ' + err.message;\n  }\n};\n\n\n/**\n * Colorize log arguments if enabled.\n *\n * @api public\n */\n\nfunction formatArgs(args) {\n  var useColors = this.useColors;\n\n  args[0] = (useColors ? '%c' : '')\n    + this.namespace\n    + (useColors ? ' %c' : ' ')\n    + args[0]\n    + (useColors ? '%c ' : ' ')\n    + '+' + exports.humanize(this.diff);\n\n  if (!useColors) return;\n\n  var c = 'color: ' + this.color;\n  args.splice(1, 0, c, 'color: inherit')\n\n  // the final \"%c\" is somewhat tricky, because there could be other\n  // arguments passed either before or after the %c, so we need to\n  // figure out the correct index to insert the CSS into\n  var index = 0;\n  var lastC = 0;\n  args[0].replace(/%[a-zA-Z%]/g, function(match) {\n    if ('%%' === match) return;\n    index++;\n    if ('%c' === match) {\n      // we only are interested in the *last* %c\n      // (the user may have provided their own)\n      lastC = index;\n    }\n  });\n\n  args.splice(lastC, 0, c);\n}\n\n/**\n * Invokes `console.log()` when available.\n * No-op when `console.log` is not a \"function\".\n *\n * @api public\n */\n\nfunction log() {\n  // this hackery is required for IE8/9, where\n  // the `console.log` function doesn't have 'apply'\n  return 'object' === typeof console\n    && console.log\n    && Function.prototype.apply.call(console.log, console, arguments);\n}\n\n/**\n * Save `namespaces`.\n *\n * @param {String} namespaces\n * @api private\n */\n\nfunction save(namespaces) {\n  try {\n    if (null == namespaces) {\n      exports.storage.removeItem('debug');\n    } else {\n      exports.storage.debug = namespaces;\n    }\n  } catch(e) {}\n}\n\n/**\n * Load `namespaces`.\n *\n * @return {String} returns the previously persisted debug modes\n * @api private\n */\n\nfunction load() {\n  var r;\n  try {\n    r = exports.storage.debug;\n  } catch(e) {}\n\n  // If debug isn't set in LS, and we're in Electron, try to load $DEBUG\n  if (!r && typeof process !== 'undefined' && 'env' in process) {\n    r = process.env.DEBUG;\n  }\n\n  return r;\n}\n\n/**\n * Enable namespaces listed in `localStorage.debug` initially.\n */\n\nexports.enable(load());\n\n/**\n * Localstorage attempts to return the localstorage.\n *\n * This is necessary because safari throws\n * when a user disables cookies/localstorage\n * and you attempt to access it.\n *\n * @return {LocalStorage}\n * @api private\n */\n\nfunction localstorage() {\n  try {\n    return window.localStorage;\n  } catch (e) {}\n}\n","\n/**\n * This is the common logic for both the Node.js and web browser\n * implementations of `debug()`.\n *\n * Expose `debug()` as the module.\n */\n\nexports = module.exports = createDebug.debug = createDebug['default'] = createDebug;\nexports.coerce = coerce;\nexports.disable = disable;\nexports.enable = enable;\nexports.enabled = enabled;\nexports.humanize = require('ms');\n\n/**\n * The currently active debug mode names, and names to skip.\n */\n\nexports.names = [];\nexports.skips = [];\n\n/**\n * Map of special \"%n\" handling functions, for the debug \"format\" argument.\n *\n * Valid key names are a single, lower or upper-case letter, i.e. \"n\" and \"N\".\n */\n\nexports.formatters = {};\n\n/**\n * Previous log timestamp.\n */\n\nvar prevTime;\n\n/**\n * Select a color.\n * @param {String} namespace\n * @return {Number}\n * @api private\n */\n\nfunction selectColor(namespace) {\n  var hash = 0, i;\n\n  for (i in namespace) {\n    hash  = ((hash << 5) - hash) + namespace.charCodeAt(i);\n    hash |= 0; // Convert to 32bit integer\n  }\n\n  return exports.colors[Math.abs(hash) % exports.colors.length];\n}\n\n/**\n * Create a debugger with the given `namespace`.\n *\n * @param {String} namespace\n * @return {Function}\n * @api public\n */\n\nfunction createDebug(namespace) {\n\n  function debug() {\n    // disabled?\n    if (!debug.enabled) return;\n\n    var self = debug;\n\n    // set `diff` timestamp\n    var curr = +new Date();\n    var ms = curr - (prevTime || curr);\n    self.diff = ms;\n    self.prev = prevTime;\n    self.curr = curr;\n    prevTime = curr;\n\n    // turn the `arguments` into a proper Array\n    var args = new Array(arguments.length);\n    for (var i = 0; i < args.length; i++) {\n      args[i] = arguments[i];\n    }\n\n    args[0] = exports.coerce(args[0]);\n\n    if ('string' !== typeof args[0]) {\n      // anything else let's inspect with %O\n      args.unshift('%O');\n    }\n\n    // apply any `formatters` transformations\n    var index = 0;\n    args[0] = args[0].replace(/%([a-zA-Z%])/g, function(match, format) {\n      // if we encounter an escaped % then don't increase the array index\n      if (match === '%%') return match;\n      index++;\n      var formatter = exports.formatters[format];\n      if ('function' === typeof formatter) {\n        var val = args[index];\n        match = formatter.call(self, val);\n\n        // now we need to remove `args[index]` since it's inlined in the `format`\n        args.splice(index, 1);\n        index--;\n      }\n      return match;\n    });\n\n    // apply env-specific formatting (colors, etc.)\n    exports.formatArgs.call(self, args);\n\n    var logFn = debug.log || exports.log || console.log.bind(console);\n    logFn.apply(self, args);\n  }\n\n  debug.namespace = namespace;\n  debug.enabled = exports.enabled(namespace);\n  debug.useColors = exports.useColors();\n  debug.color = selectColor(namespace);\n\n  // env-specific initialization logic for debug instances\n  if ('function' === typeof exports.init) {\n    exports.init(debug);\n  }\n\n  return debug;\n}\n\n/**\n * Enables a debug mode by namespaces. This can include modes\n * separated by a colon and wildcards.\n *\n * @param {String} namespaces\n * @api public\n */\n\nfunction enable(namespaces) {\n  exports.save(namespaces);\n\n  exports.names = [];\n  exports.skips = [];\n\n  var split = (typeof namespaces === 'string' ? namespaces : '').split(/[\\s,]+/);\n  var len = split.length;\n\n  for (var i = 0; i < len; i++) {\n    if (!split[i]) continue; // ignore empty strings\n    namespaces = split[i].replace(/\\*/g, '.*?');\n    if (namespaces[0] === '-') {\n      exports.skips.push(new RegExp('^' + namespaces.substr(1) + '$'));\n    } else {\n      exports.names.push(new RegExp('^' + namespaces + '$'));\n    }\n  }\n}\n\n/**\n * Disable debug output.\n *\n * @api public\n */\n\nfunction disable() {\n  exports.enable('');\n}\n\n/**\n * Returns true if the given mode name is enabled, false otherwise.\n *\n * @param {String} name\n * @return {Boolean}\n * @api public\n */\n\nfunction enabled(name) {\n  var i, len;\n  for (i = 0, len = exports.skips.length; i < len; i++) {\n    if (exports.skips[i].test(name)) {\n      return false;\n    }\n  }\n  for (i = 0, len = exports.names.length; i < len; i++) {\n    if (exports.names[i].test(name)) {\n      return true;\n    }\n  }\n  return false;\n}\n\n/**\n * Coerce `val`.\n *\n * @param {Mixed} val\n * @return {Mixed}\n * @api private\n */\n\nfunction coerce(val) {\n  if (val instanceof Error) return val.stack || val.message;\n  return val;\n}\n","/**\n * Helpers.\n */\n\nvar s = 1000;\nvar m = s * 60;\nvar h = m * 60;\nvar d = h * 24;\nvar y = d * 365.25;\n\n/**\n * Parse or format the given `val`.\n *\n * Options:\n *\n *  - `long` verbose formatting [false]\n *\n * @param {String|Number} val\n * @param {Object} [options]\n * @throws {Error} throw an error if val is not a non-empty string or a number\n * @return {String|Number}\n * @api public\n */\n\nmodule.exports = function(val, options) {\n  options = options || {};\n  var type = typeof val;\n  if (type === 'string' && val.length > 0) {\n    return parse(val);\n  } else if (type === 'number' && isNaN(val) === false) {\n    return options.long ? fmtLong(val) : fmtShort(val);\n  }\n  throw new Error(\n    'val is not a non-empty string or a valid number. val=' +\n      JSON.stringify(val)\n  );\n};\n\n/**\n * Parse the given `str` and return milliseconds.\n *\n * @param {String} str\n * @return {Number}\n * @api private\n */\n\nfunction parse(str) {\n  str = String(str);\n  if (str.length > 100) {\n    return;\n  }\n  var match = /^((?:\\d+)?\\.?\\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|years?|yrs?|y)?$/i.exec(\n    str\n  );\n  if (!match) {\n    return;\n  }\n  var n = parseFloat(match[1]);\n  var type = (match[2] || 'ms').toLowerCase();\n  switch (type) {\n    case 'years':\n    case 'year':\n    case 'yrs':\n    case 'yr':\n    case 'y':\n      return n * y;\n    case 'days':\n    case 'day':\n    case 'd':\n      return n * d;\n    case 'hours':\n    case 'hour':\n    case 'hrs':\n    case 'hr':\n    case 'h':\n      return n * h;\n    case 'minutes':\n    case 'minute':\n    case 'mins':\n    case 'min':\n    case 'm':\n      return n * m;\n    case 'seconds':\n    case 'second':\n    case 'secs':\n    case 'sec':\n    case 's':\n      return n * s;\n    case 'milliseconds':\n    case 'millisecond':\n    case 'msecs':\n    case 'msec':\n    case 'ms':\n      return n;\n    default:\n      return undefined;\n  }\n}\n\n/**\n * Short format for `ms`.\n *\n * @param {Number} ms\n * @return {String}\n * @api private\n */\n\nfunction fmtShort(ms) {\n  if (ms >= d) {\n    return Math.round(ms / d) + 'd';\n  }\n  if (ms >= h) {\n    return Math.round(ms / h) + 'h';\n  }\n  if (ms >= m) {\n    return Math.round(ms / m) + 'm';\n  }\n  if (ms >= s) {\n    return Math.round(ms / s) + 's';\n  }\n  return ms + 'ms';\n}\n\n/**\n * Long format for `ms`.\n *\n * @param {Number} ms\n * @return {String}\n * @api private\n */\n\nfunction fmtLong(ms) {\n  return plural(ms, d, 'day') ||\n    plural(ms, h, 'hour') ||\n    plural(ms, m, 'minute') ||\n    plural(ms, s, 'second') ||\n    ms + ' ms';\n}\n\n/**\n * Pluralization helper.\n */\n\nfunction plural(ms, n, name) {\n  if (ms < n) {\n    return;\n  }\n  if (ms < n * 1.5) {\n    return Math.floor(ms / n) + ' ' + name;\n  }\n  return Math.ceil(ms / n) + ' ' + name + 's';\n}\n"],"names":["module","exports","equal","a","b","constructor","length","i","keys","Array","isArray","RegExp","source","flags","valueOf","Object","prototype","toString","hasOwnProperty","call","key","stdOnEnd","script","cb","onload","this","onerror","Error","src","ieOnEnd","onreadystatechange","readyState","opts","head","document","getElementsByTagName","createElement","type","charset","async","attrs","attr","setAttribute","setAttributes","text","appendChild","shouldUpdateVideo","prevProps","props","_a","_b","videoId","prevVars","playerVars","vars","start","end","filterResetOptions","arguments","undefined","__spreadProps","__spreadValues","height","width","autoplay","shouldResetPlayer","isEqual","shouldUpdatePlayer","_c","_d","id","className","iframeClassName","title","propTypes","PropTypes","style","loading","onReady","onError","onPlay","onPause","onEnd","onStateChange","onPlaybackRateChange","onPlaybackQualityChange","YouTube","_React$Component","_YouTube","_this","_classCallCheck","_callSuper","destroyPlayerPromise","onPlayerReady","event","onPlayerError","onPlayerStateChange","_e","_f","_g","_h","data","PlayerState","ENDED","PLAYING","PAUSED","onPlayerPlaybackRateChange","onPlayerPlaybackQualityChange","destroyPlayer","internalPlayer","destroy","then","Promise","resolve","createPlayer","playerOpts","youTubePlayer","container","on","getIframe","iframe","resetPlayer","updatePlayer","removeAttribute","getInternalPlayer","updateVideo","startSeconds","endSeconds","loadVideoById","cueVideoById","stopVideo","refContainer","_inherits","_createClass","value","_regeneratorRuntime","mark","_callee","wrap","_context","prev","next","stop","React","ref","defaultProps","UNSTARTED","BUFFERING","CUED","YouTube_default","Sister","sister","events","name","handler","listener","unshift","off","index","indexOf","splice","trigger","listeners","defineProperty","obj","_PlayerStates","require","_PlayerStates2","__esModule","default","pauseVideo","acceptableStates","stateChangeRequired","playVideo","seekTo","timeout","_debug2","_interopRequireDefault","_functionNames2","_eventNames2","_FunctionStateMap2","debug","YouTubePlayer","emitter","_loop","eventName","onEventName","slice","toUpperCase","_iteratorNormalCompletion","_didIteratorError","_iteratorError","_step","_iterator","Symbol","iterator","done","err","return","playerAPIReady","strictState","functions","_loop2","functionName","_len","args","_key","player","stateInfo","playerState","getPlayerState","apply","addEventListener","playerStateAfterChange","setTimeout","removeEventListener","clearTimeout","_len2","_key2","_iteratorNormalCompletion2","_didIteratorError2","_iteratorError2","_step2","_iterator2","VIDEO_CUED","_typeof","_sister2","_loadYouTubeIframeApi2","_YouTubePlayer2","youtubeIframeAPI","maybeElementId","options","getElementById","proxyEvents","Function","YT","Player","playerApi","promisifyPlayer","_loadScript","_loadScript2","window","protocol","location","error","previous","onYouTubeIframeAPIReady","load","r","storage","e","process","DEBUG","log","console","formatArgs","useColors","namespace","humanize","diff","c","color","lastC","replace","match","save","namespaces","removeItem","documentElement","WebkitAppearance","firebug","exception","table","navigator","userAgent","toLowerCase","parseInt","$1","chrome","local","localStorage","localstorage","colors","formatters","j","v","JSON","stringify","message","enable","prevTime","createDebug","enabled","self","curr","Date","ms","coerce","format","formatter","val","bind","hash","charCodeAt","Math","abs","selectColor","init","stack","disable","names","skips","split","len","push","substr","test","s","m","h","d","y","plural","n","floor","ceil","str","String","exec","parseFloat","parse","isNaN","long","round","fmtShort"],"sourceRoot":""}