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 = ' '; 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.