{"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":""}