{"version":3,"names":["$","intervalId","previouslyReportedPct","videoDurations","videoProgress","waitForBrightcove","callback","videojs","setTimeout","initVideoEvents","each","videoElem","this","data","bcPlayer","videoId","attr","Math","random","ready","duration","bindPlayerEvents","on","event","slick","currentSlide","$slides","filter","find","player","isNaN","pct","round","currentTime","el","trigger","eventType","eventAction","elementText","mediainfo","name","timeoutVal","clearInterval","setInterval","indexOf","text","goal","trackProgress","trackAnalytics","carouselElem","closest","length","consentBrightcoveHandler","element","scriptSrc","script","document","createElement","setAttribute","body","appendChild","onload","playerScriptValue","append","brightcoveListener","loadPlayerScriptsConsent","css","removeClass","MutationObserver","mutationList","observer","forEach","mutation","type","removeAttr","observe","childList","subtree","window","children","jQuery","click","keydown","keyCode","which","analytics","eventConfig","push","target","codeId","events","eventTarget","tags","componentName","componentId","elementType","event1","document_title","environment","eventCategory","eventLabel","page_bu","page_language","page_type","pardot_cookie_id","sitecore_contact_id","video_id"],"sources":["assets/feature/media/video/js/_sp03-video-brightcove.js"],"sourcesContent":["(function ($) {\r\n var intervalId = {};\r\n var previouslyReportedPct = {};\r\n var videoDurations = {};\r\n var videoProgress = {};\r\n\r\n function waitForBrightcove(callback) {\r\n if (typeof videojs !== \"undefined\") {\r\n callback();\r\n } else {\r\n setTimeout(function () {\r\n waitForBrightcove(callback);\r\n }, 500);\r\n }\r\n }\r\n\r\n $(document).ready(function () {\r\n waitForBrightcove(initVideoEvents);\r\n });\r\n\r\n function initVideoEvents() {\r\n // Find all videos in carousels and standalone on the page\r\n $(\".video-js\").each(function () {\r\n var videoElem = this;\r\n if (!$(videoElem).data(\"initialized\")) {\r\n var bcPlayer = videojs(videoElem);\r\n var videoId = $(videoElem).attr(\"data-video-id\") || \"video-\" + Math.random();\r\n\r\n $(videoElem).data(\"initialized\", true);\r\n videoProgress[videoId] = 0; // Initialize tracking\r\n\r\n bcPlayer.ready(function () {\r\n videoDurations[videoId] = bcPlayer.duration();\r\n // console.log(\"Brightcove Video Duration Found:\", videoDurations[videoId]);\r\n bindPlayerEvents(bcPlayer, videoId);\r\n });\r\n }\r\n });\r\n\r\n // Detect video initialization inside carousels when slides change\r\n $(\".c03-carousel\").on(\"afterChange\", function (event, slick, currentSlide) {\r\n var visibleSlides = $(slick.$slides).filter(\".slick-active\");\r\n\r\n visibleSlides.each(function () {\r\n var videoElem = $(this).find(\".video-js\")[0];\r\n if (videoElem && !$(videoElem).data(\"initialized\")) {\r\n var bcPlayer = videojs(videoElem);\r\n var videoId = $(videoElem).attr(\"data-video-id\") || \"video-\" + Math.random();\r\n\r\n $(videoElem).data(\"initialized\", true);\r\n videoProgress[videoId] = 0;\r\n\r\n bcPlayer.ready(function () {\r\n videoDurations[videoId] = bcPlayer.duration();\r\n bindPlayerEvents(bcPlayer, videoId);\r\n });\r\n }\r\n });\r\n });\r\n }\r\n\r\n function bindPlayerEvents(player, videoId) {\r\n player.ready(function () {\r\n // console.log(\"Player \" + videoId + \" is ready, binding events...\");\r\n\r\n player.on(\"play\", function () {\r\n // console.log(\"Video \" + videoId + \" playing, pausing other videos...\");\r\n trackAnalytics(player, videoId);\r\n // Pause carousel if the video is inside one\r\n var carouselElem = $(player.el()).closest(\".c03-carousel\");\r\n if (carouselElem.length) {\r\n carouselElem.slick(\"slickPause\");\r\n }\r\n });\r\n\r\n player.on(\"pause\", function () {\r\n // console.log(\"Video \" + videoId + \" paused, resuming carousel if applicable...\");\r\n var carouselElem = $(player.el()).closest(\".c03-carousel\");\r\n if (carouselElem.length) {\r\n carouselElem.slick(\"slickPlay\");\r\n }\r\n });\r\n\r\n player.on(\"ended\", function () {\r\n // console.log(\"Video \" + videoId + \" ended, resuming carousel if applicable...\");\r\n var carouselElem = $(player.el()).closest(\".c03-carousel\");\r\n if (carouselElem.length) {\r\n carouselElem.slick(\"slickPlay\");\r\n }\r\n });\r\n });\r\n }\r\n\r\n function trackAnalytics(player, videoId) {\r\n var duration = player.duration();\r\n if (!duration || isNaN(duration)) return;\r\n\r\n var pct = Math.round((player.currentTime() / duration) * 100);\r\n if (pct === 0) {\r\n // console.log(\"Tracking video start click for Video \" + videoId);\r\n $(player.el()).trigger(\"playvideo\", [{\r\n \"eventType\": \"video start click\",\r\n \"eventAction\": \"video start click\",\r\n \"elementText\": player.mediainfo ? player.mediainfo.name : \"Unknown Video\"\r\n }]);\r\n }\r\n\r\n var timeoutVal = Math.round((duration / 100) * 1000);\r\n\r\n // Ensure separate tracking per video\r\n if (intervalId[videoId]) {\r\n clearInterval(intervalId[videoId]);\r\n }\r\n\r\n intervalId[videoId] = setInterval(function () {\r\n trackProgress(player, videoId, duration);\r\n }, timeoutVal);\r\n }\r\n\r\n function trackProgress(player, videoId, duration) {\r\n var pct = Math.round((player.currentTime() / duration) * 100);\r\n\r\n if ([25, 50, 75, 90, 99].indexOf(pct) !== -1 && previouslyReportedPct[videoId] !== pct) {\r\n var text = pct === 99 ? \"100 pct complete\" : pct + \" pct complete\";\r\n //console.log(\"Tracking Progress: Video \" + videoId + \" - \" + text);\r\n\r\n $(player.el()).trigger(\"playvideo\", [{\r\n \"eventType\": text,\r\n \"eventAction\": text,\r\n \"elementText\": player.mediainfo.name\r\n }]);\r\n\r\n previouslyReportedPct[videoId] = pct;\r\n }\r\n\r\n if ([1, 50, 75, 95].indexOf(pct) !== -1) {\r\n // console.log(\"Triggering Goal Event: Video \" + videoId + \" - \" + pct);\r\n $(player.el()).trigger(\"goaltrigger\", [{ \"goal\": pct === 1 ? \"play\" : pct }]);\r\n }\r\n }\r\n\r\n$('.vjs-playlist-player-container').each(function () {\r\n var mutationEle = this;\r\n var config = { childList: true, subtree: true };\r\n\r\n var callback = function (mutationList, observer) {\r\n mutationList.forEach(function (mutation) {\r\n if (mutation.type === \"childList\") {\r\n $('.vjs-poster').removeAttr('aria-disabled');\r\n }\r\n });\r\n };\r\n var observer = new MutationObserver(callback);\r\n observer.observe(mutationEle, config);\r\n});\r\n// brought from custom-component.js\r\n(function ($) {\r\n $(window).on('load', function () {\r\n if ($('.vjs-playlist') && $('.vjs-playlist').length) {\r\n if ($('ol.vjs-playlist').children().length === 0) {\r\n $(\".vjs-playlist-player-container ol.vjs-playlist\").attr(\"role\", \"presentation\");\r\n }\r\n }\r\n });\r\n}(window.jQuery));\r\n\r\nfunction consentBrightcoveHandler() {\r\n var element = $('.brightcove_container')[0];\r\n var scriptSrc = $(element).attr('data-brightcovescriptsrc');\r\n var id = \"brightcovescript\";\r\n var script = document.createElement('script');\r\n\r\n script.setAttribute('src', scriptSrc);\r\n script.setAttribute('id', id);\r\n document.body.appendChild(script);\r\n\r\n script.onload = function () {\r\n $('.brightcove_container').each(function () {\r\n if ($(this).attr('data-brightcovePlayerScript') != \"\") {\r\n var playerScriptValue = $(this).attr('data-brightcovePlayerScript');\r\n $('body').append('');\r\n }\r\n });\r\n brightcoveListener.loadPlayerScriptsConsent();\r\n };\r\n\r\n $('.user_consent_brightcovecontent').css('display', 'none');\r\n $('.brightcove_container').removeClass('d-none');\r\n}\r\n\r\n$('.user_consent_brightcovebutton').click(function () {\r\n consentBrightcoveHandler();\r\n});\r\n\r\n$('.user_consent_brightcovebutton').keydown(function (event) {\r\n var keycode = (event.keyCode ? event.keyCode : event.which);\r\n if (keycode == '13') {\r\n consentBrightcoveHandler();\r\n }\r\n});\r\n\r\n$(window).on('load', function () {\r\n if ($('.vjs-playlist') && $('.vjs-playlist').length) {\r\n if ($('ol.vjs-playlist').children().length === 0) {\r\n $(\".vjs-playlist-player-container ol.vjs-playlist\").attr(\"role\", \"presentation\");\r\n }\r\n }\r\n});\r\n}(window.jQuery));\r\n\r\n//brought from customcomponent.js\r\n(function ($) {\r\nfunction consentBrightcoveHandler() {\r\n var element = $('.brightcove_container')[0];\r\n var scriptSrc = $(element).attr('data-brightcovescriptsrc');\r\n var id = \"brightcovescript\";\r\n var script = document.createElement('script');\r\n\r\n script.setAttribute('src', scriptSrc);\r\n script.setAttribute('id', id);\r\n document.body.appendChild(script);\r\n\r\n script.onload = function () {\r\n $('.brightcove_container').each(function () {\r\n if ($(this).attr('data-brightcovePlayerScript') != \"\") {\r\n var playerScriptValue = $(this).attr('data-brightcovePlayerScript');\r\n $('body').append('');\r\n }\r\n });\r\n brightcoveListener.loadPlayerScriptsConsent();\r\n };\r\n\r\n $('.user_consent_brightcovecontent').css('display', 'none');\r\n $('.brightcove_container').removeClass('d-none');\r\n}\r\n\r\n$('.user_consent_brightcovebutton').click(function () {\r\n consentBrightcoveHandler();\r\n});\r\n\r\n$('.user_consent_brightcovebutton').keydown(function (event) {\r\n var keycode = (event.keyCode ? event.keyCode : event.which);\r\n if (keycode == '13') {\r\n consentBrightcoveHandler();\r\n }\r\n});\r\n}(window.jQuery));\r\n\r\n//Analytics\r\nanalytics.eventConfig.push(\r\n{\r\n \"target\": \".mf-player-container\",\r\n \"codeId\": \"sp03\",\r\n \"events\": [\r\n {\r\n \"eventTarget\": \".video-js\",\r\n \"eventType\": \"playvideo\",\r\n \"tags\": {\r\n \"event\": \"video\",\r\n \"componentName\": \"video brightcove\",\r\n \"componentId\": \"sp03\",\r\n \"eventType\": \"\",\r\n \"elementType\": \"brightcove video\",\r\n \"elementText\": \"\",\r\n //code merge from chemical\r\n 'event1': \"\",\r\n 'document_title': '',\r\n 'eventAction': \"\",\r\n 'environment': \"\",\r\n 'eventCategory': \"\",\r\n 'eventLabel': \"\",\r\n 'page_bu': \"\",\r\n 'page_language': \"\",\r\n 'page_type': \"\",\r\n 'pardot_cookie_id': \"\",\r\n 'sitecore_contact_id': \"\",\r\n 'video_id': \"\"\r\n }\r\n }\r\n ]\r\n},\r\n)\r\n"],"mappings":"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","ignoreList":[]}