1"use strict"; 2(self["webpackChunkelementorFrontend"] = self["webpackChunkelementorFrontend"] || []).push([["frontend"],{ 3
4/***/ "../assets/dev/js/frontend/documents-manager.js": 5/*!******************************************************!*\ 6 !*** ../assets/dev/js/frontend/documents-manager.js ***! 7 \******************************************************/ 8/***/ ((__unused_webpack_module, exports, __webpack_require__) => { 9 10 11 12var _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ "../node_modules/@babel/runtime/helpers/interopRequireDefault.js"); 13Object.defineProperty(exports, "__esModule", ({ 14 value: true 15})); 16exports["default"] = void 0; 17var _document = _interopRequireDefault(__webpack_require__(/*! ./document */ "../assets/dev/js/frontend/document.js")); 18class _default extends elementorModules.ViewModule { 19 constructor(...args) { 20 super(...args); 21 this.documents = {}; 22 this.initDocumentClasses(); 23 this.attachDocumentsClasses(); 24 } 25 getDefaultSettings() { 26 return { 27 selectors: { 28 document: '.elementor' 29 } 30 }; 31 } 32 getDefaultElements() { 33 const selectors = this.getSettings('selectors'); 34 return { 35 $documents: jQuery(selectors.document) 36 }; 37 } 38 initDocumentClasses() { 39 this.documentClasses = { 40 base: _document.default 41 }; 42 elementorFrontend.hooks.doAction('elementor/frontend/documents-manager/init-classes', this); 43 } 44 addDocumentClass(documentType, documentClass) { 45 this.documentClasses[documentType] = documentClass; 46 } 47 attachDocumentsClasses() { 48 this.elements.$documents.each((index, document) => this.attachDocumentClass(jQuery(document))); 49 } 50 attachDocumentClass($document) { 51 const documentData = $document.data(), 52 documentID = documentData.elementorId, 53 documentType = documentData.elementorType, 54 DocumentClass = this.documentClasses[documentType] || this.documentClasses.base; 55 this.documents[documentID] = new DocumentClass({ 56 $element: $document, 57 id: documentID 58 }); 59 } 60} 61exports["default"] = _default; 62 63/***/ }), 64
65/***/ "../assets/dev/js/frontend/elements-handlers-manager.js": 66/*!**************************************************************!*\ 67 !*** ../assets/dev/js/frontend/elements-handlers-manager.js ***! 68 \**************************************************************/ 69/***/ ((module, __unused_webpack_exports, __webpack_require__) => { 70 71 72 73var _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ "../node_modules/@babel/runtime/helpers/interopRequireDefault.js"); 74__webpack_require__(/*! core-js/modules/esnext.iterator.constructor.js */ "../node_modules/core-js/modules/esnext.iterator.constructor.js"); 75__webpack_require__(/*! core-js/modules/esnext.iterator.for-each.js */ "../node_modules/core-js/modules/esnext.iterator.for-each.js"); 76var _global = _interopRequireDefault(__webpack_require__(/*! ./handlers/global */ "../assets/dev/js/frontend/handlers/global.js")); 77var _container = _interopRequireDefault(__webpack_require__(/*! ./handlers/container/container */ "../assets/dev/js/frontend/handlers/container/container.js")); 78var _section = _interopRequireDefault(__webpack_require__(/*! ./handlers/section/section */ "../assets/dev/js/frontend/handlers/section/section.js")); 79var _column = _interopRequireDefault(__webpack_require__(/*! ./handlers/column */ "../assets/dev/js/frontend/handlers/column.js")); 80/* global elementorFrontendConfig */ 81 82module.exports = function ($) { 83 const handlersInstances = {}; 84 this.elementsHandlers = { 85 'accordion.default': () => __webpack_require__.e(/*! import() | accordion */ "accordion").then(__webpack_require__.bind(__webpack_require__, /*! ./handlers/accordion */ "../assets/dev/js/frontend/handlers/accordion.js")), 86 'alert.default': () => __webpack_require__.e(/*! import() | alert */ "alert").then(__webpack_require__.bind(__webpack_require__, /*! ./handlers/alert */ "../assets/dev/js/frontend/handlers/alert.js")), 87 'counter.default': () => __webpack_require__.e(/*! import() | counter */ "counter").then(__webpack_require__.bind(__webpack_require__, /*! ./handlers/counter */ "../assets/dev/js/frontend/handlers/counter.js")), 88 'progress.default': () => __webpack_require__.e(/*! import() | progress */ "progress").then(__webpack_require__.bind(__webpack_require__, /*! ./handlers/progress */ "../assets/dev/js/frontend/handlers/progress.js")), 89 'tabs.default': () => __webpack_require__.e(/*! import() | tabs */ "tabs").then(__webpack_require__.bind(__webpack_require__, /*! ./handlers/tabs */ "../assets/dev/js/frontend/handlers/tabs.js")), 90 'toggle.default': () => __webpack_require__.e(/*! import() | toggle */ "toggle").then(__webpack_require__.bind(__webpack_require__, /*! ./handlers/toggle */ "../assets/dev/js/frontend/handlers/toggle.js")), 91 'video.default': () => __webpack_require__.e(/*! import() | video */ "video").then(__webpack_require__.bind(__webpack_require__, /*! ./handlers/video */ "../assets/dev/js/frontend/handlers/video.js")), 92 'image-carousel.default': () => __webpack_require__.e(/*! import() | image-carousel */ "image-carousel").then(__webpack_require__.bind(__webpack_require__, /*! ./handlers/image-carousel */ "../assets/dev/js/frontend/handlers/image-carousel.js")), 93 'text-editor.default': () => __webpack_require__.e(/*! import() | text-editor */ "text-editor").then(__webpack_require__.bind(__webpack_require__, /*! ./handlers/text-editor */ "../assets/dev/js/frontend/handlers/text-editor.js")), 94 'wp-widget-media_audio.default': () => __webpack_require__.e(/*! import() | wp-audio */ "wp-audio").then(__webpack_require__.bind(__webpack_require__, /*! ./handlers/wp-audio */ "../assets/dev/js/frontend/handlers/wp-audio.js")), 95 container: _container.default, 96 section: _section.default, 97 column: _column.default 98 }; 99 if (elementorFrontendConfig.experimentalFeatures['nested-elements']) { 100 this.elementsHandlers['nested-tabs.default'] = () => __webpack_require__.e(/*! import() | nested-tabs */ "nested-tabs").then(__webpack_require__.bind(__webpack_require__, /*! elementor/modules/nested-tabs/assets/js/frontend/handlers/nested-tabs */ "../modules/nested-tabs/assets/js/frontend/handlers/nested-tabs.js")); 101 } 102 if (elementorFrontendConfig.experimentalFeatures['nested-elements']) { 103 this.elementsHandlers['nested-accordion.default'] = () => __webpack_require__.e(/*! import() | nested-accordion */ "nested-accordion").then(__webpack_require__.bind(__webpack_require__, /*! elementor/modules/nested-accordion/assets/js/frontend/handlers/nested-accordion */ "../modules/nested-accordion/assets/js/frontend/handlers/nested-accordion.js")); 104 } 105 if (elementorFrontendConfig.experimentalFeatures.container) { 106 this.elementsHandlers['contact-buttons.default'] = () => __webpack_require__.e(/*! import() | contact-buttons */ "contact-buttons").then(__webpack_require__.bind(__webpack_require__, /*! elementor/modules/floating-buttons/assets/js/floating-buttons/frontend/handlers/contact-buttons */ "../modules/floating-buttons/assets/js/floating-buttons/frontend/handlers/contact-buttons.js")); 107 this.elementsHandlers['floating-bars-var-1.default'] = () => __webpack_require__.e(/*! import() | floating-bars */ "floating-bars").then(__webpack_require__.bind(__webpack_require__, /*! elementor/modules/floating-buttons/assets/js/floating-bars/frontend/handlers/floating-bars */ "../modules/floating-buttons/assets/js/floating-bars/frontend/handlers/floating-bars.js")); 108 } 109 const addGlobalHandlers = () => elementorFrontend.hooks.addAction('frontend/element_ready/global', _global.default); 110 const addElementsHandlers = () => { 111 $.each(this.elementsHandlers, (elementName, Handlers) => { 112 const elementData = elementName.split('.'); 113 elementName = elementData[0]; 114 const skin = elementData[1] || null; 115 this.attachHandler(elementName, Handlers, skin); 116 }); 117 }; 118 const isClassHandler = Handler => Handler.prototype?.getUniqueHandlerID; 119 const addHandlerWithHook = (elementBaseName, Handler, skin = 'default') => { 120 skin = skin ? '.' + skin : ''; 121 const elementName = elementBaseName + skin; 122 elementorFrontend.hooks.addAction(`frontend/element_ready/${elementName}`, $element => { 123 if (isClassHandler(Handler)) { 124 this.addHandler(Handler, { 125 $element, 126 elementName 127 }, true); 128 } else { 129 const handlerValue = Handler(); 130 if (!handlerValue) { 131 return; 132 } 133 if (handlerValue instanceof Promise) { 134 handlerValue.then(({ 135 default: dynamicHandler 136 }) => { 137 this.addHandler(dynamicHandler, { 138 $element, 139 elementName 140 }, true); 141 }); 142 } else { 143 this.addHandler(handlerValue, { 144 $element, 145 elementName 146 }, true); 147 } 148 } 149 }); 150 }; 151 this.addHandler = function (HandlerClass, options) { 152 const elementID = options.$element.data('model-cid'); 153 let handlerID; 154 155 // If element is in edit mode 156 if (elementID) { 157 handlerID = HandlerClass.prototype.getConstructorID(); 158 if (!handlersInstances[elementID]) { 159 handlersInstances[elementID] = {}; 160 } 161 const oldHandler = handlersInstances[elementID][handlerID]; 162 if (oldHandler) { 163 oldHandler.onDestroy(); 164 } 165 } 166 const newHandler = new HandlerClass(options); 167 elementorFrontend.hooks.doAction(`frontend/element_handler_ready/${options.elementName}`, options.$element, $); 168 if (elementID) { 169 handlersInstances[elementID][handlerID] = newHandler; 170 } 171 }; 172 this.attachHandler = (elementName, Handlers, skin) => { 173 if (!Array.isArray(Handlers)) { 174 Handlers = [Handlers]; 175 }
176 Handlers.forEach(Handler => addHandlerWithHook(elementName, Handler, skin)); 177 }; 178 this.getHandler = function (handlerName) { 179 const elementHandler = this.elementsHandlers[handlerName]; 180 if (isClassHandler(elementHandler)) { 181 return elementHandler; 182 } 183 return new Promise(res => { 184 elementHandler().then(({ 185 default: dynamicHandler 186 }) => { 187 res(dynamicHandler); 188 }); 189 }); 190 }; 191 192 /** 193 * @param {string} handlerName 194 * @deprecated since 3.1.0, use `elementorFrontend.elementsHandler.getHandler` instead. 195 */ 196 this.getHandlers = function (handlerName) { 197 elementorDevTools.deprecation.deprecated('getHandlers', '3.1.0', 'elementorFrontend.elementsHandler.getHandler'); 198 if (handlerName) { 199 return this.getHandler(handlerName); 200 } 201 return this.elementsHandlers; 202 }; 203 this.runReadyTrigger = function (scope) { 204 const isDelayChildHandlers = !!scope.closest('[data-delay-child-handlers="true"]') && 0 !== scope.closest('[data-delay-child-handlers="true"]').length; 205 if (elementorFrontend.config.is_static || isDelayChildHandlers) { 206 return; 207 } 208 209 // Initializing the `$scope` as frontend jQuery instance 210 const $scope = jQuery(scope), 211 elementType = $scope.attr('data-element_type'); 212 if (!elementType) { 213 return; 214 } 215 elementorFrontend.hooks.doAction('frontend/element_ready/global', $scope, $); 216 elementorFrontend.hooks.doAction(`frontend/element_ready/${elementType}`, $scope, $); 217 if ('widget' === elementType) { 218 const widgetType = $scope.attr('data-widget_type'); 219 elementorFrontend.hooks.doAction(`frontend/element_ready/${widgetType}`, $scope, $); 220 } 221 }; 222 this.init = () => { 223 addGlobalHandlers(); 224 addElementsHandlers(); 225 }; 226}; 227 228/***/ }), 229
230/***/ "../assets/dev/js/frontend/frontend.js": 231/*!*********************************************!*\ 232 !*** ../assets/dev/js/frontend/frontend.js ***! 233 \*********************************************/ 234/***/ ((__unused_webpack_module, exports, __webpack_require__) => { 235 236 237 238var _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ "../node_modules/@babel/runtime/helpers/interopRequireDefault.js"); 239Object.defineProperty(exports, "__esModule", ({ 240 value: true 241})); 242exports["default"] = void 0; 243__webpack_require__(/*! core-js/modules/esnext.iterator.constructor.js */ "../node_modules/core-js/modules/esnext.iterator.constructor.js"); 244__webpack_require__(/*! core-js/modules/esnext.iterator.find.js */ "../node_modules/core-js/modules/esnext.iterator.find.js"); 245__webpack_require__(/*! core-js/modules/esnext.iterator.for-each.js */ "../node_modules/core-js/modules/esnext.iterator.for-each.js"); 246__webpack_require__(/*! ../public-path */ "../assets/dev/js/public-path.js"); 247var _documentsManager = _interopRequireDefault(__webpack_require__(/*! ./documents-manager */ "../assets/dev/js/frontend/documents-manager.js")); 248var _storage = _interopRequireDefault(__webpack_require__(/*! elementor-common/utils/storage */ "../core/common/assets/js/utils/storage.js")); 249var _environment = _interopRequireDefault(__webpack_require__(/*! elementor-common/utils/environment */ "../core/common/assets/js/utils/environment.js")); 250var _youtubeLoader = _interopRequireDefault(__webpack_require__(/*! ./utils/video-api/youtube-loader */ "../assets/dev/js/frontend/utils/video-api/youtube-loader.js")); 251var _vimeoLoader = _interopRequireDefault(__webpack_require__(/*! ./utils/video-api/vimeo-loader */ "../assets/dev/js/frontend/utils/video-api/vimeo-loader.js")); 252var _baseLoader = _interopRequireDefault(__webpack_require__(/*! ./utils/video-api/base-loader */ "../assets/dev/js/frontend/utils/video-api/base-loader.js")); 253var _urlActions = _interopRequireDefault(__webpack_require__(/*! ./utils/url-actions */ "../assets/dev/js/frontend/utils/url-actions.js")); 254var _swiper = _interopRequireDefault(__webpack_require__(/*! ./utils/swiper */ "../assets/dev/js/frontend/utils/swiper.js")); 255var _lightboxManager = _interopRequireDefault(__webpack_require__(/*! ./utils/lightbox/lightbox-manager */ "../assets/dev/js/frontend/utils/lightbox/lightbox-manager.js")); 256var _assetsLoader = _interopRequireDefault(__webpack_require__(/*! ./utils/assets-loader */ "../assets/dev/js/frontend/utils/assets-loader.js")); 257var _breakpoints = _interopRequireDefault(__webpack_require__(/*! elementor-utils/breakpoints */ "../assets/dev/js/utils/breakpoints.js")); 258var _events = _interopRequireDefault(__webpack_require__(/*! elementor-utils/events */ "../assets/dev/js/utils/events.js")); 259var _frontend = _interopRequireDefault(__webpack_require__(/*! elementor/modules/shapes/assets/js/frontend/frontend */ "../modules/shapes/assets/js/frontend/frontend.js")); 260var _controls = _interopRequireDefault(__webpack_require__(/*! ./utils/controls */ "../assets/dev/js/frontend/utils/controls.js")); 261var _anchorScrollMargin = _interopRequireDefault(__webpack_require__(/*! ./utils/anchor-scroll-margin */ "../assets/dev/js/frontend/utils/anchor-scroll-margin.js")); 262var _utils = __webpack_require__(/*! elementor-frontend/utils/utils */ "../assets/dev/js/frontend/utils/utils.js"); 263/* global elementorFrontendConfig */ 264 265const EventManager = __webpack_require__(/*! elementor-utils/hooks */ "../assets/dev/js/utils/hooks.js"), 266 ElementsHandler = __webpack_require__(/*! elementor-frontend/elements-handlers-manager */ "../assets/dev/js/frontend/elements-handlers-manager.js"); 267class Frontend extends elementorModules.ViewModule { 268 constructor(...args) { 269 super(...args); 270 this.config = elementorFrontendConfig; 271 this.config.legacyMode = { 272 /** 273 * @deprecated since 3.1.0 274 */ 275 get elementWrappers() { 276 if (elementorFrontend.isEditMode()) { 277 window.top.elementorDevTools.deprecation.deprecated('elementorFrontend.config.legacyMode.elementWrappers', '3.1.0'); 278 } 279 return false;
280 } 281 }; 282 this.populateActiveBreakpointsConfig(); 283 } 284 285 /** 286 * @deprecated since 2.5.0, use `elementorModules.frontend.handlers.Base` instead. 287 */ 288 get Module() { 289 if (this.isEditMode()) { 290 parent.elementorDevTools.deprecation.deprecated('elementorFrontend.Module', '2.5.0', 'elementorModules.frontend.handlers.Base'); 291 } 292 return elementorModules.frontend.handlers.Base; 293 } 294 getDefaultSettings() { 295 return { 296 selectors: { 297 elementor: '.elementor', 298 adminBar: '#wpadminbar' 299 } 300 }; 301 } 302 getDefaultElements() { 303 const defaultElements = { 304 window, 305 $window: jQuery(window), 306 $document: jQuery(document), 307 $head: jQuery(document.head), 308 $body: jQuery(document.body), 309 $deviceMode: jQuery('<span>', { 310 id: 'elementor-device-mode', 311 class: 'elementor-screen-only' 312 }) 313 }; 314 defaultElements.$body.append(defaultElements.$deviceMode); 315 return defaultElements; 316 } 317 bindEvents() { 318 this.elements.$window.on('resize', () => this.setDeviceModeData()); 319 } 320 321 /** 322 * @param {string} elementName 323 * @deprecated since 2.4.0, use `this.elements` instead. 324 */ 325 getElements(elementName) { 326 return this.getItems(this.elements, elementName); 327 } 328 329 /** 330 * @param {string} settingName 331 * @deprecated since 2.4.0, this method was never in use. 332 */ 333 getPageSettings(settingName) { 334 const settingsObject = this.isEditMode() ? elementor.settings.page.model.attributes : this.config.settings.page; 335 return this.getItems(settingsObject, settingName); 336 } 337 338 /** 339 * @param {string} settingName 340 * @deprecated since 3.0.0, use `getKitSettings()` instead and remove the `elementor_` prefix. 341 */ 342 getGeneralSettings(settingName) { 343 if (this.isEditMode()) { 344 parent.elementorDevTools.deprecation.deprecated('getGeneralSettings()', '3.0.0', 'getKitSettings() and remove the `elementor_` prefix'); 345 } 346 return this.getKitSettings(`elementor_${settingName}`); 347 } 348 getKitSettings(settingName) { 349 // TODO: use Data API. 350 return this.getItems(this.config.kit, settingName); 351 } 352 getCurrentDeviceMode() { 353 return getComputedStyle(this.elements.$deviceMode[0], ':after').content.replace(/"/g, ''); 354 } 355 getDeviceSetting(deviceMode, settings, settingKey) { 356 // Add specific handling for widescreen since it is larger than desktop. 357 if ('widescreen' === deviceMode) { 358 return this.getWidescreenSetting(settings, settingKey); 359 } 360 const devices = elementorFrontend.breakpoints.getActiveBreakpointsList({ 361 largeToSmall: true, 362 withDesktop: true 363 }); 364 let deviceIndex = devices.indexOf(deviceMode); 365 while (deviceIndex > 0) { 366 const currentDevice = devices[deviceIndex], 367 fullSettingKey = settingKey + '_' + currentDevice, 368 deviceValue = settings[fullSettingKey]; 369 370 // Accept 0 as value. 371 if (deviceValue || 0 === deviceValue) { 372 return deviceValue; 373 } 374 deviceIndex--; 375 } 376 return settings[settingKey]; 377 } 378 getWidescreenSetting(settings, settingKey) { 379 const deviceMode = 'widescreen', 380 widescreenSettingKey = settingKey + '_' + deviceMode; 381 let settingToReturn; 382 383 // If the device mode is 'widescreen', and the setting exists - return it. 384 if (settings[widescreenSettingKey]) { 385 settingToReturn = settings[widescreenSettingKey]; 386 } else { 387 // Otherwise, return the desktop setting 388 settingToReturn = settings[settingKey]; 389 } 390 return settingToReturn; 391 } 392 getCurrentDeviceSetting(settings, settingKey) { 393 return this.getDeviceSetting(elementorFrontend.getCurrentDeviceMode(), settings, settingKey); 394 } 395 isEditMode() { 396 return this.config.environmentMode.edit; 397 } 398 isWPPreviewMode() { 399 return this.config.environmentMode.wpPreview; 400 } 401 initDialogsManager() { 402 let dialogsManager; 403 this.getDialogsManager = () => { 404 if (!dialogsManager) { 405 dialogsManager = new DialogsManager.Instance(); 406 } 407 return dialogsManager; 408 }; 409 } 410 initOnReadyComponents() { 411 this.utils = { 412 youtube: new _youtubeLoader.default(), 413 vimeo: new _vimeoLoader.default(), 414 baseVideoLoader: new _baseLoader.default(), 415 get lightbox() { 416 return _lightboxManager.default.getLightbox(); 417 }, 418 urlActions: new _urlActions.default(), 419 swiper: _swiper.default, 420 environment: _environment.default, 421 assetsLoader: new _assetsLoader.default(), 422 escapeHTML: _utils.escapeHTML, 423 events: _events.default, 424 controls: new _controls.default(), 425 anchor_scroll_margin: new _anchorScrollMargin.default() 426 }; 427 428 // TODO: BC since 2.4.0 429 this.modules = { 430 StretchElement: elementorModules.frontend.tools.StretchElement, 431 Masonry: elementorModules.utils.Masonry 432 }; 433 this.elementsHandler.init(); 434 if (this.isEditMode()) { 435 elementor.once('document:loaded', () => this.onDocumentLoaded()); 436 } else { 437 this.onDocumentLoaded(); 438 } 439 } 440 initOnReadyElements() { 441 this.elements.$wpAdminBar = this.elements.$document.find(this.getSettings('selectors.adminBar')); 442 } 443 addUserAgentClasses() { 444 for (const [key, value] of Object.entries(_environment.default)) { 445 if (value) { 446 this.elements.$body.addClass('e--ua-' + key); 447 } 448 } 449 } 450 setDeviceModeData() { 451 this.elements.$body.attr('data-elementor-device-mode', this.getCurrentDeviceMode()); 452 } 453 addListenerOnce(listenerID, event, callback, to) { 454 if (!to) { 455 to = this.elements.$window; 456 } 457 if (!this.isEditMode()) { 458 to.on(event, callback); 459 return; 460 } 461 this.removeListeners(listenerID, event, to); 462 if (to instanceof jQuery) { 463 const eventNS = event + '.' + listenerID; 464 to.on(eventNS, callback); 465 } else { 466 to.on(event, callback, listenerID); 467 } 468 } 469 removeListeners(listenerID, event, callback, from) { 470 if (!from) { 471 from = this.elements.$window; 472 } 473 if (from instanceof jQuery) { 474 const eventNS = event + '.' + listenerID; 475 from.off(eventNS, callback); 476 } else { 477 from.off(event, callback, listenerID); 478 } 479 } 480 481 // Based on underscore function 482 debounce(func, wait) { 483 let timeout; 484 return function () { 485 const context = this, 486 args = arguments; 487 const later = () => { 488 timeout = null;
489 func.apply(context, args); 490 }; 491 const callNow = !timeout; 492 clearTimeout(timeout); 493 timeout = setTimeout(later, wait); 494 if (callNow) { 495 func.apply(context, args); 496 } 497 }; 498 } 499 muteMigrationTraces() { 500 jQuery.migrateMute = true; 501 jQuery.migrateTrace = false; 502 } 503 504 /** 505 * Initialize the modules' widgets handlers. 506 */ 507 initModules() { 508 const handlers = { 509 shapes: _frontend.default 510 }; 511 512 // TODO: BC - Deprecated since 3.5.0 513 elementorFrontend.trigger('elementor/modules/init:before'); 514 515 // TODO: Use this instead. 516 elementorFrontend.trigger('elementor/modules/init/before'); 517 Object.entries(handlers).forEach(([moduleName, ModuleClass]) => { 518 this.modulesHandlers[moduleName] = new ModuleClass(); 519 }); 520 } 521 populateActiveBreakpointsConfig() { 522 this.config.responsive.activeBreakpoints = {}; 523 Object.entries(this.config.responsive.breakpoints).forEach(([breakpointKey, breakpointData]) => { 524 if (breakpointData.is_enabled) { 525 this.config.responsive.activeBreakpoints[breakpointKey] = breakpointData; 526 } 527 }); 528 } 529 init() { 530 this.hooks = new EventManager(); 531 this.breakpoints = new _breakpoints.default(this.config.responsive); 532 this.storage = new _storage.default(); 533 this.elementsHandler = new ElementsHandler(jQuery); 534 this.modulesHandlers = {}; 535 this.addUserAgentClasses(); 536 this.setDeviceModeData(); 537 this.initDialogsManager(); 538 if (this.isEditMode()) { 539 this.muteMigrationTraces(); 540 } 541 542 // Keep this line before `initOnReadyComponents` call 543 _events.default.dispatch(this.elements.$window, 'elementor/frontend/init'); 544 this.initModules(); 545 this.initOnReadyElements(); 546 this.initOnReadyComponents(); 547 } 548 onDocumentLoaded() { 549 this.documentsManager = new _documentsManager.default(); 550 this.trigger('components:init'); 551 new _lightboxManager.default(); 552 } 553} 554exports["default"] = Frontend; 555window.elementorFrontend = new Frontend(); 556if (!elementorFrontend.isEditMode()) { 557 jQuery(() => elementorFrontend.init()); 558} 559 560/***/ }), 561
562/***/ "../assets/dev/js/frontend/handlers/column.js": 563/*!****************************************************!*\ 564 !*** ../assets/dev/js/frontend/handlers/column.js ***! 565 \****************************************************/ 566/***/ ((__unused_webpack_module, exports, __webpack_require__) => { 567 568 569 570Object.defineProperty(exports, "__esModule", ({ 571 value: true 572})); 573exports["default"] = void 0; 574var _default = exports["default"] = [() => __webpack_require__.e(/*! import() | shared-frontend-handlers */ "shared-frontend-handlers").then(__webpack_require__.bind(__webpack_require__, /*! ./background-slideshow */ "../assets/dev/js/frontend/handlers/background-slideshow.js"))]; 575 576/***/ }), 577
578/***/ "../assets/dev/js/frontend/handlers/container/container.js": 579/*!*****************************************************************!*\ 580 !*** ../assets/dev/js/frontend/handlers/container/container.js ***! 581 \*****************************************************************/ 582/***/ ((__unused_webpack_module, exports, __webpack_require__) => { 583 584 585 586Object.defineProperty(exports, "__esModule", ({ 587 value: true 588})); 589exports["default"] = void 0; 590var _createEditorHandler = __webpack_require__(/*! ../create-editor-handler */ "../assets/dev/js/frontend/handlers/create-editor-handler.js"); 591var _default = exports["default"] = [() => __webpack_require__.e(/*! import() | shared-frontend-handlers */ "shared-frontend-handlers").then(__webpack_require__.bind(__webpack_require__, /*! ../background-slideshow */ "../assets/dev/js/frontend/handlers/background-slideshow.js")), () => __webpack_require__.e(/*! import() | shared-frontend-handlers */ "shared-frontend-handlers").then(__webpack_require__.bind(__webpack_require__, /*! ../background-video */ "../assets/dev/js/frontend/handlers/background-video.js")), (0, _createEditorHandler.createEditorHandler)(() => __webpack_require__.e(/*! import() | shared-editor-handlers */ "shared-editor-handlers").then(__webpack_require__.bind(__webpack_require__, /*! ../handles-position */ "../assets/dev/js/frontend/handlers/handles-position.js"))), (0, _createEditorHandler.createEditorHandler)(() => __webpack_require__.e(/*! import() | container-editor-handlers */ "container-editor-handlers").then(__webpack_require__.bind(__webpack_require__, /*! ./shapes */ "../assets/dev/js/frontend/handlers/container/shapes.js"))), (0, _createEditorHandler.createEditorHandler)(() => __webpack_require__.e(/*! import() | container-editor-handlers */ "container-editor-handlers").then(__webpack_require__.bind(__webpack_require__, /*! ./grid-container */ "../assets/dev/js/frontend/handlers/container/grid-container.js")))]; 592 593/***/ }), 594
595/***/ "../assets/dev/js/frontend/handlers/create-editor-handler.js": 596/*!*******************************************************************!*\ 597 !*** ../assets/dev/js/frontend/handlers/create-editor-handler.js ***! 598 \*******************************************************************/ 599/***/ ((__unused_webpack_module, exports) => { 600 601 602 603Object.defineProperty(exports, "__esModule", ({ 604 value: true 605})); 606exports.createEditorHandler = createEditorHandler; 607function createEditorHandler(importer) { 608 return () => { 609 return new Promise(resolve => { 610 if (elementorFrontend.isEditMode()) { 611 importer().then(resolve); 612 } 613 }); 614 }; 615} 616 617/***/ }), 618
619/***/ "../assets/dev/js/frontend/handlers/global.js": 620/*!****************************************************!*\ 621 !*** ../assets/dev/js/frontend/handlers/global.js ***! 622 \****************************************************/ 623/***/ ((__unused_webpack_module, exports) => { 624 625 626 627Object.defineProperty(exports, "__esModule", ({ 628 value: true 629})); 630exports["default"] = void 0; 631class GlobalHandler extends elementorModules.frontend.handlers.Base { 632 getWidgetType() { 633 return 'global'; 634 } 635 animate() { 636 const $element = this.$element, 637 animation = this.getAnimation(); 638 if ('none' === animation) { 639 $element.removeClass('elementor-invisible'); 640 return; 641 } 642 const elementSettings = this.getElementSettings(), 643 animationDelay = elementSettings._animation_delay || elementSettings.animation_delay || 0; 644 $element.removeClass(animation); 645 if (this.currentAnimation) { 646 $element.removeClass(this.currentAnimation); 647 } 648 this.currentAnimation = animation; 649 setTimeout(() => { 650 $element.removeClass('elementor-invisible').addClass('animated ' + animation); 651 }, animationDelay); 652 } 653 getAnimation() { 654 return this.getCurrentDeviceSetting('animation') || this.getCurrentDeviceSetting('_animation'); 655 } 656 onInit(...args) { 657 super.onInit(...args); 658 if (this.getAnimation()) { 659 const observer = elementorModules.utils.Scroll.scrollObserver({ 660 callback: event => { 661 if (event.isInViewport) { 662 this.animate(); 663 observer.unobserve(this.$element[0]); 664 } 665 } 666 }); 667 observer.observe(this.$element[0]); 668 } 669 } 670 onElementChange(propertyName) { 671 if (/^_?animation/.test(propertyName)) { 672 this.animate(); 673 } 674 } 675} 676var _default = $scope => { 677 elementorFrontend.elementsHandler.addHandler(GlobalHandler, { 678 $element: $scope 679 }); 680}; 681exports["default"] = _default; 682 683/***/ }), 684
685/***/ "../assets/dev/js/frontend/handlers/section/section.js": 686/*!*************************************************************!*\ 687 !*** ../assets/dev/js/frontend/handlers/section/section.js ***! 688 \*************************************************************/ 689/***/ ((__unused_webpack_module, exports, __webpack_require__) => { 690 691 692 693Object.defineProperty(exports, "__esModule", ({ 694 value: true 695})); 696exports["default"] = void 0; 697var _createEditorHandler = __webpack_require__(/*! ../create-editor-handler */ "../assets/dev/js/frontend/handlers/create-editor-handler.js"); 698var _default = exports["default"] = [() => __webpack_require__.e(/*! import() | section-frontend-handlers */ "section-frontend-handlers").then(__webpack_require__.bind(__webpack_require__, /*! ./stretched-section */ "../assets/dev/js/frontend/handlers/section/stretched-section.js")), 699// Must run before BackgroundSlideshow to init the slideshow only after the stretch. 700() => __webpack_require__.e(/*! import() | shared-frontend-handlers */ "shared-frontend-handlers").then(__webpack_require__.bind(__webpack_require__, /*! ../background-slideshow */ "../assets/dev/js/frontend/handlers/background-slideshow.js")), () => __webpack_require__.e(/*! import() | shared-frontend-handlers */ "shared-frontend-handlers").then(__webpack_require__.bind(__webpack_require__, /*! ../background-video */ "../assets/dev/js/frontend/handlers/background-video.js")), (0, _createEditorHandler.createEditorHandler)(() => __webpack_require__.e(/*! import() | shared-editor-handlers */ "shared-editor-handlers").then(__webpack_require__.bind(__webpack_require__, /*! ../handles-position */ "../assets/dev/js/frontend/handlers/handles-position.js"))), (0, _createEditorHandler.createEditorHandler)(() => __webpack_require__.e(/*! import() | section-editor-handlers */ "section-editor-handlers").then(__webpack_require__.bind(__webpack_require__, /*! ./shapes */ "../assets/dev/js/frontend/handlers/section/shapes.js")))]; 701 702/***/ }), 703
704/***/ "../assets/dev/js/frontend/utils/anchor-scroll-margin.js": 705/*!***************************************************************!*\ 706 !*** ../assets/dev/js/frontend/utils/anchor-scroll-margin.js ***! 707 \***************************************************************/ 708/***/ ((__unused_webpack_module, exports, __webpack_require__) => { 709 710 711 712Object.defineProperty(exports, "__esModule", ({ 713 value: true 714})); 715exports["default"] = void 0; 716__webpack_require__(/*! core-js/modules/es.array.push.js */ "../node_modules/core-js/modules/es.array.push.js"); 717__webpack_require__(/*! core-js/modules/esnext.iterator.constructor.js */ "../node_modules/core-js/modules/esnext.iterator.constructor.js"); 718__webpack_require__(/*! core-js/modules/esnext.iterator.filter.js */ "../node_modules/core-js/modules/esnext.iterator.filter.js"); 719__webpack_require__(/*! core-js/modules/esnext.iterator.for-each.js */ "../node_modules/core-js/modules/esnext.iterator.for-each.js"); 720class _default extends elementorModules.ViewModule { 721 getDefaultSettings() { 722 return { 723 selectors: { 724 links: '.elementor-element a[href*="#"]', 725 stickyElements: '.elementor-element.elementor-sticky' 726 } 727 }; 728 } 729 onInit() { 730 this.observeStickyElements(() => {
731 this.initializeStickyAndAnchorTracking(); 732 }); 733 } 734 observeStickyElements(callback) { 735 const observer = new MutationObserver(mutationsList => { 736 for (const mutation of mutationsList) { 737 if ('childList' === mutation.type || 'attributes' === mutation.type && mutation.target.classList.contains('elementor-sticky')) { 738 callback(); 739 } 740 } 741 }); 742 observer.observe(document.body, { 743 childList: true, 744 subtree: true, 745 attributes: true, 746 attributeFilter: ['class', 'style'] 747 }); 748 } 749 initializeStickyAndAnchorTracking() { 750 const anchorLinks = this.getAllAnchorLinks(); 751 const stickyElements = this.getAllStickyElements(); 752 const trackedElements = []; 753 if (!stickyElements.length > 0 && !anchorLinks.length > 0) { 754 return; 755 } 756 this.trackStickyElements(stickyElements, trackedElements); 757 this.trackAnchorLinks(anchorLinks, trackedElements); 758 this.organizeStickyAndAnchors(trackedElements); 759 } 760 trackAnchorLinks(anchorLinks, trackedElements) { 761 anchorLinks.forEach(element => { 762 const target = this.getAnchorTarget(element); 763 const scrollPosition = this.getScrollPosition(target); 764 trackedElements.push({ 765 element: target, 766 type: 'anchor', 767 scrollPosition 768 }); 769 }); 770 } 771 trackStickyElements(stickyElements, trackedElements) { 772 stickyElements.forEach(element => { 773 const settings = this.getElementSettings(element); 774 if (!settings || !settings.sticky_anchor_link_offset) { 775 return; 776 } 777 const { 778 sticky_anchor_link_offset: scrollMarginTop 779 } = settings; 780 if (0 === scrollMarginTop) { 781 return; 782 } 783 const scrollPosition = this.getScrollPosition(element); 784 trackedElements.push({ 785 scrollMarginTop, 786 type: 'sticky', 787 scrollPosition 788 }); 789 }); 790 }
791 organizeStickyAndAnchors(elements) { 792 const stickyList = this.filterAndSortElementsByType(elements, 'sticky'); 793 const anchorList = this.filterAndSortElementsByType(elements, 'anchor'); 794 stickyList.forEach((sticky, index) => { 795 this.defineCurrentStickyRange(sticky, index, stickyList, anchorList); 796 }); 797 } 798 defineCurrentStickyRange(sticky, index, stickyList, anchorList) { 799 const nextStickyScrollPosition = index + 1 < stickyList.length ? stickyList[index + 1].scrollPosition : Infinity; 800 sticky.anchor = anchorList.filter(anchor => { 801 const withinRange = anchor.scrollPosition > sticky.scrollPosition && anchor.scrollPosition < nextStickyScrollPosition; 802 if (withinRange) { 803 anchor.element.style.scrollMarginTop = `${sticky.scrollMarginTop}px`; 804 } 805 return withinRange; 806 }); 807 } 808 getScrollPosition(element) { 809 let offsetTop = 0; 810 while (element) { 811 offsetTop += element.offsetTop; 812 element = element.offsetParent; 813 } 814 return offsetTop; 815 } 816 getAllStickyElements() { 817 const allStickyElements = document.querySelectorAll(this.getSettings('selectors.stickyElements')); 818 return Array.from(allStickyElements).filter((anchor, index, self) => index === self.findIndex(t => t.getAttribute('data-id') === anchor.getAttribute('data-id'))); 819 } 820 getAllAnchorLinks() { 821 const allAnchors = document.querySelectorAll(this.getSettings('selectors.links')); 822 return Array.from(allAnchors).filter((anchor, index, self) => index === self.findIndex(t => t.getAttribute('href') === anchor.getAttribute('href'))); 823 } 824 filterAndSortElementsByType(elements, type) { 825 return elements.filter(item => type === item.type).sort((a, b) => a.scrollPosition - b.scrollPosition); 826 } 827 isValidSelector(hash) { 828 const validSelectorPattern = /^#[A-Za-z_][\w-]*$/; 829 return validSelectorPattern.test(hash); 830 } 831 getAnchorTarget(element) { 832 const hash = element?.hash; 833 if (!this.isValidSelector(hash)) { 834 return null; 835 } 836 return document.querySelector(hash); 837 } 838 getElementSettings(element) { 839 return JSON.parse(element.getAttribute('data-settings')); 840 } 841} 842exports["default"] = _default; 843 844/***/ }), 845
846/***/ "../assets/dev/js/frontend/utils/assets-loader.js": 847/*!********************************************************!*\ 848 !*** ../assets/dev/js/frontend/utils/assets-loader.js ***! 849 \********************************************************/ 850/***/ ((__unused_webpack_module, exports) => { 851 852 853 854Object.defineProperty(exports, "__esModule", ({ 855 value: true 856})); 857exports["default"] = void 0; 858class AssetsLoader { 859 getScriptElement(src) { 860 const scriptElement = document.createElement('script'); 861 scriptElement.src = src; 862 return scriptElement; 863 } 864 getStyleElement(src) { 865 const styleElement = document.createElement('link'); 866 styleElement.rel = 'stylesheet'; 867 styleElement.href = src; 868 return styleElement; 869 } 870 load(type, key) { 871 const assetData = AssetsLoader.assets[type][key]; 872 if (!assetData.loader) { 873 assetData.loader = this.isAssetLoaded(assetData, type) ? Promise.resolve(true) : this.loadAsset(assetData, type); 874 } 875 return assetData.loader; 876 } 877 isAssetLoaded(assetData, assetType) { 878 const filePath = 'script' === assetType ? `script[src="${assetData.src}"]` : `link[href="${assetData.src}"]`; 879 return !!document.querySelectorAll(filePath)?.length; 880 } 881 loadAsset(assetData, assetType) { 882 return new Promise(resolve => { 883 const element = 'style' === assetType ? this.getStyleElement(assetData.src) : this.getScriptElement(assetData.src); 884 element.onload = () => resolve(true); 885 this.appendAsset(assetData, element); 886 }); 887 } 888 appendAsset(assetData, element) { 889 const beforeElement = document.querySelector(assetData.before); 890 if (!!beforeElement) { 891 beforeElement.insertAdjacentElement('beforebegin', element); 892 return; 893 } 894 const parent = 'head' === assetData.parent ? assetData.parent : 'body'; 895 document[parent].appendChild(element); 896 } 897} 898exports["default"] = AssetsLoader; 899const assetsUrl = elementorFrontendConfig.urls.assets; 900const fileSuffix = elementorFrontendConfig.environmentMode.isScriptDebug ? '' : '.min'; 901const pluginVersion = elementorFrontendConfig.version; 902AssetsLoader.assets = { 903 script: { 904 dialog: { 905 src: `${assetsUrl}lib/dialog/dialog${fileSuffix}.js?ver=4.9.3` 906 }, 907 'share-link': { 908 src: `${assetsUrl}lib/share-link/share-link${fileSuffix}.js?ver=${pluginVersion}` 909 }, 910 // TODO: Remove 'swiper' in v3.29.0 [ED-16272]. 911 swiper: { 912 src: `${assetsUrl}lib/swiper/v8/swiper${fileSuffix}.js?ver=8.4.5` 913 } 914 }, 915 style: { 916 swiper: { 917 src: `${assetsUrl}lib/swiper/v8/css/swiper${fileSuffix}.css?ver=8.4.5`, 918 parent: 'head' 919 }, 920 'e-lightbox': { 921 src: elementorFrontendConfig?.responsive?.hasCustomBreakpoints ? `${elementorFrontendConfig.urls.uploadUrl}/elementor/css/custom-lightbox.min.css?ver=${pluginVersion}` : `${assetsUrl}css/conditionals/lightbox${fileSuffix}.css?ver=${pluginVersion}` 922 }, 923 dialog: { 924 src: `${assetsUrl}css/conditionals/dialog${fileSuffix}.css?ver=${pluginVersion}`, 925 parent: 'head', 926 before: '#elementor-frontend-css' 927 } 928 } 929}; 930 931/***/ }), 932
933/***/ "../assets/dev/js/frontend/utils/controls.js": 934/*!***************************************************!*\ 935 !*** ../assets/dev/js/frontend/utils/controls.js ***! 936 \***************************************************/ 937/***/ ((__unused_webpack_module, exports) => { 938 939 940 941Object.defineProperty(exports, "__esModule", ({ 942 value: true 943})); 944exports["default"] = void 0; 945class Controls { 946 /** 947 * Get Control Value 948 * 949 * Retrieves a control value. 950 * This function has been copied from `elementor/assets/dev/js/editor/utils/conditions.js`. 951 * 952 * @since 3.11.0 953 * 954 * @param {{}} controlSettings A settings object (e.g. element settings - keys and values) 955 * @param {string} controlKey The control key name 956 * @param {string} controlSubKey A specific property of the control object. 957 * @return {*} Control Value 958 */ 959 getControlValue(controlSettings, controlKey, controlSubKey) { 960 let value; 961 if ('object' === typeof controlSettings[controlKey] && controlSubKey) { 962 value = controlSettings[controlKey][controlSubKey]; 963 } else { 964 value = controlSettings[controlKey]; 965 } 966 return value; 967 } 968 969 /** 970 * Get the value of a responsive control. 971 * 972 * Retrieves the value of a responsive control for the current device or for this first parent device which has a control value. 973 * 974 * @since 3.11.0 975 * 976 * @param {{}} controlSettings A settings object (e.g. element settings - keys and values) 977 * @param {string} controlKey The control key name 978 * @param {string} controlSubKey A specific property of the control object. 979 * @param {string} device If we want to get a value for a specific device mode. 980 * @return {*} Control Value 981 */ 982 getResponsiveControlValue(controlSettings, controlKey, controlSubKey = '', device = null) { 983 const currentDeviceMode = device || elementorFrontend.getCurrentDeviceMode(), 984 controlValueDesktop = this.getControlValue(controlSettings, controlKey, controlSubKey); 985 986 // Set the control value for the current device mode. 987 // First check the widescreen device mode. 988 if ('widescreen' === currentDeviceMode) { 989 const controlValueWidescreen = this.getControlValue(controlSettings, `${controlKey}_widescreen`, controlSubKey); 990 return !!controlValueWidescreen || 0 === controlValueWidescreen ? controlValueWidescreen : controlValueDesktop; 991 } 992 993 // Loop through all responsive and desktop device modes. 994 const activeBreakpoints = elementorFrontend.breakpoints.getActiveBreakpointsList({ 995 withDesktop: true 996 }); 997 let parentDeviceMode = currentDeviceMode, 998 deviceIndex = activeBreakpoints.indexOf(currentDeviceMode), 999 controlValue = ''; 1000 while (deviceIndex <= activeBreakpoints.length) { 1001 if ('desktop' === parentDeviceMode) { 1002 controlValue = controlValueDesktop; 1003 break; 1004 } 1005 const responsiveControlKey = `${controlKey}_${parentDeviceMode}`, 1006 responsiveControlValue = this.getControlValue(controlSettings, responsiveControlKey, controlSubKey); 1007 if (!!responsiveControlValue || 0 === responsiveControlValue) { 1008 controlValue = responsiveControlValue; 1009 break; 1010 } 1011 1012 // If no control value has been set for the current device mode, then check the parent device mode. 1013 deviceIndex++; 1014 parentDeviceMode = activeBreakpoints[deviceIndex]; 1015 } 1016 return controlValue; 1017 } 1018} 1019exports["default"] = Controls; 1020 1021/***/ }), 1022
1023/***/ "../assets/dev/js/frontend/utils/lightbox/lightbox-manager.js": 1024/*!********************************************************************!*\ 1025 !*** ../assets/dev/js/frontend/utils/lightbox/lightbox-manager.js ***! 1026 \********************************************************************/ 1027/***/ ((__unused_webpack_module, exports, __webpack_require__) => { 1028 1029 1030 1031Object.defineProperty(exports, "__esModule", ({ 1032 value: true 1033})); 1034exports["default"] = void 0; 1035__webpack_require__(/*! core-js/modules/esnext.iterator.constructor.js */ "../node_modules/core-js/modules/esnext.iterator.constructor.js"); 1036__webpack_require__(/*! core-js/modules/esnext.iterator.find.js */ "../node_modules/core-js/modules/esnext.iterator.find.js"); 1037class LightboxManager extends elementorModules.ViewModule { 1038 static getLightbox() { 1039 const lightboxPromise = new Promise(resolveLightbox => { 1040 Promise.all(/*! import() | lightbox */[__webpack_require__.e("vendors-node_modules_dompurify_dist_purify_cjs_js"), __webpack_require__.e("lightbox")]).then(__webpack_require__.t.bind(__webpack_require__, /*! elementor-frontend/utils/lightbox/lightbox */ "../assets/dev/js/frontend/utils/lightbox/lightbox.js", 23)).then(({ 1041 default: LightboxModule 1042 }) => resolveLightbox(new LightboxModule())); 1043 }), 1044 dialogScriptPromise = elementorFrontend.utils.assetsLoader.load('script', 'dialog'), 1045 dialogStylePromise = elementorFrontend.utils.assetsLoader.load('style', 'dialog'), 1046 shareLinkPromise = elementorFrontend.utils.assetsLoader.load('script', 'share-link'), 1047 swiperStylePromise = elementorFrontend.utils.assetsLoader.load('style', 'swiper'), 1048 lightboxStylePromise = elementorFrontend.utils.assetsLoader.load('style', 'e-lightbox'); 1049 return Promise.all([lightboxPromise, dialogScriptPromise, dialogStylePromise, shareLinkPromise, swiperStylePromise, lightboxStylePromise]).then(() => lightboxPromise); 1050 } 1051 getDefaultSettings() { 1052 return { 1053 selectors: { 1054 links: 'a, [data-elementor-lightbox]', 1055 slideshow: '[data-elementor-lightbox-slideshow]' 1056 } 1057 }; 1058 } 1059 getDefaultElements() { 1060 return { 1061 $links: jQuery(this.getSettings('selectors.links')), 1062 $slideshow: jQuery(this.getSettings('selectors.slideshow')) 1063 }; 1064 } 1065 isLightboxLink(element) { 1066 // Check for lowercase `a` to make sure it works also for links inside SVGs. 1067 if ('a' === element.tagName.toLowerCase() && (element.hasAttribute('download') || !/^[^?]+\.(png|jpe?g|gif|svg|webp|avif)(\?.*)?$/i.test(element.href)) && !element.dataset.elementorLightboxVideo) { 1068 return false; 1069 } 1070 const generalOpenInLightbox = elementorFrontend.getKitSettings('global_image_lightbox'), 1071 currentLinkOpenInLightbox = element.dataset.elementorOpenLightbox; 1072 return 'yes' === currentLinkOpenInLightbox || generalOpenInLightbox && 'no' !== currentLinkOpenInLightbox; 1073 } 1074 isLightboxSlideshow() { 1075 return 0 !== this.elements.$slideshow.length; 1076 } 1077 async onLinkClick(event) { 1078 const element = event.currentTarget, 1079 $target = jQuery(event.target), 1080 editMode = elementorFrontend.isEditMode(), 1081 isColorPickingMode = editMode && elementor.$previewContents.find('body').hasClass('elementor-editor__ui-state__color-picker'), 1082 isClickInsideElementor = !!$target.closest('.elementor-edit-area').length; 1083 if (!this.isLightboxLink(element)) { 1084 if (editMode && isClickInsideElementor) { 1085 event.preventDefault(); 1086 } 1087 return; 1088 } 1089 event.preventDefault(); 1090 if (editMode && !elementor.getPreferences('lightbox_in_editor')) { 1091 return; 1092 } 1093 1094 // Disable lightbox on color picking mode. 1095 if (isColorPickingMode) { 1096 return; 1097 } 1098 const lightbox = await LightboxManager.getLightbox(); 1099 lightbox.createLightbox(element); 1100 } 1101 bindEvents() { 1102 elementorFrontend.elements.$document.on('click', this.getSettings('selectors.links'), event => this.onLinkClick(event)); 1103 } 1104 onInit(...args) { 1105 super.onInit(...args); 1106 if (elementorFrontend.isEditMode()) { 1107 return; 1108 } 1109 this.maybeActivateLightboxOnLink(); 1110 } 1111 maybeActivateLightboxOnLink() { 1112 // Detecting lightbox links on init will reduce the time of waiting to the lightbox to be display on slow connections. 1113 this.elements.$links.each((index, element) => { 1114 if (this.isLightboxLink(element)) { 1115 LightboxManager.getLightbox(); 1116 1117 // Breaking the iteration when the library loading has already been triggered. 1118 return false;
1119 } 1120 }); 1121 } 1122} 1123exports["default"] = LightboxManager; 1124 1125/***/ }), 1126
1127/***/ "../assets/dev/js/frontend/utils/swiper.js": 1128/*!*************************************************!*\ 1129 !*** ../assets/dev/js/frontend/utils/swiper.js ***! 1130 \*************************************************/ 1131/***/ ((__unused_webpack_module, exports, __webpack_require__) => { 1132 1133 1134 1135Object.defineProperty(exports, "__esModule", ({ 1136 value: true 1137})); 1138exports["default"] = void 0; 1139__webpack_require__(/*! core-js/modules/esnext.iterator.constructor.js */ "../node_modules/core-js/modules/esnext.iterator.constructor.js"); 1140__webpack_require__(/*! core-js/modules/esnext.iterator.for-each.js */ "../node_modules/core-js/modules/esnext.iterator.for-each.js"); 1141class SwiperHandler { 1142 constructor(container, config) { 1143 this.config = config; 1144 if (this.config.breakpoints) { 1145 // The config is passed as a param to allow adjustConfig to be called outside of this wrapper 1146 this.config = this.adjustConfig(config); 1147 } 1148 if (container instanceof jQuery) { 1149 container = container[0]; 1150 } 1151 1152 // The Swiper will overlap the column width when applying custom margin values on the column. 1153 container.closest('.elementor-widget-wrap')?.classList.add('e-swiper-container'); 1154 container.closest('.elementor-widget')?.classList.add('e-widget-swiper'); 1155 return new Promise(resolve => { 1156 // TODO: Remove in v3.29.0 [ED-16272]. 1157 if ('undefined' === typeof Swiper) { 1158 elementorFrontend.utils.assetsLoader.load('script', 'swiper').then(() => resolve(this.createSwiperInstance(container, this.config))); 1159 return; 1160 } 1161 if ('function' === typeof Swiper && 'undefined' === typeof window.Swiper) { 1162 window.Swiper = Swiper; 1163 } 1164 resolve(this.createSwiperInstance(container, this.config)); 1165 }); 1166 } 1167 createSwiperInstance(container, config) { 1168 const SwiperSource = window.Swiper; 1169 SwiperSource.prototype.adjustConfig = this.adjustConfig; 1170 return new SwiperSource(container, config); 1171 } 1172 1173 // Backwards compatibility for Elementor Pro <2.9.0 (old Swiper version - <5.0.0) 1174 // In Swiper 5.0.0 and up, breakpoints changed from acting as max-width to acting as min-width 1175 adjustConfig(config) { 1176 // Only reverse the breakpoints if the handle param has been defined 1177 if (!config.handleElementorBreakpoints) { 1178 return config; 1179 } 1180 const elementorBreakpoints = elementorFrontend.config.responsive.activeBreakpoints, 1181 elementorBreakpointValues = elementorFrontend.breakpoints.getBreakpointValues(); 1182 Object.keys(config.breakpoints).forEach(configBPKey => { 1183 const configBPKeyInt = parseInt(configBPKey); 1184 let breakpointToUpdate; 1185 1186 // The `configBPKeyInt + 1` is a BC Fix for Elementor Pro Carousels from 2.8.0-2.8.3 used with Elementor >= 2.9.0 1187 if (configBPKeyInt === elementorBreakpoints.mobile.value || configBPKeyInt + 1 === elementorBreakpoints.mobile.value) { 1188 // This handles the mobile breakpoint. Elementor's default sm breakpoint is never actually used, 1189 // so the mobile breakpoint (md) needs to be handled separately and set to the 0 breakpoint (xs) 1190 breakpointToUpdate = 0; 1191 } else if (elementorBreakpoints.widescreen && (configBPKeyInt === elementorBreakpoints.widescreen.value || configBPKeyInt + 1 === elementorBreakpoints.widescreen.value)) { 1192 // Widescreen is a min-width breakpoint. Since in Swiper >5.0 the breakpoint system is min-width based, 1193 // the value we pass to the Swiper instance in this case is the breakpoint from the user, unchanged. 1194 breakpointToUpdate = configBPKeyInt; 1195 } else { 1196 // Find the index of the current config breakpoint in the Elementor Breakpoints array 1197 const currentBPIndexInElementorBPs = elementorBreakpointValues.findIndex(elementorBP => { 1198 // BC Fix for Elementor Pro Carousels from 2.8.0-2.8.3 used with Elementor >= 2.9.0 1199 return configBPKeyInt === elementorBP || configBPKeyInt + 1 === elementorBP; 1200 }); 1201 1202 // For all other Swiper config breakpoints, move them one breakpoint down on the breakpoint list, 1203 // according to the array of Elementor's global breakpoints 1204 breakpointToUpdate = elementorBreakpointValues[currentBPIndexInElementorBPs - 1]; 1205 } 1206 config.breakpoints[breakpointToUpdate] = config.breakpoints[configBPKey]; 1207 1208 // Then reset the settings in the original breakpoint key to the default values 1209 config.breakpoints[configBPKey] = { 1210 slidesPerView: config.slidesPerView,
1211 slidesPerGroup: config.slidesPerGroup ? config.slidesPerGroup : 1 1212 }; 1213 }); 1214 return config; 1215 } 1216} 1217exports["default"] = SwiperHandler; 1218 1219/***/ }), 1220
1221/***/ "../assets/dev/js/frontend/utils/url-actions.js": 1222/*!******************************************************!*\ 1223 !*** ../assets/dev/js/frontend/utils/url-actions.js ***! 1224 \******************************************************/ 1225/***/ ((__unused_webpack_module, exports, __webpack_require__) => { 1226 1227 1228 1229Object.defineProperty(exports, "__esModule", ({ 1230 value: true 1231})); 1232exports["default"] = void 0; 1233__webpack_require__(/*! core-js/modules/web.dom-exception.stack.js */ "../node_modules/core-js/modules/web.dom-exception.stack.js"); 1234class _default extends elementorModules.ViewModule { 1235 getDefaultSettings() { 1236 return { 1237 selectors: { 1238 links: 'a[href^="%23elementor-action"], a[href^="#elementor-action"]' 1239 } 1240 }; 1241 } 1242 bindEvents() { 1243 elementorFrontend.elements.$document.on('click', this.getSettings('selectors.links'), this.runLinkAction.bind(this)); 1244 } 1245 initActions() { 1246 this.actions = { 1247 lightbox: async settings => { 1248 const lightbox = await elementorFrontend.utils.lightbox; 1249 if (settings.slideshow) { 1250 // Handle slideshow display 1251 lightbox.openSlideshow(settings.slideshow, settings.url); 1252 } else { 1253 // If the settings has an ID - the lightbox target content is an image - the ID is an attachment ID. 1254 if (settings.id) { 1255 settings.type = 'image'; 1256 } 1257 lightbox.showModal(settings); 1258 } 1259 } 1260 }; 1261 } 1262 addAction(name, callback) { 1263 this.actions[name] = callback; 1264 } 1265 runAction(url, ...restArgs) { 1266 url = decodeURI(url); 1267 url = decodeURIComponent(url); 1268 const actionMatch = url.match(/action=(.+?)&/); 1269 if (!actionMatch) { 1270 return; 1271 } 1272 const action = this.actions[actionMatch[1]]; 1273 if (!action) { 1274 return; 1275 } 1276 let settings = {}; 1277 const settingsMatch = url.match(/settings=(.+)/); 1278 if (settingsMatch) { 1279 settings = JSON.parse(atob(settingsMatch[1])); 1280 } 1281 settings.previousEvent = event; 1282 action(settings, ...restArgs); 1283 } 1284 runLinkAction(event) { 1285 event.preventDefault(); 1286 this.runAction(jQuery(event.currentTarget).attr('href'), event); 1287 } 1288 runHashAction() { 1289 if (!location.hash) { 1290 return; 1291 } 1292 1293 // Only if an element with this action hash exists on the page do we allow running the action. 1294 const elementWithHash = document.querySelector(`[data-e-action-hash="${location.hash}"], a[href*="${location.hash}"]`); 1295 if (elementWithHash) { 1296 this.runAction(elementWithHash.getAttribute('data-e-action-hash')); 1297 } 1298 } 1299 createActionHash(action, settings) { 1300 // We need to encode the hash tag (#) here, in order to support share links for a variety of providers 1301 return encodeURIComponent(`#elementor-action:action=${action}&settings=${btoa(JSON.stringify(settings))}`); 1302 } 1303 onInit() { 1304 super.onInit(); 1305 this.initActions(); 1306 elementorFrontend.on('components:init', this.runHashAction.bind(this)); 1307 } 1308} 1309exports["default"] = _default; 1310 1311/***/ }), 1312
1313/***/ "../assets/dev/js/frontend/utils/utils.js": 1314/*!************************************************!*\ 1315 !*** ../assets/dev/js/frontend/utils/utils.js ***! 1316 \************************************************/ 1317/***/ ((__unused_webpack_module, exports) => { 1318 1319 1320 1321Object.defineProperty(exports, "__esModule", ({ 1322 value: true 1323})); 1324exports.isScrollSnapActive = exports.escapeHTML = void 0; 1325// Escape HTML special chars to prevent XSS. 1326const escapeHTML = str => { 1327 const specialChars = { 1328 '&': '&', 1329 '<': '<', 1330 '>': '>', 1331 "'": ''', 1332 '"': '"' 1333 }; 1334 return str.replace(/[&<>'"]/g, tag => specialChars[tag] || tag); 1335}; 1336 1337// Check if Scroll-Snap is active. 1338exports.escapeHTML = escapeHTML; 1339const isScrollSnapActive = () => { 1340 const scrollSnapStatus = elementorFrontend.isEditMode() ? elementor.settings.page.model.attributes?.scroll_snap : elementorFrontend.config.settings.page?.scroll_snap; 1341 return 'yes' === scrollSnapStatus ? true : false; 1342}; 1343exports.isScrollSnapActive = isScrollSnapActive; 1344 1345/***/ }), 1346
1347/***/ "../assets/dev/js/frontend/utils/video-api/base-loader.js": 1348/*!****************************************************************!*\ 1349 !*** ../assets/dev/js/frontend/utils/video-api/base-loader.js ***! 1350 \****************************************************************/ 1351/***/ ((__unused_webpack_module, exports) => { 1352 1353 1354 1355Object.defineProperty(exports, "__esModule", ({ 1356 value: true 1357})); 1358exports["default"] = void 0; 1359class BaseLoader extends elementorModules.ViewModule { 1360 getDefaultSettings() { 1361 return { 1362 isInserted: false, 1363 selectors: { 1364 firstScript: 'script:first' 1365 } 1366 }; 1367 } 1368 getDefaultElements() { 1369 return { 1370 $firstScript: jQuery(this.getSettings('selectors.firstScript')) 1371 }; 1372 } 1373 insertAPI() { 1374 this.elements.$firstScript.before(jQuery('<script>', { 1375 src: this.getApiURL() 1376 })); 1377 this.setSettings('isInserted', true); 1378 } 1379 getVideoIDFromURL(url) { 1380 const videoIDParts = url.match(this.getURLRegex()); 1381 return videoIDParts && videoIDParts[1]; 1382 } 1383 onApiReady(callback) { 1384 if (!this.getSettings('isInserted')) { 1385 this.insertAPI(); 1386 } 1387 if (this.isApiLoaded()) { 1388 callback(this.getApiObject()); 1389 } else { 1390 // If not ready check again by timeout.. 1391 setTimeout(() => { 1392 this.onApiReady(callback); 1393 }, 350); 1394 } 1395 } 1396 getAutoplayURL(videoURL) { 1397 return videoURL.replace('&autoplay=0', '') + '&autoplay=1'; 1398 } 1399} 1400exports["default"] = BaseLoader; 1401 1402/***/ }), 1403
1404/***/ "../assets/dev/js/frontend/utils/video-api/vimeo-loader.js": 1405/*!*****************************************************************!*\ 1406 !*** ../assets/dev/js/frontend/utils/video-api/vimeo-loader.js ***! 1407 \*****************************************************************/ 1408/***/ ((__unused_webpack_module, exports, __webpack_require__) => { 1409 1410 1411 1412var _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ "../node_modules/@babel/runtime/helpers/interopRequireDefault.js"); 1413Object.defineProperty(exports, "__esModule", ({ 1414 value: true 1415})); 1416exports["default"] = void 0; 1417var _baseLoader = _interopRequireDefault(__webpack_require__(/*! ./base-loader */ "../assets/dev/js/frontend/utils/video-api/base-loader.js")); 1418class VimeoLoader extends _baseLoader.default { 1419 getApiURL() { 1420 return 'https://player.vimeo.com/api/player.js'; 1421 } 1422 getURLRegex() { 1423 return /^(?:https?:\/\/)?(?:www|player\.)?(?:vimeo\.com\/)?(?:video\/|external\/)?(\d+)([^.?&#"'>]?)/; 1424 } 1425 isApiLoaded() { 1426 return window.Vimeo; 1427 } 1428 getApiObject() { 1429 return Vimeo; 1430 } 1431 getAutoplayURL(videoURL) { 1432 // Vimeo requires the '#t=' param to be last in the URL. 1433 const timeMatch = videoURL.match(/#t=[^&]*/); 1434 return videoURL.replace(timeMatch[0], '') + timeMatch; 1435 } 1436} 1437exports["default"] = VimeoLoader; 1438 1439/***/ }), 1440
1441/***/ "../assets/dev/js/frontend/utils/video-api/youtube-loader.js": 1442/*!*******************************************************************!*\ 1443 !*** ../assets/dev/js/frontend/utils/video-api/youtube-loader.js ***! 1444 \*******************************************************************/ 1445/***/ ((__unused_webpack_module, exports, __webpack_require__) => { 1446 1447 1448 1449var _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ "../node_modules/@babel/runtime/helpers/interopRequireDefault.js"); 1450Object.defineProperty(exports, "__esModule", ({ 1451 value: true 1452})); 1453exports["default"] = void 0; 1454var _baseLoader = _interopRequireDefault(__webpack_require__(/*! ./base-loader */ "../assets/dev/js/frontend/utils/video-api/base-loader.js")); 1455class YoutubeLoader extends _baseLoader.default { 1456 getApiURL() { 1457 return 'https://www.youtube.com/iframe_api'; 1458 } 1459 getURLRegex() { 1460 return /^(?:https?:\/\/)?(?:www\.)?(?:m\.)?(?:youtu\.be\/|youtube\.com\/(?:(?:watch)?\?(?:.*&)?vi?=|(?:embed|v|vi|user|shorts)\/))([^?&"'>]+)/; 1461 } 1462 isApiLoaded() { 1463 return window.YT && YT.loaded; 1464 } 1465 getApiObject() { 1466 return YT; 1467 } 1468} 1469exports["default"] = YoutubeLoader; 1470 1471/***/ }), 1472
1473/***/ "../assets/dev/js/public-path.js": 1474/*!***************************************!*\ 1475 !*** ../assets/dev/js/public-path.js ***! 1476 \***************************************/ 1477/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => { 1478 1479 1480 1481/* eslint-disable camelcase */ 1482__webpack_require__.p = elementorFrontendConfig.urls.assets + 'js/'; 1483 1484/***/ }), 1485
1486/***/ "../assets/dev/js/utils/breakpoints.js": 1487/*!*********************************************!*\ 1488 !*** ../assets/dev/js/utils/breakpoints.js ***! 1489 \*********************************************/ 1490/***/ ((__unused_webpack_module, exports, __webpack_require__) => { 1491 1492 1493 1494Object.defineProperty(exports, "__esModule", ({ 1495 value: true 1496})); 1497exports["default"] = void 0; 1498__webpack_require__(/*! core-js/modules/es.array.push.js */ "../node_modules/core-js/modules/es.array.push.js"); 1499__webpack_require__(/*! core-js/modules/esnext.iterator.constructor.js */ "../node_modules/core-js/modules/esnext.iterator.constructor.js"); 1500__webpack_require__(/*! core-js/modules/esnext.iterator.for-each.js */ "../node_modules/core-js/modules/esnext.iterator.for-each.js"); 1501__webpack_require__(/*! core-js/modules/esnext.iterator.map.js */ "../node_modules/core-js/modules/esnext.iterator.map.js"); 1502/** 1503 * Breakpoints 1504 * 1505 * This utility class contains helper functions relating to Elementor's breakpoints system. 1506 * 1507 * @since 3.4.0 1508 */ 1509class Breakpoints extends elementorModules.Module { 1510 constructor(responsiveConfig) { 1511 super(); 1512 1513 // The passed config is either `elementor.config.responsive` or `elementorFrontend.config.responsive` 1514 this.responsiveConfig = responsiveConfig; 1515 } 1516 1517 /** 1518 * Get Active Breakpoints List 1519 * 1520 * Returns a flat array containing the active breakpoints/devices. By default, it returns the li 1521 * the list ordered from smallest to largest breakpoint. If `true` is passed as a parameter, it reverses the order. 1522 * 1523 * @since 3.4.0 1524 * 1525 * @param {Object} args 1526 */ 1527 getActiveBreakpointsList(args = {}) { 1528 const defaultArgs = { 1529 largeToSmall: false, 1530 withDesktop: false 1531 }; 1532 args = { 1533 ...defaultArgs, 1534 ...args 1535 }; 1536 const breakpointKeys = Object.keys(this.responsiveConfig.activeBreakpoints); 1537 if (args.withDesktop) { 1538 // If there is an active 'widescreen' breakpoint, insert the artificial 'desktop' device below it. 1539 const widescreenIndex = breakpointKeys.indexOf('widescreen'), 1540 indexToInsertDesktopDevice = -1 === widescreenIndex ? breakpointKeys.length : breakpointKeys.length - 1; 1541 breakpointKeys.splice(indexToInsertDesktopDevice, 0, 'desktop'); 1542 } 1543 if (args.largeToSmall) { 1544 breakpointKeys.reverse(); 1545 } 1546 return breakpointKeys; 1547 } 1548 1549 /** 1550 * Get Active Breakpoint Values 1551 * 1552 * Returns a flat array containing the list of active breakpoint values, from smallest to largest. 1553 * 1554 * @since 3.4.0 1555 */ 1556 getBreakpointValues() { 1557 const { 1558 activeBreakpoints 1559 } = this.responsiveConfig, 1560 breakpointValues = []; 1561 Object.values(activeBreakpoints).forEach(breakpointConfig => { 1562 breakpointValues.push(breakpointConfig.value); 1563 }); 1564 return breakpointValues; 1565 } 1566 1567 /** 1568 * Get Desktop Previous Device Key 1569 * 1570 * Returns the key of the device directly under desktop (can be 'tablet', 'tablet_extra', 'laptop'). 1571 * 1572 * @since 3.4.0 1573 * 1574 * @return {string} device key 1575 */ 1576 getDesktopPreviousDeviceKey() { 1577 let desktopPreviousDevice = ''; 1578 const { 1579 activeBreakpoints 1580 } = this.responsiveConfig, 1581 breakpointKeys = Object.keys(activeBreakpoints), 1582 numOfDevices = breakpointKeys.length; 1583 if ('min' === activeBreakpoints[breakpointKeys[numOfDevices - 1]].direction) { 1584 // If the widescreen breakpoint is active, the device that's previous to desktop is the last one before 1585 // widescreen. 1586 desktopPreviousDevice = breakpointKeys[numOfDevices - 2]; 1587 } else { 1588 // If the widescreen breakpoint isn't active, we just take the last device returned by the config. 1589 desktopPreviousDevice = breakpointKeys[numOfDevices - 1]; 1590 } 1591 return desktopPreviousDevice; 1592 } 1593 1594 /** 1595 * Get Device Minimum Breakpoint 1596 * 1597 * Returns the minimum point in the device's display range. For each device, the minimum point of its display range 1598 * is the max point of the device below it + 1px. For example, if the active devices are mobile, tablet, 1599 * and desktop, and the mobile breakpoint is 767px, the minimum display point for tablet devices is 768px. 1600 * 1601 * @since 3.4.0 1602 * 1603 * @return {number|*} minimum breakpoint 1604 */ 1605 getDesktopMinPoint() { 1606 const { 1607 activeBreakpoints 1608 } = this.responsiveConfig, 1609 desktopPreviousDevice = this.getDesktopPreviousDeviceKey(); 1610 return activeBreakpoints[desktopPreviousDevice].value + 1; 1611 } 1612 1613 /** 1614 * Get Device Minimum Breakpoint 1615 *
1616 * Returns the minimum point in the device's display range. For each device, the minimum point of its display range 1617 * is the max point of the device below it + 1px. For example, if the active devices are mobile, tablet, 1618 * and desktop, and the mobile breakpoint is 767px, the minimum display point for tablet devices is 768px. 1619 * 1620 * @since 3.4.0 1621 * 1622 * @param {string} device 1623 * @return {number|*} minimum breakpoint 1624 */ 1625 getDeviceMinBreakpoint(device) { 1626 if ('desktop' === device) { 1627 return this.getDesktopMinPoint(); 1628 } 1629 const { 1630 activeBreakpoints 1631 } = this.responsiveConfig, 1632 breakpointNames = Object.keys(activeBreakpoints); 1633 let minBreakpoint; 1634 if (breakpointNames[0] === device) { 1635 // For the lowest breakpoint, the min point is always 320. 1636 minBreakpoint = 320; 1637 } else if ('widescreen' === device) { 1638 // Widescreen only has a minimum point. In this case, the breakpoint 1639 // value in the Breakpoints config is itself the device min point. 1640 if (activeBreakpoints[device]) { 1641 minBreakpoint = activeBreakpoints[device].value; 1642 } else { 1643 // If the widescreen breakpoint does not exist in the active breakpoints config (for example, in the 1644 // case this method runs as the breakpoint is being added), get the value from the full config. 1645 minBreakpoint = this.responsiveConfig.breakpoints.widescreen; 1646 } 1647 } else { 1648 const deviceNameIndex = breakpointNames.indexOf(device), 1649 previousIndex = deviceNameIndex - 1; 1650 minBreakpoint = activeBreakpoints[breakpointNames[previousIndex]].value + 1; 1651 } 1652 return minBreakpoint; 1653 } 1654 1655 /** 1656 * Get Active Match Regex 1657 * 1658 * Returns a regular expression containing all active breakpoints prefixed with an underscore. 1659 * 1660 * @return {RegExp} Active Match Regex 1661 */ 1662 getActiveMatchRegex() { 1663 return new RegExp(this.getActiveBreakpointsList().map(device => '_' + device).join('|') + '$'); 1664 } 1665} 1666exports["default"] = Breakpoints; 1667 1668/***/ }), 1669
1670/***/ "../assets/dev/js/utils/events.js": 1671/*!****************************************!*\ 1672 !*** ../assets/dev/js/utils/events.js ***! 1673 \****************************************/ 1674/***/ ((__unused_webpack_module, exports) => { 1675 1676 1677 1678Object.defineProperty(exports, "__esModule", ({ 1679 value: true 1680})); 1681exports["default"] = exports.Events = void 0; 1682class Events { 1683 /** 1684 * Dispatch an Elementor event. 1685 * 1686 * Will dispatch both native event & jQuery event (as BC). 1687 * By default, `bcEvent` is `null`. 1688 * 1689 * @param {Object} context - The context that will dispatch the event. 1690 * @param {string} event - Event to dispatch. 1691 * @param {*} data - Data to pass to the event, default to `null`. 1692 * @param {string|null} bcEvent - BC event to dispatch, default to `null`. 1693 * 1694 * @return {void} 1695 */ 1696 static dispatch(context, event, data = null, bcEvent = null) { 1697 // Make sure to use the native context if it's a jQuery instance. 1698 context = context instanceof jQuery ? context[0] : context; 1699 1700 // Dispatch the BC event only if exists. 1701 if (bcEvent) { 1702 context.dispatchEvent(new CustomEvent(bcEvent, { 1703 detail: data 1704 })); 1705 } 1706 1707 // jQuery's `.on()` listens also to native custom events, so there is no need 1708 // to dispatch also a jQuery event. 1709 context.dispatchEvent(new CustomEvent(event, { 1710 detail: data 1711 })); 1712 } 1713} 1714exports.Events = Events; 1715var _default = exports["default"] = Events; 1716 1717/***/ }), 1718
1719/***/ "../assets/dev/js/utils/hooks.js": 1720/*!***************************************!*\ 1721 !*** ../assets/dev/js/utils/hooks.js ***! 1722 \***************************************/ 1723/***/ ((module, __unused_webpack_exports, __webpack_require__) => { 1724 1725 1726 1727/** 1728 * Handles managing all events for whatever you plug it into. Priorities for hooks are based on lowest to highest in 1729 * that, lowest priority hooks are fired first. 1730 */ 1731__webpack_require__(/*! core-js/modules/es.array.push.js */ "../node_modules/core-js/modules/es.array.push.js"); 1732var EventManager = function () { 1733 var slice = Array.prototype.slice, 1734 MethodsAvailable; 1735 1736 /** 1737 * Contains the hooks that get registered with this EventManager. The array for storage utilizes a "flat" 1738 * object literal such that looking up the hook utilizes the native object literal hash. 1739 */ 1740 var STORAGE = { 1741 actions: {}, 1742 filters: {} 1743 }; 1744 1745 /** 1746 * Removes the specified hook by resetting the value of it. 1747 * 1748 * @param {string} type Type of hook, either 'actions' or 'filters' 1749 * @param {Function} hook The hook (namespace.identifier) to remove 1750 * @param {Function} callback 1751 * @param {*} context 1752 * @private 1753 */ 1754 function _removeHook(type, hook, callback, context) { 1755 var handlers, handler, i; 1756 if (!STORAGE[type][hook]) { 1757 return; 1758 } 1759 if (!callback) { 1760 STORAGE[type][hook] = []; 1761 } else { 1762 handlers = STORAGE[type][hook]; 1763 if (!context) { 1764 for (i = handlers.length; i--;) { 1765 if (handlers[i].callback === callback) { 1766 handlers.splice(i, 1); 1767 } 1768 } 1769 } else { 1770 for (i = handlers.length; i--;) { 1771 handler = handlers[i]; 1772 if (handler.callback === callback && handler.context === context) { 1773 handlers.splice(i, 1); 1774 } 1775 } 1776 } 1777 } 1778 } 1779 1780 /** 1781 * Use an insert sort for keeping our hooks organized based on priority. This function is ridiculously faster 1782 * than bubble sort, etc: http://jsperf.com/javascript-sort 1783 * 1784 * @param {Array<*>} hooks The custom array containing all of the appropriate hooks to perform an insert sort on. 1785 * @private 1786 */ 1787 function _hookInsertSort(hooks) { 1788 var tmpHook, j, prevHook; 1789 for (var i = 1, len = hooks.length; i < len; i++) { 1790 tmpHook = hooks[i]; 1791 j = i; 1792 while ((prevHook = hooks[j - 1]) && prevHook.priority > tmpHook.priority) { 1793 hooks[j] = hooks[j - 1]; 1794 --j; 1795 } 1796 hooks[j] = tmpHook; 1797 } 1798 return hooks; 1799 } 1800 1801 /** 1802 * Adds the hook to the appropriate storage container 1803 * 1804 * @param {string} type 'actions' or 'filters' 1805 * @param {Array<*>} hook The hook (namespace.identifier) to add to our event manager 1806 * @param {Function} callback The function that will be called when the hook is executed. 1807 * @param {number} priority The priority of this hook. Must be an integer. 1808 * @param {*} [context] A value to be used for this 1809 * @private 1810 */ 1811 function _addHook(type, hook, callback, priority, context) { 1812 var hookObject = { 1813 callback, 1814 priority, 1815 context 1816 }; 1817 1818 // Utilize 'prop itself' : http://jsperf.com/hasownproperty-vs-in-vs-undefined/19 1819 var hooks = STORAGE[type][hook]; 1820 if (hooks) { 1821 // TEMP FIX BUG 1822 var hasSameCallback = false; 1823 jQuery.each(hooks, function () { 1824 if (this.callback === callback) { 1825 hasSameCallback = true; 1826 return false; 1827 } 1828 }); 1829 if (hasSameCallback) { 1830 return; 1831 } 1832 // END TEMP FIX BUG 1833 1834 hooks.push(hookObject); 1835 hooks = _hookInsertSort(hooks); 1836 } else { 1837 hooks = [hookObject]; 1838 } 1839 STORAGE[type][hook] = hooks; 1840 } 1841 1842 /** 1843 * Runs the specified hook. If it is an action, the value is not modified but if it is a filter, it is. 1844 * 1845 * @param {string} type 'actions' or 'filters' 1846 * @param {*} hook The hook ( namespace.identifier ) to be ran. 1847 * @param {Array<*>} args Arguments to pass to the action/filter. If it's a filter, args is actually a single parameter. 1848 * @private 1849 */ 1850 function _runHook(type, hook, args) { 1851 var handlers = STORAGE[type][hook], 1852 i, 1853 len; 1854 if (!handlers) { 1855 return 'filters' === type ? args[0] : false;
1856 } 1857 len = handlers.length; 1858 if ('filters' === type) { 1859 for (i = 0; i < len; i++) { 1860 args[0] = handlers[i].callback.apply(handlers[i].context, args); 1861 } 1862 } else { 1863 for (i = 0; i < len; i++) { 1864 handlers[i].callback.apply(handlers[i].context, args); 1865 } 1866 } 1867 return 'filters' === type ? args[0] : true; 1868 } 1869 1870 /** 1871 * Adds an action to the event manager. 1872 * 1873 * @param {string} action Must contain namespace.identifier 1874 * @param {Function} callback Must be a valid callback function before this action is added 1875 * @param {number} [priority=10] Used to control when the function is executed in relation to other callbacks bound to the same hook 1876 * @param {*} [context] Supply a value to be used for this 1877 */ 1878 function addAction(action, callback, priority, context) { 1879 if ('string' === typeof action && 'function' === typeof callback) { 1880 priority = parseInt(priority || 10, 10); 1881 _addHook('actions', action, callback, priority, context); 1882 } 1883 return MethodsAvailable; 1884 } 1885 1886 /** 1887 * Performs an action if it exists. You can pass as many arguments as you want to this function; the only rule is 1888 * that the first argument must always be the action. 1889 */ 1890 function doAction(/* Action, arg1, arg2, ... */ 1891 ) { 1892 var args = slice.call(arguments); 1893 var action = args.shift(); 1894 if ('string' === typeof action) { 1895 _runHook('actions', action, args); 1896 } 1897 return MethodsAvailable; 1898 } 1899 1900 /** 1901 * Removes the specified action if it contains a namespace.identifier & exists. 1902 * 1903 * @param {string} action The action to remove 1904 * @param {Function} [callback] Callback function to remove 1905 */ 1906 function removeAction(action, callback) { 1907 if ('string' === typeof action) { 1908 _removeHook('actions', action, callback); 1909 } 1910 return MethodsAvailable; 1911 } 1912 1913 /** 1914 * Adds a filter to the event manager. 1915 * 1916 * @param {string} filter Must contain namespace.identifier 1917 * @param {Function} callback Must be a valid callback function before this action is added 1918 * @param {number} [priority=10] Used to control when the function is executed in relation to other callbacks bound to the same hook 1919 * @param {*} [context] Supply a value to be used for this 1920 */ 1921 function addFilter(filter, callback, priority, context) { 1922 if ('string' === typeof filter && 'function' === typeof callback) { 1923 priority = parseInt(priority || 10, 10); 1924 _addHook('filters', filter, callback, priority, context); 1925 } 1926 return MethodsAvailable; 1927 } 1928 1929 /** 1930 * Performs a filter if it exists. You should only ever pass 1 argument to be filtered. The only rule is that 1931 * the first argument must always be the filter. 1932 */ 1933 function applyFilters(/* Filter, filtered arg, arg2, ... */ 1934 ) { 1935 var args = slice.call(arguments); 1936 var filter = args.shift(); 1937 if ('string' === typeof filter) { 1938 return _runHook('filters', filter, args); 1939 } 1940 return MethodsAvailable; 1941 } 1942 1943 /** 1944 * Removes the specified filter if it contains a namespace.identifier & exists. 1945 * 1946 * @param {string} filter The action to remove 1947 * @param {Function} [callback] Callback function to remove 1948 */ 1949 function removeFilter(filter, callback) { 1950 if ('string' === typeof filter) { 1951 _removeHook('filters', filter, callback); 1952 } 1953 return MethodsAvailable; 1954 } 1955 1956 /** 1957 * Maintain a reference to the object scope so our public methods never get confusing. 1958 */ 1959 MethodsAvailable = { 1960 removeFilter, 1961 applyFilters, 1962 addFilter, 1963 removeAction, 1964 doAction, 1965 addAction 1966 }; 1967 1968 // Return all of the publicly available methods 1969 return MethodsAvailable; 1970}; 1971module.exports = EventManager; 1972 1973/***/ }), 1974
1975/***/ "../core/common/assets/js/utils/environment.js": 1976/*!*****************************************************!*\ 1977 !*** ../core/common/assets/js/utils/environment.js ***! 1978 \*****************************************************/ 1979/***/ ((__unused_webpack_module, exports) => { 1980 1981 1982 1983Object.defineProperty(exports, "__esModule", ({ 1984 value: true 1985})); 1986exports["default"] = void 0; 1987const matchUserAgent = UserAgentStr => { 1988 return userAgent.indexOf(UserAgentStr) >= 0; 1989 }, 1990 userAgent = navigator.userAgent, 1991 // Solution influenced by https://stackoverflow.com/questions/9847580/how-to-detect-safari-chrome-ie-firefox-and-opera-browser 1992 1993 // Opera 8.0+ 1994 isOpera = !!window.opr && !!opr.addons || !!window.opera || matchUserAgent(' OPR/'), 1995 // Firefox 1.0+ 1996 isFirefox = matchUserAgent('Firefox'), 1997 // Safari 3.0+ "[object HTMLElementConstructor]" 1998 isSafari = /^((?!chrome|android).)*safari/i.test(userAgent) || /constructor/i.test(window.HTMLElement) || (p => { 1999 return '[object SafariRemoteNotification]' === p.toString(); 2000 })(!window.safari || typeof safari !== 'undefined' && safari.pushNotification), 2001 // Internet Explorer 6-11 2002 isIE = /Trident|MSIE/.test(userAgent) && (/* @cc_on!@*/ false || !!document.documentMode), 2003 // Edge 20+ 2004 isEdge = !isIE && !!window.StyleMedia || matchUserAgent('Edg'), 2005 // Google Chrome (Not accurate) 2006 isChrome = !!window.chrome && matchUserAgent('Chrome') && !(isEdge || isOpera), 2007 // Blink engine 2008 isBlink = matchUserAgent('Chrome') && !!window.CSS, 2009 // Apple Webkit engine 2010 isAppleWebkit = matchUserAgent('AppleWebKit') && !isBlink, 2011 isTouchDevice = 'ontouchstart' in window || navigator.maxTouchPoints > 0 || navigator.msMaxTouchPoints > 0, 2012 environment = { 2013 isTouchDevice, 2014 appleWebkit: isAppleWebkit, 2015 blink: isBlink, 2016 chrome: isChrome, 2017 edge: isEdge, 2018 firefox: isFirefox, 2019 ie: isIE, 2020 mac: matchUserAgent('Macintosh'), 2021 opera: isOpera, 2022 safari: isSafari, 2023 webkit: matchUserAgent('AppleWebKit') 2024 }; 2025var _default = exports["default"] = environment; 2026 2027/***/ }), 2028
2029/***/ "../core/common/assets/js/utils/storage.js": 2030/*!*************************************************!*\ 2031 !*** ../core/common/assets/js/utils/storage.js ***! 2032 \*************************************************/ 2033/***/ ((__unused_webpack_module, exports, __webpack_require__) => { 2034 2035 2036 2037Object.defineProperty(exports, "__esModule", ({ 2038 value: true 2039})); 2040exports["default"] = void 0; 2041__webpack_require__(/*! core-js/modules/esnext.iterator.constructor.js */ "../node_modules/core-js/modules/esnext.iterator.constructor.js"); 2042__webpack_require__(/*! core-js/modules/esnext.iterator.for-each.js */ "../node_modules/core-js/modules/esnext.iterator.for-each.js"); 2043class _default extends elementorModules.Module { 2044 get(key, options) { 2045 options = options || {}; 2046 let storage; 2047 try { 2048 storage = options.session ? sessionStorage : localStorage; 2049 } catch (e) { 2050 return key ? undefined : {}; 2051 } 2052 let elementorStorage = storage.getItem('elementor'); 2053 if (elementorStorage) { 2054 elementorStorage = JSON.parse(elementorStorage); 2055 } else { 2056 elementorStorage = {}; 2057 } 2058 if (!elementorStorage.__expiration) { 2059 elementorStorage.__expiration = {}; 2060 } 2061 const expiration = elementorStorage.__expiration; 2062 let expirationToCheck = []; 2063 if (key) { 2064 if (expiration[key]) { 2065 expirationToCheck = [key]; 2066 } 2067 } else { 2068 expirationToCheck = Object.keys(expiration); 2069 } 2070 let entryExpired = false; 2071 expirationToCheck.forEach(expirationKey => { 2072 if (new Date(expiration[expirationKey]) < new Date()) { 2073 delete elementorStorage[expirationKey]; 2074 delete expiration[expirationKey]; 2075 entryExpired = true; 2076 } 2077 }); 2078 if (entryExpired) { 2079 this.save(elementorStorage, options.session); 2080 } 2081 if (key) { 2082 return elementorStorage[key]; 2083 } 2084 return elementorStorage; 2085 } 2086 set(key, value, options) { 2087 options = options || {}; 2088 const elementorStorage = this.get(null, options); 2089 elementorStorage[key] = value; 2090 if (options.lifetimeInSeconds) { 2091 const date = new Date(); 2092 date.setTime(date.getTime() + options.lifetimeInSeconds * 1000); 2093 elementorStorage.__expiration[key] = date.getTime(); 2094 } 2095 this.save(elementorStorage, options.session); 2096 } 2097 save(object, session) { 2098 let storage; 2099 try { 2100 storage = session ? sessionStorage : localStorage; 2101 } catch (e) { 2102 return; 2103 } 2104 storage.setItem('elementor', JSON.stringify(object)); 2105 } 2106} 2107exports["default"] = _default; 2108 2109/***/ }), 2110
2111/***/ "../modules/shapes/assets/js/frontend/frontend.js": 2112/*!********************************************************!*\ 2113 !*** ../modules/shapes/assets/js/frontend/frontend.js ***! 2114 \********************************************************/ 2115/***/ ((__unused_webpack_module, exports, __webpack_require__) => { 2116 2117 2118 2119Object.defineProperty(exports, "__esModule", ({ 2120 value: true 2121})); 2122exports["default"] = void 0; 2123class _default extends elementorModules.Module { 2124 constructor() { 2125 super(); 2126 elementorFrontend.elementsHandler.attachHandler('text-path', () => Promise.all(/*! import() | text-path */[__webpack_require__.e("vendors-node_modules_dompurify_dist_purify_cjs_js"), __webpack_require__.e("text-path")]).then(__webpack_require__.bind(__webpack_require__, /*! ./handlers/text-path */ "../modules/shapes/assets/js/frontend/handlers/text-path.js"))); 2127 } 2128} 2129exports["default"] = _default; 2130 2131/***/ }), 2132
vendor: 739 bytes, lines 2133-2152
2133/***/ "../node_modules/core-js/internals/a-possible-prototype.js": 2134/*!*****************************************************************!*\ 2135 !*** ../node_modules/core-js/internals/a-possible-prototype.js ***! 2136 \*****************************************************************/ 2137/***/ ((module, __unused_webpack_exports, __webpack_require__) => { 2138 2139 2140var isPossiblePrototype = __webpack_require__(/*! ../internals/is-possible-prototype */ "../node_modules/core-js/internals/is-possible-prototype.js"); 2141 2142var $String = String; 2143var $TypeError = TypeError; 2144 2145module.exports = function (argument) { 2146 if (isPossiblePrototype(argument)) return argument; 2147 throw new $TypeError("Can't set " + $String(argument) + ' as a prototype'); 2148}; 2149 2150 2151/***/ }), 2152
vendor: 1,867 bytes, lines 2153-2190
2153/***/ "../node_modules/core-js/internals/dom-exception-constants.js": 2154/*!********************************************************************!*\ 2155 !*** ../node_modules/core-js/internals/dom-exception-constants.js ***! 2156 \********************************************************************/ 2157/***/ ((module) => { 2158 2159 2160module.exports = { 2161 IndexSizeError: { s: 'INDEX_SIZE_ERR', c: 1, m: 1 }, 2162 DOMStringSizeError: { s: 'DOMSTRING_SIZE_ERR', c: 2, m: 0 }, 2163 HierarchyRequestError: { s: 'HIERARCHY_REQUEST_ERR', c: 3, m: 1 }, 2164 WrongDocumentError: { s: 'WRONG_DOCUMENT_ERR', c: 4, m: 1 }, 2165 InvalidCharacterError: { s: 'INVALID_CHARACTER_ERR', c: 5, m: 1 }, 2166 NoDataAllowedError: { s: 'NO_DATA_ALLOWED_ERR', c: 6, m: 0 }, 2167 NoModificationAllowedError: { s: 'NO_MODIFICATION_ALLOWED_ERR', c: 7, m: 1 }, 2168 NotFoundError: { s: 'NOT_FOUND_ERR', c: 8, m: 1 }, 2169 NotSupportedError: { s: 'NOT_SUPPORTED_ERR', c: 9, m: 1 }, 2170 InUseAttributeError: { s: 'INUSE_ATTRIBUTE_ERR', c: 10, m: 1 }, 2171 InvalidStateError: { s: 'INVALID_STATE_ERR', c: 11, m: 1 }, 2172 SyntaxError: { s: 'SYNTAX_ERR', c: 12, m: 1 }, 2173 InvalidModificationError: { s: 'INVALID_MODIFICATION_ERR', c: 13, m: 1 }, 2174 NamespaceError: { s: 'NAMESPACE_ERR', c: 14, m: 1 }, 2175 InvalidAccessError: { s: 'INVALID_ACCESS_ERR', c: 15, m: 1 }, 2176 ValidationError: { s: 'VALIDATION_ERR', c: 16, m: 0 }, 2177 TypeMismatchError: { s: 'TYPE_MISMATCH_ERR', c: 17, m: 1 }, 2178 SecurityError: { s: 'SECURITY_ERR', c: 18, m: 1 }, 2179 NetworkError: { s: 'NETWORK_ERR', c: 19, m: 1 }, 2180 AbortError: { s: 'ABORT_ERR', c: 20, m: 1 }, 2181 URLMismatchError: { s: 'URL_MISMATCH_ERR', c: 21, m: 1 }, 2182 QuotaExceededError: { s: 'QUOTA_EXCEEDED_ERR', c: 22, m: 1 }, 2183 TimeoutError: { s: 'TIMEOUT_ERR', c: 23, m: 1 }, 2184 InvalidNodeTypeError: { s: 'INVALID_NODE_TYPE_ERR', c: 24, m: 1 }, 2185 DataCloneError: { s: 'DATA_CLONE_ERR', c: 25, m: 1 } 2186}; 2187 2188 2189/***/ }), 2190
vendor: 1,070 bytes, lines 2191-2216
2191/***/ "../node_modules/core-js/internals/error-stack-clear.js": 2192/*!**************************************************************!*\ 2193 !*** ../node_modules/core-js/internals/error-stack-clear.js ***! 2194 \**************************************************************/ 2195/***/ ((module, __unused_webpack_exports, __webpack_require__) => { 2196 2197 2198var uncurryThis = __webpack_require__(/*! ../internals/function-uncurry-this */ "../node_modules/core-js/internals/function-uncurry-this.js"); 2199 2200var $Error = Error; 2201var replace = uncurryThis(''.replace); 2202 2203var TEST = (function (arg) { return String(new $Error(arg).stack); })('zxcasd'); 2204// eslint-disable-next-line redos/no-vulnerable, sonarjs/slow-regex -- safe 2205var V8_OR_CHAKRA_STACK_ENTRY = /\n\s*at [^:]*:[^\n]*/; 2206var IS_V8_OR_CHAKRA_STACK = V8_OR_CHAKRA_STACK_ENTRY.test(TEST); 2207 2208module.exports = function (stack, dropEntries) { 2209 if (IS_V8_OR_CHAKRA_STACK && typeof stack == 'string' && !$Error.prepareStackTrace) { 2210 while (dropEntries--) stack = replace(stack, V8_OR_CHAKRA_STACK_ENTRY, ''); 2211 } return stack; 2212}; 2213 2214 2215/***/ }), 2216
vendor: 927 bytes, lines 2217-2236
2217/***/ "../node_modules/core-js/internals/function-uncurry-this-accessor.js": 2218/*!***************************************************************************!*\ 2219 !*** ../node_modules/core-js/internals/function-uncurry-this-accessor.js ***! 2220 \***************************************************************************/ 2221/***/ ((module, __unused_webpack_exports, __webpack_require__) => { 2222 2223 2224var uncurryThis = __webpack_require__(/*! ../internals/function-uncurry-this */ "../node_modules/core-js/internals/function-uncurry-this.js"); 2225var aCallable = __webpack_require__(/*! ../internals/a-callable */ "../node_modules/core-js/internals/a-callable.js"); 2226 2227module.exports = function (object, key, method) { 2228 try { 2229 // eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe 2230 return uncurryThis(aCallable(Object.getOwnPropertyDescriptor(object, key)[method])); 2231 } catch (error) { /* empty */ } 2232}; 2233 2234 2235/***/ }), 2236
vendor: 1,308 bytes, lines 2237-2265
2237/***/ "../node_modules/core-js/internals/inherit-if-required.js": 2238/*!****************************************************************!*\ 2239 !*** ../node_modules/core-js/internals/inherit-if-required.js ***! 2240 \****************************************************************/ 2241/***/ ((module, __unused_webpack_exports, __webpack_require__) => { 2242 2243 2244var isCallable = __webpack_require__(/*! ../internals/is-callable */ "../node_modules/core-js/internals/is-callable.js"); 2245var isObject = __webpack_require__(/*! ../internals/is-object */ "../node_modules/core-js/internals/is-object.js"); 2246var setPrototypeOf = __webpack_require__(/*! ../internals/object-set-prototype-of */ "../node_modules/core-js/internals/object-set-prototype-of.js"); 2247 2248// makes subclassing work correct for wrapped built-ins 2249module.exports = function ($this, dummy, Wrapper) { 2250 var NewTarget, NewTargetPrototype; 2251 if ( 2252 // it can work only with native `setPrototypeOf` 2253 setPrototypeOf && 2254 // we haven't completely correct pre-ES6 way for getting `new.target`, so use this 2255 isCallable(NewTarget = dummy.constructor) && 2256 NewTarget !== Wrapper && 2257 isObject(NewTargetPrototype = NewTarget.prototype) && 2258 NewTargetPrototype !== Wrapper.prototype 2259 ) setPrototypeOf($this, NewTargetPrototype); 2260 return $this; 2261}; 2262 2263 2264/***/ }), 2265
vendor: 575 bytes, lines 2266-2281
2266/***/ "../node_modules/core-js/internals/is-possible-prototype.js": 2267/*!******************************************************************!*\ 2268 !*** ../node_modules/core-js/internals/is-possible-prototype.js ***! 2269 \******************************************************************/ 2270/***/ ((module, __unused_webpack_exports, __webpack_require__) => { 2271 2272 2273var isObject = __webpack_require__(/*! ../internals/is-object */ "../node_modules/core-js/internals/is-object.js"); 2274 2275module.exports = function (argument) { 2276 return isObject(argument) || argument === null; 2277}; 2278 2279 2280/***/ }), 2281
vendor: 644 bytes, lines 2282-2297
2282/***/ "../node_modules/core-js/internals/normalize-string-argument.js": 2283/*!**********************************************************************!*\ 2284 !*** ../node_modules/core-js/internals/normalize-string-argument.js ***! 2285 \**********************************************************************/ 2286/***/ ((module, __unused_webpack_exports, __webpack_require__) => { 2287 2288 2289var toString = __webpack_require__(/*! ../internals/to-string */ "../node_modules/core-js/internals/to-string.js"); 2290 2291module.exports = function (argument, $default) { 2292 return argument === undefined ? arguments.length < 2 ? '' : $default : toString(argument); 2293}; 2294 2295 2296/***/ }), 2297
vendor: 1,797 bytes, lines 2298-2336
2298/***/ "../node_modules/core-js/internals/object-set-prototype-of.js": 2299/*!********************************************************************!*\ 2300 !*** ../node_modules/core-js/internals/object-set-prototype-of.js ***! 2301 \********************************************************************/ 2302/***/ ((module, __unused_webpack_exports, __webpack_require__) => { 2303 2304 2305/* eslint-disable no-proto -- safe */ 2306var uncurryThisAccessor = __webpack_require__(/*! ../internals/function-uncurry-this-accessor */ "../node_modules/core-js/internals/function-uncurry-this-accessor.js"); 2307var isObject = __webpack_require__(/*! ../internals/is-object */ "../node_modules/core-js/internals/is-object.js"); 2308var requireObjectCoercible = __webpack_require__(/*! ../internals/require-object-coercible */ "../node_modules/core-js/internals/require-object-coercible.js"); 2309var aPossiblePrototype = __webpack_require__(/*! ../internals/a-possible-prototype */ "../node_modules/core-js/internals/a-possible-prototype.js"); 2310 2311// `Object.setPrototypeOf` method 2312// https://tc39.es/ecma262/#sec-object.setprototypeof 2313// Works with __proto__ only. Old v8 can't work with null proto objects. 2314// eslint-disable-next-line es/no-object-setprototypeof -- safe 2315module.exports = Object.setPrototypeOf || ('__proto__' in {} ? function () { 2316 var CORRECT_SETTER = false; 2317 var test = {}; 2318 var setter; 2319 try { 2320 setter = uncurryThisAccessor(Object.prototype, '__proto__', 'set'); 2321 setter(test, []); 2322 CORRECT_SETTER = test instanceof Array; 2323 } catch (error) { /* empty */ } 2324 return function setPrototypeOf(O, proto) { 2325 requireObjectCoercible(O); 2326 aPossiblePrototype(proto); 2327 if (!isObject(O)) return O; 2328 if (CORRECT_SETTER) setter(O, proto); 2329 else O.__proto__ = proto; 2330 return O; 2331 }; 2332}() : undefined); 2333 2334 2335/***/ }), 2336
vendor: 627 bytes, lines 2337-2355
2337/***/ "../node_modules/core-js/internals/to-string.js": 2338/*!******************************************************!*\ 2339 !*** ../node_modules/core-js/internals/to-string.js ***! 2340 \******************************************************/ 2341/***/ ((module, __unused_webpack_exports, __webpack_require__) => { 2342 2343 2344var classof = __webpack_require__(/*! ../internals/classof */ "../node_modules/core-js/internals/classof.js"); 2345 2346var $String = String; 2347 2348module.exports = function (argument) { 2349 if (classof(argument) === 'Symbol') throw new TypeError('Cannot convert a Symbol value to a string'); 2350 return $String(argument); 2351}; 2352 2353 2354/***/ }), 2355
vendor: 4,570 bytes, lines 2356-2432
2356/***/ "../node_modules/core-js/modules/web.dom-exception.stack.js": 2357/*!******************************************************************!*\ 2358 !*** ../node_modules/core-js/modules/web.dom-exception.stack.js ***! 2359 \******************************************************************/ 2360/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => { 2361 2362 2363var $ = __webpack_require__(/*! ../internals/export */ "../node_modules/core-js/internals/export.js"); 2364var globalThis = __webpack_require__(/*! ../internals/global-this */ "../node_modules/core-js/internals/global-this.js"); 2365var getBuiltIn = __webpack_require__(/*! ../internals/get-built-in */ "../node_modules/core-js/internals/get-built-in.js"); 2366var createPropertyDescriptor = __webpack_require__(/*! ../internals/create-property-descriptor */ "../node_modules/core-js/internals/create-property-descriptor.js"); 2367var defineProperty = (__webpack_require__(/*! ../internals/object-define-property */ "../node_modules/core-js/internals/object-define-property.js").f); 2368var hasOwn = __webpack_require__(/*! ../internals/has-own-property */ "../node_modules/core-js/internals/has-own-property.js"); 2369var anInstance = __webpack_require__(/*! ../internals/an-instance */ "../node_modules/core-js/internals/an-instance.js"); 2370var inheritIfRequired = __webpack_require__(/*! ../internals/inherit-if-required */ "../node_modules/core-js/internals/inherit-if-required.js"); 2371var normalizeStringArgument = __webpack_require__(/*! ../internals/normalize-string-argument */ "../node_modules/core-js/internals/normalize-string-argument.js"); 2372var DOMExceptionConstants = __webpack_require__(/*! ../internals/dom-exception-constants */ "../node_modules/core-js/internals/dom-exception-constants.js"); 2373var clearErrorStack = __webpack_require__(/*! ../internals/error-stack-clear */ "../node_modules/core-js/internals/error-stack-clear.js"); 2374var DESCRIPTORS = __webpack_require__(/*! ../internals/descriptors */ "../node_modules/core-js/internals/descriptors.js"); 2375var IS_PURE = __webpack_require__(/*! ../internals/is-pure */ "../node_modules/core-js/internals/is-pure.js"); 2376 2377var DOM_EXCEPTION = 'DOMException'; 2378var Error = getBuiltIn('Error'); 2379var NativeDOMException = getBuiltIn(DOM_EXCEPTION); 2380 2381var $DOMException = function DOMException() { 2382 anInstance(this, DOMExceptionPrototype); 2383 var argumentsLength = arguments.length; 2384 var message = normalizeStringArgument(argumentsLength < 1 ? undefined : arguments[0]); 2385 var name = normalizeStringArgument(argumentsLength < 2 ? undefined : arguments[1], 'Error'); 2386 var that = new NativeDOMException(message, name); 2387 var error = new Error(message); 2388 error.name = DOM_EXCEPTION; 2389 defineProperty(that, 'stack', createPropertyDescriptor(1, clearErrorStack(error.stack, 1))); 2390 inheritIfRequired(that, this, $DOMException); 2391 return that; 2392}; 2393 2394var DOMExceptionPrototype = $DOMException.prototype = NativeDOMException.prototype; 2395 2396var ERROR_HAS_STACK = 'stack' in new Error(DOM_EXCEPTION); 2397var DOM_EXCEPTION_HAS_STACK = 'stack' in new NativeDOMException(1, 2); 2398 2399// eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe 2400var descriptor = NativeDOMException && DESCRIPTORS && Object.getOwnPropertyDescriptor(globalThis, DOM_EXCEPTION); 2401 2402// Bun ~ 0.1.1 DOMException have incorrect descriptor and we can't redefine it 2403// https://github.com/Jarred-Sumner/bun/issues/399 2404var BUGGY_DESCRIPTOR = !!descriptor && !(descriptor.writable && descriptor.configurable); 2405 2406var FORCED_CONSTRUCTOR = ERROR_HAS_STACK && !BUGGY_DESCRIPTOR && !DOM_EXCEPTION_HAS_STACK; 2407 2408// `DOMException` constructor patch for `.stack` where it's required 2409// https://webidl.spec.whatwg.org/#es-DOMException-specialness 2410$({ global: true, constructor: true, forced: IS_PURE || FORCED_CONSTRUCTOR }, { // TODO: fix export logic 2411 DOMException: FORCED_CONSTRUCTOR ? $DOMException : NativeDOMException 2412}); 2413 2414var PolyfilledDOMException = getBuiltIn(DOM_EXCEPTION); 2415var PolyfilledDOMExceptionPrototype = PolyfilledDOMException.prototype; 2416 2417if (PolyfilledDOMExceptionPrototype.constructor !== PolyfilledDOMException) { 2418 if (!IS_PURE) { 2419 defineProperty(PolyfilledDOMExceptionPrototype, 'constructor', createPropertyDescriptor(1, PolyfilledDOMException)); 2420 } 2421 2422 for (var key in DOMExceptionConstants) if (hasOwn(DOMExceptionConstants, key)) { 2423 var constant = DOMExceptionConstants[key]; 2424 var constantName = constant.s; 2425 if (!hasOwn(PolyfilledDOMException, constantName)) { 2426 defineProperty(PolyfilledDOMException, constantName, createPropertyDescriptor(6, constant.c)); 2427 } 2428 } 2429} 2430 2431 2432/***/ })
2432 2433 2434}, 2435/******/ __webpack_require__ => { // webpackRuntimeModules 2436/******/ var __webpack_exec__ = (moduleId) => (__webpack_require__(__webpack_require__.s = moduleId)) 2437/******/ __webpack_require__.O(0, ["frontend-modules"], () => (__webpack_exec__("../assets/dev/js/frontend/frontend.js"))); 2438/******/ var __webpack_exports__ = __webpack_require__.O(); 2439/******/ } 2440]); 2441//# sourceMappingURL=frontend.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.