/Isiah Thomas explains how the NBA has failed LeBron James (VIDEO)

Isiah Thomas explains how the NBA has failed LeBron James (VIDEO)

















Isiah Thomas explains how the NBA has failed LeBron James | FOX Sports
































‘, ‘‘, ‘See Full Coverage’, ‘‘, ‘

‘, ‘close‘, ‘

‘, ”, ”];

if (!isSmallContainer) {
var flags = [‘

‘, ‘

‘, ‘
‘, ‘

‘, ‘

vs

‘, ‘

‘, ‘
‘, ‘

‘, ‘

‘].join(”);
endcardLayout.splice(2, 0, flags);
}

endcardLayout = endcardLayout.join(”);
playerElem.insertAdjacentHTML(‘afterend’, endcardLayout);
var endcardElem = document.getElementById(endcardLayoutId);
var endcardCloseElem = document.getElementById(endcardLayoutCloseId);
var endcardFullCavElem = document.getElementById(endcardFullCavId);
var seconds = 0;
var timeInterval = setInterval(function () {
if (seconds === 9) {
endcardCloseClick();
return;
}

seconds++;
}, 1000);

var endacardFullCavClick = function endacardFullCavClick() {
return window.open(fullCoverageUrl, target);
};

if (!isEmbed) {
endcardFullCavElem.addEventListener(‘click’, endacardFullCavClick);
}

var endcardCloseClick = function endcardCloseClick(e) {
endcardCloseElem.removeEventListener(‘click’, endcardCloseClick);
!isEmbed && endcardFullCavElem.removeEventListener(‘click’, endacardFullCavClick);
clearInterval(timeInterval);
endcardElem.remove();
_FsVideoEventHandler__WEBPACK_IMPORTED_MODULE_0__[“default”].dispatchEvent(‘onForcePlay’, {
player: data.player
});
};

endcardCloseElem.addEventListener(‘click’, endcardCloseClick);
}
}]);

return FsVideoWcEndcard;
}();

/* harmony default export */ __webpack_exports__[“default”] = (new FsVideoWcEndcard());

/***/ }),

/***/ “./assets/components/platformPlayer/Pinner.js”:
/*!****************************************************!*
!*** ./assets/components/platformPlayer/Pinner.js ***!
****************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

“use strict”;
__webpack_require__.r(__webpack_exports__);
/* harmony import */ var _components_fsUtils_Viewports__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../components/fsUtils/Viewports */ “./assets/components/fsUtils/Viewports.js”);
function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(“Cannot call a class as a function”); } }

function _defineProperties(target, props) { for (var i = 0; i 0) {
while (i–) {
var el = arr[i];

if (el.elem === ‘Video’ + vid.id || el.elemId === ‘Video’ + vid.id) {
return true;
}
}
}

return false;
}
}, {
key: “loadVideos”,
value: function loadVideos(Player, videoElementsData) {
var sendPageView = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;
var context = this;
var videos = videoElementsData || context.getVideoElementsData();

if (videos.length > 0) {
videos.map(function (videoData) {
if (!window.fngPlayers) window.fngPlayers = [];

if (!context.ArrayContainsVideo(window.fngPlayers, videoData)) {
Object(_foxdcg_fs_segment_analytics__WEBPACK_IMPORTED_MODULE_3__[“getAuthData”])().then(function (res) {
videoData.auth = res;
var videoPlayer = new _components_jw_player_JWPlayer__WEBPACK_IMPORTED_MODULE_1__[“default”](Player, videoData);
videoData.sendPageView = sendPageView;
window.fngPlayers.push(videoPlayer);
});
}
});
}
}
}, {
key: “loadPlatformVideos”,
value: function loadPlatformVideos(FDM_Player, videoElementsData) {
var sendPageView = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;
var context = this;
var videos = videoElementsData || context.getVideoElementsData();

if (videos.length > 0) {
videos.map(function (videoData) {
if (!window.fdmPlayer) window.fdmPlayer = [];

if (!context.ArrayContainsVideo(window.fdmPlayer, videoData)) {
var videoPlayer = new _fsVideo__WEBPACK_IMPORTED_MODULE_0__[“default”]();
videoData.sendPageView = sendPageView;
videoPlayer.initializeFSPlayer(videoData, FDM_Player);
window.fdmPlayer.push(videoPlayer.player);
}
});
}
}
}, {
key: “loadScript”,
value: function loadScript(callback, videoElementsData, sendPageView) {
if (typeof FDM_Player === ‘function’) {
callback(FDM_Player, videoElementsData, sendPageView);
} else {
// Create a new script and setup the basics.
var script = document.createElement(“script”);
var firstScript = document.getElementsByTagName(‘script’)[0];
script.async = false;

script.src = function (loc) {
var metaEl = document.querySelector(‘[fs-prop=”video”]’);
var scripturl = metaEl && metaEl.getAttribute(“script”);

if (scripturl === null) {
scripturl = ‘//player.foxdcg.com/sports’;
}

if (window.location.search.indexOf(‘debugVideoPlayer’) > -1) {
if (scripturl.indexOf(‘?’) > -1) scripturl = scripturl + ‘&debug=all’;else scripturl = scripturl + ‘?debug=all’;
}

return scripturl;
}(window.location); // Handle the case where an optional callback was passed in.

script.onload = function () {
if (typeof FDM_Player === ‘function’) {
callback(FDM_Player, videoElementsData, sendPageView);
} else if (typeof FNGPlayer.default === ‘function’) {
callback(FNGPlayer, videoElementsData, sendPageView);
} else {
throw new Error(‘FDM_Player failed to load’);
} // Clear it out to avoid getting called more than once or any memory leaks.

script.onload = script.onreadystatechange = undefined;
}.bind(this);

script.onreadystatechange = function () {
if (“loaded” === script.readyState || “complete” === script.readyState) {
script.onload();
}
}; //Attach the script tag to the page (before the first script) so the magic can happen.

firstScript.parentNode.insertBefore(script, firstScript);
}

return this;
}
}]);

return criticalVideoLoader;
}();

window.criticalVideoLoader = new criticalVideoLoader();
/* harmony default export */ __webpack_exports__[“default”] = (criticalVideoLoader);

/***/ }),

/***/ “./assets/components/platformPlayer/fsVideo.js”:
/*!*****************************************************!*
!*** ./assets/components/platformPlayer/fsVideo.js ***!
*****************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

“use strict”;
__webpack_require__.r(__webpack_exports__);
/* harmony import */ var _Pinner__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./Pinner */ “./assets/components/platformPlayer/Pinner.js”);
/* harmony import */ var _components_fsUtils_TrackingUtils__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../components/fsUtils/TrackingUtils */ “./assets/components/fsUtils/TrackingUtils.js”);
/* harmony import */ var _FsVideoEventHandler__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./FsVideoEventHandler */ “./assets/components/platformPlayer/FsVideoEventHandler.js”);
/* harmony import */ var _components_fsUtils_Viewports__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../components/fsUtils/Viewports */ “./assets/components/fsUtils/Viewports.js”);
/* harmony import */ var _fsUtils_fsPlayerUtils__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../fsUtils/fsPlayerUtils */ “./assets/components/fsUtils/fsPlayerUtils.js”);
function _typeof(obj) { if (typeof Symbol === “function” && typeof Symbol.iterator === “symbol”) { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === “function” && obj.constructor === Symbol && obj !== Symbol.prototype ? “symbol” : typeof obj; }; } return _typeof(obj); }

function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(“Cannot call a class as a function”); } }

function _defineProperties(target, props) { for (var i = 0; i .trending-title’);
_this.urlQuery = location.search;
_this.isModalEnabled = document.body.classList.contains(‘video-modal’);
_this.bodySection = document.querySelector(‘.body-content’);
_this.isSectionFront = document.body.classList.contains(‘single-fox_sectionfront’);
_this.isCollectionSF = !!document.querySelector(‘.collections-section-front’);
_this.isMediaHub = document.body.classList.contains(‘single-fox_media_hub’);
_this.isBB = _this.bodySection ? _this.bodySection.classList.contains(‘body-content-big-board’) : false;
_this.viewports = new _components_fsUtils_Viewports__WEBPACK_IMPORTED_MODULE_3__[“default”]();
_this.currentUrl = location.href;

if (trendingTitleEl != null) {
_this.collectionOneUtm.term = _components_fsUtils_TrackingUtils__WEBPACK_IMPORTED_MODULE_1__[“default”].formatStringAsSlug(trendingTitleEl.innerHTML);
}

return _this;
}

