PageSourceSearch

https://wolli.ai/wp-content/plugins/elementor-pro/assets/js/elements-handlers.js?ver=3.27.5

js wolli.ai collected 2026-10-05 15:59:52 UTC 116,323 bytes, 2,801 lines download raw bytes

1/*! elementor-pro - v3.27.0 - 03-03-2025 */
2"use strict";
3(self["webpackChunkelementor_pro"] = self["webpackChunkelementor_pro"] || []).push([["elements-handlers"],{
4
5/***/ "../assets/dev/js/frontend/elements-handlers.js":
6/*!******************************************************!*\
7  !*** ../assets/dev/js/frontend/elements-handlers.js ***!
8  \******************************************************/
9/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {
10
11
12
13var _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ "../node_modules/@babel/runtime/helpers/interopRequireDefault.js");
14var _frontend = _interopRequireDefault(__webpack_require__(/*! modules/animated-headline/assets/js/frontend/frontend */ "../modules/animated-headline/assets/js/frontend/frontend.js"));
15var _frontend2 = _interopRequireDefault(__webpack_require__(/*! modules/carousel/assets/js/frontend/frontend */ "../modules/carousel/assets/js/frontend/frontend.js"));
16var _frontend3 = _interopRequireDefault(__webpack_require__(/*! modules/countdown/assets/js/frontend/frontend */ "../modules/countdown/assets/js/frontend/frontend.js"));
17var _frontend4 = _interopRequireDefault(__webpack_require__(/*! modules/dynamic-tags/assets/js/frontend/frontend */ "../modules/dynamic-tags/assets/js/frontend/frontend.js"));
18var _frontend5 = _interopRequireDefault(__webpack_require__(/*! modules/hotspot/assets/js/frontend/frontend */ "../modules/hotspot/assets/js/frontend/frontend.js"));
19var _frontend6 = _interopRequireDefault(__webpack_require__(/*! modules/forms/assets/js/frontend/frontend */ "../modules/forms/assets/js/frontend/frontend.js"));
20var _frontend7 = _interopRequireDefault(__webpack_require__(/*! modules/gallery/assets/js/frontend/frontend */ "../modules/gallery/assets/js/frontend/frontend.js"));
21var _frontend8 = _interopRequireDefault(__webpack_require__(/*! modules/lottie/assets/js/frontend/frontend */ "../modules/lottie/assets/js/frontend/frontend.js"));
22var _frontend9 = _interopRequireDefault(__webpack_require__(/*! modules/nav-menu/assets/js/frontend/frontend */ "../modules/nav-menu/assets/js/frontend/frontend.js"));
23var _frontend10 = _interopRequireDefault(__webpack_require__(/*! modules/popup/assets/js/frontend/frontend */ "../modules/popup/assets/js/frontend/frontend.js"));
24var _frontend11 = _interopRequireDefault(__webpack_require__(/*! modules/posts/assets/js/frontend/frontend */ "../modules/posts/assets/js/frontend/frontend.js"));
25var _frontend12 = _interopRequireDefault(__webpack_require__(/*! modules/share-buttons/assets/js/frontend/frontend */ "../modules/share-buttons/assets/js/frontend/frontend.js"));
26var _frontend13 = _interopRequireDefault(__webpack_require__(/*! modules/slides/assets/js/frontend/frontend */ "../modules/slides/assets/js/frontend/frontend.js"));
27var _frontend14 = _interopRequireDefault(__webpack_require__(/*! modules/social/assets/js/frontend/frontend */ "../modules/social/assets/js/frontend/frontend.js"));
28var _frontend15 = _interopRequireDefault(__webpack_require__(/*! modules/table-of-contents/assets/js/frontend/frontend */ "../modules/table-of-contents/assets/js/frontend/frontend.js"));
29var _frontend16 = _interopRequireDefault(__webpack_require__(/*! modules/theme-builder/assets/js/frontend/frontend */ "../modules/theme-builder/assets/js/frontend/frontend.js"));
30var _frontend17 = _interopRequireDefault(__webpack_require__(/*! modules/theme-elements/assets/js/frontend/frontend */ "../modules/theme-elements/assets/js/frontend/frontend.js"));
31var _frontend18 = _interopRequireDefault(__webpack_require__(/*! modules/woocommerce/assets/js/frontend/frontend */ "../modules/woocommerce/assets/js/frontend/frontend.js"));
32var _frontend19 = _interopRequireDefault(__webpack_require__(/*! modules/loop-builder/assets/js/frontend/frontend */ "../modules/loop-builder/assets/js/frontend/frontend.js"));
33var _frontend20 = _interopRequireDefault(__webpack_require__(/*! modules/mega-menu/assets/js/frontend/frontend */ "../modules/mega-menu/assets/js/frontend/frontend.js"));
34var _frontend21 = _interopRequireDefault(__webpack_require__(/*! modules/nested-carousel/assets/js/frontend/frontend */ "../modules/nested-carousel/assets/js/frontend/frontend.js"));
35var _frontend22 = _interopRequireDefault(__webpack_require__(/*! modules/loop-filter/assets/js/frontend/frontend */ "../modules/loop-filter/assets/js/frontend/frontend.js"));
36var _frontend23 = _interopRequireDefault(__webpack_require__(/*! modules/off-canvas/assets/js/frontend/frontend */ "../modules/off-canvas/assets/js/frontend/frontend.js"));
37var _frontend24 = _interopRequireDefault(__webpack_require__(/*! modules/floating-buttons/assets/js/frontend/frontend */ "../modules/floating-buttons/assets/js/frontend/frontend.js"));
38var _frontend25 = _interopRequireDefault(__webpack_require__(/*! modules/search/assets/js/frontend/frontend */ "../modules/search/assets/js/frontend/frontend.js"));
39const extendDefaultHandlers = defaultHandlers => {
40  const handlers = {
41    animatedText: _frontend.default,
42    carousel: _frontend2.default,
43    countdown: _frontend3.default,
44    dynamicTags: _frontend4.default,
45    hotspot: _frontend5.default,
46    form: _frontend6.default,
47    gallery: _frontend7.default,
48    lottie: _frontend8.default,
49    nav_menu: _frontend9.default,
50    popup: _frontend10.default,
51    posts: _frontend11.default,
52    share_buttons: _frontend12.default,
53    slides: _frontend13.default,
54    social: _frontend14.default,
55    themeBuilder: _frontend16.default,
56    themeElements: _frontend17.default,
57    woocommerce: _frontend18.default,
58    tableOfContents: _frontend15.default,
59    loopBuilder: _frontend19.default,
60    megaMenu: _frontend20.default,
61    nestedCarousel: _frontend21.default,
62    taxonomyFilter: _frontend22.default,
63    offCanvas: _frontend23.default,
64    contactButtons: _frontend24.default,
65    search: _frontend25.default
66  };
67  return {
68    ...defaultHandlers,
69    ...handlers
70  };
71};
72elementorProFrontend.on('elementor-pro/modules/init/before', () => {
73  elementorFrontend.hooks.addFilter('elementor-pro/frontend/handlers', extendDefaultHandlers);
74});
75
76/***/ }),
77
78/***/ "../assets/dev/js/frontend/utils/ajax-helper.js":
79/*!******************************************************!*\
80  !*** ../assets/dev/js/frontend/utils/ajax-helper.js ***!
81  \******************************************************/
82/***/ ((__unused_webpack_module, exports) => {
83
84
85
86Object.defineProperty(exports, "__esModule", ({
87  value: true
88}));
89exports["default"] = void 0;
90class AjaxHelper {
91  addLoadingAnimationOverlay(elementId) {
92    const widget = document.querySelector(`.elementor-element-${elementId}`);
93    if (!widget) {
94      return;
95    }
96    widget.classList.add('e-loading-overlay');
97  }
98  removeLoadingAnimationOverlay(elementId) {
99    const widget = document.querySelector(`.elementor-element-${elementId}`);
100    if (!widget) {
101      return;
102    }
103    widget.classList.remove('e-loading-overlay');
104  }
105}
106exports["default"] = AjaxHelper;
107
108/***/ }),
109
110/***/ "../assets/dev/js/frontend/utils/focusable-element-selectors.js":
111/*!**********************************************************************!*\
112  !*** ../assets/dev/js/frontend/utils/focusable-element-selectors.js ***!
113  \**********************************************************************/
114/***/ ((__unused_webpack_module, exports) => {
115
116
117
118Object.defineProperty(exports, "__esModule", ({
119  value: true
120}));
121exports.focusableElementSelectors = focusableElementSelectors;
122function focusableElementSelectors() {
123  return 'audio, button, canvas, details, iframe, input, select, summary, textarea, video, [accesskey], a[href], area[href], [tabindex]';
124}
125
126/***/ }),
127
128/***/ "../assets/dev/js/frontend/utils/icons/e-icons.js":
129/*!********************************************************!*\
130  !*** ../assets/dev/js/frontend/utils/icons/e-icons.js ***!
131  \********************************************************/
132/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
133
134
135
136var _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ "../node_modules/@babel/runtime/helpers/interopRequireDefault.js");
137Object.defineProperty(exports, "__esModule", ({
138  value: true
139}));
140exports.close = void 0;
141var _manager = _interopRequireDefault(__webpack_require__(/*! ./manager */ "../assets/dev/js/frontend/utils/icons/manager.js"));
142// This file is automatically generated, please don't change anything in this file.
143
144const iconsManager = new _manager.default('eicon');
145const close = exports.close = {
146  get element() {
147    const svgData = {
148      path: 'M742 167L500 408 258 167C246 154 233 150 217 150 196 150 179 158 167 167 154 179 150 196 150 212 150 229 154 242 171 254L408 500 167 742C138 771 138 800 167 829 196 858 225 858 254 829L496 587 738 829C750 842 767 846 783 846 800 846 817 842 829 829 842 817 846 804 846 783 846 767 842 750 829 737L588 500 833 258C863 229 863 200 833 171 804 137 775 137 742 167Z',
149      width: 1000,
150      height: 1000
151    };
152    return iconsManager.createSvgElement('close', svgData);
153  }
154};
155
156/***/ }),
157
158/***/ "../assets/dev/js/frontend/utils/icons/manager.js":
159/*!********************************************************!*\
160  !*** ../assets/dev/js/frontend/utils/icons/manager.js ***!
161  \********************************************************/
162/***/ ((__unused_webpack_module, exports) => {
163
164
165
166Object.defineProperty(exports, "__esModule", ({
167  value: true
168}));
169exports["default"] = void 0;
170class IconsManager {
171  static symbolsContainer;
172  static iconsUsageList = [];
173  constructor(elementsPrefix) {
174    this.prefix = `${elementsPrefix}-`;
175    if (!IconsManager.symbolsContainer) {
176      const symbolsContainerId = 'e-font-icon-svg-symbols';
177      IconsManager.symbolsContainer = document.getElementById(symbolsContainerId);
178      if (!IconsManager.symbolsContainer) {
179        IconsManager.symbolsContainer = document.createElementNS('http://www.w3.org/2000/svg', 'svg');
180        IconsManager.symbolsContainer.setAttributeNS(null, 'style', 'display: none;');
181        IconsManager.symbolsContainer.setAttributeNS(null, 'class', symbolsContainerId);
182        document.body.appendChild(IconsManager.symbolsContainer);
183      }
184    }
185  }
186  createSvgElement(name, _ref) {
187    let {
188      path,
189      width,
190      height
191    } = _ref;
192    const elementName = this.prefix + name,
193      elementSelector = '#' + this.prefix + name;
194
195    // Create symbol if not exist yet.
196    if (!IconsManager.iconsUsageList.includes(elementName)) {
197      if (!IconsManager.symbolsContainer.querySelector(elementSelector)) {
198        const symbol = document.createElementNS('http://www.w3.org/2000/svg', 'symbol');
199        symbol.id = elementName;
200        symbol.innerHTML = '<path d="' + path + '"></path>';
201        symbol.setAttributeNS(null, 'viewBox', '0 0 ' + width + ' ' + height);
202        IconsManager.symbolsContainer.appendChild(symbol);
203      }
204      IconsManager.iconsUsageList.push(elementName);
205    }
206    const svg = document.createElementNS('http://www.w3.org/2000/svg', 'svg');
207    svg.innerHTML = '<use xlink:href="' + elementSelector + '" />';
208    svg.setAttributeNS(null, 'class', 'e-font-icon-svg e-' + elementName);
209    return svg;
210  }
211}
212exports["default"] = IconsManager;
213
214/***/ }),
215
216/***/ "../assets/dev/js/frontend/utils/modal-keyboard-handler.js":
217/*!*****************************************************************!*\
218  !*** ../assets/dev/js/frontend/utils/modal-keyboard-handler.js ***!
219  \*****************************************************************/
220/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
221
222
223
224Object.defineProperty(exports, "__esModule", ({
225  value: true
226}));
227exports["default"] = void 0;
228var _focusableElementSelectors = __webpack_require__(/*! ./focusable-element-selectors */ "../assets/dev/js/frontend/utils/focusable-element-selectors.js");
229class ModalKeyboardHandler {
230  lastFocusableElement = null;
231  firstFocusableElement = null;
232  modalTriggerElement = null;
233  constructor(elementConfig) {
234    this.config = elementConfig;
235    this.changeFocusAfterAnimation = false;
236  }
237  onOpenModal() {
238    this.initializeElements();
239    this.setTriggerElement();
240    this.changeFocusAfterAnimation = 'popup' === this.config.modalType && !!this.config.hasEntranceAnimation;
241    if (!this.changeFocusAfterAnimation) {
242      this.changeFocus();
243    }
244    this.bindEvents();
245  }
246  onCloseModal() {
247    elementorFrontend.elements.$window.off('keydown', this.onKeyDownPressed.bind(this));
248    if (this.modalTriggerElement) {
249      this.setFocusToElement(this.modalTriggerElement);
250    }
251  }
252  bindEvents() {
253    elementorFrontend.elements.$window.on('keydown', this.onKeyDownPressed.bind(this));
254    if (this.changeFocusAfterAnimation) {
255      this.config.$modalElements.on('animationend animationcancel', this.changeFocus.bind(this));
256    }
257    if ('popup' === this.config.modalType) {
258      this.onPopupCloseEvent();
259    }
260  }
261  onPopupCloseEvent() {
262    elementorFrontend.elements.$window.on('elementor/popup/hide', this.onCloseModal.bind(this));
263  }
264  getFocusableElements() {
265    const selectorFocusedElements = 'popup' === this.config.modalType ? ':focusable' : (0, _focusableElementSelectors.focusableElementSelectors)();
266    return this.config.$modalElements.find(selectorFocusedElements);
267  }
268  initializeElements() {
269    const $focusableElements = this.getFocusableElements();
270    if (!$focusableElements.length) {
271      return;
272    }
273    this.lastFocusableElement = $focusableElements[$focusableElements.length - 1];
274    this.firstFocusableElement = $focusableElements[0];
275  }
276  setTriggerElement() {
277    const activeElement = elementorFrontend.elements.window.document.activeElement;
278    if (!!activeElement) {
279      this.modalTriggerElement = elementorFrontend.elements.window.document.activeElement;
280    } else {
281      this.modalTriggerElement = null;
282    }
283  }
284  changeFocus() {
285    if (!!this.firstFocusableElement) {
286      this.setFocusToElement(this.firstFocusableElement);
287    } else {
288      this.config.$elementWrapper.attr('tabindex', '0');
289      this.setFocusToElement(this.config.$elementWrapper[0]);
290    }
291  }
292  onKeyDownPressed(keyDownEvent) {
293    const TAB_KEY = 9;
294    const isShiftPressed = keyDownEvent.shiftKey;
295    const isTabPressed = 'Tab' === keyDownEvent.key || TAB_KEY === keyDownEvent.keyCode;
296    const isContentWrapperFocused = '0' === this.config.$elementWrapper.attr('tabindex');
297    if (isTabPressed && isContentWrapperFocused) {
298      keyDownEvent.preventDefault();
299    } else if (isTabPressed) {
300      this.onTabKeyPressed(isTabPressed, isShiftPressed, keyDownEvent);
301    }
302  }
303  onTabKeyPressed(isTabPressed, isShiftPressed, keyDownEvent) {
304    if (elementorFrontend.isEditMode()) {
305      this.initializeElements();
306    }
307    const activeElement = elementorFrontend.elements.window.document.activeElement;
308    if (isShiftPressed) {
309      const isFocusOnFirstElement = activeElement === this.firstFocusableElement;
310      if (isFocusOnFirstElement) {
311        this.setFocusToElement(this.lastFocusableElement);
312        keyDownEvent.preventDefault();
313      }
314    } else {
315      const isFocusOnLastElement = activeElement === this.lastFocusableElement;
316      if (isFocusOnLastElement) {
317        this.setFocusToElement(this.firstFocusableElement);
318        keyDownEvent.preventDefault();
319      }
320    }
321  }
322  setFocusToElement(element) {
323    const focusDelayToEnsureThatAllAnimationsHaveFinished = 'popup' === this.config.modalType ? 250 : 100;
324    setTimeout(() => {
325      element?.focus();
326    }, focusDelayToEnsureThatAllAnimationsHaveFinished);
327  }
328}
329exports["default"] = ModalKeyboardHandler;
330
331/***/ }),
332
333/***/ "../assets/dev/js/frontend/utils/run-element-handlers.js":
334/*!***************************************************************!*\
335  !*** ../assets/dev/js/frontend/utils/run-element-handlers.js ***!
336  \***************************************************************/
337/***/ ((__unused_webpack_module, exports) => {
338
339
340
341Object.defineProperty(exports, "__esModule", ({
342  value: true
343}));
344exports["default"] = runElementHandlers;
345function runElementHandlers(elements) {
346  [...elements].flatMap(el => [...el.querySelectorAll('.elementor-element')]).forEach(el => elementorFrontend.elementsHandler.runReadyTrigger(el));
347}
348
349/***/ }),
350
351/***/ "../modules/animated-headline/assets/js/frontend/frontend.js":
352/*!*******************************************************************!*\
353  !*** ../modules/animated-headline/assets/js/frontend/frontend.js ***!
354  \*******************************************************************/
355/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
356
357
358
359Object.defineProperty(exports, "__esModule", ({
360  value: true
361}));
362exports["default"] = void 0;
363class _default extends elementorModules.Module {
364  constructor() {
365    super();
366    elementorFrontend.elementsHandler.attachHandler('animated-headline', () => __webpack_require__.e(/*! import() | animated-headline */ "animated-headline").then(__webpack_require__.bind(__webpack_require__, /*! ./handlers/animated-headlines */ "../modules/animated-headline/assets/js/frontend/handlers/animated-headlines.js")));
367  }
368}
369exports["default"] = _default;
370
371/***/ }),
372
373/***/ "../modules/carousel/assets/js/frontend/frontend.js":
374/*!**********************************************************!*\
375  !*** ../modules/carousel/assets/js/frontend/frontend.js ***!
376  \**********************************************************/
377/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
378
379
380
381Object.defineProperty(exports, "__esModule", ({
382  value: true
383}));
384exports["default"] = void 0;
385class _default extends elementorModules.Module {
386  constructor() {
387    super();
388    elementorFrontend.elementsHandler.attachHandler('media-carousel', () => __webpack_require__.e(/*! import() | media-carousel */ "media-carousel").then(__webpack_require__.bind(__webpack_require__, /*! ./handlers/media-carousel */ "../modules/carousel/assets/js/frontend/handlers/media-carousel.js")));
389    elementorFrontend.elementsHandler.attachHandler('testimonial-carousel', () => __webpack_require__.e(/*! import() | carousel */ "carousel").then(__webpack_require__.bind(__webpack_require__, /*! ./handlers/testimonial-carousel */ "../modules/carousel/assets/js/frontend/handlers/testimonial-carousel.js")));
390    elementorFrontend.elementsHandler.attachHandler('reviews', () => __webpack_require__.e(/*! import() | carousel */ "carousel").then(__webpack_require__.bind(__webpack_require__, /*! ./handlers/testimonial-carousel */ "../modules/carousel/assets/js/frontend/handlers/testimonial-carousel.js")));
391  }
392}
393exports["default"] = _default;
394
395/***/ }),
396
397/***/ "../modules/countdown/assets/js/frontend/frontend.js":
398/*!***********************************************************!*\
399  !*** ../modules/countdown/assets/js/frontend/frontend.js ***!
400  \***********************************************************/
401/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
402
403
404
405Object.defineProperty(exports, "__esModule", ({
406  value: true
407}));
408exports["default"] = void 0;
409class _default extends elementorModules.Module {
410  constructor() {
411    super();
412    elementorFrontend.elementsHandler.attachHandler('countdown', () => __webpack_require__.e(/*! import() | countdown */ "countdown").then(__webpack_require__.bind(__webpack_require__, /*! ./handlers/countdown */ "../modules/countdown/assets/js/frontend/handlers/countdown.js")));
413  }
414}
415exports["default"] = _default;
416
417/***/ }),
418
419/***/ "../modules/dynamic-tags/assets/js/frontend/frontend.js":
420/*!**************************************************************!*\
421  !*** ../modules/dynamic-tags/assets/js/frontend/frontend.js ***!
422  \**************************************************************/
423/***/ ((__unused_webpack_module, exports) => {
424
425
426
427Object.defineProperty(exports, "__esModule", ({
428  value: true
429}));
430exports["default"] = void 0;
431class _default extends elementorModules.Module {
432  constructor() {
433    super();
434    elementorFrontend.on('components:init', () => this.onFrontendComponentsInit());
435  }
436  onFrontendComponentsInit() {
437    elementorFrontend.utils.urlActions.addAction('reload-page', () => document.location.reload());
438  }
439}
440exports["default"] = _default;
441
442/***/ }),
443
444/***/ "../modules/floating-buttons/assets/js/frontend/frontend.js":
445/*!******************************************************************!*\
446  !*** ../modules/floating-buttons/assets/js/frontend/frontend.js ***!
447  \******************************************************************/
448/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
449
450
451
452Object.defineProperty(exports, "__esModule", ({
453  value: true
454}));
455exports["default"] = void 0;
456class _default extends elementorModules.Module {
457  constructor() {
458    super();
459    if (elementorFrontend.config.experimentalFeatures.container) {
460      ['contact-buttons-var-1', 'contact-buttons-var-3', 'contact-buttons-var-4', 'contact-buttons-var-5', 'contact-buttons-var-6', 'contact-buttons-var-7', 'contact-buttons-var-8', 'contact-buttons-var-9'].forEach(handler => {
461        elementorFrontend.elementsHandler.attachHandler(handler, () => __webpack_require__.e(/*! import() | contact-buttons */ "contact-buttons").then(__webpack_require__.bind(__webpack_require__, /*! ./handlers/contact-buttons */ "../modules/floating-buttons/assets/js/frontend/handlers/contact-buttons.js")));
462      });
463      elementorFrontend.elementsHandler.attachHandler('contact-buttons-var-10', () => __webpack_require__.e(/*! import() | contact-buttons-var-10 */ "contact-buttons-var-10").then(__webpack_require__.bind(__webpack_require__, /*! ./handlers/contact-buttons-v10 */ "../modules/floating-buttons/assets/js/frontend/handlers/contact-buttons-v10.js")));
464      elementorFrontend.elementsHandler.attachHandler('floating-bars-var-2', () => Promise.all(/*! import() | floating-bars-var-2 */[__webpack_require__.e("modules_floating-buttons_assets_js_frontend_classes_floatin-bar-dom_js-modules_floating-butto-2c1e90"), __webpack_require__.e("floating-bars-var-2")]).then(__webpack_require__.bind(__webpack_require__, /*! ./handlers/floating-bars-v2 */ "../modules/floating-buttons/assets/js/frontend/handlers/floating-bars-v2.js")));
465      elementorFrontend.elementsHandler.attachHandler('floating-bars-var-3', () => Promise.all(/*! import() | floating-bars-var-3 */[__webpack_require__.e("modules_floating-buttons_assets_js_frontend_classes_floatin-bar-dom_js-modules_floating-butto-2c1e90"), __webpack_require__.e("floating-bars-var-3")]).then(__webpack_require__.bind(__webpack_require__, /*! ./handlers/floating-bars-v3 */ "../modules/floating-buttons/assets/js/frontend/handlers/floating-bars-v3.js")));
466    }
467  }
468}
469exports["default"] = _default;
470
471/***/ }),
472
473/***/ "../modules/forms/assets/js/frontend/frontend.js":
474/*!*******************************************************!*\
475  !*** ../modules/forms/assets/js/frontend/frontend.js ***!
476  \*******************************************************/
477/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
478
479
480
481Object.defineProperty(exports, "__esModule", ({
482  value: true
483}));
484exports["default"] = void 0;
485class _default extends elementorModules.Module {
486  constructor() {
487    super();
488    elementorFrontend.elementsHandler.attachHandler('form', [() => __webpack_require__.e(/*! import() | form */ "form").then(__webpack_require__.bind(__webpack_require__, /*! ./handlers/form-steps */ "../modules/forms/assets/js/frontend/handlers/form-steps.js")), () => __webpack_require__.e(/*! import() | form */ "form").then(__webpack_require__.bind(__webpack_require__, /*! ./handlers/form-sender */ "../modules/forms/assets/js/frontend/handlers/form-sender.js")), () => __webpack_require__.e(/*! import() | form */ "form").then(__webpack_require__.bind(__webpack_require__, /*! ./handlers/form-redirect */ "../modules/forms/assets/js/frontend/handlers/form-redirect.js")), () => __webpack_require__.e(/*! import() | form */ "form").then(__webpack_require__.bind(__webpack_require__, /*! ./handlers/fields/date */ "../modules/forms/assets/js/frontend/handlers/fields/date.js")), () => __webpack_require__.e(/*! import() | form */ "form").then(__webpack_require__.bind(__webpack_require__, /*! ./handlers/recaptcha */ "../modules/forms/assets/js/frontend/handlers/recaptcha.js")), () => __webpack_require__.e(/*! import() | form */ "form").then(__webpack_require__.bind(__webpack_require__, /*! ./handlers/fields/time */ "../modules/forms/assets/js/frontend/handlers/fields/time.js"))]);
489    elementorFrontend.elementsHandler.attachHandler('subscribe', [() => __webpack_require__.e(/*! import() | form */ "form").then(__webpack_require__.bind(__webpack_require__, /*! ./handlers/form-steps */ "../modules/forms/assets/js/frontend/handlers/form-steps.js")), () => __webpack_require__.e(/*! import() | form */ "form").then(__webpack_require__.bind(__webpack_require__, /*! ./handlers/form-sender */ "../modules/forms/assets/js/frontend/handlers/form-sender.js")), () => __webpack_require__.e(/*! import() | form */ "form").then(__webpack_require__.bind(__webpack_require__, /*! ./handlers/form-redirect */ "../modules/forms/assets/js/frontend/handlers/form-redirect.js"))]);
490  }
491}
492exports["default"] = _default;
493
494/***/ }),
495
496/***/ "../modules/gallery/assets/js/frontend/frontend.js":
497/*!*********************************************************!*\
498  !*** ../modules/gallery/assets/js/frontend/frontend.js ***!
499  \*********************************************************/
500/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
501
502
503
504Object.defineProperty(exports, "__esModule", ({
505  value: true
506}));
507exports["default"] = void 0;
508class _default extends elementorModules.Module {
509  constructor() {
510    super();
511    elementorFrontend.elementsHandler.attachHandler('gallery', () => __webpack_require__.e(/*! import() | gallery */ "gallery").then(__webpack_require__.bind(__webpack_require__, /*! ./handler */ "../modules/gallery/assets/js/frontend/handler.js")));
512  }
513}
514exports["default"] = _default;
515
516/***/ }),
517
518/***/ "../modules/hotspot/assets/js/frontend/frontend.js":
519/*!*********************************************************!*\
520  !*** ../modules/hotspot/assets/js/frontend/frontend.js ***!
521  \*********************************************************/
522/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
523
524
525
526Object.defineProperty(exports, "__esModule", ({
527  value: true
528}));
529exports["default"] = void 0;
530class _default extends elementorModules.Module {
531  constructor() {
532    super();
533    elementorFrontend.elementsHandler.attachHandler('hotspot', () => __webpack_require__.e(/*! import() | hotspot */ "hotspot").then(__webpack_require__.bind(__webpack_require__, /*! ./handlers/hotspot */ "../modules/hotspot/assets/js/frontend/handlers/hotspot.js")));
534  }
535}
536exports["default"] = _default;
537
538/***/ }),
539
540/***/ "../modules/loop-builder/assets/js/frontend/frontend.js":
541/*!**************************************************************!*\
542  !*** ../modules/loop-builder/assets/js/frontend/frontend.js ***!
543  \**************************************************************/
544/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
545
546
547
548Object.defineProperty(exports, "__esModule", ({
549  value: true
550}));
551exports["default"] = void 0;
552class _default extends elementorModules.Module {
553  constructor() {
554    super();
555    ['post', 'product', 'post_taxonomy', 'product_taxonomy'].forEach(skinName => {
556      elementorFrontend.elementsHandler.attachHandler('loop-grid', () => __webpack_require__.e(/*! import() | load-more */ "load-more").then(__webpack_require__.bind(__webpack_require__, /*! ./handlers/load-more */ "../modules/loop-builder/assets/js/frontend/handlers/load-more.js")), skinName);
557      elementorFrontend.elementsHandler.attachHandler('loop-grid', () => __webpack_require__.e(/*! import() | loop */ "loop").then(__webpack_require__.bind(__webpack_require__, /*! ./handlers/loop */ "../modules/loop-builder/assets/js/frontend/handlers/loop.js")), skinName);
558      elementorFrontend.elementsHandler.attachHandler('loop-carousel', () => __webpack_require__.e(/*! import() | loop */ "loop").then(__webpack_require__.bind(__webpack_require__, /*! ./handlers/loop */ "../modules/loop-builder/assets/js/frontend/handlers/loop.js")), skinName);
559      elementorFrontend.elementsHandler.attachHandler('loop-carousel', () => __webpack_require__.e(/*! import() | loop-carousel */ "loop-carousel").then(__webpack_require__.bind(__webpack_require__, /*! ./handlers/loop-carousel */ "../modules/loop-builder/assets/js/frontend/handlers/loop-carousel.js")), skinName);
560      elementorFrontend.elementsHandler.attachHandler('loop-grid', () => __webpack_require__.e(/*! import() | ajax-pagination */ "ajax-pagination").then(__webpack_require__.bind(__webpack_require__, /*! ./handlers/ajax-pagination */ "../modules/loop-builder/assets/js/frontend/handlers/ajax-pagination.js")), skinName);
561    });
562  }
563}
564exports["default"] = _default;
565
566/***/ }),
567
568/***/ "../modules/loop-filter/assets/js/frontend/frontend-module-base.js":
569/*!*************************************************************************!*\
570  !*** ../modules/loop-filter/assets/js/frontend/frontend-module-base.js ***!
571  \*************************************************************************/
572/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
573
574
575
576var _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ "../node_modules/@babel/runtime/helpers/interopRequireDefault.js");
577Object.defineProperty(exports, "__esModule", ({
578  value: true
579}));
580exports["default"] = void 0;
581var _runElementHandlers = _interopRequireDefault(__webpack_require__(/*! elementor-pro/frontend/utils/run-element-handlers */ "../assets/dev/js/frontend/utils/run-element-handlers.js"));
582var _ajaxHelper = _interopRequireDefault(__webpack_require__(/*! elementor-pro/frontend/utils/ajax-helper */ "../assets/dev/js/frontend/utils/ajax-helper.js"));
583var _loopWidgetsStore = _interopRequireDefault(__webpack_require__(/*! ./loop-widgets-store */ "../modules/loop-filter/assets/js/frontend/loop-widgets-store.js"));
584var _queryConstants = __webpack_require__(/*! ../query-constants */ "../modules/loop-filter/assets/js/query-constants.js");
585class BaseFilterFrontendModule extends elementorModules.Module {
586  constructor() {
587    super();
588    this.loopWidgetsStore = new _loopWidgetsStore.default();
589  }
590
591  /**
592   * Removes selected filter term from the filter array
593   *
594   * @param {string} widgetId
595   * @param {string} filterId
596   * @param {string} filterTerm
597   * @param {string} defaultFilter
598   */
599  removeFilterFromLoopWidget(widgetId, filterId) {
600    let filterTerm = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : '';
601    let defaultFilter = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : '';
602    if (!this.loopWidgetsStore.getWidget(widgetId)) {
603      this.loopWidgetsStore.addWidget(widgetId);
604      this.refreshLoopWidget(widgetId, filterId);
605      return;
606    }
607    if (filterTerm === defaultFilter) {
608      this.loopWidgetsStore.unsetFilter(widgetId, filterId);
609    }
610    if (filterTerm !== defaultFilter) {
611      const filters = this.loopWidgetsStore.getFilterTerms(widgetId, filterId),
612        newTerms = filters.filter(function (e) {
613          return e !== filterTerm;
614        });
615      this.loopWidgetsStore.setFilterTerms(widgetId, filterId, newTerms);
616    }
617    this.refreshLoopWidget(widgetId, filterId);
618  }
619
620  /**
621   * Sets the filter data for a loop widget.
622   *
623   * This function should trigger the following sequence:
624   * 1. Update the filter data for the passed ID in the loopElements object by adding new filters to the loopWidgetsStore filters array.
625   * 2. Trigger a rerender of the loop widget if refresh is true.
626   * 3  Trigger a consolidation of all filters belonging to the passed loop widget ID if refresh is false.
627   *   - This should create an object with filter type keys, and for each type, an object of filter IDs, which contain the filter values.
628   *   - This should also remove duplicates.
629   *
630   * @param {string}  widgetId
631   * @param {string}  filterId
632   * @param {Object}  filter                     new data for this filterId in loopWidgetsStore
633   * @param {boolean} refresh
634   * @param {string}  multipleFiltersLogicalJoin AND / OR / 'DISABLED' for single filter (default)
635   */
636  setFilterDataForLoopWidget(widgetId, filterId, filter) {
637    let refresh = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : true;
638    let multipleFiltersLogicalJoin = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : 'DISABLED';
639    this.loopWidgetsStore.maybeInitializeWidget(widgetId);
640    this.loopWidgetsStore.maybeInitializeFilter(widgetId, filterId);
641    const logicalJoin = this.validateMultipleFilterOperator(multipleFiltersLogicalJoin);
642    if ('DISABLED' !== logicalJoin) {
643      const existingTerms = this.loopWidgetsStore.getFilterTerms(widgetId, filterId) ?? [],
644        newTerms = filter.filterData.terms;
645      filter.filterData.terms = [...new Set([...existingTerms, ...newTerms])];
646      filter.filterData.logicalJoin = logicalJoin;
647    }
648    this.loopWidgetsStore.setFilter(widgetId, filterId, filter);
649    if (refresh) {
650      this.refreshLoopWidget(widgetId, filterId);
651      return;
652    }
653    this.loopWidgetsStore.consolidateFilters(widgetId);
654  }
655
656  /**
657   * Validates the operator values for wp_query.
658   * @param {string} operator
659   * @return {*|string} 'AND' | 'OR' | 'DISABLED'
660   */
661  validateMultipleFilterOperator(operator) {
662    if (!operator || !['AND', 'OR'].includes(operator)) {
663      return 'DISABLED';
664    }
665    return operator;
666  }
667
668  /**
669   *
670   * @return {{}} Query string in object form.
671   */
672  getQueryStringInObjectForm() {
673    const queryString = {};
674    for (const widgetId in this.loopWidgetsStore.get()) {
675      const loopWidget = this.loopWidgetsStore.getWidget(widgetId);
676      for (const filterType in loopWidget.consolidatedFilters) {
677        const filterData = loopWidget.consolidatedFilters[filterType];
678        for (const filterName in filterData) {
679          const separator = _queryConstants.queryConstants[filterData[filterName].logicalJoin ?? 'AND'].separator.decoded;
680
681          // Add an `e-` prefix to the key to avoid clashes with other query strings.
682          // Filter values are arrays, to support multiple select.
683          queryString[`e-filter-${widgetId}-${filterName}`] = Object.values(filterData[filterName].terms).join(separator);
684        }
685      }
686    }
687    return queryString;
688  }
689
690  /**
691   * Updates the URL query string with the current filter values.
692   *
693   * @param {string} widgetId
694   * @param {string} filterId
695   */
696  updateURLQueryString(widgetId, filterId) {
697    const currentUrl = new URL(window.location.href),
698      existingQueryString = currentUrl.searchParams,
699      queryStringObject = this.getQueryStringInObjectForm(),
700      updatedParams = new URLSearchParams();
701    existingQueryString.forEach((value, key) => {
702      if (!key.startsWith('e-filter')) {
703        updatedParams.append(key, value);
704      }
705      if (key.startsWith('e-page-' + widgetId)) {
706        updatedParams.delete(key);
707      }
708    });
709    for (const key in queryStringObject) {
710      updatedParams.set(key, queryStringObject[key]);
711    }
712    let queryString = updatedParams.toString();
713    queryString = queryString.replace(new RegExp(`${_queryConstants.queryConstants.AND.separator.encoded}`, 'g'), _queryConstants.queryConstants.AND.separator.decoded);
714    queryString = queryString.replace(new RegExp(`${_queryConstants.queryConstants.OR.separator.encoded}`, 'g'), _queryConstants.queryConstants.OR.separator.decoded);
715    const helpers = this.getFilterHelperAttributes(filterId);
716    if (helpers.pageNum > 1) {
717      queryString = queryString ? this.formatQueryString(helpers.baseUrl, queryString) : helpers.baseUrl;
718    } else {
719      queryString = queryString ? `?${queryString}` : location.pathname;
720    }
721    history.pushState(null, null, queryString);
722  }
723
724  /**
725   * Formats the query string to remove any duplicate parameters.
726   *
727   * @param {string} baseURL
728   * @param {string} queryString
729   * @return {*} deduplicated query string
730   */
731  formatQueryString(baseURL, queryString) {
732    const baseURLParams = baseURL.includes('?') ? new URLSearchParams(baseURL.split('?')[1]) : new URLSearchParams(),
733      inputParams = new URLSearchParams(queryString);
734    for (const param of baseURLParams.keys()) {
735      if (inputParams.has(param)) {
736        inputParams.delete(param);
737      }
738    }
739    const excludedVariables = ['page', 'paged'];
740    for (const excludedVar of excludedVariables) {
741      baseURLParams.delete(excludedVar);
742      inputParams.delete(excludedVar);
743    }
744    const mergedParams = new URLSearchParams(baseURLParams.toString());
745    for (const [param, value] of inputParams.entries()) {
746      mergedParams.append(param, value);
747    }
748    const baseURLString = baseURL.split('?')[0],
749      mergedParamsString = mergedParams.toString() ? `?${mergedParams.toString()}` : '';
750    return baseURLString + mergedParamsString;
751  }
752
753  /**
754   *
755   * @param {string} filterId
756   * @return {{baseUrl: string, pageNum: number}|*|DOMStringMap} Base URL and page number for the loop widget.
757   */
758  getFilterHelperAttributes(filterId) {
759    const filterWidget = document.querySelector('[data-id="' + filterId + '"]');
760    if (!filterWidget) {
761      return {
762        baseUrl: location.href,
763        pageNum: 1
764      };
765    }
766    const filterBar = filterWidget.querySelector('.e-filter');
767    return filterBar.dataset;
768  }
769
770  /**
771   * Prepares the data to be sent to the server for the loop widget update.
772   *
773   * @param {string} widgetId
774   * @param {string} filterId
775   * @return {{post_id: (*|number), widget_id, pagination_base_url: string, widget_filters: *}} data for loop update
776   */
777  prepareLoopUpdateRequestData(widgetId, filterId) {
778    const widgetFilters = this.loopWidgetsStore.getConsolidatedFilters(widgetId),
779      helpers = this.getFilterHelperAttributes(filterId);
780    const data = {
781      post_id: this.getClosestDataElementorId(document.querySelector(`.elementor-element-${widgetId}`)) || elementorFrontend.config.post.id,
782      widget_filters: widgetFilters,
783      widget_id: widgetId,
784      pagination_base_url: helpers.baseUrl
785    };
786    if (elementorFrontend.isEditMode()) {
787      // In the editor, we have to support loop widgets that have been created but not saved to the database yet.
788      const widgetContainer = window.top.$e.components.get('document').utils.findContainerById(widgetId);
789      data.widget_model = widgetContainer.model.toJSON({
790        remove: ['default', 'editSettings', 'defaultEditSettings']
791      });
792      data.is_edit_mode = true;
793    }
794    return data;
795  }
796
797  /**
798   * Returns the closest data-elementor-id attribute value.
799   *
800   * @param {Object} element
801   * @return {string} elementor id of parent
802   */
803  getClosestDataElementorId(element) {
804    const closestParent = element?.closest('[data-elementor-id]');
805    return closestParent ? closestParent.getAttribute('data-elementor-id') : null;
806  }
807
808  /**
809   *
810   * @param {string} widgetId
811   * @param {string} filterId
812   * @return {{headers: {"Content-Type": string}, method: string, body: string}} Fetch arguments for loop Widget update
813   */
814  getFetchArgumentsForLoopUpdate(widgetId, filterId) {
815    const data = this.prepareLoopUpdateRequestData(widgetId, filterId);
816    const args = {
817      method: 'POST',
818      headers: {
819        'Content-Type': 'application/json'
820      },
821      body: JSON.stringify(data)
822    };
823    if (elementorFrontend.isEditMode() && !!elementorPro.config.loopFilter?.nonce) {
824      args.headers['X-WP-Nonce'] = elementorPro.config.loopFilter?.nonce;
825    }
826    return args;
827  }
828
829  /**
830   * Fetches the updated loop widget markup from the server.
831   *
832   * @param {string} widgetId
833   * @param {string} filterId
834   * @return {Promise<Response>} Promise for the fetch request.
835   */
836  fetchUpdatedLoopWidgetMarkup(widgetId, filterId) {
837    return fetch(`${elementorProFrontend.config.urls.rest}elementor-pro/v1/refresh-loop`, this.getFetchArgumentsForLoopUpdate(widgetId, filterId));
838  }
839  createFragmentFromHTMLString(htmlString) {
840    const template = document.createElement('template');
841    template.innerHTML = htmlString.trim();
842    return template.content;
843  }
844  refreshLoopWidget(widgetId, filterId) {
845    this.loopWidgetsStore.consolidateFilters(widgetId);
846    this.updateURLQueryString(widgetId, filterId);
847    const widget = document.querySelector(`.elementor-element-${widgetId}`);
848    if (!widget) {
849      return;
850    }
851    if (!this.ajaxHelper) {
852      this.ajaxHelper = new _ajaxHelper.default();
853    }
854    this.ajaxHelper.addLoadingAnimationOverlay(widgetId);
855    const fetchUpdatedLoopWidgetMarkup = this.fetchUpdatedLoopWidgetMarkup(widgetId, filterId).then(response => {
856      if (!(response instanceof Response) || !response?.ok || 400 <= response?.status) {
857        return {};
858      }
859      return response.json();
860    }).catch(() => {
861      return {};
862    }).then(response => {
863      if (!response?.data && '' !== response?.data) {
864        return;
865      }
866      const newWidgetFragment = this.createFragmentFromHTMLString(response.data);
867      const newNodes = Array.from(newWidgetFragment.children);
868      newNodes.forEach(newNode => {
869        const selector = newNode.className ? `.${newNode.className.split(' ').join('.')}` : `#${newNode.id}`;
870        const existingNode = widget.querySelector(selector);
871        if (existingNode) {
872          existingNode.parentNode.replaceChild(newNode, existingNode);
873        }
874      });
875      this.handleElementHandlers(widget);
876      if (ElementorProFrontendConfig.settings.lazy_load_background_images) {
877        document.dispatchEvent(new Event('elementor/lazyload/observe'));
878      }
879      elementorFrontend.elementsHandler.runReadyTrigger(document.querySelector(`.elementor-element-${widgetId}`));
880      widget.classList.remove('e-loading');
881    }).finally(() => {
882      this.ajaxHelper.removeLoadingAnimationOverlay(widgetId);
883    });
884    return fetchUpdatedLoopWidgetMarkup;
885
886    // TODO: Deal with pagination. Do we need to manually add the query string to the pagination links?
887  }
888  handleElementHandlers(newWidgetMarkup) {
889    const loopItems = newWidgetMarkup.querySelectorAll('.e-loop-item');
890    (0, _runElementHandlers.default)(loopItems);
891  }
892}
893exports["default"] = BaseFilterFrontendModule;
894
895/***/ }),
896
897/***/ "../modules/loop-filter/assets/js/frontend/frontend.js":
898/*!*************************************************************!*\
899  !*** ../modules/loop-filter/assets/js/frontend/frontend.js ***!
900  \*************************************************************/
901/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
902
903
904
905var _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ "../node_modules/@babel/runtime/helpers/interopRequireDefault.js");
906Object.defineProperty(exports, "__esModule", ({
907  value: true
908}));
909exports["default"] = void 0;
910var _frontendModuleBase = _interopRequireDefault(__webpack_require__(/*! ./frontend-module-base */ "../modules/loop-filter/assets/js/frontend/frontend-module-base.js"));
911class LoopFilter extends _frontendModuleBase.default {
912  constructor() {
913    super();
914    elementorFrontend.elementsHandler.attachHandler('taxonomy-filter', () => __webpack_require__.e(/*! import() | taxonomy-filter */ "taxonomy-filter").then(__webpack_require__.bind(__webpack_require__, /*! ./handlers/taxonomy-filter */ "../modules/loop-filter/assets/js/frontend/handlers/taxonomy-filter.js")));
915  }
916}
917exports["default"] = LoopFilter;
918
919/***/ }),
920
921/***/ "../modules/loop-filter/assets/js/frontend/loop-widgets-store.js":
922/*!***********************************************************************!*\
923  !*** ../modules/loop-filter/assets/js/frontend/loop-widgets-store.js ***!
924  \***********************************************************************/
925/***/ ((__unused_webpack_module, exports) => {
926
927
928
929Object.defineProperty(exports, "__esModule", ({
930  value: true
931}));
932exports["default"] = void 0;
933class LoopWidgetsStore {
934  constructor() {
935    this.widgets = {};
936  }
937  get() {
938    return this.widgets;
939  }
940  getWidget(widgetId) {
941    return this.widgets[widgetId];
942  }
943  setWidget(widgetId, widget) {
944    this.widgets[widgetId] = widget;
945  }
946  unsetWidget(widgetId) {
947    delete this.widgets[widgetId];
948  }
949  getFilters(widgetId) {
950    return this.getWidget(widgetId).filters;
951  }
952  getFilter(widgetId, filterId) {
953    return this.getWidget(widgetId).filters[filterId];
954  }
955  setFilter(widgetId, filterId, filterData) {
956    this.getWidget(widgetId).filters[filterId] = filterData;
957  }
958  unsetFilter(widgetId, filterId) {
959    delete this.getWidget(widgetId).filters[filterId];
960  }
961  getFilterTerms(widgetId, filterId) {
962    return this.getFilter(widgetId, filterId).filterData.terms ?? [];
963  }
964  setFilterTerms(widgetId, filterId, termData) {
965    this.getFilter(widgetId, filterId).filterData.terms = termData;
966  }
967  getConsolidatedFilters(widgetId) {
968    return this.getWidget(widgetId).consolidatedFilters;
969  }
970  setConsolidatedFilters(widgetId, consolidatedFilters) {
971    this.getWidget(widgetId).consolidatedFilters = consolidatedFilters;
972  }
973
974  /**
975   *
976   * @param {string} widgetId
977   */
978  addWidget(widgetId) {
979    const newWidget = {
980      filters: {},
981      consolidatedFilters: {}
982    };
983    this.setWidget(widgetId, newWidget);
984  }
985  maybeInitializeWidget(widgetId) {
986    if (!!this.getWidget(widgetId)) {
987      return;
988    }
989    this.addWidget(widgetId);
990  }
991  maybeInitializeFilter(widgetId, filterId) {
992    if (!!this.getFilter(widgetId, filterId)) {
993      return;
994    }
995    const newFilter = {
996      filterData: {
997        terms: []
998      }
999    };
1000    this.setFilter(widgetId, filterId, newFilter);
1001  }
1002
1003  /**
1004   * Consolidates all filters for a loop widget.
1005   *
1006   * filters: {
1007   * 	filter1: { filterType: 'type1', filterData: { selectedTaxonomy: 'taxonomy1', terms: [ 'term1', 'term2' ] } },
1008   * 	filter2: { filterType: 'type1', filterData: { selectedTaxonomy: 'taxonomy1', terms: [ 'term2' ] } },
1009   * },
1010   * consolidatedFilters: {},
1011   *
1012   * @param {string} widgetId
1013   */
1014  consolidateFilters(widgetId) {
1015    const loopWidgetFilters = this.getFilters(widgetId),
1016      consolidatedFilters = {};
1017    for (const filterId in loopWidgetFilters) {
1018      const filter = loopWidgetFilters[filterId],
1019        filterType = filter.filterType,
1020        filterData = filter.filterData;
1021      if (0 === filterData.terms.length) {
1022        continue;
1023      }
1024
1025      // This part is non-generic. To expand this functionality to other filter types, we'll need to refactor and
1026      // generalize this part.
1027      if (!consolidatedFilters[filterType]) {
1028        consolidatedFilters[filterType] = {};
1029      }
1030      if (!consolidatedFilters[filterType][filterData.selectedTaxonomy]) {
1031        consolidatedFilters[filterType][filterData.selectedTaxonomy] = [];
1032      }
1033      if (filterData.terms && (!consolidatedFilters[filterType][filterData.selectedTaxonomy].terms || !consolidatedFilters[filterType][filterData.selectedTaxonomy].terms.includes(filterData.terms))) {
1034        consolidatedFilters[filterType][filterData.selectedTaxonomy] = {
1035          terms: filterData.terms === typeof 'string' ? [filterData.terms] : filterData.terms
1036        };
1037      }
1038      if (filterData.logicalJoin && !consolidatedFilters[filterType][filterData.selectedTaxonomy].logicalJoin) {
1039        consolidatedFilters[filterType][filterData.selectedTaxonomy] = {
1040          ...(consolidatedFilters[filterType][filterData.selectedTaxonomy] || {}),
1041          // Check for undefined
1042          logicalJoin: filterData.logicalJoin ?? 'AND'
1043        };
1044      }
1045    }
1046    this.setConsolidatedFilters(widgetId, consolidatedFilters);
1047  }
1048}
1049exports["default"] = LoopWidgetsStore;
1050
1051/***/ }),
1052
1053/***/ "../modules/loop-filter/assets/js/query-constants.js":
1054/*!***********************************************************!*\
1055  !*** ../modules/loop-filter/assets/js/query-constants.js ***!
1056  \***********************************************************/
1057/***/ ((module) => {
1058
1059
1060
1061const queryConstants = {
1062  AND: {
1063    separator: {
1064      decoded: '+',
1065      fromBrowser: ' ',
1066      encoded: '%2B'
1067    },
1068    operator: 'AND'
1069  },
1070  OR: {
1071    separator: {
1072      decoded: '~',
1073      fromBrowser: '~',
1074      encoded: '%7C'
1075    },
1076    operator: 'IN'
1077  },
1078  NOT: {
1079    separator: {
1080      decoded: '!',
1081      fromBrowser: '!',
1082      encoded: '%21'
1083    },
1084    operator: 'NOT IN'
1085  },
1086  DISABLED: {
1087    separator: {
1088      decoded: '',
1089      fromBrowser: '',
1090      encoded: ''
1091    },
1092    operator: 'AND'
1093  }
1094};
1095module.exports = {
1096  queryConstants
1097};
1098
1099/***/ }),
1100
1101/***/ "../modules/lottie/assets/js/frontend/frontend.js":
1102/*!********************************************************!*\
1103  !*** ../modules/lottie/assets/js/frontend/frontend.js ***!
1104  \********************************************************/
1105/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
1106
1107
1108
1109Object.defineProperty(exports, "__esModule", ({
1110  value: true
1111}));
1112exports["default"] = void 0;
1113class _default extends elementorModules.Module {
1114  constructor() {
1115    super();
1116    elementorFrontend.elementsHandler.attachHandler('lottie', () => __webpack_require__.e(/*! import() | lottie */ "lottie").then(__webpack_require__.bind(__webpack_require__, /*! ./handler */ "../modules/lottie/assets/js/frontend/handler.js")));
1117  }
1118}
1119exports["default"] = _default;
1120
1121/***/ }),
1122
1123/***/ "../modules/mega-menu/assets/js/frontend/frontend.js":
1124/*!***********************************************************!*\
1125  !*** ../modules/mega-menu/assets/js/frontend/frontend.js ***!
1126  \***********************************************************/
1127/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
1128
1129
1130
1131Object.defineProperty(exports, "__esModule", ({
1132  value: true
1133}));
1134exports["default"] = void 0;
1135class _default extends elementorModules.Module {
1136  constructor() {
1137    super();
1138    elementorFrontend.elementsHandler.attachHandler('mega-menu', [() => __webpack_require__.e(/*! import() | mega-menu */ "mega-menu").then(__webpack_require__.bind(__webpack_require__, /*! ./handlers/mega-menu */ "../modules/mega-menu/assets/js/frontend/handlers/mega-menu.js")), () => __webpack_require__.e(/*! import() | mega-menu-stretch-content */ "mega-menu-stretch-content").then(__webpack_require__.bind(__webpack_require__, /*! ./handlers/stretch-menu-item-content */ "../modules/mega-menu/assets/js/frontend/handlers/stretch-menu-item-content.js")), () => __webpack_require__.e(/*! import() | menu-title-keyboard-handler */ "menu-title-keyboard-handler").then(__webpack_require__.bind(__webpack_require__, /*! ./handlers/menu-title-keyboard-handler */ "../modules/mega-menu/assets/js/frontend/handlers/menu-title-keyboard-handler.js"))]);
1139  }
1140}
1141exports["default"] = _default;
1142
1143/***/ }),
1144
1145/***/ "../modules/nav-menu/assets/js/frontend/frontend.js":
1146/*!**********************************************************!*\
1147  !*** ../modules/nav-menu/assets/js/frontend/frontend.js ***!
1148  \**********************************************************/
1149/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
1150
1151
1152
1153Object.defineProperty(exports, "__esModule", ({
1154  value: true
1155}));
1156exports["default"] = void 0;
1157class _default extends elementorModules.Module {
1158  constructor() {
1159    super();
1160    if (jQuery.fn.smartmenus) {
1161      // Override the default stupid detection
1162      jQuery.SmartMenus.prototype.isCSSOn = function () {
1163        return true;
1164      };
1165      if (elementorFrontend.config.is_rtl) {
1166        jQuery.fn.smartmenus.defaults.rightToLeftSubMenus = true;
1167      }
1168    }
1169    elementorFrontend.elementsHandler.attachHandler('nav-menu', () => __webpack_require__.e(/*! import() | nav-menu */ "nav-menu").then(__webpack_require__.bind(__webpack_require__, /*! ./handlers/nav-menu */ "../modules/nav-menu/assets/js/frontend/handlers/nav-menu.js")));
1170  }
1171}
1172exports["default"] = _default;
1173
1174/***/ }),
1175
1176/***/ "../modules/nested-carousel/assets/js/frontend/frontend.js":
1177/*!*****************************************************************!*\
1178  !*** ../modules/nested-carousel/assets/js/frontend/frontend.js ***!
1179  \*****************************************************************/
1180/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
1181
1182
1183
1184Object.defineProperty(exports, "__esModule", ({
1185  value: true
1186}));
1187exports["default"] = void 0;
1188class _default extends elementorModules.Module {
1189  constructor() {
1190    super();
1191    elementorFrontend.elementsHandler.attachHandler('nested-carousel', () => __webpack_require__.e(/*! import() | nested-carousel */ "nested-carousel").then(__webpack_require__.bind(__webpack_require__, /*! ./handlers/nested-carousel */ "../modules/nested-carousel/assets/js/frontend/handlers/nested-carousel.js")));
1192  }
1193}
1194exports["default"] = _default;
1195
1196/***/ }),
1197
1198/***/ "../modules/off-canvas/assets/js/frontend/frontend.js":
1199/*!************************************************************!*\
1200  !*** ../modules/off-canvas/assets/js/frontend/frontend.js ***!
1201  \************************************************************/
1202/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
1203
1204
1205
1206Object.defineProperty(exports, "__esModule", ({
1207  value: true
1208}));
1209exports["default"] = void 0;
1210class _default extends elementorModules.Module {
1211  constructor() {
1212    super();
1213    elementorFrontend.elementsHandler.attachHandler('off-canvas', () => __webpack_require__.e(/*! import() | off-canvas */ "off-canvas").then(__webpack_require__.bind(__webpack_require__, /*! ./handlers/off-canvas */ "../modules/off-canvas/assets/js/frontend/handlers/off-canvas.js")));
1214    elementorFrontend.on('components:init', () => this.onFrontendComponentsInit());
1215  }
1216  onFrontendComponentsInit() {
1217    this.addUrlActions();
1218  }
1219  addUrlActions() {
1220    elementorFrontend.utils.urlActions.addAction('off_canvas:open', settings => {
1221      this.toggleOffCanvasDisplay(settings);
1222    });
1223    elementorFrontend.utils.urlActions.addAction('off_canvas:close', settings => {
1224      this.toggleOffCanvasDisplay(settings);
1225    });
1226    elementorFrontend.utils.urlActions.addAction('off_canvas:toggle', settings => {
1227      this.toggleOffCanvasDisplay(settings);
1228    });
1229  }
1230  toggleOffCanvasDisplay(settings) {
1231    window.dispatchEvent(new CustomEvent('elementor-pro/off-canvas/toggle-display-mode', {
1232      detail: settings
1233    }));
1234  }
1235}
1236exports["default"] = _default;
1237
1238/***/ }),
1239
1240/***/ "../modules/popup/assets/js/frontend/document.js":
1241/*!*******************************************************!*\
1242  !*** ../modules/popup/assets/js/frontend/document.js ***!
1243  \*******************************************************/
1244/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
1245
1246
1247
1248var _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ "../node_modules/@babel/runtime/helpers/interopRequireDefault.js");
1249Object.defineProperty(exports, "__esModule", ({
1250  value: true
1251}));
1252exports["default"] = void 0;
1253var _triggers = _interopRequireDefault(__webpack_require__(/*! ./triggers */ "../modules/popup/assets/js/frontend/triggers.js"));
1254var _timing = _interopRequireDefault(__webpack_require__(/*! ./timing */ "../modules/popup/assets/js/frontend/timing.js"));
1255var _eIcons = __webpack_require__(/*! @elementor-pro/e-icons */ "../assets/dev/js/frontend/utils/icons/e-icons.js");
1256var _modalKeyboardHandler = _interopRequireDefault(__webpack_require__(/*! elementor-pro/frontend/utils/modal-keyboard-handler */ "../assets/dev/js/frontend/utils/modal-keyboard-handler.js"));
1257// Temporary solution, when core 3.5.0 will be the minimum version, is should be replaced with @elementor/e-icons.
1258
1259class _default extends elementorModules.frontend.Document {
1260  keyboardHandler = null;
1261  bindEvents() {
1262    const openSelector = this.getDocumentSettings('open_selector');
1263    if (openSelector) {
1264      elementorFrontend.elements.$body.on('click', openSelector, this.showModal.bind(this));
1265    }
1266  }
1267  startTiming() {
1268    const timing = new _timing.default(this.getDocumentSettings('timing'), this);
1269    if (timing.check()) {
1270      this.initTriggers();
1271    }
1272  }
1273  initTriggers() {
1274    this.triggers = new _triggers.default(this.getDocumentSettings('triggers'), this);
1275  }
1276  showModal(event) {
1277    let avoidMultiple = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;
1278    // eslint-disable-next-line @wordpress/no-unused-vars-before-return
1279    const settings = this.getDocumentSettings();
1280    if (!this.isEdit) {
1281      if (!elementorFrontend.isWPPreviewMode()) {
1282        if (this.getStorage('disable')) {
1283          return;
1284        }
1285        if (avoidMultiple && elementorProFrontend.modules.popup.popupPopped && settings.avoid_multiple_popups) {
1286          return;
1287        }
1288      }
1289
1290      // A clean copy of the element without previous initializations and events
1291      this.$element = jQuery(this.elementHTML);
1292      this.elements.$elements = this.$element.find(this.getSettings('selectors.elements'));
1293    }
1294    const modal = this.getModal(),
1295      $closeButton = modal.getElements('closeButton');
1296    modal.setMessage(this.$element).show();
1297    if (!this.isEdit) {
1298      if (settings.close_button_delay) {
1299        $closeButton.hide();
1300        clearTimeout(this.closeButtonTimeout);
1301        this.closeButtonTimeout = setTimeout(() => $closeButton.show(), settings.close_button_delay * 1000);
1302      }
1303      super.runElementsHandlers();
1304    }
1305    this.setEntranceAnimation();
1306    if (!settings.timing || !settings.timing.times_count) {
1307      this.countTimes();
1308    }
1309    elementorProFrontend.modules.popup.popupPopped = true;
1310    if (!this.isEdit && settings.a11y_navigation) {
1311      this.handleKeyboardA11y();
1312    }
1313  }
1314  setEntranceAnimation() {
1315    const $widgetContent = this.getModal().getElements('widgetContent'),
1316      settings = this.getDocumentSettings(),
1317      newAnimation = elementorFrontend.getCurrentDeviceSetting(settings, 'entrance_animation');
1318    if (this.currentAnimation) {
1319      $widgetContent.removeClass(this.currentAnimation);
1320    }
1321    this.currentAnimation = newAnimation;
1322    if (!newAnimation) {
1323      return;
1324    }
1325    const animationDuration = settings.entrance_animation_duration.size;
1326    $widgetContent.addClass(newAnimation);
1327    setTimeout(() => $widgetContent.removeClass(newAnimation), animationDuration * 1000);
1328  }
1329  handleKeyboardA11y() {
1330    if (!this.keyboardHandler) {
1331      this.keyboardHandler = new _modalKeyboardHandler.default(this.getKeyboardHandlingConfig());
1332    }
1333    this.keyboardHandler.onOpenModal();
1334  }
1335  setExitAnimation() {
1336    const modal = this.getModal(),
1337      settings = this.getDocumentSettings(),
1338      $widgetContent = modal.getElements('widgetContent'),
1339      newAnimation = elementorFrontend.getCurrentDeviceSetting(settings, 'exit_animation'),
1340      animationDuration = newAnimation ? settings.entrance_animation_duration.size : 0;
1341    setTimeout(() => {
1342      if (newAnimation) {
1343        $widgetContent.removeClass(newAnimation + ' reverse');
1344      }
1345      if (!this.isEdit) {
1346        this.$element.remove();
1347        modal.getElements('widget').hide();
1348      }
1349    }, animationDuration * 1000);
1350    if (newAnimation) {
1351      $widgetContent.addClass(newAnimation + ' reverse');
1352    }
1353  }
1354  initModal() {
1355    let modal;
1356    this.getModal = () => {
1357      if (!modal) {
1358        const settings = this.getDocumentSettings(),
1359          id = this.getSettings('id'),
1360          triggerPopupEvent = eventType => {
1361            const event = 'elementor/popup/' + eventType;
1362            elementorFrontend.elements.$document.trigger(event, [id, this]);
1363
1364            // TODO: Use `elementorFrontend.utils.events.dispatch` when it's in master.
1365            window.dispatchEvent(new CustomEvent(event, {
1366              detail: {
1367                id,
1368                instance: this
1369              }
1370            }));
1371          };
1372        let classes = 'elementor-popup-modal';
1373        if (settings.classes) {
1374          classes += ' ' + settings.classes;
1375        }
1376        const modalProperties = {
1377          id: 'elementor-popup-modal-' + id,
1378          className: classes,
1379          closeButton: true,
1380          preventScroll: settings.prevent_scroll,
1381          onShow: () => triggerPopupEvent('show'),
1382          onHide: () => triggerPopupEvent('hide'),
1383          effects: {
1384            hide: () => {
1385              if (settings.timing && settings.timing.times_count) {
1386                this.countTimes();
1387              }
1388              this.setExitAnimation();
1389            },
1390            show: 'show'
1391          },
1392          hide: {
1393            auto: !!settings.close_automatically,
1394            autoDelay: settings.close_automatically * 1000,
1395            onBackgroundClick: !settings.prevent_close_on_background_click,
1396            onOutsideClick: !settings.prevent_close_on_background_click,
1397            onEscKeyPress: !settings.prevent_close_on_esc_key,
1398            ignore: '.flatpickr-calendar'
1399          },
1400          position: {
1401            enable: false
1402          }
1403        };
1404        if (elementorFrontend.config.experimentalFeatures.e_font_icon_svg) {
1405          modalProperties.closeButtonOptions = {
1406            iconElement: _eIcons.close.element
1407          };
1408        }
1409
1410        // This line should be moved to the condition above, as an 'else' case, once the core minimum version is 3.5.0.
1411        modalProperties.closeButtonClass = 'eicon-close';
1412        modal = elementorFrontend.getDialogsManager().createWidget('lightbox', modalProperties);
1413        modal.getElements('widgetContent').addClass('animated');
1414        const $closeButton = modal.getElements('closeButton');
1415        if (this.isEdit) {
1416          $closeButton.off('click');
1417          modal.hide = () => {};
1418        }
1419        this.setCloseButtonPosition();
1420      }
1421      return modal;
1422    };
1423  }
1424  setCloseButtonPosition() {
1425    const modal = this.getModal(),
1426      closeButtonPosition = this.getDocumentSettings('close_button_position'),
1427      $closeButton = modal.getElements('closeButton');
1428    $closeButton.prependTo(modal.getElements('outside' === closeButtonPosition ? 'widget' : 'widgetContent'));
1429  }
1430  disable() {
1431    this.setStorage('disable', true);
1432  }
1433  setStorage(key, value, options) {
1434    elementorFrontend.storage.set(`popup_${this.getSettings('id')}_${key}`, value, options);
1435  }
1436  getStorage(key, options) {
1437    return elementorFrontend.storage.get(`popup_${this.getSettings('id')}_${key}`, options);
1438  }
1439  countTimes() {
1440    const displayTimes = this.getStorage('times') || 0;
1441    this.setStorage('times', displayTimes + 1);
1442  }
1443  runElementsHandlers() {}
1444  async onInit() {
1445    super.onInit();
1446
1447    // In case that the library was not loaded, it indicates a Core version that enables dynamic loading.
1448    if (!window.DialogsManager) {
1449      await elementorFrontend.utils.assetsLoader.load('script', 'dialog');
1450    }
1451    this.initModal();
1452    if (this.isEdit) {
1453      this.showModal();
1454      return;
1455    }
1456    this.$element.show().remove();
1457    this.elementHTML = this.$element[0].outerHTML;
1458    if (elementorFrontend.isEditMode()) {
1459      return;
1460    }
1461    if (elementorFrontend.isWPPreviewMode() && elementorFrontend.config.post.id === this.getSettings('id')) {
1462      this.showModal();
1463      return;
1464    }
1465    this.startTiming();
1466  }
1467  onSettingsChange(model) {
1468    const changedKey = Object.keys(model.changed)[0];
1469    if (-1 !== changedKey.indexOf('entrance_animation')) {
1470      this.setEntranceAnimation();
1471    }
1472    if ('exit_animation' === changedKey) {
1473      this.setExitAnimation();
1474    }
1475    if ('close_button_position' === changedKey) {
1476      this.setCloseButtonPosition();
1477    }
1478  }
1479  getEntranceAnimationDuration() {
1480    const settings = this.getDocumentSettings();
1481    const entranceAnimation = settings?.entrance_animation;
1482    if (!entranceAnimation || '' === entranceAnimation || 'none' === entranceAnimation) {
1483      return 0;
1484    }
1485    const entranceAnimationDuration = settings?.entrance_animation_duration?.size;
1486    return !!entranceAnimationDuration ? Number(entranceAnimationDuration) : 0;
1487  }
1488  getKeyboardHandlingConfig() {
1489    return {
1490      $modalElements: this.getModal().getElements('widgetContent'),
1491      $elementWrapper: this.$element,
1492      hasEntranceAnimation: 0 !== this.getEntranceAnimationDuration(),
1493      modalType: 'popup',
1494      modalId: this.$element.data('elementor-id')
1495    };
1496  }
1497}
1498exports["default"] = _default;
1499
1500/***/ }),
1501
1502/***/ "../modules/popup/assets/js/frontend/frontend.js":
1503/*!*******************************************************!*\
1504  !*** ../modules/popup/assets/js/frontend/frontend.js ***!
1505  \*******************************************************/
1506/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
1507
1508
1509
1510var _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ "../node_modules/@babel/runtime/helpers/interopRequireDefault.js");
1511Object.defineProperty(exports, "__esModule", ({
1512  value: true
1513}));
1514exports["default"] = void 0;
1515var _document = _interopRequireDefault(__webpack_require__(/*! ./document */ "../modules/popup/assets/js/frontend/document.js"));
1516class _default extends elementorModules.Module {
1517  constructor() {
1518    super();
1519    elementorFrontend.hooks.addAction('elementor/frontend/documents-manager/init-classes', this.addDocumentClass);
1520    elementorFrontend.elementsHandler.attachHandler('form', () => __webpack_require__.e(/*! import() | popup */ "popup").then(__webpack_require__.bind(__webpack_require__, /*! ./handlers/forms-action */ "../modules/popup/assets/js/frontend/handlers/forms-action.js")));
1521    elementorFrontend.on('components:init', () => this.onFrontendComponentsInit());
1522    if (this.shouldSetViewsAndSessions()) {
1523      this.setViewsAndSessions();
1524    }
1525  }
1526  shouldSetViewsAndSessions() {
1527    return !elementorFrontend.isEditMode() && !elementorFrontend.isWPPreviewMode() && ElementorProFrontendConfig.popup.hasPopUps;
1528  }
1529  addDocumentClass(documentsManager) {
1530    documentsManager.addDocumentClass('popup', _document.default);
1531  }
1532  setViewsAndSessions() {
1533    const pageViews = elementorFrontend.storage.get('pageViews') || 0;
1534    elementorFrontend.storage.set('pageViews', pageViews + 1);
1535    const activeSession = elementorFrontend.storage.get('activeSession', {
1536      session: true
1537    });
1538    if (!activeSession) {
1539      elementorFrontend.storage.set('activeSession', true, {
1540        session: true
1541      });
1542      const sessions = elementorFrontend.storage.get('sessions') || 0;
1543      elementorFrontend.storage.set('sessions', sessions + 1);
1544    }
1545  }
1546  showPopup(settings, event) {
1547    const popup = elementorFrontend.documentsManager.documents[settings.id];
1548    if (!popup) {
1549      return;
1550    }
1551    const modal = popup.getModal();
1552    if (settings.toggle && modal.isVisible()) {
1553      modal.hide();
1554    } else {
1555      popup.showModal(event);
1556    }
1557  }
1558  closePopup(settings, event) {
1559    const popupID = jQuery(event.target).parents('[data-elementor-type="popup"]').data('elementorId');
1560    if (!popupID) {
1561      return;
1562    }
1563    const document = elementorFrontend.documentsManager.documents[popupID];
1564    document.getModal().hide();
1565    if (settings.do_not_show_again) {
1566      document.disable();
1567    }
1568  }
1569  onFrontendComponentsInit() {
1570    elementorFrontend.utils.urlActions.addAction('popup:open', (settings, event) => this.showPopup(settings, event));
1571    elementorFrontend.utils.urlActions.addAction('popup:close', (settings, event) => this.closePopup(settings, event));
1572  }
1573}
1574exports["default"] = _default;
1575
1576/***/ }),
1577
1578/***/ "../modules/popup/assets/js/frontend/timing.js":
1579/*!*****************************************************!*\
1580  !*** ../modules/popup/assets/js/frontend/timing.js ***!
1581  \*****************************************************/
1582/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
1583
1584
1585
1586var _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ "../node_modules/@babel/runtime/helpers/interopRequireDefault.js");
1587Object.defineProperty(exports, "__esModule", ({
1588  value: true
1589}));
1590exports["default"] = void 0;
1591var _pageViews = _interopRequireDefault(__webpack_require__(/*! ./timing/page-views */ "../modules/popup/assets/js/frontend/timing/page-views.js"));
1592var _sessions = _interopRequireDefault(__webpack_require__(/*! ./timing/sessions */ "../modules/popup/assets/js/frontend/timing/sessions.js"));
1593var _url = _interopRequireDefault(__webpack_require__(/*! ./timing/url */ "../modules/popup/assets/js/frontend/timing/url.js"));
1594var _sources = _interopRequireDefault(__webpack_require__(/*! ./timing/sources */ "../modules/popup/assets/js/frontend/timing/sources.js"));
1595var _loggedIn = _interopRequireDefault(__webpack_require__(/*! ./timing/logged-in */ "../modules/popup/assets/js/frontend/timing/logged-in.js"));
1596var _devices = _interopRequireDefault(__webpack_require__(/*! ./timing/devices */ "../modules/popup/assets/js/frontend/timing/devices.js"));
1597var _times = _interopRequireDefault(__webpack_require__(/*! ./timing/times */ "../modules/popup/assets/js/frontend/timing/times.js"));
1598var _browsers = _interopRequireDefault(__webpack_require__(/*! ./timing/browsers */ "../modules/popup/assets/js/frontend/timing/browsers.js"));
1599var _schedule = _interopRequireDefault(__webpack_require__(/*! ./timing/schedule */ "../modules/popup/assets/js/frontend/timing/schedule.js"));
1600class _default extends elementorModules.Module {
1601  constructor(settings, document) {
1602    super(settings);
1603    this.document = document;
1604    this.timingClasses = {
1605      page_views: _pageViews.default,
1606      sessions: _sessions.default,
1607      url: _url.default,
1608      sources: _sources.default,
1609      logged_in: _loggedIn.default,
1610      devices: _devices.default,
1611      times: _times.default,
1612      browsers: _browsers.default,
1613      schedule: _schedule.default
1614    };
1615  }
1616  check() {
1617    const settings = this.getSettings();
1618    let checkPassed = true;
1619    jQuery.each(this.timingClasses, (key, TimingClass) => {
1620      if (!settings[key]) {
1621        return;
1622      }
1623      const timing = new TimingClass(settings, this.document);
1624      if (!timing.check()) {
1625        checkPassed = false;
1626      }
1627    });
1628    return checkPassed;
1629  }
1630}
1631exports["default"] = _default;
1632
1633/***/ }),
1634
1635/***/ "../modules/popup/assets/js/frontend/timing/base.js":
1636/*!**********************************************************!*\
1637  !*** ../modules/popup/assets/js/frontend/timing/base.js ***!
1638  \**********************************************************/
1639/***/ ((__unused_webpack_module, exports) => {
1640
1641
1642
1643Object.defineProperty(exports, "__esModule", ({
1644  value: true
1645}));
1646exports["default"] = void 0;
1647class _default extends elementorModules.Module {
1648  constructor(settings, document) {
1649    super(settings);
1650    this.document = document;
1651  }
1652  getTimingSetting(settingKey) {
1653    return this.getSettings(this.getName() + '_' + settingKey);
1654  }
1655}
1656exports["default"] = _default;
1657
1658/***/ }),
1659
1660/***/ "../modules/popup/assets/js/frontend/timing/browsers.js":
1661/*!**************************************************************!*\
1662  !*** ../modules/popup/assets/js/frontend/timing/browsers.js ***!
1663  \**************************************************************/
1664/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
1665
1666
1667
1668var _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ "../node_modules/@babel/runtime/helpers/interopRequireDefault.js");
1669Object.defineProperty(exports, "__esModule", ({
1670  value: true
1671}));
1672exports["default"] = void 0;
1673var _base = _interopRequireDefault(__webpack_require__(/*! ./base */ "../modules/popup/assets/js/frontend/timing/base.js"));
1674class _default extends _base.default {
1675  getName() {
1676    return 'browsers';
1677  }
1678  check() {
1679    if ('all' === this.getTimingSetting('browsers')) {
1680      return true;
1681    }
1682    const targetedBrowsers = this.getTimingSetting('browsers_options'),
1683      browserDetectionFlags = elementorFrontend.utils.environment;
1684    return targetedBrowsers.some(browserName => browserDetectionFlags[browserName]);
1685  }
1686}
1687exports["default"] = _default;
1688
1689/***/ }),
1690
1691/***/ "../modules/popup/assets/js/frontend/timing/devices.js":
1692/*!*************************************************************!*\
1693  !*** ../modules/popup/assets/js/frontend/timing/devices.js ***!
1694  \*************************************************************/
1695/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
1696
1697
1698
1699var _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ "../node_modules/@babel/runtime/helpers/interopRequireDefault.js");
1700Object.defineProperty(exports, "__esModule", ({
1701  value: true
1702}));
1703exports["default"] = void 0;
1704var _base = _interopRequireDefault(__webpack_require__(/*! ./base */ "../modules/popup/assets/js/frontend/timing/base.js"));
1705class _default extends _base.default {
1706  getName() {
1707    return 'devices';
1708  }
1709  check() {
1710    return -1 !== this.getTimingSetting('devices').indexOf(elementorFrontend.getCurrentDeviceMode());
1711  }
1712}
1713exports["default"] = _default;
1714
1715/***/ }),
1716
1717/***/ "../modules/popup/assets/js/frontend/timing/logged-in.js":
1718/*!***************************************************************!*\
1719  !*** ../modules/popup/assets/js/frontend/timing/logged-in.js ***!
1720  \***************************************************************/
1721/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
1722
1723
1724
1725var _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ "../node_modules/@babel/runtime/helpers/interopRequireDefault.js");
1726Object.defineProperty(exports, "__esModule", ({
1727  value: true
1728}));
1729exports["default"] = void 0;
1730var _base = _interopRequireDefault(__webpack_require__(/*! ./base */ "../modules/popup/assets/js/frontend/timing/base.js"));
1731class _default extends _base.default {
1732  getName() {
1733    return 'logged_in';
1734  }
1735  check() {
1736    const userConfig = elementorFrontend.config.user;
1737    if (!userConfig) {
1738      return true;
1739    }
1740    if ('all' === this.getTimingSetting('users')) {
1741      return false;
1742    }
1743    const userRolesInHideList = this.getTimingSetting('roles').filter(role => -1 !== userConfig.roles.indexOf(role));
1744    return !userRolesInHideList.length;
1745  }
1746}
1747exports["default"] = _default;
1748
1749/***/ }),
1750
1751/***/ "../modules/popup/assets/js/frontend/timing/page-views.js":
1752/*!****************************************************************!*\
1753  !*** ../modules/popup/assets/js/frontend/timing/page-views.js ***!
1754  \****************************************************************/
1755/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
1756
1757
1758
1759var _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ "../node_modules/@babel/runtime/helpers/interopRequireDefault.js");
1760Object.defineProperty(exports, "__esModule", ({
1761  value: true
1762}));
1763exports["default"] = void 0;
1764var _base = _interopRequireDefault(__webpack_require__(/*! ./base */ "../modules/popup/assets/js/frontend/timing/base.js"));
1765class _default extends _base.default {
1766  getName() {
1767    return 'page_views';
1768  }
1769  check() {
1770    const pageViews = elementorFrontend.storage.get('pageViews'),
1771      name = this.getName();
1772    let initialPageViews = this.document.getStorage(name + '_initialPageViews');
1773    if (!initialPageViews) {
1774      this.document.setStorage(name + '_initialPageViews', pageViews);
1775      initialPageViews = pageViews;
1776    }
1777    return pageViews - initialPageViews >= this.getTimingSetting('views');
1778  }
1779}
1780exports["default"] = _default;
1781
1782/***/ }),
1783
1784/***/ "../modules/popup/assets/js/frontend/timing/schedule-utils.js":
1785/*!********************************************************************!*\
1786  !*** ../modules/popup/assets/js/frontend/timing/schedule-utils.js ***!
1787  \********************************************************************/
1788/***/ ((__unused_webpack_module, exports) => {
1789
1790
1791
1792Object.defineProperty(exports, "__esModule", ({
1793  value: true
1794}));
1795exports["default"] = void 0;
1796class ScheduleUtils {
1797  constructor(args) {
1798    this.settings = args.settings;
1799  }
1800  getCurrentDateTime() {
1801    let now = new Date();
1802    if ('site' === this.settings.timezone && this.settings.serverDatetime) {
1803      now = new Date(this.settings.serverDatetime);
1804    }
1805    return now;
1806  }
1807  shouldDisplay = () => {
1808    if (!this.settings.startDate && !this.settings.endDate) {
1809      return true;
1810    }
1811    const now = this.getCurrentDateTime();
1812    if ((!this.settings.startDate || now >= this.settings.startDate) && (!this.settings.endDate || now <= this.settings.endDate)) {
1813      return true;
1814    }
1815    return false;
1816  };
1817}
1818exports["default"] = ScheduleUtils;
1819
1820/***/ }),
1821
1822/***/ "../modules/popup/assets/js/frontend/timing/schedule.js":
1823/*!**************************************************************!*\
1824  !*** ../modules/popup/assets/js/frontend/timing/schedule.js ***!
1825  \**************************************************************/
1826/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
1827
1828
1829
1830var _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ "../node_modules/@babel/runtime/helpers/interopRequireDefault.js");
1831Object.defineProperty(exports, "__esModule", ({
1832  value: true
1833}));
1834exports["default"] = void 0;
1835var _base = _interopRequireDefault(__webpack_require__(/*! ./base */ "../modules/popup/assets/js/frontend/timing/base.js"));
1836var _scheduleUtils = _interopRequireDefault(__webpack_require__(/*! ./schedule-utils */ "../modules/popup/assets/js/frontend/timing/schedule-utils.js"));
1837class _default extends _base.default {
1838  constructor() {
1839    super(...arguments);
1840    const {
1841      schedule_timezone: timezone,
1842      schedule_start_date: startDate,
1843      schedule_end_date: endDate,
1844      schedule_server_datetime: serverDatetime
1845    } = this.getSettings();
1846    this.settings = {
1847      timezone,
1848      startDate: startDate ? new Date(startDate) : false,
1849      endDate: endDate ? new Date(endDate) : false,
1850      serverDatetime: serverDatetime ? new Date(serverDatetime) : false
1851    };
1852    this.scheduleUtils = new _scheduleUtils.default({
1853      settings: this.settings
1854    });
1855  }
1856  getName() {
1857    return 'schedule';
1858  }
1859  check() {
1860    return this.scheduleUtils.shouldDisplay();
1861  }
1862}
1863exports["default"] = _default;
1864
1865/***/ }),
1866
1867/***/ "../modules/popup/assets/js/frontend/timing/sessions.js":
1868/*!**************************************************************!*\
1869  !*** ../modules/popup/assets/js/frontend/timing/sessions.js ***!
1870  \**************************************************************/
1871/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
1872
1873
1874
1875var _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ "../node_modules/@babel/runtime/helpers/interopRequireDefault.js");
1876Object.defineProperty(exports, "__esModule", ({
1877  value: true
1878}));
1879exports["default"] = void 0;
1880var _base = _interopRequireDefault(__webpack_require__(/*! ./base */ "../modules/popup/assets/js/frontend/timing/base.js"));
1881class _default extends _base.default {
1882  getName() {
1883    return 'sessions';
1884  }
1885  check() {
1886    const sessions = elementorFrontend.storage.get('sessions'),
1887      name = this.getName();
1888    let initialSessions = this.document.getStorage(name + '_initialSessions');
1889    if (!initialSessions) {
1890      this.document.setStorage(name + '_initialSessions', sessions);
1891      initialSessions = sessions;
1892    }
1893    return sessions - initialSessions >= this.getTimingSetting('sessions');
1894  }
1895}
1896exports["default"] = _default;
1897
1898/***/ }),
1899
1900/***/ "../modules/popup/assets/js/frontend/timing/sources.js":
1901/*!*************************************************************!*\
1902  !*** ../modules/popup/assets/js/frontend/timing/sources.js ***!
1903  \*************************************************************/
1904/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
1905
1906
1907
1908var _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ "../node_modules/@babel/runtime/helpers/interopRequireDefault.js");
1909Object.defineProperty(exports, "__esModule", ({
1910  value: true
1911}));
1912exports["default"] = void 0;
1913var _base = _interopRequireDefault(__webpack_require__(/*! ./base */ "../modules/popup/assets/js/frontend/timing/base.js"));
1914class _default extends _base.default {
1915  getName() {
1916    return 'sources';
1917  }
1918  check() {
1919    const sources = this.getTimingSetting('sources');
1920    if (3 === sources.length) {
1921      return true;
1922    }
1923    const referrer = document.referrer.replace(/https?:\/\/(?:www\.)?/, ''),
1924      isInternal = 0 === referrer.indexOf(location.host.replace('www.', ''));
1925    if (isInternal) {
1926      return -1 !== sources.indexOf('internal');
1927    }
1928    if (-1 !== sources.indexOf('external')) {
1929      return true;
1930    }
1931    if (-1 !== sources.indexOf('search')) {
1932      return /^(google|yahoo|bing|yandex|baidu)\./.test(referrer);
1933    }
1934    return false;
1935  }
1936}
1937exports["default"] = _default;
1938
1939/***/ }),
1940
1941/***/ "../modules/popup/assets/js/frontend/timing/times-utils.js":
1942/*!*****************************************************************!*\
1943  !*** ../modules/popup/assets/js/frontend/timing/times-utils.js ***!
1944  \*****************************************************************/
1945/***/ ((__unused_webpack_module, exports) => {
1946
1947
1948
1949Object.defineProperty(exports, "__esModule", ({
1950  value: true
1951}));
1952exports["default"] = void 0;
1953class TimesUtils {
1954  constructor(args) {
1955    this.uniqueId = args.uniqueId;
1956    this.settings = args.settings;
1957    this.storage = args.storage;
1958  }
1959  getTimeFramesInSecounds(timeFrame) {
1960    const timeFrames = {
1961      day: 86400,
1962      // Day in seconds
1963      week: 604800,
1964      // Week in seconds
1965      month: 2628288 // Month in seconds
1966    };
1967    return timeFrames[timeFrame];
1968  }
1969  setExpiration(name, value, timeFrame) {
1970    const data = this.storage.get(name);
1971    if (!data) {
1972      const options = {
1973        lifetimeInSeconds: this.getTimeFramesInSecounds(timeFrame)
1974      };
1975      this.storage.set(name, value, options);
1976      return;
1977    }
1978    this.storage.set(name, value);
1979  }
1980  getImpressionsCount() {
1981    const impressionCount = this.storage.get(this.uniqueId) ?? 0;
1982    return parseInt(impressionCount);
1983  }
1984  incrementImpressionsCount() {
1985    if (!this.settings.period) {
1986      this.storage.set('times', (this.storage.get('times') ?? 0) + 1);
1987    } else if ('session' !== this.settings.period) {
1988      const impressionCount = this.getImpressionsCount();
1989      this.setExpiration(this.uniqueId, impressionCount + 1, this.settings.period);
1990    } else {
1991      sessionStorage.setItem(this.uniqueId, parseInt(sessionStorage.getItem(this.uniqueId) ?? 0) + 1);
1992    }
1993  }
1994  shouldCountOnOpen() {
1995    if (this.settings.countOnOpen) {
1996      this.incrementImpressionsCount();
1997    }
1998  }
1999  shouldDisplayPerTimeFrame() {
2000    const impressionCount = this.getImpressionsCount();
2001    if (impressionCount < this.settings.showsLimit) {
2002      this.shouldCountOnOpen();
2003      return true;
2004    }
2005    return false;
2006  }
2007  shouldDisplayPerSession() {
2008    const impressionCount = sessionStorage.getItem(this.uniqueId) ?? 0;
2009    if (parseInt(impressionCount) < this.settings.showsLimit) {
2010      this.shouldCountOnOpen();
2011      return true;
2012    }
2013    return false;
2014  }
2015  shouldDisplayBackwordCompatible() {
2016    let impressionCount = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;
2017    let showsLimit = arguments.length > 1 ? arguments[1] : undefined;
2018    const shouldDisplay = parseInt(impressionCount) < parseInt(showsLimit);
2019    this.shouldCountOnOpen();
2020    return shouldDisplay;
2021  }
2022}
2023exports["default"] = TimesUtils;
2024
2025/***/ }),
2026
2027/***/ "../modules/popup/assets/js/frontend/timing/times.js":
2028/*!***********************************************************!*\
2029  !*** ../modules/popup/assets/js/frontend/timing/times.js ***!
2030  \***********************************************************/
2031/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
2032
2033
2034
2035var _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ "../node_modules/@babel/runtime/helpers/interopRequireDefault.js");
2036Object.defineProperty(exports, "__esModule", ({
2037  value: true
2038}));
2039exports["default"] = void 0;
2040var _base = _interopRequireDefault(__webpack_require__(/*! ./base */ "../modules/popup/assets/js/frontend/timing/base.js"));
2041var _timesUtils = _interopRequireDefault(__webpack_require__(/*! ./times-utils.js */ "../modules/popup/assets/js/frontend/timing/times-utils.js"));
2042class _default extends _base.default {
2043  constructor() {
2044    super(...arguments);
2045    this.uniqueId = `popup-${this.document.getSettings('id')}-impressions-count`;
2046    const {
2047      times_count: countOnOpen,
2048      times_period: period,
2049      times_times: showsLimit
2050    } = this.getSettings();
2051    this.settings = {
2052      countOnOpen,
2053      period,
2054      showsLimit: parseInt(showsLimit)
2055    };
2056    if ('' === this.settings.period) {
2057      this.settings.period = false;
2058    }
2059    if (['', 'close'].includes(this.settings.countOnOpen)) {
2060      this.settings.countOnOpen = false;
2061      this.onPopupHide();
2062    } else {
2063      this.settings.countOnOpen = true;
2064    }
2065    this.utils = new _timesUtils.default({
2066      uniqueId: this.uniqueId,
2067      settings: this.settings,
2068      storage: elementorFrontend.storage
2069    });
2070  }
2071  getName() {
2072    return 'times';
2073  }
2074  check() {
2075    if (!this.settings.period) {
2076      const impressionCount = this.document.getStorage('times') || 0;
2077      const showsLimit = this.getTimingSetting('times');
2078      return this.utils.shouldDisplayBackwordCompatible(impressionCount, showsLimit);
2079    }
2080    if ('session' !== this.settings.period) {
2081      if (!this.utils.shouldDisplayPerTimeFrame()) {
2082        return false;
2083      }
2084    } else if (!this.utils.shouldDisplayPerSession()) {
2085      return false;
2086    }
2087    return true;
2088  }
2089  onPopupHide() {
2090    window.addEventListener('elementor/popup/hide', () => {
2091      this.utils.incrementImpressionsCount();
2092    });
2093  }
2094}
2095exports["default"] = _default;
2096
2097/***/ }),
2098
2099/***/ "../modules/popup/assets/js/frontend/timing/url.js":
2100/*!*********************************************************!*\
2101  !*** ../modules/popup/assets/js/frontend/timing/url.js ***!
2102  \*********************************************************/
2103/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
2104
2105
2106
2107var _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ "../node_modules/@babel/runtime/helpers/interopRequireDefault.js");
2108Object.defineProperty(exports, "__esModule", ({
2109  value: true
2110}));
2111exports["default"] = void 0;
2112var _base = _interopRequireDefault(__webpack_require__(/*! ./base */ "../modules/popup/assets/js/frontend/timing/base.js"));
2113class _default extends _base.default {
2114  getName() {
2115    return 'url';
2116  }
2117  check() {
2118    const url = this.getTimingSetting('url'),
2119      action = this.getTimingSetting('action'),
2120      referrer = document.referrer;
2121    if ('regex' !== action) {
2122      return 'hide' === action ^ -1 !== referrer.indexOf(url);
2123    }
2124    let regexp;
2125    try {
2126      regexp = new RegExp(url);
2127    } catch (e) {
2128      return false;
2129    }
2130    return regexp.test(referrer);
2131  }
2132}
2133exports["default"] = _default;
2134
2135/***/ }),
2136
2137/***/ "../modules/popup/assets/js/frontend/triggers.js":
2138/*!*******************************************************!*\
2139  !*** ../modules/popup/assets/js/frontend/triggers.js ***!
2140  \*******************************************************/
2141/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
2142
2143
2144
2145var _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ "../node_modules/@babel/runtime/helpers/interopRequireDefault.js");
2146Object.defineProperty(exports, "__esModule", ({
2147  value: true
2148}));
2149exports["default"] = void 0;
2150var _pageLoad = _interopRequireDefault(__webpack_require__(/*! ./triggers/page-load */ "../modules/popup/assets/js/frontend/triggers/page-load.js"));
2151var _scrolling = _interopRequireDefault(__webpack_require__(/*! ./triggers/scrolling */ "../modules/popup/assets/js/frontend/triggers/scrolling.js"));
2152var _scrollingTo = _interopRequireDefault(__webpack_require__(/*! ./triggers/scrolling-to */ "../modules/popup/assets/js/frontend/triggers/scrolling-to.js"));
2153var _click = _interopRequireDefault(__webpack_require__(/*! ./triggers/click */ "../modules/popup/assets/js/frontend/triggers/click.js"));
2154var _inactivity = _interopRequireDefault(__webpack_require__(/*! ./triggers/inactivity */ "../modules/popup/assets/js/frontend/triggers/inactivity.js"));
2155var _exitIntent = _interopRequireDefault(__webpack_require__(/*! ./triggers/exit-intent */ "../modules/popup/assets/js/frontend/triggers/exit-intent.js"));
2156var _adblockDetection = _interopRequireDefault(__webpack_require__(/*! ./triggers/adblock-detection */ "../modules/popup/assets/js/frontend/triggers/adblock-detection.js"));
2157class _default extends elementorModules.Module {
2158  constructor(settings, document) {
2159    super(settings);
2160    this.document = document;
2161    this.triggers = [];
2162    this.triggerClasses = {
2163      page_load: _pageLoad.default,
2164      scrolling: _scrolling.default,
2165      scrolling_to: _scrollingTo.default,
2166      click: _click.default,
2167      inactivity: _inactivity.default,
2168      exit_intent: _exitIntent.default,
2169      adblock_detection: _adblockDetection.default
2170    };
2171    this.runTriggers();
2172  }
2173  runTriggers() {
2174    const settings = this.getSettings();
2175    jQuery.each(this.triggerClasses, (key, TriggerClass) => {
2176      if (!settings[key]) {
2177        return;
2178      }
2179      const trigger = new TriggerClass(settings, () => this.onTriggerFired());
2180      trigger.run();
2181      this.triggers.push(trigger);
2182    });
2183  }
2184  destroyTriggers() {
2185    this.triggers.forEach(trigger => trigger.destroy());
2186    this.triggers = [];
2187  }
2188  onTriggerFired() {
2189    this.document.showModal(true);
2190    this.destroyTriggers();
2191  }
2192}
2193exports["default"] = _default;
2194
2195/***/ }),
2196
2197/***/ "../modules/popup/assets/js/frontend/triggers/adblock-detection.js":
2198/*!*************************************************************************!*\
2199  !*** ../modules/popup/assets/js/frontend/triggers/adblock-detection.js ***!
2200  \*************************************************************************/
2201/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
2202
2203
2204
2205var _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ "../node_modules/@babel/runtime/helpers/interopRequireDefault.js");
2206Object.defineProperty(exports, "__esModule", ({
2207  value: true
2208}));
2209exports["default"] = void 0;
2210var _base = _interopRequireDefault(__webpack_require__(/*! ./base */ "../modules/popup/assets/js/frontend/triggers/base.js"));
2211class _default extends _base.default {
2212  getName() {
2213    return 'adblock_detection';
2214  }
2215  generateRandomString() {
2216    const chars = 'abcdefghijklmnopqrstuvwxyz0123456789';
2217    let result = '';
2218    for (let i = 0; i < 6; i++) {
2219      const randomIndex = Math.floor(Math.random() * chars.length);
2220      result += chars[randomIndex];
2221    }
2222    return result;
2223  }
2224  hasAdblock() {
2225    const elementId = `elementor-adblock-detection-${this.generateRandomString()}`;
2226    this.createEmptyAdBlockElement(elementId);
2227    const tempAdBlockEle = document.querySelector(`#${elementId}`);
2228    if (!tempAdBlockEle) {
2229      return true;
2230    }
2231    const hasAdBlock = 'none' === window.getComputedStyle(tempAdBlockEle)?.display;
2232    this.removeEmptyAdBlockElement(tempAdBlockEle);
2233    return hasAdBlock;
2234  }
2235  createEmptyAdBlockElement(elementId) {
2236    const tempAdDiv = document.createElement('div');
2237    tempAdDiv.id = elementId;
2238    tempAdDiv.className = 'ad-box';
2239    tempAdDiv.style.position = 'fixed';
2240    tempAdDiv.style.top = '0';
2241    tempAdDiv.style.left = '0';
2242    tempAdDiv.setAttribute('aria-hidden', 'true');
2243    tempAdDiv.innerHTML = '&nbsp;';
2244    document.body.appendChild(tempAdDiv);
2245  }
2246  removeEmptyAdBlockElement(tempAdBlockEle) {
2247    tempAdBlockEle.remove();
2248  }
2249  run() {
2250    this.timeout = setTimeout(() => {
2251      const hasAdBlock = this.hasAdblock();
2252      if (hasAdBlock) {
2253        this.callback();
2254      }
2255    }, this.getTriggerSetting('delay') * 1000);
2256  }
2257  destroy() {
2258    clearTimeout(this.timeout);
2259  }
2260}
2261exports["default"] = _default;
2262
2263/***/ }),
2264
2265/***/ "../modules/popup/assets/js/frontend/triggers/base.js":
2266/*!************************************************************!*\
2267  !*** ../modules/popup/assets/js/frontend/triggers/base.js ***!
2268  \************************************************************/
2269/***/ ((__unused_webpack_module, exports) => {
2270
2271
2272
2273Object.defineProperty(exports, "__esModule", ({
2274  value: true
2275}));
2276exports["default"] = void 0;
2277class _default extends elementorModules.Module {
2278  constructor(settings, callback) {
2279    super(settings);
2280    this.callback = callback;
2281  }
2282  getTriggerSetting(settingKey) {
2283    return this.getSettings(this.getName() + '_' + settingKey);
2284  }
2285}
2286exports["default"] = _default;
2287
2288/***/ }),
2289
2290/***/ "../modules/popup/assets/js/frontend/triggers/click.js":
2291/*!*************************************************************!*\
2292  !*** ../modules/popup/assets/js/frontend/triggers/click.js ***!
2293  \*************************************************************/
2294/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
2295
2296
2297
2298var _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ "../node_modules/@babel/runtime/helpers/interopRequireDefault.js");
2299Object.defineProperty(exports, "__esModule", ({
2300  value: true
2301}));
2302exports["default"] = void 0;
2303var _base = _interopRequireDefault(__webpack_require__(/*! ./base */ "../modules/popup/assets/js/frontend/triggers/base.js"));
2304class _default extends _base.default {
2305  constructor() {
2306    super(...arguments);
2307    this.checkClick = this.checkClick.bind(this);
2308    this.clicksCount = 0;
2309  }
2310  getName() {
2311    return 'click';
2312  }
2313  checkClick() {
2314    this.clicksCount++;
2315    if (this.clicksCount === this.getTriggerSetting('times')) {
2316      this.callback();
2317    }
2318  }
2319  run() {
2320    elementorFrontend.elements.$body.on('click', this.checkClick);
2321  }
2322  destroy() {
2323    elementorFrontend.elements.$body.off('click', this.checkClick);
2324  }
2325}
2326exports["default"] = _default;
2327
2328/***/ }),
2329
2330/***/ "../modules/popup/assets/js/frontend/triggers/exit-intent.js":
2331/*!*******************************************************************!*\
2332  !*** ../modules/popup/assets/js/frontend/triggers/exit-intent.js ***!
2333  \*******************************************************************/
2334/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
2335
2336
2337
2338var _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ "../node_modules/@babel/runtime/helpers/interopRequireDefault.js");
2339Object.defineProperty(exports, "__esModule", ({
2340  value: true
2341}));
2342exports["default"] = void 0;
2343var _base = _interopRequireDefault(__webpack_require__(/*! ./base */ "../modules/popup/assets/js/frontend/triggers/base.js"));
2344class _default extends _base.default {
2345  constructor() {
2346    super(...arguments);
2347    this.detectExitIntent = this.detectExitIntent.bind(this);
2348  }
2349  getName() {
2350    return 'exit_intent';
2351  }
2352  detectExitIntent(event) {
2353    if (event.clientY <= 0) {
2354      this.callback();
2355    }
2356  }
2357  run() {
2358    elementorFrontend.elements.$window.on('mouseleave', this.detectExitIntent);
2359  }
2360  destroy() {
2361    elementorFrontend.elements.$window.off('mouseleave', this.detectExitIntent);
2362  }
2363}
2364exports["default"] = _default;
2365
2366/***/ }),
2367
2368/***/ "../modules/popup/assets/js/frontend/triggers/inactivity.js":
2369/*!******************************************************************!*\
2370  !*** ../modules/popup/assets/js/frontend/triggers/inactivity.js ***!
2371  \******************************************************************/
2372/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
2373
2374
2375
2376var _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ "../node_modules/@babel/runtime/helpers/interopRequireDefault.js");
2377Object.defineProperty(exports, "__esModule", ({
2378  value: true
2379}));
2380exports["default"] = void 0;
2381var _base = _interopRequireDefault(__webpack_require__(/*! ./base */ "../modules/popup/assets/js/frontend/triggers/base.js"));
2382class _default extends _base.default {
2383  constructor() {
2384    super(...arguments);
2385    this.restartTimer = this.restartTimer.bind(this);
2386  }
2387  getName() {
2388    return 'inactivity';
2389  }
2390  run() {
2391    this.startTimer();
2392    elementorFrontend.elements.$document.on('keypress mousemove', this.restartTimer);
2393  }
2394  startTimer() {
2395    this.timeOut = setTimeout(this.callback, this.getTriggerSetting('time') * 1000);
2396  }
2397  clearTimer() {
2398    clearTimeout(this.timeOut);
2399  }
2400  restartTimer() {
2401    this.clearTimer();
2402    this.startTimer();
2403  }
2404  destroy() {
2405    this.clearTimer();
2406    elementorFrontend.elements.$document.off('keypress mousemove', this.restartTimer);
2407  }
2408}
2409exports["default"] = _default;
2410
2411/***/ }),
2412
2413/***/ "../modules/popup/assets/js/frontend/triggers/page-load.js":
2414/*!*****************************************************************!*\
2415  !*** ../modules/popup/assets/js/frontend/triggers/page-load.js ***!
2416  \*****************************************************************/
2417/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
2418
2419
2420
2421var _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ "../node_modules/@babel/runtime/helpers/interopRequireDefault.js");
2422Object.defineProperty(exports, "__esModule", ({
2423  value: true
2424}));
2425exports["default"] = void 0;
2426var _base = _interopRequireDefault(__webpack_require__(/*! ./base */ "../modules/popup/assets/js/frontend/triggers/base.js"));
2427class _default extends _base.default {
2428  getName() {
2429    return 'page_load';
2430  }
2431  run() {
2432    this.timeout = setTimeout(this.callback, this.getTriggerSetting('delay') * 1000);
2433  }
2434  destroy() {
2435    clearTimeout(this.timeout);
2436  }
2437}
2438exports["default"] = _default;
2439
2440/***/ }),
2441
2442/***/ "../modules/popup/assets/js/frontend/triggers/scrolling-to.js":
2443/*!********************************************************************!*\
2444  !*** ../modules/popup/assets/js/frontend/triggers/scrolling-to.js ***!
2445  \********************************************************************/
2446/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
2447
2448
2449
2450var _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ "../node_modules/@babel/runtime/helpers/interopRequireDefault.js");
2451Object.defineProperty(exports, "__esModule", ({
2452  value: true
2453}));
2454exports["default"] = void 0;
2455var _base = _interopRequireDefault(__webpack_require__(/*! ./base */ "../modules/popup/assets/js/frontend/triggers/base.js"));
2456class _default extends _base.default {
2457  getName() {
2458    return 'scrolling_to';
2459  }
2460  run() {
2461    let $targetElement;
2462    try {
2463      $targetElement = jQuery(this.getTriggerSetting('selector'));
2464    } catch (e) {
2465      return;
2466    }
2467    if ($targetElement.length) {
2468      this.setUpIntersectionObserver();
2469      this.observer.observe($targetElement[0]);
2470    }
2471  }
2472  setUpIntersectionObserver() {
2473    this.observer = new IntersectionObserver(entries => {
2474      entries.forEach(entry => {
2475        if (entry.isIntersecting) {
2476          this.callback();
2477        }
2478      });
2479    });
2480  }
2481  destroy() {
2482    if (this.observer) {
2483      this.observer.disconnect();
2484    }
2485  }
2486}
2487exports["default"] = _default;
2488
2489/***/ }),
2490
2491/***/ "../modules/popup/assets/js/frontend/triggers/scrolling.js":
2492/*!*****************************************************************!*\
2493  !*** ../modules/popup/assets/js/frontend/triggers/scrolling.js ***!
2494  \*****************************************************************/
2495/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
2496
2497
2498
2499var _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ "../node_modules/@babel/runtime/helpers/interopRequireDefault.js");
2500Object.defineProperty(exports, "__esModule", ({
2501  value: true
2502}));
2503exports["default"] = void 0;
2504var _base = _interopRequireDefault(__webpack_require__(/*! ./base */ "../modules/popup/assets/js/frontend/triggers/base.js"));
2505class _default extends _base.default {
2506  constructor() {
2507    super(...arguments);
2508    this.checkScroll = this.checkScroll.bind(this);
2509    this.lastScrollOffset = 0;
2510  }
2511  getName() {
2512    return 'scrolling';
2513  }
2514  checkScroll() {
2515    const scrollDirection = scrollY > this.lastScrollOffset ? 'down' : 'up',
2516      requestedDirection = this.getTriggerSetting('direction');
2517    this.lastScrollOffset = scrollY;
2518    if (scrollDirection !== requestedDirection) {
2519      return;
2520    }
2521    if ('up' === scrollDirection) {
2522      this.callback();
2523      return;
2524    }
2525    const fullScroll = elementorFrontend.elements.$document.height() - innerHeight,
2526      scrollPercent = scrollY / fullScroll * 100;
2527    if (scrollPercent >= this.getTriggerSetting('offset')) {
2528      this.callback();
2529    }
2530  }
2531  run() {
2532    elementorFrontend.elements.$window.on('scroll', this.checkScroll);
2533  }
2534  destroy() {
2535    elementorFrontend.elements.$window.off('scroll', this.checkScroll);
2536  }
2537}
2538exports["default"] = _default;
2539
2540/***/ }),
2541
2542/***/ "../modules/posts/assets/js/frontend/frontend.js":
2543/*!*******************************************************!*\
2544  !*** ../modules/posts/assets/js/frontend/frontend.js ***!
2545  \*******************************************************/
2546/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
2547
2548
2549
2550Object.defineProperty(exports, "__esModule", ({
2551  value: true
2552}));
2553exports["default"] = void 0;
2554class _default extends elementorModules.Module {
2555  constructor() {
2556    super();
2557    ['classic', 'full_content', 'cards'].forEach(skinName => {
2558      elementorFrontend.elementsHandler.attachHandler('posts', () => __webpack_require__.e(/*! import() | load-more */ "load-more").then(__webpack_require__.bind(__webpack_require__, /*! ./handlers/load-more */ "../modules/posts/assets/js/frontend/handlers/load-more.js")), skinName);
2559    });
2560    elementorFrontend.elementsHandler.attachHandler('posts', () => __webpack_require__.e(/*! import() | posts */ "posts").then(__webpack_require__.bind(__webpack_require__, /*! ./handlers/posts */ "../modules/posts/assets/js/frontend/handlers/posts.js")), 'classic');
2561    elementorFrontend.elementsHandler.attachHandler('posts', () => __webpack_require__.e(/*! import() | posts */ "posts").then(__webpack_require__.bind(__webpack_require__, /*! ./handlers/posts */ "../modules/posts/assets/js/frontend/handlers/posts.js")), 'full_content');
2562    elementorFrontend.elementsHandler.attachHandler('posts', () => __webpack_require__.e(/*! import() | posts */ "posts").then(__webpack_require__.bind(__webpack_require__, /*! ./handlers/cards */ "../modules/posts/assets/js/frontend/handlers/cards.js")), 'cards');
2563    elementorFrontend.elementsHandler.attachHandler('portfolio', () => __webpack_require__.e(/*! import() | portfolio */ "portfolio").then(__webpack_require__.bind(__webpack_require__, /*! ./handlers/portfolio */ "../modules/posts/assets/js/frontend/handlers/portfolio.js")));
2564  }
2565}
2566exports["default"] = _default;
2567
2568/***/ }),
2569
2570/***/ "../modules/search/assets/js/frontend/frontend.js":
2571/*!********************************************************!*\
2572  !*** ../modules/search/assets/js/frontend/frontend.js ***!
2573  \********************************************************/
2574/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
2575
2576
2577
2578Object.defineProperty(exports, "__esModule", ({
2579  value: true
2580}));
2581exports["default"] = void 0;
2582class _default extends elementorModules.Module {
2583  constructor() {
2584    super();
2585    elementorFrontend.elementsHandler.attachHandler('search', [() => __webpack_require__.e(/*! import() | search */ "search").then(__webpack_require__.bind(__webpack_require__, /*! ./handlers/search */ "../modules/search/assets/js/frontend/handlers/search.js")), () => __webpack_require__.e(/*! import() | search */ "search").then(__webpack_require__.bind(__webpack_require__, /*! ./handlers/search-keyboard-handler */ "../modules/search/assets/js/frontend/handlers/search-keyboard-handler.js"))]);
2586  }
2587}
2588exports["default"] = _default;
2589
2590/***/ }),
2591
2592/***/ "../modules/share-buttons/assets/js/frontend/frontend.js":
2593/*!***************************************************************!*\
2594  !*** ../modules/share-buttons/assets/js/frontend/frontend.js ***!
2595  \***************************************************************/
2596/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
2597
2598
2599
2600Object.defineProperty(exports, "__esModule", ({
2601  value: true
2602}));
2603exports["default"] = void 0;
2604class _default extends elementorModules.Module {
2605  constructor() {
2606    super();
2607    elementorFrontend.elementsHandler.attachHandler('share-buttons', () => __webpack_require__.e(/*! import() | share-buttons */ "share-buttons").then(__webpack_require__.bind(__webpack_require__, /*! ./handlers/share-buttons */ "../modules/share-buttons/assets/js/frontend/handlers/share-buttons.js")));
2608  }
2609}
2610exports["default"] = _default;
2611
2612/***/ }),
2613
2614/***/ "../modules/slides/assets/js/frontend/frontend.js":
2615/*!********************************************************!*\
2616  !*** ../modules/slides/assets/js/frontend/frontend.js ***!
2617  \********************************************************/
2618/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
2619
2620
2621
2622Object.defineProperty(exports, "__esModule", ({
2623  value: true
2624}));
2625exports["default"] = void 0;
2626class _default extends elementorModules.Module {
2627  constructor() {
2628    super();
2629    elementorFrontend.elementsHandler.attachHandler('slides', () => __webpack_require__.e(/*! import() | slides */ "slides").then(__webpack_require__.bind(__webpack_require__, /*! ./handlers/slides */ "../modules/slides/assets/js/frontend/handlers/slides.js")));
2630  }
2631}
2632exports["default"] = _default;
2633
2634/***/ }),
2635
2636/***/ "../modules/social/assets/js/frontend/frontend.js":
2637/*!********************************************************!*\
2638  !*** ../modules/social/assets/js/frontend/frontend.js ***!
2639  \********************************************************/
2640/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
2641
2642
2643
2644Object.defineProperty(exports, "__esModule", ({
2645  value: true
2646}));
2647exports["default"] = void 0;
2648class _default extends elementorModules.Module {
2649  constructor() {
2650    super();
2651    elementorFrontend.elementsHandler.attachHandler('facebook-button', () => __webpack_require__.e(/*! import() | social */ "social").then(__webpack_require__.bind(__webpack_require__, /*! ./handlers/facebook */ "../modules/social/assets/js/frontend/handlers/facebook.js")));
2652    elementorFrontend.elementsHandler.attachHandler('facebook-comments', () => __webpack_require__.e(/*! import() | social */ "social").then(__webpack_require__.bind(__webpack_require__, /*! ./handlers/facebook */ "../modules/social/assets/js/frontend/handlers/facebook.js")));
2653    elementorFrontend.elementsHandler.attachHandler('facebook-embed', () => __webpack_require__.e(/*! import() | social */ "social").then(__webpack_require__.bind(__webpack_require__, /*! ./handlers/facebook */ "../modules/social/assets/js/frontend/handlers/facebook.js")));
2654    elementorFrontend.elementsHandler.attachHandler('facebook-page', () => __webpack_require__.e(/*! import() | social */ "social").then(__webpack_require__.bind(__webpack_require__, /*! ./handlers/facebook */ "../modules/social/assets/js/frontend/handlers/facebook.js")));
2655  }
2656}
2657exports["default"] = _default;
2658
2659/***/ }),
2660
2661/***/ "../modules/table-of-contents/assets/js/frontend/frontend.js":
2662/*!*******************************************************************!*\
2663  !*** ../modules/table-of-contents/assets/js/frontend/frontend.js ***!
2664  \*******************************************************************/
2665/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
2666
2667
2668
2669Object.defineProperty(exports, "__esModule", ({
2670  value: true
2671}));
2672exports["default"] = void 0;
2673class _default extends elementorModules.Module {
2674  constructor() {
2675    super();
2676    elementorFrontend.elementsHandler.attachHandler('table-of-contents', () => Promise.all(/*! import() | table-of-contents */[__webpack_require__.e("vendors-node_modules_dompurify_dist_purify_js"), __webpack_require__.e("table-of-contents")]).then(__webpack_require__.bind(__webpack_require__, /*! ./handlers/table-of-contents */ "../modules/table-of-contents/assets/js/frontend/handlers/table-of-contents.js")));
2677  }
2678}
2679exports["default"] = _default;
2680
2681/***/ }),
2682
2683/***/ "../modules/theme-builder/assets/js/frontend/frontend.js":
2684/*!***************************************************************!*\
2685  !*** ../modules/theme-builder/assets/js/frontend/frontend.js ***!
2686  \***************************************************************/
2687/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
2688
2689
2690
2691Object.defineProperty(exports, "__esModule", ({
2692  value: true
2693}));
2694exports["default"] = void 0;
2695class _default extends elementorModules.Module {
2696  constructor() {
2697    super();
2698    ['archive_classic', 'archive_full_content', 'archive_cards'].forEach(skinName => {
2699      elementorFrontend.elementsHandler.attachHandler('archive-posts', () => __webpack_require__.e(/*! import() | archive-posts */ "archive-posts").then(__webpack_require__.bind(__webpack_require__, /*! ./handlers/archive-posts-load-more */ "../modules/theme-builder/assets/js/frontend/handlers/archive-posts-load-more.js")), skinName);
2700    });
2701    elementorFrontend.elementsHandler.attachHandler('archive-posts', () => __webpack_require__.e(/*! import() | archive-posts */ "archive-posts").then(__webpack_require__.bind(__webpack_require__, /*! ./handlers/archive-posts-skin-classic */ "../modules/theme-builder/assets/js/frontend/handlers/archive-posts-skin-classic.js")), 'archive_classic');
2702    elementorFrontend.elementsHandler.attachHandler('archive-posts', () => __webpack_require__.e(/*! import() | archive-posts */ "archive-posts").then(__webpack_require__.bind(__webpack_require__, /*! ./handlers/archive-posts-skin-classic */ "../modules/theme-builder/assets/js/frontend/handlers/archive-posts-skin-classic.js")), 'archive_full_content');
2703    elementorFrontend.elementsHandler.attachHandler('archive-posts', () => __webpack_require__.e(/*! import() | archive-posts */ "archive-posts").then(__webpack_require__.bind(__webpack_require__, /*! ./handlers/archive-posts-skin-cards */ "../modules/theme-builder/assets/js/frontend/handlers/archive-posts-skin-cards.js")), 'archive_cards');
2704    jQuery(function () {
2705      // Go to elementor element - if the URL is something like http://domain.com/any-page?preview=true&theme_template_id=6479
2706      var match = location.search.match(/theme_template_id=(\d*)/),
2707        $element = match ? jQuery('.elementor-' + match[1]) : [];
2708      if ($element.length) {
2709        jQuery('html, body').animate({
2710          scrollTop: $element.offset().top - window.innerHeight / 2
2711        });
2712      }
2713    });
2714  }
2715}
2716exports["default"] = _default;
2717
2718/***/ }),
2719
2720/***/ "../modules/theme-elements/assets/js/frontend/frontend.js":
2721/*!****************************************************************!*\
2722  !*** ../modules/theme-elements/assets/js/frontend/frontend.js ***!
2723  \****************************************************************/
2724/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
2725
2726
2727
2728Object.defineProperty(exports, "__esModule", ({
2729  value: true
2730}));
2731exports["default"] = void 0;
2732class _default extends elementorModules.Module {
2733  constructor() {
2734    super();
2735    elementorFrontend.elementsHandler.attachHandler('search-form', () => __webpack_require__.e(/*! import() | search-form */ "search-form").then(__webpack_require__.bind(__webpack_require__, /*! ./handlers/search-form */ "../modules/theme-elements/assets/js/frontend/handlers/search-form.js")));
2736  }
2737}
2738exports["default"] = _default;
2739
2740/***/ }),
2741
2742/***/ "../modules/woocommerce/assets/js/frontend/frontend.js":
2743/*!*************************************************************!*\
2744  !*** ../modules/woocommerce/assets/js/frontend/frontend.js ***!
2745  \*************************************************************/
2746/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
2747
2748
2749
2750Object.defineProperty(exports, "__esModule", ({
2751  value: true
2752}));
2753exports["default"] = void 0;
2754class _default extends elementorModules.Module {
2755  constructor() {
2756    super();
2757    elementorFrontend.elementsHandler.attachHandler('woocommerce-menu-cart', () => __webpack_require__.e(/*! import() | woocommerce-menu-cart */ "woocommerce-menu-cart").then(__webpack_require__.bind(__webpack_require__, /*! ./handlers/menu-cart */ "../modules/woocommerce/assets/js/frontend/handlers/menu-cart.js")));
2758    elementorFrontend.elementsHandler.attachHandler('woocommerce-purchase-summary', () => __webpack_require__.e(/*! import() | woocommerce-purchase-summary */ "woocommerce-purchase-summary").then(__webpack_require__.bind(__webpack_require__, /*! ./handlers/purchase-summary */ "../modules/woocommerce/assets/js/frontend/handlers/purchase-summary.js")));
2759    elementorFrontend.elementsHandler.attachHandler('woocommerce-checkout-page', () => __webpack_require__.e(/*! import() | woocommerce-checkout-page */ "woocommerce-checkout-page").then(__webpack_require__.bind(__webpack_require__, /*! ./handlers/checkout-page */ "../modules/woocommerce/assets/js/frontend/handlers/checkout-page.js")));
2760    elementorFrontend.elementsHandler.attachHandler('woocommerce-cart', () => __webpack_require__.e(/*! import() | woocommerce-cart */ "woocommerce-cart").then(__webpack_require__.bind(__webpack_require__, /*! ./handlers/cart */ "../modules/woocommerce/assets/js/frontend/handlers/cart.js")));
2761    elementorFrontend.elementsHandler.attachHandler('woocommerce-my-account', () => __webpack_require__.e(/*! import() | woocommerce-my-account */ "woocommerce-my-account").then(__webpack_require__.bind(__webpack_require__, /*! ./handlers/my-account */ "../modules/woocommerce/assets/js/frontend/handlers/my-account.js")));
2762    elementorFrontend.elementsHandler.attachHandler('woocommerce-notices', () => __webpack_require__.e(/*! import() | woocommerce-notices */ "woocommerce-notices").then(__webpack_require__.bind(__webpack_require__, /*! ./handlers/notices */ "../modules/woocommerce/assets/js/frontend/handlers/notices.js")));
2763    elementorFrontend.elementsHandler.attachHandler('woocommerce-product-add-to-cart', () => __webpack_require__.e(/*! import() | product-add-to-cart */ "product-add-to-cart").then(__webpack_require__.bind(__webpack_require__, /*! ./handlers/product-add-to-cart */ "../modules/woocommerce/assets/js/frontend/handlers/product-add-to-cart.js")));
2764
2765    /**
2766     * `wc-cart` script is enqueued in the Editor by the widget `get_script_depends()`. As a result WooCommerce
2767     * triggers its cart related event callbacks. One of the callbacks requires `.woocommerce-cart-form` to be in
2768     * the page and reloads the Preview if it's not there. To get around this we add our own empty
2769     * `.woocommerce-cart-form` to the page to stop the page reloading.
2770     */
2771    if (elementorFrontend.isEditMode()) {
2772      elementorFrontend.on('components:init', () => {
2773        if (!elementorFrontend.elements.$body.find('.elementor-widget-woocommerce-cart').length) {
2774          elementorFrontend.elements.$body.append('<div class="woocommerce-cart-form">');
2775        }
2776      });
2777    }
2778  }
2779}
2780exports["default"] = _default;
2781
2782/***/ })
2782,
2783
2784/***/ "@wordpress/i18n":
2785/*!**************************!*\
2786  !*** external "wp.i18n" ***!
2787  \**************************/
2788/***/ ((module) => {
2789
2790module.exports = wp.i18n;
2791
2792/***/ })
2793
2794},
2795/******/ __webpack_require__ => { // webpackRuntimeModules
2796/******/ var __webpack_exec__ = (moduleId) => (__webpack_require__(__webpack_require__.s = moduleId))
2797/******/ __webpack_require__.O(0, ["frontend"], () => (__webpack_exec__("../assets/dev/js/frontend/elements-handlers.js")));
2798/******/ var __webpack_exports__ = __webpack_require__.O();
2799/******/ }
2800]);
2801//# sourceMappingURL=elements-handlers.js.map

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.