{"version":3,"sources":["webpack:///./scripts/blog/Blog.js","webpack:///./scripts/blog/index.js","webpack:///./scripts/infinite-loader/Infinite-loader.js","webpack:///./scripts/pin/Pin.js","webpack:///./scripts/video/YouTube.js","webpack:///./scripts/video/Vimeo.js","webpack:///./scripts/video/Video.js","webpack:///./scripts/video/index.js"],"names":["gsap","ScrollTrigger","ScrollToPlugin","CLASS_PRE","$blogListings","BlogListing","container","this","$blog","$blogFilter","querySelector","$blogListingContent","$blogFeaturedCol","$blogAsideCol","$blogFeaturedArticle","scrollTweenController","isMobile","window","innerWidth","settings","scrollTweenOption","trigger","start","pinOptions","pin","pinTl","init","Loader","Pin","createPinTl","updateOptions","addToSCrollController","addListeners","kill","to","autoAlpha","scale","refresh","Object","assign","animation","scrub","scrollController","addScrollController","utilities","addEventListener","resizeFunc","document","querySelectorAll","length","forEach","$bl","classList","contains","Blogs","InfiniteLoader","defaultLoaderOptions","options","$loader","$addedItem","skeletonLoaderStyle","dataset","skeletonType","skeletonLoaderNo","scrollOptions","endTrigger","end","pinSpacing","events","eventsCreator","addMainSCrollController","getLoader","loader","createElement","add","skeleton","innerHTML","appendChild","skeletonLoaderClass","split","c","dispatchEvent","duration","scrollTo","onLeave","n","addItem","skeletonLoader","$loaders","clearAllItems","domStr","$item","$lazyload","LazyLoad","children","persistent","removeChild","show","infoDiv","remove","noItemMessage","prepend","CustomEvent","bubbles","detail","getAddedItem","$pin","$pinContainer","scrollPinOptions","toggleClass","targets","className","addPinSCrollController","YoutubeApi","YtPlayer","player","videoPlayer","videoID","videoId","playerReady","_init","undefined","YT","LoadYtScript","loadScript","createEvents","callApi","getValue","createPlayer","Promise","resolve","reject","Player","height","width","playerVars","e","target","onPlayerReady","onPlayerStateChange","playing","getPlayerState","playVideo","pauseVideo","stopVideo","EventTarget","scriptTag","prototype","setAttribute","Math","round","random","src","body","append","setTimeout","VimeoApi","autoplay","background","addPlayerListeners","VimeoPlayer","playsinline","responsive","controls","id","byline","loop","ready","play","pause","stop","dur","setCurrentTime","on","Video","VideoBanner","$videoContainer","$videoNative","$videoIframe","$videoPlayer","$videoControls","$videoPlayBtn","$articleElems","videoPlaying","videoType","controlRevealTimeoutFunc","mainTl","controlRevealTime","fitIframe","closest","onToggle","self","isActive","_playVideo","_pauseVideo","makePlayer","makeAnim","getVideo","command","contentWindow","postMessage","JSON","stringify","ytLoader","makeIframeFit","addingListener","vmLoader","paused","ease","stagger","y","display","reverse","updateUI","toggleVideo","updatePlay","$v"],"mappings":"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","file":"js/blog.e1916bb4544f018ade90.bundle.js","sourcesContent":["import { gsap } from \"gsap\"\nimport { ScrollTrigger } from \"gsap/ScrollTrigger\"\nimport { ScrollToPlugin } from \"gsap/ScrollToPlugin\"\nimport settings from \"@/scripts/common/settings\"\nimport utilities from \"@/scripts/common/utilities\"\nimport {Loader} from '@/scripts/infinite-loader/Infinite-loader'\nimport Pin from '@/scripts/pin/Pin'\nimport {addScrollController, ScrollControllers} from \"@/scripts/common/api/scrolltrigger.services\"\n\ngsap.registerPlugin(ScrollTrigger)\ngsap.registerPlugin(ScrollToPlugin)\n\n\nexport const Blogs = (() => {\n const CLASS_PRE = 'blog-listing'\n\n class BlogListing {\n constructor(container) {\n this.$blog = container\n this.$blogFilter = this.$blog.querySelector(`.${CLASS_PRE}__filter`)\n this.$blogListingContent = this.$blog.querySelector(`.${CLASS_PRE}__content`)\n this.$blogFeaturedCol = this.$blog.querySelector(`.${CLASS_PRE}__col--featured`)\n this.$blogAsideCol = this.$blog.querySelector(`.${CLASS_PRE}__col--aside`)\n this.$blogFeaturedArticle = this.$blog.querySelector(`.blog-article--featured`)\n\n \n this.scrollTweenController = null\n this.isMobile = window.innerWidth < settings.breakpoints.mobile\n\n this.scrollTweenOption = {\n trigger: this.$blogFeaturedCol,\n start: 'top top'\n }\n\n this.pinOptions = { // Pin overrides\n start: 'bottom bottom'\n }\n\n this.pin = null\n this.pinTl = null\n this.init()\n }\n\n init() {\n new Loader.InfiniteLoader(this.$blogAsideCol) // Infinite loader\n this.pin = new Pin(this.$blogFeaturedArticle, this.$blog, this.pinOptions) // Pining featured article\n if (this.isMobile) this.createPinTl()\n this.updateOptions()\n this.addToSCrollController()\n this.addListeners()\n }\n\n // Animation\n createPinTl() {\n if(this.pinTl) {\n this.pinTl.kill()\n this.pinTl = null\n }\n\n this.pinTl = gsap.timeline()\n\n this.pinTl.to(this.$blogFeaturedArticle, {\n autoAlpha: 0,\n scale: 0.5\n })\n }\n\n // Refresh Pin\n refresh() {\n if (this.pin) this.pin.refresh()\n if (this.scrollTweenController) this.scrollTweenController.refresh()\n }\n\n\n // Option updates\n updateOptions() {\n if (this.pinTl)\n Object.assign(this.scrollTweenOption, {\n animation: this.pinTl,\n scrub: true\n })\n }\n\n\n // Adding scrollController\n addToSCrollController() {\n if (this.scrollTweenController) this.scrollController = null\n\n if(this.pinTl) {\n this.scrollTweenController = ScrollTrigger.create(this.scrollTweenOption) // For mobile pin animation\n addScrollController(this.scrollTweenController)\n }\n }\n\n // Resize func\n resizeFunc() {\n return utilities.debounce(() => {\n this.isMobile = window.innerWidth < settings.breakpoints.mobile\n this.refresh()\n }, 250)\n }\n\n // Adding Listeners\n addListeners() {\n this.$blogAsideCol.addEventListener('onUpdate', () => this.refresh())\n window.addEventListener('resize', this.resizeFunc())\n }\n }\n\n return {\n BlogListing\n }\n})()\n\nexport default Blogs","import Blogs from './Blog'\n(function () {\n const $blogListings = document.querySelectorAll('.blog-listing')\n if ($blogListings.length) $blogListings.forEach($bl => {\n if(!$bl.classList.contains('blog-listing--ui')) new Blogs.BlogListing($bl)\n })\n})()","import { gsap } from \"gsap\"\nimport settings from \"@/scripts/common/settings\"\nimport { ScrollToPlugin } from \"gsap/ScrollToPlugin\"\nimport utilities from \"@/scripts/common/utilities\"\nimport { LazyLoad } from '@/scripts/lazyload/Lazyload'\nimport { addScrollController } from \"@/scripts/common/api/scrolltrigger.services\"\nimport { ScrollTrigger } from \"gsap/ScrollTrigger\"\n\ngsap.registerPlugin(ScrollTrigger)\ngsap.registerPlugin(ScrollToPlugin)\n\nexport const Loader = (() => {\n class InfiniteLoader {\n constructor(container, options) {\n this.$loader = container\n this.$addedItem = null\n\n this.options = Object.assign(defaultLoaderOptions, options)\n\n this.options.skeletonLoaderStyle = this.$loader.dataset.skeletonType || this.options.skeletonLoaderStyle\n this.options.skeletonLoaderNo = this.$loader.dataset.skeletonLoaderNo || this.options.skeletonLoaderNo\n\n this.scrollOptions = {\n trigger: this.$loader.dataset.trigger || this.$loader,\n endTrigger: this.$loader.dataset.endTrigger || this.$loader,\n start: 'top top',\n end: 'bottom bottom',\n pinSpacing: this.isMobile ? false : true\n }\n\n this.scrollController = null\n\n this.events = []\n this.init()\n }\n\n init() {\n this.eventsCreator()\n this.updateOptions()\n this.addMainSCrollController()\n this.addListeners()\n this.$loader.getLoader = () => this\n }\n\n // Skeleton Loader\n skeletonLoader() {\n const loader = document.createElement('div')\n loader.classList.add('skeleton-item')\n const skeleton = document.createElement('div')\n skeleton.classList.add('skeleton__loader')\n\n switch (this.options.skeletonLoaderStyle) {\n case 'article-blog':\n skeleton.classList.add('skeleton__loader--article-blog')\n skeleton.innerHTML = `
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
`\n break\n case 'article-clean':\n skeleton.classList.add('skeleton__loader--article-clean')\n skeleton.innerHTML = `
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
`\n break\n case 'figure':\n skeleton.classList.add('skeleton__loader--figure')\n skeleton.innerHTML = `
\n
\n
\n
\n
\n
`\n break\n default:\n skeleton.innerHTML = `
`\n }\n\n loader.appendChild(skeleton)\n\n if (this.options.skeletonLoaderClass) {\n const classes = this.options.skeletonLoaderClass.split(' ')\n classes.forEach(c => loader.classList.add(c))\n }\n\n\n return loader\n }\n\n // Refresh Pin\n refresh() {\n if (this.scrollController) this.scrollController.refresh()\n this.$loader.dispatchEvent(this.events['onUpdate'])\n }\n\n // Scroll to listing func\n\n scrollToListing() {\n gsap.to(window, {\n duration: 0.3,\n scrollTo: this.$loader\n })\n }\n\n // Callbacks\n updateOptions() {\n Object.assign(this.scrollOptions, {\n onLeave: () => {\n this.$loader.dispatchEvent(this.events['onScrollEnd'])\n }\n })\n }\n\n addSkeletonLoader() {\n let n = 0\n while (n < this.options.skeletonLoaderNo) {\n this.addItem(this.skeletonLoader())\n n++\n }\n }\n\n removeSkeletonLoader() {\n const $loaders = this.$loader.querySelectorAll('.skeleton-item')\n this.clearAllItems($loaders)\n }\n\n addItem(domStr) {\n const $item = typeof domStr === \"string\" ? utilities.createNodeParsing(domStr) : domStr\n this.$addedItem = $item\n this.$loader.appendChild($item)\n const $lazyload = $item.querySelector('.lazyload')\n if ($lazyload) new LazyLoad($lazyload)\n\n this.$loader.dispatchEvent(this.events['onAdd'])\n }\n\n clearAllItems($loaders) {\n const $listItems = $loaders || gsap.utils.toArray(this.$loader.children)\n $listItems.forEach($item => {\n if(!!!$item.dataset.persistent) this.$loader.removeChild($item)\n })\n this.$loader.dispatchEvent(this.events['onClear'])\n }\n\n noItemsFound(show) {\n const infoDiv = this.$loader.querySelector(`.info-message`)\n if(infoDiv) infoDiv.remove()\n \n if(show) {\n const infoDiv = document.createElement('div')\n infoDiv.classList.add(`info-message`)\n infoDiv.innerHTML = `

${this.options.noItemMessage}

`\n this.$loader.prepend(infoDiv)\n return\n }\n }\n\n // Events definer\n eventsCreator() {\n\n this.events['onAdd'] = new CustomEvent('onAdd', {\n bubbles: true,\n detail: {\n getAddedItem: () => {\n return this.$addedItem\n }\n }\n })\n\n this.events['onClear'] = new CustomEvent('onClear', {\n bubbles: true,\n })\n\n this.events['onScrollEnd'] = new CustomEvent('onScrollEnd', {\n bubbles: true,\n })\n\n this.events['onUpdate'] = new CustomEvent('onUpdate', {\n bubbles: true,\n })\n }\n\n // Resize func\n resizeFunc() {\n return utilities.debounce(() => {\n this.refresh()\n }, 250)\n }\n\n // Adding scrollController\n addMainSCrollController() {\n if (this.scrollController) this.scrollController = null\n\n this.scrollController = ScrollTrigger.create(this.scrollOptions)\n addScrollController(this.scrollController)\n }\n\n // Adding Listeners\n addListeners() {\n this.$loader.addEventListener('onAdd', () => this.refresh())\n this.$loader.addEventListener('onClear', () => this.refresh())\n window.addEventListener('resize', this.resizeFunc())\n }\n }\n\n const defaultLoaderOptions = {\n skeletonLoaderStyle: 'article-blog',\n skeletonLoaderNo: 3,\n noItemMessage: 'We are sorry. No result were found for the selected filters(s)'\n }\n\n return {\n InfiniteLoader\n }\n})()","import { gsap } from \"gsap\"\nimport { ScrollTrigger } from \"gsap/ScrollTrigger\"\nimport { ScrollToPlugin } from \"gsap/ScrollToPlugin\"\nimport settings from \"@/scripts/common/settings\"\nimport { addScrollController } from \"@/scripts/common/api/scrolltrigger.services\"\n\ngsap.registerPlugin(ScrollTrigger)\ngsap.registerPlugin(ScrollToPlugin)\n\nexport default class Pin {\n constructor(pin, container, options) {\n this.$pin = pin\n this.$pinContainer = container\n this.scrollController = null\n this.isMobile = window.innerWidth < settings.breakpoints.mobile\n\n this.scrollPinOptions = {\n trigger: this.$pin,\n endTrigger: this.$pinContainer || this.$pin,\n start: 'top top',\n end: 'bottom bottom',\n pin: this.$pin,\n pinSpacing: this.isMobile ? false : true,\n toggleClass: {\n targets: this.$pin,\n className: `pinned`\n }\n }\n\n Object.assign(this.scrollPinOptions, options)\n\n this.init()\n }\n\n init() {\n this.addPinSCrollController()\n }\n\n // Options update\n updatePinOption(options) {\n Object.assign(this.scrollPinOptions, options)\n }\n\n // Callbacks\n refresh() {\n this.scrollController.refresh()\n }\n\n addPinSCrollController() {\n if (this.scrollController) this.scrollController = null\n this.scrollController = ScrollTrigger.create(this.scrollPinOptions)\n addScrollController(this.scrollController)\n }\n}","export const YoutubeApi = (function () {\r\n\r\n class YtPlayer extends EventTarget {\r\n constructor(container, player) {\r\n super()\r\n this.container = container\r\n this.videoPlayer = player || container\r\n this.videoID = this.videoPlayer.dataset.videoId || null\r\n this.player = null\r\n this.playerReady = false\r\n this.events = []\r\n this._init()\r\n }\r\n\r\n async _init() {\r\n if(window.YT === undefined) {\r\n await new LoadYtScript().loadScript()\r\n this.createEvents()\r\n this.callApi()\r\n return\r\n }\r\n this.createEvents()\r\n this.callApi()\r\n }\r\n\r\n createEvents() {\r\n this.events['loaded'] = new CustomEvent('loaded', {\r\n bubbles: true,\r\n detail: {\r\n getValue: () => this.videoPlayer\r\n }\r\n })\r\n this.events['play'] = new CustomEvent('play', { bubbles: true })\r\n this.events['pause'] = new CustomEvent('pause', { bubbles: true })\r\n this.events['ended'] = new CustomEvent('ended', { bubbles: true })\r\n }\r\n\r\n async callApi() {\r\n const target = await this.createPlayer()\r\n this.playerReady = true\r\n this.dispatchEvent(this.events['loaded'])\r\n }\r\n\r\n createPlayer() {\r\n return new Promise((resolve, reject) => {\r\n this.player = new YT.Player(this.videoPlayer, {\r\n height: '100%',\r\n width: '100%',\r\n videoId: `${this.videoID}`,\r\n playerVars: {\r\n 'playsinline': 1,\r\n // 'autoplay': 0,\r\n 'controls': 0,\r\n 'autohide': 1,\r\n // 'wmode': 'opaque',\r\n },\r\n events: {\r\n 'onReady': (e) => {\r\n resolve(e.target)\r\n this.onPlayerReady(e)\r\n },\r\n 'onStateChange': (e) => this.onPlayerStateChange(e)\r\n },\r\n\r\n })\r\n })\r\n\r\n }\r\n\r\n\r\n\r\n // Generic methods\r\n onPlayerReady(e) {\r\n //console.log(e.target.playVideo())\r\n }\r\n\r\n onPlayerStateChange(e) {\r\n this.playing = (this.player.getPlayerState() === 1) ? true : false\r\n switch (this.player.getPlayerState()) {\r\n case 1:\r\n this.dispatchEvent(this.events['play'])\r\n break\r\n default:\r\n this.dispatchEvent(this.events['pause'])\r\n }\r\n }\r\n\r\n // callbacks\r\n play() {\r\n this.player.playVideo()\r\n }\r\n pause() {\r\n this.player.pauseVideo()\r\n }\r\n stop() {\r\n this.player.stopVideo()\r\n }\r\n }\r\n\r\n function LoadYtScript() {\r\n this.scriptTag = document.querySelector('[id*=\"youtube-api\"]')\r\n }\r\n\r\n LoadYtScript.prototype = {\r\n\r\n loadScript() {\r\n return new Promise((resolve, reject) => {\r\n if(!this.scriptTag) {\r\n this.scriptTag = document.createElement('script')\r\n this.scriptTag.setAttribute('id', `youtube-api--${Math.round(Math.random() * 10000)}`)\r\n this.scriptTag.src = \"https://www.youtube.com/iframe_api\"\r\n document.body.append(this.scriptTag)\r\n }\r\n\r\n this.scriptTag?.addEventListener('load', function() {\r\n setTimeout(() => resolve(), 1000)\r\n })\r\n this.scriptTag?.addEventListener('error', reject)\r\n })\r\n }\r\n }\r\n\r\n return {\r\n YtPlayer,\r\n LoadYtScript\r\n }\r\n\r\n})()\r\n\r\nexport default YoutubeApi","import VimeoPlayer from \"@vimeo/player\"\r\nexport const VimeoApi = (function () {\r\n\r\n class Player extends EventTarget{\r\n constructor(container, player, options) {\r\n super()\r\n \r\n this.container = container\r\n this.videoPlayer = player || container\r\n this.videoID = this.videoPlayer.dataset.videoId || null\r\n this.player = null\r\n this.playerReady = false\r\n this.events = []\r\n\r\n this.options = Object.assign({\r\n autoplay: false,\r\n background: false\r\n }, {\r\n ...options \r\n })\r\n this._init()\r\n }\r\n\r\n _init() {\r\n this.createEvents()\r\n this.callApi()\r\n }\r\n\r\n createEvents() {\r\n this.events['loaded'] = new CustomEvent('loaded', {\r\n bubbles: true,\r\n detail: {\r\n getValue: () => this.videoPlayer\r\n }\r\n })\r\n this.events['play'] = new CustomEvent('play', {bubbles: true})\r\n this.events['pause'] = new CustomEvent('pause', {bubbles: true})\r\n this.events['ended'] = new CustomEvent('ended', {bubbles: true})\r\n }\r\n\r\n async callApi() {\r\n await this.createPlayer()\r\n this.playerReady = true\r\n this.addPlayerListeners()\r\n this.dispatchEvent(this.events['loaded'])\r\n }\r\n\r\n createPlayer() {\r\n\r\n this.player = new VimeoPlayer(this.videoPlayer, {\r\n height: '100%',\r\n width: '100%',\r\n playsinline: false,\r\n responsive: true,\r\n controls: false,\r\n id: `${this.videoID}`,\r\n byline: false,\r\n background: this.options.background,\r\n loop: this.options.loop,\r\n autoplay: false\r\n })\r\n\r\n return this.player.ready()\r\n \r\n }\r\n\r\n // callbacks\r\n play() {\r\n this.player.play()\r\n }\r\n pause() {\r\n this.player.pause()\r\n }\r\n stop() {\r\n this.player.stop()\r\n }\r\n seek(dur) {\r\n this.player.setCurrentTime(dur)\r\n }\r\n\r\n // Adding listeners\r\n addPlayerListeners() {\r\n this.player.on('play', () => {\r\n this.playing = true\r\n this.dispatchEvent(this.events['play'])\r\n })\r\n this.player.on('pause', () => {\r\n this.playing = false\r\n this.dispatchEvent(this.events['pause'])\r\n })\r\n this.player.on('ended', () => {\r\n this.playing = false\r\n this.dispatchEvent(this.events['ended'])\r\n })\r\n }\r\n }\r\n\r\n return {\r\n Player\r\n }\r\n\r\n})()\r\n\r\nexport default VimeoApi\r\n","import {gsap} from 'gsap'\r\nimport { ScrollTrigger } from \"gsap/ScrollTrigger\"\r\nimport {utilities} from \"@/scripts/common/utilities\"\r\nimport {YoutubeApi} from \"./YouTube\"\r\nimport {VimeoApi} from \"./Vimeo\"\r\ngsap.registerPlugin(ScrollTrigger)\r\n\r\n\r\nexport const Video = (() => {\r\n\r\n class VideoBanner {\r\n constructor(container, options) {\r\n this.$videoContainer = container\r\n this.$videoNative = this.$videoContainer.querySelector('.bg-vid')\r\n this.$videoIframe = this.$videoContainer.querySelector('.bg-iframe')\r\n this.$videoPlayer = this.$videoContainer.querySelector('.bg-vid__player')\r\n this.$videoControls = this.$videoContainer.querySelector('.bg-vid__controls')\r\n this.$videoPlayBtn = this.$videoContainer.querySelector('.bg-vid__controls-play')\r\n this.$articleElems = gsap.utils.toArray(this.$videoContainer.querySelectorAll('.article-generic > *'))\r\n this.videoPlaying = false\r\n this.videoType = this.$videoContainer.dataset.videoType || 'native'\r\n if(this.videoType === 'html5') this.videoType = 'native'\r\n this.playerReady = false\r\n this.Player = null\r\n this.controlRevealTimeoutFunc = null\r\n this.mainTl = null\r\n this.controlRevealTime = 5000\r\n this.scrollController = null\r\n \r\n this.options = Object.assign({\r\n fitIframe: true,\r\n background: this.$videoContainer.dataset.background === \"1\",\r\n autoplay: this.$videoContainer.dataset.autoplay === \"1\" && !this.$videoContainer.closest('.card-carousel'),\r\n loop: this.$videoContainer.dataset.loop === \"1\"\r\n },\r\n {\r\n ...options\r\n })\r\n\r\n this.scrollOptions = {\r\n trigger: this.$videoContainer,\r\n start: 'top bottom',\r\n onToggle: self => {\r\n if(this.options.background) {\r\n !self.isActive ? this._pauseVideo() : this._playVideo()\r\n return\r\n }\r\n if(!self.isActive) this._pauseVideo()\r\n }\r\n }\r\n this.init()\r\n }\r\n\r\n init() {\r\n this.makePlayer()\r\n this.makeAnim()\r\n this.$videoContainer.getVideo = () => this\r\n }\r\n\r\n // Iframe size\r\n makeIframeFit() {\r\n utilities.resizePlayer(this.$videoContainer)\r\n }\r\n\r\n // Iframe utilities\r\n toIframePlayer(player, command){\r\n if (player == null || command == null || player.contentWindow == null) return\r\n player.contentWindow.postMessage(JSON.stringify(command), \"*\");\r\n }\r\n\r\n // Making player\r\n async makePlayer() {\r\n switch(this.videoType) {\r\n case 'youtube':\r\n this.Player = await this.ytLoader()\r\n this.playerReady = true\r\n if(this.options.fitIframe) this.makeIframeFit()\r\n this.addingListener()\r\n break\r\n case 'vimeo':\r\n this.Player = await this.vmLoader()\r\n this.playerReady = true\r\n this.addingListener()\r\n if(this.options.fitIframe) this.makeIframeFit()\r\n break\r\n default:\r\n this.Player = this.$videoNative\r\n this.playerReady = true\r\n this.addingListener()\r\n }\r\n }\r\n\r\n ytLoader() {\r\n return new Promise((resolve, reject) => {\r\n const player = new YoutubeApi.YtPlayer(this.$videoContainer, this.$videoPlayer, this.options)\r\n player.addEventListener('loaded', () => {\r\n resolve(player)\r\n })\r\n })\r\n }\r\n\r\n vmLoader() {\r\n return new Promise((resolve, reject) => {\r\n const player = new VimeoApi.Player(this.$videoContainer, this.$videoPlayer, this.options)\r\n player.addEventListener('loaded', () => {\r\n resolve(player)\r\n })\r\n })\r\n }\r\n\r\n _playVideo() {\r\n if(!this.Player) return\r\n this.videoPlaying = true\r\n this.Player?.play()\r\n }\r\n\r\n _pauseVideo() {\r\n if(!this.Player) return\r\n this.videoPlaying = false\r\n this.Player?.pause()\r\n }\r\n\r\n // Animation\r\n makeAnim() {\r\n this.mainTl = gsap.timeline({paused: true})\r\n if(this.$videoPlayBtn)\r\n this.mainTl.to(this.$videoPlayBtn, {\r\n duration: 0.4,\r\n scale: 1.2,\r\n ease: 'power2.inOut',\r\n autoAlpha: 0\r\n })\r\n if(this.$articleElems.length) {\r\n this.mainTl.to(this.$articleElems, {\r\n stagger: -0.05,\r\n y: 50,\r\n autoAlpha: 0,\r\n ease: 'power2.inOut',\r\n display: 'none'\r\n }, 0)\r\n } \r\n }\r\n\r\n // Controls\r\n toggleVideo() {\r\n this.videoPlaying ? this._pauseVideo() : this._playVideo()\r\n }\r\n\r\n // UI updates\r\n updateUI() {\r\n if(this.videoPlaying) {\r\n this.$videoContainer.classList.add('playing')\r\n this.$videoContainer.classList.remove('paused')\r\n this.mainTl.play()\r\n return\r\n } \r\n this.$videoContainer.classList.remove('playing')\r\n this.$videoContainer.classList.add('paused')\r\n this.mainTl.reverse()\r\n \r\n }\r\n\r\n // Callbacks\r\n updatePlay(play) {\r\n this.videoPlaying = play\r\n this.updateUI()\r\n } \r\n\r\n // endScreenUpdate() {\r\n // if(this.videoType === 'vimeo' && !this.options.loop) {\r\n // this.Player?.seek(0)\r\n // this.Player.play()\r\n // }\r\n // }\r\n\r\n // Resize Callbacks\r\n resizeFunc() {\r\n return utilities.debounce(() => {\r\n if(this.options.fitIframe) this.makeIframeFit()\r\n }, 250)\r\n }\r\n\r\n addingListener() {\r\n this.$videoControls?.addEventListener('click', () => this.toggleVideo())\r\n this.Player?.addEventListener('play', () => this.updatePlay(true))\r\n this.Player?.addEventListener('pause', () => this.updatePlay(false))\r\n this.Player?.addEventListener('ended', () => this.updatePlay(false))\r\n //if(this.videoType === \"vimeo\") this.Player?.addEventListener('ended', () => this.endScreenUpdate())\r\n this.scrollController = ScrollTrigger.create(this.scrollOptions)\r\n\r\n window.addEventListener('resize', this.resizeFunc())\r\n }\r\n }\r\n\r\n return {\r\n VideoBanner\r\n }\r\n})()\r\n\r\nexport default Video","import {Video} from './Video'\r\n(async function(){\r\n const $videoBanner = document.querySelectorAll('.banner-video')\r\n $videoBanner.forEach($v => new Video.VideoBanner($v))\r\n})()\r\n\r\n"],"sourceRoot":""}