{"version":3,"file":"chunks/072ff17ca9513ed68e62.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 constructor(domRoot, params) {\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.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 (!document.getElementById('youtube-api')) {\n firstScriptTag.parentNode.insertBefore(tag, firstScriptTag);\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) {\n this.imWidth = window.innerWidth - 40;\n if (this.behavior == \"replaceImage\") {\n this.imWidth = $('img', this.domRoot).width();\n }\n\n this.vidWidth = window.innerWidth < 1024 || this.behavior === 'replaceImage' ? this.imWidth : 1024;\n this.vidHeight = this.vidWidth * 0.5625;\n e.preventDefault();\n let self = this;\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 {\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 '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 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","userLeftPage","playerOrigin","player","imWidth","vidWidth","vidHeight","init","tag","document","createElement","id","src","firstScriptTag","getElementsByTagName","getElementById","parentNode","insertBefore","imkt","on","onclick","self","modal","$overlay","$modalContent","html","vimFrame","setAttribute","width","height","e","window","innerWidth","preventDefault","onVimeoIframeAPIReady","console","log","find","getVidPlayer","nearestContainer","closest","outerHeight","Modal","modalType","fixed","centerVertically","modalContainer","bind","addClass","removeClass","show","place","onYouTubeIframeAPIReady","addEventListener","onVimeoMessage","attachEvent","YT","Player","playerVars","autoplay","rel","origin","location","widget_referrer","events","onYoutubeStateChange","pauseVideo","setTimeout","onbeforeunload","event","currentTime","target","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":""}