{"version":3,"file":"chunks/69d2d8a80b2801.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","_classCallCheck","this","$","link","_objectSpread","videoId","uniqueId","source","behavior","isPlayOnPageLoad","userLeftPage","playerOrigin","player","imWidth","vidWidth","vidHeight","init","key","value","_this","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","vimeoplayer","method","message","stringify","contentWindow","postMessage","vimeoPost","num","floor"],"sourceRoot":""}