Files
2025-07-13 11:19:53 +02:00

3951 lines
205 KiB
JavaScript

/*!
* Creative Elements - live Theme & Page Builder
* Copyright 2019-2022 WebshopWorks.com & Elementor.com
*/
!(function (n) {
var i = {};
function o(e) {
if (i[e]) return i[e].exports;
var t = (i[e] = { i: e, l: !1, exports: {} });
return n[e].call(t.exports, t, t.exports, o), (t.l = !0), t.exports;
}
(o.m = n),
(o.c = i),
(o.d = function (e, t, n) {
o.o(e, t) || Object.defineProperty(e, t, { enumerable: !0, get: n });
}),
(o.r = function (e) {
"undefined" != typeof Symbol && Symbol.toStringTag && Object.defineProperty(e, Symbol.toStringTag, { value: "Module" }), Object.defineProperty(e, "__esModule", { value: !0 });
}),
(o.t = function (t, e) {
if ((1 & e && (t = o(t)), 8 & e)) return t;
if (4 & e && "object" == typeof t && t && t.__esModule) return t;
var n = Object.create(null);
if ((o.r(n), Object.defineProperty(n, "default", { enumerable: !0, value: t }), 2 & e && "string" != typeof t))
for (var i in t)
o.d(
n,
i,
function (e) {
return t[e];
}.bind(null, i)
);
return n;
}),
(o.n = function (e) {
var t =
e && e.__esModule
? function () {
return e.default;
}
: function () {
return e;
};
return o.d(t, "a", t), t;
}),
(o.o = function (e, t) {
return Object.prototype.hasOwnProperty.call(e, t);
}),
(o.p = ""),
o((o.s = 182));
})({
1: function (e, t, n) {
"use strict";
Object.defineProperty(t, "__esModule", { value: !0 });
var i = navigator.userAgent;
t.default = { webkit: -1 !== i.indexOf("AppleWebKit"), firefox: -1 !== i.indexOf("Firefox"), ie: /Trident|MSIE/.test(i), edge: -1 !== i.indexOf("Edge"), mac: -1 !== i.indexOf("Macintosh") };
},
5: function (e, t, n) {
"use strict";
Object.defineProperty(t, "__esModule", { value: !0 });
var i = function (e, t, n) {
return t && o(e.prototype, t), n && o(e, n), e;
};
function o(e, t) {
for (var n = 0; n < t.length; n++) {
var i = t[n];
(i.enumerable = i.enumerable || !1), (i.configurable = !0), "value" in i && (i.writable = !0), Object.defineProperty(e, i.key, i);
}
}
function s(e, t, n) {
null === e && (e = Function.prototype);
var i = Object.getOwnPropertyDescriptor(e, t);
if (void 0 !== i) {
if ("value" in i) return i.value;
i = i.get;
return void 0 !== i ? i.call(n) : void 0;
}
if (null !== (i = Object.getPrototypeOf(e))) return s(i, t, n);
}
var r = (function (e) {
var t = n;
if ("function" != typeof e && null !== e) throw new TypeError("Super expression must either be null or a function, not " + typeof e);
function n() {
var e = this,
t = n;
if (!(e instanceof t)) throw new TypeError("Cannot call a class as a function");
(e = this), (t = (n.__proto__ || Object.getPrototypeOf(n)).apply(this, arguments));
if (e) return !t || ("object" != typeof t && "function" != typeof t) ? e : t;
throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
}
return (
(t.prototype = Object.create(e && e.prototype, { constructor: { value: t, enumerable: !1, writable: !0, configurable: !0 } })),
e && (Object.setPrototypeOf ? Object.setPrototypeOf(t, e) : (t.__proto__ = e)),
i(n, [
{
key: "__construct",
value: function (e) {
var i = this;
(this.motionFX = e.motionFX),
(this.runImmediately = this.run),
(this.run = function () {
var e, t, n;
(i.animationFrameRequest = requestAnimationFrame(i.run.bind(i))),
"page" === i.motionFX.getSettings("range")
? i.runImmediately()
: ((t = (n = (e = i.motionFX.getSettings("dimensions")).elementTop - pageYOffset) - innerHeight), (n += e.elementHeight), t <= 0 && 0 <= n && i.runImmediately());
});
},
},
{
key: "runCallback",
value: function () {
this.getSettings("callback").apply(void 0, arguments);
},
},
{
key: "destroy",
value: function () {
cancelAnimationFrame(this.animationFrameRequest);
},
},
{
key: "onInit",
value: function () {
s(n.prototype.__proto__ || Object.getPrototypeOf(n.prototype), "onInit", this).call(this), this.run();
},
},
]),
n
);
})(elementorModules.ViewModule);
t.default = r;
},
13: function (e, t, n) {
"use strict";
e.exports = function () {
var o,
n = Array.prototype.slice,
a = { actions: {}, filters: {} };
function i(e, t, n, i) {
var o, s, r;
if (a[e][t])
if (n)
if (((o = a[e][t]), i)) for (r = o.length; r--; ) (s = o[r]).callback === n && s.context === i && o.splice(r, 1);
else for (r = o.length; r--; ) o[r].callback === n && o.splice(r, 1);
else a[e][t] = [];
}
function s(e, t, n, i, o) {
(i = { callback: n, priority: i, context: o }), (o = a[e][t]);
if (o) {
var s = !1;
if (
(jQuery.each(o, function () {
if (this.callback === n) return !(s = !0);
}),
s)
)
return;
o.push(i),
(o = (function (e) {
for (var t, n, i, o = 1, s = e.length; o < s; o++) {
for (t = e[o], n = o; (i = e[n - 1]) && i.priority > t.priority; ) (e[n] = e[n - 1]), --n;
e[n] = t;
}
return e;
})(o));
} else o = [i];
a[e][t] = o;
}
function r(e, t, n) {
var i,
o,
s = a[e][t];
if (!s) return "filters" === e && n[0];
if (((o = s.length), "filters" === e)) for (i = 0; i < o; i++) n[0] = s[i].callback.apply(s[i].context, n);
else for (i = 0; i < o; i++) s[i].callback.apply(s[i].context, n);
return "filters" !== e || n[0];
}
return (o = {
removeFilter: function (e, t) {
return "string" == typeof e && i("filters", e, t), o;
},
applyFilters: function () {
var e = n.call(arguments),
t = e.shift();
return "string" == typeof t ? r("filters", t, e) : o;
},
addFilter: function (e, t, n, i) {
return "string" == typeof e && "function" == typeof t && s("filters", e, t, (n = parseInt(n || 10, 10)), i), o;
},
removeAction: function (e, t) {
return "string" == typeof e && i("actions", e, t), o;
},
doAction: function () {
var e = n.call(arguments),
t = e.shift();
return "string" == typeof t && r("actions", t, e), o;
},
addAction: function (e, t, n, i) {
return "string" == typeof e && "function" == typeof t && s("actions", e, t, (n = parseInt(n || 10, 10)), i), o;
},
});
};
},
10: function (e, t, n) {
var k = jQuery,
i =
((window.Sticky = function (e, t) {
function o(e, t, n) {
var i = {},
o = e[0].style;
n.forEach(function (e) {
i[e] = void 0 !== o[e] ? o[e] : "";
}),
e.data("css-backup-" + t, i);
}
function s(e, t, n) {
var i = getComputedStyle(e[0]),
o = parseFloat(i[t]),
s = "height" === t ? ["top", "bottom"] : ["left", "right"],
e = [];
return (
"border-box" !== i.boxSizing && e.push("border", "padding"),
n && e.push("margin"),
e.forEach(function (t) {
s.forEach(function (e) {
o += parseFloat(i[t + "-" + e]);
});
}),
o
);
}
var r,
a,
i = !1,
l = !1,
n = !1,
c = pageYOffset,
d = {},
u = { to: "top", offset: 0, effectsOffset: 0, parent: !1, classes: { sticky: "sticky", stickyActive: "sticky-active", stickyEffects: "sticky-effects", spacer: "sticky-spacer" } },
h = function (e, t) {
return e.data("css-backup-" + t);
},
m = function () {
o(r, "unsticky", ["position", "width", "margin-top", "margin-bottom", "top", "bottom"]);
var e = { position: "fixed", width: s(r, "width"), marginTop: 0, marginBottom: 0 };
(e[a.to] = a.offset), (e["top" === a.to ? "bottom" : "top"] = ""), r.css(e).addClass(a.classes.stickyActive);
},
p = function () {
r.css(h(r, "unsticky")).removeClass(a.classes.stickyActive);
},
f = function (e) {
var t = d.$window.scrollTop(),
n = s(e, "height"),
i = innerHeight,
e = e.offset().top - t,
t = e - i;
return { top: { fromTop: e, fromBottom: t }, bottom: { fromTop: e + n, fromBottom: t + n } };
},
g = function () {
(d.$spacer = r.clone().addClass(a.classes.spacer).css({ visibility: "hidden", transition: "none", animation: "none" })),
r.after(d.$spacer),
m(),
(i = !0),
r.find("input[checked]").prop("checked", !0),
r.trigger("sticky:stick");
},
v = function () {
p(), d.$spacer.remove(), (i = !1), r.trigger("sticky:unstick");
},
y = function () {
var e,
t,
n = f(r),
i = "top" === a.to;
l
? (i ? n.top.fromTop > a.offset : n.bottom.fromBottom < -a.offset) && (d.$parent.css(h(d.$parent, "childNotFollowing")), r.css(h(r, "notFollowing")), (l = !1))
: ((e = f(d.$parent)),
(t = getComputedStyle(d.$parent[0])),
(t = parseFloat(t[i ? "borderBottomWidth" : "borderTopWidth"])),
(e = i ? e.bottom.fromTop - t : e.top.fromBottom + t),
(i ? e <= n.bottom.fromTop : e >= n.top.fromBottom) &&
(o(d.$parent, "childNotFollowing", ["position"]),
d.$parent.css("position", "relative"),
o(r, "notFollowing", ["position", "top", "bottom"]),
((t = { position: "absolute" })[a.to] = ""),
(t["top" === a.to ? "bottom" : "top"] = 0),
r.css(t),
(l = !0)));
},
b = function (e) {
n && -e < a.effectsOffset ? (r.removeClass(a.classes.stickyEffects), (n = !1)) : !n && -e >= a.effectsOffset && (r.addClass(a.classes.stickyEffects), (n = !0));
},
_ = function () {
var e,
t,
n = a.offset;
i
? ((e = f(d.$spacer)), (e = "top" === a.to ? e.top.fromTop - n : -e.bottom.fromBottom - n), a.parent && y(), 0 < e && v())
: ((t = f(r)), (e = "top" === a.to ? t.top.fromTop - n : -t.bottom.fromBottom - n) <= 0 && (g(), a.parent && y())),
b(e);
},
w = function () {
var e;
i &&
a.autoHide &&
((e = a.autoHideOffset.size * ("vh" === a.autoHideOffset.unit ? k(window).height() / 100 : 1)),
pageYOffset >= e &&
pageYOffset > c + 10 &&
r
.off("transitionend.ceSticky")
.css({ transition: "transform " + a.autoHideDuration.size + "s", transform: "translateY(calc(-100% - " + a.offset + "px))" })
.addClass(a.classes.stickyHide),
(pageYOffset < e || pageYOffset < c - 10) &&
r
.removeClass(a.classes.stickyHide)
.css("transform", "")
.one("transitionend.ceSticky", function () {
r.css("transition", "");
}),
(c = pageYOffset)),
_();
},
S = function () {
i && (p(), m(), a.parent && ((l = !1), y()));
};
(this.destroy = function () {
i && v(), d.$window.off("scroll", w).off("resize", S), r.removeClass(a.classes.sticky).css("transform", "").off("transitionend.ceSticky").removeClass(a.classes.stickyHide);
}),
(a = jQuery.extend(!0, u, t)),
(r = k(e).addClass(a.classes.sticky)),
(d.$window = k(window)),
a.parent && ("parent" === a.parent ? (d.$parent = r.parent()) : (d.$parent = r.closest(a.parent))),
d.$window.on({ scroll: w, resize: S }),
_();
}),
(k.fn.sticky = function (n) {
var i = "string" == typeof n;
return (
this.each(function () {
var e = k(this);
if (i) {
var t = e.data("sticky");
if (!t) throw Error("Trying to perform the `" + n + "` method prior to initialization");
if (!t[n]) throw ReferenceError("Method `" + n + "` not found in sticky instance");
t[n].apply(t, Array.prototype.slice.call(arguments, 1)), "destroy" === n && e.removeData("sticky");
} else e.data("sticky", new Sticky(this, n));
}),
this
);
}),
elementorModules.frontend.handlers.Base.extend({
bindEvents: function () {
ceFrontend.addListenerOnce(this.getUniqueHandlerID() + "sticky", "resize", this.run);
},
unbindEvents: function () {
ceFrontend.removeListeners(this.getUniqueHandlerID() + "sticky", "resize", this.run);
},
isActive: function () {
return void 0 !== this.$element.data("sticky");
},
activate: function () {
var e = this.getElementSettings(),
t = {
to: e.sticky,
offset: e.sticky_offset,
effectsOffset: e.sticky_effects_offset,
autoHide: e.sticky_auto_hide,
autoHideOffset: e.sticky_auto_hide_offset || { size: 0 },
autoHideDuration: e.sticky_auto_hide_duration || { size: 0 },
classes: {
sticky: "elementor-sticky",
stickyActive: "elementor-sticky--active elementor-section--handles-inside",
stickyEffects: "elementor-sticky--effects",
stickyHide: "ce-sticky--hide",
spacer: "elementor-sticky__spacer",
},
};
e.sticky_parent && (t.parent = ".elementor-widget-wrap"), this.$element.sticky(t);
},
deactivate: function () {
this.isActive() && this.$element.sticky("destroy");
},
run: function (e) {
var t;
this.getElementSettings("sticky")
? ((t = ceFrontend.getCurrentDeviceMode()), -1 !== this.getElementSettings("sticky_on").indexOf(t) ? (!0 === e ? this.reactivate() : this.isActive() || this.activate()) : this.deactivate())
: this.deactivate();
},
reactivate: function () {
this.deactivate(), this.activate();
},
onElementChange: function (e) {
-1 !== ["sticky", "sticky_on"].indexOf(e) && this.run(!0),
-1 !== ["sticky_offset", "sticky_effects_offset", "sticky_parent", "sticky_auto_hide", "sticky_auto_hide_offset", "sticky_auto_hide_duration"].indexOf(e) && this.reactivate();
},
onInit: function () {
elementorModules.frontend.handlers.Base.prototype.onInit.apply(this, arguments), this.run();
},
onDestroy: function () {
elementorModules.frontend.handlers.Base.prototype.onDestroy.apply(this, arguments), this.deactivate();
},
}));
e.exports = function (e) {
new i({ $element: e });
};
},
15: function (e, t, n) {
"use strict";
Object.defineProperty(t, "__esModule", { value: !0 });
var i = function (e, t, n) {
return t && o(e.prototype, t), n && o(e, n), e;
};
function o(e, t) {
for (var n = 0; n < t.length; n++) {
var i = t[n];
(i.enumerable = i.enumerable || !1), (i.configurable = !0), "value" in i && (i.writable = !0), Object.defineProperty(e, i.key, i);
}
}
var s = (function (e) {
var t = n;
if ("function" != typeof e && null !== e) throw new TypeError("Super expression must either be null or a function, not " + typeof e);
function n() {
var e = this,
t = n;
if (!(e instanceof t)) throw new TypeError("Cannot call a class as a function");
(e = this), (t = (n.__proto__ || Object.getPrototypeOf(n)).apply(this, arguments));
if (e) return !t || ("object" != typeof t && "function" != typeof t) ? e : t;
throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
}
return (
(t.prototype = Object.create(e && e.prototype, { constructor: { value: t, enumerable: !1, writable: !0, configurable: !0 } })),
e && (Object.setPrototypeOf ? Object.setPrototypeOf(t, e) : (t.__proto__ = e)),
i(n, [
{
key: "get",
value: function (t, e) {
e = e || {};
var n = void 0;
try {
n = e.session ? sessionStorage : localStorage;
} catch (e) {
return t ? void 0 : {};
}
var i = n.getItem("elementor"),
o = ((i = i ? JSON.parse(i) : {}).__expiration || (i.__expiration = {}), i.__expiration),
n = [],
s = (t ? o[t] && (n = [t]) : (n = Object.keys(o)), !1);
return (
n.forEach(function (e) {
new Date(o[e]) < new Date() && (delete i[e], delete o[e], (s = !0));
}),
s && this.save(i, e.session),
t ? i[t] : i
);
},
},
{
key: "set",
value: function (e, t, n) {
var i = this.get(null, (n = n || {}));
(i[e] = t), n.lifetimeInSeconds && ((t = new Date()).setTime(t.getTime() + 1e3 * n.lifetimeInSeconds), (i.__expiration[e] = t.getTime())), this.save(i, n.session);
},
},
{
key: "save",
value: function (e, t) {
var n = void 0;
try {
n = t ? sessionStorage : localStorage;
} catch (e) {
return;
}
n.setItem("elementor", JSON.stringify(e));
},
},
]),
n
);
})(elementorModules.Module);
t.default = s;
},
16: function (e, t, n) {
"use strict";
Object.defineProperty(t, "__esModule", { value: !0 });
var i = function (e, t, n) {
return t && o(e.prototype, t), n && o(e, n), e;
};
function o(e, t) {
for (var n = 0; n < t.length; n++) {
var i = t[n];
(i.enumerable = i.enumerable || !1), (i.configurable = !0), "value" in i && (i.writable = !0), Object.defineProperty(e, i.key, i);
}
}
var n = n(1),
s = (n = n) && n.__esModule ? n : { default: n };
function r() {
if (!(this instanceof r)) throw new TypeError("Cannot call a class as a function");
this.hotKeysHandlers = {};
}
i(r, [
{
key: "applyHotKey",
value: function (n) {
var e = this.hotKeysHandlers[n.which];
e &&
jQuery.each(e, function (e, t) {
(t.isWorthHandling && !t.isWorthHandling(n)) || (!t.allowAltKey && n.altKey) || (n.preventDefault(), t.handle(n));
});
},
},
{
key: "isControlEvent",
value: function (e) {
return e[s.default.mac ? "metaKey" : "ctrlKey"];
},
},
{
key: "addHotKeyHandler",
value: function (e, t, n) {
this.hotKeysHandlers[e] || (this.hotKeysHandlers[e] = {}), (this.hotKeysHandlers[e][t] = n);
},
},
{
key: "bindListener",
value: function (e) {
e.on("keydown", this.applyHotKey.bind(this));
},
},
]),
(t.default = r);
},
17: function (e, t, n) {
"use strict";
Object.defineProperty(t, "__esModule", { value: !0 });
var i = function (e, t, n) {
return t && o(e.prototype, t), n && o(e, n), e;
};
function o(e, t) {
for (var n = 0; n < t.length; n++) {
var i = t[n];
(i.enumerable = i.enumerable || !1), (i.configurable = !0), "value" in i && (i.writable = !0), Object.defineProperty(e, i.key, i);
}
}
function s(e, t, n) {
null === e && (e = Function.prototype);
var i = Object.getOwnPropertyDescriptor(e, t);
if (void 0 !== i) {
if ("value" in i) return i.value;
i = i.get;
return void 0 !== i ? i.call(n) : void 0;
}
if (null !== (i = Object.getPrototypeOf(e))) return s(i, t, n);
}
var r = (function (e) {
var t = n;
if ("function" != typeof e && null !== e) throw new TypeError("Super expression must either be null or a function, not " + typeof e);
function n() {
var e = this,
t = n;
if (!(e instanceof t)) throw new TypeError("Cannot call a class as a function");
(e = this), (t = (n.__proto__ || Object.getPrototypeOf(n)).apply(this, arguments));
if (e) return !t || ("object" != typeof t && "function" != typeof t) ? e : t;
throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
}
return (
(t.prototype = Object.create(e && e.prototype, { constructor: { value: t, enumerable: !1, writable: !0, configurable: !0 } })),
e && (Object.setPrototypeOf ? Object.setPrototypeOf(t, e) : (t.__proto__ = e)),
i(n, [
{
key: "getDefaultSettings",
value: function () {
return { selectors: { elements: ".elementor-element", nestedDocumentElements: ".elementor .elementor-element" }, classes: { editMode: "elementor-edit-mode" } };
},
},
{
key: "getDefaultElements",
value: function () {
var e = this.getSettings("selectors");
return { $elements: this.$element.find(e.elements).not(this.$element.find(e.nestedDocumentElements)) };
},
},
{
key: "getDocumentSettings",
value: function (e) {
var t,
n = void 0;
return (
this.isEdit
? ((n = {}),
(t = elementor.settings.page.model),
jQuery.each(t.getActiveControls(), function (e) {
n[e] = t.attributes[e];
}))
: (n = this.$element.data("elementor-settings") || {}),
this.getItems(n, e)
);
},
},
{
key: "runElementsHandlers",
value: function () {
this.elements.$elements.each(function (e, t) {
return ceFrontend.elementsHandler.runReadyTrigger(t);
});
},
},
{
key: "onInit",
value: function () {
(this.$element = this.getSettings("$element")),
s(n.prototype.__proto__ || Object.getPrototypeOf(n.prototype), "onInit", this).call(this),
(this.isEdit = this.$element.hasClass(this.getSettings("classes.editMode"))),
this.isEdit ? elementor.settings.page.model.on("change", this.onSettingsChange.bind(this)) : this.runElementsHandlers();
},
},
{ key: "onSettingsChange", value: function () {} },
]),
n
);
})(elementorModules.ViewModule);
t.default = r;
},
18: function (e, t, n) {
"use strict";
e.exports = elementorModules.frontend.handlers.Base.extend({
$activeContent: null,
getDefaultSettings: function () {
return {
selectors: { tabTitle: ".elementor-tab-title", tabContent: ".elementor-tab-content" },
classes: { active: "elementor-active" },
showTabFn: "show",
hideTabFn: "hide",
toggleSelf: !0,
hidePrevious: !0,
autoExpand: !0,
};
},
getDefaultElements: function () {
var e = this.getSettings("selectors");
return { $tabTitles: this.findElement(e.tabTitle), $tabContents: this.findElement(e.tabContent) };
},
activateDefaultTab: function () {
var e,
t = this.getSettings();
t.autoExpand &&
("editor" !== t.autoExpand || this.isEdit) &&
((e = this.getEditSettings("activeItemIndex") || 1), (t = { showTabFn: t.showTabFn, hideTabFn: t.hideTabFn }), this.setSettings({ showTabFn: "show", hideTabFn: "hide" }), this.changeActiveTab(e), this.setSettings(t));
},
deactivateActiveTab: function (e) {
var t = this.getSettings(),
n = t.classes.active,
e = e ? '[data-tab="' + e + '"]' : "." + n,
i = this.elements.$tabTitles.filter(e),
e = this.elements.$tabContents.filter(e);
i.add(e).removeClass(n), e[t.hideTabFn]();
},
activateTab: function (e) {
var t = this.getSettings(),
n = t.classes.active,
i = this.elements.$tabTitles.filter('[data-tab="' + e + '"]'),
e = this.elements.$tabContents.filter('[data-tab="' + e + '"]');
i.add(e).addClass(n), e[t.showTabFn]();
},
isActiveTab: function (e) {
return this.elements.$tabTitles.filter('[data-tab="' + e + '"]').hasClass(this.getSettings("classes.active"));
},
bindEvents: function () {
var t = this;
this.elements.$tabTitles.on({
keydown: function (e) {
"Enter" === e.key && (e.preventDefault(), t.changeActiveTab(e.currentTarget.getAttribute("data-tab")));
},
click: function (e) {
e.preventDefault(), t.changeActiveTab(e.currentTarget.getAttribute("data-tab"));
},
});
},
onInit: function () {
elementorModules.frontend.handlers.Base.prototype.onInit.apply(this, arguments), this.activateDefaultTab();
},
onEditSettingsChange: function (e) {
"activeItemIndex" === e && this.activateDefaultTab();
},
changeActiveTab: function (e) {
var t = this.isActiveTab(e),
n = this.getSettings();
(!n.toggleSelf && t) || !n.hidePrevious || this.deactivateActiveTab(), !n.hidePrevious && t && this.deactivateActiveTab(e), t || this.activateTab(e);
},
});
},
90: function (e, t, n) {
"use strict";
Object.defineProperty(t, "__esModule", { value: !0 });
var n = n(91),
i = (n = n) && n.__esModule ? n : { default: n };
n = (function (e) {
var t = n;
if ("function" != typeof e && null !== e) throw new TypeError("Super expression must either be null or a function, not " + typeof e);
function n() {
if (!(this instanceof n)) throw new TypeError("Cannot call a class as a function");
var e = (function (e, t) {
if (e) return !t || ("object" != typeof t && "function" != typeof t) ? e : t;
throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
})(this, (n.__proto__ || Object.getPrototypeOf(n)).call(this));
return (
ceFrontend.hooks.addAction("frontend/element_ready/global", function (e) {
ceFrontend.elementsHandler.addHandler(i.default, { $element: e });
}),
e
);
}
return (t.prototype = Object.create(e && e.prototype, { constructor: { value: t, enumerable: !1, writable: !0, configurable: !0 } })), e && (Object.setPrototypeOf ? Object.setPrototypeOf(t, e) : (t.__proto__ = e)), n;
})(elementorModules.Module);
t.default = n;
},
91: function (e, t, n) {
"use strict";
Object.defineProperty(t, "__esModule", { value: !0 });
var d =
"function" == typeof Symbol && "symbol" == typeof Symbol.iterator
? function (e) {
return typeof e;
}
: function (e) {
return e && "function" == typeof Symbol && e.constructor === Symbol && e !== Symbol.prototype ? "symbol" : typeof e;
},
i = function (e, t, n) {
return t && o(e.prototype, t), n && o(e, n), e;
};
function o(e, t) {
for (var n = 0; n < t.length; n++) {
var i = t[n];
(i.enumerable = i.enumerable || !1), (i.configurable = !0), "value" in i && (i.writable = !0), Object.defineProperty(e, i.key, i);
}
}
function s(e, t, n) {
null === e && (e = Function.prototype);
var i = Object.getOwnPropertyDescriptor(e, t);
if (void 0 !== i) {
if ("value" in i) return i.value;
i = i.get;
return void 0 !== i ? i.call(n) : void 0;
}
if (null !== (i = Object.getPrototypeOf(e))) return s(i, t, n);
}
var n = n(92),
r = (n = n) && n.__esModule ? n : { default: n };
n = (function (e) {
var t = o;
if ("function" != typeof e && null !== e) throw new TypeError("Super expression must either be null or a function, not " + typeof e);
function o() {
var e = this,
t = o;
if (!(e instanceof t)) throw new TypeError("Cannot call a class as a function");
(e = this), (t = (o.__proto__ || Object.getPrototypeOf(o)).apply(this, arguments));
if (e) return !t || ("object" != typeof t && "function" != typeof t) ? e : t;
throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
}
return (
(t.prototype = Object.create(e && e.prototype, { constructor: { value: t, enumerable: !1, writable: !0, configurable: !0 } })),
e && (Object.setPrototypeOf ? Object.setPrototypeOf(t, e) : (t.__proto__ = e)),
i(o, [
{
key: "__construct",
value: function () {
for (var e, t = arguments.length, n = Array(t), i = 0; i < t; i++) n[i] = arguments[i];
(e = s(o.prototype.__proto__ || Object.getPrototypeOf(o.prototype), "__construct", this)).call.apply(e, [this].concat(n)), (this.toggle = ceFrontend.debounce(this.toggle, 200));
},
},
{
key: "bindEvents",
value: function () {
ceFrontend.elements.$window.on("resize", this.toggle);
},
},
{
key: "unbindEvents",
value: function () {
ceFrontend.elements.$window.off("resize", this.toggle);
},
},
{
key: "initEffects",
value: function () {
this.effects = {
translateY: { interaction: "scroll", actions: ["translateY"] },
translateX: { interaction: "scroll", actions: ["translateX"] },
rotateZ: { interaction: "scroll", actions: ["rotateZ"] },
scale: { interaction: "scroll", actions: ["scale"] },
opacity: { interaction: "scroll", actions: ["opacity"] },
blur: { interaction: "scroll", actions: ["blur"] },
mouseTrack: { interaction: "mouseMove", actions: ["translateXY"] },
tilt: { interaction: "mouseMove", actions: ["tilt"] },
};
},
},
{
key: "prepareOptions",
value: function (r) {
var a = this,
l = this.getElementSettings(),
e = "motion_fx" === r ? "element" : "background",
c = {},
t =
(jQuery.each(l, function (e, t) {
var i,
o,
n,
s = new RegExp("^" + r + "_(.+?)_effect"),
e = e.match(s);
e &&
t &&
((i = {}),
(o = e[1]),
jQuery.each(l, function (e, t) {
var n = new RegExp(r + "_" + o + "_(.+)"),
e = e.match(n);
e && "effect" !== e[1] && ("object" === (void 0 === t ? "undefined" : d(t)) && (t = Object.keys(t.sizes).length ? t.sizes : t.size), (i[e[1]] = t));
}),
(s = a.effects[o]),
(n = s.interaction),
c[n] || (c[n] = {}),
s.actions.forEach(function (e) {
return (c[n][e] = i);
}));
}),
this.$element),
n = void 0,
i = this.getElementType(),
i =
("element" == e && "section" !== i && (t = (n = t).find("> " + ("column" === i ? ".elementor-column-wrap" : ".elementor-widget-container"))),
{
type: e,
interactions: c,
elementSettings: l,
$element: t,
$dimensionsElement: n,
refreshDimensions: this.isEdit,
range: "viewport",
classes: {
element: "elementor-motion-effects-element",
parent: "elementor-motion-effects-parent",
backgroundType: "elementor-motion-effects-element-type-background",
container: "elementor-motion-effects-container",
layer: "elementor-motion-effects-layer",
perspective: "elementor-motion-effects-perspective",
},
});
return (
("page" !== l.motion_fx_range && "fixed" !== this.getCurrentDeviceSetting("_position")) || (i.range = "page"),
"background" == e && "column" === this.getElementType() && (i.addBackgroundLayerTo = " > .elementor-element-populated"),
i
);
},
},
{
key: "activate",
value: function (e) {
var t = this.prepareOptions(e);
jQuery.isEmptyObject(t.interactions) || (this[e] = new r.default(t));
},
},
{
key: "deactivate",
value: function (e) {
this[e] && (this[e].destroy(), delete this[e]);
},
},
{
key: "toggle",
value: function () {
var n = this,
i = ceFrontend.getCurrentDeviceMode(),
o = this.getElementSettings();
["motion_fx", "background_motion_fx"].forEach(function (e) {
var t = o[e + "_devices"];
(!t || -1 !== t.indexOf(i)) && (o[e + "_motion_fx_scrolling"] || o[e + "_motion_fx_mouse"]) ? (n[e] ? n.refreshInstance(e) : n.activate(e)) : n.deactivate(e);
});
},
},
{
key: "refreshInstance",
value: function (e) {
var t = this[e];
t && ((e = this.prepareOptions(e)), t.setSettings(e), t.refresh());
},
},
{
key: "onInit",
value: function () {
s(o.prototype.__proto__ || Object.getPrototypeOf(o.prototype), "onInit", this).call(this), this.initEffects(), this.toggle();
},
},
{
key: "onElementChange",
value: function (e) {
var t,
n = this;
/motion_fx_((scrolling)|(mouse)|(devices))$/.test(e)
? this.toggle()
: ((t = e.match(".*?motion_fx")) && ((t = t[0]), this.refreshInstance(t), this[t] || this.activate(t)),
/^_position/.test(e) &&
["motion_fx", "background_motion_fx"].forEach(function (e) {
n.refreshInstance(e);
}));
},
},
{
key: "onDestroy",
value: function () {
var t = this;
s(o.prototype.__proto__ || Object.getPrototypeOf(o.prototype), "onDestroy", this).call(this),
["motion_fx", "background_motion_fx"].forEach(function (e) {
t.deactivate(e);
});
},
},
]),
o
);
})(elementorModules.frontend.handlers.Base);
t.default = n;
},
92: function (e, t, n) {
"use strict";
Object.defineProperty(t, "__esModule", { value: !0 });
var i = function (e, t, n) {
return t && o(e.prototype, t), n && o(e, n), e;
};
function o(e, t) {
for (var n = 0; n < t.length; n++) {
var i = t[n];
(i.enumerable = i.enumerable || !1), (i.configurable = !0), "value" in i && (i.writable = !0), Object.defineProperty(e, i.key, i);
}
}
function s(e, t, n) {
null === e && (e = Function.prototype);
var i = Object.getOwnPropertyDescriptor(e, t);
if (void 0 !== i) {
if ("value" in i) return i.value;
i = i.get;
return void 0 !== i ? i.call(n) : void 0;
}
if (null !== (i = Object.getPrototypeOf(e))) return s(i, t, n);
}
var r = c(n(93)),
a = c(n(94)),
l = c(n(95));
function c(e) {
return e && e.__esModule ? e : { default: e };
}
n = (function (e) {
var t = n;
if ("function" != typeof e && null !== e) throw new TypeError("Super expression must either be null or a function, not " + typeof e);
function n() {
var e = this,
t = n;
if (!(e instanceof t)) throw new TypeError("Cannot call a class as a function");
(e = this), (t = (n.__proto__ || Object.getPrototypeOf(n)).apply(this, arguments));
if (e) return !t || ("object" != typeof t && "function" != typeof t) ? e : t;
throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
}
return (
(t.prototype = Object.create(e && e.prototype, { constructor: { value: t, enumerable: !1, writable: !0, configurable: !0 } })),
e && (Object.setPrototypeOf ? Object.setPrototypeOf(t, e) : (t.__proto__ = e)),
i(n, [
{
key: "getDefaultSettings",
value: function () {
return {
type: "element",
$element: null,
$dimensionsElement: null,
addBackgroundLayerTo: null,
interactions: {},
refreshDimensions: !1,
range: "viewport",
classes: {
element: "motion-fx-element",
parent: "motion-fx-parent",
backgroundType: "motion-fx-element-type-background",
container: "motion-fx-container",
layer: "motion-fx-layer",
perspective: "motion-fx-perspective",
},
};
},
},
{
key: "bindEvents",
value: function () {
(this.onWindowResize = this.onWindowResize.bind(this)), ceFrontend.elements.$window.on("resize", this.onWindowResize);
},
},
{
key: "unbindEvents",
value: function () {
ceFrontend.elements.$window.off("resize", this.onWindowResize);
},
},
{
key: "addBackgroundLayer",
value: function () {
var e = this.getSettings();
(this.elements.$motionFXContainer = jQuery("<div>", { class: e.classes.container })),
(this.elements.$motionFXLayer = jQuery("<div>", { class: e.classes.layer })),
this.updateBackgroundLayerSize(),
this.elements.$motionFXContainer.prepend(this.elements.$motionFXLayer),
(e.addBackgroundLayerTo ? this.$element.find(e.addBackgroundLayerTo) : this.$element).prepend(this.elements.$motionFXContainer);
},
},
{
key: "removeBackgroundLayer",
value: function () {
this.elements.$motionFXContainer.remove();
},
},
{
key: "updateBackgroundLayerSize",
value: function () {
var e = this.getSettings(),
t = { x: 0, y: 0 },
n = e.interactions.mouseMove,
e = e.interactions.scroll;
n && n.translateXY && ((t.x = 10 * n.translateXY.speed), (t.y = 10 * n.translateXY.speed)),
e && (e.translateX && (t.x = 10 * e.translateX.speed), e.translateY && (t.y = 10 * e.translateY.speed)),
this.elements.$motionFXLayer.css({ width: 100 + t.x + "%", height: 100 + t.y + "%" });
},
},
{
key: "defineDimensions",
value: function () {
var e = this.getSettings("$dimensionsElement") || this.$element,
t = e.offset(),
e = { elementHeight: e.outerHeight(), elementWidth: e.outerWidth(), elementTop: t.top, elementLeft: t.left };
(e.elementRange = e.elementHeight + innerHeight), this.setSettings("dimensions", e), "background" === this.getSettings("type") && this.defineBackgroundLayerDimensions();
},
},
{
key: "defineBackgroundLayerDimensions",
value: function () {
var e = this.getSettings("dimensions");
(e.layerHeight = this.elements.$motionFXLayer.height()),
(e.layerWidth = this.elements.$motionFXLayer.width()),
(e.movableX = e.layerWidth - e.elementWidth),
(e.movableY = e.layerHeight - e.elementHeight),
this.setSettings("dimensions", e);
},
},
{
key: "initInteractionsTypes",
value: function () {
this.interactionsTypes = { scroll: r.default, mouseMove: a.default };
},
},
{
key: "prepareSpecialActions",
value: function () {
var e = this.getSettings(),
t = !(!e.interactions.mouseMove || !e.interactions.mouseMove.tilt);
this.elements.$parent.toggleClass(e.classes.perspective, t);
},
},
{
key: "cleanSpecialActions",
value: function () {
var e = this.getSettings();
this.elements.$parent.removeClass(e.classes.perspective);
},
},
{
key: "runInteractions",
value: function () {
var o = this,
e = this.getSettings();
this.actions.setCSSTransformVariables(e.elementSettings),
this.prepareSpecialActions(),
jQuery.each(e.interactions, function (e, n) {
(o.interactions[e] = new o.interactionsTypes[e]({
motionFX: o,
callback: function () {
for (var e = arguments.length, i = Array(e), t = 0; t < e; t++) i[t] = arguments[t];
jQuery.each(n, function (e, t) {
var n;
return (n = o.actions).runAction.apply(n, [e, t].concat(i));
});
},
})),
o.interactions[e].runImmediately();
});
},
},
{
key: "destroyInteractions",
value: function () {
this.cleanSpecialActions(),
jQuery.each(this.interactions, function (e, t) {
return t.destroy();
}),
(this.interactions = {});
},
},
{
key: "refresh",
value: function () {
this.actions.setSettings(this.getSettings()),
"background" === this.getSettings("type") && (this.updateBackgroundLayerSize(), this.defineBackgroundLayerDimensions()),
this.actions.refresh(),
this.destroyInteractions(),
this.runInteractions();
},
},
{
key: "destroy",
value: function () {
this.destroyInteractions(), this.actions.refresh();
var e = this.getSettings();
this.$element.removeClass(e.classes.element), this.elements.$parent.removeClass(e.classes.parent), "background" === e.type && (this.$element.removeClass(e.classes.backgroundType), this.removeBackgroundLayer());
},
},
{
key: "onInit",
value: function () {
s(n.prototype.__proto__ || Object.getPrototypeOf(n.prototype), "onInit", this).call(this);
var e = this.getSettings();
(this.$element = e.$element),
(this.elements.$parent = this.$element.parent()),
this.$element.addClass(e.classes.element),
(this.elements.$parent = this.$element.parent()),
this.elements.$parent.addClass(e.classes.parent),
"background" === e.type && (this.$element.addClass(e.classes.backgroundType), this.addBackgroundLayer()),
this.defineDimensions(),
(e.$targetElement = "element" === e.type ? this.$element : this.elements.$motionFXLayer),
(this.interactions = {}),
(this.actions = new l.default(e)),
this.initInteractionsTypes(),
this.runInteractions();
},
},
{
key: "onWindowResize",
value: function () {
this.defineDimensions();
},
},
]),
n
);
})(elementorModules.ViewModule);
t.default = n;
},
93: function (e, t, n) {
"use strict";
Object.defineProperty(t, "__esModule", { value: !0 });
var i = function (e, t, n) {
return t && o(e.prototype, t), n && o(e, n), e;
};
function o(e, t) {
for (var n = 0; n < t.length; n++) {
var i = t[n];
(i.enumerable = i.enumerable || !1), (i.configurable = !0), "value" in i && (i.writable = !0), Object.defineProperty(e, i.key, i);
}
}
var n = n(5);
n = (function (e) {
var t = n;
if ("function" != typeof e && null !== e) throw new TypeError("Super expression must either be null or a function, not " + typeof e);
function n() {
var e = this,
t = n;
if (!(e instanceof t)) throw new TypeError("Cannot call a class as a function");
(e = this), (t = (n.__proto__ || Object.getPrototypeOf(n)).apply(this, arguments));
if (e) return !t || ("object" != typeof t && "function" != typeof t) ? e : t;
throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
}
return (
(t.prototype = Object.create(e && e.prototype, { constructor: { value: t, enumerable: !1, writable: !0, configurable: !0 } })),
e && (Object.setPrototypeOf ? Object.setPrototypeOf(t, e) : (t.__proto__ = e)),
i(n, [
{
key: "run",
value: function () {
var e, t, n;
pageYOffset !== this.windowScrollTop &&
((t = this.motionFX.getSettings()).refreshDimensions && this.motionFX.defineDimensions(),
(n = void (this.windowScrollTop = pageYOffset)),
(n =
"page" === t.range
? (document.documentElement.scrollTop / (document.body.scrollHeight - innerHeight)) * 100
: ((e = t.dimensions),
(t = ((t = t.$element[0]) && ~t.className.indexOf("sticky--active") ? t.getBoundingClientRect().top : e.elementTop - pageYOffset) - innerHeight),
(100 / e.elementRange) * (-1 * t))),
this.runCallback(n));
},
},
]),
n
);
})(((n = n) && n.__esModule ? n : { default: n }).default);
t.default = n;
},
94: function (e, t, n) {
"use strict";
Object.defineProperty(t, "__esModule", { value: !0 });
var i = function (e, t, n) {
return t && o(e.prototype, t), n && o(e, n), e;
};
function o(e, t) {
for (var n = 0; n < t.length; n++) {
var i = t[n];
(i.enumerable = i.enumerable || !1), (i.configurable = !0), "value" in i && (i.writable = !0), Object.defineProperty(e, i.key, i);
}
}
function s(e, t, n) {
null === e && (e = Function.prototype);
var i = Object.getOwnPropertyDescriptor(e, t);
if (void 0 !== i) {
if ("value" in i) return i.value;
i = i.get;
return void 0 !== i ? i.call(n) : void 0;
}
if (null !== (i = Object.getPrototypeOf(e))) return s(i, t, n);
}
var n = n(5);
var r = (function (e) {
var t = n;
if ("function" != typeof e && null !== e) throw new TypeError("Super expression must either be null or a function, not " + typeof e);
function n() {
var e = this,
t = n;
if (!(e instanceof t)) throw new TypeError("Cannot call a class as a function");
(e = this), (t = (n.__proto__ || Object.getPrototypeOf(n)).apply(this, arguments));
if (e) return !t || ("object" != typeof t && "function" != typeof t) ? e : t;
throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
}
return (
(t.prototype = Object.create(e && e.prototype, { constructor: { value: t, enumerable: !1, writable: !0, configurable: !0 } })),
e && (Object.setPrototypeOf ? Object.setPrototypeOf(t, e) : (t.__proto__ = e)),
i(n, [
{
key: "bindEvents",
value: function () {
n.mouseTracked || (ceFrontend.elements.$window.on("mousemove", n.updateMousePosition), (n.mouseTracked = !0));
},
},
{
key: "run",
value: function () {
var e = n.mousePosition,
t = this.oldMousePosition;
(t.x === e.x && t.y === e.y) || ((this.oldMousePosition = { x: e.x, y: e.y }), (t = (100 / innerWidth) * e.x), (e = (100 / innerHeight) * e.y), this.runCallback(t, e));
},
},
{
key: "onInit",
value: function () {
(this.oldMousePosition = {}), s(n.prototype.__proto__ || Object.getPrototypeOf(n.prototype), "onInit", this).call(this);
},
},
]),
n
);
})(((n = n) && n.__esModule ? n : { default: n }).default);
((t.default = r).mousePosition = {}),
(r.updateMousePosition = function (e) {
r.mousePosition = { x: e.clientX, y: e.clientY };
});
},
95: function (e, t, n) {
"use strict";
Object.defineProperty(t, "__esModule", { value: !0 });
var i = function (e, t, n) {
return t && o(e.prototype, t), n && o(e, n), e;
};
function o(e, t) {
for (var n = 0; n < t.length; n++) {
var i = t[n];
(i.enumerable = i.enumerable || !1), (i.configurable = !0), "value" in i && (i.writable = !0), Object.defineProperty(e, i.key, i);
}
}
var s = (function (e) {
var t = n;
if ("function" != typeof e && null !== e) throw new TypeError("Super expression must either be null or a function, not " + typeof e);
function n() {
var e = this,
t = n;
if (!(e instanceof t)) throw new TypeError("Cannot call a class as a function");
(e = this), (t = (n.__proto__ || Object.getPrototypeOf(n)).apply(this, arguments));
if (e) return !t || ("object" != typeof t && "function" != typeof t) ? e : t;
throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
}
return (
(t.prototype = Object.create(e && e.prototype, { constructor: { value: t, enumerable: !1, writable: !0, configurable: !0 } })),
e && (Object.setPrototypeOf ? Object.setPrototypeOf(t, e) : (t.__proto__ = e)),
i(n, [
{
key: "getMovePointFromPassedPercents",
value: function (e, t) {
return +((t / e) * 100).toFixed(2);
},
},
{
key: "getEffectValueFromMovePoint",
value: function (e, t) {
return (e * t) / 100;
},
},
{
key: "getStep",
value: function (e, t) {
return "element" === this.getSettings("type") ? this.getElementStep(e, t) : this.getBackgroundStep(e, t);
},
},
{
key: "getElementStep",
value: function (e, t) {
return -(e - 50) * t.speed;
},
},
{
key: "getBackgroundStep",
value: function (e, t) {
t = this.getSettings("dimensions.movable" + t.axis.toUpperCase());
return -this.getEffectValueFromMovePoint(t, e);
},
},
{
key: "getDirectionMovePoint",
value: function (e, t, n) {
var i = void 0;
return (
e < n.start
? "out-in" === t
? (i = 0)
: "in-out" === t
? (i = 100)
: ((i = this.getMovePointFromPassedPercents(n.start, e)), "in-out-in" === t && (i = 100 - i))
: e < n.end
? "in-out-in" === t
? (i = 0)
: "out-in-out" === t
? (i = 100)
: ((i = this.getMovePointFromPassedPercents(n.end - n.start, e - n.start)), "in-out" === t && (i = 100 - i))
: "in-out" === t
? (i = 0)
: "out-in" === t
? (i = 100)
: ((i = this.getMovePointFromPassedPercents(100 - n.end, 100 - e)), "in-out-in" === t && (i = 100 - i)),
i
);
},
},
{
key: "translateX",
value: function (e, t) {
(e.axis = "x"), (e.unit = "px"), this.transform("translateX", t, e);
},
},
{
key: "translateY",
value: function (e, t) {
(e.axis = "y"), (e.unit = "px"), this.transform("translateY", t, e);
},
},
{
key: "translateXY",
value: function (e, t, n) {
this.translateX(e, t), this.translateY(e, n);
},
},
{
key: "tilt",
value: function (e, t, n) {
e = { speed: e.speed / 10, direction: e.direction };
this.rotateX(e, n), this.rotateY(e, 100 - t);
},
},
{
key: "rotateX",
value: function (e, t) {
(e.axis = "x"), (e.unit = "deg"), this.transform("rotateX", t, e);
},
},
{
key: "rotateY",
value: function (e, t) {
(e.axis = "y"), (e.unit = "deg"), this.transform("rotateY", t, e);
},
},
{
key: "rotateZ",
value: function (e, t) {
(e.unit = "deg"), this.transform("rotateZ", t, e);
},
},
{
key: "scale",
value: function (e, t) {
t = this.getDirectionMovePoint(t, e.direction, e.range);
this.updateRulePart("transform", "scale", 1 + (e.speed * t) / 1e3);
},
},
{
key: "transform",
value: function (e, t, n) {
n.direction && (t = 100 - t), this.updateRulePart("transform", e, this.getStep(t, n) + n.unit);
},
},
{
key: "setCSSTransformVariables",
value: function (e) {
this.CSSTransformVariables = [];
var n = this;
jQuery.each(e, function (e, t) {
e = e.match(/_transform_(.+?)_effect/m);
e && t && ("perspective" === e[1] ? n.CSSTransformVariables.unshift(e[1]) : n.CSSTransformVariables.includes(e[1]) || n.CSSTransformVariables.push(e[1]));
});
},
},
{
key: "opacity",
value: function (e, t) {
(t = this.getDirectionMovePoint(t, e.direction, e.range)), (e = e.level / 10), (e = 1 - e + this.getEffectValueFromMovePoint(e, t));
this.$element.css("opacity", e);
},
},
{
key: "blur",
value: function (e, t) {
(t = this.getDirectionMovePoint(t, e.direction, e.range)), (e = e.level - this.getEffectValueFromMovePoint(e.level, t));
this.updateRulePart("filter", "blur", e + "px");
},
},
{
key: "updateRulePart",
value: function (e, t, n) {
this.rulesVariables[e] || (this.rulesVariables[e] = {}), this.rulesVariables[e][t] || ((this.rulesVariables[e][t] = !0), this.updateRule(e)), this.$element[0].style.setProperty("--" + t, n);
},
},
{
key: "updateRule",
value: function (e) {
var t = "";
(t += this.concatTransformCSSProperties(e)),
jQuery.each(this.rulesVariables[e], function (e) {
t += e + "(var(--" + e + "))";
}),
this.$element.css(e, t);
},
},
{
key: "concatTransformCSSProperties",
value: function (e) {
var o = "";
return (
"transform" === e &&
jQuery.each(this.CSSTransformVariables, function (e, t) {
var n = t,
i = (t = t.startsWith("flip") ? t.replace("flip", "scale") : t).startsWith("rotate") || t.startsWith("skew") ? "deg" : "px",
i = t.startsWith("scale") ? 1 : 0 + i;
o += t + "(var(--e-transform-" + n + ", " + i + "))";
}),
o
);
},
},
{
key: "runAction",
value: function (e, t, n) {
t.affectedRange && (t.affectedRange.start > n && (n = t.affectedRange.start), t.affectedRange.end < n && (n = t.affectedRange.end));
for (var i = arguments.length, o = Array(3 < i ? i - 3 : 0), s = 3; s < i; s++) o[s - 3] = arguments[s];
this[e].apply(this, [t, n].concat(o));
},
},
{
key: "refresh",
value: function () {
(this.rulesVariables = {}), (this.CSSTransformVariables = []), this.$element.css({ transform: "", filter: "", opacity: "" });
},
},
{
key: "onInit",
value: function () {
(this.$element = this.getSettings("$targetElement")), this.refresh();
},
},
]),
n
);
})(elementorModules.Module);
t.default = s;
},
100: function (e, t, n) {
"use strict";
function c(t, n, e, i, o) {
function s() {
var e = c.getTimeRemaining(n);
o.each(e.parts, function (e) {
var e = r["$" + e + "Span"],
t = this.toString();
1 === t.length && (t = 0 + t), e.length && e.text(t);
}),
e.total <= 0 && (clearInterval(l), a());
}
var r = { $daysSpan: t.find(".elementor-countdown-days"), $hoursSpan: t.find(".elementor-countdown-hours"), $minutesSpan: t.find(".elementor-countdown-minutes"), $secondsSpan: t.find(".elementor-countdown-seconds") },
a = function () {
t.trigger("countdown_expire", t),
e &&
e.forEach(function (e) {
switch (e.type) {
case "hide":
t.hide();
break;
case "redirect":
e.redirect_url && !ceFrontend.isEditMode() && (e.redirect_is_external ? window.open(e.redirect_url) : (window.location.href = e.redirect_url));
break;
case "message":
i.show();
}
});
},
l = setInterval(s, 1e3);
s();
}
(c.getTimeRemaining = function (e) {
var e = e - new Date(),
t = Math.floor((e / 1e3) % 60),
n = Math.floor((e / 1e3 / 60) % 60),
i = Math.floor((e / 36e5) % 24),
o = Math.floor(e / 864e5);
return (o < 0 || i < 0 || n < 0) && (t = n = i = o = 0), { total: e, parts: { days: o, hours: i, minutes: n, seconds: t } };
}),
(e.exports = function (e, t) {
var n = e.find(".elementor-countdown-wrapper"),
i = new Date(1e3 * n.data("date")),
o = n.data("expire-actions"),
e = e.find(".elementor-countdown-expire--message");
c(n, i, o, e, t);
});
},
108: function (e, t, n) {
"use strict";
jQuery.fn.smartmenus &&
(jQuery.SmartMenus.prototype.isCSSOn = function () {
return !0;
});
var i = elementorModules.frontend.handlers.Base.extend({
stretchElement: null,
getDefaultSettings: function () {
return {
selectors: {
menu: ".elementor-nav",
anchorLink: ".elementor-nav--main .elementor-item-anchor",
mainMenu: ".elementor-nav__container.elementor-nav--main",
dropdownMenu: ".elementor-nav__container.elementor-nav--dropdown",
menuToggle: ".elementor-menu-toggle",
},
};
},
getDefaultElements: function () {
var e = this.getSettings("selectors"),
t = {};
return (
(t.$menu = this.$element.find(e.menu)),
(t.$anchorLink = this.$element.find(e.anchorLink)),
(t.$mainMenu = this.$element.find(e.mainMenu)),
(t.$dropdownMenu = this.$element.find(e.dropdownMenu)),
(t.$dropdownMenuFinalItems = t.$dropdownMenu.find(".menu-item:not(.menu-item-has-children) > a")),
(t.$menuToggle = this.$element.find(e.menuToggle)),
t
);
},
bindEvents: function () {
this.elements.$menu.length &&
(this.elements.$menuToggle.on("click", this.toggleMenu.bind(this)),
this.getElementSettings("full_width") && this.elements.$dropdownMenuFinalItems.on("click", this.toggleMenu.bind(this, !1)),
ceFrontend.addListenerOnce(this.$element.data("model-cid"), "resize", this.stretchMenu));
},
initStretchElement: function () {
this.stretchElement = new elementorModules.frontend.tools.StretchElement({ element: this.elements.$dropdownMenu });
},
toggleMenu: function (e) {
var t = this.elements.$menuToggle.hasClass("elementor-active");
this.elements.$menuToggle.toggleClass("elementor-active", (e = "boolean" != typeof e ? !t : e)), e && this.getElementSettings("full_width") && this.stretchElement.stretch();
},
followMenuAnchors: function () {
var e = this;
e.elements.$anchorLink.each(function () {
location.pathname === this.pathname && "" !== this.hash && e.followMenuAnchor(jQuery(this));
});
},
followMenuAnchor: function (t) {
var e = t[0].hash,
n = -300,
i = void 0;
try {
i = jQuery(decodeURIComponent(e));
} catch (e) {
return;
}
i.length &&
(i.hasClass("elementor-menu-anchor") || ((e = jQuery(window).height() / 2), (n = -i.outerHeight() + e)),
ceFrontend.waypoint(
i,
function (e) {
"down" === e ? t.addClass("elementor-item-active") : t.removeClass("elementor-item-active");
},
{ offset: "50%", triggerOnce: !1 }
),
ceFrontend.waypoint(
i,
function (e) {
"down" === e ? t.removeClass("elementor-item-active") : t.addClass("elementor-item-active");
},
{ offset: n, triggerOnce: !1 }
));
},
stretchMenu: function () {
this.getElementSettings("full_width") ? (this.stretchElement.stretch(), this.elements.$dropdownMenu.css("top", this.elements.$menuToggle.outerHeight())) : this.stretchElement.reset();
},
onInit: function () {
var e, t, n;
elementorModules.frontend.handlers.Base.prototype.onInit.apply(this, arguments),
this.elements.$menu.length &&
((e = this.getElementSettings("align_submenu")),
(t = "click" === this.getElementSettings("show_submenu_on")),
this.elements.$menu.smartmenus({ subIndicators: !1, subIndicatorsPos: "append", subMenusMaxWidth: "1000px", noMouseOver: t, rightToLeftSubMenus: e ? "right" === e : ceFrontend.config.is_rtl }),
t &&
this.elements.$mainMenu
.filter(".elementor-langs, .elementor-currencies, .elementor-sign-in")
.children()
.on(
"click",
"a.elementor-item.has-submenu.highlighted",
function (e) {
this.elements.$menu.smartmenus("menuHide", jQuery(e.currentTarget).next()), e.currentTarget.blur(), e.preventDefault();
}.bind(this)
),
"accordion" === this.getElementSettings("animation_dropdown") &&
(n = this.elements.$dropdownMenu.children().on("click.ce", "a.has-submenu", function () {
var e = jQuery(this.parentNode).siblings().children("a.highlighted").next();
e.length && n.smartmenus("menuHide", e);
})),
this.initStretchElement(),
this.stretchMenu(),
ceFrontend.isEditMode() || this.followMenuAnchors());
},
onElementChange: function (e) {
"full_width" === e && this.stretchMenu();
},
});
e.exports = function (e) {
new i({ $element: e });
};
},
122: function (e, t, n) {
"use strict";
var i = elementorModules.frontend.handlers.Base.extend({
getDefaultSettings: function () {
return {
selectors: {
wrapper: ".elementor-search",
container: ".elementor-search__container",
icon: ".elementor-search__icon",
input: ".elementor-search__input",
clear: ".elementor-search__clear",
toggle: ".elementor-search__toggle",
submit: ".elementor-search__submit",
closeButton: ".dialog-close-button",
},
classes: { isFocus: "elementor-search--focus", isTopbar: "elementor-search--topbar", lightbox: "elementor-lightbox" },
};
},
getDefaultElements: function () {
var e = this.getSettings("selectors"),
t = {};
return (
(t.$wrapper = this.$element.find(e.wrapper)),
(t.$container = this.$element.find(e.container)),
(t.$input = this.$element.find(e.input)),
(t.$clear = this.$element.find(e.clear)),
(t.$icon = this.$element.find(e.icon)),
(t.$toggle = this.$element.find(e.toggle)),
(t.$submit = this.$element.find(e.submit)),
(t.$closeButton = this.$element.find(e.closeButton)),
t
);
},
bindEvents: function () {
var e = this,
t = e.elements.$container,
n = e.elements.$closeButton,
i = e.elements.$input,
o = e.elements.$clear,
s = e.elements.$wrapper,
r = e.elements.$icon,
a = this.getElementSettings("skin"),
l = this.getSettings("classes");
i.one("focus", $.proxy(this, "loadAutocomplete")),
o.on("click", function () {
i.val("").triggerHandler("keydown"), o.css({ visibility: "", pointerEvents: "" });
}),
i.on("input", function () {
var e = !i.val();
o.css({ visibility: e ? "" : "visible", pointerEvents: e ? "" : "all" });
}),
"topbar" === a
? (e.elements.$toggle.on("click", function () {
t.toggleClass(l.isTopbar).toggleClass(l.lightbox), i.focus();
}),
n.on("click", function () {
t.removeClass(l.isTopbar).removeClass(l.lightbox);
}),
ceFrontend.elements.$document
.keyup(function (e) {
27 === e.keyCode && t.hasClass(l.isTopbar) && t.click();
})
.on("click", function (e) {
t.hasClass(l.isTopbar) && !$(e.target).closest(s).length && t.removeClass(l.isTopbar).removeClass(l.lightbox);
}))
: i.on({
focus: function () {
s.addClass(l.isFocus);
},
blur: function () {
s.removeClass(l.isFocus);
},
}),
"minimal" === a &&
r.on("click", function () {
s.addClass(l.isFocus), i.focus();
});
},
loadAutocomplete: function () {
var e = window.baseDir || prestashop.urls.base_url,
t = $.ui ? ($.ui.autocomplete ? "" : "jquery.ui.autocomplete") : "jquery-ui";
t
? ($('<link rel="stylesheet">')
.attr({ href: e + "js/jquery/ui/themes/base/minified/" + t + ".min.css" })
.appendTo(document.head),
"jquery-ui" == t &&
$('<link rel="stylesheet">')
.attr({ href: e + "js/jquery/ui/themes/base/minified/jquery.ui.theme.min.css" })
.appendTo(document.head),
$.ajax({ url: e + "js/jquery/ui/" + t + ".min.js", cache: !0, dataType: "script", success: $.proxy(this, "initAutocomplete") }))
: this.initAutocomplete();
},
initAutocomplete: function () {
$.fn.ceAjaxSearch ||
$.widget("ww.ceAjaxSearch", $.ui.autocomplete, {
_create: function () {
this._super(),
this.menu.element.addClass("elementor-search__products"),
this.element.on("focus" + this.eventNamespace, $.proxy(this, "_openOnFocus")),
$(document).on("click" + this.eventNamespace, $.proxy(this, "_closeOnDocumentClick")),
this._off(this.element, "blur"),
(this.menu.element.outerHeight = function () {
return window.event && "mouseover" === event.type ? 1 / 0 : $.fn.outerHeight.apply(this, arguments);
});
},
_openOnFocus: function (e) {
this.menu.element.show(), this._resizeMenu(), this.menu.element.position($.extend({ of: this.element }, this.options.position));
},
_closeOnDocumentClick: function (e) {
$(e.target).closest(this.options.appendTo).length || this._close();
},
search: function (e, t) {
(e = null != e ? e : this._value()), this._super(e, t), e.length < this.options.minLength && this.menu.element.empty();
},
_renderItem: function (e, t) {
var n = this.options.elementSettings,
i = (t.cover && t.cover.small.url) || prestashop.urls.img_prod_url + prestashop.language.iso_code + "-default-small_default.jpg";
return $('<li class="elementor-search__product">')
.html(
'<a class="elementor-search__product-link" href="' +
encodeURI(t.url) +
'">' +
(n.show_image ? '<img class="elementor-search__product-image" src="' + encodeURI(i) + '" alt="' + t.name.replace(/"/g, "&quot;") + '">' : "") +
'<div class="elementor-search__product-details"><div class="elementor-search__product-name">' +
t.name +
"</div>" +
(n.show_category ? '<div class="elementor-search__product-category">' + t.category_name + "</div>" : "") +
(n.show_description ? '<div class="elementor-search__product-description">' + (t.description_short || "").replace(/<\/?\w+.*?>/g, "") + "</div>" : "") +
(n.show_price ? '<div class="elementor-search__product-price">' + (t.has_discount ? "<del>" + t.regular_price + "</del> " : "") + t.price + "</div>" : "") +
"</div></a>"
)
.appendTo(e);
},
_resizeMenu: function () {
this._super(),
(this.options.position.my = "left top+" + this.menu.element.css("margin-top")),
setTimeout(
function () {
this.menu.element.css({ maxHeight: "calc(100vh - " + (this.menu.element.offset().top - $(window).scrollTop()) + "px)", overflowY: "auto", WebkitOverflowScrolling: "touch" });
}.bind(this),
1
);
},
});
var i = this.elements.$wrapper.prop("action"),
o = this.elements.$input.prop("name");
this.elements.$input.ceAjaxSearch({
appendTo: "topbar" === this.getElementSettings("skin") ? this.elements.$container : this.elements.$wrapper,
minLength: 3,
elementSettings: this.getElementSettings(),
source: function (e, t) {
var n = { ajax: !0, resultsPerPage: this.options.elementSettings.list_limit || 10 };
(n[o] = e.term),
$.post(i, n, null, "json")
.then(function (e) {
t(e.products);
})
.fail(t);
},
select: function (e, t) {
location.href === t.item.url || ceFrontend.isEditMode() || (location.href = t.item.url);
},
});
},
});
e.exports = function (e) {
new i({ $element: e });
};
},
123: function (e, t, n) {
"use strict";
var i = elementorModules.frontend.handlers.Base.extend({
svgPaths: {
circle: ["M325,18C228.7-8.3,118.5,8.3,78,21C22.4,38.4,4.6,54.6,5.6,77.6c1.4,32.4,52.2,54,142.6,63.7 c66.2,7.1,212.2,7.5,273.5-8.3c64.4-16.6,104.3-57.6,33.8-98.2C386.7-4.9,179.4-1.4,126.3,20.7"],
underline_zigzag: ["M9.3,127.3c49.3-3,150.7-7.6,199.7-7.4c121.9,0.4,189.9,0.4,282.3,7.2C380.1,129.6,181.2,130.6,70,139 c82.6-2.9,254.2-1,335.9,1.3c-56,1.4-137.2-0.3-197.1,9"],
x: ["M497.4,23.9C301.6,40,155.9,80.6,4,144.4", "M14.1,27.6c204.5,20.3,393.8,74,467.3,111.7"],
strikethrough: ["M3,75h493.5"],
curly: [
"M3,146.1c17.1-8.8,33.5-17.8,51.4-17.8c15.6,0,17.1,18.1,30.2,18.1c22.9,0,36-18.6,53.9-18.6 c17.1,0,21.3,18.5,37.5,18.5c21.3,0,31.8-18.6,49-18.6c22.1,0,18.8,18.8,36.8,18.8c18.8,0,37.5-18.6,49-18.6c20.4,0,17.1,19,36.8,19 c22.9,0,36.8-20.6,54.7-18.6c17.7,1.4,7.1,19.5,33.5,18.8c17.1,0,47.2-6.5,61.1-15.6",
],
diagonal: ["M13.5,15.5c131,13.7,289.3,55.5,475,125.5"],
double: ["M8.4,143.1c14.2-8,97.6-8.8,200.6-9.2c122.3-0.4,287.5,7.2,287.5,7.2", "M8,19.4c72.3-5.3,162-7.8,216-7.8c54,0,136.2,0,267,7.8"],
double_underline: ["M5,125.4c30.5-3.8,137.9-7.6,177.3-7.6c117.2,0,252.2,4.7,312.7,7.6", "M26.9,143.8c55.1-6.1,126-6.3,162.2-6.1c46.5,0.2,203.9,3.2,268.9,6.4"],
underline: ["M7.7,145.6C109,125,299.9,116.2,401,121.3c42.1,2.2,87.6,11.8,87.3,25.7"],
},
getDefaultSettings: function () {
var e = { animationDelay: 2500, lettersDelay: 50, typeLettersDelay: 150, selectionDuration: 500, revealDuration: 600, revealAnimationDelay: 1500 };
return (
(e.typeAnimationDelay = e.selectionDuration + 800),
(e.selectors = { headline: ".elementor-headline", dynamicWrapper: ".elementor-headline-dynamic-wrapper" }),
(e.classes = {
dynamicText: "elementor-headline-dynamic-text",
dynamicLetter: "elementor-headline-dynamic-letter",
textActive: "elementor-headline-text-active",
textInactive: "elementor-headline-text-inactive",
letters: "elementor-headline-letters",
animationIn: "elementor-headline-animation-in",
typeSelected: "elementor-headline-typing-selected",
}),
e
);
},
getDefaultElements: function () {
var e = this.getSettings("selectors");
return { $headline: this.$element.find(e.headline), $dynamicWrapper: this.$element.find(e.dynamicWrapper) };
},
getNextWord: function (e) {
return e.is(":last-child") ? e.parent().children().eq(0) : e.next();
},
switchWord: function (e, t) {
e.removeClass("elementor-headline-text-active").addClass("elementor-headline-text-inactive"), t.removeClass("elementor-headline-text-inactive").addClass("elementor-headline-text-active");
},
singleLetters: function () {
var i = this.getSettings("classes");
this.elements.$dynamicText.each(function () {
var t = jQuery(this),
e = t.text().split(""),
n = t.hasClass(i.textActive);
t.empty(),
e.forEach(function (e) {
e = jQuery("<span>", { class: i.dynamicLetter }).text(e);
n && e.addClass(i.animationIn), t.append(e);
}),
t.css("opacity", 1);
});
},
showLetter: function (e, t, n, i) {
var o = this,
s = this.getSettings("classes");
e.addClass(s.animationIn),
e.is(":last-child")
? n ||
setTimeout(function () {
o.hideWord(t);
}, o.getSettings("animationDelay"))
: setTimeout(function () {
o.showLetter(e.next(), t, n, i);
}, i);
},
hideLetter: function (e, t, n, i) {
var o = this,
s = this.getSettings();
e.removeClass(s.classes.animationIn),
e.is(":last-child")
? n &&
setTimeout(function () {
o.hideWord(o.getNextWord(t));
}, o.getSettings("animationDelay"))
: setTimeout(function () {
o.hideLetter(e.next(), t, n, i);
}, i);
},
showWord: function (e, t) {
var n = this,
i = n.getSettings(),
o = n.getElementSettings("animation_type");
"typing" === o
? (n.showLetter(e.find("." + i.classes.dynamicLetter).eq(0), e, !1, t), e.addClass(i.classes.textActive).removeClass(i.classes.textInactive))
: "clip" === o &&
n.elements.$dynamicWrapper.animate({ width: e.width() + 10 }, i.revealDuration, function () {
setTimeout(function () {
n.hideWord(e);
}, i.revealAnimationDelay);
});
},
hideWord: function (e) {
var t,
n = this,
i = n.getSettings(),
o = i.classes,
s = "." + o.dynamicLetter,
r = n.getElementSettings("animation_type"),
a = n.getNextWord(e);
"typing" === r
? (n.elements.$dynamicWrapper.addClass(o.typeSelected),
setTimeout(function () {
n.elements.$dynamicWrapper.removeClass(o.typeSelected), e.addClass(i.classes.textInactive).removeClass(o.textActive).children(s).removeClass(o.animationIn);
}, i.selectionDuration),
setTimeout(function () {
n.showWord(a, i.typeLettersDelay);
}, i.typeAnimationDelay))
: n.elements.$headline.hasClass(o.letters)
? ((t = e.children(s).length >= a.children(s).length), n.hideLetter(e.find(s).eq(0), e, t, i.lettersDelay), n.showLetter(a.find(s).eq(0), a, t, i.lettersDelay))
: "clip" === r
? n.elements.$dynamicWrapper.animate({ width: "2px" }, i.revealDuration, function () {
n.switchWord(e, a), n.showWord(a);
})
: (n.switchWord(e, a),
setTimeout(function () {
n.hideWord(a);
}, i.animationDelay));
},
animateHeadline: function () {
var t,
e = this,
n = e.getElementSettings("animation_type"),
i = e.elements.$dynamicWrapper;
"clip" === n
? i.width(i.width() + 10)
: "typing" !== n &&
((t = 0),
e.elements.$dynamicText.each(function () {
var e = jQuery(this).width();
t < e && (t = e);
}),
i.css("width", t)),
setTimeout(function () {
e.hideWord(e.elements.$dynamicText.eq(0));
}, e.getSettings("animationDelay"));
},
getSvgPaths: function (e) {
var e = this.svgPaths[e],
t = jQuery();
return (
e.forEach(function (e) {
t = t.add(jQuery("<path>", { d: e }));
}),
t
);
},
fillWords: function () {
var e,
t = this.getElementSettings(),
n = this.getSettings("classes"),
i = this.elements.$dynamicWrapper;
"rotate" === t.headline_style
? (t.rotating_text || "").split("\n").forEach(function (e, t) {
e = jQuery("<span>", { class: n.dynamicText }).html(e.replace(/ /g, "&nbsp;"));
t || e.addClass(n.textActive), i.append(e);
})
: ((e = jQuery("<span>", { class: n.dynamicText + " " + n.textActive }).text(t.highlighted_text)),
(t = jQuery("<svg>", { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 500 150", preserveAspectRatio: "none" }).html(this.getSvgPaths(t.marker))),
i.append(e, t[0].outerHTML)),
(this.elements.$dynamicText = i.children("." + n.dynamicText));
},
rotateHeadline: function () {
var e = this.getSettings();
this.elements.$headline.hasClass(e.classes.letters) && this.singleLetters(), this.animateHeadline();
},
initHeadline: function () {
"rotate" === this.getElementSettings("headline_style") && this.rotateHeadline();
},
onInit: function () {
elementorModules.frontend.handlers.Base.prototype.onInit.apply(this, arguments), this.fillWords(), this.initHeadline();
},
});
e.exports = function (e, t) {
new i({ $element: e });
};
},
124: function (e, t, n) {
"use strict";
var s = elementorModules.frontend.handlers.Base.extend({
getDefaultSettings: function () {
return {
selectors: { container: ".elementor-cart__container", toggle: ".elementor-cart__toggle .elementor-button", closeButton: ".elementor-cart__close-button" },
classes: { isShown: "elementor-cart--shown", lightbox: "elementor-lightbox", isHidden: "elementor-cart-hidden" },
};
},
getDefaultElements: function () {
var e = this.getSettings("selectors"),
t = {};
return (t.$container = this.$element.find(e.container)), (t.$toggle = this.$element.find(e.toggle)), (t.$closeButton = this.$element.find(e.closeButton)), t;
},
bindEvents: function () {
var n = this,
c = jQuery,
i = n.elements.$container,
e = n.elements.$closeButton,
o = this.getSettings("classes");
n.elements.$toggle.on("click", function (e) {
n.elements.$toggle.hasClass(o.isHidden) || (e.preventDefault(), i.toggleClass(o.isShown));
}),
i.on("click", function (e) {
i.hasClass(o.isShown) && i[0] === e.target && i.removeClass(o.isShown);
}),
e.on("click", function () {
i.removeClass(o.isShown);
}),
ceFrontend.elements.$document.keyup(function (e) {
27 === e.keyCode && i.hasClass(o.isShown) && i.click();
}),
i.on("click", ".elementor-cart__product-remove a", function (e) {
var t = c(this).data();
(t.linkAction = "delete-from-cart"),
c(this).closest(".elementor-cart__product").addClass("ce-disabled"),
e.preventDefault(),
c
.ajax({ url: this.href, method: "POST", dataType: "json", data: { ajax: 1, action: "update" } })
.then(function (e) {
prestashop.emit("updateCart", { reason: t, resp: e });
})
.fail(function (e) {
prestashop.emit("handleError", { eventType: "updateProductInCart", resp: e, cartAction: t.linkAction });
});
}),
prestashop.on("updateCart", function (e) {
var t, a, l;
e &&
e.resp &&
e.resp.cart &&
((t = e.resp.cart),
(a = i.find(".elementor-cart__products").data("gift")),
(l = c()),
n.getElementSettings("action_show_modal") &&
"add-to-cart" === e.reason.linkAction &&
!e.resp.hasError &&
(s.xhr && s.xhr.abort(),
(s.xhr = c.post(
n.getElementSettings("modal_url"),
{ ajax: !0, action: "addToCartModal", id_product: e.reason.idProduct, id_product_attribute: e.reason.idProductAttribute, id_customization: e.reason.idCustomization },
function (e) {
c("#blockcart-modal").remove(), c(document.body).append(e.modal).children("#blockcart-modal").modal();
},
"json"
))),
n.elements.$toggle.find(".elementor-button-text").html(t.subtotals.products.value),
n.elements.$toggle.find(".elementor-button-icon").attr("data-counter", t.products_count).data("counter", t.products_count),
t.products.forEach(function (e) {
var t,
n = c(
'<div class="elementor-cart__product"><div class="elementor-cart__product-image"></div><div class="elementor-cart__product-name"><div class="elementor-cart__product-attrs"></div></div><div class="elementor-cart__product-price"></div><div class="elementor-cart__product-remove ceicon-times"></div></div>'
),
i = n.find(".elementor-cart__product-attrs"),
o = e.cover || prestashop.urls.no_picture_image;
if (e.embedded_attributes && e.embedded_attributes.id_image)
for (var s = e.embedded_attributes.id_image.split("-").pop(), r = 0; r < e.images.length; r++)
if (s == e.images[r].id_image) {
o = e.images[r];
break;
}
for (t in (c("<img>")
.appendTo(n.find(".elementor-cart__product-image"))
.attr({ src: (o.bySize.cart_default && o.bySize.cart_default.url) || o.small.url, alt: o.legend }),
c("<a>").prependTo(n.find(".elementor-cart__product-name")).attr("href", e.url).html(e.name),
e.attributes))
c('<div class="elementor-cart__product-attr">')
.html('<span class="elementor-cart__product-attr-label">' + t + ':</span> <span class="elementor-cart__product-attr-value">' + e.attributes[t] + "</span>")
.appendTo(i);
e.customizations &&
e.customizations.forEach(function (e) {
e.fields.forEach(function (e) {
c('<div class="elementor-cart__product-attr">')
.html(
'<span class="elementor-cart__product-attr-label">' +
e.label +
':</span> <span class="elementor-cart__product-attr-value">' +
("image" === e.type ? c("<img>").attr("src", e.image.small.url)[0].outerHTML : e.text) +
"</span>"
)
.appendTo(i);
});
}),
n
.find(".elementor-cart__product-price")
.html('<span class="elementor-cart__product-quantity">' + e.quantity + "</span> &times; " + (e.is_gift ? a : e.price) + " ")
.append(e.has_discount ? c("<del>").html(e.regular_price) : []),
c("<a>")
.appendTo(n.find(".elementor-cart__product-remove"))
.attr({ href: e.remove_from_cart_url, rel: "nofollow", "data-id-product": e.id_product, "data-id-product-attribute": e.id_product_attribute, "data-id-customization": e.id_customization })
.data({ idProduct: e.id_product, idProductAttribute: e.id_product_attribute, idCustomization: e.id_customization }),
l.push(n[0]);
}),
i.find(".elementor-cart__products").empty().append(l),
i.find(".elementor-cart__empty-message").toggleClass("elementor-hidden", !!t.products_count),
i
.find(".elementor-cart__summary")
.html(
'<div class="elementor-cart__summary-label">' +
t.summary_string +
'</div><div class="elementor-cart__summary-value">' +
t.subtotals.products.value +
'</div><span class="elementor-cart__summary-label">' +
t.subtotals.shipping.label +
'</span><span class="elementor-cart__summary-value">' +
t.subtotals.shipping.value +
'</span><strong class="elementor-cart__summary-label">' +
t.totals.total.label +
'</strong><strong class="elementor-cart__summary-value">' +
t.totals.total.value +
"</strong>"
),
i
.find(".elementor-alert-warning")
.toggleClass("elementor-hidden", !t.minimalPurchaseRequired)
.html('<span class="elementor-alert-description">' + t.minimalPurchaseRequired + "</span>"),
i.find(".elementor-button--checkout").toggleClass("ce-disabled", t.minimalPurchaseRequired || !t.products_count),
n.getElementSettings("action_open_cart") && !n.elements.$container.hasClass(o.isShown) && n.elements.$toggle.triggerHandler("click"));
});
},
});
e.exports = function (e) {
new s({ $element: e });
};
},
182: function (e, t, n) {
"use strict";
var i = function (e, t, n) {
return t && o(e.prototype, t), n && o(e, n), e;
};
function o(e, t) {
for (var n = 0; n < t.length; n++) {
var i = t[n];
(i.enumerable = i.enumerable || !1), (i.configurable = !0), "value" in i && (i.writable = !0), Object.defineProperty(e, i.key, i);
}
}
var r = s(n(183)),
a = s(n(16)),
l = s(n(15)),
c = s(n(1));
function s(e) {
return e && e.__esModule ? e : { default: e };
}
var d = n(13),
u = n(184),
h = n(196),
m = n(197),
p = n(198),
f = s(n(199)),
g = s(n(90)),
n = (function (e) {
var t = s;
if ("function" != typeof e && null !== e) throw new TypeError("Super expression must either be null or a function, not " + typeof e);
function s() {
var e = this,
t = s;
if (!(e instanceof t)) throw new TypeError("Cannot call a class as a function");
for (var n = arguments.length, i = Array(n), o = 0; o < n; o++) i[o] = arguments[o];
t = (function (e, t) {
if (e) return !t || ("object" != typeof t && "function" != typeof t) ? e : t;
throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
})(this, (e = s.__proto__ || Object.getPrototypeOf(s)).call.apply(e, [this].concat(i)));
return (t.config = ceFrontendConfig), t;
}
return (
(t.prototype = Object.create(e && e.prototype, { constructor: { value: t, enumerable: !1, writable: !0, configurable: !0 } })),
e && (Object.setPrototypeOf ? Object.setPrototypeOf(t, e) : (t.__proto__ = e)),
i(s, [
{
key: "getDefaultSettings",
value: function () {
return { selectors: { elementor: ".elementor", adminBar: "#wpadminbar" }, classes: { ie: "elementor-msie" } };
},
},
{
key: "getDefaultElements",
value: function () {
var e = {
window: window,
$window: jQuery(window),
$document: jQuery(document),
$head: jQuery(document.head),
$body: jQuery(document.body),
$deviceMode: jQuery("<span>", { id: "elementor-device-mode", class: "elementor-screen-only" }),
};
return e.$body.append(e.$deviceMode), e;
},
},
{
key: "bindEvents",
value: function () {
var e = this;
this.elements.$window.on("resize", function () {
return e.setDeviceModeData();
});
},
},
{
key: "getElements",
value: function (e) {
return this.getItems(this.elements, e);
},
},
{
key: "getPageSettings",
value: function (e) {
var t = this.isEditMode() ? elementor.settings.page.model.attributes : this.config.settings.page;
return this.getItems(t, e);
},
},
{
key: "getGeneralSettings",
value: function (e) {
var t = this.isEditMode() ? elementor.settings.general.model.attributes : this.config.settings.general;
return this.getItems(t, e);
},
},
{
key: "getCurrentDeviceMode",
value: function () {
return getComputedStyle(this.elements.$deviceMode[0], ":after").content.replace(/"/g, "");
},
},
{
key: "getCurrentDeviceSetting",
value: function (e, t) {
for (var n = ["desktop", "tablet", "mobile"], i = ceFrontend.getCurrentDeviceMode(), o = n.indexOf(i); 0 < o; ) {
var s = e[t + "_" + n[o]];
if (s) return s;
o--;
}
return e[t];
},
},
{
key: "isEditMode",
value: function () {
return this.config.environmentMode.edit;
},
},
{
key: "isWPPreviewMode",
value: function () {
return this.config.environmentMode.wpPreview;
},
},
{
key: "initDialogsManager",
value: function () {
var e = void 0;
this.getDialogsManager = function () {
return (e = e || new DialogsManager.Instance());
};
},
},
{
key: "initHotKeys",
value: function () {
(this.hotKeys = new a.default()), this.hotKeys.bindListener(this.elements.$window);
},
},
{
key: "initOnReadyComponents",
value: function () {
(this.utils = { youtube: new h(), anchors: new m(), lightbox: new p() }), (this.elementsHandler = new u(jQuery)), (this.documentsManager = new r.default()), this.trigger("components:init");
},
},
{
key: "initOnReadyElements",
value: function () {
this.elements.$wpAdminBar = this.elements.$document.find(this.getSettings("selectors.adminBar"));
},
},
{
key: "addIeCompatibility",
value: function () {
var e = "string" == typeof document.createElement("div").style.grid;
(!c.default.ie && e) ||
(this.elements.$body.addClass(this.getSettings("classes.ie")),
(e = '<link rel="stylesheet" id="elementor-frontend-css-msie" href="' + this.config.urls.assets + "css/frontend-msie.min.css?" + this.config.version + '" type="text/css" />'),
this.elements.$body.append(e));
},
},
{
key: "setDeviceModeData",
value: function () {
this.elements.$body.attr("data-elementor-device-mode", this.getCurrentDeviceMode());
},
},
{
key: "addListenerOnce",
value: function (e, t, n, i) {
(i = i || this.elements.$window), this.isEditMode() ? (this.removeListeners(e, t, i), i instanceof jQuery ? i.on(t + "." + e, n) : i.on(t, n, e)) : i.on(t, n);
},
},
{
key: "removeListeners",
value: function (e, t, n, i) {
(i = i || this.elements.$window) instanceof jQuery ? i.off(t + "." + e, n) : i.off(t, n, e);
},
},
{
key: "debounce",
value: function (i, o) {
var s = void 0;
return function () {
var e = this,
t = arguments,
n = !s;
clearTimeout(s),
(s = setTimeout(function () {
(s = null), i.apply(e, t);
}, o)),
n && i.apply(e, t);
};
},
},
{
key: "waypoint",
value: function (e, t, n) {
function i() {
var e = this.element || this,
e = t.apply(e, arguments);
return n.triggerOnce && this.destroy && this.destroy(), e;
}
n = jQuery.extend({ offset: "100%", triggerOnce: !0 }, n);
return e.elementorWaypoint ? e.elementorWaypoint(i, n) : e.waypoint(i, n);
},
},
{
key: "muteMigrationTraces",
value: function () {
(jQuery.migrateMute = !0), (jQuery.migrateTrace = !1);
},
},
{
key: "init",
value: function () {
(this.hooks = new d()),
(this.storage = new l.default()),
this.addIeCompatibility(),
this.setDeviceModeData(),
this.initDialogsManager(),
this.isEditMode() && this.muteMigrationTraces(),
(this.modules = { linkActions: new f.default(), motionFX: new g.default() }),
this.elements.$window.trigger("elementor/frontend/init"),
this.isEditMode() || this.initHotKeys(),
this.initOnReadyElements(),
this.initOnReadyComponents();
},
},
{
key: "Module",
get: function () {
return elementorModules.frontend.handlers.Base;
},
},
]),
s
);
})(elementorModules.ViewModule);
(window.ceFrontend = new n()),
ceFrontend.isEditMode() ||
jQuery(function () {
return ceFrontend.init();
});
},
183: function (e, t, n) {
"use strict";
Object.defineProperty(t, "__esModule", { value: !0 });
var i = function (e, t, n) {
return t && o(e.prototype, t), n && o(e, n), e;
};
function o(e, t) {
for (var n = 0; n < t.length; n++) {
var i = t[n];
(i.enumerable = i.enumerable || !1), (i.configurable = !0), "value" in i && (i.writable = !0), Object.defineProperty(e, i.key, i);
}
}
var n = n(17),
r = (n = n) && n.__esModule ? n : { default: n };
n = (function (e) {
var t = s;
if ("function" != typeof e && null !== e) throw new TypeError("Super expression must either be null or a function, not " + typeof e);
function s() {
var e = this,
t = s;
if (!(e instanceof t)) throw new TypeError("Cannot call a class as a function");
for (var n = arguments.length, i = Array(n), o = 0; o < n; o++) i[o] = arguments[o];
t = (function (e, t) {
if (e) return !t || ("object" != typeof t && "function" != typeof t) ? e : t;
throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
})(this, (e = s.__proto__ || Object.getPrototypeOf(s)).call.apply(e, [this].concat(i)));
return (t.documents = {}), t.initDocumentClasses(), t.attachDocumentsClasses(), t;
}
return (
(t.prototype = Object.create(e && e.prototype, { constructor: { value: t, enumerable: !1, writable: !0, configurable: !0 } })),
e && (Object.setPrototypeOf ? Object.setPrototypeOf(t, e) : (t.__proto__ = e)),
i(s, [
{
key: "getDefaultSettings",
value: function () {
return { selectors: { document: ".elementor" } };
},
},
{
key: "getDefaultElements",
value: function () {
var e = this.getSettings("selectors");
return { $documents: jQuery(e.document) };
},
},
{
key: "initDocumentClasses",
value: function () {
(this.documentClasses = { base: r.default }), ceFrontend.hooks.doAction("elementor/frontend/documents-manager/init-classes", this);
},
},
{
key: "addDocumentClass",
value: function (e, t) {
this.documentClasses[e] = t;
},
},
{
key: "attachDocumentsClasses",
value: function () {
var n = this;
this.elements.$documents.each(function (e, t) {
return n.attachDocumentClass(jQuery(t));
});
},
},
{
key: "attachDocumentClass",
value: function (e) {
var t = e.data(),
n = t.elementorId,
t = t.elementorType,
t = this.documentClasses[t] || this.documentClasses.base;
this.documents[n] = new t({ $element: e, id: n });
},
},
]),
s
);
})(elementorModules.ViewModule);
t.default = n;
},
184: function (e, t, i) {
"use strict";
e.exports = function (n) {
var e = this,
t = {
section: i(185),
"accordion.default": i(186),
"alert.default": i(187),
"counter.default": i(188),
"countdown.default": i(100),
"product-sale-countdown.default": i(100),
"nav-menu.default": i(108),
"language-selector.default": i(108),
"currency-selector.default": i(108),
"sign-in.default": i(108),
"ajax-search.default": i(122),
"animated-headline.default": i(123),
"shopping-cart.default": i(124),
"progress.default": i(189),
"tabs.default": i(190),
"toggle.default": i(191),
"video.default": i(192),
"image-carousel.default": i(193),
"testimonial-carousel.default": i(193),
"product-carousel.default": i(193),
"trustedshops-reviews.default": i(193),
"text-editor.default": i(194),
"contact-form.default": i(200),
"email-subscription.default": i(200),
"product-images.default": i(202),
},
s = {};
(this.initHandlers = function () {
ceFrontend.hooks.addAction("frontend/element_ready/global", i(195)),
n.each(t, function (e, t) {
ceFrontend.hooks.addAction("frontend/element_ready/" + e, t);
}),
ceFrontend.hooks.addAction("frontend/element_ready/section", i(10)),
ceFrontend.hooks.addAction("frontend/element_ready/widget", i(10));
}),
(this.addHandler = function (e, t) {
var n = t.$element.data("model-cid"),
i = void 0,
o = (n && ((i = e.prototype.getConstructorID()), s[n] || (s[n] = {}), (o = s[n][i]) && o.onDestroy()), new e(t));
n && (s[n][i] = o);
}),
(this.getHandlers = function (e) {
return e ? t[e] : t;
}),
(this.runReadyTrigger = function (e) {
var e = jQuery(e),
t = e.attr("data-element_type");
t &&
(ceFrontend.hooks.doAction("frontend/element_ready/global", e, n),
ceFrontend.hooks.doAction("frontend/element_ready/" + t, e, n),
"widget" === t && ceFrontend.hooks.doAction("frontend/element_ready/" + e.attr("data-widget_type"), e, n));
}),
e.initHandlers();
};
},
185: function (e, t, n) {
"use strict";
var i = elementorModules.frontend.handlers.Base.extend({
player: null,
isYTVideo: null,
getDefaultSettings: function () {
return { selectors: { backgroundVideoContainer: ".elementor-background-video-container", backgroundVideoEmbed: ".elementor-background-video-embed", backgroundVideoHosted: ".elementor-background-video-hosted" } };
},
getDefaultElements: function () {
var e = this.getSettings("selectors"),
t = { $backgroundVideoContainer: this.$element.find(e.backgroundVideoContainer) };
return (t.$backgroundVideoEmbed = t.$backgroundVideoContainer.children(e.backgroundVideoEmbed)), (t.$backgroundVideoHosted = t.$backgroundVideoContainer.children(e.backgroundVideoHosted)), t;
},
calcVideosSize: function () {
var e = this.elements.$backgroundVideoContainer.outerWidth(),
t = this.elements.$backgroundVideoContainer.outerHeight(),
n = "16:9".split(":"),
n = n[0] / n[1],
i = n < e / t;
return { width: i ? e : t * n, height: i ? e / n : t };
},
changeVideoSize: function () {
var e, t;
(this.isYTVideo && !this.player) || ((e = this.isYTVideo ? jQuery(this.player.getIframe()) : this.elements.$backgroundVideoHosted), (t = this.calcVideosSize()), e.width(t.width).height(t.height));
},
startVideoLoop: function () {
var e,
t,
n = this;
n.player.getIframe().contentWindow &&
((e = (t = n.getElementSettings()).background_video_start || 0),
(t = t.background_video_end),
n.player.seekTo(e),
t &&
setTimeout(function () {
n.startVideoLoop();
}, 1e3 * (t - e + 1)));
},
prepareYTVideo: function (t, e) {
var n = this,
i = n.elements.$backgroundVideoContainer,
o = n.getElementSettings(),
s = t.PlayerState.PLAYING;
window.chrome && (s = t.PlayerState.UNSTARTED),
i.addClass("elementor-loading elementor-invisible"),
(n.player = new t.Player(n.elements.$backgroundVideoEmbed[0], {
videoId: e,
events: {
onReady: function () {
n.player.mute(), n.changeVideoSize(), n.startVideoLoop(), n.player.playVideo();
},
onStateChange: function (e) {
switch (e.data) {
case s:
i.removeClass("elementor-invisible elementor-loading");
break;
case t.PlayerState.ENDED:
n.player.seekTo(o.background_video_start || 0);
}
},
},
playerVars: { controls: 0, rel: 0 },
}));
},
activate: function () {
var t = this,
e = t.getElementSettings("background_video_link"),
n = ceFrontend.utils.youtube.getYoutubeIDFromURL(e);
(t.isYTVideo = !!n),
n
? ceFrontend.utils.youtube.onYoutubeApiReady(function (e) {
setTimeout(function () {
t.prepareYTVideo(e, n);
});
})
: t.elements.$backgroundVideoHosted.attr("src", e).one("canplay", t.changeVideoSize),
ceFrontend.elements.$window.on("resize", t.changeVideoSize);
},
deactivate: function () {
this.isYTVideo && this.player.getIframe() ? this.player.destroy() : this.elements.$backgroundVideoHosted.removeAttr("src"), ceFrontend.elements.$window.off("resize", this.changeVideoSize);
},
run: function () {
var e = this.getElementSettings();
"video" === e.background_background && e.background_video_link ? this.activate() : this.deactivate();
},
onInit: function () {
elementorModules.frontend.handlers.Base.prototype.onInit.apply(this, arguments), this.run();
},
onElementChange: function (e) {
"background_background" === e && this.run();
},
}),
o = elementorModules.frontend.handlers.Base.extend({
stretchElement: null,
bindEvents: function () {
var e = this.getUniqueHandlerID();
ceFrontend.addListenerOnce(e, "resize", this.stretch), ceFrontend.addListenerOnce(e, "sticky:stick", this.stretch, this.$element), ceFrontend.addListenerOnce(e, "sticky:unstick", this.stretch, this.$element);
},
unbindEvents: function () {
ceFrontend.removeListeners(this.getUniqueHandlerID(), "resize", this.stretch);
},
initStretch: function () {
this.stretchElement = new elementorModules.frontend.tools.StretchElement({ element: this.$element, selectors: { container: this.getStretchContainer() } });
},
getStretchContainer: function () {
return ceFrontend.getGeneralSettings("elementor_stretched_section_container") || document.documentElement;
},
stretch: function () {
this.getElementSettings("stretch_section") && this.stretchElement.stretch();
},
onInit: function () {
elementorModules.frontend.handlers.Base.prototype.onInit.apply(this, arguments), this.initStretch(), this.stretch();
},
onElementChange: function (e) {
"stretch_section" === e && (this.getElementSettings("stretch_section") ? this.stretch() : this.stretchElement.reset());
},
onGeneralSettingsChange: function (e) {
"elementor_stretched_section_container" in e && (this.stretchElement.setSettings("selectors.container", this.getStretchContainer()), this.stretch());
},
}),
s = elementorModules.frontend.handlers.Base.extend({
getDefaultSettings: function () {
return { selectors: { container: "> .elementor-shape-%s" }, svgURL: ceFrontend.config.urls.assets + "img/shapes/" };
},
getDefaultElements: function () {
var e = {},
t = this.getSettings("selectors");
return (e.$topContainer = this.$element.find(t.container.replace("%s", "top"))), (e.$bottomContainer = this.$element.find(t.container.replace("%s", "bottom"))), e;
},
getSvgURL: function (e, t) {
t = this.getSettings("svgURL") + t + ".svg";
return (t = elementor.config.additional_shapes && e in elementor.config.additional_shapes ? elementor.config.additional_shapes[e] : t);
},
buildSVG: function (e) {
var t,
n = "shape_divider_" + e,
i = this.getElementSettings(n),
o = this.elements["$" + e + "Container"];
o.attr("data-shape", i),
i
? ((t = i),
this.getElementSettings(n + "_negative") && (t += "-negative"),
(n = this.getSvgURL(i, t)),
jQuery.get(n, function (e) {
o.empty().append(e.childNodes[0]);
}),
this.setNegative(e))
: o.empty();
},
setNegative: function (e) {
this.elements["$" + e + "Container"].attr("data-negative", !!this.getElementSettings("shape_divider_" + e + "_negative"));
},
onInit: function () {
var t = this;
elementorModules.frontend.handlers.Base.prototype.onInit.apply(t, arguments),
["top", "bottom"].forEach(function (e) {
t.getElementSettings("shape_divider_" + e) && t.buildSVG(e);
});
},
onElementChange: function (e) {
var t = e.match(/^shape_divider_(top|bottom)$/);
t ? this.buildSVG(t[1]) : (t = e.match(/^shape_divider_(top|bottom)_negative$/)) && (this.buildSVG(t[1]), this.setNegative(t[1]));
},
}),
r = elementorModules.frontend.handlers.Base.extend({
isFirstSection: function () {
return this.$element.is(".elementor-edit-mode .elementor-top-section:first");
},
isOverflowHidden: function () {
return "hidden" === this.$element.css("overflow");
},
getOffset: function () {
if ("body" === elementor.config.document.container) return this.$element.offset().top;
var e = jQuery(elementor.config.document.container);
return this.$element.offset().top - e.offset().top;
},
setHandlesPosition: function () {
var e,
t,
n = this.isOverflowHidden();
(n || this.isFirstSection()) &&
((n = n ? 0 : this.getOffset()),
(e = this.$element.find("> .elementor-element-overlay > .elementor-editor-section-settings")),
(t = "elementor-section--handles-inside"),
n < 25 || this.$element.closest('[data-elementor-type^="product-"]').length ? (this.$element.addClass(t), n < -5 ? e.css("top", -n) : e.css("top", "")) : this.$element.removeClass(t));
},
onInit: function () {
this.setHandlesPosition(), this.$element.on("mouseenter", this.setHandlesPosition);
},
});
e.exports = function (e) {
(ceFrontend.isEditMode() || e.hasClass("elementor-section-stretched")) && ceFrontend.elementsHandler.addHandler(o, { $element: e }),
ceFrontend.isEditMode() && (ceFrontend.elementsHandler.addHandler(s, { $element: e }), ceFrontend.elementsHandler.addHandler(r, { $element: e })),
ceFrontend.elementsHandler.addHandler(i, { $element: e });
};
},
186: function (e, t, n) {
"use strict";
var i = n(18);
e.exports = function (e) {
ceFrontend.elementsHandler.addHandler(i, { $element: e, showTabFn: "slideDown", hideTabFn: "slideUp" });
};
},
187: function (e, t, n) {
"use strict";
e.exports = function (e, t) {
e.find(".elementor-alert-dismiss").on("click", function () {
t(this).parent().fadeOut();
});
};
},
188: function (e, t, n) {
"use strict";
e.exports = function (e, i) {
ceFrontend.waypoint(e.find(".elementor-counter-number"), function () {
var e = i(this),
t = e.data(),
n = t.toValue.toString().match(/\.(.*)/);
n && (t.rounding = n[1].length), e.numerator(t);
});
};
},
189: function (e, t, n) {
"use strict";
e.exports = function (e, t) {
ceFrontend.waypoint(e.find(".elementor-progress-bar"), function () {
var e = t(this);
e.css("width", e.data("max") + "%");
});
};
},
190: function (e, t, n) {
"use strict";
var i = n(18);
e.exports = function (e) {
ceFrontend.elementsHandler.addHandler(i, { $element: e, toggleSelf: !1 });
};
},
191: function (e, t, n) {
"use strict";
var i = n(18);
e.exports = function (e) {
ceFrontend.elementsHandler.addHandler(i, { $element: e, showTabFn: "slideDown", hideTabFn: "slideUp", hidePrevious: !1, autoExpand: "editor" });
};
},
192: function (e, t, n) {
"use strict";
var i = elementorModules.frontend.handlers.Base.extend({
getDefaultSettings: function () {
return { selectors: { imageOverlay: ".elementor-custom-embed-image-overlay", video: ".elementor-video", videoIframe: ".elementor-video-iframe" } };
},
getDefaultElements: function () {
var e = this.getSettings("selectors");
return { $imageOverlay: this.$element.find(e.imageOverlay), $video: this.$element.find(e.video), $videoIframe: this.$element.find(e.videoIframe) };
},
getLightBox: function () {
return ceFrontend.utils.lightbox;
},
handleVideo: function () {
this.getElementSettings("lightbox") || (this.elements.$imageOverlay.remove(), this.playVideo());
},
playVideo: function () {
var e, t;
this.elements.$video.length ? this.elements.$video[0].play() : ((t = (e = this.elements.$videoIframe).data("lazy-load")) && e.attr("src", t), (t = e[0].src.replace("&autoplay=0", "")), (e[0].src = t + "&autoplay=1"));
},
animateVideo: function () {
this.getLightBox().setEntranceAnimation(this.getCurrentDeviceSetting("lightbox_content_animation"));
},
handleAspectRatio: function () {
this.getLightBox().setVideoAspectRatio(this.getElementSettings("aspect_ratio"));
},
bindEvents: function () {
this.elements.$imageOverlay.on("click", this.handleVideo);
},
onElementChange: function (e) {
var t;
0 === e.indexOf("lightbox_content_animation")
? this.animateVideo()
: ((t = this.getElementSettings("lightbox")), "lightbox" !== e || t ? "aspect_ratio" === e && t && this.handleAspectRatio() : this.getLightBox().getModal().hide());
},
});
e.exports = function (e) {
ceFrontend.elementsHandler.addHandler(i, { $element: e });
};
},
193: function (e, t, n) {
"use strict";
var i = elementorModules.frontend.handlers.Base.extend({
getDefaultSettings: function () {
return { selectors: { carousel: ".elementor-image-carousel" } };
},
getDefaultElements: function () {
var e = this.getSettings("selectors");
return { $carousel: this.$element.find(e.carousel) };
},
onInit: function () {
elementorModules.frontend.handlers.Base.prototype.onInit.apply(this, arguments);
var e = this.getElementSettings(),
t = +e.slides_to_show || e.default_slides_count,
n = 1 === t,
i = e.center_padding && e.center_padding.size + "",
o = e.center_padding_tablet && e.center_padding_tablet.size + "",
s = e.center_padding_mobile && e.center_padding_mobile.size + "",
r = (!n && e.default_slides_count - 1) || 1,
a = ceFrontend.config.breakpoints,
t = {
touchThreshold: 100,
slidesToShow: t,
slidesToScroll: +e.slides_to_scroll || 1,
swipeToSlide: !e.slides_to_scroll,
variableWidth: "yes" === e.variable_width,
centerMode: "yes" === e.center_mode,
centerPadding: i ? i + e.center_padding.unit : void 0,
autoplay: "yes" === e.autoplay,
autoplaySpeed: e.autoplay_speed,
infinite: "yes" === e.infinite,
pauseOnHover: "yes" === e.pause_on_hover,
speed: e.speed,
arrows: -1 !== ["arrows", "both"].indexOf(e.navigation),
dots: -1 !== ["dots", "both"].indexOf(e.navigation),
rtl: "rtl" === e.direction,
responsive: [
{
breakpoint: a.lg,
settings: {
centerPadding: o ? o + e.center_padding_tablet.unit : void 0,
slidesToShow: +e.slides_to_show_tablet || r,
slidesToScroll: +e.slides_to_scroll_tablet || 1,
swipeToSlide: !e.slides_to_scroll_tablet,
autoplay: "yes" === e.autoplay_tablet,
infinite: e.infinite_tablet ? "yes" === e.infinite_tablet : void 0,
},
},
{
breakpoint: a.md,
settings: {
centerPadding: s ? s + e.center_padding_mobile.unit : o ? o + e.center_padding_tablet.unit : void 0,
slidesToShow: +e.slides_to_show_mobile || 1,
slidesToScroll: +e.slides_to_scroll_mobile || 1,
swipeToSlide: !e.slides_to_scroll_mobile,
autoplay: "yes" === e.autoplay_mobile,
infinite: e.infinite_mobile ? "yes" === e.infinite_mobile : void 0,
},
},
],
};
n && (t.fade = "fade" === e.effect), this.elements.$carousel.slick(t);
},
});
e.exports = function (e) {
ceFrontend.elementsHandler.addHandler(i, { $element: e });
};
},
194: function (e, t, n) {
"use strict";
var i = elementorModules.frontend.handlers.Base.extend({
dropCapLetter: "",
getDefaultSettings: function () {
return { selectors: { paragraph: "p:first" }, classes: { dropCap: "elementor-drop-cap", dropCapLetter: "elementor-drop-cap-letter" } };
},
getDefaultElements: function () {
var e = this.getSettings("selectors"),
t = this.getSettings("classes"),
n = jQuery("<span>", { class: t.dropCap }),
t = jQuery("<span>", { class: t.dropCapLetter });
return n.append(t), { $paragraph: this.$element.find(e.paragraph), $dropCap: n, $dropCapLetter: t };
},
wrapDropCap: function () {
var e, t, n, i;
this.getElementSettings("drop_cap")
? (e = this.elements.$paragraph).length &&
(n = (t = e.html().replace(/&nbsp;/g, " ")).match(/^ *([^ ] ?)/)) &&
"<" !== (i = (n = n[1]).trim()) &&
((this.dropCapLetter = n),
this.elements.$dropCapLetter.text(i),
(i = t.slice(n.length).replace(/^ */, function (e) {
return new Array(e.length + 1).join("&nbsp;");
})),
e.html(i).prepend(this.elements.$dropCap))
: this.dropCapLetter && (this.elements.$dropCap.remove(), this.elements.$paragraph.prepend(this.dropCapLetter), (this.dropCapLetter = ""));
},
onInit: function () {
elementorModules.frontend.handlers.Base.prototype.onInit.apply(this, arguments), this.wrapDropCap();
},
onElementChange: function (e) {
"drop_cap" === e && this.wrapDropCap();
},
});
e.exports = function (e) {
ceFrontend.elementsHandler.addHandler(i, { $element: e });
};
},
195: function (e, t, n) {
"use strict";
var i = elementorModules.frontend.handlers.Base.extend({
getWidgetType: function () {
return "global";
},
animate: function () {
var e,
t = this.$element,
n = this.getAnimation();
"none" === n
? t.removeClass("elementor-invisible")
: ((e = (e = this.getElementSettings())._animation_delay || e.animation_delay || 0),
t.addClass("elementor-invisible").removeClass(n),
this.currentAnimation && t.removeClass(this.currentAnimation),
(this.currentAnimation = n),
setTimeout(function () {
t.removeClass("elementor-invisible").addClass("animated " + n);
}, e));
},
getAnimation: function () {
return this.getCurrentDeviceSetting("animation") || this.getCurrentDeviceSetting("_animation");
},
onInit: function () {
elementorModules.frontend.handlers.Base.prototype.onInit.apply(this, arguments), this.getAnimation() && ceFrontend.waypoint(this.$element, this.animate.bind(this));
},
onElementChange: function (e) {
/^_?animation/.test(e) && this.animate();
},
});
e.exports = function (e) {
ceFrontend.elementsHandler.addHandler(i, { $element: e });
};
},
196: function (e, t, n) {
"use strict";
e.exports = elementorModules.ViewModule.extend({
getDefaultSettings: function () {
return { isInserted: !1, APISrc: "https://www.youtube.com/iframe_api", selectors: { firstScript: "script:first" } };
},
getDefaultElements: function () {
return { $firstScript: jQuery(this.getSettings("selectors.firstScript")) };
},
insertYTAPI: function () {
this.setSettings("isInserted", !0), this.elements.$firstScript.before(jQuery("<script>", { src: this.getSettings("APISrc") }));
},
onYoutubeApiReady: function (e) {
var t = this;
t.getSettings("IsInserted") || t.insertYTAPI(),
window.YT && YT.loaded
? e(YT)
: setTimeout(function () {
t.onYoutubeApiReady(e);
}, 350);
},
getYoutubeIDFromURL: function (e) {
e = e.match(/^(?:https?:\/\/)?(?:www\.)?(?:m\.)?(?:youtu\.be\/|youtube\.com\/(?:(?:watch)?\?(?:.*&)?vi?=|(?:embed|v|vi|user)\/))([^?&"'>]+)/);
return e && e[1];
},
});
},
197: function (e, t, n) {
"use strict";
e.exports = elementorModules.ViewModule.extend({
getDefaultSettings: function () {
return { scrollDuration: 500, selectors: { links: 'a[href*="#"]', targets: ".elementor-element, .elementor-menu-anchor", scrollable: "html, body" } };
},
getDefaultElements: function () {
return { $scrollable: jQuery(this.getSettings("selectors").scrollable) };
},
bindEvents: function () {
ceFrontend.elements.$document.on("click", this.getSettings("selectors.links"), this.handleAnchorLinks);
},
handleAnchorLinks: function (e) {
var t,
n = e.currentTarget,
i = location.pathname === n.pathname,
o = location.hostname === n.hostname;
if (o && i && !(n.hash.length < 2)) {
try {
t = jQuery(n.hash).filter(this.getSettings("selectors.targets"));
} catch (e) {
return;
}
t.length &&
((o = t.offset().top),
0 < (i = jQuery(".elementor-section.elementor-sticky--active")).length &&
(o -= Math.max.apply(
null,
i
.map(function () {
return jQuery(this).outerHeight();
})
.get()
)),
e.preventDefault(),
(o = ceFrontend.hooks.applyFilters("frontend/handlers/menu_anchor/scroll_top_distance", o)),
this.elements.$scrollable.animate({ scrollTop: o }, this.getSettings("scrollDuration")));
}
},
onInit: function () {
elementorModules.ViewModule.prototype.onInit.apply(this, arguments), this.bindEvents();
},
});
},
198: function (t, e, n) {
"use strict";
t.exports = elementorModules.ViewModule.extend({
oldAspectRatio: null,
oldAnimation: null,
swiper: null,
getDefaultSettings: function () {
return {
classes: {
aspectRatio: "elementor-aspect-ratio-%s",
item: "elementor-lightbox-item",
image: "elementor-lightbox-image",
videoContainer: "elementor-video-container",
videoWrapper: "elementor-fit-aspect-ratio",
playButton: "elementor-custom-embed-play",
playButtonIcon: "fa",
playing: "elementor-playing",
hidden: "elementor-hidden",
invisible: "elementor-invisible",
preventClose: "elementor-lightbox-prevent-close",
slideshow: {
container: "swiper-container",
slidesWrapper: "swiper-wrapper",
prevButton: "elementor-swiper-button elementor-swiper-button-prev",
nextButton: "elementor-swiper-button elementor-swiper-button-next",
prevButtonIcon: "ceicon-chevron-left",
nextButtonIcon: "ceicon-chevron-right",
slide: "swiper-slide",
header: "elementor-slideshow__header",
footer: "elementor-slideshow__footer",
title: "elementor-slideshow__title",
description: "elementor-slideshow__description",
counter: "elementor-slideshow__counter",
iconZoomIn: "fa fa-search-plus",
iconZoomOut: "fa fa-search-minus",
zoomMode: "elementor-slideshow--zoom-mode",
},
},
selectors: { links: "a, [data-elementor-lightbox]", slideshow: { activeSlide: ".swiper-slide-active", prevSlide: ".swiper-slide-prev", nextSlide: ".swiper-slide-next" } },
modalOptions: { id: "elementor-lightbox", entranceAnimation: "zoomIn", videoAspectRatio: 169, position: { enable: !1 } },
};
},
getModal: function () {
return t.exports.modal || this.initModal(), t.exports.modal;
},
initModal: function () {
var e = (t.exports.modal = ceFrontend
.getDialogsManager()
.createWidget("lightbox", { className: "elementor-lightbox", closeButton: !0, closeButtonClass: "ceicon-close", selectors: { preventClose: "." + this.getSettings("classes.preventClose") }, hide: { onClick: !0 } }));
e.on("hide", function () {
e.setMessage("");
});
},
showModal: function (e) {
var t = this,
n = t.getDefaultSettings().modalOptions,
i = (t.setSettings("modalOptions", jQuery.extend(n, e.modalOptions)), t.getModal());
switch (
(i.setID(t.getSettings("modalOptions.id")),
(i.onShow = function () {
DialogsManager.getWidgetType("lightbox").prototype.onShow.apply(i, arguments), t.setEntranceAnimation();
}),
(i.onHide = function () {
DialogsManager.getWidgetType("lightbox").prototype.onHide.apply(i, arguments), i.getElements("message").removeClass("animated");
}),
e.type)
) {
case "image":
t.setImageContent(e.url);
break;
case "video":
t.setVideoContent(e);
break;
case "slideshow":
t.setSlideshowContent(e.slideshow);
break;
default:
t.setHTMLContent(e.html);
}
i.show();
},
setHTMLContent: function (e) {
this.getModal().setMessage(e);
},
setImageContent: function (e) {
var t = this.getSettings("classes"),
n = jQuery("<div>", { class: t.item }),
e = jQuery("<img>", { src: e, class: t.image + " " + t.preventClose });
n.append(e), this.getModal().setMessage(n);
},
setVideoContent: function (e) {
var t,
n = this.getSettings("classes"),
i = jQuery("<div>", { class: n.videoContainer }),
n = jQuery("<div>", { class: n.videoWrapper }),
o = this.getModal(),
s =
((e =
"hosted" === e.videoType
? ((t = jQuery.extend({ src: e.url, autoplay: "" }, e.videoParams)), jQuery("<video>", t))
: ((t = e.url.replace("&autoplay=0", "") + "&autoplay=1"), jQuery("<iframe>", { src: t, allowfullscreen: 1 }))),
i.append(n),
n.append(e),
o.setMessage(i),
this.setVideoAspectRatio(),
o.onHide);
o.onHide = function () {
s(), o.getElements("message").removeClass("elementor-fit-aspect-ratio");
};
},
getSlideshowHeader: function () {
var e = jQuery,
t = "yes" === ceFrontend.getGeneralSettings("elementor_lightbox_enable_counter"),
n = "yes" === ceFrontend.getGeneralSettings("elementor_lightbox_enable_fullscreen"),
i = "yes" === ceFrontend.getGeneralSettings("elementor_lightbox_enable_zoom"),
o = "yes" === ceFrontend.getGeneralSettings("elementor_lightbox_enable_share"),
s = this.getSettings("classes"),
r = s.slideshow,
a = this.elements;
if (t || n || i || o)
return (
(a.$header = e("<header>", { class: r.header + " " + s.preventClose })),
t && ((a.$counter = e("<span>", { class: r.counter })), a.$header.append(a.$counter)),
n && ((a.$iconExpand = e("<i>", { class: r.iconExpand }).append(e("<span>"), e("<span>"))), a.$iconExpand.on("click", this.toggleFullscreen), a.$header.append(a.$iconExpand)),
i && ((a.$iconZoom = e("<i>", { class: r.iconZoomIn })), a.$iconZoom.on("click", this.toggleZoomMode), a.$header.append(a.$iconZoom)),
a.$header
);
},
toggleZoomMode: function () {
1 !== this.swiper.zoom.scale ? this.deactivateZoom() : this.activateZoom();
},
activateZoom: function () {
var e = this.swiper,
t = this.elements,
n = this.getSettings("classes");
e.zoom.in(), (e.allowSlideNext = !1), (e.allowSlidePrev = !1), (e.allowTouchMove = !1), t.$container.addClass(n.slideshow.zoomMode), t.$iconZoom.removeClass(n.slideshow.iconZoomIn).addClass(n.slideshow.iconZoomOut);
},
deactivateZoom: function () {
var e = this.swiper,
t = this.elements,
n = this.getSettings("classes");
e.zoom.out(), (e.allowSlideNext = !0), (e.allowSlidePrev = !0), (e.allowTouchMove = !0), t.$container.removeClass(n.slideshow.zoomMode), t.$iconZoom.removeClass(n.slideshow.iconZoomOut).addClass(n.slideshow.iconZoomIn);
},
getSlideshowFooter: function () {
var e = jQuery,
t = this.getSettings("classes"),
n = e("<footer>", { class: t.slideshow.footer + " " + t.preventClose }),
i = e("<div>", { class: t.slideshow.title }),
e = e("<div>", { class: t.slideshow.description });
return n.append(i, e);
},
setSlideshowContent: function (t) {
var n,
i,
o = jQuery,
s = this,
r = 1 === t.slides.length,
e = "" !== ceFrontend.getGeneralSettings("elementor_lightbox_title_src"),
a = "" !== ceFrontend.getGeneralSettings("elementor_lightbox_description_src"),
l = e || a,
c = s.getSettings("classes"),
d = c.slideshow,
u = o("<div>", { class: d.container }),
h = o("<div>", { class: d.slidesWrapper }),
e =
(r ||
((n = o("<div>", { class: d.prevButton + " " + c.preventClose }).html(o("<i>", { class: d.prevButtonIcon }))),
(i = o("<div>", { class: d.nextButton + " " + c.preventClose }).html(o("<i>", { class: d.nextButtonIcon })))),
t.slides.forEach(function (e) {
var t,
n = d.slide + " " + c.item,
n = (e.video && (n += " " + c.video), o("<div>", { class: n }));
e.video
? (n.attr("data-elementor-slideshow-video", e.video), (t = o("<div>", { class: c.playButton }).html(o("<i>", { class: c.playButtonIcon }))), n.append(t))
: ((t = o("<div>", { class: "swiper-zoom-container" })),
(e = o("<img>", { class: c.image + " " + c.preventClose, src: e.image, "data-title": e.title, "data-description": e.description })),
t.append(e),
n.append(t)),
h.append(n);
}),
(this.elements.$container = u),
(this.elements.$header = this.getSlideshowHeader()),
u.prepend(this.elements.$header).append(h, n, i),
l && ((this.elements.$footer = this.getSlideshowFooter()), u.append(this.elements.$footer)),
s.getModal()),
m = (e.setMessage(u), e.onShow);
e.onShow = function () {
m();
var e = { pagination: { el: "." + d.counter, type: "fraction" }, on: { slideChangeTransitionEnd: s.onSlideChange }, zoom: !0, spaceBetween: 100, grabCursor: !0, runCallbacksOnInit: !1, loop: !r, keyboard: !0 };
r || (e.navigation = { prevEl: n, nextEl: i }), t.swiper && o.extend(e, t.swiper), (s.swiper = new Swiper(u, e)), s.setVideoAspectRatio(), s.playSlideVideo(), l && s.updateFooterText();
};
},
setVideoAspectRatio: function (e) {
e = e || this.getSettings("modalOptions.videoAspectRatio");
var t = this.getModal().getElements("widgetContent"),
n = this.oldAspectRatio,
i = this.getSettings("classes.aspectRatio");
(this.oldAspectRatio = e), n && t.removeClass(i.replace("%s", n)), e && t.addClass(i.replace("%s", e));
},
getSlide: function (e) {
return jQuery(this.swiper.slides).filter(this.getSettings("selectors.slideshow." + e + "Slide"));
},
updateFooterText: function () {
var e, t, n, i;
this.elements.$footer &&
((i = this.getSettings("classes")),
(e = (t = this.getSlide("active").find(".elementor-lightbox-image")).data("title")),
(t = t.data("description")),
(n = this.elements.$footer.find("." + i.slideshow.title)),
(i = this.elements.$footer.find("." + i.slideshow.description)),
n.text(e || ""),
i.text(t || ""));
},
playSlideVideo: function () {
var e,
t,
n,
i,
o = this.getSlide("active"),
s = o.data("elementor-slideshow-video");
s &&
((e = this.getSettings("classes")),
(t = jQuery("<div>", { class: e.videoContainer + " " + e.invisible })),
(n = jQuery("<div>", { class: e.videoWrapper })),
(s = jQuery("<iframe>", { src: s })),
(i = o.children("." + e.playButton)),
t.append(n),
n.append(s),
o.append(t),
i.addClass(e.playing).removeClass(e.hidden),
s.on("load", function () {
i.addClass(e.hidden), t.removeClass(e.invisible);
}));
},
setEntranceAnimation: function (e) {
e = e || ceFrontend.getCurrentDeviceSetting(this.getSettings("modalOptions"), "entranceAnimation");
var t = this.getModal().getElements("message");
this.oldAnimation && t.removeClass(this.oldAnimation), (this.oldAnimation = e) && t.addClass("animated " + e);
},
isLightboxLink: function (e) {
if ("A" === e.tagName && (e.hasAttribute("download") || !/\.(png|jpe?g|gif|svg|webp)(\?.*)?$/i.test(e.href))) return !1;
var t = +ceFrontend.getGeneralSettings("elementor_global_image_lightbox"),
e = e.dataset.elementorOpenLightbox;
return "yes" === e || (t && "no" !== e);
},
getLightBoxImageAttribute: function (e, t) {
var n = ceFrontend.getGeneralSettings("elementor_lightbox_" + t + "_src");
switch (n) {
case "title":
case "alt":
return $(e).find("img").prop(n) || "";
case "caption":
return $(e).closest("figure").find("figcaption").text() || ($(e).closest('[class*="widget-product"]').length ? $(e).find("img").prop("alt") : "");
}
return "";
},
openLink: function (e) {
var t,
n,
i,
o,
s,
r = this,
a = e.currentTarget,
l = jQuery(e.target),
c = ceFrontend.isEditMode(),
l = !!l.closest("#elementor").length;
this.isLightboxLink(a)
? (e.preventDefault(),
(c && !ceFrontend.getGeneralSettings("elementor_enable_lightbox_in_editor")) ||
((s = {}),
(s = a.dataset.elementorLightbox ? JSON.parse(a.dataset.elementorLightbox) : s).type && "slideshow" !== s.type
? this.showModal(s)
: a.dataset.elementorLightboxSlideshow
? ((t = a.dataset.elementorLightboxSlideshow),
(n = jQuery(this.getSettings("selectors.links")).filter(function () {
return t === this.dataset.elementorLightboxSlideshow;
})),
(i = []),
(o = {}),
n.each(function () {
var e = this.dataset.elementorLightboxVideo,
t = e || this.href;
o[t] ||
((o[t] = !0),
void 0 === (t = this.dataset.elementorLightboxIndex) && (t = n.index(this)),
(t = { image: this.href, index: t, title: r.getLightBoxImageAttribute(this, "title"), description: r.getLightBoxImageAttribute(this, "description") }),
e && (t.video = e),
i.push(t));
}),
i.sort(function (e, t) {
return e.index - t.index;
}),
void 0 === (s = a.dataset.elementorLightboxIndex) && (s = n.index(a)),
this.showModal({ type: "slideshow", modalOptions: { id: "elementor-lightbox-slideshow-" + t }, slideshow: { slides: i, swiper: { initialSlide: +s } } }))
: this.showModal({ type: "image", url: a.href })))
: c && l && e.preventDefault();
},
bindEvents: function () {
ceFrontend.elements.$document.on("click", this.getSettings("selectors.links"), this.openLink);
},
onSlideChange: function () {
this.getSlide("prev")
.add(this.getSlide("next"))
.add(this.getSlide("active"))
.find("." + this.getSettings("classes.videoWrapper"))
.remove(),
this.playSlideVideo(),
this.updateFooterText();
},
});
},
199: function (e, t, n) {
"use strict";
Object.defineProperty(t, "__esModule", { value: !0 });
var i = function (e, t, n) {
return t && o(e.prototype, t), n && o(e, n), e;
};
function o(e, t) {
for (var n = 0; n < t.length; n++) {
var i = t[n];
(i.enumerable = i.enumerable || !1), (i.configurable = !0), "value" in i && (i.writable = !0), Object.defineProperty(e, i.key, i);
}
}
function s(e, t, n) {
null === e && (e = Function.prototype);
var i = Object.getOwnPropertyDescriptor(e, t);
if (void 0 !== i) {
if ("value" in i) return i.value;
i = i.get;
return void 0 !== i ? i.call(n) : void 0;
}
if (null !== (i = Object.getPrototypeOf(e))) return s(i, t, n);
}
var r = (function (e) {
var t = n;
if ("function" != typeof e && null !== e) throw new TypeError("Super expression must either be null or a function, not " + typeof e);
function n() {
var e = this,
t = n;
if (!(e instanceof t)) throw new TypeError("Cannot call a class as a function");
(e = this), (t = (n.__proto__ || Object.getPrototypeOf(n)).apply(this, arguments));
if (e) return !t || ("object" != typeof t && "function" != typeof t) ? e : t;
throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
}
return (
(t.prototype = Object.create(e && e.prototype, { constructor: { value: t, enumerable: !1, writable: !0, configurable: !0 } })),
e && (Object.setPrototypeOf ? Object.setPrototypeOf(t, e) : (t.__proto__ = e)),
i(n, [
{
key: "getDefaultSettings",
value: function () {
return { selectors: { links: 'a[href^="#ce-action"]' } };
},
},
{
key: "bindEvents",
value: function () {
ceFrontend.elements.$document.on("click", this.getSettings("selectors.links"), this.runLinkAction.bind(this));
},
},
{
key: "initActions",
value: function () {
this.actions = {
lightbox: function (e) {
if (!ceFrontend.isEditMode() || ceFrontend.getGeneralSettings("elementor_enable_lightbox_in_editor")) return ceFrontend.utils.lightbox.showModal(e);
},
closeLightbox: function () {
var e = ceFrontend.utils.lightbox.getModal();
e.isVisible() && e.hide();
},
carousel: function (e, t) {
t = $(
(function (e, t) {
var n = (e = e.getBoundingClientRect()).left + e.width / 2,
i = e.top + e.height / 2,
o = { d: 1 / 0, elem: null };
return (
$(t || document.body)
.find(".slick-slider")
.each(function () {
var e = this.getBoundingClientRect(),
e = Math.hypot(Math.max(e.left - n, 0, n - e.right), Math.max(e.top - i, 0, i - e.bottom));
e < o.d && ((o.d = e), (o.elem = this));
}),
o.elem
);
})((t && t.currentTarget) || document.activeElement, e.selector)
);
"goto" === e.action ? t.slick("slickGoTo", e.goto - 1) : t.slick(e.action);
},
quickview: function (e) {
// e = e.id_product
// ? { idProduct: e.id_product, idProductAttribute: e.id_product_attribute || 0 }
// : $(document.activeElement).closest("[data-id-product]").data() || { idProduct: $("input[id=product_page_product_id]:last").val() };
// e.idProduct && (ceFrontend.modules.linkActions.actions.closeLightbox(), prestashop.emit("clickQuickView", { dataset: e }));
},
addToCart: function (e) {
var t = $(document.activeElement).closest("[data-id-product]").data(),
n = e.id_product || (t && t.idProduct);
n
? $.post(prestashop.urls.pages.cart, { add: 1, action: "update", id_product: n, token: prestashop.static_token }, null, "json")
.then(function (e) {
prestashop.emit("updateCart", {
reason: { idProduct: e.id_product || n, idProductAttribute: e.id_product_attribute, idCustomization: e.id_customization, linkAction: "add-to-cart", cart: e.cart },
resp: e,
});
})
.fail(function (e) {
prestashop.emit("handleError", { eventType: "addProductToCart", resp: e });
})
: $('form[id="add-to-cart-or-refresh"] [data-button-action="add-to-cart"]:last').click(),
ceFrontend.modules.linkActions.actions.closeLightbox();
},
buyNow: function (t) {
var n = prestashop._events.updateCart;
delete prestashop._events.updateCart,
prestashop.once("updateCart", function (e) {
e.resp && e.resp.success ? (location.href = prestashop.urls.pages[t.redirect || "order"]) : ((prestashop._events.updateCart = n), prestashop.emit("updateCart", e));
}),
ceFrontend.modules.linkActions.actions.addToCart(t);
},
};
},
},
{
key: "addAction",
value: function (e, t) {
this.actions[e] = t;
},
},
{
key: "runAction",
value: function (e, t) {
e = (e = decodeURIComponent(e)).match(/action=(\w+)(.+)/);
if (e) {
var n = this.actions[e[1]];
if (n) {
for (var e = JSON.parse(e[2]), i = arguments.length, o = Array(1 < i ? i - 1 : 0), s = 1; s < i; s++) o[s - 1] = arguments[s];
n.apply(void 0, [e].concat(o), t);
}
}
},
},
{
key: "runLinkAction",
value: function (e) {
e.preventDefault(), this.runAction(e.currentTarget.href, e);
},
},
{
key: "runHashAction",
value: function () {
location.hash && this.runAction(location.hash);
},
},
{
key: "onInit",
value: function () {
s(n.prototype.__proto__ || Object.getPrototypeOf(n.prototype), "onInit", this).call(this), this.initActions();
},
},
]),
n
);
})(elementorModules.ViewModule);
t.default = r;
},
200: function (e, t, n) {
"use strict";
var i,
o = ((i = {
constructor: function (e) {
(this.$element = e),
(this.settings = { selectors: { form: "form", submitButton: '[type="submit"]' } }),
(this.elements = {}),
(this.elements.$form = this.$element.find(this.settings.selectors.form)),
(this.elements.$submitButton = this.elements.$form.find(this.settings.selectors.submitButton)),
this.bindEvents();
},
bindEvents: function () {
this.elements.$form.on("submit", $.proxy(this, "handleSubmit"));
},
beforeSend: function () {
var e = this.elements.$form;
e.animate({ opacity: "0.45" }, 500).addClass("elementor-form-waiting"),
e.find(".elementor-message").remove(),
e.find(".elementor-error").removeClass("elementor-error"),
e.find("div.elementor-field-group").removeClass("error").find("span.elementor-form-help-inline").remove().end().find(":input").attr("aria-invalid", "false"),
this.elements.$submitButton.attr("disabled", "disabled").find("> span").prepend('<span class="elementor-button-text elementor-form-spinner"><i class="fa fa-spinner fa-spin"></i>&nbsp;</span>');
},
getFormData: function () {
var e = new FormData(this.elements.$form[0]);
return e.append(this.elements.$submitButton[0].name, this.elements.$submitButton[0].value), e;
},
onSuccess: function (e, t) {
var n,
i = this.elements.$form,
o = "before" === i.data("msg") ? "prepend" : "append";
this.elements.$submitButton.removeAttr("disabled").find(".elementor-form-spinner").remove(),
i.animate({ opacity: "1" }, 100).removeClass("elementor-form-waiting"),
e.success
? ((n = i.data("success") || e.success),
i.trigger("submit_success", e),
i.trigger("form_destruct", e),
i.trigger("reset"),
i[o]('<div class="elementor-message elementor-message-success" role="alert">' + n + "</div>"))
: ((n = i.data("error") || (e.errors && e.errors.join("<br>")) || "Unknown error"), i[o]('<div class="elementor-message elementor-message-danger" role="alert">' + n + "</div>"));
},
onError: function (e, t) {
var n = this.elements.$form;
n.append('<div class="elementor-message elementor-message-danger" role="alert">' + t + "</div>"),
this.elements.$submitButton.html(this.elements.$submitButton.text()).removeAttr("disabled"),
n.animate({ opacity: "1" }, 100).removeClass("elementor-form-waiting"),
n.trigger("error");
},
handleSubmit: function (e) {
var t = this.elements.$form;
if ((e.preventDefault(), t.hasClass("elementor-form-waiting"))) return !1;
this.beforeSend(), $.ajax({ url: t.attr("action"), type: "POST", dataType: "json", data: this.getFormData(), processData: !1, contentType: !1, success: $.proxy(this, "onSuccess"), error: $.proxy(this, "onError") });
},
}).constructor.prototype = i).constructor;
e.exports = function (e, t) {
new o(e);
};
},
201: function (e, t, n) {
"use strict";
e.exports = elementorModules.frontend.handlers.Base.extend({
getDefaultSettings: function () {
return { selectors: { mainSwiper: ".elementor-main-swiper", swiperSlide: ".swiper-slide" }, zoom: { enabled: !0, toggle: !1 }, slidesPerView: { desktop: 3, tablet: 2, mobile: 1 } };
},
getDefaultElements: function () {
var e = this.getSettings("selectors"),
t = { $mainSwiper: this.$element.find(e.mainSwiper) };
return (t.$mainSwiperSlides = t.$mainSwiper.find(e.swiperSlide)), t;
},
getSlidesCount: function () {
return this.elements.$mainSwiperSlides.length;
},
getInitialSlide: function () {
var e = this.getEditSettings();
return e.activeItemIndex ? e.activeItemIndex - 1 : 0;
},
getEffect: function () {
return this.getElementSettings("effect");
},
getDeviceSlidesPerView: function (e) {
var t = "slides_per_view" + ("desktop" === e ? "" : "_" + e);
return Math.min(this.getSlidesCount(), +this.getElementSettings(t) || this.getSettings("slidesPerView")[e]);
},
getSlidesPerView: function (e) {
return "slide" === this.getEffect() ? this.getDeviceSlidesPerView(e) : 1;
},
getDesktopSlidesPerView: function () {
return this.getSlidesPerView("desktop");
},
getTabletSlidesPerView: function () {
return this.getSlidesPerView("tablet");
},
getMobileSlidesPerView: function () {
return this.getSlidesPerView("mobile");
},
getDeviceSlidesToScroll: function (e) {
e = "slides_to_scroll" + ("desktop" === e ? "" : "_" + e);
return Math.min(this.getSlidesCount(), +this.getElementSettings(e) || 1);
},
getSlidesToScroll: function (e) {
return "slide" === this.getEffect() ? this.getDeviceSlidesToScroll(e) : 1;
},
getDesktopSlidesToScroll: function () {
return this.getSlidesToScroll("desktop");
},
getTabletSlidesToScroll: function () {
return this.getSlidesToScroll("tablet");
},
getMobileSlidesToScroll: function () {
return this.getSlidesToScroll("mobile");
},
getSpaceBetween: function (e) {
var t = "space_between",
e = (e && "desktop" !== e && (t += "_" + e), this.getElementSettings(t));
return (e && e.size) || 0;
},
getSwiperOptions: function () {
var e,
t,
n = this.getElementSettings(),
i =
("progress" === n.pagination && (n.pagination = "progressbar"),
{
grabCursor: !0,
initialSlide: this.getInitialSlide(),
centeredSlides: n.centered_slides,
slidesPerView: this.getDesktopSlidesPerView(),
slidesPerGroup: this.getDesktopSlidesToScroll(),
spaceBetween: this.getSpaceBetween(),
loop: "yes" === n.loop,
speed: n.speed,
effect: this.getEffect(),
});
return (
n.show_arrows && (i.navigation = { prevEl: ".elementor-swiper-button-prev", nextEl: ".elementor-swiper-button-next" }),
n.pagination && (i.pagination = { el: ".swiper-pagination", type: n.pagination, clickable: !0 }),
"cube" !== this.getEffect() &&
(((e = {})[(t = ceFrontend.config.breakpoints).lg - 1] = { slidesPerView: this.getTabletSlidesPerView(), slidesPerGroup: this.getTabletSlidesToScroll(), spaceBetween: this.getSpaceBetween("tablet") }),
(e[t.md - 1] = { slidesPerView: this.getMobileSlidesPerView(), slidesPerGroup: this.getMobileSlidesToScroll(), spaceBetween: this.getSpaceBetween("mobile") }),
(i.breakpoints = e)),
!this.isEdit && n.autoplay && (i.autoplay = { delay: n.autoplay_speed, disableOnInteraction: !!n.pause_on_interaction }),
i
);
},
updateSpaceBetween: function (e, t) {
var t = t.match("space_between_(.*)"),
t = t ? t[1] : "desktop",
n = this.getSpaceBetween(t),
i = ceFrontend.config.breakpoints;
"desktop" !== t ? ((i = { tablet: i.lg - 1, mobile: i.md - 1 }), (e.params.breakpoints[i[t]].spaceBetween = n)) : (e.originalParams.spaceBetween = n), (e.params.spaceBetween = n), e.update();
},
onInit: function () {
elementorModules.frontend.handlers.Base.prototype.onInit.apply(this, arguments), (this.swipers = {}), this.getSlidesCount() <= 1 || (this.swipers.main = new Swiper(this.elements.$mainSwiper, this.getSwiperOptions()));
},
onElementChange: function (e) {
this.getSlidesCount() <= 1 || (0 === e.indexOf("width") && this.swipers.main.update(), 0 === e.indexOf("space_between") && this.updateSpaceBetween(this.swipers.main, e));
},
onEditSettingsChange: function (e) {
this.getSlidesCount() <= 1 || ("activeItemIndex" === e && this.swipers.main.slideToLoop(this.getEditSettings("activeItemIndex") - 1));
},
});
},
202: function (e, t, n) {
"use strict";
var i = n(201),
o = i.extend({
slideshowSpecialElementSettings: ["slides_per_view", "slides_per_view_tablet", "slides_per_view_mobile"],
isSlideshow: function () {
return "slideshow" === this.getElementSettings("skin");
},
getDefaultSettings: function () {
var e = i.prototype.getDefaultSettings.apply(this, arguments);
return this.isSlideshow() && ((e.selectors.thumbsSwiper = ".elementor-thumbnails-swiper"), (e.slidesPerView = { desktop: 5, tablet: 4, mobile: 3 })), e;
},
getElementSettings: function (e) {
return -1 !== this.slideshowSpecialElementSettings.indexOf(e) && this.isSlideshow() && (e = "slideshow_" + e), i.prototype.getElementSettings.call(this, e);
},
getDefaultElements: function () {
var e = this.getSettings("selectors"),
t = i.prototype.getDefaultElements.apply(this, arguments);
return this.isSlideshow() && (t.$thumbsSwiper = this.$element.find(e.thumbsSwiper)), t;
},
getSlidesPerView: function (e) {
return this.isSlideshow() ? 1 : "coverflow" === this.getEffect() ? this.getDeviceSlidesPerView(e) : i.prototype.getSlidesPerView.apply(this, arguments);
},
getThumbSpaceBetween: function (e) {
var t = "thumb_space_between";
return e && "desktop" !== e && (t += "_" + e), this.getElementSettings(t).size || 0;
},
getSwiperOptions: function () {
var e = i.prototype.getSwiperOptions.apply(this, arguments);
return this.isSlideshow() && ((e.loopedSlides = this.getSlidesCount()), delete e.pagination, delete e.breakpoints), e;
},
onInit: function () {
var e, t, n, i, o, s;
elementorModules.frontend.handlers.Base.prototype.onInit.apply(this, arguments),
(this.swipers = {}),
this.getSlidesCount() &&
((e = this.getSwiperOptions()),
this.isSlideshow() &&
((t = this.getElementSettings()),
(n = {}),
(o = ceFrontend.config.breakpoints),
(i = this.getSettings("slidesPerView")),
(n[o.lg - 1] = { slidesPerView: +t.slides_per_view_tablet || i.tablet, spaceBetween: this.getThumbSpaceBetween("tablet") }),
(n[o.md - 1] = { slidesPerView: +t.slides_per_view_mobile || i.mobile, spaceBetween: this.getThumbSpaceBetween("mobile") }),
(o = {
slidesPerView: +t.slides_per_view || i.desktop,
initialSlide: this.getInitialSlide(),
slideToClickedSlide: !0,
spaceBetween: this.getThumbSpaceBetween(),
threshold: 2,
watchSlidesVisibility: !0,
watchSlidesProgress: !0,
breakpoints: n,
direction: "bottom" === t.position ? "horizontal" : "vertical",
}),
(s = this.swipers.thumbs = new Swiper(this.elements.$thumbsSwiper, o)),
(e.thumbs = { swiper: this.swipers.thumbs, slideThumbActiveClass: "swiper-slide-active" }),
(e.on = {
slideChange: function () {
setTimeout(function () {
var e = $(s.slides).filter(".swiper-slide-active");
s.slides.removeClass("swiper-slide-prev swiper-slide-next"), e.prevAll().addClass("swiper-slide-prev"), e.nextAll().addClass("swiper-slide-next");
});
},
sliderFirstMove: function () {
this.zoom.out(), this.$el.addClass("ce-swiper-dragging");
},
touchEnd: function () {
this.$el.removeClass("ce-swiper-dragging");
},
}),
this.elements.$mainSwiper.on("mouseenter.ceZoom", ".swiper-zoom-container", this.onZoomIn.bind(this)).on("mouseleave.ceZoom", ".swiper-zoom-container", this.onZoomOut.bind(this))),
(this.swipers.main = new Swiper(this.elements.$mainSwiper, e)),
this.swipers.thumbs && (this.swipers.thumbs.main = this.swipers.main));
},
onZoomIn: function (e) {
var t = this.swipers.main.touchEventsData;
t.isMoved ||
Date.now() - t.touchStartTime < 200 ||
(this.swipers.main.zoom.in(),
this.elements.$mainSwiper.on("mousemove.ceZoom", ".swiper-zoom-container img", function (e) {
var t = this.parentNode.getBoundingClientRect(),
n = ((100 * (e.clientX - t.left)) / t.width).toFixed(3),
e = ((100 * (e.clientY - t.top)) / t.height).toFixed(3);
(this.style.transformOrigin = n + "% " + e + "%"), (this.style.transitionDuration = "0s");
}));
},
onZoomOut: function () {
this.swipers.main.zoom.out(), this.elements.$mainSwiper.off("mousemove.ceZoom");
},
onElementChange: function (e) {
this.getSlidesCount() <= 1 ||
(this.isSlideshow()
? (0 === e.indexOf("width") && (this.swipers.main.update(), this.swipers.thumbs.update()), 0 === e.indexOf("space_between") && this.updateSpaceBetween(this.swipers.thumbs, e))
: i.prototype.onElementChange.apply(this, arguments));
},
});
e.exports = function (e) {
new o({ $element: e });
};
},
}),
prestashop.on("updateCart", function (e) {
if (e.resp && e.resp.hasError) return (window.WishlistEventBus && WishlistEventBus.$emit("showToast", { detail: { type: "error", message: e.resp.errors.join(" ") } })) || alert(e.resp.errors.join("\n"));
e.resp && e.resp.success && (e = $("#add-to-cart-or-refresh > [name=id_product][value=" + e.resp.id_product + "]")[0]) && ceFrontend.refreshProduct(e.form);
}),
(ceFrontend.refreshProduct = function (i, e) {
var t = new FormData(i);
t.set("refresh", "product"),
e && t.set("quickview", e),
t.set("quantity_wanted", t.get("qty")),
t.delete("qty"),
this.refreshProduct.xhr && 4 !== this.refreshProduct.xhr.readyState && this.refreshProduct.xhr.abort(),
(this.refreshProduct.xhr = $.ajax((window.elementor && elementor.config.document.urls.permalink) || prestashop.urls.pages.product, {
type: "POST",
data: t,
processData: !1,
contentType: !1,
dataType: "json",
success: function (e) {
var t = $(e.product_content),
n = [
".elementor-widget-product-quantity",
".elementor-widget-product-description",
".elementor-widget-product-description-short",
".elementor-widget-product-carousel",
".elementor-widget-product-grid",
".elementor-widget-product-box",
].join();
t.find(".elementor-widget:not(" + n + ") > .elementor-widget-container").each(function () {
var e = $(this.parentNode).data("id"),
e = $(".elementor-element-" + e + " > .elementor-widget-container")[0];
e && ($(e).replaceWith(this), ceFrontend.elementsHandler.runReadyTrigger(this.parentNode));
}),
$(i.elements.qty)
.attr("min", e.product_minimal_quantity)
.each(function () {
this.value < e.product_minimal_quantity && (this.value = e.product_minimal_quantity);
}),
+e.is_quick_view || prestashop.emit("updatedProduct", e);
},
}));
}),
$("html")
.on("click.ce", ".elementor-nav-tabs a", function (e) {
var i;
e.preventDefault(),
~this.className.indexOf("elementor-item-active") ||
((e = $(this.parentNode).index()),
(e = $(this).closest(".elementor-container").find("> .elementor-row > .elementor-column").eq(e)),
(i = ceFrontend.isEditMode()),
$(this).closest(".elementor-nav").find(".elementor-item-active").removeClass("elementor-item-active"),
$(this).addClass("elementor-item-active"),
e.addClass("elementor-active").siblings().removeClass("elementor-active"),
e
.find(".animated")
.addBack(".animated")
.each(function () {
var e = $(this),
t = i ? elementor.helpers.getModelById(e.data("id")).get("settings").attributes : e.data("settings") || {},
n = e.hasClass("elementor-widget") ? "_animation" : "animation";
e.addClass("elementor-invisible").removeClass(ceFrontend.getCurrentDeviceSetting(t, n)),
setTimeout(function () {
e.removeClass([t[n + "_mobile"] || "", t[n + "_tablet"] || "", t[n] || ""].join(" "));
}),
setTimeout(function () {
e.removeClass("elementor-invisible").addClass(ceFrontend.getCurrentDeviceSetting(t, n));
}, t[n + "_delay"] || 0);
}));
})
.on("keydown.ce", ".elementor-field[name=qty]", function (e) {
13 !== e.keyCode || parseInt(this.value, 10) >= parseInt(this.min, 10) || e.preventDefault();
})
.on("keyup.ce", ".elementor-field[name=qty]", function (e) {
13 === e.keyCode && parseInt(this.value, 10) >= parseInt(this.min, 10) && (this.blur(), ceFrontend.modules.linkActions.actions.closeLightbox());
})
.on("click.ce", ".ce-add-to-wishlist", function (e) {
if ((e.preventDefault(), !window.WishlistEventBus)) return alert("Please install & enable the Wishlist module!");
if (!prestashop.customer.is_logged) return WishlistEventBus.$emit("showLogin");
var t,
n = $(this);
n.hasClass("elementor-active")
? (t = productsAlreadyTagged.find(function (e) {
return e.id_product == n.data("productId") && e.id_product_attribute == n.data("productAttributeId");
})) &&
$.post(
this.href,
{ action: "deleteProductFromWishlist", params: { idWishList: t.id_wishlist, id_product: t.id_product, id_product_attribute: t.id_product_attribute } },
function (e) {
$(".ce-add-to-wishlist[data-product-id=" + t.id_product + "][data-product-attribute-id=" + t.id_product_attribute + "]")
.removeClass("elementor-active")
.find("i")
.attr("class", "fa fa-heart-o"),
(productsAlreadyTagged = productsAlreadyTagged.filter(function (e) {
return e.id_product != t.id_product && e.id_product_attribute != t.id_product_attribute;
})),
WishlistEventBus.$emit("showToast", { detail: { type: e.success ? "success" : "error", message: e.message } });
},
"json"
)
: WishlistEventBus.$emit("showAddToWishList", { detail: { forceOpen: !0, productId: n.data("productId"), productAttributeId: n.data("productAttributeId") } });
})
.on("click.ce", "[data-link-action=quickview]", function (e) {
e.preventDefault(), e.stopPropagation(), ceFrontend.modules.linkActions.actions.quickview({});
})
.on("click.ce-comments", 'a[href="#product-comments-list-header"]', function (e) {
var t,
n = $("#product-comments-list-header"),
i = n.closest(".elementor-section-tabbed");
i.length &&
((t = i
.find("> .elementor-container > .elementor-row > .elementor-column")
.toArray()
.find(function (e) {
return $(e).find(n).length;
})),
i.find("> .elementor-container > .elementor-nav-tabs a").eq($(t).index()).click()),
$("html, body").animate(
{ scrollTop: $(i[0] || n[0]).offset().top },
500,
"swing",
$(this).hasClass("elementor-button--post-comment")
? function () {
$(".post-product-comment").click();
}
: void 0
),
e.preventDefault();
})
.on("change.ce", '[form="add-to-cart-or-refresh"]', function (e) {
ceFrontend.refreshProduct(this.form, $(this).closest("#ce-product-quick-view").length);
})
.on("input.ce", '[form="add-to-cart-or-refresh"][name=qty]', function () {
clearTimeout(ceFrontend.refreshProduct.timeout),
"" !== this.value &&
(ceFrontend.refreshProduct.timeout = setTimeout(
function () {
ceFrontend.refreshProduct(this.form, $(this).closest("#ce-product-quick-view").length);
}.bind(this),
200
));
}),
$(function () {
// $("#js-product-list-header").attr("id", "product-list-header"),
// ceFrontend.config.productQuickView &&
// (delete prestashop._events.clickQuickView,
// prestashop.on("clickQuickView", function (e) {
// $.post(prestashop.urls.pages.product, { ajax: 1, action: "quickview", id_product: e.dataset.idProduct, id_product_attribute: e.dataset.idProductAttribute, id_ce_theme: ceFrontend.config.productQuickView }, null, "json")
// .then(function (e) {
// var t = ceFrontend.utils.lightbox,
// e = $(e.quickview_html),
// n = e.filter(".elementor").data("elementorSettings"),
// i = t.getModal(),
// o = i.getElements();
// o.message.removeClass(["zoomIn", n.entrance_animation || "", n.entrance_animation_tablet || "", n.entrance_animation_mobile || ""].join(" ")).addClass(ceFrontend.getCurrentDeviceSetting(n, "entrance_animation")),
// $('[form="add-to-cart-or-refresh"]').attr("form", "ce-add-to-cart-or-refresh"),
// $("#add-to-cart-or-refresh").attr("id", "ce-add-to-cart-or-refresh"),
// t.showModal({ modalOptions: { id: "ce-product-quick-view" }, html: e }),
// i.off("hide").on("hide", function () {
// $('[form="ce-add-to-cart-or-refresh"]').attr("form", "add-to-cart-or-refresh"),
// $("#ce-add-to-cart-or-refresh").attr("id", "add-to-cart-or-refresh"),
// setTimeout(function () {
// o.closeButton.prependTo(o.widgetContent), o.message.removeClass([n.entrance_animation || "", n.entrance_animation_tablet || "", n.entrance_animation_mobile || ""].join(" ")), i.setMessage("");
// }, 400);
// }),
// o.message
// .addClass("elementor-lightbox-prevent-close")
// .prepend("outside" === n.close_button_position ? null : o.closeButton)
// .find(".elementor-widget")
// .each(function () {
// ceFrontend.elementsHandler.runReadyTrigger(this);
// });
// })
// .fail(function (e) {
// prestashop.emit("handleError", { eventType: "clickQuickView", resp: e });
// });
// }
// )),
// window.WishlistEventBus &&
// WishlistEventBus.$on("addedToWishlist", function (e) {
// var t = productsAlreadyTagged[productsAlreadyTagged.length - 1];
// $(".ce-add-to-wishlist[data-product-id=" + t.id_product + "][data-product-attribute-id=" + t.id_product_attribute + "]")
// .addClass("elementor-active")
// .find("i")
// .attr("class", "fa fa-heart");
// });
});