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