{"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","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","$videoMuteBtn","$articleElems","videoPlaying","videoType","controlRevealTimeoutFunc","mainTl","controlRevealTime","fitIframe","closest","onToggle","self","isActive","_playVideo","_pauseVideo","makeAnim","makePlayer","getVideo","command","contentWindow","postMessage","JSON","stringify","ytLoader","makeIframeFit","updateUI","addingListener","vmLoader","muted","paused","ease","stagger","y","display","_muteToggle","playingUIUpdate","mutedUIUpdate","reverse","toggleVideo","updatePlay","$v"],"mappings":"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","file":"js/blog.cfaac2df7ff77ba3540e.bundle.js","sourcesContent":["import { gsap } from \"gsap\"\r\nimport { ScrollTrigger } from \"gsap/ScrollTrigger\"\r\nimport { ScrollToPlugin } from \"gsap/ScrollToPlugin\"\r\nimport settings from \"@/scripts/common/settings\"\r\nimport utilities from \"@/scripts/common/utilities\"\r\nimport {Loader} from '@/scripts/infinite-loader/Infinite-loader'\r\nimport Pin from '@/scripts/pin/Pin'\r\nimport {addScrollController, ScrollControllers} from \"@/scripts/common/api/scrolltrigger.services\"\r\n\r\ngsap.registerPlugin(ScrollTrigger)\r\ngsap.registerPlugin(ScrollToPlugin)\r\n\r\n\r\nexport const Blogs = (() => {\r\n const CLASS_PRE = 'blog-listing'\r\n\r\n class BlogListing {\r\n constructor(container) {\r\n this.$blog = container\r\n this.$blogFilter = this.$blog.querySelector(`.${CLASS_PRE}__filter`)\r\n this.$blogListingContent = this.$blog.querySelector(`.${CLASS_PRE}__content`)\r\n this.$blogFeaturedCol = this.$blog.querySelector(`.${CLASS_PRE}__col--featured`)\r\n this.$blogAsideCol = this.$blog.querySelector(`.${CLASS_PRE}__col--aside`)\r\n this.$blogFeaturedArticle = this.$blog.querySelector(`.blog-article--featured`)\r\n\r\n \r\n this.scrollTweenController = null\r\n this.isMobile = window.innerWidth < settings.breakpoints.mobile\r\n\r\n this.scrollTweenOption = {\r\n trigger: this.$blogFeaturedCol,\r\n start: 'top top'\r\n }\r\n\r\n this.pinOptions = { // Pin overrides\r\n start: 'bottom bottom'\r\n }\r\n\r\n this.pin = null\r\n this.pinTl = null\r\n this.init()\r\n }\r\n\r\n init() {\r\n new Loader.InfiniteLoader(this.$blogAsideCol) // Infinite loader\r\n if (!this.isMobile) this.pin = new Pin(this.$blogFeaturedArticle, this.$blog, this.pinOptions) // Pining featured article\r\n //if (this.isMobile) this.createPinTl()\r\n this.updateOptions()\r\n this.addToSCrollController()\r\n this.addListeners()\r\n }\r\n\r\n // Animation\r\n createPinTl() {\r\n if(this.pinTl) {\r\n this.pinTl.kill()\r\n this.pinTl = null\r\n }\r\n\r\n this.pinTl = gsap.timeline()\r\n\r\n this.pinTl.to(this.$blogFeaturedArticle, {\r\n autoAlpha: 0,\r\n scale: 0.5\r\n })\r\n }\r\n\r\n // Refresh Pin\r\n refresh() {\r\n if (this.pin) this.pin.refresh()\r\n if (this.scrollTweenController) this.scrollTweenController.refresh()\r\n }\r\n\r\n\r\n // Option updates\r\n updateOptions() {\r\n if (this.pinTl)\r\n Object.assign(this.scrollTweenOption, {\r\n animation: this.pinTl,\r\n scrub: true\r\n })\r\n }\r\n\r\n\r\n // Adding scrollController\r\n addToSCrollController() {\r\n if (this.scrollTweenController) this.scrollController = null\r\n\r\n if(this.pinTl) {\r\n this.scrollTweenController = ScrollTrigger.create(this.scrollTweenOption) // For mobile pin animation\r\n addScrollController(this.scrollTweenController)\r\n }\r\n }\r\n\r\n // Resize func\r\n resizeFunc() {\r\n return utilities.debounce(() => {\r\n this.isMobile = window.innerWidth < settings.breakpoints.mobile\r\n this.refresh()\r\n }, 250)\r\n }\r\n\r\n // Adding Listeners\r\n addListeners() {\r\n this.$blogAsideCol.addEventListener('onUpdate', () => this.refresh())\r\n window.addEventListener('resize', this.resizeFunc())\r\n }\r\n }\r\n\r\n return {\r\n BlogListing\r\n }\r\n})()\r\n\r\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 = `
${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\"\r\nimport { ScrollTrigger } from \"gsap/ScrollTrigger\"\r\nimport { ScrollToPlugin } from \"gsap/ScrollToPlugin\"\r\nimport settings from \"@/scripts/common/settings\"\r\nimport { addScrollController } from \"@/scripts/common/api/scrolltrigger.services\"\r\n\r\ngsap.registerPlugin(ScrollTrigger)\r\ngsap.registerPlugin(ScrollToPlugin)\r\n\r\nexport default class Pin {\r\n constructor(pin, container, options) {\r\n this.$pin = pin\r\n this.$pinContainer = container\r\n this.scrollController = null\r\n this.isMobile = window.innerWidth < settings.breakpoints.mobile\r\n\r\n this.scrollPinOptions = {\r\n trigger: this.$pin,\r\n endTrigger: this.$pinContainer || this.$pin,\r\n start: 'top top',\r\n end: 'bottom bottom',\r\n pin: this.$pin,\r\n pinSpacing: this.isMobile ? false : true,\r\n toggleClass: {\r\n targets: this.$pin,\r\n className: `pinned`\r\n }\r\n }\r\n\r\n Object.assign(this.scrollPinOptions, options)\r\n\r\n this.init()\r\n }\r\n\r\n init() {\r\n this.addPinSCrollController()\r\n }\r\n\r\n // Options update\r\n updatePinOption(options) {\r\n Object.assign(this.scrollPinOptions, options)\r\n }\r\n\r\n // Callbacks\r\n refresh() {\r\n this.scrollController.refresh()\r\n }\r\n\r\n addPinSCrollController() {\r\n if (this.scrollController) this.scrollController = null\r\n this.scrollController = ScrollTrigger.create(this.scrollPinOptions)\r\n addScrollController(this.scrollController)\r\n }\r\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.$videoMuteBtn = this.$videoContainer.querySelector('.bg-vid__controls-mute') \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') || this.$videoNative?.autoplay || false,\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.makeAnim()\r\n this.makePlayer()\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.updateUI()\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.updateUI()\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.updateUI()\r\n this.addingListener()\r\n if(this.options.autoplay) this._playVideo()\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 _muteToggle() {\r\n this.Player.muted = !this.Player.muted\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(e) {\r\n if(this.$videoMuteBtn && (this.$videoMuteBtn.contains(e.target) || e.target === this.$videoMuteBtn)) {\r\n this._muteToggle()\r\n return\r\n }\r\n this.videoPlaying ? this._pauseVideo() : this._playVideo()\r\n }\r\n\r\n // UI updates\r\n updateUI() {\r\n this.playingUIUpdate()\r\n this.mutedUIUpdate()\r\n }\r\n\r\n playingUIUpdate() {\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 mutedUIUpdate() {\r\n if(this.Player.muted) {\r\n this.$videoContainer.classList.add('muted')\r\n return\r\n } \r\n this.$videoContainer.classList.remove('muted')\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', (e) => this.toggleVideo(e))\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 this.Player?.addEventListener('volumechange', () => this.updateUI())\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":""}