PageSourceSearch

https://freedomfirstbeef.com/wp-content/plugins/elementor/assets/js/frontend_ver-3.27.4.js

js freedomfirstbeef.com collected 2026-09-28 23:23:40 UTC 122,074 bytes, 3,150 lines download raw bytes

1/*! elementor - v3.27.0 - 13-02-2025 */
2"use strict";
3(self["webpackChunkelementorFrontend"] = self["webpackChunkelementorFrontend"] || []).push([["frontend"],{
4
5/***/ "../assets/dev/js/frontend/documents-manager.js":
6/*!******************************************************!*\
7  !*** ../assets/dev/js/frontend/documents-manager.js ***!
8  \******************************************************/
9/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
10
11
12
13var _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ "../node_modules/@babel/runtime/helpers/interopRequireDefault.js");
14Object.defineProperty(exports, "__esModule", ({
15  value: true
16}));
17exports["default"] = void 0;
18var _document = _interopRequireDefault(__webpack_require__(/*! ./document */ "../assets/dev/js/frontend/document.js"));
19class _default extends elementorModules.ViewModule {
20  constructor() {
21    super(...arguments);
22    this.documents = {};
23    this.initDocumentClasses();
24    this.attachDocumentsClasses();
25  }
26  getDefaultSettings() {
27    return {
28      selectors: {
29        document: '.elementor'
30      }
31    };
32  }
33  getDefaultElements() {
34    const selectors = this.getSettings('selectors');
35    return {
36      $documents: jQuery(selectors.document)
37    };
38  }
39  initDocumentClasses() {
40    this.documentClasses = {
41      base: _document.default
42    };
43    elementorFrontend.hooks.doAction('elementor/frontend/documents-manager/init-classes', this);
44  }
45  addDocumentClass(documentType, documentClass) {
46    this.documentClasses[documentType] = documentClass;
47  }
48  attachDocumentsClasses() {
49    this.elements.$documents.each((index, document) => this.attachDocumentClass(jQuery(document)));
50  }
51  attachDocumentClass($document) {
52    const documentData = $document.data(),
53      documentID = documentData.elementorId,
54      documentType = documentData.elementorType,
55      DocumentClass = this.documentClasses[documentType] || this.documentClasses.base;
56    this.documents[documentID] = new DocumentClass({
57      $element: $document,
58      id: documentID
59    });
60  }
61}
62exports["default"] = _default;
63
64/***/ }),
65
66/***/ "../assets/dev/js/frontend/elements-handlers-manager.js":
67/*!**************************************************************!*\
68  !*** ../assets/dev/js/frontend/elements-handlers-manager.js ***!
69  \**************************************************************/
70/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
71
72
73
74var _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ "../node_modules/@babel/runtime/helpers/interopRequireDefault.js");
75__webpack_require__(/*! core-js/modules/es.array.push.js */ "../node_modules/core-js/modules/es.array.push.js");
76__webpack_require__(/*! core-js/modules/esnext.iterator.constructor.js */ "../node_modules/core-js/modules/esnext.iterator.constructor.js");
77__webpack_require__(/*! core-js/modules/esnext.iterator.for-each.js */ "../node_modules/core-js/modules/esnext.iterator.for-each.js");
78var _global = _interopRequireDefault(__webpack_require__(/*! ./handlers/global */ "../assets/dev/js/frontend/handlers/global.js"));
79var _background = _interopRequireDefault(__webpack_require__(/*! ./handlers/background */ "../assets/dev/js/frontend/handlers/background.js"));
80var _container = _interopRequireDefault(__webpack_require__(/*! ./handlers/container/container */ "../assets/dev/js/frontend/handlers/container/container.js"));
81var _column = _interopRequireDefault(__webpack_require__(/*! ./handlers/column */ "../assets/dev/js/frontend/handlers/column.js"));
82var _handlesPosition = _interopRequireDefault(__webpack_require__(/*! ./handlers/section/handles-position */ "../assets/dev/js/frontend/handlers/section/handles-position.js"));
83var _stretchedSection = _interopRequireDefault(__webpack_require__(/*! ./handlers/section/stretched-section */ "../assets/dev/js/frontend/handlers/section/stretched-section.js"));
84var _shapes = _interopRequireDefault(__webpack_require__(/*! ./handlers/section/shapes */ "../assets/dev/js/frontend/handlers/section/shapes.js"));
85// Section handlers.
86
87/* global elementorFrontendConfig */
88
89module.exports = function ($) {
90  var _this = this;
91  const handlersInstances = {};
92  this.elementsHandlers = {
93    'accordion.default': () => __webpack_require__.e(/*! import() | accordion */ "accordion").then(__webpack_require__.bind(__webpack_require__, /*! ./handlers/accordion */ "../assets/dev/js/frontend/handlers/accordion.js")),
94    'alert.default': () => __webpack_require__.e(/*! import() | alert */ "alert").then(__webpack_require__.bind(__webpack_require__, /*! ./handlers/alert */ "../assets/dev/js/frontend/handlers/alert.js")),
95    'counter.default': () => __webpack_require__.e(/*! import() | counter */ "counter").then(__webpack_require__.bind(__webpack_require__, /*! ./handlers/counter */ "../assets/dev/js/frontend/handlers/counter.js")),
96    'progress.default': () => __webpack_require__.e(/*! import() | progress */ "progress").then(__webpack_require__.bind(__webpack_require__, /*! ./handlers/progress */ "../assets/dev/js/frontend/handlers/progress.js")),
97    'tabs.default': () => __webpack_require__.e(/*! import() | tabs */ "tabs").then(__webpack_require__.bind(__webpack_require__, /*! ./handlers/tabs */ "../assets/dev/js/frontend/handlers/tabs.js")),
98    'toggle.default': () => __webpack_require__.e(/*! import() | toggle */ "toggle").then(__webpack_require__.bind(__webpack_require__, /*! ./handlers/toggle */ "../assets/dev/js/frontend/handlers/toggle.js")),
99    'video.default': () => __webpack_require__.e(/*! import() | video */ "video").then(__webpack_require__.bind(__webpack_require__, /*! ./handlers/video */ "../assets/dev/js/frontend/handlers/video.js")),
100    '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")),
101    '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")),
102    '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"))
103  };
104  if (elementorFrontendConfig.experimentalFeatures['nested-elements']) {
105    this.elementsHandlers['nested-tabs.default'] = () => Promise.resolve(/*! import() */).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"));
106  }
107  if (elementorFrontendConfig.experimentalFeatures['nested-elements']) {
108    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"));
109  }
110  if (elementorFrontendConfig.experimentalFeatures.container) {
111    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"));
112    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"));
113  }
114  const addGlobalHandlers = () => elementorFrontend.hooks.addAction('frontend/element_ready/global', _global.default);
115  const addElementsHandlers = () => {
116    this.elementsHandlers.section = [_stretchedSection.default,
117    // Must run before background handlers to init the slideshow only after the stretch.
118    ..._background.default, _handlesPosition.default, _shapes.default];
119    this.elementsHandlers.container = [..._background.default];
120
121    // Add editor-only handlers.
122    if (elementorFrontend.isEditMode()) {
123      this.elementsHandlers.container.push(..._container.default);
124    }
125    this.elementsHandlers.column = _column.default;
126    $.each(this.elementsHandlers, (elementName, Handlers) => {
127      const elementData = elementName.split('.');
128      elementName = elementData[0];
129      const skin = elementData[1] || null;
130      this.attachHandler(elementName, Handlers, skin);
131    });
132  };
133  const isClassHandler = Handler => Handler.prototype?.getUniqueHandlerID;
134  const addHandlerWithHook = function (elementBaseName, Handler) {
135    let skin = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 'default';
136    skin = skin ? '.' + skin : '';
137    const elementName = elementBaseName + skin;
138    elementorFrontend.hooks.addAction(`frontend/element_ready/${elementName}`, $element => {
139      if (isClassHandler(Handler)) {
140        _this.addHandler(Handler, {
141          $element,
142          elementName
143        }, true);
144      } else {
145        const handlerValue = Handler();
146        if (!handlerValue) {
147          return;
148        }
149        if (handlerValue instanceof Promise) {
150          handlerValue.then(_ref => {
151            let {
152              default: dynamicHandler
153            } = _ref;
154            _this.addHandler(dynamicHandler, {
155              $element,
156              elementName
157            }, true);
158          });
159        } else {
160          _this.addHandler(handlerValue, {
161            $element,
162            elementName
163          }, true);
164        }
165      }
166    });
167  };
168  this.addHandler = function (HandlerClass, options) {
169    const elementID = options.$element.data('model-cid');
170    let handlerID;
171
172    // If element is in edit mode
173    if (elementID) {
174      handlerID = HandlerClass.prototype.getConstructorID();
175      if (!handlersInstances[elementID]) {
176        handlersInstances[elementID] = {};
177      }
178      const oldHandler = handlersInstances[elementID][handlerID];
179      if (oldHandler) {
180        oldHandler.onDestroy();
181      }
182    }
183    const newHandler = new HandlerClass(options);
184    elementorFrontend.hooks.doAction(`frontend/element_handler_ready/${options.elementName}`, options.$element, $);
185    if (elementID) {
186      handlersInstances[elementID][handlerID] = newHandler;
187    }
188  };
189  this.attachHandler = (elementName, Handlers, skin) => {
190    if (!Array.isArray(Handlers)) {
191      Handlers = [Handlers];
192    }
193    Handlers.forEach(Handler => addHandlerWithHook(elementName, Handler, skin));
194  };
195  this.getHandler = function (handlerName) {
196    const elementHandler = this.elementsHandlers[handlerName];
197    if (isClassHandler(elementHandler)) {
198      return elementHandler;
199    }
200    return new Promise(res => {
201      elementHandler().then(_ref2 => {
202        let {
203          default: dynamicHandler
204        } = _ref2;
205        res(dynamicHandler);
206      });
207    });
208  };
209
210  /**
211   * @param {string} handlerName
212   * @deprecated since 3.1.0, use `elementorFrontend.elementsHandler.getHandler` instead.
213   */
214  this.getHandlers = function (handlerName) {
215    elementorDevTools.deprecation.deprecated('getHandlers', '3.1.0', 'elementorFrontend.elementsHandler.getHandler');
216    if (handlerName) {
217      return this.getHandler(handlerName);
218    }
219    return this.elementsHandlers;
220  };
221  this.runReadyTrigger = function (scope) {
222    const isDelayChildHandlers = !!scope.closest('[data-delay-child-handlers="true"]') && 0 !== scope.closest('[data-delay-child-handlers="true"]').length;
223    if (elementorFrontend.config.is_static || isDelayChildHandlers) {
224      return;
225    }
226
227    // Initializing the `$scope` as frontend jQuery instance
228    const $scope = jQuery(scope),
229      elementType = $scope.attr('data-element_type');
230    if (!elementType) {
231      return;
232    }
233    elementorFrontend.hooks.doAction('frontend/element_ready/global', $scope, $);
234    elementorFrontend.hooks.doAction(`frontend/element_ready/${elementType}`, $scope, $);
235    if ('widget' === elementType) {
236      const widgetType = $scope.attr('data-widget_type');
237      elementorFrontend.hooks.doAction(`frontend/element_ready/${widgetType}`, $scope, $);
238    }
239  };
240  this.init = () => {
241    addGlobalHandlers();
242    addElementsHandlers();
243  };
244};
245
246/***/ }),
247
248/***/ "../assets/dev/js/frontend/frontend.js":
249/*!*********************************************!*\
250  !*** ../assets/dev/js/frontend/frontend.js ***!
251  \*********************************************/
252/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
253
254
255
256var _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ "../node_modules/@babel/runtime/helpers/interopRequireDefault.js");
257Object.defineProperty(exports, "__esModule", ({
258  value: true
259}));
260exports["default"] = void 0;
261__webpack_require__(/*! core-js/modules/esnext.iterator.constructor.js */ "../node_modules/core-js/modules/esnext.iterator.constructor.js");
262__webpack_require__(/*! core-js/modules/esnext.iterator.find.js */ "../node_modules/core-js/modules/esnext.iterator.find.js");
263__webpack_require__(/*! core-js/modules/esnext.iterator.for-each.js */ "../node_modules/core-js/modules/esnext.iterator.for-each.js");
264__webpack_require__(/*! ../public-path */ "../assets/dev/js/public-path.js");
265var _documentsManager = _interopRequireDefault(__webpack_require__(/*! ./documents-manager */ "../assets/dev/js/frontend/documents-manager.js"));
266var _storage = _interopRequireDefault(__webpack_require__(/*! elementor-common/utils/storage */ "../core/common/assets/js/utils/storage.js"));
267var _environment = _interopRequireDefault(__webpack_require__(/*! elementor-common/utils/environment */ "../core/common/assets/js/utils/environment.js"));
268var _youtubeLoader = _interopRequireDefault(__webpack_require__(/*! ./utils/video-api/youtube-loader */ "../assets/dev/js/frontend/utils/video-api/youtube-loader.js"));
269var _vimeoLoader = _interopRequireDefault(__webpack_require__(/*! ./utils/video-api/vimeo-loader */ "../assets/dev/js/frontend/utils/video-api/vimeo-loader.js"));
270var _baseLoader = _interopRequireDefault(__webpack_require__(/*! ./utils/video-api/base-loader */ "../assets/dev/js/frontend/utils/video-api/base-loader.js"));
271var _urlActions = _interopRequireDefault(__webpack_require__(/*! ./utils/url-actions */ "../assets/dev/js/frontend/utils/url-actions.js"));
272var _swiper = _interopRequireDefault(__webpack_require__(/*! ./utils/swiper */ "../assets/dev/js/frontend/utils/swiper.js"));
273var _lightboxManager = _interopRequireDefault(__webpack_require__(/*! ./utils/lightbox/lightbox-manager */ "../assets/dev/js/frontend/utils/lightbox/lightbox-manager.js"));
274var _assetsLoader = _interopRequireDefault(__webpack_require__(/*! ./utils/assets-loader */ "../assets/dev/js/frontend/utils/assets-loader.js"));
275var _breakpoints = _interopRequireDefault(__webpack_require__(/*! elementor-utils/breakpoints */ "../assets/dev/js/utils/breakpoints.js"));
276var _events = _interopRequireDefault(__webpack_require__(/*! elementor-utils/events */ "../assets/dev/js/utils/events.js"));
277var _frontend = _interopRequireDefault(__webpack_require__(/*! elementor/modules/shapes/assets/js/frontend/frontend */ "../modules/shapes/assets/js/frontend/frontend.js"));
278var _controls = _interopRequireDefault(__webpack_require__(/*! ./utils/controls */ "../assets/dev/js/frontend/utils/controls.js"));
279var _anchorScrollMargin = _interopRequireDefault(__webpack_require__(/*! ./utils/anchor-scroll-margin */ "../assets/dev/js/frontend/utils/anchor-scroll-margin.js"));
280var _utils = __webpack_require__(/*! elementor-frontend/utils/utils */ "../assets/dev/js/frontend/utils/utils.js");
281/* global elementorFrontendConfig */
282
283const EventManager = __webpack_require__(/*! elementor-utils/hooks */ "../assets/dev/js/utils/hooks.js"),
284  ElementsHandler = __webpack_require__(/*! elementor-frontend/elements-handlers-manager */ "../assets/dev/js/frontend/elements-handlers-manager.js");
285class Frontend extends elementorModules.ViewModule {
286  constructor() {
287    super(...arguments);
288    this.config = elementorFrontendConfig;
289    this.config.legacyMode = {
290      /**
291       * @deprecated since 3.1.0
292       */
293      get elementWrappers() {
294        if (elementorFrontend.isEditMode()) {
295          window.top.elementorDevTools.deprecation.deprecated('elementorFrontend.config.legacyMode.elementWrappers', '3.1.0');
296        }
297        return false;
298      }
299    };
300    this.populateActiveBreakpointsConfig();
301  }
302
303  /**
304   * @deprecated since 2.5.0, use `elementorModules.frontend.handlers.Base` instead.
305   */
306  get Module() {
307    if (this.isEditMode()) {
308      parent.elementorDevTools.deprecation.deprecated('elementorFrontend.Module', '2.5.0', 'elementorModules.frontend.handlers.Base');
309    }
310    return elementorModules.frontend.handlers.Base;
311  }
312  getDefaultSettings() {
313    return {
314      selectors: {
315        elementor: '.elementor',
316        adminBar: '#wpadminbar'
317      }
318    };
319  }
320  getDefaultElements() {
321    const defaultElements = {
322      window,
323      $window: jQuery(window),
324      $document: jQuery(document),
325      $head: jQuery(document.head),
326      $body: jQuery(document.body),
327      $deviceMode: jQuery('<span>', {
328        id: 'elementor-device-mode',
329        class: 'elementor-screen-only'
330      })
331    };
332    defaultElements.$body.append(defaultElements.$deviceMode);
333    return defaultElements;
334  }
335  bindEvents() {
336    this.elements.$window.on('resize', () => this.setDeviceModeData());
337  }
338
339  /**
340   * @param {string} elementName
341   * @deprecated since 2.4.0, use `this.elements` instead.
342   */
343  getElements(elementName) {
344    return this.getItems(this.elements, elementName);
345  }
346
347  /**
348   * @param {string} settingName
349   * @deprecated since 2.4.0, this method was never in use.
350   */
351  getPageSettings(settingName) {
352    const settingsObject = this.isEditMode() ? elementor.settings.page.model.attributes : this.config.settings.page;
353    return this.getItems(settingsObject, settingName);
354  }
355
356  /**
357   * @param {string} settingName
358   * @deprecated since 3.0.0, use `getKitSettings()` instead and remove the `elementor_` prefix.
359   */
360  getGeneralSettings(settingName) {
361    if (this.isEditMode()) {
362      parent.elementorDevTools.deprecation.deprecated('getGeneralSettings()', '3.0.0', 'getKitSettings() and remove the `elementor_` prefix');
363    }
364    return this.getKitSettings(`elementor_${settingName}`);
365  }
366  getKitSettings(settingName) {
367    // TODO: use Data API.
368    return this.getItems(this.config.kit, settingName);
369  }
370  getCurrentDeviceMode() {
371    return getComputedStyle(this.elements.$deviceMode[0], ':after').content.replace(/"/g, '');
372  }
373  getDeviceSetting(deviceMode, settings, settingKey) {
374    // Add specific handling for widescreen since it is larger than desktop.
375    if ('widescreen' === deviceMode) {
376      return this.getWidescreenSetting(settings, settingKey);
377    }
378    const devices = elementorFrontend.breakpoints.getActiveBreakpointsList({
379      largeToSmall: true,
380      withDesktop: true
381    });
382    let deviceIndex = devices.indexOf(deviceMode);
383    while (deviceIndex > 0) {
384      const currentDevice = devices[deviceIndex],
385        fullSettingKey = settingKey + '_' + currentDevice,
386        deviceValue = settings[fullSettingKey];
387
388      // Accept 0 as value.
389      if (deviceValue || 0 === deviceValue) {
390        return deviceValue;
391      }
392      deviceIndex--;
393    }
394    return settings[settingKey];
395  }
396  getWidescreenSetting(settings, settingKey) {
397    const deviceMode = 'widescreen',
398      widescreenSettingKey = settingKey + '_' + deviceMode;
399    let settingToReturn;
400
401    // If the device mode is 'widescreen', and the setting exists - return it.
402    if (settings[widescreenSettingKey]) {
403      settingToReturn = settings[widescreenSettingKey];
404    } else {
405      // Otherwise, return the desktop setting
406      settingToReturn = settings[settingKey];
407    }
408    return settingToReturn;
409  }
410  getCurrentDeviceSetting(settings, settingKey) {
411    return this.getDeviceSetting(elementorFrontend.getCurrentDeviceMode(), settings, settingKey);
412  }
413  isEditMode() {
414    return this.config.environmentMode.edit;
415  }
416  isWPPreviewMode() {
417    return this.config.environmentMode.wpPreview;
418  }
419  initDialogsManager() {
420    let dialogsManager;
421    this.getDialogsManager = () => {
422      if (!dialogsManager) {
423        dialogsManager = new DialogsManager.Instance();
424      }
425      return dialogsManager;
426    };
427  }
428  initOnReadyComponents() {
429    this.utils = {
430      youtube: new _youtubeLoader.default(),
431      vimeo: new _vimeoLoader.default(),
432      baseVideoLoader: new _baseLoader.default(),
433      get lightbox() {
434        return _lightboxManager.default.getLightbox();
435      },
436      urlActions: new _urlActions.default(),
437      swiper: _swiper.default,
438      environment: _environment.default,
439      assetsLoader: new _assetsLoader.default(),
440      escapeHTML: _utils.escapeHTML,
441      events: _events.default,
442      controls: new _controls.default(),
443      anchor_scroll_margin: new _anchorScrollMargin.default()
444    };
445
446    // TODO: BC since 2.4.0
447    this.modules = {
448      StretchElement: elementorModules.frontend.tools.StretchElement,
449      Masonry: elementorModules.utils.Masonry
450    };
451    this.elementsHandler.init();
452    if (this.isEditMode()) {
453      elementor.once('document:loaded', () => this.onDocumentLoaded());
454    } else {
455      this.onDocumentLoaded();
456    }
457  }
458  initOnReadyElements() {
459    this.elements.$wpAdminBar = this.elements.$document.find(this.getSettings('selectors.adminBar'));
460  }
461  addUserAgentClasses() {
462    for (const [key, value] of Object.entries(_environment.default)) {
463      if (value) {
464        this.elements.$body.addClass('e--ua-' + key);
465      }
466    }
467  }
468  setDeviceModeData() {
469    this.elements.$body.attr('data-elementor-device-mode', this.getCurrentDeviceMode());
470  }
471  addListenerOnce(listenerID, event, callback, to) {
472    if (!to) {
473      to = this.elements.$window;
474    }
475    if (!this.isEditMode()) {
476      to.on(event, callback);
477      return;
478    }
479    this.removeListeners(listenerID, event, to);
480    if (to instanceof jQuery) {
481      const eventNS = event + '.' + listenerID;
482      to.on(eventNS, callback);
483    } else {
484      to.on(event, callback, listenerID);
485    }
486  }
487  removeListeners(listenerID, event, callback, from) {
488    if (!from) {
489      from = this.elements.$window;
490    }
491    if (from instanceof jQuery) {
492      const eventNS = event + '.' + listenerID;
493      from.off(eventNS, callback);
494    } else {
495      from.off(event, callback, listenerID);
496    }
497  }
498
499  // Based on underscore function
500  debounce(func, wait) {
501    let timeout;
502    return function () {
503      const context = this,
504        args = arguments;
505      const later = () => {
506        timeout = null;
507        func.apply(context, args);
508      };
509      const callNow = !timeout;
510      clearTimeout(timeout);
511      timeout = setTimeout(later, wait);
512      if (callNow) {
513        func.apply(context, args);
514      }
515    };
516  }
517  muteMigrationTraces() {
518    jQuery.migrateMute = true;
519    jQuery.migrateTrace = false;
520  }
521
522  /**
523   * Initialize the modules' widgets handlers.
524   */
525  initModules() {
526    const handlers = {
527      shapes: _frontend.default
528    };
529
530    // TODO: BC - Deprecated since 3.5.0
531    elementorFrontend.trigger('elementor/modules/init:before');
532
533    // TODO: Use this instead.
534    elementorFrontend.trigger('elementor/modules/init/before');
535    Object.entries(handlers).forEach(_ref => {
536      let [moduleName, ModuleClass] = _ref;
537      this.modulesHandlers[moduleName] = new ModuleClass();
538    });
539  }
540  populateActiveBreakpointsConfig() {
541    this.config.responsive.activeBreakpoints = {};
542    Object.entries(this.config.responsive.breakpoints).forEach(_ref2 => {
543      let [breakpointKey, breakpointData] = _ref2;
544      if (breakpointData.is_enabled) {
545        this.config.responsive.activeBreakpoints[breakpointKey] = breakpointData;
546      }
547    });
548  }
549  init() {
550    this.hooks = new EventManager();
551    this.breakpoints = new _breakpoints.default(this.config.responsive);
552    this.storage = new _storage.default();
553    this.elementsHandler = new ElementsHandler(jQuery);
554    this.modulesHandlers = {};
555    this.addUserAgentClasses();
556    this.setDeviceModeData();
557    this.initDialogsManager();
558    if (this.isEditMode()) {
559      this.muteMigrationTraces();
560    }
561
562    // Keep this line before `initOnReadyComponents` call
563    _events.default.dispatch(this.elements.$window, 'elementor/frontend/init');
564    this.initModules();
565    this.initOnReadyElements();
566    this.initOnReadyComponents();
567  }
568  onDocumentLoaded() {
569    this.documentsManager = new _documentsManager.default();
570    this.trigger('components:init');
571    new _lightboxManager.default();
572  }
573}
574exports["default"] = Frontend;
575window.elementorFrontend = new Frontend();
576if (!elementorFrontend.isEditMode()) {
577  jQuery(() => elementorFrontend.init());
578}
579
580/***/ }),
581
582/***/ "../assets/dev/js/frontend/handlers/background-slideshow.js":
583/*!******************************************************************!*\
584  !*** ../assets/dev/js/frontend/handlers/background-slideshow.js ***!
585  \******************************************************************/
586/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
587
588
589
590Object.defineProperty(exports, "__esModule", ({
591  value: true
592}));
593exports["default"] = void 0;
594__webpack_require__(/*! core-js/modules/esnext.iterator.constructor.js */ "../node_modules/core-js/modules/esnext.iterator.constructor.js");
595__webpack_require__(/*! core-js/modules/esnext.iterator.for-each.js */ "../node_modules/core-js/modules/esnext.iterator.for-each.js");
596class BackgroundSlideshow extends elementorModules.frontend.handlers.SwiperBase {
597  getDefaultSettings() {
598    return {
599      classes: {
600        swiperContainer: 'elementor-background-slideshow swiper',
601        swiperWrapper: 'swiper-wrapper',
602        swiperSlide: 'elementor-background-slideshow__slide swiper-slide',
603        swiperPreloader: 'swiper-lazy-preloader',
604        slideBackground: 'elementor-background-slideshow__slide__image',
605        kenBurns: 'elementor-ken-burns',
606        kenBurnsActive: 'elementor-ken-burns--active',
607        kenBurnsIn: 'elementor-ken-burns--in',
608        kenBurnsOut: 'elementor-ken-burns--out'
609      }
610    };
611  }
612  getSwiperOptions() {
613    const elementSettings = this.getElementSettings(),
614      swiperOptions = {
615        grabCursor: false,
616        slidesPerView: 1,
617        slidesPerGroup: 1,
618        loop: 'yes' === elementSettings.background_slideshow_loop,
619        speed: elementSettings.background_slideshow_transition_duration,
620        autoplay: {
621          delay: elementSettings.background_slideshow_slide_duration,
622          stopOnLastSlide: !elementSettings.background_slideshow_loop
623        },
624        handleElementorBreakpoints: true,
625        on: {
626          slideChange: () => {
627            if (elementSettings.background_slideshow_ken_burns) {
628              this.handleKenBurns();
629            }
630          }
631        }
632      };
633    if ('yes' === elementSettings.background_slideshow_loop) {
634      swiperOptions.loopedSlides = this.getSlidesCount();
635    }
636    switch (elementSettings.background_slideshow_slide_transition) {
637      case 'fade':
638        swiperOptions.effect = 'fade';
639        swiperOptions.fadeEffect = {
640          crossFade: true
641        };
642        break;
643      case 'slide_down':
644        swiperOptions.autoplay.reverseDirection = true;
645        swiperOptions.direction = 'vertical';
646        break;
647      case 'slide_up':
648        swiperOptions.direction = 'vertical';
649        break;
650    }
651    if ('yes' === elementSettings.background_slideshow_lazyload) {
652      swiperOptions.lazy = {
653        loadPrevNext: true,
654        loadPrevNextAmount: 1
655      };
656    }
657    return swiperOptions;
658  }
659  buildSwiperElements() {
660    const classes = this.getSettings('classes'),
661      elementSettings = this.getElementSettings(),
662      direction = 'slide_left' === elementSettings.background_slideshow_slide_transition ? 'ltr' : 'rtl',
663      $container = jQuery('<div>', {
664        class: classes.swiperContainer,
665        dir: direction
666      }),
667      $wrapper = jQuery('<div>', {
668        class: classes.swiperWrapper
669      }),
670      kenBurnsActive = elementSettings.background_slideshow_ken_burns,
671      lazyload = 'yes' === elementSettings.background_slideshow_lazyload;
672    let slideInnerClass = classes.slideBackground;
673    if (kenBurnsActive) {
674      slideInnerClass += ' ' + classes.kenBurns;
675      const kenBurnsDirection = 'in' === elementSettings.background_slideshow_ken_burns_zoom_direction ? 'kenBurnsIn' : 'kenBurnsOut';
676      slideInnerClass += ' ' + classes[kenBurnsDirection];
677    }
678    if (lazyload) {
679      slideInnerClass += ' swiper-lazy';
680    }
681    this.elements.$slides = jQuery();
682    elementSettings.background_slideshow_gallery.forEach(slide => {
683      const $slide = jQuery('<div>', {
684        class: classes.swiperSlide
685      });
686      let $slidebg;
687      if (lazyload) {
688        const $slideloader = jQuery('<div>', {
689          class: classes.swiperPreloader
690        });
691        $slidebg = jQuery('<div>', {
692          class: slideInnerClass,
693          'data-background': slide.url
694        });
695        $slidebg.append($slideloader);
696      } else {
697        $slidebg = jQuery('<div>', {
698          class: slideInnerClass,
699          style: 'background-image: url("' + slide.url + '");'
700        });
701      }
702      $slide.append($slidebg);
703      $wrapper.append($slide);
704      this.elements.$slides = this.elements.$slides.add($slide);
705    });
706    $container.append($wrapper);
707    this.$element.prepend($container);
708    this.elements.$backgroundSlideShowContainer = $container;
709  }
710  async initSlider() {
711    if (1 >= this.getSlidesCount()) {
712      return;
713    }
714    const elementSettings = this.getElementSettings();
715    const Swiper = elementorFrontend.utils.swiper;
716    this.swiper = await new Swiper(this.elements.$backgroundSlideShowContainer, this.getSwiperOptions());
717
718    // Expose the swiper instance in the frontend
719    this.elements.$backgroundSlideShowContainer.data('swiper', this.swiper);
720    if (elementSettings.background_slideshow_ken_burns) {
721      this.handleKenBurns();
722    }
723  }
724  activate() {
725    this.buildSwiperElements();
726    this.initSlider();
727  }
728  deactivate() {
729    if (this.swiper) {
730      this.swiper.destroy();
731      this.elements.$backgroundSlideShowContainer.remove();
732    }
733  }
734  run() {
735    if ('slideshow' === this.getElementSettings('background_background')) {
736      this.activate();
737    } else {
738      this.deactivate();
739    }
740  }
741  onInit() {
742    super.onInit();
743    if (this.getElementSettings('background_slideshow_gallery')) {
744      this.run();
745    }
746  }
747  onDestroy() {
748    super.onDestroy();
749    this.deactivate();
750  }
751  onElementChange(propertyName) {
752    if ('background_background' === propertyName) {
753      this.run();
754    }
755  }
756}
757exports["default"] = BackgroundSlideshow;
758
759/***/ }),
760
761/***/ "../assets/dev/js/frontend/handlers/background-video.js":
762/*!**************************************************************!*\
763  !*** ../assets/dev/js/frontend/handlers/background-video.js ***!
764  \**************************************************************/
765/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
766
767
768
769Object.defineProperty(exports, "__esModule", ({
770  value: true
771}));
772exports["default"] = void 0;
773__webpack_require__(/*! core-js/modules/esnext.iterator.constructor.js */ "../node_modules/core-js/modules/esnext.iterator.constructor.js");
774__webpack_require__(/*! core-js/modules/esnext.iterator.find.js */ "../node_modules/core-js/modules/esnext.iterator.find.js");
775class BackgroundVideo extends elementorModules.frontend.handlers.Base {
776  getDefaultSettings() {
777    return {
778      selectors: {
779        backgroundVideoContainer: '.elementor-background-video-container',
780        backgroundVideoEmbed: '.elementor-background-video-embed',
781        backgroundVideoHosted: '.elementor-background-video-hosted'
782      }
783    };
784  }
785  getDefaultElements() {
786    const selectors = this.getSettings('selectors'),
787      elements = {
788        $backgroundVideoContainer: this.$element.find(selectors.backgroundVideoContainer)
789      };
790    elements.$backgroundVideoEmbed = elements.$backgroundVideoContainer.children(selectors.backgroundVideoEmbed);
791    elements.$backgroundVideoHosted = elements.$backgroundVideoContainer.children(selectors.backgroundVideoHosted);
792    return elements;
793  }
794  calcVideosSize($video) {
795    let aspectRatioSetting = '16:9';
796    if ('vimeo' === this.videoType) {
797      aspectRatioSetting = $video[0].width + ':' + $video[0].height;
798    }
799    const containerWidth = this.elements.$backgroundVideoContainer.outerWidth(),
800      containerHeight = this.elements.$backgroundVideoContainer.outerHeight(),
801      aspectRatioArray = aspectRatioSetting.split(':'),
802      aspectRatio = aspectRatioArray[0] / aspectRatioArray[1],
803      ratioWidth = containerWidth / aspectRatio,
804      ratioHeight = containerHeight * aspectRatio,
805      isWidthFixed = containerWidth / containerHeight > aspectRatio;
806    return {
807      width: isWidthFixed ? containerWidth : ratioHeight,
808      height: isWidthFixed ? ratioWidth : containerHeight
809    };
810  }
811  changeVideoSize() {
812    if (!('hosted' === this.videoType) && !this.player) {
813      return;
814    }
815    let $video;
816    if ('youtube' === this.videoType) {
817      $video = jQuery(this.player.getIframe());
818    } else if ('vimeo' === this.videoType) {
819      $video = jQuery(this.player.element);
820    } else if ('hosted' === this.videoType) {
821      $video = this.elements.$backgroundVideoHosted;
822    }
823    if (!$video) {
824      return;
825    }
826    const size = this.calcVideosSize($video);
827    $video.width(size.width).height(size.height);
828  }
829  startVideoLoop(firstTime) {
830    // If the section has been removed
831    if (!this.player.getIframe().contentWindow) {
832      return;
833    }
834    const elementSettings = this.getElementSettings(),
835      startPoint = elementSettings.background_video_start || 0,
836      endPoint = elementSettings.background_video_end;
837    if (elementSettings.background_play_once && !firstTime) {
838      this.player.stopVideo();
839      return;
840    }
841    this.player.seekTo(startPoint);
842    if (endPoint) {
843      const durationToEnd = endPoint - startPoint + 1;
844      setTimeout(() => {
845        this.startVideoLoop(false);
846      }, durationToEnd * 1000);
847    }
848  }
849  prepareVimeoVideo(Vimeo, videoLink) {
850    const elementSettings = this.getElementSettings(),
851      videoSize = this.elements.$backgroundVideoContainer.outerWidth(),
852      vimeoOptions = {
853        url: videoLink,
854        width: videoSize.width,
855        autoplay: true,
856        loop: !elementSettings.background_play_once,
857        transparent: true,
858        background: true,
859        muted: true
860      };
861    if (elementSettings.background_privacy_mode) {
862      vimeoOptions.dnt = true;
863    }
864    this.player = new Vimeo.Player(this.elements.$backgroundVideoContainer, vimeoOptions);
865
866    // Handle user-defined start/end times
867    this.handleVimeoStartEndTimes(elementSettings);
868    this.player.ready().then(() => {
869      jQuery(this.player.element).addClass('elementor-background-video-embed');
870      this.changeVideoSize();
871    });
872  }
873  handleVimeoStartEndTimes(elementSettings) {
874    // If a start time is defined, set the start time
875    if (elementSettings.background_video_start) {
876      this.player.on('play', data => {
877        if (0 === data.seconds) {
878          this.player.setCurrentTime(elementSettings.background_video_start);
879        }
880      });
881    }
882    this.player.on('timeupdate', data => {
883      // If an end time is defined, handle ending the video
884      if (elementSettings.background_video_end && elementSettings.background_video_end < data.seconds) {
885        if (elementSettings.background_play_once) {
886          // Stop at user-defined end time if not loop
887          this.player.pause();
888        } else {
889          // Go to start time if loop
890          this.player.setCurrentTime(elementSettings.background_video_start);
891        }
892      }
893
894      // If start time is defined but an end time is not, go to user-defined start time at video end.
895      // Vimeo JS API has an 'ended' event, but it never fires when infinite loop is defined, so we
896      // get the video duration (returns a promise) then use duration-0.5s as end time
897      this.player.getDuration().then(duration => {
898        if (elementSettings.background_video_start && !elementSettings.background_video_end && data.seconds > duration - 0.5) {
899          this.player.setCurrentTime(elementSettings.background_video_start);
900        }
901      });
902    });
903  }
904  prepareYTVideo(YT, videoID) {
905    const $backgroundVideoContainer = this.elements.$backgroundVideoContainer,
906      elementSettings = this.getElementSettings();
907    let startStateCode = YT.PlayerState.PLAYING;
908
909    // Since version 67, Chrome doesn't fire the `PLAYING` state at start time
910    if (window.chrome) {
911      startStateCode = YT.PlayerState.UNSTARTED;
912    }
913    const playerOptions = {
914      videoId: videoID,
915      events: {
916        onReady: () => {
917          this.player.mute();
918          this.changeVideoSize();
919          this.startVideoLoop(true);
920          this.player.playVideo();
921        },
922        onStateChange: event => {
923          switch (event.data) {
924            case startStateCode:
925              $backgroundVideoContainer.removeClass('elementor-invisible elementor-loading');
926              break;
927            case YT.PlayerState.ENDED:
928              if ('function' === typeof this.player.seekTo) {
929                this.player.seekTo(elementSettings.background_video_start || 0);
930              }
931              if (elementSettings.background_play_once) {
932                this.player.destroy();
933              }
934          }
935        }
936      },
937      playerVars: {
938        controls: 0,
939        rel: 0,
940        playsinline: 1,
941        cc_load_policy: 0
942      }
943    };
944
945    // To handle CORS issues, when the default host is changed, the origin parameter has to be set.
946    if (elementSettings.background_privacy_mode) {
947      playerOptions.host = 'https://www.youtube-nocookie.com';
948      playerOptions.origin = window.location.hostname;
949    }
950    $backgroundVideoContainer.addClass('elementor-loading elementor-invisible');
951    this.player = new YT.Player(this.elements.$backgroundVideoEmbed[0], playerOptions);
952  }
953  activate() {
954    let videoLink = this.getElementSettings('background_video_link'),
955      videoID;
956    const playOnce = this.getElementSettings('background_play_once');
957    if (-1 !== videoLink.indexOf('vimeo.com')) {
958      this.videoType = 'vimeo';
959      this.apiProvider = elementorFrontend.utils.vimeo;
960    } else if (videoLink.match(/^(?:https?:\/\/)?(?:www\.)?(?:m\.)?(?:youtu\.be\/|youtube\.com)/)) {
961      this.videoType = 'youtube';
962      this.apiProvider = elementorFrontend.utils.youtube;
963    }
964    if (this.apiProvider) {
965      videoID = this.apiProvider.getVideoIDFromURL(videoLink);
966      this.apiProvider.onApiReady(apiObject => {
967        if ('youtube' === this.videoType) {
968          this.prepareYTVideo(apiObject, videoID);
969        }
970        if ('vimeo' === this.videoType) {
971          this.prepareVimeoVideo(apiObject, videoLink);
972        }
973      });
974    } else {
975      this.videoType = 'hosted';
976      const startTime = this.getElementSettings('background_video_start'),
977        endTime = this.getElementSettings('background_video_end');
978      if (startTime || endTime) {
979        videoLink += '#t=' + (startTime || 0) + (endTime ? ',' + endTime : '');
980      }
981      this.elements.$backgroundVideoHosted.attr('src', videoLink).one('canplay', this.changeVideoSize.bind(this));
982      if (playOnce) {
983        this.elements.$backgroundVideoHosted.on('ended', () => {
984          this.elements.$backgroundVideoHosted.hide();
985        });
986      }
987    }
988    elementorFrontend.elements.$window.on('resize elementor/bg-video/recalc', this.changeVideoSize);
989  }
990  deactivate() {
991    if ('youtube' === this.videoType && this.player.getIframe() || 'vimeo' === this.videoType) {
992      this.player.destroy();
993    } else {
994      this.elements.$backgroundVideoHosted.removeAttr('src').off('ended');
995    }
996    elementorFrontend.elements.$window.off('resize', this.changeVideoSize);
997  }
998  run() {
999    const elementSettings = this.getElementSettings();
1000    if (!elementSettings.background_play_on_mobile && 'mobile' === elementorFrontend.getCurrentDeviceMode()) {
1001      return;
1002    }
1003    if ('video' === elementSettings.background_background && elementSettings.background_video_link) {
1004      this.activate();
1005    } else {
1006      this.deactivate();
1007    }
1008  }
1009  onInit() {
1010    super.onInit(...arguments);
1011    this.changeVideoSize = this.changeVideoSize.bind(this);
1012    this.run();
1013  }
1014  onElementChange(propertyName) {
1015    if ('background_background' === propertyName) {
1016      this.run();
1017    }
1018  }
1019}
1020exports["default"] = BackgroundVideo;
1021
1022/***/ }),
1023
1024/***/ "../assets/dev/js/frontend/handlers/background.js":
1025/*!********************************************************!*\
1026  !*** ../assets/dev/js/frontend/handlers/background.js ***!
1027  \********************************************************/
1028/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
1029
1030
1031
1032var _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ "../node_modules/@babel/runtime/helpers/interopRequireDefault.js");
1033Object.defineProperty(exports, "__esModule", ({
1034  value: true
1035}));
1036exports["default"] = void 0;
1037var _backgroundSlideshow = _interopRequireDefault(__webpack_require__(/*! ./background-slideshow */ "../assets/dev/js/frontend/handlers/background-slideshow.js"));
1038var _backgroundVideo = _interopRequireDefault(__webpack_require__(/*! ./background-video */ "../assets/dev/js/frontend/handlers/background-video.js"));
1039var _default = exports["default"] = [_backgroundSlideshow.default, _backgroundVideo.default];
1040
1041/***/ }),
1042
1043/***/ "../assets/dev/js/frontend/handlers/column.js":
1044/*!****************************************************!*\
1045  !*** ../assets/dev/js/frontend/handlers/column.js ***!
1046  \****************************************************/
1047/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
1048
1049
1050
1051var _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ "../node_modules/@babel/runtime/helpers/interopRequireDefault.js");
1052Object.defineProperty(exports, "__esModule", ({
1053  value: true
1054}));
1055exports["default"] = void 0;
1056var _backgroundSlideshow = _interopRequireDefault(__webpack_require__(/*! ./background-slideshow */ "../assets/dev/js/frontend/handlers/background-slideshow.js"));
1057var _default = exports["default"] = [_backgroundSlideshow.default];
1058
1059/***/ }),
1060
1061/***/ "../assets/dev/js/frontend/handlers/container/container.js":
1062/*!*****************************************************************!*\
1063  !*** ../assets/dev/js/frontend/handlers/container/container.js ***!
1064  \*****************************************************************/
1065/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
1066
1067
1068
1069Object.defineProperty(exports, "__esModule", ({
1070  value: true
1071}));
1072exports["default"] = void 0;
1073var _default = exports["default"] = [() => __webpack_require__.e(/*! import() | container */ "container").then(__webpack_require__.bind(__webpack_require__, /*! ./handles-position */ "../assets/dev/js/frontend/handlers/container/handles-position.js")), () => __webpack_require__.e(/*! import() | container */ "container").then(__webpack_require__.bind(__webpack_require__, /*! ./shapes */ "../assets/dev/js/frontend/handlers/container/shapes.js")), () => __webpack_require__.e(/*! import() | container */ "container").then(__webpack_require__.bind(__webpack_require__, /*! ./grid-container */ "../assets/dev/js/frontend/handlers/container/grid-container.js"))];
1074
1075/***/ }),
1076
1077/***/ "../assets/dev/js/frontend/handlers/global.js":
1078/*!****************************************************!*\
1079  !*** ../assets/dev/js/frontend/handlers/global.js ***!
1080  \****************************************************/
1081/***/ ((__unused_webpack_module, exports) => {
1082
1083
1084
1085Object.defineProperty(exports, "__esModule", ({
1086  value: true
1087}));
1088exports["default"] = void 0;
1089class GlobalHandler extends elementorModules.frontend.handlers.Base {
1090  getWidgetType() {
1091    return 'global';
1092  }
1093  animate() {
1094    const $element = this.$element,
1095      animation = this.getAnimation();
1096    if ('none' === animation) {
1097      $element.removeClass('elementor-invisible');
1098      return;
1099    }
1100    const elementSettings = this.getElementSettings(),
1101      animationDelay = elementSettings._animation_delay || elementSettings.animation_delay || 0;
1102    $element.removeClass(animation);
1103    if (this.currentAnimation) {
1104      $element.removeClass(this.currentAnimation);
1105    }
1106    this.currentAnimation = animation;
1107    setTimeout(() => {
1108      $element.removeClass('elementor-invisible').addClass('animated ' + animation);
1109    }, animationDelay);
1110  }
1111  getAnimation() {
1112    return this.getCurrentDeviceSetting('animation') || this.getCurrentDeviceSetting('_animation');
1113  }
1114  onInit() {
1115    super.onInit(...arguments);
1116    if (this.getAnimation()) {
1117      const observer = elementorModules.utils.Scroll.scrollObserver({
1118        callback: event => {
1119          if (event.isInViewport) {
1120            this.animate();
1121            observer.unobserve(this.$element[0]);
1122          }
1123        }
1124      });
1125      observer.observe(this.$element[0]);
1126    }
1127  }
1128  onElementChange(propertyName) {
1129    if (/^_?animation/.test(propertyName)) {
1130      this.animate();
1131    }
1132  }
1133}
1134var _default = $scope => {
1135  elementorFrontend.elementsHandler.addHandler(GlobalHandler, {
1136    $element: $scope
1137  });
1138};
1139exports["default"] = _default;
1140
1141/***/ }),
1142
1143/***/ "../assets/dev/js/frontend/handlers/section/handles-position.js":
1144/*!**********************************************************************!*\
1145  !*** ../assets/dev/js/frontend/handlers/section/handles-position.js ***!
1146  \**********************************************************************/
1147/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
1148
1149
1150
1151Object.defineProperty(exports, "__esModule", ({
1152  value: true
1153}));
1154exports["default"] = void 0;
1155__webpack_require__(/*! core-js/modules/esnext.iterator.constructor.js */ "../node_modules/core-js/modules/esnext.iterator.constructor.js");
1156__webpack_require__(/*! core-js/modules/esnext.iterator.find.js */ "../node_modules/core-js/modules/esnext.iterator.find.js");
1157class HandlesPosition extends elementorModules.frontend.handlers.Base {
1158  isActive() {
1159    return elementorFrontend.isEditMode();
1160  }
1161  isFirstSection() {
1162    return this.$element[0] === document.querySelector('.elementor-edit-mode .elementor-top-section');
1163  }
1164  isOverflowHidden() {
1165    return 'hidden' === this.$element.css('overflow');
1166  }
1167  getOffset() {
1168    if ('body' === elementor.config.document.container) {
1169      return this.$element.offset().top;
1170    }
1171    const $container = jQuery(elementor.config.document.container);
1172    return this.$element.offset().top - $container.offset().top;
1173  }
1174  setHandlesPosition() {
1175    const document = elementor.documents.getCurrent();
1176    if (!document || !document.container.isEditable()) {
1177      return;
1178    }
1179    const insideHandleClass = 'elementor-section--handles-inside';
1180    if (elementor.settings.page.model.attributes.scroll_snap) {
1181      this.$element.addClass(insideHandleClass);
1182      return;
1183    }
1184    const isOverflowHidden = this.isOverflowHidden();
1185    if (!isOverflowHidden && !this.isFirstSection()) {
1186      return;
1187    }
1188    const offset = isOverflowHidden ? 0 : this.getOffset();
1189    if (offset < 25) {
1190      this.$element.addClass(insideHandleClass);
1191      const $handlesElement = this.$element.find('> .elementor-element-overlay > .elementor-editor-section-settings');
1192      if (offset < -5) {
1193        $handlesElement.css('top', -offset);
1194      } else {
1195        $handlesElement.css('top', '');
1196      }
1197    } else {
1198      this.$element.removeClass(insideHandleClass);
1199    }
1200  }
1201  onInit() {
1202    if (!this.isActive()) {
1203      return;
1204    }
1205    this.setHandlesPosition();
1206    this.$element.on('mouseenter', this.setHandlesPosition.bind(this));
1207  }
1208}
1209exports["default"] = HandlesPosition;
1210
1211/***/ }),
1212
1213/***/ "../assets/dev/js/frontend/handlers/section/shapes.js":
1214/*!************************************************************!*\
1215  !*** ../assets/dev/js/frontend/handlers/section/shapes.js ***!
1216  \************************************************************/
1217/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
1218
1219
1220
1221Object.defineProperty(exports, "__esModule", ({
1222  value: true
1223}));
1224exports["default"] = void 0;
1225__webpack_require__(/*! core-js/modules/esnext.iterator.constructor.js */ "../node_modules/core-js/modules/esnext.iterator.constructor.js");
1226__webpack_require__(/*! core-js/modules/esnext.iterator.find.js */ "../node_modules/core-js/modules/esnext.iterator.find.js");
1227class Shapes extends elementorModules.frontend.handlers.Base {
1228  getDefaultSettings() {
1229    return {
1230      selectors: {
1231        container: '> .elementor-shape-%s'
1232      },
1233      svgURL: elementorFrontend.config.urls.assets + 'shapes/'
1234    };
1235  }
1236  getDefaultElements() {
1237    const elements = {},
1238      selectors = this.getSettings('selectors');
1239    elements.$topContainer = this.$element.find(selectors.container.replace('%s', 'top'));
1240    elements.$bottomContainer = this.$element.find(selectors.container.replace('%s', 'bottom'));
1241    return elements;
1242  }
1243  isActive() {
1244    return elementorFrontend.isEditMode();
1245  }
1246  getSvgURL(shapeType, fileName) {
1247    let svgURL = this.getSettings('svgURL') + fileName + '.svg';
1248    if (elementor.config.additional_shapes && shapeType in elementor.config.additional_shapes) {
1249      svgURL = elementor.config.additional_shapes[shapeType];
1250      if (-1 < fileName.indexOf('-negative')) {
1251        svgURL = svgURL.replace('.svg', '-negative.svg');
1252      }
1253    }
1254    return svgURL;
1255  }
1256  buildSVG(side) {
1257    const baseSettingKey = 'shape_divider_' + side,
1258      shapeType = this.getElementSettings(baseSettingKey),
1259      $svgContainer = this.elements['$' + side + 'Container'];
1260    $svgContainer.attr('data-shape', shapeType);
1261    if (!shapeType) {
1262      $svgContainer.empty(); // Shape-divider set to 'none'
1263      return;
1264    }
1265    let fileName = shapeType;
1266    if (this.getElementSettings(baseSettingKey + '_negative')) {
1267      fileName += '-negative';
1268    }
1269    const svgURL = this.getSvgURL(shapeType, fileName);
1270    jQuery.get(svgURL, data => {
1271      $svgContainer.empty().append(data.childNodes[0]);
1272    });
1273    this.setNegative(side);
1274  }
1275  setNegative(side) {
1276    this.elements['$' + side + 'Container'].attr('data-negative', !!this.getElementSettings('shape_divider_' + side + '_negative'));
1277  }
1278  onInit() {
1279    if (!this.isActive(this.getSettings())) {
1280      return;
1281    }
1282    super.onInit(...arguments);
1283    ['top', 'bottom'].forEach(side => {
1284      if (this.getElementSettings('shape_divider_' + side)) {
1285        this.buildSVG(side);
1286      }
1287    });
1288  }
1289  onElementChange(propertyName) {
1290    const shapeChange = propertyName.match(/^shape_divider_(top|bottom)$/);
1291    if (shapeChange) {
1292      this.buildSVG(shapeChange[1]);
1293      return;
1294    }
1295    const negativeChange = propertyName.match(/^shape_divider_(top|bottom)_negative$/);
1296    if (negativeChange) {
1297      this.buildSVG(negativeChange[1]);
1298      this.setNegative(negativeChange[1]);
1299    }
1300  }
1301}
1302exports["default"] = Shapes;
1303
1304/***/ }),
1305
1306/***/ "../assets/dev/js/frontend/handlers/section/stretched-section.js":
1307/*!***********************************************************************!*\
1308  !*** ../assets/dev/js/frontend/handlers/section/stretched-section.js ***!
1309  \***********************************************************************/
1310/***/ ((__unused_webpack_module, exports) => {
1311
1312
1313
1314Object.defineProperty(exports, "__esModule", ({
1315  value: true
1316}));
1317exports["default"] = void 0;
1318class StretchedSection extends elementorModules.frontend.handlers.StretchedElement {
1319  getStretchedClass() {
1320    return 'elementor-section-stretched';
1321  }
1322  getStretchSettingName() {
1323    return 'stretch_section';
1324  }
1325  getStretchActiveValue() {
1326    return 'section-stretched';
1327  }
1328}
1329exports["default"] = StretchedSection;
1330
1331/***/ }),
1332
1333/***/ "../assets/dev/js/frontend/utils/anchor-scroll-margin.js":
1334/*!***************************************************************!*\
1335  !*** ../assets/dev/js/frontend/utils/anchor-scroll-margin.js ***!
1336  \***************************************************************/
1337/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
1338
1339
1340
1341Object.defineProperty(exports, "__esModule", ({
1342  value: true
1343}));
1344exports["default"] = void 0;
1345__webpack_require__(/*! core-js/modules/es.array.push.js */ "../node_modules/core-js/modules/es.array.push.js");
1346__webpack_require__(/*! core-js/modules/esnext.iterator.constructor.js */ "../node_modules/core-js/modules/esnext.iterator.constructor.js");
1347__webpack_require__(/*! core-js/modules/esnext.iterator.filter.js */ "../node_modules/core-js/modules/esnext.iterator.filter.js");
1348__webpack_require__(/*! core-js/modules/esnext.iterator.for-each.js */ "../node_modules/core-js/modules/esnext.iterator.for-each.js");
1349class _default extends elementorModules.ViewModule {
1350  getDefaultSettings() {
1351    return {
1352      selectors: {
1353        links: '.elementor-element a[href*="#"]',
1354        stickyElements: '.elementor-element.elementor-sticky'
1355      }
1356    };
1357  }
1358  onInit() {
1359    this.observeStickyElements(() => {
1360      this.initializeStickyAndAnchorTracking();
1361    });
1362  }
1363  observeStickyElements(callback) {
1364    const observer = new MutationObserver(mutationsList => {
1365      for (const mutation of mutationsList) {
1366        if ('childList' === mutation.type || 'attributes' === mutation.type && mutation.target.classList.contains('elementor-sticky')) {
1367          callback();
1368        }
1369      }
1370    });
1371    observer.observe(document.body, {
1372      childList: true,
1373      subtree: true,
1374      attributes: true,
1375      attributeFilter: ['class', 'style']
1376    });
1377  }
1378  initializeStickyAndAnchorTracking() {
1379    const anchorLinks = this.getAllAnchorLinks();
1380    const stickyElements = this.getAllStickyElements();
1381    const trackedElements = [];
1382    if (!stickyElements.length > 0 && !anchorLinks.length > 0) {
1383      return;
1384    }
1385    this.trackStickyElements(stickyElements, trackedElements);
1386    this.trackAnchorLinks(anchorLinks, trackedElements);
1387    this.organizeStickyAndAnchors(trackedElements);
1388  }
1389  trackAnchorLinks(anchorLinks, trackedElements) {
1390    anchorLinks.forEach(element => {
1391      const target = this.getAnchorTarget(element);
1392      const scrollPosition = this.getScrollPosition(target);
1393      trackedElements.push({
1394        element: target,
1395        type: 'anchor',
1396        scrollPosition
1397      });
1398    });
1399  }
1400  trackStickyElements(stickyElements, trackedElements) {
1401    stickyElements.forEach(element => {
1402      const settings = this.getElementSettings(element);
1403      if (!settings || !settings.sticky_anchor_link_offset) {
1404        return;
1405      }
1406      const {
1407        sticky_anchor_link_offset: scrollMarginTop
1408      } = settings;
1409      if (0 === scrollMarginTop) {
1410        return;
1411      }
1412      const scrollPosition = this.getScrollPosition(element);
1413      trackedElements.push({
1414        scrollMarginTop,
1415        type: 'sticky',
1416        scrollPosition
1417      });
1418    });
1419  }
1420  organizeStickyAndAnchors(elements) {
1421    const stickyList = this.filterAndSortElementsByType(elements, 'sticky');
1422    const anchorList = this.filterAndSortElementsByType(elements, 'anchor');
1423    stickyList.forEach((sticky, index) => {
1424      this.defineCurrentStickyRange(sticky, index, stickyList, anchorList);
1425    });
1426  }
1427  defineCurrentStickyRange(sticky, index, stickyList, anchorList) {
1428    const nextStickyScrollPosition = index + 1 < stickyList.length ? stickyList[index + 1].scrollPosition : Infinity;
1429    sticky.anchor = anchorList.filter(anchor => {
1430      const withinRange = anchor.scrollPosition > sticky.scrollPosition && anchor.scrollPosition < nextStickyScrollPosition;
1431      if (withinRange) {
1432        anchor.element.style.scrollMarginTop = `${sticky.scrollMarginTop}px`;
1433      }
1434      return withinRange;
1435    });
1436  }
1437  getScrollPosition(element) {
1438    let offsetTop = 0;
1439    while (element) {
1440      offsetTop += element.offsetTop;
1441      element = element.offsetParent;
1442    }
1443    return offsetTop;
1444  }
1445  getAllStickyElements() {
1446    const allStickyElements = document.querySelectorAll(this.getSettings('selectors.stickyElements'));
1447    return Array.from(allStickyElements).filter((anchor, index, self) => index === self.findIndex(t => t.getAttribute('data-id') === anchor.getAttribute('data-id')));
1448  }
1449  getAllAnchorLinks() {
1450    const allAnchors = document.querySelectorAll(this.getSettings('selectors.links'));
1451    return Array.from(allAnchors).filter((anchor, index, self) => index === self.findIndex(t => t.getAttribute('href') === anchor.getAttribute('href')));
1452  }
1453  filterAndSortElementsByType(elements, type) {
1454    return elements.filter(item => type === item.type).sort((a, b) => a.scrollPosition - b.scrollPosition);
1455  }
1456  isValidSelector(hash) {
1457    const validSelectorPattern = /^#[A-Za-z_][\w-]*$/;
1458    return validSelectorPattern.test(hash);
1459  }
1460  getAnchorTarget(element) {
1461    const hash = element?.hash;
1462    if (!this.isValidSelector(hash)) {
1463      return null;
1464    }
1465    return document.querySelector(hash);
1466  }
1467  getElementSettings(element) {
1468    return JSON.parse(element.getAttribute('data-settings'));
1469  }
1470}
1471exports["default"] = _default;
1472
1473/***/ }),
1474
1475/***/ "../assets/dev/js/frontend/utils/assets-loader.js":
1476/*!********************************************************!*\
1477  !*** ../assets/dev/js/frontend/utils/assets-loader.js ***!
1478  \********************************************************/
1479/***/ ((__unused_webpack_module, exports) => {
1480
1481
1482
1483Object.defineProperty(exports, "__esModule", ({
1484  value: true
1485}));
1486exports["default"] = void 0;
1487class AssetsLoader {
1488  getScriptElement(src) {
1489    const scriptElement = document.createElement('script');
1490    scriptElement.src = src;
1491    return scriptElement;
1492  }
1493  getStyleElement(src) {
1494    const styleElement = document.createElement('link');
1495    styleElement.rel = 'stylesheet';
1496    styleElement.href = src;
1497    return styleElement;
1498  }
1499  load(type, key) {
1500    const assetData = AssetsLoader.assets[type][key];
1501    if (!assetData.loader) {
1502      assetData.loader = this.isAssetLoaded(assetData, type) ? Promise.resolve(true) : this.loadAsset(assetData, type);
1503    }
1504    return assetData.loader;
1505  }
1506  isAssetLoaded(assetData, assetType) {
1507    const filePath = 'script' === assetType ? `script[src="${assetData.src}"]` : `link[href="${assetData.src}"]`;
1508    return !!document.querySelectorAll(filePath)?.length;
1509  }
1510  loadAsset(assetData, assetType) {
1511    return new Promise(resolve => {
1512      const element = 'style' === assetType ? this.getStyleElement(assetData.src) : this.getScriptElement(assetData.src);
1513      element.onload = () => resolve(true);
1514      this.appendAsset(assetData, element);
1515    });
1516  }
1517  appendAsset(assetData, element) {
1518    const beforeElement = document.querySelector(assetData.before);
1519    if (!!beforeElement) {
1520      beforeElement.insertAdjacentElement('beforebegin', element);
1521      return;
1522    }
1523    const parent = 'head' === assetData.parent ? assetData.parent : 'body';
1524    document[parent].appendChild(element);
1525  }
1526}
1527exports["default"] = AssetsLoader;
1528const assetsUrl = elementorFrontendConfig.urls.assets;
1529const fileSuffix = elementorFrontendConfig.environmentMode.isScriptDebug ? '' : '.min';
1530const pluginVersion = elementorFrontendConfig.version;
1531AssetsLoader.assets = {
1532  script: {
1533    dialog: {
1534      src: `${assetsUrl}lib/dialog/dialog${fileSuffix}.js?ver=4.9.3`
1535    },
1536    'share-link': {
1537      src: `${assetsUrl}lib/share-link/share-link${fileSuffix}.js?ver=${pluginVersion}`
1538    },
1539    // TODO: Remove 'swiper' in v3.29.0 [ED-16272].
1540    swiper: {
1541      src: `${assetsUrl}lib/swiper/v8/swiper${fileSuffix}.js?ver=8.4.5`
1542    }
1543  },
1544  style: {
1545    // TODO: Remove 'swiper' in v3.28.0 [ED-16258].
1546    swiper: {
1547      src: `${assetsUrl}lib/swiper/v8/css/swiper${fileSuffix}.css?ver=8.4.5`,
1548      parent: 'head'
1549    },
1550    'e-lightbox': {
1551      src: elementorFrontendConfig?.responsive?.hasCustomBreakpoints ? `${elementorFrontendConfig.urls.uploadUrl}/elementor/css/custom-lightbox.min.css?ver=${pluginVersion}` : `${assetsUrl}css/conditionals/lightbox${fileSuffix}.css?ver=${pluginVersion}`
1552    },
1553    dialog: {
1554      src: `${assetsUrl}css/conditionals/dialog${fileSuffix}.css?ver=${pluginVersion}`,
1555      parent: 'head',
1556      before: '#elementor-frontend-css'
1557    }
1558  }
1559};
1560
1561/***/ }),
1562
1563/***/ "../assets/dev/js/frontend/utils/controls.js":
1564/*!***************************************************!*\
1565  !*** ../assets/dev/js/frontend/utils/controls.js ***!
1566  \***************************************************/
1567/***/ ((__unused_webpack_module, exports) => {
1568
1569
1570
1571Object.defineProperty(exports, "__esModule", ({
1572  value: true
1573}));
1574exports["default"] = void 0;
1575class Controls {
1576  /**
1577   * Get Control Value
1578   *
1579   * Retrieves a control value.
1580   * This function has been copied from `elementor/assets/dev/js/editor/utils/conditions.js`.
1581   *
1582   * @since 3.11.0
1583   *
1584   * @param {{}}     controlSettings A settings object (e.g. element settings - keys and values)
1585   * @param {string} controlKey      The control key name
1586   * @param {string} controlSubKey   A specific property of the control object.
1587   * @return {*} Control Value
1588   */
1589  getControlValue(controlSettings, controlKey, controlSubKey) {
1590    let value;
1591    if ('object' === typeof controlSettings[controlKey] && controlSubKey) {
1592      value = controlSettings[controlKey][controlSubKey];
1593    } else {
1594      value = controlSettings[controlKey];
1595    }
1596    return value;
1597  }
1598
1599  /**
1600   * Get the value of a responsive control.
1601   *
1602   * Retrieves the value of a responsive control for the current device or for this first parent device which has a control value.
1603   *
1604   * @since 3.11.0
1605   *
1606   * @param {{}}     controlSettings A settings object (e.g. element settings - keys and values)
1607   * @param {string} controlKey      The control key name
1608   * @param {string} controlSubKey   A specific property of the control object.
1609   * @param {string} device          If we want to get a value for a specific device mode.
1610   * @return {*} Control Value
1611   */
1612  getResponsiveControlValue(controlSettings, controlKey) {
1613    let controlSubKey = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : '';
1614    let device = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : null;
1615    const currentDeviceMode = device || elementorFrontend.getCurrentDeviceMode(),
1616      controlValueDesktop = this.getControlValue(controlSettings, controlKey, controlSubKey);
1617
1618    // Set the control value for the current device mode.
1619    // First check the widescreen device mode.
1620    if ('widescreen' === currentDeviceMode) {
1621      const controlValueWidescreen = this.getControlValue(controlSettings, `${controlKey}_widescreen`, controlSubKey);
1622      return !!controlValueWidescreen || 0 === controlValueWidescreen ? controlValueWidescreen : controlValueDesktop;
1623    }
1624
1625    // Loop through all responsive and desktop device modes.
1626    const activeBreakpoints = elementorFrontend.breakpoints.getActiveBreakpointsList({
1627      withDesktop: true
1628    });
1629    let parentDeviceMode = currentDeviceMode,
1630      deviceIndex = activeBreakpoints.indexOf(currentDeviceMode),
1631      controlValue = '';
1632    while (deviceIndex <= activeBreakpoints.length) {
1633      if ('desktop' === parentDeviceMode) {
1634        controlValue = controlValueDesktop;
1635        break;
1636      }
1637      const responsiveControlKey = `${controlKey}_${parentDeviceMode}`,
1638        responsiveControlValue = this.getControlValue(controlSettings, responsiveControlKey, controlSubKey);
1639      if (!!responsiveControlValue || 0 === responsiveControlValue) {
1640        controlValue = responsiveControlValue;
1641        break;
1642      }
1643
1644      // If no control value has been set for the current device mode, then check the parent device mode.
1645      deviceIndex++;
1646      parentDeviceMode = activeBreakpoints[deviceIndex];
1647    }
1648    return controlValue;
1649  }
1650}
1651exports["default"] = Controls;
1652
1653/***/ }),
1654
1655/***/ "../assets/dev/js/frontend/utils/lightbox/lightbox-manager.js":
1656/*!********************************************************************!*\
1657  !*** ../assets/dev/js/frontend/utils/lightbox/lightbox-manager.js ***!
1658  \********************************************************************/
1659/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
1660
1661
1662
1663Object.defineProperty(exports, "__esModule", ({
1664  value: true
1665}));
1666exports["default"] = void 0;
1667__webpack_require__(/*! core-js/modules/esnext.iterator.constructor.js */ "../node_modules/core-js/modules/esnext.iterator.constructor.js");
1668__webpack_require__(/*! core-js/modules/esnext.iterator.find.js */ "../node_modules/core-js/modules/esnext.iterator.find.js");
1669class LightboxManager extends elementorModules.ViewModule {
1670  static getLightbox() {
1671    const lightboxPromise = new Promise(resolveLightbox => {
1672        __webpack_require__.e(/*! import() | lightbox */ "lightbox").then(__webpack_require__.t.bind(__webpack_require__, /*! elementor-frontend/utils/lightbox/lightbox */ "../assets/dev/js/frontend/utils/lightbox/lightbox.js", 23)).then(_ref => {
1673          let {
1674            default: LightboxModule
1675          } = _ref;
1676          return resolveLightbox(new LightboxModule());
1677        });
1678      }),
1679      dialogScriptPromise = elementorFrontend.utils.assetsLoader.load('script', 'dialog'),
1680      dialogStylePromise = elementorFrontend.utils.assetsLoader.load('style', 'dialog'),
1681      shareLinkPromise = elementorFrontend.utils.assetsLoader.load('script', 'share-link'),
1682      swiperStylePromise = elementorFrontend.utils.assetsLoader.load('style', 'swiper'),
1683      // TODO: Remove in v3.28.0 [ED-16258].
1684      lightboxStylePromise = elementorFrontend.utils.assetsLoader.load('style', 'e-lightbox');
1685    return Promise.all([lightboxPromise, dialogScriptPromise, dialogStylePromise, shareLinkPromise, swiperStylePromise, lightboxStylePromise]).then(() => lightboxPromise);
1686  }
1687  getDefaultSettings() {
1688    return {
1689      selectors: {
1690        links: 'a, [data-elementor-lightbox]',
1691        slideshow: '[data-elementor-lightbox-slideshow]'
1692      }
1693    };
1694  }
1695  getDefaultElements() {
1696    return {
1697      $links: jQuery(this.getSettings('selectors.links')),
1698      $slideshow: jQuery(this.getSettings('selectors.slideshow'))
1699    };
1700  }
1701  isLightboxLink(element) {
1702    // Check for lowercase `a` to make sure it works also for links inside SVGs.
1703    if ('a' === element.tagName.toLowerCase() && (element.hasAttribute('download') || !/^[^?]+\.(png|jpe?g|gif|svg|webp)(\?.*)?$/i.test(element.href)) && !element.dataset.elementorLightboxVideo) {
1704      return false;
1705    }
1706    const generalOpenInLightbox = elementorFrontend.getKitSettings('global_image_lightbox'),
1707      currentLinkOpenInLightbox = element.dataset.elementorOpenLightbox;
1708    return 'yes' === currentLinkOpenInLightbox || generalOpenInLightbox && 'no' !== currentLinkOpenInLightbox;
1709  }
1710  isLightboxSlideshow() {
1711    return 0 !== this.elements.$slideshow.length;
1712  }
1713  async onLinkClick(event) {
1714    const element = event.currentTarget,
1715      $target = jQuery(event.target),
1716      editMode = elementorFrontend.isEditMode(),
1717      isColorPickingMode = editMode && elementor.$previewContents.find('body').hasClass('elementor-editor__ui-state__color-picker'),
1718      isClickInsideElementor = !!$target.closest('.elementor-edit-area').length;
1719    if (!this.isLightboxLink(element)) {
1720      if (editMode && isClickInsideElementor) {
1721        event.preventDefault();
1722      }
1723      return;
1724    }
1725    event.preventDefault();
1726    if (editMode && !elementor.getPreferences('lightbox_in_editor')) {
1727      return;
1728    }
1729
1730    // Disable lightbox on color picking mode.
1731    if (isColorPickingMode) {
1732      return;
1733    }
1734    const lightbox = await LightboxManager.getLightbox();
1735    lightbox.createLightbox(element);
1736  }
1737  bindEvents() {
1738    elementorFrontend.elements.$document.on('click', this.getSettings('selectors.links'), event => this.onLinkClick(event));
1739  }
1740  onInit() {
1741    super.onInit(...arguments);
1742    if (elementorFrontend.isEditMode()) {
1743      return;
1744    }
1745    this.maybeActivateLightboxOnLink();
1746  }
1747  maybeActivateLightboxOnLink() {
1748    // Detecting lightbox links on init will reduce the time of waiting to the lightbox to be display on slow connections.
1749    this.elements.$links.each((index, element) => {
1750      if (this.isLightboxLink(element)) {
1751        LightboxManager.getLightbox();
1752
1753        // Breaking the iteration when the library loading has already been triggered.
1754        return false;
1755      }
1756    });
1757  }
1758}
1759exports["default"] = LightboxManager;
1760
1761/***/ }),
1762
1763/***/ "../assets/dev/js/frontend/utils/swiper.js":
1764/*!*************************************************!*\
1765  !*** ../assets/dev/js/frontend/utils/swiper.js ***!
1766  \*************************************************/
1767/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
1768
1769
1770
1771Object.defineProperty(exports, "__esModule", ({
1772  value: true
1773}));
1774exports["default"] = void 0;
1775__webpack_require__(/*! core-js/modules/esnext.iterator.constructor.js */ "../node_modules/core-js/modules/esnext.iterator.constructor.js");
1776__webpack_require__(/*! core-js/modules/esnext.iterator.for-each.js */ "../node_modules/core-js/modules/esnext.iterator.for-each.js");
1777class SwiperHandler {
1778  constructor(container, config) {
1779    this.config = config;
1780    if (this.config.breakpoints) {
1781      // The config is passed as a param to allow adjustConfig to be called outside of this wrapper
1782      this.config = this.adjustConfig(config);
1783    }
1784    if (container instanceof jQuery) {
1785      container = container[0];
1786    }
1787
1788    // The Swiper will overlap the column width when applying custom margin values on the column.
1789    container.closest('.elementor-widget-wrap')?.classList.add('e-swiper-container');
1790    container.closest('.elementor-widget')?.classList.add('e-widget-swiper');
1791    return new Promise(resolve => {
1792      // TODO: Remove in v3.29.0 [ED-16272].
1793      if ('undefined' === typeof Swiper) {
1794        elementorFrontend.utils.assetsLoader.load('script', 'swiper').then(() => resolve(this.createSwiperInstance(container, this.config)));
1795        return;
1796      }
1797      if ('function' === typeof Swiper && 'undefined' === typeof window.Swiper) {
1798        window.Swiper = Swiper;
1799      }
1800      resolve(this.createSwiperInstance(container, this.config));
1801    });
1802  }
1803  createSwiperInstance(container, config) {
1804    const SwiperSource = window.Swiper;
1805    SwiperSource.prototype.adjustConfig = this.adjustConfig;
1806    return new SwiperSource(container, config);
1807  }
1808
1809  // Backwards compatibility for Elementor Pro <2.9.0 (old Swiper version - <5.0.0)
1810  // In Swiper 5.0.0 and up, breakpoints changed from acting as max-width to acting as min-width
1811  adjustConfig(config) {
1812    // Only reverse the breakpoints if the handle param has been defined
1813    if (!config.handleElementorBreakpoints) {
1814      return config;
1815    }
1816    const elementorBreakpoints = elementorFrontend.config.responsive.activeBreakpoints,
1817      elementorBreakpointValues = elementorFrontend.breakpoints.getBreakpointValues();
1818    Object.keys(config.breakpoints).forEach(configBPKey => {
1819      const configBPKeyInt = parseInt(configBPKey);
1820      let breakpointToUpdate;
1821
1822      // The `configBPKeyInt + 1` is a BC Fix for Elementor Pro Carousels from 2.8.0-2.8.3 used with Elementor >= 2.9.0
1823      if (configBPKeyInt === elementorBreakpoints.mobile.value || configBPKeyInt + 1 === elementorBreakpoints.mobile.value) {
1824        // This handles the mobile breakpoint. Elementor's default sm breakpoint is never actually used,
1825        // so the mobile breakpoint (md) needs to be handled separately and set to the 0 breakpoint (xs)
1826        breakpointToUpdate = 0;
1827      } else if (elementorBreakpoints.widescreen && (configBPKeyInt === elementorBreakpoints.widescreen.value || configBPKeyInt + 1 === elementorBreakpoints.widescreen.value)) {
1828        // Widescreen is a min-width breakpoint. Since in Swiper >5.0 the breakpoint system is min-width based,
1829        // the value we pass to the Swiper instance in this case is the breakpoint from the user, unchanged.
1830        breakpointToUpdate = configBPKeyInt;
1831      } else {
1832        // Find the index of the current config breakpoint in the Elementor Breakpoints array
1833        const currentBPIndexInElementorBPs = elementorBreakpointValues.findIndex(elementorBP => {
1834          // BC Fix for Elementor Pro Carousels from 2.8.0-2.8.3 used with Elementor >= 2.9.0
1835          return configBPKeyInt === elementorBP || configBPKeyInt + 1 === elementorBP;
1836        });
1837
1838        // For all other Swiper config breakpoints, move them one breakpoint down on the breakpoint list,
1839        // according to the array of Elementor's global breakpoints
1840        breakpointToUpdate = elementorBreakpointValues[currentBPIndexInElementorBPs - 1];
1841      }
1842      config.breakpoints[breakpointToUpdate] = config.breakpoints[configBPKey];
1843
1844      // Then reset the settings in the original breakpoint key to the default values
1845      config.breakpoints[configBPKey] = {
1846        slidesPerView: config.slidesPerView,
1847        slidesPerGroup: config.slidesPerGroup ? config.slidesPerGroup : 1
1848      };
1849    });
1850    return config;
1851  }
1852}
1853exports["default"] = SwiperHandler;
1854
1855/***/ }),
1856
1857/***/ "../assets/dev/js/frontend/utils/url-actions.js":
1858/*!******************************************************!*\
1859  !*** ../assets/dev/js/frontend/utils/url-actions.js ***!
1860  \******************************************************/
1861/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
1862
1863
1864
1865Object.defineProperty(exports, "__esModule", ({
1866  value: true
1867}));
1868exports["default"] = void 0;
1869__webpack_require__(/*! core-js/modules/web.dom-exception.stack.js */ "../node_modules/core-js/modules/web.dom-exception.stack.js");
1870class _default extends elementorModules.ViewModule {
1871  getDefaultSettings() {
1872    return {
1873      selectors: {
1874        links: 'a[href^="%23elementor-action"], a[href^="#elementor-action"]'
1875      }
1876    };
1877  }
1878  bindEvents() {
1879    elementorFrontend.elements.$document.on('click', this.getSettings('selectors.links'), this.runLinkAction.bind(this));
1880  }
1881  initActions() {
1882    this.actions = {
1883      lightbox: async settings => {
1884        const lightbox = await elementorFrontend.utils.lightbox;
1885        if (settings.slideshow) {
1886          // Handle slideshow display
1887          lightbox.openSlideshow(settings.slideshow, settings.url);
1888        } else {
1889          // If the settings has an ID - the lightbox target content is an image - the ID is an attachment ID.
1890          if (settings.id) {
1891            settings.type = 'image';
1892          }
1893          lightbox.showModal(settings);
1894        }
1895      }
1896    };
1897  }
1898  addAction(name, callback) {
1899    this.actions[name] = callback;
1900  }
1901  runAction(url) {
1902    url = decodeURI(url);
1903    url = decodeURIComponent(url);
1904    const actionMatch = url.match(/action=(.+?)&/);
1905    if (!actionMatch) {
1906      return;
1907    }
1908    const action = this.actions[actionMatch[1]];
1909    if (!action) {
1910      return;
1911    }
1912    let settings = {};
1913    const settingsMatch = url.match(/settings=(.+)/);
1914    if (settingsMatch) {
1915      settings = JSON.parse(atob(settingsMatch[1]));
1916    }
1917    settings.previousEvent = event;
1918    for (var _len = arguments.length, restArgs = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {
1919      restArgs[_key - 1] = arguments[_key];
1920    }
1921    action(settings, ...restArgs);
1922  }
1923  runLinkAction(event) {
1924    event.preventDefault();
1925    this.runAction(jQuery(event.currentTarget).attr('href'), event);
1926  }
1927  runHashAction() {
1928    if (!location.hash) {
1929      return;
1930    }
1931
1932    // Only if an element with this action hash exists on the page do we allow running the action.
1933    const elementWithHash = document.querySelector(`[data-e-action-hash="${location.hash}"], a[href*="${location.hash}"]`);
1934    if (elementWithHash) {
1935      this.runAction(elementWithHash.getAttribute('data-e-action-hash'));
1936    }
1937  }
1938  createActionHash(action, settings) {
1939    // We need to encode the hash tag (#) here, in order to support share links for a variety of providers
1940    return encodeURIComponent(`#elementor-action:action=${action}&settings=${btoa(JSON.stringify(settings))}`);
1941  }
1942  onInit() {
1943    super.onInit();
1944    this.initActions();
1945    elementorFrontend.on('components:init', this.runHashAction.bind(this));
1946  }
1947}
1948exports["default"] = _default;
1949
1950/***/ }),
1951
1952/***/ "../assets/dev/js/frontend/utils/utils.js":
1953/*!************************************************!*\
1954  !*** ../assets/dev/js/frontend/utils/utils.js ***!
1955  \************************************************/
1956/***/ ((__unused_webpack_module, exports) => {
1957
1958
1959
1960Object.defineProperty(exports, "__esModule", ({
1961  value: true
1962}));
1963exports.isScrollSnapActive = exports.escapeHTML = void 0;
1964// Escape HTML special chars to prevent XSS.
1965const escapeHTML = str => {
1966  const specialChars = {
1967    '&': '&amp;',
1968    '<': '&lt;',
1969    '>': '&gt;',
1970    "'": '&#39;',
1971    '"': '&quot;'
1972  };
1973  return str.replace(/[&<>'"]/g, tag => specialChars[tag] || tag);
1974};
1975
1976// Check if Scroll-Snap is active.
1977exports.escapeHTML = escapeHTML;
1978const isScrollSnapActive = () => {
1979  const scrollSnapStatus = elementorFrontend.isEditMode() ? elementor.settings.page.model.attributes?.scroll_snap : elementorFrontend.config.settings.page?.scroll_snap;
1980  return 'yes' === scrollSnapStatus ? true : false;
1981};
1982exports.isScrollSnapActive = isScrollSnapActive;
1983
1984/***/ }),
1985
1986/***/ "../assets/dev/js/frontend/utils/video-api/base-loader.js":
1987/*!****************************************************************!*\
1988  !*** ../assets/dev/js/frontend/utils/video-api/base-loader.js ***!
1989  \****************************************************************/
1990/***/ ((__unused_webpack_module, exports) => {
1991
1992
1993
1994Object.defineProperty(exports, "__esModule", ({
1995  value: true
1996}));
1997exports["default"] = void 0;
1998class BaseLoader extends elementorModules.ViewModule {
1999  getDefaultSettings() {
2000    return {
2001      isInserted: false,
2002      selectors: {
2003        firstScript: 'script:first'
2004      }
2005    };
2006  }
2007  getDefaultElements() {
2008    return {
2009      $firstScript: jQuery(this.getSettings('selectors.firstScript'))
2010    };
2011  }
2012  insertAPI() {
2013    this.elements.$firstScript.before(jQuery('<script>', {
2014      src: this.getApiURL()
2015    }));
2016    this.setSettings('isInserted', true);
2017  }
2018  getVideoIDFromURL(url) {
2019    const videoIDParts = url.match(this.getURLRegex());
2020    return videoIDParts && videoIDParts[1];
2021  }
2022  onApiReady(callback) {
2023    if (!this.getSettings('isInserted')) {
2024      this.insertAPI();
2025    }
2026    if (this.isApiLoaded()) {
2027      callback(this.getApiObject());
2028    } else {
2029      // If not ready check again by timeout..
2030      setTimeout(() => {
2031        this.onApiReady(callback);
2032      }, 350);
2033    }
2034  }
2035  getAutoplayURL(videoURL) {
2036    return videoURL.replace('&autoplay=0', '') + '&autoplay=1';
2037  }
2038}
2039exports["default"] = BaseLoader;
2040
2041/***/ }),
2042
2043/***/ "../assets/dev/js/frontend/utils/video-api/vimeo-loader.js":
2044/*!*****************************************************************!*\
2045  !*** ../assets/dev/js/frontend/utils/video-api/vimeo-loader.js ***!
2046  \*****************************************************************/
2047/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
2048
2049
2050
2051var _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ "../node_modules/@babel/runtime/helpers/interopRequireDefault.js");
2052Object.defineProperty(exports, "__esModule", ({
2053  value: true
2054}));
2055exports["default"] = void 0;
2056var _baseLoader = _interopRequireDefault(__webpack_require__(/*! ./base-loader */ "../assets/dev/js/frontend/utils/video-api/base-loader.js"));
2057class VimeoLoader extends _baseLoader.default {
2058  getApiURL() {
2059    return 'https://player.vimeo.com/api/player.js';
2060  }
2061  getURLRegex() {
2062    return /^(?:https?:\/\/)?(?:www|player\.)?(?:vimeo\.com\/)?(?:video\/|external\/)?(\d+)([^.?&#"'>]?)/;
2063  }
2064  isApiLoaded() {
2065    return window.Vimeo;
2066  }
2067  getApiObject() {
2068    return Vimeo;
2069  }
2070  getAutoplayURL(videoURL) {
2071    // Vimeo requires the '#t=' param to be last in the URL.
2072    const timeMatch = videoURL.match(/#t=[^&]*/);
2073    return videoURL.replace(timeMatch[0], '') + timeMatch;
2074  }
2075}
2076exports["default"] = VimeoLoader;
2077
2078/***/ }),
2079
2080/***/ "../assets/dev/js/frontend/utils/video-api/youtube-loader.js":
2081/*!*******************************************************************!*\
2082  !*** ../assets/dev/js/frontend/utils/video-api/youtube-loader.js ***!
2083  \*******************************************************************/
2084/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
2085
2086
2087
2088var _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ "../node_modules/@babel/runtime/helpers/interopRequireDefault.js");
2089Object.defineProperty(exports, "__esModule", ({
2090  value: true
2091}));
2092exports["default"] = void 0;
2093var _baseLoader = _interopRequireDefault(__webpack_require__(/*! ./base-loader */ "../assets/dev/js/frontend/utils/video-api/base-loader.js"));
2094class YoutubeLoader extends _baseLoader.default {
2095  getApiURL() {
2096    return 'https://www.youtube.com/iframe_api';
2097  }
2098  getURLRegex() {
2099    return /^(?:https?:\/\/)?(?:www\.)?(?:m\.)?(?:youtu\.be\/|youtube\.com\/(?:(?:watch)?\?(?:.*&)?vi?=|(?:embed|v|vi|user|shorts)\/))([^?&"'>]+)/;
2100  }
2101  isApiLoaded() {
2102    return window.YT && YT.loaded;
2103  }
2104  getApiObject() {
2105    return YT;
2106  }
2107}
2108exports["default"] = YoutubeLoader;
2109
2110/***/ }),
2111
2112/***/ "../assets/dev/js/public-path.js":
2113/*!***************************************!*\
2114  !*** ../assets/dev/js/public-path.js ***!
2115  \***************************************/
2116/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {
2117
2118
2119
2120/* eslint-disable camelcase */
2121__webpack_require__.p = elementorFrontendConfig.urls.assets + 'js/';
2122
2123/***/ }),
2124
2125/***/ "../assets/dev/js/utils/breakpoints.js":
2126/*!*********************************************!*\
2127  !*** ../assets/dev/js/utils/breakpoints.js ***!
2128  \*********************************************/
2129/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
2130
2131
2132
2133Object.defineProperty(exports, "__esModule", ({
2134  value: true
2135}));
2136exports["default"] = void 0;
2137__webpack_require__(/*! core-js/modules/es.array.push.js */ "../node_modules/core-js/modules/es.array.push.js");
2138__webpack_require__(/*! core-js/modules/esnext.iterator.constructor.js */ "../node_modules/core-js/modules/esnext.iterator.constructor.js");
2139__webpack_require__(/*! core-js/modules/esnext.iterator.for-each.js */ "../node_modules/core-js/modules/esnext.iterator.for-each.js");
2140__webpack_require__(/*! core-js/modules/esnext.iterator.map.js */ "../node_modules/core-js/modules/esnext.iterator.map.js");
2141/**
2142 * Breakpoints
2143 *
2144 * This utility class contains helper functions relating to Elementor's breakpoints system.
2145 *
2146 * @since 3.4.0
2147 */
2148class Breakpoints extends elementorModules.Module {
2149  constructor(responsiveConfig) {
2150    super();
2151
2152    // The passed config is either `elementor.config.responsive` or `elementorFrontend.config.responsive`
2153    this.responsiveConfig = responsiveConfig;
2154  }
2155
2156  /**
2157   * Get Active Breakpoints List
2158   *
2159   * Returns a flat array containing the active breakpoints/devices. By default, it returns the li
2160   * the list ordered from smallest to largest breakpoint. If `true` is passed as a parameter, it reverses the order.
2161   *
2162   * @since 3.4.0
2163   *
2164   * @param {Object} args
2165   */
2166  getActiveBreakpointsList() {
2167    let args = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
2168    const defaultArgs = {
2169      largeToSmall: false,
2170      withDesktop: false
2171    };
2172    args = {
2173      ...defaultArgs,
2174      ...args
2175    };
2176    const breakpointKeys = Object.keys(this.responsiveConfig.activeBreakpoints);
2177    if (args.withDesktop) {
2178      // If there is an active 'widescreen' breakpoint, insert the artificial 'desktop' device below it.
2179      const widescreenIndex = breakpointKeys.indexOf('widescreen'),
2180        indexToInsertDesktopDevice = -1 === widescreenIndex ? breakpointKeys.length : breakpointKeys.length - 1;
2181      breakpointKeys.splice(indexToInsertDesktopDevice, 0, 'desktop');
2182    }
2183    if (args.largeToSmall) {
2184      breakpointKeys.reverse();
2185    }
2186    return breakpointKeys;
2187  }
2188
2189  /**
2190   * Get Active Breakpoint Values
2191   *
2192   * Returns a flat array containing the list of active breakpoint values, from smallest to largest.
2193   *
2194   * @since 3.4.0
2195   */
2196  getBreakpointValues() {
2197    const {
2198        activeBreakpoints
2199      } = this.responsiveConfig,
2200      breakpointValues = [];
2201    Object.values(activeBreakpoints).forEach(breakpointConfig => {
2202      breakpointValues.push(breakpointConfig.value);
2203    });
2204    return breakpointValues;
2205  }
2206
2207  /**
2208   * Get Desktop Previous Device Key
2209   *
2210   * Returns the key of the device directly under desktop (can be 'tablet', 'tablet_extra', 'laptop').
2211   *
2212   * @since 3.4.0
2213   *
2214   * @return {string} device key
2215   */
2216  getDesktopPreviousDeviceKey() {
2217    let desktopPreviousDevice = '';
2218    const {
2219        activeBreakpoints
2220      } = this.responsiveConfig,
2221      breakpointKeys = Object.keys(activeBreakpoints),
2222      numOfDevices = breakpointKeys.length;
2223    if ('min' === activeBreakpoints[breakpointKeys[numOfDevices - 1]].direction) {
2224      // If the widescreen breakpoint is active, the device that's previous to desktop is the last one before
2225      // widescreen.
2226      desktopPreviousDevice = breakpointKeys[numOfDevices - 2];
2227    } else {
2228      // If the widescreen breakpoint isn't active, we just take the last device returned by the config.
2229      desktopPreviousDevice = breakpointKeys[numOfDevices - 1];
2230    }
2231    return desktopPreviousDevice;
2232  }
2233
2234  /**
2235   * Get Device Minimum Breakpoint
2236   *
2237   * Returns the minimum point in the device's display range. For each device, the minimum point of its display range
2238   * is the max point of the device below it + 1px. For example, if the active devices are mobile, tablet,
2239   * and desktop, and the mobile breakpoint is 767px, the minimum display point for tablet devices is 768px.
2240   *
2241   * @since 3.4.0
2242   *
2243   * @return {number|*} minimum breakpoint
2244   */
2245  getDesktopMinPoint() {
2246    const {
2247        activeBreakpoints
2248      } = this.responsiveConfig,
2249      desktopPreviousDevice = this.getDesktopPreviousDeviceKey();
2250    return activeBreakpoints[desktopPreviousDevice].value + 1;
2251  }
2252
2253  /**
2254   * Get Device Minimum Breakpoint
2255   *
2256   * Returns the minimum point in the device's display range. For each device, the minimum point of its display range
2257   * is the max point of the device below it + 1px. For example, if the active devices are mobile, tablet,
2258   * and desktop, and the mobile breakpoint is 767px, the minimum display point for tablet devices is 768px.
2259   *
2260   * @since 3.4.0
2261   *
2262   * @param {string} device
2263   * @return {number|*} minimum breakpoint
2264   */
2265  getDeviceMinBreakpoint(device) {
2266    if ('desktop' === device) {
2267      return this.getDesktopMinPoint();
2268    }
2269    const {
2270        activeBreakpoints
2271      } = this.responsiveConfig,
2272      breakpointNames = Object.keys(activeBreakpoints);
2273    let minBreakpoint;
2274    if (breakpointNames[0] === device) {
2275      // For the lowest breakpoint, the min point is always 320.
2276      minBreakpoint = 320;
2277    } else if ('widescreen' === device) {
2278      // Widescreen only has a minimum point. In this case, the breakpoint
2279      // value in the Breakpoints config is itself the device min point.
2280      if (activeBreakpoints[device]) {
2281        minBreakpoint = activeBreakpoints[device].value;
2282      } else {
2283        // If the widescreen breakpoint does not exist in the active breakpoints config (for example, in the
2284        // case this method runs as the breakpoint is being added), get the value from the full config.
2285        minBreakpoint = this.responsiveConfig.breakpoints.widescreen;
2286      }
2287    } else {
2288      const deviceNameIndex = breakpointNames.indexOf(device),
2289        previousIndex = deviceNameIndex - 1;
2290      minBreakpoint = activeBreakpoints[breakpointNames[previousIndex]].value + 1;
2291    }
2292    return minBreakpoint;
2293  }
2294
2295  /**
2296   * Get Active Match Regex
2297   *
2298   * Returns a regular expression containing all active breakpoints prefixed with an underscore.
2299   *
2300   * @return {RegExp} Active Match Regex
2301   */
2302  getActiveMatchRegex() {
2303    return new RegExp(this.getActiveBreakpointsList().map(device => '_' + device).join('|') + '$');
2304  }
2305}
2306exports["default"] = Breakpoints;
2307
2308/***/ }),
2309
2310/***/ "../assets/dev/js/utils/events.js":
2311/*!****************************************!*\
2312  !*** ../assets/dev/js/utils/events.js ***!
2313  \****************************************/
2314/***/ ((__unused_webpack_module, exports) => {
2315
2316
2317
2318Object.defineProperty(exports, "__esModule", ({
2319  value: true
2320}));
2321exports["default"] = exports.Events = void 0;
2322class Events {
2323  /**
2324   * Dispatch an Elementor event.
2325   *
2326   * Will dispatch both native event & jQuery event (as BC).
2327   * By default, `bcEvent` is `null`.
2328   *
2329   * @param {Object}      context - The context that will dispatch the event.
2330   * @param {string}      event   - Event to dispatch.
2331   * @param {*}           data    - Data to pass to the event, default to `null`.
2332   * @param {string|null} bcEvent - BC event to dispatch, default to `null`.
2333   *
2334   * @return {void}
2335   */
2336  static dispatch(context, event) {
2337    let data = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : null;
2338    let bcEvent = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : null;
2339    // Make sure to use the native context if it's a jQuery instance.
2340    context = context instanceof jQuery ? context[0] : context;
2341
2342    // Dispatch the BC event only if exists.
2343    if (bcEvent) {
2344      context.dispatchEvent(new CustomEvent(bcEvent, {
2345        detail: data
2346      }));
2347    }
2348
2349    // jQuery's `.on()` listens also to native custom events, so there is no need
2350    // to dispatch also a jQuery event.
2351    context.dispatchEvent(new CustomEvent(event, {
2352      detail: data
2353    }));
2354  }
2355}
2356exports.Events = Events;
2357var _default = exports["default"] = Events;
2358
2359/***/ }),
2360
2361/***/ "../assets/dev/js/utils/hooks.js":
2362/*!***************************************!*\
2363  !*** ../assets/dev/js/utils/hooks.js ***!
2364  \***************************************/
2365/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
2366
2367
2368
2369/**
2370 * Handles managing all events for whatever you plug it into. Priorities for hooks are based on lowest to highest in
2371 * that, lowest priority hooks are fired first.
2372 */
2373__webpack_require__(/*! core-js/modules/es.array.push.js */ "../node_modules/core-js/modules/es.array.push.js");
2374var EventManager = function () {
2375  var slice = Array.prototype.slice,
2376    MethodsAvailable;
2377
2378  /**
2379   * Contains the hooks that get registered with this EventManager. The array for storage utilizes a "flat"
2380   * object literal such that looking up the hook utilizes the native object literal hash.
2381   */
2382  var STORAGE = {
2383    actions: {},
2384    filters: {}
2385  };
2386
2387  /**
2388   * Removes the specified hook by resetting the value of it.
2389   *
2390   * @param {string}   type     Type of hook, either 'actions' or 'filters'
2391   * @param {Function} hook     The hook (namespace.identifier) to remove
2392   * @param {Function} callback
2393   * @param {*}        context
2394   * @private
2395   */
2396  function _removeHook(type, hook, callback, context) {
2397    var handlers, handler, i;
2398    if (!STORAGE[type][hook]) {
2399      return;
2400    }
2401    if (!callback) {
2402      STORAGE[type][hook] = [];
2403    } else {
2404      handlers = STORAGE[type][hook];
2405      if (!context) {
2406        for (i = handlers.length; i--;) {
2407          if (handlers[i].callback === callback) {
2408            handlers.splice(i, 1);
2409          }
2410        }
2411      } else {
2412        for (i = handlers.length; i--;) {
2413          handler = handlers[i];
2414          if (handler.callback === callback && handler.context === context) {
2415            handlers.splice(i, 1);
2416          }
2417        }
2418      }
2419    }
2420  }
2421
2422  /**
2423   * Use an insert sort for keeping our hooks organized based on priority. This function is ridiculously faster
2424   * than bubble sort, etc: http://jsperf.com/javascript-sort
2425   *
2426   * @param {Array<*>} hooks The custom array containing all of the appropriate hooks to perform an insert sort on.
2427   * @private
2428   */
2429  function _hookInsertSort(hooks) {
2430    var tmpHook, j, prevHook;
2431    for (var i = 1, len = hooks.length; i < len; i++) {
2432      tmpHook = hooks[i];
2433      j = i;
2434      while ((prevHook = hooks[j - 1]) && prevHook.priority > tmpHook.priority) {
2435        hooks[j] = hooks[j - 1];
2436        --j;
2437      }
2438      hooks[j] = tmpHook;
2439    }
2440    return hooks;
2441  }
2442
2443  /**
2444   * Adds the hook to the appropriate storage container
2445   *
2446   * @param {string}   type      'actions' or 'filters'
2447   * @param {Array<*>} hook      The hook (namespace.identifier) to add to our event manager
2448   * @param {Function} callback  The function that will be called when the hook is executed.
2449   * @param {number}   priority  The priority of this hook. Must be an integer.
2450   * @param {*}        [context] A value to be used for this
2451   * @private
2452   */
2453  function _addHook(type, hook, callback, priority, context) {
2454    var hookObject = {
2455      callback,
2456      priority,
2457      context
2458    };
2459
2460    // Utilize 'prop itself' : http://jsperf.com/hasownproperty-vs-in-vs-undefined/19
2461    var hooks = STORAGE[type][hook];
2462    if (hooks) {
2463      // TEMP FIX BUG
2464      var hasSameCallback = false;
2465      jQuery.each(hooks, function () {
2466        if (this.callback === callback) {
2467          hasSameCallback = true;
2468          return false;
2469        }
2470      });
2471      if (hasSameCallback) {
2472        return;
2473      }
2474      // END TEMP FIX BUG
2475
2476      hooks.push(hookObject);
2477      hooks = _hookInsertSort(hooks);
2478    } else {
2479      hooks = [hookObject];
2480    }
2481    STORAGE[type][hook] = hooks;
2482  }
2483
2484  /**
2485   * Runs the specified hook. If it is an action, the value is not modified but if it is a filter, it is.
2486   *
2487   * @param {string}   type 'actions' or 'filters'
2488   * @param {*}        hook The hook ( namespace.identifier ) to be ran.
2489   * @param {Array<*>} args Arguments to pass to the action/filter. If it's a filter, args is actually a single parameter.
2490   * @private
2491   */
2492  function _runHook(type, hook, args) {
2493    var handlers = STORAGE[type][hook],
2494      i,
2495      len;
2496    if (!handlers) {
2497      return 'filters' === type ? args[0] : false;
2498    }
2499    len = handlers.length;
2500    if ('filters' === type) {
2501      for (i = 0; i < len; i++) {
2502        args[0] = handlers[i].callback.apply(handlers[i].context, args);
2503      }
2504    } else {
2505      for (i = 0; i < len; i++) {
2506        handlers[i].callback.apply(handlers[i].context, args);
2507      }
2508    }
2509    return 'filters' === type ? args[0] : true;
2510  }
2511
2512  /**
2513   * Adds an action to the event manager.
2514   *
2515   * @param {string}   action        Must contain namespace.identifier
2516   * @param {Function} callback      Must be a valid callback function before this action is added
2517   * @param {number}   [priority=10] Used to control when the function is executed in relation to other callbacks bound to the same hook
2518   * @param {*}        [context]     Supply a value to be used for this
2519   */
2520  function addAction(action, callback, priority, context) {
2521    if ('string' === typeof action && 'function' === typeof callback) {
2522      priority = parseInt(priority || 10, 10);
2523      _addHook('actions', action, callback, priority, context);
2524    }
2525    return MethodsAvailable;
2526  }
2527
2528  /**
2529   * Performs an action if it exists. You can pass as many arguments as you want to this function; the only rule is
2530   * that the first argument must always be the action.
2531   */
2532  function doAction(/* Action, arg1, arg2, ... */
2533  ) {
2534    var args = slice.call(arguments);
2535    var action = args.shift();
2536    if ('string' === typeof action) {
2537      _runHook('actions', action, args);
2538    }
2539    return MethodsAvailable;
2540  }
2541
2542  /**
2543   * Removes the specified action if it contains a namespace.identifier & exists.
2544   *
2545   * @param {string}   action     The action to remove
2546   * @param {Function} [callback] Callback function to remove
2547   */
2548  function removeAction(action, callback) {
2549    if ('string' === typeof action) {
2550      _removeHook('actions', action, callback);
2551    }
2552    return MethodsAvailable;
2553  }
2554
2555  /**
2556   * Adds a filter to the event manager.
2557   *
2558   * @param {string}   filter        Must contain namespace.identifier
2559   * @param {Function} callback      Must be a valid callback function before this action is added
2560   * @param {number}   [priority=10] Used to control when the function is executed in relation to other callbacks bound to the same hook
2561   * @param {*}        [context]     Supply a value to be used for this
2562   */
2563  function addFilter(filter, callback, priority, context) {
2564    if ('string' === typeof filter && 'function' === typeof callback) {
2565      priority = parseInt(priority || 10, 10);
2566      _addHook('filters', filter, callback, priority, context);
2567    }
2568    return MethodsAvailable;
2569  }
2570
2571  /**
2572   * Performs a filter if it exists. You should only ever pass 1 argument to be filtered. The only rule is that
2573   * the first argument must always be the filter.
2574   */
2575  function applyFilters(/* Filter, filtered arg, arg2, ... */
2576  ) {
2577    var args = slice.call(arguments);
2578    var filter = args.shift();
2579    if ('string' === typeof filter) {
2580      return _runHook('filters', filter, args);
2581    }
2582    return MethodsAvailable;
2583  }
2584
2585  /**
2586   * Removes the specified filter if it contains a namespace.identifier & exists.
2587   *
2588   * @param {string}   filter     The action to remove
2589   * @param {Function} [callback] Callback function to remove
2590   */
2591  function removeFilter(filter, callback) {
2592    if ('string' === typeof filter) {
2593      _removeHook('filters', filter, callback);
2594    }
2595    return MethodsAvailable;
2596  }
2597
2598  /**
2599   * Maintain a reference to the object scope so our public methods never get confusing.
2600   */
2601  MethodsAvailable = {
2602    removeFilter,
2603    applyFilters,
2604    addFilter,
2605    removeAction,
2606    doAction,
2607    addAction
2608  };
2609
2610  // Return all of the publicly available methods
2611  return MethodsAvailable;
2612};
2613module.exports = EventManager;
2614
2615/***/ }),
2616
2617/***/ "../core/common/assets/js/utils/environment.js":
2618/*!*****************************************************!*\
2619  !*** ../core/common/assets/js/utils/environment.js ***!
2620  \*****************************************************/
2621/***/ ((__unused_webpack_module, exports) => {
2622
2623
2624
2625Object.defineProperty(exports, "__esModule", ({
2626  value: true
2627}));
2628exports["default"] = void 0;
2629const matchUserAgent = UserAgentStr => {
2630    return userAgent.indexOf(UserAgentStr) >= 0;
2631  },
2632  userAgent = navigator.userAgent,
2633  // Solution influenced by https://stackoverflow.com/questions/9847580/how-to-detect-safari-chrome-ie-firefox-and-opera-browser
2634
2635  // Opera 8.0+
2636  isOpera = !!window.opr && !!opr.addons || !!window.opera || matchUserAgent(' OPR/'),
2637  // Firefox 1.0+
2638  isFirefox = matchUserAgent('Firefox'),
2639  // Safari 3.0+ "[object HTMLElementConstructor]"
2640  isSafari = /^((?!chrome|android).)*safari/i.test(userAgent) || /constructor/i.test(window.HTMLElement) || (p => {
2641    return '[object SafariRemoteNotification]' === p.toString();
2642  })(!window.safari || typeof safari !== 'undefined' && safari.pushNotification),
2643  // Internet Explorer 6-11
2644  isIE = /Trident|MSIE/.test(userAgent) && (/* @cc_on!@*/ false || !!document.documentMode),
2645  // Edge 20+
2646  isEdge = !isIE && !!window.StyleMedia || matchUserAgent('Edg'),
2647  // Google Chrome (Not accurate)
2648  isChrome = !!window.chrome && matchUserAgent('Chrome') && !(isEdge || isOpera),
2649  // Blink engine
2650  isBlink = matchUserAgent('Chrome') && !!window.CSS,
2651  // Apple Webkit engine
2652  isAppleWebkit = matchUserAgent('AppleWebKit') && !isBlink,
2653  isTouchDevice = 'ontouchstart' in window || navigator.maxTouchPoints > 0 || navigator.msMaxTouchPoints > 0,
2654  environment = {
2655    isTouchDevice,
2656    appleWebkit: isAppleWebkit,
2657    blink: isBlink,
2658    chrome: isChrome,
2659    edge: isEdge,
2660    firefox: isFirefox,
2661    ie: isIE,
2662    mac: matchUserAgent('Macintosh'),
2663    opera: isOpera,
2664    safari: isSafari,
2665    webkit: matchUserAgent('AppleWebKit')
2666  };
2667var _default = exports["default"] = environment;
2668
2669/***/ }),
2670
2671/***/ "../core/common/assets/js/utils/storage.js":
2672/*!*************************************************!*\
2673  !*** ../core/common/assets/js/utils/storage.js ***!
2674  \*************************************************/
2675/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
2676
2677
2678
2679Object.defineProperty(exports, "__esModule", ({
2680  value: true
2681}));
2682exports["default"] = void 0;
2683__webpack_require__(/*! core-js/modules/esnext.iterator.constructor.js */ "../node_modules/core-js/modules/esnext.iterator.constructor.js");
2684__webpack_require__(/*! core-js/modules/esnext.iterator.for-each.js */ "../node_modules/core-js/modules/esnext.iterator.for-each.js");
2685class _default extends elementorModules.Module {
2686  get(key, options) {
2687    options = options || {};
2688    let storage;
2689    try {
2690      storage = options.session ? sessionStorage : localStorage;
2691    } catch (e) {
2692      return key ? undefined : {};
2693    }
2694    let elementorStorage = storage.getItem('elementor');
2695    if (elementorStorage) {
2696      elementorStorage = JSON.parse(elementorStorage);
2697    } else {
2698      elementorStorage = {};
2699    }
2700    if (!elementorStorage.__expiration) {
2701      elementorStorage.__expiration = {};
2702    }
2703    const expiration = elementorStorage.__expiration;
2704    let expirationToCheck = [];
2705    if (key) {
2706      if (expiration[key]) {
2707        expirationToCheck = [key];
2708      }
2709    } else {
2710      expirationToCheck = Object.keys(expiration);
2711    }
2712    let entryExpired = false;
2713    expirationToCheck.forEach(expirationKey => {
2714      if (new Date(expiration[expirationKey]) < new Date()) {
2715        delete elementorStorage[expirationKey];
2716        delete expiration[expirationKey];
2717        entryExpired = true;
2718      }
2719    });
2720    if (entryExpired) {
2721      this.save(elementorStorage, options.session);
2722    }
2723    if (key) {
2724      return elementorStorage[key];
2725    }
2726    return elementorStorage;
2727  }
2728  set(key, value, options) {
2729    options = options || {};
2730    const elementorStorage = this.get(null, options);
2731    elementorStorage[key] = value;
2732    if (options.lifetimeInSeconds) {
2733      const date = new Date();
2734      date.setTime(date.getTime() + options.lifetimeInSeconds * 1000);
2735      elementorStorage.__expiration[key] = date.getTime();
2736    }
2737    this.save(elementorStorage, options.session);
2738  }
2739  save(object, session) {
2740    let storage;
2741    try {
2742      storage = session ? sessionStorage : localStorage;
2743    } catch (e) {
2744      return;
2745    }
2746    storage.setItem('elementor', JSON.stringify(object));
2747  }
2748}
2749exports["default"] = _default;
2750
2751/***/ }),
2752
2753/***/ "../modules/shapes/assets/js/frontend/frontend.js":
2754/*!********************************************************!*\
2755  !*** ../modules/shapes/assets/js/frontend/frontend.js ***!
2756  \********************************************************/
2757/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
2758
2759
2760
2761Object.defineProperty(exports, "__esModule", ({
2762  value: true
2763}));
2764exports["default"] = void 0;
2765class _default extends elementorModules.Module {
2766  constructor() {
2767    super();
2768    elementorFrontend.elementsHandler.attachHandler('text-path', () => __webpack_require__.e(/*! import() | text-path */ "text-path").then(__webpack_require__.bind(__webpack_require__, /*! ./handlers/text-path */ "../modules/shapes/assets/js/frontend/handlers/text-path.js")));
2769  }
2770}
2771exports["default"] = _default;
2772
2773/***/ }),
2774
vendor: 739 bytes, lines 2775-2794
2775/***/ "../node_modules/core-js/internals/a-possible-prototype.js":
2776/*!*****************************************************************!*\
2777  !*** ../node_modules/core-js/internals/a-possible-prototype.js ***!
2778  \*****************************************************************/
2779/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
2780
2781
2782var isPossiblePrototype = __webpack_require__(/*! ../internals/is-possible-prototype */ "../node_modules/core-js/internals/is-possible-prototype.js");
2783
2784var $String = String;
2785var $TypeError = TypeError;
2786
2787module.exports = function (argument) {
2788  if (isPossiblePrototype(argument)) return argument;
2789  throw new $TypeError("Can't set " + $String(argument) + ' as a prototype');
2790};
2791
2792
2793/***/ }),
2794
vendor: 1,867 bytes, lines 2795-2832
2795/***/ "../node_modules/core-js/internals/dom-exception-constants.js":
2796/*!********************************************************************!*\
2797  !*** ../node_modules/core-js/internals/dom-exception-constants.js ***!
2798  \********************************************************************/
2799/***/ ((module) => {
2800
2801
2802module.exports = {
2803  IndexSizeError: { s: 'INDEX_SIZE_ERR', c: 1, m: 1 },
2804  DOMStringSizeError: { s: 'DOMSTRING_SIZE_ERR', c: 2, m: 0 },
2805  HierarchyRequestError: { s: 'HIERARCHY_REQUEST_ERR', c: 3, m: 1 },
2806  WrongDocumentError: { s: 'WRONG_DOCUMENT_ERR', c: 4, m: 1 },
2807  InvalidCharacterError: { s: 'INVALID_CHARACTER_ERR', c: 5, m: 1 },
2808  NoDataAllowedError: { s: 'NO_DATA_ALLOWED_ERR', c: 6, m: 0 },
2809  NoModificationAllowedError: { s: 'NO_MODIFICATION_ALLOWED_ERR', c: 7, m: 1 },
2810  NotFoundError: { s: 'NOT_FOUND_ERR', c: 8, m: 1 },
2811  NotSupportedError: { s: 'NOT_SUPPORTED_ERR', c: 9, m: 1 },
2812  InUseAttributeError: { s: 'INUSE_ATTRIBUTE_ERR', c: 10, m: 1 },
2813  InvalidStateError: { s: 'INVALID_STATE_ERR', c: 11, m: 1 },
2814  SyntaxError: { s: 'SYNTAX_ERR', c: 12, m: 1 },
2815  InvalidModificationError: { s: 'INVALID_MODIFICATION_ERR', c: 13, m: 1 },
2816  NamespaceError: { s: 'NAMESPACE_ERR', c: 14, m: 1 },
2817  InvalidAccessError: { s: 'INVALID_ACCESS_ERR', c: 15, m: 1 },
2818  ValidationError: { s: 'VALIDATION_ERR', c: 16, m: 0 },
2819  TypeMismatchError: { s: 'TYPE_MISMATCH_ERR', c: 17, m: 1 },
2820  SecurityError: { s: 'SECURITY_ERR', c: 18, m: 1 },
2821  NetworkError: { s: 'NETWORK_ERR', c: 19, m: 1 },
2822  AbortError: { s: 'ABORT_ERR', c: 20, m: 1 },
2823  URLMismatchError: { s: 'URL_MISMATCH_ERR', c: 21, m: 1 },
2824  QuotaExceededError: { s: 'QUOTA_EXCEEDED_ERR', c: 22, m: 1 },
2825  TimeoutError: { s: 'TIMEOUT_ERR', c: 23, m: 1 },
2826  InvalidNodeTypeError: { s: 'INVALID_NODE_TYPE_ERR', c: 24, m: 1 },
2827  DataCloneError: { s: 'DATA_CLONE_ERR', c: 25, m: 1 }
2828};
2829
2830
2831/***/ }),
2832
vendor: 1,070 bytes, lines 2833-2858
2833/***/ "../node_modules/core-js/internals/error-stack-clear.js":
2834/*!**************************************************************!*\
2835  !*** ../node_modules/core-js/internals/error-stack-clear.js ***!
2836  \**************************************************************/
2837/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
2838
2839
2840var uncurryThis = __webpack_require__(/*! ../internals/function-uncurry-this */ "../node_modules/core-js/internals/function-uncurry-this.js");
2841
2842var $Error = Error;
2843var replace = uncurryThis(''.replace);
2844
2845var TEST = (function (arg) { return String(new $Error(arg).stack); })('zxcasd');
2846// eslint-disable-next-line redos/no-vulnerable, sonarjs/slow-regex -- safe
2847var V8_OR_CHAKRA_STACK_ENTRY = /\n\s*at [^:]*:[^\n]*/;
2848var IS_V8_OR_CHAKRA_STACK = V8_OR_CHAKRA_STACK_ENTRY.test(TEST);
2849
2850module.exports = function (stack, dropEntries) {
2851  if (IS_V8_OR_CHAKRA_STACK && typeof stack == 'string' && !$Error.prepareStackTrace) {
2852    while (dropEntries--) stack = replace(stack, V8_OR_CHAKRA_STACK_ENTRY, '');
2853  } return stack;
2854};
2855
2856
2857/***/ }),
2858
vendor: 927 bytes, lines 2859-2878
2859/***/ "../node_modules/core-js/internals/function-uncurry-this-accessor.js":
2860/*!***************************************************************************!*\
2861  !*** ../node_modules/core-js/internals/function-uncurry-this-accessor.js ***!
2862  \***************************************************************************/
2863/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
2864
2865
2866var uncurryThis = __webpack_require__(/*! ../internals/function-uncurry-this */ "../node_modules/core-js/internals/function-uncurry-this.js");
2867var aCallable = __webpack_require__(/*! ../internals/a-callable */ "../node_modules/core-js/internals/a-callable.js");
2868
2869module.exports = function (object, key, method) {
2870  try {
2871    // eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe
2872    return uncurryThis(aCallable(Object.getOwnPropertyDescriptor(object, key)[method]));
2873  } catch (error) { /* empty */ }
2874};
2875
2876
2877/***/ }),
2878
vendor: 1,308 bytes, lines 2879-2907
2879/***/ "../node_modules/core-js/internals/inherit-if-required.js":
2880/*!****************************************************************!*\
2881  !*** ../node_modules/core-js/internals/inherit-if-required.js ***!
2882  \****************************************************************/
2883/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
2884
2885
2886var isCallable = __webpack_require__(/*! ../internals/is-callable */ "../node_modules/core-js/internals/is-callable.js");
2887var isObject = __webpack_require__(/*! ../internals/is-object */ "../node_modules/core-js/internals/is-object.js");
2888var setPrototypeOf = __webpack_require__(/*! ../internals/object-set-prototype-of */ "../node_modules/core-js/internals/object-set-prototype-of.js");
2889
2890// makes subclassing work correct for wrapped built-ins
2891module.exports = function ($this, dummy, Wrapper) {
2892  var NewTarget, NewTargetPrototype;
2893  if (
2894    // it can work only with native `setPrototypeOf`
2895    setPrototypeOf &&
2896    // we haven't completely correct pre-ES6 way for getting `new.target`, so use this
2897    isCallable(NewTarget = dummy.constructor) &&
2898    NewTarget !== Wrapper &&
2899    isObject(NewTargetPrototype = NewTarget.prototype) &&
2900    NewTargetPrototype !== Wrapper.prototype
2901  ) setPrototypeOf($this, NewTargetPrototype);
2902  return $this;
2903};
2904
2905
2906/***/ }),
2907
vendor: 575 bytes, lines 2908-2923
2908/***/ "../node_modules/core-js/internals/is-possible-prototype.js":
2909/*!******************************************************************!*\
2910  !*** ../node_modules/core-js/internals/is-possible-prototype.js ***!
2911  \******************************************************************/
2912/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
2913
2914
2915var isObject = __webpack_require__(/*! ../internals/is-object */ "../node_modules/core-js/internals/is-object.js");
2916
2917module.exports = function (argument) {
2918  return isObject(argument) || argument === null;
2919};
2920
2921
2922/***/ }),
2923
vendor: 1,707 bytes, lines 2924-2957
2924/***/ "../node_modules/core-js/internals/iterator-map.js":
2925/*!*********************************************************!*\
2926  !*** ../node_modules/core-js/internals/iterator-map.js ***!
2927  \*********************************************************/
2928/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
2929
2930
2931var call = __webpack_require__(/*! ../internals/function-call */ "../node_modules/core-js/internals/function-call.js");
2932var aCallable = __webpack_require__(/*! ../internals/a-callable */ "../node_modules/core-js/internals/a-callable.js");
2933var anObject = __webpack_require__(/*! ../internals/an-object */ "../node_modules/core-js/internals/an-object.js");
2934var getIteratorDirect = __webpack_require__(/*! ../internals/get-iterator-direct */ "../node_modules/core-js/internals/get-iterator-direct.js");
2935var createIteratorProxy = __webpack_require__(/*! ../internals/iterator-create-proxy */ "../node_modules/core-js/internals/iterator-create-proxy.js");
2936var callWithSafeIterationClosing = __webpack_require__(/*! ../internals/call-with-safe-iteration-closing */ "../node_modules/core-js/internals/call-with-safe-iteration-closing.js");
2937
2938var IteratorProxy = createIteratorProxy(function () {
2939  var iterator = this.iterator;
2940  var result = anObject(call(this.next, iterator));
2941  var done = this.done = !!result.done;
2942  if (!done) return callWithSafeIterationClosing(iterator, this.mapper, [result.value, this.counter++], true);
2943});
2944
2945// `Iterator.prototype.map` method
2946// https://github.com/tc39/proposal-iterator-helpers
2947module.exports = function map(mapper) {
2948  anObject(this);
2949  aCallable(mapper);
2950  return new IteratorProxy(getIteratorDirect(this), {
2951    mapper: mapper
2952  });
2953};
2954
2955
2956/***/ }),
2957
vendor: 644 bytes, lines 2958-2973
2958/***/ "../node_modules/core-js/internals/normalize-string-argument.js":
2959/*!**********************************************************************!*\
2960  !*** ../node_modules/core-js/internals/normalize-string-argument.js ***!
2961  \**********************************************************************/
2962/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
2963
2964
2965var toString = __webpack_require__(/*! ../internals/to-string */ "../node_modules/core-js/internals/to-string.js");
2966
2967module.exports = function (argument, $default) {
2968  return argument === undefined ? arguments.length < 2 ? '' : $default : toString(argument);
2969};
2970
2971
2972/***/ }),
2973
vendor: 1,797 bytes, lines 2974-3012
2974/***/ "../node_modules/core-js/internals/object-set-prototype-of.js":
2975/*!********************************************************************!*\
2976  !*** ../node_modules/core-js/internals/object-set-prototype-of.js ***!
2977  \********************************************************************/
2978/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
2979
2980
2981/* eslint-disable no-proto -- safe */
2982var uncurryThisAccessor = __webpack_require__(/*! ../internals/function-uncurry-this-accessor */ "../node_modules/core-js/internals/function-uncurry-this-accessor.js");
2983var isObject = __webpack_require__(/*! ../internals/is-object */ "../node_modules/core-js/internals/is-object.js");
2984var requireObjectCoercible = __webpack_require__(/*! ../internals/require-object-coercible */ "../node_modules/core-js/internals/require-object-coercible.js");
2985var aPossiblePrototype = __webpack_require__(/*! ../internals/a-possible-prototype */ "../node_modules/core-js/internals/a-possible-prototype.js");
2986
2987// `Object.setPrototypeOf` method
2988// https://tc39.es/ecma262/#sec-object.setprototypeof
2989// Works with __proto__ only. Old v8 can't work with null proto objects.
2990// eslint-disable-next-line es/no-object-setprototypeof -- safe
2991module.exports = Object.setPrototypeOf || ('__proto__' in {} ? function () {
2992  var CORRECT_SETTER = false;
2993  var test = {};
2994  var setter;
2995  try {
2996    setter = uncurryThisAccessor(Object.prototype, '__proto__', 'set');
2997    setter(test, []);
2998    CORRECT_SETTER = test instanceof Array;
2999  } catch (error) { /* empty */ }
3000  return function setPrototypeOf(O, proto) {
3001    requireObjectCoercible(O);
3002    aPossiblePrototype(proto);
3003    if (!isObject(O)) return O;
3004    if (CORRECT_SETTER) setter(O, proto);
3005    else O.__proto__ = proto;
3006    return O;
3007  };
3008}() : undefined);
3009
3010
3011/***/ }),
3012
vendor: 627 bytes, lines 3013-3031
3013/***/ "../node_modules/core-js/internals/to-string.js":
3014/*!******************************************************!*\
3015  !*** ../node_modules/core-js/internals/to-string.js ***!
3016  \******************************************************/
3017/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
3018
3019
3020var classof = __webpack_require__(/*! ../internals/classof */ "../node_modules/core-js/internals/classof.js");
3021
3022var $String = String;
3023
3024module.exports = function (argument) {
3025  if (classof(argument) === 'Symbol') throw new TypeError('Cannot convert a Symbol value to a string');
3026  return $String(argument);
3027};
3028
3029
3030/***/ }),
3031
vendor: 858 bytes, lines 3032-3051
3032/***/ "../node_modules/core-js/modules/es.iterator.map.js":
3033/*!**********************************************************!*\
3034  !*** ../node_modules/core-js/modules/es.iterator.map.js ***!
3035  \**********************************************************/
3036/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {
3037
3038
3039var $ = __webpack_require__(/*! ../internals/export */ "../node_modules/core-js/internals/export.js");
3040var map = __webpack_require__(/*! ../internals/iterator-map */ "../node_modules/core-js/internals/iterator-map.js");
3041var IS_PURE = __webpack_require__(/*! ../internals/is-pure */ "../node_modules/core-js/internals/is-pure.js");
3042
3043// `Iterator.prototype.map` method
3044// https://tc39.es/ecma262/#sec-iterator.prototype.map
3045$({ target: 'Iterator', proto: true, real: true, forced: IS_PURE }, {
3046  map: map
3047});
3048
3049
3050/***/ }),
3051
vendor: 509 bytes, lines 3052-3064
3052/***/ "../node_modules/core-js/modules/esnext.iterator.map.js":
3053/*!**************************************************************!*\
3054  !*** ../node_modules/core-js/modules/esnext.iterator.map.js ***!
3055  \**************************************************************/
3056/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {
3057
3058
3059// TODO: Remove from `core-js@4`
3060__webpack_require__(/*! ../modules/es.iterator.map */ "../node_modules/core-js/modules/es.iterator.map.js");
3061
3062
3063/***/ }),
3064
vendor: 4,570 bytes, lines 3065-3141
3065/***/ "../node_modules/core-js/modules/web.dom-exception.stack.js":
3066/*!******************************************************************!*\
3067  !*** ../node_modules/core-js/modules/web.dom-exception.stack.js ***!
3068  \******************************************************************/
3069/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {
3070
3071
3072var $ = __webpack_require__(/*! ../internals/export */ "../node_modules/core-js/internals/export.js");
3073var globalThis = __webpack_require__(/*! ../internals/global-this */ "../node_modules/core-js/internals/global-this.js");
3074var getBuiltIn = __webpack_require__(/*! ../internals/get-built-in */ "../node_modules/core-js/internals/get-built-in.js");
3075var createPropertyDescriptor = __webpack_require__(/*! ../internals/create-property-descriptor */ "../node_modules/core-js/internals/create-property-descriptor.js");
3076var defineProperty = (__webpack_require__(/*! ../internals/object-define-property */ "../node_modules/core-js/internals/object-define-property.js").f);
3077var hasOwn = __webpack_require__(/*! ../internals/has-own-property */ "../node_modules/core-js/internals/has-own-property.js");
3078var anInstance = __webpack_require__(/*! ../internals/an-instance */ "../node_modules/core-js/internals/an-instance.js");
3079var inheritIfRequired = __webpack_require__(/*! ../internals/inherit-if-required */ "../node_modules/core-js/internals/inherit-if-required.js");
3080var normalizeStringArgument = __webpack_require__(/*! ../internals/normalize-string-argument */ "../node_modules/core-js/internals/normalize-string-argument.js");
3081var DOMExceptionConstants = __webpack_require__(/*! ../internals/dom-exception-constants */ "../node_modules/core-js/internals/dom-exception-constants.js");
3082var clearErrorStack = __webpack_require__(/*! ../internals/error-stack-clear */ "../node_modules/core-js/internals/error-stack-clear.js");
3083var DESCRIPTORS = __webpack_require__(/*! ../internals/descriptors */ "../node_modules/core-js/internals/descriptors.js");
3084var IS_PURE = __webpack_require__(/*! ../internals/is-pure */ "../node_modules/core-js/internals/is-pure.js");
3085
3086var DOM_EXCEPTION = 'DOMException';
3087var Error = getBuiltIn('Error');
3088var NativeDOMException = getBuiltIn(DOM_EXCEPTION);
3089
3090var $DOMException = function DOMException() {
3091  anInstance(this, DOMExceptionPrototype);
3092  var argumentsLength = arguments.length;
3093  var message = normalizeStringArgument(argumentsLength < 1 ? undefined : arguments[0]);
3094  var name = normalizeStringArgument(argumentsLength < 2 ? undefined : arguments[1], 'Error');
3095  var that = new NativeDOMException(message, name);
3096  var error = new Error(message);
3097  error.name = DOM_EXCEPTION;
3098  defineProperty(that, 'stack', createPropertyDescriptor(1, clearErrorStack(error.stack, 1)));
3099  inheritIfRequired(that, this, $DOMException);
3100  return that;
3101};
3102
3103var DOMExceptionPrototype = $DOMException.prototype = NativeDOMException.prototype;
3104
3105var ERROR_HAS_STACK = 'stack' in new Error(DOM_EXCEPTION);
3106var DOM_EXCEPTION_HAS_STACK = 'stack' in new NativeDOMException(1, 2);
3107
3108// eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe
3109var descriptor = NativeDOMException && DESCRIPTORS && Object.getOwnPropertyDescriptor(globalThis, DOM_EXCEPTION);
3110
3111// Bun ~ 0.1.1 DOMException have incorrect descriptor and we can't redefine it
3112// https://github.com/Jarred-Sumner/bun/issues/399
3113var BUGGY_DESCRIPTOR = !!descriptor && !(descriptor.writable && descriptor.configurable);
3114
3115var FORCED_CONSTRUCTOR = ERROR_HAS_STACK && !BUGGY_DESCRIPTOR && !DOM_EXCEPTION_HAS_STACK;
3116
3117// `DOMException` constructor patch for `.stack` where it's required
3118// https://webidl.spec.whatwg.org/#es-DOMException-specialness
3119$({ global: true, constructor: true, forced: IS_PURE || FORCED_CONSTRUCTOR }, { // TODO: fix export logic
3120  DOMException: FORCED_CONSTRUCTOR ? $DOMException : NativeDOMException
3121});
3122
3123var PolyfilledDOMException = getBuiltIn(DOM_EXCEPTION);
3124var PolyfilledDOMExceptionPrototype = PolyfilledDOMException.prototype;
3125
3126if (PolyfilledDOMExceptionPrototype.constructor !== PolyfilledDOMException) {
3127  if (!IS_PURE) {
3128    defineProperty(PolyfilledDOMExceptionPrototype, 'constructor', createPropertyDescriptor(1, PolyfilledDOMException));
3129  }
3130
3131  for (var key in DOMExceptionConstants) if (hasOwn(DOMExceptionConstants, key)) {
3132    var constant = DOMExceptionConstants[key];
3133    var constantName = constant.s;
3134    if (!hasOwn(PolyfilledDOMException, constantName)) {
3135      defineProperty(PolyfilledDOMException, constantName, createPropertyDescriptor(6, constant.c));
3136    }
3137  }
3138}
3139
3140
3141/***/ })
3141
3142
3143},
3144/******/ __webpack_require__ => { // webpackRuntimeModules
3145/******/ var __webpack_exec__ = (moduleId) => (__webpack_require__(__webpack_require__.s = moduleId))
3146/******/ __webpack_require__.O(0, ["frontend-modules"], () => (__webpack_exec__("../assets/dev/js/frontend/frontend.js")));
3147/******/ var __webpack_exports__ = __webpack_require__.O();
3148/******/ }
3149]);
3150//# 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.