PageSourceSearch

https://csuca.org/wp-content/plugins/elementor/assets/js/frontend.js?ver=4.1.4

js csuca.org collected 2026-09-24 18:28:39 UTC 97,435 bytes, 2,452 lines download raw bytes

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    config = this.applyMotionPreferences(config);
1171    return new SwiperSource(container, config);
1172  }
1173
1174  // Backwards compatibility for Elementor Pro <2.9.0 (old Swiper version - <5.0.0)
1175  // In Swiper 5.0.0 and up, breakpoints changed from acting as max-width to acting as min-width
1176  adjustConfig(config) {
1177    // Only reverse the breakpoints if the handle param has been defined
1178    if (!config.handleElementorBreakpoints) {
1179      return config;
1180    }
1181    const elementorBreakpoints = elementorFrontend.config.responsive.activeBreakpoints,
1182      elementorBreakpointValues = elementorFrontend.breakpoints.getBreakpointValues();
1183    Object.keys(config.breakpoints).forEach(configBPKey => {
1184      const configBPKeyInt = parseInt(configBPKey);
1185      let breakpointToUpdate;
1186
1187      // The `configBPKeyInt + 1` is a BC Fix for Elementor Pro Carousels from 2.8.0-2.8.3 used with Elementor >= 2.9.0
1188      if (configBPKeyInt === elementorBreakpoints.mobile.value || configBPKeyInt + 1 === elementorBreakpoints.mobile.value) {
1189        // This handles the mobile breakpoint. Elementor's default sm breakpoint is never actually used,
1190        // so the mobile breakpoint (md) needs to be handled separately and set to the 0 breakpoint (xs)
1191        breakpointToUpdate = 0;
1192      } else if (elementorBreakpoints.widescreen && (configBPKeyInt === elementorBreakpoints.widescreen.value || configBPKeyInt + 1 === elementorBreakpoints.widescreen.value)) {
1193        // Widescreen is a min-width breakpoint. Since in Swiper >5.0 the breakpoint system is min-width based,
1194        // the value we pass to the Swiper instance in this case is the breakpoint from the user, unchanged.
1195        breakpointToUpdate = configBPKeyInt;
1196      } else {
1197        // Find the index of the current config breakpoint in the Elementor Breakpoints array
1198        const currentBPIndexInElementorBPs = elementorBreakpointValues.findIndex(elementorBP => {
1199          // BC Fix for Elementor Pro Carousels from 2.8.0-2.8.3 used with Elementor >= 2.9.0
1200          return configBPKeyInt === elementorBP || configBPKeyInt + 1 === elementorBP;
1201        });
1202
1203        // For all other Swiper config breakpoints, move them one breakpoint down on the breakpoint list,
1204        // according to the array of Elementor's global breakpoints
1205        breakpointToUpdate = elementorBreakpointValues[currentBPIndexInElementorBPs - 1];
1206      }
1207      config.breakpoints[breakpointToUpdate] = config.breakpoints[configBPKey];
1208
1209      // Then reset the settings in the original breakpoint key to the default values
1210      config.breakpoints[configBPKey] = {
1211        slidesPerView: config.slidesPerView,
1212        slidesPerGroup: config.slidesPerGroup ? config.slidesPerGroup : 1
1213      };
1214    });
1215    return config;
1216  }
1217  applyMotionPreferences(config) {
1218    const prefersReducedMotion = window.matchMedia('(prefers-reduced-motion: reduce)').matches;
1219    if (!prefersReducedMotion) {
1220      return config;
1221    }
1222    return Object.assign({}, config, {
1223      speed: 0,
1224      autoplay: false
1225    });
1226  }
1227}
1228exports["default"] = SwiperHandler;
1229
1230/***/ }),
1231
1232/***/ "../assets/dev/js/frontend/utils/url-actions.js":
1233/*!******************************************************!*\
1234  !*** ../assets/dev/js/frontend/utils/url-actions.js ***!
1235  \******************************************************/
1236/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
1237
1238
1239
1240Object.defineProperty(exports, "__esModule", ({
1241  value: true
1242}));
1243exports["default"] = void 0;
1244__webpack_require__(/*! core-js/modules/web.dom-exception.stack.js */ "../node_modules/core-js/modules/web.dom-exception.stack.js");
1245class _default extends elementorModules.ViewModule {
1246  getDefaultSettings() {
1247    return {
1248      selectors: {
1249        links: 'a[href^="%23elementor-action"], a[href^="#elementor-action"]'
1250      }
1251    };
1252  }
1253  bindEvents() {
1254    elementorFrontend.elements.$document.on('click', this.getSettings('selectors.links'), this.runLinkAction.bind(this));
1255  }
1256  initActions() {
1257    this.actions = {
1258      lightbox: async settings => {
1259        const lightbox = await elementorFrontend.utils.lightbox;
1260        if (settings.slideshow) {
1261          // Handle slideshow display
1262          lightbox.openSlideshow(settings.slideshow, settings.url);
1263        } else {
1264          // If the settings has an ID - the lightbox target content is an image - the ID is an attachment ID.
1265          if (settings.id) {
1266            settings.type = 'image';
1267          }
1268          lightbox.showModal(settings);
1269        }
1270      }
1271    };
1272  }
1273  addAction(name, callback) {
1274    this.actions[name] = callback;
1275  }
1276  runAction(url, ...restArgs) {
1277    url = decodeURI(url);
1278    url = decodeURIComponent(url);
1279    const actionMatch = url.match(/action=(.+?)&/);
1280    if (!actionMatch) {
1281      return;
1282    }
1283    const action = this.actions[actionMatch[1]];
1284    if (!action) {
1285      return;
1286    }
1287    let settings = {};
1288    const settingsMatch = url.match(/settings=(.+)/);
1289    if (settingsMatch) {
1290      settings = JSON.parse(atob(settingsMatch[1]));
1291    }
1292    settings.previousEvent = event;
1293    action(settings, ...restArgs);
1294  }
1295  runLinkAction(event) {
1296    event.preventDefault();
1297    this.runAction(jQuery(event.currentTarget).attr('href'), event);
1298  }
1299  runHashAction() {
1300    if (!location.hash) {
1301      return;
1302    }
1303
1304    // Only if an element with this action hash exists on the page do we allow running the action.
1305    const elementWithHash = document.querySelector(`[data-e-action-hash="${location.hash}"], a[href*="${location.hash}"]`);
1306    if (elementWithHash) {
1307      this.runAction(elementWithHash.getAttribute('data-e-action-hash'));
1308    }
1309  }
1310  createActionHash(action, settings) {
1311    // We need to encode the hash tag (#) here, in order to support share links for a variety of providers
1312    return encodeURIComponent(`#elementor-action:action=${action}&settings=${btoa(JSON.stringify(settings))}`);
1313  }
1314  onInit() {
1315    super.onInit();
1316    this.initActions();
1317    elementorFrontend.on('components:init', this.runHashAction.bind(this));
1318  }
1319}
1320exports["default"] = _default;
1321
1322/***/ }),
1323
1324/***/ "../assets/dev/js/frontend/utils/utils.js":
1325/*!************************************************!*\
1326  !*** ../assets/dev/js/frontend/utils/utils.js ***!
1327  \************************************************/
1328/***/ ((__unused_webpack_module, exports) => {
1329
1330
1331
1332Object.defineProperty(exports, "__esModule", ({
1333  value: true
1334}));
1335exports.isScrollSnapActive = exports.escapeHTML = void 0;
1336// Escape HTML special chars to prevent XSS.
1337const escapeHTML = str => {
1338  const specialChars = {
1339    '&': '&amp;',
1340    '<': '&lt;',
1341    '>': '&gt;',
1342    "'": '&#39;',
1343    '"': '&quot;'
1344  };
1345  return str.replace(/[&<>'"]/g, tag => specialChars[tag] || tag);
1346};
1347
1348// Check if Scroll-Snap is active.
1349exports.escapeHTML = escapeHTML;
1350const isScrollSnapActive = () => {
1351  const scrollSnapStatus = elementorFrontend.isEditMode() ? elementor.settings.page.model.attributes?.scroll_snap : elementorFrontend.config.settings.page?.scroll_snap;
1352  return 'yes' === scrollSnapStatus ? true : false;
1353};
1354exports.isScrollSnapActive = isScrollSnapActive;
1355
1356/***/ }),
1357
1358/***/ "../assets/dev/js/frontend/utils/video-api/base-loader.js":
1359/*!****************************************************************!*\
1360  !*** ../assets/dev/js/frontend/utils/video-api/base-loader.js ***!
1361  \****************************************************************/
1362/***/ ((__unused_webpack_module, exports) => {
1363
1364
1365
1366Object.defineProperty(exports, "__esModule", ({
1367  value: true
1368}));
1369exports["default"] = void 0;
1370class BaseLoader extends elementorModules.ViewModule {
1371  getDefaultSettings() {
1372    return {
1373      isInserted: false,
1374      selectors: {
1375        firstScript: 'script:first'
1376      }
1377    };
1378  }
1379  getDefaultElements() {
1380    return {
1381      $firstScript: jQuery(this.getSettings('selectors.firstScript'))
1382    };
1383  }
1384  insertAPI() {
1385    this.elements.$firstScript.before(jQuery('<script>', {
1386      src: this.getApiURL()
1387    }));
1388    this.setSettings('isInserted', true);
1389  }
1390  getVideoIDFromURL(url) {
1391    const videoIDParts = url.match(this.getURLRegex());
1392    return videoIDParts && videoIDParts[1];
1393  }
1394  onApiReady(callback) {
1395    if (!this.getSettings('isInserted')) {
1396      this.insertAPI();
1397    }
1398    if (this.isApiLoaded()) {
1399      callback(this.getApiObject());
1400    } else {
1401      // If not ready check again by timeout..
1402      setTimeout(() => {
1403        this.onApiReady(callback);
1404      }, 350);
1405    }
1406  }
1407  getAutoplayURL(videoURL) {
1408    return videoURL.replace('&autoplay=0', '') + '&autoplay=1';
1409  }
1410}
1411exports["default"] = BaseLoader;
1412
1413/***/ }),
1414
1415/***/ "../assets/dev/js/frontend/utils/video-api/vimeo-loader.js":
1416/*!*****************************************************************!*\
1417  !*** ../assets/dev/js/frontend/utils/video-api/vimeo-loader.js ***!
1418  \*****************************************************************/
1419/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
1420
1421
1422
1423var _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ "../node_modules/@babel/runtime/helpers/interopRequireDefault.js");
1424Object.defineProperty(exports, "__esModule", ({
1425  value: true
1426}));
1427exports["default"] = void 0;
1428var _baseLoader = _interopRequireDefault(__webpack_require__(/*! ./base-loader */ "../assets/dev/js/frontend/utils/video-api/base-loader.js"));
1429class VimeoLoader extends _baseLoader.default {
1430  getApiURL() {
1431    return 'https://player.vimeo.com/api/player.js';
1432  }
1433  getURLRegex() {
1434    return /^(?:https?:\/\/)?(?:www|player\.)?(?:vimeo\.com\/)?(?:video\/|external\/)?(\d+)([^.?&#"'>]?)/;
1435  }
1436  isApiLoaded() {
1437    return window.Vimeo;
1438  }
1439  getApiObject() {
1440    return Vimeo;
1441  }
1442  getAutoplayURL(videoURL) {
1443    // Vimeo requires the '#t=' param to be last in the URL.
1444    const timeMatch = videoURL.match(/#t=[^&]*/);
1445    return videoURL.replace(timeMatch[0], '') + timeMatch;
1446  }
1447}
1448exports["default"] = VimeoLoader;
1449
1450/***/ }),
1451
1452/***/ "../assets/dev/js/frontend/utils/video-api/youtube-loader.js":
1453/*!*******************************************************************!*\
1454  !*** ../assets/dev/js/frontend/utils/video-api/youtube-loader.js ***!
1455  \*******************************************************************/
1456/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
1457
1458
1459
1460var _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ "../node_modules/@babel/runtime/helpers/interopRequireDefault.js");
1461Object.defineProperty(exports, "__esModule", ({
1462  value: true
1463}));
1464exports["default"] = void 0;
1465var _baseLoader = _interopRequireDefault(__webpack_require__(/*! ./base-loader */ "../assets/dev/js/frontend/utils/video-api/base-loader.js"));
1466class YoutubeLoader extends _baseLoader.default {
1467  getApiURL() {
1468    return 'https://www.youtube.com/iframe_api';
1469  }
1470  getURLRegex() {
1471    return /^(?:https?:\/\/)?(?:www\.)?(?:m\.)?(?:youtu\.be\/|youtube\.com\/(?:(?:watch)?\?(?:.*&)?vi?=|(?:embed|v|vi|user|shorts)\/))([^?&"'>]+)/;
1472  }
1473  isApiLoaded() {
1474    return window.YT && YT.loaded;
1475  }
1476  getApiObject() {
1477    return YT;
1478  }
1479}
1480exports["default"] = YoutubeLoader;
1481
1482/***/ }),
1483
1484/***/ "../assets/dev/js/public-path.js":
1485/*!***************************************!*\
1486  !*** ../assets/dev/js/public-path.js ***!
1487  \***************************************/
1488/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {
1489
1490
1491
1492/* eslint-disable camelcase */
1493__webpack_require__.p = elementorFrontendConfig.urls.assets + 'js/';
1494
1495/***/ }),
1496
1497/***/ "../assets/dev/js/utils/breakpoints.js":
1498/*!*********************************************!*\
1499  !*** ../assets/dev/js/utils/breakpoints.js ***!
1500  \*********************************************/
1501/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
1502
1503
1504
1505Object.defineProperty(exports, "__esModule", ({
1506  value: true
1507}));
1508exports["default"] = void 0;
1509__webpack_require__(/*! core-js/modules/es.array.push.js */ "../node_modules/core-js/modules/es.array.push.js");
1510__webpack_require__(/*! core-js/modules/esnext.iterator.constructor.js */ "../node_modules/core-js/modules/esnext.iterator.constructor.js");
1511__webpack_require__(/*! core-js/modules/esnext.iterator.for-each.js */ "../node_modules/core-js/modules/esnext.iterator.for-each.js");
1512__webpack_require__(/*! core-js/modules/esnext.iterator.map.js */ "../node_modules/core-js/modules/esnext.iterator.map.js");
1513/**
1514 * Breakpoints
1515 *
1516 * This utility class contains helper functions relating to Elementor's breakpoints system.
1517 *
1518 * @since 3.4.0
1519 */
1520class Breakpoints extends elementorModules.Module {
1521  constructor(responsiveConfig) {
1522    super();
1523
1524    // The passed config is either `elementor.config.responsive` or `elementorFrontend.config.responsive`
1525    this.responsiveConfig = responsiveConfig;
1526  }
1527
1528  /**
1529   * Get Active Breakpoints List
1530   *
1531   * Returns a flat array containing the active breakpoints/devices. By default, it returns the li
1532   * the list ordered from smallest to largest breakpoint. If `true` is passed as a parameter, it reverses the order.
1533   *
1534   * @since 3.4.0
1535   *
1536   * @param {Object} args
1537   */
1538  getActiveBreakpointsList(args = {}) {
1539    const defaultArgs = {
1540      largeToSmall: false,
1541      withDesktop: false
1542    };
1543    args = {
1544      ...defaultArgs,
1545      ...args
1546    };
1547    const breakpointKeys = Object.keys(this.responsiveConfig.activeBreakpoints);
1548    if (args.withDesktop) {
1549      // If there is an active 'widescreen' breakpoint, insert the artificial 'desktop' device below it.
1550      const widescreenIndex = breakpointKeys.indexOf('widescreen'),
1551        indexToInsertDesktopDevice = -1 === widescreenIndex ? breakpointKeys.length : breakpointKeys.length - 1;
1552      breakpointKeys.splice(indexToInsertDesktopDevice, 0, 'desktop');
1553    }
1554    if (args.largeToSmall) {
1555      breakpointKeys.reverse();
1556    }
1557    return breakpointKeys;
1558  }
1559
1560  /**
1561   * Get Active Breakpoint Values
1562   *
1563   * Returns a flat array containing the list of active breakpoint values, from smallest to largest.
1564   *
1565   * @since 3.4.0
1566   */
1567  getBreakpointValues() {
1568    const {
1569        activeBreakpoints
1570      } = this.responsiveConfig,
1571      breakpointValues = [];
1572    Object.values(activeBreakpoints).forEach(breakpointConfig => {
1573      breakpointValues.push(breakpointConfig.value);
1574    });
1575    return breakpointValues;
1576  }
1577
1578  /**
1579   * Get Desktop Previous Device Key
1580   *
1581   * Returns the key of the device directly under desktop (can be 'tablet', 'tablet_extra', 'laptop').
1582   *
1583   * @since 3.4.0
1584   *
1585   * @return {string} device key
1586   */
1587  getDesktopPreviousDeviceKey() {
1588    let desktopPreviousDevice = '';
1589    const {
1590        activeBreakpoints
1591      } = this.responsiveConfig,
1592      breakpointKeys = Object.keys(activeBreakpoints),
1593      numOfDevices = breakpointKeys.length;
1594    if ('min' === activeBreakpoints[breakpointKeys[numOfDevices - 1]].direction) {
1595      // If the widescreen breakpoint is active, the device that's previous to desktop is the last one before
1596      // widescreen.
1597      desktopPreviousDevice = breakpointKeys[numOfDevices - 2];
1598    } else {
1599      // If the widescreen breakpoint isn't active, we just take the last device returned by the config.
1600      desktopPreviousDevice = breakpointKeys[numOfDevices - 1];
1601    }
1602    return desktopPreviousDevice;
1603  }
1604
1605  /**
1606   * Get Device Minimum Breakpoint
1607   *
1608   * Returns the minimum point in the device's display range. For each device, the minimum point of its display range
1609   * is the max point of the device below it + 1px. For example, if the active devices are mobile, tablet,
1610   * and desktop, and the mobile breakpoint is 767px, the minimum display point for tablet devices is 768px.
1611   *
1612   * @since 3.4.0
1613   *
1614   * @return {number|*} minimum breakpoint
1615   */
1616  getDesktopMinPoint() {
1617    const {
1618        activeBreakpoints
1619      } = this.responsiveConfig,
1620      desktopPreviousDevice = this.getDesktopPreviousDeviceKey();
1621    return activeBreakpoints[desktopPreviousDevice].value + 1;
1622  }
1623
1624  /**
1625   * Get Device Minimum Breakpoint
1626   *
1627   * Returns the minimum point in the device's display range. For each device, the minimum point of its display range
1628   * is the max point of the device below it + 1px. For example, if the active devices are mobile, tablet,
1629   * and desktop, and the mobile breakpoint is 767px, the minimum display point for tablet devices is 768px.
1630   *
1631   * @since 3.4.0
1632   *
1633   * @param {string} device
1634   * @return {number|*} minimum breakpoint
1635   */
1636  getDeviceMinBreakpoint(device) {
1637    if ('desktop' === device) {
1638      return this.getDesktopMinPoint();
1639    }
1640    const {
1641        activeBreakpoints
1642      } = this.responsiveConfig,
1643      breakpointNames = Object.keys(activeBreakpoints);
1644    let minBreakpoint;
1645    if (breakpointNames[0] === device) {
1646      // For the lowest breakpoint, the min point is always 320.
1647      minBreakpoint = 320;
1648    } else if ('widescreen' === device) {
1649      // Widescreen only has a minimum point. In this case, the breakpoint
1650      // value in the Breakpoints config is itself the device min point.
1651      if (activeBreakpoints[device]) {
1652        minBreakpoint = activeBreakpoints[device].value;
1653      } else {
1654        // If the widescreen breakpoint does not exist in the active breakpoints config (for example, in the
1655        // case this method runs as the breakpoint is being added), get the value from the full config.
1656        minBreakpoint = this.responsiveConfig.breakpoints.widescreen;
1657      }
1658    } else {
1659      const deviceNameIndex = breakpointNames.indexOf(device),
1660        previousIndex = deviceNameIndex - 1;
1661      minBreakpoint = activeBreakpoints[breakpointNames[previousIndex]].value + 1;
1662    }
1663    return minBreakpoint;
1664  }
1665
1666  /**
1667   * Get Active Match Regex
1668   *
1669   * Returns a regular expression containing all active breakpoints prefixed with an underscore.
1670   *
1671   * @return {RegExp} Active Match Regex
1672   */
1673  getActiveMatchRegex() {
1674    return new RegExp(this.getActiveBreakpointsList().map(device => '_' + device).join('|') + '$');
1675  }
1676}
1677exports["default"] = Breakpoints;
1678
1679/***/ }),
1680
1681/***/ "../assets/dev/js/utils/events.js":
1682/*!****************************************!*\
1683  !*** ../assets/dev/js/utils/events.js ***!
1684  \****************************************/
1685/***/ ((__unused_webpack_module, exports) => {
1686
1687
1688
1689Object.defineProperty(exports, "__esModule", ({
1690  value: true
1691}));
1692exports["default"] = exports.Events = void 0;
1693class Events {
1694  /**
1695   * Dispatch an Elementor event.
1696   *
1697   * Will dispatch both native event & jQuery event (as BC).
1698   * By default, `bcEvent` is `null`.
1699   *
1700   * @param {Object}      context - The context that will dispatch the event.
1701   * @param {string}      event   - Event to dispatch.
1702   * @param {*}           data    - Data to pass to the event, default to `null`.
1703   * @param {string|null} bcEvent - BC event to dispatch, default to `null`.
1704   *
1705   * @return {void}
1706   */
1707  static dispatch(context, event, data = null, bcEvent = null) {
1708    // Make sure to use the native context if it's a jQuery instance.
1709    context = context instanceof jQuery ? context[0] : context;
1710
1711    // Dispatch the BC event only if exists.
1712    if (bcEvent) {
1713      context.dispatchEvent(new CustomEvent(bcEvent, {
1714        detail: data
1715      }));
1716    }
1717
1718    // jQuery's `.on()` listens also to native custom events, so there is no need
1719    // to dispatch also a jQuery event.
1720    context.dispatchEvent(new CustomEvent(event, {
1721      detail: data
1722    }));
1723  }
1724}
1725exports.Events = Events;
1726var _default = exports["default"] = Events;
1727
1728/***/ }),
1729
1730/***/ "../assets/dev/js/utils/hooks.js":
1731/*!***************************************!*\
1732  !*** ../assets/dev/js/utils/hooks.js ***!
1733  \***************************************/
1734/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
1735
1736
1737
1738/**
1739 * Handles managing all events for whatever you plug it into. Priorities for hooks are based on lowest to highest in
1740 * that, lowest priority hooks are fired first.
1741 */
1742__webpack_require__(/*! core-js/modules/es.array.push.js */ "../node_modules/core-js/modules/es.array.push.js");
1743var EventManager = function () {
1744  var slice = Array.prototype.slice,
1745    MethodsAvailable;
1746
1747  /**
1748   * Contains the hooks that get registered with this EventManager. The array for storage utilizes a "flat"
1749   * object literal such that looking up the hook utilizes the native object literal hash.
1750   */
1751  var STORAGE = {
1752    actions: {},
1753    filters: {}
1754  };
1755
1756  /**
1757   * Removes the specified hook by resetting the value of it.
1758   *
1759   * @param {string}   type     Type of hook, either 'actions' or 'filters'
1760   * @param {Function} hook     The hook (namespace.identifier) to remove
1761   * @param {Function} callback
1762   * @param {*}        context
1763   * @private
1764   */
1765  function _removeHook(type, hook, callback, context) {
1766    var handlers, handler, i;
1767    if (!STORAGE[type][hook]) {
1768      return;
1769    }
1770    if (!callback) {
1771      STORAGE[type][hook] = [];
1772    } else {
1773      handlers = STORAGE[type][hook];
1774      if (!context) {
1775        for (i = handlers.length; i--;) {
1776          if (handlers[i].callback === callback) {
1777            handlers.splice(i, 1);
1778          }
1779        }
1780      } else {
1781        for (i = handlers.length; i--;) {
1782          handler = handlers[i];
1783          if (handler.callback === callback && handler.context === context) {
1784            handlers.splice(i, 1);
1785          }
1786        }
1787      }
1788    }
1789  }
1790
1791  /**
1792   * Use an insert sort for keeping our hooks organized based on priority. This function is ridiculously faster
1793   * than bubble sort, etc: http://jsperf.com/javascript-sort
1794   *
1795   * @param {Array<*>} hooks The custom array containing all of the appropriate hooks to perform an insert sort on.
1796   * @private
1797   */
1798  function _hookInsertSort(hooks) {
1799    var tmpHook, j, prevHook;
1800    for (var i = 1, len = hooks.length; i < len; i++) {
1801      tmpHook = hooks[i];
1802      j = i;
1803      while ((prevHook = hooks[j - 1]) && prevHook.priority > tmpHook.priority) {
1804        hooks[j] = hooks[j - 1];
1805        --j;
1806      }
1807      hooks[j] = tmpHook;
1808    }
1809    return hooks;
1810  }
1811
1812  /**
1813   * Adds the hook to the appropriate storage container
1814   *
1815   * @param {string}   type      'actions' or 'filters'
1816   * @param {Array<*>} hook      The hook (namespace.identifier) to add to our event manager
1817   * @param {Function} callback  The function that will be called when the hook is executed.
1818   * @param {number}   priority  The priority of this hook. Must be an integer.
1819   * @param {*}        [context] A value to be used for this
1820   * @private
1821   */
1822  function _addHook(type, hook, callback, priority, context) {
1823    var hookObject = {
1824      callback,
1825      priority,
1826      context
1827    };
1828
1829    // Utilize 'prop itself' : http://jsperf.com/hasownproperty-vs-in-vs-undefined/19
1830    var hooks = STORAGE[type][hook];
1831    if (hooks) {
1832      // TEMP FIX BUG
1833      var hasSameCallback = false;
1834      jQuery.each(hooks, function () {
1835        if (this.callback === callback) {
1836          hasSameCallback = true;
1837          return false;
1838        }
1839      });
1840      if (hasSameCallback) {
1841        return;
1842      }
1843      // END TEMP FIX BUG
1844
1845      hooks.push(hookObject);
1846      hooks = _hookInsertSort(hooks);
1847    } else {
1848      hooks = [hookObject];
1849    }
1850    STORAGE[type][hook] = hooks;
1851  }
1852
1853  /**
1854   * Runs the specified hook. If it is an action, the value is not modified but if it is a filter, it is.
1855   *
1856   * @param {string}   type 'actions' or 'filters'
1857   * @param {*}        hook The hook ( namespace.identifier ) to be ran.
1858   * @param {Array<*>} args Arguments to pass to the action/filter. If it's a filter, args is actually a single parameter.
1859   * @private
1860   */
1861  function _runHook(type, hook, args) {
1862    var handlers = STORAGE[type][hook],
1863      i,
1864      len;
1865    if (!handlers) {
1866      return 'filters' === type ? args[0] : false;
1867    }
1868    len = handlers.length;
1869    if ('filters' === type) {
1870      for (i = 0; i < len; i++) {
1871        args[0] = handlers[i].callback.apply(handlers[i].context, args);
1872      }
1873    } else {
1874      for (i = 0; i < len; i++) {
1875        handlers[i].callback.apply(handlers[i].context, args);
1876      }
1877    }
1878    return 'filters' === type ? args[0] : true;
1879  }
1880
1881  /**
1882   * Adds an action to the event manager.
1883   *
1884   * @param {string}   action        Must contain namespace.identifier
1885   * @param {Function} callback      Must be a valid callback function before this action is added
1886   * @param {number}   [priority=10] Used to control when the function is executed in relation to other callbacks bound to the same hook
1887   * @param {*}        [context]     Supply a value to be used for this
1888   */
1889  function addAction(action, callback, priority, context) {
1890    if ('string' === typeof action && 'function' === typeof callback) {
1891      priority = parseInt(priority || 10, 10);
1892      _addHook('actions', action, callback, priority, context);
1893    }
1894    return MethodsAvailable;
1895  }
1896
1897  /**
1898   * Performs an action if it exists. You can pass as many arguments as you want to this function; the only rule is
1899   * that the first argument must always be the action.
1900   */
1901  function doAction(/* Action, arg1, arg2, ... */
1902  ) {
1903    var args = slice.call(arguments);
1904    var action = args.shift();
1905    if ('string' === typeof action) {
1906      _runHook('actions', action, args);
1907    }
1908    return MethodsAvailable;
1909  }
1910
1911  /**
1912   * Removes the specified action if it contains a namespace.identifier & exists.
1913   *
1914   * @param {string}   action     The action to remove
1915   * @param {Function} [callback] Callback function to remove
1916   */
1917  function removeAction(action, callback) {
1918    if ('string' === typeof action) {
1919      _removeHook('actions', action, callback);
1920    }
1921    return MethodsAvailable;
1922  }
1923
1924  /**
1925   * Adds a filter to the event manager.
1926   *
1927   * @param {string}   filter        Must contain namespace.identifier
1928   * @param {Function} callback      Must be a valid callback function before this action is added
1929   * @param {number}   [priority=10] Used to control when the function is executed in relation to other callbacks bound to the same hook
1930   * @param {*}        [context]     Supply a value to be used for this
1931   */
1932  function addFilter(filter, callback, priority, context) {
1933    if ('string' === typeof filter && 'function' === typeof callback) {
1934      priority = parseInt(priority || 10, 10);
1935      _addHook('filters', filter, callback, priority, context);
1936    }
1937    return MethodsAvailable;
1938  }
1939
1940  /**
1941   * Performs a filter if it exists. You should only ever pass 1 argument to be filtered. The only rule is that
1942   * the first argument must always be the filter.
1943   */
1944  function applyFilters(/* Filter, filtered arg, arg2, ... */
1945  ) {
1946    var args = slice.call(arguments);
1947    var filter = args.shift();
1948    if ('string' === typeof filter) {
1949      return _runHook('filters', filter, args);
1950    }
1951    return MethodsAvailable;
1952  }
1953
1954  /**
1955   * Removes the specified filter if it contains a namespace.identifier & exists.
1956   *
1957   * @param {string}   filter     The action to remove
1958   * @param {Function} [callback] Callback function to remove
1959   */
1960  function removeFilter(filter, callback) {
1961    if ('string' === typeof filter) {
1962      _removeHook('filters', filter, callback);
1963    }
1964    return MethodsAvailable;
1965  }
1966
1967  /**
1968   * Maintain a reference to the object scope so our public methods never get confusing.
1969   */
1970  MethodsAvailable = {
1971    removeFilter,
1972    applyFilters,
1973    addFilter,
1974    removeAction,
1975    doAction,
1976    addAction
1977  };
1978
1979  // Return all of the publicly available methods
1980  return MethodsAvailable;
1981};
1982module.exports = EventManager;
1983
1984/***/ }),
1985
1986/***/ "../core/common/assets/js/utils/environment.js":
1987/*!*****************************************************!*\
1988  !*** ../core/common/assets/js/utils/environment.js ***!
1989  \*****************************************************/
1990/***/ ((__unused_webpack_module, exports) => {
1991
1992
1993
1994Object.defineProperty(exports, "__esModule", ({
1995  value: true
1996}));
1997exports["default"] = void 0;
1998const matchUserAgent = UserAgentStr => {
1999    return userAgent.indexOf(UserAgentStr) >= 0;
2000  },
2001  userAgent = navigator.userAgent,
2002  // Solution influenced by https://stackoverflow.com/questions/9847580/how-to-detect-safari-chrome-ie-firefox-and-opera-browser
2003
2004  // Opera 8.0+
2005  isOpera = !!window.opr && !!opr.addons || !!window.opera || matchUserAgent(' OPR/'),
2006  // Firefox 1.0+
2007  isFirefox = matchUserAgent('Firefox'),
2008  // Safari 3.0+ "[object HTMLElementConstructor]"
2009  isSafari = /^((?!chrome|android).)*safari/i.test(userAgent) || /constructor/i.test(window.HTMLElement) || (p => {
2010    return '[object SafariRemoteNotification]' === p.toString();
2011  })(!window.safari || typeof safari !== 'undefined' && safari.pushNotification),
2012  // Internet Explorer 6-11
2013  isIE = /Trident|MSIE/.test(userAgent) && (/* @cc_on!@*/ false || !!document.documentMode),
2014  // Edge 20+
2015  isEdge = !isIE && !!window.StyleMedia || matchUserAgent('Edg'),
2016  // Google Chrome (Not accurate)
2017  isChrome = !!window.chrome && matchUserAgent('Chrome') && !(isEdge || isOpera),
2018  // Blink engine
2019  isBlink = matchUserAgent('Chrome') && !!window.CSS,
2020  // Apple Webkit engine
2021  isAppleWebkit = matchUserAgent('AppleWebKit') && !isBlink,
2022  isTouchDevice = 'ontouchstart' in window || navigator.maxTouchPoints > 0 || navigator.msMaxTouchPoints > 0,
2023  environment = {
2024    isTouchDevice,
2025    appleWebkit: isAppleWebkit,
2026    blink: isBlink,
2027    chrome: isChrome,
2028    edge: isEdge,
2029    firefox: isFirefox,
2030    ie: isIE,
2031    mac: matchUserAgent('Macintosh'),
2032    opera: isOpera,
2033    safari: isSafari,
2034    webkit: matchUserAgent('AppleWebKit')
2035  };
2036var _default = exports["default"] = environment;
2037
2038/***/ }),
2039
2040/***/ "../core/common/assets/js/utils/storage.js":
2041/*!*************************************************!*\
2042  !*** ../core/common/assets/js/utils/storage.js ***!
2043  \*************************************************/
2044/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
2045
2046
2047
2048Object.defineProperty(exports, "__esModule", ({
2049  value: true
2050}));
2051exports["default"] = void 0;
2052__webpack_require__(/*! core-js/modules/esnext.iterator.constructor.js */ "../node_modules/core-js/modules/esnext.iterator.constructor.js");
2053__webpack_require__(/*! core-js/modules/esnext.iterator.for-each.js */ "../node_modules/core-js/modules/esnext.iterator.for-each.js");
2054class _default extends elementorModules.Module {
2055  get(key, options) {
2056    options = options || {};
2057    let storage;
2058    try {
2059      storage = options.session ? sessionStorage : localStorage;
2060    } catch (e) {
2061      return key ? undefined : {};
2062    }
2063    let elementorStorage = storage.getItem('elementor');
2064    if (elementorStorage) {
2065      elementorStorage = JSON.parse(elementorStorage);
2066    } else {
2067      elementorStorage = {};
2068    }
2069    if (!elementorStorage.__expiration) {
2070      elementorStorage.__expiration = {};
2071    }
2072    const expiration = elementorStorage.__expiration;
2073    let expirationToCheck = [];
2074    if (key) {
2075      if (expiration[key]) {
2076        expirationToCheck = [key];
2077      }
2078    } else {
2079      expirationToCheck = Object.keys(expiration);
2080    }
2081    let entryExpired = false;
2082    expirationToCheck.forEach(expirationKey => {
2083      if (new Date(expiration[expirationKey]) < new Date()) {
2084        delete elementorStorage[expirationKey];
2085        delete expiration[expirationKey];
2086        entryExpired = true;
2087      }
2088    });
2089    if (entryExpired) {
2090      this.save(elementorStorage, options.session);
2091    }
2092    if (key) {
2093      return elementorStorage[key];
2094    }
2095    return elementorStorage;
2096  }
2097  set(key, value, options) {
2098    options = options || {};
2099    const elementorStorage = this.get(null, options);
2100    elementorStorage[key] = value;
2101    if (options.lifetimeInSeconds) {
2102      const date = new Date();
2103      date.setTime(date.getTime() + options.lifetimeInSeconds * 1000);
2104      elementorStorage.__expiration[key] = date.getTime();
2105    }
2106    this.save(elementorStorage, options.session);
2107  }
2108  save(object, session) {
2109    let storage;
2110    try {
2111      storage = session ? sessionStorage : localStorage;
2112    } catch (e) {
2113      return;
2114    }
2115    storage.setItem('elementor', JSON.stringify(object));
2116  }
2117}
2118exports["default"] = _default;
2119
2120/***/ }),
2121
2122/***/ "../modules/shapes/assets/js/frontend/frontend.js":
2123/*!********************************************************!*\
2124  !*** ../modules/shapes/assets/js/frontend/frontend.js ***!
2125  \********************************************************/
2126/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
2127
2128
2129
2130Object.defineProperty(exports, "__esModule", ({
2131  value: true
2132}));
2133exports["default"] = void 0;
2134class _default extends elementorModules.Module {
2135  constructor() {
2136    super();
2137    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")));
2138  }
2139}
2140exports["default"] = _default;
2141
2142/***/ }),
2143
vendor: 739 bytes, lines 2144-2163
2144/***/ "../node_modules/core-js/internals/a-possible-prototype.js":
2145/*!*****************************************************************!*\
2146  !*** ../node_modules/core-js/internals/a-possible-prototype.js ***!
2147  \*****************************************************************/
2148/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
2149
2150
2151var isPossiblePrototype = __webpack_require__(/*! ../internals/is-possible-prototype */ "../node_modules/core-js/internals/is-possible-prototype.js");
2152
2153var $String = String;
2154var $TypeError = TypeError;
2155
2156module.exports = function (argument) {
2157  if (isPossiblePrototype(argument)) return argument;
2158  throw new $TypeError("Can't set " + $String(argument) + ' as a prototype');
2159};
2160
2161
2162/***/ }),
2163
vendor: 1,867 bytes, lines 2164-2201
2164/***/ "../node_modules/core-js/internals/dom-exception-constants.js":
2165/*!********************************************************************!*\
2166  !*** ../node_modules/core-js/internals/dom-exception-constants.js ***!
2167  \********************************************************************/
2168/***/ ((module) => {
2169
2170
2171module.exports = {
2172  IndexSizeError: { s: 'INDEX_SIZE_ERR', c: 1, m: 1 },
2173  DOMStringSizeError: { s: 'DOMSTRING_SIZE_ERR', c: 2, m: 0 },
2174  HierarchyRequestError: { s: 'HIERARCHY_REQUEST_ERR', c: 3, m: 1 },
2175  WrongDocumentError: { s: 'WRONG_DOCUMENT_ERR', c: 4, m: 1 },
2176  InvalidCharacterError: { s: 'INVALID_CHARACTER_ERR', c: 5, m: 1 },
2177  NoDataAllowedError: { s: 'NO_DATA_ALLOWED_ERR', c: 6, m: 0 },
2178  NoModificationAllowedError: { s: 'NO_MODIFICATION_ALLOWED_ERR', c: 7, m: 1 },
2179  NotFoundError: { s: 'NOT_FOUND_ERR', c: 8, m: 1 },
2180  NotSupportedError: { s: 'NOT_SUPPORTED_ERR', c: 9, m: 1 },
2181  InUseAttributeError: { s: 'INUSE_ATTRIBUTE_ERR', c: 10, m: 1 },
2182  InvalidStateError: { s: 'INVALID_STATE_ERR', c: 11, m: 1 },
2183  SyntaxError: { s: 'SYNTAX_ERR', c: 12, m: 1 },
2184  InvalidModificationError: { s: 'INVALID_MODIFICATION_ERR', c: 13, m: 1 },
2185  NamespaceError: { s: 'NAMESPACE_ERR', c: 14, m: 1 },
2186  InvalidAccessError: { s: 'INVALID_ACCESS_ERR', c: 15, m: 1 },
2187  ValidationError: { s: 'VALIDATION_ERR', c: 16, m: 0 },
2188  TypeMismatchError: { s: 'TYPE_MISMATCH_ERR', c: 17, m: 1 },
2189  SecurityError: { s: 'SECURITY_ERR', c: 18, m: 1 },
2190  NetworkError: { s: 'NETWORK_ERR', c: 19, m: 1 },
2191  AbortError: { s: 'ABORT_ERR', c: 20, m: 1 },
2192  URLMismatchError: { s: 'URL_MISMATCH_ERR', c: 21, m: 1 },
2193  QuotaExceededError: { s: 'QUOTA_EXCEEDED_ERR', c: 22, m: 1 },
2194  TimeoutError: { s: 'TIMEOUT_ERR', c: 23, m: 1 },
2195  InvalidNodeTypeError: { s: 'INVALID_NODE_TYPE_ERR', c: 24, m: 1 },
2196  DataCloneError: { s: 'DATA_CLONE_ERR', c: 25, m: 1 }
2197};
2198
2199
2200/***/ }),
2201
vendor: 1,070 bytes, lines 2202-2227
2202/***/ "../node_modules/core-js/internals/error-stack-clear.js":
2203/*!**************************************************************!*\
2204  !*** ../node_modules/core-js/internals/error-stack-clear.js ***!
2205  \**************************************************************/
2206/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
2207
2208
2209var uncurryThis = __webpack_require__(/*! ../internals/function-uncurry-this */ "../node_modules/core-js/internals/function-uncurry-this.js");
2210
2211var $Error = Error;
2212var replace = uncurryThis(''.replace);
2213
2214var TEST = (function (arg) { return String(new $Error(arg).stack); })('zxcasd');
2215// eslint-disable-next-line redos/no-vulnerable, sonarjs/slow-regex -- safe
2216var V8_OR_CHAKRA_STACK_ENTRY = /\n\s*at [^:]*:[^\n]*/;
2217var IS_V8_OR_CHAKRA_STACK = V8_OR_CHAKRA_STACK_ENTRY.test(TEST);
2218
2219module.exports = function (stack, dropEntries) {
2220  if (IS_V8_OR_CHAKRA_STACK && typeof stack == 'string' && !$Error.prepareStackTrace) {
2221    while (dropEntries--) stack = replace(stack, V8_OR_CHAKRA_STACK_ENTRY, '');
2222  } return stack;
2223};
2224
2225
2226/***/ }),
2227
vendor: 927 bytes, lines 2228-2247
2228/***/ "../node_modules/core-js/internals/function-uncurry-this-accessor.js":
2229/*!***************************************************************************!*\
2230  !*** ../node_modules/core-js/internals/function-uncurry-this-accessor.js ***!
2231  \***************************************************************************/
2232/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
2233
2234
2235var uncurryThis = __webpack_require__(/*! ../internals/function-uncurry-this */ "../node_modules/core-js/internals/function-uncurry-this.js");
2236var aCallable = __webpack_require__(/*! ../internals/a-callable */ "../node_modules/core-js/internals/a-callable.js");
2237
2238module.exports = function (object, key, method) {
2239  try {
2240    // eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe
2241    return uncurryThis(aCallable(Object.getOwnPropertyDescriptor(object, key)[method]));
2242  } catch (error) { /* empty */ }
2243};
2244
2245
2246/***/ }),
2247
vendor: 1,308 bytes, lines 2248-2276
2248/***/ "../node_modules/core-js/internals/inherit-if-required.js":
2249/*!****************************************************************!*\
2250  !*** ../node_modules/core-js/internals/inherit-if-required.js ***!
2251  \****************************************************************/
2252/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
2253
2254
2255var isCallable = __webpack_require__(/*! ../internals/is-callable */ "../node_modules/core-js/internals/is-callable.js");
2256var isObject = __webpack_require__(/*! ../internals/is-object */ "../node_modules/core-js/internals/is-object.js");
2257var setPrototypeOf = __webpack_require__(/*! ../internals/object-set-prototype-of */ "../node_modules/core-js/internals/object-set-prototype-of.js");
2258
2259// makes subclassing work correct for wrapped built-ins
2260module.exports = function ($this, dummy, Wrapper) {
2261  var NewTarget, NewTargetPrototype;
2262  if (
2263    // it can work only with native `setPrototypeOf`
2264    setPrototypeOf &&
2265    // we haven't completely correct pre-ES6 way for getting `new.target`, so use this
2266    isCallable(NewTarget = dummy.constructor) &&
2267    NewTarget !== Wrapper &&
2268    isObject(NewTargetPrototype = NewTarget.prototype) &&
2269    NewTargetPrototype !== Wrapper.prototype
2270  ) setPrototypeOf($this, NewTargetPrototype);
2271  return $this;
2272};
2273
2274
2275/***/ }),
2276
vendor: 575 bytes, lines 2277-2292
2277/***/ "../node_modules/core-js/internals/is-possible-prototype.js":
2278/*!******************************************************************!*\
2279  !*** ../node_modules/core-js/internals/is-possible-prototype.js ***!
2280  \******************************************************************/
2281/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
2282
2283
2284var isObject = __webpack_require__(/*! ../internals/is-object */ "../node_modules/core-js/internals/is-object.js");
2285
2286module.exports = function (argument) {
2287  return isObject(argument) || argument === null;
2288};
2289
2290
2291/***/ }),
2292
vendor: 644 bytes, lines 2293-2308
2293/***/ "../node_modules/core-js/internals/normalize-string-argument.js":
2294/*!**********************************************************************!*\
2295  !*** ../node_modules/core-js/internals/normalize-string-argument.js ***!
2296  \**********************************************************************/
2297/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
2298
2299
2300var toString = __webpack_require__(/*! ../internals/to-string */ "../node_modules/core-js/internals/to-string.js");
2301
2302module.exports = function (argument, $default) {
2303  return argument === undefined ? arguments.length < 2 ? '' : $default : toString(argument);
2304};
2305
2306
2307/***/ }),
2308
vendor: 1,797 bytes, lines 2309-2347
2309/***/ "../node_modules/core-js/internals/object-set-prototype-of.js":
2310/*!********************************************************************!*\
2311  !*** ../node_modules/core-js/internals/object-set-prototype-of.js ***!
2312  \********************************************************************/
2313/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
2314
2315
2316/* eslint-disable no-proto -- safe */
2317var uncurryThisAccessor = __webpack_require__(/*! ../internals/function-uncurry-this-accessor */ "../node_modules/core-js/internals/function-uncurry-this-accessor.js");
2318var isObject = __webpack_require__(/*! ../internals/is-object */ "../node_modules/core-js/internals/is-object.js");
2319var requireObjectCoercible = __webpack_require__(/*! ../internals/require-object-coercible */ "../node_modules/core-js/internals/require-object-coercible.js");
2320var aPossiblePrototype = __webpack_require__(/*! ../internals/a-possible-prototype */ "../node_modules/core-js/internals/a-possible-prototype.js");
2321
2322// `Object.setPrototypeOf` method
2323// https://tc39.es/ecma262/#sec-object.setprototypeof
2324// Works with __proto__ only. Old v8 can't work with null proto objects.
2325// eslint-disable-next-line es/no-object-setprototypeof -- safe
2326module.exports = Object.setPrototypeOf || ('__proto__' in {} ? function () {
2327  var CORRECT_SETTER = false;
2328  var test = {};
2329  var setter;
2330  try {
2331    setter = uncurryThisAccessor(Object.prototype, '__proto__', 'set');
2332    setter(test, []);
2333    CORRECT_SETTER = test instanceof Array;
2334  } catch (error) { /* empty */ }
2335  return function setPrototypeOf(O, proto) {
2336    requireObjectCoercible(O);
2337    aPossiblePrototype(proto);
2338    if (!isObject(O)) return O;
2339    if (CORRECT_SETTER) setter(O, proto);
2340    else O.__proto__ = proto;
2341    return O;
2342  };
2343}() : undefined);
2344
2345
2346/***/ }),
2347
vendor: 627 bytes, lines 2348-2366
2348/***/ "../node_modules/core-js/internals/to-string.js":
2349/*!******************************************************!*\
2350  !*** ../node_modules/core-js/internals/to-string.js ***!
2351  \******************************************************/
2352/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
2353
2354
2355var classof = __webpack_require__(/*! ../internals/classof */ "../node_modules/core-js/internals/classof.js");
2356
2357var $String = String;
2358
2359module.exports = function (argument) {
2360  if (classof(argument) === 'Symbol') throw new TypeError('Cannot convert a Symbol value to a string');
2361  return $String(argument);
2362};
2363
2364
2365/***/ }),
2366
vendor: 4,570 bytes, lines 2367-2443
2367/***/ "../node_modules/core-js/modules/web.dom-exception.stack.js":
2368/*!******************************************************************!*\
2369  !*** ../node_modules/core-js/modules/web.dom-exception.stack.js ***!
2370  \******************************************************************/
2371/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {
2372
2373
2374var $ = __webpack_require__(/*! ../internals/export */ "../node_modules/core-js/internals/export.js");
2375var globalThis = __webpack_require__(/*! ../internals/global-this */ "../node_modules/core-js/internals/global-this.js");
2376var getBuiltIn = __webpack_require__(/*! ../internals/get-built-in */ "../node_modules/core-js/internals/get-built-in.js");
2377var createPropertyDescriptor = __webpack_require__(/*! ../internals/create-property-descriptor */ "../node_modules/core-js/internals/create-property-descriptor.js");
2378var defineProperty = (__webpack_require__(/*! ../internals/object-define-property */ "../node_modules/core-js/internals/object-define-property.js").f);
2379var hasOwn = __webpack_require__(/*! ../internals/has-own-property */ "../node_modules/core-js/internals/has-own-property.js");
2380var anInstance = __webpack_require__(/*! ../internals/an-instance */ "../node_modules/core-js/internals/an-instance.js");
2381var inheritIfRequired = __webpack_require__(/*! ../internals/inherit-if-required */ "../node_modules/core-js/internals/inherit-if-required.js");
2382var normalizeStringArgument = __webpack_require__(/*! ../internals/normalize-string-argument */ "../node_modules/core-js/internals/normalize-string-argument.js");
2383var DOMExceptionConstants = __webpack_require__(/*! ../internals/dom-exception-constants */ "../node_modules/core-js/internals/dom-exception-constants.js");
2384var clearErrorStack = __webpack_require__(/*! ../internals/error-stack-clear */ "../node_modules/core-js/internals/error-stack-clear.js");
2385var DESCRIPTORS = __webpack_require__(/*! ../internals/descriptors */ "../node_modules/core-js/internals/descriptors.js");
2386var IS_PURE = __webpack_require__(/*! ../internals/is-pure */ "../node_modules/core-js/internals/is-pure.js");
2387
2388var DOM_EXCEPTION = 'DOMException';
2389var Error = getBuiltIn('Error');
2390var NativeDOMException = getBuiltIn(DOM_EXCEPTION);
2391
2392var $DOMException = function DOMException() {
2393  anInstance(this, DOMExceptionPrototype);
2394  var argumentsLength = arguments.length;
2395  var message = normalizeStringArgument(argumentsLength < 1 ? undefined : arguments[0]);
2396  var name = normalizeStringArgument(argumentsLength < 2 ? undefined : arguments[1], 'Error');
2397  var that = new NativeDOMException(message, name);
2398  var error = new Error(message);
2399  error.name = DOM_EXCEPTION;
2400  defineProperty(that, 'stack', createPropertyDescriptor(1, clearErrorStack(error.stack, 1)));
2401  inheritIfRequired(that, this, $DOMException);
2402  return that;
2403};
2404
2405var DOMExceptionPrototype = $DOMException.prototype = NativeDOMException.prototype;
2406
2407var ERROR_HAS_STACK = 'stack' in new Error(DOM_EXCEPTION);
2408var DOM_EXCEPTION_HAS_STACK = 'stack' in new NativeDOMException(1, 2);
2409
2410// eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe
2411var descriptor = NativeDOMException && DESCRIPTORS && Object.getOwnPropertyDescriptor(globalThis, DOM_EXCEPTION);
2412
2413// Bun ~ 0.1.1 DOMException have incorrect descriptor and we can't redefine it
2414// https://github.com/Jarred-Sumner/bun/issues/399
2415var BUGGY_DESCRIPTOR = !!descriptor && !(descriptor.writable && descriptor.configurable);
2416
2417var FORCED_CONSTRUCTOR = ERROR_HAS_STACK && !BUGGY_DESCRIPTOR && !DOM_EXCEPTION_HAS_STACK;
2418
2419// `DOMException` constructor patch for `.stack` where it's required
2420// https://webidl.spec.whatwg.org/#es-DOMException-specialness
2421$({ global: true, constructor: true, forced: IS_PURE || FORCED_CONSTRUCTOR }, { // TODO: fix export logic
2422  DOMException: FORCED_CONSTRUCTOR ? $DOMException : NativeDOMException
2423});
2424
2425var PolyfilledDOMException = getBuiltIn(DOM_EXCEPTION);
2426var PolyfilledDOMExceptionPrototype = PolyfilledDOMException.prototype;
2427
2428if (PolyfilledDOMExceptionPrototype.constructor !== PolyfilledDOMException) {
2429  if (!IS_PURE) {
2430    defineProperty(PolyfilledDOMExceptionPrototype, 'constructor', createPropertyDescriptor(1, PolyfilledDOMException));
2431  }
2432
2433  for (var key in DOMExceptionConstants) if (hasOwn(DOMExceptionConstants, key)) {
2434    var constant = DOMExceptionConstants[key];
2435    var constantName = constant.s;
2436    if (!hasOwn(PolyfilledDOMException, constantName)) {
2437      defineProperty(PolyfilledDOMException, constantName, createPropertyDescriptor(6, constant.c));
2438    }
2439  }
2440}
2441
2442
2443/***/ })
2443
2444
2445},
2446/******/ __webpack_require__ => { // webpackRuntimeModules
2447/******/ var __webpack_exec__ = (moduleId) => (__webpack_require__(__webpack_require__.s = moduleId))
2448/******/ __webpack_require__.O(0, ["frontend-modules"], () => (__webpack_exec__("../assets/dev/js/frontend/frontend.js")));
2449/******/ var __webpack_exports__ = __webpack_require__.O();
2450/******/ }
2451]);
2452//# 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.