{"version":3,"sources":["webpack:///./node_modules/@brightcove/player-loader/dist/brightcove-player-loader.es.js","webpack:///./node_modules/global/document.js","webpack:///./node_modules/global/window.js"],"names":["global_document__WEBPACK_IMPORTED_MODULE_0__","__webpack_require__","global_document__WEBPACK_IMPORTED_MODULE_0___default","n","global_window__WEBPACK_IMPORTED_MODULE_1__","global_window__WEBPACK_IMPORTED_MODULE_1___default","_extends","Object","assign","target","i","arguments","length","source","key","prototype","hasOwnProperty","call","apply","this","_typeof","Symbol","iterator","obj","constructor","JSON_ALLOWED_PARAMS","IFRAME_ALLOWED_QUERY_PARAMS","getQueryString","params","keys","filter","k","indexOf","reduce","qs","value","undefined","encodeURIComponent","JSON","stringify","x","String","trim","getQueryParamValue","brightcovePlayerUrl","_ref","accountId","_ref$base","base","_ref$playerId","playerId","_ref$embedId","embedId","_ref$iframe","iframe","_ref$minified","minified","_ref$queryParams","queryParams","ext","charAt","substring","VERSION","DEFAULTS","embedType","Promise","a","refNodeInsert","EMBED_TAG_NAME_VIDEO","EMBED_TAG_NAME_VIDEOJS","EMBED_TYPE_IN_PAGE","EMBED_TYPE_IFRAME","REF_NODE_INSERT_APPEND","REF_NODE_INSERT_PREPEND","REF_NODE_INSERT_BEFORE","REF_NODE_INSERT_AFTER","REF_NODE_INSERT_REPLACE","JSON_ALLOWED_ATTRS","BASE_URL","urls","playerUrl","embedOptions","unminified","baseUrl","isEl","el","Boolean","nodeType","isElInDom","parentNode","wrapEmbed","embed","pip","createElement","classList","add","appendChild","wrapPip","responsive","style","position","top","right","bottom","left","width","height","aspectRatio","iframeHorizontalPlaylist","maxWidth","split","map","Number","inner","paddingTop","outer","display","wrapResponsive","createEmbed","refNode","refNodeParent","wrapped","insertBefore","nextElementSibling","replaceChild","firstChild","playlist","playlistTagName","legacy","insertEmbed","onEmbedCreated","result","setAttribute","src","createIframeEmbed","paramsToAttrs","adConfigId","applicationId","catalogSearch","catalogSequence","deliveryConfigId","playlistId","playlistVideoId","videoId","tagName","forEach","createInPageEmbed","actualCache","Map","playerScriptCache","clear","fn","props","has","set","REGEX_PLAYER_EMBED","getBcGlobalKeys","bc","test","disposeAll","videojs","players","p","dispose","env","Array","slice","querySelectorAll","removeChild","matches","match","isFn","checkParams","options","Error","isValidEmbedType","isValidTagName","isValidRootInsert","initPlayer","resolve","reject","player","bcinfo","PLAYER_LOADER","message","type","ref","loadPlayer","querySelector","resolveRefNode","script","onload","onerror","async","charset","brightcovePlayerLoader","parameters","onSuccess","onFailure","err","expose","defineProperty","configurable","enumerable","writable","arr","__webpack_exports__","global","doccy","topLevel","window","minDoc","document","module","exports","win","self"],"mappings":"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","file":"vendors~components-VideoBrightcove.chunks.js","sourcesContent":["/*! @name @brightcove/player-loader @version 1.7.1 @license Apache-2.0 */\nimport document from 'global/document';\nimport window from 'global/window';\n\nfunction _extends() {\n  _extends = Object.assign || function (target) {\n    for (var i = 1; i < arguments.length; i++) {\n      var source = arguments[i];\n\n      for (var key in source) {\n        if (Object.prototype.hasOwnProperty.call(source, key)) {\n          target[key] = source[key];\n        }\n      }\n    }\n\n    return target;\n  };\n\n  return _extends.apply(this, arguments);\n}\n\nvar version = \"1.7.1\";\n\n/*! @name @brightcove/player-url @version 1.2.0 @license Apache-2.0 */\nvar version$1 = \"1.2.0\";\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) {\n  return typeof obj;\n} : function (obj) {\n  return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n};\n\n// The parameters that may include JSON.\nvar JSON_ALLOWED_PARAMS = ['catalogSearch', 'catalogSequence'];\n\n// The parameters that may be set as query string parameters for iframes.\nvar IFRAME_ALLOWED_QUERY_PARAMS = ['adConfigId', 'applicationId', 'catalogSearch', 'catalogSequence', 'playlistId', 'playlistVideoId', 'videoId'];\n\n/**\n * Gets the value of a parameter and encodes it as a string.\n *\n * For certain keys, JSON is allowed and will be encoded.\n *\n * @private\n * @param   {Object} params\n *          A parameters object. See README for details.\n *\n * @param   {string} key\n *          The key in the params object.\n *\n * @return  {string|undefined}\n *          The encoded value - or `undefined` if none.\n */\nvar getQueryParamValue = function getQueryParamValue(params, key) {\n\n  if (!params || params[key] === undefined) {\n    return;\n  }\n\n  // If it's not a string, such as with a catalog search or sequence, we\n  // try to encode it as JSON.\n  if (typeof params[key] !== 'string' && JSON_ALLOWED_PARAMS.indexOf(key) !== -1) {\n    try {\n      return encodeURIComponent(JSON.stringify(params[key]));\n    } catch (x) {\n\n      // If it's not a string and we can't encode as JSON, it's ignored entirely.\n      return;\n    }\n  }\n\n  return encodeURIComponent(String(params[key]).trim()) || undefined;\n};\n\n/**\n * In some cases, we need to add query string parameters to an iframe URL.\n *\n * @private\n * @param   {Object} params\n *          An object of query parameters.\n *\n * @return  {string}\n *          A query string starting with `?`. If no valid parameters are given,\n *          returns an empty string.\n */\nvar getQueryString = function getQueryString(params) {\n  return Object.keys(params).filter(function (k) {\n    return IFRAME_ALLOWED_QUERY_PARAMS.indexOf(k) !== -1;\n  }).reduce(function (qs, k) {\n    var value = getQueryParamValue(params, k);\n\n    if (value !== undefined) {\n      qs += qs ? '&' : '?';\n      qs += encodeURIComponent(k) + '=' + value;\n    }\n\n    return qs;\n  }, '');\n};\n\n/**\n * Generate a URL to a Brightcove Player.\n *\n * @param  {Object}  params\n *         A set of parameters describing the player URL to create.\n *\n * @param  {string}  params.accountId\n *         A Brightcove account ID.\n *\n * @param  {string}  [params.playerId=\"default\"]\n *         A Brightcove player ID.\n *\n * @param  {string}  [params.embedId=\"default\"]\n *         A Brightcove player embed ID.\n *\n * @param  {boolean} [params.iframe=false]\n *         Whether to return a URL for an HTML document to be embedded in\n *         an iframe.\n *\n * @param  {boolean} [params.minified=true]\n *         When the `iframe` argument is `false`, this can be used to control\n *         whether the minified or unminified JavaScript URL is returned.\n *\n * @param  {string} [params.base=\"https://players.brightcove.net\"]\n *         A base CDN protocol and hostname. Mainly used for testing.\n *\n * @return {string}\n *         A URL to a Brightcove Player.\n */\nvar brightcovePlayerUrl = function brightcovePlayerUrl(_ref) {\n  var accountId = _ref.accountId,\n      _ref$base = _ref.base,\n      base = _ref$base === undefined ? 'https://players.brightcove.net' : _ref$base,\n      _ref$playerId = _ref.playerId,\n      playerId = _ref$playerId === undefined ? 'default' : _ref$playerId,\n      _ref$embedId = _ref.embedId,\n      embedId = _ref$embedId === undefined ? 'default' : _ref$embedId,\n      _ref$iframe = _ref.iframe,\n      iframe = _ref$iframe === undefined ? false : _ref$iframe,\n      _ref$minified = _ref.minified,\n      minified = _ref$minified === undefined ? true : _ref$minified,\n      _ref$queryParams = _ref.queryParams,\n      queryParams = _ref$queryParams === undefined ? null : _ref$queryParams;\n\n  var ext = '';\n\n  if (iframe) {\n    ext += 'html';\n  } else {\n    if (minified) {\n      ext += 'min.';\n    }\n    ext += 'js';\n  }\n\n  if (base.charAt(base.length - 1) === '/') {\n    base = base.substring(0, base.length - 1);\n  }\n\n  var qs = '';\n\n  if (iframe && queryParams && (typeof queryParams === 'undefined' ? 'undefined' : _typeof(queryParams)) === 'object') {\n    qs = getQueryString(queryParams);\n  }\n\n  accountId = encodeURIComponent(accountId);\n  playerId = encodeURIComponent(playerId);\n  embedId = encodeURIComponent(embedId);\n\n  return base + '/' + accountId + '/' + playerId + '_' + embedId + '/index.' + ext + qs;\n};\n\n/**\n * The version of this module.\n *\n * @type {string}\n */\nbrightcovePlayerUrl.VERSION = version$1;\n\nvar DEFAULTS = {\n  embedId: 'default',\n  embedType: 'in-page',\n  playerId: 'default',\n  Promise: window.Promise,\n  refNodeInsert: 'append'\n};\nvar DEFAULT_ASPECT_RATIO = '16:9';\nvar DEFAULT_IFRAME_HORIZONTAL_PLAYLIST = false;\nvar DEFAULT_MAX_WIDTH = '100%';\nvar EMBED_TAG_NAME_VIDEO = 'video';\nvar EMBED_TAG_NAME_VIDEOJS = 'video-js';\nvar EMBED_TYPE_IN_PAGE = 'in-page';\nvar EMBED_TYPE_IFRAME = 'iframe';\nvar REF_NODE_INSERT_APPEND = 'append';\nvar REF_NODE_INSERT_PREPEND = 'prepend';\nvar REF_NODE_INSERT_BEFORE = 'before';\nvar REF_NODE_INSERT_AFTER = 'after';\nvar REF_NODE_INSERT_REPLACE = 'replace';\nvar JSON_ALLOWED_ATTRS = ['catalogSearch', 'catalogSequence'];\n\nvar BASE_URL = 'https://players.brightcove.net/';\n/**\n * Gets the URL to a player on CDN.\n *\n * @private\n * @param  {Object} params\n *         A parameters object. See README for details.\n *\n * @return {string}\n *         A URL.\n */\n\nvar getUrl = function getUrl(params) {\n  if (params.playerUrl) {\n    return params.playerUrl;\n  }\n\n  var accountId = params.accountId,\n      playerId = params.playerId,\n      embedId = params.embedId,\n      embedOptions = params.embedOptions;\n  var iframe = params.embedType === EMBED_TYPE_IFRAME;\n  return brightcovePlayerUrl({\n    accountId: accountId,\n    playerId: playerId,\n    embedId: embedId,\n    iframe: iframe,\n    base: BASE_URL,\n    // The unminified embed option is the exact reverse of the minified option\n    // here.\n    minified: embedOptions ? !embedOptions.unminified : true,\n    // Pass the entire params object as query params. This is safe because\n    // @brightcove/player-url only accepts a whitelist of parameters. Anything\n    // else will be ignored.\n    queryParams: params\n  });\n};\n/**\n * Function used to get the base URL - primarily for testing.\n *\n * @private\n * @return {string}\n *         The current base URL.\n */\n\n\nvar getBaseUrl = function getBaseUrl() {\n  return BASE_URL;\n};\n/**\n * Function used to set the base URL - primarily for testing.\n *\n * @private\n * @param {string} baseUrl\n *        A new base URL (instead of Brightcove CDN).\n */\n\n\nvar setBaseUrl = function setBaseUrl(baseUrl) {\n  BASE_URL = baseUrl;\n};\n\nvar urls = {\n  getUrl: getUrl,\n  getBaseUrl: getBaseUrl,\n  setBaseUrl: setBaseUrl\n};\n\n/**\n * Is this value an element?\n *\n * @param  {Element} el\n *         A maybe element.\n *\n * @return {boolean}\n *         Whether or not the value is a element.\n */\n\nvar isEl = function isEl(el) {\n  return Boolean(el && el.nodeType === 1);\n};\n/**\n * Is this value an element with a parent node?\n *\n * @param  {Element} el\n *         A maybe element.\n *\n * @return {boolean}\n *         Whether or not the value is a element with a parent node.\n */\n\n\nvar isElInDom = function isElInDom(el) {\n  return Boolean(isEl(el) && el.parentNode);\n};\n/**\n * Creates an iframe embed code.\n *\n * @private\n * @param  {Object} params\n *         A parameters object. See README for details.\n *\n * @return {Element}\n *         The DOM element that will ultimately be passed to the `bc()` function.\n */\n\n\nvar createIframeEmbed = function createIframeEmbed(params) {\n  var el = document.createElement('iframe');\n  el.setAttribute('allow', 'autoplay;encrypted-media;fullscreen');\n  el.setAttribute('allowfullscreen', 'allowfullscreen');\n  el.src = urls.getUrl(params);\n  return el;\n};\n/**\n * Creates an in-page embed code.\n *\n * @private\n * @param  {Object} params\n *         A parameters object. See README for details.\n *\n * @return {Element}\n *         The DOM element that will ultimately be passed to the `bc()` function.\n */\n\n\nvar createInPageEmbed = function createInPageEmbed(params) {\n  var embedOptions = params.embedOptions; // We DO NOT include the data-account, data-player, or data-embed attributes\n  // here because we will be manually initializing the player.\n\n  var paramsToAttrs = {\n    adConfigId: 'data-ad-config-id',\n    applicationId: 'data-application-id',\n    catalogSearch: 'data-catalog-search',\n    catalogSequence: 'data-catalog-sequence',\n    deliveryConfigId: 'data-delivery-config-id',\n    playlistId: 'data-playlist-id',\n    playlistVideoId: 'data-playlist-video-id',\n    videoId: 'data-video-id'\n  };\n  var tagName = embedOptions && embedOptions.tagName || EMBED_TAG_NAME_VIDEOJS;\n  var el = document.createElement(tagName);\n  Object.keys(paramsToAttrs).filter(function (key) {\n    return params[key];\n  }).forEach(function (key) {\n    var value; // If it's not a string, such as with a catalog search or sequence, we\n    // try to encode it as JSON.\n\n    if (typeof params[key] !== 'string' && JSON_ALLOWED_ATTRS.indexOf(key) !== -1) {\n      try {\n        value = JSON.stringify(params[key]); // If it fails, don't set anything.\n      } catch (x) {\n        return;\n      }\n    } else {\n      value = String(params[key]).trim();\n    }\n\n    el.setAttribute(paramsToAttrs[key], value);\n  });\n  el.setAttribute('controls', 'controls');\n  el.classList.add('video-js');\n  return el;\n};\n/**\n * Wraps an element in responsive intrinsic ratio elements.\n *\n * @private\n * @param  {string} embedType\n *         The type of the embed.\n *\n * @param  {Object} embedOptions\n *         Embed options from the params.\n *\n * @param  {Element} el\n *         The DOM element.\n *\n * @return {Element}\n *         A new element (if needed).\n */\n\n\nvar wrapResponsive = function wrapResponsive(embedType, embedOptions, el) {\n  if (!embedOptions.responsive) {\n    return el;\n  }\n\n  el.style.position = 'absolute';\n  el.style.top = '0px';\n  el.style.right = '0px';\n  el.style.bottom = '0px';\n  el.style.left = '0px';\n  el.style.width = '100%';\n  el.style.height = '100%';\n\n  var responsive = _extends({\n    aspectRatio: DEFAULT_ASPECT_RATIO,\n    iframeHorizontalPlaylist: DEFAULT_IFRAME_HORIZONTAL_PLAYLIST,\n    maxWidth: DEFAULT_MAX_WIDTH\n  }, embedOptions.responsive); // This value is validate at a higher level, so we can trust that it's in the\n  // correct format.\n\n\n  var aspectRatio = responsive.aspectRatio.split(':').map(Number);\n  var inner = document.createElement('div');\n  var paddingTop = aspectRatio[1] / aspectRatio[0] * 100; // For iframes with a horizontal playlist, the playlist takes up 20% of the\n  // vertical space (if shown); so, adjust the vertical size of the embed to\n  // avoid black bars.\n\n  if (embedType === EMBED_TYPE_IFRAME && responsive.iframeHorizontalPlaylist) {\n    paddingTop *= 1.25;\n  }\n\n  inner.style.paddingTop = paddingTop + '%';\n  inner.appendChild(el);\n  var outer = document.createElement('div');\n  outer.style.position = 'relative';\n  outer.style.display = 'block';\n  outer.style.maxWidth = responsive.maxWidth;\n  outer.appendChild(inner);\n  return outer;\n};\n/**\n * Wraps an element in a Picture-in-Picture plugin container.\n *\n * @private\n * @param  {Object} embedOptions\n *         Embed options from the params.\n *\n * @param  {Element} el\n *         The DOM element.\n *\n * @return {Element}\n *         A new element (if needed).\n */\n\n\nvar wrapPip = function wrapPip(embedOptions, el) {\n  if (!embedOptions.pip) {\n    return el;\n  }\n\n  var pip = document.createElement('div');\n  pip.classList.add('vjs-pip-container');\n  pip.appendChild(el);\n  return pip;\n};\n/**\n * Wraps a bare embed element with necessary parent elements, depending on\n * embed options given in params.\n *\n * @private\n * @param  {string} embedType\n *         The type of the embed.\n *\n * @param  {Object} embedOptions\n *         Embed options from the params.\n *\n * @param  {Element} embed\n *         The embed DOM element.\n *\n * @return {Element}\n *         A new element (if needed) or the embed itself.\n */\n\n\nvar wrapEmbed = function wrapEmbed(embedType, embedOptions, embed) {\n  if (!embedOptions) {\n    return embed;\n  }\n\n  return wrapPip(embedOptions, wrapResponsive(embedType, embedOptions, embed));\n};\n/**\n * Inserts a previously-created embed element into the page based on params.\n *\n * @private\n * @param  {Object} params\n *         A parameters object. See README for details.\n *\n * @param  {Element} embed\n *         The embed DOM element.\n *\n * @return {Element}\n *         The embed DOM element.\n */\n\n\nvar insertEmbed = function insertEmbed(params, embed) {\n  var refNode = params.refNode,\n      refNodeInsert = params.refNodeInsert;\n  var refNodeParent = refNode.parentNode; // Wrap the embed, if needed, in container elements to support various\n  // plugins.\n\n  var wrapped = wrapEmbed(params.embedType, params.embedOptions, embed); // Decide where to insert the wrapped embed.\n\n  if (refNodeInsert === REF_NODE_INSERT_BEFORE) {\n    refNodeParent.insertBefore(wrapped, refNode);\n  } else if (refNodeInsert === REF_NODE_INSERT_AFTER) {\n    refNodeParent.insertBefore(wrapped, refNode.nextElementSibling || null);\n  } else if (refNodeInsert === REF_NODE_INSERT_REPLACE) {\n    refNodeParent.replaceChild(wrapped, refNode);\n  } else if (refNodeInsert === REF_NODE_INSERT_PREPEND) {\n    refNode.insertBefore(wrapped, refNode.firstChild || null); // Append is the default.\n  } else {\n    refNode.appendChild(wrapped);\n  } // If the playlist embed option is provided, we need to add a playlist element\n  // immediately after the embed. This has to happen after the embed is inserted\n  // into the DOM (above).\n\n\n  if (params.embedOptions && params.embedOptions.playlist) {\n    var playlistTagName = params.embedOptions.playlist.legacy ? 'ul' : 'div';\n    var playlist = document.createElement(playlistTagName);\n    playlist.classList.add('vjs-playlist');\n    embed.parentNode.insertBefore(playlist, embed.nextElementSibling || null);\n  } // Clean up internal reference to the refNode to avoid potential memory\n  // leaks in case the params get persisted somewhere. We won't need it beyond\n  // this point.\n\n\n  params.refNode = null; // Return the original embed element that can be passed to `bc()`.\n\n  return embed;\n};\n/**\n * Handles `onEmbedCreated` callback invocation.\n *\n * @private\n * @param  {Object} params\n *         A parameters object. See README for details.\n *\n * @param  {Element} embed\n *         The embed DOM element.\n *\n * @return {Element}\n *         A possibly-new DOM element.\n */\n\n\nvar onEmbedCreated = function onEmbedCreated(params, embed) {\n  if (typeof params.onEmbedCreated !== 'function') {\n    return embed;\n  }\n\n  var result = params.onEmbedCreated(embed);\n\n  if (isEl(result)) {\n    return result;\n  }\n\n  return embed;\n};\n/**\n * Creates an embed code of the appropriate type, runs any customizations\n * necessary, and inserts it into the DOM.\n *\n * @param  {Object} params\n *         A parameters object. See README for details.\n *\n * @return {Element}\n *         The DOM element that will ultimately be passed to the `bc()`\n *         function. Even when customized or wrapped, the return value will be\n *         the target element.\n */\n\n\nvar createEmbed = function createEmbed(params) {\n  var embed = params.embedType === EMBED_TYPE_IFRAME ? createIframeEmbed(params) : createInPageEmbed(params);\n  return insertEmbed(params, onEmbedCreated(params, embed));\n};\n\n//\n// The keys follow the format \"accountId_playerId_embedId\" where accountId is\n// optional and defaults to \"*\". This happens when we detect pre-existing\n// player globals.\n\nvar actualCache = new window.Map();\n/**\n * Get the cache key given some properties.\n *\n * @private\n * @param  {Object} props\n *         Properties describing the player record to cache.\n *\n * @param  {string} props.playerId\n *         A player ID.\n *\n * @param  {string} props.embedId\n *         An embed ID.\n *\n * @param  {string} [props.accountId=\"*\"]\n *         An optional account ID. This is optional because when we search for\n *         pre-existing players to avoid downloads, we will not necessarily\n *         know the account ID.\n *\n * @return {string}\n *         A key to be used in the script cache.\n */\n\nvar key = function key(_ref) {\n  var accountId = _ref.accountId,\n      playerId = _ref.playerId,\n      embedId = _ref.embedId;\n  return (accountId || '*') + \"_\" + playerId + \"_\" + embedId;\n};\n/**\n * Add an entry to the script cache.\n *\n * @private\n * @param  {Object} props\n *         Properties describing the player record to cache.\n *\n * @param  {string} props.playerId\n *         A player ID.\n *\n * @param  {string} props.embedId\n *         An embed ID.\n *\n * @param  {string} [props.accountId=\"*\"]\n *         An optional account ID. This is optional because when we search for\n *         pre-existing players to avoid downloads, we will not necessarily\n *         know the account ID. If not given, we assume that no script was\n *         downloaded for this player.\n */\n\n\nvar store = function store(props) {\n  actualCache.set(key(props), props.accountId ? urls.getUrl(props) : '');\n};\n/**\n * Checks if the script cache has an entry.\n *\n * @private\n * @param  {Object} props\n *         Properties describing the player record to cache.\n *\n * @param  {string} props.playerId\n *         A player ID.\n *\n * @param  {string} props.embedId\n *         An embed ID.\n *\n * @param  {string} [props.accountId=\"*\"]\n *         An optional account ID. This is optional because when we search for\n *         pre-existing players to avoid downloads, we will not necessarily\n *         know the account ID.\n *\n * @return {boolean}\n *         Will be `true` if there is a matching cache entry.\n */\n\n\nvar has = function has(props) {\n  return actualCache.has(key(props));\n};\n/**\n * Gets a cache entry.\n *\n * @private\n * @param  {Object} props\n *         Properties describing the player record to cache.\n *\n * @param  {string} props.playerId\n *         A player ID.\n *\n * @param  {string} props.embedId\n *         An embed ID.\n *\n * @param  {string} [props.accountId=\"*\"]\n *         An optional account ID. This is optional because when we search for\n *         pre-existing players to avoid downloads, we will not necessarily\n *         know the account ID.\n *\n * @return {string}\n *         A cache entry - a URL or empty string.\n *\n */\n\n\nvar get = function get(props) {\n  return actualCache.get(key(props));\n};\n/**\n * Clears the cache.\n */\n\n\nvar clear = function clear() {\n  actualCache.clear();\n};\n/**\n * Iterates over the cache.\n *\n * @param  {Function} fn\n *         A callback function that will be called with a value and a key\n *         for each item in the cache.\n */\n\n\nvar forEach = function forEach(fn) {\n  actualCache.forEach(fn);\n};\n\nvar playerScriptCache = {\n  clear: clear,\n  forEach: forEach,\n  get: get,\n  has: has,\n  key: key,\n  store: store\n};\n\nvar REGEX_PLAYER_EMBED = /^([A-Za-z0-9]+)_([A-Za-z0-9]+)$/;\n/**\n * Gets an array of current per-player/per-embed `bc` globals that are\n * attached to the `bc` global (e.g. `bc.abc123xyz_default`).\n *\n * If `bc` is not defined, returns an empty array.\n *\n * @private\n * @return {string[]}\n *         An array of keys.\n */\n\nvar getBcGlobalKeys = function getBcGlobalKeys() {\n  return window.bc ? Object.keys(window.bc).filter(function (k) {\n    return REGEX_PLAYER_EMBED.test(k);\n  }) : [];\n};\n/**\n * Gets known global object keys that Brightcove Players may create.\n *\n * @private\n * @return {string[]}\n *         An array of global variables that were added during testing.\n */\n\n\nvar getGlobalKeys = function getGlobalKeys() {\n  return Object.keys(window).filter(function (k) {\n    return /^videojs/i.test(k) || /^(bc)$/.test(k);\n  });\n};\n/**\n * Dispose all players from a copy of Video.js.\n *\n * @param  {Function} videojs\n *         A copy of Video.js.\n */\n\n\nvar disposeAll = function disposeAll(videojs) {\n  if (!videojs) {\n    return;\n  }\n\n  Object.keys(videojs.players).forEach(function (k) {\n    var p = videojs.players[k];\n\n    if (p) {\n      p.dispose();\n    }\n  });\n};\n/**\n * Resets environment state.\n *\n * This will dispose ALL Video.js players on the page and remove ALL `bc` and\n * `videojs` globals it finds.\n */\n\n\nvar reset = function reset() {\n  // Remove all script elements from the DOM.\n  playerScriptCache.forEach(function (value, key) {\n    // If no script URL is associated, skip it.\n    if (!value) {\n      return;\n    } // Find all script elements and remove them.\n\n\n    Array.prototype.slice.call(document.querySelectorAll(\"script[src=\\\"\" + value + \"\\\"]\")).forEach(function (el) {\n      return el.parentNode.removeChild(el);\n    });\n  }); // Clear the internal cache that have been downloaded.\n\n  playerScriptCache.clear(); // Dispose any remaining players from the `videojs` global.\n\n  disposeAll(window.videojs); // There may be other `videojs` instances lurking in the bowels of the\n  // `bc` global. This should eliminate any of those.\n\n  getBcGlobalKeys().forEach(function (k) {\n    return disposeAll(window.bc[k].videojs);\n  }); // Delete any global object keys that were created.\n\n  getGlobalKeys().forEach(function (k) {\n    delete window[k];\n  });\n};\n/**\n * At runtime, populate the cache with pre-detected players. This allows\n * people who have bundled their player or included a script tag before this\n * runs to not have to re-download players.\n */\n\n\nvar detectPlayers = function detectPlayers() {\n  getBcGlobalKeys().forEach(function (k) {\n    var matches = k.match(REGEX_PLAYER_EMBED);\n    var props = {\n      playerId: matches[1],\n      embedId: matches[2]\n    };\n\n    if (!playerScriptCache.has(props)) {\n      playerScriptCache.store(props);\n    }\n  });\n};\n\nvar env = {\n  detectPlayers: detectPlayers,\n  reset: reset\n};\n\nenv.detectPlayers();\n/**\n * Is this value a function?\n *\n * @private\n * @param  {Function} fn\n *         A maybe function.\n *\n * @return {boolean}\n *         Whether or not the value is a function.\n */\n\nvar isFn = function isFn(fn) {\n  return typeof fn === 'function';\n};\n/**\n * Checks whether an embedType parameter is valid.\n *\n * @private\n * @param  {string} embedType\n *         The value to test.\n *\n * @return {boolean}\n *         Whether the value is valid.\n */\n\n\nvar isValidEmbedType = function isValidEmbedType(embedType) {\n  return embedType === EMBED_TYPE_IN_PAGE || embedType === EMBED_TYPE_IFRAME;\n};\n/**\n * Checks whether an embedOptions.tagName parameter is valid.\n *\n * @private\n * @param  {string} tagName\n *         The value to test.\n *\n * @return {boolean}\n *         Whether the value is valid.\n */\n\n\nvar isValidTagName = function isValidTagName(tagName) {\n  return tagName === EMBED_TAG_NAME_VIDEOJS || tagName === EMBED_TAG_NAME_VIDEO;\n};\n/**\n * Checks whether a refNodeInsert parameter is valid.\n *\n * @private\n * @param  {string} refNodeInsert\n *         The value to test.\n *\n * @return {boolean}\n *         Whether the value is valid.\n */\n\n\nvar isValidRootInsert = function isValidRootInsert(refNodeInsert) {\n  return refNodeInsert === REF_NODE_INSERT_APPEND || refNodeInsert === REF_NODE_INSERT_PREPEND || refNodeInsert === REF_NODE_INSERT_BEFORE || refNodeInsert === REF_NODE_INSERT_AFTER || refNodeInsert === REF_NODE_INSERT_REPLACE;\n};\n/**\n * Checks parameters and throws an error on validation problems.\n *\n * @private\n * @param  {Object} params\n *         A parameters object. See README for details.\n *\n * @throws {Error} If accountId is missing.\n * @throws {Error} If refNode is missing or invalid.\n * @throws {Error} If embedType is missing or invalid.\n * @throws {Error} If attempting to use an iframe embed with options.\n * @throws {Error} If attempting to use embedOptions.responsiveIframe with a\n *                 non-iframe embed.\n * @throws {Error} If refNodeInsert is missing or invalid.\n */\n\n\nvar checkParams = function checkParams(params) {\n  var accountId = params.accountId,\n      embedOptions = params.embedOptions,\n      embedType = params.embedType,\n      options = params.options,\n      refNode = params.refNode,\n      refNodeInsert = params.refNodeInsert;\n\n  if (!accountId) {\n    throw new Error('accountId is required');\n  } else if (!isElInDom(refNode)) {\n    throw new Error('refNode must resolve to a node attached to the DOM');\n  } else if (!isValidEmbedType(embedType)) {\n    throw new Error('embedType is missing or invalid');\n  } else if (embedType === EMBED_TYPE_IFRAME && options) {\n    throw new Error('cannot use options with an iframe embed');\n  } else if (embedOptions && embedOptions.tagName !== undefined && !isValidTagName(embedOptions.tagName)) {\n    throw new Error(\"embedOptions.tagName is invalid (value: \\\"\" + embedOptions.tagName + \"\\\")\");\n  } else if (embedOptions && embedOptions.responsive && embedOptions.responsive.aspectRatio && !/^\\d+\\:\\d+$/.test(embedOptions.responsive.aspectRatio)) {\n    throw new Error(\"embedOptions.responsive.aspectRatio must be in the \\\"n:n\\\" format (value: \\\"\" + embedOptions.responsive.aspectRatio + \"\\\")\");\n  } else if (!isValidRootInsert(refNodeInsert)) {\n    throw new Error('refNodeInsert is missing or invalid');\n  }\n};\n/**\n * Normalizes a `refNode` param to an element - or `null`.\n *\n * @private\n * @param  {Element|string} refNode\n *         The value of a `refNode` param.\n *\n * @return {Element|null}\n *         A DOM element or `null` if the `refNode` was given as a string and\n *         did not match an element.\n */\n\n\nvar resolveRefNode = function resolveRefNode(refNode) {\n  if (isElInDom(refNode)) {\n    return refNode;\n  }\n\n  if (typeof refNode === 'string') {\n    return document.querySelector(refNode);\n  }\n\n  return null;\n};\n/**\n * Initializes a player and returns it.\n *\n * @private\n * @param  {Object} params\n *         A parameters object. See README for details.\n *\n * @param  {Element} embed\n *         An element that will be passed to the `bc()` function.\n *\n * @param  {Function} resolve\n *         A function to call if a player is successfully initialized.\n *\n * @param  {Function} reject\n *         A function to call if a player fails to be initialized.\n *\n * @return {Object}\n *         A success object whose `ref` is a player.\n */\n\n\nvar initPlayer = function initPlayer(params, embed, resolve, reject) {\n  var embedId = params.embedId,\n      playerId = params.playerId;\n  var bc = window.bc[playerId + \"_\" + embedId] || window.bc;\n\n  if (!bc) {\n    return reject(new Error(\"missing bc function for \" + playerId));\n  }\n\n  playerScriptCache.store(params);\n  var player;\n\n  try {\n    player = bc(embed, params.options); // Add a PLAYER_LOADER property to bcinfo to indicate this player was\n    // loaded via that mechanism.\n\n    if (player.bcinfo) {\n      player.bcinfo.PLAYER_LOADER = true;\n    }\n  } catch (x) {\n    var message = 'Could not initialize the Brightcove Player.'; // Update the rejection message based on known conditions that can cause it.\n\n    if (params.embedOptions.tagName === EMBED_TAG_NAME_VIDEOJS) {\n      message += ' You are attempting to embed using a \"video-js\" element.' + ' Please ensure that your Player is v6.11.0 or newer in order to' + ' support this embed type. Alternatively, pass `\"video\"` for' + ' `embedOptions.tagName`.';\n    }\n\n    return reject(new Error(message));\n  }\n\n  resolve({\n    type: EMBED_TYPE_IN_PAGE,\n    ref: player\n  });\n};\n/**\n * Loads a player from CDN and embeds it.\n *\n * @private\n * @param  {Object} params\n *         A parameters object. See README for details.\n *\n * @param  {Function} resolve\n *         A function to call if a player is successfully initialized.\n *\n * @param  {Function} reject\n *         A function to call if a player fails to be initialized.\n */\n\n\nvar loadPlayer = function loadPlayer(params, resolve, reject) {\n  params.refNode = resolveRefNode(params.refNode);\n  checkParams(params);\n  var refNode = params.refNode,\n      refNodeInsert = params.refNodeInsert; // Store a reference to the refNode parent. When we use the replace method,\n  // we'll need it as the location to store the script element.\n\n  var refNodeParent = refNode.parentNode;\n  var embed = createEmbed(params); // If this is an iframe, all we need to do is create the embed code and\n  // inject it. Because there is no reliable way to hook into an iframe from\n  // the parent page, we simply resolve immediately upon creating the embed.\n\n  if (params.embedType === EMBED_TYPE_IFRAME) {\n    resolve({\n      type: EMBED_TYPE_IFRAME,\n      ref: embed\n    });\n    return;\n  } // If we've already downloaded this script or detected a matching global, we\n  // should have the proper `bc` global and can bypass the script creation\n  // process.\n\n\n  if (playerScriptCache.has(params)) {\n    return initPlayer(params, embed, resolve, reject);\n  }\n\n  var script = document.createElement('script');\n\n  script.onload = function () {\n    return initPlayer(params, embed, resolve, reject);\n  };\n\n  script.onerror = function () {\n    reject(new Error('player script could not be downloaded'));\n  };\n\n  script.async = true;\n  script.charset = 'utf-8';\n  script.src = urls.getUrl(params);\n\n  if (refNodeInsert === REF_NODE_INSERT_REPLACE) {\n    refNodeParent.appendChild(script);\n  } else {\n    refNode.appendChild(script);\n  }\n};\n/**\n * A function for asynchronously loading a Brightcove Player into a web page.\n *\n * @param  {Object} parameters\n *         A parameters object. See README for details.\n *\n * @return {Promise|undefined}\n *         A Promise, if possible.\n */\n\n\nvar brightcovePlayerLoader = function brightcovePlayerLoader(parameters) {\n  var params = _extends({}, DEFAULTS, parameters);\n\n  var Promise = params.Promise,\n      onSuccess = params.onSuccess,\n      onFailure = params.onFailure; // When Promise is not available or any success/failure callback is given,\n  // do not attempt to use Promises.\n\n  if (!isFn(Promise) || isFn(onSuccess) || isFn(onFailure)) {\n    return loadPlayer(params, isFn(onSuccess) ? onSuccess : function () {}, isFn(onFailure) ? onFailure : function (err) {\n      throw err;\n    });\n  } // Promises are supported, use 'em.\n\n\n  return new Promise(function (resolve, reject) {\n    return loadPlayer(params, resolve, reject);\n  });\n};\n/**\n * Expose a non-writable, non-configurable property on the\n * `brightcovePlayerLoader` function.\n *\n * @private\n * @param  {string} key\n *         The property key.\n *\n * @param  {string|Function} value\n *         The value.\n */\n\n\nvar expose = function expose(key, value) {\n  Object.defineProperty(brightcovePlayerLoader, key, {\n    configurable: false,\n    enumerable: true,\n    value: value,\n    writable: false\n  });\n};\n/**\n * Get the base URL for players. By default, this will be the Brightcove CDN.\n *\n * @return {string}\n *         The current base URL.\n */\n\n\nexpose('getBaseUrl', function () {\n  return urls.getBaseUrl();\n});\n/**\n * Set the base URL for players. By default, this will be the Brightcove CDN,\n * but can be overridden with this function.\n *\n * @param {string} baseUrl\n *        A new base URL (instead of Brightcove CDN).\n */\n\nexpose('setBaseUrl', function (baseUrl) {\n  urls.setBaseUrl(baseUrl);\n});\n/**\n * Get the URL for a player.\n */\n\nexpose('getUrl', function (options) {\n  return urls.getUrl(options);\n});\n/**\n * Completely resets global state.\n *\n * This will dispose ALL Video.js players on the page and remove ALL `bc` and\n * `videojs` globals it finds.\n */\n\nexpose('reset', function () {\n  return env.reset();\n}); // Define some read-only constants on the exported function.\n\n[['EMBED_TAG_NAME_VIDEO', EMBED_TAG_NAME_VIDEO], ['EMBED_TAG_NAME_VIDEOJS', EMBED_TAG_NAME_VIDEOJS], ['EMBED_TYPE_IN_PAGE', EMBED_TYPE_IN_PAGE], ['EMBED_TYPE_IFRAME', EMBED_TYPE_IFRAME], ['REF_NODE_INSERT_APPEND', REF_NODE_INSERT_APPEND], ['REF_NODE_INSERT_PREPEND', REF_NODE_INSERT_PREPEND], ['REF_NODE_INSERT_BEFORE', REF_NODE_INSERT_BEFORE], ['REF_NODE_INSERT_AFTER', REF_NODE_INSERT_AFTER], ['REF_NODE_INSERT_REPLACE', REF_NODE_INSERT_REPLACE], ['VERSION', version]].forEach(function (arr) {\n  expose(arr[0], arr[1]);\n});\n\nexport default brightcovePlayerLoader;\n","var topLevel = typeof global !== 'undefined' ? global :\n    typeof window !== 'undefined' ? window : {}\nvar minDoc = require('min-document');\n\nvar doccy;\n\nif (typeof document !== 'undefined') {\n    doccy = document;\n} else {\n    doccy = topLevel['__GLOBAL_DOCUMENT_CACHE@4'];\n\n    if (!doccy) {\n        doccy = topLevel['__GLOBAL_DOCUMENT_CACHE@4'] = minDoc;\n    }\n}\n\nmodule.exports = doccy;\n","var win;\n\nif (typeof window !== \"undefined\") {\n    win = window;\n} else if (typeof global !== \"undefined\") {\n    win = global;\n} else if (typeof self !== \"undefined\"){\n    win = self;\n} else {\n    win = {};\n}\n\nmodule.exports = win;\n"],"sourceRoot":""}