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