_createClass(FsVideo, [{
key: “initPlayer”,
value: function initPlayer(playerId, playerData) {
//init player
var player = new FDM_Player(playerId); // set player settings directly

player.autoplay = playerData.autoplay;
player.share_embed = playerData.share_embed;
player.endcard = playerData.endcard;
player.endcard_feed = playerData.endcard_feed;
player.endcard_countdown = playerData.endcard_countdown;
player.releaseURL = playerData.releaseURL;
player.tag = playerData.tag ? playerData.tag : ”;
player.title = playerData.title ? playerData.title : ”;
player.vid = playerData.vid ? playerData.vid : null;
player.url = playerData.url ? playerData.url : ”;
player.endcard_autoadvance = playerData.endcard_autoadvance ? playerData.endcard_autoadvance : false;
player.siteSection = playerData.siteSection ? playerData.siteSection : ”;
if (playerData.categoryName) player.categoryName = playerData.categoryName;
if (playerData.adpol) player.freewheel_keyvalue = encodeURIComponent(‘adpol=’ + playerData.adpol);
if (playerData.wcEndcard) player.wcEndcard = playerData.wcEndcard;
return player;
}
/**
* gets player data from url
*/

}, {
key: “getPlayerDataFromUrl”,
value: function getPlayerDataFromUrl() {
var urlQuery = location.search;
var videourl = Object(_fsUtils_fsPlayerUtils__WEBPACK_IMPORTED_MODULE_4__[“getParam”])(urlQuery, “videourl”);
var autoplay = Object(_fsUtils_fsPlayerUtils__WEBPACK_IMPORTED_MODULE_4__[“getParam”])(urlQuery, “autoplay”);
var share = Object(_fsUtils_fsPlayerUtils__WEBPACK_IMPORTED_MODULE_4__[“getParam”])(urlQuery, “share”);
var endcard_feed = Object(_fsUtils_fsPlayerUtils__WEBPACK_IMPORTED_MODULE_4__[“getParam”])(urlQuery, “endcard_feed”);
var siteSection = Object(_fsUtils_fsPlayerUtils__WEBPACK_IMPORTED_MODULE_4__[“getParam”])(urlQuery, “siteSection”);
var category = Object(_fsUtils_fsPlayerUtils__WEBPACK_IMPORTED_MODULE_4__[“getParam”])(urlQuery, “category”);
var endcard_autoadvance = Object(_fsUtils_fsPlayerUtils__WEBPACK_IMPORTED_MODULE_4__[“getParam”])(urlQuery, “endcard_autoadvance”);
var url = Object(_fsUtils_fsPlayerUtils__WEBPACK_IMPORTED_MODULE_4__[“getParam”])(urlQuery, “url”);
var isAmp = Object(_fsUtils_fsPlayerUtils__WEBPACK_IMPORTED_MODULE_4__[“getParam”])(urlQuery, “amp”);
var host = location.protocol + ‘//’ + location.hostname + ‘/’;
var deepLink = “http://www.foxsports.com/” + category + ‘/video/’;
var iframeurl = host + ‘video-embed?videourl=’ + videourl + ‘&share=’ + share + ‘&siteSection=’ + siteSection + ‘&autoplay=’ + autoplay + ‘&category=’ + category + ‘&endcard_autoadvance=’ + endcard_autoadvance + (endcard_feed ? ‘&endcard_feed=’ + endcard_feed : ”);
var isWCEndacrd = Object(_fsUtils_fsPlayerUtils__WEBPACK_IMPORTED_MODULE_4__[“getParam”])(urlQuery, “wcEndcard”) === ‘true’;
var vid = decodeURIComponent(url).split(‘/’).pop();
var wcEndcard = false;

if (isWCEndacrd) {
wcEndcard = {
homeTeamCountryImgSrc: decodeURIComponent(Object(_fsUtils_fsPlayerUtils__WEBPACK_IMPORTED_MODULE_4__[“getParam”])(urlQuery, “homeTeam”)),
awayTeamCountryImgSrc: decodeURIComponent(Object(_fsUtils_fsPlayerUtils__WEBPACK_IMPORTED_MODULE_4__[“getParam”])(urlQuery, “awayTeam”)),
fullCoverageUrl: “https://www.foxsports.com” + decodeURIComponent(Object(_fsUtils_fsPlayerUtils__WEBPACK_IMPORTED_MODULE_4__[“getParam”])(urlQuery, “fcUrl”))
};
}

return {
releaseURL: decodeURIComponent(videourl),
autoplay: autoplay,
share: share,
endcard_feed: decodeURIComponent(endcard_feed),
isAmp: isAmp,
siteSection: siteSection,
category: category,
endcard_autoadvance: endcard_autoadvance,
url: url,
deeplink: deepLink,
iframeurl: iframeurl,
vid: vid,
wcEndcard: wcEndcard
};
}
/**
* initializes FS video embed player
* @param {*} data – player data
*/

}, {
key: “initializeFSPlayer”,
value: function initializeFSPlayer(data) {
this.playerData = this.preparePlayerData(data);
this.elId = this.getPlayerElement(this.playerData).id;
this.el = document.getElementById(this.elId);
this.utmObj = {}; //check if player has its own utm params

if (typeof this.playerData.utm !== ‘undefined’) {
this.utmObj = _components_fsUtils_TrackingUtils__WEBPACK_IMPORTED_MODULE_1__[“default”].getUtmObj(this.playerData.utm);
} else {
this.utmObj = _components_fsUtils_TrackingUtils__WEBPACK_IMPORTED_MODULE_1__[“default”].getUtmObj(_components_fsUtils_TrackingUtils__WEBPACK_IMPORTED_MODULE_1__[“default”].getUtmParams(this.playerData.pageName));
} //init player

this.player = this.initPlayer(this.elId, this.playerData);
this.isPlaying = false;
this.isPaused = false;
this.isFullScreen = false; //init an empty set that will keep track all the videos that have been played

this.playedVideos = new Set();
this.sendPageView = data.sendPageView; // set player settings using functions

this.setPlayerShare();
this.setPlayerEvents();
document.addEventListener(‘visibilitychange’, this.onVisibilityChange.bind(this)); //start pinning from Pinner.js. Dont enable on iphone

!this.isIphone() && this.startPinning();
this.saveToPlayerCollection();
}
/**
* initializes FS video embed player
*/

}, {
key: “initializeFSEmbedPlayer”,
value: function initializeFSEmbedPlayer() {
//init player
var playerData = this.getPlayerDataFromUrl();
this.player = this.initPlayer(“player”, playerData);
this.utmObj = _components_fsUtils_TrackingUtils__WEBPACK_IMPORTED_MODULE_1__[“default”].getUtmObj({
‘medium’: playerData.isAmp ? “amp_video_player” : “embed_video_player”,
‘source’: ’embed-video-page’,
‘content’: playerData.category,
‘term’: ”
});

if (playerData.share) {
this.player.share = {
deeplinkfunc: function deeplinkfunc(z, A) {
return playerData.deeplink + z;
},
embed: true,
iframeurl: playerData.iframeurl,
emailscript: “”,
sharetargets: [{
name: “Facebook”,
image: “data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAGQAAABkCAYAAABw4pVUAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA2hpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDowNTgwMTE3NDA3MjA2ODExODA4M0NDMTM4MEMyQTVFQiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDpCOUMxMDdGMkE2MTYxMUUyOEJFQUJDRTMzOERDQjM5MCIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDpCOUMxMDdGMUE2MTYxMUUyOEJFQUJDRTMzOERDQjM5MCIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgQ1M2IChNYWNpbnRvc2gpIj4gPHhtcE1NOkRlcml2ZWRGcm9tIHN0UmVmOmluc3RhbmNlSUQ9InhtcC5paWQ6QUM3QUJGQTkzODIwNjgxMThDMTQ5OEFGOTgxQUJBQ0UiIHN0UmVmOmRvY3VtZW50SUQ9InhtcC5kaWQ6MDU4MDExNzQwNzIwNjgxMTgwODNDQzEzODBDMkE1RUIiLz4gPC9yZGY6RGVzY3JpcHRpb24+IDwvcmRmOlJERj4gPC94OnhtcG1ldGE+IDw/eHBhY2tldCBlbmQ9InIiPz4rzsvUAAADP0lEQVR42uycvU9TURiHX9ryESiiFoEIAQQDVkUGRaMghkAgGhMSNcpAiDoxkKiJRhmdhD/BQQcndVcUN4MmLiRGEye0lIIJiECQUuiHnlOLG4OX1ntanyf5Le29afs+vfc995ybm9V86YEkqFQZVDmjUq7iFEglEZUZlecq91T8+kVH4s0ulY8q/QkxyEg9rkStdc0/qHRuCKlWeaJSSI1sY5vKU5UqLeS2ShE1sR3t4I4j0TPADE47Eg0czKDCQQM3CqeDGpgFQhACCEEIIAQhkApclOA32S6HNHrLpKGuVOr2eGR3iVuKd+ZLbrZL8nJdEg5HJbQeiW+7GorIcnBdlld01mT++6p8W1iR2fmgzC8G5d37AEKssrfaIxe69supo5VSWJC7ubBsZzwavV2Jp2DTbVt6HiLkb6koLZKBviZpOVzJKctOsrJEznUekIHeI3/+8Qix68c6HTLY3ypdJ2to6iY07bvX2qS1qYphrwlcv3zceBn/jZCO5lrp7qjnwtAE9BD1xpVjXKmbQm/3ISly5yHEBNz5OXK+y5tW3zmjhZxtq49PeyDEENpP1KTdd85YIcU7CmRfjQchptDoLY1Pk6TdbEKmCvHW7trS/tFoTF6OfZa341PyaWJOlpZDElqLIMQqVeXW7479OvdDbg2/El9ggSMkWZQVuy3tpxeibg6NyuT0Ij0kmXi251vab+T1hG0yMlpITra1n/Zm3M8oKxVYvSD0BRYRYhJ6NIUQgwiGwggxiVjsJ0IAIQgBhCAEEIIQQAhCwD6MXw8Ze3w1bT4vEo1Je9+j+GojR4gB+GeWtiQDIUlmUgmhh5gkZBohRuFLwtIvQpLIlwBCjEGvo0zNIMQY9L1c6+EoQjKpfyAkmUICCOEIgdRegyAkqaesBYSYwuz8StLu5zJ+ttfqk3Wsztpu5Uk+HCEZCEIQAghBCCAEIYAQhABCEAIIAYQgBBCCEEAIQgAhCAGEAEIQAghBCCAEIYAQhABCACEIAQtCopTBGKJayAx1MIaAFvKMOhjDiBYyrLJELWxHOxjSQnwqPSrL1MQ2dO0vqkxujLJeqDSo3Ffx0+j/TQNP1FrX/KDKqH7xlwADADHHxixr3zsSAAAAAElFTkSuQmCC”,
urlTemplate: “http://www.facebook.com/sharer.php?u=”
}, {
name: “Twitter”,
image: “data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEcAAABHCAMAAABibqotAAAATlBMVEX///9Ny+dAvuFDweJJyOZEw+NCwOJMyudBv+JLyeZIxuVGxORHxeRDweNq0Orq+fyA1+3C7Pb2/P7U8vnf9fum4/KS3fBczOi06PROxeX5zaKxAAABnElEQVRYw+3UyW6DMBCA4aHBSSFkvC+8/4u2RYq8LwcOTZv/aFmfRowFTOf0Z53bOb2dF3OWc3o7ZznolACgji3PbOjMUbe5kuXwTOJxgtzMvthZpC0zSCHIzNZIoFPVYUBtkREQdahsrjoOQBWgSUGe/j6vOT/3KWaOLjETczpw1rBjXsHWuEXkDJUAavJ3UufI3aJTBsWoXWuOel6JRtIdJnfCR+JPXYmRnskdE15kN69niWVtOLuI7nJma/OINXfygXyUa1Oah7adWUK/vmOWaRCSTUcIrumQw1NnC1Mwmt7iYscNO6zp4LBjm842ui61pc49CsWYo+9JiUPMmIO5k2RGJlL3rkOQ9x2TOyRp3/sS3Ula5iD0M6TvkP7q6dZyxgdiZMTprp6ThjMO0X3UIajqjEDSdXyM08bH6Tu+u26sfNxB2WRy51Gq8qIFe9SCSxpBraCYwku10GFOOy5F/Zd8aTseauyb26rhHS/JioKXdnBNsvnXkWa/9vJOQDHNlQAAQZXTzCNNp9+/dj7P6e28mPNxTr/N+QKykG1J+VJKjAAAAABJRU5ErkJggg==”,
urlTemplate: “http://twitter.com/share?url=&text=”
}, {
name: “googleplus”,
image: “data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEcAAABHCAIAAADa0s1IAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA2hpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDo1MTk2MjM1MjAyMkI2ODExODIyQTk5Q0E3REMxQjY1NSIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDpFNzFEQkU3NEQxREQxMUUyQTFFMDkyMkNGNjZGNjlBMyIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDpFNzFEQkU3M0QxREQxMUUyQTFFMDkyMkNGNjZGNjlBMyIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgQ1M2IChNYWNpbnRvc2gpIj4gPHhtcE1NOkRlcml2ZWRGcm9tIHN0UmVmOmluc3RhbmNlSUQ9InhtcC5paWQ6QzcwMDlDNTA2QzIwNjgxMTgwODNCQzhEOTRBRjBDQjIiIHN0UmVmOmRvY3VtZW50SUQ9InhtcC5kaWQ6NTE5NjIzNTIwMjJCNjgxMTgyMkE5OUNBN0RDMUI2NTUiLz4gPC9yZGY6RGVzY3JpcHRpb24+IDwvcmRmOlJERj4gPC94OnhtcG1ldGE+IDw/eHBhY2tldCBlbmQ9InIiPz4yaoL9AAAETklEQVR42uyaPyxkQRzHcZdoqFSruwKVgiVscyRy5MLWwiYiQUTj/O381yp0BDW2kYjVW81SrEqDRsVdTaXZ+9y+ZDKZZ9++efa9fSfzK2TevJm3853v7/f9/Wai8s/PHxWa9iuerNC31LeEh1m/IzkPs6oqPqMZVAaVQWVQGVQGlUFlUBlUBtXnscpYLGa4MqgMKoOquH3N5XKGK4OqjB74wfmRSOR73lpbW93PSiaT29vbYURVU1MzMzPT39+vNev19XVzc/Py8jKMXEHO8vIywGizxIODg4eHBx67uroGBwcbGhrkwc/PzzADHtr39/dWw8EymYxoeyt9Kjs7O3XnwM/S0pLVZrm4kzJgfHx8bGxMoWhkZAR4br7/cVRVOU2DJQHp5ubm+PjYPmZ/f18JG2hklsufkCfmPJmeBtbW1gpIVtAXGgnadDot9yAnukEYkLITMwATj8q6FbOrHDyHEZW82bif82Ci6Pz8XO5BS0KXryJ50/o6qBSv4wuKZlxdXTl8wf7WjbxVaaFSBKDoFDufuvvie3WrjGxsbHQzlwTFSEXTPrJiN9M1uCLPKj1u4kTJuUWjMei4enl5ISRkF0LTnGVQcdR3IXV0dCg919fXDm9Lr4EKhoGBAec4IQ3I7kcSC6OysywYk3tWVlYcxssuClFFiS0ZKq1K5OnpiUJWqRio+gqNJ2sLzVhcXAxpxYQdHR2lUim5Z2JiYnZ21j4SGi33A9LU1JRCcujOwhsbG9Svcs/Q0NDp6akIMxxvZ2eHR9psQcCQ/p1E2tvbPZ+CYclaeiEDElsQ/AnfOyqhcoSWEDpwym97enoCZqk09xYsOp032tFoVKkqygKpxPeByoUMBHLUB9v/fXNmZ2Zra0s+j/2XqC4uLuyKsru7G0ydLtuX+vr6Un2LQhZmmpub5c66ujp08vb21uVVTCjUguBhX+Ri712dhDFS3N7eXqhRAYPMS7Z1HzaIPq64vr4eRg0Ez/z8vCziZ2dnVK7ZbJYqUYxpamoChuLeuCKSeHh46HsWVpKMsw0PD8/NzYlH1odfFUpK0MjgeDyu6GQikRD4y68Wq6uro6OjYnHT09MnJydvb2+FxvOK7Aw5sVisurra6qTBXIgNhbLDkrzrCwsLLleG3E9OTsp8anmHj6jgU3Y8Aklrs6FLFomwoFJqVo5YHhK037Gkjaq7u1vZew+/FGQWdoWqLLWc7/cW9jsWD3cJ4grt7u4u57N5qW7RQ90p6A15WRyQQ+GBiJ78iIgpubWoUY5YDTRD+ZovWdjNMQF5AIbIpJZ+EP0uZWNtba2vr0/Ae3x8DAUqcmgmk+nt7VWA4VfOx3hYJVMJCQWe/QzmSx3o/v8kwMCy7Dk0mzc0QMBra2tjsxgpyjEcj7l+F0peUIntpwJyXx8AlaxNHRzkzYw2KsFbNG9Wwz7AYo+/wbiciqqlpaXi05n5nzODyqAqvf0VYACumehAOSSQtwAAAABJRU5ErkJggg==”,
urlTemplate: “https://plus.google.com/share?url=”
}, {
name: “reddit”,
image: “data:image/png;base64,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V7fKKqv4QYMG+auvvlrxgWDRokU18KR9oEs3KYgZeMoppyjDtttuO3/qqaf6e++913/00Uf+r7/+qlVnmI6AYCRh8MS4Hn/8cb/mmmsGIZgwsv1tttnGz5gxQ/GXIpQmp7KEmaoufvvtN7fZZpu5L774ooZGWHXVVV3v3r3dRhttpPHSsl3fvn3dyiuvXCMdDyIgt+KKK7onnnjC7bXXXhqPmhNuu9VXX91JT3F///23++yzz9zixYtVfeGDf8KECa5z587hfS3kSS9qNZVG/sJa5fjx47U1C0Pztuq2bdv69ddf3x900EGqct58800/d+7cwIUffvjBd+rUKeAQwfkxY8ZoL1iwYIH//fff/eTJk/3BBx+saVZaaSX1995774CDnpYWmpTKMjVD5Y8++ujAxIEDB/rDDjvMS0/wbdq0Ce+z1Q3PjA3Swv3IkSP99ddf7w855JCQHmE888wzibw966yzQlpwPfvss5oWVZgWmpRAbPCdNWuW79GjR2DOrbfeqvyQWZF/++23/XXXXeePOOIIHYjbtWsX0uUSkAkJ/8ILL1Q89EIba6Apaivwe9tttw34aBQGaXtJkxKIqav77rsvMGWttdby33zzjfGlhv/HH3/4999/399xxx3+uOOO81tssYVfY401Qt5YGDL2+M8//1zzG50YmU0UbrzxxpB/8803D8KSsSVOnhhuUit1YaAOlY888kgYMmWG5bp166YDMQO+cEIXd6wfGMg32GADdaKadACWGZITIbl33nnHPf/88+6DDz5QXKw1RLgaZlWeDfauT58+OqmA1q+//urmz5/vRMjZyROfm4xAbJYjvcG98sorocIjRozQsKgMnQVZBILhnQkIhiIkGIrbZ5993C677OK23357zcJsSnqGZU/0paeEBSgNxBpJYoasiNqizkrQWB5hLCCDrps9e7aGu3fv7oYMGaLh7B+mrzALIRjTEBAtG+YDTFtlFqZhes7UqVM1zHQ4Bmgb/ddffz1Erb322o5pNpB2V6BJCARG2raFLOACQ3bccUcnizl9NpUSIrMCMIw0CMdwsZ6QGVpIedlll2lYprbaW+iV5livILRbbrklpN966601jJAL0Q+ZRLKNHmyQnTZtWo1BWRZ0WjeLL6aiNggLg3WQtvXM8ccf7y0uxvfll196WYiGAV0WjnknAXHeOExXa/RgDLri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”,
urlTemplate: “http://reddit.com/submit?url=”
}, {
name: “stumbleupon”,
image: “data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEcAAABHCAIAAADa0s1IAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDo4MTZDQkNBMUQxREYxMUUyQTFFMDkyMkNGNjZGNjlBMyIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDo4MTZDQkNBMkQxREYxMUUyQTFFMDkyMkNGNjZGNjlBMyI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjgxNkNCQzlGRDFERjExRTJBMUUwOTIyQ0Y2NkY2OUEzIiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjgxNkNCQ0EwRDFERjExRTJBMUUwOTIyQ0Y2NkY2OUEzIi8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+aTdOkwAACxtJREFUeNrMWwuM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”,
urlTemplate: “http://www.stumbleupon.com/submit?url=”
}],
omitSeries: true
};
}

this.setPlayerEvents();
}
}, {
key: “isIphone”,
value: function isIphone() {
return /iPhone/i.test(navigator.userAgent);
} //save instances of player to collection

}, {
key: “saveToPlayerCollection”,
value: function saveToPlayerCollection() {
window.fsPlayerCollection = window.fsPlayerCollection || [];
window.fsPlayerCollection.push(this);
}
/**
* @desc pause other players in the page triggered by setPlay method
*/

}, {
key: “pauseOtherPlayers”,
value: function pauseOtherPlayers() {
var _this2 = this;

try {
//returns all players except the current player the user is interacting with
var players = window.fsPlayerCollection.filter(function (fsPlayer) {
return fsPlayer.elId !== _this2.elId;
});
} catch (e) {
console.log(“VIDEO: error – “, e);
}

if (players.length > 0) {
players.forEach(function (fsPlayer) {
fsPlayer.isPinned && fsPlayer.unpin(fsPlayer.parentEl);
fsPlayer.isPlaying = false;
fsPlayer.player.pause();
});
}
}
}, {
key: “pauseAllPlayers”,
value: function pauseAllPlayers() {
var players = window.fdmPlayer;

try {
players.forEach(function (player, index) {
if (index !== players.length – 1) {
player.releaseUrl = ”;
player.releaseURL = ”;
player.setReleaseCall(”);
player.pause();
}
});
} catch (e) {
console.log(‘something went wrong’, e);
}
}
}, {
key: “onVisibilityChange”,
value: function onVisibilityChange() {
document.hidden && this.player.pause();
}
/**
* @desc event triggered on player OnMediaStart and OnMediaUnpause events
* @param isAd True or False for e.data.baseClip.isAd that is passed from player OnMediaStart and OnMediaUnpause events
* @returns {FsVideo}
*/

}, {
key: “setPlay”,
value: function setPlay(isAd) {
this.isPlaying = true;
this.isPaused = false;

if (window.fsPlayerCollection) {
this.pauseOtherPlayers();
}

_components_fsUtils_TrackingUtils__WEBPACK_IMPORTED_MODULE_1__[“default”].sendPlay(isAd, this.player, this.utmObj);
return this;
}
}, {
key: “pause”,
value: function pause() {
this.player.pause(true);
}
/**
* @desc event triggered on player OnMediaStart event
* @returns {FsVideo}
*/

}, {
key: “setPause”,
value: function setPause(isAd) {
this.isPlaying = false;
this.isPaused = true;
_components_fsUtils_TrackingUtils__WEBPACK_IMPORTED_MODULE_1__[“default”].sendPause(isAd, this.player, this.utmObj);
return this;
}
/*
get page type of where the video player is set/loaded
*/

}, {
key: “getPageType”,
value: function getPageType(playerData) {
/*
first 3 conditions supercedes what is set on the video config’s “pageName”
which, from testing, doesn’t reflect the actual page type of where the video is set.
*/
if (this.isSectionFront) return ‘section-front’; // if page is section front

if (this.isMediaHub) return ‘media-hub’; // if page is media hub
// if page isn’t section front or media hub, but the url of the post passed on the video config is a story

if (playerData.url.indexOf(‘/story/’) > -1) return ‘story-page’; // everything else aside from the conditions above are assumed

var pageName = playerData.pageName.split(/:/);
return pageName[pageName.length – 1].replace(/ /g, “-“);
}
/**
* send page view to Parsely on video player. We only send the page view on first click on section front pages.
* We send page view only if the video ID is in the video player url that is available to us
*/

}, {
key: “sendParselyTracking”,
value: function sendParselyTracking() {
//add player video id into the set if it is not in the set so that it is only tracked on the first click on that video
var vid = this.player.videoinfo.id ? this.player.videoinfo.id : this.player.vid;

if (_components_fsUtils_TrackingUtils__WEBPACK_IMPORTED_MODULE_1__[“default”].isTrackable(vid, this.currentUrl) && !this.playedVideos.has(vid)) {
// update player url
if (vid !== this.player.vid) {
this.player.url = this.getVideoUrl(this.player.videoinfo.id);
this.player.vid = vid;
}

if (typeof PARSELY !== ‘undefined’ && _typeof(PARSELY.beacon) === ‘object’ && typeof PARSELY.beacon.trackPageView === ‘function’) {
// set up for UTM Campaign tracking – FSCOM-12271
var metadata = _components_fsUtils_TrackingUtils__WEBPACK_IMPORTED_MODULE_1__[“default”].getTrackingMeta(this.player); // failover for utm_content (start with defined utmObj, metadata, videoinfo, categoryName)

this.utmObj.utm_content = this.utmObj.utm_content || metadata.section || this.player.videoinfo.primary || this.playerData.categoryName;
var trackingObj = {
url: _components_fsUtils_TrackingUtils__WEBPACK_IMPORTED_MODULE_1__[“default”].addTrackingQuery(this.utmObj, this.player.url),
// URL to be tracked
urlref: location.href,
js: 1 // flag indicating that this is a dynamic event, keep it “1”

}; // TEMP(FOR STG/PROD): bug found on homepage “fox-five” tracking, but can’t recreate on DEV env
// need reports of these two objects.

window[‘utmProdTest’] = {
‘utmObj’: this.utmObj,
‘trackingObj’: trackingObj
};
PARSELY.beacon.trackPageView(trackingObj);
}

this.playedVideos.add(this.player.videoinfo.id);
}
}
}, {
key: “setPlayerEvents”,
value: function setPlayerEvents() {
var _this3 = this;

var player = this.player;

if (this.playerData) {
var playerData = this.playerData;
}

player.start = function () {
performance.mark(“fs-videoplayer-startplayer”);
return player.bind(), player;
};

if (this.playerData) {
if (typeof this.playerData.onMediaPause === ‘function’) {
player.addEventListener(‘OnMediaPause’, function (e) {
performance.mark(“fs-videoplayer-onmediapause”);
playerData.onMediaPause(null, e, player);
});
}
} //check is free wheel enabled

if (playerData && playerData.isFwEnabled == true) {
player = this.setSiteSection(player, playerData.siteSection);
}
/**
* @desc Fires when playback of the current clip is paused.
*/

player.addEventListener(‘OnMediaPause’, function (e) {
if (this.player.wcEndcard) {
_FsVideoEventHandler__WEBPACK_IMPORTED_MODULE_2__[“default”].dispatchEvent(_FsVideoEventHandler__WEBPACK_IMPORTED_MODULE_2__[“fsEvents”].videoPause, {
e: e,
player: this.player
});
}

try {
//passing video clip OnMediaPause to check if it is an ad when setting video pause
this.setPause(e.data.clip.baseClip.isAd);
} catch (err) {
console.log(‘Error OnMediaPause: ‘, err.message);
}

performance.mark(“fs-videoplayer-onmediapause”);
if (playerData) playerData[“onMediaPause”] && typeof playerData.onMediaPause === ‘function’ && playerData.onMediaPause(null, e, player);
}.bind(this));
/**
* @desc Fires when the current clip resumes playback after having been paused.
*/

player.addEventListener(‘OnMediaUnpause’, function (e) {
try {
//passing video clip OnMediaUnpause to check if it is an ad when setting video play
this.setPlay(e.data.clip.baseClip.isAd);
} catch (err) {
console.log(‘Error OnMediaUnpause: ‘, err.message);
}
}.bind(this));
/**
* @desc Fires when a clip starts playing. This includes individual chapter starts within a media item.
* The ClipInfo component listens for this event to update its content. This is the only event where video
* or ad metadata is dispatched to the player. Video metadata can be pulled out of the event data object.
*/

player.addEventListener(_FsVideoEventHandler__WEBPACK_IMPORTED_MODULE_2__[“fsEvents”].videoStart, function (e) {
try {
if (!e.data.baseClip.isAd && this.sendPageView) {
_FsVideoEventHandler__WEBPACK_IMPORTED_MODULE_2__[“default”].dispatchEvent(_FsVideoEventHandler__WEBPACK_IMPORTED_MODULE_2__[“fsEvents”].videoStart, {
e: e,
player: this.player
});
this.sendParselyTracking();
} //passing video clip OnMediaStart to check if it is an ad when setting video play

this.setPlay(e.data.baseClip.isAd);
} catch (err) {
console.log(‘Error OnMediaStart: ‘, err.message);
}

if (playerData) playerData[_FsVideoEventHandler__WEBPACK_IMPORTED_MODULE_2__[“fsEvents”].videoStart] && typeof playerData.onMediaStart === ‘function’ && playerData.onMediaStart(null, e, player);
performance.mark(“fs-videoplayer-onmediastart”);
}.bind(this));
/**
* @desc Fries when clip ends
*/

player.addEventListener(_FsVideoEventHandler__WEBPACK_IMPORTED_MODULE_2__[“fsEvents”].videoEnd, function (e) {
_FsVideoEventHandler__WEBPACK_IMPORTED_MODULE_2__[“default”].dispatchEvent(_FsVideoEventHandler__WEBPACK_IMPORTED_MODULE_2__[“fsEvents”].videoEnd, {
e: e,
player: this.player
});
}.bind(this));
/**
* @desc Fires during clip playing
*/

player.addEventListener(_FsVideoEventHandler__WEBPACK_IMPORTED_MODULE_2__[“fsEvents”].videoProgress, function (e) {
if (player.wcEndcard) {
_FsVideoEventHandler__WEBPACK_IMPORTED_MODULE_2__[“default”].dispatchEvent(_FsVideoEventHandler__WEBPACK_IMPORTED_MODULE_2__[“fsEvents”].videoProgress, {
e: e,
player: this.player
});
}
}.bind(this));
/**
* @desc Fires when the player begins to load a new clip.
*/

player.addEventListener(_FsVideoEventHandler__WEBPACK_IMPORTED_MODULE_2__[“fsEvents”].videoLoading, function (e) {
performance.mark(“fs-videoplayer-onmedialoadstart”);
});
/**
* @desc Fires when the player loads
*/

player.addEventListener(_FsVideoEventHandler__WEBPACK_IMPORTED_MODULE_2__[“fsEvents”].playerReady, function (e) {
if (_this3.player.elem === e.originator.controlId) {
performance.mark(“fs-videoplayer-onplayerloaded”);
_FsVideoEventHandler__WEBPACK_IMPORTED_MODULE_2__[“default”].dispatchEvent(_FsVideoEventHandler__WEBPACK_IMPORTED_MODULE_2__[“fsEvents”].playerReady, {
e: e,
player: _this3.player,
playerData: _this3.playerData
});
window.currentPlayer = player;
}
});
/**
* @desc Fires when the release url starts
*/

player.addEventListener(‘OnReleaseStart’, function (e) {
performance.mark(“fs-videoplayer-onreleasestart”);
this.isModalEnabled && this.pauseAllPlayers();
}.bind(this));
/**
* @desc Fires when user clicks on the play button
*/

player.addEventListener(‘OnPlayButtonClicked’, function (e) {
performance.mark(“fs-videoplayer-onplaybuttonclicked”);

if (this.isIphone()) {
var playerId = ‘#’ + e.originator.controlId;
var vidTag = document.querySelector(playerId + ‘ video’);

if (!vidTag.hasAttribute(‘playsinline’)) {
vidTag.setAttribute(‘playsinline’, ”);
}
}
}.bind(this));
/**
* @desc Fires when the release url starts
*/

player.addEventListener(_FsVideoEventHandler__WEBPACK_IMPORTED_MODULE_2__[“fsEvents”].playerFullScreen, function (e) {
performance.mark(“fs-videoplayer-onfullscreen”); //set if player is fullscreen

this.isFullScreen = e.data;
}.bind(this));
player.start();
this.player = player;
this.playerData = playerData;
return this;
}
}, {
key: “setSiteSection”,
value: function setSiteSection(player, siteSectionPath) {
//freewheel
if (typeof siteSectionPath !== ‘”undefined”‘) {
console.log(‘has siteSection’);
} else {
siteSectionPath = ‘/nfl/test/default’;
}

var fwSiteSection = siteSectionPath; // condition if siteSection already sets ‘www.’

if (fwSiteSection.indexOf(‘www.’) > -1) {
fwSiteSection = fwSiteSection.replace(‘www.’, ”);
}

fwSiteSection = this.getAdViewport(window.innerWidth) + ‘.’ + fwSiteSection; //get adzone

var adZoneVal = this.getAdZoneParam(); //assign siteSection

player.siteSection = adZoneVal !== “” ? adZoneVal : fwSiteSection;
return player;
}
}, {
key: “getAdZoneParam”,
value: function getAdZoneParam() {
function getParameterByName(name) {
name = name.replace(/[[]/, “\[“).replace(/[]]/, “\]”);
var regex = new RegExp(“[\?&]” + name + “=([^]*)”),
results = regex.exec(location.search);
return results == null ? “” : decodeURIComponent(results[1].replace(/+/g, ” “));
}

var adzoneParam = getParameterByName(‘adzone’);
if (adzoneParam !== “”) return adzoneParam;else return ”;
}
/*
desktop = 1024 pixels and up
tablet = 768 – 1023
handheld = 767 and below
Touch detection for 1023 and below would override the breakpoints
*/

}, {
key: “getAdViewport”,
value: function getAdViewport(windowWidth) {
var isTouch = this.isTouchDevice();
var viewportName = ‘www’;

switch (true) {
case !isTouch || windowWidth > 1023:
viewportName = “www”;
break;

case windowWidth > 767 && isTouch:
viewportName = “mtab”;
break;

default:
viewportName = “mweb”;
}

return viewportName;
}
}, {
key: “isTouchDevice”,
value: function isTouchDevice() {
return ‘ontouchstart’ in window;
}
}, {
key: “getVideoUrl”,
value: function getVideoUrl(id) {
return this.getCleanedDomain() + ‘/’ + this.playerData.categoryName + ‘/video/’ + id;
}
}, {
key: “setPlayerShare”,
value: function setPlayerShare() {
if (window.innerWidth > 1024) {
// older implementations incorrectly return share as a boolean
if (_typeof(this.playerData.share) === ‘object’ && this.playerData.share) {
this.player.share = this.playerData.share;
} else {
this.player.share = {
showembedfunc: function showembedfunc(mid, vi) {
if (vi.primary == ‘nfl’ && vi.contentType == ‘highlights’ || _typeof(this.state.clip) === ‘object’ && typeof this.state.clip !== null && this.state.clip.baseClip.contentCustomData[“non-EmbeddableHighlights”] == “true”) {
return false;
} else {
return true;
}
},
emailscript: ”,
sharetargets: this.playerData.fdmsharetargetsArr
};
}

this.player.share = {
embed: true,
iframeurl: this.playerData.iframeUrl
};

if (typeof this.playerData.share_deeplinkfunc === ‘function’) {
this.player.share.deeplinkfunc = playerData.share_deeplinkfunc;
} else {
this.player.share.deeplinkfunc = function (mediaId, title, guid) {
return this.getVideoUrl(mediaId);
}.bind(this);
}
}

return this;
}
}, {
key: “getCleanedDomain”,
value: function getCleanedDomain() {
var l = window.location;
return l.origin || l.protocol + ‘//’ + l.hostname + (l.port ? ‘:’ + l.port : ”);
}
}, {
key: “defaultOpts”,
value: function defaultOpts() {
// disable autoplay for mobile
var autoplay = this.viewports.isMobile ? false : true;
return {
autoplay: autoplay,
share: false,
share_embed: true,
endcard: true,
endcard_feed: ”,
endcard_countdown: true,
hideMeta: false,
isFwEnabled: false,
iu: ”,
siteSection: ”,
pageLocation: ‘index’,
pageName: ‘fscom::videos:video page’,
releaseUrl: ”,
categoryName: ”,
fdmsharetargetsArr: [{
name: “Facebook”,
image: “data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAGAAAABgCAYAAADimHc4AAACl0lEQVR42u3a3UsUURzGcf+vELuI8iK6iLrIzOidoheCUC+yF4KitEAJcq11UyplVzaKyo1dEBZXslwlpUAqS6LxQszNyG3dml9zYgiJ2pyZnT20fh94Ls7VwO8zMMM5p2LNtnbDqljNWc1bNe01LX5Ne8Y5e21UMBS9BQAAABgEAABQAACgAABAAQCAAgDAqurWY3fkxMVH0hJMSkf4qYSiaQn2jfxqoHdYWrtTcr59QJpa43L8wgPZ2RiRTQe7paq2AwCnXVt3XU63JSQx9FoyC1nxms1HbgGwkq7bFbTe6Gcy/8n70Jdny9HbAPyrDS0xmZv/In4EgAKt3B6QnofPxc8AUGD48dQr8TsA/KV9jyekFAHgD1W/i6UKAL+1em9IMp+zAOhqr88fXQAKdMOeTsl+zQOgq1dCg1LqALCsoy8+AKBzq+G7aQKgq4fP3S/KQFOj09IcTMq+k9Gfw1XflUKtrAkAoKq2jL1E7YweOnuP8wC3DfePewJQ+/wcyHjowPAb18OfnJrlRMxrh8amXQPcjKYB8Nqxl4ZrgDNXEwDoBKhv7gdAJ4D6hQUAAAAAAAAAAAAAAAAAAFjVADvqw5IceeuoXm5CjE/OOH6e6qUbyfIEKNbhit+51vMEAJ051RYHQGfUsSUAGrPxQBcAuqIugJXtX9D/ADD1/iMAOjOYfgeAzkRiEwDojLqHBIDGNF6OAaAzdQ0RAHRm/e5OAHRFbfyV9W7o/qa7MjO74KhLS99cD3Qus+joWeoGNecBnAcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABj2Imc1b9UEwLea9oxz9tr4AS/jbaNehFRZAAAAAElFTkSuQmCC”,
urlTemplate: “http://www.facebook.com/sharer.php?u=”
}, {
name: “Twitter”,
image: “data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAGAAAABgCAIAAABt+uBvAAAFGUlEQVR42u2b+W8TVxDH80/WCQHSCEUtLagHoodKS6tWRRShNkUQ9aAIqVVb0fhITGISIElNnPtwE0hCMM1JYhKzh/e+O5IhVRPq2uv33m7ojN4PtiXvvv3svO/MvJ2te6mdw1Fm1CECBISAEBACQkAICAEhIBwICAEhIASEgBAQAkJAOBAQAkJACAgBVTUOJ/gLY3J6xVgv2pbjlYzTnJnH1i931TduCBUeJ/LiAWrq4OMLmmq5XlnL5s33b4tljvNWj5hZM5o7eHaAPuwvRijT+TQtgZt4lZnreslFrSG2+yAfDRSH1w3H9QaWDXZL7GCc5zWnfV6jR+eHacV1vWrt7pb1cgdfH+XAoWB6j4p26Xfb8d7sEdkBujQul078/ZRCg843k4rn1wqqs3dJ+ruX/gFNbZo75744LpOlc6q/6LgeQZvbthqiDKNYJMrtukWXp4n5UWOM25QcgnRynNXc+VSbjyT51lGZOqDjKWHvPBL3NSKafTWrEKQzuWlCHHytW2ibkCc2TMN2P/m9SB3QB33F585mfMOsNo7u9c0thZj7CLoLUECSdn759Z7KYonBTfi3OeVlB/D5BnR6oOhRs/5lg1Gi+N5tscw8QF8hZDTG/bhSdF6jRAdc6UCMlUi3JIX/nNCG5JwZlKo9MlwGDTp3Vo36KNtarMIEd3bLqmrFLQs2cTrX5vxHD/+A+pb0qrLbc0NSpIJ7SFChS3altvyjroYqqWo13Vac2IJ2ordcvr8qEvYguDGBbXcs8T4vBiJd9wP9/LDUktwt5OBrLw6gMsG+cgMty+bNGzn9xxkVShb4TBZQVWkh+f2g3oe6F24rv0lErRZ79gEyi1nSi4Ksvd0bBKALY/LgqlGK34fi/MxjM7SADsX5AACdzUil00NUTq8YP8+qoLshpAMCF8ym/cmborcfbH7bCgZQQ5TTLTf8gHoe6oE99hlZN8MP6OtROTBAXzyToTDb691CYICgsCJeFpC1gurUvr1ZU6LooxxjaamcHjAgGF0PwptJ11hkkAFUH6W1xVWjibrrb4eM/LN5qDYya0bYAHUuknnkS6Z5AUqzy9OKFprMCOZxLCWECFBpvHJd6M7pYcAEqz5c/UHHU8LRLqEpwTd38id6xb4l3XL2vTyTBNQ6KodHfabzJsFlQQYQ6LSgh0WA3r0lhg5QqZcnDHTSKwZBOiQBQdJxvxDw1qJiui1JIaSAYIBOP1GDFOdLpNuUyDdxQggLitHIukmcDpUuV/Aj9mttS3F2WqT2QZ806NGVrCLojFxJt9yTN0UaF0K3Txpi/8VxeeyRqZoUMwDX9c5mJHpXwaKRHBwK1h0EYBqA2iZkqpNnAQjoUNoSodSBzA7QwTj/04xKo3y1Ha91VGZwd2kBaurgr/6h8hoVnZYM92Ny5ShTQI0x7sygBNW8btMS5hxn1/6sgiKgV7uExtjfjw+PJPl3bonnh6Xf5rRs3qS6GeS4XmLhOe+qhAvQqf5iqW+KcfH+J2/X2MjCbolB2P52UimwKingRG0TSiTKsadTkwZBHvjdlLLzshEN25BsOMWBWDBoyIh0pJ37LC1l1gyDnCqbjje0Znx+RwrKa6hEscMJ/qsReWDZ8L30oOCEv385Ijcl+MC50M2DjqUEiGvtcxo4wuITC5Ap/yzH4Oum5CwULKg/rt1Tzw1JkG3jW8/4WjgCQkA4EBACQkAICAEhIASEgHAgIASEgBAQAkJACAgB/b/HXwPPdZ/z7BalAAAAAElFTkSuQmCC”,
urlTemplate: “http://twitter.com/share?url=”
}] };
}
}, {
key: “preparePlayerData”,
value: function preparePlayerData(opts) {
var playerData = this.defaultOpts();
Object.keys(opts).map(function (key) {
playerData[key] = opts[key];
}); // iu (interactive unit) is similar to a page path
// ex., ‘/fscom/homepage/video’, ‘/fscom/nfl/video’

if (typeof playerData.iu === ‘string’) {
playerData.releaseURL += ‘&iu=’ + playerData.iu;
playerData.endcard_feed += ‘&params=iu=’ + playerData.iu;
}

return playerData;
}
}, {
key: “getPlayerElement”,
value: function getPlayerElement(opts) {
return document.getElementById(‘Video’ + opts.id);
}
}]);

