{"version":3,"sources":["webpack:///./scripts/carousels/SlickCarousel.js","webpack:///./scripts/modal/Modal.js","webpack:///./scripts/modal/templates/modal.template.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","CustomEase","CustomWiggle","CLASS_MODAL_INLINE_PRE","ModalController","Modal","trigger","$trigger","$targetHTML","target","$modal","$galleryCarousel","$galleryCarouselThumb","modalType","modalAnimType","modalDisplay","galleryGroup","modalGroup","galleryGroupTitle","modalGroupTitle","modalTitle","mainTl","galleryItems","active","init","_createModal","addListeners","kill","$modalInner","clearProps","fromTopAnim","slidePageAnim","tl","paused","width","to","from","autoAlpha","xPercent","$modalContainer","display","yPercent","modalDirection","$modalContent","wiggles","type","remove","existingModal","calculateGrid","addUIAnimation","addModalActions","_clearModal","$backdrop","prepend","collectGallery","_createModalHeader","_createGalleryCarousel","_createGalleryThumbnailCarousel","body","carousels","_createModalFooter","_createModalBody","setAttribute","$modalHeader","$targetHeader","$title","$grpTitle","headerModifiers","split","map","val","trim","mod","$modalFooter","$targetFooter","footerModifiers","$modalBody","bodyModifiers","modifiers","item","$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","getBoundingClientRect","height","style","updateHtml","play","eventCallback","modalClose","e","preventDefault","modalOpen","handleTriggerClick","ModalInline","$modalItems","$modalPanels","totalItemsPerRow","totalItems","updateTotalItemsPerRow","updateItems","placeModalPanels","_addEventListener","itemsPerRowOffset","$panel","appendAfter","closest","detail","isActive","resetAllPanels","onPanelUpdate","onFilter","YoutubeApi","YtPlayer","player","videoPlayer","videoID","videoId","playerReady","events","_init","undefined","YT","LoadYtScript","loadScript","createEvents","callApi","CustomEvent","bubbles","getValue","createPlayer","dispatchEvent","Promise","resolve","reject","Player","playerVars","onPlayerReady","onPlayerStateChange","playing","getPlayerState","playVideo","pauseVideo","stopVideo","EventTarget","scriptTag","prototype","Math","round","random","src","append","setTimeout","VimeoApi","autoplay","background","addPlayerListeners","VimeoPlayer","playsinline","controls","id","byline","loop","ready","pause","stop","dur","setCurrentTime","ScrollTrigger","VideoBanner","$videoContainer","$videoNative","$videoIframe","$videoPlayer","$videoControls","$videoPlayBtn","$articleElems","videoPlaying","controlRevealTimeoutFunc","controlRevealTime","scrollController","scrollOptions","start","onToggle","self","makePlayer","makeAnim","command","contentWindow","postMessage","stringify","ytLoader","makeIframeFit","addingListener","vmLoader","scale","stagger","updateUI","toggleVideo","updatePlay"],"mappings":"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","file":"js/876.deb65a42c319b106c79a.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\"\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}","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":""}