{"version":3,"sources":["core/@http.js","core/@intersectViewport.js","core/@outlineAccessibility.js","core/@preloader.js","core/@scrollToElement.js","core/@urlExternalSafe.js","core/@windowHeight.js","helpers/@videoHelper.js","site/LoadNews.js","site/filterGallery.js","site/filterProductions.js","site/intro-video.js","site/modalVideo.js","site/nav.js","site/newsHighlights.js","site/numbers.js","site/sessionStorageTabs.js","site/sliderCardRows.js","site/sliderGrid.js","site/sliderHero.js","site/sliderModal.js","site/sliderThumbs.js","site/sticky.js"],"names":[],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AC9CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;ACdA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;ACfA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AClCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AC9DA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;ACfA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AC/BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;ACpHA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;ACnDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AC/FA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;ACjJA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;ACzDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AC3EA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AC5BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AC5BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;ACrCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;ACjBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;ACvCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;ACrKA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AC9BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;ACvIA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AC5DA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA","file":"app.js","sourcesContent":["/*eslint-disable no-unused-vars*/\nconst http = {\n\tasync fxGet(endpoint, callback) {\n\t\ttry {\n\t\t\tconst response = await fetch(endpoint),\n\t\t\t\tdata = await response.json()\n\n\t\t\tcallback(response, data)\n\t\t}\n\t\tcatch (error) {\n\t\t\tconsole.error(error)\n\t\t}\n\t},\n\n\tasync fxPost(endpoint, formData, callback) {\n\t\ttry {\n\t\t\tconst response = await fetch(endpoint, {\n\t\t\t\tmethod: 'POST',\n\t\t\t\tbody: JSON.stringify(formData),\n\t\t\t\theaders: {\n\t\t\t\t\t'Content-type': 'application/json'\n\t\t\t\t}\n\t\t\t})\n\n\t\t\tconst data = await response.json()\n\t\t\tcallback(response, data)\n\t\t}\n\t\tcatch (error) {\n\t\t\tconsole.error(error)\n\t\t}\n\t},\n\n\tasync fxUploadFile(endpoint, formData, callback) {\n\t\ttry {\n\t\t\tconst response = await fetch(endpoint, {\n\t\t\t\tmethod: 'POST',\n\t\t\t\tbody: formData\n\t\t\t})\n\n\t\t\tconst data = await response.json()\n\t\t\tcallback(response, data)\n\t\t}\n\t\tcatch (error) {\n\t\t\tconsole.error(error)\n\t\t}\n\t}\n}","/*eslint-disable no-unused-vars*/\nconst intersectViewport = {\n\n\tfxCheckInViewport(element, callback, threshold = 0.5) {\n\n\t\tconst observer = new IntersectionObserver(callback, { threshold: threshold })\n\n\t\tif (element instanceof Element) \n\t\t\tobserver.observe(element)\n\t\t\n\t\telse \n\t\t\tfor (const el of element)\n\t\t\t\tobserver.observe(el)\n\t}\n}","const a11y = {\n\tel: {\n\t\thtml: document.documentElement\n\t},\n\n\tfxAddA11yClass() {\n\t\tdocument.addEventListener('keydown', e => e.key === 'Tab' && this.el.html.classList.add('a11y'))\n\t\tdocument.addEventListener('click', () => this.el.html.classList.contains('a11y') && this.el.html.classList.remove('a11y'))\n\t},\n\n\tinit() {\n\t\tthis.fxAddA11yClass()\n\t}\n}\n\na11y.init()","/*eslint-disable no-unused-vars*/\nconst preloader = {\n\n\tfxEnableButton(el) {\n\t\tel.classList.contains('js-preloader-file') ? el.style.pointerEvents = 'auto' : el.removeAttribute('disabled')\n\t},\n\n\tfxDisableButton(el) {\n\t\tel.classList.contains('js-preloader-file') ? el.style.pointerEvents = 'none' : el.setAttribute('disabled', true)\n\t},\n\n\tfxCreateSpinner(el) {\n\t\tconst spinner = document.createElement('div')\n\t\tspinner.classList.add('btn--loading-spinner')\n\t\tel.appendChild(spinner)\n\t},\n\n\tfxRemoveSpinner(el) {\n\t\tel.querySelector('.btn--loading-spinner').remove()\n\t},\n\n\tfxPreloaderAdd(el) {\n\t\tconst button = el.classList.contains('js-preloader-file') ? el : el.querySelector('.js-preloader')\n\t\tbutton.classList.add('btn--loading')\n\t\tthis.fxDisableButton(button)\n\t\tthis.fxCreateSpinner(button)\n\t},\n\n\tfxPreloaderRemove(el) {\n\t\tconst button = el.classList.contains('js-preloader-file') ? el : el.querySelector('.js-preloader')\n\t\tbutton.classList.remove('btn--loading')\n\t\tthis.fxEnableButton(button)\n\t\tthis.fxRemoveSpinner(button)\n\t}\n}","const scrollToElement = {\n\tel: {\n\t\tbtnScroll: document.querySelectorAll('.js-scrollto'),\n\t\theader: document.querySelector('.header')\n\t},\n\n\t// polyfilled smooth scrolling for Edge & Safari\n\tfxSmoothScrollToPolyfill(to, duration) {\n\t\tconst element = document.scrollingElement || document.documentElement,\n\t\t\tstart = element.scrollTop,\n\t\t\tchange = to - start,\n\t\t\tstartDate = +new Date()\n\n\t\t// t = current time b = start value c = change in value d = duration\n\t\tconst easeInOutQuad = (t, b, c, d) => {\n\t\t\tt /= d / 2\n\t\t\tif (t < 1) return c / 2 * t * t + b\n\t\t\tt--\n\t\t\treturn -c / 2 * (t * (t - 2) - 1) + b\n\t\t}\n\n\t\tconst animateScroll = () => {\n\t\t\tconst currentDate = +new Date(),\n\t\t\t\tcurrentTime = currentDate - startDate\n\n\t\t\telement.scrollTop = parseInt(easeInOutQuad(currentTime, start, change, duration))\n\t\t\tcurrentTime < duration ? requestAnimationFrame(animateScroll) : element.scrollTop = to\n\n\t\t}\n\t\tanimateScroll()\n\t},\n\n\tfxScrollTo(e) {\n\t\te.preventDefault()\n\t\tconst buttonScrollTo = e.currentTarget,\n\t\t\ttarget = document.getElementById(buttonScrollTo.dataset.scroll),\n\t\t\theaderHeight = this.el.header.offsetHeight,\n\t\t\tsupportsNativeSmoothScroll = 'scrollBehavior' in document.documentElement.style\n\n\t\tif (target) {\n\t\t\tif (supportsNativeSmoothScroll)\n\t\t\t\twindow.scroll({\n\t\t\t\t\tbehavior: 'smooth',\n\t\t\t\t\ttop: target.offsetTop - (this.el.header ? headerHeight : 0),\n\t\t\t\t\tleft: 0\n\t\t\t\t})\n\n\t\t\telse\n\t\t\t\tthis.fxSmoothScrollToPolyfill(target.offsetTop - (this.el.header ? headerHeight : 0), 1000)\n\t\t}\n\t},\n\n\tevents() {\n\t\tfor (const button of this.el.btnScroll)\n\t\t\tbutton.addEventListener('click', e => this.fxScrollTo(e))\n\t},\n\n\tinit() {\n\t\tthis.events()\n\t}\n}\n\nscrollToElement.init()","const url = {\n\tel: {\n\t\tlinkToNewTab: document.querySelectorAll('a[target=\"_blank\"]')\n\t},\n\n\tfxFixUrlExternal() {\n\t\tfor (const link of this.el.linkToNewTab)\n\t\t\tlink.setAttribute('rel', 'noopener noreferrer')\n\t},\n\n\tinit() {\n\t\tthis.fxFixUrlExternal()\n\t}\n}\n\nurl.init()","const windowHeight = {\n\n\tvars: {\n\t\tticking: false\n\t},\n\n\tfxGetWindowHeight() {\n\t\tdocument.documentElement.style.setProperty('--app-height', `${window.innerHeight}px`)\n\t},\n\n\tfxThrottleResize() {\n\t\tif (!this.vars.ticking) {\n\t\t\twindow.requestAnimationFrame(() => {\n\t\t\t\tthis.fxGetWindowHeight()\n\t\t\t\tthis.vars.ticking = false\n\t\t\t})\n\n\t\t\tthis.vars.ticking = true\n\t\t}\n\t},\n\n\tevents() {\n\t\twindow.addEventListener('resize', () => this.fxThrottleResize())\n\t},\n\n\tinit() {\n\t\tthis.events()\n\t\tthis.fxGetWindowHeight()\n\t}\n}\n\nwindowHeight.init()","const video = {\n\tel: {\n\t\tvideoContainer: document.querySelectorAll('.js-video')\n\t},\n\n\tfxTabSwitch(videoPlayer) {\n\t\tlet inTab = true\n\n\t\tdocument.addEventListener('visibilitychange', () => {\n\t\t\tinTab = !inTab\n\t\t\tinTab && videoPlayer.parentElement.classList.contains('video-is-playing') ? videoPlayer.play() : videoPlayer.pause()\n\t\t})\n\t},\n\n\tfxTimeUpdateVideo(videoPlayer) {\n\t\tif (videoPlayer.parentElement.classList.contains('video-is-playing')) {\n\n\t\t\tvideoPlayer.addEventListener('timeupdate', e => {\n\t\t\t\tconst target = e.currentTarget,\n\t\t\t\t\tpercentage = Math.round(target.currentTime / target.duration * 100)\n\n\t\t\t\tif (target.currentTime || target.duration) {\n\t\t\t\t\ttarget.parentElement.querySelector('.js-video-seekbar').value = percentage\n\t\t\t\t}\n\t\t\t})\n\t\t}\n\t},\n\n\tfxFetchVideo (video) {\n\t\tfetch(video.querySelector('source').src)\n\t\t\t.then(response => {\n\t\t\t\tresponse.blob()\n\t\t\t})\n\t\t\t.then(blob => {\n\t\t\t\tvideo.srcObject = blob\n\t\t\t\treturn video.pause()\n\t\t\t})\n\t\t\t.catch(error => {\n\t\t\t\tconsole.log(error)\n\t\t\t})\n\t},\n\n\tfxTogglePlayVideo(elementsToPlay, videoPlayer) {\n\t\tfor (const buttonPlay of elementsToPlay) {\n\t\t\tbuttonPlay.addEventListener('click', () => {\n\t\t\t\tvideoPlayer.parentElement.classList.toggle('video-is-playing')\n\t\t\t\tvideoPlayer.parentElement.parentElement.classList.contains('video-jumbotron') && videoPlayer.parentElement.parentElement.classList.toggle('video-jumbotron--no-height')\n\n\t\t\t\tif (videoPlayer.parentElement.classList.contains('video-is-fullscreen')) return\n\t\t\t\tvideoPlayer.paused ? videoPlayer.play() : videoPlayer.pause()\n\n\t\t\t\tthis.fxTimeUpdateVideo(videoPlayer)\n\t\t\t})\n\t\t}\n\t},\n\n\tfxToggleSoundVideo(soundButton, videoPlayer) {\n\t\tsoundButton.addEventListener('click', e => {\n\t\t\te.currentTarget.classList.toggle('video-has-sound')\n\t\t\tvideoPlayer.muted = !videoPlayer.muted\n\t\t})\n\t},\n\n\tfxProgressVideo(progressBar, videoPlayer) {\n\t\tprogressBar.addEventListener('click', e => {\n\t\t\tconst percentage = (e.pageX - e.currentTarget.getBoundingClientRect().left) / e.currentTarget.clientWidth,\n\t\t\t\ttime = videoPlayer.duration * percentage\n\n\t\t\tvideoPlayer.currentTime = time\n\t\t})\n\t},\n\n\tfxActionsOnEndVideo(videoPlayer) {\n\t\tvideoPlayer.addEventListener('ended', () => {\n\t\t\tvideoPlayer.parentElement.classList.remove('video-is-playing')\n\t\t\tvideoPlayer.currentTime = 0\n\t\t\tvideoPlayer.load()\n\t\t})\n\t},\n\n\tfxSetFullScreenVideo(button, videoPlayer) {\n\t\tif(!videoPlayer.requestFullscreen || !videoPlayer.webkitRequestFullscreen) \n\t\t\tbutton.style.display = 'none'\n\t\t\t\n\t\tbutton.addEventListener('click', () => videoPlayer.requestFullscreen && videoPlayer.requestFullscreen() || videoPlayer.webkitRequestFullscreen && videoPlayer.webkitRequestFullscreen())\n\t\tvideoPlayer.addEventListener('fullscreenchange', e => e.currentTarget.parentElement.classList.toggle('video-is-fullscreen'))\n\t},\n\n\tevents() {\n\t\tfor (const videoContainer of this.el.videoContainer) {\n\t\t\tconst isModal = videoContainer.parentElement.classList.contains('modal-video__container') && true,\n\t\t\t\tplayButton = videoContainer.querySelectorAll('.js-video-play'),\n\t\t\t\tsoundButton = videoContainer.querySelector('.js-video-sound'),\n\t\t\t\tfullScreenButton = videoContainer.querySelector('.js-video-fullscreen'),\n\t\t\t\tprogressBar = videoContainer.querySelector('.js-video-seekbar'),\n\t\t\t\tvideoPlayer = videoContainer.querySelector('video')\n\n\t\t\tif(!isModal) {\n\t\t\t\tvideoPlayer.load()\n\t\t\t\tthis.fxFetchVideo(videoPlayer)\n\t\t\t}\n\t\t\n\t\t\tthis.fxTogglePlayVideo(playButton, videoPlayer)\n\t\t\tthis.fxToggleSoundVideo(soundButton, videoPlayer)\n\t\t\tthis.fxSetFullScreenVideo(fullScreenButton, videoPlayer)\n\t\t\tthis.fxProgressVideo(progressBar, videoPlayer)\n\t\t\tthis.fxTabSwitch(videoPlayer)\n\t\t\tthis.fxActionsOnEndVideo(videoPlayer)\n\t\t}\n\t},\n\n\tinit() {\n\t\tthis.events()\n\t}\n}\n\nvideo.init()","/*global intersectViewport*/\nconst filterNews = {\n\tel: {\n\t\tcontainer: document.querySelector('.card-images__grid'),\n\t\tboxes: document.querySelectorAll('.card-images__box')\n\t},\n\n\tvars: {\n\t\tnumberOfItemsLoaded: 9,\n\t\tnumberOfItemsToShow: 9\n\t},\n\n\tfxLoadCardsOnInit() {\n\t\tconst cardItems = [...this.el.container.children]\n\n\t\tfor (const card of cardItems)\n\t\t\tcard.classList.add('is-hidden')\n\n\t\tfor (const card of cardItems.slice(0, this.vars.numberOfItemsLoaded))\n\t\t\tcard.classList.remove('is-hidden')\n\n\t},\n\n\tfxLoadCardsOnScroll() {\n\t\tconst callback = entries => {\n\t\t\tfor (const entry of entries) {\n\t\t\t\tconst el = entry.target\n\t\t\t\tif (entry.isIntersecting && !el.classList.contains('is-visible')) {\n\t\t\t\t\tsetTimeout(() => {\n\t\t\t\t\t\tel.classList.remove('is-hidden')\n\t\t\t\t\t\tel.classList.add('is-visible')\n\t\t\t\t\t}, 500)\n\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tintersectViewport.fxCheckInViewport(this.el.boxes, callback, 1)\n\t},\n\n\tevents() {\n\t\twindow.addEventListener('load', () => window.scrollTo({ top: 0, behavior: 'smooth' }))\n\t},\n\n\tinit() {\n\t\tif (this.el.container) {\n\t\t\tthis.events()\n\t\t\tthis.fxLoadCardsOnInit()\n\t\t\tthis.fxLoadCardsOnScroll()\n\t\t}\n\t}\n}\nfilterNews.init()","const filterGallery = {\n\tel: {\n\t\tcontainerPlaceholder: document.querySelector('.js-slider-placeholder'),\n\t\tcontainerThumbs: document.querySelector('.js-slider-thumbs'),\n\t\tcategories: document.querySelectorAll('.js-filter-gallery')\n\t},\n\n\tvars: {\n\t\tplaceholderItems: document.querySelector('.js-slider-placeholder') && document.querySelector('.js-slider-placeholder').querySelectorAll('.swiper-slide'),\n\t\tthumbsItems: document.querySelector('.js-slider-thumbs') && document.querySelector('.js-slider-thumbs').querySelectorAll('.swiper-slide')\n\t},\n\n\tfxToggleActiveCategory(element) {\n\t\tfor (const item of this.el.categories)\n\t\t\titem.classList.remove('is-active')\n\n\t\telement.classList.add('is-active')\n\t},\n\n\tfxToggleSlides(slider, element) {\n\n\t\tconst sliderItems = slider === this.el.containerPlaceholder ? this.vars.placeholderItems : this.vars.thumbsItems,\n\t\t\tswiper = slider.swiper,\n\t\t\tisOnlyOneSlide = slider.querySelectorAll('.filtered').length === 1,\n\t\t\tfilteredItems = [...sliderItems].filter(slide => element.dataset.id === slide.dataset.id).map(slide => slide)\n\n\t\tthis.el.containerPlaceholder.parentElement.querySelector('.slider__nav').style.display = isOnlyOneSlide ? 'none' : 'flex'\n\n\t\tswiper.prependSlide(sliderItems)\n\n\t\tfor (const slide of sliderItems)\n\t\t\tslide.remove()\n\n\t\t//-put slides in order on prepend\n\t\tswiper.prependSlide(filteredItems.reverse())\n\t\tswiper.update()\n\t\tswiper.slideTo(0)\n\t},\n\n\tfxShowAllSlides(slider) {\n\t\tconst sliderItems = slider === this.el.containerPlaceholder ? this.vars.placeholderItems : this.vars.thumbsItems,\n\t\t\tswiper = slider.swiper,\n\t\t\tisOnlyOneSlide = swiper.slides.length === 1\n\n\t\tthis.el.containerPlaceholder.parentElement.querySelector('.slider__nav').style.display = isOnlyOneSlide ? 'none' : 'flex'\n\n\t\tfor (const slide of sliderItems)\n\t\t\tslide.remove()\n\n\t\tswiper.appendSlide(sliderItems)\n\n\t\tswiper.update()\n\t\tswiper.slideTo(0)\n\t},\n\n\tfxFilterCategories(element) {\n\t\tconst showCategories = () => {\n\t\t\tthis.fxToggleSlides(this.el.containerPlaceholder, element)\n\t\t\tthis.fxToggleSlides(this.el.containerThumbs, element)\n\t\t}\n\n\t\tconst showAll = () => {\n\t\t\tthis.fxShowAllSlides(this.el.containerPlaceholder)\n\t\t\tthis.fxShowAllSlides(this.el.containerThumbs)\n\t\t}\n\n\t\tswitch (true) {\n\t\t\tcase element.classList.contains('js-filter-all'):\n\t\t\t\tshowAll()\n\t\t\t\tbreak\n\n\t\t\tdefault:\n\t\t\t\tshowCategories()\n\t\t\t\tbreak\n\t\t}\n\t},\n\n\tevents() {\n\t\tfor (const item of this.el.categories) {\n\t\t\titem.addEventListener('click', e => {\n\t\t\t\tthis.fxToggleActiveCategory(e.currentTarget)\n\t\t\t\tthis.fxFilterCategories(e.currentTarget)\n\t\t\t})\n\t\t}\n\t},\n\n\tinit() {\n\t\tthis.events()\n\t\t//NOTE: Added this because \"tab \"all\" was removed from the filter\n\t\tthis.el.categories[0] && window.addEventListener('load', () => {\n\t\t\tthis.fxToggleActiveCategory(this.el.categories[0])\n\t\t\tthis.fxFilterCategories(this.el.categories[0])\n\t\t})\n\t}\n}\nfilterGallery.init()","/*global intersectViewport*/\nconst filterProductions = {\n\tel: {\n\t\tcontainer: document.querySelector('.card-images__grid-gapless'),\n\t\tboxes: document.querySelectorAll('.card-images__box-gapless'),\n\t\tcategories: document.querySelectorAll('.js-filter-productions')\n\t},\n\n\tvars: {\n\t\tnumberOfItemsLoaded: 12,\n\t\tnumberOfItemsToShow: 12\n\t},\n\n\tfxToggleActiveCategory(element) {\n\t\tfor (const item of this.el.categories)\n\t\t\titem.classList.remove('is-active')\n\n\t\telement.classList.add('is-active')\n\t},\n\n\tfxLoadCardsOnInit() {\n\t\tconst cardItems = [...this.el.container.children]\n\n\t\tfor (const card of cardItems)\n\t\t\tcard.classList.add('is-hidden')\n\n\t\tfor (const card of cardItems.slice(0, this.vars.numberOfItemsLoaded))\n\t\t\tcard.classList.remove('is-hidden')\n\n\t},\n\n\tfxLoadCardsOnScroll() {\n\t\tconst callback = entries => {\n\t\t\tfor (const entry of entries) {\n\t\t\t\tconst el = entry.target\n\t\t\t\tif (entry.isIntersecting && !el.classList.contains('is-visible')) {\n\t\t\t\t\tsetTimeout(() => {\n\t\t\t\t\t\tel.classList.remove('is-hidden')\n\t\t\t\t\t\tel.classList.add('is-visible')\n\t\t\t\t\t}, 500)\n\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tintersectViewport.fxCheckInViewport(this.el.boxes, callback, 1)\n\t},\n\n\tfxFilterCategories(element) {\n\t\tconst cardItems = [...this.el.container.children]\n\t\tthis.vars.numberOfItemsToShow = this.vars.numberOfItemsToShow + this.vars.numberOfItemsLoaded\n\n\t\tconst showCategories = () => {\n\t\t\tfor (const card of cardItems) {\n\t\t\t\tcard.classList.remove('is-hidden', 'filtered', 'is-visible')\n\t\t\t\tconst conditionFilter = element.classList.contains('js-filter-prize') ? card.dataset.prize === 'true' : Number(element.dataset.id) === Number(card.dataset.id)\n\t\t\t\tconditionFilter ? card.classList.add('filtered') : card.classList.add('d-none')\n\t\t\t}\n\n\t\t\tconst cardsFiltered = [...this.el.container.querySelectorAll('.filtered')]\n\n\t\t\tfor (const card of cardsFiltered)\n\t\t\t\tcard.classList.add('d-none', 'is-hidden')\n\n\t\t\tfor (const card of cardsFiltered.slice(0, this.vars.numberOfItemsLoaded))\n\t\t\t\tcard.classList.remove('is-hidden')\n\n\t\t\tfor (const card of cardsFiltered.slice(0, this.vars.numberOfItemsToShow))\n\t\t\t\tcard.classList.remove('d-none')\n\n\t\t}\n\n\t\tconst showAll = () => {\n\t\t\tfor (const card of cardItems) {\n\t\t\t\tcard.classList.remove('filtered', 'd-none', 'is-visible')\n\t\t\t\tcard.classList.add('is-hidden')\n\t\t\t}\n\n\t\t\tfor (const card of cardItems.slice(0, this.vars.numberOfItemsLoaded))\n\t\t\t\tcard.classList.remove('is-hidden')\n\n\t\t}\n\n\t\tswitch (true) {\n\t\t\tcase element.classList.contains('js-filter-all'):\n\t\t\t\tshowAll()\n\t\t\t\tbreak\n\n\t\t\tdefault:\n\t\t\t\tshowCategories()\n\t\t\t\tbreak\n\t\t}\n\t},\n\n\tfxUpdateFilterCategories() {\n\t\t//-get tab value on session\n\t\tlet tabSelected = sessionStorage.getItem('tabFilterProductions') || undefined\n\n\t\tif(tabSelected === undefined) {\n\t\t\tthis.fxToggleActiveCategory(this.el.categories[0])\n\t\t\tthis.fxFilterCategories(this.el.categories[0])\n\t\t} else {\n\t\t\tfor (const item of this.el.categories) {\n\t\t\t\tif(item.textContent === tabSelected) {\n\t\t\t\t\tthis.fxToggleActiveCategory(item)\n\t\t\t\t\tthis.fxFilterCategories(item)\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t},\n\n\tevents() {\n\t\tfor (const item of this.el.categories) {\n\t\t\titem.addEventListener('click', e => {\n\t\t\t\tthis.fxToggleActiveCategory(e.currentTarget)\n\t\t\t\tthis.fxFilterCategories(e.currentTarget)\n\t\t\t\tsessionStorage.setItem('tabFilterProductions', e.currentTarget.textContent)\n\t\t\t})\n\t\t}\n\n\t\tconst callback = entries => {\n\t\t\tfor (const entry of entries) {\n\t\t\t\tconst el = entry.target\n\t\t\t\tif (entry.isIntersecting && !el.classList.contains('is-visible')) {\n\t\t\t\t\tsetTimeout(() => {\n\t\t\t\t\t\tel.classList.remove('is-hidden')\n\t\t\t\t\t\tel.classList.add('is-visible')\n\t\t\t\t\t}, 500)\n\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tintersectViewport.fxCheckInViewport(this.el.boxes, callback, 1)\n\n\t\twindow.addEventListener('load', () => window.scrollTo({ top: 0, behavior: 'smooth' }))\n\t},\n\n\tinit() {\n\t\tif (this.el.container && !this.el.container.classList.contains('card-images__grid-gapless--no-filter')) {\n\t\t\tthis.events()\n\t\t\tthis.fxLoadCardsOnInit()\n\t\t\tthis.fxLoadCardsOnScroll()\n\t\t\tthis.fxUpdateFilterCategories()\n\t\t}\n\t}\n}\nfilterProductions.init()","const introVideo = {\n\tel: {\n\t\tintroContainer: document.querySelector('.js-intro-video'),\n\t\tbtnCloseIntro: document.querySelector('.js-close-intro-video'),\n\t\tbody: document.body\n\t},\n\n\tfxCloseIntro () {\n\t\tconst videoContainer = this.el.introContainer.querySelector('.js-video'),\n\t\t\tvideoPlayer = videoContainer.querySelector('.video__player')\n\n\t\t!videoPlayer.paused && videoPlayer.parentElement.classList.remove('video-is-playing')\n\t\tdocument.fullscreenElement && document.exitFullscreen()\n\t\tvideoPlayer.pause()\n\t\tvideoPlayer.currentTime = 0\n\t\t\n\t\tthis.el.body.classList.remove('no-scroll-y')\n\t\tthis.el.introContainer.classList.add('close')\n\n\t\tthis.fxSetIntroVideoHasPlayedLocalstorage()\n\t},\n\n\tfxCheckIfIntroVideoPlayed () {\n\t\tif(localStorage.getItem('videoHasShown') !== null) {\n\t\t\tthis.el.body.classList.remove('no-scroll-y')\n\t\t\tthis.el.introContainer.classList.add('close')\n\t\t}\t\n\t},\n\n\tfxSetIntroVideoHasPlayedLocalstorage () {\n\t\tlocalStorage.setItem('videoHasShown', true)\n\t},\n\n\tevents () {\n\t\tthis.el.btnCloseIntro.addEventListener('click', () => {\n\t\t\tthis.fxCloseIntro()\n\t\t})\n\n\t\tconst videoPlayer = this.el.introContainer.querySelector('.video__player')\n\t\tvideoPlayer.addEventListener('ended', () => {\n\t\t\tthis.fxCloseIntro()\n\t\t})\n\n\t\tvideoPlayer.addEventListener('play', () => {\n\t\t\tthis.fxSetIntroVideoHasPlayedLocalstorage()\n\t\t})\n\n\t\tthis.fxCheckIfIntroVideoPlayed()\n\t},\n\n\tinit () {\n\t\tif(!this.el.introContainer) return\n\t\tthis.events()\n\t}\n}\n\nintroVideo.init()\n","/* global video */\nconst modalVideo = {\n\tel: {\n\t\tbtnOpenModal: document.querySelectorAll('.js-open-modal'),\n\t\tbtnCloseModal: document.querySelector('.js-close-modal-video'),\n\t\tmodalVideo:document.querySelector('.js-modal-video'),\n\t\tbody: document.body\n\t},\n\n\tfxOpenModalVideo (e) {\n\t\tconst type = e.dataset.type\t\t\n\n\t\t//-mp4 video\n\t\tif(type === 'video') {\n\t\t\tconst videoContainer = this.el.modalVideo.querySelector('.js-video'),\n\t\t\t\tvideoPlayer = videoContainer.querySelector('.video__player'),\n\t\t\t\tvideoSrc = videoContainer.querySelector('source')\n\n\t\t\tvideoPlayer.poster = `${e.dataset.poster}`\n\t\t\tvideoSrc.src = `${e.dataset.src}`\n\n\t\t\tvideoPlayer.load()\n\t\t\tvideo.fxFetchVideo(videoPlayer)\n\n\t\t} else {\n\t\t\t//-youtube video\n\t\t\tconst modalIframe = this.el.modalVideo.querySelector('.modal-video__iframe')\n\n\t\t\tmodalIframe.src = `https://www.youtube.com/embed/${e.dataset.ytId}`\n\t\t}\n\n\t\tthis.el.body.classList.add('no-scroll-y')\n\t\tthis.el.modalVideo.classList.add('open')\n\t\tthis.el.modalVideo.setAttribute('data-type', type)\n\t},\n\n\tfxCloseModalVideo () {\n\t\tconst type = this.el.modalVideo.dataset.type\n\t\tif(type === 'video') {\n\t\t\tconst videoContainer = this.el.modalVideo.querySelector('.js-video'),\n\t\t\t\tvideoPlayer = videoContainer.querySelector('.video__player'),\n\t\t\t\tvideoSrc = videoContainer.querySelector('source')\n\n\t\t\t!videoPlayer.paused && videoPlayer.parentElement.classList.remove('video-is-playing')\n\t\t\tvideoPlayer.pause()\n\t\t\tvideoPlayer.currentTime = 0\n\t\t\tvideoPlayer.removeAttribute('poster')\n\t\t\tvideoSrc.removeAttribute('src')\n\t\t} else {\n\t\t\tconst modalIframe = this.el.modalVideo.querySelector('.modal-video__iframe')\n\t\t\tmodalIframe.removeAttribute('src')\n\t\t}\n\t\t\n\t\tthis.el.body.classList.remove('no-scroll-y')\n\t\tthis.el.modalVideo.classList.remove('open')\n\t},\n\n\tevents () {\n\t\tfor(const btn of this.el.btnOpenModal) {\n\t\t\tbtn.addEventListener('click', e => {\n\t\t\t\tthis.fxOpenModalVideo(e.currentTarget)\n\t\t\t})\n\t\t}\n\n\t\tthis.el.btnCloseModal.addEventListener('click', () => {\n\t\t\tthis.fxCloseModalVideo()\n\t\t})\n\t},\n\n\tinit () {\n\t\tif(!this.el.modalVideo) return\n\t\tthis.events()\n\t}\n}\n\nmodalVideo.init()","const nav = {\n\tel: {\n\t\tbody: document.body,\n\t\theader: document.querySelector('.header'),\n\t\thamburger: document.querySelector('.js-hamburger'),\n\t\thamburgerCopy: document.querySelector('.js-hamburger-copy'),\n\t\tnavContainer: document.querySelector('.nav')\n\t},\n\n\tfxToggleNav(element) {\n\t\tconst menuCopy = this.el.hamburgerCopy\n\n\t\tsetTimeout(() => element.classList.toggle('header__button--active'), 600)\n\t\tthis.el.body.classList.toggle('no-scroll-hidden')\n\t\tthis.el.navContainer.classList.toggle('nav--open')\n\t\tmenuCopy.textContent = this.el.navContainer.classList.contains('nav--open') ? menuCopy.dataset.menuClose : menuCopy.dataset.menuOpen\n\t\tthis.el.navContainer.classList.contains('nav--open') ? this.el.header.classList.add('header--colored', 'header--open') : this.el.header.classList.remove('header--open') ? window.scrollY < 1 && this.el.header.classList.remove('header--colored') : ''\n\t},\n\n\tevents() {\n\t\tthis.el.hamburger.addEventListener('click', e => this.fxToggleNav(e.currentTarget))\n\t},\n\n\tinit() {\n\t\tthis.events()\n\t}\n}\n\nnav.init()","const newsHighlights = {\n\tel: {\n\t\tarticles: document.querySelectorAll('.js-article'),\n\t\tplaceholder: document.querySelector('.js-placeholder')\n\t},\n\t\n\tfxShowImageArticle(element) {\n\t\tconst currentImage = element.querySelector('img').src\n\t\tthis.el.placeholder.src = currentImage\n\t\tthis.el.placeholder.style.transform = 'rotate(8deg)'\n\t},\n\n\tfxRemoveImageStyle() {\n\t\tthis.el.placeholder.removeAttribute('style')\n\t},\n\n\tevents() {\n\t\tfor (const article of this.el.articles) {\n\t\t\tarticle.addEventListener('mouseenter', e => this.fxShowImageArticle(e.currentTarget))\n\t\t\tarticle.addEventListener('mouseleave', () => this.fxRemoveImageStyle())\n\t\t}\n\t},\n\n\tinit() {\n\t\tthis.el.placeholder && this.events()\n\t}\n}\n\nnewsHighlights.init()","/*global intersectViewport*/\nconst numbers = {\n\tel: {\n\t\tnumberElements: document.querySelectorAll('.js-number')\n\t},\n\n\tvars: {\n\t\tduration: 1000,\n\t\tdelay: 16\n\t},\n\n\tfxAnimateNumbers(numbers) {\n\t\tconst counterUp = window.counterUp.default\n\n\t\tconst callback = entries => {\n\n\t\t\tfor (const entry of entries) {\n\t\t\t\tconst el = entry.target\n\t\t\t\tif (entry.isIntersecting && !el.classList.contains('is-visible')) {\n\t\t\t\t\tcounterUp(el, {\n\t\t\t\t\t\tduration: this.vars.duration,\n\t\t\t\t\t\tdelay: this.vars.delay\n\t\t\t\t\t})\n\t\t\t\t\tel.classList.add('is-visible')\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tintersectViewport.fxCheckInViewport(numbers, callback)\n\n\t},\n\n\tinit() {\n\t\tthis.fxAnimateNumbers(this.el.numberElements)\n\t}\n}\n\nnumbers.init()","const removeSessionStorage = {\n\tresetSessionStorage () {\n\t\tconst path = window.location.pathname,\n\t\t\tconditions = ['productions', 'producoes']\n\t\t\n\t\tconst checkPathname = conditions.some(el => path.includes(el))\n\t\t\n\t\tif(!checkPathname) {\n\t\t\tsessionStorage.clear()\n\t\t}\n\t},\n\n\tinit () {\n\t\tthis.resetSessionStorage()\n\t}\n}\n\nremoveSessionStorage.init()","/* global Swiper */\nconst sliderCardRows = {\n\tel: {\n\t\tsectionContainer: document.querySelector('.card-rows'),\n\t\tsliderContainer: document.querySelectorAll('.js-slider-card-rows')\n\t},\n\n\tfxInitSlider(slider) {\n\t\tconst swiperOptions = {\n\t\t\tslidesPerView: 1.5,\n\t\t\tcenteredSlides: true,\n\t\t\tloop: true,\n\t\t\tallowTouchMove: false,\n\t\t\tspeed: 6000,\n\t\t\tautoplay: {\n\t\t\t\tdelay: 1,\n\t\t\t\treverseDirection: slider.parentElement.classList.contains('card-rows__row--bottom') && true\n\t\t\t},\n\t\t\tbreakpoints: {\n\t\t\t\t768: { //tablet up\n\t\t\t\t\tslidesPerView: 2.5\n\t\t\t\t},\n\t\t\t\t1200: { // desktop up\n\t\t\t\t\tslidesPerView: 4\n\t\t\t\t}\n\t\t\t},\n\t\t\ton: {\n\t\t\t\tinit: () => setTimeout(() => window.dispatchEvent(new Event('resize')), 100)\n\t\t\t}\n\t\t}\n\n\t\tnew Swiper(slider, swiperOptions)\n\t},\n\n\tinit() {\n\t\tfor (const slider of this.el.sliderContainer)\n\t\t\tthis.fxInitSlider(slider)\n\t}\n}\nsliderCardRows.init()","/* global Swiper */\nconst sliderGrid = {\n\tel: {\n\t\tsliderContainer: document.querySelector('.js-slider-grid'),\n\t\tcardsSeeMore: document.querySelectorAll('.js-see-info'),\n\t\tarticles: document.querySelectorAll('.slider-grid__article'),\n\t\trole: document.querySelector('.js-show-role'),\n\t\tname: document.querySelector('.js-show-name'),\n\t\tdescription: document.querySelector('.js-show-description'),\n\t\tsliderWrapper: document.querySelector('.swiper-wrapper')\n\t},\n\n\tvars: {\n\t\textraLargeAndUp: window.matchMedia('(min-width: 75em)')\n\t},\n\n\tfxInitSlider(slider) {\n\n\t\tconst isSliderCast = slider.classList.contains('js-slider-cast'),\n\t\t\tisSliderScrollbarMobile = slider.classList.contains('js-slider-scrollbar-mobile'),\n\t\t\tallSlides = slider.querySelectorAll('.swiper-slide')\n\n\t\tconsole.log(slider)\n\n\t\tif(window.innerWidth < 768 && allSlides.length < 3 && isSliderCast) {\n\t\t\tslider.parentElement.classList.add('swiper-off', 'is-mobile')\n\t\t\treturn\n\t\t}\n\n\t\tif(window.innerWidth > 768 && allSlides.length < 4 && isSliderCast) {\n\t\t\tslider.parentElement.classList.add('swiper-off')\n\t\t\treturn\n\t\t}\n\n\t\tconst swiperOptions = {\n\t\t\tslidesPerView: 2,\n\t\t\tallowTouchMove: true,\n\t\t\tgrabCursor: isSliderCast || isSliderScrollbarMobile ? true : false,\n\t\t\t// scrollbar: isSliderCast || isSliderScrollbarMobile ? {\n\t\t\t// \tel: '.swiper-scrollbar',\n\t\t\t// \tdraggable: true,\n\t\t\t// \thide: false\n\t\t\t// } : false,\n\t\t\tgrid: {\n\t\t\t\trows: 1,\n\t\t\t\tfill: 'row'\n\t\t\t},\n\t\t\tpagination: {\n\t\t\t\tel: slider.parentElement.querySelector('.swiper-pagination'),\n\t\t\t\ttype: 'fraction'\n\t\t\t},\n\t\t\tnavigation: {\n\t\t\t\tnextEl: slider.parentElement.querySelector('.swiper-button-next'),\n\t\t\t\tprevEl: slider.parentElement.querySelector('.swiper-button-prev')\n\t\t\t},\n\t\t\tbreakpoints: {\n\t\t\t\t768: { // tablet up\n\t\t\t\t\tslidesPerView: 4,\n\t\t\t\t\tallowTouchMove: true,\n\t\t\t\t\tgrid: {\n\t\t\t\t\t\trows: 1,\n\t\t\t\t\t\tfill: 'row'\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\t1200: { // desktop up\n\t\t\t\t\tslidesPerView: 4,\n\t\t\t\t\tslidesPerGroup: isSliderCast ? 1 : 4,\n\t\t\t\t\tallowTouchMove: isSliderCast ? true : false,\n\t\t\t\t\tgrid: {\n\t\t\t\t\t\t//- 4\n\t\t\t\t\t\trows: isSliderCast ? 1 : 5\n\t\t\t\t\t},\n\t\t\t\t\tscrollbar: isSliderCast ? {\n\t\t\t\t\t\tel: '.swiper-scrollbar',\n\t\t\t\t\t\tdraggable: false,\n\t\t\t\t\t\thide: false\n\t\t\t\t\t} : false,\n\t\t\t\t\tgrabCursor: isSliderCast ? true : false\n\t\t\t\t}\n\t\t\t},\n\t\t\ton: {\n\t\t\t\tinit: () => {\n\t\t\t\t\tsetTimeout(() => {\n\t\t\t\t\t\t//- 16\n\t\t\t\t\t\t//-const isOnlyOneSlide = swiper.slides.length <= 20\n\n\t\t\t\t\t\t//-disable swiper on company page for desktop\n\t\t\t\t\t\tthis.vars.extraLargeAndUp.matches && isSliderScrollbarMobile ? this.fxDisableSwiper(swiper) : ''\n\n\t\t\t\t\t\t//-slider.parentElement.querySelector('.slider__nav').style.display = this.vars.extraLargeAndUp.matches ? isOnlyOneSlide || isSliderCast ? 'none' : 'flex' : 'none'\n\n\t\t\t\t\t\t//removed swiper direction because of disabled swiper on company page\n\t\t\t\t\t\t//-this.fxChangeFlexDirection(swiper, isSliderCast)\n\n\t\t\t\t\t\t// console.log(slider.slides.length, slider.pagination.el.innerText)\n\t\t\t\t\t\t// const totalSlides = this.el.sliderContainer.querySelector('.swiper-pagination-total')\n\t\t\t\t\t\t// console.log(totalSlides)\n\n\t\t\t\t\t}, 500)\n\t\t\t\t},\n\t\t\t\tpaginationRender: (slider, el) => {\n\t\t\t\t\t//-show total number of items/images instead of slides on slider-cast\n\t\t\t\t\tif(slider.el.classList.contains('js-slider-cast')) {\n\t\t\t\t\t\tconst total = el.querySelector('.swiper-pagination-total')\n\t\t\t\t\t\tconst newTotal = document.createElement('span')\n\t\t\t\t\t\tnewTotal.textContent = slider.el.querySelectorAll('.swiper-slide:not(.swiper-slide-duplicate)').length\n\n\t\t\t\t\t\ttotal.remove()\n\t\t\t\t\t\tel.appendChild(newTotal)\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\t//-,\n\t\t\t\t//-resize: () => {\n\t\t\t\t//- 16\n\t\t\t\t//-const isOnlyOneSlide = swiper.slides.length <= 20\n\n\t\t\t\t//-slider.parentElement.querySelector('.slider__nav').style.display = this.vars.extraLargeAndUp.matches ? isOnlyOneSlide || isSliderCast ? 'none' : 'flex' : 'none'\n\n\t\t\t\t//removed swiper direction because of disabled swiper on company page\n\t\t\t\t//-this.fxChangeFlexDirection(swiper, isSliderCast)\n\t\t\t\t//-}\n\t\t\t},\n\t\t\tslideToClickedSlide: true,\n\t\t\tloop: isSliderCast ? true : false\n\t\t}\n\n\t\tconst swiper = new Swiper(slider, swiperOptions)\n\t},\n\n\tfxChangeFlexDirection (swiper, isSliderCast) {\n\t\tthis.el.sliderWrapper.style.flexDirection = !this.vars.extraLargeAndUp.matches ? 'row' : swiper.slides.length <= 20 ? 'row' : isSliderCast ? 'row' : 'column'\n\t},\n\n\tfxDisableSwiper(swiper) {\n\t\tswiper.disable()\n\t},\n \n\tfxShowToggleActive(element) {\n\t\tfor (const card of this.el.cardsSeeMore)\n\t\t\tcard.classList.remove('is-active')\n\t\telement.classList.add('is-active')\n\t},\n\n\tfxShowContent(element) {\n\t\tthis.el.role.textContent = element.dataset.role\n\t\tthis.el.name.textContent = element.dataset.name\n\t\tthis.el.description.innerHTML = element.dataset.description\n\t},\n\n\tevents() {\n\t\tfor (const card of this.el.cardsSeeMore) {\n\t\t\tcard.addEventListener('click', e => {\n\t\t\t\tthis.fxShowToggleActive(e.currentTarget)\n\t\t\t\tthis.fxShowContent(e.currentTarget)\n\t\t\t})\n\t\t}\n\t},\n\n\tinit() {\n\t\tif (this.el.sliderContainer) {\n\t\t\tthis.fxInitSlider(this.el.sliderContainer)\n\t\t\tthis.events()\n\t\t}\n\t}\n}\nsliderGrid.init()","/* global Swiper */\nconst sliderHero = {\n\tel: {\n\t\tsliderContainer: document.querySelector('.js-slider-hero')\n\t},\n\n\tfxInitSlider(slider) {\n\t\tconst autoplay = JSON.parse(slider.dataset.sliderAutoplay),\n\t\t\tdelay = JSON.parse(slider.dataset.sliderDelay),\n\t\t\tloop = JSON.parse(slider.dataset.sliderLoop)\n\n\t\tconst swiperOptions = {\n\t\t\tautoplay: autoplay ? { delay: delay } : false,\n\t\t\tloop: loop && slider.querySelectorAll('.swiper-slide').length > 1 ? true : false,\n\t\t\tpagination: {\n\t\t\t\tclickable: true,\n\t\t\t\tel: slider.querySelector('.swiper-pagination')\n\t\t\t},\n\t\t\ton: {\n\t\t\t\tinit: () => setTimeout(() => window.dispatchEvent(new Event('resize')), 100)\n\t\t\t}\n\t\t}\n\n\t\tnew Swiper(slider, swiperOptions)\n\t},\n\n\tinit() {\n\t\tthis.el.sliderContainer && this.fxInitSlider(this.el.sliderContainer)\n\t}\n}\nsliderHero.init()","/* global Swiper */\nconst sliderModal = {\n\tel: {\n\t\tbody: document.body,\n\t\tsliderGrid: document.querySelector('.js-slider-grid-controller'),\n\t\tsliderModal: document.querySelector('.js-slider-modal'),\n\t\tslides: document.querySelectorAll('.js-slide-active'),\n\t\tmodalSlider: document.querySelector('.js-modal-slider'),\n\t\tbtnCloseModal: document.querySelector('.js-close-modal-slider')\n\t},\n\n\tvars: {\n\t\ttabletAndUp: window.matchMedia('(max-width: 768px)')\n\t},\n\n\tfxOpenModalSlider () {\n\t\tthis.el.body.classList.add('no-scroll-y')\n\t\tthis.el.modalSlider.classList.add('open')\n\t},\n\n\tfxCloseModal () {\n\t\tthis.el.body.classList.remove('no-scroll-y')\n\t\tthis.el.modalSlider.classList.remove('open')\n\t},\n\n\tfxInitSlider (sliderGrid, sliderModal) {\n\n\t\tconst _this = this,\n\t\t\tsliderGridSlides = sliderGrid.querySelectorAll('.swiper-slide')\n\n\t\tconst swiperGridOptions = {\n\t\t\tslidesPerView: sliderGridSlides.length <= 2 ? sliderGridSlides.length : 2,\n\t\t\tallowTouchMove: true,\n\t\t\tgrid: {\n\t\t\t\trows: 1,\n\t\t\t\tfill: 'row'\n\t\t\t},\n\t\t\tpagination: {\n\t\t\t\tel: sliderGrid.parentElement.querySelector('.swiper-pagination'),\n\t\t\t\ttype: 'fraction'\n\t\t\t},\n\t\t\tnavigation: {\n\t\t\t\tnextEl: sliderGrid.parentElement.querySelector('.swiper-button-next'),\n\t\t\t\tprevEl: sliderGrid.parentElement.querySelector('.swiper-button-prev')\n\t\t\t},\n\t\t\tbreakpoints: {\n\t\t\t\t768: { // tablet up\n\t\t\t\t\tslidesPerView: sliderGridSlides.length <= 4 ? sliderGridSlides.length : 4,\n\t\t\t\t\tallowTouchMove: true,\n\t\t\t\t\tgrid: {\n\t\t\t\t\t\trows: 1,\n\t\t\t\t\t\tfill: 'row'\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t},\n\t\t\ton: {\n\t\t\t\tclick (swiperGrid) {\n\t\t\t\t\tswiperModal.slideTo(swiperGrid.clickedIndex)\n\t\t\t\t\t_this.fxShowToggleActive(swiperGrid.clickedIndex)\n\t\t\t\t\t_this.fxOpenModalSlider()\n\t\t\t\t},\n\t\t\t\tpaginationRender: (sliderGrid, el) => {\n\t\t\t\t\t//-show total number of items/images instead of slides on slider-cast\n\t\t\t\t\tif(sliderGrid.el.classList.contains('js-slider-grid-controller')) {\n\t\t\t\t\t\tconst total = el.querySelector('.swiper-pagination-total')\n\t\t\t\t\t\tconst newTotal = document.createElement('span')\n\t\t\t\t\t\tnewTotal.textContent = sliderGrid.slides.length\n\t\n\t\t\t\t\t\ttotal.remove()\n\t\t\t\t\t\tel.appendChild(newTotal)\n\t\t\t\t\t}\n\t\t\t\t},\n\n\t\t\t\tinit: () => setTimeout(() => window.dispatchEvent(new Event('resize')), 100),\n\t\t\t\tresize (sliderGrid) {\n\t\t\t\t\tconst slidesLength = _this.vars.tabletAndUp.matches ? 2 : 4\n\n\t\t\t\t\tsliderGrid.slides.length <= slidesLength ? sliderGrid.el.nextElementSibling.style.display = 'none' : 'block'\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tconst swiperGrid = new Swiper(sliderGrid, swiperGridOptions)\n\n\t\tconst swiperModalOptions = {\n\t\t\tallowTouchMove: true,\n\t\t\tpagination: {\n\t\t\t\tel: sliderModal.parentElement.querySelector('.swiper-pagination'),\n\t\t\t\ttype: 'fraction'\n\t\t\t},\n\t\t\tnavigation: {\n\t\t\t\tnextEl: sliderModal.parentElement.querySelector('.swiper-button-next'),\n\t\t\t\tprevEl: sliderModal.parentElement.querySelector('.swiper-button-prev')\n\t\t\t},\n\t\t\tbreakpoints: {\n\t\t\t\t768: { // tablet up\n\t\t\t\t\tallowTouchMove: true\n\t\t\t\t},\n\t\t\t\t1200: { // desktop up\n\t\t\t\t\tallowTouchMove: false,\n\t\t\t\t\tscrollbar:false,\n\t\t\t\t\tgrabCursor: false\n\t\t\t\t}\n\t\t\t},\n\t\t\ton: {\n\t\t\t\tslideChange (swiperModal) {\n\t\t\t\t\tswiperGrid.slideTo(swiperModal.activeIndex)\n\t\t\t\t\t_this.fxShowToggleActive(swiperModal.activeIndex)\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tconst swiperModal = new Swiper(sliderModal, swiperModalOptions)\n\t},\n\n\tfxShowToggleActive(index) {\n\t\tthis.el.slides.forEach((el, i) => {\n\t\t\tel.classList.remove('is-active')\n\t\t\ti === index && el.classList.add('is-active')\n\t\t})\n\t},\n\n\tevents () {\n\t\tthis.el.btnCloseModal.addEventListener('click', () => {\n\t\t\tthis.fxCloseModal()\n\t\t})\n\t},\n\n\tinit () {\n\t\tif(!this.el.sliderModal) return\n\t\tthis.events()\n\t\tthis.fxInitSlider(this.el.sliderGrid, this.el.sliderModal)\n\t}\n}\n\nsliderModal.init()","/* global Swiper */\nconst sliderThumbs = {\n\tel: {\n\t\tsliderPlaceholder: document.querySelector('.js-slider-placeholder'),\n\t\tsliderThumbs: document.querySelector('.js-slider-thumbs')\n\t},\n\n\tfxInitSlider(sliderThumbs, sliderPlaceholder) {\n\t\t\n\t\tconst swiperThumbsOptions = {\n\t\t\tspaceBetween: 10,\n\t\t\tslidesPerView: 5,\n\t\t\tfreeMode: true,\n\t\t\twatchSlidesProgress: true,\n\t\t\ton: {\n\t\t\t\tinit: () => setTimeout(() => window.dispatchEvent(new Event('resize')), 100)\n\t\t\t},\n\t\t\tbreakpoints: {\n\t\t\t\t768: { // tablet up\n\t\t\t\t\tslidesPerView: 5\n\t\t\t\t},\n\t\t\t\t1200: { // desktop up\n\t\t\t\t\tslidesPerView: 8\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tconst swiperThumbs = new Swiper(sliderThumbs, swiperThumbsOptions)\n\n\t\tconst swiperPlaceholderOptions = {\n\t\t\tgrabCursor: false,\n\t\t\tpagination: {\n\t\t\t\tel: sliderPlaceholder.querySelector('.swiper-pagination'),\n\t\t\t\ttype: 'fraction'\n\t\t\t},\n\t\t\tnavigation: {\n\t\t\t\tnextEl: sliderPlaceholder.querySelector('.swiper-button-next'),\n\t\t\t\tprevEl: sliderPlaceholder.querySelector('.swiper-button-prev')\n\t\t\t},\n\t\t\tthumbs: {\n\t\t\t\tswiper: swiperThumbs\n\t\t\t},\n\t\t\ton: {\n\t\t\t\tinit: () => setTimeout(() => window.dispatchEvent(new Event('resize')), 100)\n\t\t\t}\n\t\t}\n\n\t\tconst swiperPlaceholder = new Swiper(sliderPlaceholder, swiperPlaceholderOptions)\n\n\t\tif (swiperPlaceholder.slides.length <= 1) {\n\t\t\tsliderThumbs.style.display = 'none'\n\t\t\tsliderPlaceholder.parentElement.querySelector('.slider__nav').style.display = 'none'\n\t\t}\n\t},\n\n\tinit() {\n\t\tthis.el.sliderPlaceholder && this.fxInitSlider(this.el.sliderThumbs, this.el.sliderPlaceholder)\n\t}\n}\nsliderThumbs.init()\n","const sticky = {\n\tel: {\n\t\theader: document.querySelector('.header')\n\t},\n\n\tvars: {\n\t\tticking: false\n\t},\n\n\tfxToggleColoredHeaderClass() {\n\t\twindow.scrollY > 1 ? this.el.header.classList.add('header--colored') : this.el.header.classList.remove('header--colored')\n\t},\n\n\tfxThrottleScroll() {\n\n\t\tif (!this.vars.ticking) {\n\t\t\twindow.requestAnimationFrame(() => {\n\t\t\t\tthis.fxToggleColoredHeaderClass()\n\t\t\t\tthis.vars.ticking = false\n\t\t\t})\n\n\t\t\tthis.vars.ticking = true\n\t\t}\n\t},\n\n\tevents() {\n\t\twindow.addEventListener('scroll', () => this.fxThrottleScroll())\n\t},\n\n\tinit() {\n\t\tthis.events()\n\t}\n}\n\nsticky.init()"]}