return FsVideo;
}(_Pinner__WEBPACK_IMPORTED_MODULE_0__[“default”]);

window.FsVideo = FsVideo;
/* harmony default export */ __webpack_exports__[“default”] = (FsVideo);

/***/ }),

/***/ “./assets/layouts/app/critical-video.js”:
/*!**********************************************!*
!*** ./assets/layouts/app/critical-video.js ***!
**********************************************/
/*! no exports provided */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

“use strict”;
__webpack_require__.r(__webpack_exports__);
/* harmony import */ var usertiming__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! usertiming */ “./node_modules/usertiming/src/usertiming.js”);
/* harmony import */ var usertiming__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(usertiming__WEBPACK_IMPORTED_MODULE_0__);
/* harmony import */ var _components_platformPlayer_criticalVideoLoader__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../components/platformPlayer/criticalVideoLoader */ “./assets/components/platformPlayer/criticalVideoLoader.js”);
/* harmony import */ var lazysizes__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! lazysizes */ “./node_modules/lazysizes/lazysizes.js”);
/* harmony import */ var lazysizes__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(lazysizes__WEBPACK_IMPORTED_MODULE_2__);
// user timing API
// NEO Video Loader

//Lazy Loading

/***/ }),

/***/ “./node_modules/@foxdcg/fs-segment-analytics/lib/helpers/SegmentAnalytics.js”:
/*!***********************************************************************************!*
!*** ./node_modules/@foxdcg/fs-segment-analytics/lib/helpers/SegmentAnalytics.js ***!
***********************************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

“use strict”;
__webpack_require__.r(__webpack_exports__);
/* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./utils */ “./node_modules/@foxdcg/fs-segment-analytics/lib/helpers/utils.js”);

