{"version":3,"sources":["brightcove-player-ajax-load.js"],"names":["e","t","n","r","s","o","u","a","require","i","Error","f","exports","call","length","1","module","global","factory","document","w","window","this","noGlobal","isFunction","obj","nodeType","item","isWindow","arr","getProto","Object","getPrototypeOf","slice","flat","array","concat","apply","push","indexOf","class2type","toString","hasOwn","hasOwnProperty","fnToString","ObjectFunctionString","support","preservedScriptAttributes","type","src","nonce","noModule","DOMEval","code","node","doc","val","script","createElement","text","getAttribute","setAttribute","head","appendChild","parentNode","removeChild","toType","version","rhtmlSuffix","jQuery","selector","context","fn","init","prototype","jquery","constructor","toArray","get","num","pushStack","elems","ret","merge","prevObject","each","callback","map","elem"],"mappings":"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","file":"brightcove-players.min.js","sourcesContent":["var $j = require('jquery');\r\nvar hideTranscript = require('./brightcove-hide-transcript');\r\nvar initializePlaylist = require('./brightcove-playlist.js');\r\nvar showCustomErrorOnTimeout = require(\"./brightcove-show-customError.js\");\r\n\r\n\r\n\r\nwindow.bcPlayerAjaxLoader = function bcPlayerAjaxLoader(renderingUniqueId, reloadOnCookieAccept) {\r\n // #region pseudo-constants\r\n this.consentCookieName = 'OptanonConsent';\r\n this.trackingGroupAcceptedSubstring = ',4:1';\r\n this.requiredAjaxDataProperties = ['datasourceItemId', 'mediaItemId', 'playerId'];\r\n this.loadingTag = '
';\r\n this.uri = '/api/sitecore/MediaFrameworkAjax/RenderVideoAjax';\r\n // #endregion pseudo-constants\r\n\r\n\r\n // #region settings\r\n this.renderingUniqueId = renderingUniqueId;\r\n this.selector = `[data-video-id=${this.renderingUniqueId}]`;\r\n this.reloadOnCookieAccept = !!reloadOnCookieAccept;\r\n // #endregion settings\r\n\r\n\r\n // #region module state variables\r\n this.playerLoadData = null;\r\n this.firstLoadComplete = false;\r\n this.newReloadInProgress = false;\r\n // #endregion module state variables\r\n\r\n this.$playerContainer = function () { return $j(this.selector); }\r\n\r\n this.getDecodedConsentCookie = function () {\r\n return window.decodeURIComponent(\r\n window.GenericUtilities.getCookieByName(this.consentCookieName)\r\n );\r\n }\r\n\r\n this.currentConsentCookieState = this.getDecodedConsentCookie();\r\n\r\n // TODO: move to generic js utility file\r\n this.xOr = function (expression1, expression2) {\r\n return !expression1 !== !expression2;\r\n };\r\n\r\n // TODO: move to generic js utility file\r\n this.isObject = function isObject(item) {\r\n return (typeof item === 'object' && !Array.isArray(item) && item !== null);\r\n }\r\n\r\n this.verifyData = function verifyData() {\r\n var self = this;\r\n this.requiredAjaxDataProperties.forEach(function (property) {\r\n if (self.playerLoadData[property] === undefined) {\r\n return;\r\n }\r\n });\r\n }\r\n\r\n this.cookieHasChanged = function () {\r\n var newConsentCookie = this.getDecodedConsentCookie();\r\n var hasChanged = this.xOr(\r\n this.trackingCookieIsAccepted(newConsentCookie),\r\n this.trackingCookieIsAccepted(this.currentConsentCookieState)\r\n );\r\n this.currentConsentCookieState = newConsentCookie;\r\n return hasChanged;\r\n }\r\n\r\n this.trackingCookieIsAccepted = function (consentCookie) {\r\n if (!consentCookie) consentCookie = this.getDecodedConsentCookie();\r\n return consentCookie.indexOf(this.trackingGroupAcceptedSubstring) > -1\r\n }\r\n\r\n this.shouldReloadIfCookiesAreAccepted = function () { return reloadOnCookieAccept && !this.trackingCookieIsAccepted(); }\r\n\r\n // Cookie polling\r\n\r\n this.cookieWatcherForPlayerSwitch = function cookieWatcherForPlayerSwitch() {\r\n\r\n if (this.newReloadInProgress) {\r\n // Do not monitor cookie status while load is in progress.\r\n return;\r\n\r\n } else if (!this.firstLoadComplete) {\r\n setTimeout(this.cookieWatcherForPlayerSwitch.bind(this), 500);\r\n return;\r\n } else {\r\n if (!this.cookieHasChanged()) {\r\n setTimeout(this.cookieWatcherForPlayerSwitch.bind(this), 500);\r\n return;\r\n } else {\r\n this.newReloadInProgress = true;\r\n this.ajaxLoad();\r\n return;\r\n }\r\n }\r\n }\r\n\r\n this.ajaxLoad = function ajaxLoad(data) {\r\n var self = this;\r\n\r\n\r\n if (this.isObject(data)) {\r\n this.playerLoadData = data;\r\n }\r\n this.verifyData();\r\n\r\n this.$playerContainer().html(this.loadingTag);\r\n\r\n showCustomErrorOnTimeout(this.$playerContainer());\r\n\r\n $j.ajax({\r\n url: this.uri,\r\n data: this.playerLoadData,\r\n type: 'POST',\r\n cache: false,\r\n success: function (data, status, jqXhr) {\r\n if (status !== 'success') {\r\n self.$playerContainer().html('');\r\n return;\r\n }\r\n\r\n if (!data.BrightcovePlayerId) {\r\n self.$playerContainer().html('');\r\n return;\r\n }\r\n\r\n // TODO: This should be parameterized, but is coming back as \"undefined\" from the AJAX call.\r\n data.AccountId = '105925302001';\r\n\r\n var s = document.createElement('script');\r\n s.src = `//players.brightcove.net/${data.AccountId}/${data.BrightcovePlayerId}_default/index.min.js`;\r\n document.body.appendChild(s);\r\n\r\n var t = document.createElement('script');\r\n t.src = `//p3.3playmedia.com/p3sdk.current.js`;\r\n document.body.appendChild(t);\r\n\r\n function intializePlayers() {\r\n \r\n let getContainer = new Promise((resolve, reject) => {\r\n waitForContainerElement(resolve);\r\n });\r\n\r\n function waitForContainerElement(resolve) {\r\n var $configElement = self.$playerContainer().html(data.AjaxRequestResultHtml);\r\n if ($configElement.length === 0) {\r\n console.warn(\"The data HTML did not get placed onto the page\");\r\n } else {\r\n \r\n resolve($configElement);\r\n }\r\n }\r\n getContainer.then(function ($container) {\r\n setTimeout(function () { initializePlaylist($container)}, 3000);\r\n });\r\n }\r\n\r\n intializePlayers();\r\n\r\n\r\n\r\n },\r\n error: function () {\r\n self.$playerContainer().html('');\r\n },\r\n complete: function () {\r\n\r\n // Failsafe error message if the loading tag never gets replaced.\r\n if (self.$playerContainer().html() === self.loadingTag) {\r\n self.$playerContainer().html('');\r\n }\r\n\r\n\r\n var trySetVariables = function () {\r\n var videoNode = self.$playerContainer().find('video');\r\n\r\n if (!window.hasOwnProperty('bc') || videoNode.length === 0) {\r\n setTimeout(trySetVariables, 1000);\r\n return;\r\n }\r\n\r\n var id = videoNode[0].id;\r\n window.bc(id);\r\n\r\n hideTranscript(self.$playerContainer());\r\n\r\n // Cookie watcher code.\r\n self.newReloadInProgress = false;\r\n if (!self.firstLoadComplete) { self.firstLoadComplete = true; }\r\n\r\n if (self.shouldReloadIfCookiesAreAccepted()) {\r\n self.cookieWatcherForPlayerSwitch();\r\n }\r\n\r\n $('.p3sdk-container').each(function (i, item) {\r\n var id = $(this).attr('player_id');\r\n $(item).find('.mf-player-container .video-js').attr('id', id);\r\n $(item).find('.mf-player-container video').attr('id', id + '_html5_api');\r\n });\r\n\r\n }\r\n\r\n trySetVariables();\r\n\r\n }\r\n });\r\n }\r\n};\r\n\r\n"]}