PageSourceSearch

https://studio.katieaustin.tv/wp-content/plugins/elementor/assets/js/frontend.js?ver=3.26.4

js katieaustin.tv collected 2026-10-01 16:15:27 UTC 120,384 bytes, 3,200 lines download raw bytes

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