var SegmentAnalytics =
/*#__PURE__*/
function () {
function SegmentAnalytics() {
this.metaEl = document.querySelector(‘[fs-prop=”analytics”]’) != null ? Object(_utils__WEBPACK_IMPORTED_MODULE_0__[“getPageMetadata”])() : null;
this.defaultSpaReferrer = window.location.href;
this.segmentApiKey = null; // tracking functions

this.trackPage = this.trackPage.bind(this);
this.trackEvent = this.trackEvent.bind(this);
this.trackVideoEvent = this.trackVideoEvent.bind(this);
this.isCanTrackVideo = this.isCanTrackVideo.bind(this);
this.setSegmentLoaded = this.setSegmentLoaded.bind(this);
this.initScript = this.initScript.bind(this); // data retrieval functions

this.sportsTypes = this.getSportsTypes();
this.duration = 0;
this.secondsViewed = 0;
this.adCurrentTime = 0;
this.last_video_length = 0;
this.current_video_length = 0;
this.total_length = 0;
this.getDefaultProps = this.getDefaultProps.bind(this);
this.getPageProps = this.getPageProps.bind(this);
this.getEventProps = this.getEventProps.bind(this);
this.getCategory = this.getCategory.bind(this);
this.getContentName = this.getContentName.bind(this);
this.getLandingName = this.getLandingName.bind(this);
this.getPageName = this.getPageName.bind(this);
this.getPageType = this.getPageType.bind(this);
this.getSubCategory = this.getSubCategory.bind(this);
this.getPageSubType = this.getPageSubType.bind(this);
this.getStoryTitle = this.getStoryTitle.bind(this);
this.getPageContentLevels = this.getPageContentLevels.bind(this);
this.getDuration = this.getDuration.bind(this);
this.setSecondsViewed = this.setSecondsViewed.bind(this);
this.getSecondsViewed = this.getSecondsViewed.bind(this);
}

var _proto = SegmentAnalytics.prototype;

_proto.getSportsTypes = function getSportsTypes() {
return [‘mlb’, ‘nfl’, ‘nascar’, ‘college-football’, ‘college-basketball’, ‘soccer’, ‘ufc’, ‘golf’, ‘nhl’, ‘nba’, ‘tennis’, ‘boxing’, ‘olympics’, ‘motor’, ‘horse-racing’, ‘other’, ‘baseball’, ‘basketball’, ‘bowling’, ‘cricket’, ‘cycling’, ‘football’, ‘gymnastics’, ‘hockey’, ‘mma’, ‘rugby’, ‘skiing’, ‘swimming’, ‘volleyball’, ‘water-polo’, ‘wnba’, ‘womens-college-basketball’, ‘wrestling’, ‘wwe’];
};

_proto.getCategory = function getCategory() {
return this.metaEl[‘category’];
};

_proto.getSubCategory = function getSubCategory() {
return this.metaEl[‘sub_category’];
};

_proto.getLandingName = function getLandingName() {
var name = this.metaEl[‘landing_name’];
if (name) name = name.replace(/ss+/g, ‘ ‘); // CHECK: if page has hash string

if (window.location.hash) {
var hash = window.location.hash;

if (hash.indexOf(‘nav-option’) > -1) {
name = name.replace(‘Landing’, ‘Category’);
}
}

return name;
};

_proto.getPageName = function getPageName() {
var pageName = this.metaEl ? this.metaEl[‘seg_page_name’] : “no page name”;
if (pageName) return pageName.replace(‘::’, ‘:’);
};

_proto.getPageSubType = function getPageSubType() {
return this.metaEl ? this.metaEl[‘page_sub_type’] : “no page sub type”;
};

_proto.getContentName = function getContentName() {
return this.metaEl ? this.metaEl[‘content_name’] : “no content name”;
};

_proto.getStoryTitle = function getStoryTitle() {
return this.metaEl ? this.metaEl[‘story_title’] : “no story title”;
};

_proto.getBuildVersion = function getBuildVersion() {
return this.metaEl ? this.metaEl[‘build_version’] : “no build version”;
};

_proto.getPageType = function getPageType() {
var pageType = this.metaEl ? this.metaEl[‘page_type’] : “no page type”;
if (pageType === ‘home’) return ‘section front’;
return pageType;
};

_proto.getPageContentLevels = function getPageContentLevels(props) {
if (this.metaEl) {
if (this.metaEl.page_content_level_1) props.properties.page_content_level_1 = this.metaEl.page_content_level_1.replace(‘::’, ‘:’);
if (this.metaEl.page_content_level_2) props.properties.page_content_level_2 = this.metaEl.page_content_level_2.replace(‘::’, ‘:’);
if (this.metaEl.page_content_level_3) props.properties.page_content_level_3 = this.metaEl.page_content_level_3.replace(‘::’, ‘:’);
if (this.metaEl.page_content_level_4) props.properties.page_content_level_4 = this.metaEl.page_content_level_4.replace(‘::’, ‘:’);
} else {
props.properties.page_content_level_1 = “no content level 1”;
props.properties.page_content_level_2 = “no content level 2”;
props.properties.page_content_level_3 = “no content level 3”;
props.properties.page_content_level_4 = “no content level 4”;
}

return props;
};

_proto.getPosition = function getPosition(position, adTime) {
if (adTime === void 0) {
adTime = 0;
}

return parseInt(position – adTime, 10);
};

_proto.getDuration = function getDuration(duration) {
if (duration) {
duration = parseInt(duration, 10);
if (duration > 0 && duration != this.duration) this.duration = duration;
}

return this.duration;
};

_proto.setSecondsViewed = function setSecondsViewed(secondsViewed) {
if (secondsViewed && secondsViewed > 0) this.secondsViewed = secondsViewed;
};

_proto.getSecondsViewed = function getSecondsViewed(eventName) {
if (eventName.indexOf(‘Playing’) > -1) return 10;
return Math.floor(this.secondsViewed % 10);
};

_proto.setCampaignTraits = function setCampaignTraits(props) {
var campaignTraits = Object(_utils__WEBPACK_IMPORTED_MODULE_0__[“getSessionCampaignTraits”])();

if (campaignTraits) {
for (var trait in campaignTraits) {
props.properties[trait] = campaignTraits[trait];
}
}

return props;
};

_proto.getDefaultProps = function getDefaultProps(type, eventName) {
var traits = {
dcg_profile_id: ”,
appsflyer_id: ”,
network_entitlement_list: ”,
lastKnownProfileId: ”,
lastAnonymousProfileId: ”,
mvpd: ”
};
var defaultProps = {
primary_business_unit: ‘fng’,
secondary_business_unit: ‘fox sports’,
app_name: ‘foxsports.com’,
app_platform: ‘web’,
app_version: ”,
app_build: ”,
referrer: this.defaultSpaReferrer,
page_test_name: ”,
page_timePartingDay: ”,
page_timePartingHour: ”,
campaign_tracking_code: ”,
campaign_organization: ”,
campaign_marketing_channel: ”,
campaign_source: ”,
campaign_name: ”,
campaign_additional: ”,
campaign_agency: ”,
page_name: ”,
page_type: ”,
page_content_level_1: ”,
page_content_level_2: ”,
page_content_level_3: ”,
page_content_level_4: ”,
favorites_length: ”,
favorites_list: ”,
favorites_sports_length: ”,
favorites_sports_list: ”,
favorites_teams_length: ”,
favorites_teams_list: ”,
rivals_sports_length: ”,
rivals_sports_list: ”,
rivals_teams_length: ”,
rivals_teams_list: ”,
subscriptions_length: ”,
subscriptions_list: ”,
push_enabled: ”
};
var props; // for page view

if (type === ‘page’) {
props = Object.assign(defaultProps, {
keywords: ”,
page_content_author: ”,
page_content_original_publish_date: ”,
page_content_major_publish_date: ”,
page_content_modified_date: ”,
page_content_original_publish_time: ”,
page_content_major_publish_time: ”,
page_content_modified_time: ”,
page_content_version: ”,
page_content_title: ”,
page_content_id: ”,
page_content_type: ”,
page_content_type_of_story: ”,
page_content_tags: ”,
page_content_category: ”,
page_content_subcategory: ”,
page_content_language: ”,
page_login_state: ”,
page_content_originator: ”
});
return {
name: ‘no page name’,
context: {
traits: traits
},
properties: props
};
} // for event

if (type === ‘video’ && eventName) {
// for video events
props = Object.assign(defaultProps, this.getVideoEventDefaultProps(eventName));
} else {
// for custom/other events
props = defaultProps;
}

return {
event: eventName || ‘no event name’,
context: {
traits: traits
},
properties: props
};
};

_proto.getVideoEventDefaultProps = function getVideoEventDefaultProps(eventName) {
// main default props for video events
var props = {
session_id: ”,
position: 0,
total_length: ”,
video_player_state: ”,
video_player_content_type: ”,
video_asset_title: ”,
video_asset_id: ”,
video_channel_group_id: ”,
video_primary_business_unit: ‘fng’,
video_secondary_business_unit: ‘fox sports’,
video_series_id: ”,
video_series_name: ”,
video_fox_profile: false,
video_content_length: 86400,
video_content_type: ”,
video_ad_supported: false,
video_ad_model: ”,
video_content_length_format: ”,
video_rating: ”,
video_asset_category: ”,
video_genre: ”,
video_season_number: ”,
video_episode_number: ”,
video_tms_id: ”,
video_station_id: ”,
video_network: ”,
video_affiliate_window: ”,
video_authorizing_network: ”,
video_player_type: ”,
video_content_channel: ”,
video_ugc_clip: ”,
video_sports_type: ”,
video_sponsor: ”,
video_screen_layout: ”,
video_airplay: false,
video_first_air_date: ”,
video_first_digital_date: ”,
video_originator: ”,
video_cross_device_play: false,
video_cast_source_name: ”,
video_cast_source_platform: ”,
video_cast_source_version: ”,
video_cast_source_build: ”,
video_content_subscription_type: ”,
video_feed: ”,
video_is_resume: false,
video_is_continuous: false,
video_is_restart: false,
video_is_autoplay: false,
video_is_fullscreen: false,
video_is_livestream: false,
video_volume: ”
}; // other props, segregated to subtypes (playback, content, ad)

var subtypesProps = {
playback: {
bitrate: ”,
framerate: ”,
livestream: false,
ad_type: ”,
ad_asset_id: ”,
ad_pod_id: ”,
video_player: ”,
sound: ”,
full_screen: false,
ad_enabled: true,
quality: ”
},
content: {
bitrate: ”,
framerate: ”,
livestream: false,
asset_id: ”,
pod_id: ”,
title: ”,
publisher: ”,
description: ”,
keywords: ”,
season: ”,
episode: ”,
genre: ”,
program: ”,
channel: ”,
full_episode: false,
airdate: ”
},
ad: {
asset_id: ”,
pod_id: ”,
title: ”,
publisher: ”,
content: null,
pod_position: ”,
pod_length: ”,
type: ”,
load_type: ”,
video_ad_name: ”,
video_ad_length: ”,
video_ad_id: ”,
video_fw_vcid2: ”,
video_fw_sitesection: ”,
video_ad_break_type: ”,
video_ad_break_name: ”,
video_ad_break_position: ”,
video_ad_pod_id: ”,
video_ad_pod_type: ”,
video_ad_pod_name: ”,
video_ad_pod_position: ”,
video_ad_in_pod_position: ”,
video_ad_campaign_id: ”,
video_ad_creative_id: ”,
video_ad_site_id: ”,
video_ad_placement_id: ”,
video_ad_advertiser: ”,
video_ad_creative_url: ”
}
};

switch (eventName) {
case ‘Video Playback Seek Started’:
props = Object.assign(props, {
seek_position: ”
});
break;

case ‘Video Playback Started’:
props = Object.assign(props, {
content_asset_ids: ”,
content_pod_ids: ”
});
break;

case ‘Video Playback Interrupted’:
props = Object.assign(props, {
method: ”
});
break;

case ‘Video Ad Playing’:
props = Object.assign(props, {
video_seconds_viewed: 0,
quartile: null
});
break;

case ‘Video Content Playing’:
case ‘Video Content Completed’:
props = Object.assign(props, {
video_seconds_viewed: 0
});
break;

default:
break;
}

var subtype = this.getVideoSubType(eventName);
if (subtype) props = Object.assign(props, subtypesProps[subtype]);
return props;
};

_proto.getSegmentEventName = function getSegmentEventName(eventName) {
var eventsEnum = {
‘OnPlaybackStart’: ‘Video Playback Started’,
‘OnPlaybackComplete’: ‘Video Playback Completed’,
‘OnContentStart’: ‘Video Content Started’,
‘OnContentComplete’: ‘Video Content Completed’,
‘OnContentPlaying’: ‘Video Content Playing’,
// TODO: delete once JW player is implemented 100%
// TODO: un-comment video ads-related events once its ready for tracking
// ‘OnMediaPlay’: ‘Video Playback Started’,
// ‘OnMediaPause’: ‘Video Playback Paused’,
// ‘OnMediaUnpause’: ‘Video Playback Resumed’,
// ‘OnMediaEnd’: ‘Video Playback Completed’,
// ‘OnMediaBuffer’: ‘Video Playback Buffer Started’,
// ‘OnMediaSeek’: ‘Video Playback Seek Started’,
// ‘OnMediaPlaying’: ‘Video Content Playing’,
// ‘OnMediaStart’: ‘Video Content Started’,
// ‘OnMediaComplete’: ‘Video Content Completed’,
‘OnAdStart’: ‘Video Ad Started’,
‘OnAdPlaying’: ‘Video Ad Playing’,
‘OnAdComplete’: ‘Video Ad Completed’ // ‘onSeekStart’: ‘Video Playback Seek Started’,
// ‘onSeekComplete’: ‘Video Playback Seek Completed’,
// videoLoad: ‘OnLoadReleaseUrl’,
// videoError: ‘OnMediaError’,
// videoLoading: ‘OnMediaLoadStart’,
// videoReady: ‘OnLoadRelease’,
// videoMute: ‘OnMute’,
// playerReady: ‘OnPlayerLoaded’,
// playerOverlayUp: ‘OnShowPlayOverlay’
// playerFullScreen: ‘OnShowFullScreen’,
// adPodStart: ‘onAdPodStart’,
// adPodComplete: ‘onAdPodComplete’,

};
return eventsEnum[eventName] ? eventsEnum[eventName] : null;
};

_proto.getVideoSubType = function getVideoSubType(eventName) {
var subTypesEnum = {
‘Video Playback Started’: ‘playback’,
‘Video Playback Paused’: ‘playback’,
‘Video Playback Buffer Started’: ‘playback’,
‘Video Playback Buffer Completed’: ‘playback’,
‘Video Playback Resumed’: ‘playback’,
‘Video Playback Completed’: ‘playback’,
‘Video Playback Interrupted’: ‘playback’,
‘Video Playback Seek Started’: ‘playback’,
‘Video Playback Seek Completed’: ‘playback’,
‘Video Content Started’: ‘content’,
‘Video Content Playing’: ‘content’,
‘Video Content Completed’: ‘content’,
‘Video Ad Started’: ‘ad’,
‘Video Ad Playing’: ‘ad’,
‘Video Ad Completed’: ‘ad’,
‘Video Ad Break Started’: ‘ad’,
‘Video Ad Break Completed’: ‘ad’,
‘Video Ad Paused’: ‘ad’,
‘Video Ad Resumed’: ‘ad’
};
return subTypesEnum[eventName] ? subTypesEnum[eventName] : null;
}
/**
* sets global trais and custom properties
* @param {*} props – segment global props
* @param {*} data – player config
*/
;

_proto.setGlobalProps = function setGlobalProps(props) {
var pageName = this.getPageName();
var pageType = this.getPageType();
var storyTitle = this.getStoryTitle();
var buildVersion = this.getBuildVersion();
if (pageName) props.properties.page_name = pageName;
if (pageType) props.properties.page_type = pageType;

if (storyTitle) {
props.properties.story_title = storyTitle;
if (props.properties.title) props.properties.title = storyTitle;
if (props.properties.program) props.properties.program = storyTitle;
}

if (buildVersion) {
props.properties.app_build = buildVersion;
props.properties.app_version = buildVersion;
}

props.context.traits = Object(_utils__WEBPACK_IMPORTED_MODULE_0__[“getProfileData”])(props.context.traits);

if (this.auth) {
props.context.traits.mvpd = this.auth.mvpdId || ”;
props.context.traits.network_entitlement_list = this.auth.networkEntitlementList || ”;
}

props = this.getPageContentLevels(props);
props = this.setCampaignTraits(props);
return props;
}
/**
* removes all empty/null custom properties
* @param {Object} props – analytics props object
* @return {Object} – returns object only if not empty/null
*/
;

_proto.updateAllProps = function updateAllProps(props) {
var newProperties = {};

for (var prop in props.properties) {
if (props.properties[prop] || typeof props.properties[prop] === “boolean” || typeof props.properties[prop] === “number”) {
newProperties[prop] = props.properties[prop];
}
}

props.properties = newProperties;
return props;
};

_proto.getPageProps = function getPageProps(name, data) {
var props = this.setGlobalProps(this.getDefaultProps(‘page’));
props.name = name || this.getLandingName();

if (data) {
if (data.properties) {
for (var prop in data.properties) {
props.properties[prop] = data.properties[prop];
}
}

if (data.context && data.context.traits) {
for (var trait in data.context.traits) {
props.context.traits[trait] = data.context.traits[trait];
}
}
}

props = this.updateAllProps(props);
return props;
};

_proto.getEventProps = function getEventProps(eventName, data) {
eventName = this.getSegmentEventName(eventName);
var props = this.setGlobalProps(this.getDefaultProps(‘event’, eventName));
props.event = eventName;

if (data) {
if (data.properties) {
for (var prop in data.properties) {
props.properties[prop] = data.properties[prop];
}
}

if (data.context && data.context.traits) {
for (var trait in data.context.traits) {
props.context.traits[trait] = data.context.traits[trait];
}
}
}

props = this.updateAllProps(props);
return props;
};

_proto.getVideoEventProps = function getVideoEventProps(eventName, data) {
var props = this.setGlobalProps(this.getDefaultProps(‘video’, eventName));
props.event = eventName;
props.properties.session_id = data.player.guid;
props.properties.position = eventName.indexOf(‘Started’) > -1 ? 0 : this.getPosition(data.player.playerGetPosition(), data.player.priorAdTime);
this.current_video_length = this.getDuration(data.player.duration);

if (this.current_video_length != this.last_video_length && data.player.contentType == ‘main’) {
this.last_video_length = this.current_video_length;
this.total_length += this.current_video_length;
}

if (this.total_length > 0) props.properties.total_length = this.total_length;

if (data.player.options.mode) {
props.properties.livestream = data.player.isLive;

if (props.properties.livestream) {
props.properties.video_content_type = ‘LIVE’;
} else {
props.properties.video_content_type = data.player.options.mode.toUpperCase();
}
}

props.properties.video_fox_profile = props.context.traits.dcg_profile_id != null;

props.properties.video_player_state = function (playerState) {
if (playerState === ‘Started’) return ‘start’;
if (playerState === ‘Completed’) return ‘end’;
if (playerState === ‘Playing’) return ‘play’;
return ‘no player state’;
}(eventName.split(/[s,]+/).pop()); // conditional props

if (data.player.contentAssetId) props.properties.content_asset_ids = [data.player.contentAssetId];
if (data.player.currentId) props.properties.video_asset_id = data.player.currentId;
if (data.player.currentId) props.properties.asset_id = data.player.currentId;
if (data.player.contentType) props.properties.video_player_content_type = data.player.contentType;

if (!data.player.isLive && this.current_video_length > 0) {
props.properties.video_content_length = this.current_video_length;
}

props.properties.video_content_length_format = props.properties.video_content_type && props.properties.video_content_type === ‘LIVE’ ? ‘long-form’ : ‘short-form’;
if (data.network) props.properties.video_network = data.network;
if (data.sportsTag) props.properties.video_sports_type = data.sportsTag;

if (typeof props.properties.video_seconds_viewed !== ‘undefined’) {
props.properties.video_seconds_viewed = this.getSecondsViewed(eventName);
}

if (data.event) {
var event = data.event;
var trackingData = event.trackingData;

if (event.chapter) {
props.properties.pod_id = event.chapter.index + 1 + ”;

if (event.chapters && !data.player.isLive && props.properties.hasOwnProperty(‘content_pod_ids’)) {
var contentPodIds = event.chapters.map(function (c, i) {
return i + 1 + ”;
}).slice(event.chapter.index);
props.properties.content_pod_ids = contentPodIds;
}
}

if (eventName === ‘Video Ad Playing’) {
this.adCurrentTime = event.currentTime;
props.properties.video_seconds_viewed = 1;
}

if (eventName === ‘Video Ad Completed’) {
this.adCurrentTime = 0;
props.properties.video_seconds_viewed = 1;
}

if (trackingData) {
var eventType = trackingData.content || trackingData.ad;

if (eventType) {
props.properties.title = eventType.title;
}

if (trackingData.content) {
props.properties.program = trackingData.content.program;
}
}
}

if (data.data) {
props.properties.program = data.data.categoryName || props.properties.program;
}

props = this.updateAllProps(props);
return props;
};

_proto.setSegmentLoaded = function setSegmentLoaded(flag) {
return window.segmentLoaded = flag;
};

_proto.check = function check() {
return typeof window.segmentLoaded === ‘undefined’ ? false : window.segmentLoaded;
};

_proto.trackPage = function trackPage(name, props) {
var self = this;
return new Promise(function (resolve, reject) {
/* https://segment.com/docs/sources/website/analytics.js/#page */
if (!self.check()) {
try {
self.initScript(self.segmentApiKey, false);
} catch (e) {
return reject(‘SEGMENT ANALYTICS !! – Segment Analytics is not initialized’);
}
}

var meta = props || self.metaEl;

if (!meta) {
return reject(‘SEGMENT ANALYTICS !! – analytics meta tag or props are required and are missing’);
}

props = self.getPageProps(name, meta);
name = name || props.name;
/* NOTE: `trackPage` params takes priority over default/meta values from getPageProps */

console.debug(“Segment page tracking (” + name + “): ” + JSON.stringify(props));
window.analytics.page(name, props.properties, {
context: props.context
});
resolve();
});
};

_proto.isCanTrackVideo = function isCanTrackVideo(eventName, data) {
if (eventName === ‘Video Ad Playing’ && data.event) {
return Math.floor(this.adCurrentTime) !== Math.floor(data.event.currentTime);
}

return true;
};

_proto.trackVideoEvent = function trackVideoEvent(eventName, data) {
var _this = this;

var self = this;
return new Promise(function (resolve, reject) {
/* https://segment.com/docs/sources/website/analytics.js/#track */
if (!self.check()) {
try {
self.initScript(self.segmentApiKey, false);
} catch (e) {
return reject(‘SEGMENT ANALYTICS !! – Segment Analytics is not initialized’);
}
}

if (!eventName) return reject(‘SEGMENT ANALYTICS !! – video event name is required’);
if (!data) return reject(‘SEGMENT ANALYTICS !! – video event data is required’);
eventName = self.getSegmentEventName(eventName);

if (eventName == null) {
return reject(“SEGMENT ANALYTICS !! – event(” + eventName + “) is not recognized as a segment event.”);
}

if (!_this.isCanTrackVideo(eventName, data)) {
return resolve();
}

self.auth = data.auth;
var props = self.getVideoEventProps(eventName, data);
console.debug(“Segment video event tracking (” + eventName + “) – ” + JSON.stringify(props));
window.analytics.track(eventName, props.properties, {
context: props.context
});
resolve();
});
};

_proto.trackEvent = function trackEvent(eventName, data) {
var self = this;
return new Promise(function (resolve, reject) {
/* https://segment.com/docs/sources/website/analytics.js/#track */
if (!self.check()) {
try {
self.initScript(self.segmentApiKey, false);
} catch (e) {
return reject(‘SEGMENT ANALYTICS !! – Segment Analytics is not initialized’);
}
}

if (!eventName) return reject(‘SEGMENT ANALYTICS !! – event name is required’);
if (!data) return reject(‘SEGMENT ANALYTICS !! – event data is required’);
var props = self.getEventProps(eventName, data);
console.debug(“Segment event tracking (” + eventName + “) – ” + JSON.stringify(props));
window.analytics.track(eventName, props.properties, {
context: props.context
});
resolve();
});
};

_proto.initScript = function initScript(segmentApiKey, enablePageLoadTracking) {
if (segmentApiKey === void 0) {
segmentApiKey = null;
}

if (enablePageLoadTracking === void 0) {
enablePageLoadTracking = true;
}

var self = this;

if (!self.check()) {
self.segmentApiKey = function (key) {
if (typeof key === ‘string’ && key.length > 0) return key;
return self.metaEl != null && self.metaEl.hasOwnProperty(‘segment_api_key’) && self.metaEl[‘segment_api_key’] ? self.metaEl[‘segment_api_key’] : null;
}(segmentApiKey);

!function () {
var analytics = window.analytics = window.analytics || [];
if (!analytics.initialize) if (analytics.invoked) window.console && console.error && console.error(“Segment snippet included twice.”);else {
analytics.invoked = !0;
analytics.methods = [“trackSubmit”, “trackClick”, “trackLink”, “trackForm”, “pageview”, “identify”, “reset”, “group”, “track”, “ready”, “alias”, “debug”, “page”, “once”, “off”, “on”];

analytics.factory = function (t) {
return function () {
var e = Array.prototype.slice.call(arguments);
e.unshift(t);
analytics.push(e);
return analytics;
};
};

for (var t = 0; t = 0 ? att.replace(/-/g, ‘_’) : att;
data[att] = val.trim();
}
}

return data;
} // query string helpers

function setCampaignTraitsSession() {
if (window.location.search.length == 0) return;
var queryStr = window.location.search;
var campaignTraits = {
“org”: “campaign_organization”,
“ag”: “campaign_agency”,
“mc”: “campaign_type”,
“src”: “campaign_source”,
“cmp”: “campaign_name”,
“add”: “campaign_additional”,
“cmpid”: “campaign_tracking_code”
};
var query = new URLSearchParams(queryStr);
var params = Object.keys(campaignTraits);
var result;

for (var _iterator = query.keys(), _isArray = Array.isArray(_iterator), _i = 0, _iterator = _isArray ? _iterator : _iterator[Symbol.iterator]();;) {
var _ref;

if (_isArray) {
if (_i >= _iterator.length) break;
_ref = _iterator[_i++];
} else {
_i = _iterator.next();
if (_i.done) break;
_ref = _i.value;
}

var key = _ref;

if (key in params) {
if (!result) result = {};
result[campaignTraits[key]] = query.get(key);
}
}

if (result) {
window.sessionStorage.setItem(‘sessionCampaignTraits’, JSON.stringify(result));
}

return result;
}
;
function getSessionCampaignTraits() {
var result;

try {
result = JSON.parse(window.sessionStorage.getItem(‘sessionCampaignTraits’));

if (!result) {
result = setCampaignTraitsSession();
}
} catch (e) {
return;
}

return result;
}
;
/*
`lastAnonymousProfileId`
+ populate when user hasn’t logged in
+ pass blank on tracking when user is logged in
+ pass last anon id if user is logged out (?)

`lastKnownProfileId`
+ pass blank when user hasn’t logged in
+ populate when user logs out
+ pass blank when user logs back in (?)
*/

function isObjectEmpty(obj) {
for (var key in obj) {
if (obj.hasOwnProperty(key)) return false;
}

return true;
}

function getProfileData(objData) {
if (objData === void 0) {
objData = {};
}

var wisReg = window.wisRegistration;

if (wisReg) {
var isLoggedIn = isUserLoggedIn();

if (isLoggedIn) {
var profileId = wisReg.getProfileId();
objData.dcg_profile_id = profileId || ”;
sessionStorage.setItem(‘lastKnownProfileId’, profileId);
}

objData.lastKnownProfileId = sessionStorage.getItem(‘lastKnownProfileId’) || ”;
var lastAnonProfileId = getAnonProfileId(wisReg) || sessionStorage.getItem(‘lastAnonymousProfileId’);
objData.lastAnonymousProfileId = lastAnonProfileId || ”;
sessionStorage.setItem(‘lastAnonymousProfileId’, objData.lastAnonymousProfileId);
}

return objData;
}
function getJWT() {
return _getJWT.apply(this, arguments);
}

function _getJWT() {
_getJWT = _asyncToGenerator(
/*#__PURE__*/
regeneratorRuntime.mark(function _callee() {
var wisReg;
return regeneratorRuntime.wrap(function _callee$(_context) {
while (1) {
switch (_context.prev = _context.next) {
case 0:
wisReg = window.wisRegistration;

if (!wisReg) {
_context.next = 3;
break;
}

return _context.abrupt(“return”, wisReg.getJWT());

case 3:
return _context.abrupt(“return”, null);

case 4:
case “end”:
return _context.stop();
}
}
}, _callee);
}));
return _getJWT.apply(this, arguments);
}

function getAnonProfileId(wisReg) {
if (wisReg.getAnonProfileId === “function”) {
return wisReg.getAnonProfileId();
}

return null;
}

function isUserLoggedIn() {
var wisReg = window.wisRegistration;

if (wisReg && wisReg.isUserLoggedIn === “function”) {
return wisReg.isUserLoggedIn();
}

return null;
}

function getAuthData() {
return _getAuthData.apply(this, arguments);
}

function _getAuthData() {
_getAuthData = _asyncToGenerator(
/*#__PURE__*/
regeneratorRuntime.mark(function _callee2() {
var profile, geo, auth;
return regeneratorRuntime.wrap(function _callee2$(_context2) {
while (1) {
switch (_context2.prev = _context2.next) {
case 0:
profile = getProfileData();
geo = getGeoLocation();
_context2.t0 = isProfileAnon();
_context2.t1 = profile.dcg_profile_id || null;
_context2.next = 6;
return getJWT();

case 6:
_context2.t2 = _context2.sent;
_context2.t3 = profile.lastKnownProfileId;
_context2.t4 = profile.lastAnonymousProfileId;
_context2.t5 = {
profileAnonymous: _context2.t0,
profileId: _context2.t1,
accessToken: _context2.t2,
lastKnownProfileId: _context2.t3,
lastAnonymousProfileId: _context2.t4
};
_context2.t6 = getMVPDId();
_context2.next = 13;
return getUserEntitlementsList();

case 13:
_context2.t7 = _context2.sent;
_context2.t8 = _extends({}, geo);
auth = {
upstreamUserID: null,
profile: _context2.t5,
authorizingNetwork: null,
mvpdId: _context2.t6,
networkEntitlementList: _context2.t7,
geo: _context2.t8
};
return _context2.abrupt(“return”, auth);

case 17:
case “end”:
return _context2.stop();
}
}
}, _callee2);
}));
return _getAuthData.apply(this, arguments);
}

function isProfileAnon() {
var isLoggedIn = isUserLoggedIn();

if (isLoggedIn) {
return !isLoggedIn;
}

return true;
}
/**
* set geo location on session storage
*/

function setGeoLocation() {
if (navigator.geolocation) {
navigator.geolocation.getCurrentPosition(function (pos) {
var geo = {
geoLatitude: pos.coords.latitude,
geoLongitude: pos.coords.longitude
};
sessionStorage.setItem(‘fs_geolocation’, JSON.stringify(geo));
});
}
}
/**
* get geo location from session storage
*/

function getGeoLocation() {
// Get geolocation data from sessionStorage
var geo = sessionStorage.getItem(‘fs_geolocation’);

if (geo) {
return JSON.parse(geo);
}

return {
geoLatitude: null,
geoLongitude: null
};
}
function getUserEntitlementsList() {
return _getUserEntitlementsList.apply(this, arguments);
}
/**
* returns mvpd id
*/

function _getUserEntitlementsList() {
_getUserEntitlementsList = _asyncToGenerator(
/*#__PURE__*/
regeneratorRuntime.mark(function _callee3() {
var wisReg, entitlements, channels, ppvEvents, formmattedList;
return regeneratorRuntime.wrap(function _callee3$(_context3) {
while (1) {
switch (_context3.prev = _context3.next) {
case 0:
wisReg = window.wisRegistration;

if (!wisReg) {
_context3.next = 13;
break;
}

_context3.next = 4;
return wisReg.getUserEntitlements();

case 4:
entitlements = _context3.sent;

if (entitlements) {
_context3.next = 7;
break;
}

return _context3.abrupt(“return”, null);

case 7:
channels = entitlements.channels.map(function (e) {
return e.name;
});
ppvEvents = entitlements.ppvEvents.map(function (e) {
return e.uri;
});
formmattedList = ”;

if (channels) {
formmattedList = channels.toString();
}

if (ppvEvents && ppvEvents.length > 0) {
formmattedList += “,” + ppvEvents.toString();
}

return _context3.abrupt(“return”, formmattedList);

case 13:
return _context3.abrupt(“return”, null);

case 14:
case “end”:
return _context3.stop();
}
}
}, _callee3);
}));
return _getUserEntitlementsList.apply(this, arguments);
}

function getMVPDId() {
var wisReg = window.wisRegistration;

if (wisReg && typeof wisReg.getMVPDDetails === “function”) {
var details = wisReg.getMVPDDetails();

if (details) {
return details.providerId;
}

return null;
}
}

/***/ }),

/***/ “./node_modules/@foxdcg/fs-segment-analytics/lib/index.js”:
/*!****************************************************************!*
!*** ./node_modules/@foxdcg/fs-segment-analytics/lib/index.js ***!
****************************************************************/
/*! exports provided: SegmentAnalytics, getAuthData, setGeoLocation, getGeoLocation */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

“use strict”;
__webpack_require__.r(__webpack_exports__);
/* harmony import */ var _helpers_SegmentAnalytics__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./helpers/SegmentAnalytics */ “./node_modules/@foxdcg/fs-segment-analytics/lib/helpers/SegmentAnalytics.js”);
/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, “SegmentAnalytics”, function() { return _helpers_SegmentAnalytics__WEBPACK_IMPORTED_MODULE_0__[“default”]; });

