{"version":3,"file":"js/blog.3f70a3d2881bc4fed1fd.bundle.js","mappings":"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","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"],"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'\r\n(function () {\r\n const $blogListings = document.querySelectorAll('.blog-listing')\r\n if ($blogListings.length) $blogListings.forEach($bl => {\r\n if(!$bl.classList.contains('blog-listing--ui')) new Blogs.BlogListing($bl)\r\n })\r\n})()","import { gsap } from \"gsap\"\r\nimport settings from \"@/scripts/common/settings\"\r\nimport { ScrollToPlugin } from \"gsap/ScrollToPlugin\"\r\nimport utilities from \"@/scripts/common/utilities\"\r\nimport { LazyLoad } from '@/scripts/lazyload/Lazyload'\r\nimport { addScrollController } from \"@/scripts/common/api/scrolltrigger.services\"\r\nimport { ScrollTrigger } from \"gsap/ScrollTrigger\"\r\n\r\ngsap.registerPlugin(ScrollTrigger)\r\ngsap.registerPlugin(ScrollToPlugin)\r\n\r\nexport const Loader = (() => {\r\n class InfiniteLoader {\r\n constructor(container, options) {\r\n this.$loader = container\r\n this.$addedItem = null\r\n\r\n this.options = Object.assign(defaultLoaderOptions, options)\r\n\r\n this.options.skeletonLoaderStyle = this.$loader.dataset.skeletonType || this.options.skeletonLoaderStyle\r\n this.options.skeletonLoaderNo = this.$loader.dataset.skeletonLoaderNo || this.options.skeletonLoaderNo\r\n\r\n this.scrollOptions = {\r\n trigger: this.$loader.dataset.trigger || this.$loader,\r\n endTrigger: this.$loader.dataset.endTrigger || this.$loader,\r\n start: 'top top',\r\n end: 'bottom bottom',\r\n pinSpacing: this.isMobile ? false : true\r\n }\r\n\r\n this.scrollController = null\r\n\r\n this.events = []\r\n this.init()\r\n }\r\n\r\n init() {\r\n this.eventsCreator()\r\n this.updateOptions()\r\n this.addMainSCrollController()\r\n this.addListeners()\r\n this.$loader.getLoader = () => this\r\n }\r\n\r\n // Skeleton Loader\r\n skeletonLoader() {\r\n const loader = document.createElement('div')\r\n loader.classList.add('skeleton-item')\r\n const skeleton = document.createElement('div')\r\n skeleton.classList.add('skeleton__loader')\r\n\r\n switch (this.options.skeletonLoaderStyle) {\r\n case 'article-blog':\r\n skeleton.classList.add('skeleton__loader--article-blog')\r\n skeleton.innerHTML = `
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
`\r\n break\r\n case 'article-clean':\r\n skeleton.classList.add('skeleton__loader--article-clean')\r\n skeleton.innerHTML = `
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
`\r\n break\r\n case 'figure':\r\n skeleton.classList.add('skeleton__loader--figure')\r\n skeleton.innerHTML = `
\r\n
\r\n
\r\n
\r\n
\r\n
`\r\n break\r\n default:\r\n skeleton.innerHTML = `
`\r\n }\r\n\r\n loader.appendChild(skeleton)\r\n\r\n if (this.options.skeletonLoaderClass) {\r\n const classes = this.options.skeletonLoaderClass.split(' ')\r\n classes.forEach(c => loader.classList.add(c))\r\n }\r\n\r\n\r\n return loader\r\n }\r\n\r\n // Refresh Pin\r\n refresh() {\r\n if (this.scrollController) this.scrollController.refresh()\r\n this.$loader.dispatchEvent(this.events['onUpdate'])\r\n }\r\n\r\n // Scroll to listing func\r\n\r\n scrollToListing() {\r\n gsap.to(window, {\r\n duration: 0.3,\r\n scrollTo: this.$loader\r\n })\r\n }\r\n\r\n // Callbacks\r\n updateOptions() {\r\n Object.assign(this.scrollOptions, {\r\n onLeave: () => {\r\n this.$loader.dispatchEvent(this.events['onScrollEnd'])\r\n }\r\n })\r\n }\r\n\r\n addSkeletonLoader() {\r\n let n = 0\r\n while (n < this.options.skeletonLoaderNo) {\r\n this.addItem(this.skeletonLoader())\r\n n++\r\n }\r\n }\r\n\r\n removeSkeletonLoader() {\r\n const $loaders = this.$loader.querySelectorAll('.skeleton-item')\r\n this.clearAllItems($loaders)\r\n }\r\n\r\n addItem(domStr) {\r\n const $item = typeof domStr === \"string\" ? utilities.createNodeParsing(domStr) : domStr\r\n this.$addedItem = $item\r\n this.$loader.appendChild($item)\r\n const $lazyload = $item.querySelector('.lazyload')\r\n if ($lazyload) new LazyLoad($lazyload)\r\n\r\n this.$loader.dispatchEvent(this.events['onAdd'])\r\n }\r\n\r\n clearAllItems($loaders) {\r\n const $listItems = $loaders || gsap.utils.toArray(this.$loader.children)\r\n $listItems.forEach($item => {\r\n if(!!!$item.dataset.persistent) this.$loader.removeChild($item)\r\n })\r\n this.$loader.dispatchEvent(this.events['onClear'])\r\n }\r\n\r\n noItemsFound(show) {\r\n const infoDiv = this.$loader.querySelector(`.info-message`)\r\n if(infoDiv) infoDiv.remove()\r\n \r\n if(show) {\r\n const infoDiv = document.createElement('div')\r\n infoDiv.classList.add(`info-message`)\r\n infoDiv.innerHTML = `

