(window.webpackJsonp = window.webpackJsonp || []).push([ ["app"], { "./src/js/app.js": function (t, e, s) { "use strict"; s.r(e); s("./src/js/utils/vh.js"), s("./src/js/utils/resizeHandler.js"); const i = "touchevents", o = "no-touchevents", n = function () { let t = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : window, e = arguments.length > 1 && void 0 !== arguments[1] && arguments[1]; const s = t.document.documentElement; return "ontouchstart" in t || (t.DocumentTouch && document instanceof DocumentTouch) ? (e && (s.classList.remove(o), s.classList.add(i)), !0) : (e && (s.classList.remove(i), s.classList.add(o)), !1); }; n(window, !0); const r = document.documentElement, a = document.body, h = 768, l = 1024, c = 1280, d = 1366, u = ".LocomotiveScroll", m = { namespace: u, ready: "ready".concat(u), scrolling: "scrolling".concat(u), update: "update".concat(u), destroy: "destroy".concat(u), stop: "stop".concat(u), play: "play".concat(u), call: "call".concat(u), scrollTo: "scrollTo".concat(u), top: { hidden: "SCROLL.TOP.HIDDEN", visible: "SCROLL.TOP.VISIBLE" } }, g = "Ajax.reset", p = "Ajax.initBase", v = { start: "AjaxInStart", end: "AjaxInEnd" }, y = { start: "AjaxOutStart", end: "AjaxOutEnd" }, L = "POPUP.opened", E = "POPUP.closed", w = "POPUP.update", f = "CURSOR.move", S = "PRELOADER.done", C = "LAZYLOAD.update", b = "LAZYLOAD.load", A = "SELECT.update", x = "ACCORDION.change", D = "VIDEO.playing", P = "VIDEO.paused", M = "NAV_ACTIVE", k = "NAV_INNACTIVE", T = function (t) { let e = arguments.length > 1 && void 0 !== arguments[1] && arguments[1]; return e ? window.innerWidth < t : window.innerWidth >= t; }, O = function () { let t = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : window; return n(t); }; Document.prototype.ready = (t) => { t && "function" == typeof t && document.addEventListener("DOMContentLoaded", () => { if ( "interactive" === document.readyState || "complete" === document.readyState ) return t(); }); }; const q = function (t, e) { let s = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : document; const i = new CustomEvent(t, { detail: e }); s.dispatchEvent(i); }, I = (t, e, s) => (1 - s) * t + s * e; s("./node_modules/core-js/modules/web.dom-collections.iterator.js"); var B = s("./node_modules/gsap/index.js"); class j { constructor() { (this.holder = document.querySelector( '[data-component="transitions-overlay"]' )), (this.settings = { DOM: { title: "[data-transition-title]", page: "[data-scroller]" }, classShown: "is-shown", classHidden: "is-hidden", animation: { ease: "power4.inOut", pageMovementValue: window.innerHeight / 4, clip: { start: "polygon(0% 100%, 100% 100%, 100% 100%, 0% 100%)", mid: "polygon(0% 100%, 100% 100%, 100% 0%, 0% 0%)", end: "polygon(0% 0%, 100% 0%, 100% 0%, 0% 0%)" } } }); } init() { (this.title = this.holder.querySelector(this.settings.DOM.title)), (this.page = document.querySelector(this.settings.DOM.page)); } updateTitle(t) { const { next: e } = t, { namespace: s } = e; this.title.innerHTML = s; } showOverlay(t) { return ( setTimeout(() => { this.updateTitle(t); }, 400), new Promise((t) => { const e = B.a.timeline(); return ( e.fromTo( this.holder, { clipPath: this.settings.animation.clip.start, webkitClipPath: this.settings.animation.clip.start }, { duration: 1, ease: "power3.in", clipPath: this.settings.animation.clip.mid, webkitClipPath: this.settings.animation.clip.mid } ), B.a.delayedCall(0.5, () => { this.holder.classList.add(this.settings.classShown); }), e.play().eventCallback("onComplete", () => { t(e); }) ); }) ); } hideOverlay() { return ( B.a.set(this.page, { opacity: 0 }), new Promise((t) => { const e = B.a.timeline(); return ( e.fromTo( this.holder, { clipPath: this.settings.animation.clip.mid, webkitClipPath: this.settings.animation.clip.mid }, { duration: 1, ease: "power3.out", clipPath: this.settings.animation.clip.end, webkitClipPath: this.settings.animation.clip.end } ), B.a.delayedCall(0.2, () => { B.a.to(this.page, { opacity: 1, clearProps: "opacity", duration: 1.2, ease: this.settings.animation.ease }); }), B.a.delayedCall(0.4, () => { this.holder.classList.remove(this.settings.classShown), this.holder.classList.add(this.settings.classHidden); }), e .play() .delay(0.5) .eventCallback("onComplete", () => { t(e), this.holder.classList.remove(this.settings.classHidden); }) ); }) ); } } var R = s("./node_modules/@barba/core/dist/barba.umd.js"), V = s.n(R); class z { constructor() { (this.animationOverlay = new j()), (this.progressClass = "is-animating"), (this.linkActiveClass = "is-active"), (this.ignoreAttr = "data-ajax-ignore"); } updateNavLink(t) { let { next: e } = t; this.links = [ ...document.querySelectorAll(".main-nav__link"), ...document.querySelectorAll(".footer-nav__link") ]; const { shref: s } = e.url ? e.url : e; this.links.forEach((t) => { t.getAttribute("shref") === s ? this.setActiveLink(t) : this.unsetActiveLink(t); }); } setActiveLink(t) { t.classList.add(this.linkActiveClass); } unsetActiveLink(t) { t.classList.remove(this.linkActiveClass); } init() { this.animationOverlay.init(), this.updateNavLink({ next: window.location }); V.a.hooks.beforeLeave((t) => { r.classList.add(this.progressClass), q(v.start, t); }), V.a.hooks.leave((t) => { q(v.end, t); }), V.a.hooks.enter((t) => { q(y.start, t); }), V.a.hooks.after((t) => { const { next: e } = t, { html: s } = e, i = /body\sclass=['|"]([^'|"]*)['|"]/.exec(s); this.updateNavLink(t), q(g, t), i && i[1] ? document.body.setAttribute("class", i[1]) : document.body.removeAttribute("class"); }), V.a.init({ preventRunning: !0, timeout: 5e3, requestError: (t, e, s, i) => ( "click" === e && i.status && 404 === i.status && V.a.go("/404"), !1 ), transitions: [ { leave: async (t) => { await this.animationOverlay.showOverlay(t), q(m.stop, { scroller: a }), q(m.scrollTo, { target: 0, duration: 0, disableLerp: !0 }), q(p, t); }, after: async () => { B.a.delayedCall(1, () => q(m.update)), await this.animationOverlay.hideOverlay(), q(m.play, { scroller: a }), r.classList.remove(this.progressClass); } } ], prevent: (t) => { let { el: e } = t; return e.hasAttribute(this.ignoreAttr); } }); } } class _ { constructor(t) { let { holder: e, settings: s } = t; (this.holder = e), (this.settings = { activeClass: "is-active", hasActiveItemClass: "has-active-item", accordion: !0, setInitialState: !0, DOM: { item: "[data-accordion-item]", trigger: "[data-accordion-trigger]", content: "[data-accordion-content]" }, animation: { duration: 0.6, ease: "circ.inOut", height: 0, opacity: 0, onComplete: () => { q(m.update), q(x); } }, ...s }), (this.previousTarget = {}), (this.activeTarget = {}), (this.onClickListener = (t) => this.onClick(t)), (this.items = this.settings.accordion ? [...this.holder.querySelectorAll(this.settings.DOM.item)] : [this.holder]); } init() { this.setInitialState(), this.attachEvents(); } setInitialState() { this.items.forEach((t) => { const e = t.querySelector(this.settings.DOM.content), s = t.querySelector(this.settings.DOM.trigger); B.a.set(e, { height: 0, opacity: 0 }), this.isActive(t) && this.settings.setInitialState && (this.setActiveItem({ content: e, trigger: s, item: t }), B.a.set(e, { clearProps: "height", opacity: 1 })); }); } attachEvents() { this.items.forEach((t) => t.addEventListener("click", this.onClickListener) ), document.addEventListener(v.start, () => this.destroy(), { once: !0 }); } onClick(t) { const { target: e } = t, s = e.closest(this.settings.DOM.trigger), i = e.closest(this.settings.DOM.item) || this.holder, o = i.querySelector(this.settings.DOM.content); s && (this.setActiveItem({ content: o, trigger: s, item: i }), this.animate()); } setActiveItem(t) { (this.previousTarget = this.activeTarget), (this.activeTarget = t); } animate() { this.isActive() ? this.close() : this.open(); } open() { this.settings.accordion && this.previousTarget.item && this.close(); const { content: t, item: e } = this.activeTarget; B.a.to(t, { ...this.settings.animation, height: t.scrollHeight, opacity: 1, y: 0, onComplete: () => { q(m.scrollTo, { target: e, duration: 500, offset: -100 }), q(m.update), q(x); } }), e.classList.add(this.settings.activeClass), this.holder.classList.add(this.settings.hasActiveItemClass); } close() { const { content: t, item: e } = this.previousTarget; B.a.to(t, this.settings.animation), e.classList.remove(this.settings.activeClass), this.holder.classList.remove(this.settings.hasActiveItemClass); } isActive(t) { const { item: e } = this.activeTarget; return t ? t.classList.contains(this.settings.activeClass) : e.classList.contains(this.settings.activeClass); } destroy() { this.items.forEach((t) => { t.removeEventListener("click", this.onClickListener); }); } } var H = s("./node_modules/gsap/Draggable.js"); B.a.registerPlugin(H.a); class F { constructor(t, e) { (this.holder = t), (this.settings = { DOM: { leftSide: '[data-side="left"]', rightSide: '[data-side="right"]', draggable: "[data-draggable]", trigger: "[data-trigger]", captionBefore: '[data-caption="before"]', captionAfter: '[data-caption="after"]' }, ...e }); } init() { (this.leftSide = this.holder.querySelector( this.settings.DOM.leftSide )), (this.rightSide = this.holder.querySelector( this.settings.DOM.rightSide )), (this.draggable = this.holder.querySelector( this.settings.DOM.draggable )), (this.trigger = this.holder.querySelector( this.settings.DOM.trigger )), (this.captionBefore = this.holder.querySelector( this.settings.DOM.captionBefore )), (this.captionAfter = this.holder.querySelector( this.settings.DOM.captionAfter )), (this.bounds = this.holder.getBoundingClientRect()), this.attachEvents(), this.initDraggable(); } initDraggable() { const { width: t } = this.bounds; (this.onHandleDragListener = () => this.onHandleDrag()), ([this.draggableInstance] = H.a.create(this.draggable, { trigger: this.trigger, bounds: this.holder, allowNativeTouchScrolling: !1, type: "x", edgeResistance: 1, dragResistance: 0, onDrag: this.onHandleDragListener })), B.a.set(this.draggableInstance.target, { left: 0, x: (t / 100) * 50 }), B.a.set(this.rightSide, { clipPath: "polygon(50% 0, 100% 0, 100% 100%, 50% 100%)" }); } onHandleDrag() { const { endX: t, maxX: e, getDirection: s } = this.draggableInstance, i = 100 * B.a.utils.normalize(0, e, t); B.a.set( this.rightSide, { clipPath: "polygon(" .concat(i, "% 0, 100% 0, 100% 100%, ") .concat(i, "% 100%)") }, 0 ), t >= e / 2 && "right" === s() && this.showLeftCaption(), t <= e / 2 && "left" === s() && this.showRightCaption(); } showLeftCaption() { B.a.to(this.captionBefore, { duration: 0.3, opacity: 1, yPercent: 0 }), B.a.to(this.captionAfter, { duration: 0.3, opacity: 0, yPercent: 100 }); } showRightCaption() { B.a.to(this.captionBefore, { duration: 0.3, opacity: 0, yPercent: 100 }), B.a.to(this.captionAfter, { duration: 0.3, opacity: 1, yPercent: 0 }); } attachEvents() { (this.onResizeListener = () => this.onResize()), (this.destroyListener = () => this.destroy()), window.addEventListener("resize", this.onResizeListener), document.addEventListener(v.start, this.destroyListener); } onResize() { (this.bounds = this.holder.getBoundingClientRect()), this.recalculateDragPosition(); } recalculateDragPosition() { const { endX: t, maxX: e } = this.draggableInstance, { width: s } = this.bounds, i = t ? (s * t) / e : (s / 100) * 50; B.a.set(this.draggable, { x: i }); } destroy() { window.removeEventListener("resize", this.onResizeListener), document.removeEventListener(v.start, this.destroyListener); } } class W { constructor(t, e) { (this.holder = t), (this.settings = { target: "[data-zoom-target]", activeClass: "zoom--is-active", ...e }); } init() { (this.target = this.holder.querySelector(this.settings.target)), this.target && this.attachEvents(); } attachEvents() { (this.onButtonEnter = () => this.onEnter()), (this.onButtonLeave = () => this.onLeave()), (this.onDestroy = () => this.destroy()), this.target.addEventListener("mouseenter", this.onButtonEnter), this.target.addEventListener("mouseleave", this.onButtonLeave), this.target.addEventListener("touchstart", this.onButtonEnter), this.target.addEventListener("touchend", this.onButtonLeave), document.addEventListener(v.start, this.onDestroy); } onEnter() { !this.isActive && this.holder.classList.add(this.activeClass); } onLeave() { this.isActive && this.holder.classList.remove(this.activeClass); } get isActive() { return this.holder.classList.contains(this.activeClass); } get activeClass() { const { activeClass: t } = this.settings; return "string" == typeof t ? t : [...t]; } destroy() { this.target.removeEventListener("mouseenter", this.onButtonEnter), this.target.removeEventListener("mouseleave", this.onButtonLeave), this.target.removeEventListener("touchstart", this.onButtonEnter), this.target.removeEventListener("touchend", this.onButtonLeave), document.removeEventListener(v.start, this.onDestroy); } } function U(t, e) { return t.transformEl ? e.find(t.transformEl).css({ "backface-visibility": "hidden", "-webkit-backface-visibility": "hidden" }) : e; } var X = s("./node_modules/gsap/InertiaPlugin.js"), N = s("./node_modules/swiper/swiper.esm.js"); B.a.registerPlugin(H.a, X.a); class Y { constructor(t) { let { holder: e, settings: s } = t; (this.holder = e), (this.settings = { ...s }), (this.clickListener = (t) => this.onClick(t)); } init() { (this.controls = [...this.holder.querySelectorAll("[data-control]")]), (this.controlsData = this.controls.map((t) => ({ name: t.getAttribute("data-control"), control: t }))), this.attachEvents(); } onClick(t, e) { const { name: s } = t; return e && e(t), "accept" === s ? this.accept() : this.close(); } accept() { return this.closeAnimation(() => this.setCookies()); } close() { return this.closeAnimation(() => this.destroy()); } closeAnimation(t) { return B.a.to(this.holder, { duration: 0.7, y: "150%", onComplete: t && t }); } attachEvents() { this.controlsData.forEach((t) => { const { name: e, control: s } = t; s.addEventListener("click", () => { q("COOKIES.".concat(e), t), this.onClick(t); }); }); } setCookies() { this.destroy(); } destroy() { this.holder.remove(); } } class Q { constructor(t) { let { cursor: e, settings: s } = t; (this.cursor = e), (this.settings = s), (this.hoverClass = this.settings.modifier ? "" .concat(this.cursor.hoverClass, "--") .concat(this.settings.modifier) : this.cursor.hoverClass); } init() { this.cursor.holder && ((this.elements = [ ...document.querySelectorAll(this.settings.selector) ]), this.attachEvents()); } attachEvents() { this.elements.forEach((t) => { const e = { node: t, theme: t.dataset.cursorTheme }, s = () => this.enterEvent(e), i = () => this.leaveEvent(e), o = () => this.moveEvent(e); t.addEventListener(this.cursor.enterEvent, s), t.addEventListener(this.cursor.leaveEvent, i), t.addEventListener("mousemove", o), document.addEventListener( v.start, () => { t.removeEventListener(this.cursor.enterEvent, s), t.removeEventListener(this.cursor.leaveEvent, i), t.removeEventListener("mousemove", o), this.leaveEvent(e); }, { once: !0 } ); }); } moveEvent(t) { const { theme: e } = t; this.cursor.addClass(this.hoverClass), e && this.cursor.addTheme({ theme: e }); } enterEvent(t) { this.moveEvent(t), this.show(t); } leaveEvent(t) { const { theme: e } = t; this.cursor.removeClass(this.hoverClass), e && this.cursor.removeTheme(), this.hide(t); } show() { return this; } hide() { return this; } } const J = new (class { constructor(t) { Object.assign(this, t), (this.moveEvent = "mousemove"), (this.enterEvent = "mouseenter"), (this.leaveEvent = "mouseleave"), (this.clientX = -200), (this.clientY = -200); } init() { this.holder && !O() && (this.holder.classList.add(this.activeClass), this.attachEvents()); } attachEvents() { (this.moveListener = (t) => this.setPosition(t)), (this.destroyListener = () => this.destroyCursor()), (this.onMouseDown = () => this.setCursorState.down()), (this.onMouseUp = () => this.setCursorState.up()), document.addEventListener(this.moveEvent, this.moveListener, { passive: !0 }), document.addEventListener("mousedown", this.onMouseDown), document.addEventListener("mouseup", this.onMouseUp), document.addEventListener(v.start, this.destroyListener); } get setCursorState() { return { down: () => this.holder.classList.add(this.pressedClass), up: () => this.holder.classList.remove(this.pressedClass) }; } setPosition(t) { const { clientX: e, clientY: s } = t; (this.clientX = e), (this.clientY = s), q(f, { x: this.clientX, y: this.clientY }), this.revealCursor(), this.render(); } addClass(t) { this.holder.classList.add(t); } addTheme(t) { let { theme: e } = t; this.holder.setAttribute("data-theme", e); } removeTheme() { this.holder.removeAttribute("data-theme"); } removeClass(t) { this.holder.classList.remove(t); } hasClass(t) { return this.holder.classList.contains(t); } render() { B.a.killTweensOf(this.holder), B.a.to(this.holder, { duration: this.animationSpeed, x: this.clientX, y: this.clientY }); } draw() { this.removeClass(this.stoppedClass), B.a.ticker.add(this.renderListener); } stopCursor() { this.addClass(this.stoppedClass), B.a.ticker.remove(this.renderListener); } revealCursor() { r.classList.remove(this.hiddenClass); } hideCursor() { r.classList.add(this.hiddenClass); } destroyCursor() { this.removeTheme(), this.hideCursor(), this.removeClass(this.hoverClass), document.removeEventListener(v.start, this.destroyListener), document.removeEventListener("mousedown", this.onMouseDown), document.removeEventListener("mouseup", this.onMouseUp), document.removeEventListener(this.moveEvent, this.moveListener), this.stopCursor(); } })({ holder: document.querySelector("[data-page-cursor]"), activeClass: "custom-cursor--enabled", stoppedClass: "cursor--is-stopped", hiddenClass: "cursor--is-hidden", hoverClass: "cursor--is-hover", pressedClass: "cursor--pressed", animationSpeed: 0.1 }); class K { constructor(t, e, s) { (this.holder = t), (this.ctx = e), (this.settings = { triggerEvent: "click", activeClass: "menu--opened", DOM: { scroller: "[data-menu-scroller]" }, ...s }), (this.showListener = () => this.setState().active()), (this.hideListener = () => this.setState().innactive()), (this.onClickListener = (t) => this.onClick(t)), (this.destroyListener = () => this.destroy()), (this.clickOutsideListener = (t) => { const { target: e } = t; this.isActive && !this.ctx.contains(e) && this.setState().innactive(); }), (this.initialized = !1); } init() { if (!this.holder) throw new Error("holder should be a DOM element"); (this.scroller = this.ctx.querySelector(this.settings.DOM.scroller)), this.onInit(), (this.initialized = !0), this.attachEvents(); } onInit() { return this; } attachEvents() { this.holder.addEventListener( this.settings.triggerEvent, this.onClickListener ), document.addEventListener(v.start, this.destroyListener); } onClick(t) { const { active: e, innactive: s } = this.setState(); t && t.preventDefault(), this.isActive ? s() : e(); } setState() { var t = this; return { active: function () { let e = !(arguments.length > 0 && void 0 !== arguments[0]) || arguments[0]; e && r.classList.add(t.settings.activeClass), t.onActiveState(); }, innactive: function () { let e = !(arguments.length > 0 && void 0 !== arguments[0]) || arguments[0]; e && r.classList.remove(t.settings.activeClass), t.onInnactiveState(); } }; } onActiveState() { q(m.stop, { scroller: this.scroller }), q(M); } onInnactiveState() { q(m.play, { scroller: this.scroller }), q(k); } destroy() { this.holder.removeEventListener( this.settings.triggerEvent, this.onClickListener ), document.removeEventListener(v.start, this.destroyListener), this.setState().innactive(), (this.initialized = !1); } get isActive() { return r.classList.contains(this.settings.activeClass); } } s("./node_modules/core-js/modules/es.array.includes.js"); class Z { constructor(t, e) { (this.holder = t), (this.core = e), this.init(); } init() { (this.category = this.holder.getAttribute("data-filter-category")), this.setInitialState(), this.attachEvents(); } setInitialState() { this.category === this.core.activeCategory && this.setActiveState(); } attachEvents() { (this.onCategoryClickListener = () => this.onCategoryClick()), this.holder.addEventListener("click", this.onCategoryClickListener); } onCategoryClick() { this.core.setCategory(this.category), this.core.reset(), this.setActiveState(); } setActiveState() { this.holder.classList.add(this.core.settings.filterActiveClass); } setInnactiveState() { this.holder.classList.remove(this.core.settings.filterActiveClass); } } s("./node_modules/core-js/modules/web.url-search-params.js"); class G { constructor() { (this.settings = { id: "category" }), (this.params = new URLSearchParams(window.location.search)); } setQuery(t) { this.params.set(this.settings.id, t), window.history.replaceState( null, null, "?".concat(this.settings.id, "=").concat(t) ); } deleteQuery() { return this.params.delete(this.settings.id); } getQuery() { return this.params.get(this.settings.id); } } class $ { constructor(t) { let { holder: e, settings: s } = t; (this.holder = e), (this.settings = { filterActiveClass: "is-active", emptyBlockClass: "no-results", DOM: { categoryToggle: "[data-filter-category]", content: "[data-filter-content]", resultBlock: "[data-news-categories]" }, ...s }); } init() { (this.content = this.holder.querySelector(this.settings.DOM.content)), (this.categoryToggles = [ ...this.holder.querySelectorAll(this.settings.DOM.categoryToggle) ]), (this.resultBlocks = [ ...this.holder.querySelectorAll(this.settings.DOM.resultBlock) ]), (this.searchQueryHelper = new G()), (this.activeCategory = this.searchQueryHelper.getQuery() || "all"), this.searchQueryHelper.setQuery(this.activeCategory), (this.togglesInstances = this.categoryToggles.map( (t) => new Z(t, this) )), (this.resultsData = this.resultBlocks.map((t) => ({ itemCategories: t .getAttribute("data-news-categories") .split(",") .map((t) => t.trim()), block: t }))), this.updateItems(); } setCategory(t) { (this.activeCategory = t), this.searchQueryHelper.setQuery(this.activeCategory), this.updateItems(); } updateItems() { const t = this.resultsData .map((t) => { const { itemCategories: e, block: s } = t; return !e.includes(this.activeCategory) && s; }) .filter(Boolean), e = this.isAll ? [] : t; this.resultBlocks.length && B.a.set(this.resultBlocks, { display: "block" }), e.length && B.a.set(e, { display: "none" }), e.length === this.resultBlocks.length ? this.content.classList.add(this.settings.emptyBlockClass) : this.content.classList.remove(this.settings.emptyBlockClass), q(m.update); } reset() { this.categoryToggles.forEach((t) => t.classList.remove(this.settings.filterActiveClass) ); } get isAll() { return "all" === this.activeCategory; } } class tt { constructor(t, e) { (this.holder = t), (this.settings = { submitButton: 'button[type="submit"]', successPopup: "[data-success-popup]", privacyCheckbox: 'input[type="checkbox"][name="agreement"]', ...e }); } init() { (this.allInputs = [...this.holder.querySelectorAll(".form-control")]), (this.successPopup = document.querySelector( this.settings.successPopup )), (this.privacyCheckbox = this.holder.querySelector( this.settings.privacyCheckbox )), (this.submitButton = this.holder.querySelector( this.settings.submitButton )), this.privacyCheckbox && this.onCheckboxChange(), this.attachEvents(); } attachEvents() { (this.onFormSubmitListener = (t) => this.onFormSubmit(t)), (this.onFormResetListener = (t) => this.onFormReset(t)), (this.onCheckboxListener = (t) => this.onCheckboxChange(t)), this.holder.addEventListener( "wpcf7mailsent", this.onFormSubmitListener ), this.holder.addEventListener("reset", this.onFormResetListener), this.privacyCheckbox && this.privacyCheckbox.addEventListener( "change", this.onCheckboxListener ), window.wpcf7 && window.wpcf7.init && window.wpcf7.init(this.holder), document.addEventListener(v.start, () => this.destroy(), { once: !0 }); } onCheckboxChange() { this.privacyCheckbox.checked ? this.submitButton.removeAttribute("disabled") : this.submitButton.setAttribute("disabled", !0); } onFormSubmit() { this.successPopup && this.successPopup.Popup.open(), this.holder.reset(); } onFormReset(t) { t.preventDefault(), this.allInputs.forEach((t) => { (t.value = ""), t.hasAttribute("data-has-value") && t.removeAttribute("data-has-value"); }), this.holder.reset(); } destroy() { this.holder.removeEventListener( "wpcf7mailsent", this.onFormSubmitListener ), this.holder.removeEventListener("reset", this.onFormResetListener); } } var et = s("./node_modules/choices.js/public/assets/scripts/choices.js"), st = s.n(et); class it { constructor(t) { let { holder: e, settings: s } = t; (this.holder = e), (this.settings = { ...s, selector: ".js-custom-select", AJAX_ATTR: "data-ajax", select: { itemSelectText: null, shouldSort: !1, placeholder: this.holder.getAttribute("data-placeholder") || null } }), (this.showListener = () => this.onDropdownShow()), (this.hideListener = () => this.onDropdownHide()), (this.changeListener = (t) => this.onChange(t)); } init() { this.setClassNamesOption(), (this.choices = new st.a(this.holder, this.settings.select)), (this.holder.choices = this.choices), this.attachEvents(); } onMouseEnter() { return q(m.stop), this; } onMouseLeave() { return q(m.play), this; } setClassNamesOption() { const t = this.settings.selector.slice(1), e = [...this.holder.classList].filter((e) => e !== t); this.settings.select.classNames = { containerOuter: "choices ".concat(e.join(" ")) }; } loadAJAX() { this.choices.clearChoices(), this.choices.setChoices( async () => { try { const t = await fetch(this.ajaxDataPath), e = await t.json(); return ( this.holder.removeAttribute(this.settings.AJAX_ATTR), e ); } catch (t) { return []; } }, "value", "label", !0 ); } attachEvents() { this.holder.addEventListener("showDropdown", this.showListener), this.holder.addEventListener("hideDropdown", this.hideListener), this.holder.addEventListener("change", this.changeListener), document.addEventListener(v.start, () => this.destroy(), { once: !0 }); } onChange(t) { let { detail: e } = t; const { value: s } = e, { containerOuter: i } = this.choices; s ? i.element.setAttribute("data-has-value", !0) : i.element.removeAttribute("data-has-value"); } onDropdownShow() { this.choices.dropdown.element.addEventListener( "mouseenter", this.onMouseEnter ), this.choices.dropdown.element.addEventListener( "mouseleave", this.onMouseLeave ), this.onMouseEnter(); } onDropdownHide() { this.choices.dropdown.element.removeEventListener( "mouseenter", this.onMouseEnter ), this.choices.dropdown.element.removeEventListener( "mouseleave", this.onMouseLeave ), this.onMouseLeave(); } get ajaxDataPath() { return this.holder.getAttribute(this.settings.AJAX_ATTR); } destroy() { this.holder.removeEventListener("showDropdown", this.showListener), this.holder.removeEventListener("hideDropdown", this.hideListener), this.holder.removeEventListener("change", this.changeListener); } } function ot(t) { const e = ".js-custom-select", s = t ? [...t.querySelectorAll(e)] : [...document.querySelectorAll(e)]; O() || (s .filter((t) => !t.choices) .forEach((t) => { new it({ holder: t }).init(); }), document.addEventListener(A, (t) => { let { detail: { context: e } } = t; return ot(e); })); } s("./node_modules/air-datepicker/air-datepicker.css"); var nt = s("./node_modules/air-datepicker/index.es.js"), rt = s("./node_modules/air-datepicker/locale/en.js"), at = s.n(rt); function ht() { ot(), (function () { document.querySelectorAll(".contact-form").forEach((t) => { new tt(t).init(); }); })(), (function () { document .querySelectorAll('[data-component="datepicker"]') .forEach((t) => { const e = t.querySelector("input"), s = window.innerWidth < 1024; return new nt.a(e, { minDate: Date.now(), isMobile: s, container: s ? document.body : t, autoClose: !0, locale: at.a }); }); })(); } class lt extends K { constructor(t, e) { super(t, document, { activeClass: "popup--opened", popupActiveClass: "is-active", popupInnactiveClass: "is-hidden", DOM: { scroller: "[data-popup-scroller]", target: "data-toggle-popup", close: "[data-popup-close]", overlay: "[data-popup-overlay]" }, ...e }), (this.activeData = {}), (this.openListener = (t) => this.open(t)), (this.closeListener = (t) => this.close(t)), (this.onDocumentClick = (t) => this.setOverlayOpen(t)); } init() { (this.targetID = this.holder.getAttribute(this.settings.DOM.target)), (this.targetDOM = document.getElementById(this.targetID)), this.targetDOM && ((this.popupClose = [ ...this.targetDOM.querySelectorAll(this.settings.DOM.close) ]), (this.scroller = this.targetDOM.querySelector( this.settings.DOM.scroller )), (this.popupOverlay = this.targetDOM.querySelector( this.settings.DOM.overlay )), this.targetDOM.classList.add(this.settings.popupInnactiveClass), (this.targetDOM.Popup = this), this.attachEvents()); } get transitionDuration() { return parseFloat( getComputedStyle(this.targetDOM).transitionDuration ); } setOverlayOpen(t) { const { clientX: e, clientY: s } = t, { innerWidth: i, innerHeight: o } = window, n = Math.ceil((100 * e) / i), r = Math.ceil((100 * s) / o); (this.clipStart = "circle(0% at ".concat(n, "% ").concat(r, "%)")), (this.clipEnd = "circle(150% at ".concat(n, "% ").concat(r, "%)")), B.a.set(this.popupOverlay, { visibility: "visible" }), B.a.fromTo( this.popupOverlay, { clipPath: this.clipStart }, { duration: 0.7, clipPath: this.clipEnd } ); } setOverlayClose() { B.a.fromTo( this.popupOverlay, { clipPath: this.clipEnd }, { clipPath: this.clipStart, duration: 0.5, onComplete: () => B.a.set(this.popupOverlay, { visibility: "hidden" }) } ); } attachEvents() { (this.onCloseListener = () => this.setState().innactive()), (this.onOpenListener = (t) => this.updateData(t)), this.popupClose.length && this.popupClose.forEach((t) => t.addEventListener("click", this.closeListener) ), this.popupOverlay.addEventListener("click", this.closeListener), document.addEventListener(g, this.onCloseListener), document.addEventListener(L, this.onOpenListener), this.isStatic || this.holder.addEventListener("click", this.openListener); } updateData(t) { let { detail: e } = t; this.activeData = e; } open(t) { t && t.preventDefault(), this.setState().active(); } close(t) { t && t.preventDefault(); const { innactive: e } = this.setState(); this.isActive && e(); if(this.targetID.match("popup-insights") == "popup-insights"){ var videoIndex = this.targetID.replace("popup-insights-","") if(document.getElementById("insightsVideo-"+videoIndex)){ document.getElementById("insightsVideo-"+videoIndex).pause(); } } } get data() { return { target: this.targetDOM, toggle: this.holder, instance: this }; } onActiveState() { const t = [ ...this.targetDOM.querySelectorAll( '[data-component="lazyload"]:not(.loaded)' ) ]; this.disableScroll(), this.targetDOM.classList.remove(this.settings.popupInnactiveClass), this.targetDOM.classList.add(this.settings.popupActiveClass), (this.activeData = this.data), q(L, this.data), setTimeout(() => { q(b, t); }, 300); } onInnactiveState() { this.enableScroll(), this.targetDOM.classList.remove(this.settings.popupActiveClass), (this.activeData = {}), this.targetDOM.classList.add(this.settings.popupInnactiveClass), q(E, this.data); } disableScroll() { this.shouldLockScroll && q(m.stop, { scroller: this.scroller }); } enableScroll() { this.shouldLockScroll && q(m.play, { scroller: this.scroller }); } hidePopup() { setTimeout(() => { this.targetDOM.classList.add(this.settings.popupInnactiveClass); }, 1e3 * this.transitionDuration); } destroy() { this.popupClose.length && this.popupClose.forEach((t) => t.removeEventListener("click", this.onCloseListener) ), this.popupOverlay.removeEventListener("click", this.closeListener), this.holder.removeEventListener("click", this.openListener), document.removeEventListener(g, this.onCloseListener), document.removeEventListener(L, this.onOpenListener); } get shouldLockScroll() { return !this.targetDOM.classList.contains("popup--no-scroll-lock"); } get isStatic() { return this.holder.hasAttribute("data-static"); } closePopup() { super.setState().innactive(); } revealPopup() { super.setState().active(); } } function ct(t) { const e = "[data-toggle-popup]"; (t ? t.querySelectorAll(e) : document.querySelectorAll(e)).forEach( (t) => { new lt(t).init(); } ), document.addEventListener(w, (t) => { let { detail: { context: e } } = t; return ct(e); }); } function dt() { !(function () { document .querySelectorAll('[data-component="header"]') .forEach((t) => { [...t.querySelectorAll('[data-component="nav-toggle"]')].forEach( (e) => { new K(e, t).init(); } ); }); })(), (function () { document .querySelectorAll('[data-component="accordion"]') .forEach((t) => { new _({ holder: t }).init(); }), document .querySelectorAll('[data-component="open-close"]') .forEach((t) => { new _({ holder: t, settings: { accordion: !1, setInitialState: !1 } }).init(); }); })(), (function () { document .querySelectorAll('[data-component="before-after"]') .forEach((t) => { new F(t).init(); }); })(), (function () { const t = { drag: { Instance: Q, settings: { selector: '[data-cursor="drag"]', modifier: "drag" } }, next: { Instance: Q, settings: { selector: '[data-cursor="next"]', modifier: "next" } } }; J.init(), Object.values(t).forEach((t) => { let { Instance: e, ...s } = t; const i = new e({ cursor: J, ...s }); O() || i.init(); }); })(), (function () { document .querySelectorAll('[data-component="filter"]') .forEach((t) => { new $({ holder: t }).init(); }); })(), (function () { document .querySelectorAll('[data-component="button-zoom"]') .forEach((t) => { new W(t).init(); }); })(), (function () { const t = T(h); document .querySelectorAll('[data-component="drag-carousel"]') .forEach((t) => { const e = t.querySelector("[data-draggable]"), s = t.querySelector("[data-swiper-scrollbar]"), i = t.querySelector(".swiper-scrollbar-drag"), { width: o } = e.getBoundingClientRect(), { width: n } = s.getBoundingClientRect(), { width: r } = t.getBoundingClientRect(), a = (r / o) * 100, h = (n / ((n * a) / 100)) * 100 - 100; function l() { const t = B.a.utils.normalize(this.maxX, this.minX, this.x), e = B.a.utils.mapRange(0, 1, 0, h, t); B.a.set(i, { xPercent: e }); } B.a.set(i, { width: "".concat(a, "%") }), H.a.create(e, { type: "x", bounds: t, inertia: !0, edgeResistance: 0.65, onDrag: l, onThrowUpdate: l, onDragEnd: l }); }), document .querySelectorAll('[data-component="stacked-carousel"]') .forEach((e) => { const s = e.querySelector("[data-next-button]"), i = new N.a(e, { init: !1, effect: "cards", perspective: !0, allowTouchMove: !1, watchSlidesProgress: !0, virtualTranslate: !0, loopedSlides: 3, preventInteractionOnTransition: !1, speed: 700, loop: !0, on: { setTranslate: (e) => { const { slides: s } = e, i = { slideShadows: !1, transformEl: null }; for (let e = 0; e < s.length; e += 1) { const o = s.eq(e), n = o[0].progress, r = Math.min(Math.max(n, -4), 4), a = o[0].swiperSlideOffset; let h = -Math.abs(Math.round(n)) + s.length, l = t ? 20 * (0 - r) - a : 1 - r - a, c = t ? 0 : "".concat(10 * -(0 - r), "px"), d = 1 + 0.05 * r; r < 0 ? (l = "".concat(l, "px")) : r > 0 ? ((l = "".concat(l, "px")), (c = "200vh"), (d = 0.5), (h = s.length + 1)) : (l = "".concat(l, "px")); const u = "".concat( r < 0 ? 1 + (1 - d) * r : 1 - (1 - d) * r ), m = "translate3d(" .concat(l, ", ") .concat(c, ", 0px) scale(") .concat(u, ")"); (o[0].style.zIndex = h), U(i, o).transform(m); } }, setTransition: (t, e) => { t.slides.transition(e), (function (t) { const { swiper: e, duration: s, transformEl: i, allSlides: o } = t, { slides: n, activeIndex: r, $wrapperEl: a } = e; if (e.params.virtualTranslate && 0 !== s) { let t, s = !1; (t = o ? i ? n.find(i) : n : i ? n.eq(r).find(i) : n.eq(r)), t.transitionEnd(() => { if (s) return; if (!e || e.destroyed) return; (s = !0), (e.animating = !1); const t = [ "webkitTransitionEnd", "transitionend" ]; for (let e = 0; e < t.length; e += 1) a.trigger(t[e]); }); } })({ swiper: t, duration: e, transformEl: null }); } } }), o = () => i.slideNext(); s && s.addEventListener("click", o), e.addEventListener("click", o), document.addEventListener( v.start, () => { s && s.removeEventListener("click", o), e.removeEventListener("click", o); }, { once: !0 } ), i.init(), q(C); }); })(), ct(), ht(), (function () { document .querySelectorAll('[data-component="cookies-popup"]') .forEach((t) => { new Y({ holder: t }).init(); }); })(); } s("./node_modules/locomotive-scroll/dist/locomotive-scroll.css"); var ut = s("./node_modules/body-scroll-lock/lib/bodyScrollLock.esm.js"), mt = s( "./node_modules/locomotive-scroll/dist/locomotive-scroll.esm.js" ); class gt { constructor() { let t = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {}; (this.settings = t), (this.scrollData = { scroll: { x: 0, y: 0 } }); } init() { this.attachEvents(), this.initScroll(); } initScroll() { (this.scroll = new mt.a(this.settings)), (this.smoothOnload = r.classList.contains(this.scroll.smoothClass)), (window.customScroll = this), this.checkPageTop(), this.scroll.on("scroll", (t) => { (this.scrollData = { ...t, pageTop: this.pageTop }), this.setDirection(), this.checkPageTop(), q(m.scrolling, this.scrollData); }), this.scroll.on("call", (t, e, s) => { s && q(m.call, { name: t, direction: e, obj: s }, s.el); }), r.classList.remove(this.settings.offTopClass); } checkPageTop() { this.scrollData && this.scrollData.scroll.y > this.settings.scrollTreshold ? (r.classList.add(this.settings.offTopClass), r.classList.remove(this.settings.onTopClass), (this.pageTop = !1)) : (r.classList.add(this.settings.onTopClass), r.classList.remove(this.settings.offTopClass), (this.pageTop = !0)); } setDirection() { r.dataset.scrollDirection = this.scrollData.direction || "down"; } update() { this.scroll.update(); } attachEvents() { document.addEventListener(m.ready, () => { r.classList.remove(this.settings.offTopClass), this.initScroll(); }), document.addEventListener(g, () => { (this.scrollData.scroll.x = 0), (this.scrollData.scroll.y = 0), this.checkPageTop(); }), document.addEventListener(m.destroy, () => { this.scroll.destroy(); }), document.addEventListener(m.update, () => { this.update(); }), document.addEventListener(m.stop, (t) => { let { detail: e } = t; if ((this.scroll.stop(), O() && e)) { const { scroller: t } = e; Object(ut.a)(t || r); } }), document.addEventListener(m.scrollTo, (t) => { let { detail: e } = t; const { target: s, ...i } = e; this.scroll.scrollTo(s, i); }), document.addEventListener(m.play, (t) => { let { detail: e } = t; if ((this.scroll.start(), O() && e)) { const { scroller: t } = e; Object(ut.b)(t || r); } }), document.addEventListener("fullscreenchange", () => { setTimeout(() => this.update(), 0); }); let t = window.innerWidth; window.addEventListener("orientationchange", () => { const { innerWidth: t } = window; t >= l && t <= d && window.location.reload(); }), window.addEventListener("resize", () => { const { innerWidth: e } = window; e !== t && ((t = e), e >= d && !this.smoothOnload && window.location.reload(), e < d && e >= h && !this.smoothOnload && window.location.reload()); }); } } var pt = s( "./node_modules/fontfaceobserver/fontfaceobserver.standalone.js" ), vt = s.n(pt); const yt = ["NeueMontreal", "FoundersGrotesk"]; class Lt { constructor(t) { let { holder: e, settings: s } = t; (this.holder = e), (this.settings = s), (this.touch = window.innerWidth < c), (this.from = this.holder.hasAttribute("data-from") ? parseFloat(this.holder.getAttribute("data-from")) : 0), (this.to = this.holder.hasAttribute("data-to") ? parseFloat(this.holder.getAttribute("data-to")) : 1), (this.inView = !1), (this.componentName = "onScroll"), (this.scrollListenerBound = (t) => this.scrollListener(t)), (this.destroyListener = () => this.destroy()), (this.triggerAnimation = () => this.callbackShow(this.show())); } init() { this.ignoreTouch || this.ignoreDesktop || ((this.isCustomScroll = window.customScroll && window.customScroll.smoothOnload), this.attachEvents()); } attachEvents() { this.holder.addEventListener(m.call, this.scrollListenerBound, { once: !this.shouldRepeat }), document.addEventListener(p, this.destroyListener, { once: !0 }); } scrollListener(t) { let { detail: e } = t; const { scrollData: s, obj: i } = e, { inView: o } = i; (this.inView = o), (this.scrollDetail = { ...s, ...e }), this.inView && (this.holder.hasAttribute("data-show") || (this.holder.setAttribute("data-show", !0), this.triggerAnimation()), this.onShow(this.scrollDetail)), this.inView || this.onLeave(this.scrollDetail); } show() { return this; } shown() { this.holder.setAttribute("data-shown", !0); } onShow() { return this; } onLeave() { return this; } callbackShow(t) { return t ? t.eventCallback && t.eventCallback("onComplete", () => this.shown()) : this; } destroy() { this.holder.removeEventListener(m.call, this.scrollListenerBound), document.removeEventListener(v.start, this.destroyListener); } get shouldRepeat() { return this.holder.hasAttribute("data-scroll-repeat"); } get namespace() { return this.holder.dataset.scrollCall; } get selector() { return "[data-scroll-call=".concat(this.namespace, "]"); } get playSimple() { return this.touch && !T(h); } get ease() { return this.holder.dataset.ease || "expo.out"; } get animationSpeed() { return this.holder.dataset.speed ? parseFloat(this.holder.dataset.speed, 1e3) : 1; } get animationDelay() { return this.holder.dataset.delay ? parseFloat(this.holder.dataset.delay, 1e3) : 0; } get interval() { return O() ? 0.05 : parseFloat(this.holder.dataset.interval) || 0.045; } get reverseAnimation() { return this.holder.hasAttribute("data-reverse"); } get ignoreTouch() { return this.holder.hasAttribute("data-ignore-touch") && this.touch; } get ignoreDesktop() { return this.holder.hasAttribute("data-ignore-desktop") && !this.touch; } get componentType() { return this.componentName; } get isShown() { return this.holder.hasAttribute("data-shown"); } get isVisible() { return this.holder.classList.contains("is-inview"); } } class Et extends Lt { init() { (this.boxes = [ ...this.holder.querySelectorAll('[data-element="parallax-box"]') ]), (this.holderBounds = this.holder.getBoundingClientRect()), (this.movementValue = parseFloat(this.holder.getAttribute("data-movement")) || 10), (this.movement = { x: window.innerWidth / 2, y: window.innerHeight / 2 }), (this.lastMousePos = this.movement), (this.onMouseMoveListener = (t) => this.onMouseMove(t)), (this.onMouseLeaveListener = () => this.onMouseLeave()), (this.onMouseEnterListener = () => this.onMouseEnter()), (this.resizeListener = () => this.onResize()), (this.renderListener = () => this.render()), super.init(); } attachEvents() { window.addEventListener("resize", this.resizeListener), this.holder.addEventListener("mousemove", this.onMouseMoveListener), this.holder.addEventListener( "mouseleave", this.onMouseLeaveListener ), this.holder.addEventListener( "mouseenter", this.onMouseEnterListener ), super.attachEvents(); } onResize() { this.holderBounds = this.holder.getBoundingClientRect(); } onMouseLeave() { return this; } onMouseEnter() { return this; } onLeave() { O() || this.stop(); } onShow() { O() || this.start(); } moveItems() { (this.lastMousePos.x = I( this.lastMousePos.x, this.movement.x, 0.05 ).toFixed(3)), (this.lastMousePos.y = I( this.lastMousePos.y, this.movement.y, 0.05 ).toFixed(3)); const t = [ { y: B.a.utils.mapRange( 0, window.innerHeight, this.movementValue, -this.movementValue, this.lastMousePos.y ), x: B.a.utils.mapRange( 0, window.innerWidth, this.movementValue, -this.movementValue, this.lastMousePos.x ) }, { x: B.a.utils.mapRange( 0, window.innerWidth, this.movementValue, -this.movementValue, this.lastMousePos.x ) }, { x: B.a.utils.mapRange( 0, window.innerWidth, -8, 8, this.lastMousePos.x ) } ]; for (let e = 0; e < this.boxes.length; e++) B.a.set(this.boxes[e], { force3D: !0, ...t[e] }); } onMouseMove(t) { let { x: e, y: s } = t; this.movement = { x: e, y: s }; } render() { this.moveItems(), this.start(); } start() { B.a.ticker.add(this.renderListener); } stop() { B.a.ticker.remove(this.renderListener); } destroy() { super.destroy(), window.addEventListener("resize", this.resizeListener), this.holder.removeEventListener( "mousemove", this.onMouseMoveListener ), this.holder.removeEventListener( "mouseleave", this.onMouseLeaveListener ), this.holder.removeEventListener( "mouseenter", this.onMouseEnterListener ); } } class wt extends Lt { attachEvents() { super.attachEvents(), (this.transitionEndListener = () => this.onTransitionEnd()), this.holder.addEventListener( "transitionend", this.transitionEndListener, !1 ); } onTransitionEnd() { this.isVisible && this.holder.setAttribute("data-shown", !0); } destroy() { super.destroy(), this.holder.removeEventListener( "transitionend", this.transitionEndListener ); } } class ft { constructor(t) { let { holder: e, direction: s, settings: i } = t; (this.holder = e), (this.direction = s), (this.settings = i), (this.bounds = this.setBounds()), this.init(); } init() { (this.group = this.holder.querySelector(this.settings.DOM.group)), this.attachEvents(); } attachEvents() { (this.resizeListener = () => this.update()), window.addEventListener("resize", this.resizeListener); } update() { return (this.bounds = this.setBounds()), this.bounds; } setBounds() { const t = this.holder.getBoundingClientRect(), { left: e, top: s, width: i, height: o } = t; return { width: i, height: o, top: s, left: e, x: e + i / 2, y: s + o / 2 }; } animate(t) { let { x: e, y: s } = t; const i = this.update(), { left: o, top: n, width: r, height: a } = i, h = Math.atan2(e - i.x, -(s - i.y)) * (180 / Math.PI), l = (e - (o + r / 2)) * this.settings.movementKoeff, c = (s - (n + a / 2)) * this.settings.movementKoeff; B.a.set(this.group, { rotate: h, transformOrigin: "center" }), B.a.to(this.group, { duration: 0.3, x: l, y: c }); } stop() { B.a.killTweensOf(this.group); } } class St extends Lt { init() { (this.leftPart = this.holder.querySelector( this.settings.DOM.leftPart )), (this.rightPart = this.holder.querySelector( this.settings.DOM.rightPart )), (this.leftPartInstance = new ft({ holder: this.leftPart, settings: this.settings })), (this.rightPartInstance = new ft({ holder: this.rightPart, settings: this.settings })), (this.onMouseMoveListener = (t) => this.onMouseMove(t)), super.init(); } attachEvents() { this.isStatic && document.addEventListener(f, this.onMouseMoveListener), super.attachEvents(); } onMouseMove(t) { let { detail: e } = t; this.leftPartInstance.animate(e), this.rightPartInstance.animate(e); } onShow() { document.addEventListener(f, this.onMouseMoveListener); } onLeave() { this.leftPartInstance.stop(), this.rightPartInstance.stop(), document.removeEventListener(f, this.onMouseMoveListener); } destroy() { super.destroy(), document.removeEventListener(f, this.onMouseMoveListener); } get isStatic() { return this.holder.hasAttribute("data-static"); } } class Ct extends Lt { init() { super.init(), (this.tl = B.a.timeline({ paused: !0 })), this.tl.fromTo( this.holder, { opacity: this.from }, { delay: this.animationDelay, duration: this.animationSpeed, opacity: this.to, ease: "power2.out", clearProps: this.to > 0 ? "opacity" : "" } ), B.a.set(this.holder, { opacity: this.from }); } onShow() { return this.tl.play(0); } onLeave() { return this.tl.reverse(); } } class bt extends Lt { onShow() { r.classList.add(this.settings.activeClass); } onLeave() { r.classList.remove(this.settings.activeClass); } destroy() { this.onLeave(); } } class At { constructor(t, e) { (this.holder = t), (this.core = e), (this.settings = { target: "data-hover-image", animation: { clip: { start: "polygon(0% 0%, 0% 0%, 0% 100%, 0% 100%)", mid: "polygon(0% 0%, 100% 0%, 100% 100%, 0% 100%)", end: "polygon(100% 0%, 100% 0%, 100% 100%, 100% 100%)" } }, ...this.core.settings }), (this.cursorPosition = { x: 0, y: 0 }), (this.targetImage = this.holder.getAttribute(this.settings.target)), (this.imageWidth = parseFloat(this.holder.getAttribute("data-width")) || 210), (this.imageHeight = parseFloat(this.holder.getAttribute("data-height")) || 150), (this.behaviorStatic = this.holder.hasAttribute("data-static")), (this.mouseenterFn = () => this.onMouseEnter()), (this.mouseleaveFn = () => this.onMouseLeave()); } init() { this.targetImage && (this.createTarget(), this.behaviorStatic || this.attachEvents()); } createTarget() { const t = new Image(), e = document.createElement("div"); (t.src = this.targetImage), this.imageWidth && t.setAttribute("width", this.imageWidth), this.imageHeight && t.setAttribute("height", this.imageHeight), (t.onload = () => { e.classList.add("hover-image-target"), e.appendChild(t), this.core.imageContainer.appendChild(e), (this.target = e), this.behaviorStatic || this.setStartClip(); }); } setStartClip() { B.a.set(this.target, { clipPath: this.settings.animation.clip.start, webkitClipPath: this.settings.animation.clip.start }); } attachEvents() { this.holder.addEventListener("mouseenter", this.mouseenterFn), this.holder.addEventListener("mouseleave", this.mouseleaveFn); } onMouseEnter() { this.showTarget(); } onMouseLeave() { this.hideTarget(); } showTarget() { B.a.killTweensOf(this.target), B.a.fromTo( this.target, { clipPath: this.settings.animation.clip.start, webkitClipPath: this.settings.animation.clip.start }, { ease: "circ.inOut", duration: 0.4, clipPath: this.settings.animation.clip.mid, webkitClipPath: this.settings.animation.clip.mid } ); } hideTarget() { B.a.killTweensOf(this.target), B.a.fromTo( this.target, { clipPath: this.settings.animation.clip.mid, webkitClipPath: this.settings.animation.clip.mid }, { duration: 0.4, ease: "circ.inOut", clipPath: this.settings.animation.clip.end, webkitClipPath: this.settings.animation.clip.end, onComplete: () => this.setStartClip() } ); } destroy() { this.holder.removeEventListener("mouseenter", this.mouseenterFn), this.holder.removeEventListener("mouseleave", this.mouseleaveFn); } } class xt { constructor(t, e) { (this.holder = t), (this.settings = { DOM: { imageContainer: "[data-image-container]", toggle: "[data-hover-image]" }, ...e }); } init() { (this.imageContainer = this.holder.querySelector( this.settings.DOM.imageContainer )), (this.togglers = [ ...this.holder.querySelectorAll(this.settings.DOM.toggle) ]), (this.toggleInstances = this.togglers.map((t) => { const e = new At(t, this); return e.init(), e; })), this.attachEvents(); } attachEvents() { (this.destroyListener = () => this.destroy()), document.addEventListener(v.start, this.destroyListener); } destroy() { document.removeEventListener(v.start, this.destroyListener), this.toggleInstances.forEach((t) => t.destroy()); } } class Dt extends Lt { init() { super.init(), this.ignoreTouch || ((this.variants = { moveLeft: { axis: "x", start: this.movementValue }, moveRight: { axis: "x", start: -this.movementValue }, moveUp: { axis: "y", start: this.movementValue }, moveDown: { axis: "y", start: -this.movementValue } }), (this.animationType = this.holder.dataset.scrollCall), (this.animationParams = this.variants[this.animationType]), (this.sequenceAttr = "data-interval"), (this.target = this.isSequence ? this.holder.children : this.holder), B.a.set(this.target, { [this.animationParams.axis]: this.animationParams.start, opacity: 0 }), (this.tl = B.a.timeline({ paused: !0 })), this.tl.fromTo( this.target, { [this.animationParams.axis]: this.playSimple ? 0 : this.animationParams.start, opacity: 0 }, { [this.animationParams.axis]: 0, duration: this.animationSpeed, ease: this.ease, opacity: 1, delay: this.animationDelay, stagger: !!this.isSequence && this.interval, clearProps: "".concat(this.animationParams.axis, ", opacity") } )); } onShow() { return this.tl.play(0); } onLeave() { return this.tl.reverse(); } get isSequence() { return this.holder.hasAttribute(this.sequenceAttr); } get movementValue() { return this.holder.hasAttribute("data-movement") ? +this.holder.getAttribute("data-movement") : this.settings.movementValue || 30; } } class Pt extends Lt { init() { super.init(), (this.ID = this.holder.getAttribute("data-scroll-id") || "progress-move"); } attachEvents() { this.ignoreTouch || ((this.onUpdateListener = (t) => this.onUpdate(t)), document.addEventListener(m.scrolling, this.onUpdateListener), super.attachEvents()); } onUpdate(t) { let { detail: { currentElements: e } } = t; if ("object" == typeof e[this.ID]) { const { progress: t } = e[this.ID]; this.animation.progress(t); } } destroy() { super.destroy(), document.removeEventListener(m.scrolling, this.onUpdateListener); } get animation() { const t = B.a.timeline({ paused: !0 }); return ( t.fromTo( this.holder, { scale: this.from }, { scale: this.to, duration: this.animationSpeed } ), t ); } } class Mt extends Pt { init() { super.init(), (this.ID = this.holder.getAttribute("data-scroll-id") || "progress-fade"); } get animation() { const t = B.a.timeline({ paused: !0 }); return ( t.fromTo( this.holder, { opacity: this.from }, { opacity: this.to, duration: this.animationSpeed } ), t ); } } class kt extends Pt { get animation() { const t = B.a.timeline({ paused: !0 }); return ( t.fromTo( this.holder, { rotate: this.from }, { rotate: this.to, duration: this.animationSpeed } ), t ); } } class Tt extends Pt { onUpdate(t) { let { detail: e } = t; if (window.customScroll && window.customScroll.smoothOnload) { const { currentElements: t, scroll: s } = e, { innerHeight: i } = window; if ("object" == typeof t[this.ID]) { const e = t[this.ID], { bottom: o } = e, n = s.y - (o - i), r = Math.min(n, i), a = Math.max(0, r); B.a.set(this.holder, { y: a }); } } } } class Ot extends Lt { init() { super.init(), (this.variants = { scaleLeft: { axis: "scaleX", transformOrigin: "100% 50%" }, scaleRight: { axis: "scaleX", transformOrigin: "0% 50%" }, scaleUp: { axis: "scaleY", transformOrigin: "50% 100%" }, scaleDown: { axis: "scaleY", transformOrigin: "50% 0%" }, scale: { axis: "scale" } }), (this.animationType = this.holder.dataset.scrollCall), (this.settings = this.variants[this.animationType]), (this.from = this.holder.hasAttribute("data-to") ? +this.holder.getAttribute("data-from") : 0), (this.to = this.holder.hasAttribute("data-to") ? +this.holder.getAttribute("data-to") : 1), (this.animation = B.a.timeline({ paused: !0 })), this.animation.fromTo( this.holder, { [this.settings.axis]: this.from, transformOrigin: this.settings.transformOrigin }, { [this.settings.axis]: this.to, duration: this.animationSpeed, ease: this.ease, delay: this.animationDelay } ), B.a.set(this.holder, { [this.settings.axis]: this.from }); } onShow() { return this.animation.play(0); } onLeave() { return this.animation.timeScale(2).reverse(0); } } var qt = s("./node_modules/gsap/SplitText.js"); B.a.registerPlugin(qt.a); class It extends Lt { init() { super.init(), this.holder && this.holder.innerText && this.holder.innerHTML && !this.holder.splitAnimation && ((this.splitterWrapper = new qt.a(this.holder, { ...this.settings, split: "lines", linesClass: this.settings.presetClass || "splitter-wrap overflow-hidden is-row-parent" })), (this.staggerType = this.holder.getAttribute("data-stagger-type") || "center"), (this.splitter = new qt.a(this.holder, this.settings)), (this.holder.splitAnimation = this), this.shouldIgnoreAnimation ? this.shown() : ((this.animation = this.getAnimationByType()), this.attachEvents())); } get isChars() { return this.settings.split.includes("chars"); } attachEvents() { this.scrollDependant && this.splitter.chars.length && this.addScrollBehaviorEvents(), super.attachEvents(); } addScrollBehaviorEvents() { (this.charsTotal = this.splitter.chars.length), (this.onScrollData = { cache: 0, current: 0 }), (this.scrollBehaviorListener = (t) => this.onScrollBehavior(t)), document.addEventListener(m.scrolling, this.scrollBehaviorListener); } onScrollBehavior(t) { let { detail: e } = t; const { scroll: s } = e; this.onScrollData.current = s.y; const { chars: i } = this.splitter, o = this.onScrollData.current - this.onScrollData.cache, n = B.a.utils.mapRange(200, -200, -50, 50, o); (this.onScrollData.cache = this.onScrollData.current), i.forEach((t, e) => { const s = e < Math.ceil(this.charsTotal / 2) ? e : Math.ceil(this.charsTotal / 2) - Math.abs(Math.floor(this.charsTotal / 2) - e) - 1; B.a.set(t, { y: s * n }); }); } getAnimationSettings() { const t = { fade: { start: { opacity: 0 }, end: { opacity: 1, ease: this.ease, duration: this.animationSpeed, stagger: { each: this.interval, from: this.staggerType } } }, default: { start: { yPercent: 150, opacity: 0 }, end: { opacity: 1, yPercent: 0, ease: this.ease, clearProps: "y", duration: this.animationSpeed, stagger: this.interval } } }; return t[this.settings.animationType] || t.default; } show() { return this.shouldIgnoreAnimation ? this : this.animation; } onShow() { return this.shouldIgnoreAnimation ? this : this.animation.play().timeScale(1); } onLeave() { return this.shouldIgnoreAnimation ? this : this.animation.timeScale(4).delay(0).reverse(); } resetAfterAnimation() { return this; } getAnimationByType() { const { start: t, end: e } = this.getAnimationSettings(), s = { ...e, onComplete: () => this.resetAfterAnimation() }, i = B.a.timeline({ paused: !0, delay: this.animationDelay }); switch (this.settings.split) { case "chars": case "chars, words": this.splitter.chars.length && B.a.set(this.splitter.chars, t), i.fromTo(this.splitter.chars, t, s); break; case "chars, lines": this.splitter.chars.length && B.a.set(this.splitter.chars, t); for (let e = 0; e < this.splitter.lines.length; e++) { const o = ".splitter-row__".concat(e + 1), n = this.splitter.chars.filter((t) => t.closest(o)), r = 2 * this.interval * e; i.fromTo(n, t, s, r); } break; case "words, lines": this.splitterWrapper.lines.length && B.a.set(this.splitterWrapper.lines, t), i.fromTo(this.splitterWrapper.lines, t, s); break; default: this.splitter.lines.length && B.a.set(this.splitter.lines, t), i.fromTo(this.splitter.lines, t, s); } return i; } destroy() { super.destroy(), this.scrollDependant && this.splitter.chars.length && document.removeEventListener( m.scrolling, this.scrollBehaviorListener ); } get shouldIgnoreAnimation() { return ( this.holder.hasAttribute("data-ignore-animation") || this.holder.hasAttribute("data-shown") ); } get shouldReset() { return this.holder.hasAttribute("data-reset-text"); } get scrollDependant() { return this.holder.hasAttribute("data-scroll-dependant"); } get elements() { return this.isChars ? this.splitter.chars : this.splitter.lines; } } class Bt { constructor(t, e) { (this.holder = t), (this.settings = { plugins: [], scale: 0.5, triggerPauseOffset: 15, pauseText: "Pause video", DOM: { video: "video", trigger: '[data-component="video-control"]', poster: '[data-component="video-poster"]' }, animation: { duration: 0.5, ease: "back.inOut(1.4)" }, ...e }), (this.isPlaying = !1), (this.pauseListener = () => this.pause()), (this.triggerListener = () => this.triggerState()), (this.endedListener = () => { q("videoEnded", this, this.holder), this.pause(); }); } init() { (this.video = this.holder.querySelector(this.settings.DOM.video)), (this.trigger = this.holder.querySelector(this.settings.DOM.trigger) || document.createElement("span")), (this.poster = this.holder.querySelector(this.settings.DOM.poster)), (this.shouldAutoplay = this.video.hasAttribute("autoplay")), (this.shouldLoop = this.video.hasAttribute("loop")), (this.posterAnimation = this.setAnimation()), this.initPlugins(), this.attachEvents(); } initPlugins() { this.settings.plugins.length && (this.plugins = this.settings.plugins.map((t) => { const e = new t(this); return e.init && e.init(), e; })); } destroyPlugins() { this.plugins.length && this.plugins.forEach((t) => { t.destroy(); }); } setAnimation() { const t = B.a.timeline({ paused: !0, yoyo: !0 }), e = B.a.to(this.poster, { ...this.settings.animation, opacity: 0 }); return t.add(e), t; } attachEvents() { this.holder.addEventListener("click", this.triggerListener), !this.shouldLoop && this.video.addEventListener("ended", this.endedListener); } triggerState() { this.paused ? this.play() : this.pause(); } swapText() { this.realTriggerText && (this.isPlaying ? (this.triggerTextElement.setAttribute( "data-text", this.settings.pauseText ), (this.triggerTextElement.innerText = this.settings.pauseText)) : (this.triggerTextElement.setAttribute( "data-text", this.realTriggerText ), (this.triggerTextElement.innerText = this.realTriggerText))); } play() { this.isPlaying || ((this.isPlaying = !0), this.video.play && this.video.play(), this.hidePoster(), q(D, this, this.holder)); } pause() { this.isPlaying && ((this.isPlaying = !1), this.video.pause && this.video.pause(), this.showPoster(), q(P, this, this.holder)); } hidePoster() { this.posterAnimation.play(0); } showPoster() { this.posterAnimation.reverse(0); } rect() { return { holder: this.holder.getBoundingClientRect(), trigger: this.trigger.getBoundingClientRect() }; } destroy() { this.holder.removeEventListener("click", this.triggerListener), !this.shouldLoop && this.video.removeEventListener("ended", this.endedListener), this.destroyPlugins(); } get paused() { return this.video.paused; } } class jt { constructor(t) { const { holder: e, trigger: s, settings: i } = t; (this.core = t), (this.holder = e), (this.trigger = s), (this.settings = { threshold: 25, ...i }), (this.cursorPosition = { x: 0, y: 0 }), (this.canAnimate = !0); } init() { this.trigger && !O() && ((this.mouseEnterListener = () => this.onMouseEnter()), (this.mouseLeaveListener = () => this.onMouseLeave()), (this.checkListener = () => this.follow()), (this.endedListener = () => this.resetButtonPosition()), (this.cursorPositionListener = (t) => this.setCursorPosition(t)), this.attachEvents()); } attachEvents() { this.holder.addEventListener("mouseenter", this.mouseEnterListener), this.holder.addEventListener("mouseleave", this.mouseLeaveListener), this.holder.addEventListener("leave", this.endedListener), this.holder.addEventListener("videoEnded", this.endedListener), document.addEventListener(f, this.cursorPositionListener), document.addEventListener(v.start, () => this.destroy(), { once: !0 }); } onMouseEnter() { this.follow(); } onMouseLeave() { this.unfollow(); } follow() { const { holder: t } = this.core.rect(), { left: e, top: s, width: i, height: o } = t, n = this.cursorPosition.x - e - i / 2, r = this.cursorPosition.y - s - o / 2; B.a.to(this.trigger, { duration: 0.4, ease: "power2.out", left: "50%", top: "50%", x: n, y: r }), B.a.ticker.add(this.checkListener); } unfollow() { this.core.isPlaying ? B.a.to(this.trigger, { duration: 0.4, left: "100%", top: "100%", x: -this.core.rect().trigger.width * this.settings.scale - this.settings.triggerPauseOffset, y: -this.core.rect().trigger.height * this.settings.scale - this.settings.triggerPauseOffset }) : this.resetButtonPosition(), B.a.ticker.remove(this.checkListener); } resetButtonPosition() { B.a.to(this.trigger, { duration: 0.4, left: "50%", top: "50%", x: 0, y: 0 }); } setCursorPosition(t) { let { detail: e } = t; const { x: s, y: i } = e; this.cursorPosition = { x: s, y: i }; } destroy() { this.holder.removeEventListener( "mouseenter", this.mouseEnterListener ), this.holder.removeEventListener( "mouseleave", this.mouseLeaveListener ), this.holder.removeEventListener("leave", this.endedListener), this.holder.removeEventListener("videoEnded", this.endedListener), document.addEventListener(f, this.cursorPositionListener); } } class Rt extends Lt { init() { (this.instanceProps = { plugins: [jt] }), (this.instance = new Bt(this.holder, this.instanceProps)), this.instance.init(), B.a.set(this.instance.trigger, { autoAlpha: 0 }), (this.onPlayListener = () => this.onVideoPlay()), (this.onPauseListener = () => this.onVideoPause()), super.init(); } attachEvents() { this.holder.addEventListener(D, this.onPlayListener), this.holder.addEventListener(P, this.onPauseListener), super.attachEvents(); } onVideoPlay() { B.a.to(this.instance.trigger, { autoAlpha: 1, duration: 0.3, pointerEvents: "none" }), this.holder.classList.add("video--is-playing"); } onVideoPause() { B.a.to(this.instance.trigger, { autoAlpha: 0, duration: 0.3, pointerEvents: "auto" }), this.holder.classList.remove("video--is-playing"); } onShow() { this.instance.shouldAutoplay && this.instance.play(), q("enter", {}, this.instance.holder); } onLeave() { this.instance.paused || this.instance.pause(), q("leave", {}, this.instance.holder); } destroy() { this.holder.removeEventListener(D, this.onPlayListener), this.holder.removeEventListener(P, this.onPauseListener), super.destroy(); } } function Vt() { !(function () { document .querySelectorAll('[data-scroll-call="fadeIn"]') .forEach((t) => { new Ct({ holder: t }).init(); }); })(), (function () { document .querySelectorAll('[data-scroll-call^="scale"]') .forEach((t) => { new Ot({ holder: t }).init(); }); })(), (function () { document .querySelectorAll('[data-scroll-call="video-component"]') .forEach((t) => { new Rt({ holder: t }).init(); }); })(), (function () { document .querySelectorAll('[data-scroll-call^="move"]') .forEach((t) => { new Dt({ holder: t, settings: { movementValue: 60 } }).init(); }); })(), (function () { document .querySelectorAll('[data-css-call="maskDown"]') .forEach((t) => { new wt({ holder: t }).init(); }); })(), (function () { document .querySelectorAll('[data-scroll-call="ambient-move"]') .forEach((t) => { new Et({ holder: t }).init(); }); })(), (function () { document .querySelectorAll('[data-scroll-call="split"]') .forEach((t) => { const e = t.getAttribute("data-line-class"); new It({ holder: t, settings: { presetClass: e, split: t.getAttribute("data-split") || "words, lines", charsClass: "is-char", linesClass: "splitter-row overflow-hidden splitter-row__++", animationType: t.getAttribute("data-animation-type") || "default" } }).init(); }); })(), (function () { document .querySelectorAll('[data-scroll-call="progress-scale"]') .forEach((t) => { new Pt({ holder: t }).init(); }); })(), (function () { document .querySelectorAll('[data-component="hover-thumbnail"]') .forEach((t) => { new xt(t).init(); }); })(), (function () { document .querySelectorAll('[data-scroll-call^="footer-inview"]') .forEach((t) => { new bt({ holder: t, settings: { activeClass: "footer-visible" } }).init(); }); })(), (function () { document .querySelectorAll('[data-scroll-call="progress-rotate"]') .forEach((t) => { new kt({ holder: t }).init(); }); })(), (function () { document .querySelectorAll('[data-scroll-call="progress-fade"]') .forEach((t) => { new Mt({ holder: t }).init(); }); })(), (function () { document .querySelectorAll('[data-scroll-call="eyes"]') .forEach((t) => { new St({ holder: t, settings: { movementKoeff: 0.03, DOM: { leftPart: '[data-eye="left"]', rightPart: '[data-eye="right"]', group: ".eyes-svg__group" } } }).init(); }); })(), (function () { document .querySelectorAll('[data-scroll-call="progress-sticky"]') .forEach((t) => { new Tt({ holder: t }).init(); }); })(); } var zt = s("./node_modules/vanilla-lazyload/dist/lazyload.min.js"), _t = s.n(zt); const Ht = (t) => { let { detail: e } = t; e.length && e.forEach((t) => _t.a.load(t, { unobserve_entered: !0 })); }; class Ft { constructor(t) { let { holder: e, settings: s } = t; (this.holder = e), (this.settings = { homepageClass: "is-homepage", passedClass: "preloader-passed", DOM: { leftSide: "[data-left-side]", rightSide: "[data-right-side]", text: "[data-preloader-text]", content: "[data-content]", progressValue: "[data-progress-value]" }, ...s }); } init() { if (this.holder) { if (!this.shouldPlayPreloader) return ( this.skip(), void setTimeout(() => { q(S); }, 0) ); (this.leftSide = document.querySelector( this.settings.DOM.leftSide )), (this.rightSide = document.querySelector( this.settings.DOM.rightSide )), (this.text = this.holder.querySelector(this.settings.DOM.text)), (this.content = this.holder.querySelector( this.settings.DOM.content )), (this.progressValue = this.holder.querySelector( this.settings.DOM.progressValue )), (this.animation = B.a.timeline({ paused: !0, onUpdate: () => this.updateProgressValue(), onComplete: () => this.hidePreloader() })), this.animate(); } } skip() { this.destroy(); } hidePreloader() { const t = B.a.timeline({ paused: !0 }); setTimeout(() => { q(S); }, 500); const e = B.a.to(this.content, { scale: 1, duration: 0.75, ease: "power2.inOut" }), s = B.a.to(this.text, { autoAlpha: 0 }), i = B.a.to(this.holder, { autoAlpha: 0, onComplete: () => { this.destroy(); } }); t.add(e).addLabel("scaleUp").add(s, "<").add(i), t.play(); } updateProgressValue() { const t = this.animation.progress(); this.progressValue.innerHTML = "".concat( (100 * t).toFixed(0).toString().padStart(2, "0") ); } animate() { const t = B.a.fromTo( this.content, { y: window.innerHeight / 4, opacity: 0 }, { opacity: 1, duration: 0.5, y: 0 } ), e = B.a.fromTo( this.leftSide, { opacity: 0 }, { x: 25, opacity: 1, duration: 1.25, ease: "power3.out" } ), s = B.a.fromTo( this.rightSide, { opacity: 0 }, { x: 45, duration: 1.25, opacity: 1, ease: "power3.out" } ); this.animation .add(t) .addLabel("content") .add(e) .addLabel("leftSide") .add(s, "<") .addLabel("rightSide"), this.animation.delay(0.5).play(); } destroy() { const t = [this.text, this.leftSide, this.rightSide, this.content]; this.holder.remove(), r.classList.add(this.settings.passedClass), t.forEach((t) => { B.a.killTweensOf(t); }); } get shouldPlayPreloader() { return document.body.classList.contains(this.settings.homepageClass); } } const Wt = () => { !(function (t) { const e = "[data-scroller]", s = t ? t.querySelector(e) : document.querySelector(e), i = Math.max(1, window.innerWidth / 1440); new gt({ el: s, smooth: !0, repeat: !1, smoothMobile: !1, getDirection: !0, getSpeed: !0, lerp: 0.15, multiplier: 0.6 * i, touchMultiplier: 2, firefoxMultiplier: 100 * i, scrollTreshold: 70, offTopClass: "is-not-top", onTopClass: "is-top", reloadOnContextChange: !0, tablet: { smooth: !1, breakpoint: 768 }, smartphone: { smooth: !1 }, desktop: { smooth: !0, breakpoint: 1200 } }).init(); })(), (() => { r.classList.add("is-loaded"), r.classList.remove("is-loading"); })(); }, Ut = () => { !(function () { const t = window.innerWidth >= 1200 ? document.querySelector("[data-scroller]") : document, e = new _t.a({ container: t, elements_selector: '[data-component="lazyload"]', threshold: 4 * window.innerHeight, unobserve_entered: !0, callback_loaded: (t) => { B.a.fromTo( t, { opacity: 0 }, { opacity: 1, duration: 0.35, ease: "power2.inOut", clearProps: "opacity", onComplete: () => B.a.killTweensOf(t) } ); } }), s = () => e.update(), i = () => { document.removeEventListener(C, s), document.removeEventListener(L, s), document.removeEventListener(b, Ht), document.removeEventListener(v.start, i), e.destroy(); }; document.addEventListener(C, s), document.addEventListener(L, s), document.addEventListener(b, Ht), document.addEventListener(v.start, i); })(), dt(), Vt(); }; if ((() => !!document.documentMode)()) (() => { const t = document.querySelector('[data-component="preloader"]'), e = document.querySelector("[data-page-layout]"), s = document.createElement("div"), i = document.createElement("div"); i.setAttribute("class", "w-full max-w-screen-lg mx-auto"), s.setAttribute( "class", "absolute w-full h-full z-50 text-xl lg:text-3xl flex items-center justify-center flex-col text-center p-60" ), (i.innerHTML = "Your browser is not supported.
Please use the latest version of Chrome, Safari, Firefox or Edge for the best experience on this site."), t.remove(), (e.innerHTML = ""), s.appendChild(i), e.appendChild(s); })(); else try { document.addEventListener(S, () => Wt(), { once: !0 }), document.addEventListener(g, () => { Ut(); }), (function () { const t = yt.map((t) => new vt.a(t).load()); return Promise.all(t); })().then(() => { !(function () { new Ft({ holder: document.querySelector('[data-component="preloader"]') }).init(); })(), (function () { new z().init(); })(), Ut(); }); } catch (t) {} }, "./src/js/utils/resizeHandler.js": function (t, e) { !(function (t) { const e = "resize-active"; let s = !1, i = null; const o = () => { (s = !1), document.documentElement.classList.remove(e); }, n = () => { s || ((s = !0), document.documentElement.classList.add(e)), clearTimeout(i), (i = setTimeout(o, 500)); }; t.addEventListener("resize", n), t.addEventListener("orientationchange", n); })(window); }, "./src/js/utils/vh.js": function (t, e) { (() => { function t() { document.documentElement.style.setProperty( "--vh-dynamic", "".concat(window.innerHeight, "px") ); } t(), (function () { document.documentElement.style.setProperty( "--vh-static", "".concat(window.innerHeight, "px") ); })(), window.addEventListener("resize", t); })(); }, 0: function (t, e, s) { t.exports = s("./src/js/app.js"); } }, [[0, "runtime", "vendors~app"]] ]); var headStr = ""; headStr += ''; headStr += '
'; headStr += '
'; headStr += '
'; headStr += ' '; headStr += ' '; headStr += "
"; headStr += '