/* harmony import */ var _helpers_utils__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./helpers/utils */ “./node_modules/@foxdcg/fs-segment-analytics/lib/helpers/utils.js”);
/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, “getAuthData”, function() { return _helpers_utils__WEBPACK_IMPORTED_MODULE_1__[“getAuthData”]; });

/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, “setGeoLocation”, function() { return _helpers_utils__WEBPACK_IMPORTED_MODULE_1__[“setGeoLocation”]; });

/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, “getGeoLocation”, function() { return _helpers_utils__WEBPACK_IMPORTED_MODULE_1__[“getGeoLocation”]; });

/***/ }),

/***/ “./node_modules/isomorphic-fetch/fetch-npm-browserify.js”:
/*!***************************************************************!*
!*** ./node_modules/isomorphic-fetch/fetch-npm-browserify.js ***!
***************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

// the whatwg-fetch polyfill installs the fetch() function
// on the global object (window or self)
//
// Return that as the export for use in Webpack, Browserify etc.
__webpack_require__(/*! whatwg-fetch */ “./node_modules/whatwg-fetch/fetch.js”);
module.exports = self.fetch.bind(self);

/***/ }),

/***/ “./node_modules/lazysizes/lazysizes.js”:
/*!*********************************************!*
!*** ./node_modules/lazysizes/lazysizes.js ***!
*********************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

(function(window, factory) {
var lazySizes = factory(window, window.document);
window.lazySizes = lazySizes;
if( true && module.exports){
module.exports = lazySizes;
}
}(window, function l(window, document) {
‘use strict’;
/*jshint eqnull:true */
if(!document.getElementsByClassName){return;}

