{"version":3,"names":["$","intervalArr","videoIframes","lazyYoutubeVideo","length","iframeParams","param","value","document","ready","params","iframe","src","lazyElements","ytparams","config","window","onYouTubeIframeAPIReady","each","this","attr","i","indexOf","queryParam","fn","urlUtil","mergeQuery","tag","createElement","firstScriptTag","getElementsByTagName","parentNode","insertBefore","addYouTubeScript","childList","subtree","lazyElement","handleMutationList","mutationList","forEach","mutation","type","find","includes","updateIframeSrc","handleLazyElementAttributes","player","YT","Player","events","onStateChange","event","videoData","playerInfo","pId","video_id","clearInterval","data","PlayerState","PLAYING","$video","totDuration","duration","timeoutVal","Math","round","intervalId","setInterval","pct","currentTime","complete","trigger","eventType","elementText","videoTitle","goal","videoPlayerData","playerIdValue","trackYTAnalyticsLazy","getIframe","handlePlayerStateChange","handleIframe","handleMutations","MutationObserver","observe","parent","getVideoData","trackPlayerStatus","getDuration","getCurrentTime","title","trackYTAnalytics","carouselElm","closest","autoplayValue","autoplay","playerState","getPlayerState","slick","jQuery","analytics","eventConfig","push","target","codeId","eventTarget","tags","componentName","componentId","elementType","parentOrdinal"],"sources":["assets/feature/media/video/js/_sp02-video-youtube.js"],"sourcesContent":["(function ($) {\r\n var intervalArr = {};\r\n var videoIframes = $('.sp02-video-youtube .video-youtube > iframe');\r\n var lazyYoutubeVideo = $('.yt-lazyload');\r\n if (videoIframes.length === 0 && lazyYoutubeVideo.length === 0) return;\r\n\r\n var iframeParams = [\r\n {\r\n param: \"enablejsapi\",\r\n value: 1\r\n },\r\n {\r\n param: \"version\",\r\n value: 3\r\n }\r\n ];\r\n $(document).ready(function () {\r\n window.onYouTubeIframeAPIReady = onYouTubeIframeAPIReady;\r\n appendIframeParams(iframeParams);\r\n addYouTubeScript();\r\n youtubeLazyloadSubtreeModified();\r\n });\r\n\r\n function youtubeLazyloadSubtreeModified() {\r\n var lazyElements = $('.yt-lazyload');\r\n var ytparams = [\"loop\", \"playlist\", \"rel\"];\r\n var config = { childList: true, subtree: true };\r\n\r\n lazyElements.each(function () {\r\n var lazyElement = $(this);\r\n function handleMutationList(mutationList) {\r\n handleMutations(mutationList, lazyElement, ytparams);\r\n }\r\n\r\n var observer = new MutationObserver(handleMutationList);\r\n observer.observe(this, config);\r\n });\r\n }\r\n\r\n function handleMutations(mutationList, lazyElement, ytparams) {\r\n mutationList.forEach(function (mutation) {\r\n if (mutation.type === \"childList\") {\r\n lazyElement.find('iframe').each(function () {\r\n handleIframe($(this), lazyElement, ytparams);\r\n });\r\n }\r\n });\r\n }\r\n\r\n function handleIframe(iframe, lazyElement, ytparams) {\r\n var src = iframe.attr('src');\r\n iframeParams.forEach(function (param) { if (!src.includes(param.param)) { var queryParam = {}; queryParam[param.param] = param.value; src = $.fn.urlUtil.mergeQuery(src, queryParam); iframe.attr('src', src); } });\r\n\r\n handleLazyElementAttributes(lazyElement, iframe, src, ytparams);\r\n\r\n var player = new YT.Player(iframe[0], {\r\n events: {\r\n onStateChange: function (event) {\r\n handlePlayerStateChange(event, player);\r\n }\r\n }\r\n });\r\n }\r\n\r\n function handleLazyElementAttributes(lazyElement, iframe, src, ytparams) {\r\n if (lazyElement.attr('data-loop') == \"True\") {\r\n src = updateIframeSrc(iframe, src, ytparams[0], 1);\r\n if (lazyElement.attr('data-checked') == \"0\") {\r\n src = updateIframeSrc(iframe, src, ytparams[1], lazyElement.attr('data-id'));\r\n }\r\n } else if (lazyElement.attr('data-rel') == \"True\") {\r\n src = updateIframeSrc(iframe, src, ytparams[2], 0);\r\n }\r\n }\r\n\r\n function updateIframeSrc(iframe, src, param, value) {\r\n var queryParam = {};\r\n queryParam[param] = value;\r\n src = $.fn.urlUtil.mergeQuery(src, queryParam);\r\n iframe.attr('src', src);\r\n return src;\r\n }\r\n\r\n function handlePlayerStateChange(event, player) {\r\n var videoData = player.playerInfo.videoData;\r\n var pId = videoData.video_id;\r\n if (pId && intervalArr[pId]) {\r\n window.clearInterval(intervalArr[pId]);\r\n delete intervalArr[pId];\r\n }\r\n if (event.data === YT.PlayerState.PLAYING)\r\n trackYTAnalyticsLazy($(player.getIframe()), player);\r\n }\r\n\r\n function trackYTAnalyticsLazy($video, player) {\r\n var totDuration = player.playerInfo.duration;\r\n var timeoutVal = Math.round((totDuration / 100) * 1000);\r\n\r\n var intervalId = window.setInterval(function () {\r\n var pct = Math.round((player.playerInfo.currentTime / totDuration) * 100);\r\n if ([1, 25, 50, 75, 90, 99].includes(pct)) {\r\n var complete = pct + \" pct complete\";\r\n if (pct === 1)\r\n complete = \"video start click\";\r\n if (pct === 99)\r\n complete = \"100 pct complete\";\r\n\r\n $video.trigger('playvideo', [{\r\n \"eventType\": complete, \"elementText\": player.videoTitle\r\n }]);\r\n }\r\n if ([1, 50, 75, 95].includes(pct)) {\r\n $video.trigger('goaltrigger', [{ \"goal\": pct === 1 ? \"play\" : pct }]);\r\n }\r\n }, timeoutVal);\r\n\r\n var videoPlayerData = player.playerInfo.videoData;\r\n var playerIdValue = player ? videoPlayerData.video_id : false;\r\n if (playerIdValue) {\r\n intervalArr[playerIdValue] = intervalId;\r\n }\r\n }\r\n\r\n\r\n function appendIframeParams(params) {\r\n // https://developers.google.com/youtube/iframe_api_reference#Example_Video_Player_Constructors\r\n // Setting the iframe attribute is supposed to work, but doesn't. So we have to modify the video URL instead.\r\n //videoIframes.attr('appendIframeParams', true);\r\n var iframe, src;\r\n videoIframes.each(function () {\r\n iframe = $(this);\r\n src = iframe.attr('src');\r\n for (var i = 0; i < params.length; i++) {\r\n if (src.indexOf(params[i].param) < 0) {\r\n var queryParam = {};\r\n queryParam[params[i].param] = params[i].value;\r\n src = $.fn.urlUtil.mergeQuery(src, queryParam);\r\n iframe.attr('src', src);\r\n }\r\n }\r\n });\r\n }\r\n\r\n function addYouTubeScript() {\r\n var tag = document.createElement('script');\r\n tag.src = 'https://www.youtube.com/iframe_api';\r\n var firstScriptTag = document.getElementsByTagName('script')[0];\r\n firstScriptTag.parentNode.insertBefore(tag, firstScriptTag);\r\n }\r\n\r\n function onYouTubeIframeAPIReady() {\r\n $('.video-youtube > iframe').each(function () {\r\n var $video = $(this).parent();\r\n\r\n var player = new YT.Player(this, {\r\n events: {\r\n onStateChange: function (event) {\r\n var temp = player.getVideoData();\r\n var pId = temp.video_id;\r\n if (pId && intervalArr[pId]) {\r\n window.clearInterval(intervalArr[pId]);\r\n delete intervalArr[pId];\r\n }\r\n trackPlayerStatus($video, player);\r\n if (event.data === YT.PlayerState.PLAYING)\r\n trackYTAnalytics($video, player);\r\n }\r\n }\r\n });\r\n });\r\n }\r\n\r\n function trackYTAnalytics($video, player) {\r\n var totDuration = player.getDuration();\r\n var timeoutVal = Math.round((totDuration / 100) * 1000);\r\n trackPlayerStatus($video, player);\r\n var intervalId = window.setInterval(function () {\r\n var pct = Math.round((player.getCurrentTime() / totDuration) * 100);\r\n if ([1, 25, 50, 75, 90, 99].includes(pct)) {\r\n var complete = pct + \" pct complete\";\r\n if (pct === 1)\r\n complete = \"video start click\";\r\n if (pct === 99)\r\n complete = \"100 pct complete\";\r\n\r\n $video.trigger('playvideo', [{\r\n \"eventType\": complete, \"elementText\": player.getVideoData().title\r\n }]);\r\n }\r\n if ([1, 50, 75, 95].includes(pct)) {\r\n $video.trigger('goaltrigger', [{ \"goal\": pct === 1 ? \"play\" : pct }]);\r\n }\r\n }, timeoutVal);\r\n\r\n var videoPlayerData = player.getVideoData();\r\n var playerIdValue = player ? videoPlayerData.video_id : false;\r\n if (playerIdValue) {\r\n intervalArr[playerIdValue] = intervalId;\r\n }\r\n }\r\n\r\n function trackPlayerStatus($video, player) {\r\n var carouselElm = $video.closest('.c03-carousel');\r\n var autoplayValue = false;\r\n if (carouselElm.length > 0)\r\n autoplayValue = carouselElm.data('options').autoplay;\r\n var playerState = player.getPlayerState();\r\n if (autoplayValue) {\r\n if (playerState === 2 || playerState === 0)\r\n carouselElm.slick('slickPlay');\r\n else\r\n carouselElm.slick('slickPause');\r\n }\r\n }\r\n}(window.jQuery));\r\n\r\n/*Analytics*/\r\n analytics.eventConfig.push(\r\n {\r\n \"target\": \".component.sp02-video-youtube\",\r\n \"codeId\": \"sp02\",\r\n \"events\": [\r\n {\r\n \"eventTarget\": \".video-youtube\",\r\n \"eventType\": \"playvideo\",\r\n \"tags\": {\r\n \"event\": \"video\",\r\n \"componentName\": \"video youtube\",\r\n \"componentId\": \"sp02\",\r\n \"eventType\": \"\",\r\n \"elementType\": \"youtube video\",\r\n \"elementText\": \"\",\r\n \"parentOrdinal\": \"\"\r\n }\r\n }\r\n ]\r\n },\r\n {\r\n \"target\": \".yt-lazyload\",\r\n \"codeId\": \"sp10\",\r\n \"events\": [\r\n {\r\n \"eventTarget\": \".yt-lazyload-content iframe\",\r\n \"eventType\": \"playvideo\",\r\n \"tags\": {\r\n \"event\": \"video\",\r\n \"componentName\": \"lazy load video youtube\",\r\n \"componentId\": \"sp10\",\r\n \"eventType\": \"\",\r\n \"elementType\": \"lazy load youtube video\",\r\n \"elementText\": \"\",\r\n \"parentOrdinal\": \"\"\r\n }\r\n }\r\n ]\r\n },\r\n )\r\n"],"mappings":"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","ignoreList":[]}