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