var lazySizesConfig;

var docElem = document.documentElement;

var Date = window.Date;

var supportPicture = window.HTMLPictureElement;

var _addEventListener = ‘addEventListener’;

var _getAttribute = ‘getAttribute’;

var addEventListener = window[_addEventListener];

var setTimeout = window.setTimeout;

var requestAnimationFrame = window.requestAnimationFrame || setTimeout;

var requestIdleCallback = window.requestIdleCallback;

var regPicture = /^picture$/i;

var loadEvents = [‘load’, ‘error’, ‘lazyincluded’, ‘_lazyloaded’];

var regClassCache = {};

var forEach = Array.prototype.forEach;

var hasClass = function(ele, cls) {
if(!regClassCache[cls]){
regClassCache[cls] = new RegExp(‘(\s|^)’+cls+'(\s|$)’);
}
return regClassCache[cls].test(ele[_getAttribute](‘class’) || ”) && regClassCache[cls];
};

var addClass = function(ele, cls) {
if (!hasClass(ele, cls)){
ele.setAttribute(‘class’, (ele[_getAttribute](‘class’) || ”).trim() + ‘ ‘ + cls);
}
};

var removeClass = function(ele, cls) {
var reg;
if ((reg = hasClass(ele,cls))) {
ele.setAttribute(‘class’, (ele[_getAttribute](‘class’) || ”).replace(reg, ‘ ‘));
}
};

var addRemoveLoadEvents = function(dom, fn, add){
var action = add ? _addEventListener : ‘removeEventListener’;
if(add){
addRemoveLoadEvents(dom, fn);
}
loadEvents.forEach(function(evt){
dom[action](evt, fn);
});
};

var triggerEvent = function(elem, name, detail, noBubbles, noCancelable){
var event = document.createEvent(‘CustomEvent’);

event.initCustomEvent(name, !noBubbles, !noCancelable, detail || {});

elem.dispatchEvent(event);
return event;
};

var updatePolyfill = function (el, full){
var polyfill;
if( !supportPicture && ( polyfill = (window.picturefill || lazySizesConfig.pf) ) ){
polyfill({reevaluate: true, elements: [el]});
} else if(full && full.src){
el.src = full.src;
}
};

var getCSS = function (elem, style){
return (getComputedStyle(elem, null) || {})[style];
};

var getWidth = function(elem, parent, width){
width = width || elem.offsetWidth;

while(width 0);

if(visible && getCSS(parent, ‘overflow’) != ‘visible’){
outerRect = parent.getBoundingClientRect();
visible = eLright > outerRect.left &&
eLleft outerRect.top – 1 &&
eLtop 500 ? 500 : 400;
}

defaultExpand = lazySizesConfig.expand;
preloadExpand = defaultExpand * lazySizesConfig.expFactor;
}

if(currentExpand 2 && loadMode > 2 && !document.hidden){
currentExpand = preloadExpand;
lowRuns = 0;
} else if(loadMode > 1 && lowRuns > 1 && isLoading = elemNegativeExpand &&
(eLtop = rect.top) = elemNegativeExpand * hFac &&
(eLleft = rect.left) 9){break;}
} else if(!loadedSomething && isCompleted && !autoLoadElem &&
isLoading 2 &&
(preloadElems[0] || lazySizesConfig.preloadAfterLoad) &&
(preloadElems[0] || (!elemExpandVal && ((eLbottom || eLright || eLleft || eLtop) || lazyloadElems[i][_getAttribute](lazySizesConfig.sizesAttr) != ‘auto’)))){
autoLoadElem = preloadElems[0] || lazyloadElems[i];
}
}

