{"version":3,"sources":["webpack:///./scripts/carousels/SlickCarousel.js","webpack:///./scripts/gallery/Gallery.js","webpack:///./scripts/gallery/index.js","webpack:///./scripts/infinite-loader/Infinite-loader.js","webpack:///./scripts/modal/Modal.js","webpack:///./scripts/modal/templates/modal.template.js","webpack:///./scripts/pin/Pin.js","webpack:///./scripts/ui-filter/UIfilter.js","webpack:///./scripts/video/YouTube.js","webpack:///./scripts/video/Vimeo.js","webpack:///./scripts/video/Video.js"],"names":["gsap","ScrollToPlugin","Carousels","SlickCarousel","container","options","this","$slider","$slides","querySelectorAll","$pagination","arrowModifiers","asNavFor","dataset","asNav","goToPanel","gotoPanel","isMobile","window","innerWidth","settings","syncLocation","Object","assign","infinite","slidesToShow","slidesToScroll","dots","arrows","prevArrow","nextArrow","pagination","controlsAppendTo","initCallback","addClassModifiers","sliderEventsCallback","setSync","scrollToPanel","makePagination","syncSlideWithLocation","makeCarousel","paginationUpdate","addlisteners","getSlick","updateOptions","windowHref","location","href","slides","index","findIndex","$slide","$link","querySelector","match","getAttribute","classList","add","responsive","reverse","every","screen","breakpoint","length","initialSlide","focusOnSelect","forEach","$item","addEventListener","duration","scrollTo","y","offsetY","ease","$","on","event","slick","image","imageSource","parents","removeClass","parent","hasClass","addClass","currentSlide","nextSlide","lazyLoad","$s","unslick","document","createElement","innerHTML","appendChild","paginationItem","parentNode","appendArrows","label","paginationLabel","$paginationItem","String","padStart","currentIndex","$paginationItems","find","$paginationList","$activePaginationItem","eq","x","offsetX","$bannerVideo","getVideo","_pauseVideo","_playVideo","pauseSlideVideo","playSlideVideo","resizeFunc","utilities","resizeCallback","ScrollTrigger","CLASS_PRE","$galleryListing","Gallery","GalleryListing","$gallery","$galleryFilter","$galleryList","$filterTrigger","uiFilter","contains","pin","pinOptions","start","pinSpacing","infiniteLoaderOption","skeletonLoaderStyle","skeletonLoaderClass","skeletonLoaderNo","scrollToActiveTimer","init","Loader","UIFilter","Pin","updateUI","addListeners","$t","remove","e","item","preventDefault","removeAttribute","setAttribute","refresh","$galleryItemModal","detail","getAddedItem","$galleryItemRipple","ModalController","Ripple","clearTimeout","$activeParentItem","setTimeout","getBoundingClientRect","left","selectActive","onGalleryItemAdd","onUiFilterStart","$gl","InfiniteLoader","defaultLoaderOptions","$loader","$addedItem","skeletonType","scrollOptions","trigger","endTrigger","end","scrollController","events","eventsCreator","addMainSCrollController","getLoader","loader","skeleton","split","c","dispatchEvent","onLeave","n","addItem","skeletonLoader","$loaders","clearAllItems","domStr","$lazyload","LazyLoad","children","persistent","removeChild","show","infoDiv","noItemMessage","prepend","CustomEvent","bubbles","addScrollController","CustomEase","CustomWiggle","CLASS_MODAL_INLINE_PRE","Modal","$trigger","$targetHTML","target","$modal","$galleryCarousel","$galleryCarouselThumb","modalType","modalAnimType","modalDisplay","galleryGroup","modalGroup","galleryGroupTitle","modalGroupTitle","modalTitle","mainTl","galleryItems","active","_createModal","kill","$modalInner","clearProps","fromTopAnim","slidePageAnim","tl","paused","width","to","from","autoAlpha","xPercent","$modalContainer","display","yPercent","modalDirection","$modalContent","wiggles","type","existingModal","calculateGrid","addUIAnimation","addModalActions","_clearModal","$backdrop","collectGallery","_createModalHeader","_createGalleryCarousel","_createGalleryThumbnailCarousel","body","carousels","_createModalFooter","_createModalBody","$modalHeader","$targetHeader","$title","$grpTitle","headerModifiers","map","val","trim","mod","$modalFooter","$targetFooter","footerModifiers","$modalBody","bodyModifiers","modifiers","$singleSlide","iframeSrc","imageLink","_createIframe","banner","iframeType","videoType","Video","fitIframe","$thumbSlide","thumbnailLink","API","isJson","JSON","parse","isItemNode","thumbnail","pushToGallery","i","push","initIndex","slideToScroll","centerMode","centerPadding","click","$focusEle","$modalAction","$modalCarousel","carouselHeight","innerHeight","height","style","updateHtml","play","eventCallback","modalClose","modalOpen","handleTriggerClick","ModalInline","$modalItems","$modalPanels","totalItemsPerRow","totalItems","updateTotalItemsPerRow","updateItems","placeModalPanels","_addEventListener","itemsPerRowOffset","$panel","appendAfter","closest","isActive","resetAllPanels","onPanelUpdate","onFilter","$pin","$pinContainer","scrollPinOptions","toggleClass","targets","className","addPinSCrollController","Flip","Filter","CLASS_FILTER_PRE","$filterContainer","$filterOptions","$filterPanel","$filterPanelCols","$filterItems","$filterAllBtn","$filterCarousel","flipItemsState","flipPanelState","filterValues","carouselList","filterCarousel","eventBuilder","updateValue","$checkedInputs","$dropdowns","$inp","value","$dd","getFlipStates","toggleClasses","filteringItems","noItemsUpdate","flipAnimate","totalItemsArr","$col","$items","indexOf","Math","max","$opt","$input","filterMatch","group","includes","flipItemState","onStart","onComplete","refreshAllControllers","scale","stagger","absolute","onEnter","elements","opacity","nested","updateClassPanelCols","selectedItems","undefined","setValue","$inputs","inputHandler","onFilterUpdate","defaultDropdowns","FilterSelection","filters","f","name","filteringCarousel","v","filterSelector","join","$bg","activeCond","fv","filterName","filterValue","cond","YoutubeApi","YtPlayer","player","videoPlayer","videoID","videoId","playerReady","_init","YT","LoadYtScript","loadScript","createEvents","callApi","getValue","createPlayer","Promise","resolve","reject","Player","playerVars","onPlayerReady","onPlayerStateChange","playing","getPlayerState","playVideo","pauseVideo","stopVideo","EventTarget","scriptTag","prototype","round","random","src","append","VimeoApi","autoplay","background","addPlayerListeners","VimeoPlayer","playsinline","controls","id","byline","loop","ready","pause","stop","dur","setCurrentTime","VideoBanner","$videoContainer","$videoNative","$videoIframe","$videoPlayer","$videoControls","$videoPlayBtn","$articleElems","videoPlaying","controlRevealTimeoutFunc","controlRevealTime","onToggle","self","makePlayer","makeAnim","command","contentWindow","postMessage","stringify","ytLoader","makeIframeFit","addingListener","vmLoader","toggleVideo","updatePlay"],"mappings":"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","file":"js/gallery.e471b7a0e4fe0b5100f1.bundle.js","sourcesContent":["import { gsap } from \"gsap\"\r\nimport { ScrollToPlugin } from \"gsap/ScrollToPlugin\"\r\nimport utilities from '@/scripts/common/utilities'\r\nimport settings from \"@/scripts/common/settings\"\r\ngsap.registerPlugin(ScrollToPlugin)\r\nimport { refreshAllControllers } from \"@/scripts/common/api/scrolltrigger.services\"\r\n\r\nexport const Carousels = (() => {\r\n class SlickCarousel {\r\n constructor(container, options) {\r\n this.$slider = container\r\n this.$slides = this.$slider.querySelectorAll('[class*=\"__item\"]')\r\n this.$pagination = null\r\n this.arrowModifiers = null\r\n this.asNavFor = container.dataset.asNav || null\r\n this.goToPanel = !!container.dataset.gotoPanel || false\r\n this.isMobile = window.innerWidth < settings.breakpoints.mobile\r\n this.syncLocation = !!container.dataset.syncLocation || false\r\n this.options = Object.assign({\r\n infinite: true,\r\n slidesToShow: 1,\r\n slidesToScroll: 1,\r\n dots: true,\r\n arrows: true,\r\n prevArrow: ``,\r\n nextArrow: ``,\r\n pagination: !!this.$slider.dataset.pagination || false,\r\n controlsAppendTo: this.$slider.dataset.controlsAppendTo || null\r\n }, options)\r\n }\r\n\r\n init() {\r\n this.initCallback()\r\n this.addClassModifiers()\r\n this.sliderEventsCallback()\r\n this.setSync()\r\n this.scrollToPanel()\r\n if (this.options.pagination) this.makePagination()\r\n if(this.syncLocation) this.syncSlideWithLocation()\r\n this.makeCarousel()\r\n if (this.options.pagination) this.paginationUpdate()\r\n this.addlisteners()\r\n\r\n this.$slider.getSlick = () => this\r\n }\r\n\r\n addClassModifiers() {\r\n if (this.arrowModifiers)\r\n this.updateOptions({\r\n prevArrow: ``,\r\n nextArrow: ``,\r\n })\r\n }\r\n\r\n syncSlideWithLocation() {\r\n const windowHref = window.location.href\r\n const slides = gsap.utils.toArray(this.$slides)\r\n const index = slides.findIndex($slide => {\r\n const $link = $slide.querySelector('a[href]')\r\n if(!$link) return 0\r\n return windowHref.match($link.getAttribute('href'))\r\n })\r\n\r\n if(index !== -1) slides[index].classList.add('active-link')\r\n\r\n let slidesToShow = this.options.slidesToShow\r\n\r\n this.options.responsive.reverse().every(screen => {\r\n if(window.innerWidth < screen.breakpoint) {\r\n slidesToShow = screen.settings.slidesToShow\r\n return false\r\n }\r\n return true\r\n })\r\n\r\n if(this.$slides.length > slidesToShow) {\r\n this.updateOptions({\r\n initialSlide: index === -1 ? 0 : index,\r\n focusOnSelect: false\r\n })\r\n }\r\n }\r\n\r\n\r\n setSync() {\r\n if (this.asNavFor) {\r\n this.updateOptions({\r\n asNavFor: this.asNavFor\r\n })\r\n }\r\n }\r\n\r\n updateOptions(options) {\r\n Object.assign(this.options, {\r\n ...options\r\n })\r\n }\r\n\r\n\r\n\r\n scrollToPanel() {\r\n\r\n if (this.goToPanel) {\r\n const $items = gsap.utils.toArray(this.$slides)\r\n $items.forEach($item => {\r\n $item.addEventListener('click', () => {\r\n gsap.to(window, {\r\n duration: 1,\r\n scrollTo: {\r\n y: this.asNavFor,\r\n offsetY: 100\r\n },\r\n ease: 'power2.inOut'\r\n })\r\n })\r\n })\r\n }\r\n }\r\n\r\n sliderEventsCallback() {\r\n // Lazyloading\r\n $(this.$slider).on('lazyLoaded', function (event, slick, image, imageSource) {\r\n image.parents('.slick-slide--lazyloading').removeClass('slick-slide--lazyloading')\r\n if (image.parent().hasClass('bg-img')) image.parent().addClass('bg-img--loaded')\r\n })\r\n\r\n // after change\r\n $(this.$slider).on('afterChange', (event, slick, currentSlide, nextSlide) => {\r\n if(this.options.pagination) this.paginationUpdate()\r\n })\r\n }\r\n\r\n initCallback() {\r\n return false\r\n }\r\n\r\n resizeCallback() {\r\n return false\r\n }\r\n\r\n unslick() {\r\n $(this.$slider).slick('unslick')\r\n }\r\n\r\n makeCarousel() {\r\n if (this.options.lazyLoad) {\r\n this.$slides.forEach($s => $s.classList.add('slick-slide--lazyloading'))\r\n }\r\n if (this.$slider.getSlick) this.unslick()\r\n $(this.$slider).slick(this.options)\r\n \r\n }\r\n\r\n makePagination() {\r\n this.$pagination = document.createElement('div')\r\n this.$pagination.classList.add('card-carousel__pagination')\r\n this.$pagination.innerHTML = ``\r\n\r\n this.$slides.forEach(($s, index) => {\r\n this.$pagination.querySelector('.card-carousel__pagination-list').appendChild(this.paginationItem($s, index))\r\n })\r\n\r\n this.$slider.parentNode.appendChild(this.$pagination)\r\n\r\n if(this.options.controlsAppendTo === 'pagination') {\r\n this.updateOptions({\r\n appendArrows: this.$pagination\r\n })\r\n }\r\n }\r\n\r\n paginationItem($slide, index) {\r\n const label = $slide.dataset.paginationLabel\r\n const $paginationItem = document.createElement('div')\r\n $paginationItem.classList.add('card-carousel__pagination-item')\r\n\r\n $paginationItem.innerHTML = `${String(index+1).padStart(2, '0')}. ${label}`\r\n\r\n $paginationItem.addEventListener('click', () => $(this.$slider).slick('slickGoTo', index))\r\n\r\n return $paginationItem\r\n }\r\n\r\n paginationUpdate() {\r\n const currentIndex = $(this.$slider).slick('slickCurrentSlide')\r\n const $paginationItems = $(this.$pagination).find('.card-carousel__pagination-item')\r\n const $paginationList = $(this.$pagination).find('.card-carousel__pagination-list')\r\n $paginationItems.removeClass('card-carousel__pagination-item--active')\r\n const $activePaginationItem = $paginationItems.eq(currentIndex)\r\n\r\n $activePaginationItem.addClass('card-carousel__pagination-item--active')\r\n\r\n gsap.to($paginationList, {duration: 0.4, scrollTo: {\r\n x: $activePaginationItem,\r\n offsetX: 15\r\n }})\r\n }\r\n\r\n // Video utilities\r\n pauseSlideVideo(currentSlide) {\r\n const $slide = this.$slides[currentSlide]\r\n if (!$($slide).find('.banner-video').length) return\r\n \r\n const $bannerVideo = $($slide).find('.banner-video')\r\n if($bannerVideo.length) $bannerVideo[0].getVideo()._pauseVideo()\r\n }\r\n\r\n playSlideVideo(currentSlide) {\r\n const $slide = this.$slides[currentSlide]\r\n if (!$($slide).find('.banner-video').length) return\r\n const $bannerVideo = $slide.querySelector('.banner-video[data-autoplay=\"1\"]')\r\n $bannerVideo?.getVideo()._playVideo()\r\n }\r\n\r\n\r\n\r\n addlisteners() {\r\n\r\n $(this.$slider).on(\"beforeChange\", (event, slick, currentSlide, nextSlide) => {\r\n this.pauseSlideVideo(currentSlide)\r\n })\r\n\r\n $(this.$slider).on(\"afterChange\", (event, slick, currentSlide, nextSlide) => {\r\n this.playSlideVideo(currentSlide)\r\n })\r\n // Resize listener\r\n const resizeFunc = utilities.debounce(() => {\r\n this.isMobile = window.innerWidth < settings.breakpoints.mobile\r\n this.resizeCallback()\r\n }, 250)\r\n window.addEventListener('resize', resizeFunc)\r\n }\r\n }\r\n\r\n return {\r\n SlickCarousel\r\n }\r\n})()","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 { addScrollController } from \"@/scripts/common/api/scrolltrigger.services\"\nimport Pin from '@/scripts/pin/Pin'\nimport Ripple from '@/scripts/ripple'\nimport { ModalController } from '@/scripts/modal/Modal'\nimport { UIFilter } from '@/scripts/ui-filter/UIfilter'\ngsap.registerPlugin(ScrollTrigger)\ngsap.registerPlugin(ScrollToPlugin)\n\nexport const Gallery = (() => {\n const CLASS_PRE = 'gallery'\n class GalleryListing {\n constructor(container) {\n this.$gallery = container\n this.$galleryFilter = this.$gallery.querySelector(`.${CLASS_PRE}__filter`)\n this.$galleryList = this.$gallery.querySelector(`.${CLASS_PRE}__list`)\n this.$filterTrigger = this.$gallery.querySelectorAll(`.${CLASS_PRE}__filter-trigger`)\n this.uiFilter = this.$gallery.classList.contains(`${CLASS_PRE}--ui`)\n this.isMobile = window.innerWidth < settings.breakpoints.mobile\n this.pin = null\n this.pinOptions = {\n start: 'top-=50 top',\n pinSpacing: false\n }\n this.infiniteLoaderOption = {\n skeletonLoaderStyle: 'figure',\n skeletonLoaderClass: 'gallery__item',\n skeletonLoaderNo: 4\n }\n \n this.scrollToActiveTimer = null\n this.init()\n }\n\n init() {\n if(!this.uiFilter) new Loader.InfiniteLoader(this.$galleryList, this.infiniteLoaderOption) // Infinite loader\n if(this.uiFilter) new UIFilter.Filter(this.$gallery).init() // UI filters\n this.pin = new Pin(this.$galleryFilter, this.$gallery, this.pinOptions) // Pining featured article\n this.updateUI()\n this.addListeners()\n }\n\n updateUI() {\n this.$filterTrigger.forEach(($t) => {\n $t.classList.remove(`${CLASS_PRE}__filter-trigger--active`)\n })\n\n if(!this.uiFilter) this.$galleryFilter.querySelector(`.${CLASS_PRE}__filter-trigger[data-selected]`).classList.add(`${CLASS_PRE}__filter-trigger--active`)\n \n \n }\n\n // Callbacks\n selectActive(e, item) {\n e.preventDefault()\n this.$filterTrigger.forEach($t => $t.removeAttribute('data-selected'))\n item.setAttribute('data-selected', '')\n\n this.updateUI()\n }\n\n // Refresh Pin\n refresh() {\n if (this.pin) this.pin.refresh()\n //if(!this.uiFilter) this.scrollToActive()\n \n }\n\n // Gallery item add\n onGalleryItemAdd(e) {\n const $galleryItemModal = e.detail.getAddedItem().querySelector(`[data-modal]`)\n const $galleryItemRipple = e.detail.getAddedItem().querySelector(`[data-ripple]`)\n if($galleryItemModal) new ModalController.Modal($galleryItemModal)\n if($galleryItemRipple) new Ripple($galleryItemRipple)\n }\n\n // Utilities\n scrollToActive() {\n if(this.scrollToActiveTimer) clearTimeout(this.scrollToActiveTimer)\n const $activeParentItem = this.$galleryFilter.querySelector(`.${CLASS_PRE}__filter-trigger[data-selected]`).parentNode\n\n this.scrollToActiveTimer = setTimeout(()=>{\n this.$galleryFilter.scrollTo($activeParentItem.getBoundingClientRect().left, 0)\n\n // gsap.to(this.$galleryFilter, {\n // duration: 0.4,\n // scrollTo: {\n // x: $activeParentItem.getBoundingClientRect().left\n // },\n // ease: 'power2.inOut'\n // })\n\n },0)\n \n }\n\n // UI filter \n onUiFilterStart() {\n gsap.to(window, {\n duration: 0.4,\n scrollTo: {\n y: this.$gallery,\n offsetY: 100\n },\n ease: 'power2.inOut'\n })\n\n // this.refresh()\n }\n\n // Adding listeners\n addListeners() {\n if(!this.uiFilter) this.$filterTrigger.forEach(($t) => $t.addEventListener('click', (e) => this.selectActive(e, $t)))\n this.$galleryList.addEventListener('onUpdate', () => this.refresh())\n this.$galleryList.addEventListener('onAdd', (e) => this.onGalleryItemAdd(e))\n this.$gallery.addEventListener('UIFilterStart', (e) => this.onUiFilterStart())\n this.$gallery.addEventListener('UIFilterUpdated', (e) => this.refresh())\n }\n }\n\n return {\n GalleryListing\n }\n})()","import {Gallery} from './Gallery'\n(function(){\n const $galleryListing = document.querySelectorAll('.gallery')\n if($galleryListing.length) $galleryListing.forEach($gl => new Gallery.GalleryListing($gl))\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\"\r\nimport { CustomEase } from \"gsap/CustomEase\"\r\nimport { CustomWiggle } from \"gsap/CustomWiggle\"\r\nimport { ScrollToPlugin } from \"gsap/ScrollToPlugin\"\r\nimport { Carousels } from '@/scripts/carousels/SlickCarousel'\r\nimport settings from \"@/scripts/common/settings\"\r\nimport utilities from \"@/scripts/common/utilities\"\r\nimport {API} from '@/scripts/common/api/api.services'\r\nimport {Video} from '@/scripts/video/Video'\r\nimport modalTpl from './templates/modal.template'\r\ngsap.registerPlugin(ScrollToPlugin, CustomEase, CustomWiggle)\r\n\r\nexport const ModalController = (() => {\r\n class Modal {\r\n constructor(trigger, options) {\r\n this.$trigger = trigger\r\n this.$targetHTML = this.$trigger.dataset.target ? document.querySelector(this.$trigger.dataset.target) : null\r\n this.$modal = null\r\n this.$galleryCarousel = null\r\n this.$galleryCarouselThumb = null\r\n this.modalType = this.$trigger.dataset.modalType || 'normal'\r\n this.modalAnimType = this.$targetHTML?.dataset.modalAnimType || 'slidePage'\r\n this.modalDisplay = this.$targetHTML?.dataset.modalDisplay || ''\r\n this.galleryGroup = this.$trigger.dataset.modalGroup || ''\r\n this.galleryGroupTitle = this.$trigger.dataset.modalGroupTitle || ''\r\n this.modalTitle = this.$trigger.dataset.modalTitle || ''\r\n this.mainTl = null\r\n this.galleryItems = []\r\n this.active = false\r\n\r\n this.options = Object.assign({\r\n duration: 0.5,\r\n ease: 'power3.easeInOut'\r\n },options)\r\n\r\n this.init()\r\n }\r\n\r\n init() {\r\n if(this.$targetHTML) this._createModal()\r\n this.addListeners()\r\n }\r\n\r\n // Animation\r\n addUIAnimation() {\r\n if (this.mainTl) {\r\n this.mainTl.kill()\r\n \r\n this.mainTl = null\r\n }\r\n\r\n if (!this.$modal) return\r\n\r\n const $modalInner = this.$modal.querySelector('.modal__inner')\r\n\r\n gsap.set([$modalInner, this.$modal], {clearProps: 'all'})\r\n \r\n switch(this.modalAnimType) {\r\n case 'fromTop':\r\n this.mainTl = this.fromTopAnim()\r\n break\r\n default:\r\n this.mainTl = this.slidePageAnim() \r\n }\r\n \r\n\r\n }\r\n\r\n //Animations\r\n slidePageAnim() {\r\n const $modalInner = this.$modal.querySelector('.modal__inner')\r\n const tl = gsap.timeline({\r\n paused: true\r\n })\r\n\r\n gsap.set(this.$modal, {width: 0})\r\n\r\n tl.to(this.$modal, {\r\n duration: 0.5,\r\n ease: 'power2.inOut',\r\n width: '100%'\r\n })\r\n .from($modalInner, {\r\n autoAlpha: 0,\r\n duration: 0.5,\r\n ease: 'power2.inOut',\r\n xPercent: -100\r\n }, 0)\r\n return tl\r\n }\r\n // From Top\r\n fromTopAnim() {\r\n const $modalContainer = this.$modal.querySelector('.modal__container')\r\n const tl = gsap.timeline({\r\n paused: true\r\n })\r\n \r\n gsap.set(this.$modal, {\r\n autoAlpha: 0,\r\n display: 'none'\r\n })\r\n\r\n gsap.set($modalContainer, {\r\n autoAlpha: 0,\r\n yPercent: -100,\r\n autoAlpha: 0\r\n })\r\n\r\n tl.to(this.$modal, {\r\n duration: this.options.duration,\r\n ease: this.options.ease,\r\n autoAlpha: 1,\r\n display: 'block'\r\n })\r\n .to($modalContainer, {\r\n duration: this.options.duration,\r\n ease: this.options.ease,\r\n yPercent: 0,\r\n autoAlpha: 1 \r\n }, '-=0.2')\r\n\r\n return tl\r\n }\r\n // From side\r\n fromSideAnim() {\r\n const $modalContainer = this.$modal.querySelector('.modal__container')\r\n const tl = gsap.timeline({\r\n paused: true\r\n })\r\n \r\n gsap.set(this.$modal, {\r\n autoAlpha: 0,\r\n display: 'none'\r\n })\r\n\r\n tl.to(this.$modal, {\r\n duration: this.options.duration,\r\n ease: this.options.ease,\r\n autoAlpha: 1,\r\n display: 'block'\r\n })\r\n .from($modalContainer, {\r\n duration: this.options.duration,\r\n ease: this.options.ease,\r\n xPercent: this.options.modalDirection === 'right' ? 100 : -100,\r\n }, '-=0.2')\r\n\r\n return tl\r\n }\r\n\r\n // Shake \r\n shakeAnim() {\r\n const $modalContent = this.$modal.querySelector('.modal__content')\r\n if(!$modalContent) return\r\n\r\n CustomWiggle.create(\"Wiggle.easeInOut\", {wiggles:this.options.wiggles, type:\"easeInOut\"});\r\n CustomWiggle.create(\"Wiggle.easeOut\", {wiggles:this.options.wiggles, type:\"easeOut\"});\r\n gsap.to($modalContent, {\r\n duration: 0.8,\r\n x:\"+=20\", \r\n ease: \"Wiggle.easeOut\"\r\n })\r\n }\r\n\r\n // Modal\r\n\r\n _clearModal() {\r\n if (this.$galleryCarousel) {\r\n this.$galleryCarousel.getSlick().unslick()\r\n this.$galleryCarousel = null\r\n }\r\n if (this.$galleryCarouselThumb) {\r\n this.$galleryCarouselThumb.getSlick().unslick()\r\n this.$galleryCarouselThumb = null\r\n }\r\n if (this.$modal) {\r\n this.$modal.remove()\r\n this.$modal = null\r\n }\r\n }\r\n\r\n _createModal() {\r\n const existingModal = this.$targetHTML && document.querySelector(`#${this.$targetHTML.getAttribute('id')}--modal`)\r\n if(existingModal) {\r\n this.$modal = existingModal\r\n this.calculateGrid()\r\n this.addUIAnimation()\r\n this.addModalActions()\r\n return\r\n }\r\n if (this.$modal && this.modalType === 'gallery') {\r\n this._clearModal()\r\n }\r\n this.$modal = utilities.createNodeParsing(modalTpl())\r\n if(this.modalDisplay === 'modal-normal') {\r\n const $backdrop = document.createElement('div')\r\n $backdrop.classList.add('modal__backdrop')\r\n this.$modal.prepend($backdrop)\r\n this.$modal.classList.add('modal--normal')\r\n }\r\n\r\n if (this.modalType === 'gallery') {\r\n this.collectGallery()\r\n this._createModalHeader()\r\n this._createGalleryCarousel()\r\n this._createGalleryThumbnailCarousel()\r\n document.body.appendChild(this.$modal)\r\n this.carousels()\r\n } else {\r\n this._createModalHeader()\r\n this._createModalFooter()\r\n this._createModalBody()\r\n this.$modal.setAttribute('id', `${this.$targetHTML.getAttribute('id')}--modal`)\r\n document.body.appendChild(this.$modal)\r\n }\r\n this.calculateGrid()\r\n this.addUIAnimation()\r\n this.addModalActions()\r\n\r\n }\r\n\r\n // Modal elems\r\n _createModalHeader() {\r\n const $modalHeader = this.$modal.querySelector('.modal__header')\r\n const $targetHeader = this.$targetHTML?.querySelector('[data-title]')\r\n if($targetHeader) {\r\n $modalHeader.appendChild($targetHeader)\r\n return\r\n }\r\n\r\n if(this.modalTitle) {\r\n \r\n const $title = document.createElement('h1')\r\n $title.innerHTML = `${this.modalTitle}`\r\n $modalHeader.appendChild($title)\r\n }\r\n\r\n if(this.galleryGroupTitle) {\r\n const $grpTitle = document.createElement('h4')\r\n $grpTitle.innerHTML = `${this.galleryGroupTitle}`\r\n $modalHeader.appendChild($grpTitle)\r\n } \r\n const headerModifiers = this.$targetHTML?.dataset.headerModifiers?.split(',').map(val => val.trim()) || []\r\n if(headerModifiers.length)\r\n headerModifiers.forEach((mod) => $modalHeader.classList.add(`${mod}`))\r\n\r\n if(this.modalType === 'gallery') $modalHeader.classList.add(`justify-content-center`)\r\n \r\n return\r\n }\r\n\r\n _createModalFooter() {\r\n const $modalFooter = this.$modal.querySelector('.modal__footer')\r\n const $targetFooter = this.$targetHTML?.querySelector('[data-footer]')\r\n const footerModifiers = this.$targetHTML?.dataset.footerModifiers?.split(',').map(val => val.trim()) || []\r\n if(footerModifiers.length)\r\n footerModifiers.forEach((mod) => $modalFooter.classList.add(`${mod}`))\r\n if($targetFooter) {\r\n $modalFooter.appendChild($targetFooter)\r\n return\r\n }\r\n }\r\n\r\n _createModalBody() {\r\n const $modalBody = this.$modal.querySelector('.modal__body')\r\n const $modalContainer = this.$modal.querySelector('.modal__container')\r\n this.$targetHTML?.classList.add('modal-added')\r\n const bodyModifiers = this.$targetHTML?.dataset.bodyModifiers?.split(',').map(val => val.trim()) || []\r\n const modifiers = this.$targetHTML?.dataset.modifiers?.split(',').map(val => val.trim()) || []\r\n if(bodyModifiers.length)\r\n bodyModifiers.forEach((mod) => $modalBody.classList.add(`${mod}`))\r\n if(modifiers.length)\r\n modifiers.forEach((mod) => $modalContainer.classList.add(`${mod}`))\r\n $modalBody.appendChild(this.$targetHTML)\r\n }\r\n\r\n // Gallery\r\n _createGalleryCarousel() {\r\n this.$galleryCarousel = document.createElement('div')\r\n this.$galleryCarousel.classList.add('modal-single-carousel', 'card-carousel--overlay-controls', 'card-carousel--arrows-btn')\r\n this.galleryItems.forEach((item) => {\r\n const $singleSlide = document.createElement('div')\r\n $singleSlide.classList.add('modal-single-carousel__slide', 'modal-single-carousel__item')\r\n if(!item.iframeSrc) {\r\n $singleSlide.innerHTML = `
`\r\n this.$galleryCarousel.appendChild($singleSlide)\r\n return\r\n }\r\n\r\n $singleSlide.appendChild(this._createIframe(item)) \r\n this.$galleryCarousel.appendChild($singleSlide)\r\n \r\n })\r\n const $modalBody = this.$modal.querySelector('.modal__body')\r\n $modalBody.appendChild(this.$galleryCarousel)\r\n \r\n }\r\n\r\n _createIframe(item) {\r\n const banner = document.createElement('div')\r\n banner.classList.add(\"banner\",\"contain-bg\", \"banner-video\", \"text-light\", \"text-center\", \"aspect-ratio--16x9\")\r\n if(item.iframeType !== 'html5') banner.dataset.videoType = item.iframeType\r\n banner.innerHTML = `
\r\n
\r\n ${item.iframeType === 'html5' ? \r\n `\r\n
` \r\n :\r\n `
` +\r\n `
` \r\n }\r\n
`\r\n new Video.VideoBanner(banner, {\r\n fitIframe: false\r\n })\r\n return banner\r\n }\r\n\r\n _createGalleryThumbnailCarousel() {\r\n if (this.galleryItems.length === 0) return\r\n\r\n this.$galleryCarouselThumb = document.createElement('div')\r\n this.$galleryCarouselThumb.classList.add('modal-thumbnail-carousel', 'card-carousel--inline-controls', 'card-carousel--arrows-btn')\r\n\r\n this.galleryItems.forEach((item) => {\r\n const $thumbSlide = document.createElement('div')\r\n $thumbSlide.classList.add('modal-thumbnail-carousel__slide', 'modal-thumbnail-carousel__item')\r\n $thumbSlide.innerHTML = `
`\r\n this.$galleryCarouselThumb.appendChild($thumbSlide)\r\n })\r\n const $modalFooter = this.$modal.querySelector('.modal__footer')\r\n $modalFooter.classList.add('modal__footer--thumbnail-wrapper')\r\n $modalFooter.appendChild(this.$galleryCarouselThumb)\r\n }\r\n\r\n // Gallery\r\n collectGallery() {\r\n this.galleryItems = []\r\n const $relatedGroupItems = this.galleryGroup ? \r\n (!new API.Controller().isJson(this.$trigger.dataset.modalGroup) ? document.querySelectorAll(`[data-modal-group=${this.galleryGroup}]`) : JSON.parse(this.$trigger.dataset.modalGroup))\r\n : [this.$trigger]\r\n\r\n $relatedGroupItems.forEach($item => {\r\n let isItemNode = utilities.isNodeEle($item)\r\n const imageLink = isItemNode ? $item.getAttribute('href') : $item.imageLink\r\n const iframeSrc = isItemNode ? $item.dataset.iframeSrc || null : $item.iframeSrc || null\r\n const iframeType = isItemNode ? $item.dataset.iframeType || null : $item.iframeType || null\r\n const thumbnailLink = isItemNode ? $item.dataset.thumbnail || imageLink : $item.thumbnailLink\r\n this.pushToGallery({\r\n imageLink,\r\n thumbnailLink,\r\n iframeSrc,\r\n iframeType\r\n })\r\n })\r\n }\r\n\r\n pushToGallery(item) {\r\n if (this.galleryItems.findIndex(i => i.imageLink === item.imageLink && !i.iframeSrc) === -1) {\r\n this.galleryItems.push(item)\r\n }\r\n }\r\n\r\n // Carousels\r\n carousels() {\r\n const initIndex = this.galleryItems.findIndex(i => i.imageLink === this.$trigger.getAttribute('href')) !== -1 ? this.galleryItems.findIndex(i => i.imageLink === this.$trigger.getAttribute('href')) : 0\r\n // Single carousel\r\n new Carousels.SlickCarousel(this.$galleryCarousel, {\r\n asNavFor: '.modal-thumbnail-carousel',\r\n lazyLoad: 'ondemand',\r\n infinite: false,\r\n initialSlide: initIndex,\r\n slidesToShow: 1,\r\n slidesToScroll: 1,\r\n focusOnSelect: false,\r\n dots: false\r\n }).init()\r\n\r\n // Thumbnail carousel\r\n new Carousels.SlickCarousel(this.$galleryCarouselThumb, {\r\n asNavFor: '.modal-single-carousel',\r\n lazyLoad: 'ondemand',\r\n //variableWidth: true,\r\n infinite: false,\r\n slidesToShow: 8,\r\n slideToScroll: 1,\r\n focusOnSelect: true,\r\n\r\n responsive: [\r\n {\r\n breakpoint: 1025,\r\n settings: {\r\n centerMode: false,\r\n slidesToShow: 7,\r\n infinite: false\r\n }\r\n },\r\n {\r\n breakpoint: 768,\r\n settings: {\r\n centerMode: false,\r\n slidesToShow: 4,\r\n infinite: false\r\n }\r\n },\r\n {\r\n breakpoint: 568,\r\n settings: {\r\n centerMode: false,\r\n slidesToShow: 3,\r\n infinite: false,\r\n centerPadding: '30px'\r\n }\r\n }\r\n ],\r\n dots: false\r\n }).init()\r\n\r\n const $slides = this.$galleryCarouselThumb.querySelectorAll('.modal-thumbnail-carousel__slide')\r\n\r\n $slides[initIndex].click() // For active slick thumbnail sync issue\r\n\r\n const $focusEle = this.$galleryCarousel.querySelector('.modal-single-carousel__slide')\r\n\r\n utilities.triggerFocus($focusEle)\r\n }\r\n\r\n // Grid calculations\r\n calculateGrid() {\r\n if (!this.$modal) return\r\n const $modalAction = this.$modal.querySelector('.modal__action')\r\n const $modalHeader = this.$modal.querySelector('.modal__header')\r\n const $modalContainer = this.$modal.querySelector('.modal__container')\r\n const $modalFooter = this.$modal.querySelector('.modal__footer')\r\n const $modalCarousel = this.$modal.querySelector('.modal-single-carousel')\r\n\r\n if (this.modalType == 'gallery') {\r\n const carouselHeight = window.innerHeight - ($modalAction.getBoundingClientRect().height +\r\n $modalHeader.getBoundingClientRect().height +\r\n $modalFooter.getBoundingClientRect().height\r\n )\r\n $modalCarousel.style.height = `${carouselHeight}px`\r\n }\r\n\r\n //this.$modal.style.width = `${window.innerWidth}px`\r\n }\r\n \r\n // Modal actions\r\n modalOpen() {\r\n if(!this.$modal) return \r\n this.active = true\r\n this.updateHtml()\r\n utilities.toggleWindowScroll(false)\r\n this.mainTl.play()\r\n this.mainTl.eventCallback('onComplete', () => {\r\n this.$modal.classList.remove('modal--tweening')\r\n })\r\n }\r\n\r\n modalClose() {\r\n if(!this.$modal) return\r\n this.active = false\r\n this.$modal.classList.add('modal--tweening')\r\n this.mainTl.reverse()\r\n this.mainTl.eventCallback('onReverseComplete', () => {\r\n this.updateHtml()\r\n utilities.toggleWindowScroll(true)\r\n if(this.modalType === 'gallery') this._clearModal()\r\n })\r\n }\r\n\r\n updateHtml() {\r\n if (this.active) {\r\n this.$modal.classList.add('modal--tweening')\r\n document.body.classList.add('modal-open')\r\n return\r\n }\r\n\r\n this.$modal.classList.remove('modal--tweening')\r\n document.body.classList.remove('modal-open')\r\n }\r\n\r\n addModalActions() {\r\n const $closeModal = this.$modal.querySelector('.modal__action-close')\r\n $closeModal.addEventListener('click', () => this.modalClose())\r\n }\r\n\r\n\r\n // Event Handlers\r\n handleTriggerClick(e) {\r\n e.preventDefault()\r\n if(this.modalType === 'gallery') this._createModal()\r\n this.modalOpen()\r\n }\r\n\r\n // Resize Func\r\n resizeFunc() {\r\n return utilities.debounce(() => {\r\n this.calculateGrid()\r\n //this.addUIAnimation() // ui animation rebuild causes it to close\r\n }, 250)\r\n }\r\n\r\n addListeners() {\r\n window.addEventListener('resize', this.resizeFunc())\r\n this.$trigger.addEventListener('click', (e) => this.handleTriggerClick(e))\r\n\r\n const $backdrop = this.$modal?.querySelector('.modal__backdrop')\r\n $backdrop?.addEventListener(\"click\", () => this.active && this.modalClose())\r\n }\r\n }\r\n\r\n const CLASS_MODAL_INLINE_PRE = \"modal-inline\"\r\n\r\n class ModalInline {\r\n constructor(container) {\r\n this.$modal = container\r\n this.$modalItems = this.$modal.querySelectorAll(`.${CLASS_MODAL_INLINE_PRE}__item:not([style*=\"display: none\"])`)\r\n this.$modalPanels = this.$modal.querySelectorAll(`.${CLASS_MODAL_INLINE_PRE}__item:not([style*=\"display: none\"]) > .${CLASS_MODAL_INLINE_PRE}__panel`)\r\n this.totalItemsPerRow = 3\r\n this.totalItems = this.$modalItems.length\r\n this.init()\r\n }\r\n\r\n init() {\r\n this.updateTotalItemsPerRow()\r\n this.updateItems()\r\n this.placeModalPanels()\r\n this._addEventListener()\r\n }\r\n\r\n resetAllPanels() {\r\n this.$modalItems.forEach(($item, i) => {\r\n if(this.$modalPanels[i]) $item.appendChild(this.$modalPanels[i])\r\n })\r\n }\r\n\r\n updateTotalItemsPerRow() {\r\n this.totalItemsPerRow = 1\r\n if(window.innerWidth > 575) this.totalItemsPerRow = 2 \r\n if(window.innerWidth > 1024) this.totalItemsPerRow = 3 \r\n }\r\n\r\n updateItems() {\r\n this.$modalItems = this.$modal.querySelectorAll(`.${CLASS_MODAL_INLINE_PRE}__item:not([style*=\"display: none\"])`)\r\n this.$modalPanels = this.$modal.querySelectorAll(`.${CLASS_MODAL_INLINE_PRE}__item:not([style*=\"display: none\"]) > .${CLASS_MODAL_INLINE_PRE}__panel`)\r\n this.totalItems = this.$modalItems.length\r\n }\r\n\r\n placeModalPanels() {\r\n let itemsPerRowOffset = this.totalItemsPerRow\r\n this.$modalItems.forEach(($item, i) => {\r\n const $panel = this.$modalPanels[i]\r\n if(i === itemsPerRowOffset) itemsPerRowOffset += this.totalItemsPerRow\r\n if (i <= itemsPerRowOffset - 1) {\r\n if ($panel) {\r\n (this.$modalItems[itemsPerRowOffset - 1]) ? \r\n $panel.appendAfter(this.$modalItems[itemsPerRowOffset - 1]) : \r\n $panel.appendAfter(this.$modalItems[this.totalItems - 1])\r\n } \r\n return\r\n } \r\n \r\n })\r\n }\r\n\r\n // CAllbacks\r\n onPanelUpdate(e) {\r\n const $item = e.target.closest(`.${CLASS_MODAL_INLINE_PRE}__item`)\r\n e.detail.isActive() ? $item.classList.add(`${CLASS_MODAL_INLINE_PRE}__item--active`) : $item.classList.remove(`${CLASS_MODAL_INLINE_PRE}__item--active`)\r\n\r\n\r\n }\r\n\r\n onFilter() {\r\n this.resetAllPanels()\r\n this.updateItems()\r\n this.placeModalPanels()\r\n }\r\n\r\n // Resize func\r\n resizeFunc() {\r\n return utilities.debounce(() => {\r\n this.updateTotalItemsPerRow()\r\n this.placeModalPanels()\r\n }, 250)\r\n }\r\n\r\n _addEventListener() {\r\n this.$modalItems.forEach($item => {\r\n $item.addEventListener('panelOpen', (e) => this.onPanelUpdate(e))\r\n $item.addEventListener('panelClose', (e) => this.onPanelUpdate(e))\r\n })\r\n\r\n this.$modal.addEventListener('UIFilterUpdated', (e) => this.onFilter(e))\r\n\r\n window.addEventListener('resize', this.resizeFunc())\r\n }\r\n }\r\n\r\n\r\n\r\n return {\r\n Modal,\r\n ModalInline\r\n }\r\n})()","export default () => {\n return `
\n
\n
\n
\n
\n Close\n \n \n \n
\n
\n
\n
\n
\n
\n
\n \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}","import { gsap } from \"gsap\"\r\nimport { Flip } from \"gsap/Flip\"\r\nimport { refreshAllControllers } from \"@/scripts/common/api/scrolltrigger.services\"\r\nimport { LazyLoad } from '@/scripts/lazyload/Lazyload'\r\ngsap.registerPlugin(Flip)\r\n\r\nconst CLASS_FILTER_PRE = 'ui-filter'\r\nexport const UIFilter = (function () {\r\n class Filter {\r\n constructor(container) {\r\n this.$filterContainer = container\r\n this.$filterOptions = this.$filterContainer.querySelector(`.${CLASS_FILTER_PRE}__options`)\r\n this.$filterPanel = this.$filterContainer.querySelector(`.${CLASS_FILTER_PRE}__panel`)\r\n this.$filterPanelCols = this.$filterContainer.querySelectorAll(`.${CLASS_FILTER_PRE}-grid__panel-col`)\r\n this.$filterItems = gsap.utils.toArray(this.$filterPanel.querySelectorAll(`.${CLASS_FILTER_PRE}__panel-item`))\r\n this.$filterAllBtn = this.$filterContainer.querySelector(`.${CLASS_FILTER_PRE}__all-btn`)\r\n this.$filterCarousel = this.$filterContainer.querySelector(`.card-carousel__list`)\r\n this.flipItemsState = null\r\n this.flipPanelState = null\r\n this.filterValues = []\r\n this.events = []\r\n this.carouselList = !!this.$filterContainer.dataset.filterCarousel\r\n\r\n this.options = {\r\n noItemMessage: 'We are sorry. No result were found for the selected filters(s)'\r\n }\r\n }\r\n\r\n init() {\r\n this.eventBuilder()\r\n this.updateValue()\r\n this.updateUI()\r\n this.addListeners()\r\n }\r\n\r\n updateValue() {\r\n this.filterValues = []\r\n const $checkedInputs = this.$filterOptions.querySelectorAll('input:checked')\r\n const $dropdowns = this.$filterOptions.querySelectorAll('.dropdown')\r\n $checkedInputs.forEach($inp => this.filterValues.push($inp.value))\r\n $dropdowns.forEach($dd => $dd.value ? this.filterValues.push($dd.value) : this.filterValues.push('all'))\r\n }\r\n\r\n updateUI() {\r\n this.getFlipStates()\r\n this.toggleClasses()\r\n this.filteringItems()\r\n this.noItemsUpdate()\r\n this.flipAnimate()\r\n\r\n }\r\n\r\n updateClassPanelCols() {\r\n let totalItemsArr = []\r\n this.$filterPanelCols.forEach(($col) => {\r\n $col.classList.remove(`${CLASS_FILTER_PRE}-grid__panel-col--larger`)\r\n const $items = $col.querySelectorAll(`.${CLASS_FILTER_PRE}__panel-item:not([style*=\"display: none\"]):not(.${CLASS_FILTER_PRE}__panel-item--hidden)`)\r\n totalItemsArr.push($items.length)\r\n })\r\n this.$filterPanelCols[totalItemsArr.indexOf(Math.max(...totalItemsArr))].classList.add(`${CLASS_FILTER_PRE}-grid__panel-col--larger`)\r\n }\r\n\r\n toggleClasses() {\r\n const $filterOptionItems = this.$filterOptions.querySelectorAll(`.${CLASS_FILTER_PRE}__options-item`)\r\n\r\n $filterOptionItems.forEach($opt => {\r\n $opt.classList.remove(`${CLASS_FILTER_PRE}__options-item--active`)\r\n const $input = $opt.querySelector('input')\r\n if ($input)\r\n if (this.filterValues.findIndex(val => val === $input.value) !== -1) $opt.classList.add(`${CLASS_FILTER_PRE}__options-item--active`)\r\n })\r\n }\r\n\r\n filteringItems() {\r\n\r\n this.$filterItems.forEach($item => {\r\n // this.filterValues.findIndex(val => {\r\n // $item.dataset.group.match(val)\r\n // })\r\n if(this.filterValues.findIndex(val => this.filterMatch($item.dataset.group, val) || val === 'all') === -1) {\r\n $item.style.display = 'none'\r\n $item.classList.add(`${CLASS_FILTER_PRE}__panel-item--hidden`)\r\n return\r\n }\r\n $item.style.display = 'flex'\r\n $item.classList.remove(`${CLASS_FILTER_PRE}__panel-item--hidden`)\r\n })\r\n\r\n \r\n }\r\n\r\n filterMatch(group, val) {\r\n const groups = group.split(',').map(item => item.trim())\r\n //return groups.indexOf(val) !== -1\r\n return groups.includes(val)\r\n }\r\n\r\n // FLIP\r\n getFlipStates() {\r\n this.flipItemState = Flip.getState(this.$filterItems)\r\n this.flipPanelState = Flip.getState(this.$filterPanel)\r\n }\r\n\r\n flipAnimate() {\r\n const tl = gsap.timeline({\r\n onStart: () => this.$filterContainer.dispatchEvent(this.events['UIFilterStart']),\r\n onComplete: () => {\r\n refreshAllControllers()\r\n this.$filterContainer.dispatchEvent(this.events['UIFilterUpdated'])\r\n }\r\n })\r\n tl.add(Flip.from(this.flipItemState, {\r\n duration: 0.4,\r\n scale: false,\r\n ease: \"power2.inOut\",\r\n toggleClass: `${CLASS_FILTER_PRE}__panel-item--is-flipping`,\r\n stagger: 0,\r\n absolute: false,\r\n onEnter: elements => gsap.fromTo(elements, { opacity: 0, scale: 1 }, { opacity: 1, scale: 1, duration: 0.4 }),\r\n onLeave: elements => gsap.fromTo(elements, { opacity: 1, scale: 1 }, { opacity: 0, scale: 0, duration: 0.4 })\r\n }), 0)\r\n .add(Flip.from(this.flipPanelState, {\r\n duration: 0.4,\r\n scale: false,\r\n ease: \"power2.inOut\",\r\n toggleClass: `${CLASS_FILTER_PRE}__panel--is-flipping`,\r\n absolute: false,\r\n nested: true\r\n }), 0)\r\n\r\n }\r\n\r\n // On update callbacks\r\n onFilterUpdate() {\r\n if (this.$filterPanelCols.length) this.updateClassPanelCols()\r\n }\r\n\r\n // Event creator\r\n\r\n eventBuilder() {\r\n this.events['UIFilterStart'] = new CustomEvent('UIFilterStart', {\r\n bubbles: true\r\n })\r\n\r\n this.events['UIFilterUpdated'] = new CustomEvent('UIFilterUpdated', {\r\n bubbles: true\r\n })\r\n }\r\n\r\n // Empty check\r\n noItemsUpdate() {\r\n const selectedItems = this.$filterItems.find($item => !$item.classList.contains(`${CLASS_FILTER_PRE}__panel-item--hidden`)) !== undefined\r\n const infoDiv = this.$filterPanel.querySelector(`.${CLASS_FILTER_PRE}__panel-info`)\r\n if(infoDiv) infoDiv.remove()\r\n \r\n if(!selectedItems) {\r\n const infoDiv = document.createElement('div')\r\n infoDiv.classList.add(`${CLASS_FILTER_PRE}__panel-info`)\r\n infoDiv.innerHTML = `

${this.options.noItemMessage}

`\r\n this.$filterPanel.prepend(infoDiv)\r\n return\r\n }\r\n }\r\n\r\n // Handlers\r\n inputHandler() {\r\n this.updateValue()\r\n this.updateUI()\r\n }\r\n\r\n defaultDropdowns(e) {\r\n e.preventDefault()\r\n const $dropdowns = this.$filterOptions.querySelectorAll('.dropdown')\r\n $dropdowns.forEach($dd => {\r\n $dd.setValue('')\r\n })\r\n }\r\n\r\n addListeners() {\r\n const $inputs = this.$filterOptions.querySelectorAll('input')\r\n const $dropdowns = this.$filterOptions.querySelectorAll('.dropdown')\r\n\r\n $inputs.forEach($inp => $inp.addEventListener('change', () => this.inputHandler()))\r\n $dropdowns.forEach($dd => $dd.addEventListener('select', () => this.inputHandler()))\r\n\r\n this.$filterContainer.addEventListener('UIFilterUpdated', () => this.onFilterUpdate())\r\n\r\n this.$filterAllBtn?.addEventListener('click', (e) => this.defaultDropdowns(e))\r\n }\r\n }\r\n\r\n class FilterSelection extends Filter {\r\n constructor(container) {\r\n super(container)\r\n\r\n this.filterValues = this.$filterContainer.dataset.filters ?\r\n this.$filterContainer.dataset.filters.split(',').map(f => {\r\n return {\r\n name: f.trim(),\r\n value: []\r\n }\r\n }) : []\r\n }\r\n\r\n init() {\r\n this.eventBuilder()\r\n this.updateValue()\r\n this.updateUI()\r\n this.addListeners()\r\n }\r\n\r\n updateUI() {\r\n if(this.carouselList) {\r\n this.filteringCarousel()\r\n return\r\n }\r\n this.getFlipStates()\r\n this.filteringItems()\r\n this.noItemsUpdate()\r\n this.flipAnimate()\r\n }\r\n\r\n // Values and filtering\r\n updateValue() {\r\n const $dropdowns = gsap.utils.toArray(this.$filterOptions.querySelectorAll('.dropdown'))\r\n this.filterValues.forEach(v => {\r\n const $dd = $dropdowns[$dropdowns.findIndex($dd => $dd.classList.contains(`dropdown--filter-${v.name}`))]\r\n v.value = []\r\n v.value.push($dd.value || 'all')\r\n })\r\n }\r\n\r\n filteringCarousel() {\r\n const filterSelector = `${this.filterValues.map((val) => `[data-${val.name}${val.value[0] === 'all' ? '' : `=\"${val.value[0]}\"`}]`).join('')}`\r\n \r\n $(this.$filterCarousel).slick('slickUnfilter')\r\n $(this.$filterCarousel).slick('slickFilter',filterSelector)\r\n\r\n const $lazyload = this.$filterCarousel.querySelectorAll('.lazyload')\r\n $lazyload.forEach($bg => {\r\n if(!$bg.classList.contains('bg-img--loaded')) new LazyLoad($bg)\r\n })\r\n }\r\n\r\n filteringItems() {\r\n \r\n this.$filterItems.forEach($item => {\r\n let activeCond = []\r\n this.filterValues.forEach(fv => {\r\n const filterName = fv.name\r\n const filterValue = fv.value\r\n \r\n activeCond.push(filterValue.findIndex(val => this.filterMatch($item.dataset[filterName], val) || val === 'all') === -1 ? false : true)\r\n })\r\n\r\n if(!activeCond.every(cond => cond)) {\r\n $item.style.display = 'none'\r\n $item.classList.add(`${CLASS_FILTER_PRE}__panel-item--hidden`)\r\n return\r\n }\r\n\r\n $item.style.display = 'flex'\r\n $item.classList.remove(`${CLASS_FILTER_PRE}__panel-item--hidden`)\r\n \r\n })\r\n }\r\n\r\n // Callbacks\r\n inputHandler() {\r\n this.updateValue()\r\n this.updateUI()\r\n }\r\n }\r\n\r\n return {\r\n Filter,\r\n FilterSelection\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.$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"],"sourceRoot":""}