PageSourceSearch

https://woonotif.com/wp-content/plugins/elementor-pro/assets/js/elements-handlers.js?ver=3.32.2

js woonotif.com collected 2026-10-02 00:21:10 UTC 116,233 bytes, 2,799 lines download raw bytes

1/*! elementor-pro - v3.32.0 - 29-09-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  createElementFromHTMLString(widgetContainerHTMLString) {
840    const div = document.createElement('div');
841    if (!widgetContainerHTMLString) {
842      div.classList.add('elementor-widget-container');
843      return div;
844    }
845    div.innerHTML = widgetContainerHTMLString.trim();
846    return div.firstElementChild;
847  }
848  refreshLoopWidget(widgetId, filterId) {
849    this.loopWidgetsStore.consolidateFilters(widgetId);
850    this.updateURLQueryString(widgetId, filterId);
851    const widget = document.querySelector(`.elementor-element-${widgetId}`);
852    if (!widget) {
853      return;
854    }
855    if (!this.ajaxHelper) {
856      this.ajaxHelper = new _ajaxHelper.default();
857    }
858    this.ajaxHelper.addLoadingAnimationOverlay(widgetId);
859    const fetchUpdatedLoopWidgetMarkup = this.fetchUpdatedLoopWidgetMarkup(widgetId, filterId).then(response => {
860      if (!(response instanceof Response) || !response?.ok || 400 <= response?.status) {
861        return {};
862      }
863      return response.json();
864    }).catch(() => {
865      return {};
866    }).then(response => {
867      if (!response?.data && '' !== response?.data) {
868        return;
869      }
870      const existingWidgetContainer = widget.querySelector('.elementor-widget-container'),
871        newWidgetContainer = this.createElementFromHTMLString(response.data);
872      widget.replaceChild(newWidgetContainer, existingWidgetContainer);
873      this.handleElementHandlers(widget);
874      if (ElementorProFrontendConfig.settings.lazy_load_background_images) {
875        document.dispatchEvent(new Event('elementor/lazyload/observe'));
876      }
877      elementorFrontend.elementsHandler.runReadyTrigger(document.querySelector(`.elementor-element-${widgetId}`));
878      widget.classList.remove('e-loading');
879    }).finally(() => {
880      this.ajaxHelper.removeLoadingAnimationOverlay(widgetId);
881    });
882    return fetchUpdatedLoopWidgetMarkup;
883
884    // TODO: Deal with pagination. Do we need to manually add the query string to the pagination links?
885  }
886  handleElementHandlers(newWidgetMarkup) {
887    const loopItems = newWidgetMarkup.querySelectorAll('.e-loop-item');
888    (0, _runElementHandlers.default)(loopItems);
889  }
890}
891exports["default"] = BaseFilterFrontendModule;
892
893/***/ }),
894
895/***/ "../modules/loop-filter/assets/js/frontend/frontend.js":
896/*!*************************************************************!*\
897  !*** ../modules/loop-filter/assets/js/frontend/frontend.js ***!
898  \*************************************************************/
899/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
900
901
902
903var _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ "../node_modules/@babel/runtime/helpers/interopRequireDefault.js");
904Object.defineProperty(exports, "__esModule", ({
905  value: true
906}));
907exports["default"] = void 0;
908var _frontendModuleBase = _interopRequireDefault(__webpack_require__(/*! ./frontend-module-base */ "../modules/loop-filter/assets/js/frontend/frontend-module-base.js"));
909class LoopFilter extends _frontendModuleBase.default {
910  constructor() {
911    super();
912    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")));
913  }
914}
915exports["default"] = LoopFilter;
916
917/***/ }),
918
919/***/ "../modules/loop-filter/assets/js/frontend/loop-widgets-store.js":
920/*!***********************************************************************!*\
921  !*** ../modules/loop-filter/assets/js/frontend/loop-widgets-store.js ***!
922  \***********************************************************************/
923/***/ ((__unused_webpack_module, exports) => {
924
925
926
927Object.defineProperty(exports, "__esModule", ({
928  value: true
929}));
930exports["default"] = void 0;
931class LoopWidgetsStore {
932  constructor() {
933    this.widgets = {};
934  }
935  get() {
936    return this.widgets;
937  }
938  getWidget(widgetId) {
939    return this.widgets[widgetId];
940  }
941  setWidget(widgetId, widget) {
942    this.widgets[widgetId] = widget;
943  }
944  unsetWidget(widgetId) {
945    delete this.widgets[widgetId];
946  }
947  getFilters(widgetId) {
948    return this.getWidget(widgetId).filters;
949  }
950  getFilter(widgetId, filterId) {
951    return this.getWidget(widgetId).filters[filterId];
952  }
953  setFilter(widgetId, filterId, filterData) {
954    this.getWidget(widgetId).filters[filterId] = filterData;
955  }
956  unsetFilter(widgetId, filterId) {
957    delete this.getWidget(widgetId).filters[filterId];
958  }
959  getFilterTerms(widgetId, filterId) {
960    return this.getFilter(widgetId, filterId).filterData.terms ?? [];
961  }
962  setFilterTerms(widgetId, filterId, termData) {
963    this.getFilter(widgetId, filterId).filterData.terms = termData;
964  }
965  getConsolidatedFilters(widgetId) {
966    return this.getWidget(widgetId).consolidatedFilters;
967  }
968  setConsolidatedFilters(widgetId, consolidatedFilters) {
969    this.getWidget(widgetId).consolidatedFilters = consolidatedFilters;
970  }
971
972  /**
973   *
974   * @param {string} widgetId
975   */
976  addWidget(widgetId) {
977    const newWidget = {
978      filters: {},
979      consolidatedFilters: {}
980    };
981    this.setWidget(widgetId, newWidget);
982  }
983  maybeInitializeWidget(widgetId) {
984    if (!!this.getWidget(widgetId)) {
985      return;
986    }
987    this.addWidget(widgetId);
988  }
989  maybeInitializeFilter(widgetId, filterId) {
990    if (!!this.getFilter(widgetId, filterId)) {
991      return;
992    }
993    const newFilter = {
994      filterData: {
995        terms: []
996      }
997    };
998    this.setFilter(widgetId, filterId, newFilter);
999  }
1000
1001  /**
1002   * Consolidates all filters for a loop widget.
1003   *
1004   * filters: {
1005   * 	filter1: { filterType: 'type1', filterData: { selectedTaxonomy: 'taxonomy1', terms: [ 'term1', 'term2' ] } },
1006   * 	filter2: { filterType: 'type1', filterData: { selectedTaxonomy: 'taxonomy1', terms: [ 'term2' ] } },
1007   * },
1008   * consolidatedFilters: {},
1009   *
1010   * @param {string} widgetId
1011   */
1012  consolidateFilters(widgetId) {
1013    const loopWidgetFilters = this.getFilters(widgetId),
1014      consolidatedFilters = {};
1015    for (const filterId in loopWidgetFilters) {
1016      const filter = loopWidgetFilters[filterId],
1017        filterType = filter.filterType,
1018        filterData = filter.filterData;
1019      if (0 === filterData.terms.length) {
1020        continue;
1021      }
1022
1023      // This part is non-generic. To expand this functionality to other filter types, we'll need to refactor and
1024      // generalize this part.
1025      if (!consolidatedFilters[filterType]) {
1026        consolidatedFilters[filterType] = {};
1027      }
1028      if (!consolidatedFilters[filterType][filterData.selectedTaxonomy]) {
1029        consolidatedFilters[filterType][filterData.selectedTaxonomy] = [];
1030      }
1031      if (filterData.terms && (!consolidatedFilters[filterType][filterData.selectedTaxonomy].terms || !consolidatedFilters[filterType][filterData.selectedTaxonomy].terms.includes(filterData.terms))) {
1032        consolidatedFilters[filterType][filterData.selectedTaxonomy] = {
1033          terms: filterData.terms === typeof 'string' ? [filterData.terms] : filterData.terms
1034        };
1035      }
1036      if (filterData.logicalJoin && !consolidatedFilters[filterType][filterData.selectedTaxonomy].logicalJoin) {
1037        consolidatedFilters[filterType][filterData.selectedTaxonomy] = {
1038          ...(consolidatedFilters[filterType][filterData.selectedTaxonomy] || {}),
1039          // Check for undefined
1040          logicalJoin: filterData.logicalJoin ?? 'AND'
1041        };
1042      }
1043    }
1044    this.setConsolidatedFilters(widgetId, consolidatedFilters);
1045  }
1046}
1047exports["default"] = LoopWidgetsStore;
1048
1049/***/ }),
1050
1051/***/ "../modules/loop-filter/assets/js/query-constants.js":
1052/*!***********************************************************!*\
1053  !*** ../modules/loop-filter/assets/js/query-constants.js ***!
1054  \***********************************************************/
1055/***/ ((module) => {
1056
1057
1058
1059const queryConstants = {
1060  AND: {
1061    separator: {
1062      decoded: '+',
1063      fromBrowser: ' ',
1064      encoded: '%2B'
1065    },
1066    operator: 'AND'
1067  },
1068  OR: {
1069    separator: {
1070      decoded: '~',
1071      fromBrowser: '~',
1072      encoded: '%7C'
1073    },
1074    operator: 'IN'
1075  },
1076  NOT: {
1077    separator: {
1078      decoded: '!',
1079      fromBrowser: '!',
1080      encoded: '%21'
1081    },
1082    operator: 'NOT IN'
1083  },
1084  DISABLED: {
1085    separator: {
1086      decoded: '',
1087      fromBrowser: '',
1088      encoded: ''
1089    },
1090    operator: 'AND'
1091  }
1092};
1093module.exports = {
1094  queryConstants
1095};
1096
1097/***/ }),
1098
1099/***/ "../modules/lottie/assets/js/frontend/frontend.js":
1100/*!********************************************************!*\
1101  !*** ../modules/lottie/assets/js/frontend/frontend.js ***!
1102  \********************************************************/
1103/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
1104
1105
1106
1107Object.defineProperty(exports, "__esModule", ({
1108  value: true
1109}));
1110exports["default"] = void 0;
1111class _default extends elementorModules.Module {
1112  constructor() {
1113    super();
1114    elementorFrontend.elementsHandler.attachHandler('lottie', () => __webpack_require__.e(/*! import() | lottie */ "lottie").then(__webpack_require__.bind(__webpack_require__, /*! ./handler */ "../modules/lottie/assets/js/frontend/handler.js")));
1115  }
1116}
1117exports["default"] = _default;
1118
1119/***/ }),
1120
1121/***/ "../modules/mega-menu/assets/js/frontend/frontend.js":
1122/*!***********************************************************!*\
1123  !*** ../modules/mega-menu/assets/js/frontend/frontend.js ***!
1124  \***********************************************************/
1125/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
1126
1127
1128
1129Object.defineProperty(exports, "__esModule", ({
1130  value: true
1131}));
1132exports["default"] = void 0;
1133class _default extends elementorModules.Module {
1134  constructor() {
1135    super();
1136    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"))]);
1137  }
1138}
1139exports["default"] = _default;
1140
1141/***/ }),
1142
1143/***/ "../modules/nav-menu/assets/js/frontend/frontend.js":
1144/*!**********************************************************!*\
1145  !*** ../modules/nav-menu/assets/js/frontend/frontend.js ***!
1146  \**********************************************************/
1147/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
1148
1149
1150
1151Object.defineProperty(exports, "__esModule", ({
1152  value: true
1153}));
1154exports["default"] = void 0;
1155class _default extends elementorModules.Module {
1156  constructor() {
1157    super();
1158    if (jQuery.fn.smartmenus) {
1159      // Override the default stupid detection
1160      jQuery.SmartMenus.prototype.isCSSOn = function () {
1161        return true;
1162      };
1163      if (elementorFrontend.config.is_rtl) {
1164        jQuery.fn.smartmenus.defaults.rightToLeftSubMenus = true;
1165      }
1166    }
1167    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")));
1168  }
1169}
1170exports["default"] = _default;
1171
1172/***/ }),
1173
1174/***/ "../modules/nested-carousel/assets/js/frontend/frontend.js":
1175/*!*****************************************************************!*\
1176  !*** ../modules/nested-carousel/assets/js/frontend/frontend.js ***!
1177  \*****************************************************************/
1178/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
1179
1180
1181
1182Object.defineProperty(exports, "__esModule", ({
1183  value: true
1184}));
1185exports["default"] = void 0;
1186class _default extends elementorModules.Module {
1187  constructor() {
1188    super();
1189    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")));
1190  }
1191}
1192exports["default"] = _default;
1193
1194/***/ }),
1195
1196/***/ "../modules/off-canvas/assets/js/frontend/frontend.js":
1197/*!************************************************************!*\
1198  !*** ../modules/off-canvas/assets/js/frontend/frontend.js ***!
1199  \************************************************************/
1200/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
1201
1202
1203
1204Object.defineProperty(exports, "__esModule", ({
1205  value: true
1206}));
1207exports["default"] = void 0;
1208class _default extends elementorModules.Module {
1209  constructor() {
1210    super();
1211    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")));
1212    elementorFrontend.on('components:init', () => this.onFrontendComponentsInit());
1213  }
1214  onFrontendComponentsInit() {
1215    this.addUrlActions();
1216  }
1217  addUrlActions() {
1218    elementorFrontend.utils.urlActions.addAction('off_canvas:open', settings => {
1219      this.toggleOffCanvasDisplay(settings);
1220    });
1221    elementorFrontend.utils.urlActions.addAction('off_canvas:close', settings => {
1222      this.toggleOffCanvasDisplay(settings);
1223    });
1224    elementorFrontend.utils.urlActions.addAction('off_canvas:toggle', settings => {
1225      this.toggleOffCanvasDisplay(settings);
1226    });
1227  }
1228  toggleOffCanvasDisplay(settings) {
1229    window.dispatchEvent(new CustomEvent('elementor-pro/off-canvas/toggle-display-mode', {
1230      detail: settings
1231    }));
1232  }
1233}
1234exports["default"] = _default;
1235
1236/***/ }),
1237
1238/***/ "../modules/popup/assets/js/frontend/document.js":
1239/*!*******************************************************!*\
1240  !*** ../modules/popup/assets/js/frontend/document.js ***!
1241  \*******************************************************/
1242/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
1243
1244
1245
1246var _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ "../node_modules/@babel/runtime/helpers/interopRequireDefault.js");
1247Object.defineProperty(exports, "__esModule", ({
1248  value: true
1249}));
1250exports["default"] = void 0;
1251var _triggers = _interopRequireDefault(__webpack_require__(/*! ./triggers */ "../modules/popup/assets/js/frontend/triggers.js"));
1252var _timing = _interopRequireDefault(__webpack_require__(/*! ./timing */ "../modules/popup/assets/js/frontend/timing.js"));
1253var _eIcons = __webpack_require__(/*! @elementor-pro/e-icons */ "../assets/dev/js/frontend/utils/icons/e-icons.js");
1254var _modalKeyboardHandler = _interopRequireDefault(__webpack_require__(/*! elementor-pro/frontend/utils/modal-keyboard-handler */ "../assets/dev/js/frontend/utils/modal-keyboard-handler.js"));
1255// Temporary solution, when core 3.5.0 will be the minimum version, is should be replaced with @elementor/e-icons.
1256
1257class _default extends elementorModules.frontend.Document {
1258  keyboardHandler = null;
1259  bindEvents() {
1260    const openSelector = this.getDocumentSettings('open_selector');
1261    if (openSelector) {
1262      elementorFrontend.elements.$body.on('click', openSelector, this.showModal.bind(this));
1263    }
1264  }
1265  startTiming() {
1266    const timing = new _timing.default(this.getDocumentSettings('timing'), this);
1267    if (timing.check()) {
1268      this.initTriggers();
1269    }
1270  }
1271  initTriggers() {
1272    this.triggers = new _triggers.default(this.getDocumentSettings('triggers'), this);
1273  }
1274  showModal(event) {
1275    let avoidMultiple = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;
1276    // eslint-disable-next-line @wordpress/no-unused-vars-before-return
1277    const settings = this.getDocumentSettings();
1278    if (!this.isEdit) {
1279      if (!elementorFrontend.isWPPreviewMode()) {
1280        if (this.getStorage('disable')) {
1281          return;
1282        }
1283        if (avoidMultiple && elementorProFrontend.modules.popup.popupPopped && settings.avoid_multiple_popups) {
1284          return;
1285        }
1286      }
1287
1288      // A clean copy of the element without previous initializations and events
1289      this.$element = jQuery(this.elementHTML);
1290      this.elements.$elements = this.$element.find(this.getSettings('selectors.elements'));
1291    }
1292    const modal = this.getModal(),
1293      $closeButton = modal.getElements('closeButton');
1294    modal.setMessage(this.$element).show();
1295    if (!this.isEdit) {
1296      if (settings.close_button_delay) {
1297        $closeButton.hide();
1298        clearTimeout(this.closeButtonTimeout);
1299        this.closeButtonTimeout = setTimeout(() => $closeButton.show(), settings.close_button_delay * 1000);
1300      }
1301      super.runElementsHandlers();
1302    }
1303    this.setEntranceAnimation();
1304    if (!settings.timing || !settings.timing.times_count) {
1305      this.countTimes();
1306    }
1307    elementorProFrontend.modules.popup.popupPopped = true;
1308    if (!this.isEdit && settings.a11y_navigation) {
1309      this.handleKeyboardA11y();
1310    }
1311  }
1312  setEntranceAnimation() {
1313    const $widgetContent = this.getModal().getElements('widgetContent'),
1314      settings = this.getDocumentSettings(),
1315      newAnimation = elementorFrontend.getCurrentDeviceSetting(settings, 'entrance_animation');
1316    if (this.currentAnimation) {
1317      $widgetContent.removeClass(this.currentAnimation);
1318    }
1319    this.currentAnimation = newAnimation;
1320    if (!newAnimation) {
1321      return;
1322    }
1323    const animationDuration = settings.entrance_animation_duration.size;
1324    $widgetContent.addClass(newAnimation);
1325    setTimeout(() => $widgetContent.removeClass(newAnimation), animationDuration * 1000);
1326  }
1327  handleKeyboardA11y() {
1328    if (!this.keyboardHandler) {
1329      this.keyboardHandler = new _modalKeyboardHandler.default(this.getKeyboardHandlingConfig());
1330    }
1331    this.keyboardHandler.onOpenModal();
1332  }
1333  setExitAnimation() {
1334    const modal = this.getModal(),
1335      settings = this.getDocumentSettings(),
1336      $widgetContent = modal.getElements('widgetContent'),
1337      newAnimation = elementorFrontend.getCurrentDeviceSetting(settings, 'exit_animation'),
1338      animationDuration = newAnimation ? settings.entrance_animation_duration.size : 0;
1339    setTimeout(() => {
1340      if (newAnimation) {
1341        $widgetContent.removeClass(newAnimation + ' reverse');
1342      }
1343      if (!this.isEdit) {
1344        this.$element.remove();
1345        modal.getElements('widget').hide();
1346      }
1347    }, animationDuration * 1000);
1348    if (newAnimation) {
1349      $widgetContent.addClass(newAnimation + ' reverse');
1350    }
1351  }
1352  initModal() {
1353    let modal;
1354    this.getModal = () => {
1355      if (!modal) {
1356        const settings = this.getDocumentSettings(),
1357          id = this.getSettings('id'),
1358          triggerPopupEvent = eventType => {
1359            const event = 'elementor/popup/' + eventType;
1360            elementorFrontend.elements.$document.trigger(event, [id, this]);
1361
1362            // TODO: Use `elementorFrontend.utils.events.dispatch` when it's in master.
1363            window.dispatchEvent(new CustomEvent(event, {
1364              detail: {
1365                id,
1366                instance: this
1367              }
1368            }));
1369          };
1370        let classes = 'elementor-popup-modal';
1371        if (settings.classes) {
1372          classes += ' ' + settings.classes;
1373        }
1374        const modalProperties = {
1375          id: 'elementor-popup-modal-' + id,
1376          className: classes,
1377          closeButton: true,
1378          preventScroll: settings.prevent_scroll,
1379          onShow: () => triggerPopupEvent('show'),
1380          onHide: () => triggerPopupEvent('hide'),
1381          effects: {
1382            hide: () => {
1383              if (settings.timing && settings.timing.times_count) {
1384                this.countTimes();
1385              }
1386              this.setExitAnimation();
1387            },
1388            show: 'show'
1389          },
1390          hide: {
1391            auto: !!settings.close_automatically,
1392            autoDelay: settings.close_automatically * 1000,
1393            onBackgroundClick: !settings.prevent_close_on_background_click,
1394            onOutsideClick: !settings.prevent_close_on_background_click,
1395            onEscKeyPress: !settings.prevent_close_on_esc_key,
1396            ignore: '.flatpickr-calendar'
1397          },
1398          position: {
1399            enable: false
1400          }
1401        };
1402        if (elementorFrontend.config.experimentalFeatures.e_font_icon_svg) {
1403          modalProperties.closeButtonOptions = {
1404            iconElement: _eIcons.close.element
1405          };
1406        }
1407
1408        // This line should be moved to the condition above, as an 'else' case, once the core minimum version is 3.5.0.
1409        modalProperties.closeButtonClass = 'eicon-close';
1410        modal = elementorFrontend.getDialogsManager().createWidget('lightbox', modalProperties);
1411        modal.getElements('widgetContent').addClass('animated');
1412        const $closeButton = modal.getElements('closeButton');
1413        if (this.isEdit) {
1414          $closeButton.off('click');
1415          modal.hide = () => {};
1416        }
1417        this.setCloseButtonPosition();
1418      }
1419      return modal;
1420    };
1421  }
1422  setCloseButtonPosition() {
1423    const modal = this.getModal(),
1424      closeButtonPosition = this.getDocumentSettings('close_button_position'),
1425      $closeButton = modal.getElements('closeButton');
1426    $closeButton.prependTo(modal.getElements('outside' === closeButtonPosition ? 'widget' : 'widgetContent'));
1427  }
1428  disable() {
1429    this.setStorage('disable', true);
1430  }
1431  setStorage(key, value, options) {
1432    elementorFrontend.storage.set(`popup_${this.getSettings('id')}_${key}`, value, options);
1433  }
1434  getStorage(key, options) {
1435    return elementorFrontend.storage.get(`popup_${this.getSettings('id')}_${key}`, options);
1436  }
1437  countTimes() {
1438    const displayTimes = this.getStorage('times') || 0;
1439    this.setStorage('times', displayTimes + 1);
1440  }
1441  runElementsHandlers() {}
1442  async onInit() {
1443    super.onInit();
1444
1445    // In case that the library was not loaded, it indicates a Core version that enables dynamic loading.
1446    if (!window.DialogsManager) {
1447      await elementorFrontend.utils.assetsLoader.load('script', 'dialog');
1448    }
1449    this.initModal();
1450    if (this.isEdit) {
1451      this.showModal();
1452      return;
1453    }
1454    this.$element.show().remove();
1455    this.elementHTML = this.$element[0].outerHTML;
1456    if (elementorFrontend.isEditMode()) {
1457      return;
1458    }
1459    if (elementorFrontend.isWPPreviewMode() && elementorFrontend.config.post.id === this.getSettings('id')) {
1460      this.showModal();
1461      return;
1462    }
1463    this.startTiming();
1464  }
1465  onSettingsChange(model) {
1466    const changedKey = Object.keys(model.changed)[0];
1467    if (-1 !== changedKey.indexOf('entrance_animation')) {
1468      this.setEntranceAnimation();
1469    }
1470    if ('exit_animation' === changedKey) {
1471      this.setExitAnimation();
1472    }
1473    if ('close_button_position' === changedKey) {
1474      this.setCloseButtonPosition();
1475    }
1476  }
1477  getEntranceAnimationDuration() {
1478    const settings = this.getDocumentSettings();
1479    const entranceAnimation = settings?.entrance_animation;
1480    if (!entranceAnimation || '' === entranceAnimation || 'none' === entranceAnimation) {
1481      return 0;
1482    }
1483    const entranceAnimationDuration = settings?.entrance_animation_duration?.size;
1484    return !!entranceAnimationDuration ? Number(entranceAnimationDuration) : 0;
1485  }
1486  getKeyboardHandlingConfig() {
1487    return {
1488      $modalElements: this.getModal().getElements('widgetContent'),
1489      $elementWrapper: this.$element,
1490      hasEntranceAnimation: 0 !== this.getEntranceAnimationDuration(),
1491      modalType: 'popup',
1492      modalId: this.$element.data('elementor-id')
1493    };
1494  }
1495}
1496exports["default"] = _default;
1497
1498/***/ }),
1499
1500/***/ "../modules/popup/assets/js/frontend/frontend.js":
1501/*!*******************************************************!*\
1502  !*** ../modules/popup/assets/js/frontend/frontend.js ***!
1503  \*******************************************************/
1504/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
1505
1506
1507
1508var _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ "../node_modules/@babel/runtime/helpers/interopRequireDefault.js");
1509Object.defineProperty(exports, "__esModule", ({
1510  value: true
1511}));
1512exports["default"] = void 0;
1513var _document = _interopRequireDefault(__webpack_require__(/*! ./document */ "../modules/popup/assets/js/frontend/document.js"));
1514class _default extends elementorModules.Module {
1515  constructor() {
1516    super();
1517    elementorFrontend.hooks.addAction('elementor/frontend/documents-manager/init-classes', this.addDocumentClass);
1518    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")));
1519    elementorFrontend.on('components:init', () => this.onFrontendComponentsInit());
1520    if (this.shouldSetViewsAndSessions()) {
1521      this.setViewsAndSessions();
1522    }
1523  }
1524  shouldSetViewsAndSessions() {
1525    return !elementorFrontend.isEditMode() && !elementorFrontend.isWPPreviewMode() && ElementorProFrontendConfig.popup.hasPopUps;
1526  }
1527  addDocumentClass(documentsManager) {
1528    documentsManager.addDocumentClass('popup', _document.default);
1529  }
1530  setViewsAndSessions() {
1531    const pageViews = elementorFrontend.storage.get('pageViews') || 0;
1532    elementorFrontend.storage.set('pageViews', pageViews + 1);
1533    const activeSession = elementorFrontend.storage.get('activeSession', {
1534      session: true
1535    });
1536    if (!activeSession) {
1537      elementorFrontend.storage.set('activeSession', true, {
1538        session: true
1539      });
1540      const sessions = elementorFrontend.storage.get('sessions') || 0;
1541      elementorFrontend.storage.set('sessions', sessions + 1);
1542    }
1543  }
1544  showPopup(settings, event) {
1545    const popup = elementorFrontend.documentsManager.documents[settings.id];
1546    if (!popup) {
1547      return;
1548    }
1549    const modal = popup.getModal();
1550    if (settings.toggle && modal.isVisible()) {
1551      modal.hide();
1552    } else {
1553      popup.showModal(event);
1554    }
1555  }
1556  closePopup(settings, event) {
1557    const popupID = jQuery(event.target).parents('[data-elementor-type="popup"]').data('elementorId');
1558    if (!popupID) {
1559      return;
1560    }
1561    const document = elementorFrontend.documentsManager.documents[popupID];
1562    document.getModal().hide();
1563    if (settings.do_not_show_again) {
1564      document.disable();
1565    }
1566  }
1567  onFrontendComponentsInit() {
1568    elementorFrontend.utils.urlActions.addAction('popup:open', (settings, event) => this.showPopup(settings, event));
1569    elementorFrontend.utils.urlActions.addAction('popup:close', (settings, event) => this.closePopup(settings, event));
1570  }
1571}
1572exports["default"] = _default;
1573
1574/***/ }),
1575
1576/***/ "../modules/popup/assets/js/frontend/timing.js":
1577/*!*****************************************************!*\
1578  !*** ../modules/popup/assets/js/frontend/timing.js ***!
1579  \*****************************************************/
1580/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
1581
1582
1583
1584var _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ "../node_modules/@babel/runtime/helpers/interopRequireDefault.js");
1585Object.defineProperty(exports, "__esModule", ({
1586  value: true
1587}));
1588exports["default"] = void 0;
1589var _pageViews = _interopRequireDefault(__webpack_require__(/*! ./timing/page-views */ "../modules/popup/assets/js/frontend/timing/page-views.js"));
1590var _sessions = _interopRequireDefault(__webpack_require__(/*! ./timing/sessions */ "../modules/popup/assets/js/frontend/timing/sessions.js"));
1591var _url = _interopRequireDefault(__webpack_require__(/*! ./timing/url */ "../modules/popup/assets/js/frontend/timing/url.js"));
1592var _sources = _interopRequireDefault(__webpack_require__(/*! ./timing/sources */ "../modules/popup/assets/js/frontend/timing/sources.js"));
1593var _loggedIn = _interopRequireDefault(__webpack_require__(/*! ./timing/logged-in */ "../modules/popup/assets/js/frontend/timing/logged-in.js"));
1594var _devices = _interopRequireDefault(__webpack_require__(/*! ./timing/devices */ "../modules/popup/assets/js/frontend/timing/devices.js"));
1595var _times = _interopRequireDefault(__webpack_require__(/*! ./timing/times */ "../modules/popup/assets/js/frontend/timing/times.js"));
1596var _browsers = _interopRequireDefault(__webpack_require__(/*! ./timing/browsers */ "../modules/popup/assets/js/frontend/timing/browsers.js"));
1597var _schedule = _interopRequireDefault(__webpack_require__(/*! ./timing/schedule */ "../modules/popup/assets/js/frontend/timing/schedule.js"));
1598class _default extends elementorModules.Module {
1599  constructor(settings, document) {
1600    super(settings);
1601    this.document = document;
1602    this.timingClasses = {
1603      page_views: _pageViews.default,
1604      sessions: _sessions.default,
1605      url: _url.default,
1606      sources: _sources.default,
1607      logged_in: _loggedIn.default,
1608      devices: _devices.default,
1609      times: _times.default,
1610      browsers: _browsers.default,
1611      schedule: _schedule.default
1612    };
1613  }
1614  check() {
1615    const settings = this.getSettings();
1616    let checkPassed = true;
1617    jQuery.each(this.timingClasses, (key, TimingClass) => {
1618      if (!settings[key]) {
1619        return;
1620      }
1621      const timing = new TimingClass(settings, this.document);
1622      if (!timing.check()) {
1623        checkPassed = false;
1624      }
1625    });
1626    return checkPassed;
1627  }
1628}
1629exports["default"] = _default;
1630
1631/***/ }),
1632
1633/***/ "../modules/popup/assets/js/frontend/timing/base.js":
1634/*!**********************************************************!*\
1635  !*** ../modules/popup/assets/js/frontend/timing/base.js ***!
1636  \**********************************************************/
1637/***/ ((__unused_webpack_module, exports) => {
1638
1639
1640
1641Object.defineProperty(exports, "__esModule", ({
1642  value: true
1643}));
1644exports["default"] = void 0;
1645class _default extends elementorModules.Module {
1646  constructor(settings, document) {
1647    super(settings);
1648    this.document = document;
1649  }
1650  getTimingSetting(settingKey) {
1651    return this.getSettings(this.getName() + '_' + settingKey);
1652  }
1653}
1654exports["default"] = _default;
1655
1656/***/ }),
1657
1658/***/ "../modules/popup/assets/js/frontend/timing/browsers.js":
1659/*!**************************************************************!*\
1660  !*** ../modules/popup/assets/js/frontend/timing/browsers.js ***!
1661  \**************************************************************/
1662/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
1663
1664
1665
1666var _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ "../node_modules/@babel/runtime/helpers/interopRequireDefault.js");
1667Object.defineProperty(exports, "__esModule", ({
1668  value: true
1669}));
1670exports["default"] = void 0;
1671var _base = _interopRequireDefault(__webpack_require__(/*! ./base */ "../modules/popup/assets/js/frontend/timing/base.js"));
1672class _default extends _base.default {
1673  getName() {
1674    return 'browsers';
1675  }
1676  check() {
1677    if ('all' === this.getTimingSetting('browsers')) {
1678      return true;
1679    }
1680    const targetedBrowsers = this.getTimingSetting('browsers_options'),
1681      browserDetectionFlags = elementorFrontend.utils.environment;
1682    return targetedBrowsers.some(browserName => browserDetectionFlags[browserName]);
1683  }
1684}
1685exports["default"] = _default;
1686
1687/***/ }),
1688
1689/***/ "../modules/popup/assets/js/frontend/timing/devices.js":
1690/*!*************************************************************!*\
1691  !*** ../modules/popup/assets/js/frontend/timing/devices.js ***!
1692  \*************************************************************/
1693/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
1694
1695
1696
1697var _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ "../node_modules/@babel/runtime/helpers/interopRequireDefault.js");
1698Object.defineProperty(exports, "__esModule", ({
1699  value: true
1700}));
1701exports["default"] = void 0;
1702var _base = _interopRequireDefault(__webpack_require__(/*! ./base */ "../modules/popup/assets/js/frontend/timing/base.js"));
1703class _default extends _base.default {
1704  getName() {
1705    return 'devices';
1706  }
1707  check() {
1708    return -1 !== this.getTimingSetting('devices').indexOf(elementorFrontend.getCurrentDeviceMode());
1709  }
1710}
1711exports["default"] = _default;
1712
1713/***/ }),
1714
1715/***/ "../modules/popup/assets/js/frontend/timing/logged-in.js":
1716/*!***************************************************************!*\
1717  !*** ../modules/popup/assets/js/frontend/timing/logged-in.js ***!
1718  \***************************************************************/
1719/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
1720
1721
1722
1723var _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ "../node_modules/@babel/runtime/helpers/interopRequireDefault.js");
1724Object.defineProperty(exports, "__esModule", ({
1725  value: true
1726}));
1727exports["default"] = void 0;
1728var _base = _interopRequireDefault(__webpack_require__(/*! ./base */ "../modules/popup/assets/js/frontend/timing/base.js"));
1729class _default extends _base.default {
1730  getName() {
1731    return 'logged_in';
1732  }
1733  check() {
1734    const userConfig = elementorFrontend.config.user;
1735    if (!userConfig) {
1736      return true;
1737    }
1738    if ('all' === this.getTimingSetting('users')) {
1739      return false;
1740    }
1741    const userRolesInHideList = this.getTimingSetting('roles').filter(role => -1 !== userConfig.roles.indexOf(role));
1742    return !userRolesInHideList.length;
1743  }
1744}
1745exports["default"] = _default;
1746
1747/***/ }),
1748
1749/***/ "../modules/popup/assets/js/frontend/timing/page-views.js":
1750/*!****************************************************************!*\
1751  !*** ../modules/popup/assets/js/frontend/timing/page-views.js ***!
1752  \****************************************************************/
1753/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
1754
1755
1756
1757var _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ "../node_modules/@babel/runtime/helpers/interopRequireDefault.js");
1758Object.defineProperty(exports, "__esModule", ({
1759  value: true
1760}));
1761exports["default"] = void 0;
1762var _base = _interopRequireDefault(__webpack_require__(/*! ./base */ "../modules/popup/assets/js/frontend/timing/base.js"));
1763class _default extends _base.default {
1764  getName() {
1765    return 'page_views';
1766  }
1767  check() {
1768    const pageViews = elementorFrontend.storage.get('pageViews'),
1769      name = this.getName();
1770    let initialPageViews = this.document.getStorage(name + '_initialPageViews');
1771    if (!initialPageViews) {
1772      this.document.setStorage(name + '_initialPageViews', pageViews);
1773      initialPageViews = pageViews;
1774    }
1775    return pageViews - initialPageViews >= this.getTimingSetting('views');
1776  }
1777}
1778exports["default"] = _default;
1779
1780/***/ }),
1781
1782/***/ "../modules/popup/assets/js/frontend/timing/schedule-utils.js":
1783/*!********************************************************************!*\
1784  !*** ../modules/popup/assets/js/frontend/timing/schedule-utils.js ***!
1785  \********************************************************************/
1786/***/ ((__unused_webpack_module, exports) => {
1787
1788
1789
1790Object.defineProperty(exports, "__esModule", ({
1791  value: true
1792}));
1793exports["default"] = void 0;
1794class ScheduleUtils {
1795  constructor(args) {
1796    this.settings = args.settings;
1797  }
1798  getCurrentDateTime() {
1799    let now = new Date();
1800    if ('site' === this.settings.timezone && this.settings.serverDatetime) {
1801      now = new Date(this.settings.serverDatetime);
1802    }
1803    return now;
1804  }
1805  shouldDisplay = () => {
1806    if (!this.settings.startDate && !this.settings.endDate) {
1807      return true;
1808    }
1809    const now = this.getCurrentDateTime();
1810    if ((!this.settings.startDate || now >= this.settings.startDate) && (!this.settings.endDate || now <= this.settings.endDate)) {
1811      return true;
1812    }
1813    return false;
1814  };
1815}
1816exports["default"] = ScheduleUtils;
1817
1818/***/ }),
1819
1820/***/ "../modules/popup/assets/js/frontend/timing/schedule.js":
1821/*!**************************************************************!*\
1822  !*** ../modules/popup/assets/js/frontend/timing/schedule.js ***!
1823  \**************************************************************/
1824/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
1825
1826
1827
1828var _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ "../node_modules/@babel/runtime/helpers/interopRequireDefault.js");
1829Object.defineProperty(exports, "__esModule", ({
1830  value: true
1831}));
1832exports["default"] = void 0;
1833var _base = _interopRequireDefault(__webpack_require__(/*! ./base */ "../modules/popup/assets/js/frontend/timing/base.js"));
1834var _scheduleUtils = _interopRequireDefault(__webpack_require__(/*! ./schedule-utils */ "../modules/popup/assets/js/frontend/timing/schedule-utils.js"));
1835class _default extends _base.default {
1836  constructor() {
1837    super(...arguments);
1838    const {
1839      schedule_timezone: timezone,
1840      schedule_start_date: startDate,
1841      schedule_end_date: endDate,
1842      schedule_server_datetime: serverDatetime
1843    } = this.getSettings();
1844    this.settings = {
1845      timezone,
1846      startDate: startDate ? new Date(startDate) : false,
1847      endDate: endDate ? new Date(endDate) : false,
1848      serverDatetime: serverDatetime ? new Date(serverDatetime) : false
1849    };
1850    this.scheduleUtils = new _scheduleUtils.default({
1851      settings: this.settings
1852    });
1853  }
1854  getName() {
1855    return 'schedule';
1856  }
1857  check() {
1858    return this.scheduleUtils.shouldDisplay();
1859  }
1860}
1861exports["default"] = _default;
1862
1863/***/ }),
1864
1865/***/ "../modules/popup/assets/js/frontend/timing/sessions.js":
1866/*!**************************************************************!*\
1867  !*** ../modules/popup/assets/js/frontend/timing/sessions.js ***!
1868  \**************************************************************/
1869/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
1870
1871
1872
1873var _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ "../node_modules/@babel/runtime/helpers/interopRequireDefault.js");
1874Object.defineProperty(exports, "__esModule", ({
1875  value: true
1876}));
1877exports["default"] = void 0;
1878var _base = _interopRequireDefault(__webpack_require__(/*! ./base */ "../modules/popup/assets/js/frontend/timing/base.js"));
1879class _default extends _base.default {
1880  getName() {
1881    return 'sessions';
1882  }
1883  check() {
1884    const sessions = elementorFrontend.storage.get('sessions'),
1885      name = this.getName();
1886    let initialSessions = this.document.getStorage(name + '_initialSessions');
1887    if (!initialSessions) {
1888      this.document.setStorage(name + '_initialSessions', sessions);
1889      initialSessions = sessions;
1890    }
1891    return sessions - initialSessions >= this.getTimingSetting('sessions');
1892  }
1893}
1894exports["default"] = _default;
1895
1896/***/ }),
1897
1898/***/ "../modules/popup/assets/js/frontend/timing/sources.js":
1899/*!*************************************************************!*\
1900  !*** ../modules/popup/assets/js/frontend/timing/sources.js ***!
1901  \*************************************************************/
1902/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
1903
1904
1905
1906var _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ "../node_modules/@babel/runtime/helpers/interopRequireDefault.js");
1907Object.defineProperty(exports, "__esModule", ({
1908  value: true
1909}));
1910exports["default"] = void 0;
1911var _base = _interopRequireDefault(__webpack_require__(/*! ./base */ "../modules/popup/assets/js/frontend/timing/base.js"));
1912class _default extends _base.default {
1913  getName() {
1914    return 'sources';
1915  }
1916  check() {
1917    const sources = this.getTimingSetting('sources');
1918    if (3 === sources.length) {
1919      return true;
1920    }
1921    const referrer = document.referrer.replace(/https?:\/\/(?:www\.)?/, ''),
1922      isInternal = 0 === referrer.indexOf(location.host.replace('www.', ''));
1923    if (isInternal) {
1924      return -1 !== sources.indexOf('internal');
1925    }
1926    if (-1 !== sources.indexOf('external')) {
1927      return true;
1928    }
1929    if (-1 !== sources.indexOf('search')) {
1930      return /^(google|yahoo|bing|yandex|baidu)\./.test(referrer);
1931    }
1932    return false;
1933  }
1934}
1935exports["default"] = _default;
1936
1937/***/ }),
1938
1939/***/ "../modules/popup/assets/js/frontend/timing/times-utils.js":
1940/*!*****************************************************************!*\
1941  !*** ../modules/popup/assets/js/frontend/timing/times-utils.js ***!
1942  \*****************************************************************/
1943/***/ ((__unused_webpack_module, exports) => {
1944
1945
1946
1947Object.defineProperty(exports, "__esModule", ({
1948  value: true
1949}));
1950exports["default"] = void 0;
1951class TimesUtils {
1952  constructor(args) {
1953    this.uniqueId = args.uniqueId;
1954    this.settings = args.settings;
1955    this.storage = args.storage;
1956  }
1957  getTimeFramesInSecounds(timeFrame) {
1958    const timeFrames = {
1959      day: 86400,
1960      // Day in seconds
1961      week: 604800,
1962      // Week in seconds
1963      month: 2628288 // Month in seconds
1964    };
1965    return timeFrames[timeFrame];
1966  }
1967  setExpiration(name, value, timeFrame) {
1968    const data = this.storage.get(name);
1969    if (!data) {
1970      const options = {
1971        lifetimeInSeconds: this.getTimeFramesInSecounds(timeFrame)
1972      };
1973      this.storage.set(name, value, options);
1974      return;
1975    }
1976    this.storage.set(name, value);
1977  }
1978  getImpressionsCount() {
1979    const impressionCount = this.storage.get(this.uniqueId) ?? 0;
1980    return parseInt(impressionCount);
1981  }
1982  incrementImpressionsCount() {
1983    if (!this.settings.period) {
1984      this.storage.set('times', (this.storage.get('times') ?? 0) + 1);
1985    } else if ('session' !== this.settings.period) {
1986      const impressionCount = this.getImpressionsCount();
1987      this.setExpiration(this.uniqueId, impressionCount + 1, this.settings.period);
1988    } else {
1989      sessionStorage.setItem(this.uniqueId, parseInt(sessionStorage.getItem(this.uniqueId) ?? 0) + 1);
1990    }
1991  }
1992  shouldCountOnOpen() {
1993    if (this.settings.countOnOpen) {
1994      this.incrementImpressionsCount();
1995    }
1996  }
1997  shouldDisplayPerTimeFrame() {
1998    const impressionCount = this.getImpressionsCount();
1999    if (impressionCount < this.settings.showsLimit) {
2000      this.shouldCountOnOpen();
2001      return true;
2002    }
2003    return false;
2004  }
2005  shouldDisplayPerSession() {
2006    const impressionCount = sessionStorage.getItem(this.uniqueId) ?? 0;
2007    if (parseInt(impressionCount) < this.settings.showsLimit) {
2008      this.shouldCountOnOpen();
2009      return true;
2010    }
2011    return false;
2012  }
2013  shouldDisplayBackwordCompatible() {
2014    let impressionCount = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;
2015    let showsLimit = arguments.length > 1 ? arguments[1] : undefined;
2016    const shouldDisplay = parseInt(impressionCount) < parseInt(showsLimit);
2017    this.shouldCountOnOpen();
2018    return shouldDisplay;
2019  }
2020}
2021exports["default"] = TimesUtils;
2022
2023/***/ }),
2024
2025/***/ "../modules/popup/assets/js/frontend/timing/times.js":
2026/*!***********************************************************!*\
2027  !*** ../modules/popup/assets/js/frontend/timing/times.js ***!
2028  \***********************************************************/
2029/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
2030
2031
2032
2033var _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ "../node_modules/@babel/runtime/helpers/interopRequireDefault.js");
2034Object.defineProperty(exports, "__esModule", ({
2035  value: true
2036}));
2037exports["default"] = void 0;
2038var _base = _interopRequireDefault(__webpack_require__(/*! ./base */ "../modules/popup/assets/js/frontend/timing/base.js"));
2039var _timesUtils = _interopRequireDefault(__webpack_require__(/*! ./times-utils.js */ "../modules/popup/assets/js/frontend/timing/times-utils.js"));
2040class _default extends _base.default {
2041  constructor() {
2042    super(...arguments);
2043    this.uniqueId = `popup-${this.document.getSettings('id')}-impressions-count`;
2044    const {
2045      times_count: countOnOpen,
2046      times_period: period,
2047      times_times: showsLimit
2048    } = this.getSettings();
2049    this.settings = {
2050      countOnOpen,
2051      period,
2052      showsLimit: parseInt(showsLimit)
2053    };
2054    if ('' === this.settings.period) {
2055      this.settings.period = false;
2056    }
2057    if (['', 'close'].includes(this.settings.countOnOpen)) {
2058      this.settings.countOnOpen = false;
2059      this.onPopupHide();
2060    } else {
2061      this.settings.countOnOpen = true;
2062    }
2063    this.utils = new _timesUtils.default({
2064      uniqueId: this.uniqueId,
2065      settings: this.settings,
2066      storage: elementorFrontend.storage
2067    });
2068  }
2069  getName() {
2070    return 'times';
2071  }
2072  check() {
2073    if (!this.settings.period) {
2074      const impressionCount = this.document.getStorage('times') || 0;
2075      const showsLimit = this.getTimingSetting('times');
2076      return this.utils.shouldDisplayBackwordCompatible(impressionCount, showsLimit);
2077    }
2078    if ('session' !== this.settings.period) {
2079      if (!this.utils.shouldDisplayPerTimeFrame()) {
2080        return false;
2081      }
2082    } else if (!this.utils.shouldDisplayPerSession()) {
2083      return false;
2084    }
2085    return true;
2086  }
2087  onPopupHide() {
2088    window.addEventListener('elementor/popup/hide', () => {
2089      this.utils.incrementImpressionsCount();
2090    });
2091  }
2092}
2093exports["default"] = _default;
2094
2095/***/ }),
2096
2097/***/ "../modules/popup/assets/js/frontend/timing/url.js":
2098/*!*********************************************************!*\
2099  !*** ../modules/popup/assets/js/frontend/timing/url.js ***!
2100  \*********************************************************/
2101/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
2102
2103
2104
2105var _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ "../node_modules/@babel/runtime/helpers/interopRequireDefault.js");
2106Object.defineProperty(exports, "__esModule", ({
2107  value: true
2108}));
2109exports["default"] = void 0;
2110var _base = _interopRequireDefault(__webpack_require__(/*! ./base */ "../modules/popup/assets/js/frontend/timing/base.js"));
2111class _default extends _base.default {
2112  getName() {
2113    return 'url';
2114  }
2115  check() {
2116    const url = this.getTimingSetting('url'),
2117      action = this.getTimingSetting('action'),
2118      referrer = document.referrer;
2119    if ('regex' !== action) {
2120      return 'hide' === action ^ -1 !== referrer.indexOf(url);
2121    }
2122    let regexp;
2123    try {
2124      regexp = new RegExp(url);
2125    } catch (e) {
2126      return false;
2127    }
2128    return regexp.test(referrer);
2129  }
2130}
2131exports["default"] = _default;
2132
2133/***/ }),
2134
2135/***/ "../modules/popup/assets/js/frontend/triggers.js":
2136/*!*******************************************************!*\
2137  !*** ../modules/popup/assets/js/frontend/triggers.js ***!
2138  \*******************************************************/
2139/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
2140
2141
2142
2143var _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ "../node_modules/@babel/runtime/helpers/interopRequireDefault.js");
2144Object.defineProperty(exports, "__esModule", ({
2145  value: true
2146}));
2147exports["default"] = void 0;
2148var _pageLoad = _interopRequireDefault(__webpack_require__(/*! ./triggers/page-load */ "../modules/popup/assets/js/frontend/triggers/page-load.js"));
2149var _scrolling = _interopRequireDefault(__webpack_require__(/*! ./triggers/scrolling */ "../modules/popup/assets/js/frontend/triggers/scrolling.js"));
2150var _scrollingTo = _interopRequireDefault(__webpack_require__(/*! ./triggers/scrolling-to */ "../modules/popup/assets/js/frontend/triggers/scrolling-to.js"));
2151var _click = _interopRequireDefault(__webpack_require__(/*! ./triggers/click */ "../modules/popup/assets/js/frontend/triggers/click.js"));
2152var _inactivity = _interopRequireDefault(__webpack_require__(/*! ./triggers/inactivity */ "../modules/popup/assets/js/frontend/triggers/inactivity.js"));
2153var _exitIntent = _interopRequireDefault(__webpack_require__(/*! ./triggers/exit-intent */ "../modules/popup/assets/js/frontend/triggers/exit-intent.js"));
2154var _adblockDetection = _interopRequireDefault(__webpack_require__(/*! ./triggers/adblock-detection */ "../modules/popup/assets/js/frontend/triggers/adblock-detection.js"));
2155class _default extends elementorModules.Module {
2156  constructor(settings, document) {
2157    super(settings);
2158    this.document = document;
2159    this.triggers = [];
2160    this.triggerClasses = {
2161      page_load: _pageLoad.default,
2162      scrolling: _scrolling.default,
2163      scrolling_to: _scrollingTo.default,
2164      click: _click.default,
2165      inactivity: _inactivity.default,
2166      exit_intent: _exitIntent.default,
2167      adblock_detection: _adblockDetection.default
2168    };
2169    this.runTriggers();
2170  }
2171  runTriggers() {
2172    const settings = this.getSettings();
2173    jQuery.each(this.triggerClasses, (key, TriggerClass) => {
2174      if (!settings[key]) {
2175        return;
2176      }
2177      const trigger = new TriggerClass(settings, () => this.onTriggerFired());
2178      trigger.run();
2179      this.triggers.push(trigger);
2180    });
2181  }
2182  destroyTriggers() {
2183    this.triggers.forEach(trigger => trigger.destroy());
2184    this.triggers = [];
2185  }
2186  onTriggerFired() {
2187    this.document.showModal(true);
2188    this.destroyTriggers();
2189  }
2190}
2191exports["default"] = _default;
2192
2193/***/ }),
2194
2195/***/ "../modules/popup/assets/js/frontend/triggers/adblock-detection.js":
2196/*!*************************************************************************!*\
2197  !*** ../modules/popup/assets/js/frontend/triggers/adblock-detection.js ***!
2198  \*************************************************************************/
2199/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
2200
2201
2202
2203var _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ "../node_modules/@babel/runtime/helpers/interopRequireDefault.js");
2204Object.defineProperty(exports, "__esModule", ({
2205  value: true
2206}));
2207exports["default"] = void 0;
2208var _base = _interopRequireDefault(__webpack_require__(/*! ./base */ "../modules/popup/assets/js/frontend/triggers/base.js"));
2209class _default extends _base.default {
2210  getName() {
2211    return 'adblock_detection';
2212  }
2213  generateRandomString() {
2214    const chars = 'abcdefghijklmnopqrstuvwxyz0123456789';
2215    let result = '';
2216    for (let i = 0; i < 6; i++) {
2217      const randomIndex = Math.floor(Math.random() * chars.length);
2218      result += chars[randomIndex];
2219    }
2220    return result;
2221  }
2222  hasAdblock() {
2223    const elementId = `elementor-adblock-detection-${this.generateRandomString()}`;
2224    this.createEmptyAdBlockElement(elementId);
2225    const tempAdBlockEle = document.querySelector(`#${elementId}`);
2226    if (!tempAdBlockEle) {
2227      return true;
2228    }
2229    const hasAdBlock = 'none' === window.getComputedStyle(tempAdBlockEle)?.display;
2230    this.removeEmptyAdBlockElement(tempAdBlockEle);
2231    return hasAdBlock;
2232  }
2233  createEmptyAdBlockElement(elementId) {
2234    const tempAdDiv = document.createElement('div');
2235    tempAdDiv.id = elementId;
2236    tempAdDiv.className = 'ad-box';
2237    tempAdDiv.style.position = 'fixed';
2238    tempAdDiv.style.top = '0';
2239    tempAdDiv.style.left = '0';
2240    tempAdDiv.setAttribute('aria-hidden', 'true');
2241    tempAdDiv.innerHTML = '&nbsp;';
2242    document.body.appendChild(tempAdDiv);
2243  }
2244  removeEmptyAdBlockElement(tempAdBlockEle) {
2245    tempAdBlockEle.remove();
2246  }
2247  run() {
2248    this.timeout = setTimeout(() => {
2249      const hasAdBlock = this.hasAdblock();
2250      if (hasAdBlock) {
2251        this.callback();
2252      }
2253    }, this.getTriggerSetting('delay') * 1000);
2254  }
2255  destroy() {
2256    clearTimeout(this.timeout);
2257  }
2258}
2259exports["default"] = _default;
2260
2261/***/ }),
2262
2263/***/ "../modules/popup/assets/js/frontend/triggers/base.js":
2264/*!************************************************************!*\
2265  !*** ../modules/popup/assets/js/frontend/triggers/base.js ***!
2266  \************************************************************/
2267/***/ ((__unused_webpack_module, exports) => {
2268
2269
2270
2271Object.defineProperty(exports, "__esModule", ({
2272  value: true
2273}));
2274exports["default"] = void 0;
2275class _default extends elementorModules.Module {
2276  constructor(settings, callback) {
2277    super(settings);
2278    this.callback = callback;
2279  }
2280  getTriggerSetting(settingKey) {
2281    return this.getSettings(this.getName() + '_' + settingKey);
2282  }
2283}
2284exports["default"] = _default;
2285
2286/***/ }),
2287
2288/***/ "../modules/popup/assets/js/frontend/triggers/click.js":
2289/*!*************************************************************!*\
2290  !*** ../modules/popup/assets/js/frontend/triggers/click.js ***!
2291  \*************************************************************/
2292/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
2293
2294
2295
2296var _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ "../node_modules/@babel/runtime/helpers/interopRequireDefault.js");
2297Object.defineProperty(exports, "__esModule", ({
2298  value: true
2299}));
2300exports["default"] = void 0;
2301var _base = _interopRequireDefault(__webpack_require__(/*! ./base */ "../modules/popup/assets/js/frontend/triggers/base.js"));
2302class _default extends _base.default {
2303  constructor() {
2304    super(...arguments);
2305    this.checkClick = this.checkClick.bind(this);
2306    this.clicksCount = 0;
2307  }
2308  getName() {
2309    return 'click';
2310  }
2311  checkClick() {
2312    this.clicksCount++;
2313    if (this.clicksCount === this.getTriggerSetting('times')) {
2314      this.callback();
2315    }
2316  }
2317  run() {
2318    elementorFrontend.elements.$body.on('click', this.checkClick);
2319  }
2320  destroy() {
2321    elementorFrontend.elements.$body.off('click', this.checkClick);
2322  }
2323}
2324exports["default"] = _default;
2325
2326/***/ }),
2327
2328/***/ "../modules/popup/assets/js/frontend/triggers/exit-intent.js":
2329/*!*******************************************************************!*\
2330  !*** ../modules/popup/assets/js/frontend/triggers/exit-intent.js ***!
2331  \*******************************************************************/
2332/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
2333
2334
2335
2336var _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ "../node_modules/@babel/runtime/helpers/interopRequireDefault.js");
2337Object.defineProperty(exports, "__esModule", ({
2338  value: true
2339}));
2340exports["default"] = void 0;
2341var _base = _interopRequireDefault(__webpack_require__(/*! ./base */ "../modules/popup/assets/js/frontend/triggers/base.js"));
2342class _default extends _base.default {
2343  constructor() {
2344    super(...arguments);
2345    this.detectExitIntent = this.detectExitIntent.bind(this);
2346  }
2347  getName() {
2348    return 'exit_intent';
2349  }
2350  detectExitIntent(event) {
2351    if (event.clientY <= 0) {
2352      this.callback();
2353    }
2354  }
2355  run() {
2356    elementorFrontend.elements.$window.on('mouseleave', this.detectExitIntent);
2357  }
2358  destroy() {
2359    elementorFrontend.elements.$window.off('mouseleave', this.detectExitIntent);
2360  }
2361}
2362exports["default"] = _default;
2363
2364/***/ }),
2365
2366/***/ "../modules/popup/assets/js/frontend/triggers/inactivity.js":
2367/*!******************************************************************!*\
2368  !*** ../modules/popup/assets/js/frontend/triggers/inactivity.js ***!
2369  \******************************************************************/
2370/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
2371
2372
2373
2374var _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ "../node_modules/@babel/runtime/helpers/interopRequireDefault.js");
2375Object.defineProperty(exports, "__esModule", ({
2376  value: true
2377}));
2378exports["default"] = void 0;
2379var _base = _interopRequireDefault(__webpack_require__(/*! ./base */ "../modules/popup/assets/js/frontend/triggers/base.js"));
2380class _default extends _base.default {
2381  constructor() {
2382    super(...arguments);
2383    this.restartTimer = this.restartTimer.bind(this);
2384  }
2385  getName() {
2386    return 'inactivity';
2387  }
2388  run() {
2389    this.startTimer();
2390    elementorFrontend.elements.$document.on('keypress mousemove', this.restartTimer);
2391  }
2392  startTimer() {
2393    this.timeOut = setTimeout(this.callback, this.getTriggerSetting('time') * 1000);
2394  }
2395  clearTimer() {
2396    clearTimeout(this.timeOut);
2397  }
2398  restartTimer() {
2399    this.clearTimer();
2400    this.startTimer();
2401  }
2402  destroy() {
2403    this.clearTimer();
2404    elementorFrontend.elements.$document.off('keypress mousemove', this.restartTimer);
2405  }
2406}
2407exports["default"] = _default;
2408
2409/***/ }),
2410
2411/***/ "../modules/popup/assets/js/frontend/triggers/page-load.js":
2412/*!*****************************************************************!*\
2413  !*** ../modules/popup/assets/js/frontend/triggers/page-load.js ***!
2414  \*****************************************************************/
2415/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
2416
2417
2418
2419var _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ "../node_modules/@babel/runtime/helpers/interopRequireDefault.js");
2420Object.defineProperty(exports, "__esModule", ({
2421  value: true
2422}));
2423exports["default"] = void 0;
2424var _base = _interopRequireDefault(__webpack_require__(/*! ./base */ "../modules/popup/assets/js/frontend/triggers/base.js"));
2425class _default extends _base.default {
2426  getName() {
2427    return 'page_load';
2428  }
2429  run() {
2430    this.timeout = setTimeout(this.callback, this.getTriggerSetting('delay') * 1000);
2431  }
2432  destroy() {
2433    clearTimeout(this.timeout);
2434  }
2435}
2436exports["default"] = _default;
2437
2438/***/ }),
2439
2440/***/ "../modules/popup/assets/js/frontend/triggers/scrolling-to.js":
2441/*!********************************************************************!*\
2442  !*** ../modules/popup/assets/js/frontend/triggers/scrolling-to.js ***!
2443  \********************************************************************/
2444/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
2445
2446
2447
2448var _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ "../node_modules/@babel/runtime/helpers/interopRequireDefault.js");
2449Object.defineProperty(exports, "__esModule", ({
2450  value: true
2451}));
2452exports["default"] = void 0;
2453var _base = _interopRequireDefault(__webpack_require__(/*! ./base */ "../modules/popup/assets/js/frontend/triggers/base.js"));
2454class _default extends _base.default {
2455  getName() {
2456    return 'scrolling_to';
2457  }
2458  run() {
2459    let $targetElement;
2460    try {
2461      $targetElement = jQuery(this.getTriggerSetting('selector'));
2462    } catch (e) {
2463      return;
2464    }
2465    if ($targetElement.length) {
2466      this.setUpIntersectionObserver();
2467      this.observer.observe($targetElement[0]);
2468    }
2469  }
2470  setUpIntersectionObserver() {
2471    this.observer = new IntersectionObserver(entries => {
2472      entries.forEach(entry => {
2473        if (entry.isIntersecting) {
2474          this.callback();
2475        }
2476      });
2477    });
2478  }
2479  destroy() {
2480    if (this.observer) {
2481      this.observer.disconnect();
2482    }
2483  }
2484}
2485exports["default"] = _default;
2486
2487/***/ }),
2488
2489/***/ "../modules/popup/assets/js/frontend/triggers/scrolling.js":
2490/*!*****************************************************************!*\
2491  !*** ../modules/popup/assets/js/frontend/triggers/scrolling.js ***!
2492  \*****************************************************************/
2493/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
2494
2495
2496
2497var _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ "../node_modules/@babel/runtime/helpers/interopRequireDefault.js");
2498Object.defineProperty(exports, "__esModule", ({
2499  value: true
2500}));
2501exports["default"] = void 0;
2502var _base = _interopRequireDefault(__webpack_require__(/*! ./base */ "../modules/popup/assets/js/frontend/triggers/base.js"));
2503class _default extends _base.default {
2504  constructor() {
2505    super(...arguments);
2506    this.checkScroll = this.checkScroll.bind(this);
2507    this.lastScrollOffset = 0;
2508  }
2509  getName() {
2510    return 'scrolling';
2511  }
2512  checkScroll() {
2513    const scrollDirection = scrollY > this.lastScrollOffset ? 'down' : 'up',
2514      requestedDirection = this.getTriggerSetting('direction');
2515    this.lastScrollOffset = scrollY;
2516    if (scrollDirection !== requestedDirection) {
2517      return;
2518    }
2519    if ('up' === scrollDirection) {
2520      this.callback();
2521      return;
2522    }
2523    const fullScroll = elementorFrontend.elements.$document.height() - innerHeight,
2524      scrollPercent = scrollY / fullScroll * 100;
2525    if (scrollPercent >= this.getTriggerSetting('offset')) {
2526      this.callback();
2527    }
2528  }
2529  run() {
2530    elementorFrontend.elements.$window.on('scroll', this.checkScroll);
2531  }
2532  destroy() {
2533    elementorFrontend.elements.$window.off('scroll', this.checkScroll);
2534  }
2535}
2536exports["default"] = _default;
2537
2538/***/ }),
2539
2540/***/ "../modules/posts/assets/js/frontend/frontend.js":
2541/*!*******************************************************!*\
2542  !*** ../modules/posts/assets/js/frontend/frontend.js ***!
2543  \*******************************************************/
2544/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
2545
2546
2547
2548Object.defineProperty(exports, "__esModule", ({
2549  value: true
2550}));
2551exports["default"] = void 0;
2552class _default extends elementorModules.Module {
2553  constructor() {
2554    super();
2555    ['classic', 'full_content', 'cards'].forEach(skinName => {
2556      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);
2557    });
2558    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');
2559    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');
2560    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');
2561    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")));
2562  }
2563}
2564exports["default"] = _default;
2565
2566/***/ }),
2567
2568/***/ "../modules/search/assets/js/frontend/frontend.js":
2569/*!********************************************************!*\
2570  !*** ../modules/search/assets/js/frontend/frontend.js ***!
2571  \********************************************************/
2572/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
2573
2574
2575
2576Object.defineProperty(exports, "__esModule", ({
2577  value: true
2578}));
2579exports["default"] = void 0;
2580class _default extends elementorModules.Module {
2581  constructor() {
2582    super();
2583    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"))]);
2584  }
2585}
2586exports["default"] = _default;
2587
2588/***/ }),
2589
2590/***/ "../modules/share-buttons/assets/js/frontend/frontend.js":
2591/*!***************************************************************!*\
2592  !*** ../modules/share-buttons/assets/js/frontend/frontend.js ***!
2593  \***************************************************************/
2594/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
2595
2596
2597
2598Object.defineProperty(exports, "__esModule", ({
2599  value: true
2600}));
2601exports["default"] = void 0;
2602class _default extends elementorModules.Module {
2603  constructor() {
2604    super();
2605    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")));
2606  }
2607}
2608exports["default"] = _default;
2609
2610/***/ }),
2611
2612/***/ "../modules/slides/assets/js/frontend/frontend.js":
2613/*!********************************************************!*\
2614  !*** ../modules/slides/assets/js/frontend/frontend.js ***!
2615  \********************************************************/
2616/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
2617
2618
2619
2620Object.defineProperty(exports, "__esModule", ({
2621  value: true
2622}));
2623exports["default"] = void 0;
2624class _default extends elementorModules.Module {
2625  constructor() {
2626    super();
2627    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")));
2628  }
2629}
2630exports["default"] = _default;
2631
2632/***/ }),
2633
2634/***/ "../modules/social/assets/js/frontend/frontend.js":
2635/*!********************************************************!*\
2636  !*** ../modules/social/assets/js/frontend/frontend.js ***!
2637  \********************************************************/
2638/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
2639
2640
2641
2642Object.defineProperty(exports, "__esModule", ({
2643  value: true
2644}));
2645exports["default"] = void 0;
2646class _default extends elementorModules.Module {
2647  constructor() {
2648    super();
2649    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")));
2650    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")));
2651    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")));
2652    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")));
2653  }
2654}
2655exports["default"] = _default;
2656
2657/***/ }),
2658
2659/***/ "../modules/table-of-contents/assets/js/frontend/frontend.js":
2660/*!*******************************************************************!*\
2661  !*** ../modules/table-of-contents/assets/js/frontend/frontend.js ***!
2662  \*******************************************************************/
2663/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
2664
2665
2666
2667Object.defineProperty(exports, "__esModule", ({
2668  value: true
2669}));
2670exports["default"] = void 0;
2671class _default extends elementorModules.Module {
2672  constructor() {
2673    super();
2674    elementorFrontend.elementsHandler.attachHandler('table-of-contents', () => Promise.all(/*! import() | table-of-contents */[__webpack_require__.e("vendors-node_modules_dompurify_dist_purify_cjs_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")));
2675  }
2676}
2677exports["default"] = _default;
2678
2679/***/ }),
2680
2681/***/ "../modules/theme-builder/assets/js/frontend/frontend.js":
2682/*!***************************************************************!*\
2683  !*** ../modules/theme-builder/assets/js/frontend/frontend.js ***!
2684  \***************************************************************/
2685/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
2686
2687
2688
2689Object.defineProperty(exports, "__esModule", ({
2690  value: true
2691}));
2692exports["default"] = void 0;
2693class _default extends elementorModules.Module {
2694  constructor() {
2695    super();
2696    ['archive_classic', 'archive_full_content', 'archive_cards'].forEach(skinName => {
2697      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);
2698    });
2699    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');
2700    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');
2701    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');
2702    jQuery(function () {
2703      // Go to elementor element - if the URL is something like http://domain.com/any-page?preview=true&theme_template_id=6479
2704      var match = location.search.match(/theme_template_id=(\d*)/),
2705        $element = match ? jQuery('.elementor-' + match[1]) : [];
2706      if ($element.length) {
2707        jQuery('html, body').animate({
2708          scrollTop: $element.offset().top - window.innerHeight / 2
2709        });
2710      }
2711    });
2712  }
2713}
2714exports["default"] = _default;
2715
2716/***/ }),
2717
2718/***/ "../modules/theme-elements/assets/js/frontend/frontend.js":
2719/*!****************************************************************!*\
2720  !*** ../modules/theme-elements/assets/js/frontend/frontend.js ***!
2721  \****************************************************************/
2722/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
2723
2724
2725
2726Object.defineProperty(exports, "__esModule", ({
2727  value: true
2728}));
2729exports["default"] = void 0;
2730class _default extends elementorModules.Module {
2731  constructor() {
2732    super();
2733    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")));
2734  }
2735}
2736exports["default"] = _default;
2737
2738/***/ }),
2739
2740/***/ "../modules/woocommerce/assets/js/frontend/frontend.js":
2741/*!*************************************************************!*\
2742  !*** ../modules/woocommerce/assets/js/frontend/frontend.js ***!
2743  \*************************************************************/
2744/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
2745
2746
2747
2748Object.defineProperty(exports, "__esModule", ({
2749  value: true
2750}));
2751exports["default"] = void 0;
2752class _default extends elementorModules.Module {
2753  constructor() {
2754    super();
2755    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")));
2756    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")));
2757    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")));
2758    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")));
2759    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")));
2760    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")));
2761    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")));
2762
2763    /**
2764     * `wc-cart` script is enqueued in the Editor by the widget `get_script_depends()`. As a result WooCommerce
2765     * triggers its cart related event callbacks. One of the callbacks requires `.woocommerce-cart-form` to be in
2766     * the page and reloads the Preview if it's not there. To get around this we add our own empty
2767     * `.woocommerce-cart-form` to the page to stop the page reloading.
2768     */
2769    if (elementorFrontend.isEditMode()) {
2770      elementorFrontend.on('components:init', () => {
2771        if (!elementorFrontend.elements.$body.find('.elementor-widget-woocommerce-cart').length) {
2772          elementorFrontend.elements.$body.append('<div class="woocommerce-cart-form">');
2773        }
2774      });
2775    }
2776  }
2777}
2778exports["default"] = _default;
2779
2780/***/ })
2780,
2781
2782/***/ "@wordpress/i18n":
2783/*!**************************!*\
2784  !*** external "wp.i18n" ***!
2785  \**************************/
2786/***/ ((module) => {
2787
2788module.exports = wp.i18n;
2789
2790/***/ })
2791
2792},
2793/******/ __webpack_require__ => { // webpackRuntimeModules
2794/******/ var __webpack_exec__ = (moduleId) => (__webpack_require__(__webpack_require__.s = moduleId))
2795/******/ __webpack_require__.O(0, ["frontend"], () => (__webpack_exec__("../assets/dev/js/frontend/elements-handlers.js")));
2796/******/ var __webpack_exports__ = __webpack_require__.O();
2797/******/ }
2798]);
2799//# 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.