if(autoLoadElem && !loadedSomething){
unveilElement(autoLoadElem);
}
}
};

var throttledCheckElements = throttle(checkElements);

var switchLoadingClass = function(e){
addClass(e.target, lazySizesConfig.loadedClass);
removeClass(e.target, lazySizesConfig.loadingClass);
addRemoveLoadEvents(e.target, rafSwitchLoadingClass);
};
var rafedSwitchLoadingClass = rAFIt(switchLoadingClass);
var rafSwitchLoadingClass = function(e){
rafedSwitchLoadingClass({target: e.target});
};

var changeIframeSrc = function(elem, src){
try {
elem.contentWindow.location.replace(src);
} catch(e){
elem.src = src;
}
};

var handleSources = function(source){
var customMedia, parent;

var sourceSrcset = source[_getAttribute](lazySizesConfig.srcsetAttr);

if( (customMedia = lazySizesConfig.customMedia[source[_getAttribute](‘data-media’) || source[_getAttribute](‘media’)]) ){
source.setAttribute(‘media’, customMedia);
}

if(sourceSrcset){
source.setAttribute(‘srcset’, sourceSrcset);
}

//https://bugzilla.mozilla.org/show_bug.cgi?id=1170572
if(customMedia){
parent = source.parentNode;
parent.insertBefore(source.cloneNode(), source);
parent.removeChild(source);
}
};

var lazyUnveil = rAFIt(function (elem, detail, isAuto, sizes, isImg){
var src, srcset, parent, isPicture, event, firesLoad;

if(!(event = triggerEvent(elem, ‘lazybeforeunveil’, detail)).defaultPrevented){

if(sizes){
if(isAuto){
addClass(elem, lazySizesConfig.autosizesClass);
} else {
elem.setAttribute(‘sizes’, sizes);
}
}

srcset = elem[_getAttribute](lazySizesConfig.srcsetAttr);
src = elem[_getAttribute](lazySizesConfig.srcAttr);

if(isImg) {
parent = elem.parentNode;
isPicture = parent && regPicture.test(parent.nodeName || ”);
}

firesLoad = detail.firesLoad || ((‘src’ in elem) && (srcset || src || isPicture));

event = {target: elem};

if(firesLoad){
addRemoveLoadEvents(elem, resetPreloading, true);
clearTimeout(resetPreloadingTimer);
resetPreloadingTimer = setTimeout(resetPreloading, 2500);

addClass(elem, lazySizesConfig.loadingClass);
addRemoveLoadEvents(elem, rafSwitchLoadingClass, true);
}

if(isPicture){
forEach.call(parent.getElementsByTagName(‘source’), handleSources);
}

if(srcset){
elem.setAttribute(‘srcset’, srcset);
} else if(src && !isPicture){
if(regIframe.test(elem.nodeName)){
changeIframeSrc(elem, src);
} else {
elem.src = src;
}
}

if(srcset || isPicture){
updatePolyfill(elem, {src: src});
}
}

rAF(function(){
if(elem._lazyRace){
delete elem._lazyRace;
}
removeClass(elem, lazySizesConfig.lazyClass);

if( !firesLoad || elem.complete ){
if(firesLoad){
resetPreloading(event);
} else {
isLoading–;
}
switchLoadingClass(event);
}
});
});

var unveilElement = function (elem){
var detail;

var isImg = regImg.test(elem.nodeName);

//allow using sizes=”auto”, but don’t use. it’s invalid. Use data-sizes=”auto” or a valid value for sizes instead (i.e.: sizes=”80vw”)
var sizes = isImg && (elem[_getAttribute](lazySizesConfig.sizesAttr) || elem[_getAttribute](‘sizes’));
var isAuto = sizes == ‘auto’;

if( (isAuto || !isCompleted) && isImg && (elem.src || elem.srcset) && !elem.complete && !hasClass(elem, lazySizesConfig.errorClass)){return;}

detail = triggerEvent(elem, ‘lazyunveilread’).detail;

if(isAuto){
autoSizer.updateElem(elem, true, elem.offsetWidth);
}

elem._lazyRace = true;
isLoading++;

lazyUnveil(elem, detail, isAuto, sizes, isImg);
};

var onload = function(){
if(isCompleted){return;}
if(Date.now() – started 0);
},
checkElems: throttledCheckElements,
unveil: unveilElement
};
})();

