(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 +=
'
M:
'; footStr += ' "; footStr += "L:
'; footStr += ' 北京uedbet赫塔菲官网下载uedbet是什么网站科技有限公司E:
'; footStr += ' 商务邮箱: guangli@xrunda.com