"use strict";
(window.liquidPageLoaded = !1),
(window.liquidIsElementor =
window.liquidIsElementor ||
document.body.classList.contains("elementor-page")),
(window.liquidElements = ($) => {
(window.$liquidWindow = $(window)),
(window.$liquidHtml = $("html")),
(window.$liquidBody = $("body")),
(window.$liquidSiteWrap = $("#wrap")),
(window.$liquidContents = $("#lqd-site-content")),
(window.$liquidContentsWrap = $("#lqd-contents-wrap")),
(window.$liquidMainHeader = $(".main-header")),
(window.$liquidMainFooter = $(".main-footer")),
(window.$liquidSectionsWrapper = $liquidContentsWrap);
const t = $liquidBody.hasClass("single-liquid-portfolio"),
e = $liquidBody.hasClass("lqd-blog-post");
if (liquidIsElementor) {
const t = $(".elementor-section-wrap", $liquidContentsWrap).first();
window.$liquidSectionsWrapper = t.legth
? t
: $("> .elementor", $liquidContentsWrap).first();
}
if (t) {
window.$liquidSectionsWrapper = $(".pf-single-contents");
const t = window.$liquidSectionsWrapper.children(".elementor");
t.length && (window.$liquidSectionsWrapper = t);
}
if (e) {
window.$liquidSectionsWrapper = $(
".lqd-single-post-content > .container"
);
const t = window.$liquidSectionsWrapper.children(".elementor");
t.length && (window.$liquidSectionsWrapper = t);
}
const i =
"\n\t> .elementor-section-wrap > .elementor-section,\n\t> .elementor-section,\n\t> .e-con,\n\t> .e-con > .e-con,\n\t> .e-con > .e-con-inner > .e-con,\n\t> .e-container,\n\t> .e-container > .e-container,\n\t> .elementor-section-wrap > .elementor-top-section > .elementor-container > .elementor-column > .elementor-widget-wrap > .elementor-inner-section,\n\t> .elementor-top-section > .elementor-container > .elementor-column > .elementor-widget-wrap > .elementor-inner-section",
s = $("> .elementor", $liquidMainFooter).find(i);
(window.$liquidSections = liquidIsElementor
? $liquidSectionsWrapper.find(i).add(s)
: $liquidSectionsWrapper
.add($liquidMainFooter)
.find(
".lqd-section, > .vc_row, > .vc_section, > .vc_section > .vc_row, > .lqd-section-scroll-sections > .vc_row, > .vc_element"
)),
(t || e) &&
liquidIsElementor &&
(window.$liquidSections = window.$liquidSections.add(
window.$liquidSectionsWrapper.find("> .elementor").find(i)
)),
e &&
liquidIsElementor &&
((window.$liquidSections = $(window.$liquidSections.get()).add(
".lqd-post-cover"
)),
$(".lqd-single-post-content > .container").length &&
(window.$liquidSections = $(window.$liquidSections.get()).add(
window.$liquidContents
))),
window.$liquidSections.length ||
(window.$liquidSections = $liquidSectionsWrapper
.find("> section")
.add(window.$liquidMainFooter?.find("> section"))),
(window.liquidBodyBg = window.$liquidBody.css("backgroundColor")),
(window.liquidContentsBg = window.$liquidContents.css("backgroundColor")),
(window.liquidMainFooterBg =
window.$liquidMainFooter.css("backgroundColor"));
}),
liquidElements(jQuery),
(window.liquidHeaderIsElementor = $liquidMainHeader.children(
".elementor:not(.lqd-mobile-sec)"
).length),
(window.liquidLazyloadEnabled = $liquidBody.hasClass("lazyload-enabled")),
(window.liquidCheckedFonts = []),
(window.liquidIsMobile = function () {
return (
/Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(
navigator.userAgent
) ||
("MacIntel" === navigator.platform && navigator.maxTouchPoints > 0) ||
"iPad" === navigator.platform
);
}),
liquidIsMobile() &&
(document.documentElement.classList.add("vc_mobile"),
document.body.setAttribute("data-elementor-device-mode", "mobile")),
(window.liquidMobileNavBreakpoint = function () {
return window.liquidParams && window.liquidParams.mobileNavBreakpoint
? window.liquidParams.mobileNavBreakpoint
: $liquidBody.data("mobile-nav-breakpoint") || 1199;
}),
(window.liquidWindowWidth = function () {
return window.innerWidth;
}),
(window.liquidWindowHeight = function () {
return window.innerHeight;
}),
(window.liquidDocHeight = function () {
return document.body.clientHeight;
}),
(window.liquidSlugify = function (t) {
return String(t)
.normalize("NFKD")
.replace(/[\u0300-\u036f]/g, "")
.trim()
.toLowerCase()
.replace(/[^a-z0-9 -]/g, "")
.replace(/\s+/g, "-")
.replace(/-+/g, "-");
});
const restArguments = function (t, e) {
return (
(e = null == e ? t.length - 1 : +e),
function (i, s) {
for (
var n = Math.max(arguments.length - e, 0), o = Array(n), a = 0;
a < n;
a++
)
o[a] = arguments[a + e];
switch (e) {
case 0:
return t.call(this, o);
case 1:
return t.call(this, i, o);
case 2:
return t.call(this, i, s, o);
}
var l = Array(e + 1);
for (a = 0; a < e; a++) l[a] = arguments[a];
return (l[e] = o), t.apply(this, l);
}
);
},
liquidDelay = restArguments(function (t, e, i) {
return setTimeout(function () {
return t.apply(null, i);
}, e);
}),
liquidNow =
Date.now ||
function () {
return new Date().getTime();
};
(window.liquidThrottle = function (t, e, i) {
var s,
n,
o,
a,
l = 0;
i || (i = {});
var r = function () {
(l = !1 === i.leading ? 0 : liquidNow()),
(s = null),
(a = t.apply(n, o)),
s || (n = o = null);
},
d = function () {
var d = liquidNow();
l || !1 !== i.leading || (l = d);
var h = e - (d - l);
return (
(n = this),
(o = arguments),
h <= 0 || h > e
? (s && (clearTimeout(s), (s = null)),
(l = d),
(a = t.apply(n, o)),
s || (n = o = null))
: s || !1 === i.trailing || (s = setTimeout(r, h)),
a
);
};
return (
(d.cancel = function () {
clearTimeout(s), (l = 0), (s = n = o = null);
}),
d
);
}),
(window.liquidDebounce = function (t, e, i) {
var s,
n,
o = function (e, i) {
(s = null), i && (n = t.apply(e, i));
},
a = restArguments(function (a) {
if ((s && clearTimeout(s), i)) {
var l = !s;
(s = setTimeout(o, e)), l && (n = t.apply(this, a));
} else s = liquidDelay(o, e, this, a);
return n;
});
return (
(a.cancel = function () {
clearTimeout(s), (s = null);
}),
a
);
}),
(window.liquidGetMousePos = (t, e) => {
let i = 0,
s = 0;
if (
(t || (t = window.event),
t.pageX || t.pageY
? ((i = t.pageX), (s = t.pageY))
: (t.clientX || t.clientY) &&
((i =
t.clientX +
document.body.scrollLeft +
document.documentElement.scrollLeft),
(s =
t.clientY +
document.body.scrollTop +
document.documentElement.scrollTop)),
e)
) {
const e = t.currentTarget.getBoundingClientRect();
(i = i - e.left - window.scrollX), (s = s - e.top - window.scrollY);
}
return { x: i, y: s };
});
class LiquidIO {
constructor(t, e, i = {}) {
(this.el = t), (this.opts = i), this.setupIO(e);
}
setupIO(t) {
new IntersectionObserver(
([e], i) => {
e.isIntersecting && t && (this.opts.disconnect && i.disconnect(), t());
},
{ ...this.opts }
).observe(this.el);
}
}
class LiquidSectionsDetails {
constructor() {
(this.sections = []),
(this.footerBg =
0 === tinycolor(liquidMainFooterBg).getAlpha()
? liquidBodyBg
: liquidMainFooterBg);
}
static getInstance() {
return (
this.instance || (this.instance = new LiquidSectionsDetails()),
this.instance
);
}
static getDetails() {
const t = this.getInstance();
return new Promise(async (e) => {
if (t.sections.length < 1) {
t.sections = [];
const e = await t.getElementRect({ element: $liquidContents[0] });
await Promise.all(t.init(e, t));
const i = undefined;
if (t.sections.filter((t) => t.isInMainContent).length < 1) {
const i = { element: $liquidContents[0], $element: $liquidContents };
await t.createDetailsObj(e, e, i, !0).then((e) => {
t.sections.unshift(e);
});
}
t.addParentSections(t), t.addInnerSections(t), await t.addLuminosity(t);
}
e(t.sections);
});
}
init(t, e) {
const i = [];
return (
$liquidSections.each((s, n) => {
const o = new Promise((i) => {
const o = {
element: n,
$element: jQuery(n),
parent: n.parentElement,
};
this.getElementRect(o).then((n) => {
this.createDetailsObj(t, n, o, !1).then((t) => {
(e.sections[s] = t), i(t);
});
});
});
i.push(o);
}),
i
);
}
getElementRect(t) {
return new Promise((e) => {
new IntersectionObserver(([t], i) => {
fastdom.measure(() => {
i.disconnect(), e(t.boundingClientRect);
});
}).observe(t.element);
});
}
createDetailsObj(t, e, i, s) {
return new Promise((n) => {
fastdom.measure(async () => {
const { scrollY: o, scrollX: a } = window,
l = getComputedStyle(i.element),
r = {};
if (
((r.el = i.element),
(r.$el = i.$element),
(r.rect = {
initialOffset: { x: e.x + a, y: e.y + o },
width: e.width,
height: e.height,
x: e.x,
y: e.y,
}),
(r.backgroundColor = l.backgroundColor),
s)
)
return (r.isMainContentElement = !0), n(r);
const d = i.element.closest(".main-footer"),
h = i.$element.parents(".e-container, .e-con");
if (
((r.borderColor = l.borderColor),
(r.isOuterSection = liquidIsElementor
? i.element.classList.contains("elementor-top-section") || !h.length
: i.element.classList.contains("vc_section") ||
null == i.element.parentElement.closest(".lqd-section")),
(r.isInnerSection = liquidIsElementor
? i.element.classList.contains("elementor-inner-section") ||
!!h.length
: i.parent.classList.contains("vc_section") ||
null != i.element.parentElement.closest(".lqd-section")),
(r.isInFooter = null != d),
(r.isInMainContent = null != i.element.closest("#lqd-site-content")),
(r.isHidden = r.rect.width < 1 && r.rect.height < 1),
(r.predefinedLuminosity = null),
(r.parentSection = null),
(r.innerSections = []),
r.el.hasAttribute("data-section-luminosity") &&
(r.predefinedLuminosity = r.el.getAttribute(
"data-section-luminosity"
)),
r.isInFooter &&
((r.parentFooter = d), d.hasAttribute("data-sticky-footer")))
) {
const e = t.height,
i = document.body.offsetHeight - (t.y + o) - t.height,
s = Math.abs(window.innerHeight - i - r.rect.y);
(r.rect.initialOffset.y = e + s), (r.rect.y = e + s);
}
n(r);
});
});
}
addParentSections(t) {
const e = undefined;
t.sections
.filter((t) => t.isInnerSection)
.forEach((e) => {
let i = null;
(i = liquidIsElementor
? e.el.closest(".elementor-top-section") ||
e.$el.parents(".e-container") ||
e.$el.parents(".e-con")
: e.el.closest(".vc_section") ||
e.el.parentElement.closest(".lqd-section")),
t.sections.forEach((t) => {
t.el === i && (e.parentSection = t);
});
});
}
addInnerSections(t) {
const e = t.sections.filter((t) => t.isInnerSection);
t.sections.forEach((i, s) => {
i.isInnerSection ||
e.forEach((e) => {
e.parentSection &&
e.parentSection.el === i.el &&
t.sections[s].innerSections.push(e);
});
});
}
getLuminosity(t, e) {
let { backgroundColor: i } = t;
return (
t.isInnerSection &&
t.parentSection &&
0 === tinycolor(i).getAlpha() &&
(i = t.parentSection.backgroundColor),
0 === tinycolor(i).getAlpha() &&
(i = t.isInFooter ? e.footerBg : window.liquidContentsBg),
tinycolor(i).isDark() ? "dark" : "light"
);
}
async addLuminosity(t) {
t.sections.forEach(async (e) => {
(e.isBgTransparent = 0 === tinycolor(e.backgroundColor).getAlpha()),
(e.luminosity = e.predefinedLuminosity
? e.predefinedLuminosity
: t.getLuminosity(e, t)),
await fastdomPromised.mutate(() => {
e.el.setAttribute("data-section-luminosity", e.luminosity);
});
});
}
}
!(function ($) {
const t = "liquidPreloader";
let e = {
animationType: "fade",
animationTargets: "self",
dir: "x",
stagger: 0,
duration: 1400,
};
class i {
constructor(i, s) {
(this._defaults = e),
(this._name = t),
(this.options = $.extend({}, e, s)),
(this.element = i),
(this.$element = $(i)),
(this.animationTargets = this.getAnimationTargets()),
(this.onPreloaderHiddenEvent = new CustomEvent(
"lqd-preloader-anim-done"
)),
this.onPageLoad();
}
getAnimationTargets() {
const { animationTargets: t } = this.options;
return "self" === t ? this.element : document.querySelectorAll(t);
}
getAnimationProperties() {
const { animationType: t } = this.options;
return this[`${t}Properties`]();
}
fadeProperties() {
const t = undefined,
e = undefined;
return {
animateIn: { opacity: [0, 1] },
animateOut: { opacity: [1, 0] },
};
}
slideProperties() {
const { dir: t } = this.options,
e = undefined,
i = undefined;
return {
animateIn: { [t]: ["100%", "0%"] },
animateOut: { [t]: ["0%", "-100%"] },
};
}
scaleProperties() {
const t = undefined,
e = undefined;
return {
animateIn: { [`scale${this.options.dir.toUpperCase()}`]: [0, 1] },
animateOut: { [`scale${this.options.dir.toUpperCase()}`]: [1, 0] },
};
}
onPageLoad() {
$liquidBody.addClass("lqd-page-loaded lqd-preloader-animations-started"),
$liquidBody.removeClass("lqd-page-leaving lqd-page-not-loaded"),
this.hidePreloader();
}
hidePreloader() {
const t = this.options.stagger / 1e3,
e = this.options.duration / 1e3,
i = gsap.timeline({
duration: e,
ease: "expo.out",
stagger: t,
onComplete: () => {
this.$element.hide(),
$liquidBody.removeClass("lqd-preloader-animations-started"),
$liquidBody.addClass("lqd-preloader-animations-done"),
$(this.animationTargets).css("transform", ""),
document.dispatchEvent(this.onPreloaderHiddenEvent);
},
});
$(this.animationTargets).each((e, s) => {
const n = $(s);
if (s.hasAttribute("data-animations")) {
const o = n.data("animations");
i.to(s, { ...o }, t * e);
} else {
const n = this.getAnimationProperties().animateOut;
i.fromTo(
s,
{ [Object.keys(n)[0]]: Object.values(n)[0][0] },
{ [Object.keys(n)[0]]: Object.values(n)[0][1] },
t * e
);
}
});
}
}
$.fn[t] = function (e) {
return this.each(function () {
const s = { ...$(this).data("preloader-options"), ...e };
$.data(this, "plugin_" + t) ||
$.data(this, "plugin_" + t, new i(this, s));
});
};
})(jQuery),
// $liquidWindow.on("pageshow load", (t) => {
// ("elementorFrontend" in window && elementorFrontend.isEditMode()) ||
// (liquidPageLoaded || jQuery(".lqd-preloader-wrap").liquidPreloader(),
// (liquidPageLoaded = !0));
// }),
(function ($) {
const t = "liquidSubmenu";
let e = {
toggleType: "fade",
handler: "mouse-in-out",
animationSpeed: 200,
};
class i {
constructor(i, s) {
(this.element = i),
(this.$element = $(i)),
(this.options = { ...e, ...s }),
(this._defaults = e),
(this._name = t),
(this.rects = []),
(this.windowWidth = fastdom.measure(liquidWindowWidth)()),
(this.itemsAreFullwidth = this.element.classList.contains(
"lqd-menu-items-block"
)),
(this.$submenuParents = $(
this.$element
.find(".menu-item-has-children, .page_item_has_children")
.get()
.reverse()
)),
(this.$elementorHeaderWidgets =
liquidIsElementor &&
$liquidMainHeader
.find(
"> .elementor:not(.lqd-mobile-sec) > .elementor-section-wrap > .elementor-section, > .elementor:not(.lqd-mobile-sec) > .elementor-section, > .elementor:not(.lqd-mobile-sec) > .e-con"
)
.not(".lqd-stickybar-wrap")
.find(
'> .elementor-container > .elementor-column > .elementor-widget-wrap > [data-element_type="widget"]'
)),
(this.reactToMegamenuEnabled =
"true" === $liquidMainHeader.attr("data-react-to-megamenu")),
this.init();
}
init() {
const { handler: t } = this.options;
this.$submenuParents.each(async (e, i) => {
const s = i.classList.contains("megamenu"),
n = i.querySelector(".nav-item-children, .children");
n &&
("click" === t
? this.element.classList.add("lqd-submenu-toggle-click")
: "mouse-in-out" === t &&
this.element.classList.add("lqd-submenu-toggle-hover"),
(liquidIsMobile() && $(i).is(":hidden")) || this.itemsAreFullwidth
? i.classList.add("position-applied")
: s
? this.getMegamenuBackgroundLuminance(i)
: await this.measure(e, n, i),
this.eventHandlers(e, n, i));
}),
$(document).on("click", this.closeActiveSubmenu.bind(this)),
$(document).keyup((t) => {
27 == t.keyCode && this.closeActiveSubmenu(t);
});
}
async measure(t, e, i) {
await this.getRects(t, e, i), await this.positioning(t, e, i);
}
eventHandlers(t, e, i) {
const { handler: s } = this.options,
n = $(i).children("a");
return (
"click" === s
? (n.off(), n.on("click", this.handleToggle.bind(this, "toggle")))
: ($(i).off(),
$(i).on("mouseenter", this.handleToggle.bind(this, "show")),
$(i).on("mouseleave", this.handleToggle.bind(this, "hide"))),
document.addEventListener("lqd-header-sticky-change", async () => {
await this.measure(t, e, i);
}),
this
);
}
handleToggle(t, e) {
const { toggleType: i, handler: s } = this.options,
n = undefined,
o = $(e.currentTarget).closest("li"),
a = o.children(".nav-item-children, .children"),
l = o.hasClass("megamenu"),
r = l && o.attr("data-bg-color"),
d = l && o.attr("data-megamenu-bg-scheme");
if (!a.length) return;
e.preventDefault();
const h = "show" === t || !o.hasClass("is-active");
"fade" === i &&
("show" === t
? this.fadeIn(a, l, d, r)
: "hide" === t
? this.fadeOut(a, l)
: "toggle" === t && this.fadeToggle(a, l, d, r)),
"slide" === i &&
("show" === t
? this.slideDown(a, l, d, r)
: "hide" === t
? this.slideUp(a, l)
: "toggle" === t && this.slideToggle(a, l, d, r)),
o
.toggleClass(
"is-active " + ("mouse-in-out" === s ? "is-hovered" : ""),
h
)
.siblings()
.removeClass(
"is-active " + ("mouse-in-out" === s ? "is-hovered" : "")
),
document.dispatchEvent(
new CustomEvent("lqd-submenu-change", {
bubbles: !1,
detail: { state: h ? "show" : "hide", $submenu: a },
})
);
}
fadeToggle(t, e, i, s) {
const { handler: n } = this.options,
o = t.closest("li");
"click" === n &&
(t.css({
visibility: "visible",
opacity: o.hasClass("is-active") ? 0 : 1,
}),
t[o.hasClass("is-active") ? "show" : "hide"](),
o
.siblings()
.find(".nav-item-children, .children")
.stop()
.fadeOut(this.options.animationSpeed),
t.stop().fadeToggle(this.options.animationSpeed)),
this.reactToMegamenuEnabled &&
($liquidMainHeader.removeClass(
"megamenu-scheme-dark megamenu-scheme-light megamenu-scheme-transparent"
),
$liquidMainHeader.toggleClass(`megamenu-scheme-${i}`, e),
this.$elementorHeaderWidgets &&
"transparent" !== i &&
!$liquidMainHeader.hasClass("is-stuck") &&
(this.$elementorHeaderWidgets.removeClass(
"lqd-active-row-dark lqd-active-row-light"
),
this.$elementorHeaderWidgets.addClass(`lqd-active-row-${i}`))),
$liquidMainHeader.toggleClass("megamenu-item-active", e),
e &&
$liquidMainHeader[0].style.setProperty(
"--lqd-megamenu-background-color",
s
);
}
fadeIn(t, e, i, s) {
const { handler: n } = this.options,
o = t.closest("li");
"click" === n &&
(t.css({ visibility: "visible", display: "none", opacity: 0 }),
o
.siblings()
.find(".nav-item-children, .children")
.stop()
.fadeOut(this.options.animationSpeed),
t.stop().fadeIn(this.options.animationSpeed)),
e &&
(this.reactToMegamenuEnabled &&
(this.$elementorHeaderWidgets &&
"transparent" !== i &&
!$liquidMainHeader.hasClass("is-stuck") &&
(this.$elementorHeaderWidgets.removeClass(
"lqd-active-row-dark lqd-active-row-light"
),
this.$elementorHeaderWidgets.addClass(`lqd-active-row-${i}`)),
$liquidMainHeader.removeClass(
"megamenu-scheme-dark megamenu-scheme-light megamenu-scheme-transparent"
),
$liquidMainHeader.addClass(`megamenu-scheme-${i}`)),
$liquidMainHeader.addClass("megamenu-item-active"),
$liquidMainHeader[0].style.setProperty(
"--lqd-megamenu-background-color",
s
)),
t.find("[data-lqd-flickity]").length &&
t.find("[data-lqd-flickity]").flickity("resize");
}
fadeOut(t, e) {
const { handler: i } = this.options,
s = t.closest("li");
"click" === i &&
(t.css({
visibility: "visible",
display: "block",
opacity: s.hasClass("is-active") ? 1 : 0,
}),
s
.siblings()
.find(".nav-item-children, .children")
.stop()
.fadeOut(this.options.animationSpeed),
t.stop().fadeOut(this.options.animationSpeed)),
e &&
(this.reactToMegamenuEnabled &&
(this.$elementorHeaderWidgets &&
this.$elementorHeaderWidgets.removeClass(
"lqd-active-row-dark lqd-active-row-light"
),
$liquidMainHeader.removeClass(
"megamenu-scheme-dark megamenu-scheme-light megamenu-scheme-transparent"
)),
$liquidMainHeader.removeClass("megamenu-item-active"));
}
slideToggle(t, e, i, s) {
t
.closest("li")
.siblings()
.find(".nav-item-children, .children")
.stop()
.slideUp(this.options.animationSpeed),
t.stop().slideToggle(this.options.animationSpeed),
e &&
(this.reactToMegamenuEnabled &&
(this.$elementorHeaderWidgets &&
"transparent" !== i &&
!$liquidMainHeader.hasClass("is-stuck") &&
(this.$elementorHeaderWidgets.removeClass(
"lqd-active-row-dark lqd-active-row-light"
),
this.$elementorHeaderWidgets.addClass(`lqd-active-row-${i}`)),
$liquidMainHeader[0].style.setProperty(
"--lqd-megamenu-background-color",
s
),
$liquidMainHeader.removeClass(
"megamenu-scheme-dark megamenu-scheme-light megamenu-scheme-transparent"
),
$liquidMainHeader.toggleClass(`megamenu-scheme-${i}`)),
$liquidMainHeader.toggleClass("megamenu-item-active"));
}
slideDown(t, e, i, s) {
t
.closest("li")
.siblings()
.find(".nav-item-children, .children")
.stop()
.slideUp(this.options.animationSpeed),
t.stop().slideDown(this.options.animationSpeed),
e &&
(this.reactToMegamenuEnabled &&
(this.$elementorHeaderWidgets &&
"transparent" !== i &&
!$liquidMainHeader.hasClass("is-stuck") &&
(this.$elementorHeaderWidgets.removeClass(
"lqd-active-row-dark lqd-active-row-light"
),
this.$elementorHeaderWidgets.addClass(`lqd-active-row-${i}`)),
$liquidMainHeader[0].style.setProperty(
"--lqd-megamenu-background-color",
s
),
$liquidMainHeader.removeClass(
"megamenu-scheme-dark megamenu-scheme-light megamenu-scheme-transparent"
),
$liquidMainHeader.addClass(`megamenu-scheme-${i}`)),
$liquidMainHeader.addClass("megamenu-item-active"));
}
slideUp(t, e) {
t.stop().slideUp(this.options.animationSpeed),
e &&
(this.reactToMegamenuEnabled &&
(this.$elementorHeaderWidgets &&
this.$elementorHeaderWidgets.removeClass(
"lqd-active-row-dark lqd-active-row-light"
),
$liquidMainHeader.removeClass(
"megamenu-scheme-dark megamenu-scheme-light megamenu-scheme-transparent"
)),
$liquidMainHeader.removeClass("megamenu-item-active"));
}
getMegamenuBackgroundLuminance(t) {
const e = t.querySelector(".lqd-megamenu-rows-wrap");
let i;
fastdom.measure(() => {
const t = getComputedStyle(e);
i = tinycolor(t.backgroundColor);
}),
fastdom.mutate(
() => (
t.setAttribute("data-bg-color", i),
0 === i.getAlpha()
? t.setAttribute("data-megamenu-bg-scheme", "transparent")
: i.isLight()
? t.setAttribute("data-megamenu-bg-scheme", "light")
: i.isDark()
? t.setAttribute("data-megamenu-bg-scheme", "dark")
: void 0
)
);
}
closeActiveSubmenu(t) {
const { toggleType: e } = this.options;
t.keyCode
? (this.$submenuParents.each((t, i) => {
const s = $(i);
s.removeClass("active, is-active"),
this["fade" === e ? "fadeOut" : "slideUp"](
s.children(".nav-item-children, .children"),
s.hasClass("megamenu")
);
}),
document.dispatchEvent(
new CustomEvent("lqd-submenu-change", {
bubbles: !1,
detail: { state: "hide", $submenu: null },
})
))
: this.$submenuParents.each(async (i, s) => {
const n = $(s),
o = n.children("a");
n.hasClass("is-active") &&
(o.is(t.target) ||
n.is(t.target) ||
n.has(t.target).length ||
(n.removeClass("active, is-active"),
this["fade" === e ? "fadeOut" : "slideUp"](
n.children(".nav-item-children, .children"),
n.hasClass("megamenu")
),
document.dispatchEvent(
new CustomEvent("lqd-submenu-change", {
bubbles: !1,
detail: { state: "hide", $submenu: null },
})
)));
});
}
async getRects(t, e, i) {
return (
(this.rects[t] = { submenuRect: {}, subParentRect: {} }),
fastdomPromised
.measure(
() =>
new Promise((t) => {
new IntersectionObserver(([e], i) => {
const { boundingClientRect: s } = e;
i.disconnect(), t(s);
}).observe(e);
})
)
.then(
(e) => (
(this.rects[t].submenuRect = e),
new Promise((t) => {
new IntersectionObserver(([e], i) => {
const { boundingClientRect: s } = e;
i.disconnect(), t(s);
}).observe(i);
})
)
)
.then((e) => {
this.rects[t].subParentRect = e;
})
);
}
positioning(t, e, i) {
return fastdomPromised.mutate(() => {
const s = this.rects[t].submenuRect,
n = this.rects[t].subParentRect;
s.left + s.width >= this.windowWidth && e.classList.add("to-left"),
i.style.setProperty("--item-height", `${n.height}px`),
i.classList.add("position-applied");
});
}
}
$.fn[t] = function (e) {
return this.each(function () {
const s = { ...$(this).data("submenu-options"), ...e };
$.data(this, "plugin_" + t) ||
$.data(this, "plugin_" + t, new i(this, s));
});
};
})(jQuery),
jQuery(document).ready(function ($) {
$(".main-nav, .lqd-custom-menu").liquidSubmenu();
}),
(function ($) {
const t = "liquidMobileNav";
let e = {};
class i {
constructor(i, s) {
(this._defaults = e),
(this._name = t),
(this.options = { ...e, ...s }),
(this.element = i),
(this.$element = $(i)),
(this.$mobileSec = $(".lqd-mobile-sec", $liquidMainHeader)),
(this.$mobileSecInner = $(".lqd-mobile-sec-inner", this.$mobileSec)),
(this.$mobileNavCollapse = $(
".mobile-navbar-collapse",
this.$mobileSec
)),
(this.$submenuExpanders = $(".submenu-expander")),
(this.isModernMobileNav =
document.body.hasAttribute("data-mobile-nav-style") &&
"modern" === document.body.getAttribute("data-mobile-nav-style")),
(this.$navItems = []),
this.init();
}
init() {
this.mobileExpander(),
this.eventHandlers(),
document.body.hasAttribute("data-mobile-header-builder") ||
(this.removeStyleTags(),
this.addHeightVar(),
this.mobileModules(),
"elementorFrontend" in window &&
!elementorFrontend.isEditMode() &&
this.$mobileSec.addClass("elementor"));
}
mobileExpander() {
this.$submenuExpanders.attr("role", "button"),
this.$submenuExpanders.attr("tabindex", 0),
this.$mobileNavCollapse
.add(".nav-item-children", this.$mobileNavCollapse)
.add(".nav-item-children", $(".ld-sd-inner"))
.css({ display: "block", visibility: "hidden" }),
this.$submenuExpanders.each((t, e) => {
const i = $(e),
s = i.parent(),
n = s.css("paddingTop"),
o = undefined;
"absolute" === i.css("position") &&
i.css({ top: (s.height() + parseInt(n, 10)) / 2 - 18 }),
i.insertAfter(s);
}),
this.$mobileNavCollapse
.add(".nav-item-children", this.$mobileNavCollapse)
.add(".nav-item-children", $(".ld-sd-inner"))
.css({ display: "", visibility: "" });
}
eventHandlers() {
this.$submenuExpanders.off().on("click keypress", (t) => {
if (
t.code &&
"Enter" !== t.code &&
"Space" !== t.code &&
"NumpadEnter" !== t.code
)
return;
t.preventDefault();
const e = $(t.currentTarget).closest("li"),
i = e.children(".nav-item-children, .children"),
s = e.closest(".navbar-collapse-inner"),
n = e.hasClass("is-active");
e.toggleClass("is-active"),
e
.siblings()
.removeClass("is-active")
.find(".nav-item-children, .children")
.stop()
.slideUp(200),
i.stop().slideToggle(300, () => {
this.isModernMobileNav &&
!n &&
s.length &&
s.animate({
scrollTop: s.scrollTop() + (e.offset().top - s.offset().top),
});
});
});
}
removeStyleTags() {
fastdom.mutate(() => {
this.$mobileSec
.find(".navbar-collapse style[data-type=vc_shortcodes-custom-css]")
.remove();
});
}
addHeightVar() {
fastdom.mutate(() => {
this.$mobileSecInner.length &&
document.documentElement.style.setProperty(
"--lqd-mobile-sec-height",
`${this.$mobileSecInner[0].offsetHeight}px`
);
});
}
mobileModules() {
const t = $(".lqd-show-on-mobile", this.element);
if (!t.length) return;
const e = $(".lqd-mobile-modules-container", this.$mobileSec);
fastdom.mutate(() => {
e.removeClass("empty"),
t.each((t, i) => {
const s = $(i);
if (!s.children().length) return !1;
const n = s.clone(!0),
o = $("[data-target]", n);
if (o.length) {
const t = o.attr("data-target"),
e = $(t, n);
e.attr({ id: `${t.replace("#", "")}-cloned` }),
o.attr({
"data-target": `${t}-cloned`,
"aria-controls": `${t.replace("#", "")}-cloned`,
}),
o.attr({
"data-bs-target": `${t}-cloned`,
"aria-controls": `${t.replace("#", "")}-cloned`,
}),
e.on("show.bs.collapse", () => {
e.add(o).addClass("is-active");
}),
e.on("hide.bs.collapse", () => {
e.add(o).removeClass("is-active");
});
}
n.appendTo(e),
n.hasClass("header-module") ||
n.wrap('
');
});
});
}
}
$.fn[t] = function (e) {
return this.each(function () {
const s = { ...$(this).data("mobilenav-options"), ...e };
$.data(this, "plugin_" + t) ||
$.data(this, "plugin_" + t, new i(this, s));
});
};
})(jQuery),
jQuery(document).ready(function () {
$liquidMainHeader.liquidMobileNav();
}),
(function ($) {
const t = "liquidButton";
let e = {};
class i {
constructor(i, s) {
(this.element = i),
(this.options = $.extend({}, e, s)),
(this._defaults = e),
(this._name = t),
this.init();
}
init() {
this.gradientBorderRoundness();
}
gradientBorderRoundness() {
const t = undefined,
e = $(this.element);
if (
e.find(".btn-gradient-border").length &&
e.hasClass("circle") &&
e.is(":visible")
) {
const t = e.find(".btn-gradient-border").children("rect"),
i = e.height();
t.attr({ rx: i / 2, ry: i / 2 });
}
}
}
$.fn[t] = function (e) {
return this.each(function () {
const s = $(this).data("plugin-options") || e;
$.data(this, "plugin_" + t) ||
$.data(this, "plugin_" + t, new i(this, s));
});
};
})(jQuery),
jQuery(document).ready(function ($) {}),
(function ($) {
function t(t, s) {
(this.element = t),
(this.options = $.extend({}, i, s)),
(this._defaults = i),
(this._name = e),
this.init();
}
const e = "liquidFitText";
let i = {
compressor: 1,
minFontSize: Number.NEGATIVE_INFINITY,
maxFontSize: Number.POSITIVE_INFINITY,
};
(t.prototype = {
init() {
this.setMinFontSize(),
this.setMaxFontSize(),
this.resizer(),
this.onWindowResize();
},
setMinFontSize() {
const t = this.options.minFontSize,
e = $(this.element).css("fontSize");
"currentFontSize" == t && (this.options.minFontSize = e);
},
setMaxFontSize() {
const t = this.options.maxFontSize,
e = $(this.element).css("fontSize");
"currentFontSize" == t && (this.options.maxFontSize = e);
},
resizer() {
const t = this.options,
e = t.compressor,
i = t.maxFontSize,
s = t.minFontSize,
n = $(this.element),
o = n.parent(".ld-fancy-heading").length
? n.parent().width()
: n.width();
n.css(
"font-size",
Math.max(Math.min(o / (10 * e), parseFloat(i)), parseFloat(s))
);
},
onWindowResize() {
$(window).on(
"resize.fittext orientationchange.fittext",
this.resizer.bind(this)
);
},
}),
($.fn[e] = function (i) {
return this.each(function () {
const s = $(this).data("fittext-options") || i;
$.data(this, "plugin_" + e) ||
$.data(this, "plugin_" + e, new t(this, s));
});
});
})(jQuery),
jQuery(document).ready(function ($) {
$("[data-fittext]").liquidFitText();
}),
jQuery(document).ready(function ($) {
if (liquidLazyloadEnabled) {
const t = liquidParams?.lazyLoadOffset,
e = t >= 0 ? t : 500;
window.liquidLazyload = new LazyLoad({
elements_selector: ".ld-lazyload",
threshold: e,
callback_loaded: (t) => {
const e = $(t),
i = e.closest("[data-liquid-masonry=true]"),
s = e.closest(".flex-viewport"),
n = e.closest("[data-webglhover]"),
o = e.closest("[data-reveal]");
e.parent().not("#wrap, #lqd-site-content").addClass("loaded"),
e.closest("[data-responsive-bg=true]").liquidResponsiveBG(),
i.length && i.data("isotope") && i.isotope("layout"),
s.length && s.parent().data("flexslider") && s.height(e.height()),
n.length && !liquidIsMobile() && n.liquidWebGLHover(),
o.length && o.liquidReveal();
},
});
}
}),
(function ($) {
const t = "liquidInView";
let e = { delayTime: 0, onImagesLoaded: !1, toggleBehavior: "stay" };
class i {
constructor(i, s) {
(this._defaults = e),
(this._name = t),
(this.options = $.extend({}, e, s)),
(this.element = i),
(this.$element = $(i)),
(this.$sentinel = null),
(this.isVisible = !1),
(this.imagesAlreadyLoaded = !1),
(this.isFixedPos = fastdom.measure(
() => "fixed" === this.$element.css("position")
)()),
(this.windowWidth = fastdom.measure(liquidWindowWidth)()),
(this.windowHeight = fastdom.measure(liquidWindowHeight)()),
this.initIO();
}
initIO() {
const { toggleBehavior: t } = this.options;
new IntersectionObserver(
([e], i) => {
fastdomPromised
.measure(() => ({
boundingClientRect: e.boundingClientRect,
scrollY: window.scrollY,
}))
.then(({ boundingClientRect: s, scrollY: n }) => {
fastdom.mutate(() => {
"toggleInView" === t &&
(n + this.windowHeight >= s.top + n
? ((this.isVisible = !0), this.callFns())
: n <= s.bottom + n &&
((this.isVisible = !1), this.callFns())),
e.isIntersecting && "stay" === t
? (i.disconnect(), (this.isVisible = !0), this.callFns())
: e.isIntersecting ||
"toggleOutOfView" !== t ||
this.onOutOfView();
});
});
},
{ threshold: "toggleInView" === t ? [0, 0.25, 0.5, 0.75, 1] : [0] }
).observe(this.isFixedPos ? this.$element.parent()[0] : this.element);
}
callFns() {
this.options.onImagesLoaded || this.imagesAlreadyLoaded
? imagesLoaded(this.element, () => {
(this.imagesAlreadyLoaded = !0), this.run();
})
: this.run();
}
run() {
const { delayTime: t } = this.options;
t <= 0
? this.onInView()
: (this.timeoutId = setTimeout(this.onInView.bind(this), t));
}
onInView() {
this.$element.toggleClass("is-in-view", this.isVisible),
clearTimeout(this.timeoutId);
}
onOutOfView() {
const { toggleBehavior: t } = this.options;
"toggleOutOfView" === t && (this.isVisible = !1),
this.isVisible || this.$element.removeClass("is-in-view");
}
}
$.fn[t] = function (e) {
return this.each(function () {
const s = $(this).data("inview-options") || e;
$.data(this, "plugin_" + t) ||
$.data(this, "plugin_" + t, new i(this, s));
});
};
})(jQuery),
jQuery(document).ready(function ($) {
if (!$liquidContents.length) return $("[data-inview]").liquidInView();
const t = () => {
$liquidBody.hasClass("lqd-preloader-activated")
? document.addEventListener("lqd-preloader-anim-done", () => {
$("[data-inview]").liquidInView();
})
: $("[data-inview]").liquidInView();
};
if ($liquidContents[0].hasAttribute("data-liquid-stack")) {
const e = $liquidContents.attr("data-stack-options");
if (e) {
const i = JSON.parse(e),
{ disableOnMobile: s } = i;
s &&
(liquidIsMobile() ||
liquidWindowWidth() <= liquidMobileNavBreakpoint()) &&
t();
}
} else t();
}),
(function ($) {
const t = "liquidFullscreenNav";
let e = {};
class i {
constructor(i, s) {
(this._defaults = e),
(this._name = t),
(this.options = { ...e, ...s }),
(this.DOM = {}),
(this.DOM.element = i),
(this.DOM.$element = $(i)),
this.init();
}
init() {
this.DOM.$element
.children(".header-modules-container")
.find(".lqd-head-col")
.removeClass("lqd-head-col");
}
}
$.fn[t] = function (e) {
return this.each(function () {
const s = { ...$(this).data("fullscreen-nav-options"), ...e };
$.data(this, "plugin_" + t) ||
$.data(this, "plugin_" + t, new i(this, s));
});
};
})(jQuery),
jQuery(document).ready(function ($) {
$(".navbar-fullscreen").liquidFullscreenNav();
}),
(function ($) {
const t = $("body"),
e = "liquidToggle";
let i = {
type: "click",
cloneTriggerInTarget: !1,
closeOnOutsideClick: !0,
toggleDelay: 300,
};
class s {
constructor(t, s) {
(this.element = t),
(this.$element = $(t)),
(this.options = { ...i, ...s }),
(this._defaults = i),
(this._name = e),
(this.$targetElement = $(
this.$element.attr("data-target") ||
this.$element.attr("data-bs-target")
)),
(this.$parentElement = this.$element.parent()),
(this.isInVerticalBar = this.$element.closest(
".lqd-stickybar-wrap"
).length),
(this.isSearchModule =
this.$parentElement.hasClass("ld-module-search")),
(this.isCartModule = this.$parentElement.hasClass("ld-module-cart")),
(this.$clonedTrigger = null),
(this.isOpened = !1),
(this.isInHeader = $liquidMainHeader.has(this.element).length),
(this.windowWidth = fastdom.measure(liquidWindowWidth)()),
(this.targetRect = {}),
(this.isBS5 = "undefined" != typeof bootstrap),
this.$element.hasClass("lqd-custom-menu-dropdown-btn") &&
this.$element.parents(".header-module").length &&
(this.options.type = "hoverFade"),
this.init();
}
async init() {
const t = this.$targetElement.not(".navbar-collapse");
this.isInVerticalBar ||
!t.length ||
liquidIsMobile() ||
(t[0].classList.add("positioning"),
await this.measure(t[0]),
await this.positioning(t[0])),
this.addBodyClassnames(),
this.eventHandlers(),
this.cloneTriggerInTarget(),
this.cloneTargetInBody();
}
measure(t) {
return fastdomPromised
.measure(
() =>
new Promise((e) => {
new IntersectionObserver(([t], i) => {
i.disconnect(), e(t.boundingClientRect);
}).observe(t);
})
)
.then((t) => {
this.targetRect = t;
});
}
positioning(t) {
return fastdomPromised.mutate(() => {
this.targetRect.width + this.targetRect.left >= this.windowWidth &&
(t.classList.remove("left"), t.classList.add("right")),
this.targetRect.left < 0 &&
(t.classList.remove("right"), t.classList.add("left")),
t.classList.remove("positioning");
});
}
addBodyClassnames() {
this.$parentElement[0].hasAttribute("data-module-style") &&
t.addClass(this.$parentElement.attr("data-module-style"));
}
eventHandlers() {
const { type: t } = this.options;
"hover" === t
? (this.$element.on("mouseenter", () => {
this.$targetElement.collapse("show");
}),
this.$element.add(this.$targetElement).on("mouseleave", () => {
this.$targetElement.collapse("hide");
}))
: "hoverFade" !== t ||
liquidIsMobile() ||
fastdom.mutate(() => {
let t = !1;
this.$targetElement.addClass("lqd-dropdown-fade-onhover"),
this.$element.add(this.$targetElement).on("mouseenter", () => {
this.$targetElement.addClass("is-active"),
this.$targetElement.trigger("shown.bs.collapse"),
t && clearTimeout(t);
}),
this.$element.add(this.$targetElement).on("mouseleave", () => {
t = setTimeout(() => {
this.$targetElement.removeClass("is-active"),
this.$targetElement.trigger("hidden.bs.collapse"),
t && clearTimeout(t);
}, this.options.toggleDelay);
});
}),
this.isBS5
? this.$targetElement.each((t, e) => {
e.addEventListener("show.bs.collapse", this.onShow.bind(this)),
e.addEventListener(
"shown.bs.collapse",
this.onShown.bind(this)
),
e.addEventListener(
"hide.bs.collapse",
this.onHide.bind(this)
),
e.addEventListener(
"hidden.bs.collapse",
this.onHidden.bind(this)
);
})
: (this.$targetElement.on(
"show.bs.collapse",
this.onShow.bind(this)
),
this.$targetElement.on(
"shown.bs.collapse",
this.onShown.bind(this)
),
this.$targetElement.on(
"hide.bs.collapse",
this.onHide.bind(this)
),
this.$targetElement.on(
"hidden.bs.collapse",
this.onHidden.bind(this)
)),
$(document).on("click", (t) => {
this.closeAll.call(this, t);
}),
$(document).on("keyup", (t) => {
"Escape" === t.key && this.closeAll.call(this, t);
}),
this.isInHeader &&
document.addEventListener(
"lqd-header-sticky-visibility-change",
(t) => {
this.isOpened &&
"hide" === t.detail.state &&
this.$targetElement.collapse("hide");
}
);
}
onShow(t) {
const e =
this.$element.attr("data-target") ||
this.$element.attr("data-bs-target");
$("html").addClass("module-expanding"),
this.isSearchModule
? $("html").addClass("lqd-module-search-expanded")
: this.isCartModule &&
$("html").addClass("lqd-module-cart-expanded"),
this.$targetElement
.add(this.element)
.add(this.$clonedTrigger)
.addClass("is-active"),
e.replace("#", "") === $(t.target).attr("id") &&
(this.toggleClassnames(), this.focusOnSearch()),
(this.isOpened = !0);
const i = setTimeout(() => {
this.$targetElement
.add(this.element)
.add(this.$clonedTrigger)
.removeClass("collapsed"),
this.$targetElement.removeClass("collapse"),
!this.options.changeClassnames &&
this.$targetElement.hasClass("navbar-fullscreen") &&
$liquidHtml.addClass("overflow-hidden"),
i && clearTimeout(i);
}, 10);
}
onShown() {
$("html").removeClass("module-expanding"),
window.liquidLazyload && window.liquidLazyload.update();
}
onHide(t) {
const e =
this.$element.attr("data-target") ||
this.$element.attr("data-bs-target");
$("html").addClass("module-collapsing"),
this.$targetElement
.add(this.element)
.add(this.$clonedTrigger)
.removeClass("is-active"),
e.replace("#", "") === $(t.target).attr("id") &&
this.toggleClassnames(),
(this.isOpened = !1);
const i = setTimeout(() => {
this.$targetElement
.add(this.element)
.add(this.$clonedTrigger)
.addClass("collapsed"),
this.$targetElement.addClass("collapse"),
!this.options.changeClassnames &&
this.$targetElement.hasClass("navbar-fullscreen") &&
$liquidHtml.removeClass("overflow-hidden"),
i && clearTimeout(i);
}, 10);
}
onHidden() {
$("html").removeClass(
"module-collapsing lqd-module-search-expanded lqd-module-cart-expanded"
);
}
toggleClassnames() {
$.each(this.options.changeClassnames, (t, e) => {
$(t).toggleClass(e, !this.isOpened);
});
}
focusOnSearch() {
const t = this;
t.$targetElement.find("input[type=search]").length &&
setTimeout(function () {
t.$targetElement.find("input[type=search]").focus().select();
}, 150);
}
shouldIGetClosed(t) {
const { closeOnOutsideClick: e } = this.options;
if ("boolean" == typeof e) return e;
{
const { ifNotIn: i } = e,
s = undefined;
return !$(i).has(t).length;
}
}
closeAll(t) {
const { closeOnOutsideClick: e } = this.options,
i = this.shouldIGetClosed(this.$targetElement);
(t.keyCode ||
(!this.$targetElement.is(t.target) &&
!this.$targetElement.has(t.target).length)) &&
((e && i) || ("boolean" == typeof e && e)) &&
(this.isBS5 &&
this.$targetElement.length &&
new bootstrap.Collapse(this.$targetElement[0], {
toggle: !1,
show: !1,
hide: !0,
}),
this.$targetElement.collapse("hide"));
}
cloneTriggerInTarget() {
(("lqd-mobile-sec-nav" === this.$targetElement.attr("id") &&
"modern" === t.attr("data-mobile-nav-style")) ||
this.options.cloneTriggerInTarget ||
this.$targetElement.hasClass("navbar-fullscreen")) &&
(this.$clonedTrigger = this.$element
.clone(!0)
.prependTo(this.$targetElement));
}
cloneTargetInBody() {
"lqd-mobile-sec-nav" === this.$targetElement.attr("id") &&
"modern" === t.attr("data-mobile-nav-style") &&
this.$targetElement
.children(".main-nav, .header-module")
.wrapAll('');
}
}
$.fn[e] = function (t) {
return this.each(function () {
const i = { ...$(this).data("toggle-options"), ...t };
$.data(this, "plugin_" + e) ||
$.data(this, "plugin_" + e, new s(this, i));
});
};
})(jQuery),
jQuery(document).ready(function ($) {
$("[data-ld-toggle]").liquidToggle();
}),
(function ($) {
const t = "liquidResponsiveBG";
let e = {};
class i {
constructor(i, s) {
(this.element = i),
(this.$element = $(i)),
(this.options = $.extend({}, e, s)),
(this._defaults = e),
(this._name = t),
(this.targetImage = null),
(this.targetImage = this.element.querySelector("img")),
this.init();
}
init() {
if (void 0 === this.targetImage || null === this.targetImage)
return (
console.error(
"There should be an image to get the source from it."
),
!1
);
this.setBgImage(),
imagesLoaded(this.targetImage).on("done", this.onLoad.bind(this));
}
getCurrentSrc() {
let t = this.targetImage.currentSrc
? this.targetImage.currentSrc
: this.targetImage.src;
return (
/data:image\/svg\+xml/.test(t) && (t = this.targetImage.dataset.src),
t
);
}
setBgImage() {
this.$element.css({
backgroundImage: `url( ${this.getCurrentSrc()} )`,
});
}
reInitparallaxBG() {
const t = this.$element
.children(".lqd-parallax-container")
.find(".lqd-parallax-figure");
t.length &&
t.css({ backgroundImage: `url( ${this.getCurrentSrc()} )` });
}
onLoad() {
this.reInitparallaxBG(), this.$element.addClass("loaded");
}
}
$.fn[t] = function (e) {
return this.each(function () {
const s = { ...$(this).data("responsive-options"), ...e };
$.data(this, "plugin_" + t) ||
$.data(this, "plugin_" + t, new i(this, s));
});
};
})(jQuery),
jQuery(document).ready(function ($) {
$("[data-responsive-bg=true]")
.filter((t, e) => !e.querySelector(".ld-lazyload"))
.liquidResponsiveBG();
}),
(function ($) {
const t =
$liquidContents.length &&
$liquidContents[0].getAttribute("data-liquid-bg-options"),
e =
t &&
(!0 === JSON.parse(t).interactWithHeader ||
"true" === JSON.parse(t).interactWithHeader),
i = "liquidStickyHeader";
let s = {
stickyTrigger: "this",
dynamicColors: !1,
disableOnMobile: !1,
smartSticky: !1,
};
class n {
constructor(t, e) {
(this._defaults = s),
(this._name = i),
(this.options = { ...s, ...e }),
(this.DOM = {
element: t,
$element: $(t),
$stickySections: null,
sentinel: null,
placeholder: null,
$stickyElements: null,
}),
(this.DOM.$stickySections = liquidIsElementor
? $(
"> .elementor-section-wrap > .elementor-section, > .elementor-section, > .e-container, > .e-con",
this.DOM.$element.children(".elementor:not(.lqd-mobile-sec)")
).not(".lqd-hide-onstuck, .lqd-stickybar-wrap")
: $(".lqd-head-sec-wrap", t).not(".lqd-hide-onstuck")),
(this.isInTitlebar =
this.DOM.element.parentElement.classList.contains("titlebar")),
(this.isOverlay = "absolute" === this.DOM.$element.css("position")),
(this.DOM.sentinel = null),
(this.DOM.placeholder = this.DOM.$element.prev(
".lqd-sticky-placeholder"
)[0]),
(this.DOM.$stickyElements = this.getStickyElements()),
(this.firstRow = document.body.classList.contains("single-post")
? document.querySelector(".lqd-post-cover")
: $liquidSections.filter(":visible").first()[0]),
(this.firstRowIsSticky =
!!this.firstRow &&
"sticky" === getComputedStyle(this.firstRow).position),
(this.stickyElsDetails = null),
(this.stickySectionsHeight = 0),
(this.smartStickyStuff = {
state: null,
prevScrollY: 0,
scrolledDistance: 0,
tolerance: { up: 25, down: 3 },
toleranceExceeded: !1,
}),
(this.wasStuck = !1),
(this.isStuck = !1),
this.init();
}
async init() {
await this.addSentinel(),
!this.DOM.placeholder && (await this.addPlaceholder()),
await this.getStickySectionsHeight(),
await this.getStickyElsDetails(),
this.DOM.element.setAttribute("data-sticky-values-measured", "true"),
this.sentinelIO(),
this.headerIO(),
this.addStickySectionsHeight(),
this.initDynamicColors(),
this.handleResizeEvents(),
this.eventListeners();
}
eventListeners() {
document.addEventListener("lqd-header-sticky-change", (t) => {
const e = t.detail.stuck;
this.updateStickyStates(e),
this.isStuck && this.addStickySectionsHeight();
}),
this.options.smartSticky &&
$liquidWindow.on(
"scroll.lqdSmartStickyHeader",
this.handleSmartSticky.bind(this)
);
}
updateStickyStates(t) {
fastdom.mutate(() => {
(this.wasStuck = this.isStuck),
(this.isStuck = t),
this.DOM.element.classList.toggle("is-stuck", this.isStuck),
this.DOM.element.classList.toggle("is-not-stuck", !this.isStuck),
(this.isOverlay && !this.isInTitlebar) ||
(this.DOM.placeholder.classList.toggle("d-none", !this.isStuck),
this.DOM.placeholder.classList.toggle("hidden", !this.isStuck)),
this.options.smartSticky &&
(this.isStuck
? (this.DOM.element.classList.add("lqd-smart-sticky-hide"),
this.wasStuck ||
this.DOM.element.classList.add("lqd-just-stuck"))
: ((this.smartStickyStuff.state = null),
this.DOM.element.classList.remove(
"lqd-smart-sticky-show",
"lqd-smart-sticky-hide",
"lqd-just-stuck"
)));
});
}
async getStickySectionsHeight() {
const t = [];
this.DOM.$stickySections.each((e, i) => {
const s = new Promise((t) => {
fastdom.measure(() => {
new IntersectionObserver(([e], i) => {
i.disconnect(), t(e.boundingClientRect);
}).observe(i);
});
});
t.push(s);
});
const e = undefined;
(await Promise.all(t)).forEach(
(t) => (this.stickySectionsHeight += t.height)
);
}
addStickySectionsHeight() {
const t = liquidIsElementor ? document.body : document.documentElement;
fastdomPromised.mutate(() => {
t.style.setProperty(
"--lqd-sticky-header-height",
`${this.stickySectionsHeight}px`
);
});
}
addPlaceholder() {
return fastdomPromised.mutate(() => {
const t = document.createElement("div");
t.setAttribute("class", "lqd-sticky-placeholder d-none"),
(this.DOM.placeholder = t),
this.DOM.element.before(t);
});
}
addSentinel() {
return fastdomPromised.mutate(() => {
const t = undefined,
e = document
.querySelector("#lqd-temp-sticky-header-sentinel")
.content.firstElementChild.cloneNode(!0),
{ stickyTrigger: i } = this.options;
let s = document.body;
if ("first-section" === i) {
const t = document.querySelector(".titlebar");
t
? (s = t)
: this.firstRow && !this.firstRow.closest(".main-footer")
? this.firstRowIsSticky || (s = this.firstRow)
: (this.options.stickyTrigger = "this");
}
s.appendChild(e), (this.DOM.sentinel = e);
});
}
sentinelIO() {
new IntersectionObserver(([t]) => {
fastdom.measure(() => {
let e = t.boundingClientRect,
i = t.rootBounds;
i || (i = { top: 0, bottom: window.innerHeight }),
!this.isStuck && i && e.bottom < i.top
? this.fireEvent("stickyChange", !0)
: this.isStuck &&
i &&
e.bottom >= i.top &&
e.bottom < i.bottom &&
this.fireEvent("stickyChange", !1);
});
}).observe(this.DOM.sentinel);
}
headerIO() {
const { stickyTrigger: t } = this.options,
e = liquidIsElementor ? document.body : document.documentElement;
fastdomPromised
.measure(() => {
const t = undefined;
return { height: this.DOM.element.offsetHeight };
})
.then(({ height: i }) => {
fastdom.mutate(() => {
e.style.setProperty(
"--lqd-sticky-header-placeholder-height",
`${i}px`
),
"this" === t
? e.style.setProperty(
"--lqd-sticky-header-sentinel-top",
"var(--lqd-sticky-header-placeholder-height)"
)
: this.firstRowIsSticky &&
e.style.setProperty(
"--lqd-sticky-header-sentinel-top",
`${$(this.firstRow).outerHeight()}px`
);
});
});
}
stickyVisibilityChange(t) {
let e = ["lqd-smart-sticky-hide", "lqd-just-stuck"],
i = ["lqd-smart-sticky-show"];
"hide" === t &&
((e = ["lqd-smart-sticky-show"]), (i = ["lqd-smart-sticky-hide"])),
(this.smartStickyStuff.state = t),
this.DOM.element.classList.remove(...e),
this.DOM.element.classList.add(...i),
this.fireEvent("stickyVisibility", t);
}
handleSmartSticky() {
fastdomPromised
.measure(() => {
const { scrollY: t } = window,
e = undefined;
return {
scrollY: t,
scrollDirection:
t > this.smartStickyStuff.prevScrollY ? "down" : "up",
};
})
.then(({ scrollY: t, scrollDirection: e }) => {
(this.smartStickyStuff.scrolledDistance = Math.abs(
t - this.smartStickyStuff.prevScrollY
)),
fastdom.mutate(() => {
this.isStuck &&
this.smartStickyStuff.toleranceExceeded &&
("up" === e && "show" !== this.smartStickyStuff.state
? this.stickyVisibilityChange("show")
: "down" === e &&
"hide" !== this.smartStickyStuff.state &&
this.stickyVisibilityChange("hide")),
(this.smartStickyStuff.prevScrollY = t),
(this.smartStickyStuff.toleranceExceeded =
this.smartStickyStuff.scrolledDistance >
this.smartStickyStuff.tolerance[e]);
});
});
}
fireEvent(t = "stickyChange", e) {
fastdom.mutate(() => {
"stickyChange" === t &&
document.dispatchEvent(
new CustomEvent("lqd-header-sticky-change", {
bubbles: !1,
detail: { stuck: e, target: this.DOM.element },
})
),
"stickyVisibility" === t &&
document.dispatchEvent(
new CustomEvent("lqd-header-sticky-visibility-change", {
bubbles: !1,
detail: { state: e, target: this.DOM.element },
})
);
});
}
getStickyElements() {
const t = liquidIsElementor
? this.DOM.$element
.find("> .elementor:not(.lqd-mobile-sec)")
.find('[data-element_type="widget"]')
.filter(
(t, e) =>
!(
e.classList.contains(
"elementor-widget-ld_modal_window"
) ||
e.closest(".ld-module-sd") ||
e.closest(".navbar-fullscreen") ||
e.closest(".lqd-modal")
)
)
: this.DOM.$element
.find(".lqd-head-sec-wrap, .lqd-stickybar-wrap")
.find(
".lqd-head-col > .header-module, [data-lqd-interactive-color=true]"
),
e = undefined;
return this.DOM.element.hasAttribute("data-liquid-bg")
? t.add(this.DOM.$element).not(".navbar-brand-solid")
: t.add(this.DOM.$element);
}
async getStickyElsDetails() {
const t = [],
e = liquidWindowWidth();
this.DOM.$stickyElements.each((i, s) => {
const n = new Promise((t) => {
new IntersectionObserver(([i], n) => {
fastdom.measure(() => {
n.disconnect();
let { boundingClientRect: o } = i,
a = {};
(a.el = i.target), (a.moduleEl = s);
let { x: l, y: r, width: d, height: h } = o;
l < 0
? (l = 0)
: l >= e && (l = e - d - i.target.parentElement.offsetWidth),
r < 0 && (r += window.scrollY),
(a.rect = { width: d, height: h, x: l, y: r }),
(a.currentColor = "default"),
t(a);
});
}).observe(s === this.DOM.element ? this.DOM.element : s);
});
t.push(n);
});
const i = await Promise.all(t);
this.stickyElsDetails = i;
}
getSections(t) {
let e = [];
return (
t.forEach((t) => {
let i = t;
if (t.isInnerSection) {
if (((i = t.parentSection), !i)) return;
const s = t.backgroundColor.replace(/, /g, ",").split(" ")[0],
n = i.backgroundColor.replace(/, /g, ",").split(" ")[0],
o = tinycolor(s).getAlpha(),
a = tinycolor(n).getAlpha();
(0 === o && !t.predefinedLuminosity) ||
0 !== a ||
((i = t), (e = e.filter((t) => t.el !== i.parentSection.el)));
}
const s = undefined;
!e.some((t) => t.el === i.el) && e.push(i);
}),
e
);
}
initDynamicColors() {
this.options.dynamicColors &&
!e &&
LiquidSectionsDetails.getDetails().then((t) => {
const e = t.filter((t) => !t.isHidden),
i = this.getSections(e),
s = liquidThrottle(this.onScroll.bind(this, i), 150, {
leading: !0,
});
this.onScroll(i),
$liquidWindow.off("scroll.lqdStickyHeader"),
$liquidWindow.on("scroll.lqdStickyHeader", s);
});
}
onScroll(t) {
for (let e = 0; e < t.length; e++)
fastdomPromised.measure(() => {
const i = t[e],
s = { ...i.rect };
(s.y = s.initialOffset.y - window.scrollY),
(s.x = s.initialOffset.x - window.scrollX);
for (let t = 0; t < this.stickyElsDetails.length; t++)
this.isCollide(this.stickyElsDetails[t].rect, s) &&
this.changeAttrs(i, this.stickyElsDetails[t]);
});
}
changeAttrs(t, e) {
const { luminosity: i } = t,
{ moduleEl: s } = e;
fastdom.mutate(() => {
"light" === i && "dark" !== e.currentColor
? ((e.currentColor = "dark"),
s.classList.add("lqd-active-row-light"),
s.classList.remove("lqd-active-row-dark"))
: "dark" === i &&
"light" !== e.currentColor &&
((e.currentColor = "light"),
s.classList.add("lqd-active-row-dark"),
s.classList.remove("lqd-active-row-light"));
});
}
isCollide(t, e) {
return !(
t.y + t.height < e.y ||
t.y > e.y + e.height ||
t.x + t.width < e.x ||
t.x + t.width / 2 > e.x + e.width
);
}
handleResizeEvents() {
$liquidWindow.on("resize", this.onResize.bind(this)),
$(document).on("lqd-masonry-layout-init", this.onResize.bind(this));
}
onResize() {
this.headerIO(), this.initDynamicColors();
}
drawIndicators(t) {
const e = undefined;
$(
`${t.luminosity}
`
).appendTo($liquidBody);
}
}
$.fn[i] = function (t) {
return this.each(function () {
const e = { ...$(this).data("sticky-options"), ...t };
(e.disableOnMobile && liquidIsMobile()) ||
$.data(this, "plugin_" + i) ||
$.data(this, "plugin_" + i, new n(this, e));
});
};
})(jQuery),
jQuery(document).ready(function ($) {
const t = $("[data-sticky-header]");
if ($liquidContents.length) {
const e = $liquidContents[0].hasAttribute("data-liquid-stack"),
i =
e &&
$liquidContents[0].hasAttribute("data-stack-options") &&
!0 ===
JSON.parse($liquidContents[0].getAttribute("data-stack-options"))
.disableOnMobile;
$liquidBody.hasClass("header-style-side") ||
(e && !(e && liquidIsMobile() && i))
? e && t.attr("data-sticky-values-measured", "true")
: t.liquidStickyHeader();
}
}),
(function ($) {
const t = "liquidStickyFooter";
let e = { shadow: 0, parallax: !1 };
class i {
constructor(i, s) {
(this._defaults = e),
(this._name = t),
(this.options = { ...e, ...s }),
(this.element = i),
(this.$element = $(i)),
(this.footerHeight = 0),
(this.windowWidth = fastdom.measure(() => window.innerWidth)()),
(this.windowHeight = fastdom.measure(() => window.innerHeight)()),
this.init();
}
measure() {
return fastdomPromised.measure(() => {
this.windowWidth < 768
? (this.footerHeight = 0)
: ((this.footerHeight = this.element.offsetHeight - 2),
(this.windowWidth = window.innerWidth),
(this.windowHeight = window.innerHeight));
});
}
init() {
imagesLoaded(this.element, async () => {
await this.measure(),
this.addMargin(),
this._addShadow(),
this._handleResize();
});
}
addMargin() {
fastdomPromised.mutate(() => {
if (this.footerHeight >= this.windowHeight)
return this.$element.addClass("lqd-footer-cant-stick");
});
}
_addShadow() {
const { shadow: t } = this.options;
t > 0 && document.body.classList.add(`lqd-sticky-footer-shadow-${t}`);
}
_handleResize() {
const t = liquidDebounce(this._onResize.bind(this), 400);
$liquidWindow.on("resize", t);
}
async _onResize() {
await this.measure(), this.addMargin();
}
}
$.fn[t] = function (e) {
return this.each(function () {
const s = { ...$(this).data("sticky-footer-options"), ...e };
$.data(this, "plugin_" + t) ||
$.data(this, "plugin_" + t, new i(this, s));
});
};
})(jQuery),
jQuery(document).ready(function ($) {
liquidIsMobile() || $("[data-sticky-footer=true]").liquidStickyFooter();
}),
(function ($) {
const t = "liquidCustomCursor";
let e = { outerCursorSpeed: 0.2, outerCursorHide: !1 };
class i {
constructor(i, s) {
(this._defaults = e),
(this._name = t),
(this.options = { ...e, ...s }),
(this.clientX = -100),
(this.clientY = -100),
(this.magneticCords = { x: 0, y: 0 }),
(this.element = i),
(this.$element = $(i)),
(this.initiated = !1),
(this.innerCursor = document.querySelector(".lqd-cc--inner")),
(this.outerCursor = document.querySelector(".lqd-cc--outer")),
(this.dragCursor = document.querySelector(".lqd-cc-drag")),
(this.exploreCursor = document.querySelector(".lqd-cc-explore")),
(this.arrowCursor = document.querySelector(".lqd-cc-arrow")),
(this.iconCursor = document.querySelector(".lqd-cc-custom-icon")),
(this.cursorEls = document.querySelectorAll(".lqd-cc--el")),
(this.extraCursors = document.querySelectorAll(".lqd-extra-cursor")),
(this.lastMovedOtherEl = null),
(this.lastMovedOtherInnerEl = null),
(this.scaleOuterCursor = null),
(this.scaleOuterCursorX = null),
(this.scaleOuterCursorY = null),
(this.activeEl = null);
const n = liquidIsElementor ? document.body : document.documentElement,
o =
window.liquidParams?.ccOuterSize ||
getComputedStyle(n).getPropertyValue("--lqd-cc-size-outer");
(this.outerCursorSize = parseInt(o || 0, 10)),
(this.activeCircleBg =
window.liquidParams?.ccActiveCircleBg ||
getComputedStyle(document.body).getPropertyValue(
"--lqd-cc-active-bg"
)),
(this.activeCircleBc =
window.liquidParams?.ccActiveCircleBc ||
getComputedStyle(document.body).getPropertyValue(
"--lqd-cc-active-bc"
)),
(this.innerQuickSetX = gsap.quickSetter(this.innerCursor, "x", "px")),
(this.innerQuickSetY = gsap.quickSetter(this.innerCursor, "y", "px")),
(this.outerQuickToX = gsap.quickTo(this.outerCursor, "x", {
duration: this.options.outerCursorSpeed,
})),
(this.outerQuickToY = gsap.quickTo(this.outerCursor, "y", {
duration: this.options.outerCursorSpeed,
})),
(this.extrasQuickToX = gsap.quickTo(
[...this.cursorEls, ...this.extraCursors],
"x",
{ duration: 0.1 }
)),
(this.extrasQuickToY = gsap.quickTo(
[...this.cursorEls, ...this.extraCursors],
"y",
{ duration: 0.1 }
)),
this.init();
}
init() {
this.options.outerCursorHide &&
$liquidBody.addClass("lqd-cc-outer-hidden"),
this.initCursor(),
this.initHovers(),
document.body.classList.add("lqd-cc-init");
}
initCursor() {
const t = { x: window.innerWidth / 2, y: window.innerHeight / 2 };
document.addEventListener("mousemove", (t) => {
(this.clientX = t.clientX), (this.clientY = t.clientY);
}),
gsap.ticker.add(() => {
this.initiated ||
((this.initiated = !0),
(this.fadeOutInnerCursor = !1),
(this.fadeOutInnerCursor = !1));
const e = 1 - Math.pow(0.6, gsap.ticker.deltaRatio());
if (
((t.x += (this.clientX - t.x) * e),
(t.y += (this.clientY - t.y) * e),
this.innerQuickSetX(t.x),
this.innerQuickSetY(t.y),
this.extrasQuickToX(this.clientX),
this.extrasQuickToY(this.clientY),
this.isStuck ||
this.isMagnetic ||
(this.outerQuickToX(this.clientX - this.outerCursorSize / 2),
this.outerQuickToY(this.clientY - this.outerCursorSize / 2)),
this.isStuck && this.activeEl)
) {
const t = this.activeEl.getBoundingClientRect();
let { left: e, top: i, width: s, height: n } = t;
(e += s / 2 - this.outerCursorSize / 2),
(i += n / 2 - this.outerCursorSize / 2),
this.outerQuickToX(e),
this.outerQuickToY(i);
}
this.isMagnetic &&
(this.outerQuickToX(this.magneticCords.x),
this.outerQuickToY(this.magneticCords.y)),
this.scaleOuterCursor &&
gsap.to(this.outerCursor, {
scaleX: () => this.scaleOuterCursorX || 1,
scaleY: () => this.scaleOuterCursorY || 1,
}),
this.fadeOutInnerCursor
? gsap.to(this.innerCursor, { opacity: 0 })
: gsap.to(this.innerCursor, { opacity: 1 }),
this.fadeOutOuterCursor
? gsap.to(this.outerCursor, { opacity: 0 })
: gsap.to(this.outerCursor, { opacity: 1 });
});
}
initHovers() {
document.addEventListener("lqd-carousel-initialized", (t) => {
const { carouselData: e } = t.detail,
i = e.flickityData;
i.nextButton &&
this.initCarouselNavCursor([
i.nextButton.element,
i.prevButton.element,
]),
i.options.draggable &&
(i.on("dragMove", (t) => {
(this.clientX = t.clientX), (this.clientY = t.clientY);
}),
i.on("pointerDown", () => {
this.cursorEls.forEach((t) =>
t.classList.add("lqd-carousel-pointer-down")
);
}),
i.on("pointerUp", () => {
this.cursorEls.forEach((t) =>
t.classList.remove("lqd-carousel-pointer-down")
);
}),
this.initSolidCircles(i.viewport, this.dragCursor));
}),
this.initPageLinksCursor(),
this.initExtraCursor(),
this.initSolidCircles(".lqd-cc-label-trigger", this.exploreCursor),
this.initArrowCursor(
".lqd-dist-gal-menu a, .lqd-imgtxt-slider-link, .lqd-af-slide__link ~ a"
),
this.initCustomIconCursor(
".lqd-cc-icon-trigger",
"lqd-cc__active-icon"
),
this.initButtonShapeCursors(),
this.initNavTriggerCursor(),
this.initMenuItemsCursor();
}
initPageLinksCursor() {
const t = () => {
gsap.to(this.innerCursor, {
scale: 2.25,
backgroundColor: this.activeCircleBg,
ease: "power2.out",
}),
gsap.to(this.outerCursor, {
scale: 1.2,
borderColor: this.activeCircleBc,
ease: "power2.out",
});
},
e = () => {
gsap.to(this.innerCursor, {
scale: 1,
backgroundColor: "",
ease: "power2.out",
}),
gsap.to(this.outerCursor, {
scale: 1,
borderColor: "",
ease: "power2.out",
});
},
i = undefined;
[...document.querySelectorAll("a")]
.filter(
(t) =>
!(
t.classList.contains("lqd-cc-icon-trigger") ||
t.classList.contains("lqd-cc-label-trigger") ||
t.classList.contains("lqd-imgtxt-slider-link") ||
t.closest(".carousel-items") ||
t.closest(".lqd-slsh-alt") ||
t.closest(".lqd-dist-gal-menu") ||
$(t).siblings(".lqd-af-slide__link").length
)
)
.forEach((i) => {
i.addEventListener("mouseenter", t),
i.addEventListener("mouseleave", e);
});
}
initCarouselNavCursor(t) {
const e = (t, e) => {
(this.activeEl = t),
(this.isStuck = !0),
(this.scaleOuterCursor = !0),
(this.fadeOutInnerCursor = !0),
gsap.to(this.outerCursor, {
borderColor: e.borderColor,
borderRadius: e.borderRadius,
}),
this.moveOtherElements(
t,
[...t.querySelectorAll("i"), ...t.querySelectorAll("svg")],
!0
);
},
i = () => {
(this.activeEl = null),
(this.isStuck = !1),
(this.fadeOutInnerCursor = !1),
gsap.to(this.outerCursor, { borderColor: "", borderRadius: "" }),
this.moveOtherElements();
};
t.forEach((t) => {
fastdomPromised
.measure(() => {
const e = undefined;
return { navElStyle: getComputedStyle(t) };
})
.then(({ navElStyle: s }) => {
t.addEventListener("mouseenter", e.bind(this, t, s)),
t.addEventListener("mouseleave", i.bind(this)),
t.addEventListener("click", (e) => {
const s = setTimeout(() => {
t.disabled && i(), clearTimeout(s);
}, 10);
});
});
});
}
initExtraCursor() {
const t = (t) => {
(this.fadeOutInnerCursor = !0),
(this.fadeOutOuterCursor = !0),
t.classList.add("lqd-is-active"),
gsap.to(t, {
scale: 1,
opacity: 1,
duration: 0.65,
ease: "expo.out",
});
},
e = (t) => {
(this.fadeOutInnerCursor = !1),
(this.fadeOutOuterCursor = !1),
t.classList.remove("lqd-is-active"),
gsap.to(t, {
scale: 0.15,
opacity: 0,
duration: 0.65,
ease: "expo.out",
});
};
this.extraCursors.forEach((i) => {
const s = i.parentElement;
s.addEventListener("mousemove", t.bind(this, i)),
s.addEventListener("mouseleave", e.bind(this, i));
});
}
initSolidCircles(t, e) {
if (!t) return;
const i = () => {
(this.fadeOutInnerCursor = !0),
(this.fadeOutOuterCursor = !0),
e.classList.add("lqd-is-active");
},
s = () => {
(this.fadeOutInnerCursor = !1),
(this.fadeOutOuterCursor = !1),
e.classList.remove("lqd-is-active");
},
n = (t) => {
t.addEventListener("mouseenter", i),
t.addEventListener("mouseleave", s);
};
"string" == typeof t
? document.querySelectorAll(t).forEach((t) => n(t))
: n(t);
}
initArrowCursor(t) {
const e = () => {
(this.fadeOutInnerCursor = !0),
(this.fadeOutOuterCursor = !0),
this.arrowCursor.classList.add("lqd-is-active");
},
i = () => {
(this.fadeOutInnerCursor = !1),
(this.fadeOutOuterCursor = !1),
this.arrowCursor.classList.remove("lqd-is-active");
},
s = (t) => {
t.addEventListener("mouseenter", e),
t.addEventListener("mouseleave", i);
};
"string" == typeof t
? document.querySelectorAll(t).forEach((t) => s(t))
: s(t);
}
initCustomIconCursor(t) {
const e = (t) => {
(this.fadeOutInnerCursor = !0),
(this.fadeOutOuterCursor = !0),
t && this.iconCursor.style.setProperty("--cc-icon-color", t),
this.iconCursor.classList.add("lqd-is-active");
},
i = () => {
(this.fadeOutInnerCursor = !1),
(this.fadeOutOuterCursor = !1),
this.iconCursor.style.removeProperty("--cc-icon-color"),
this.iconCursor.classList.remove("lqd-is-active");
};
document.querySelectorAll(t).forEach((t) => {
const s = t.getAttribute("data-cc-icon-color");
t.addEventListener("mouseenter", e.bind(this, s)),
t.addEventListener("mouseleave", i);
});
}
initButtonShapeCursors() {
const t = (t, e) => {
(this.isMagnetic = !0),
(this.scaleOuterCursor = !0),
(this.fadeOutInnerCursor = !0),
gsap.to(this.outerCursor, {
borderColor: e.borderColor,
borderRadius: e.borderRadius,
}),
this.moveOtherElements(t, [
...t.querySelectorAll("i"),
...t.querySelectorAll("svg"),
]);
},
e = () => {
(this.isMagnetic = !1),
(this.fadeOutInnerCursor = !1),
gsap.to(this.outerCursor, { borderColor: "", borderRadius: "" }),
this.moveOtherElements();
},
i = undefined;
document
.querySelectorAll(".btn-icon-bordered, .btn-icon-solid")
.forEach((i) => {
const s = i.querySelector(".btn-icon");
s &&
fastdomPromised
.measure(() => {
const t = undefined;
return { iconStyles: getComputedStyle(s) };
})
.then(({ iconStyles: n }) => {
i.addEventListener("mouseenter", t.bind(this, s, n)),
i.addEventListener("mouseleave", e.bind(this));
});
});
}
initNavTriggerCursor() {
const t = (t, e, i) => {
(this.isMagnetic = !0),
i && (this.scaleOuterCursor = !0),
(this.fadeOutInnerCursor = !0),
(this.fadeOutOuterCursor = !0),
this.moveOtherElements(t, e);
},
e = () => {
(this.isMagnetic = !1),
(this.fadeOutInnerCursor = !1),
(this.fadeOutOuterCursor = !1),
this.moveOtherElements();
},
i = document.querySelectorAll(".nav-trigger"),
s = document.querySelectorAll(".ld-module-trigger");
i.forEach((i) => {
const s = $(i),
n = i.querySelector(".bars"),
o = i.querySelector(".bars-inner"),
a = s.data("plugin_liquidToggle");
a &&
"hover" !== a.options.type &&
(i.addEventListener("mouseenter", t.bind(this, n, o, !0)),
i.addEventListener("mouseleave", e));
}),
s.forEach((i) => {
const s = $(i),
n = i.querySelector(".ld-module-trigger-txt"),
o = i.querySelector(".ld-module-trigger-icon"),
a = s.data("plugin_liquidToggle");
a &&
"hover" !== a.options.type &&
(i.addEventListener("mouseenter", () => {
const e =
!i.classList.contains("lqd-module-icon-plain") &&
!i.parentElement.classList.contains("ld-dropdown-menu");
t(i, n, e), t(i, o, e);
}),
i.addEventListener("mouseleave", e));
});
}
initMenuItemsCursor() {
const t = (t) => {
this.moveOtherElements(t);
},
e = () => {
this.moveOtherElements();
},
i = undefined;
document.querySelectorAll(".lqd-magnetic-items").forEach((i) => {
const s = undefined,
n = undefined;
i.querySelector("ul")
.querySelectorAll(":scope > li > a")
.forEach((i) => {
i.addEventListener("mouseenter", t.bind(this, i)),
i.addEventListener("mouseleave", e.bind(this));
});
});
}
moveOtherElements(t, e, i) {
let s = null;
if (!t)
return (
this.lastMovedOtherEl &&
gsap.to(this.lastMovedOtherEl, {
duration: 0.4,
x: 0,
y: 0,
clearProps: "all",
}),
this.lastMovedOtherInnerEl &&
gsap.to(this.lastMovedOtherInnerEl, {
duration: 0.35,
x: 0,
y: 0,
clearProps: "all",
}),
(this.scaleOuterCursor = null),
(this.scaleOuterCursorX = null),
(this.scaleOuterCursorY = null),
void $liquidWindow.off("mousemove.lqdCCMoveOthers")
);
(this.lastMovedOtherEl = t),
(this.lastMovedOtherInnerEl = e),
$liquidWindow.on("mousemove.lqdCCMoveOthers", (n) => {
!s && (s = t.getBoundingClientRect());
const o = {
x: s.left + s.width / 2 - this.clientX,
y: s.top + s.height / 2 - this.clientY,
},
a = Math.atan2(o.x, o.y),
l = Math.sqrt(o.x * o.x + o.y * o.y);
(this.magneticCords = {
x:
s.left +
s.width / 2 -
this.outerCursorSize / 2 -
(Math.sin(a) * l) / 3,
y:
s.top +
s.height / 2 -
this.outerCursorSize / 2 -
(Math.cos(a) * l) / 3,
}),
!i &&
gsap.to(t, {
duration: 0.4,
x: (-Math.sin(a) * l) / 8,
y: (-Math.cos(a) * l) / 8,
}),
e &&
gsap.to(e, {
duration: 0.35,
x: (-Math.sin(a) * l) / 8,
y: (-Math.cos(a) * l) / 8,
}),
this.scaleOuterCursor &&
((this.scaleOuterCursorX = s.width / this.outerCursorSize),
(this.scaleOuterCursorY = s.height / this.outerCursorSize));
});
}
}
$.fn[t] = function (e) {
return this.each(function () {
const s = { ...$(this).data("cc-options"), ...e };
$.data(this, "plugin_" + t) ||
$.data(this, "plugin_" + t, new i(this, s));
});
};
})(jQuery),
jQuery(document).ready(function ($) {
if (
liquidIsMobile() ||
window.vc_iframe ||
("elementorFrontend" in window && elementorFrontend.isEditMode())
)
return;
const t = undefined;
(() => {
const t = undefined;
$("[data-lqd-custom-cursor]").each((t, e) => {
const i = $(
''
);
$(e).prepend(i);
});
})(),
$("[data-lqd-cc]").liquidCustomCursor();
}),
(function ($) {
function t(t, s) {
(this.element = t),
(this.$element = $(t)),
(this.isBS5 = "undefined" != typeof bootstrap),
(this.options = $.extend({}, i, s)),
(this.$contents = $(".accordion-collapse", this.element)),
(this.$triggers = $("[data-toggle=collapse]", this.element)),
(this._defaults = i),
(this._name = e),
this.init();
}
const e = "liquidAccordion";
let i = {};
(t.prototype = {
init() {
this.setHashOnLoad(), this.eventHandlers();
},
setHashOnLoad() {
const t = $(this.element);
if ("" !== location.hash && t.find(location.hash).length) {
const e = t.find(location.hash).closest(".accordion-item");
e.find(location.hash).addClass("in"),
e
.find(".accordion-heading")
.find("a")
.attr("aria-expanded", "true")
.removeClass("collapsed"),
e.siblings().find(".in").removeClass("in"),
e
.siblings()
.find(".accordion-heading")
.find("a")
.attr("aria-expanded", "false")
.addClass("collapsed");
}
},
eventHandlers() {
this.isBS5
? this.$contents.each((t, e) => {
e.addEventListener("show.bs.collapse", this.onShow.bind(this)),
e.addEventListener(
"shown.bs.collapse",
this.onShown.bind(this)
),
e.addEventListener("hide.bs.collapse", this.onHide.bind(this));
})
: (this.$contents.on("show.bs.collapse", this.onShow.bind(this)),
this.$contents.on("shown.bs.collapse", this.onShown.bind(this)),
this.$contents.on("hide.bs.collapse", this.onHide.bind(this)));
},
onShow(t) {
this.toggleActiveClass(t, "show"), this.setHashOnLoad(t);
const e = $(t.target);
e.closest(".vc_vc_accordion_tab").length &&
e
.closest(".vc_vc_accordion_tab")
.siblings()
.find(".accordion-collapse")
.collapse("hide");
},
onHide(t) {
this.toggleActiveClass(t, "hide");
},
toggleActiveClass(t, e) {
const i = $(t.target).closest(".accordion-item");
"show" === e && i.addClass("active").siblings().removeClass("active"),
"hide" === e && i.removeClass("active");
},
setHashOnShow(t) {
history.pushState
? history.pushState(null, null, "#" + $(t.target).attr("id"))
: (location.hash = "#" + $(t.target).attr("id"));
},
onShown(t) {
const e = undefined,
i = $(t.target).closest(".accordion-item"),
s = $(window),
n = i.offset().top;
this.initPlugins(i),
n <= s.scrollTop() - 15 &&
$("html, body").animate({ scrollTop: n - 45 }, 800);
},
initPlugins(t) {
$("[data-split-text]", t).liquidSplitText();
},
destroy() {
this.$contents.off(
"show.bs.collapse shown.bs.collapse hide.bs.collapse"
);
},
}),
($.fn[e] = function (i) {
return this.each(function () {
const s = { ...$(this).data("accordion-options"), ...i };
$.data(this, "plugin_" + e) ||
$.data(this, "plugin_" + e, new t(this, s));
});
});
})(jQuery),
jQuery(document).ready(function ($) {
$(".accordion").liquidAccordion();
}),
(function ($) {
const t = "liquidAjaxLoadMore";
let e = { trigger: "inview" };
class i {
constructor(i, s) {
(this.element = i),
(this.$element = $(i)),
(this.options = $.extend({}, e, s)),
(this._defaults = e),
(this._name = t),
(this.observer = null),
this.init();
}
init() {
const { trigger: t } = this.options;
"inview" == t && this.setupIntersectionObserver(),
"click" == t && this.onClick();
}
onClick() {
this.$element.on("click", this.loadItems.bind(this));
}
setupIntersectionObserver() {
(this.observer = new IntersectionObserver(
(t) => {
t.forEach((t) => {
t.isIntersecting && this.loadItems();
});
},
{ threshold: [1] }
)),
this.observer.observe(this.element);
}
loadItems(t) {
t && t.preventDefault();
const e = this,
i = e.options,
s = $(i.wrapper),
n = e.$element.attr("href"),
o = parseInt(n.split("page/")[1].split("/")[0], 10);
e.$element.addClass("items-loading"),
$.ajax({
type: "GET",
url: n,
error: function (t, e, i) {
alert(i);
},
success: function (t) {
const a = undefined,
l = $(t).find(i.wrapper),
r = l.find(i.items);
let d = l.find("[data-ajaxify=true]");
d.length ||
(d = l.siblings(".ld-pf-nav-ajax").find("[data-ajaxify=true]"));
let h = d.attr("href");
const c = undefined;
(h && parseInt(h.split("page/")[1].split("/")[0], 10)) <= o &&
(h = n.replace(`page/${o}`, `page/${o + 1}`)),
imagesLoaded(r.get(), function () {
if (
(h && n != h
? e.$element.attr("href", h)
: (e.observer && e.observer.unobserve(e.element),
e.$element
.removeClass("items-loading")
.addClass("all-items-loaded")),
r.appendTo(s),
s.get(0).hasAttribute("data-liquid-masonry"))
) {
const t = s.data("plugin_liquidMasonry"),
e = t && t.isoData;
e && e.appended(r);
}
e.onSuccess(s);
});
},
});
}
onSuccess(t) {
$("body").hasClass("lazyload-enabled") ||
$("[data-responsive-bg=true]", t).liquidResponsiveBG(),
$("body").hasClass("lazyload-enabled") &&
(window.liquidLazyload = new LazyLoad({
elements_selector: ".ld-lazyload",
callback_loaded: (t) => {
$(t).closest("[data-responsive-bg=true]").liquidResponsiveBG(),
$(t)
.parent()
.not("#wrap, #lqd-site-content")
.addClass("loaded");
},
})),
$("[data-split-text]", t)
.filter(
(t, e) =>
!$(e).parents("[data-custom-animations]").length &&
!e.hasAttribute("data-custom-animations")
)
.liquidSplitText(),
$("[data-fittext]", t).liquidFitText(),
$("[data-custom-animations]", t).map((t, e) => {
const i = $(e),
s = undefined;
i.parents(".wpb_wrapper[data-custom-animations]").length &&
(i.removeAttr("data-custom-animations"),
i.removeAttr("data-ca-options"));
}),
$("[data-custom-animations]", t)
.filter((t, e) => {
const i = $(e),
s = i.closest(".vc_row[data-row-bg]"),
n = i.closest(".vc_row[data-slideshow-bg]");
return !s.length && !n.length;
})
.liquidCustomAnimations(),
$("[data-lqd-flickity]", t).liquidCarousel(),
$("[data-parallax]", t).liquidParallax(),
$("[data-hover3d=true]", t).liquidHover3d(),
this.$element.removeClass("items-loading"),
ScrollTrigger?.refresh();
}
}
$.fn[t] = function (e) {
return this.each(function () {
const s = { ...$(this).data("ajaxify-options"), options: e };
$.data(this, "plugin_" + t) ||
$.data(this, "plugin_" + t, new i(this, s));
});
};
})(jQuery),
jQuery(document).ready(function ($) {
if ($("body").hasClass("compose-mode")) return !1;
$("[data-ajaxify=true]").liquidAjaxLoadMore();
}),
(function ($) {
const t = "liquidAnimatedFrames";
let e = {
current: 0,
scrollable: !1,
forceDisablingWindowScroll: !1,
autoplay: !1,
autoplayTimeout: 4e3,
};
class i {
constructor(i, s) {
(this.element = i),
(this.$element = $(i)),
(this.options = $.extend({}, e, s)),
(this._defaults = e),
(this._name = t),
(this.DOM = {}),
(this.DOM.el = i),
(this.DOM.slides = Array.from(
this.DOM.el.querySelectorAll(".lqd-af-slides > div")
)),
(this.DOM.nav = this.DOM.el.querySelector(".lqd-af-slidenav")),
(this.DOM.nums = this.DOM.el.querySelector(".lqd-af-slidenum")),
(this.DOM.numsCurrent = this.DOM.el.querySelector(
".lqd-af-slidenum__current"
)),
(this.DOM.numsTotal = this.DOM.el.querySelector(
".lqd-af-slidenum__total"
)),
(this.DOM.nextCtrl = this.DOM.nav.querySelector(
".lqd-af-slidenav__item--next"
)),
(this.DOM.prevCtrl = this.DOM.nav.querySelector(
".lqd-af-slidenav__item--prev"
)),
(this.slidesTotal = this.DOM.slides.length),
(this.current = this.options.current),
(this.startY = 0),
(this.currentY = 0),
(this.dragY = 0),
(this.userInteracted = !1),
(this.autoplayTimeout = null),
this.initNumbers(),
this.init(),
this.animateNumbers(),
this.initEvents(),
this.autoplay();
}
init() {
const t = this.DOM.slides[this.current];
t.classList.add("lqd-af-slide--current"),
this.DOM.el.classList.add("lqd-af--initial"),
this.onSlideLoaded(t);
}
initNumbers() {
if (liquidIsElementor) return;
const t = $('');
this.DOM.numsTotal.innerText = this.slidesTotal;
for (let e = 1; e <= this.slidesTotal; e++) {
const i = undefined;
$(
`${e}`
).appendTo(t);
}
t.appendTo(this.DOM.numsCurrent);
}
animateNumbers(t = 0) {
const e = this.DOM.numsCurrent.querySelector("span");
e && (e.style.transform = `translateY(${100 * t * -1}%)`);
}
initEvents() {
if (this.slidesTotal <= 1) return;
if (
($(this.DOM.nextCtrl).off("click.lqdAnimateFrames", this.navigate),
$(this.DOM.prevCtrl).off("click.lqdAnimateFrames", this.navigate),
$(this.DOM.nextCtrl).on(
"click.lqdAnimateFrames",
this.navigate.bind(this, "next", !0)
),
$(this.DOM.prevCtrl).on(
"click.lqdAnimateFrames",
this.navigate.bind(this, "prev", !0)
),
$(document).on("keydown.lqdAnimateFrames", (t) => {
const e = t.originalEvent.key;
"ArrowUp" === e
? this.navigate("prev", !0)
: "ArrowDown" === e && this.navigate("next", !0);
}),
!this.options.scrollable)
)
return !1;
this.initDrag(),
this.options.forceDisablingWindowScroll &&
"elementorFrontend" in window &&
!elementorFrontend.isEditMode() &&
document.documentElement.classList.add("overflow-hidden");
const t = liquidThrottle(
(t) => {
const e = Math.sign(t.originalEvent.deltaY);
e < 0
? this.navigate("prev", !0)
: e > 0 && this.navigate("next", !0);
},
800,
!0
);
this.$element.on("mouseenter.lqdAnimateFrames", () => {
$liquidWindow.on("wheel.lqdAnimateFrames", t);
}),
this.$element.on("mouseleave.lqdAnimateFrames", () => {
$liquidWindow.on("wheel.lqdAnimateFrames", t);
});
}
initDrag() {
this.$element.on("mousedown touchstart", this.pointerStart.bind(this)),
this.$element.on("mousemove touchmove", this.pointerMove.bind(this)),
this.$element.on("mouseup touchend", this.pointerEnd.bind(this));
}
pointerStart(t) {
this.options.forceDisablingWindowScroll &&
"elementorFrontend" in window &&
!elementorFrontend.isEditMode() &&
document.documentElement.classList.add("overflow-hidden"),
(this.startY = t.pageY || t.originalEvent.changedTouches[0].pageY),
(this.currentY = this.startY),
this.$element.addClass("pointer-down");
}
pointerMove(t) {
this.options.forceDisablingWindowScroll &&
"elementorFrontend" in window &&
!elementorFrontend.isEditMode() &&
document.documentElement.classList.add("overflow-hidden"),
(this.currentY = t.pageY || t.originalEvent.changedTouches[0].pageY),
(this.dragY = parseInt(this.startY - this.currentY, 10));
}
pointerEnd() {
(this.dragY = parseInt(this.startY - this.currentY, 10)),
this.dragY >= 20
? this.navigate("next")
: this.dragY <= -20 && this.navigate("prev"),
this.element.classList.remove("pointer-down");
}
navigate(t = "next", e) {
if (this.isAnimating) return !1;
e && (this.userInteracted = !0),
(this.isAnimating = !0),
this.autoplayTimeout && clearTimeout(this.autoplayTimeout),
this.options.forceDisablingWindowScroll &&
"elementorFrontend" in window &&
!elementorFrontend.isEditMode() &&
document.documentElement.classList.add("overflow-hidden"),
this.element.classList.add(
"lqd-af--navigating",
"lqd-af--navigation-init"
),
"next" === t && this.element.classList.add("lqd-af--moving-up"),
"prev" === t && this.element.classList.add("lqd-af--moving-down");
const i = this.DOM.slides[this.current],
s = i.querySelector(".lqd-af-slide__img"),
n = s.querySelector(".lqd-af-slide__img__inner"),
o = s.querySelector("figure"),
a = i.querySelectorAll(".lqd-af-slide__title .split-inner"),
l = i.querySelectorAll(".lqd-af-slide__desc .split-inner"),
r = i.querySelector(".lqd-af-slide__link"),
d = gsap.timeline({
duration: 1.2,
onComplete: () => {
i.classList.remove("lqd-af-slide--movin-out");
},
});
d.fromTo(
o,
{ scale: 1 },
{
scale: 1.25,
ease: CustomEase.create("custom", "M0,0,C0.4,0,0.2,1,1,1"),
},
0
),
d.fromTo(
n,
{ scale: 1 },
{
scale: 0.5,
ease: CustomEase.create("custom", "M0,0,C0.4,0,0.2,1,1,1"),
},
0.015
),
d.to(
s,
{
duration: 0.85,
ease: CustomEase.create("custom", "M0,0,C0.395,0,0.1,1,1,1"),
y: "next" === t ? "-100%" : "100%",
},
0.35
),
i.classList.add("lqd-af-slide--movin-out");
const h = gsap.timeline({
duration: 1.2,
delay: 0.5,
ease: CustomEase.create("custom", "M0,0,C0.4,0,0.1,1,1,1"),
onComplete: () => {
i.classList.remove("lqd-af-slide--current"),
this.DOM.el.classList.add("lqd-af--initial");
},
});
a?.length &&
h.fromTo(
a,
{ y: "0%" },
{ y: "next" === t ? "-105%" : "105%" },
"next" === t ? 0 : 0.35
),
l?.length &&
h.fromTo(
l,
{ opacity: 1, y: "0%" },
{ opacity: 0, y: "next" === t ? "-100%" : "100%" },
0.25
),
r &&
h.fromTo(
r,
{ opacity: 1, y: "0%" },
{ opacity: 0, y: "next" === t ? "-75%" : "75%" },
"next" === t ? 0.35 : 0
),
(this.current =
"next" === t
? this.current < this.slidesTotal - 1
? this.current + 1
: 0
: this.current > 0
? this.current - 1
: this.slidesTotal - 1),
this.animateNumbers(this.current);
const c = this.DOM.slides[this.current];
c.classList.add("lqd-af-slide--current", "lqd-af-slide--movin-in"),
this.DOM.el.classList.add("lqd-af--initial"),
this.onSlideLoaded(c);
const u = c.querySelector(".lqd-af-slide__img"),
m = c.querySelectorAll(".lqd-af-slide__title .split-inner"),
p = c.querySelectorAll(".lqd-af-slide__desc .split-inner"),
g = c.querySelector(".lqd-af-slide__link"),
f = gsap.timeline({
duration: 1.2,
delay: 0.35,
ease: CustomEase.create("custom", "M0,0,C0.4,0,0.1,1,1,1"),
onComplete: () => {
c.classList.remove("lqd-af-slide--movin-in");
},
});
f.fromTo(
u,
{ y: "next" === t ? "100%" : "-100%" },
{
y: 0,
duration: 0.85,
ease: CustomEase.create("custom", "M0,0,C0.395,0,0.1,1,1,1"),
},
0
),
m?.length &&
f.fromTo(
m,
{ y: "next" === t ? "105%" : "-105%" },
{ y: "0%" },
"next" === t ? 0.3 : 0.5
),
p?.length &&
f.fromTo(
p,
{ opacity: 0, y: "next" === t ? "100%" : "-100%" },
{ opacity: 1, y: "0%" },
0.4
),
g &&
f.fromTo(
g,
{ opacity: 0, y: "next" === t ? "75%" : "-75%" },
{ opacity: 1, y: "0%" },
"next" === t ? 0.5 : 0.3
),
d.then(this.animateShapeOut.bind(this, t));
}
animateShapeOut() {
const t = undefined,
e = this.DOM.slides[this.current].querySelector(".lqd-af-slide__img"),
i = e.querySelector(".lqd-af-slide__img__inner"),
s = e.querySelector("figure");
gsap.to([i, s], {
scale: 1,
duration: 0.8,
ease: CustomEase.create("custom", "M0,0,C0.4,0,0.2,1,1,1"),
onComplete: () => {
(this.isAnimating = !1),
this.element.classList.remove(
"lqd-af--navigating",
"lqd-af--moving-up",
"lqd-af--moving-down"
),
!this.options.forceDisablingWindowScroll &&
document.documentElement.classList.remove("overflow-hidden"),
this.autoplay();
},
});
}
autoplay() {
!this.options.autoplay ||
this.userInteracted ||
this.slidesTotal <= 1 ||
(this.autoplayTimeout = setTimeout(() => {
this.navigate();
}, this.options.autoplayTimeout));
}
onSlideLoaded(t) {
const e = undefined,
i = undefined;
$(t)
.find("video")
.each(function () {
const t = $(this);
t.find("source").each(function () {
const t = $(this);
t.attr("src", t.attr("data-src"));
}),
t[0].load(),
t[0].play();
});
}
destroy() {
$(this.DOM.nextCtrl).off("click.lqdAnimateFrames"),
$(this.DOM.prevCtrl).off("click.lqdAnimateFrames"),
$(document).off("keydown.lqdAnimateFrames"),
this.$element.off("mouseenter.lqdAnimateFrames"),
$liquidWindow.off("wheel.lqdAnimateFrames"),
this.$element.off("mouseleave.lqdAnimateFrames");
}
}
$.fn[t] = function (e) {
return this.each(function () {
const s = { ...$(this).data("af-options"), ...e };
$.data(this, "plugin_" + t) ||
$.data(this, "plugin_" + t, new i(this, s));
});
};
})(jQuery),
jQuery(document).ready(function ($) {
$("[data-liquid-animatedframes=true]").liquidAnimatedFrames();
}),
(function ($) {
const t = "liquidAsymmetricSlider";
let e = { autoplay: !1 };
class i {
constructor(i, s) {
(this._defaults = e),
(this._name = t),
(this.options = { ...e, ...s }),
(this.element = i),
(this.$element = $(i)),
(this.isRTL = "rtl" === $("html").attr("dir")),
(this.DOM = {
titlesWrap: this.element.querySelector(
".lqd-asym-slider-title-wrap"
),
infosWrap: this.element.querySelector(".lqd-asym-slider-info-wrap"),
imagesWrap: this.element.querySelector(".lqd-asym-slider-img-wrap"),
titles: [
...this.element.querySelectorAll(".lqd-asym-slider-title"),
],
infos: [...this.element.querySelectorAll(".lqd-asym-slider-info")],
images: [...this.element.querySelectorAll(".lqd-asym-slider-img")],
prevBtn: this.element.querySelector(".lqd-asym-slider-prev"),
nextBtn: this.element.querySelector(".lqd-asym-slider-next"),
}),
(this.isPlaying = !1),
(this.currentSlide = 0),
(this.nextSlide = null),
(this.prevSlide = null),
(this.totalSlides = this.DOM.images.length - 1);
const n = [],
o = $(this.DOM.titlesWrap)
.find(".lqd-asym-slider-title-element")
.first(),
a = o
.css("font-family")
.replace(/"/g, "")
.replace(/'/g, "")
.split(",")[0],
l = o.css("font-weight"),
r = o.css("font-style"),
d = window.liquidSlugify(a);
if (
(n.push(new Promise((t) => imagesLoaded(this.element, t))),
!window.liquidCheckedFonts.find((t) => t === d))
) {
const t = new FontFaceObserver(a, { weight: l, style: r });
n.push(t.load());
}
Promise.all(n).finally(() => {
new IntersectionObserver(([t], e) => {
t.isIntersecting && (e.disconnect(), this.init());
}).observe(this.element);
});
}
init() {
const { autoplay: t } = this.options;
this.updateHeights(),
this.events(),
this.playInitial(),
this.element.classList.add("lqd-asym-slider-ready"),
t &&
t > 0 &&
(this.autoplayInitCall = gsap.delayedCall(
1.5,
this.autoplay.bind(this)
));
}
autoplay() {
const { autoplay: t } = this.options;
!t ||
t <= 0 ||
(this.autoplayInitCall && this.autoplayInitCall.kill(),
(this.autoplayCall = gsap.delayedCall(t, this.next.bind(this))));
}
events() {
this.DOM.prevBtn.addEventListener("click", this.prev.bind(this)),
this.DOM.nextBtn.addEventListener("click", this.next.bind(this)),
window.addEventListener(
"resize",
liquidDebounce(this.updateHeights.bind(this), 1e3)
);
}
updateHeights() {
(this.DOM.imagesWrap.style.transition = "height 0.3s 1s"),
(this.DOM.titlesWrap.style.transition = "height 0.3s 1s"),
(this.DOM.infosWrap.style.transition = "height 0.3s 1s"),
(this.DOM.imagesWrap.style.height = `${
this.DOM.images[this.currentSlide].offsetHeight
}px`),
(this.DOM.titlesWrap.style.height = `${
this.DOM.titles[this.currentSlide].offsetHeight
}px`),
(this.DOM.infosWrap.style.height = `${
this.DOM.infos[this.currentSlide].offsetHeight
}px`);
}
beforePlay() {
this.element.classList.add("lqd-asym-slider-changing"),
this.DOM.titles[this.nextSlide].classList.add("is-next"),
this.DOM.titles[this.nextSlide].classList.remove("active"),
this.DOM.images[this.nextSlide].classList.add("is-next"),
this.DOM.images[this.nextSlide].classList.remove("active"),
this.DOM.infos[this.nextSlide].classList.add("is-next"),
this.DOM.infos[this.nextSlide].classList.remove("active"),
(this.isPlaying = !0);
}
afterPlay() {
this.element.classList.remove("lqd-asym-slider-changing"),
this.DOM.titles[this.nextSlide].classList.remove("is-next"),
this.DOM.titles[this.nextSlide].classList.add("active"),
this.DOM.titles[this.prevSlide].classList.remove("active"),
this.DOM.images[this.nextSlide].classList.remove("is-next"),
this.DOM.images[this.nextSlide].classList.add("active"),
this.DOM.images[this.prevSlide].classList.remove("active"),
this.DOM.infos[this.nextSlide].classList.remove("is-next"),
this.DOM.infos[this.nextSlide].classList.add("active"),
this.DOM.infos[this.prevSlide].classList.remove("active"),
(this.isPlaying = !1),
this.autoplayCall && this.autoplayCall.kill(),
this.autoplay();
}
playInitial() {
(this.prevSlide = this.currentSlide),
(this.nextSlide = this.currentSlide),
this.playTitle("init"),
this.playInfo("init"),
this.playImages("init");
}
prev() {
this.isPlaying ||
((this.prevSlide = this.currentSlide),
(this.nextSlide =
0 === this.currentSlide ? this.totalSlides : this.currentSlide - 1),
(this.currentSlide = this.nextSlide),
this.beforePlay(),
this.updateHeights(),
this.playTitle("prev"),
this.playInfo("prev"),
this.playImages("prev").then(() => {
this.afterPlay();
}));
}
next() {
this.isPlaying ||
((this.prevSlide = this.currentSlide),
(this.nextSlide =
this.currentSlide === this.totalSlides ? 0 : this.currentSlide + 1),
(this.currentSlide = this.nextSlide),
this.beforePlay(),
this.updateHeights(),
this.playTitle("next"),
this.playInfo("next"),
this.playImages("next").then(() => {
this.afterPlay();
}));
}
playTitle(t) {
const e = this.DOM.titles[this.prevSlide],
i = this.DOM.titles[this.nextSlide],
s = this.isRTL
? e.querySelectorAll(".lqd-words")
: e.querySelectorAll(".lqd-chars"),
n = this.isRTL
? i.querySelectorAll(".lqd-words")
: i.querySelectorAll(".lqd-chars"),
o = gsap.timeline({
defaults: { duration: 1 },
delay: "next" === t ? 0.15 : 0,
});
"prev" === t
? o
.fromTo(
[...s].reverse(),
{ y: "0%", rotation: 0, opacity: 1 },
{
y: "100%",
rotation: 15,
opacity: 0,
ease: "expo.inOut",
stagger: 0.025,
}
)
.fromTo(
[...n].reverse(),
{ y: "-100%", rotation: 15, opacity: 0 },
{
y: "0%",
rotation: 0,
opacity: 1,
ease: "expo.out",
stagger: 0.025,
},
0.75
)
: "next" === t
? o
.fromTo(
s,
{ y: "0%", rotation: 0, opacity: 1 },
{
y: "-100%",
rotation: 15,
opacity: 0,
ease: "expo.inOut",
stagger: 0.025,
}
)
.fromTo(
n,
{ y: "100%", rotation: 15, opacity: 0 },
{
y: "0%",
rotation: 0,
opacity: 1,
ease: "expo.out",
stagger: 0.025,
},
0.75
)
: o.fromTo(
s,
{ x: 35, opacity: 0 },
{ x: 0, opacity: 1, ease: "expo.inOut", stagger: 0.045 }
);
}
playInfo(t) {
const e = this.DOM.infos[this.prevSlide],
i = e.querySelector(".lqd-asym-slider-subtitle-element"),
s = e.querySelector(".lqd-asym-slider-description-element"),
n = e.querySelector("hr"),
o = this.DOM.infos[this.nextSlide],
a = o.querySelector(".lqd-asym-slider-subtitle-element"),
l = o.querySelector(".lqd-asym-slider-description-element"),
r = gsap.timeline({
defaults: { ease: "expo.inOut", duration: 1.5 },
delay: "prev" === t ? 0.3 : 0.15,
});
"prev" === t
? r
.fromTo(i, { x: 0, opacity: 1 }, { x: 15, opacity: 0 }, 0)
.fromTo(s, { x: 0, opacity: 1 }, { x: 15, opacity: 0 }, 0.15)
.fromTo(a, { x: -15, opacity: 0 }, { x: 0, opacity: 1 }, 0.15)
.fromTo(l, { x: -15, opacity: 0 }, { x: 0, opacity: 1 }, 0.3)
: "next" === t
? r
.fromTo(i, { x: 0, opacity: 1 }, { x: -15, opacity: 0 }, 0)
.fromTo(s, { x: 0, opacity: 1 }, { x: -15, opacity: 0 }, 0.15)
.fromTo(a, { x: 15, opacity: 0 }, { x: 0, opacity: 1 }, 0.15)
.fromTo(l, { x: 15, opacity: 0 }, { x: 0, opacity: 1 }, 0.3)
: r
.fromTo(i, { x: 30, opacity: 0 }, { x: 0, opacity: 1 }, 0)
.fromTo(
n,
{ scaleX: 0.6, opacity: 0 },
{ scaleX: 1, opacity: 1 },
0
)
.fromTo(s, { x: 30, opacity: 0 }, { x: 0, opacity: 1 }, 0.15);
}
playImages(t) {
const e = this.DOM.images[this.prevSlide],
i = e.querySelector(".lqd-asym-slider-img-inner"),
s = this.DOM.images[this.nextSlide],
n = s.querySelector(".lqd-asym-slider-img-inner"),
o = gsap.timeline({
defaults: { ease: "expo.inOut", duration: 1.5 },
delay: "prev" === t ? 0.15 : 0,
});
return (
"prev" === t
? o
.fromTo(i, { x: "0%", scale: 1 }, { x: "-100%", scale: 1.2 }, 0)
.fromTo(e, { x: "0%" }, { x: "100%" }, 0)
.fromTo(s, { x: "-100%" }, { x: "0%" }, 0)
.fromTo(n, { x: "100%", scale: 1.2 }, { x: "0%", scale: 1 }, 0)
: "next" === t
? o
.fromTo(i, { x: "0%", scale: 1 }, { x: "100%", scale: 1.2 }, 0)
.fromTo(e, { x: "0%" }, { x: "-100%" }, 0)
.fromTo(s, { x: "100%" }, { x: "0%" }, 0)
.fromTo(n, { x: "-100%", scale: 1.2 }, { x: "0%", scale: 1 }, 0)
: o
.fromTo(i, { x: "100%", scale: 1.2 }, { x: "0%", scale: 1 }, 0)
.fromTo(e, { x: "-100%" }, { x: "0%" }, 0),
o
);
}
}
$.fn[t] = function (e) {
return this.each(function () {
const s = { ...$(this).data("asym-options"), ...e };
$.data(this, "plugin_" + t) ||
$.data(this, "plugin_" + t, new i(this, s));
});
};
})(jQuery),
jQuery(document).ready(function ($) {
$("[data-asym-slider]").liquidAsymmetricSlider();
}),
(function ($) {
const t = "liquidBackToTop";
let e = {};
class i {
constructor(i, s) {
(this._defaults = e),
(this._name = t),
(this.options = { ...e, ...s }),
(this.element = i),
(this.$element = $(i)),
this.init();
}
init() {
this.checkforWPBottomMenu(), this.firstSectionIO();
}
checkforWPBottomMenu() {
const t = document.getElementById("wp-bottom-menu");
if (!t) return;
const e = t.clientHeight;
this.element.style.bottom = `${e + 30}px`;
}
firstSectionIO() {
let t = $liquidSectionsWrapper.children().not("style, p").first();
t.hasClass("lqd-contents") && (t = t.children().first());
const e = "sticky" === t.css("position"),
i = t.is(":only-child");
if (
((t.is(":hidden") || e) && (t = t.siblings().not("style, p").first()),
!t.length)
)
return;
let s = [0, 0.25, 0.5, 0.75, 1];
e && (s = [0]),
i && (s = [0, 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9, 1]),
new IntersectionObserver(
([t]) => {
const { boundingClientRect: s, rootBounds: n } = t;
let o = n && n.top >= s.bottom - s.height / 2;
e && (o = n && n.bottom >= s.top),
i && (o = n && n.bottom - n.height / 2 >= s.top + 250),
o
? this.$element.addClass("is-visible")
: this.$element.removeClass("is-visible");
},
{ threshold: s }
).observe(t.get(0));
}
}
$.fn[t] = function (e) {
return this.each(function () {
const s = { ...$(this).data("back-to-top-options"), ...e };
$.data(this, "plugin_" + t) ||
$.data(this, "plugin_" + t, new i(this, s));
});
};
})(jQuery),
jQuery(document).ready(function ($) {
$("html").hasClass("pp-enabled") ||
$("[data-back-to-top]").liquidBackToTop();
}),
(function ($) {
const t = "liquidBgColor";
let e = {
getBgFromSelector: "backgroundColor",
setBgTo: "self",
manipulateColor: null,
changeBorderColor: !1,
interactWithHeader: !1,
makeGradient: !1,
};
class i {
constructor(i, s) {
(this._defaults = e),
(this._name = t),
(this.options = { ...e, ...s }),
(this.element = i),
(this.$element = $(i)),
(this.$stickyModules = this._getStickyModules()),
(this.setBgToEls =
"self" === this.options.setBgTo
? [this.element]
: $(this.options.setBgTo, this.element).get()),
(this.$bgEl = !1),
(this.rowsRect = []),
(this.colors = []),
(this.direction = 0),
this.$element.is($liquidContents) && this._addBgElement(),
(this.liquidBgColorInitPromise = new Promise((t) => {
this.$element.on("lqd-bg-color-init", t.bind(this, this));
})),
LiquidSectionsDetails.getDetails().then((t) => {
$(t).imagesLoaded(this._init(t));
});
}
_init(t) {
const e = undefined;
t
.filter((t) => !t.isHidden && !t.isInFooter)
.filter((t) => !t.isInnerSection)
.forEach(async (t, e) => {
await this._getColors(t),
Promise.all(this._getRects(t, e)).then(() => {
this._setupIO(t, e),
this.$bgEl &&
(this.element.classList.add("bg-transparent"),
t.el.classList.add("bg-transparent"),
t.isInnerSection &&
t.parentSection &&
t.parentSection.el.classList.add("bg-transparent"));
});
}),
this.$element.trigger("lqd-bg-color-init", this.element);
}
_getStickyModules() {
let t = !1;
return (
$liquidMainHeader.length &&
$liquidMainHeader[0].hasAttribute("data-sticky-header") &&
(t = liquidIsElementor
? $liquidMainHeader
.find("> .elementor")
.find(
"> .elementor-section-wrap > .elementor-section, > .elementor-section, > .elementor-section-wrap > .e-container, > .e-container, > .e-con"
)
.not(".lqd-hide-onstuck")
.find('[data-element_type="widget"]')
: $liquidMainHeader
.find(".lqd-head-sec-wrap, .lqd-stickybar-wrap")
.not(".lqd-hide-onstuck")
.find(".header-module")),
t
);
}
_addBgElement() {
if (this.$bgEl) return;
const t = liquidIsMobile() ? "overflow-hidden" : "",
e = liquidIsMobile() ? "pos-fix fixed" : "pos-sticky sticky",
i = liquidIsMobile() ? "h-100 h-full" : "h-vh-100 h-100vh";
(this.$bgEl = $(
``
)),
this.$bgEl.prependTo(this.$element),
(this.setBgToEls = [this.$bgEl.children()[0]]),
(($liquidMainFooter.length &&
!$liquidMainFooter[0].hasAttribute("data-sticky-footer")) ||
liquidIsMobile()) &&
$liquidMainFooter.css({ position: "relative", zIndex: 2 });
}
_getColors(t) {
return fastdomPromised.measure(() => {
const { getBgFromSelector: e, manipulateColor: i } = this.options,
s = {};
let n = t[e].replace(/, /g, ",").split(" ")[0],
o = t.$el.attr("data-section-luminosity");
if (
(t.isInnerSection &&
t.parentSection &&
t.isBgTransparent &&
!t.parentSection.isBgTransparent &&
(n = t.parentSection[e].replace(/, /g, ",").split(" ")[0]),
t.isBgTransparent && (n = $liquidContents.css("backgroundColor")),
i && i.length > 0)
)
for (let t = 0; t < i.length; t++)
n = tinycolor(n)
[Object.keys(i[t])[0]](Object.values(i[t])[0])
.toString();
(s.color = n),
(s.luminosity =
null == o || i
? tinycolor(n).getLuminance() <= 0.4
? "dark"
: "light"
: o),
this.colors.push(s);
});
}
_interactWithHeader(t) {
const e = $liquidMainHeader.add(this.$stickyModules).filter((t, e) => {
const i = $(e);
return (
!i.children(".navbar-brand-solid").length &&
!i.hasClass("navbar-brand-solid") &&
!i.find("> .elementor-widget-container > .navbar-brand-solid")
.length
);
});
"dark" === t
? e
.addClass("lqd-active-row-dark")
.removeClass("lqd-active-row-light")
: e
.addClass("lqd-active-row-light")
.removeClass("lqd-active-row-dark");
}
_interactWithColors(t, e) {
const i = $(t);
if (i.hasClass("btn-icon") || i.hasClass("btn-solid")) {
const t = "dark" === e ? "#fff" : "#000";
i.css({
transition: "box-shadow 0.3s, transform 0.3s, color 0.3s",
color: t,
});
}
if (i.hasClass("navbar-brand-inner")) {
const t = liquidIsElementor
? i.closest(".elementor-element")
: i.closest(".header-module");
"dark" === e
? t
.addClass("lqd-active-row-dark")
.removeClass("lqd-active-row-light")
: t
.addClass("lqd-active-row-light")
.removeClass("lqd-active-row-dark");
}
}
_getRects(t, e) {
const i = [];
let s = t.el.querySelector(".ld-row");
liquidIsElementor &&
(s =
t.el.classList.contains("e-container") ||
t.el.classList.contains("e-con")
? t.el
: t.el.querySelector(".elementor-container"));
const n = new Promise((i) => {
new IntersectionObserver(([t], s) => {
s.disconnect(), (this.rowsRect[e] = t.boundingClientRect), i();
}).observe(s || t.el);
});
return i.push(n), i;
}
_setupIO(t, e) {
const i = gsap.timeline();
this.setBgToEls.forEach((t) => {
const s = () => {
const i = this.direction < 1 && e > 0 ? e - 1 : e;
this.options.interactWithHeader &&
this.$stickyModules &&
this._interactWithHeader(this.colors[i].luminosity),
this._interactWithColors(t, this.colors[i].luminosity);
};
i.fromTo(
t,
{
backgroundColor:
0 === e ? this.colors[e].color : this.colors[e - 1].color,
},
{
backgroundColor: this.colors[e].color,
onUpdate: s,
onComplete: () => {
t.style.transition = "";
},
},
0
);
}),
ScrollTrigger.create({
animation: i,
trigger: t.el,
start: () =>
0 === e
? "top bottom"
: `top+=${this.rowsRect[e].y - t.rect.y} bottom`,
end: () => `+=${t.el.offsetHeight}`,
scrub: 0.1,
onUpdate: (t) => {
this.direction = t.direction;
},
});
}
}
$.fn[t] = function (e) {
return this.each(function () {
const s = { ...$(this).data("liquid-bg-options"), ...e };
$.data(this, "plugin_" + t) ||
$.data(this, "plugin_" + t, new i(this, s));
});
};
})(jQuery),
jQuery(document).ready(function ($) {
const t = $("[data-liquid-bg]");
t.liquidBgColor(),
liquidIsElementor &&
t.each((t, e) => {
const i = undefined;
$(e).is($liquidContents) &&
$liquidMainHeader.length &&
!$liquidMainHeader.attr("data-liquid-bg") &&
$liquidMainHeader.liquidBgColor({
setBgTo:
"\n\t\t\t\t\t\t> .elementor > .elementor-section-wrap > .elementor-section:not(.lqd-hide-onstuck) > .elementor-container > .elementor-column > .elementor-widget-wrap > .elementor-widget-ld_header_image .navbar-brand-solid .navbar-brand-inner,\n\t\t\t\t\t\t> .elementor > .elementor-section-wrap > .elementor-section:not(.lqd-hide-onstuck) > .elementor-container > .elementor-column > .elementor-widget-wrap > .elementor-widget-ld_button .btn-solid,\n\t\t\t\t\t\t> .elementor > .elementor-section-wrap > .elementor-section:not(.lqd-hide-onstuck) > .elementor-container > .elementor-column > .elementor-widget-wrap > .elementor-widget-ld_button .btn-icon-solid .btn-icon,\n\t\t\t\t\t\t> .elementor > .elementor-section:not(.lqd-hide-onstuck) > .elementor-container > .elementor-column > .elementor-widget-wrap > .elementor-widget-ld_header_image .navbar-brand-solid .navbar-brand-inner,\n\t\t\t\t\t\t> .elementor > .elementor-section:not(.lqd-hide-onstuck) > .elementor-container > .elementor-column > .elementor-widget-wrap > .elementor-widget-ld_button .btn-solid,\n\t\t\t\t\t\t> .elementor > .elementor-section:not(.lqd-hide-onstuck) > .elementor-container > .elementor-column > .elementor-widget-wrap > .elementor-widget-ld_button .btn-icon-solid .btn-icon",
manipulateColor: [
{ darken: 30 },
{ brighten: 15 },
{ saturate: 20 },
],
});
});
}),
(function ($) {
const t = "liquidAnimatedIcon";
let e = {
objContainer: ".iconbox-icon-container",
color: "#f42958",
hoverColor: null,
type: "delayed",
delay: 0,
duration: 100,
resetOnHover: !1,
file: null,
};
class i {
constructor(i, s) {
(this._defaults = e),
(this._name = t),
(this.options = $.extend({}, e, s)),
(this.element = i),
(this.$element = $(i)),
this.options.file && this.init();
}
init() {
return this.animateIcon(), this;
}
animateIcon() {
const { type: t, duration: e, file: i, objContainer: s } = this.options,
n = this.$element.attr("id") || Math.round(1e6 * Math.random()),
o = this.$element
.find(s)
.attr("id", `${n.replace(/ld_icon_box/, "ld_icon_container")}`);
new Vivus(o.attr("id"), {
file: i,
type: t,
duration: e,
start: "manual",
onReady: (t) => {
this.onReady.call(this, t);
},
}).setFrameProgress(1);
}
onReady(t) {
const e = this.$element.closest(".carousel-items"),
i = e.data("plugin_liquidCarousel");
this.addColors(t),
this.animate(t),
e.length &&
null != i &&
null != i.flickityData &&
i.flickityData.resize();
}
addColors(t) {
const e = $(t.el),
{ color: i, hoverColor: s } = this.options,
n = Math.round(1e6 * Math.random());
let o = s,
a = document.createElementNS("http://www.w3.org/2000/svg", "style"),
l = null != i ? i.split(":") : "#000",
r = null;
void 0 === l[1] && (l[1] = l[0]),
(r =
'');
const d = new DOMParser().parseFromString(r, "text/xml");
return (
e.prepend(d.documentElement),
null != o &&
((o = o.split(":")),
void 0 === o[1] && (o[1] = o[0]),
(a.innerHTML =
"#" +
this.$element.attr("id") +
":hover .iconbox-icon-container defs stop:first-child{stop-color:" +
o[0] +
";}#" +
this.$element.attr("id") +
":hover .iconbox-icon-container defs stop:last-child{stop-color:" +
o[1] +
";}"),
e.prepend(a)),
e
.find("path, rect, ellipse, circle, polygon, polyline, line")
.attr({ stroke: "url(#grad" + n + ")", fill: "none" }),
this.$element.addClass("iconbox-icon-animating"),
this
);
}
animate(t) {
const e = this.options,
i = parseInt(e.delay, 10),
{ duration: s } = e;
return (
t.reset().stop(),
new IntersectionObserver(([e], n) => {
const o = t.getStatus();
e.isIntersecting &&
"start" === o &&
"progress" !== o &&
(n.disconnect(),
this.resetAnimate(t, i, s),
this.eventHandlers(t, i, s));
}).observe(this.element),
this
);
}
eventHandlers(t, e, i) {
const { options: s } = this;
$(document).on("shown.bs.tab", 'a[data-toggle="tab"]', (s) => {
const n = undefined;
$($(s.currentTarget).attr("href")).find(this.element).length &&
this.resetAnimate.call(this, t, e, i);
}),
s.resetOnHover &&
this.$element.on("mouseenter.lqdIconbox", () => {
"end" === t.getStatus() && this.resetAnimate(t, 0, i);
});
}
resetAnimate(t, e, i) {
t.stop().reset();
const s = setTimeout(() => {
t.play(i / 100), clearTimeout(s);
}, e);
}
destroy() {
this.$element.off("mouseenter.lqdIconbox");
}
}
$.fn[t] = function (e) {
return this.each(function () {
const s = { ...$(this).data("plugin-options"), ...e };
$.data(this, "plugin_" + t) ||
$.data(this, "plugin_" + t, new i(this, s));
});
};
})(jQuery),
jQuery(document).ready(function ($) {
$("[data-animate-icon]").liquidAnimatedIcon();
}),
(function ($) {
function t(t, s) {
(this._defaults = i),
(this._name = e),
(this.options = { ...i, ...s }),
(this.flickityData = null),
(this.isRTL = "rtl" === $("html").attr("dir")),
liquidIsMobile() && (this.options.dragThreshold = 5),
(this.element = t),
(this.$element = $(t)),
(this.$carouselContainer = this.$element.closest(".carousel-container")
.length
? this.$element.closest(".carousel-container")
: this.$element.parent()),
(this.carouselNavElement = null),
(this.carouselDotsElement = null),
(this.carouselMobileDotsElement = null),
(this.$carouselCurrentSlide = null),
(this.$carouselCurrentSlideInner = null),
(this.$carouselTotalSlides = null),
(this.$carouselSlidesShape = null),
(this.carouselSlidesPathLength =
"circle" === this.options.numbersStyle ? 471 : 200),
(this.windowWidth = liquidWindowWidth()),
(this.$carouselEl = this.options.carouselEl
? $(this.options.carouselEl, this.element)
: this.$element),
(this.carouselEl = this.$carouselEl[0]),
(this.carouselInitPromise = new Promise((t) => {
this.$element.on("lqd-carousel-initialized", t.bind(this, this));
})),
this.options.marquee && (this.options.wrapAround = !0),
this.init();
}
const e = "liquidCarousel";
let i = {
bypassCheck: !1,
carouselEl: null,
contain: !1,
imagesLoaded: !0,
percentPosition: !0,
prevNextButtons: !1,
pageDots: !0,
adaptiveHeight: !1,
cellAlign: "left",
groupCells: !0,
dragThreshold: 0,
wrapAround: !1,
autoplay: !1,
fullwidthSide: !1,
navArrow: 1,
filters: !1,
filtersCounter: !1,
doSomethingCrazyWithFilters: !1,
equalHeightCells: !1,
middleAlignContent: !1,
randomVerOffset: !1,
parallax: !1,
parallaxEl: "img",
dotsIndicator: "classic",
numbersStyle: "circle",
addSlideNumbersToArrows: !1,
marquee: !1,
marqueeTickerSpeed: 1,
fade: !1,
prevNextButtonsOnlyOnMobile: !1,
columnsAutoWidth: !1,
watchCSS: !1,
forceApply: !1,
skipWrapItems: !1,
forceEnableOnMobile: !1,
};
(t.prototype = {
init() {
if (this.options.asNavFor) {
const t = $(this.options.asNavFor);
t.length &&
(t.liquidCarousel({ forceApply: !0 }),
t.data("plugin_liquidCarousel").carouselInitPromise.then(() => {
this.initFlicky();
}));
} else this.options.forceApply ? this.initFlicky() : this.setIO();
},
setIO() {
new IntersectionObserver(
([t], e) => {
t.isIntersecting && (this.initFlicky(), e.unobserve(t.target));
},
{ rootMargin: "35%" }
).observe(this.element);
},
initFlicky() {
const t = {
...this.options,
rightToLeft: this.isRTL || this.options.rightToLeft,
},
{ equalHeightCells: e } = this.options;
imagesLoaded(this.element, () => {
this.columnsAutoWidth(),
this.wrapItems(),
this.setEqualHeightCells(),
this.$carouselEl.flickity(t),
(this.flickityData = this.$carouselEl.data("flickity")),
t.adaptiveHeight &&
$(".flickity-viewport", this.element).css(
"transition",
"height 0.3s"
),
this.onImagesLoaded(),
this.$element.addClass("lqd-carousel-ready");
const i = this.flickityData.resize,
s = this,
{ carouselEl: n } = this;
this.flickityData.resize = function () {
s.windowWidth !== liquidWindowWidth() &&
(e && n.classList.remove("flickity-equal-cells"),
i.call(this),
e && n.classList.add("flickity-equal-cells"),
(s.windowWidth = liquidWindowWidth()));
};
});
},
onImagesLoaded() {
this.flickityData &&
((this.sliderElement =
this.element.querySelector(".flickity-slider")),
this.initPlugins(),
this.setElementNavArrow(),
this.carouselNav(),
this.navOffsets(),
this.carouselDots(),
this.carouselMobileDots(),
this.carouselDotsNumbers(),
this.addSlideNumbersToArrows(),
this.addSlidesCurrentNumbers(),
this.randomVerOffset(),
this.fullwidthSide(),
this.controllingCarousels(),
this.marquee(),
this.filtersInit(),
this.windowResize(),
this.events(),
this.dispatchEvents(),
this.options.columnsAutoWidth &&
(this.$element.find(".carousel-item-content").css("width", ""),
this.flickityData.reposition()));
},
initPlugins() {
this.element.hasAttribute("data-custom-animations") &&
this.$element.liquidCustomAnimations();
},
dispatchEvents() {
const t = new CustomEvent("lqd-carousel-initialized", {
detail: { carouselData: this },
});
document.dispatchEvent(t),
this.$element.trigger("lqd-carousel-initialized", this.element);
},
windowResize() {
const t = liquidDebounce(this.doOnWindowResize.bind(this), 200);
$(window).on("resize.lqdCarousel", t);
},
doOnWindowResize() {
this.windowWidth !== window.innerWidth &&
((this.windowWidth = window.innerWidth),
this.fullwidthSide(),
this.columnsAutoWidth(),
this.options.columnsAutoWidth &&
(this.$element.find(".carousel-item-content").css("width", ""),
this.flickityData.reposition()));
},
events() {
this.flickityData.on("pointerDown", () => {
$liquidHtml.addClass("lqd-carousel-pointer-down");
}),
this.flickityData.on("pointerUp", () => {
$liquidHtml.removeClass("lqd-carousel-pointer-down");
}),
this.flickityData.on("dragStart", () => {
$("[data-column-clickable]", this.element).css(
"pointer-events",
"none"
);
}),
this.flickityData.on("dragEnd", () => {
$("[data-column-clickable]", this.element).css(
"pointer-events",
""
);
}),
this.options.marquee ||
(this.flickityData.on("settle", () => {
this.sliderElement.style.willChange = "auto";
}),
this.flickityData.on("scroll", () => {
(this.sliderElement.style.willChange = "transform"),
this.doSomethingCrazyWithFilter(),
this.parallax(),
this.changeSlidesShape();
}),
this.flickityData.on("change", () => {
this.changeSlidesNumbers();
}),
$(document).on("added_to_cart", (t, e, i, s) => {
this.$carouselEl.has(s) && this.flickityData.resize();
}),
$("[data-toggle=tab]").on("hidden.bs.tab shown.bs.tab", (t) => {
const e = $(t.target),
i = undefined,
s = $(
$(e.attr("href")),
e.parent().next(".lqd-tabs-content")
).find("[data-lqd-flickity]");
let n = s.data("plugin_liquidCarousel");
if (
"shown" === t.type &&
(s.on("lqd-carousel-initialized", () => {
n = s.data("plugin_liquidCarousel");
const t = $(n.carouselNavElement);
t
.siblings(".carousel-nav")
.addClass("screen-reader-text")
.stop()
.fadeOut(300),
t.removeClass("screen-reader-text").stop().fadeIn(300);
}),
n)
) {
const t = $(n.carouselNavElement);
t
.siblings(".carousel-nav")
.addClass("screen-reader-text")
.stop()
.fadeOut(300),
t.removeClass("screen-reader-text").stop().fadeIn(300);
}
}));
},
wrapItems() {
const {
middleAlignContent: t,
equalHeightCells: e,
randomVerOffset: i,
skipWrapItems: s,
} = this.options;
if (s) return;
const n = this.$carouselEl.children().first();
if (
n.hasClass("flickity-viewport") ||
n.hasClass("flickity-viewport-wrap")
) {
const t = undefined;
return void n
.find(".flickity-slider")
.children()
.each((t, e) => {
const i = $(e),
s = undefined,
n = undefined;
1 ===
i.find(".carousel-item-content").first().children().not("style")
.length && i.addClass("has-one-child");
});
}
this.$carouselEl.children("p, style").insertBefore(this.$carouselEl);
const o = undefined;
this.$carouselEl.children().each((s, n) => {
const o = $(n);
if (
o.hasClass("vc_ld_carousel_section") ||
o.hasClass("vc_ld_carousel_marquee_section") ||
o.hasClass("vc_container-anchor") ||
o.hasClass("lqd-sticky-stack-nav") ||
o.is("pre")
)
return;
const a = undefined,
l = undefined,
r =
1 ===
(o.children().hasClass("carousel-item-inner")
? o.find(".carousel-item-content")
: o
)
.children()
.not("style, .vc_controls-container").length;
let d;
o.attr("class") &&
(d = o.hasClass("lqd-prod-item")
? o
.attr("class")
.split(" ")
.filter((t) => "lqd-prod-item" !== t && "product" !== t)
: o
.attr("class")
.split(" ")
.filter(
(t) =>
t.includes("vc_hidden-") ||
t.includes("hidden-") ||
t.includes("col-") ||
t.includes("vc_col-")
)),
o.hasClass("carousel-item")
? (t && e && !i && o.addClass("align-items-center"),
r && o.addClass("has-one-child"),
o.children(".carousel-item-inner").length ||
o.wrapInner(''),
o
.children(".carousel-item-inner")
.children(".carousel-item-content").length ||
o
.children()
.wrapInner(''))
: o
.wrap(
``
)
.wrap('')
.wrap('');
});
},
columnsAutoWidth() {
if (!this.options.columnsAutoWidth) return;
let t = this.$carouselEl.children();
const e = t.first();
(e.hasClass("flickity-viewport") ||
e.hasClass("flickity-viewport-wrap")) &&
(t = e.find(".flickity-slider").children()),
t.each((t, e) => {
const i = $(e);
if (i.hasClass("width-is-set")) return;
const s = i.find(".carousel-item-content");
let n = s.children().not("style").first();
n.hasClass("ld-fancy-heading") && (n = n.children()),
this.setColumnWidth(i, n, s);
});
},
setColumnWidth(t, e, i) {
const s = e.length ? e.outerWidth() : i.outerWidth();
i.css("width", s), t.css("width", "auto");
},
carouselNav() {
if (
!this.options.prevNextButtons ||
!this.flickityData.prevButton ||
!this.flickityData.nextButton
)
return;
let t = this.options.buttonsAppendTo;
"parent_row" === t &&
(t = liquidIsElementor
? this.$element.closest(".elementor-section")
: this.$element.closest(".vc_row")),
"parent_el" === t && (t = this.$element.parent()),
"self" === t && (t = this.$carouselContainer);
const e = $(this.flickityData.prevButton.element),
i = $(this.flickityData.nextButton.element),
s = $(t),
n = $(''),
o = [];
let a = this.options.carouselEl
? this.$element.attr("id")
: this.$carouselContainer.attr("id");
if (
(liquidIsElementor &&
(a = `elementor-element elementor-element-${this.$element
.closest(".elementor-element")
.attr("data-id")}`),
$.each($(this.$carouselContainer[0].classList), (t, e) => {
e.indexOf("carousel-nav-") >= 0 && o.push(e);
}),
n.addClass([...o, a].join(" ")),
this.$carouselContainer.removeClass(o.join(" ")),
n.append([e, i]),
null != t)
) {
if (s.hasClass("vc_column_container")) {
const t = s.children(".vc_column-inner").children(".wpb_wrapper");
n.appendTo(t);
} else if (s.hasClass("elementor-column")) {
const t = s.children(".elementor-widget-wrap");
t.children(".elementor-empty-view").remove(), n.appendTo(t);
} else
this.options.appendingBtnRel
? n.appendTo(this.$carouselEl[this.options.appendingBtnRel](t))
: n.appendTo(t);
s.addClass("carousel-nav-appended");
} else n.appendTo(this.$carouselContainer);
(this.carouselNavElement = n[0]),
this.options.prevNextButtonsOnlyOnMobile &&
this.carouselNavElement.classList.add("visible-xs", "visible-sm");
},
carouselDots() {
if (!this.options.pageDots) return;
const {
dotsAppendTo: t,
hasPageDotsFromOptions: e,
carouselEl: i,
} = this.options,
s = this.flickityData.pageDots.holder,
n = $(
``
);
let o = i
? this.$carouselEl.attr("id")
: this.$carouselContainer.attr("id"),
a = t;
liquidIsElementor &&
(o = `elementor-element elementor-element-${this.$element
.closest(".elementor-element")
.attr("data-id")}`),
"parent_row" === a &&
(a = liquidIsElementor
? this.$element.closest(".elementor-section")
: this.$element.closest(".vc_row")),
"self" === a && (a = this.$carouselContainer),
n.append(s);
const l = [o];
if (
($.each($(this.$carouselContainer[0].classList), (t, e) => {
e.indexOf("carousel-dots-") >= 0 && l.push(e);
}),
n.addClass(l.join(" ")),
null != a)
) {
if ($(a).hasClass("vc_column_container")) {
const t = $(a)
.children(".vc_column-inner ")
.children(".wpb_wrapper");
n.appendTo(t);
} else if ($(a).hasClass("elementor-column")) {
const t = $(a).children(".elementor-widget-wrap");
t.children(".elementor-empty-view").remove(), n.appendTo(t);
} else n.appendTo(a);
$(a).addClass("carousel-dots-appended");
} else n.appendTo(this.$carouselContainer);
this.carouselDotsElement = n[0];
},
carouselMobileDots(t = !1) {
if ((!this.options.pageDots || this.options.marquee) && !t) return;
const { carouselEl: e } = this.options,
i = undefined,
s = [
e
? this.$carouselEl.attr("id")
: this.$carouselContainer.attr("id"),
];
$.each($(this.$carouselContainer[0].classList), (t, e) => {
e.indexOf("carousel-dots-mobile-") >= 0 && s.push(e);
});
const n = $(this.flickityData.pageDots.holder).clone(!0),
o = $(
``
);
o.append(n),
this.carouselDotsElement &&
this.$carouselEl.has(this.carouselDotsElement).length
? o.insertBefore(this.carouselDotsElement)
: (o.appendTo(this.$carouselContainer),
$(this.carouselDotsElement).addClass(
"hidden-xs hidden-sm md:hidden"
)),
(this.carouselMobileDotsElement = o[0]);
const a = this.carouselMobileDotsElement.querySelectorAll(".dot");
a.forEach((t, e) => {
t.addEventListener("click", () => {
this.flickityData.select(e), this.carouselMobileDotsClasslist(t, e);
});
}),
this.flickityData.on("select", (t) =>
this.carouselMobileDotsClasslist.call(this, a[t], t)
);
},
carouselMobileDotsClasslist(t, e) {
if (!t) return;
t.classList.add("is-selected");
const i = undefined;
[...this.carouselMobileDotsElement.querySelectorAll(".dot")]
.filter((t, i) => e !== i)
.forEach((t) => {
t.classList.remove("is-selected");
});
},
carouselDotsNumbers() {
if (!this.options.pageDots || "numbers" !== this.options.dotsIndicator)
return;
const { flickityData: t } = this,
{ numbersStyle: e } = this.options,
i = $(t.pageDots.holder);
let s;
if ("circle" === e) {
const t = this.createSlideNumbers(!1);
(s = $(
''
)),
t.prependTo(s);
} else if ("line" === e) {
const t = this.createSlideNumbers(!0);
(s = $(
''
)),
t.prependTo(s);
}
i.appendTo(s),
s.appendTo(this.carouselDotsElement),
(this.$carouselTotalSlides = $(".lqd-carousel-slides-total", s)),
(this.$carouselCurrentSlide = $(".lqd-carousel-slides-current", s)),
(this.$carouselSlidesShape = $("svg", s));
},
addSlideNumbersToArrows() {
if (
!this.options.prevNextButtons ||
!this.options.addSlideNumbersToArrows
)
return;
const { prevButton: t } = this.flickityData,
e = t.element,
i = undefined;
this.createSlideNumbers().insertAfter(e),
(this.$carouselTotalSlides = $(
".lqd-carousel-slides-total",
$(e).next(".lqd-carousel-slides")
)),
(this.$carouselCurrentSlide = $(
".lqd-carousel-slides-current",
$(e).next(".lqd-carousel-slides")
));
},
createSlideNumbers(t) {
const e =
(this.flickityData.slides.length < 10 && t ? "0" : "") +
this.flickityData.slides.length,
i = undefined;
return $(
`\n\t\t\t\t
\n\t\t\t\t
\n\t\t\t\t
${e}
\n\t\t\t
`
);
},
addSlidesCurrentNumbers() {
if (
"numbers" !== this.options.dotsIndicator &&
!this.options.addSlideNumbersToArrows
)
return !1;
const { flickityData: t } = this,
{ numbersStyle: e } = this.options,
i = "line" === e,
s = $(
''
);
for (let e = 1; e <= t.slides.length; e++)
s.append(
`${
e < 10 && i ? "0" : ""
}${e}`
);
setTimeout(() => {
const t = s.children("span"),
e = t.map((t, e) => $(e).outerWidth(!0)),
i = Math.ceil(Math.max(...e));
this.$carouselCurrentSlide.add(t).css("width", i);
}, 0),
s.appendTo(this.$carouselCurrentSlide),
(this.$carouselCurrentSlideInner = s);
},
changeSlidesNumbers() {
if (
"numbers" !== this.options.dotsIndicator &&
!this.options.addSlideNumbersToArrows
)
return !1;
const { flickityData: t } = this,
{ selectedIndex: e } = t,
i = this.$carouselCurrentSlideInner.children("span").eq(e)[0];
this.$carouselCurrentSlideInner.css({
transition: "transform 0.5s",
transform: `translateX(${-1 * i.offsetLeft}px)`,
});
},
changeSlidesShape() {
if (this.options.pageDots && "numbers" !== this.options.dotsIndicator)
return !1;
const { flickityData: t } = this,
e = this.$carouselSlidesShape.find("path").last(),
i = this.carouselSlidesPathLength,
s = undefined,
n =
i -
(Math.floor(
(Math.abs(Math.floor(t.x + t.cursorPosition)) /
Math.abs(Math.floor(t.slidesWidth))) *
100
) /
100) *
i;
e.css("stroke-dashoffset", Math.abs(n));
},
fullwidthSide() {
if (!this.options.fullwidthSide) return;
const t = $(this.flickityData.viewport),
e =
this.flickityData.size.width -
parseInt(this.$element.css("padding-left"), 10),
i = t.offset(),
s = this.windowWidth - (e + i.left),
n = this.isRTL ? "marginLeft" : "marginRight",
o = this.isRTL ? "paddingLeft" : "paddingRight";
let a = t.parent(".flickity-viewport-wrap"),
l = a.length
? a
: $('');
a.length ||
(t.wrap(l),
t.removeClass("overflow-hidden"),
(l = t.parent()),
t.css("overflow", "visible")),
l.css({ [n]: "", [o]: "" }),
l.css({
[n]: this.isRTL ? -1 * i.left : s >= 0 ? -1 * (s - 1) : s - 1,
[o]: this.isRTL ? Math.abs(i.left - 1) : Math.abs(s - 1),
}),
this.flickityData.resize();
},
randomVerOffset() {
if (this.options.randomVerOffset) {
const t = this.flickityData.cells;
let e = 0;
for (let i = 0; i < t.length; i++) {
const s = $(t[i].element),
n = t[i].size.height;
n > e && (e = n);
const o = e - n,
a = (Math.random() * o).toFixed();
s.children(".carousel-item-inner").css("top", a + "px");
}
}
},
navOffsets() {
const { options: t } = this,
{ navOffsets: e } = t,
i = $(this.carouselNavElement);
if (e && i && this.flickityData.options.prevNextButtons) {
const t = $(this.flickityData.prevButton.element),
s = $(this.flickityData.nextButton.element);
if (e.nav)
for (const t in e.nav) {
let s = e.nav[t].trim();
s.match(
/^-?\d*(\.\d+){0,1}(%|in|cm|mm|em|rem|ex|pt|pc|px|vw|vh|vmin|vmax)$/
) || (s = isNaN(parseFloat(s)) ? "" : parseFloat(s) + "px"),
i.css(t.trim(), s);
}
t.css({ left: e.prev }), s.css({ right: e.next });
}
},
setElementNavArrow() {
if (!this.options.prevNextButtons) return !1;
const t = this.navArrows,
e = this.flickityData.prevButton
? this.flickityData.prevButton.element
: null,
i = this.flickityData.nextButton
? this.flickityData.nextButton.element
: null;
let s = this.options.navArrow,
n,
o;
"object" != typeof s
? ((s -= 1),
this.isRTL
? ((n = $(t[s].next)), (o = $(t[s].prev)))
: ((n = $(t[s].prev)), (o = $(t[s].next))))
: ((n = $(this.options.navArrow.prev)),
(o = $(this.options.navArrow.next))),
(e || i) &&
($(e).find("svg").remove().end().append(n),
$(i).find("svg").remove().end().append(o));
},
navArrows: [
{
prev: '',
next: '',
},
{
prev: ' ',
next: '',
},
{
prev: '',
next: '',
},
{
prev: '',
next: '',
},
{
prev: '',
next: '',
},
{
prev: '',
next: '',
},
],
setEqualHeightCells() {
if (
!this.options.equalHeightCells ||
this.element.classList.contains("flickity-equal-cells")
)
return;
const { carouselEl: t } = this;
(Flickity.prototype._createResizeClass = function () {
t.classList.add("flickity-equal-cells");
}),
Flickity.createMethods.push("_createResizeClass");
},
parallax() {
if (!this.options.parallax || liquidIsMobile()) return !1;
this.flickityData.cells.forEach((t, e) => {
const i = this.isRTL ? 1 : -1,
s = ((t.target + this.flickityData.x) * i) / 3,
n = undefined,
o = $(t.element).find(this.options.parallaxEl);
o.parent(".ld-carousel-parallax-wrap").length ||
o.wrap(
''
),
o.is(":only-child") &&
o.css({
willChange: "transform",
"-webkit-transform": `translateX(${s}px)`,
transform: `translateX(${s}px)`,
});
});
},
controllingCarousels() {
const { options: t } = this,
{ controllingCarousels: e } = t;
if (null != e && e.length) {
const t = $(e.map((t) => $(t).children("[data-lqd-flickity]")));
$.each(t, (t, e) => {
const i = $(e);
i.imagesLoaded(() => {
const t = i.data("plugin_liquidCarousel");
t &&
t.carouselInitPromise.then(() => {
i.parent().addClass("is-controlled-carousel"),
t.carouselMobileDotsElement &&
t.carouselMobileDotsElement.classList.add("hidden"),
this.flickityData.on("change", (e) => {
t.flickityData.select(e);
}),
t.flickityData.on("change", (t) => {
this.flickityData.select(t);
});
});
});
});
}
},
getCellsArray() {
return this.flickityData.cells.map((t) => t.element);
},
doSomethingCrazyWithFilter() {
if (
!this.options.doSomethingCrazyWithFilters ||
liquidIsMobile() ||
this.windowWidth <= 992
)
return !1;
const t = $(".lqd-pf-carousel-header", this.$carouselContainer)[0];
if (!t) return !1;
const { x: e, size: i } = this.flickityData,
s = undefined,
n = this.flickityData.cells.filter((t) =>
$(t.element).is(":visible")
)[0].size.width,
o = gsap.utils.normalize(-n, 0, this.isRTL ? e + i.width : e),
a = gsap.utils.mapRange(0, -n, 0, -100, this.isRTL ? e + i.width : e),
l = gsap.utils.mapRange(0, -n, 0, -300, this.isRTL ? e + i.width : e);
$(t).parent().addClass("perspective"),
gsap.to(t, {
opacity: o,
z: l,
rotationY: a,
duration: 0.6,
ease: "expo.out",
});
},
filtersInit() {
if (!this.options.filters) return;
const { filtersCounter: t, filters: e } = this.options,
i = $(e),
s = $("[data-filter]", i),
n = i.siblings(".lqd-filter-dropdown");
s.each((e, i) => {
const s = $(i),
n = s.attr("data-filter");
t && this.addFilterCounts(s, n),
s.off("click"),
s.on("click.lqdCarouselFilter", () => {
s.hasClass("active") ||
(s.addClass("active").siblings().removeClass("active"),
this.filterAnimateStart(n));
});
}),
n.length &&
$("select", n).on("selectmenuchange", (t, e) => {
const i = e.item.value;
this.filterAnimateStart(i);
});
},
addFilterCounts(t, e) {
const i =
"*" === e
? this.flickityData.cells.length
: $(e, this.element).length,
s = undefined;
$(
`\n\t\t\t\t\n\t\t\t\t\t${i}\n\t\t\t\t`
).appendTo(t);
},
filterAnimateStart(t) {
const e = this.getCellsArray().filter(
(t) => !t.classList.contains("hidden")
);
gsap.to(e, {
x: "-=10%",
opacity: 0,
ease: "power4.inOut",
duration: 0.6,
stagger: 0.1,
clearProps: "x",
onStart: () => {
if (this.options.equalHeightCells) {
const t = $(this.flickityData.cells),
e = this.flickityData.size.height;
t.css("minHeight", e);
}
$(e).css({ transition: "none" });
},
onComplete: this.filterItems.bind(this, t),
});
},
filterItems(t) {
const e = $(this.getCellsArray());
this.$element.find(".hidden").removeClass("hidden"),
"*" !== t && e.not(t).addClass("hidden"),
this.options.equalHeightCells && e.css("minHeight", ""),
this.flickityData.resize(),
this.flickityData.reposition(),
this.flickityData.slides.length <= 1
? (this.flickityData.options.draggable = !1)
: (this.flickityData.options.draggable = !0),
this.flickityData.updateDraggable(),
this.filterAnimateComplete();
},
filterAnimateComplete() {
const t = this.getCellsArray().filter(
(t) => !t.classList.contains("hidden")
),
e = gsap.timeline({
defaults: { duration: 0.6, ease: "power4.out" },
onComplete: () => {
$(t).css({ transition: "", opacity: "" });
},
});
t.forEach((t) => {
const i = gsap.getProperty(t, "x", "%");
e.fromTo(t, { x: "+=10%" }, { x: i, opacity: 1 }, "<+=0.1");
}),
this.carouselMobileDotsElement &&
(this.carouselMobileDotsElement.remove(),
this.carouselMobileDots(!0));
},
marquee() {
if (!this.options.marquee) return;
(this.marqueeIsPaused = !0), (this.flickityData.x = 0);
const t = () => {
new IntersectionObserver(
([t]) => {
t.isIntersecting
? ((this.sliderElement.style.willChange = "transform"),
this.marqueePlay())
: ((this.sliderElement.style.willChange = ""),
this.marqueePause());
},
{ rootMargin: "50%" }
).observe(this.element);
};
this.options.pauseAutoPlayOnHover &&
(this.element.addEventListener(
"mouseenter",
this.marqueePause.bind(this),
!1
),
this.element.addEventListener(
"focusin",
this.marqueePause.bind(this),
!1
),
this.element.addEventListener(
"mouseleave",
this.marqueePlay.bind(this),
!1
),
this.element.addEventListener(
"focusout",
this.marqueePlay.bind(this),
!1
)),
this.flickityData.on("dragStart", this.marqueePause.bind(this)),
this.flickityData.on(
"dragEnd",
!this.options.pauseAutoPlayOnHover && this.marqueePlay.bind(this)
),
t();
},
marqueePlay() {
this.marqueeIsPaused &&
((this.marqueeIsPaused = !1), this.marqueeUpdate());
},
marqueePause() {
(this.marqueeIsPaused = !0),
this.marqueeRAF && cancelAnimationFrame(this.marqueeRAF);
},
marqueeUpdate() {
!this.marqueeIsPaused &&
this.flickityData.slides &&
((this.flickityData.x =
(this.flickityData.x - this.options.marqueeTickerSpeed) %
this.flickityData.slideableWidth),
this.flickityData.settle(this.flickityData.x),
(this.marqueeRAF = window.requestAnimationFrame(
this.marqueeUpdate.bind(this)
)));
},
destroy() {
$(window).off("resize.lqdCarousel");
},
}),
($.fn[e] = function (i) {
return this.each(function () {
const s = $(this),
n = { ...s.data("lqd-flickity"), ...i },
o = document.body.hasAttribute("data-disable-carousel-onmobile");
liquidIsMobile() && o && !n.forceEnableOnMobile
? s.find(".flickity-viewport").css("overflow-x", "auto")
: (n.pageDots
? (n.hasPageDotsFromOptions = !0)
: (n.hasPageDotsFromOptions = !1),
n.forceDisablePageDots || (n.pageDots = !0),
$.data(this, "plugin_" + e) ||
$.data(this, "plugin_" + e, new t(this, n)));
});
});
})(jQuery),
jQuery(document).ready(function ($) {
$("[data-lqd-flickity]").liquidCarousel();
}),
(function ($) {
const t = "liquidCarouselFalcate";
let e = {};
class i {
constructor(i, s) {
(this.element = i),
(this.$element = $(i)),
(this.options = $.extend({}, e, s)),
(this._defaults = e),
(this._name = t),
(this.ms = null),
(this.activeItems = [0, 1, 2]),
(this.loopCount = 2),
(this.$carouselItems = $(".carousel-items", this.element)),
(this.$carouselCells = []),
(this.isMobile = liquidIsMobile()),
this.$carouselItems.length && this.onImagesLoaded();
}
onImagesLoaded() {
imagesLoaded(this.element, () => {
this.isMobile
? (this.$element.addClass("carousel-falcate-mobile"),
this.initFlickityCarousel())
: (this.addCarouselCellsDetails(), this.initFalcateCarousel());
});
}
addCarouselCellsDetails() {
$.each($(".carousel-item", this.element), (t, e) => {
const i = {},
s = $(e);
(i.el = e),
(i.width = s.outerWidth(!0)),
(i.height = s.outerHeight(!0)),
this.$carouselCells.push(i);
}),
this.$carouselItems.hide();
}
initFalcateCarousel() {
(this.ms = new MomentumSlider({
el: this.element,
multiplier: 0.6,
range: [0, this.$carouselCells.length - 1],
vertical: !0,
loop: this.loopCount,
currentIndex: this.activeItems[1],
rangeContent: (t) => $(this.$carouselCells[t].el).html(),
style: { transform: [{ translateX: [0, -100] }] },
customStyles: (t, e, i) => {
this.customStyles(t, e, i), this.updateContainerHeight(t, e, i);
},
change: () => {
this.fadeInActiveItems(), this.updateContainerHeight();
},
})),
$("body").hasClass("lazyload-enabled") &&
window.liquidLazyload &&
window.liquidLazyload.update();
}
fadeInActiveItems() {
if (!this.ms) {
const t = this.$element.find(".ms-container"),
e = $(".ms-slide", t);
this.activeItems.forEach((t) => {
const i = t + this.loopCount;
$(e[i]).css("opacity", 1);
});
}
}
fadeOutInactiveItems(t) {
if (!this.ms) return !1;
const e = t + this.loopCount - 1,
i = t + this.loopCount,
s = t + this.loopCount + 1;
$(this.ms.msSlides).each((t, n) => {
const o = $(n);
o.addClass("ms-slide-inactive"),
[e, i, s].map((e) => {
t === e && o.removeClass("ms-slide-inactive");
});
});
}
updateContainerHeight(t, e) {
if (!this.ms) {
const t = this.$element.find(".ms-container"),
e = $(".ms-slide", t),
i = $(e[this.activeItems[0 + this.loopCount]]);
let s = 0;
return (
this.activeItems.forEach((t) => {
const i = t + this.loopCount;
s += $(e[i]).outerHeight();
}),
t.css({ height: s, transform: `translateY(${i.outerHeight()}px)` }),
!1
);
}
const { msSlides: i } = this.ms;
let s = 0;
$.each([$(i[t - 1]), $(i[t]), $(i[t + 1])], (t, e) => {
s += $(e).outerHeight();
}),
(s = Math.round((Math.abs(e) - s) / -1)),
this.$element.height(s);
}
customStyles(t, e, i) {
if (!this.ms) return !1;
const { msSlides: s } = this.ms,
n = (Math.abs(e) - 1) / -1;
if (($(s[t]).css({ opacity: 1 }), i)) {
const i = $(s[t - 1]),
o = Math.round((e - i.outerHeight()) / -1);
i.css({ opacity: n }),
$(this.ms.msContainer).css({ transform: `translateY(${o}px)` });
}
if (!i) {
const i = $(s[t + 1]),
o = $(s[t - 1]),
a = Math.round((Math.abs(e) - o.outerHeight()) / -1);
i.css({ opacity: n }),
$(this.ms.msContainer).css({ transform: `translateY(${a}px)` });
}
}
initFlickityCarousel() {
this.$carouselItems.liquidCarousel({ pageDots: !0 });
}
}
$.fn[t] = function (e) {
return this.each(function () {
const s = { ...$(this).data("carousel-options"), ...e };
$.data(this, "plugin_" + t) ||
$.data(this, "plugin_" + t, new i(this, s));
});
};
})(jQuery),
jQuery(document).ready(function ($) {
$(".carousel-falcate").liquidCarouselFalcate();
}),
(function ($) {
const t = "liquidCarouselStack";
let e = {
autoplay: !1,
distDragBack: 150,
distDragMax: 450,
isRandom: !1,
onUpdateStack: function (t) {
return !1;
},
};
class i {
constructor(i, s) {
(this.element = i),
(this.$element = $(i)),
(this.$container = $(".carousel-items", this.element)),
(this.$prevBtn = $(".lqd-carousel-stack-prev", this.element)),
(this.$nextBtn = $(".lqd-carousel-stack-next", this.element)),
(this.items = this.$container.children(".carousel-item").get()),
(this.options = $.extend({}, e, s)),
(this._defaults = e),
(this._name = t),
(this.isInit = !1),
(this.moveVector = {}),
(this.draggie = null),
this._init(),
this.options.autoplay && this.autoplay();
}
autoplay() {
isNaN(this.options.autoplay) ||
this.options.autoplay <= 0 ||
(this.autoplayTimeout = setTimeout(() => {
this._moveAway("next");
}, this.options.autoplay));
}
shuffle(t) {
let e = t.length,
i,
s;
for (; e; )
(s = Math.floor(Math.random() * e--)),
(i = t[e]),
(t[e] = t[s]),
(t[s] = i);
return t;
}
setTransformStyle(t, e) {
(t.style.WebkitTransform = e),
(t.style.msTransform = e),
(t.style.transform = e);
}
initSetting() {
(this.itemsCount = this.items.length),
this._setContainerHeight(),
this._setStackStyle(),
this.itemsCount <= 1 ||
(this.isInit || (this._initDragg(), this._initEvents()),
(this.isInit = !0));
}
_init() {
this.options.isRandom && this.shuffle(this.items),
(this.current = 0),
this.initSetting();
}
_initEvents() {
const t = liquidDebounce(this.onResize.bind(this), 750);
this.draggie.on("dragMove", (t, e, i) => {
this._onDragMove.call(this, t, i);
}),
this.draggie.on("dragEnd", (t) => {
this._onDragEnd.call(this, t);
}),
this.$prevBtn.on("click", this.goToPrev.bind(this)),
this.$nextBtn.on("click", this.goToNext.bind(this)),
$liquidWindow.on("resize.lqdCarouselStack", t);
}
_setContainerHeight() {
(this.element.style.transition = "height 0.3s"),
(this.element.style.height = `${$(
this._firstItem()
).outerHeight()}px`);
}
_setStackStyle(t) {
var e = this._firstItem(),
i = this._secondItem(),
s = this._thirdItem();
this.items.forEach((t) =>
t.classList.remove("is-first", "is-second", "is-third")
),
e &&
((e.style.zIndex = 4),
e.classList.add("is-first"),
gsap.to(e, {
ease: "power4.out",
duration: 0.6,
x: 0,
y: 0,
z: 0,
})),
i &&
((i.style.zIndex = 3),
i.classList.add("is-second"),
gsap.to(i, {
startAt: { x: 0, y: 0, z: () => (t && "next" !== t ? 0 : -180) },
x: 0,
y: 0,
z: () => -80,
ease: "power4.out",
duration: 0.6,
})),
s &&
((s.style.zIndex = 2),
s.classList.add("is-third"),
gsap.to(s, {
startAt: { x: 0, y: 0, z: () => (t && "next" !== t ? 0 : -280) },
x: 0,
y: 0,
z: () => -180,
duration: 0.6,
ease: "power4.out",
}));
}
_moveAway(t) {
if (this.animating) return;
const e = this._getTranslateVal(t);
let i,
s = !1;
(this.animating = !0),
this._disableDragg(),
t && "next" !== t
? ((i =
this.draggie.element.previousElementSibling ||
this.items[this.itemsCount - 1]),
(this.draggie.element.style.zIndex = 3),
(i.style.zIndex = 4))
: (i = this.draggie.element),
gsap.killTweensOf(i);
const n = gsap.to(i, {
startAt: { z: e.z[0], opacity: () => ("prev" !== t ? 1 : 0) },
duration: 0.6,
ease: "power4.out",
x: e.x,
y: e.y || 0,
z: e.z[1],
opacity: () => ("prev" !== t ? 0 : 1),
onUpdate: () => {
n.progress() >= 0.5 && !s && ((s = !0), this.onEndTransFn(t));
},
onComplete: () => {
this.onCompleteTransFn(i);
},
}),
o = this._secondItem(),
a = this._thirdItem();
o &&
gsap.to(o, { ease: "power4.out", duration: 0.6, x: 0, y: 0, z: -80 }),
a &&
gsap.to(a, {
ease: "power4.out",
duration: 0.6,
x: 0,
y: 0,
z: -180,
});
}
onEndTransFn(t) {
gsap.to(this.draggie.element, {
x: 0,
y: 0,
z: -180,
ease: "power4.out",
duration: 0.6,
onComplete: () => {
this.draggie.element.style.transform = "";
},
}),
t && "next" !== t
? ((this.draggie.element.style.zIndex = 4),
(this.current =
this.current > 0 ? this.current - 1 : this.itemsCount - 1))
: ((this.draggie.element.style.left =
this.draggie.element.style.top =
"0px"),
(this.draggie.element.style.zIndex = -1),
(this.current =
this.current < this.itemsCount - 1 ? this.current + 1 : 0)),
this._setStackStyle(t),
this._initDragg(),
this._initEvents(),
this.options.onUpdateStack(this.current),
this._setContainerHeight();
}
onCompleteTransFn(t) {
(this.animating = !1),
this.autoplayTimeout && clearTimeout(this.autoplayTimeout),
this.options.autoplay && this.autoplay(),
(t.style.opacity = "");
}
_moveBack() {
const t = this._secondItem(),
e = this._thirdItem();
gsap.to(this.draggie.element, {
startAt: { x: this.moveVector.x, y: this.moveVector.y },
ease: "power4.out",
duration: 0.6,
x: 0,
y: 0,
z: 0,
}),
(this.draggie.element.style.left = "0px"),
(this.draggie.element.style.top = "0px"),
t &&
gsap.to(t, {
ease: "power4.out",
duration: 0.6,
x: 0,
y: 0,
z: -80,
}),
e &&
gsap.to(e, {
ease: "power4.out",
duration: 0.6,
x: 0,
y: 0,
z: -180,
});
}
_onDragMove(t, e) {
if (((this.moveVector = e), this._outOfBounds())) this._moveAway();
else {
const t = this._secondItem(),
e = this._thirdItem();
t &&
gsap.to(t, {
ease: "power4.out",
duration: 0.3,
x: 0.6 * this.moveVector.x,
y: 0.6 * this.moveVector.y,
}),
e &&
gsap.to(e, {
ease: "power4.out",
duration: 0.3,
x: 0.3 * this.moveVector.x,
y: 0.3 * this.moveVector.y,
});
}
}
_onDragEnd() {
this._outOfBounds() ||
(this._outOfSight()
? (this._setContainerHeight(), this._moveAway())
: this._moveBack());
}
_initDragg() {
this.draggie = new Draggabilly(this.items[this.current], {
handle: ".lqd-carousel-handle",
});
}
_disableDragg() {
this.draggie.disable();
}
_outOfBounds() {
return (
Math.abs(this.moveVector.x) > this.options.distDragMax ||
Math.abs(this.moveVector.y) > this.options.distDragMax
);
}
_outOfSight() {
return (
Math.abs(this.moveVector.x) > this.options.distDragBack ||
Math.abs(this.moveVector.y) > this.options.distDragBack
);
}
_getTranslateVal(t) {
var e = Math.sqrt(
Math.pow(this.moveVector.x, 2) + Math.pow(this.moveVector.y, 2)
),
i = Math.asin(Math.abs(this.moveVector.y) / e) / (Math.PI / 180),
s = e + this.options.distDragBack,
n = Math.cos(i * (Math.PI / 180)) * s,
o = Math.sin(i * (Math.PI / 180)) * s,
a = n - Math.abs(this.moveVector.x),
l = o - Math.abs(this.moveVector.y);
return t
? "prev" === t
? { x: 0, y: 0, z: [80, 0] }
: "next" === t
? { x: 0, y: 0, z: [0, 80] }
: void 0
: {
x: this.moveVector.x > 0 ? a : -1 * a,
y: this.moveVector.y > 0 ? l : -1 * l,
z: [0, 0],
};
}
_firstItem() {
return this.items[this.current];
}
_secondItem() {
if (this.itemsCount >= 2)
return this.current + 1 < this.itemsCount
? this.items[this.current + 1]
: this.items[Math.abs(this.itemsCount - (this.current + 1))];
}
_thirdItem() {
if (this.itemsCount >= 3)
return this.current + 2 < this.itemsCount
? this.items[this.current + 2]
: this.items[Math.abs(this.itemsCount - (this.current + 2))];
}
_lastItem() {
return this.itemsCount >= 3 ? this._thirdItem() : this._secondItem();
}
goToPrev() {
this._moveAway("prev");
}
goToNext() {
this._moveAway("next");
}
add(t) {
this.$container.appendChild(t), this.items.push(t), this.initSetting();
}
getSize() {
return this.itemsCount;
}
getCurrent() {
return this.current;
}
getCurrentItem() {
return this.items[this.current];
}
insert(t, e) {
this.$container.insertBefore(t, this.$container.childNodes[e]),
this.items.splice(e, 0, t),
this.initSetting();
}
remove(t) {
0 !== this.items.length &&
(this.current >= t && this.current--,
this.$container.removeChild(this.$container.childNodes[t]),
this.items.splice(t, 1),
this.current >= this.items.length && (this.current = 0),
this.initSetting());
}
onResize() {
this._setContainerHeight();
}
destroy() {
$(window).off("resize.lqdCarouselStack"),
this.$prevBtn.off("click"),
this.$nextBtn.off("click");
}
}
$.fn[t] = function (e) {
return this.each(function () {
const s = { ...$(this).data("carousel-options"), ...e };
$.data(this, "plugin_" + t) ||
$.data(this, "plugin_" + t, new i(this, s));
});
};
})(jQuery),
jQuery(document).ready(function ($) {
liquidWindowWidth() <= 768 ||
$(".lqd-carousel-stack")
.filter((t, e) => !e.closest(".lqd-tabs-pane:not(.active)"))
.liquidCarouselStack();
}),
(function ($) {
function t(t, s) {
(this.element = t),
(this.options = $.extend({}, i, s)),
(this._defaults = i),
(this._name = e),
this.build();
}
const e = "liquidCarouselV3d";
let i = { itemsSelector: ".carousel-item" };
(t.prototype = {
build: function () {
this.init();
},
init: function () {
const t = this,
e = $(t.element),
i = t.options.itemsSelector;
t.prepareitems();
const s = $(i, e).first(),
n = s.next(),
o = n.next();
return (
(t.dragY = 0),
(t.startY = 0),
(t.currentY = 0),
t.setActive(s, e),
t.initAnim(e, s, o, n),
t.initDrag(),
t.initClicks(),
e.addClass("carousel-initialized"),
t
);
},
prepareitems() {
const t = this,
e = $(t.options.itemsSelector, t.element);
if (e.length <= 2 && e.length >= 1) {
const i = e[0];
for (let s = e.length; s <= 2; s++)
$(i).clone(!0).appendTo($(t.element).find(".carousel-items"));
}
},
setActive: function (t, e) {
const i = $(".is-top", e),
s = $(".is-active", e),
n = $(".is-bottom", e);
i.length && i.addClass("was-top"),
s.length && s.addClass("was-active"),
n.length && n.addClass("was-bottom"),
t
.addClass("is-active")
.removeClass("is-top is-bottom")
.siblings()
.removeClass("is-active"),
this.setBottom(t),
this.setTop(t);
},
setBottom: function (t) {
const e = $(this.element),
i = this.options.itemsSelector,
s = $(i, e).first();
let n = t.next();
!n.length && t.is(":last-child") && (n = s),
n
.addClass("is-bottom")
.removeClass("is-active is-top was-active")
.siblings()
.removeClass("is-bottom");
},
setTop: function (t) {
const e = $(this.element),
i = this.options.itemsSelector,
s = $(i, e).last();
let n = t.prev();
!n.length && t.is(":first-child") && (n = s),
n
.addClass("is-top")
.removeClass("is-active is-bottom was-active")
.siblings()
.removeClass("is-top");
},
initAnim: function (t, e, i, s) {
if (((this.animInited = !1), !this.animInited)) {
const i = undefined;
gsap
.timeline({ duration: 0 })
.to(
t
.get(0)
.querySelectorAll(
".carousel-item:not(.is-active):not(.is-bottom)"
),
{ yPercent: -60, z: 0, scale: 0.9 },
0
)
.to(e.get(0), { z: 50, scale: 1 }, 0)
.to(s.get(0), { yPercent: 50, z: 0, scale: 0.9 }, 0),
(this.animInited = !0);
}
},
initClicks() {
$(this.element).on(
"click",
".is-top",
this.moveItems.bind(this, "prev")
),
$(this.element).on(
"click",
".is-bottom",
this.moveItems.bind(this, "next")
);
},
initDrag: function () {
const t = this,
e = $(t.element);
e.on("mousedown", t.pointerStart.bind(t)),
e.on("mousemove", t.pointerMove.bind(t)),
e.on("mouseup", t.pointerEnd.bind(t));
},
pointerStart: function (t) {
const e = this,
i = $(e.element);
(e.startY = t.pageY || t.touches[0].pageY),
(e.currentY = e.startY),
i.addClass("pointer-down");
},
pointerMove: function (t) {
const e = this;
(e.currentY = t.pageY || t.touches[0].pageY),
(e.dragY = parseInt(e.startY - e.currentY, 10));
},
pointerEnd: function () {
const t = $(this.element);
(this.dragY = parseInt(this.startY - this.currentY, 10)),
this.dragY >= 20
? this.moveItems("next")
: this.dragY <= -20 && this.moveItems("prev"),
t.removeClass("pointer-down");
},
moveItems: function (t) {
if ($(this.element).hasClass("items-moving")) return;
const e = $(this.element),
i = $(this.options.itemsSelector),
s = $(".is-bottom", e),
n = $(".is-top", e),
o = gsap.timeline({
duration: 0.65,
onUpdate: () => {
$(i, e).addClass("is-moving");
},
onComplete: () => {
$(i, e).removeClass("is-moving was-top was-active was-bottom"),
$(this.element).removeClass("items-moving");
},
});
"next" == t
? this.setActive(s, e)
: "prev" == t && this.setActive(n, e);
const a = $(".is-active", e),
l = $(".is-bottom", e),
r = $(".is-top", e);
"next" == t
? this.moveNext(o, a, l, r)
: "prev" == t && this.movePrev(o, a, l, r);
},
moveNext: function (t, e, i, s) {
$(this.element).addClass("items-moving"),
t
.fromTo(
s.get(0),
{ rotateX: -18 },
{ yPercent: -60, z: 0, rotateX: 0, scale: 0.9 },
0
)
.fromTo(
e.get(0),
{ rotateX: -18 },
{ yPercent: 0, z: 50, rotateX: 0, scale: 1 },
0
)
.fromTo(
i.get(0),
{ rotateX: -18 },
{ yPercent: 50, z: 0, rotateX: 0, scale: 0.9 },
0
);
},
movePrev: function (t, e, i, s) {
$(this.element).addClass("items-moving"),
t
.fromTo(
s.get(0),
{ rotateX: 18 },
{ yPercent: -60, z: 0, rotateX: 0, scale: 0.9 },
0
)
.fromTo(
e.get(0),
{ rotateX: 18 },
{ yPercent: 0, z: 50, rotateX: 0, scale: 1 },
0
)
.fromTo(
i.get(0),
{ rotateX: 18 },
{ yPercent: 50, z: 0, rotateX: 0, scale: 0.9 },
0
);
},
}),
($.fn[e] = function (i) {
return this.each(function () {
const s = { ...$(this).data("plugin-options"), ...i };
$.data(this, "plugin_" + e) ||
$.data(this, "plugin_" + e, new t(this, s));
});
});
})(jQuery),
jQuery(document).ready(function ($) {
$(".carousel-vertical-3d").liquidCarouselV3d();
}),
(function ($) {
const t = "liquidMegamenu";
let e = {};
class i {
constructor(i, s) {
(this.options = { ...e, ...s }),
(this._defaults = e),
(this._name = t),
(this.element = i),
(this.$element = $(this.element)),
(this.mobileNavBreakPoint = fastdom.measure(
liquidMobileNavBreakpoint
)()),
(this.tabletBreakpoint =
this.mobileNavBreakPoint <= 992 ? 992 : this.mobileNavBreakPoint),
(this.elementBoundingRect = null),
(this.megamenuBoundingRect = null),
(this.megamenuFinalPos = {}),
(this.parentOffsetLeft = 0),
(this.breakpoints = {
[this.mobileNavBreakPoint - 60]: [
this.mobileNavBreakPoint + 1,
1 / 0,
],
940: [992, this.tabletBreakpoint],
}),
(this.$customMenuParent = this.$element
.parent()
.parent(".lqd-custom-menu")),
(this.isInCustomMenu =
this.$customMenuParent.length &&
!this.$element.parent().hasClass("inline-nav")),
(this.submenu = this.element.querySelector(".nav-item-children")),
(this.megamenuRowsWrap = this.submenu.querySelector(
".lqd-megamenu-rows-wrap"
)),
(this.megamenuRows = liquidHeaderIsElementor
? this.megamenuRowsWrap.querySelectorAll(
":scope > .elementor > .elementor-section-wrap > .elementor-section, :scope > .elementor > .elementor-section, :scope > .elementor > .e-container, :scope > .elementor > .e-con"
)
: this.megamenuRowsWrap.querySelectorAll(
":scope > .megamenu-row, :scope > .vc_row"
)),
(this.isContentStretched =
this.megamenuRowsWrap.classList.contains("container-fluid")),
(this.isFullwidth =
this.element.classList.contains("megamenu-fullwidth")),
(this.windowWidth = fastdom.measure(liquidWindowWidth)()),
(this.columnsWidth = 0),
(this.defaultSidePadding = liquidHeaderIsElementor ? 0 : 15),
(this.positionApplied = !1),
(this.dropdownInfoPromise = new Promise((t) => {
this.element.addEventListener(
"megamenu-position-applied",
async () => {
t({
element: this.element,
dropdown: this.submenu,
elementBoundingRect: this.elementBoundingRect,
megamenuBoundingRect:
this.megamenuBoundingRect ||
(await this.getMegamenuBoundingRect()),
megamenuFinalPos: this.megamenuFinalPos,
});
}
);
})),
this.init();
}
init() {
this.isInCustomMenu && this.$customMenuParent.css("position", "static"),
this.isInCustomMenu &&
!this.$customMenuParent.hasClass(
"lqd-custom-menu-mobile-collapsible"
) &&
this.$element.closest("ul").siblings(".lqd-custom-menu-dropdown-btn")
.length &&
!this.$element.closest("ul").hasClass("is-active")
? this.$element
.closest("ul")
.on("shown.bs.collapse", this.sizing.bind(this))
: this.sizing();
}
async sizing() {
this.positionApplied ||
(this.isFullwidth ||
liquidHeaderIsElementor ||
(await this.getColumnsWidth(), await this.setContainerWidth()),
(this.elementBoundingRect = await this.getElementBoundingRect()),
(this.megamenuBoundingRect = await this.getMegamenuBoundingRect()),
this.positioning(),
this.resizeWindow(),
this.isContentStretched &&
this.element.classList.add("megamenu-content-stretch"));
}
async getColumnsWidth() {
if (!this.megamenuRows || liquidHeaderIsElementor) return 0;
const t = [];
this.megamenuRows.forEach((e) => {
const i = e.querySelectorAll(
":scope > .megamenu-col, :scope > .ld-container > .ld-row > .wpb_column"
);
if (!i || !i.length) return 0;
const s = new Promise((t) => {
let e = 0;
i.forEach((t) => {
const s = getComputedStyle(t),
{ paddingLeft: n, paddingRight: o } = s;
(e += t.offsetWidth + (parseInt(n, 10) + parseInt(o, 10))),
1 === i.length && (t.style.width = "100%");
}),
t(e);
});
t.push(s);
});
const e = await Promise.all(t);
this.columnsWidth = Math.max(...e);
}
setContainerWidth() {
return fastdomPromised.mutate(() => {
this.megamenuRowsWrap.style.width =
this.columnsWidth - 2 * this.defaultSidePadding + "px";
});
}
getGlobalContainerDimensions() {
const t = this.windowWidth,
e = { width: 0, offsetLeft: 0 };
return (
$.each(this.breakpoints, (i, s) => {
t >= s[0] &&
t <= s[1] &&
((e.width = parseInt(i, 10)), (e.offsetLeft = (t - i) / 2));
}),
e
);
}
getElementBoundingRect() {
const t = { width: 0, height: 0, top: 0, left: 0 };
return new Promise((e) => {
new IntersectionObserver(([i], s) => {
const { boundingClientRect: n } = i;
s.disconnect(),
(t.width = n.width),
(t.height = n.height),
(t.top = n.top),
(t.left = n.left),
e(t);
}).observe(this.element);
});
}
async getMegamenuBoundingRect() {
const t = this.$element.find("[data-lqd-flickity]"),
e = [],
i = { width: 0, height: 0, top: 0, left: 0 };
return (
t.length &&
t.each((t, i) => {
$(i).liquidCarousel({ forceApply: !0 });
const s = $(i).data("plugin_liquidCarousel");
s && e.push(s.carouselInitPromise);
}),
e.length > 0 && (await Promise.all(e)),
new Promise((t) => {
new IntersectionObserver(([e], s) => {
const { boundingClientRect: n } = e;
s.disconnect(),
(i.width = e.target.offsetWidth),
(i.height = e.target.offsetHeight),
(i.top = n.top),
(i.left = n.left),
t(i);
}).observe(this.megamenuRowsWrap);
})
);
}
async resetPositioning() {
await new Promise((t) => {
(this.windowWidth = liquidWindowWidth()),
(this.columnsWidth = 0),
(this.positionApplied = !1),
this.element.classList.remove("position-applied"),
(this.megamenuRowsWrap.style.width = ""),
(this.submenu.style.width = ""),
(this.submenu.style.left = ""),
(this.submenu.style.right = ""),
(this.submenu.style.top = ""),
(this.submenu.style.marginLeft = ""),
t();
});
}
positioning() {
const t =
window.elementorFrontendConfig &&
(window.elementorFrontendConfig.responsive?.breakpoints?.mobile_extra
?.value ||
window.elementorFrontendConfig.responsive?.breakpoints?.mobile
?.value);
if (t && liquidWindowWidth() < t) return this.onPositioningDone();
const e = this.elementBoundingRect.width,
i = this.elementBoundingRect.left,
s = this.megamenuBoundingRect.width,
n = fastdom.measure(this.getGlobalContainerDimensions, this)(),
o = n.width,
a = n.offsetLeft,
l = i <= o + a;
let r = 0,
d = 0,
h = 0,
c = 0;
fastdomPromised.mutate(() => {
if (
(this.isFullwidth ||
(s === o &&
l &&
((r = a - this.parentOffsetLeft),
(this.submenu.style.left = `${r}px`)),
l &&
((r = a + (o / 2 - s / 2) - this.parentOffsetLeft),
(this.submenu.style.left = `${r}px`),
(c = r)),
c > i &&
((r = i - this.parentOffsetLeft),
(this.submenu.style.left = `${r}px`)),
c + s < i + e &&
((r = i + e - (c + s) + c - this.parentOffsetLeft),
(this.submenu.style.left = `${r}px`)),
(this.megamenuFinalPos.left = r)),
this.isInCustomMenu)
) {
const t = this.elementBoundingRect.top,
n = this.elementBoundingRect.height,
o = this.megamenuBoundingRect.top,
a = undefined;
t + n > o + this.megamenuBoundingRect.height && (h = t - o),
(this.submenu.style.top = `${h}px`),
(this.megamenuFinalPos.top = h),
this.isFullwidth &&
this.megamenuBoundingRect.left + s > this.windowWidth &&
((d = -1 * (this.windowWidth - (i + e))),
(this.submenu.style.width = "auto"),
(this.submenu.style.right = `${d}px`),
(this.megamenuFinalPos.right = d));
}
this.onPositioningDone();
});
}
onPositioningDone() {
(this.positionApplied = !0),
this.element.classList.add("position-applied"),
this.element.dispatchEvent(
new CustomEvent("megamenu-position-applied", {
bubbles: !1,
detail: { element: this.element },
})
);
}
resizeWindow() {
const t = liquidDebounce(this.onResizeWindow.bind(this), 300);
$(window).on("resize", t),
$(document).on("lqd-header-sticky-change", () => {
this.$element.is(":visible") &&
this.isInCustomMenu &&
this.$element.closest(".main-header").length &&
t();
});
}
async onResizeWindow() {
await this.resetPositioning(),
this.isFullwidth ||
liquidHeaderIsElementor ||
(await this.getColumnsWidth(), await this.setContainerWidth()),
(this.elementBoundingRect = await this.getElementBoundingRect()),
(this.megamenuBoundingRect = await this.getMegamenuBoundingRect()),
this.positioning();
}
}
$.fn[t] = function (e) {
return this.each(function () {
const s = { ...$(this).data("megamenu-options"), ...e };
$.data(this, "plugin_" + t) ||
$.data(this, "plugin_" + t, new i(this, s));
});
};
})(jQuery),
jQuery(document).ready(function ($) {
$(".megamenu")
.filter((t, e) => {
const i = $(e),
s = i.parent().hasClass("lqd-mobile-main-nav");
return (
s && e.classList.add("position-applied"),
!(
i.closest(".navbar-fullscreen").length ||
(i.closest(".main-header").length &&
$liquidBody.hasClass("header-style-side")) ||
s ||
i.parent().hasClass("lqd-menu-items-block")
)
);
})
.liquidMegamenu();
}),
(function ($) {
const t = "liquidMegamenuSlide";
let e = {};
class i {
constructor(i, s) {
(this._defaults = e),
(this._name = t),
(this.options = { ...e, ...s }),
(this.DOM = {}),
(this.DOM.element = i),
(this.DOM.$element = $(i)),
(this.DOM.$megamenuItems = this.DOM.$element
.find(".megamenu")
.filter(
(t, e) =>
!$(e).parent().hasClass("lqd-mobile-main-nav") &&
!$(e).parent().hasClass("lqd-menu-items-block")
)),
(this.DOM.$nonMegamenuItems = this.DOM.$megamenuItems
.eq(0)
.siblings()
.not(".megamenu")),
(this.dropdownsInfo = []),
(this.$megamenusParent = !1),
(this.lastActiveIndex = !1),
(this.activeIndex = !1),
(this.wasRevealed = !1),
(this.timeout = !1),
this.getMegamenuDropdowns().then((t) => {
(this.dropdownsInfo = t.filter((t) => null != t.dropdown)),
(this.$megamenusParent = $(t[0].element.parentNode)),
this.buildMarkup(),
this.init();
});
}
async getMegamenuDropdowns() {
const t = [];
return (
this.DOM.$megamenuItems.each((e, i) => {
const s = undefined,
n = $(i).data("plugin_liquidMegamenu");
n && t.push(n.dropdownInfoPromise);
}),
await Promise.all(t)
);
}
buildMarkup() {
this.$megamenusParent.append(
'\n\t\t\t\t\n\t\t\t'
);
}
init() {
this.eventListeners();
}
eventListeners() {
document.addEventListener("lqd-submenu-change", (t) => {
const { detail: e } = t,
{ state: i, $submenu: s } = e,
n = s?.closest("li");
if (n?.length) {
const t = this.DOM.$megamenuItems.get().indexOf(n[0]);
t >= 0
? "show" === i
? this.onMegamenuItemEnter(t)
: this.onMegamenuItemLeave(t)
: this.resetReveal();
} else this.resetReveal();
});
}
onMegamenuItemEnter(t) {
let e, i, s, n;
(e = this.dropdownsInfo[t].elementBoundingRect),
(i = this.dropdownsInfo[t].megamenuBoundingRect),
(s = this.dropdownsInfo[t].megamenuFinalPos),
(n = e.left + e.width / 2),
this.wasRevealed
? this.DOM.element.classList.remove("lqd-megamenu-slide-reveal")
: (this.DOM.element.classList.add("lqd-megamenu-slide-reveal"),
this.DOM.element.style.setProperty(
"--lqd-megamenu-init-width",
i.width
),
this.DOM.element.style.setProperty(
"--lqd-megamenu-init-height",
i.height
)),
this.DOM.$megamenuItems
.eq(t)
.removeClass("lqd-megamenu-item-slide-out"),
(this.activeIndex = t),
this.DOM.element.style.setProperty(
"--lqd-megamenu-slide-arrow-pos",
`${n}px`
),
this.DOM.element.style.setProperty(
"--lqd-megamenu-current-width",
i.width
),
this.DOM.element.style.setProperty(
"--lqd-megamenu-current-height",
i.height
),
this.DOM.element.style.setProperty(
"--lqd-megamenu-x",
`${s.left || 0}px`
),
this.DOM.element.style.setProperty(
"--lqd-megamenu-y",
`${s.top || 0}px`
),
this.lastActiveIndex >= 0 &&
this.activeIndex >= 0 &&
(this.lastActiveIndex < this.activeIndex
? this.DOM.element.classList.add("lqd-megamenu-slide-from-right")
: this.lastActiveIndex > this.activeIndex &&
this.DOM.element.classList.remove(
"lqd-megamenu-slide-from-right"
)),
(this.wasRevealed = !0),
$liquidMainHeader.addClass("lqd-megamenu-slide-active");
}
onMegamenuItemLeave(t) {
(this.activeIndex = !1),
(this.lastActiveIndex = t),
this.DOM.element.classList.remove("lqd-megamenu-slide-reveal"),
this.DOM.element.classList.remove("lqd-megamenu-slide-from-right"),
this.DOM.$megamenuItems.eq(t).addClass("lqd-megamenu-item-slide-out"),
$liquidMainHeader.removeClass("lqd-megamenu-slide-active"),
(this.timeout = setTimeout(() => {
(!1 === this.activeIndex || this.activeIndex < 0) &&
this.resetReveal(),
clearTimeout(this.timeout);
}, 180));
}
resetReveal() {
(this.activeIndex = !1),
(this.wasRevealed = !1),
this.DOM.element.classList.remove("lqd-megamenu-slide-reveal"),
this.DOM.element.classList.remove("lqd-megamenu-slide-from-right"),
$liquidMainHeader.removeClass("lqd-megamenu-slide-active");
}
}
$.fn[t] = function (e) {
return this.each(function () {
const s = { ...$(this).data("megamenu-slide-options"), ...e };
$.data(this, "plugin_" + t) ||
$.data(this, "plugin_" + t, new i(this, s));
});
};
})(jQuery),
jQuery(document).ready(function ($) {
$("[data-megamenu-slide]")
.filter((t, e) => $(e).find(".megamenu").length)
.liquidMegamenuSlide();
}),
(function ($) {
const t = "liquidCountdown";
let e = {
daysLabel: "Days",
hoursLabel: "Hours",
minutesLabel: "Minutes",
secondsLabel: "Seconds",
timezone: null,
};
class i {
constructor(i, s) {
(this.element = i),
(this.$element = $(i)),
(this.options = $.extend({}, e, s)),
(this._defaults = e),
(this._name = t),
this.init();
}
init() {
const { options: t } = this,
{ until: e, timezone: i } = t;
return (
this.$element.countdown({
until: new Date(e.replace(/-/g, "/")),
padZeroes: !0,
timezone: i,
layout:
'{dn}' +
t.daysLabel +
':{hn}' +
t.hoursLabel +
':{mn}' +
t.minutesLabel +
':{sn}' +
t.secondsLabel +
"",
}),
this
);
}
destroy() {
this.$element.countdown("destroy");
}
}
$.fn[t] = function (e) {
return this.each(function () {
const s = $(this).data("countdown-options") || e;
$.data(this, "plugin_" + t) ||
$.data(this, "plugin_" + t, new i(this, s));
});
};
})(jQuery, window, document),
jQuery(document).ready(function ($) {
$("[data-plugin-countdown=true]").liquidCountdown();
}),
(function ($) {
function t(t, s) {
(this._defaults = i),
(this._name = e),
(this.options = $.extend({}, i, s)),
(this.element = t),
(this.$element = $(t)),
this.init();
}
const e = "liquidCounter";
let i = { targetNumber: 0, startDelay: 0, blurEffect: !1 };
(t.prototype = {
init: function () {
this.createMarkup(), this.setupIO();
},
formatNumberWithCommas: function (t) {
return t.toString().replace(/\B(?=(\d{3})+(?!\d))/g, ",");
},
formatNumberWithSpaces: function (t) {
return t.toString().replace(/\B(?=(\d{3})+(?!\d))/g, " ");
},
formatCounterAnimator: function (t) {
return t
.toString()
.replace(
/(\d)/g,
'$1'
);
},
createMarkup: function () {
const t = $(this.element)
.children("span")
.not(".lqd-counter-element-hover"),
e = undefined,
i = this.options.targetNumber,
s = /,+/.test(i),
n = /\s+/.test(i);
s
? t.html(this.formatCounterAnimator(this.formatNumberWithCommas(i)))
: n
? t.html(this.formatCounterAnimator(this.formatNumberWithSpaces(i)))
: t.html(this.formatCounterAnimator(i)),
t.find(".lqd-counter-animator").each(function (t, e) {
const i = $(e),
s = i.find(".lqd-animator-value").text();
i.append(
`\n\t
\n\t\t- 0
\n\t\t- 1
\n\t\t- 2
\n\t\t- 3
\n\t\t- 4
\n\t\t- 5
\n\t\t- 6
\n\t\t- 7
\n\t\t- 8
\n\t\t- 9
\n\t
\n
`
);
});
},
addBlurEffect: function (t) {
if (this.options.blurEffect) {
const e = undefined;
$(".lqd-animator-numbers ul", this.element).each((e, i) => {
const s = $(i);
0 != s.parent().data("value") &&
s.css({ filter: "url('#counter-blur-" + t + "')" });
});
}
},
animateCounter: function () {
const t = this.options.startDelay / 1e3,
e = Math.round(gsap.utils.random(0, 100)),
i = $(
``
);
this.addBlurEffect(e),
this.$element.find(".lqd-animator-numbers").each((s, n) => {
const o = $(n),
a = parseInt(o.data("value"), 10);
let l = { x: 0, y: 0 },
r;
gsap.to(o.find("ul").get(0), {
y: -100 * a + "%",
ease: "power2.out",
delay: t,
duration: 1.2,
onComplete: () => {
this.$element.addClass("counter-animated");
},
}),
this.options.blurEffect &&
($(".counter-blur-svg", this.element).length ||
i.appendTo(this.element),
(r = i.find(`#counter-blur-filter-${e}`).get(0)),
gsap.to(l, {
startAt: { y: 50 + 10 * a },
ease: "power4.out",
duration: 1.2,
delay: t,
y: 0.01,
onUpdate: () => {
r.setAttribute("stdDeviation", "0," + l.y);
},
onComplete: () => {
$(".lqd-animator-numbers ul", this.element).css(
"filter",
""
);
},
}));
});
},
setupIO: function () {
new LiquidIO(this.element, this.animateCounter.bind(this), {
threshold: 0.8,
disconnect: !0,
});
},
}),
($.fn[e] = function (i) {
return this.each(function () {
const s = { ...$(this).data("counter-options"), ...i };
$.data(this, "plugin_" + e) ||
$.data(this, "plugin_" + e, new t(this, s));
});
});
})(jQuery),
jQuery(document).ready(function ($) {
$("[data-enable-counter]").liquidCounter();
}),
(function ($) {
const t = "liquidDistortedImageGallery";
let e = {
imagesContainerSelector: ".lqd-dist-gal-distort",
menuSelector: ".lqd-dist-gal-menu",
menuItemSelector: ".lqd-dist-gal-menu-item",
svgSelector: ".lqd-dist-gal-distort",
};
class i {
constructor(i, s) {
(this.element = i),
(this.$element = $(i)),
(this.options = $.extend({}, e, s)),
(this._defaults = e),
(this._name = t),
(this.DOM = {
imagesContainer: this.element.querySelector(
this.options.imagesContainerSelector
),
svg: this.element.querySelector(this.options.svgSelector),
menu: this.element.querySelector(this.options.menuSelector),
feDisplacementMapEl:
this.element.querySelector("feDisplacementMap"),
feBlurEl: this.element.querySelector("feGaussianBlur"),
feTurbulence: this.element.querySelector("feTurbulence"),
}),
(this.DOM.imgs = [
...this.DOM.imagesContainer.querySelectorAll(".lqd-dist-gal-img"),
]),
(this.DOM.menuLinks = [
...this.DOM.menu.querySelectorAll(this.options.menuItemSelector),
]),
(this.mousePos = {
x: liquidWindowWidth() / 2,
y: liquidWindowHeight() / 2,
}),
(this.lastMousePos = {
translation: {
x: liquidWindowWidth() / 2,
y: liquidWindowHeight() / 2,
},
displacement: { x: 0, y: 0 },
}),
(this.dmScale = 0),
(this.brightness = 0),
(this.rotate = 0),
(this.current = -1),
(this.rAFId = null),
(this.elOffsetTop = this.$element.offset().top),
this.initEvents();
}
lerp(t, e, i) {
return (1 - i) * t + i * e;
}
distance(t, e, i, s) {
var n = t - e,
o = i - s;
return Math.hypot(n, o);
}
lineEq(t, e, i, s, n) {
var o = (t - e) / (i - s),
a;
return o * n + (e - o * s);
}
initEvents() {
const t = liquidIsMobile();
t ||
window.addEventListener(
"mousemove",
(t) => (this.mousePos = liquidGetMousePos(t))
),
this.DOM.menuLinks.forEach((e, i) => {
if (t)
e.addEventListener("click", (t) => {
t.preventDefault();
const e = undefined,
s = [...this.DOM.imgs[i].querySelectorAll("a.fresco")];
s.length > 0 && s[0].click();
});
else {
const t = () => {
-1 !== this.current &&
gsap.to(this.DOM.imgs[this.current], {
duration: 0.2,
opacity: 0,
ease: "power2.out",
}),
(this.current = i),
this.fade
? (gsap.to(this.DOM.imgs[this.current], {
duration: 0.2,
opacity: 1,
ease: "power2.out",
}),
(this.fade = !1))
: gsap.to(this.DOM.imgs[this.current], {
duration: 0.2,
opacity: 1,
ease: "power2.out",
});
},
s = () => {
gsap.to(this.DOM.imgs[this.current], {
duration: 0.2,
opacity: 0,
ease: "power2.out",
});
};
e.addEventListener("mouseenter", t),
e.addEventListener("mouseleave", s);
}
}),
t ||
(this.DOM.menu.addEventListener("mouseenter", () => {
(this.rAFId = requestAnimationFrame(this.render.bind(this))),
(this.fade = !0);
}),
this.DOM.menu.addEventListener("mouseleave", () => {
this.rAFId && cancelAnimationFrame(this.rAFId);
}));
}
render() {
const t = this.distance(
this.lastMousePos.displacement.x,
this.mousePos.x,
this.lastMousePos.displacement.y,
this.mousePos.y
);
(this.lastMousePos.translation.x = this.lerp(
this.lastMousePos.translation.x,
this.mousePos.x,
0.2
)),
(this.lastMousePos.translation.y = this.lerp(
this.lastMousePos.translation.y,
this.mousePos.y,
0.2
)),
(this.lastMousePos.displacement.x = this.lerp(
this.lastMousePos.displacement.x,
this.mousePos.x,
0.1
)),
(this.lastMousePos.displacement.y = this.lerp(
this.lastMousePos.displacement.y,
this.mousePos.y,
0.1
)),
(this.brightness = Math.min(this.lineEq(1.75, 1, 140, 1, t), 1.5)),
(this.contrast = Math.min(this.lineEq(1.1, 1, 140, 1, t), 1.5)),
this.lastMousePos.translation.x > this.mousePos.x
? (this.rotate = Math.min(this.lineEq(-7, 0, 130, 0, t), 50))
: (this.rotate = Math.min(this.lineEq(7, 0, 130, 0, t), 50)),
gsap.to(this.DOM.imagesContainer, {
x: this.lastMousePos.translation.x - liquidWindowWidth() / 2,
y: this.lastMousePos.translation.y - this.elOffsetTop,
rotation: this.rotate,
}),
(this.rAFId = requestAnimationFrame(this.render.bind(this)));
}
}
$.fn[t] = function (e) {
return this.each(function () {
const s = { ...$(this).data("dist-gal-options"), ...e };
$.data(this, "plugin_" + t) ||
$.data(this, "plugin_" + t, new i(this, s));
});
};
})(jQuery),
jQuery(document).ready(function ($) {
$("[data-lqd-dist-gal]").liquidDistortedImageGallery();
}),
(function ($) {
const t = "liquidDynamicShape";
let e = {};
class i {
constructor(i, s) {
(this.options = $.extend({}, e, s)),
(this._defaults = e),
(this._name = t),
(this.DOM = {}),
(this.DOM.element = i),
(this.DOM.svgEl = this.DOM.element.querySelector("svg")),
(this.DOM.pathEl = this.DOM.element.querySelector("path")),
(this.paths = this.DOM.pathEl
.getAttribute("pathdata:id")
.trim()
.split(";")),
this.paths.splice(
this.paths.length,
0,
this.DOM.pathEl.getAttribute("d")
),
(this.timeline = null),
this.createTimeline(),
this.init();
}
createTimeline() {
const t = this.paths.map((t) => ({ d: t.trim() }));
this.timeline = gsap.timeline({ repeat: -1, yoyo: !0 }).pause();
for (let e = 0; e < t.length; e++)
this.timeline.to(this.DOM.pathEl, {
attr: { d: t[e].d },
duration: 2,
});
}
init() {
this.animate();
}
animate() {
this.timeline.play();
}
pause() {
this.timeline.pause();
}
}
$.fn[t] = function (e) {
return this.each(function () {
const s = { ...$(this).data("mi-options"), ...e };
$.data(this, "plugin_" + t) ||
$.data(this, "plugin_" + t, new i(this, s));
});
};
})(jQuery),
jQuery(document).ready(function ($) {
liquidIsMobile() ||
$("[data-dynamic-shape]")
.filter((t, e) => {
const i = undefined,
s = undefined;
return !$(e).closest(".vc_row.pp-section").length;
})
.liquidDynamicShape();
}),
(function ($) {
const t = "liquidFormInputs";
let e = { dropdownAppendTo: null };
class i {
constructor(i, s) {
(this.element = i),
(this.$element = $(i)),
(this.options = { ...e, ...s }),
(this._defaults = e),
(this._name = t),
this.init();
}
init() {
this.icons(),
this.initDatePicker(),
this.initSelect(),
this.initSpinner(),
this.inputsEventHandlers();
}
icons() {
this.$element.hasClass("wpcf7-form") &&
this.$element
.find(".wpcf7-form-control-wrap")
.siblings("i")
.each((t, e) => {
$(e).appendTo($(e).prev(".wpcf7-form-control-wrap"));
});
}
initDatePicker() {
const t = undefined;
this.$element
.find(".date-picker, input.wpcf7-form-control[type=date]")
.each((t, e) => {
const i = $(e);
if ("date" === i.attr("type")) {
const t = i.clone(!0);
t.attr("type", "text"),
t.insertAfter(i),
i.css("display", "none"),
t.datepicker({
dateFormat: "yy-mm-dd",
onSelect: (t) => {
i.val(t);
},
});
} else $(e).datepicker();
});
}
initSelect() {
const t = this.$element
.find("select")
.not(
".select2-hidden-accessible, .select, .woo-rating, #bbp_stick_topic_select, #bbp_topic_status_select, #bbp_forum_id, .woocommerce-widget-layered-nav-dropdown, .elementor-field-textual, .wc-pao-addon-select, .quform-field"
);
if (
t.closest(
".checkout, table.cart, .elementor-widget-woocommerce-product-add-to-cart"
).length
)
return;
let { dropdownAppendTo: e } = this.options;
if (
((t.hasClass("orderby") ||
t.hasClass("search-field") ||
t.hasClass("wpcf7-form-control") ||
t.hasClass("liquid-schedule-filter")) &&
(e = "self"),
t.closest(".variations").length)
) {
const e = $('');
t.wrap(''),
e.insertAfter(t);
} else
t.each((t, i) => {
const s = $(i),
n = s.selectmenu({
change: () => {
s.trigger("change");
},
});
if (e) {
let t;
(t =
"self" === e
? $('').insertAfter(s)
: $(e, this.element).length
? $(e, this.element)
: $(e)),
n.selectmenu("option", "appendTo", t);
}
s.on("change", () => {
s.selectmenu("refresh");
});
});
}
initSpinner() {
const t = undefined;
this.$element
.find("input.spinner, input[type=number].qty")
.each((t, e) => {
const i = $(e);
i.spinner({
spin: (t, e) => {
i.val(e.value), i.trigger("change");
},
});
});
}
getInputParent(t) {
return t.closest("p").length ? t.closest("p") : t.closest("div");
}
inputsEventHandlers() {
$("input, textarea", this.$element).on(
"focus",
this.inputOnFocus.bind(this)
),
$("input, textarea", this.$element).on(
"blur",
this.inputOnBlur.bind(this)
);
}
inputOnFocus(t) {
const e = undefined;
this.getInputParent($(t.target)).addClass("input-focused");
}
inputOnBlur(t) {
const e = $(t.target),
i = this.getInputParent(e);
"" !== e.val()
? i.addClass("input-filled")
: i.removeClass("input-filled"),
i.removeClass("input-focused");
}
}
$.fn[t] = function (e) {
return this.each(function () {
const s = { ...$(this).data("form-options"), ...e };
$.data(this, "plugin_" + t) ||
$.data(this, "plugin_" + t, new i(this, s));
});
};
})(jQuery),
jQuery(document).ready(function ($) {
$("form, .lqd-filter-dropdown, .widget")
.not(
'[name="chbs-form"], .frm-fluent-form, .hub-booking-form, .geodir-listing-search'
)
.liquidFormInputs();
}),
(function ($) {
const t = "liquidHover3d";
let e = {};
class i {
constructor(i, s) {
(this._defaults = e),
(this._name = t),
(this.options = { ...e, ...s }),
(this.element = i),
(this.$element = $(i)),
(this.hoverable = this.element.querySelector(
"[data-stacking-factor]"
)),
(this.stackingFactor = this.hoverable.getAttribute(
"data-stacking-factor"
)),
(this.rect = {}),
(this.maxRotation = 8),
(this.maxTranslation = 4),
this.build();
}
build() {
fastdom.measure(() => {
new IntersectionObserver(([t], e) => {
e.disconnect();
const { boundingClientRect: i } = t;
(this.rect = { width: i.width, height: i.height }),
this.init(),
this.$element.addClass("hover-3d-applied");
}).observe(this.element);
});
}
measure() {
return fastdomPromised
.measure(
() =>
new Promise((t) => {
new IntersectionObserver(([e], i) => {
i.disconnect(), t(e.boundingClientRect);
}).observe(this.element);
})
)
.then((t) => {
this.rect = { width: t.width, height: t.height };
});
}
init() {
this.eventHandlers();
}
eventHandlers() {
this.$element.on("mousemove.lqdHover3d", this.hover.bind(this)),
this.$element.on("mouseleave.lqdHover3d", this.leave.bind(this)),
$liquidWindow.on("resize.lqdHover3d", this.onWindowLoad.bind(this));
}
async onWindowLoad() {
await this.measure();
}
animate(t, e) {
fastdom.mutate(() => {
e
? this.element.classList.add("mouse-in")
: this.element.classList.remove("mouse-in"),
(this.hoverable.style.transition = "none"),
gsap.to(this.hoverable, {
x: -1 * t.xTranslationPercentage * t.maxTranslationX,
y: -1 * t.yTranslationPercentage * t.maxTranslationY,
rotateX: -1 * t.xRotationPercentage * t.maxRotationX,
rotateY: -1 * t.yRotationPercentage * t.maxRotationY,
duration: 0.8,
ease: "power2.out",
});
});
}
calculateRotationPercentage(t, e) {
return (-2 / e) * t + 1;
}
calculateTranslationPercentage(t, e) {
return (-2 / e) * t + 1;
}
hover(t) {
const e = {
x: t.pageX - this.$element.offset().left,
y: t.pageY - this.$element.offset().top,
},
i = {
xRotationPercentage: this.calculateRotationPercentage(
e.y,
this.rect.height
),
yRotationPercentage:
-1 * this.calculateRotationPercentage(e.x, this.rect.width),
xTranslationPercentage: this.calculateTranslationPercentage(
e.x,
this.rect.width
),
yTranslationPercentage: this.calculateTranslationPercentage(
e.y,
this.rect.height
),
};
this.animate(
{
maxTranslationX: this.maxTranslation * this.stackingFactor,
maxTranslationY: this.maxTranslation * this.stackingFactor,
maxRotationX: this.maxRotation * this.stackingFactor,
maxRotationY: this.maxRotation * this.stackingFactor,
xRotationPercentage: i.xRotationPercentage,
yRotationPercentage: i.yRotationPercentage,
xTranslationPercentage: i.xTranslationPercentage,
yTranslationPercentage: i.yTranslationPercentage,
},
!0
);
}
leave() {
this.animate(
{
maxTranslationX: 0,
maxTranslationY: 0,
maxRotationX: 0,
maxRotationY: 0,
xRotationPercentage: 0,
yRotationPercentage: 0,
xTranslationPercentage: 0,
yTranslationPercentage: 0,
},
!1
);
}
destroy() {
this.$element.off("mousemove.lqdHover3d mouseleave.lqdHover3d"),
$liquidWindow.off("resize.lqdHover3d");
}
}
$.fn[t] = function (e) {
return this.each(function () {
const s = { ...$(this).data("hover3d-options"), ...e };
$.data(this, "plugin_" + t) ||
$.data(this, "plugin_" + t, new i(this, s));
});
};
})(jQuery),
jQuery(document).ready(function ($) {
if (liquidIsMobile()) return !1;
$("[data-hover3d]")
.filter((t, e) => !$(e).closest(".lqd-tabs-pane").not(".active").length)
.liquidHover3d();
}),
(function ($) {
const t = "liquidIconboxCircle";
let e = {
startAngle: 45,
itemSelector: ".lqd-ib-circ-icn, .one-ib-circ-icn",
contentsContainer: ".lqd-ib-circ-inner, .one-ib-circ-inner",
};
class i {
constructor(i, s) {
(this.element = i),
(this.options = $.extend({}, e, s)),
(this._defaults = e),
(this._name = t),
(this.$parent = $(this.options.contentsContainer)),
(this.$items = $(this.options.itemSelector, this.element)),
(this.anglesArray = [this.options.startAngle]),
this.init();
}
init() {
this.addAngles(this.$items),
this.setTransformOrigin(),
this.setIntersectionObserver(),
this.windowResize();
}
getItemsArray() {
const t = this.$items,
e = t.length,
i = [];
for (let s = 0; s < e; s++) i.push(t[s]);
return i;
}
getElementDimension(t) {
return { width: t.width(), height: t.height() };
}
addAngles(t) {
const e = t.length;
t.each((t) => {
this.anglesArray.push(360 / e + this.anglesArray[t]);
});
}
setTransformOrigin() {
const t = this.getElementDimension(this.$parent);
this.$items.each((e, i) => {
const s = $(i);
s.css({ transformOrigin: "" }),
s.css({ transformOrigin: `${t.width / 2}px ${t.height / 2}px` }),
s
.children()
.css({ transform: `rotate(${-1 * this.anglesArray[e]}deg)` });
});
}
setIntersectionObserver() {
new IntersectionObserver(
(t, e) => {
t.forEach((t) => {
t.isIntersecting && (this.animateIcons(), e.unobserve(t.target));
});
},
{ threshold: 0.25 }
).observe(this.element);
}
animateIcons() {
const t = this.getItemsArray(),
e = undefined;
gsap
.timeline()
.to(
t,
{
opacity: 1,
duration: 0.2,
ease: "linear",
stagger: (t) => 0.2 * t,
},
0.45
)
.to(
t,
{
rotation: (t) => this.anglesArray[t],
duration: 1,
ease: "power4.inOut",
stagger: (t) => 0.15 * t,
},
0
);
}
windowResize() {
$(window).on(
"resize.lqdIconboxCircle",
this.setTransformOrigin.bind(this)
);
}
destroy() {
$(window).off("resize.lqdIconboxCircle");
}
}
$.fn[t] = function (e) {
return this.each(function () {
const s = { ...$(this).data("plugin-options"), ...e };
$.data(this, "plugin_" + t) ||
$.data(this, "plugin_" + t, new i(this, s));
});
};
})(jQuery),
jQuery(document).ready(function ($) {
$("[data-spread-incircle]").liquidIconboxCircle();
}),
(function ($) {
const t = "liquidImageComparison";
let e = {};
class i {
constructor(i, s) {
(this.element = i),
(this.$element = $(i)),
(this.options = $.extend({}, e, s)),
(this._defaults = e),
(this._name = t),
(this.dragging = !1),
(this.resizing = !1),
(this.$dragElement = this.$element.find(".cd-handle")),
(this.$resizeElement = this.$element.find(".cd-resize-img")),
(this.dragWidth = this.$dragElement.outerWidth()),
(this.containerWidth = this.$element.outerWidth()),
this.init();
}
init() {
(this._onResize = liquidThrottle(this._onResize.bind(this), 250)),
this.element.style.setProperty(
"--container-width",
`${this.containerWidth}px`
),
this.initIO(),
this._drags(),
this._handleResize();
}
initIO() {
new IntersectionObserver(([t], e) => {
t.isIntersecting &&
(e.unobserve(t.target), this.$element.addClass("is-visible"));
}).observe(this.element, { threshold: 0.35 });
}
_drags() {
this.$dragElement.on("pointerdown.lqdImageComparison", (t) => {
t.preventDefault(),
this.$dragElement.addClass("draggable"),
this.$resizeElement.addClass("resizable");
const e = t.originalEvent.pageX,
i = this.$dragElement.offset().left + this.dragWidth - e;
$(document).on("pointermove.lqdImageComparison", (t) => {
this.dragging ||
((this.dragging = !0),
requestAnimationFrame(() => {
this._animateDraggedHandle(t, i);
}));
});
}),
$(document).on("pointerup.lqdImageComparison", () => {
this.$dragElement.removeClass("draggable"),
this.$resizeElement.removeClass("resizable"),
$(document).off("pointermove.lqdImageComparison"),
(this.dragging = !1);
});
}
_animateDraggedHandle(t, e) {
var i = this.$element.offset().left,
s = i,
n = i + this.containerWidth,
o,
a = t.originalEvent.pageX + e - this.dragWidth / 2;
a < s ? (a = s) : a > n && (a = n);
var l = (100 * (a - i)) / this.containerWidth + "%";
this.$dragElement
.css("left", l)
.on("pointerup.lqdImageComparison", () => {
this.$dragElement.removeClass("draggable"),
this.$resizeElement.removeClass("resizable");
}),
this.$resizeElement.css("width", l),
(this.dragging = !1);
}
_handleResize() {
window.addEventListener("resize", this._onResize);
}
_onResize() {
(this.dragWidth = this.$dragElement.outerWidth()),
(this.containerWidth = this.$element.outerWidth()),
this.element.style.setProperty(
"--container-width",
`${this.containerWidth}px`
);
}
destroy() {
window.removeEventListener("resize", this._onResize);
}
}
$.fn[t] = function (e) {
return this.each(function () {
const s = $(this).data("plugin-options") || e;
$.data(this, "plugin_" + t) ||
$.data(this, "plugin_" + t, new i(this, s));
});
};
})(jQuery),
jQuery(document).ready(function ($) {
const t = $(".cd-image-container"),
e = t.filter(
(t, e) =>
!$(e)
.closest(".lqd-tabs-pane, .e-n-tabs-content > .e-con")
.not(".active, .e-active").length
),
i = t.closest(".e-n-tabs-content > .e-con");
if ((e.liquidImageComparison(), !i.length)) return;
const s = new MutationObserver(([t], e) => {
const { target: i } = t;
t.target.classList.contains("e-active") &&
$(i).find(".cd-image-container").liquidImageComparison();
});
i.each((t, e) => {
s.observe(e, { attributes: !0, attributeFilter: ["class"] });
});
}),
(function ($) {
const t = "liquidImageTrail";
let e = {
trigger: "body",
triggerRelation: null,
imgArrayContainer: ".lqd-img-trail-array",
threshold: 85,
keepLastItemVisible: !1,
respectDirection: !1,
};
class i {
constructor(t) {
(this.DOM = { el: t }),
(this.defaultStyle = { scale: 1, x: 0, y: 0, opacity: 0 }),
this.getRect(),
this.initEvents();
}
initEvents() {
window.addEventListener("resize", () => this.resize());
}
resize() {
gsap.set(this.DOM.el, { ...this.defaultStyle }), this.getRect();
}
getRect() {
this.rect = this.DOM.el.getBoundingClientRect();
}
isActive() {
return 0 != this.DOM.el.style.opacity;
}
}
class s {
constructor(s, n) {
(this.element = s),
(this.$element = $(s)),
(this.options = $.extend({}, e, n)),
(this._defaults = e),
(this._name = t),
(this.DOM = {
imgArrayContainer: this.element.querySelector(
this.options.imgArrayContainer
),
}),
(this.images = []),
[
...this.DOM.imgArrayContainer.querySelectorAll(
".lqd-img-trail-img"
),
].forEach((t) => this.images.push(new i(t))),
(this.imagesTotal = this.images.length),
(this.imgPosition = 0),
(this.zIndexVal = 1),
this.lastMousePos,
this.cacheMousePos,
(this.mousePos =
this.lastMousePos =
this.cacheMousePos =
{ x: 0, y: 0 }),
(this.rAFId = null);
const o = undefined;
(() =>
new Promise((t) => {
imagesLoaded(
this.DOM.imgArrayContainer.querySelector(".lqd-img-trail-img"),
t
);
}))().then(() => {
this.initEvents(), this.element.classList.add("img-trail-initiated");
});
}
lerp(t, e, i) {
return (1 - i) * t + i * e;
}
distance(t, e, i, s) {
return Math.hypot(i - t, s - e);
}
getMouseDistance() {
return this.distance(
this.mousePos.x,
this.mousePos.y,
this.lastMousePos.x,
this.lastMousePos.y
);
}
setThreshold(t) {
"auto" === this.options.threshold &&
(this.options.threshold =
($(t).outerWidth() / this.images.length - 1) / 1.75);
}
initEvents() {
let { trigger: t, triggerRelation: e } = this.options;
e && (t = this.$element[e](t)),
"this" === t && (t = this.element),
this.setThreshold(t),
$(t).on(
"mouseenter",
() => (this.rAFId = requestAnimationFrame(this.render.bind(this)))
),
$(t).on("mousemove", (t) => {
this.mousePos = liquidGetMousePos(t, !0);
}),
$(t).on("mouseleave", () => cancelAnimationFrame(this.rAFId));
}
render() {
let t = this.getMouseDistance();
(this.cacheMousePos.x = this.lerp(
this.cacheMousePos.x || this.mousePos.x,
this.mousePos.x,
0.1
)),
(this.cacheMousePos.y = this.lerp(
this.cacheMousePos.y || this.mousePos.y,
this.mousePos.y,
0.1
)),
t > this.options.threshold &&
(++this.zIndexVal,
!this.options.respectDirection ||
(this.options.respectDirection &&
this.cacheMousePos.x < this.mousePos.x)
? (this.imgPosition =
this.imgPosition < this.imagesTotal - 1
? this.imgPosition + 1
: 0)
: (this.imgPosition =
0 === this.imgPosition
? this.imagesTotal - 1
: this.imgPosition - 1),
this.showNextImage(),
(this.lastMousePos = this.mousePos));
let e = !0;
for (let t of this.images)
if (t.isActive()) {
e = !1;
break;
}
e && 1 !== this.zIndexVal && (this.zIndexVal = 1),
(this.rAFId = requestAnimationFrame(this.render.bind(this)));
}
showNextImage() {
const t = this.images[this.imgPosition];
gsap.killTweensOf(t.DOM.el),
(t.DOM.el.style.zIndex = this.zIndexVal),
gsap
.timeline({
onStart: () => {
this.options.keepLastItemVisible &&
this.images.forEach((e, i) => {
i !== this.images.indexOf(t) &&
(gsap.killTweensOf(e.DOM.el),
gsap.to(e.DOM.el, {
opacity: 0,
duration: 0.25,
ease: "expo.out",
}));
});
},
})
.set(
t.DOM.el,
{
opacity: 1,
scale: 1,
zIndex: this.zIndexVal,
x: this.cacheMousePos.x - t.rect.width / 2,
y: this.cacheMousePos.y - t.rect.height / 2,
},
0
)
.to(
t.DOM.el,
{
ease: "expo.out",
duration: 0.9,
x: this.mousePos.x - t.rect.width / 2,
y: this.mousePos.y - t.rect.height / 2,
},
0
)
.to(
t.DOM.el,
{
ease: "power1.out",
duration: 1,
opacity: this.options.keepLastItemVisible ? 1 : 0,
},
0.4
);
}
}
$.fn[t] = function (e) {
return this.each(function () {
const i = { ...$(this).data("img-trl-options"), ...e };
$.data(this, "plugin_" + t) ||
$.data(this, "plugin_" + t, new s(this, i));
});
};
})(jQuery),
jQuery(document).ready(function ($) {
$("[data-lqd-img-trail]").liquidImageTrail();
}),
(function ($) {
const t = "liquidLightBox";
let e = {};
class i {
constructor(i, s) {
(this._defaults = e),
(this._name = t),
(this.options = $.extend({}, e, s)),
(this.isOpen = !1),
(this.$modalWrapper = !1),
(this.$backdrop = !1),
(this.lityInstance = !1),
(this.element = i),
(this.$element = $(i)),
this.init();
}
init() {
this.events();
}
events() {
$(document).on("lity:ready", (t, e) => this.onReady.call(this, t, e)),
$(document).on("lity:open", this.onOpen.bind(this)),
$(document).on("lity:close", this.onClose.bind(this));
}
onReady(t, e) {
const i = $(e.element()),
s = $(t.target),
n = $(e.opener()),
o = s.attr("data-modal-type");
i.attr("data-modal-type", o),
"box" === o
? this.boxModalPosition(i, n)
: (i.removeClass("to-left pos-fix"),
i.css({ top: "", bottom: "", left: "", right: "" }));
}
onOpen(t, e) {
(this.lityInstance = e),
(this.$modalWrapper = $(t.target)),
(this.$backdrop = this.$modalWrapper.children(".lity-backdrop")),
(this.isOpen = !0),
this.lityInstance.element().show(),
this.lityInstance.opener().addClass("pointer-events-none"),
this.$backdrop.on("click.lqdModal", this.onBackdropClick.bind(this));
const i = undefined;
$("[data-liquid-masonry]").each((t, e) => {
const i = undefined,
s = $(e).data("plugin_liquidMasonry"),
n = s && s.isoData;
n && n.layout();
});
}
onClose(t) {
const e = $(t.target),
i = e.find("video"),
s = e.find("audio"),
n = e.find("iframe");
if (i.length) {
const t = i.get(0);
t.oncanplay = t.pause();
}
if (s.length) {
const t = s.get(0);
t.oncanplay = t.pause();
}
n.each((t, e) => {
if (!e.contentDocument) return;
const i = e.contentDocument || e.contentWindow.document,
s = i.querySelector("video"),
n = i.querySelector("audio");
s && s.pause(), n && n.pause();
}),
this.lityInstance.opener().blur(),
this.lityInstance.opener().removeClass("pointer-events-none"),
this.$modalWrapper.removeClass("to-left"),
(this.lityInstance = !1),
(this.isOpen = !1),
(this.$modalWrapper = !1),
$(document).off("click.lqdModal");
}
boxModalPosition(t, e) {
const i = e.offset(),
s = t.outerWidth(),
n = t.outerHeight(),
o = i.left + e.outerWidth() - 60,
a = liquidWindowWidth();
e.closest(".lqd-stickybar-wrap").length
? (t.addClass("pos-fix"),
t.css({ top: i.top - window.scrollY - n - 25 }))
: (t.removeClass("pos-fix"), t.css({ top: i.top - n - 25 })),
t.css({ left: o, right: o + s >= a ? a - o : "auto" }),
o + s >= a &&
(t.addClass("to-left"), t.css({ left: "auto", right: a - o - 60 })),
a <= 480 && t.css({ left: a / 2 - s / 2, right: "auto" });
}
onBackdropClick() {
this.isOpen &&
this.$modalWrapper &&
this.lityInstance &&
this.lityInstance.close();
}
}
$.fn[t] = function (e) {
return this.each(function () {
const s = { ...$(this).data("lightbox-options"), ...e };
$.data(this, "plugin_" + t) ||
$.data(this, "plugin_" + t, new i(this, s));
});
};
})(jQuery, window, document),
jQuery(document).ready(function ($) {
$("[data-lity]").liquidLightBox();
}),
(function ($) {
function t(t, e, i) {
(this.latlng_ = t), (this.className = i), this.setMap(e);
}
const e = "liquidMap";
let i = {
address: "7420 Shore Rd, Brooklyn, NY 11209, USA",
marker: null,
style: "wy",
marker_style: "default",
className: "lqd-custom-map-marker pos-abs absolute border-radius-circle",
markers: null,
map: {
zoom: 16,
mapTypeId: "roadmap",
disableDefaultUI: !0,
panControl: !1,
zoomControl: !0,
mapTypeControl: !1,
streetViewControl: !1,
scrollwheel: !1,
},
};
const s = {
wy: [
{
featureType: "all",
elementType: "geometry.fill",
stylers: [{ weight: "2.00" }],
},
{
featureType: "all",
elementType: "geometry.stroke",
stylers: [{ color: "#9c9c9c" }],
},
{
featureType: "all",
elementType: "labels.text",
stylers: [{ visibility: "on" }],
},
{
featureType: "landscape",
elementType: "all",
stylers: [{ color: "#f2f2f2" }],
},
{
featureType: "landscape",
elementType: "geometry.fill",
stylers: [{ color: "#ffffff" }],
},
{
featureType: "landscape.man_made",
elementType: "geometry.fill",
stylers: [{ color: "#ffffff" }],
},
{
featureType: "poi",
elementType: "all",
stylers: [{ visibility: "off" }],
},
{
featureType: "road",
elementType: "all",
stylers: [{ saturation: -100 }, { lightness: 45 }],
},
{
featureType: "road",
elementType: "geometry.fill",
stylers: [{ color: "#eeeeee" }],
},
{
featureType: "road",
elementType: "labels.text.fill",
stylers: [{ color: "#7b7b7b" }],
},
{
featureType: "road",
elementType: "labels.text.stroke",
stylers: [{ color: "#ffffff" }],
},
{
featureType: "road.highway",
elementType: "all",
stylers: [{ visibility: "simplified" }],
},
{
featureType: "road.arterial",
elementType: "labels.icon",
stylers: [{ visibility: "off" }],
},
{
featureType: "transit",
elementType: "all",
stylers: [{ visibility: "off" }],
},
{
featureType: "water",
elementType: "all",
stylers: [{ color: "#46bcec" }, { visibility: "on" }],
},
{
featureType: "water",
elementType: "geometry.fill",
stylers: [{ color: "#c8d7d4" }],
},
{
featureType: "water",
elementType: "labels.text.fill",
stylers: [{ color: "#070707" }],
},
{
featureType: "water",
elementType: "labels.text.stroke",
stylers: [{ color: "#ffffff" }],
},
],
blueEssence: [
{
featureType: "landscape.natural",
elementType: "geometry.fill",
stylers: [{ visibility: "on" }, { color: "#e0efef" }],
},
{
featureType: "poi",
elementType: "geometry.fill",
stylers: [
{ visibility: "on" },
{ hue: "#1900ff" },
{ color: "#c0e8e8" },
],
},
{
featureType: "road",
elementType: "geometry",
stylers: [{ lightness: 100 }, { visibility: "simplified" }],
},
{
featureType: "road",
elementType: "labels",
stylers: [{ visibility: "off" }],
},
{
featureType: "transit.line",
elementType: "geometry",
stylers: [{ visibility: "on" }, { lightness: 700 }],
},
{
featureType: "water",
elementType: "all",
stylers: [{ color: "#7dcdcd" }],
},
],
lightMonochrome: [
{
featureType: "administrative.locality",
elementType: "all",
stylers: [
{ hue: "#2c2e33" },
{ saturation: 7 },
{ lightness: 19 },
{ visibility: "on" },
],
},
{
featureType: "landscape",
elementType: "all",
stylers: [
{ hue: "#ffffff" },
{ saturation: -100 },
{ lightness: 100 },
{ visibility: "simplified" },
],
},
{
featureType: "poi",
elementType: "all",
stylers: [
{ hue: "#ffffff" },
{ saturation: -100 },
{ lightness: 100 },
{ visibility: "off" },
],
},
{
featureType: "road",
elementType: "geometry",
stylers: [
{ hue: "#bbc0c4" },
{ saturation: -93 },
{ lightness: 31 },
{ visibility: "simplified" },
],
},
{
featureType: "road",
elementType: "labels",
stylers: [
{ hue: "#bbc0c4" },
{ saturation: -93 },
{ lightness: 31 },
{ visibility: "on" },
],
},
{
featureType: "road.arterial",
elementType: "labels",
stylers: [
{ hue: "#bbc0c4" },
{ saturation: -93 },
{ lightness: -2 },
{ visibility: "simplified" },
],
},
{
featureType: "road.local",
elementType: "geometry",
stylers: [
{ hue: "#e9ebed" },
{ saturation: -90 },
{ lightness: -8 },
{ visibility: "simplified" },
],
},
{
featureType: "transit",
elementType: "all",
stylers: [
{ hue: "#e9ebed" },
{ saturation: 10 },
{ lightness: 69 },
{ visibility: "on" },
],
},
{
featureType: "water",
elementType: "all",
stylers: [
{ hue: "#e9ebed" },
{ saturation: -78 },
{ lightness: 67 },
{ visibility: "simplified" },
],
},
],
assassinsCreedIV: [
{
featureType: "all",
elementType: "all",
stylers: [{ visibility: "on" }],
},
{
featureType: "all",
elementType: "labels",
stylers: [{ visibility: "off" }, { saturation: "-100" }],
},
{
featureType: "all",
elementType: "labels.text.fill",
stylers: [
{ saturation: 36 },
{ color: "#000000" },
{ lightness: 40 },
{ visibility: "off" },
],
},
{
featureType: "all",
elementType: "labels.text.stroke",
stylers: [
{ visibility: "off" },
{ color: "#000000" },
{ lightness: 16 },
],
},
{
featureType: "all",
elementType: "labels.icon",
stylers: [{ visibility: "off" }],
},
{
featureType: "administrative",
elementType: "geometry.fill",
stylers: [{ color: "#000000" }, { lightness: 20 }],
},
{
featureType: "administrative",
elementType: "geometry.stroke",
stylers: [{ color: "#000000" }, { lightness: 17 }, { weight: 1.2 }],
},
{
featureType: "landscape",
elementType: "geometry",
stylers: [{ color: "#000000" }, { lightness: 20 }],
},
{
featureType: "landscape",
elementType: "geometry.fill",
stylers: [{ color: "#4d6059" }],
},
{
featureType: "landscape",
elementType: "geometry.stroke",
stylers: [{ color: "#4d6059" }],
},
{
featureType: "landscape.natural",
elementType: "geometry.fill",
stylers: [{ color: "#4d6059" }],
},
{
featureType: "poi",
elementType: "geometry",
stylers: [{ lightness: 21 }],
},
{
featureType: "poi",
elementType: "geometry.fill",
stylers: [{ color: "#4d6059" }],
},
{
featureType: "poi",
elementType: "geometry.stroke",
stylers: [{ color: "#4d6059" }],
},
{
featureType: "road",
elementType: "geometry",
stylers: [{ visibility: "on" }, { color: "#7f8d89" }],
},
{
featureType: "road",
elementType: "geometry.fill",
stylers: [{ color: "#7f8d89" }],
},
{
featureType: "road.highway",
elementType: "geometry.fill",
stylers: [{ color: "#7f8d89" }, { lightness: 17 }],
},
{
featureType: "road.highway",
elementType: "geometry.stroke",
stylers: [{ color: "#7f8d89" }, { lightness: 29 }, { weight: 0.2 }],
},
{
featureType: "road.arterial",
elementType: "geometry",
stylers: [{ color: "#000000" }, { lightness: 18 }],
},
{
featureType: "road.arterial",
elementType: "geometry.fill",
stylers: [{ color: "#7f8d89" }],
},
{
featureType: "road.arterial",
elementType: "geometry.stroke",
stylers: [{ color: "#7f8d89" }],
},
{
featureType: "road.local",
elementType: "geometry",
stylers: [{ color: "#000000" }, { lightness: 16 }],
},
{
featureType: "road.local",
elementType: "geometry.fill",
stylers: [{ color: "#7f8d89" }],
},
{
featureType: "road.local",
elementType: "geometry.stroke",
stylers: [{ color: "#7f8d89" }],
},
{
featureType: "transit",
elementType: "geometry",
stylers: [{ color: "#000000" }, { lightness: 19 }],
},
{
featureType: "water",
elementType: "all",
stylers: [{ color: "#2b3638" }, { visibility: "on" }],
},
{
featureType: "water",
elementType: "geometry",
stylers: [{ color: "#2b3638" }, { lightness: 17 }],
},
{
featureType: "water",
elementType: "geometry.fill",
stylers: [{ color: "#24282b" }],
},
{
featureType: "water",
elementType: "geometry.stroke",
stylers: [{ color: "#24282b" }],
},
{
featureType: "water",
elementType: "labels",
stylers: [{ visibility: "off" }],
},
{
featureType: "water",
elementType: "labels.text",
stylers: [{ visibility: "off" }],
},
{
featureType: "water",
elementType: "labels.text.fill",
stylers: [{ visibility: "off" }],
},
{
featureType: "water",
elementType: "labels.text.stroke",
stylers: [{ visibility: "off" }],
},
{
featureType: "water",
elementType: "labels.icon",
stylers: [{ visibility: "off" }],
},
],
unsaturatedBrowns: [
{
elementType: "geometry",
stylers: [
{ hue: "#ff4400" },
{ saturation: -68 },
{ lightness: -4 },
{ gamma: 0.72 },
],
},
{ featureType: "road", elementType: "labels.icon" },
{
featureType: "landscape.man_made",
elementType: "geometry",
stylers: [{ hue: "#0077ff" }, { gamma: 3.1 }],
},
{
featureType: "water",
stylers: [{ hue: "#00ccff" }, { gamma: 0.44 }, { saturation: -33 }],
},
{
featureType: "poi.park",
stylers: [{ hue: "#44ff00" }, { saturation: -23 }],
},
{
featureType: "water",
elementType: "labels.text.fill",
stylers: [
{ hue: "#007fff" },
{ gamma: 0.77 },
{ saturation: 65 },
{ lightness: 99 },
],
},
{
featureType: "water",
elementType: "labels.text.stroke",
stylers: [
{ gamma: 0.11 },
{ weight: 5.6 },
{ saturation: 99 },
{ hue: "#0091ff" },
{ lightness: -86 },
],
},
{
featureType: "transit.line",
elementType: "geometry",
stylers: [
{ lightness: -48 },
{ hue: "#ff5e00" },
{ gamma: 1.2 },
{ saturation: -23 },
],
},
{
featureType: "transit",
elementType: "labels.text.stroke",
stylers: [
{ saturation: -64 },
{ hue: "#ff9100" },
{ lightness: 16 },
{ gamma: 0.47 },
{ weight: 2.7 },
],
},
],
classic: [
{
featureType: "administrative.country",
elementType: "geometry",
stylers: [{ visibility: "simplified" }, { hue: "#ff0000" }],
},
],
evenLighter: [
{
featureType: "administrative",
elementType: "labels.text.fill",
stylers: [{ color: "#6195a0" }],
},
{
featureType: "landscape",
elementType: "all",
stylers: [{ color: "#f2f2f2" }],
},
{
featureType: "landscape",
elementType: "geometry.fill",
stylers: [{ color: "#ffffff" }],
},
{
featureType: "poi",
elementType: "all",
stylers: [{ visibility: "off" }],
},
{
featureType: "poi.park",
elementType: "geometry.fill",
stylers: [{ color: "#e6f3d6" }, { visibility: "on" }],
},
{
featureType: "road",
elementType: "all",
stylers: [
{ saturation: -100 },
{ lightness: 45 },
{ visibility: "simplified" },
],
},
{
featureType: "road.highway",
elementType: "all",
stylers: [{ visibility: "simplified" }],
},
{
featureType: "road.highway",
elementType: "geometry.fill",
stylers: [{ color: "#f4d2c5" }, { visibility: "simplified" }],
},
{
featureType: "road.highway",
elementType: "labels.text",
stylers: [{ color: "#4e4e4e" }],
},
{
featureType: "road.arterial",
elementType: "geometry.fill",
stylers: [{ color: "#f4f4f4" }],
},
{
featureType: "road.arterial",
elementType: "labels.text.fill",
stylers: [{ color: "#787878" }],
},
{
featureType: "road.arterial",
elementType: "labels.icon",
stylers: [{ visibility: "off" }],
},
{
featureType: "transit",
elementType: "all",
stylers: [{ visibility: "off" }],
},
{
featureType: "water",
elementType: "all",
stylers: [{ color: "#eaf6f8" }, { visibility: "on" }],
},
{
featureType: "water",
elementType: "geometry.fill",
stylers: [{ color: "#eaf6f8" }],
},
],
shadesOfGray: [
{
featureType: "all",
elementType: "labels.text.fill",
stylers: [
{ saturation: 36 },
{ color: "#000000" },
{ lightness: 40 },
],
},
{
featureType: "all",
elementType: "labels.text.stroke",
stylers: [
{ visibility: "on" },
{ color: "#000000" },
{ lightness: 16 },
],
},
{
featureType: "all",
elementType: "labels.icon",
stylers: [{ visibility: "off" }],
},
{
featureType: "administrative",
elementType: "geometry.fill",
stylers: [{ color: "#000000" }, { lightness: 20 }],
},
{
featureType: "administrative",
elementType: "geometry.stroke",
stylers: [{ color: "#000000" }, { lightness: 17 }, { weight: 1.2 }],
},
{
featureType: "landscape",
elementType: "geometry",
stylers: [{ color: "#000000" }, { lightness: 20 }],
},
{
featureType: "poi",
elementType: "geometry",
stylers: [{ color: "#000000" }, { lightness: 21 }],
},
{
featureType: "road.highway",
elementType: "geometry.fill",
stylers: [{ color: "#000000" }, { lightness: 17 }],
},
{
featureType: "road.highway",
elementType: "geometry.stroke",
stylers: [{ color: "#000000" }, { lightness: 29 }, { weight: 0.2 }],
},
{
featureType: "road.arterial",
elementType: "geometry",
stylers: [{ color: "#000000" }, { lightness: 18 }],
},
{
featureType: "road.local",
elementType: "geometry",
stylers: [{ color: "#000000" }, { lightness: 16 }],
},
{
featureType: "transit",
elementType: "geometry",
stylers: [{ color: "#000000" }, { lightness: 19 }],
},
{
featureType: "water",
elementType: "geometry",
stylers: [{ color: "#000000" }, { lightness: 17 }],
},
],
};
class n {
constructor(t, s) {
(this._defaults = i),
(this._name = e),
(this.options = { ...i, ...s }),
(this.options.map = { ...i.map, ...s.map }),
(this.element = t),
(this.$element = $(t)),
this.init(t, this.options);
}
init() {
return this.build(), this.adjustHeight(), this;
}
build() {
const t = { ...this.options.map, styles: s[this.options.style] },
e = new google.maps.Map(this.element, t),
i = undefined;
return (
new google.maps.Geocoder().geocode(
{ address: this.options.address },
(t, i) => {
if (i == google.maps.GeocoderStatus.OK) {
const i = t[0].geometry.location,
n = t[0].geometry.location.lat(),
o = t[0].geometry.location.lng();
if (
("html" === this.options.marker_style &&
this.$element.addClass("marker-html"),
null == this.options.markers)
)
this.addMarker(i, e);
else
for (var s = 0; s < this.options.markers.length; s++)
this.addMarker(
new google.maps.LatLng(
this.options.markers[s][0],
this.options.markers[s][1]
),
e
);
e.setCenter(new google.maps.LatLng(n, o)),
$(".lightbox-link[data-type=inline]").on(
"mfpOpen",
function (t) {
setTimeout(function () {
e.setCenter(new google.maps.LatLng(n, o));
}, 500);
}
),
$(document).on(
"shown.bs.tab",
'a[data-toggle="tab"]',
function (t) {
setTimeout(function () {
e.setCenter(new google.maps.LatLng(n, o));
}, 500);
}
);
}
}
),
$(document).on("shown.bs.tab", 'a[data-toggle="tab"]', function (t) {
setTimeout(function () {
google.maps.event.trigger(e, "resize");
}, 500);
}),
this
);
}
addMarker(e, i) {
"image" === this.options.marker_style ||
"default" === this.options.marker_style
? new google.maps.Marker({
position: e,
map: i,
visible: !0,
icon: this.options.marker,
zIndex: 9999999,
})
: "html" === this.options.marker_style &&
"undefined" != typeof google &&
void 0 !== google.maps &&
new t(e, i, this.options.className);
}
adjustHeight() {
const t = this.$element.parent(".ld-gmap-container"),
e = t.parents(".vc_row").last();
!t.siblings().length &&
e.hasClass("vc_row-o-equal-height") &&
t.height(t.parent().outerHeight());
}
}
"undefined" != typeof google &&
void 0 !== google.maps &&
((t.prototype = new google.maps.OverlayView()),
(t.prototype.draw = function () {
let t = this.div_,
e,
i;
if (!t) {
(t = this.div_ = document.createElement("DIV")),
(t.className = this.className),
(e = document.createElement("div")),
(e.className = "lqd-overlay border-radius-circle"),
t.appendChild(e),
(i = document.createElement("div")),
(i.className = "lqd-overlay border-radius-circle"),
t.appendChild(i),
google.maps.event.addDomListener(t, "click", () => {
google.maps.event.trigger(this, "click");
});
const s = undefined;
this.getPanes().overlayImage.appendChild(t);
}
const s = this.getProjection().fromLatLngToDivPixel(this.latlng_);
s && ((t.style.left = s.x + "px"), (t.style.top = s.y + "px"));
}),
(t.prototype.remove = function () {
this.div_ &&
(this.div_.parentNode.removeChild(this.div_), (this.div_ = null));
}),
(t.prototype.getPosition = function () {
return this.latlng_;
})),
($.fn[e] = function (t) {
return this.each(function () {
const i = $(this).data("plugin-options") || t;
$.data(this, "plugin_" + e) ||
$.data(this, "plugin_" + e, new n(this, i));
});
});
})(jQuery),
$liquidWindow.on("load", () => {
"undefined" != typeof google &&
null !== google &&
jQuery("[data-plugin-map]").liquidMap();
}),
(function ($) {
const t = "liquidMasonry";
let e = {
bypassCheck: !1,
layoutMode: "packery",
itemSelector: ".masonry-item",
alignMid: !1,
filtersID: null,
filtersCounter: !1,
};
class i {
constructor(i, s) {
(this._defaults = e),
(this._name = t),
(this.options = { ...e, ...s }),
(this.element = i),
(this.$element = $(i)),
(this.isoData = null),
this.init();
}
init() {
const t = this.$element.parents(".lqd-tabs-pane, .accordion-collapse");
if (t.length && t.is(":hidden")) return this.setupIO();
this.onImagesLoad();
}
setupIO() {
this.isoData ||
new IntersectionObserver(([t], e) => {
t.isIntersecting && (e.disconnect(), this.onImagesLoad());
}).observe(this.element);
}
onImagesLoad() {
imagesLoaded(this.element, this.handleOnImagesLoaded.bind(this));
}
handleOnImagesLoaded() {
this.initIsotope(), this.initFilters(), this.eventHandlers();
}
initIsotope() {
const {
layoutMode: t,
itemSelector: e,
stamp: i,
bypassCheck: s,
} = this.options;
(this.isoData = new Isotope(this.element, {
bypassCheck: s,
layoutMode: t,
itemSelector: e,
stamp: i,
})),
$(document).trigger("lqd-masonry-layout-init", {
detail: { isotopeData: this.isoData },
});
}
setStamps() {
this.setAlignMidStamps();
}
setAlignMidStamps() {
const t = this.options;
if (t.alignMid) {
const e = $(t.itemSelector, this.element),
i = this.$element.attr("data-columns"),
s = [];
let n = $(".grid-stamp", this.$element);
$.each(e, (t, e) => {
const i = undefined,
n = $(e).outerHeight();
s.push(n);
}),
(this.highestHeight = Math.max(...s)),
(this.lowestHeight = Math.min(...s)),
i >= 3 &&
(n
.clone()
.insertBefore(e.eq(i - 1))
.addClass("is-right"),
(n = n.add(".grid-stamp", this.$element))),
n.height(this.lowestHeight / 2),
(t.stamp = ".grid-stamp");
}
}
initFilters() {
const { filtersID: t, filtersCounter: e } = this.options;
if (!t) return;
const i = $(t),
s = i.siblings(".lqd-filter-dropdown");
$("li", i).each((t, i) => {
const s = $(i),
n = s.attr("data-filter");
if (e) {
const t = $(n, this.element),
e = undefined;
$(
`\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t${
"*" === n ? this.isoData.items.length : t.length
}\n\t\t\t\t\t\t`
).appendTo(s);
}
s.on("click.lqdMasonryFilter", () => {
s.addClass("active").siblings().removeClass("active"),
this.isoData.arrange({ filter: n });
});
}),
s.length &&
$("select", s).on("selectmenuchange", (t, e) => {
const i = e.item.value;
this.isoData.arrange({ filter: i });
});
}
eventHandlers() {
this.isoData.on("layoutComplete", this.handleLayoutComplete.bind(this));
}
handleLayoutComplete() {
$(document).trigger("lqd-masonry-layout-complete", {
detail: { isotopeData: this.isoData },
});
}
}
$.fn[t] = function (e) {
return this.each(function () {
const s = { ...$(this).data("masonry-options"), ...e };
$.data(this, "plugin_" + t) ||
$.data(this, "plugin_" + t, new i(this, s));
});
};
})(jQuery),
jQuery(document).ready(function ($) {
if (
!$liquidContents.length ||
($liquidContents.length &&
!$liquidContents[0].hasAttribute("data-liquid-stack"))
)
$("[data-liquid-masonry]").liquidMasonry();
else if (
$liquidContents.length &&
$liquidContents[0].hasAttribute("data-liquid-stack")
) {
const t = $liquidContents.attr("data-stack-options");
if (t) {
const e = JSON.parse(t),
{ disableOnMobile: i } = e;
i &&
(liquidIsMobile() ||
liquidWindowWidth() <= liquidMobileNavBreakpoint()) &&
$("[data-liquid-masonry]").liquidMasonry();
}
}
}),
(function ($) {
const t = "liquidStickyRow";
let e = {};
class i {
constructor(i, s) {
(this.element = i),
(this.$element = $(i)),
(this.options = $.extend({}, e, s)),
(this._defaults = e),
(this._name = t),
(this.markupInitiated = !1),
(this.$stickyWrap = null),
(this.$stickyWrapInner = null),
(this.boundingClientRect = null),
(this.rowStickyInitPromise = new Promise((t) => {
this.$element.on("lqd-sticky-row-initiated", t.bind(this, this));
})),
this.init();
}
init() {
this.initMarkup(),
this.handleSizes(),
this.addEvents(),
this.handleWindowResize();
}
initMarkup() {
if (this.markupInitiated) return !1;
const t = $(
''
),
e = $(
''
);
this.$element.wrap(t).wrap(e),
(this.$stickyWrapInner = this.$element.parent()),
(this.$stickyWrap = this.$element.parent().parent()),
(this.markupInitiated = !0);
}
handleSizes() {
const t = this.$stickyWrap.nextAll(),
e = this.$element.outerHeight();
if ((this.$stickyWrap.css({ height: e }), t.length)) {
let i = 0;
$.each(t, (t, e) => {
i += $(e).outerHeight();
}),
e > i &&
this.$stickyWrapInner.css({ height: `calc(200% - ${i}px)` });
}
}
addEvents() {
const t = new CustomEvent("lqd-sticky-row-initiated", {
detail: { $element: this.$element },
});
this.element.dispatchEvent(t);
}
handleWindowResize() {
const t = liquidDebounce(this.onWindowResize, 500);
$(window).on("resize", t.bind(this));
}
onWindowResize() {
this.handleSizes();
}
}
$.fn[t] = function (e) {
return this.each(function () {
const s = $(this).data("sticky-options") || e;
$.data(this, "plugin_" + t) ||
$.data(this, "plugin_" + t, new i(this, s));
});
};
})(jQuery),
jQuery(document).ready(function ($) {
liquidWindowWidth() <= liquidMobileNavBreakpoint() ||
liquidIsMobile() ||
$(".vc_row.lqd-css-sticky, .lqd-force-css-sticky").liquidStickyRow();
}),
(function ($) {
const t = "liquidParticles";
let e = {
asBG: !1,
particles: {
number: { value: 40, density: { enable: !1, value_area: 800 } },
color: {
value: [
"#f7ccaf",
"#f6cacd",
"dbf5f8",
"#c5d8f8",
"#c5f8ce",
"#f7afbd",
"#b2d6ef",
"#f1ecb7",
],
},
shape: { type: "triangle" },
size: { value: 55, random: !0, anim: { enable: !0, speed: 1 } },
move: { direction: "right", attract: { enable: !0 } },
line_linked: { enable: !1 },
},
interactivity: {
events: { onhover: { enable: !1 }, onclick: { enable: !1 } },
},
};
class i {
constructor(i, s) {
(this._defaults = e),
(this._name = t),
(this.options = { ...e, ...s }),
(this.options.particles = { ...e.particles, ...s.particles }),
(this.options.interactivity = {
...e.interactivity,
...s.interactivity,
}),
(this.element = i),
(this.$element = $(i)),
this.build();
}
build() {
(this.id = this.element.id),
(this.options.interactivity.events.onhover ||
this.options.interactivity.events.onclick) &&
(this.$element.removeClass("pointer-events-none"),
this.$element.addClass("pointer-events-auto")),
this.asSectionBg(),
this.init();
}
init() {
particlesJS(this.id, this.options);
}
asSectionBg() {
if (this.options.asBG) {
const t = $(
''
),
e = this.$element.parent(".ld-particles-container");
let i = this.$element.parents(".vc_row").last();
liquidIsElementor &&
((i = this.$element.parents(".elementor-section").last()),
i.length || (i = this.$element.parent(".e-container")),
i.length || (i = this.$element.closest(".e-con")));
const s = liquidIsElementor
? i.children(".elementor-container")
: i.children(".ld-container"),
n = i.children(".lqd-sticky-bg-wrap");
t.append(e),
n.length
? t.appendTo(n)
: i.hasClass("pp-section")
? t.prependTo(i)
: s.length
? t.insertBefore(s)
: t.prependTo(i);
}
}
}
$.fn[t] = function (e) {
return this.each(function () {
const s = { ...$(this).data("particles-options"), ...e };
$.data(this, "plugin_" + t) ||
$.data(this, "plugin_" + t, new i(this, s));
});
};
})(jQuery),
jQuery(document).ready(function ($) {
$("[data-particles=true]")
.filter((t, e) => {
const i = undefined,
s = undefined;
return !$(e).closest(".vc_row.pp-section").length;
})
.liquidParticles();
}),
(function ($) {
const t = "liquidPin";
let e = {
trigger: "self",
start: "top top",
end: null,
endTrigger: null,
duration: "contentsHeight",
offset: 0,
pinSpacing: !1,
pinReparent: !1,
};
class i {
constructor(i, s) {
(this._defaults = e),
(this._name = t),
(this.options = { ...e, ...s }),
(this.element = i),
(this.$element = $(i)),
(this.ST = null),
(this.spacerElement = null),
(this.offset = 0),
(this.end = 0),
(this.rect = {}),
(this.pinPromise = new Promise((t) => {
this.element.addEventListener("element-was-pinned", t(this, this));
})),
$liquidMainHeader.length &&
$liquidMainHeader[0].hasAttribute("data-sticky-header")
? $(document).on("lqd-header-sticky-change", () => {
!this.ST && setTimeout(this.init.bind(this), 150);
})
: this.init();
}
async init() {
(this.rect = await this.measure()),
(this.offset = await this.getOffset()),
(this.end = await this.getEnd()),
this.pin(),
this.events(),
this.handleResize(),
this.element.dispatchEvent(
new CustomEvent("element-was-pinned", { bubbles: !1 })
);
}
measure() {
return fastdomPromised.measure(() =>
this.element.getBoundingClientRect()
);
}
pin() {
fastdom.mutate(() => {
const {
start: t,
pinSpacing: e,
pinReparent: i,
trigger: s,
} = this.options;
let n = "(min-width: 992px)";
this.element.classList.contains("lqd-custom-menu")
? (n = "all")
: this.element.classList.contains("lqd-add-to-cart-row") &&
(n = "(max-width: 767px)"),
ScrollTrigger.matchMedia({
[`${n}`]: () => {
(this.ST = ScrollTrigger.create({
trigger: "self" === s ? this.element : $(s)[0],
pin: !0,
start: `${t}+=${this.offset}`,
endTrigger: this.getEndTrigger(),
end: this.end,
pinSpacing: e,
pinReparent: i,
})),
(this.spacerElement = this.ST.spacer);
},
});
});
}
async getOffset() {
const { offset: t } = this.options;
return isNaN(parseInt(t), 10)
? await this.getOffsetElementsHeight()
: t;
}
async getOffsetElementsHeight() {
const { options: t } = this,
e = [];
let i = 0;
t.offset.split(",").forEach((t) => {
const i = document.querySelector(t);
if (i) {
const t = new Promise((t) => {
new IntersectionObserver(([e], i) => {
i.disconnect(), t(e.boundingClientRect.height);
}).observe(i);
});
e.push(t);
}
});
const s = undefined;
return (await Promise.all(e)).forEach((t) => (i += t)), i;
}
getEnd() {
return fastdomPromised.measure(() => {
let { duration: t, end: e } = this.options;
if (e) return e;
if ("contentsHeight" === t)
if (
this.element.classList.contains("lqd-sticky-bg-wrap") ||
this.element.classList.contains("lqd-section-borders-wrap")
) {
const e = undefined,
i = undefined;
t = `+=${
(this.spacerElement
? $(this.spacerElement).siblings(".ld-container")
: this.$element.siblings(".ld-container"))[0].offsetHeight
}`;
} else t = `+=${this.rect.height}`;
if ("parent" === t)
if (this.element.classList.contains("vc_column-inner"))
t =
"+=" +
(this.element.closest(".ld-row").offsetHeight -
this.rect.height);
else {
let e = 0;
this.$element
.children()
.each((t, i) => (e += $(i).outerHeight(!0))),
(t = "+=" + (this.rect.height - e));
}
return (
"last-link" === t &&
(t = `bottom top+=${this.offset + this.rect.height}`),
t
);
});
}
getEndTrigger() {
const { duration: t } = this.options;
let { endTrigger: e } = this.options;
if (
("parent" === t &&
(e = this.spacerElement
? this.spacerElement.parentElement
: this.element.parentElement),
"last-link" === t)
) {
const t = undefined,
i = $("a", this.element).last().attr("href");
e =
"" !== i && i.startsWith("#") && $(i).length
? $(i)[0]
: $liquidContents[0];
}
return e;
}
events() {
$(document).on(
"lqd-header-sticky-change lqd-masonry-layout-complete lqd-carousel-initialized",
() => {
this.ST && this.ST.refresh();
}
);
}
handleResize() {
const t = liquidDebounce(this.onWindowResize, 250);
$(window).on("resize", t.bind(this));
}
async onWindowResize() {
this.rect = await this.measure();
}
}
$.fn[t] = function (e) {
return this.each(function () {
const s = { ...$(this).data("pin-options"), ...e };
$.data(this, "plugin_" + t) ||
$.data(this, "plugin_" + t, new i(this, s));
});
};
})(jQuery),
jQuery(document).ready(function ($) {
const t = undefined;
$($("[data-pin=true]").get().reverse()).liquidPin();
}),
(function ($) {
const t = "liquidProgressbar";
let e = {
value: 0,
suffix: null,
prefix: null,
skipCreateMarkup: !1,
orientation: "horizontal",
};
class i {
constructor(i, s) {
(this.element = i),
(this.$element = $(i)),
(this.options = $.extend({}, e, s)),
(this._defaults = e),
(this._name = t),
(this.valueEl = $(
".liquid-progressbar-value, .lqd-progressbar-value",
i
)),
(this.prefixEl = $(
".liquid-progressbar-prefix, .lqd-progressbar-prefix",
i
)),
(this.suffixEl = $(
".liquid-progressbar-suffix, .lqd-progressbar-prefix",
i
)),
(this.percentageElement = $(
".liquid-progressbar-percentage, .lqd-progressbar-percentage",
i
)),
(this.barElement = $(
".liquid-progressbar-bar, .lqd-progressbar-bar",
i
)),
(this.titleElement = $(
".liquid-progressbar-title, .lqd-progressbar-title",
i
)),
(this.isRTL = "rtl" == $("html").attr("dir")),
this.init();
}
init() {
this.addValue(),
this.addPrefixSuffix(),
this.setupIntersectionObserver();
}
addValue() {
this.options.skipCreateMarkup ||
this.valueEl.length ||
!this.percentageElement.length ||
((this.valueEl = $(
'0'
)),
this.percentageElement.html(""),
this.valueEl.appendTo(this.percentageElement));
}
addPrefixSuffix() {
if (
this.options.skipCreateMarkup ||
(this.prefixEl.length && this.suffixEl.length) ||
!this.percentageElement.length
)
return;
const t = this.options.prefix,
e = this.options.suffix,
i = $(
''
),
s = $(
''
);
t && i.text(t),
e && s.text(e),
i.prependTo(this.percentageElement),
s.appendTo(this.percentageElement);
}
checkValuesEncountering() {
if (this.percentageElement.length)
if (
"horizontal" == this.options.orientation &&
this.titleElement.length
) {
const t = this.titleElement.width(),
e = this.percentageElement.offset().left || 0,
i = this.percentageElement.width(),
s = this.titleElement.offset().left || 0;
this.isRTL
? e + i <= s
? this.$element.addClass("values-not-encountering")
: this.$element.removeClass("values-not-encountering")
: e >= s + t
? this.$element.addClass("values-not-encountering")
: this.$element.removeClass("values-not-encountering");
} else this.$element.addClass("values-not-encountering");
}
setupIntersectionObserver() {
new IntersectionObserver(
([t], e) => {
t.isIntersecting &&
(this.animatePercentage(),
this.animateProgressbar(),
e.unobserve(t.target));
},
{ threshold: 1 }
).observe(this.element);
}
animatePercentage() {
const t = { value: 0 };
gsap.to(t, {
value: this.options.value,
duration: 1.2,
ease: "power3.inOut",
onUpdate: () => {
this.percentageElement.length &&
this.valueEl.text(Math.round(t.value));
},
});
}
animateProgressbar() {
const t = this.barElement.get(0),
e = this.options.value + "%",
i = undefined;
"horizontal" === this.options.orientation
? this.animateHorizontal(t, e)
: this.initCircleProgressbar(e);
}
animateHorizontal(t, e) {
gsap.to(t, {
width: e,
duration: 1.2,
ease: "power3.inOut",
onUpdate: () => {
this.checkValuesEncountering();
},
});
}
initCircleProgressbar(t) {
const e = $(this.element).find(".ld-prgbr-circle-container"),
i = e.width(),
s = parseInt(t, 10);
e.circleProgress({
value: s / 100,
size: i,
lineCap: "round",
startAngle: -Math.PI / 2,
});
}
}
$.fn[t] = function (e) {
return this.each(function () {
const s = { ...$(this).data("progressbar-options"), ...e };
$.data(this, "plugin_" + t) ||
$.data(this, "plugin_" + t, new i(this, s));
});
};
})(jQuery),
jQuery(document).ready(function ($) {
$("[data-progressbar]").liquidProgressbar();
}),
(function ($) {
const t = "liquidResponsiveAccordion";
let e = {
triggers: ".lqd-tabs-nav a",
contents: ".lqd-tabs-pane",
parent: ".lqd-tabs",
};
class i {
constructor(i, s) {
(this._defaults = e),
(this._name = t),
(this.options = { ...e, ...s }),
(this.DOM = {}),
(this.DOM.$element = $(i)),
(this.DOM.$triggers = this.DOM.$element.find(this.options.triggers)),
(this.DOM.$contents = this.DOM.$element.find(this.options.contents)),
(this.DOM.responsiveTriggers = []),
this.init();
}
init() {
this.createTriggers(), this.appendTriggers(), this.initCollapse();
}
createTriggers() {
this.DOM.$triggers.each((t, e) => {
const i = $(e).clone(),
s = $('');
s.append(i), this.DOM.responsiveTriggers.push(s);
});
}
appendTriggers() {
this.DOM.$contents.each((t, e) => {
$(this.DOM.responsiveTriggers[t]).insertBefore(e);
});
}
initCollapse() {
$.each(this.DOM.responsiveTriggers, (t, e) => {
const i = $(e).children("a"),
s = undefined,
n = i.closest(this.options.parent).find(this.options.contents);
i.off("click"),
i.on("click", (t) => {
t.preventDefault();
const e = $(i.attr("href"));
i
.parent()
.siblings(".lqd-res-acc-trigger")
.removeClass("is-active"),
n.not(e).removeClass("is-active").stop().slideUp(300),
e.toggleClass("is-active").stop().slideToggle(300),
i.parent().toggleClass("is-active");
});
});
}
}
$.fn[t] = function (e) {
return this.each(function () {
const s = { ...$(this).data("res-acc-options"), ...e };
$.data(this, "plugin_" + t) ||
$.data(this, "plugin_" + t, new i(this, s));
});
};
})(jQuery),
jQuery(document).ready(function ($) {
$(".woocommerce-tabs").liquidResponsiveAccordion({
triggers: ".wc-tabs > li > a",
contents: ".woocommerce-Tabs-panel",
parent: ".woocommerce-tabs",
});
}),
(function ($) {
const t = "liquidReveal";
let e = {
isContentHidden: !0,
animteWhenInView: !0,
delay: 0,
revealSettings: {
direction: "lr",
bgcolor: "#f0f0f0",
duration: 0.5,
ease: "power4.inOut",
coverArea: 0,
onCover: function (t, e) {
return !1;
},
onStart: function (t, e) {
return !1;
},
onComplete: function (t, e) {
return !1;
},
onCoverAnimations: null,
},
};
class i {
constructor(i, s) {
(this.options = { ...e, ...s }),
(this._defaults = e),
(this._name = t),
(this.element = i),
(this.$element = $(i)),
(this.$content = this.$element.children()),
(this.revealer = null),
this.init();
}
init() {
this._layout(),
this.options.animteWhenInView
? this.setIntersectionObserver()
: imagesLoaded(this.element, this.doTheReveal.bind(this));
}
_createDOMEl(t, e, i) {
var s = document.createElement(t);
return (s.className = e || ""), (s.innerHTML = i || ""), s;
}
_layout() {
const t = getComputedStyle(this.element).position;
"fixed" !== t &&
"absolute" !== t &&
"relative" !== t &&
(this.element.style.position = "relative"),
this.options.isContentHidden && this.$content.css("opacity", 0),
(this.revealer = this._createDOMEl("div", "block-revealer__element")),
this.element.classList.add("block-revealer"),
this.element.appendChild(this.revealer);
}
_getTransformSettings(t) {
var e, i, s;
switch (t) {
case "lr":
(e = "scaleX(0)"), (i = "0 50%"), (s = "100% 50%");
break;
case "rl":
(e = "scaleX(0)"), (i = "100% 50%"), (s = "0 50%");
break;
case "tb":
(e = "scaleY(0)"), (i = "50% 0"), (s = "50% 100%");
break;
case "bt":
(e = "scaleY(0)"), (i = "50% 100%"), (s = "50% 0");
break;
default:
(e = "scaleX(0)"), (i = "0 50%"), (s = "100% 50%");
break;
}
return { val: e, origin: { initial: i, halfway: s } };
}
reveal(t) {
if (this.isAnimating) return !1;
this.isAnimating = !0;
var e = {
duration: 0.5,
ease: "power4.inOut",
delay: this.options.delay ? this.options.delay / 1e3 : 0,
bgcolor: "#f0f0f0",
direction: "lr",
coverArea: 0,
},
i = t || this.options.revealSettings,
s = i.direction || e.direction,
n = this._getTransformSettings(s);
(this.revealer.style.WebkitTransform = this.revealer.style.transform =
n.val),
(this.revealer.style.WebkitTransformOrigin =
this.revealer.style.transformOrigin =
n.origin.initial),
liquidIsElementor ||
(this.revealer.style.background = i.bgcolor || e.bgcolor),
(this.revealer.style.opacity = 1);
var o = this,
a = {
onComplete: function () {
(o.isAnimating = !1),
"function" == typeof i.onComplete &&
i.onComplete(o.content, o.revealer),
$(o.element)
.addClass("revealing-ended")
.removeClass("revealing-started");
},
},
l = {
delay: i.delay ? i.delay / 1e3 : e.delay,
onComplete: function () {
(o.revealer.style.WebkitTransformOrigin =
o.revealer.style.transformOrigin =
n.origin.halfway),
"function" == typeof i.onCover &&
i.onCover(o.content, o.revealer),
$(o.element).addClass("element-uncovered"),
gsap.to(o.revealer, { ...a });
},
};
(l.duration = a.duration = i.duration ? i.duration / 1e3 : e.duration),
(l.ease = a.ease = i.ease || e.ease);
var r = i.coverArea || e.coverArea;
"lr" === s || "rl" === s
? ((l.keyframes = [
{ scaleX: 0 },
{ scaleX: 1, duration: l.duration },
]),
(a.keyframes = [
{ scaleX: 1 },
{ scaleX: r / 100, duration: l.duration },
]))
: ((l.keyframes = [
{ scaleY: 0 },
{ scaleY: 1, duration: l.duration },
]),
(a.keyframes = [
{ scaleY: 1 },
{ scaleY: r / 100, duration: l.duration },
])),
"function" == typeof i.onStart && i.onStart(o.content, o.revealer),
$(o.element).addClass("revealing-started"),
gsap.to(o.revealer, { ...l });
}
setIntersectionObserver() {
new IntersectionObserver(([t], e) => {
t.isIntersecting &&
(e.disconnect(),
$(t.target).imagesLoaded(this.doTheReveal.bind(this)));
}).observe(this.element);
}
doTheReveal() {
const t = this.options.revealSettings.onCoverAnimations || [
{ scale: 0.9 },
{ scale: 1 },
],
e = {
onCover: () => {
this.options.isContentHidden && this.$content.css("opacity", 1),
gsap.fromTo(
this.element.querySelector("figure"),
{ ...t[0] },
{ duration: 0.8, ease: "power4.out", ...t[1] }
);
},
},
i = { ...this.options, ...e };
this.reveal(i);
}
}
$.fn[t] = function (e) {
return this.each(function () {
const s = { ...$(this).data("reveal-options"), ...e };
$.data(this, "plugin_" + t) ||
$.data(this, "plugin_" + t, new i(this, s));
});
};
})(jQuery),
jQuery(document).ready(function ($) {
(window.$liquidContents.length &&
window.$liquidContents[0].hasAttribute("data-liquid-stack")) ||
$("[data-reveal]")
.filter((t, e) => {
const i = undefined,
s = undefined;
return !$(e).find(".ld-lazyload").length;
})
.liquidReveal();
}),
(function ($) {
const t = "liquidSetActiveOnhover";
let e = {
classname: "lqd-is-active",
offClassname: "lqd-was-active",
triggerHandlers: ["mouseenter", "mouseleave"],
triggers: "> li",
targets: "",
lazyLoadImgVid: !1,
};
class i {
constructor(i, s) {
(this._defaults = e),
(this._name = t),
(this.options = { ...e, ...s }),
(this.DOM = {}),
(this.DOM.element = i),
(this.DOM.$element = $(i)),
(this.DOM.$triggers =
"self" === this.options.triggers
? this.DOM.$element
: this.DOM.$element.find(this.options.triggers)),
(this.DOM.$targets =
"self" === this.options.targets
? this.DOM.$element
: this.DOM.$element.find(this.options.targets)),
this.DOM.$element.parents("[data-lqd-fullproj]").length &&
(this.DOM.$fullscreenProjectParent = this.DOM.$element.parents(
"[data-lqd-fullproj]"
)),
this.listenToFullscreenProjectParent(),
this.init();
}
listenToFullscreenProjectParent() {
if (this.DOM.$targets.length > 1 || this.DOM.$triggers.length > 1)
return;
const { classname: t, offClassname: e } = this.options,
i = this.DOM.$targets.eq(0),
s = this.DOM.$triggers.eq(0);
this.DOM.$fullscreenProjectParent &&
this.DOM.$fullscreenProjectParent.on("show.bs.collapse", () => {
console.log(this.DOM.$targets),
i.add(s).addClass(t),
i.add(s).removeClass(e),
i.add(s).css("pointer-events", "none"),
this.handleLazyload(i.add(s));
}),
this.DOM.$fullscreenProjectParent &&
this.DOM.$fullscreenProjectParent.on("hide.bs.collapse", () => {
i.add(s).removeClass(t),
i.add(s).removeClass(e),
i.add(s).css("pointer-events", ""),
i.find("video")[0]?.pause();
});
}
init() {
const {
triggerHandlers: t,
classname: e,
offClassname: i,
lazyLoadImgVid: s,
} = this.options;
this.DOM.$triggers.each((n, o) => {
const a = $(o);
let l = this.DOM.$targets.eq(n);
l.length || (l = a),
t[0] === t[1]
? a.on(t[0], () => {
l.add(o).toggleClass(e);
})
: (a.on(t[0], () => {
this.DOM.$targets.add(this.DOM.$triggers).removeClass(e),
l.add(o).addClass(e),
l.add(o).removeClass(i),
s && this.handleLazyload(l);
}),
null != t[1] &&
(a.on(t[1], () => {
l.add(o).removeClass(e), l.add(o).addClass(i);
}),
$(document).on("click.lqdActiveOnHoverClick", (t) => {
l[0].contains(t.target) ||
(l.add(o).removeClass(e), l.add(o).addClass(i));
})));
});
}
handleLazyload(t) {
const e = t.find("img, source");
e.each((t, i) => {
const s = $(i),
n = s.attr("data-src");
if ((n && s.attr("src", n), s.is("source") && t === e.length - 1)) {
const t = s.parent("video")[0];
t.load(), t.play();
}
});
}
destroy() {
const { triggers: t } = this.options,
e = undefined;
this.DOM.$element.find(t).each((t, e) => {
$(e).off();
});
}
}
$.fn[t] = function (e) {
return this.each(function () {
const s = { ...$(this).data("active-onhover-options"), ...e };
$.data(this, "plugin_" + t) ||
$.data(this, "plugin_" + t, new i(this, s));
});
};
})(jQuery),
jQuery(document).ready(function ($) {
$("[data-active-onhover]").liquidSetActiveOnhover();
}),
(function ($) {
const t = "liquidShrinkBorders";
let e = { start: "top", end: "bottom-=30%", scrub: 0.2 };
class i {
constructor(i, s) {
(this._defaults = e),
(this._name = t),
(this.options = { ...e, ...s }),
(this.element = i),
(this.$element = $(i)),
(this.$parentRow = this.$element.closest(".vc_row")),
(this.$contents = this.$parentRow.children(".container").length
? this.$parentRow.children(".container")
: this.$parentRow.children(".ld-container")),
(this.contentsHeight = this.$contents.height()),
(this.$animatables = this.$element.children()),
this.$parentRow[0].hasAttribute("data-row-bg")
? this.$parentRow.on("lqdrowbginit", this.init.bind(this))
: this.init();
}
init() {
this._initScrollTrigger(), this.$element.addClass("sticky-applied");
}
_initScrollTrigger() {
const t = this.$element.siblings(".row-bg-wrap"),
{ start: e, end: i, scrub: s } = this.options,
n = gsap.timeline();
t.length && (this.$animatables = this.$animatables.add(t)),
$.each(this.$animatables, (t, e) => {
const i = undefined,
s = $(e).attr("data-axis"),
o = { startAt: {} };
"x" === s
? ((o.startAt.scaleX = 1), (o.scaleX = 0))
: "y" === s
? ((o.startAt.scaleY = 1), (o.scaleY = 0))
: ((o.startAt.scale = 1.05), (o.scale = 1)),
n.to(e, { ...o }, 0);
}),
ScrollTrigger.create({
animation: n,
trigger: this.element,
start: e,
end: i,
scrub: s,
toggleClass: {
targets: this.$animatables.get(),
className: "will-change",
},
});
}
}
$.fn[t] = function (e) {
return this.each(function () {
const s = { ...$(this).data("plugin-options"), ...e };
$.data(this, "plugin_" + t) ||
$.data(this, "plugin_" + t, new i(this, s));
});
};
})(jQuery),
jQuery(document).ready(function ($) {
if (liquidWindowWidth() <= liquidMobileNavBreakpoint() || liquidIsMobile())
return !1;
$("[data-shrink-borders]").liquidShrinkBorders();
}),
(function ($) {
const t = "liquidSlideElement";
let e = {
hiddenElement: null,
visibleElement: null,
hiddenElementOnHover: null,
alignMid: !1,
waitForSplitText: !1,
disableOnMobile: !1,
triggerElement: "self",
};
class i {
constructor(i, s) {
if (
((this._defaults = e),
(this._name = t),
(this.options = { ...e, ...s }),
(this.element = i),
(this.$element = $(i)),
(this.$triggerElement =
"self" === this.options.triggerElement
? this.$element
: this.$element.closest(this.options.triggerElement)),
(this.timeline = gsap.timeline()),
this.options.waitForSplitText)
) {
const t = this.$element.find("[data-split-text]"),
e = [];
t.length &&
(t.liquidSplitText({ forceApply: !0 }),
t.each((t, i) => {
const s = undefined,
n = $(i).data("plugin_liquidSplitText");
n && e.push(n.splitDonePormise);
})),
e.length > 0 && Promise.all(e).then(this.init.bind(this));
} else this.init();
}
init() {
this.getElements(),
this.$hiddenElement.length &&
this.$visibleElement.length &&
imagesLoaded(this.element, () => {
(this.hiddenElementHeight = this.getHiddenElementHeight()),
this.$element.addClass("hide-target"),
this.createTimeline(),
this.moveElements(),
this.eventListeners();
});
}
getElements() {
(this.$hiddenElement = $(this.options.hiddenElement, this.element)),
(this.$visibleElement = $(this.options.visibleElement, this.element)),
(this.$hiddenElementOnHover = $(
this.options.hiddenElementOnHover,
this.element
)),
this.$hiddenElement
.wrap('')
.wrap(''),
this.$visibleElement
.wrap('')
.wrap(''),
(this.$hiddenElementWrap = this.$hiddenElement.closest(
".ld-slideelement-hidden"
)),
(this.$hiddenElementInner = this.$hiddenElement.closest(
".ld-slideelement-hidden-inner"
)),
(this.$visibleElementWrap = this.$visibleElement.closest(
".ld-slideelement-visible"
)),
(this.$visibleElementInner = this.$visibleElement.closest(
".ld-slideelement-visible-inner"
));
}
getHiddenElementHeight() {
let t = 0;
return (
$.each(this.$hiddenElement, (e, i) => {
t += $(i).outerHeight(!0);
}),
t
);
}
getHiddenElementChilds() {
return this.$hiddenElementInner
.children()
.map((t, e) => e.parentElement);
}
getVisibleElementChilds() {
return this.$visibleElementInner
.children()
.map((t, e) => e.parentElement);
}
moveElements() {
const t = this.options.alignMid
? this.hiddenElementHeight / 2
: this.hiddenElementHeight;
this.$visibleElementWrap.css({ transform: `translateY(${t}px)` }),
this.$hiddenElementWrap.css({ transform: `translateY(${t}px)` });
}
createTimeline() {
const { options: t } = this,
e = [
...this.getVisibleElementChilds(),
...this.getHiddenElementChilds(),
];
let i = t.alignMid
? this.hiddenElementHeight / 2
: this.hiddenElementHeight;
if (t.hiddenElementOnHover) {
const e = this.$hiddenElementOnHover.outerHeight(!0);
i = t.alignMid
? (this.hiddenElementHeight + e) / 2
: this.hiddenElementHeight + e;
}
this.timeline
.to(e, {
y: -1 * i,
opacity: (t, e) =>
$(e).is($(this.$hiddenElementOnHover).parent()) ? 0 : 1,
ease: "power3.out",
duration: 0.65,
stagger: 0.065,
})
.pause();
}
eventListeners() {
const t = liquidDebounce(this.onWindowResize.bind(this), 500);
this.$triggerElement.on(
"mouseenter.lqdSlideElementOnHover",
this.onMouseEnter.bind(this)
),
this.$triggerElement.on(
"mouseleave.lqdSlideElementOnHover",
this.onMouseLeave.bind(this)
),
$(window).on("resize.lqdSlideElementOnResize", t);
}
onMouseEnter() {
this.timeline.play();
}
onMouseLeave() {
this.timeline.reverse();
}
onWindowResize() {
(this.hiddenElementHeight = this.getHiddenElementHeight()),
this.moveElements();
}
destroy() {
this.$triggerElement.off(
"mouseenter.lqdSlideElementOnHover mouseleave.lqdSlideElementOnHover"
),
$(window).off("resize.lqdSlideElementOnResize");
}
}
$.fn[t] = function (e) {
return this.each(function () {
const s = { ...$(this).data("slideelement-options"), ...e };
(s.disableOnMobile && liquidIsMobile()) ||
$.data(this, "plugin_" + t) ||
$.data(this, "plugin_" + t, new i(this, s));
});
};
})(jQuery),
jQuery(document).ready(function ($) {
const t = undefined;
$("[data-slideelement-onhover]")
.filter(
(t, e) =>
!$(e).parents("[data-custom-animations]").length &&
!e.hasAttribute("data-custom-animations") &&
e.clientHeight > 0
)
.liquidSlideElement();
}),
(function ($) {
const t =
$liquidMainHeader.length &&
$liquidMainHeader[0].getAttribute("data-sticky-options"),
e = t && !0 === JSON.parse(t).dynamicColors,
i = "liquidStack";
let s = {
sectionSelector:
"#lqd-contents-wrap > .vc_row, #lqd-contents-wrap > .vc_section",
anchors: [],
easing: "linear",
scrollingSpeed: "1.2s",
loopTop: !1,
loopBottom: !1,
navigation: !1,
defaultTooltip: "Section",
prevNextButtons: !0,
prevNextLabels: { prev: "Previous", next: "Next" },
pageNumber: !0,
effect: "none",
disableOnMobile: !0,
normalScrollElements: null,
normalScrollElementTouchThreshold: 5,
touchSensitivity: 5,
};
const n = $("[data-back-to-top], [data-lqd-scroll-indicator]");
class o {
constructor(t, e) {
if (
((this._defaults = s),
(this._name = i),
(this.options = { ...s, ...e }),
(this.element = t),
(this.$element = $(t)),
this.options.disableOnMobile &&
(liquidIsMobile() ||
liquidWindowWidth() <= liquidMobileNavBreakpoint()))
)
return !1;
this.lastScrolledDestiny,
(this.lastAnimation = 0),
(this.scrollings = []),
(this.isTouch =
"ontouchstart" in window ||
navigator.msMaxTouchPoints > 0 ||
navigator.maxTouchPoints),
(this.touchStartY = 0),
(this.touchEndY = 0),
(this.prevTime = new Date().getTime()),
(this.scrollDelay = 600),
(this.anchors = []),
(this.tooltips = []),
(this.$sectionElements = null),
(this.$ppNav = null),
(this.$ppNavCurrent = null),
(this.$prevNextButtons = $(".lqd-stack-prevnext-wrap")),
(this.$pageNumber = $(".lqd-stack-page-number")),
(this.$stickyModules = liquidIsElementor
? $liquidMainHeader
.find(
"> .elementor > .elementor-section-wrap > .elementor-section, > .elementor > .elementor-section, > .elementor > .e-container, > .elementor > .e-con"
)
.not(".lqd-hide-onstuck")
.find('[data-element_type="widget"]')
: $liquidMainHeader
.find(".lqd-head-sec-wrap, .lqd-stickybar-wrap")
.not(".lqd-hide-onstuck")
.find(".lqd-head-col > .header-module")),
(this.$pageNumbersStyle = $liquidBody.hasClass(
"lqd-stack-nums-style-1"
)
? "style1"
: $liquidBody.hasClass("lqd-stack-nums-style-2")
? "style2"
: ""),
this.element.style.setProperty(
"--lqd-stack-animation-speed",
this.options.scrollingSpeed
),
(this.stackInitPromise = new Promise((t) => {
this.$element.on("stackinit", t.bind(this, this));
})),
(this.$mainNavLocalScroll = $(".main-nav")),
LiquidSectionsDetails.getDetails().then((t) => {
const e = undefined,
i = t
.filter((t) => !t.isInFooter && !t.isInnerSection)
.map((t) => t.el);
(this.$sectionElements = $(i)),
this.build(),
this.addClassnames(),
this.eachSection(),
this.init(),
this.$element.trigger("stackinit");
});
}
moveSectionUp() {
var t = this.getActiveSection().$element.prev(".pp-section");
!t.length && this.options.loopTop && (t = this.$sectionElements.last()),
t.length && this.scrollPage(t);
}
moveSectionDown() {
var t = this.getActiveSection().$element.next(".pp-section");
!t.length &&
this.options.loopBottom &&
(t = this.$sectionElements.first()),
t.length && this.scrollPage(t);
}
moveTo(t) {
let e;
(e = isNaN(t)
? this.$sectionElements.filter(
(e, i) => i.getAttribute("data-anchor") === t
)
: this.$sectionElements.eq(t - 1)),
this.scrollPage(e);
}
getActiveSection() {
const t = undefined,
e = undefined;
return {
$element: this.$sectionElements.filter((t, e) =>
$(e).hasClass("active")
),
index: this.$sectionElements
.get()
.findIndex((t) => t.classList.contains("active")),
};
}
makeScrollable(t) {
const e = $(t),
i = e.children().filter((t, e) => {
const i = $(e).css("position");
return "absolute" !== i && "fixed" !== i;
}),
s = e.outerHeight();
let n = 0;
if (
(i.length &&
i.each((t, e) => {
n += $(e).outerHeight();
}),
n > s)
) {
const i =
parseInt(e.css("paddingTop"), 10) +
parseInt(e.css("paddingBottom"), 10);
e.addClass("pp-scrollable"),
t.style.setProperty("--lqd-section-height", `${n + i}px`);
} else
e.removeClass("pp-scrollable"),
t.style.removeProperty("--lqd-section-height");
}
addTableClass(t) {
const e = $(t);
e.addClass(
"d-flex flex-column flex-nowrap align-content-start flex flex-col content-start"
),
e.children(".pp-section-wrap").length ||
e.wrapInner(
''
);
}
getYmovement(t) {
var e, i;
let s = "up";
return (
this.getActiveSection().index < this.$sectionElements.index(t) &&
(s = "down"),
s
);
}
scrollPage(t) {
const e = this.getActiveSection();
var i = {
destination: t,
activeSection: e.$element,
anchorLink: t.data("anchor"),
sectionIndex: this.$sectionElements.index(t),
toMove: t,
yMovement: this.getYmovement(t),
leavingSection: e.index + 1,
};
if (!i.activeSection.is(t)) {
if (
(void 0 !== i.anchorLink &&
this.setURLHash(i.anchorLink, i.sectionIndex),
this.$sectionElements.removeClass("active"),
this.setActiveSection(i.sectionIndex),
(i.sectionsToMove = this.getSectionsToMove(i)),
(i.translate3d = ""),
"down" === i.yMovement)
) {
if (i.destination.is(".pp-auto-height")) {
var s = -1 * i.destination.outerHeight() + "px";
(i.translate3d = `translate3d(0px, ${s}, 0px)`),
(i.scrolling = s),
(i.sectionsToMove = i.activeSection);
} else i.scrolling = "-100%";
i.animateSection = i.activeSection;
} else (i.scrolling = "0"), (i.animateSection = t);
this.onLeave(i.leavingSection, i.sectionIndex + 1, i.yMovement),
this.performMovement(i),
this.activateNavDots(i.sectionIndex),
(this.lastScrolledDestiny = i.anchorLink),
(this.lastAnimation = new Date().getTime());
}
}
performMovement(t) {
(this.timeout1 = setTimeout(() => {
this.transformContainer(t.animateSection, t.translate3d),
t.sectionsToMove.each(() => {
this.transformContainer($(this), t.translate3d);
}),
this.afterSectionLoads(t);
}, 250 * parseFloat(this.options.scrollingSpeed))),
(this.timeout1 = setTimeout(() => {
$liquidMainFooter.removeClass(
"lqd-stack-row-entering lqd-stack-row-leaving"
);
}, 1e3 * parseFloat(this.options.scrollingSpeed)));
}
afterSectionLoads(t) {
this.afterLoad(t.anchorLink, t.sectionIndex + 1);
}
afterLoad(t, e) {
const i = $(this.$sectionElements[e - 1]);
this.$ppNav.css("pointer-events", ""),
$liquidBody.removeClass(
"lqd-stack-moving lqd-stack-moving-up lqd-stack-moving-down"
),
this.initInview(i, !1);
}
getSectionsToMove(t) {
var e;
return (e =
"down" === t.yMovement
? this.$sectionElements.map(function (e) {
if (e < t.destination.index(this.$sectionElements))
return $(this);
})
: this.$sectionElements.map(function (e) {
if (e > t.destination.index(this.$sectionElements))
return $(this);
}));
}
setURLHash(t) {
location.hash = t;
}
scrollToAnchor() {
var t,
e = window.location.hash.replace("#", ""),
i = this.$sectionElements.filter(
(t, i) => $(i).attr("data-anchor") === e
);
i.length > 0 && this.scrollPage(i);
}
isMoving() {
var t;
return (
new Date().getTime() - this.lastAnimation <
this.scrollDelay + 250 * parseFloat(this.options.scrollingSpeed)
);
}
hashChangeHandler() {
var t,
e = window.location.hash.replace("#", "").split("/")[0];
if (e.length && e && e !== this.lastScrolledDestiny) {
const t = this.$sectionElements.filter(
(t, i) => $(i).attr("data-anchor") === e
);
this.scrollPage(t);
}
}
getTransforms(t) {
return { "-webkit-transform": t, transform: t };
}
transformContainer(t, e) {
t.css(this.getTransforms(e));
}
mouseWheelHandler(t) {
var e = new Date().getTime();
const i = t.originalEvent;
var s = i.wheelDelta || -i.deltaY || -i.detail,
n = Math.max(-1, Math.min(1, s)),
o = void 0 !== i.wheelDeltaX || void 0 !== i.deltaX,
a =
Math.abs(i.wheelDeltaX) < Math.abs(i.wheelDelta) ||
Math.abs(i.deltaX) < Math.abs(i.deltaY) ||
!o;
this.scrollings.length > 149 && this.scrollings.shift(),
this.scrollings.push(Math.abs(s));
var l = e - this.prevTime;
if (
((this.prevTime = e),
l > 200 && (this.scrollings = []),
!this.isMoving())
) {
var r = this.getActiveSection().$element,
d = this.isScrollable(r),
h,
c,
u;
this.getAverage(this.scrollings, 10) >=
this.getAverage(this.scrollings, 70) &&
a &&
(n < 0
? this.scrolling("down", d)
: n > 0 && this.scrolling("up", d));
}
}
getAverage(t, e) {
for (
var i = 0, s = t.slice(Math.max(t.length - e, 1)), n = 0;
n < s.length;
n++
)
i += s[n];
return Math.ceil(i / e);
}
scrolling(t, e) {
var i, s;
if (
("down" == t
? ((i = "bottom"), (s = this.moveSectionDown.bind(this)))
: ((i = "top"), (s = this.moveSectionUp.bind(this))),
e.length > 0)
) {
if (!this.isScrolled(i, e)) return !0;
s();
} else s();
}
isScrolled(t, e) {
return "top" === t
? !e.scrollTop()
: "bottom" === t
? e.scrollTop() + 1 + e.innerHeight() >= e[0].scrollHeight
: void 0;
}
isScrollable(t) {
return t.filter(".pp-scrollable");
}
addMouseWheelHandler() {
$liquidWindow.on("mousewheel wheel", this.mouseWheelHandler.bind(this));
}
handleKeys() {
$(document).keydown((t) => {
if (!this.isMoving())
switch (t.which) {
case 38:
case 33:
this.moveSectionUp();
break;
case 40:
case 34:
this.moveSectionDown();
break;
case 36:
this.moveTo(1);
break;
case 35:
this.moveTo($(".pp-section").length);
break;
default:
return;
}
});
}
addTouchHandler() {
this.isTouch &&
(this.$element
.off("touchstart")
.on("touchstart", this.touchStartHandler.bind(this)),
this.$element
.off("touchmove")
.on("touchmove", this.touchMoveHandler.bind(this)));
}
getEventsPage(t) {
var e = new Array();
return (
(e.y =
void 0 !== t.pageY && (t.pageY || t.pageX)
? t.pageY
: t.touches[0].pageY),
e
);
}
isReallyTouch(t) {
return void 0 === t.pointerType || "mouse" != t.pointerType;
}
touchStartHandler(t) {
var e = t.originalEvent;
if (this.isReallyTouch(e)) {
var i = this.getEventsPage(e);
this.touchStartY = i.y;
}
}
touchMoveHandler(t) {
var e = t.originalEvent;
if (this.isReallyTouch(e)) {
var i = this.getActiveSection().$element,
s = this.isScrollable(i);
if ((s.length || t.preventDefault(), !this.isMoving())) {
var n = this.getEventsPage(e);
(this.touchEndY = n.y),
Math.abs(this.touchStartY - this.touchEndY) >
(this.$element.height() / 100) *
this.options.touchSensitivity &&
(this.touchStartY > this.touchEndY
? this.scrolling("down", s)
: this.touchEndY > this.touchStartY &&
this.scrolling("up", s));
}
}
}
buildNavigationMarkup() {
this.$ppNav && this.$ppNav.remove(),
(this.$ppNav = $(
'\n\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t
\n\t\t\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t
\n\t\t\t'
)),
(this.$ppNavCurrent = $(".pp-nav-current", this.$ppNav)),
this.$ppNav
.children()
.append(
`${
this.$sectionElements.length < 10
? "0" + this.$sectionElements.length
: this.$sectionElements.length
}`
),
$("body").append(this.$ppNav);
}
addNavigationItem(t) {
this.$ppNavCurrent
.find("> span")
.append(`${t < 10 ? "0" + (t + 1) : t + 1}`),
this.$ppNav
.find("ul")
.append(
`\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t\t${this.tooltips[t]}\n\t\t\t`
);
}
activateNavDots(t) {
this.$ppNav.find("li").removeClass("active"),
this.$ppNav.find("li").eq(t).addClass("active");
}
updateSections(t) {
(this.$sectionElements = t),
this.buildNavigationMarkup(),
this.addClassnames(),
this.eachSection();
}
sectionAppended(t, e) {
const i = $(t).get(0);
(this.$sectionElements = $(
e
? [...this.$sectionElements].splice(e, 0, i)
: [...this.$sectionElements, i]
)),
this.buildNavigationMarkup(),
this.addClassnames(),
this.eachSection();
}
setActiveSection(t) {
this.$sectionElements.removeClass("active"),
this.$sectionElements.eq(t).addClass("active");
}
build() {
if (
(this.buildNavigationMarkup(),
$liquidMainFooter.length && !window.frameElement)
) {
let t;
if (liquidIsElementor) {
const e = $liquidContentsWrap.find(
" > .elementor > .elementor-section-wrap"
);
t = e.length ? e : $liquidContentsWrap.find(" > .elementor");
} else t = $liquidContentsWrap;
t.append($liquidMainFooter),
this.$sectionElements.last().addClass("section-before-footer"),
this.$sectionElements.push($liquidMainFooter[0]);
}
$liquidContentsWrap.children("style").appendTo("head"),
$liquidContentsWrap.children("p").insertAfter($liquidSiteWrap);
}
addClassnames() {
const { options: t } = this;
this.$sectionElements.addClass("pp-section"),
$liquidMainFooter.length &&
$liquidMainFooter.addClass("vc_row pp-auto-height"),
t.navigation && $liquidBody.addClass("lqd-stack-has-nav"),
t.prevNextButtons &&
$liquidBody.addClass("lqd-stack-has-prevnext-buttons"),
t.pageNumber && $liquidBody.addClass("lqd-stack-has-page-numbers"),
"none" !== t.effect &&
$liquidBody.addClass("lqd-stack-effect-enabled"),
$liquidBody.addClass(`lqd-stack-effect-${t.effect}`),
$liquidHtml.add("html").addClass("html-pp-enabled overflow-hidden"),
$liquidBody.addClass("pp-enabled");
}
eachSection() {
$.each(this.$sectionElements, (t, e) => {
this.makeScrollable(e),
this.setAnchors(t, e),
this.setTooltips(t, e),
e.classList.contains("main-footer") || this.addNavigationItem(t),
e.addEventListener("animationend", (t) => {
t.target === e &&
e.classList.remove(
"lqd-stack-row-entering",
"lqd-stack-row-leaving",
"lqd-stack-row-moving-up",
"lqd-stack-row-moving-down"
);
});
});
}
setAnchors(t, e) {
let i = "",
s = !1;
e.hasAttribute("id")
? (i = e.getAttribute("id"))
: e.hasAttribute("data-tooltip")
? (i = e
.getAttribute("data-tooltip")
.replace(new RegExp(" ", "g"), "-")
.toLowerCase())
: e.hasAttribute("data-anchor")
? ((s = !0), (i = e.getAttribute("data-anchor")))
: (i = `${this.options.defaultTooltip}-${t + 1}`),
(this.anchors[t] = i),
s || $(e).attr("data-anchor", i);
}
setTooltips(t, e) {
e.hasAttribute("data-tooltip")
? (this.tooltips[t] = e.getAttribute("data-tooltip"))
: (this.tooltips[t] = `${this.options.defaultTooltip} ${t + 1}`);
}
init() {
window.scrollTo(0, 0),
this.addMouseWheelHandler(),
this.handleKeys(),
this.addTouchHandler(),
this.lastScrolledDestiny ||
(this.setActiveSection(0),
this.activateNavDots(0),
this.addLuminosityClassnames(0)),
this.scrollToAnchor(),
this.afterRender(),
$(window).on("hashchange", this.hashChangeHandler.bind(this));
}
appendPrevNextButtons() {
const { prevNextLabels: t } = this.options;
this.$prevNextButtons = $('');
const e = $(
``
),
i = $(
``
);
this.$prevNextButtons.append(e.add(i)),
!$liquidBody.children(".lqd-stack-prevnext-wrap").length &&
$liquidBody.append(this.$prevNextButtons);
}
prevNextButtonsEvents() {
const t = this.$prevNextButtons.find(".lqd-stack-prev-button"),
e = this.$prevNextButtons.find(".lqd-stack-next-button");
t.on("click", this.moveSectionUp.bind(this)),
e.on("click", this.moveSectionDown.bind(this));
}
appendPageNumber() {
let t;
"style1" === this.$pageNumbersStyle &&
(t = this.appendPageNumbersStyle1()),
"style2" === this.$pageNumbersStyle &&
(t = this.appendPageNumbersStyle2()),
this.$pageNumber.length ||
($liquidBody.append(t), (this.$pageNumber = t));
}
appendPageNumbersStyle1() {
const t = this.$sectionElements.not(".main-footer").length,
e = $(''),
i = $(
'\n\t\t\t\t\n\t\t\t\t\n\t\t\t'
),
s = $(
`${
t < 10 ? "0" : ""
}${t}`
);
return e.append(i), e.append(s), e;
}
appendPageNumbersStyle2() {
const t = $(''),
e = this.$ppNav.find(".pp-nav-ul").clone(!0);
return t.append(e), t;
}
setPageNumber(t) {
$liquidBody.attr("data-lqd-stack-page", t),
"style1" === this.$pageNumbersStyle && this.setPageNumbersStyle1(t),
"style2" === this.$pageNumbersStyle && this.setPageNumbersStyle2(t);
}
setPageNumbersStyle1(t) {
const e = this.$pageNumber.find(".lqd-stack-page-number-current"),
i = undefined;
this.$pageNumber.find(".lqd-stack-page-number-passed").html(e.html()),
e.html(`${t < 10 ? "0" : ""}${t}`);
}
setPageNumbersStyle2(t) {
const e = this.$pageNumber.find("li");
e.removeClass("active"), e.eq(t - 1).addClass("active");
}
addDirectionClassname(t) {
"down" === t
? ($liquidBody
.removeClass("lqd-stack-moving-up")
.addClass("lqd-stack-moving-down"),
this.$sectionElements
.removeClass("lqd-stack-moving-up")
.addClass("lqd-stack-moving-down"))
: "up" === t &&
($liquidBody
.removeClass("lqd-stack-moving-down")
.addClass("lqd-stack-moving-up"),
this.$sectionElements
.removeClass("lqd-stack-moving-down")
.addClass("lqd-stack-moving-up"));
}
addLuminosityClassnames(t) {
fastdom.mutate(() => {
const i = undefined;
(e
? $liquidBody.add($liquidMainHeader).add(this.$stickyModules)
: $liquidBody
)
.removeClass("lqd-active-row-dark lqd-active-row-light")
.addClass(
`lqd-active-row-${this.$sectionElements
.eq(t)
.attr("data-section-luminosity")}`
);
});
}
initShortcodes(t, e) {
if (
(!liquidIsMobile() &&
$("[data-dynamic-shape]", t).liquidDynamicShape(),
$("[data-reveal]", t).liquidReveal(),
$("[data-particles=true]", t).liquidParticles(),
$("[data-liquid-masonry]", t).liquidMasonry(),
e && this.initInview(t, !0),
liquidIsMobile() &&
document.body.hasAttribute("data-disable-animations-onmobile"))
)
return $("[data-custom-animations]").addClass(
"ca-initvalues-applied"
);
$("[data-custom-animations]", t).liquidCustomAnimations(),
t.is("[data-custom-animations]") && t.liquidCustomAnimations();
}
initBackToTop(t) {
t > 1 ? n.addClass("is-visible") : n.removeClass("is-visible"),
$("a", n).on("click", (t) => {
t.preventDefault(), this.moveTo(1);
});
}
afterRender() {
$liquidMainFooter.length &&
$liquidBody.addClass("lqd-stack-has-footer");
const t = this.$sectionElements
.get()
.findIndex((t) => t.classList.contains("active"));
this.initShortcodes(this.$sectionElements.eq(t), !0),
window.frameElement ||
(this.options.prevNextButtons && this.appendPrevNextButtons(),
this.options.prevNextButtons && this.prevNextButtonsEvents(),
this.options.pageNumber && this.appendPageNumber(),
this.setPageNumber(t + 1)),
$liquidBody.addClass("lqd-stack-initiated");
}
onLeave(t, e, i) {
const s = $(this.$sectionElements[e - 1]),
o = $(this.$sectionElements[t - 1]);
s.hasClass("main-footer") || o.hasClass("main-footer")
? s.hasClass("main-footer") &&
o.removeClass("lqd-stack-row-entering lqd-stack-row-leaving")
: (this.$ppNav.css("pointer-events", "none"),
$liquidBody.addClass("lqd-stack-moving"),
this.setPageNumber(e),
s
.removeClass("lqd-stack-row-leaving")
.addClass("lqd-stack-row-entering"),
o
.removeClass("lqd-stack-row-entering")
.addClass("lqd-stack-row-leaving"),
this.addLuminosityClassnames(e - 1),
this.$ppNavCurrent
.children("span")
.css({ transform: `translateY(-${100 * (e - 1)}%)` })),
s.hasClass("main-footer")
? ($liquidBody.addClass("lqd-stack-footer-active"),
o.css("transform", "none"))
: $liquidBody.removeClass("lqd-stack-footer-active"),
this.addDirectionClassname(i),
this.initShortcodes(s, !1),
n.length && this.initBackToTop(e),
this.$mainNavLocalScroll.length && this.handleMainNavLocalScroll();
}
initInview(t, e) {
$liquidBody.hasClass("lqd-preloader-activated") && e
? document.addEventListener("lqd-preloader-anim-done", () => {
$("[data-inview]", t).liquidInView();
})
: $("[data-inview]", t).liquidInView();
}
handleMainNavLocalScroll() {
const t = window.location.hash;
t &&
(this.$mainNavLocalScroll
.find(`a[href="${t}"]`)
.parent()
.addClass("is-active")
.siblings()
.removeClass("is-active"),
this.$mainNavLocalScroll
.closest(
".navbar-fullscreen, .navbar-collapse, .ld-module-dropdown, .mobile-navbar-collapse"
)
.collapse("hide"));
}
}
$.fn[i] = function (t) {
return this.each(function () {
const e = { ...$(this).data("stack-options"), ...t };
$.data(this, "plugin_" + i) ||
$.data(this, "plugin_" + i, new o(this, e));
});
};
})(jQuery),
jQuery(document).ready(function ($) {
window.frameElement || $("[data-liquid-stack=true]").liquidStack();
}),
(function ($) {
const t = "liquidStickyStack";
let e = {
itemsSelector: ".lqd-sticky-stack-item",
itemsInnerSelector: ".lqd-sticky-stack-item-inner",
offset: 30,
spacer: 30,
minScale: 0.8,
};
class i {
constructor(i, s) {
(this._defaults = e),
(this._name = t),
(this.options = { ...e, ...s }),
(this.DOM = {}),
(this.DOM.element = i),
(this.DOM.$element = $(i)),
(this.DOM.$items = this.DOM.$element.find(
this.options.itemsSelector
)),
(this.DOM.$innerItems = this.DOM.$element.find(
this.options.itemsInnerSelector
)),
(this.DOM.$nav = null),
(this.DOM.$navItems = null),
this.DOM.$items.length < 2 ||
imagesLoaded(this.DOM.element, () => {
this.init();
});
}
createNav() {
this.DOM.$nav = $(
''
);
const t = $(
''
);
for (let e = 0; e < this.DOM.$items.length; e++)
t.append("");
t.appendTo(this.DOM.$nav),
(this.DOM.$navItems = t.children()),
this.DOM.$nav.appendTo(this.DOM.$element);
}
init() {
const { spacer: t, minScale: e } = this.options,
i = this.getOffset(),
s =
getComputedStyle(document.documentElement).getPropertyValue(
"--lqd-sticky-header-height"
) || 0,
n = this.DOM.$items.last().outerHeight(),
o = gsap.utils.distribute({ base: e, amount: 0.2 });
this.DOM.$innerItems.each((t, e) => {
const i = o(
t,
this.DOM.$innerItems.get(t),
this.DOM.$innerItems.get()
),
s = gsap.to(e, { scale: i });
ScrollTrigger.create({
animation: s,
trigger: e,
start: "top top",
scrub: 0.25,
});
}),
this.DOM.$items.each((e, o) => {
ScrollTrigger.create({
trigger: o,
start: `top-=${i + e * t + parseInt(s)} top`,
end: `bottom top+=${n + this.DOM.$items.length * t}`,
endTrigger: this.DOM.element,
pin: !0,
pinSpacing: !1,
});
});
}
getOffset() {
let { offset: t } = this.options;
const e = $liquidMainHeader
.find(".lqd-head-sec-wrap")
.not(".lqd-hide-onstuck");
return (
e.length &&
e.each((e, i) => {
t += $(i).outerHeight();
}),
t
);
}
initNav() {
function t() {
let t = [],
e = 20;
for (let i = 1; i <= e; i++) {
let s = i / e;
t.push(s);
}
return t.push(0), t;
}
for (let e = 0; e < this.DOM.$items.length; e++) {
let i = 0;
new IntersectionObserver(
([t]) => {
t.isIntersecting &&
i < t.intersectionRatio &&
this.DOM.$navItems
.removeClass("is-active")
.eq(e)
.addClass("is-active");
},
{ threshold: t() }
).observe(this.DOM.$items.get(e));
}
}
}
$.fn[t] = function (e) {
return this.each(function () {
const s = { ...$(this).data("sticky-stack-options"), ...e };
$.data(this, "plugin_" + t) ||
$.data(this, "plugin_" + t, new i(this, s));
});
};
})(jQuery),
jQuery(document).ready(function ($) {
liquidIsMobile() || $(".lqd-sticky-stack").liquidStickyStack();
}),
(function ($) {
const t = "liquidStretchElement";
let e = { to: "right" };
class i {
constructor(i, s) {
(this.element = i),
(this.$element = $(i)),
(this.options = $.extend({}, e, s)),
(this._defaults = e),
(this._name = t),
(this.isStretched = !1),
(this.boundingClientRect = null),
(this.rootBounds = null),
this.initIO();
}
initIO() {
new IntersectionObserver((t) => {
t.forEach((t) => {
t.isIntersecting &&
!this.isStretched &&
((this.boundingClientRect = t.boundingClientRect),
(this.rootBounds = t.rootBounds),
this.init(),
(this.isStretched = !0));
});
}).observe(this.element, { rootMargin: "3%" });
}
init() {
this.stretch(), this.$element.addClass("element-is-stretched");
}
stretch() {
"right" === this.options.to
? this.stretchToRight()
: this.stretchToLeft();
}
stretchToRight() {
const t =
this.rootBounds.width -
(this.boundingClientRect.width + this.boundingClientRect.left);
this.$element.css("marginRight", -1 * t);
}
stretchToLeft() {
const t = this.rootBounds.width - this.boundingClientRect.left;
this.$element.css("marginLeft", -1 * t);
}
}
$.fn[t] = function (e) {
return this.each(function () {
const s = $(this).data("stretch-options") || e;
$.data(this, "plugin_" + t) ||
$.data(this, "plugin_" + t, new i(this, s));
});
};
})(jQuery),
jQuery(document).ready(function ($) {
$("[data-stretch-element=true]").liquidStretchElement();
}),
(function ($) {
const t = "liquidTab";
let e = { deepLink: !1, trigger: "click", translateNav: !1 };
class i {
constructor(i, s) {
(this._defaults = e),
(this._name = t),
(this.options = { ...e, ...s }),
(this.isBS5 = "undefined" != typeof bootstrap),
(this.isRTL = "rtl" === $("html").attr("dir")),
(this.element = i),
(this.$element = $(i)),
(this.$tabNav = $(".lqd-tabs-nav", this.element)),
(this.$navItems = $("> li > a", this.$tabNav)),
(this.$activeItem = this.$navItems.filter(
(t, e) =>
e.parentElement?.classList?.contains("active") ||
e.classList.contains("active")
)),
(this.$tabNavArrows = this.element),
(this.$tabNavPrev = $(".lqd-tabs-nav-prev", this.$tabNavArrows)),
(this.$tabNavNext = $(".lqd-tabs-nav-next", this.$tabNavArrows)),
(this.canChange = !0),
this.$activeItem.length &&
this.options.translateNav &&
((this.activeItemWidth = this.$activeItem.outerWidth()),
(this.activeItemHeight = this.$activeItem.outerHeight()),
console.log(
this.$activeItem.position().left + this.activeItemWidth
),
(this.activeItemPosLeft = this.isRTL
? this.$tabNav.width() -
-1 * (this.$activeItem.position().left + this.activeItemWidth)
: this.$activeItem.position().left)),
this.element.parentElement.closest(".lqd-mobile-sec") &&
this.changeIds(),
this.init();
}
changeIds() {
this.$navItems.each((t, e) => {
const i = e.getAttribute("href");
e.setAttribute("href", `${i}-mobile`),
e.setAttribute(
"aria-controls",
`${e.getAttribute("aria-controls")}-mobile`
),
this.element
.querySelector(i)
.setAttribute("id", `${i.replace("#", "")}-mobile`);
});
}
init() {
const { deepLink: t, translateNav: e } = this.options;
this.isBS5
? this.$navItems.each((t, e) => new bootstrap.Tab(e))
: this.$navItems.tab(),
t && this.setHash(),
e && this.translateNav(!1),
this.eventHandlers();
}
setHash() {
const t = this.$tabNav.find(`a[href="${location.hash}"]`);
"" !== location.hash &&
t.length &&
(t.tab("show"),
0 === window.scrollY &&
$("html,body")
.stop()
.animate({ scrollTop: this.$tabNav.offset().top - 90 }, 600));
}
eventHandlers() {
"hover" !== this.options.trigger ||
liquidIsMobile() ||
this.$navItems.on("mouseenter.lqdTabs", (t) => {
const e = t.currentTarget;
this.isBS5 ? bootstrap.Tab.getInstance(e).show() : $(e).tab("show");
}),
this.isBS5
? this.$navItems.each((t, e) => {
e.addEventListener("hide.bs.tab", this.onHide.bind(this)),
e.addEventListener("show.bs.tab", this.onShow.bind(this)),
e.addEventListener("shown.bs.tab", this.onShown.bind(this));
})
: (this.$element.on("hide.bs.tab", this.onHide.bind(this)),
this.$element.on("show.bs.tab", this.onShow.bind(this)),
this.$element.on("shown.bs.tab", this.onShown.bind(this))),
this.$tabNavPrev.on("click.lqdTabs", this.showPrev.bind(this)),
this.$tabNavNext.on("click.lqdTabs", this.showNext.bind(this));
}
onHide(t) {
const e = t.target,
i = e.getAttribute("data-bs-target");
if (i) {
const t = document.querySelector(i);
t && t.classList.remove("active", "show", "in");
}
e.parentElement.classList.remove("active"), (this.canChange = !1);
}
onShow(t) {
const e = t.target,
{ deepLink: i, translateNav: s } = this.options,
n = e.getAttribute("data-bs-target");
if (((this.$activeItem = $(e)), i)) {
const e = $(t.target).attr("href");
location.hash = e;
const i = $(document).scrollTop();
$(document).scrollTop(i);
}
if (
(this.$activeItem
.parent()
.addClass("active")
.siblings()
.removeClass("active"),
n)
) {
const t = document.querySelector(n);
t && $(t).siblings().removeClass("active");
}
if (t.relatedTarget) {
const e = $(t.relatedTarget),
i = undefined;
$(e.attr("href")).removeClass("active in");
}
s &&
((this.activeItemWidth = this.$activeItem.outerWidth()),
(this.activeItemHeight = this.$activeItem.outerHeight()),
(this.activeItemPosLeft = this.isRTL
? -1 *
(this.$tabNav.width() -
(this.$activeItem.position().left + this.activeItemWidth))
: this.$activeItem.position().left),
this.translateNav(!0));
}
onShown(t) {
this.canChange = !0;
const e = $(t.target),
i = $(e.attr("href")),
s = liquidIsMobile()
? $(".lqd-tabs-content", this.$element).offset().top
: this.$element.offset().top,
n = $("[data-sticky-header].is-stuck")?.outerHeight() || 0,
o = undefined,
a = t.target.getAttribute("data-bs-target");
if (a) {
const t = document.querySelector(a);
t && t.classList.add("in");
}
((!liquidIsMobile() && s <= $liquidWindow.scrollTop() - 15) ||
(liquidIsMobile() &&
(s > $liquidWindow.scrollTop() + window.innerHeight ||
$liquidWindow.scrollTop() > s))) &&
$("html, body")
.stop()
.animate({ scrollTop: s - n - 45 }, 800),
this.initPlugins(i);
}
translateNav(t) {
this.element.style.setProperty(
"--lqd-tabs-nav-active-width",
`${this.activeItemWidth}px`
),
this.element.style.setProperty(
"--lqd-tabs-nav-active-height",
`${this.activeItemHeight}px`
),
t &&
this.element.style.setProperty(
"--lqd-tabs-nav-translate",
`${this.activeItemPosLeft}px`
);
}
showPrev() {
this.canChange &&
this.$activeItem.parent().prev().children("a").tab("show");
}
showNext() {
this.canChange &&
this.$activeItem.parent().next().children("a").tab("show");
}
initPlugins(t) {
const e = $(".vc_pie_chart:not(.vc_ready)", t),
i = $(".vc_round-chart", t),
s = $(".vc_line-chart", t),
n = $(".elementor-gallery__container", t);
e.length && $.fn.vcChat && e.vcChart(),
i.length && $.fn.vcRoundChart && i.vcRoundChart({ reload: !1 }),
s.length && $.fn.vcLineChart && s.vcLineChart({ reload: !1 }),
$("[data-hover3d=true]", t).liquidHover3d(),
$("[data-split-text]", t).liquidSplitText(),
$("[data-slideelement-onhover]", t).liquidSlideElement(),
$(".cd-image-container", t).liquidImageComparison(),
$(".lqd-carousel-stack", t).liquidCarouselStack(),
n.trigger("resize");
}
destroy() {
this.$navItems.off("mouseenter.lqdTabs"),
this.$element.off(
"hide.bs.tab show.bs.tab shown.bs.tab",
this.onHide.bind(this)
),
this.$tabNavPrev.off("click.lqdTabs"),
this.$tabNavNext.off("click.lqdTabs");
}
}
$.fn[t] = function (e) {
return this.each(function () {
const s = { ...$(this).data("tabs-options"), ...e };
$.data(this, "plugin_" + t) ||
$.data(this, "plugin_" + t, new i(this, s));
});
};
})(jQuery),
jQuery(document).ready(function ($) {
$(".lqd-tabs").liquidTab();
}),
(function ($) {
const t = "liquidTypewriter";
let e = { repeat: !1, speed: 75 };
class i {
constructor(i, s) {
(this.element = i),
(this.$element = $(i)),
(this.options = { ...e, ...s }),
(this._defaults = e),
(this._name = t),
this.init(),
this.initIO();
}
init() {
const { repeat: t, speed: e } = this.options;
this.$element.t({ repeat: t, speed: e }), this.$element.t("pause", !0);
}
initIO() {
new IntersectionObserver(([t], e) => {
t.isIntersecting
? this.$element.t("pause", !1)
: this.$element.t("pause", !0);
}).observe(this.element);
}
}
$.fn[t] = function (e) {
return this.each(function () {
const s = { ...$(this).data("plugin-options"), ...e };
$.data(this, "plugin_" + t) ||
$.data(this, "plugin_" + t, new i(this, s));
});
};
})(jQuery),
jQuery(document).ready(function ($) {
$("[data-typewriter]").liquidTypewriter();
}),
(function ($) {
const t = "liquidVideoBg";
let e = {
startVolume: !1,
controls: !1,
loop: !0,
muted: !0,
hideVideoControlsOnLoad: !0,
hideVideoControlsOnPause: !0,
clickToPlayPause: !1,
disableOnMobile: !1,
},
i = {
autoPlay: !0,
showControls: !1,
loop: !0,
mute: !0,
showYTLogo: !1,
stopMovieOnBlur: !1,
disableOnMobile: !1,
};
class s {
constructor(s, n, o) {
(this.element = s),
(this.$element = $(s)),
(this.inlineVideoOptions = { ...e, ...n }),
(this.youtubeOptions = { ...i, ...o }),
(this._name = t),
(this.lqdVBG = null),
(this.lqdYTPlayer = null),
this.init();
}
init() {
const t = liquidIsMobile();
this.$element.is("video") &&
this.inlineVideoOptions.disableOnMobile &&
t
? this.$element.closest(".lqd-vbg-wrap").addClass("hidden")
: this.$element.is("video") &&
(this.$element.removeClass("hidden"), this.initInlineVideo()),
!this.$element.is("video") && this.youtubeOptions.disableOnMobile && t
? this.$element.closest(".lqd-vbg-wrap").addClass("hidden")
: this.$element.is("video") || this.initYoutubeVideo();
}
initInlineVideo() {
const t = this.$element.closest(".lqd-vbg-wrap"),
e = t.length ? t.get(0) : this.element;
this.lqdVBG = this.element;
}
initYoutubeVideo() {
const t = $.extend({}, this.youtubeOptions, {
containment: this.$element,
});
(this.lqdYTPlayer = this.$element.YTPlayer(t)),
this.lqdYTPlayer.on("YTPReady", () => {
this.lqdYTPlayer.YTPPause(), this.initYTIO();
});
}
initInlineVidIO(t) {
new IntersectionObserver(([t]) => {
t.isIntersecting
? this.lqdVBG && this.lqdVBG.play()
: this.lqdVBG && this.lqdVBG.pause();
}).observe(t);
}
initYTIO() {
new IntersectionObserver(([t]) => {
t.isIntersecting
? this.lqdYTPlayer && this.lqdYTPlayer.YTPPlay()
: this.lqdYTPlayer && this.lqdYTPlayer.YTPPause();
}).observe(this.element);
}
}
$.fn[t] = function (e, i) {
return this.each(function () {
const n = { ...$(this).data("inlinevideo-options"), ...e },
o = { ...$(this).data("youtube-options"), ...i };
$.data(this, "plugin_" + t) ||
$.data(this, "plugin_" + t, new s(this, n, o));
});
};
})(jQuery, window, document),
jQuery(document).ready(function ($) {
$("[data-video-bg]").liquidVideoBg();
}),
(function ($) {
const t = "liquidVideoTrigger";
let e = {
triggerType: ["mouseenter", "mouseleave"],
videoPlacement: "parent",
loop: !1,
};
class i {
constructor(i, s) {
(this.element = i),
(this.$element = $(i)),
(this.options = $.extend({}, e, s)),
(this._defaults = e),
(this._name = t),
(this.videoElement = this.$element[this.options.videoPlacement]()
.find("video")
.get(0)),
this.init();
}
init() {
this.videoElement.oncanplay = this.events.call(this);
}
events() {
this.$element.on(
this.options.triggerType[0],
this.triggerOn.bind(this)
),
this.$element.on(
this.options.triggerType[1],
this.triggerOff.bind(this)
);
}
triggerOn() {
this.options.loop &&
((this.videoElement.loop = !0), (this.videoElement.currentTime = 0)),
this.videoElement.play();
}
triggerOff() {
this.videoElement.pause();
}
}
$.fn[t] = function (e) {
return this.each(function () {
const s = $(this).data("trigger-options") || e;
$.data(this, "plugin_" + t) ||
$.data(this, "plugin_" + t, new i(this, s));
});
};
})(jQuery),
jQuery(document).ready(function ($) {
$("[data-video-trigger]").liquidVideoTrigger();
}),
(function ($) {
const t = "liquidWebGLHover";
let e = {};
class i {
constructor(t = document.body, e = null) {
(this.container = t),
(this.itemsWrapper = e),
this.container && this.itemsWrapper && this.build();
}
build() {
new IntersectionObserver(([t], e) => {
t.isIntersecting &&
(this.setup(),
this.initEffectShell().then(() => {
(this.isLoaded = !0),
this.isMouseOver && this.onMouseOver(this.tempItemIndex),
(this.tempItemIndex = null),
this.createEventsListeners(),
this.init(),
this.container.classList.add("lqd-webglhover-ready");
}),
e.unobserve(t.target));
}).observe(this.container);
}
setup() {
window.addEventListener("resize", this.onWindowResize.bind(this), !1),
(this.renderer = new THREE.WebGLRenderer({
antialias: !0,
alpha: !0,
})),
this.renderer.setSize(this.viewport.width, this.viewport.height),
(this.renderer.setPixelRatio = window.devicePixelRatio),
this.container.appendChild(this.renderer.domElement),
(this.scene = new THREE.Scene()),
(this.camera = new THREE.PerspectiveCamera(
52.75,
this.viewport.aspectRatio,
1,
1e3
)),
this.camera.position.set(0, 0, 1),
(this.mouse = new THREE.Vector2()),
(this.timeSpeed = 2),
(this.time = 0),
(this.clock = new THREE.Clock()),
this.renderer.setAnimationLoop(this.render.bind(this));
}
render() {
(this.time += this.clock.getDelta() * this.timeSpeed),
this.renderer.render(this.scene, this.camera);
}
initEffectShell() {
let t = [];
this.items = this.itemsElements;
const e = new THREE.TextureLoader();
return (
this.items.forEach((i, s) => {
t.push(this.loadTexture(e, i.img ? i.img.src : null, s));
}),
new Promise((e) => {
Promise.all(t).then((t) => {
t.forEach((t, e) => {
this.items[e].texture = t.texture;
}),
e();
});
})
);
}
createEventsListeners() {
this.items.forEach((t, e) => {
t.element.addEventListener(
"mouseover",
this._onMouseOver.bind(this, e),
!1
);
}),
this.container.addEventListener(
"mousemove",
this._onMouseMove.bind(this),
!1
),
this.itemsWrapper.addEventListener(
"mouseleave",
this._onMouseLeave.bind(this),
!1
);
}
_onMouseLeave(t) {
(this.isMouseOver = !1), this.onMouseLeave(t);
}
_onMouseMove(t) {
(this.mouse.x = (t.clientX / this.viewport.width) * 2 - 1),
(this.mouse.y = (-t.clientY / this.viewport.height) * 2 + 1),
this.onMouseMove(t);
}
_onMouseOver(t, e) {
(this.tempItemIndex = t), this.onMouseOver(t, e);
}
onWindowResize() {
(this.camera.aspect = this.viewport.aspectRatio),
this.camera.updateProjectionMatrix(),
this.renderer.setSize(this.viewport.width, this.viewport.height);
}
onUpdate() {}
onMouseEnter(t) {}
onMouseLeave(t) {}
onMouseMove(t) {}
onMouseOver(t, e) {}
get viewport() {
let t = this.container.clientWidth,
e = this.container.clientHeight,
i;
return { width: t, height: e, aspectRatio: t / e };
}
get viewSize() {
let t = ((this.camera.fov / 3) * Math.PI) / 180,
e = 0.25 * Math.tan(t / 3),
i;
return { width: e * this.viewport.aspectRatio, height: e, vFov: t };
}
get itemsElements() {
const t = undefined;
return [...this.itemsWrapper.querySelectorAll("figure")].map(
(t, e) => ({
element: t,
img: t.querySelector("img") || null,
index: e,
})
);
}
loadTexture(t, e, i) {
return new Promise((s, n) => {
e
? t.load(
e,
(t) => {
s({ texture: t, index: i });
},
void 0,
(t) => {
console.error("An error happened.", t), n(t);
}
)
: s({ texture: null, index: i });
});
}
}
class s extends i {
constructor(t = document.body, e = null, i = {}) {
super(t, e),
this.container &&
this.itemsWrapper &&
((i.strength = i.strength || 0.25),
(this.options = i),
this.init());
}
init() {
(this.position = new THREE.Vector3(0, 0, 0)),
(this.scale = new THREE.Vector3(1, 1, 1)),
(this.geometry = new THREE.PlaneBufferGeometry(1, 1, 32, 32)),
(this.uniforms = {
uTime: { value: 0 },
uTexture: { value: null },
uOffset: { value: new THREE.Vector2(0, 0) },
uAlpha: { value: 1 },
}),
(this.material = new THREE.ShaderMaterial({
uniforms: this.uniforms,
vertexShader:
"\n\t\t\t\t\tuniform vec2 uOffset;\n\t\n\t\t\t\t\tvarying vec2 vUv;\n\t\n\t\t\t\t\tvec3 deformationCurve(vec3 position, vec2 uv, vec2 offset) {\n\t\t\t\t\t\tfloat M_PI = 3.1415926535897932384626433832795;\n\t\t\t\t\t\tposition.x = position.x + (sin(uv.y * M_PI) * offset.x);\n\t\t\t\t\t\tposition.y = position.y + (sin(uv.x * M_PI) * offset.y);\n\t\t\t\t\t\treturn position;\n\t\t\t\t\t}\n\t\n\t\t\t\t\tvoid main() {\n\t\t\t\t\t\tvUv = uv;\n\t\t\t\t\t\tvec3 newPosition = position;\n\t\t\t\t\t\tnewPosition = deformationCurve(position,uv,uOffset);\n\t\t\t\t\t\tgl_Position = projectionMatrix * modelViewMatrix * vec4( newPosition, 1.0 );\n\t\t\t\t\t}\n\t\t\t\t",
fragmentShader:
"\n\t\t\t\t\tuniform sampler2D uTexture;\n\t\t\t\t\tuniform float uAlpha;\n\t\t\t\t\tuniform vec2 uOffset;\n\t\n\t\t\t\t\tvarying vec2 vUv;\n\t\n\t\t\t\t\tvec3 rgbShift(sampler2D texture, vec2 uv, vec2 offset) {\n\t\t\t\t\t\tfloat r = texture2D(uTexture,vUv + uOffset).r;\n\t\t\t\t\t\tvec2 gb = texture2D(uTexture,vUv).gb;\n\t\t\t\t\t\treturn vec3(r,gb);\n\t\t\t\t\t}\n\t\n\t\t\t\t\tvoid main() {\n\t\t\t\t\t\tvec3 color = rgbShift(uTexture,vUv,uOffset);\n\t\t\t\t\t\tgl_FragColor = vec4(color,uAlpha);\n\t\t\t\t\t}\n\t\t\t\t",
transparent: !0,
})),
(this.plane = new THREE.Mesh(this.geometry, this.material)),
this.scene && this.scene.add(this.plane),
this.onTargetChange(0),
this.draw(0, 0);
}
onMouseEnter() {
(this.currentItem && this.isMouseOver) || (this.isMouseOver = !0);
}
onMouseLeave(t) {}
onMouseMove(t) {
let e = gsap.utils.mapRange(
-1,
1,
-this.viewSize.width / 4,
this.viewSize.width / 4,
this.mouse.x
),
i = gsap.utils.mapRange(
-1,
1,
-this.viewSize.height / 4,
this.viewSize.height / 4,
this.mouse.y
);
this.draw(e, i);
}
draw(t, e) {
(this.position = new THREE.Vector3(t, e, 0)),
gsap.to(this.plane.position, {
x: t,
y: e,
duration: 1,
ease: "power4.out",
onUpdate: this.onPositionUpdate.bind(this),
});
}
onPositionUpdate() {
let t = this.plane.position
.clone()
.sub(this.position)
.multiplyScalar(-this.options.strength);
this.uniforms.uOffset.value = t;
}
onMouseOver(t) {
this.isLoaded &&
(this.onMouseEnter(),
(this.currentItem && this.currentItem.index === t) ||
this.onTargetChange(t));
}
onTargetChange(t) {
if (!this.items) return;
if (((this.currentItem = this.items[t]), !this.currentItem.texture))
return;
let e =
this.currentItem.img.naturalWidth /
this.currentItem.img.naturalHeight;
this.scale = new THREE.Vector3(e, 1, 1);
const i = this.currentItem.texture;
(i.generateMipmaps = !1),
(i.wrapS = i.wrapT = THREE.ClampToEdgeWrapping),
(i.minFilter = THREE.LinearFilter),
(this.uniforms.uTexture.value = i),
this.plane.scale.copy(this.scale);
}
}
class n {
constructor(i, s) {
(this.element = i),
(this.$element = $(i)),
(this.options = { ...e, ...s }),
(this._defaults = e),
(this._name = t),
this.init();
}
init() {
const t = undefined;
(() =>
new Promise((t) => {
imagesLoaded(this.element.querySelector("img"), t);
}))().then(() => {
new s(this.element, this.element.querySelector("[data-hoverme]"), {
strength: 3,
});
});
}
}
$.fn[t] = function (e) {
return this.each(function () {
const i = { ...$(this).data("webglhover-options"), ...e };
$.data(this, "plugin_" + t) ||
$.data(this, "plugin_" + t, new n(this, i));
});
};
})(jQuery),
jQuery(document).ready(function ($) {
liquidIsMobile() ||
$liquidBody.hasClass("lazyload-enabled") ||
$("[data-webglhover]").liquidWebGLHover();
}),
(function ($) {
const t = "liquidSlideshow";
let e = {
handler: "click",
menuItems: ".lqd-slsh-alt-menu a, .lqd-vslider-menu a",
images: ".lqd-slsh-alt-images figure, .lqd-vslider-images figure",
extras: ".lqd-slsh-alt-ext > ul > li, .lqd-vslider-ext > ul > li",
};
class i {
constructor(i, s) {
(this._defaults = e),
(this._name = t),
(this.options = { ...e, ...s }),
(this.DOM = {}),
(this.DOM.element = i),
(this.DOM.$element = $(i)),
(this.DOM.$menuItems = $(this.options.menuItems, this.DOM.$element)),
(this.DOM.$images = $(this.options.images, this.DOM.$element)),
(this.DOM.$extras = $(this.options.extras, this.DOM.$element)),
(this.DOM.$loader = $(".lqd-vslider-loader", this.DOM.$element)),
(this.isLoading = !1),
(this.prevItem = 0),
(this.currentItem = 0),
this.init();
}
init() {
this.loadImage(), this.events();
}
events() {
this.DOM.$menuItems.each((t, e) => {
$(e).on(this.options.handler, (e) => {
e.preventDefault(),
e.stopPropagation(),
this.isLoading ||
((this.prevItem = this.currentItem),
(this.currentItem = t),
this.prevItem !== this.currentItem && this.loadImage());
});
});
}
loadImage() {
const t = this.DOM.$images.eq(this.currentItem),
e = $("img", t);
e.hasClass("loaded") || e.attr("src", e.attr("data-src")),
(this.isLoading = !0),
this.DOM.$element.addClass("is-loading"),
imagesLoaded(e[0], this.onImageLoaded.bind(this));
}
onImageLoaded() {
const t = this.DOM.$images.eq(this.currentItem),
e = $("img", t),
i = this.DOM.$extras.eq(this.currentItem),
s = this.DOM.$menuItems.eq(this.currentItem).parent();
(this.isLoading = !1),
this.DOM.$element.removeClass("is-loading"),
e.addClass("loaded"),
this.DOM.$images.removeClass("is-active"),
this.DOM.$menuItems.parent().removeClass("is-active"),
this.DOM.$extras.removeClass("is-active"),
t.addClass("is-active"),
i.addClass("is-active"),
s.addClass("is-active"),
this.animateElements();
}
animateElements() {
const t = this.DOM.$extras.eq(this.prevItem),
e = this.DOM.$extras.eq(this.currentItem),
i = t.children().not("style"),
s = e.children().not("style");
gsap.fromTo(t[0], { opacity: 1 }, { opacity: 0, delay: 0.2 }),
gsap.fromTo(e[0], { opacity: 0 }, { opacity: 1, delay: 0.2 }),
gsap.fromTo(
i.get(),
{ xPercent: 0, opacity: 1 },
{ xPercent: 3, opacity: 0, stagger: 0.1, delay: 0.3 }
),
gsap.fromTo(
s.get(),
{ xPercent: -3, opacity: 0 },
{ xPercent: 0, opacity: 1, stagger: 0.1, delay: 0.3 }
);
}
destroy() {
this.DOM.$menuItems.each((t, e) => {
$(e).off();
});
}
}
$.fn[t] = function (e) {
return this.each(function () {
const s = { ...$(this).data("slideshow-options"), ...e };
$.data(this, "plugin_" + t) ||
$.data(this, "plugin_" + t, new i(this, s));
});
};
})(jQuery),
jQuery(document).ready(function ($) {
$("[data-lqd-slideshow]").liquidSlideshow();
}),
(function ($) {
const t = "liquidWoo";
let e = {};
class i {
constructor(i, s) {
(this._defaults = e),
(this._name = t),
(this.options = { ...e, ...s }),
(this.DOM = {}),
(this.DOM.$element = $(i)),
(this.DOM.$headerCart = $(".ld-module-cart")),
(this.DOM.$snickersBarTemp = $("#lqd-temp-snickersbar")),
(this.DOM.$snickersBar = null),
(this.snickersBarsHeight = 20),
(this.cartItems = []),
this.init();
}
init() {
this.events();
}
events() {
$(document).on("adding_to_cart", (t, e, i) => {
this.onAddingToCart.call(this, e, i);
}),
$(document).on("added_to_cart", (t, e, i, s) => {
this.onAddedToCart.call(this, e, s);
}),
$(document).on("removed_from_cart", (t, e) => {
this.onRemovedFromCart.call(this, e);
}),
$(document).on("updated_wc_div", this.onUpdatedWcDiv.bind(this)),
$(".widget_price_filter form").on(
"submit",
this.onWcanAjaxLoading.bind(this)
),
$(document).on(
"yith-wcan-ajax-loading",
this.onWcanAjaxLoading.bind(this)
),
$(document).on(
"yith-wcan-ajax-filtered ajaxComplete",
this.onWCanAjaxFiltered.bind(this)
),
$(document).on("qv_loader_stop", () => {
this.formIntputsInit.call(this);
});
}
onAddingToCart(t, e) {
this.initSnickersBar(t, e);
}
initSnickersBar(t, e) {
const i = this.cartItems.find(
(i) =>
i.id === e.product_id ||
i.id === t.attr("data-product_id") ||
i.id === t.attr("value")
);
if (i) {
const { $snickersBarEl: t, snickersBarHeight: e, isVisible: s } = i;
t.removeClass("lqd-snickersbar-action-done"),
s ||
(t
.addClass("lqd-snickersbar-in")
.removeClass("lqd-snickersbar-out"),
(i.isVisible = !0),
(this.snickersBarsHeight += e)),
this.hideSnickersBar(i);
} else this.createSnickersBar(t, e);
this.upadteSnickersBarsPos();
}
createSnickersBar(t, e) {
let { product_id: i, product_name: s } = e;
const n = this.DOM.$snickersBarTemp[0].content.cloneNode(!0),
o = $(".lqd-snickersbar", n),
a = $(".lqd-snickersbar-addding-temp", o),
l = $(".lqd-snickersbar-added-temp", o),
r = $(".lqd-snickersbar-msg", o),
d = $(".lqd-snickersbar-msg-done", o),
h = $(
''
),
c = $(
''
);
$liquidBody.hasClass("single") &&
(s || (s = $("h1[itemprop=name].entry-title").text()),
i || (i = t.attr("data-product_id") || t.attr("value"))),
r.text(a.text().replace(/\{\{itemName\}\}/, s)),
d.text(l.text().replace(/\{\{itemName\}\}/, s)),
o.attr("data-item-id", i),
r.append(c),
d.append(h),
$liquidBody.append(o);
const u = {
id: i,
name: s,
$snickersBarEl: o,
$msgEl: r,
$msgDoneEl: d,
snickersBarHeight: o.outerHeight(!0),
isVisible: !0,
timeout: null,
};
(this.snickersBarsHeight += u.snickersBarHeight),
this.cartItems.push(u);
}
onAddedToCart(t, e) {
this.updateCartAmount(t);
const i = this.cartItems.find(
(t) => t.id === e.attr("data-product_id") || t.id === e.attr("value")
);
if (i) {
const { $snickersBarEl: t } = i,
s = $(".lqd-snickersbar-ext", t);
!s.children(".added_to_cart").length &&
s.append(e.siblings(".added_to_cart").clone(!0)),
t.addClass("lqd-snickersbar-action-done"),
this.hideSnickersBar(i);
}
}
hideSnickersBar(t) {
const { $snickersBarEl: e, snickersBarHeight: i, isVisible: s } = t,
n = liquidIsElementor
? getComputedStyle(document.body).getPropertyValue(
"--lqd-snickersbar-stay-time"
)
: getComputedStyle(document.documentElement).getPropertyValue(
"--lqd-snickersbar-stay-time"
);
t.timeout
? (clearTimeout(t.timeout),
(t.timeout = null),
e.addClass("lqd-snickersbar-in").removeClass("lqd-snickersbar-out"),
(t.isVisible = !0))
: (t.timeout = setTimeout(() => {
s &&
(e
.addClass("lqd-snickersbar-out")
.removeClass("lqd-snickersbar-in"),
(t.isVisible = !1),
(this.snickersBarsHeight -= i)),
this.upadteSnickersBarsPos(),
clearTimeout(t.timeout);
}, 1e3 * parseFloat(n)));
}
upadteSnickersBarsPos() {
let t = 0;
this.cartItems.forEach((e) => {
e.isVisible && (t += e.snickersBarHeight),
e.$snickersBarEl.css(
"transform",
`translateY(${-1 * (this.snickersBarsHeight - t)}px)`
);
});
}
onRemovedFromCart(t) {
this.updateCartAmount(t), this.lazyLoadUpdate();
}
onUpdatedWcDiv() {
this.formIntputsInit();
}
updateCartAmount(t) {
if (!t) return;
const e = this.DOM.$headerCart.find(
".ld-module-trigger-txt .woocommerce-Price-amount"
),
i = $(t["span.header-cart-amount"]);
e.length && i && e.text(i.text());
}
lazyLoadUpdate() {
window.liquidLazyload && window.liquidLazyload.update();
}
formIntputsInit() {
$("form").liquidFormInputs();
}
onWCanAjaxFiltered() {
this.lazyLoadUpdate(), $(".widget").removeClass("wcan-ajax-loading");
}
onWcanAjaxLoading() {
$(".widget").addClass("wcan-ajax-loading");
}
}
$.fn[t] = function (e) {
return this.each(function () {
const s = { ...$(this).data("woo-options"), ...e };
$.data(this, "plugin_" + t) ||
$.data(this, "plugin_" + t, new i(this, s));
});
};
})(jQuery),
jQuery(document).ready(function ($) {
$(".woocommerce").length && $liquidBody.liquidWoo();
}),
(function ($) {
const t = "liquidZIndex";
let e = {
triggers: ["mouseenter", "mouseleave"],
setTo: "self",
init: 10,
to: 15,
duration: 0.6,
};
class i {
constructor(i, s) {
(this._defaults = e),
(this._name = t),
(this.options = { ...e, ...s }),
(this.element = i),
(this.$element = $(i)),
this.init();
}
init() {
this.initEvents();
}
initEvents() {
const { triggers: t } = this.options;
this.$element.on(t[0], this.addZIndex.bind(this)),
this.$element.on(t[1], this.removeZIndex.bind(this));
}
addZIndex() {
(window.currentZIndex = window.currentZIndex || 10),
(window.currentZIndex += 1),
gsap.killTweensOf(this.element),
gsap.set(this.element, { zIndex: window.currentZIndex });
}
removeZIndex() {
const { duration: t } = this.options;
gsap.to(this.element, {
zIndex: this.options.init,
delay: t,
ease: "quint.out",
duration: 0.15,
});
}
}
$.fn[t] = function (e) {
return this.each(function () {
const s = { ...$(this).data("zindex-options"), ...e };
$.data(this, "plugin_" + t) ||
$.data(this, "plugin_" + t, new i(this, s));
});
};
})(jQuery),
jQuery(document).ready(function ($) {
$("[data-lqd-zindex]").liquidZIndex();
}),
(function ($) {
const t = "liquidSectionScroll";
let e = {
scroller: ".lqd-section-scroll-sections",
itemsSelector:
":scope > .elementor-container > .elementor-column > .elementor-widget-wrap > .elementor-section, :scope > .e-container, :scope > .e-con",
};
class i {
constructor(i, s) {
(this._defaults = e),
(this._name = t),
(this.options = { ...e, ...s }),
(this.DOM = {}),
(this.DOM.element = i),
(this.DOM.$element = $(i)),
(this.DOM.scroller = this.DOM.element.querySelector(
`:scope > ${this.options.scroller}`
)),
(this.DOM.items = [
...this.DOM.element.querySelectorAll(this.options.itemsSelector),
]),
!this.DOM.items ||
this.DOM.items.length <= 1 ||
((this.DOM.dots = []),
(this.isAnimating = !1),
(this.activeItem = 0),
(this.totalItemsHeight = 0),
(this.elementRect = {}),
(this.itemsRects = []),
(this.wheelFree = !0),
(this.isScrollingDown = !1),
(this.isScrollingUp = !1),
(this.onScrollerTransitionEnd =
this.onScrollerTransitionEnd.bind(this)),
(this.onElementMouseOver = this.onElementMouseOver.bind(this)),
(this.onElementMouseOut = this.onElementMouseOut.bind(this)),
(this.onElementMouseWheel = this.onElementMouseWheel.bind(this)),
$liquidWindow.on(
"resize",
liquidDebounce(this.onWindowResize.bind(this), 250)
),
window.innerWidth < 1024 ||
this.build().then(() => {
this.appendDots(), this.events();
}));
}
async build() {
await this.createScroller();
const t = await Promise.all([
this.getElementRect(),
...this.getItemsRects(),
]),
e = window.scrollY,
i = t[0],
s = t.filter((t, e) => e > 0);
(this.elementRect = {
width: i.width,
height: i.height,
y: i.y + e,
bottom: i.bottom,
}),
s.forEach((t, e) => {
(this.itemsRects[e] = {
width: t.width,
height: t.height,
y: t.y - this.elementRect.y,
bottom: t.bottom - this.elementRect.y,
}),
(this.totalItemsHeight += t.height);
});
}
async createScroller() {
this.DOM.scroller ||
(await fastdomPromised.mutate(() => {
$(this.DOM.items).wrapAll(
``
),
(this.DOM.scroller = this.DOM.element.querySelector(
this.options.scroller
));
}));
}
getElementRect() {
return new Promise((t) => {
new IntersectionObserver(([e], i) => {
i.disconnect(), t(e.boundingClientRect);
}).observe(this.DOM.element);
});
}
getItemsRects() {
const t = [];
return (
this.DOM.items.forEach((e) => {
const i = new Promise((t) => {
new IntersectionObserver(([e], i) => {
i.disconnect(), t(e.boundingClientRect);
}).observe(e);
});
t.push(i);
}),
t
);
}
events() {
this.DOM.$element.on("wheel mousewheel", this.onElementMouseWheel),
this.DOM.scroller.addEventListener(
"transitionend",
this.onScrollerTransitionEnd
),
this.DOM.element.addEventListener(
"mouseover",
this.onElementMouseOver
),
this.DOM.element.addEventListener("mouseout", this.onElementMouseOut),
this.DOM.dots.forEach((t, e) => {
t.on("click", this.onDotsClick.bind(this, e));
});
}
onElementMouseWheel(t) {
const { deltaY: e } = t.originalEvent;
if (
(e < 0
? ((this.isScrollingUp = !0), (this.isScrollingDown = !1))
: e > 0 && ((this.isScrollingUp = !1), (this.isScrollingDown = !0)),
((0 === this.activeItem && this.isScrollingDown) ||
(this.activeItem === this.DOM.items.length - 1 &&
this.isScrollingUp)) &&
$("html, body").animate(
{
scrollTop:
this.DOM.$element.offset().top -
(window.innerHeight - this.DOM.element.offsetHeight) / 2,
},
350
),
this.isAnimating ||
(this.isScrollingUp && this.activeItem > 0
? ((this.wheelFree = !1), this.navigate("prev"))
: this.isScrollingDown &&
this.activeItem !== this.DOM.items.length - 1 &&
((this.wheelFree = !1), this.navigate("next"))),
!this.wheelFree || this.isAnimating)
)
return t.preventDefault(), !1;
}
onScrollerTransitionEnd(t) {
t.target === this.DOM.scroller &&
((this.wheelFree = !0), (this.isAnimating = !1), this.navigateDone());
}
onElementMouseOver() {
((0 === this.activeItem && this.isScrollingDown) ||
(this.activeItem === this.DOM.items.length - 1 &&
this.isScrollingUp)) &&
(this.wheelFree = !1);
}
onElementMouseOut() {
this.wheelFree = !0;
}
appendDots() {
if (this.DOM.dots.length) return;
const t = $(
''
);
this.itemsRects.forEach((e, i) => {
const s = $(
`
`
);
t.append(s), this.DOM.dots.push(s);
}),
t.appendTo(this.DOM.$element);
}
navigate(t) {
switch (
((this.isAnimating = !0),
(this.DOM.scroller.style.willChange = "transform"),
t)
) {
case "prev":
this.navigatePrev();
break;
default:
this.navigateNext();
break;
}
}
navigateDone() {
this.DOM.scroller.style.willChange = "auto";
}
navigateNext() {
this.activeItem < this.DOM.items.length - 1 && (this.activeItem += 1),
this.moveScroller(),
this.manageDotsActiveState();
}
navigatePrev() {
this.activeItem > 0 && (this.activeItem -= 1),
this.moveScroller(),
this.manageDotsActiveState();
}
moveScroller() {
this.DOM.scroller.style.transform = `translate3d(0, ${
100 * this.activeItem * -1
}%, 0)`;
}
manageDotsActiveState() {
this.DOM.dots.forEach((t) => t.removeClass("is-active")),
this.DOM.dots[this.activeItem].addClass("is-active");
}
onDotsClick(t) {
(this.activeItem = t),
this.moveScroller(),
this.manageDotsActiveState();
}
onWindowResize() {
window.innerWidth < 1024
? this.destroy()
: this.build().then(() => {
this.appendDots(), this.events();
});
}
destroy() {
this.DOM.$element.off("wheel mousewheel", this.onElementMouseWheel),
this.DOM.scroller.removeEventListener(
"transitionend",
this.onScrollerTransitionEnd
),
this.DOM.element.removeEventListener(
"mouseover",
this.onElementMouseOver
),
this.DOM.element.removeEventListener(
"mouseout",
this.onElementMouseOut
),
this.DOM.dots.forEach((t, e) => {
t.off("click");
}),
this.DOM.element.classList.remove("lqd-section-scroll-activated"),
this.DOM.items.forEach((t) => {
this.DOM.scroller.insertAdjacentElement("beforebegin", t);
}),
this.DOM.scroller.remove(),
(this.wheelFree = !0),
(this.isAnimating = !1),
(this.isScrollingDown = !1),
(this.isScrollingUp = !1),
(this.DOM.scroller = null);
}
}
$.fn[t] = function (e) {
return this.each(function () {
const s = { ...$(this).data("section-scroll-options"), ...e };
$.data(this, "plugin_" + t) ||
$.data(this, "plugin_" + t, new i(this, s));
});
};
})(jQuery),
jQuery(document).ready(function ($) {
$("[data-lqd-section-scroll=true]")
.not(".elementor-inner-section")
.liquidSectionScroll();
}),
(function ($) {
const t = null != $liquidContents.attr("data-liquid-stack"),
e = $liquidBody.attr("data-localscroll-offset"),
i = null != e && "" !== e ? parseInt(e, 10) : 0,
s = "liquidLocalScroll";
let n = {
itemsSelector: "self",
scrollSpeed: 600,
scrollBelowSection: !1,
offsetElements:
"#wpadminbar, .main-header[data-sticky-header] .lqd-head-sec-wrap:not(.lqd-hide-onstuck), body.elementor-page .main-header[data-sticky-header] > .elementor > .elementor-section-wrap > .elementor-section:not(.lqd-hide-onstuck):not(.lqd-stickybar-wrap), body.elementor-page .main-header[data-sticky-header] > .elementor > .elementor-section:not(.lqd-hide-onstuck):not(.lqd-stickybar-wrap), .lqd-custom-menu[data-pin]:not(.lqd-sticky-menu-floating)",
includeParentAsOffset: !1,
trackWindowScroll: !1,
offset: 0,
};
class o {
constructor(e, i) {
(this._defaults = n),
(this._name = s),
(this.options = { ...n, ...i }),
(this.element = e),
(this.$element = $(e)),
(this.$items =
"self" === this.options.itemsSelector
? this.$element
: $(this.options.itemsSelector, this.$element)),
(this.targetsArray = []),
(this.offset = []),
(this.targetsRects = []),
(this.windowHeight = window.innerHeight),
this.options.includeParentAsOffset &&
this.element.parentElement.classList.contains(
"lqd-sticky-menu-floating"
) &&
(this.options.includeParentAsOffset = !1),
t
? this.init()
: $liquidContents.imagesLoaded(async () => {
this.$items.each((t, e) => {
this.getTargetsArray(t, e);
}),
this.options.trackWindowScroll &&
(this.offset = await this.getOffsets()),
(this.targetsRects = await this.getTargetsRects()),
this.init();
});
}
async getTargetsRects() {
const t = [];
this.targetsArray.forEach((e) => {
const i = new Promise((t) => {
if (null == e) return t(null);
new IntersectionObserver(([e], i) => {
const { boundingClientRect: s } = e,
{ scrollY: n } = window,
o = {
y: s.y + n,
bottom: s.bottom + n,
height: s.height,
el: e.target,
};
t(o), i.disconnect();
}).observe(e);
});
t.push(i);
});
const e = undefined;
return [...(await Promise.all(t))];
}
async getOffsets() {
const {
offsetElements: t,
includeParentAsOffset: e,
offset: s,
} = this.options;
let n = i;
if (!t) return n + s;
const o = e ? $(t).add(this.$element.parent()) : $(t),
a = [];
o.each((t, e) => {
const i = new Promise((t) => {
new IntersectionObserver(([e], i) => {
i.disconnect(), t(e.boundingClientRect.height);
}).observe(e);
});
a.push(i);
});
const l = undefined;
return (
(await Promise.all(a)).forEach((t) => (n += t)), s && (n += s), n
);
}
getTargetsArray(t, e) {
if (this.options.scrollBelowSection) {
const e = liquidIsElementor
? this.$element
.parents(".elementor-section, .e-container, .e-con")
.last()
: this.$element.parents(".vc_row, .vc_section").last(),
i = liquidIsElementor
? e.nextAll(".elementor-section, .e-container, .e-con").first()
: e.nextAll(".vc_row, .vc_section").first();
return (this.targetsArray[t] = i[0]);
}
const i = undefined;
if (!e.getAttribute("href")) return (this.targetsArray[t] = null);
const { hash: s } = e;
if (!s || "" == s || !$(s).length) return (this.targetsArray[t] = null);
this.targetsArray[t] = document.querySelector(s);
}
init() {
this.$items.each((t, e) => {
this.events(t, e);
}),
this.options.trackWindowScroll &&
!t &&
(this.onScroll(),
$liquidWindow.on("scroll", this.onScroll.bind(this)));
}
events(t, e) {
$(e).on("click", { itemIndex: t }, this.onClick.bind(this)),
$(document).on("lqd-masonry-layout-init", async () => {
this.targetsRects = await this.getTargetsRects();
});
}
onClick(t) {
const {
offset: e,
scrollBelowSection: s,
scrollSpeed: n,
} = this.options;
let o = 0;
if (s) {
const t = liquidIsElementor
? this.$element
.parents(".elementor-section, .e-container, .e-con")
.last()
: this.$element.parents(".vc_row, .vc_section").last(),
e = undefined;
o = (
liquidIsElementor
? t.nextAll(".elementor-section, .e-container, .e-con").first()
: t.nextAll(".vc_row, .vc_section").first()
).offset().top;
} else {
const e = $(t.target).attr("href");
if (!e || "" === e) return;
const i = new URL(e, window.location.href).hash;
if (!i) return;
o = $(i).offset().top;
}
t.preventDefault(),
t.stopPropagation(),
$liquidHtml.removeClass("overflow-hidden"),
$("html, body").animate({ scrollTop: o - i - e }, n),
this.$element.closest(".navbar-fullscreen").collapse("hide"),
this.$element.closest(".navbar-collapse").collapse("hide"),
this.$element.closest(".ld-module-dropdown").collapse("hide"),
this.$element.closest(".mobile-navbar-collapse").collapse("hide");
}
onScroll() {
let t = 200,
e = new Date().getTime();
const i = () => {
let t = this.getScrollPos(),
e = [],
i;
this.targetsRects.forEach((i) => {
if (!i) return;
let s = [i.y, this.getVisibilityPercent(i, t)];
0 !== s[1] && e.push(s);
}),
0 === e.length
? ((e[0] = [0, 0]), (e[1] = [0, 0]), (this.fakePercent = !0))
: (this.fakePercent = !1),
1 === e.length && (e[1] = [0, 0]);
let s = e.reduce((t, e) => Math.max(t[1], e[1]));
if (isNaN(s)) {
let i = [];
e.forEach((e) => {
this.targetsRects.forEach((s) => {
if (s && s.y === e[0]) {
let e = [s.y, this.getVisibilityDistanceFromCenter(s, t)];
i.includes(e) || i.push(e);
}
});
}),
i.reduce((t, e) => {
void 0 !== t && void 0 !== e && (s = Math.min(t[1], e[1]));
}),
(e = i);
}
s !== this.lastItemPercent &&
((this.lastItemPercent = s),
e.forEach((t) => {
this.firstScroll &&
!this.fakePercent &&
((t[1] = s),
(this.firstScroll = !1),
(this.CurrentPositionTop = 0),
(this.lastItemPercent = 0)),
t[1] !== s ||
t[0] === this.CurrentPositionTop ||
this.fakePercent ||
((this.CurrentPositionTop = t[0]),
this.$items.parent().removeClass("is-active"),
this.targetsRects.forEach((e, s) => {
e &&
e.y === t[0] &&
((i = e.el),
this.$items.eq(s).parent().addClass("is-active"));
}));
}));
};
this.scrollTimer
? i()
: (e - this.lastScrollFireTime > 600 &&
(i(), (this.lastScrollFireTime = e)),
(this.scrollTimer = setTimeout(() => {
(this.scrollTimer = null),
(this.lastScrollFireTime = new Date().getTime()),
i();
}, t)));
}
checkIsInView(t, e = this.getScrollPos()) {
return (
(t.y > e[0] && t.y < e[1]) ||
(t.bottom > e[0] && t.bottom < e[1]) ||
(t.y < e[0] && t.bottom > e[1])
);
}
getScrollPos() {
let t, e;
return (t = window.scrollY || 0), (e = t + this.windowHeight), [t, e];
}
getVisibilityPercent(t, e = this.getScrollPos()) {
if (!this.checkIsInView(t, e)) return 0;
let i = e[0],
s = e[1],
n = 0;
return (
t.y >= i && t.bottom <= s && (n = t.height),
t.y < i && t.bottom <= s && (n = t.bottom - i),
t.y >= i && t.bottom > s && (n = s - t.y),
t.y < i && t.bottom > s && (n = s - i),
Math.round((n / this.windowHeight) * 100)
);
}
getVisibilityDistanceFromCenter(t, e = this.getScrollPos()) {
if (!this.checkIsInView(t, e)) return 0;
let i,
s = e[0] + this.windowHeight / 2,
n = 0;
return (
t.y < s && t.bottom < s && (n = s - t.bottom),
t.y >= s && t.bottom > s && (n = t.bottom - s),
t.y <= s && t.bottom >= s && (n = 0),
n
);
}
}
$.fn[s] = function (t) {
return this.each(function () {
const e = { ...$(this).data("localscroll-options"), ...t };
$.data(this, "plugin_" + s) ||
$.data(this, "plugin_" + s, new o(this, e));
});
};
})(jQuery),
jQuery(document).ready(function ($) {
$(window).on("elementor/frontend/init", () => {
"undefined" != typeof elementorFrontend &&
elementorFrontend.on("components:init", () => {
elementorFrontend.utils.anchors.setSettings(
"selectors.targets",
".to-the-hell"
);
});
}),
$("[data-localscroll]").liquidLocalScroll(),
$(".lqd-mobile-sec-nav .main-nav").liquidLocalScroll({
itemsSelector: "> li > a",
});
}),
(function ($) {
const t = "liquidRowBG";
let e = {};
class i {
constructor(i, s) {
(this._defaults = e),
(this._name = t),
(this.options = { ...e, ...s }),
(this.element = i),
(this.$element = $(i)),
(this.bgUrl = this.element.getAttribute("data-row-bg")),
(this.hasBgMarkup =
this.element.classList.contains("lqd-has-bg-markup")),
(this.rowBgInitPromise = new Promise((t) => {
this.$element.on("lqdrowbginit", t(this));
})),
this.build();
}
async build() {
if (
(this.hasBgMarkup
? fastdomPromised.mutate(() => {
(this.bgWrap = this.element.querySelector(".row-bg-wrap")),
(this.rowBg = this.bgWrap.querySelector(".row-bg"));
})
: (await this._createElements(), await this._addBgElement()),
liquidLazyloadEnabled)
)
return new IntersectionObserver(
([t], e) => {
t.isIntersecting && (e.disconnect(), this.initLoading());
},
{ rootMargin: "500px" }
).observe(this.element);
this.initLoading();
}
async initLoading() {
await this._addBg(),
this.element.hasAttribute("data-parallax") && !liquidIsMobile()
? this.element.addEventListener(
"lqd-parallax-initiated",
this._imagesLoaded.bind(this)
)
: this._imagesLoaded();
}
_createElements() {
return fastdomPromised.mutate(() => {
const t = [
{ is: "rowBg", classname: "row-bg", tag: "figure" },
{ classname: "row-bg-inner", tag: "div", append: ".row-bg" },
{
classname: "row-bg-wrap bg-not-loaded",
tag: "div",
append: ".row-bg-inner",
},
],
e = new DocumentFragment();
t.forEach((t) => {
const i = document.createElement(t.tag);
i.setAttribute("class", t.classname),
e.appendChild(i),
t.append && i.appendChild(e.querySelector(t.append)),
t.is && (this[t.is] = i);
}),
(this.bgWrap = e.querySelector(".row-bg-wrap"));
});
}
_addBg() {
return fastdomPromised.mutate(() => {
this.rowBg.style.backgroundImage = `url(${this.bgUrl})`;
});
}
_addBgElement() {
return fastdomPromised.mutate(() => {
let t,
e = this.$element.children(".row-bg-loader"),
i = "insertAfter";
this.$element.children(".lqd-sticky-bg-spacer").length &&
((e = this.$element.children(".lqd-sticky-bg-spacer")),
(i = "appendTo")),
this.$element.hasClass("vc_column_container") &&
(e = this.$element.find("> .vc_column-inner > .row-bg-loader")),
e.siblings(".row-bg-wrap").remove(),
e.find(".row-bg-wrap").remove(),
$(this.bgWrap)[i](e);
});
}
_imagesLoaded() {
fastdomPromised.mutate(() => {
imagesLoaded(
this.rowBg,
{ background: !0 },
this._onImagesLoaded.bind(this)
);
});
}
_onImagesLoaded() {
fastdomPromised.mutate(() => {
this.element.classList.remove("row-bg-loaded"),
this.bgWrap.classList.remove("bg-not-loaded"),
this.bgWrap.classList.add("bg-loaded"),
this.element.classList.add("row-bg-loaded"),
this._onRowBgInit();
});
}
_onRowBgInit() {
this.$element.trigger("lqdrowbginit", this.element);
}
}
$.fn[t] = function (e) {
return this.each(function () {
const s = { ...$(this).data("row-bg-options"), ...e };
$.data(this, "plugin_" + t) ||
$.data(this, "plugin_" + t, new i(this, s));
});
};
})(jQuery),
jQuery(document).ready(function ($) {
$("[data-row-bg]:not([data-slideshow-bg])").liquidRowBG();
}),
(function ($) {
const t = "liquidSlideshowBG";
let e = { effect: "fade", delay: 3e3, imageArray: [] };
class i {
constructor(i, s) {
(this._defaults = e),
(this._name = t),
(this.options = { ...e, ...s }),
(this.element = i),
(this.$element = $(i)),
(this.slideshowBgInitPromise = new Promise((t) => {
this.$element.on("lqdslideshowinit", t.bind(this, this));
})),
this.init();
}
init() {
const t = this._addMarkup();
(this.imageArray = this.options.imageArray),
(this.slideshowWrap = t.slideshowWrap),
(this.slideshowInner = t.slideshowInner),
this._addImages(),
this._initSlideShow(),
this._onImagesLoaded();
}
_addMarkup() {
const t = $(''),
e = $(''),
i = $('');
return (
t.append(e),
t.append(i),
this.$element.prepend(t),
{ slideshowWrap: t, slideshowInner: e }
);
}
_addImages() {
$.each(this.imageArray, (t, { src: e, alt: i }) => {
const s = $(
`
`
),
n = $(
``
),
o = $(''),
a = $('');
n.append(s), a.append(n), o.append(a), this.slideshowInner.append(o);
});
}
_initSlideShow() {
this.slideshowInner.children(":first-child").addClass("active"),
this.slideshowInner
.children()
.not(":first-child")
.css({ opacity: 0 });
}
_onImagesLoaded() {
imagesLoaded(this.slideshowInner.children().first().get(0), () => {
this.$element.addClass("slideshow-applied"),
this._initSlideshowAnimations(),
this._onSlideshowInit();
});
}
_getCurrentSlide() {
return this.slideshowInner.children(".active");
}
_getAllSlides() {
return this.slideshowInner.children();
}
_setActiveClassnames(t) {
$(t).addClass("active").siblings().removeClass("active");
}
_getNextSlide() {
return this._getCurrentSlide().is(":last-child")
? this.slideshowInner.children(":first-child")
: this._getCurrentSlide().next();
}
_initSlideshowAnimations() {
this[this.options.effect]();
}
_setWillChange(t) {
const e = undefined;
this._getAllSlides().css({ willChange: t.join(", ") });
}
fade() {
imagesLoaded([this._getCurrentSlide(), this._getNextSlide()], () =>
this._fadeOutCurrentSlide()
);
}
_fadeOutCurrentSlide() {
gsap.to(this._getCurrentSlide().get(0), {
startAt: { opacity: 1 },
opacity: 0,
duration: 1,
delay: parseInt(this.options.delay, 10) / 1e3,
ease: "power1.in",
onStart: () => {
this._fadeInNextSlide();
},
});
}
_fadeInNextSlide() {
const t = this._getNextSlide().get(0);
gsap.to(t, {
startAt: { opacity: 0 },
opacity: 1,
duration: 1,
ease: "power1.inOut",
onComplete: () => {
this._setActiveClassnames(t), this._fadeOutCurrentSlide();
},
});
}
slide() {
imagesLoaded([this._getCurrentSlide(), this._getNextSlide()], () =>
this._slideOutCurrentSlide()
);
}
_slideOutCurrentSlide() {
const t = this._getCurrentSlide().get(0),
e = $(t).children().get(0),
i = $(e).children().get(0);
gsap
.timeline({ delay: parseInt(this.options.delay, 10) / 1e3 })
.to(
t,
{
startAt: { x: "0%" },
x: "-100%",
duration: 1,
ease: "power4.inOut",
},
0
)
.to(
e,
{
startAt: { x: "0%" },
x: "100%",
duration: 1,
ease: "power4.inOut",
},
0
)
.to(
i,
{
startAt: { scale: 1 },
scale: 1.2,
duration: 1,
ease: "power3.inOut",
onStart: () => {
this._slideInNextSlide();
},
},
0
);
}
_slideInNextSlide() {
const t = this._getNextSlide(),
e = t.get(0),
i = t.children().get(0),
s = $(i).children().get(0);
gsap
.timeline({
onComplete: () => {
this._slideOutCurrentSlide();
},
})
.to(
e,
{
startAt: { x: "100%", opacity: 1 },
x: "0%",
duration: 0.85,
ease: "power4.inOut",
},
0
)
.to(
i,
{
startAt: { x: "-100%", opacity: 1 },
x: "0%",
duration: 0.85,
ease: "power4.inOut",
},
0
)
.to(
s,
{
startAt: { scale: 1.2 },
scale: 1,
duration: 1.65,
ease: "power3.out",
onStart: () => {
this._setActiveClassnames(e);
},
},
0
);
}
scale() {
imagesLoaded([this._getCurrentSlide(), this._getNextSlide()], () =>
this._scaleUpCurrentSlide()
);
}
_scaleUpCurrentSlide() {
gsap.to(this._getCurrentSlide().get(0), {
startAt: { scale: 1, opacity: 1, zIndex: 0 },
scale: 1.2,
opacity: 0,
duration: 0.9,
ease: "power4.inOut",
delay: parseInt(this.options.delay, 10) / 1e3,
onStart: () => {
this._scaleDownNextSlide();
},
});
}
_scaleDownNextSlide() {
const t = this._getNextSlide().get(0);
gsap.to(t, {
startAt: { scale: 1.2, opacity: 0, zIndex: 1 },
scale: 1,
opacity: 1,
duration: 0.9,
ease: "power4.inOut",
onComplete: () => {
this._setActiveClassnames(t), this._scaleUpCurrentSlide();
},
});
}
_onSlideshowInit() {
this.$element.trigger("lqdslideshowinit", this.element);
}
}
$.fn[t] = function (e) {
return this.each(function () {
const s = { ...$(this).data("slideshow-options"), ...e };
$.data(this, "plugin_" + t) ||
$.data(this, "plugin_" + t, new i(this, s));
});
};
})(jQuery),
jQuery(document).ready(function ($) {
$("[data-slideshow-bg]").liquidSlideshowBG();
}),
(function ($) {
const t = "liquidSplitText";
let e = { type: "words", forceApply: !1 };
class i {
constructor(i, s) {
(this._defaults = e),
(this._name = t),
(this.options = { ...e, ...s }),
(this.splittedTextList = { lines: [], words: [], chars: [] }),
(this.splitTextInstance = null),
(this.isRTL = "rtl" === $("html").attr("dir")),
(this.element = i),
(this.$element = $(i)),
(this.prevWindowWidth = window.innerWidth),
(this.fontInfo = {}),
(this.splitDonePormise = new Promise((t) => {
this.$element.on("lqdsplittext", t.bind(this, this));
})),
this.options.forceApply
? this.init()
: new IntersectionObserver(
([t], e) => {
t.isIntersecting && (e.disconnect(), this.init());
},
{ rootMargin: "20%" }
).observe(this.element);
}
async init() {
await this._measure(), await this._onFontsLoad(), this._windowResize();
}
_measure() {
return fastdomPromised.measure(() => {
const t = getComputedStyle(this.element);
(this.fontInfo.elementFontFamily = t.fontFamily
.replace(/"/g, "")
.replace(/'/g, "")
.split(",")[0]),
(this.fontInfo.elementFontWeight = t.fontWeight),
(this.fontInfo.elementFontStyle = t.fontStyle),
(this.fontInfo.fontFamilySlug = window.liquidSlugify(
this.fontInfo.elementFontFamily
));
});
}
_onFontsLoad() {
return fastdomPromised.measure(() => {
if (
window.liquidCheckedFonts.find(
(t) => t === this.fontInfo.fontFamilySlug
)
)
return this._doSplit();
const t = undefined;
return new FontFaceObserver(this.fontInfo.elementFontFamily, {
weight: this.fontInfo.elementFontWeight,
style: this.fontInfo.elementFontStyle,
})
.load()
.finally(() => {
window.liquidCheckedFonts.push(this.fontInfo.fontFamilySlug),
this._doSplit();
});
});
}
getSplitTypeArray() {
const { type: t } = this.options,
e = t.split(",").map((t) => t.replace(" ", ""));
return this.isRTL ? e.filter((t) => "chars" !== t) : e;
}
async _doSplit() {
await this._split(),
await this._unitsOp(),
await this._onSplittingDone();
}
_split() {
const t = this.getSplitTypeArray(),
e = undefined,
i =
this.element.classList.contains("ld-fh-txt") &&
null != this.element.querySelector(".ld-fh-txt-inner")
? this.element.querySelector(".ld-fh-txt-inner")
: this.element;
let s;
return fastdomPromised.mutate(() => {
(s = new SplitText(i, {
type: t,
charsClass: "split-unit lqd-chars",
linesClass: "split-unit lqd-lines",
wordsClass: "split-unit lqd-words",
})),
t.forEach((t) => {
s[t].forEach((e) => {
this.splittedTextList[t].push(e);
});
}),
this.element.classList.add("split-text-applied"),
(this.splitTextInstance = s);
});
}
_unitsOp() {
return fastdomPromised.mutate(() => {
for (const [t, e] of Object.entries(this.splittedTextList))
e &&
e.length > 0 &&
e.forEach((i, s) => {
i.style.setProperty(`--${t}-index`, s),
i.style.setProperty(`--${t}-last-index`, e.length - 1 - s),
$(i).wrapInner('');
});
});
}
_onSplittingDone() {
return fastdomPromised.mutate(() => {
this.element.dispatchEvent(new CustomEvent("lqdsplittext"));
});
}
_windowResize() {
$(window).on("resize.lqdSplitText", this._onWindowResize.bind(this));
}
_onWindowResize() {
this.prevWindowWidth !== window.innerWidth &&
(this.splitTextInstance &&
(this.splitTextInstance.revert(),
this.element.classList.remove("split-text-applied")),
this._onAfterWindowResize(),
(this.prevWindowWidth = window.innerWidth));
}
_onAfterWindowResize() {
this._doSplit(),
this._onSplittingDone(),
this.$element.find(".split-unit").addClass("lqd-unit-animation-done");
}
destroy() {
$(window).off("resize.lqdSplitText");
}
}
$.fn[t] = function (e) {
return this.each(function () {
const s = { ...$(this).data("split-options"), ...e };
$.data(this, "plugin_" + t) ||
$.data(this, "plugin_" + t, new i(this, s));
});
};
})(jQuery),
jQuery(document).ready(function ($) {
const t = undefined;
$("[data-split-text]")
.filter((t, e) => {
const i = $(e),
s = e.hasAttribute("data-custom-animations"),
n = i.closest("[data-custom-animations]").length,
o = i.closest(".accordion-content").length,
a = i.closest(".lqd-tabs-pane").length,
l = i.closest("[data-lqd-webgl-slideshow]").length;
return !(s || n || o || a || l);
})
.liquidSplitText();
}),
(function ($) {
const t = "liquidCustomAnimations";
let e = {
delay: 160,
startDelay: 0,
direction: "forward",
duration: 1600,
ease: "power4.out",
animationTarget: "this",
addPerspective: !0,
perspectiveVal: 1400,
initValues: {
x: 0,
y: 0,
z: 0,
rotationX: 0,
rotationY: 0,
rotationZ: 0,
scaleX: 1,
scaleY: 1,
skewX: 0,
skewY: 0,
opacity: 1,
transformOriginX: 50,
transformOriginY: 50,
transformOriginZ: "0px",
},
animations: {
transformOriginX: 50,
transformOriginY: 50,
transformOriginZ: "0px",
},
randomizeInitValues: !1,
randomizeTargets: !1,
clearProps: "transform,opacity,transform-origin",
};
class i {
constructor(i, s) {
(this._defaults = e),
(this._name = t),
(this.options = { ...e, ...s }),
(this.options.duration = this.options.duration / 1e3),
(this.options.offDuration = this.options.offDuration / 1e3),
(this.options.offDelay = this.options.offDelay / 1e3),
(this.options.delay = this.options.delay / 1e3),
(this.options.startDelay = this.options.startDelay / 1e3),
(this.element = i),
(this.$element = $(i)),
(this.animationTargets = []),
(this.animationsTimeline = null),
(this.animationsStarted = !1),
(this.needPerspective =
this.options.addPerspective && this._needPerspective()),
(this.animationsInitiatedPromise = new Promise((t) => {
this.$element.on("lqdanimationsinitiated", t.bind(this, this));
})),
(this.animationsDonePromise = new Promise((t) => {
this.$element.on("lqdanimationsdone", t.bind(this, this));
})),
new IntersectionObserver(
([t], e) => {
t.isIntersecting && (e.disconnect(), this._build());
},
{ rootMargin: "8%" }
).observe(this.element);
}
_build() {
const t = this.$element.closest("[data-row-bg]"),
e = this.$element.closest("[data-slideshow-bg]"),
i = [];
if (!this.element.classList.contains("vc_row")) {
const t = this.$element.find("[data-split-text]");
this.element.hasAttribute("data-split-text") && t.push(this.element),
t.length &&
t.each((t, e) => {
const s = $(e);
s.liquidSplitText({ forceApply: !0 });
const n = s.data("plugin_liquidSplitText");
n && i.push(n.splitDonePormise);
});
}
if (t.length) {
const e = t.data("plugin_liquidRowBG");
e && i.push(e.rowBgInitPromise);
}
if (e.length) {
const t = e.data("plugin_liquidSlideshowBG");
t && i.push(t.slideshowBgInitPromise);
}
i.length > 0
? Promise.all(i).then(() => {
this._init();
})
: this._init();
}
_init() {
this._getAnimationTargets(),
this._createTimeline(),
this._initValues(),
this._runAnimations(),
this._initPlugins();
}
_getAnimationTargets() {
const { animationTarget: t } = this.options;
let e = null;
switch (t) {
case "this":
e = this.element;
break;
case "all-childs":
e = this._getChildElments();
break;
default:
e = this.element.querySelectorAll(t);
break;
}
this.animationTargets = Array.from(e);
}
_getChildElments() {
let t = this.$element.children();
return this._getInnerChildElements(t);
}
_getInnerChildElements(t) {
const e = [];
let i = $(t).map((t, e) => {
const i = $(e);
return i.hasClass("vc_inner") || i.hasClass("vc_vc_row_inner")
? i.find(".wpb_wrapper").children().get()
: i.hasClass("row")
? i.find(".lqd-column").children().get()
: i.hasClass("ld-slideelement-visible") ||
i.hasClass("ld-slideelement-hidden")
? i.children().children().get()
: i.hasClass("elementor-container")
? i.children(".elementor-column").get()
: i.hasClass("elementor-widget-wrap")
? i.children(".elementor-element").get()
: i.not("style, .lqd-exclude-parent-ca").get();
});
return (
$.each(i, (t, i) => {
const s = $(i);
return i.hasAttribute("data-custom-animations")
? e.push(i)
: i.querySelector("[data-custom-animations]")
? i.querySelectorAll("[data-custom-animations]").forEach((t) => {
e.push(t);
})
: "UL" === i.tagName
? $.each(s.children(), (t, i) => {
e.push(i);
})
: i.classList.contains("lqd-custom-menu")
? $.each(s.find("> ul > li"), (t, i) => {
e.push(i);
})
: i.classList.contains("accordion")
? $.each(s.children(), (t, i) => {
e.push(i);
})
: i.classList.contains("vc_inner") ||
i.classList.contains("vc_vc_row_inner")
? $.each(s.find(".wpb_wrapper"), (t, i) => {
e.push(i);
})
: i.classList.contains("row")
? $.each(s.find(".lqd-column"), (t, i) => {
e.push(i);
})
: i.classList.contains("lqd-pb-container")
? $.each(s.find(".lqd-pb"), (t, i) => {
e.push(i);
})
: s.find("[data-split-text]").length ||
i.hasAttribute("data-split-text")
? i.classList.contains("btn") ||
i.classList.contains("vc_ld_button")
? e.push(s[0])
: $.each(s.find(".split-inner"), (t, i) => {
const s = $(i).find(".split-inner");
s.length ? e.push(s[0]) : e.push(i);
})
: i.classList.contains("vc_empty_space") ||
i.classList.contains("ld-empty-space") ||
i.classList.contains("vc_ld_spacer") ||
i.classList.contains("ld-particles-container") ||
i.classList.contains("elementor-widget-spacer") ||
i.hasAttribute("data-split-text") ||
"STYLE" === i.tagName
? void 0
: e.push(s[0]);
}),
e
);
}
_needPerspective() {
const t = this.options.initValues,
e = ["z", "rotationX", "rotationY"];
let i = !1;
for (let s in t)
for (let t = 0; t <= e.length - 1; t++) {
const n = undefined;
if (s === e[t]) {
i = !0;
break;
}
}
return i;
}
_generateRandomValues(t) {
const e = { ...t };
for (const i in t)
i.search("transformOrigin") < 0 &&
i.search("opacity") < 0 &&
(e[i] = () => gsap.utils.random(0, t[i]));
return e;
}
_createTimeline() {
const { ease: t, duration: e, clearProps: i } = this.options;
this.animationsTimeline = gsap.timeline({
defaults: { duration: e, ease: t, clearProps: i },
onComplete: this._onTimelineAnimationComplete.bind(this),
});
}
_initValues() {
const { options: t } = this,
{ randomizeInitValues: e, initValues: i } = t,
s = $(this.animationTargets),
n = e ? this._generateRandomValues(i) : i;
s
.css({ transition: "none", transitionDelay: 0 })
.addClass("will-change"),
this.needPerspective &&
(s.parent().parent().addClass("perspective"),
s.each((t, e) => {
const i = $(e);
i.hasClass("lqd-imggrp-single") ||
i.parent().addClass("transform-style-3d");
})),
gsap.set(this.animationTargets, { ...n }),
this.element.classList.add("ca-initvalues-applied"),
this.$element.trigger("lqdanimationsinitiated", this);
}
async _runAnimations() {
const {
delay: t,
startDelay: e,
animations: i,
direction: s,
} = this.options,
n = { from: s, each: t };
"forward" === s
? (n.from = "start")
: "backward" === s && (n.from = "end"),
this.animationsTimeline.to(this.animationTargets, {
...i,
stagger: n,
delay: e,
onStart: () => {
this.animationsStarted = !0;
},
onComplete: this._onUnitsAnimationsComplete,
onCompleteParams: [this.animationTargets],
});
}
_onTimelineAnimationComplete() {
this.needPerspective &&
($(this.animationTargets)
.parent()
.parent()
.removeClass("perspective"),
$(this.animationTargets).parent().removeClass("transform-style-3d")),
this.$element.addClass("lqd-animations-done"),
this.$element.trigger("lqdanimationsdone", this);
}
_onUnitsAnimationsComplete(t) {
t.forEach((t) => {
(t.style.transition = ""),
(t.style.transitionDelay = ""),
t.classList.remove("will-change"),
t.classList.contains("split-inner")
? t.parentElement.classList.add("lqd-unit-animation-done")
: t.classList.add("lqd-unit-animation-done");
});
}
_initPlugins() {
this.$element
.find("[data-slideelement-onhover]")
.filter((t, e) => e.clientHeight > 0)
.liquidSlideElement(),
this.element.hasAttribute("data-slideelement-onhover") &&
this.$element.liquidSlideElement();
}
destroy() {
this.element.classList.remove(
"ca-initvalues-applied",
"lqd-animations-done",
"transform-style-3d"
),
this.animationTargets.forEach((t) => {
t.vars
? this.animationsTimeline.killTweensOf(t)
: (t.classList.remove("will-change"),
t.classList.contains("split-inner")
? t.parentElement.classList.remove("lqd-unit-animation-done")
: t.classList.remove("lqd-unit-animation-done"),
gsap.set(t, { clearProps: "all" }));
}),
this.animationsTimeline &&
(this.animationsTimeline.kill(), this.animationsTimeline.clear()),
$.data(this.element, "plugin_" + t, null);
}
}
$.fn[t] = function (e) {
return this.each(function () {
function s(t) {
if (!t) return;
const {
transformOriginX: e,
transformOriginY: i,
transformOriginZ: s,
} = t;
return (
e && "number" == typeof e && (t.transformOriginX = e + "%"),
i && "number" == typeof i && (t.transformOriginY = i + "%"),
s && "number" == typeof s && (t.transformOriginZ = s + "%"),
e &&
i &&
s &&
((t.transformOrigin = `${t.transformOriginX} ${t.transformOriginY} ${t.transformOriginZ}`),
delete t.transformOriginX,
delete t.transformOriginY,
delete t.transformOriginZ),
t
);
}
const n = $(this),
o = `plugin_${t}`,
a = { ...n.data("ca-options"), ...e };
let { initValues: l, animations: r } = a;
(l = s(l)),
(r = s(r)),
$.data(this, o) || $.data(this, `plugin_${t}`, new i(this, a));
});
};
})(jQuery),
jQuery(document).ready(function ($) {
const t = $("[data-custom-animations]")
.filter((t, e) => {
const i = $(e),
s =
$liquidContents.length &&
$liquidContents[0].getAttribute("data-stack-options"),
n = s && !0 === JSON.parse(s).disableOnMobile;
return (
(!s ||
(s &&
n &&
(liquidIsMobile() ||
liquidWindowWidth() <= liquidMobileNavBreakpoint()))) &&
!i.hasClass("carousel-items")
);
})
.get()
.reverse();
if (!(t.length < 1))
return liquidIsMobile() &&
document.body.hasAttribute("data-disable-animations-onmobile")
? $(t).addClass("ca-initvalues-applied")
: void ($liquidBody.hasClass("lqd-preloader-activated") &&
$(".lqd-preloader-wrap").length
? document.addEventListener("lqd-preloader-anim-done", () => {
$(t).liquidCustomAnimations();
})
: $(t).liquidCustomAnimations());
}),
(function ($) {
const t = "liquidTextRotator";
let e = {
delay: 2,
duration: 0.8,
easing: "power4.inOut",
animationType: "slide",
marquee: !1,
};
class i {
constructor(i, s) {
(this.element = i),
(this.$element = $(i)),
(this.options = $.extend({}, e, s)),
(this._defaults = e),
(this._name = t),
(this.activeKeywordIndex = 0),
(this.nextKeywordIndex = 1),
(this.isFirstItterate = !0),
(this.basicAnimationTimeline = null),
(this.basicAnimationsResetTimeout = null),
(this.$keywordsContainer = null),
(this.keywordsContainer = null),
(this.$keywords = null),
(this.keywordsLength = 0),
(this.keywordsDimensions = []),
(this.slideInTimeout = null),
(this.slideOutTimeout = null),
(this.prevWindowWidth = window.innerWidth),
this.build();
}
async init() {
await this._measure(), await this._onFontsLoad();
}
_measure() {
return fastdomPromised.measure(() => {
const t = getComputedStyle(this.element);
(this.fontInfo.elementFontFamily = t.fontFamily
.replace(/"/g, "")
.replace(/'/g, "")
.split(",")[0]),
(this.fontInfo.elementFontWeight = t.fontWeight),
(this.fontInfo.elementFontStyle = t.fontStyle),
(this.fontInfo.fontFamilySlug = window.liquidSlugify(
this.fontInfo.elementFontFamily
));
});
}
_onFontsLoad() {
return fastdomPromised.measure(() => {
if (
window.liquidCheckedFonts.find(
(t) => t === this.fontInfo.fontFamilySlug
)
)
return this.build();
const t = undefined;
new FontFaceObserver(this.fontInfo.elementFontFamily, {
weight: this.fontInfo.elementFontWeight,
style: this.fontInfo.elementFontStyle,
})
.load()
.finally(() => {
window.liquidCheckedFonts.push(this.fontInfo.fontFamilySlug),
this.build();
});
});
}
build() {
const t = [],
e = this.$element.closest("[data-custom-animations]"),
i = this.$element.children("[data-custom-animations]"),
s = this.$element.children("[data-split-text]");
if (this.element.hasAttribute("data-split-text")) {
const e = this.$element.data("plugin_liquidSplitText");
e && t.push(e.splitDonePormise);
}
if (s.length) {
const e = s.data("plugin_liquidSplitText");
e && t.push(e.splitDonePormise);
}
if (e.length) {
const i = e.data("plugin_liquidCustomAnimations");
i && t.push(i.animationsDonePromise);
}
if (i.length) {
const e = i.data("plugin_liquidCustomAnimations");
e && t.push(e.animationsDonePromise);
}
if (this.element.hasAttribute("data-custom-animations")) {
const e = this.$element.data("plugin_liquidCustomAnimations");
e && t.push(e.animationsDonePromise);
}
t.length
? Promise.all(t).finally(() => {
this.init();
})
: this.init();
}
async init() {
if (
((this._handleWindowResize = liquidDebounce(
this._handleWindowResize.bind(this),
350
)),
(this.$keywordsContainer = $(".txt-rotate-keywords", this.element)),
!this.$keywordsContainer.length)
)
return console.warn("Could not find keywords container");
(this.keywordsContainer = this.$keywordsContainer[0]),
(this.keywordsInner = this.keywordsContainer.querySelector(
".txt-rotate-keywords-inner"
)),
(this.$keywords = $(".txt-rotate-keyword", this.$keywordsContainer)),
this.$keywords
.attr("class", "txt-rotate-keyword")
.eq(0)
.addClass("active"),
(this.keywordsLength = this.$keywords.length - 1),
(this.keywordsDimensions = await this.getKeywordsDimensions()),
this.setContainerWidth(0),
this.initAnimations(),
this._windowResize(),
this.$element.addClass("text-rotator-activated");
}
async getKeywordsDimensions() {
const t = [];
this.$keywords.each((e, i) => {
const s = new Promise((t) => {
new IntersectionObserver(([e], i) => {
i.disconnect();
const {
boundingClientRect: { width: s, height: n },
} = e;
t({ width: s, height: n });
}).observe(i);
});
t.push(s);
});
const e = undefined;
return await Promise.all(t);
}
updateActiveIndex() {
this.activeKeywordIndex =
this.activeKeywordIndex + 1 > this.keywordsLength
? 0
: this.activeKeywordIndex + 1;
}
updateNextIndex() {
this.nextKeywordIndex =
this.nextKeywordIndex + 1 > this.keywordsLength
? 0
: this.nextKeywordIndex + 1;
}
setActiveClass() {
this.$keywords.removeClass("active"),
this.$keywords.eq(this.activeKeywordIndex).addClass("active");
}
setNextClass() {
this.$keywords.removeClass("is-next"),
this.$keywords.eq(this.nextKeywordIndex).addClass("is-next");
}
setContainerWidth(t) {
const e = this.$keywordsContainer[0];
if ("list" === this.options.animationType)
return (e.style.width = `${Math.max(
...this.keywordsDimensions.map((t) => parseInt(t.width, 10))
)}px`);
e.style.width = `${this.keywordsDimensions[t].width}px`;
}
slideInNextKeyword() {
const t = this.$keywords.eq(this.nextKeywordIndex),
e = this.isFirstItterate
? this.options.delay / 2
: this.options.delay;
this.slideInTimeout = setTimeout(() => {
this.setContainerWidth(this.nextKeywordIndex),
t
.removeClass("lqd-keyword-slide-out")
.addClass("lqd-keyword-slide-in"),
(this.isFirstItterate = !1),
this.updateNextIndex(),
this.setNextClass(),
this.slideOutAciveKeyword(),
clearTimeout(this.slideInTimeout);
}, 1e3 * e);
}
slideOutAciveKeyword() {
const t = this.$keywords.eq(this.activeKeywordIndex),
e = this.isFirstItterate
? this.options.delay / 2
: this.options.delay;
t.removeClass("lqd-keyword-slide-in").addClass("lqd-keyword-slide-out"),
this.updateActiveIndex(),
this.setActiveClass(),
(this.slideOutTimeout = setTimeout(() => {
this.slideInNextKeyword(), clearTimeout(this.slideOutTimeout);
}, 1e3 * e));
}
buildBaiscAnimation() {
this.$element.addClass("txt-rotator-basic"),
(this.basicAnimationTimeline = gsap.timeline({
easing: "power2.inOut",
onStart: () => {
(this.isFirstItterate = !1),
this.basicAnimationsResetTimeout &&
clearTimeout(this.basicAnimationsResetTimeout),
this.setContainerWidth(this.nextKeywordIndex);
},
onComplete: () => {
this.updateActiveIndex(),
this.updateNextIndex(),
this.setActiveClass(),
this.setNextClass(),
(this.basicAnimationsResetTimeout = setTimeout(
() =>
this.basicAnimationTimeline &&
this.basicAnimationTimeline.restart(),
1e3 * this.options.delay
));
},
})),
this.$keywords.each((t, e) => {
this.basicAnimationTimeline.to(e, {
duration: 0.125,
opacity: 1,
onStart: () => {
const t = $(e);
this.$keywords.not(t).removeClass("active"),
t.addClass("active");
},
});
});
}
buildListAnimation() {
function t() {
a && a.restart(!0),
(h = l === o),
h
? m(`keyword-${o}`, "keyword-1")
: m(`keyword-${l}`, `keyword-${r}`),
u(),
(l = l >= o ? 1 : l + 1),
(r = l === o ? 1 : l + 1);
}
const e = 2,
i = parseInt(
getComputedStyle(this.keywordsContainer).getPropertyValue(
"--visible-words"
),
10
),
s = this.keywordsDimensions
.map((t) => t.height)
.reduce((t, e) => t + e, 0),
n = this.keywordsDimensions
.slice(0, i)
.map((t) => t.height)
.reduce((t, e) => t + e, 0),
o = this.$keywords.length,
a = gsap.delayedCall(this.options.delay, t.bind(this));
let l = 1,
r = l + 1,
d = 0,
h = !1;
const c = gsap.timeline({
defaults: { repeat: -1, duration: 2, ease: "none" },
paused: !0,
});
(this.keywordsInnerClone = this.keywordsInner.cloneNode(!0)),
this.keywordsInnerClone.classList.add(
"txt-rotate-keywords-inner-clone",
"lqd-overlay",
"flex-column"
),
this.keywordsContainer.append(this.keywordsInnerClone),
(this.keywordsContainer.style.height = `${n}px`),
(this.keywordsContainer.style.overflow = "hidden"),
this.$keywords
.add($(this.keywordsInnerClone).children())
.each((t, e) => {
t %= o;
const i = this.keywordsDimensions[t].height,
n = gsap.utils.wrap(-1 * i, s - i);
gsap.set(e, { position: "absolute", y: d }),
c
.to(
e,
{ y: `-=${s}`, modifiers: { y: gsap.utils.unitize(n) } },
0
)
.add(`keyword-${t + 1}`, gsap.utils.mapRange(0, o, 0, 2)(t)),
(d += i);
});
const u = () => {
gsap.set([this.keywordsInner, this.keywordsInnerClone], {
"--current-keyword-height":
(this.keywordsDimensions[l - 1].height / 2) * -1 + "px",
});
};
u();
const m = (t, e) =>
h
? new gsap.timeline()
.add(
c.tweenFromTo(t, 2, {
duration: this.options.duration,
ease: this.options.easing,
})
)
.add(
c.tweenFromTo(0, e, {
duration: this.options.duration,
ease: this.options.easing,
immediateRender: !1,
})
)
: c.tweenFromTo(t, e, {
duration: this.options.duration,
ease: this.options.easing,
});
t();
}
initAnimations() {
const { animationType: t } = this.options;
switch (t) {
case "basic":
this.buildBaiscAnimation();
break;
case "list":
this.buildListAnimation();
break;
default:
this.slideInNextKeyword();
}
}
_windowResize() {
$(window).on(
"resize.lqdTextRotator",
this._handleWindowResize.bind(this)
);
}
_handleWindowResize() {
this.prevWindowWidth !== window.innerWidth &&
(gsap.killTweensOf(this.$keywordsContainer[0]),
this.keywordsInner && gsap.killTweensOf(this.keywordsInner),
this.$keywords.each((t, e) => {
gsap.killTweensOf(e);
}),
this.keywordsInnerClone &&
(gsap.killTweensOf(this.keywordsInnerClone),
$(this.keywordsInnerClone)
.children()
.each((t, e) => {
gsap.killTweensOf(e);
})),
this.destroy(),
this._onWindowResize(),
(this.prevWindowWidth = window.innerWidth));
}
_onWindowResize() {
(this.activeKeywordIndex = 0),
(this.nextKeywordIndex = 1),
(this.isFirstItterate = !0),
(this.basicAnimationTimeline = null),
(this.basicAnimationsResetTimeout = null),
this.slideInTimeout && clearTimeout(this.slideInTimeout),
this.slideOutTimeout && clearTimeout(this.slideOutTimeout),
this.build();
}
destroy() {
$(window).off("resize.lqdTextRotator"),
this.keywordsInnerClone && this.keywordsInnerClone.remove();
}
}
$.fn[t] = function (e) {
return this.each(function () {
const s = { ...$(this).data("text-rotator-options"), ...e };
$.data(this, "plugin_" + t) ||
$.data(this, "plugin_" + t, new i(this, s));
});
};
})(jQuery),
jQuery(document).ready(function ($) {
$("[data-text-rotator]").liquidTextRotator();
}),
(function ($) {
const t = "liquidParallax";
let e = {
start: "top bottom",
end: "bottom top",
ease: "linear",
scrub: 0.55,
parallaxBG: !1,
scaleBG: !0,
overflowHidden: !1,
startTrigger: null,
parallaxTargets: null,
skipWillChange: !1,
},
i = {},
s = {};
class n {
constructor(n, o, a, l) {
(this._defaults = e),
(this._name = t),
(this.options = { ...e, ...o }),
(this.element = n),
(this.$element = $(n)),
(this.parallaxFromOptions = { ...i, ...a }),
(this.parallaxToOptions = { ...s, ...l }),
(this.ST = null),
(this.parallaxTimeline = null),
(this.parallaxElements = []),
(this.isRowBg = this.element.getAttribute("data-row-bg")),
(this.rect = {}),
(this.bgImg = null),
(this.sentinel = null),
(this.parallaxFigure = null),
(this.parallaxMarkupExists = this.element.classList.contains(
"lqd-parallax-markup-exists"
));
const r = [];
if (
this.$element.hasClass("lqd-css-sticky") &&
this.$element.data("plugin_liquidStickyRow")
) {
const t = undefined,
e = this.$element.data(
"plugin_liquidStickyRow"
).rowStickyInitPromise;
e && r.push(e);
}
if (this.element.hasAttribute("data-split-text")) {
this.$element.liquidSplitText({ forceApply: !0 });
const t = this.$element.data("plugin_liquidSplitText");
t && r.push(t.splitDonePormise);
}
r.length > 0
? Promise.all(r).then(this.build.bind(this))
: this.build();
}
async build() {
await this.handleSentinel(),
await this.buildParallaxMarkups(),
(this.parallaxElements = this.getParallaxElements()),
new IntersectionObserver(
([t], e) => {
t.isIntersecting && (e.disconnect(), this.init());
},
{ rootMargin: "50%" }
).observe(this.element);
}
getParallaxElements() {
return this.options.parallaxTargets
? [...this.element.querySelectorAll(this.options.parallaxTargets)]
: this.element.classList.contains("vc_column_container")
? [this.element.querySelector(".vc_column-inner")]
: this.options.parallaxBG
? [this.parallaxFigure]
: [this.element];
}
measure() {
return new Promise((t) => {
new IntersectionObserver(([e], i) => {
i.disconnect();
const { boundingClientRect: s } = e;
(this.rect.width = s.width),
(this.rect.height = s.height),
(this.rect.top = s.top + window.scrollY),
(this.rect.left = s.left),
t();
}).observe(this.element);
});
}
getBgInfo() {
return fastdomPromised.measure(() => {
if (!this.bgImg) {
if (this.isRowBg) return (this.bgImg = `url(${this.isRowBg})`);
const t = getComputedStyle(this.element);
this.bgImg = t.backgroundImage;
}
});
}
async handleSentinel() {
(this.onWindowResize = liquidDebounce(this.onWindowResize, 500)),
await this.createSentinel(),
this.handleResize();
}
createSentinel() {
return fastdomPromised.mutate(() => {
(this.sentinel = document.createElement("div")),
this.sentinel.setAttribute(
"class",
"lqd-parallax-sentinel pointer-events-none pos-abs z-index--1 invisible absolute -z-1"
),
document.body.appendChild(this.sentinel);
});
}
positionSentinel() {
return fastdomPromised.mutate(() => {
(this.sentinel.style.width = `${this.rect.width}px`),
(this.sentinel.style.height = `${this.rect.height}px`),
(this.sentinel.style.top = `${this.rect.top}px`),
(this.sentinel.style.left = `${this.rect.left}px`);
});
}
buildParallaxMarkups() {
return new Promise(async (t) => {
this.options.parallaxBG
? (await this.getBgInfo(),
this.initParallaxBG(),
this.element.classList.add("lqd-parallax-bg"),
t())
: (this.initParallax(), t());
});
}
initParallax() {
const { overflowHidden: t } = this.options;
if (
!this.element.classList.contains("vc_column_container") &&
!this.element.classList.contains("ld-fancy-heading") &&
(t || this.options.forceWrap)
) {
const e = t ? "overflow-hidden" : "",
i = document.createElement("div");
i.setAttribute("class", `ld-parallax-wrap ${e}`),
this.element.parentNode.insertBefore(i, this.element),
i.appendChild(this.element);
}
}
initParallaxBG() {
const t = this.element.hasAttribute("data-slideshow-bg"),
e = this.element.querySelector(":scope > .lqd-vbg-wrap"),
i = this.$element.data("plugin_liquidSlideshowBG"),
s = this.$element.data("plugin_liquidRowBG");
return (
((!t && !this.isRowBg) || (this.isRowBg && !s) || (t && !i)) &&
!e &&
(this.parallaxMarkupExists || this.createParallaxBgMarkup(),
(this.parallaxFigure = this.element.querySelector(
".lqd-parallax-figure"
)),
this.updateParallaxBgOptions(),
this.setParallaxBgImg()),
t
? i.slideshowBgInitPromise.then((t) => {
const e = t.slideshowInner;
return this.updateParallaxBgOptions(), e;
})
: this.isRowBg
? s.rowBgInitPromise.then((t) => {
const { rowBg: e } = t;
return this.updateParallaxBgOptions(), e;
})
: e
? (this.updateParallaxBgOptions(), e.children)
: void 0
);
}
createParallaxBgMarkup() {
const t = document.createElement("div");
t.setAttribute(
"class",
"lqd-parallax-container lqd-overlay overflow-hidden"
),
t.setAttribute(
"style",
"border-radius: inherit; background-size: inherit; background-attachment: inherit; background-repeat: inherit; background-position: inherit;"
);
const e = document.createElement("figure");
e.setAttribute("class", "lqd-parallax-figure lqd-overlay"),
e.setAttribute(
"style",
"border-radius: inherit; background-size: inherit; background-attachment: inherit; background-repeat: inherit; background-position: inherit;"
),
t.appendChild(e),
this.$element.prepend(t);
}
setParallaxBgImg() {
this.bgImg &&
"none" !== this.bgImg &&
this.options.parallaxBG &&
((this.parallaxFigure.style.backgroundImage = this.bgImg),
this.element.classList.add("bg-none"));
}
updateParallaxBgOptions() {
void 0 === this.parallaxFromOptions.yPercent &&
(this.parallaxFromOptions.yPercent = -15),
void 0 === this.parallaxToOptions.yPercent &&
(this.parallaxToOptions.yPercent = 0);
}
init() {
fastdomPromised
.measure(async () => {
await this.measure(), await this.positionSentinel();
})
.then(() => {
fastdomPromised.mutate(() => {
const t = this.options.parallaxBG;
let {
start: e,
end: i,
scrub: s,
ease: n,
startTrigger: o,
} = this.options,
a = this.sentinel;
o && (a = "string" == typeof o ? document.querySelector(o) : o),
(this.parallaxTimeline = gsap.timeline()),
this.parallaxTimeline.fromTo(
this.parallaxElements,
{ ...this.parallaxFromOptions },
{ ease: n, ...this.parallaxToOptions }
),
(this.ST = ScrollTrigger.create({
animation: this.parallaxTimeline,
trigger: a,
start: () => e,
end: () => i,
scrub: t ? 0.35 : s,
onRefresh: () => {
(e = this.options.start),
(i = this.options.end),
this.ST.update();
},
onUpdate: () => {
gsap.set(this.parallaxElements, { transition: "none" });
},
onScrubComplete: () => {
gsap.set(this.parallaxElements, { transition: "" });
},
})),
!this.options.skipWillChange && this.addWillChange(),
t && gsap.to(this.parallaxElements, { opacity: 1 }),
this.element.dispatchEvent(
new CustomEvent("lqd-parallax-initiated")
);
});
});
}
addWillChange() {
const t = ["transform"];
this.parallaxFromOptions.opacity &&
this.parallaxToOptions.opacity &&
this.parallaxFromOptions.opacity !== this.parallaxToOptions.opacity &&
t.push("opacity");
const e = t.join(", ");
new IntersectionObserver(([t]) => {
t.isIntersecting
? (this.element.style.willChange = e)
: (this.element.style.willChange = "auto");
}).observe(this.sentinel);
}
handleResize() {
$(window).on("resize.lqdParallax", this.onWindowResize.bind(this));
}
async onWindowResize() {
await this.measure(), this.positionSentinel();
}
destroy() {
this.sentinel && this.sentinel.remove(),
this.parallaxTimeline &&
(gsap.killTweensOf(this.parallaxTimeline),
this.parallaxTimeline.scrollTrigger.kill(),
this.parallaxTimeline.kill(),
gsap.set(this.parallaxElements, { clearProps: "all" }),
this.parallaxTimeline.clear()),
$.data(this.element, "plugin_" + t, null),
$(window).off("resize.lqdParallax");
}
}
$.fn[t] = function (e, i, s) {
return this.each(function () {
const o = {
disableOnMobile: !0,
...$(this).data("parallax-options"),
...e,
},
a = { ...$(this).data("parallax-from"), ...i },
l = { ...$(this).data("parallax-to"), ...s };
if (!$.data(this, "plugin_" + t)) {
if (o.disableOnMobile && liquidIsMobile()) return;
$.data(this, "plugin_" + t, new n(this, o, a, l));
}
});
};
})(jQuery),
jQuery(document).ready(function ($) {
$("[data-parallax]")
.not("[data-pin]:not(.vc_row), .rev-slidebg")
.liquidParallax();
}),
(function ($) {
const t = "liquidTransitionDelay";
let e = {
elements: null,
startDelay: 0,
delayBetween: 250,
random: !1,
reverse: !1,
delayType: "transition",
};
class i {
constructor(i, s) {
(this.element = i),
(this.$element = $(i)),
(this.options = $.extend({}, e, s)),
(this._defaults = e),
(this._name = t);
const n = this.$element.find("[data-split-text]").get(),
o = [];
this.element.hasAttribute("data-split-text") && n.push(this.element),
n.forEach((t) => {
const e = $(t).data("plugin_liquidSplitText");
e && o.push(e.splitDonePormise);
}),
o.length ? Promise.all(o).then(this.init.bind(this)) : this.init();
}
init() {
this.addDelays();
}
addDelays() {
const {
elements: t,
delayBetween: e,
startDelay: i,
delayType: s,
reverse: n,
} = this.options;
if (t) {
const o = n ? $(t, this.element).get().reverse() : $(t, this.element);
$.each(o, (t, n) => {
const o = t * e + i;
$(n).css({
[`-webkit-${s}-delay`]: `${o}ms`,
[`${s}-delay`]: `${o}ms`,
});
});
}
}
}
$.fn[t] = function (e) {
return this.each(function () {
const s = $(this).data("delay-options") || e;
$.data(this, "plugin_" + t) ||
$.data(this, "plugin_" + t, new i(this, s));
});
};
})(jQuery),
jQuery(document).ready(function ($) {
$("[data-transition-delay=true]").liquidTransitionDelay(),
$(
".lqd-submenu-cover .main-nav > .menu-item-has-children:not(.megamenu) > .nav-item-children, .navbar-visible-ontoggle > ul"
).liquidTransitionDelay({ elements: "> li", delayBetween: 60 });
}),
(function ($) {
const t = "liquidMoveElement";
let e = {
target: "#selector",
targetRelation: "closest",
type: "prependTo",
includeParent: !1,
clone: !1,
};
class i {
constructor(i, s) {
(this._defaults = e),
(this._name = t),
(this.options = { ...e, ...s }),
(this.element = i),
(this.$element = $(i)),
(this.movePromise = new Promise((t) => {
this.element.addEventListener("element-was-moved", t(this, this));
})),
this.build();
}
build() {
const t = [];
if (this.element.hasAttribute("data-pin")) {
const e = this.$element.data("plugin_liquidPin");
e && t.push(e.pinPromise);
}
t.length > 0 ? Promise.all(t).then(this.init.bind(this)) : this.init();
}
init() {
this.getHiddenClasses(), this.moveElement();
}
getHiddenClasses() {
const t = this.element.closest(".vc_column_container");
if (t) {
const e = undefined,
i = t
.getAttribute("class")
.split(" ")
.filter((t) => t.search("vc_hidden") >= 0);
i.length > 0 && this.element.classList.add([...i]);
}
}
moveElement() {
fastdom.mutate(() => {
const { target: t, type: e, targetRelation: i } = this.options;
this.$element[e](this.$element[i](t)),
this.element.classList.add("element-was-moved"),
this.element.dispatchEvent(
new CustomEvent("element-was-moved", { bubbles: !1 })
);
});
}
}
$.fn[t] = function (e) {
return this.each(function () {
const s = $(this).data("move-element") || e;
$.data(this, "plugin_" + t) ||
$.data(this, "plugin_" + t, new i(this, s));
});
};
})(jQuery),
jQuery(document).ready(function ($) {
$("[data-move-element]").liquidMoveElement();
}),
(function ($) {
const t = "liquidScrollIndicator";
let e = {
start: "top top",
end: "bottom top",
scrollingTarget: "body",
indicatorBase: ".lqd-scrl-indc-line",
indicatorEl: ".lqd-scrl-indc-el",
dir: "y",
scale: !1,
origin: "null",
waitForElementMove: !1,
};
class i {
constructor(i, s) {
if (
((this._defaults = e),
(this._name = t),
(this.options = { ...e, ...s }),
(this.DOM = {}),
(this.DOM.element = i),
(this.DOM.scrollingTarget = this.getScrollingTarget()),
(this.DOM.indicatorBase = this.DOM.element.querySelector(
this.options.indicatorBase
)),
(this.DOM.indicatorEl = this.DOM.element.querySelector(
this.options.indicatorEl
)),
this.options.waitForElementMove)
) {
const t = $(this.DOM.element).closest("[data-move-element]");
if (t.length)
return t
.data("plugin_liquidMoveElement")
.movePromise.then(() => this.init());
}
this.init();
}
init() {
$liquidContents[0].hasAttribute("data-liquid-stack")
? this.initMutationObserver()
: this.initialTrigger();
}
getScrollingTarget() {
const { scrollingTarget: t } = this.options;
switch (t) {
case "this":
return this.DOM.element;
case "parentHref":
return this.$element.closest("a").attr("href");
case "siblingsHref":
return this.$element.siblings("a").first().attr("href");
default:
const e = undefined;
let i = t.startsWith("#") ? document.querySelector(t) : t;
return "body" === i && (i = document.body), i;
}
}
initialTrigger() {
const { dir: t, scale: e, start: i, end: s, origin: n } = this.options,
{ indicatorBase: o, scrollingTarget: a, indicatorEl: l } = this.DOM,
r = `scale${t.toUpperCase()}`,
d = "x" === t ? "scaleY" : "scaleX";
let h;
n && gsap.set(l, { transformOrigin: n }),
(h = e
? gsap.fromTo(l, { [r]: 0, [d]: 1 }, { scale: 1, force3D: !1 })
: gsap.to(l, {
[t]: "y" === t ? o.offsetHeight : o.offsetWidth,
force3D: !1,
})),
ScrollTrigger.create({
trigger: a,
animation: h,
start: i,
end: s,
scrub: 0.5,
});
}
initMutationObserver() {
const t = $liquidContents.data("plugin_liquidStack");
!t ||
liquidIsMobile() ||
liquidWindowWidth() <= liquidMobileNavBreakpoint() ||
t.stackInitPromise.then((t) => {
const { dir: e } = this.options,
{ indicatorBase: i, indicatorEl: s } = this.DOM,
n = [...t.$sectionElements].filter(
(t) => !t.classList.contains("main-footer")
).length,
o = "y" === e ? i.offsetHeight : i.offsetWidth;
new MutationObserver(() => {
const t = document.body.getAttribute("data-lqd-stack-page"),
i = gsap.utils.mapRange(1, n, 0, o, t);
gsap.to(s, { [e]: i, ease: "linear", duration: 1 });
}).observe(document.body, {
attributeFilter: ["data-lqd-stack-page"],
});
});
}
}
$.fn[t] = function (e) {
return this.each(function () {
const s = { ...$(this).data("scrl-indc-options"), ...e };
$.data(this, "plugin_" + t) ||
$.data(this, "plugin_" + t, new i(this, s));
});
};
})(jQuery),
jQuery(document).ready(function ($) {
$("[data-lqd-scroll-indicator]").liquidScrollIndicator();
});