var autoSizer = (function(){
var autosizesElems;

var sizeElement = rAFIt(function(elem, parent, event, width){
var sources, i, len;
elem._lazysizesWidth = width;
width += ‘px’;

elem.setAttribute(‘sizes’, width);

if(regPicture.test(parent.nodeName || ”)){
sources = parent.getElementsByTagName(‘source’);
for(i = 0, len = sources.length; i 1) {
for (var i = 1; i
* @licence MIT
*
*/

(function(self) {
‘use strict’;

var nativeURLSearchParams = (self.URLSearchParams && self.URLSearchParams.prototype.get) ? self.URLSearchParams : null,
isSupportObjectConstructor = nativeURLSearchParams && (new nativeURLSearchParams({a: 1})).toString() === ‘a=1’,
// There is a bug in safari 10.1 (and earlier) that incorrectly decodes `%2B` as an empty space and not a plus.
decodesPlusesCorrectly = nativeURLSearchParams && (new nativeURLSearchParams(‘s=%2B’).get(‘s’) === ‘+’),
__URLSearchParams__ = “__URLSearchParams__”,
// Fix bug in Edge which cannot encode ‘ &’ correctly
encodesAmpersandsCorrectly = nativeURLSearchParams ? (function() {
var ampersandTest = new nativeURLSearchParams();
ampersandTest.append(‘s’, ‘ &’);
return ampersandTest.toString() === ‘s=+%26’;
})() : true,
prototype = URLSearchParamsPolyfill.prototype,
iterable = !!(self.Symbol && self.Symbol.iterator);

if (nativeURLSearchParams && isSupportObjectConstructor && decodesPlusesCorrectly && encodesAmpersandsCorrectly) {
return;
}

/**
* Make a URLSearchParams instance
*
* @param {object|string|URLSearchParams} search
* @constructor
*/
function URLSearchParamsPolyfill(search) {
search = search || “”;

// support construct object with another URLSearchParams instance
if (search instanceof URLSearchParams || search instanceof URLSearchParamsPolyfill) {
search = search.toString();
}
this [__URLSearchParams__] = parseToDict(search);
}

/**
* Appends a specified key/value pair as a new search parameter.
*
* @param {string} name
* @param {string} value
*/
prototype.append = function(name, value) {
appendTo(this [__URLSearchParams__], name, value);
};

/**
* Deletes the given search parameter, and its associated value,
* from the list of all search parameters.
*
* @param {string} name
*/
prototype[‘delete’] = function(name) {
delete this [__URLSearchParams__] [name];
};

/**
* Returns the first value associated to the given search parameter.
*
* @param {string} name
* @returns {string|null}
*/
prototype.get = function(name) {
var dict = this [__URLSearchParams__];
return name in dict ? dict[name][0] : null;
};

/**
* Returns all the values association with a given search parameter.
*
* @param {string} name
* @returns {Array}
*/
prototype.getAll = function(name) {
var dict = this [__URLSearchParams__];
return name in dict ? dict [name].slice(0) : [];
};

/**
* Returns a Boolean indicating if such a search parameter exists.
*
* @param {string} name
* @returns {boolean}
*/
prototype.has = function(name) {
return name in this [__URLSearchParams__];
};

/**
* Sets the value associated to a given search parameter to
* the given value. If there were several values, delete the
* others.
*
* @param {string} name
* @param {string} value
*/
prototype.set = function set(name, value) {
this [__URLSearchParams__][name] = [” + value];
};

/**
* Returns a string containg a query string suitable for use in a URL.
*
* @returns {string}
*/
prototype.toString = function() {
var dict = this[__URLSearchParams__], query = [], i, key, name, value;
for (key in dict) {
name = encode(key);
for (i = 0, value = dict[key]; i -1
}
}

function normalizeName(name) {
if (typeof name !== ‘string’) {
name = String(name)
}
if (/[^a-z0-9-#$%&’*+.^_`|~]/i.test(name)) {
throw new TypeError(‘Invalid character in header field name’)
}
return name.toLowerCase()
}

function normalizeValue(value) {
if (typeof value !== ‘string’) {
value = String(value)
}
return value
}

// Build a destructive iterator for the value list
function iteratorFor(items) {
var iterator = {
next: function() {
var value = items.shift()
return {done: value === undefined, value: value}
}
}

if (support.iterable) {
iterator[Symbol.iterator] = function() {
return iterator
}
}

return iterator
}

function Headers(headers) {
this.map = {}

if (headers instanceof Headers) {
headers.forEach(function(value, name) {
this.append(name, value)
}, this)
} else if (Array.isArray(headers)) {
headers.forEach(function(header) {
this.append(header[0], header[1])
}, this)
} else if (headers) {
Object.getOwnPropertyNames(headers).forEach(function(name) {
this.append(name, headers[name])
}, this)
}
}

Headers.prototype.append = function(name, value) {
name = normalizeName(name)
value = normalizeValue(value)
var oldValue = this.map[name] this.map[name] = oldValue ? oldValue + ‘, ‘ + value : value
}

Headers.prototype[‘delete’] = function(name) {
delete this.map[normalizeName(name)] }

Headers.prototype.get = function(name) {
name = normalizeName(name)
return this.has(name) ? this.map[name] : null
}

Headers.prototype.has = function(name) {
return this.map.hasOwnProperty(normalizeName(name))
}

Headers.prototype.set = function(name, value) {
this.map[normalizeName(name)] = normalizeValue(value)
}

Headers.prototype.forEach = function(callback, thisArg) {
for (var name in this.map) {
if (this.map.hasOwnProperty(name)) {
callback.call(thisArg, this.map[name], name, this)
}
}
}

Headers.prototype.keys = function() {
var items = [] this.forEach(function(value, name) {
items.push(name)
})
return iteratorFor(items)
}

Headers.prototype.values = function() {
var items = [] this.forEach(function(value) {
items.push(value)
})
return iteratorFor(items)
}

Headers.prototype.entries = function() {
var items = [] this.forEach(function(value, name) {
items.push([name, value])
})
return iteratorFor(items)
}

if (support.iterable) {
Headers.prototype[Symbol.iterator] = Headers.prototype.entries
}

function consumed(body) {
if (body.bodyUsed) {
return Promise.reject(new TypeError(‘Already read’))
}
body.bodyUsed = true
}

function fileReaderReady(reader) {
return new Promise(function(resolve, reject) {
reader.onload = function() {
resolve(reader.result)
}
reader.onerror = function() {
reject(reader.error)
}
})
}

function readBlobAsArrayBuffer(blob) {
var reader = new FileReader()
var promise = fileReaderReady(reader)
reader.readAsArrayBuffer(blob)
return promise
}

function readBlobAsText(blob) {
var reader = new FileReader()
var promise = fileReaderReady(reader)
reader.readAsText(blob)
return promise
}

function readArrayBufferAsText(buf) {
var view = new Uint8Array(buf)
var chars = new Array(view.length)

for (var i = 0; i -1 ? upcased : method
}

function Request(input, options) {
options = options || {}
var body = options.body

if (input instanceof Request) {
if (input.bodyUsed) {
throw new TypeError(‘Already read’)
}
this.url = input.url
this.credentials = input.credentials
if (!options.headers) {
this.headers = new Headers(input.headers)
}
this.method = input.method
this.mode = input.mode
this.signal = input.signal
if (!body && input._bodyInit != null) {
body = input._bodyInit
input.bodyUsed = true
}
} else {
this.url = String(input)
}

this.credentials = options.credentials || this.credentials || ‘same-origin’
if (options.headers || !this.headers) {
this.headers = new Headers(options.headers)
}
this.method = normalizeMethod(options.method || this.method || ‘GET’)
this.mode = options.mode || this.mode || null
this.signal = options.signal || this.signal
this.referrer = null

if ((this.method === ‘GET’ || this.method === ‘HEAD’) && body) {
throw new TypeError(‘Body not allowed for GET or HEAD requests’)
}
this._initBody(body)
}

Request.prototype.clone = function() {
return new Request(this, {body: this._bodyInit})
}

function decode(body) {
var form = new FormData()
body
.trim()
.split(‘&’)
.forEach(function(bytes) {
if (bytes) {
var split = bytes.split(‘=’)
var name = split.shift().replace(/+/g, ‘ ‘)
var value = split.join(‘=’).replace(/+/g, ‘ ‘)
form.append(decodeURIComponent(name), decodeURIComponent(value))
}
})
return form
}

function parseHeaders(rawHeaders) {
var headers = new Headers()
// Replace instances of rn and n followed by at least one space or horizontal tab with a space
// https://tools.ietf.org/html/rfc7230#section-3.2
var preProcessedHeaders = rawHeaders.replace(/r?n[t ]+/g, ‘ ‘)
preProcessedHeaders.split(/r?n/).forEach(function(line) {
var parts = line.split(‘:’)
var key = parts.shift().trim()
if (key) {
var value = parts.join(‘:’).trim()
headers.append(key, value)
}
})
return headers
}

Body.call(Request.prototype)

function Response(bodyInit, options) {
if (!options) {
options = {}
}

this.type = ‘default’
this.status = options.status === undefined ? 200 : options.status
this.ok = this.status >= 200 && this.status 3 && arguments[3] !== undefined ? arguments[3] : _utils__WEBPACK_IMPORTED_MODULE_1__[“headers”];
var options = Object.assign({
method: ‘GET’
}, customHeaders);
return fetchData(url, options, callback, error);
}
function post(url, data, callback, error) {
var customHeaders = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : _utils__WEBPACK_IMPORTED_MODULE_1__[“headers”];
var options = Object.assign({
method: ‘POST’,
body: JSON.stringify(data)
}, customHeaders);
return sendPost(url, options, callback, error);
}

/***/ }),

/***/ “./react-app-src/shared/services/FsPlaylistService.js”:
/*!************************************************************!*
!*** ./react-app-src/shared/services/FsPlaylistService.js ***!
************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

“use strict”;
__webpack_require__.r(__webpack_exports__);
/* harmony import */ var _constants__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../constants */ “./react-app-src/shared/constants.js”);
/* harmony import */ var _FetchService__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./FetchService */ “./react-app-src/shared/services/FetchService.js”);
function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(“Cannot call a class as a function”); } }

function _defineProperties(target, props) { for (var i = 0; i 0 && arguments[0] !== undefined ? arguments[0] : ”;
var defaultVideoTags = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : ”;
var postId = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 0;

if (this.parselyPlaylist) {
return this.parselyPlaylist;
}

var tags = ‘?parselytags=’ + parselyFeedTags + (defaultVideoTags && ‘&defaulttags=’ + defaultVideoTags) + ‘&postid=’ + postId;
this.parselyPlaylist = Object(_FetchService__WEBPACK_IMPORTED_MODULE_1__[“get”])(_constants__WEBPACK_IMPORTED_MODULE_0__[“settings”].PARSELY_URL_V2 + tags, function (json) {
if (!json.success) return [];
var data = json.data;
return Array.isArray(data) ? data : [data];
}, function () {
return [];
});
return this.parselyPlaylist;
}
}, {
key: “getParselyContentByFeed”,
value: function getParselyContentByFeed(feedUrl) {
var postId = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;

if (this.playlist) {
return this.playlist;
}

var url = ‘?feedurl=’ + encodeURIComponent(feedUrl) + ‘&postid=’ + postId;
this.playlist = Object(_FetchService__WEBPACK_IMPORTED_MODULE_1__[“get”])(_constants__WEBPACK_IMPORTED_MODULE_0__[“settings”].PARSELY_URL_V2 + url, function (json) {
if (!json.success) return [];
var data = json.data;
return Array.isArray(data) ? data : [data];
}, function () {
return [];
});
return this.playlist;
}
}]);

return FsPlaylistService;
}();

/* harmony default export */ __webpack_exports__[“default”] = (FsPlaylistService);

/***/ }),

/***/ “./react-app-src/shared/utils.js”:
/*!***************************************!*
!*** ./react-app-src/shared/utils.js ***!
***************************************/
/*! exports provided: headers, handleFetchedErrors, getPostId, assetsDomain, decodeHtmlEntities, getOrderedChannels, parseImagesTag, parseSeconds, isFlashEnabled, isTabletOrMobile, isAndroid, getQueryString, getCookie, getAuthStatus */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

“use strict”;
__webpack_require__.r(__webpack_exports__);
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, “headers”, function() { return headers; });
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, “handleFetchedErrors”, function() { return handleFetchedErrors; });
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, “getPostId”, function() { return getPostId; });
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, “assetsDomain”, function() { return assetsDomain; });
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, “decodeHtmlEntities”, function() { return decodeHtmlEntities; });
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, “getOrderedChannels”, function() { return getOrderedChannels; });
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, “parseImagesTag”, function() { return parseImagesTag; });
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, “parseSeconds”, function() { return parseSeconds; });
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, “isFlashEnabled”, function() { return isFlashEnabled; });
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, “isTabletOrMobile”, function() { return isTabletOrMobile; });
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, “isAndroid”, function() { return isAndroid; });
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, “getQueryString”, function() { return getQueryString; });
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, “getCookie”, function() { return getCookie; });
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, “getAuthStatus”, function() { return getAuthStatus; });
var headers = {
headers: {
Accept: ‘application/json’,
‘Content-Type’: ‘application/json’
},
credentials: ‘include’
};
function handleFetchedErrors(response) {
if (!response.ok) {
throw Error(response.statusText);
}

return response;
}
function getPostId() {
var pageInfo = document.getElementById(‘page-information’);

if (pageInfo) {
var body = document.querySelector(‘.fox_sectionfront .body-content’);

if (body) {
return body.getAttribute(‘post-id’);
}
}

return document.body.getAttribute(‘post-id’);
}

function getAssetsDomain() {
var locationName = location.hostname;

if (locationName.match(/www.foxsports.com/)) {
return ‘https://b.fssta.com/sta/’;
}

if (locationName.match(/wp.foxsports.com/)) {
return ‘https://b.dev.fssta.com/sta/’;
}

return ‘/wp-content/themes/foxsports/assets/dist/’;
}

var assetsDomain = getAssetsDomain();
function decodeHtmlEntities(text) {
if (!text) return ”;
return text.replace(/&(w*|#d*);/g, function (s) {
return decodeTable[s] || ”;
});
}
/**
*
* @param {*} chans – channels coming from ddp entitlements res
*/

function getOrderedChannels(chans) {
// channels are defined as per priority
var channels = [{
name: “fbc-fox”
}, {
name: “fs1”
}, {
name: “fs2”
}, {
name: “btn”
}, {
name: “foxdep”
}];
var result = channels.filter(function (el) {
return chans.some(function (el2) {
return el.name === el2.name;
});
});
return result;
}
var decodeTable = {
‘&’: ‘&’,
‘”‘: ‘”‘,
‘<‘: ”,
‘ ‘: ‘ ‘,
‘!’: ‘!’,
‘”‘: ‘”‘,
‘#’: ‘#’,
‘$’: ‘$’,
‘%’: ‘%’,
‘&’: ‘&’,
”’: ”’,
”’: ”’,
‘(‘: ‘(‘,
‘)’: ‘)’,
‘*’: ‘*’,
‘+’: ‘+’,
‘,’: ‘,’,
‘-‘: ‘-‘,
‘.’: ‘.’,
‘/’: ‘/’,
‘–’: ‘–’,
‘—’: ‘—’,
‘‘’: ‘‘’,
‘’’: ‘’’,
‘‚’: ‘‚’,
‘“’: ‘“’,
‘”’: ‘”’,
‘„’: ‘„’,
‘†’: ‘†’,
‘‡’: ‘‡’,
‘•’: ‘•’,
‘…’: ‘…’,
‘‰’: ‘‰’,
‘€’: ‘€’,
‘™’: ‘™’
};
function parseImagesTag(text) {
text = “

“.concat(text, “

“);
var parser = new DOMParser();
var result = {
srcSet: ”,
sizes: ”,
src: ”,
noscript: ”
};

try {
var el = parser.parseFromString(text, ‘text/html’);
var images = el.getElementsByTagName(‘img’);

if (images.length > 0) {
var img = images[0];
result.sizes = img.getAttribute(‘data-sizes’) || img.getAttribute(‘sizes’);
result.srcSet = img.getAttribute(‘data-srcset’) || img.getAttribute(‘srcset’);
result.src = img.getAttribute(‘data-src’) || img.getAttribute(‘src’);
}

var noscripts = el.getElementsByTagName(‘noscript’);

if (noscripts.length > 0) {
var noscript = noscripts[0];
result.noscript = noscript.innerHTML;
}
} finally {
return result;
}
}
function parseSeconds(time) {
if (!time || time.indexOf(‘.’) === -1) {
return time;
}

var minutes = Math.floor(time / 60);
var seconds = Math.floor(time – minutes * 60);
return minutes + ‘:’ + (seconds

71201-71203+71207+71209-71213

628

22611