{"version":3,"file":"js/blog.f8740c250ae885ae7af5.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`) || this.$blog.querySelector(`.${CLASS_PRE}__infinite-list`)\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: 'top top',\r\n end: 'bottom bottom',\r\n ...( this.$blogFeaturedCol && this.$blogFeaturedCol.dataset.pinOptions ? JSON.parse(this.$blogFeaturedCol.dataset.pinOptions) ? JSON.parse(this.$blogFeaturedCol.dataset.pinOptions) : {} : {})\r\n }\r\n\r\n console.log(this.pinOptions)\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 this.$blog.getBlogFunctions = () => this\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(options={}) {\r\n const loader = document.createElement('div')\r\n loader.classList.add('infinite-loader__item', 'skeleton-item')\r\n if(options.itemModifiers) options.itemModifiers.split(',').forEach((cl) => loader.classList.add(cl.trim()))\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 = `
${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 playsinline: this.container.dataset.playsinline === \"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: this.options.playsinline,\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\nimport {addScrollController, ScrollControllers} from \"@/scripts/common/api/scrolltrigger.services\"\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.$videoNative?.autoplay || false,\r\n loop: this.$videoContainer.dataset.loop === \"1\",\r\n onViewDemand: this.$videoContainer.dataset.onDemand || \"1\" \r\n },\r\n {\r\n ...options\r\n })\r\n\r\n console.log(this.options)\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 && !this.$videoContainer.classList.contains(\"banner-dont-hide-content-on-play\")) {\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 if(parseInt(this.options.onViewDemand) === \"1\") {\r\n this.scrollController = ScrollTrigger.create(this.scrollOptions)\r\n addScrollController(this.scrollController)\r\n }\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","BlogListing","$blogListings","Blogs","container","this","$blog","$blogFilter","querySelector","$blogListingContent","$blogFeaturedCol","$blogAsideCol","$blogFeaturedArticle","scrollTweenController","isMobile","window","innerWidth","settings","scrollTweenOption","trigger","start","pinOptions","end","dataset","JSON","parse","console","log","pin","pinTl","init","Loader","Pin","updateOptions","addToSCrollController","addListeners","getBlogFunctions","kill","to","autoAlpha","scale","refresh","Object","assign","animation","scrub","scrollController","addScrollController","utilities","addEventListener","resizeFunc","document","querySelectorAll","length","forEach","$bl","classList","contains","InfiniteLoader","defaultLoaderOptions","options","$loader","$addedItem","skeletonLoaderStyle","skeletonType","skeletonLoaderNo","scrollOptions","endTrigger","pinSpacing","events","eventsCreator","addMainSCrollController","getLoader","loader","createElement","add","itemModifiers","split","cl","trim","skeleton","innerHTML","appendChild","skeletonLoaderClass","classes","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","playsinline","addPlayerListeners","VimeoPlayer","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","onViewDemand","onDemand","onToggle","self","isActive","_playVideo","_pauseVideo","makeAnim","makePlayer","getVideo","command","contentWindow","postMessage","stringify","ytLoader","makeIframeFit","updateUI","addingListener","vmLoader","paused","ease","stagger","y","display","_muteToggle","playingUIUpdate","mutedUIUpdate","reverse","toggleVideo","updatePlay","parseInt","$v"],"sourceRoot":""}