{"version":3,"file":"chunks/3c63eb70d4063b.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 === 'replaceImage') {\n /* youtube api takes care of this - only vimeo requires special step */\n console.log(this.domRoot.find('.vid-thumb'))\n this.domRoot.find('.vid-thumb').html(this.getVidPlayer())\n } else if (!this.isPlayOnPageLoad) {\n // default to modal //\n\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(self.getVidPlayer.bind(self));\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","console","log","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":""}