${this.options.noItemMessage}

`\r\n this.$loader.prepend(infoDiv)\r\n return\r\n }\r\n }\r\n\r\n // Events definer\r\n eventsCreator() {\r\n\r\n this.events['onAdd'] = new CustomEvent('onAdd', {\r\n bubbles: true,\r\n detail: {\r\n getAddedItem: () => {\r\n return this.$addedItem\r\n }\r\n }\r\n })\r\n\r\n this.events['onClear'] = new CustomEvent('onClear', {\r\n bubbles: true,\r\n })\r\n\r\n this.events['onScrollEnd'] = new CustomEvent('onScrollEnd', {\r\n bubbles: true,\r\n })\r\n\r\n this.events['onUpdate'] = new CustomEvent('onUpdate', {\r\n bubbles: true,\r\n })\r\n }\r\n\r\n // Resize func\r\n resizeFunc() {\r\n return utilities.debounce(() => {\r\n this.refresh()\r\n }, 250)\r\n }\r\n\r\n // Adding scrollController\r\n addMainSCrollController() {\r\n if (this.scrollController) this.scrollController = null\r\n\r\n this.scrollController = ScrollTrigger.create(this.scrollOptions)\r\n addScrollController(this.scrollController)\r\n }\r\n\r\n // Adding Listeners\r\n addListeners() {\r\n this.$loader.addEventListener('onAdd', () => this.refresh())\r\n this.$loader.addEventListener('onClear', () => this.refresh())\r\n window.addEventListener('resize', this.resizeFunc())\r\n }\r\n }\r\n\r\n const defaultLoaderOptions = {\r\n skeletonLoaderStyle: 'article-blog',\r\n skeletonLoaderNo: 3,\r\n noItemMessage: 'We are sorry. No result were found for the selected filters(s)'\r\n }\r\n\r\n return {\r\n InfiniteLoader\r\n }\r\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 muted: this.container.dataset.muted === \"1\",\r\n controls: this.container.dataset.controls === \"1\",\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: this.options.controls,\r\n id: `${this.videoID}`,\r\n byline: false,\r\n background: this.options.background,\r\n muted: this.options.muted,\r\n loop: this.options.loop,\r\n autoplay: this.options.autoplay\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"],"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","muted","controls","addPlayerListeners","VimeoPlayer","playsinline","responsive","id","byline","loop","ready","play","pause","stop","dur","setCurrentTime","on","VideoBanner","Video","$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","paused","ease","stagger","y","display","_muteToggle","playingUIUpdate","mutedUIUpdate","reverse","toggleVideo","updatePlay","$v"],"sourceRoot":""}