{"version":3,"sources":["webpack:///../node_modules/load-script/index.js","webpack:///./handlers/modalVideoPlayer.js","webpack:///./utils/utils.js"],"names":["$","jQuery","CONSENT_COOKIE_NAME","CONSENT_REQUIRED_CATEGORY","initYoutubePlayer","videoId","$container","onYouTubePlayerAPIReady","append","$videoContainer","find","player","YT","Player","playerVars","playlist","mute","controls","enablejsapi","origin","window","location","events","e","playVideo","fn","loadScript","loading","id","setInterval","loaded","clearInterval","initVimeoPlayer","initPlayer","Vimeo","muted","dnt","ready","then","play","err","script","modalVideoPlayer","playButton","$videoModal","$closeButton","$noVideoWarningContainer","$noVideoCloseButton","$playButton","closeModal","removeClass","remove","playVideoInModal","addClass","youtubeVideoId","attr","vimeoVideoId","rawConsentCookie","getCookie","consentCookie","JSON","parse","categories","Array","isArray","length","indexOf","document","one","key","on","sleep","ms","Promise","resolve","setTimeout","isInViewport","element","rect","getBoundingClientRect","top","left","bottom","innerHeight","documentElement","clientHeight","right","innerWidth","clientWidth","name","cookieArr","cookie","split","i","cookiePair","trim","decodeURIComponent"],"mappings":"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","file":"modal-video-player.js","sourcesContent":["\nmodule.exports = function load (src, opts, cb) {\n var head = document.head || document.getElementsByTagName('head')[0]\n var script = document.createElement('script')\n\n if (typeof opts === 'function') {\n cb = opts\n opts = {}\n }\n\n opts = opts || {}\n cb = cb || function() {}\n\n script.type = opts.type || 'text/javascript'\n script.charset = opts.charset || 'utf8';\n script.async = 'async' in opts ? !!opts.async : true\n script.src = src\n\n if (opts.attrs) {\n setAttributes(script, opts.attrs)\n }\n\n if (opts.text) {\n script.text = '' + opts.text\n }\n\n var onend = 'onload' in script ? stdOnEnd : ieOnEnd\n onend(script, cb)\n\n // some good legacy browsers (firefox) fail the 'in' detection above\n // so as a fallback we always set onload\n // old IE will ignore this and new IE will set onload\n if (!script.onload) {\n stdOnEnd(script, cb);\n }\n\n head.appendChild(script)\n}\n\nfunction setAttributes(script, attrs) {\n for (var attr in attrs) {\n script.setAttribute(attr, attrs[attr]);\n }\n}\n\nfunction stdOnEnd (script, cb) {\n script.onload = function () {\n this.onerror = this.onload = null\n cb(null, script)\n }\n script.onerror = function () {\n // this.onload = null here is necessary\n // because even IE9 works not like others\n this.onerror = this.onload = null\n cb(new Error('Failed to load ' + this.src), script)\n }\n}\n\nfunction ieOnEnd (script, cb) {\n script.onreadystatechange = function () {\n if (this.readyState != 'complete' && this.readyState != 'loaded') return\n this.onreadystatechange = null\n cb(null, script) // there is no way to catch loading errors in IE8\n }\n}\n","const $ = jQuery;\nimport loadScript from 'load-script';\n\nimport { getCookie } from '../utils/utils';\n\nconst CONSENT_COOKIE_NAME = 'CookieScriptConsent';\nconst CONSENT_REQUIRED_CATEGORY = 'targeting';\n\nconst initYoutubePlayer = (videoId, $container) => {\n const onYouTubePlayerAPIReady = () => {\n $container.append('<div></div>');\n const $videoContainer = $container.find('div');\n\n let player = new YT.Player($videoContainer[0], {\n videoId: videoId,\n playerVars: {\n playlist: videoId,\n mute: 0,\n controls: 1,\n enablejsapi: 1,\n origin: window.location.origin\n },\n events: {\n 'onReady': (e) => {\n player.playVideo();\n }\n }\n });\n }\n\n if (typeof YT === 'undefined') {\n let fn = null;\n if (window.onYouTubePlayerAPIReady) {\n fn = window.onYouTubePlayerAPIReady;\n }\n\n window.onYouTubePlayerAPIReady = () => {\n if(fn) {\n fn();\n }\n\n onYouTubePlayerAPIReady()\n };\n\n loadScript('https://www.youtube.com/player_api');\n } else if (YT.loading) {\n let id = setInterval(() => {\n if(YT.loaded) {\n clearInterval(id);\n onYouTubePlayerAPIReady();\n }\n }, 250);\n\n } else {\n onYouTubePlayerAPIReady();\n }\n}\n\nconst initVimeoPlayer = (videoId, $container) => {\n $container.append('<div></div>');\n const $videoContainer = $container.find('div');\n\n const initPlayer = () => {\n let player = new Vimeo.Player($videoContainer[0], {\n id: videoId,\n muted: 0,\n controls: 1,\n dnt: 1\n })\n\n player.ready().then(() => {\n player.play();\n });\n }\n\n if (typeof window.Vimeo === 'undefined') {\n loadScript('https://player.vimeo.com/api/player.js', (err, script) => {\n if (err) {\n throw 'Could not load Vimeo SDK';\n }\n\n initPlayer();\n });\n } else {\n initPlayer();\n }\n}\n\nconst modalVideoPlayer = (playButton) => {\n const $videoContainer = $('.js-video-modal-container');\n const $videoModal = $('.js-video-modal');\n const $closeButton = $('.js-video-modal-close-button');\n const $noVideoWarningContainer = $('.js-no-video-warning');\n const $noVideoCloseButton = $('.js-close-video-warning');\n\n const $playButton = $(playButton);\n\n const closeModal = (e) => {\n $videoModal.removeClass('js-video-modal-active');\n // youtube appropriates div element and moves its classes & attrs to an iframe\n $videoContainer.find('iframe').remove();\n // vimeo injects iframe in div\n $videoContainer.find('div').remove();\n // hide any shown warnings\n $noVideoWarningContainer.removeClass('js-visible');\n };\n\n const playVideoInModal = (e) => {\n $videoModal.addClass('js-video-modal-active');\n\n const youtubeVideoId = $playButton.attr('data-mentor-youtube-id');\n const vimeoVideoId = $playButton.attr('data-mentor-vimeo-id');\n\n // show warning if playing youtube video but targeting cookies not accepted\n const rawConsentCookie = getCookie(CONSENT_COOKIE_NAME);\n if (rawConsentCookie && youtubeVideoId) {\n const consentCookie = JSON.parse(rawConsentCookie);\n const categories = Array.isArray(consentCookie?.categories)\n ? consentCookie.categories\n : JSON.parse(consentCookie?.categories);\n\n if (categories?.length === 0 || categories.indexOf(CONSENT_REQUIRED_CATEGORY) === -1) {\n $noVideoWarningContainer.addClass('js-visible');\n return;\n } else {\n $noVideoWarningContainer.removeClass('js-visible');\n }\n }\n\n if (youtubeVideoId) {\n initYoutubePlayer(youtubeVideoId, $videoContainer);\n } else if (vimeoVideoId) {\n initVimeoPlayer(vimeoVideoId, $videoContainer);\n }\n\n $(document).one('keyup', (e) => {\n if (e.key === 'Escape') {\n closeModal();\n }\n });\n };\n\n $playButton.on('click', playVideoInModal);\n $closeButton.on('click', closeModal);\n $noVideoCloseButton.on('click', closeModal);\n};\n\nexport default modalVideoPlayer;\nexport {\n modalVideoPlayer\n};\n","function sleep(ms) {\n return new Promise(resolve => setTimeout(resolve, ms));\n}\n\nfunction isInViewport(element) {\n const rect = element.getBoundingClientRect();\n\n return (\n rect.top >= 0 &&\n rect.left >= 0 &&\n rect.bottom <= (window.innerHeight || document.documentElement.clientHeight) &&\n rect.right <= (window.innerWidth || document.documentElement.clientWidth)\n );\n}\n\nfunction getCookie(name) {\n let cookieArr = document.cookie.split(\";\");\n\n for (let i = 0; i < cookieArr.length; i++) {\n let cookiePair = cookieArr[i].split(\"=\");\n\n if (name == cookiePair[0].trim()) {\n return decodeURIComponent(cookiePair[1]);\n }\n }\n\n return null;\n}\n\nexport {\n sleep,\n isInViewport,\n getCookie\n};\n"],"sourceRoot":""}