{"version":3,"file":"chunks/e823a996d81b0a.js","mappings":"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","sources":["webpack:///./resources/js/components/shared/video-embed.ts"],"sourcesContent":["import * as $ from \"jquery\";\nimport imkt from '../../imkt';\nimport tracking from '../../utils/tracking';\nimport Modal from '../../components/generic/modal';\n\nexport default class VideoEmbedInline {\n domRoot: JQuery;\n link: JQuery;\n params: any;\n videoId: any;\n uniqueId: any;\n source: any;\n behavior: any;\n userLeftPage: boolean;\n playerOrigin: string;\n player: any;\n imWidth: any;\n vidWidth: any;\n vidHeight: any;\n modal: any;\n \n constructor(domRoot: HTMLElement, params: any) {\n this.domRoot = $(domRoot);\n this.link = $('.play-trigger', this.domRoot);\n this.params = { ...params };\n this.videoId = this.params.videoId;\n this.uniqueId = this.params.uniqueId;\n this.source = this.params.source ? this.params.source : 'youtube';\n this.behavior = this.params.behavior;\n this.isPlayOnPageLoad = this.behavior === 'playOnPageLoad';\n this.userLeftPage = false;\n this.playerOrigin = '*';\n this.player;\n this.imWidth;\n this.vidWidth;\n this.vidHeight;\n this.init();\n }\n\n init() {\n if (this.source === 'youtube') {\n const tag = document.createElement('script');\n tag.id = 'youtube-api';\n tag.src = \"https://www.youtube.com/iframe_api\";\n const firstScriptTag = document.getElementsByTagName('script')[0];\n\n if (this.isPlayOnPageLoad) {\n const timer = setInterval(() => {\n if (window.YT && YT.loaded) {\n clearInterval(timer);\n this.onclick(null, true);\n }\n }, 100);\n }\n\n if (!document.getElementById('youtube-api')) {\n firstScriptTag.parentNode.insertBefore(tag, firstScriptTag);\n }\n }\n\n if (!imkt.core.is.mobile()) {\n this.link.on(\"click\", $.proxy(this.onclick, this));\n }\n }\n\n getVidPlayer() {\n let self = this;\n if (this.source === 'youtube') {\n return '
\"video
';\n }\n /* else, vimeo */\n if (this.behavior === 'modal' || this.behavior === 'overlaySection') {\n this.modal.$overlay.on(\"modal.hide\", function() {\n self.modal.$modalContent.html('');\n });\n }\n\n let vimFrame = document.createElement('iframe');\n vimFrame.setAttribute('src', 'https://player.vimeo.com/video/' + self.videoId + '?api=1&autoplay=1&player_id=vimeoplayer-' + self.videoId + '-' + self.uniqueId);\n vimFrame.id = 'vimeoplayer-' + self.videoId + '-' + self.uniqueId;\n vimFrame.width = self.vidWidth;\n vimFrame.height = self.vidHeight;\n this.player = vimFrame;\n return this.player;\n }\n\n onclick(e, autoplay) {\n if (!autoplay) {\n e.preventDefault();\n }\n\n this.imWidth = window.innerWidth - 40;\n if (this.behavior.match(/replaceImage|playOnPageLoad/)) {\n this.imWidth = $('img', this.domRoot).width();\n }\n this.vidWidth = window.innerWidth < 1024 || this.behavior.match(/replaceImage|playOnPageLoad/) ? this.imWidth : 1024;\n this.vidHeight = this.vidWidth * 0.5625;\n\n /* vimeo API requires call before */\n if (this.source === 'vimeo') {\n this.onVimeoIframeAPIReady();\n }\n\n if (this.behavior === 'none') {\n /* simply link to video */\n } else if (this.behavior.match(/replaceImage|playOnPageLoad/)) {\n /* youtube api takes care of this - only vimeo requires special step */\n this.domRoot.find('.vid-thumb').html(this.getVidPlayer())\n } else {\n // default to modal //\n if (!this.modal) {\n if (this.behavior === 'overlaySection') {\n var nearestContainer = this.domRoot.closest(\"section, .container-fluid\");\n\n if (nearestContainer.height() < 576) {\n this.vidHeight = nearestContainer.outerHeight();\n this.vidWidth = this.vidHeight * 1.7777;\n }\n this.modal = new Modal({\n modalType: \"video\",\n fixed: false,\n centerVertically: false,\n modalContainer: nearestContainer,\n id: this.params.videoId\n });\n } else {\n this.modal = new Modal({\n modalType: \"video\"\n });\n }\n }\n this.modal.$modalContent.html(this.getVidPlayer.bind(this));\n if (this.behavior === 'overlaySection') {\n this.modal.$overlay\n .on(\"modal.show\", $.proxy(function() {\n this.modal.params.modalContainer.addClass(\"modal-video\");\n }, this))\n .on(\"modal.hide\", $.proxy(function() {\n this.modal.params.modalContainer.removeClass(\"modal-video\");\n }, this));\n }\n this.modal.show();\n this.modal.place();\n }\n\n /* youtube API requires call after */\n if (this.source === 'youtube') {\n this.onYouTubeIframeAPIReady();\n }\n }\n\n onVimeoIframeAPIReady() {\n if (window.addEventListener) {\n window.addEventListener('message', this.onVimeoMessage.bind(this), false);\n } else {\n window.attachEvent('onmessage', this.onVimeoMessage.bind(this), false);\n }\n }\n\n onYouTubeIframeAPIReady() {\n let self = this;\n self.player = new YT.Player('player-' + self.videoId + '-' + self.uniqueId, {\n width: self.vidWidth,\n height: self.vidHeight,\n videoId: self.videoId,\n playerVars: {\n autoplay: 1,\n rel: 0,\n origin: window.location.origin,\n widget_referrer: window.location.origin\n },\n events: {\n 'onReady': self.onPlayerReady.bind(self),\n 'onStateChange': self.onYoutubeStateChange.bind(self)\n }\n });\n\n if (self.behavior === 'modal' || self.behavior === 'overlaySection') {\n self.modal.$overlay.on(\"modal.hide\", function() {\n self.userLeftPage = true;\n if (self.player.pauseVideo) {\n setTimeout(() => self.player.pauseVideo(), 500);\n }\n });\n }\n\n window.onbeforeunload = function() {\n self.userLeftPage = true;\n if (self.player.pauseVideo) {\n setTimeout(() => self.player.pauseVideo(), 500);\n }\n };\n }\n\n onPlayerReady(event) {\n if (this.isPlayOnPageLoad) {\n event.target.mute();\n event.target.playVideo();\n }\n }\n\n onYoutubeStateChange(event) {\n let self = this;\n let currentTime = event.target.getCurrentTime();\n let totalTime = event.target.getDuration();\n let percentage = (currentTime / totalTime) * 100;\n\n let info = {\n event: \"Interaction\",\n eventComponent: \"Video\",\n videoTitle: event.target.getVideoData().title,\n videoId: event.target.getVideoData().video_id,\n videoURL: event.target.getVideoUrl(),\n pageURL: window.location.href,\n currentTime: self.secsToTime(currentTime),\n currentPercentage: Math.round(percentage * 10) / 10\n };\n\n switch (event.data) {\n case YT.PlayerState.PLAYING:\n info.eventType = currentTime < 1 ? 'video_started' : 'video_resumed';\n tracking.trackEvent('Video-Event', info);\n break;\n case YT.PlayerState.PAUSED:\n info.eventType = self.userLeftPage ? 'video_abandoned' : 'video_paused';\n tracking.trackEvent('Video-Event', info);\n break;\n case YT.PlayerState.ENDED:\n info.eventType = 'video_completed';\n tracking.trackEvent('Video-Event', info);\n break;\n default:\n return;\n }\n }\n\n onVimeoMessage(event) {\n let self = this;\n if (!(/^https?:\\/\\/player.vimeo.com/).test(event.origin)) {\n return false;\n }\n\n if (this.playerOrigin === '*') {\n this.playerOrigin = event.origin;\n }\n\n let data = JSON.parse(event.data);\n\n let info = {\n event: \"Interaction\",\n eventComponent: \"Video\",\n videoId: self.videoId,\n videoURL: 'https://vimeo.com/' + self.videoId,\n pageURL: window.location.href,\n currentTime: self.secsToTime(data.data ? data.data.seconds : 0),\n currentPercentage: data.data ? data.data.percent : 0\n };\n\n switch (data.event) {\n case 'ready':\n self.onVimeoReady();\n break;\n case 'play':\n info.eventType = info.currentTime === '0s' ? 'video_started' : 'video_resumed';\n tracking.trackEvent('Video-Event', info);\n break;\n case 'pause':\n info.eventType = self.userLeftPage ? 'video_abandoned' : 'video_paused';\n tracking.trackEvent('Video-Event', info);\n break;\n case 'finish':\n info.eventType = 'video_completed';\n tracking.trackEvent('Video-Event', info);\n break;\n }\n }\n\n vimeoPost(action, value) {\n let vimeoplayer = $('#vimeoplayer-' + this.videoId + '-' + this.uniqueId);\n let data = {\n method: action\n };\n if (value) {\n data.value = value;\n }\n let message = JSON.stringify(data);\n if (vimeoplayer[0]) {\n vimeoplayer[0].contentWindow.postMessage(message, this.playerOrigin);\n }\n }\n\n onVimeoReady() {\n this.vimeoPost('addEventListener', 'play');\n this.vimeoPost('addEventListener', 'pause');\n this.vimeoPost('addEventListener', 'finish');\n }\n\n secsToTime(num) {\n let h = num >= 3600 ? Math.floor(num / 3600) + 'h ' : '';\n let m = num >= 60 ? Math.floor(num % 3600 / 60) + 'm ' : '';\n let s = num >= 0 ? Math.floor(num % 3600 % 60) + 's' : '';\n return h + m + s;\n }\n}\n"],"names":["VideoEmbedInline","domRoot","params","this","$","link","videoId","uniqueId","source","behavior","isPlayOnPageLoad","userLeftPage","playerOrigin","player","imWidth","vidWidth","vidHeight","init","tag","document","createElement","id","src","firstScriptTag","getElementsByTagName","timer","setInterval","window","YT","loaded","clearInterval","onclick","getElementById","parentNode","insertBefore","imkt","on","self","modal","$overlay","$modalContent","html","vimFrame","setAttribute","width","height","e","autoplay","preventDefault","innerWidth","match","onVimeoIframeAPIReady","find","getVidPlayer","nearestContainer","closest","outerHeight","Modal","modalType","fixed","centerVertically","modalContainer","bind","addClass","removeClass","show","place","onYouTubeIframeAPIReady","addEventListener","onVimeoMessage","attachEvent","Player","playerVars","rel","origin","location","widget_referrer","events","onPlayerReady","onYoutubeStateChange","pauseVideo","setTimeout","onbeforeunload","event","target","mute","playVideo","currentTime","getCurrentTime","percentage","getDuration","info","eventComponent","videoTitle","getVideoData","title","video_id","videoURL","getVideoUrl","pageURL","href","secsToTime","currentPercentage","Math","round","data","PlayerState","PLAYING","eventType","tracking","PAUSED","ENDED","test","JSON","parse","seconds","percent","onVimeoReady","action","value","vimeoplayer","method","message","stringify","contentWindow","postMessage","vimeoPost","num","floor"],"sourceRoot":""}