PageSourceSearch

https://havitutim.co.il/wp-content/plugins/elementor-pro/assets/js/frontend.js?ver=3.21.3

js havitutim.co.il collected 2026-10-03 02:50:18 UTC 57,317 bytes, 1,514 lines download raw bytes

1/*! elementor-pro - v3.21.0 - 20-05-2024 */
2(self["webpackChunkelementor_pro"] = self["webpackChunkelementor_pro"] || []).push([["frontend"],{
3
4/***/ "../assets/dev/js/frontend/frontend.js":
5/*!*********************************************!*\
6  !*** ../assets/dev/js/frontend/frontend.js ***!
7  \*********************************************/
8/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {
9
10"use strict";
11
12
13var _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ "../node_modules/@babel/runtime/helpers/interopRequireDefault.js");
14__webpack_require__(/*! ../public-path */ "../assets/dev/js/public-path.js");
15var _frontend = _interopRequireDefault(__webpack_require__(/*! ../../../../modules/motion-fx/assets/js/frontend/frontend */ "../modules/motion-fx/assets/js/frontend/frontend.js"));
16var _frontend2 = _interopRequireDefault(__webpack_require__(/*! ../../../../modules/sticky/assets/js/frontend/frontend */ "../modules/sticky/assets/js/frontend/frontend.js"));
17var _frontend3 = _interopRequireDefault(__webpack_require__(/*! ../../../../modules/code-highlight/assets/js/frontend/frontend */ "../modules/code-highlight/assets/js/frontend/frontend.js"));
18var _frontend4 = _interopRequireDefault(__webpack_require__(/*! ../../../../modules/video-playlist/assets/js/frontend/frontend */ "../modules/video-playlist/assets/js/frontend/frontend.js"));
19var _frontend5 = _interopRequireDefault(__webpack_require__(/*! ../../../../modules/payments/assets/js/frontend/frontend */ "../modules/payments/assets/js/frontend/frontend.js"));
20var _frontend6 = _interopRequireDefault(__webpack_require__(/*! ../../../../modules/progress-tracker/assets/js/frontend/frontend */ "../modules/progress-tracker/assets/js/frontend/frontend.js"));
21var _controls = _interopRequireDefault(__webpack_require__(/*! ./utils/controls */ "../assets/dev/js/frontend/utils/controls.js"));
22var _dropdownMenuHeightController = _interopRequireDefault(__webpack_require__(/*! ./utils/dropdown-menu-height-controller */ "../assets/dev/js/frontend/utils/dropdown-menu-height-controller.js"));
23class ElementorProFrontend extends elementorModules.ViewModule {
24  onInit() {
25    super.onInit();
26    this.config = ElementorProFrontendConfig;
27    this.modules = {};
28    this.initOnReadyComponents();
29  }
30  bindEvents() {
31    jQuery(window).on('elementor/frontend/init', this.onElementorFrontendInit.bind(this));
32  }
33  initModules() {
34    // Handlers that should be available by default for sections usage.
35    let handlers = {
36      motionFX: _frontend.default,
37      sticky: _frontend2.default,
38      codeHighlight: _frontend3.default,
39      videoPlaylist: _frontend4.default,
40      payments: _frontend5.default,
41      progressTracker: _frontend6.default
42    };
43
44    // Keep this line before applying filter on the handlers.
45    // TODO: BC - Deprecated since 3.7.0
46    elementorProFrontend.trigger('elementor-pro/modules/init:before');
47
48    // TODO: Use this instead.
49    elementorProFrontend.trigger('elementor-pro/modules/init/before');
50    handlers = elementorFrontend.hooks.applyFilters('elementor-pro/frontend/handlers', handlers);
51    jQuery.each(handlers, (moduleName, ModuleClass) => {
52      this.modules[moduleName] = new ModuleClass();
53    });
54
55    // TODO: BC Since 2.9.0
56    this.modules.linkActions = {
57      addAction: function () {
58        elementorFrontend.utils.urlActions.addAction(...arguments);
59      }
60    };
61  }
62  onElementorFrontendInit() {
63    this.initModules();
64  }
65  initOnReadyComponents() {
66    this.utils = {
67      controls: new _controls.default(),
68      DropdownMenuHeightController: _dropdownMenuHeightController.default
69    };
70  }
71}
72window.elementorProFrontend = new ElementorProFrontend();
73
74/***/ }),
75
76/***/ "../assets/dev/js/frontend/utils/controls.js":
77/*!***************************************************!*\
78  !*** ../assets/dev/js/frontend/utils/controls.js ***!
79  \***************************************************/
80/***/ ((__unused_webpack_module, exports) => {
81
82"use strict";
83
84
85Object.defineProperty(exports, "__esModule", ({
86  value: true
87}));
88exports["default"] = void 0;
89class Controls {
90  /**
91   * Get Control Value
92   *
93   * Retrieves a control value.
94   * This function has been copied from `elementor/assets/dev/js/editor/utils/conditions.js`.
95   *
96   * @since 3.11.0
97   *
98   * @param {{}}     controlSettings A settings object (e.g. element settings - keys and values)
99   * @param {string} controlKey      The control key name
100   * @param {string} controlSubKey   A specific property of the control object.
101   * @return {*} Control Value
102   */
103  getControlValue(controlSettings, controlKey, controlSubKey) {
104    let value;
105    if ('object' === typeof controlSettings[controlKey] && controlSubKey) {
106      value = controlSettings[controlKey][controlSubKey];
107    } else {
108      value = controlSettings[controlKey];
109    }
110    return value;
111  }
112
113  /**
114   * Get the value of a responsive control.
115   *
116   * Retrieves the value of a responsive control for the current device or for this first parent device which has a control value.
117   *
118   * @since 3.11.0
119   *
120   * @param {{}}     controlSettings A settings object (e.g. element settings - keys and values)
121   * @param {string} controlKey      The control key name
122   * @param {string} controlSubKey   A specific property of the control object.
123   * @return {*} Control Value
124   */
125  getResponsiveControlValue(controlSettings, controlKey) {
126    let controlSubKey = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : '';
127    const currentDeviceMode = elementorFrontend.getCurrentDeviceMode(),
128      controlValueDesktop = this.getControlValue(controlSettings, controlKey, controlSubKey);
129
130    // Set the control value for the current device mode.
131    // First check the widescreen device mode.
132    if ('widescreen' === currentDeviceMode) {
133      const controlValueWidescreen = this.getControlValue(controlSettings, `${controlKey}_widescreen`, controlSubKey);
134      return !!controlValueWidescreen || 0 === controlValueWidescreen ? controlValueWidescreen : controlValueDesktop;
135    }
136
137    // Loop through all responsive and desktop device modes.
138    const activeBreakpoints = elementorFrontend.breakpoints.getActiveBreakpointsList({
139      withDesktop: true
140    });
141    let parentDeviceMode = currentDeviceMode,
142      deviceIndex = activeBreakpoints.indexOf(currentDeviceMode),
143      controlValue = '';
144    while (deviceIndex <= activeBreakpoints.length) {
145      if ('desktop' === parentDeviceMode) {
146        controlValue = controlValueDesktop;
147        break;
148      }
149      const responsiveControlKey = `${controlKey}_${parentDeviceMode}`,
150        responsiveControlValue = this.getControlValue(controlSettings, responsiveControlKey, controlSubKey);
151      if (!!responsiveControlValue || 0 === responsiveControlValue) {
152        controlValue = responsiveControlValue;
153        break;
154      }
155
156      // If no control value has been set for the current device mode, then check the parent device mode.
157      deviceIndex++;
158      parentDeviceMode = activeBreakpoints[deviceIndex];
159    }
160    return controlValue;
161  }
162}
163exports["default"] = Controls;
164
165/***/ }),
166
167/***/ "../assets/dev/js/frontend/utils/dropdown-menu-height-controller.js":
168/*!**************************************************************************!*\
169  !*** ../assets/dev/js/frontend/utils/dropdown-menu-height-controller.js ***!
170  \**************************************************************************/
171/***/ ((__unused_webpack_module, exports) => {
172
173"use strict";
174
175
176Object.defineProperty(exports, "__esModule", ({
177  value: true
178}));
179exports["default"] = void 0;
180class DropdownMenuHeightController {
181  constructor(widgetConfig) {
182    this.widgetConfig = widgetConfig;
183  }
184  calculateStickyMenuNavHeight() {
185    this.widgetConfig.elements.$dropdownMenuContainer.css(this.widgetConfig.settings.menuHeightCssVarName, '');
186    const menuToggleHeight = this.widgetConfig.elements.$dropdownMenuContainer.offset().top - jQuery(window).scrollTop();
187    return elementorFrontend.elements.$window.height() - menuToggleHeight;
188  }
189  calculateMenuTabContentHeight($tab) {
190    return elementorFrontend.elements.$window.height() - $tab[0].getBoundingClientRect().top;
191  }
192  isElementSticky() {
193    return this.widgetConfig.elements.$element.hasClass('elementor-sticky') || this.widgetConfig.elements.$element.parents('.elementor-sticky').length;
194  }
195  getMenuHeight() {
196    return this.isElementSticky() ? this.calculateStickyMenuNavHeight() + 'px' : this.widgetConfig.settings.dropdownMenuContainerMaxHeight;
197  }
198  setMenuHeight(menuHeight) {
199    this.widgetConfig.elements.$dropdownMenuContainer.css(this.widgetConfig.settings.menuHeightCssVarName, menuHeight);
200  }
201  reassignMobileMenuHeight() {
202    const menuHeight = this.isToggleActive() ? this.getMenuHeight() : 0;
203    return this.setMenuHeight(menuHeight);
204  }
205  reassignMenuHeight($activeTabContent) {
206    if (!this.isElementSticky() || 0 === $activeTabContent.length) {
207      return;
208    }
209    const offsetBottom = elementorFrontend.elements.$window.height() - $activeTabContent[0].getBoundingClientRect().top,
210      isContentHeightBiggerThanWindow = $activeTabContent.height() > offsetBottom;
211    if (!isContentHeightBiggerThanWindow) {
212      return;
213    }
214    $activeTabContent.css('height', this.calculateMenuTabContentHeight($activeTabContent) + 'px');
215    $activeTabContent.css('overflow-y', 'scroll');
216  }
217  resetMenuHeight($activeTabContent) {
218    if (!this.isElementSticky()) {
219      return;
220    }
221    $activeTabContent.css('height', 'initial');
222    $activeTabContent.css('overflow-y', 'visible');
223  }
224  isToggleActive() {
225    const $menuToggle = this.widgetConfig.elements.$menuToggle;
226
227    // New approach.
228    // Aria attributes instead of css classes.
229    if (!!this.widgetConfig.attributes?.menuToggleState) {
230      return 'true' === $menuToggle.attr(this.widgetConfig.attributes.menuToggleState);
231    }
232
233    // This can be removed once the new markup of the Mega Menu has been implemented.
234    // Previously we used state classes to indicate the active state of the menu toggle.
235    return $menuToggle.hasClass(this.widgetConfig.classes.menuToggleActiveClass);
236  }
237}
238exports["default"] = DropdownMenuHeightController;
239
240/***/ }),
241
242/***/ "../assets/dev/js/public-path.js":
243/*!***************************************!*\
244  !*** ../assets/dev/js/public-path.js ***!
245  \***************************************/
246/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {
247
248"use strict";
249
250
251/* eslint-disable camelcase */
252__webpack_require__.p = ElementorProFrontendConfig.urls.assets + 'js/';
253
254/***/ }),
255
256/***/ "../modules/code-highlight/assets/js/frontend/frontend.js":
257/*!****************************************************************!*\
258  !*** ../modules/code-highlight/assets/js/frontend/frontend.js ***!
259  \****************************************************************/
260/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
261
262"use strict";
263
264
265Object.defineProperty(exports, "__esModule", ({
266  value: true
267}));
268exports["default"] = void 0;
269class _default extends elementorModules.Module {
270  constructor() {
271    super();
272    elementorFrontend.elementsHandler.attachHandler('code-highlight', () => __webpack_require__.e(/*! import() | code-highlight */ "code-highlight").then(__webpack_require__.bind(__webpack_require__, /*! ./handler */ "../modules/code-highlight/assets/js/frontend/handler.js")));
273  }
274}
275exports["default"] = _default;
276
277/***/ }),
278
279/***/ "../modules/motion-fx/assets/js/frontend/frontend.js":
280/*!***********************************************************!*\
281  !*** ../modules/motion-fx/assets/js/frontend/frontend.js ***!
282  \***********************************************************/
283/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
284
285"use strict";
286
287
288var _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ "../node_modules/@babel/runtime/helpers/interopRequireDefault.js");
289Object.defineProperty(exports, "__esModule", ({
290  value: true
291}));
292exports["default"] = void 0;
293var _handler = _interopRequireDefault(__webpack_require__(/*! ./handler */ "../modules/motion-fx/assets/js/frontend/handler.js"));
294class _default extends elementorModules.Module {
295  constructor() {
296    super();
297    elementorFrontend.elementsHandler.attachHandler('global', _handler.default, null);
298  }
299}
300exports["default"] = _default;
301
302/***/ }),
303
304/***/ "../modules/motion-fx/assets/js/frontend/handler.js":
305/*!**********************************************************!*\
306  !*** ../modules/motion-fx/assets/js/frontend/handler.js ***!
307  \**********************************************************/
308/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
309
310"use strict";
311
312
313var _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ "../node_modules/@babel/runtime/helpers/interopRequireDefault.js");
314Object.defineProperty(exports, "__esModule", ({
315  value: true
316}));
317exports["default"] = void 0;
318var _motionFx = _interopRequireDefault(__webpack_require__(/*! ./motion-fx/motion-fx */ "../modules/motion-fx/assets/js/frontend/motion-fx/motion-fx.js"));
319class _default extends elementorModules.frontend.handlers.Base {
320  __construct() {
321    super.__construct(...arguments);
322    this.toggle = elementorFrontend.debounce(this.toggle, 200);
323  }
324  getDefaultSettings() {
325    return {
326      selectors: {
327        container: '.elementor-widget-container'
328      }
329    };
330  }
331  getDefaultElements() {
332    const selectors = this.getSettings('selectors');
333    return {
334      $container: this.$element.find(selectors.container)
335    };
336  }
337  bindEvents() {
338    elementorFrontend.elements.$window.on('resize', this.toggle);
339  }
340  unbindEvents() {
341    elementorFrontend.elements.$window.off('resize', this.toggle);
342  }
343  addCSSTransformEvents() {
344    // Remove CSS transition variable that assigned from scroll.js in order to allow the transition of the CSS-Transform.
345    const motionFxScrolling = this.getElementSettings('motion_fx_motion_fx_scrolling');
346    if (motionFxScrolling && !this.isTransitionEventAdded) {
347      this.isTransitionEventAdded = true;
348      this.elements.$container.on('mouseenter', () => {
349        this.elements.$container.css('--e-transform-transition-duration', '');
350      });
351    }
352  }
353  initEffects() {
354    this.effects = {
355      translateY: {
356        interaction: 'scroll',
357        actions: ['translateY']
358      },
359      translateX: {
360        interaction: 'scroll',
361        actions: ['translateX']
362      },
363      rotateZ: {
364        interaction: 'scroll',
365        actions: ['rotateZ']
366      },
367      scale: {
368        interaction: 'scroll',
369        actions: ['scale']
370      },
371      opacity: {
372        interaction: 'scroll',
373        actions: ['opacity']
374      },
375      blur: {
376        interaction: 'scroll',
377        actions: ['blur']
378      },
379      mouseTrack: {
380        interaction: 'mouseMove',
381        actions: ['translateXY']
382      },
383      tilt: {
384        interaction: 'mouseMove',
385        actions: ['tilt']
386      }
387    };
388  }
389  prepareOptions(name) {
390    const elementSettings = this.getElementSettings(),
391      type = 'motion_fx' === name ? 'element' : 'background',
392      interactions = {};
393    jQuery.each(elementSettings, (key, value) => {
394      const keyRegex = new RegExp('^' + name + '_(.+?)_effect'),
395        keyMatches = key.match(keyRegex);
396      if (!keyMatches || !value) {
397        return;
398      }
399      const options = {},
400        effectName = keyMatches[1];
401      jQuery.each(elementSettings, (subKey, subValue) => {
402        const subKeyRegex = new RegExp(name + '_' + effectName + '_(.+)'),
403          subKeyMatches = subKey.match(subKeyRegex);
404        if (!subKeyMatches) {
405          return;
406        }
407        const subFieldName = subKeyMatches[1];
408        if ('effect' === subFieldName) {
409          return;
410        }
411        if ('object' === typeof subValue) {
412          subValue = Object.keys(subValue.sizes).length ? subValue.sizes : subValue.size;
413        }
414        options[subKeyMatches[1]] = subValue;
415      });
416      const effect = this.effects[effectName],
417        interactionName = effect.interaction;
418      if (!interactions[interactionName]) {
419        interactions[interactionName] = {};
420      }
421      effect.actions.forEach(action => interactions[interactionName][action] = options);
422    });
423    let $element = this.$element,
424      $dimensionsElement;
425    const elementType = this.getElementType();
426    if ('element' === type && !['section', 'container'].includes(elementType)) {
427      $dimensionsElement = $element;
428      let childElementSelector;
429      if ('column' === elementType) {
430        childElementSelector = '.elementor-widget-wrap';
431      } else {
432        childElementSelector = '.elementor-widget-container';
433      }
434      $element = $element.find('> ' + childElementSelector);
435    }
436    const options = {
437      type,
438      interactions,
439      elementSettings,
440      $element,
441      $dimensionsElement,
442      refreshDimensions: this.isEdit,
443      range: elementSettings[name + '_range'],
444      classes: {
445        element: 'elementor-motion-effects-element',
446        parent: 'elementor-motion-effects-parent',
447        backgroundType: 'elementor-motion-effects-element-type-background',
448        container: 'elementor-motion-effects-container',
449        layer: 'elementor-motion-effects-layer',
450        perspective: 'elementor-motion-effects-perspective'
451      }
452    };
453    if (!options.range && 'fixed' === this.getCurrentDeviceSetting('_position')) {
454      options.range = 'page';
455    }
456    if ('fixed' === this.getCurrentDeviceSetting('_position')) {
457      options.isFixedPosition = true;
458    }
459    if ('background' === type && 'column' === this.getElementType()) {
460      options.addBackgroundLayerTo = ' > .elementor-element-populated';
461    }
462    return options;
463  }
464  activate(name) {
465    const options = this.prepareOptions(name);
466    if (jQuery.isEmptyObject(options.interactions)) {
467      return;
468    }
469    this[name] = new _motionFx.default(options);
470  }
471  deactivate(name) {
472    if (this[name]) {
473      this[name].destroy();
474      delete this[name];
475    }
476  }
477  toggle() {
478    const currentDeviceMode = elementorFrontend.getCurrentDeviceMode(),
479      elementSettings = this.getElementSettings();
480    ['motion_fx', 'background_motion_fx'].forEach(name => {
481      const devices = elementSettings[name + '_devices'],
482        isCurrentModeActive = !devices || -1 !== devices.indexOf(currentDeviceMode);
483      if (isCurrentModeActive && (elementSettings[name + '_motion_fx_scrolling'] || elementSettings[name + '_motion_fx_mouse'])) {
484        if (this[name]) {
485          this.refreshInstance(name);
486        } else {
487          this.activate(name);
488        }
489      } else {
490        this.deactivate(name);
491      }
492    });
493  }
494  refreshInstance(instanceName) {
495    const instance = this[instanceName];
496    if (!instance) {
497      return;
498    }
499    const preparedOptions = this.prepareOptions(instanceName);
500    instance.setSettings(preparedOptions);
501    instance.refresh();
502  }
503  onInit() {
504    super.onInit();
505    this.initEffects();
506    this.addCSSTransformEvents();
507    this.toggle();
508  }
509  onElementChange(propertyName) {
510    if (/motion_fx_((scrolling)|(mouse)|(devices))$/.test(propertyName)) {
511      if ('motion_fx_motion_fx_scrolling' === propertyName) {
512        this.addCSSTransformEvents();
513      }
514      this.toggle();
515      return;
516    }
517    const propertyMatches = propertyName.match('.*?(motion_fx|_transform)');
518    if (propertyMatches) {
519      const instanceName = propertyMatches[0].match('(_transform)') ? 'motion_fx' : propertyMatches[0];
520      this.refreshInstance(instanceName);
521      if (!this[instanceName]) {
522        this.activate(instanceName);
523      }
524    }
525    if (/^_position/.test(propertyName)) {
526      ['motion_fx', 'background_motion_fx'].forEach(instanceName => {
527        this.refreshInstance(instanceName);
528      });
529    }
530  }
531  onDestroy() {
532    super.onDestroy();
533    ['motion_fx', 'background_motion_fx'].forEach(name => {
534      this.deactivate(name);
535    });
536  }
537}
538exports["default"] = _default;
539
540/***/ }),
541
542/***/ "../modules/motion-fx/assets/js/frontend/motion-fx/actions.js":
543/*!********************************************************************!*\
544  !*** ../modules/motion-fx/assets/js/frontend/motion-fx/actions.js ***!
545  \********************************************************************/
546/***/ ((__unused_webpack_module, exports) => {
547
548"use strict";
549
550
551Object.defineProperty(exports, "__esModule", ({
552  value: true
553}));
554exports["default"] = void 0;
555class _default extends elementorModules.Module {
556  getMovePointFromPassedPercents(movableRange, passedPercents) {
557    const movePoint = passedPercents / movableRange * 100;
558    return +movePoint.toFixed(2);
559  }
560  getEffectValueFromMovePoint(range, movePoint) {
561    return range * movePoint / 100;
562  }
563  getStep(passedPercents, options) {
564    if ('element' === this.getSettings('type')) {
565      return this.getElementStep(passedPercents, options);
566    }
567    return this.getBackgroundStep(passedPercents, options);
568  }
569  getElementStep(passedPercents, options) {
570    return -(passedPercents - 50) * options.speed;
571  }
572  getBackgroundStep(passedPercents, options) {
573    const movableRange = this.getSettings('dimensions.movable' + options.axis.toUpperCase());
574    return -this.getEffectValueFromMovePoint(movableRange, passedPercents);
575  }
576  getDirectionMovePoint(passedPercents, direction, range) {
577    let movePoint;
578    if (passedPercents < range.start) {
579      if ('out-in' === direction) {
580        movePoint = 0;
581      } else if ('in-out' === direction) {
582        movePoint = 100;
583      } else {
584        movePoint = this.getMovePointFromPassedPercents(range.start, passedPercents);
585        if ('in-out-in' === direction) {
586          movePoint = 100 - movePoint;
587        }
588      }
589    } else if (passedPercents < range.end) {
590      if ('in-out-in' === direction) {
591        movePoint = 0;
592      } else if ('out-in-out' === direction) {
593        movePoint = 100;
594      } else {
595        movePoint = this.getMovePointFromPassedPercents(range.end - range.start, passedPercents - range.start);
596        if ('in-out' === direction) {
597          movePoint = 100 - movePoint;
598        }
599      }
600    } else if ('in-out' === direction) {
601      movePoint = 0;
602    } else if ('out-in' === direction) {
603      movePoint = 100;
604    } else {
605      movePoint = this.getMovePointFromPassedPercents(100 - range.end, 100 - passedPercents);
606      if ('in-out-in' === direction) {
607        movePoint = 100 - movePoint;
608      }
609    }
610    return movePoint;
611  }
612  translateX(actionData, passedPercents) {
613    actionData.axis = 'x';
614    actionData.unit = 'px';
615    this.transform('translateX', passedPercents, actionData);
616  }
617  translateY(actionData, passedPercents) {
618    actionData.axis = 'y';
619    actionData.unit = 'px';
620    this.transform('translateY', passedPercents, actionData);
621  }
622  translateXY(actionData, passedPercentsX, passedPercentsY) {
623    this.translateX(actionData, passedPercentsX);
624    this.translateY(actionData, passedPercentsY);
625  }
626  tilt(actionData, passedPercentsX, passedPercentsY) {
627    const options = {
628      speed: actionData.speed / 10,
629      direction: actionData.direction
630    };
631    this.rotateX(options, passedPercentsY);
632    this.rotateY(options, 100 - passedPercentsX);
633  }
634  rotateX(actionData, passedPercents) {
635    actionData.axis = 'x';
636    actionData.unit = 'deg';
637    this.transform('rotateX', passedPercents, actionData);
638  }
639  rotateY(actionData, passedPercents) {
640    actionData.axis = 'y';
641    actionData.unit = 'deg';
642    this.transform('rotateY', passedPercents, actionData);
643  }
644  rotateZ(actionData, passedPercents) {
645    actionData.unit = 'deg';
646    this.transform('rotateZ', passedPercents, actionData);
647  }
648  scale(actionData, passedPercents) {
649    const movePoint = this.getDirectionMovePoint(passedPercents, actionData.direction, actionData.range);
650    this.updateRulePart('transform', 'scale', 1 + actionData.speed * movePoint / 1000);
651  }
652  transform(action, passedPercents, actionData) {
653    if (actionData.direction) {
654      passedPercents = 100 - passedPercents;
655    }
656    this.updateRulePart('transform', action, this.getStep(passedPercents, actionData) + actionData.unit);
657  }
658  setCSSTransformVariables(elementSettings) {
659    this.CSSTransformVariables = [];
660    jQuery.each(elementSettings, (settingKey, settingValue) => {
661      const transformKeyMatches = settingKey.match(/_transform_(.+?)_effect/m);
662      if (transformKeyMatches && settingValue) {
663        if ('perspective' === transformKeyMatches[1]) {
664          this.CSSTransformVariables.unshift(transformKeyMatches[1]);
665          return;
666        }
667        if (this.CSSTransformVariables.includes(transformKeyMatches[1])) {
668          return;
669        }
670        this.CSSTransformVariables.push(transformKeyMatches[1]);
671      }
672    });
673  }
674  opacity(actionData, passedPercents) {
675    const movePoint = this.getDirectionMovePoint(passedPercents, actionData.direction, actionData.range),
676      level = actionData.level / 10,
677      opacity = 1 - level + this.getEffectValueFromMovePoint(level, movePoint);
678    this.$element.css({
679      opacity,
680      'will-change': 'opacity'
681    });
682  }
683  blur(actionData, passedPercents) {
684    const movePoint = this.getDirectionMovePoint(passedPercents, actionData.direction, actionData.range),
685      blur = actionData.level - this.getEffectValueFromMovePoint(actionData.level, movePoint);
686    this.updateRulePart('filter', 'blur', blur + 'px');
687  }
688  updateRulePart(ruleName, key, value) {
689    if (!this.rulesVariables[ruleName]) {
690      this.rulesVariables[ruleName] = {};
691    }
692    if (!this.rulesVariables[ruleName][key]) {
693      this.rulesVariables[ruleName][key] = true;
694      this.updateRule(ruleName);
695    }
696    const cssVarKey = `--${key}`;
697    this.$element[0].style.setProperty(cssVarKey, value);
698  }
699  updateRule(ruleName) {
700    let value = '';
701    value += this.concatTransformCSSProperties(ruleName);
702    value += this.concatTransformMotionEffectCSSProperties(ruleName);
703    this.$element.css(ruleName, value);
704  }
705  concatTransformCSSProperties(ruleName) {
706    let value = '';
707    if ('transform' === ruleName) {
708      jQuery.each(this.CSSTransformVariables, (index, variableKey) => {
709        const variableName = variableKey;
710        if (variableKey.startsWith('flip')) {
711          variableKey = variableKey.replace('flip', 'scale');
712        }
713
714        // Adding default value because of the hover state. if there is no default the transform will break.
715        const defaultUnit = variableKey.startsWith('rotate') || variableKey.startsWith('skew') ? 'deg' : 'px',
716          defaultValue = variableKey.startsWith('scale') ? 1 : 0 + defaultUnit;
717        value += `${variableKey}(var(--e-transform-${variableName}, ${defaultValue}))`;
718      });
719    }
720    return value;
721  }
722  concatTransformMotionEffectCSSProperties(ruleName) {
723    let value = '';
724    jQuery.each(this.rulesVariables[ruleName], variableKey => {
725      value += `${variableKey}(var(--${variableKey}))`;
726    });
727    return value;
728  }
729  runAction(actionName, actionData, passedPercents) {
730    if (actionData.affectedRange) {
731      if (actionData.affectedRange.start > passedPercents) {
732        passedPercents = actionData.affectedRange.start;
733      }
734      if (actionData.affectedRange.end < passedPercents) {
735        passedPercents = actionData.affectedRange.end;
736      }
737    }
738    for (var _len = arguments.length, args = new Array(_len > 3 ? _len - 3 : 0), _key = 3; _key < _len; _key++) {
739      args[_key - 3] = arguments[_key];
740    }
741    this[actionName](actionData, passedPercents, ...args);
742  }
743  refresh() {
744    this.rulesVariables = {};
745    this.CSSTransformVariables = [];
746    this.$element.css({
747      transform: '',
748      filter: '',
749      opacity: '',
750      'will-change': ''
751    });
752  }
753  onInit() {
754    this.$element = this.getSettings('$targetElement');
755    this.refresh();
756  }
757}
758exports["default"] = _default;
759
760/***/ }),
761
762/***/ "../modules/motion-fx/assets/js/frontend/motion-fx/interactions/base.js":
763/*!******************************************************************************!*\
764  !*** ../modules/motion-fx/assets/js/frontend/motion-fx/interactions/base.js ***!
765  \******************************************************************************/
766/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
767
768"use strict";
769
770
771var _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ "../node_modules/@babel/runtime/helpers/interopRequireDefault.js");
772Object.defineProperty(exports, "__esModule", ({
773  value: true
774}));
775exports["default"] = void 0;
776var _defineProperty2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/defineProperty */ "../node_modules/@babel/runtime/helpers/defineProperty.js"));
777class _default extends elementorModules.ViewModule {
778  constructor() {
779    super(...arguments);
780    (0, _defineProperty2.default)(this, "onInsideViewport", () => {
781      this.run();
782      this.animationFrameRequest = requestAnimationFrame(this.onInsideViewport);
783    });
784  }
785  __construct(options) {
786    this.motionFX = options.motionFX;
787    if (!this.intersectionObservers) {
788      this.setElementInViewportObserver();
789    }
790  }
791  setElementInViewportObserver() {
792    this.intersectionObserver = elementorModules.utils.Scroll.scrollObserver({
793      callback: event => {
794        if (event.isInViewport) {
795          this.onInsideViewport();
796        } else {
797          this.removeAnimationFrameRequest();
798        }
799      }
800    });
801
802    // Determine which element we should observe.
803    const observedElement = 'page' === this.motionFX.getSettings('range') ? elementorFrontend.elements.$body[0] : this.motionFX.elements.$parent[0];
804    this.intersectionObserver.observe(observedElement);
805  }
806  runCallback() {
807    const callback = this.getSettings('callback');
808    callback(...arguments);
809  }
810  removeIntersectionObserver() {
811    if (this.intersectionObserver) {
812      this.intersectionObserver.unobserve(this.motionFX.elements.$parent[0]);
813    }
814  }
815  removeAnimationFrameRequest() {
816    if (this.animationFrameRequest) {
817      cancelAnimationFrame(this.animationFrameRequest);
818    }
819  }
820  destroy() {
821    this.removeAnimationFrameRequest();
822    this.removeIntersectionObserver();
823  }
824  onInit() {
825    super.onInit();
826  }
827}
828exports["default"] = _default;
829
830/***/ }),
831
832/***/ "../modules/motion-fx/assets/js/frontend/motion-fx/interactions/mouse-move.js":
833/*!************************************************************************************!*\
834  !*** ../modules/motion-fx/assets/js/frontend/motion-fx/interactions/mouse-move.js ***!
835  \************************************************************************************/
836/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
837
838"use strict";
839
840
841var _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ "../node_modules/@babel/runtime/helpers/interopRequireDefault.js");
842Object.defineProperty(exports, "__esModule", ({
843  value: true
844}));
845exports["default"] = void 0;
846var _base = _interopRequireDefault(__webpack_require__(/*! ./base */ "../modules/motion-fx/assets/js/frontend/motion-fx/interactions/base.js"));
847class MouseMoveInteraction extends _base.default {
848  bindEvents() {
849    if (!MouseMoveInteraction.mouseTracked) {
850      elementorFrontend.elements.$window.on('mousemove', MouseMoveInteraction.updateMousePosition);
851      MouseMoveInteraction.mouseTracked = true;
852    }
853  }
854  run() {
855    const mousePosition = MouseMoveInteraction.mousePosition,
856      oldMousePosition = this.oldMousePosition;
857    if (oldMousePosition.x === mousePosition.x && oldMousePosition.y === mousePosition.y) {
858      return;
859    }
860    this.oldMousePosition = {
861      x: mousePosition.x,
862      y: mousePosition.y
863    };
864    const passedPercentsX = 100 / innerWidth * mousePosition.x,
865      passedPercentsY = 100 / innerHeight * mousePosition.y;
866    this.runCallback(passedPercentsX, passedPercentsY);
867  }
868  onInit() {
869    this.oldMousePosition = {};
870    super.onInit();
871  }
872}
873exports["default"] = MouseMoveInteraction;
874MouseMoveInteraction.mousePosition = {};
875MouseMoveInteraction.updateMousePosition = event => {
876  MouseMoveInteraction.mousePosition = {
877    x: event.clientX,
878    y: event.clientY
879  };
880};
881
882/***/ }),
883
884/***/ "../modules/motion-fx/assets/js/frontend/motion-fx/interactions/scroll.js":
885/*!********************************************************************************!*\
886  !*** ../modules/motion-fx/assets/js/frontend/motion-fx/interactions/scroll.js ***!
887  \********************************************************************************/
888/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
889
890"use strict";
891
892
893var _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ "../node_modules/@babel/runtime/helpers/interopRequireDefault.js");
894Object.defineProperty(exports, "__esModule", ({
895  value: true
896}));
897exports["default"] = void 0;
898var _base = _interopRequireDefault(__webpack_require__(/*! ./base */ "../modules/motion-fx/assets/js/frontend/motion-fx/interactions/base.js"));
899class _default extends _base.default {
900  run() {
901    if (pageYOffset === this.windowScrollTop) {
902      return false;
903    }
904    this.onScrollMovement();
905    this.windowScrollTop = pageYOffset;
906  }
907  onScrollMovement() {
908    this.updateMotionFxDimensions();
909    this.updateAnimation();
910    this.resetTransitionVariable();
911  }
912  resetTransitionVariable() {
913    this.motionFX.$element.css('--e-transform-transition-duration', '100ms');
914  }
915  updateMotionFxDimensions() {
916    const motionFXSettings = this.motionFX.getSettings();
917    if (motionFXSettings.refreshDimensions) {
918      this.motionFX.defineDimensions();
919    }
920  }
921  updateAnimation() {
922    let passedRangePercents;
923    if ('page' === this.motionFX.getSettings('range')) {
924      passedRangePercents = elementorModules.utils.Scroll.getPageScrollPercentage();
925    } else if (this.motionFX.getSettings('isFixedPosition')) {
926      passedRangePercents = elementorModules.utils.Scroll.getPageScrollPercentage({}, window.innerHeight);
927    } else {
928      passedRangePercents = elementorModules.utils.Scroll.getElementViewportPercentage(this.motionFX.elements.$parent);
929    }
930    this.runCallback(passedRangePercents);
931  }
932}
933exports["default"] = _default;
934
935/***/ }),
936
937/***/ "../modules/motion-fx/assets/js/frontend/motion-fx/motion-fx.js":
938/*!**********************************************************************!*\
939  !*** ../modules/motion-fx/assets/js/frontend/motion-fx/motion-fx.js ***!
940  \**********************************************************************/
941/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
942
943"use strict";
944
945
946var _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ "../node_modules/@babel/runtime/helpers/interopRequireDefault.js");
947Object.defineProperty(exports, "__esModule", ({
948  value: true
949}));
950exports["default"] = void 0;
951var _scroll = _interopRequireDefault(__webpack_require__(/*! ./interactions/scroll */ "../modules/motion-fx/assets/js/frontend/motion-fx/interactions/scroll.js"));
952var _mouseMove = _interopRequireDefault(__webpack_require__(/*! ./interactions/mouse-move */ "../modules/motion-fx/assets/js/frontend/motion-fx/interactions/mouse-move.js"));
953var _actions = _interopRequireDefault(__webpack_require__(/*! ./actions */ "../modules/motion-fx/assets/js/frontend/motion-fx/actions.js"));
954class _default extends elementorModules.ViewModule {
955  getDefaultSettings() {
956    return {
957      type: 'element',
958      $element: null,
959      $dimensionsElement: null,
960      addBackgroundLayerTo: null,
961      interactions: {},
962      refreshDimensions: false,
963      range: 'viewport',
964      classes: {
965        element: 'motion-fx-element',
966        parent: 'motion-fx-parent',
967        backgroundType: 'motion-fx-element-type-background',
968        container: 'motion-fx-container',
969        layer: 'motion-fx-layer',
970        perspective: 'motion-fx-perspective'
971      }
972    };
973  }
974  bindEvents() {
975    this.defineDimensions = this.defineDimensions.bind(this);
976    elementorFrontend.elements.$window.on('resize elementor-pro/motion-fx/recalc', this.defineDimensions);
977  }
978  unbindEvents() {
979    elementorFrontend.elements.$window.off('resize elementor-pro/motion-fx/recalc', this.defineDimensions);
980  }
981  addBackgroundLayer() {
982    const settings = this.getSettings();
983    this.elements.$motionFXContainer = jQuery('<div>', {
984      class: settings.classes.container
985    });
986    this.elements.$motionFXLayer = jQuery('<div>', {
987      class: settings.classes.layer
988    });
989    this.updateBackgroundLayerSize();
990    this.elements.$motionFXContainer.prepend(this.elements.$motionFXLayer);
991    const $addBackgroundLayerTo = settings.addBackgroundLayerTo ? this.$element.find(settings.addBackgroundLayerTo) : this.$element;
992    $addBackgroundLayerTo.prepend(this.elements.$motionFXContainer);
993  }
994  removeBackgroundLayer() {
995    this.elements.$motionFXContainer.remove();
996  }
997  updateBackgroundLayerSize() {
998    const settings = this.getSettings(),
999      speed = {
1000        x: 0,
1001        y: 0
1002      },
1003      mouseInteraction = settings.interactions.mouseMove,
1004      scrollInteraction = settings.interactions.scroll;
1005    if (mouseInteraction && mouseInteraction.translateXY) {
1006      speed.x = mouseInteraction.translateXY.speed * 10;
1007      speed.y = mouseInteraction.translateXY.speed * 10;
1008    }
1009    if (scrollInteraction) {
1010      if (scrollInteraction.translateX) {
1011        speed.x = scrollInteraction.translateX.speed * 10;
1012      }
1013      if (scrollInteraction.translateY) {
1014        speed.y = scrollInteraction.translateY.speed * 10;
1015      }
1016    }
1017    this.elements.$motionFXLayer.css({
1018      width: 100 + speed.x + '%',
1019      height: 100 + speed.y + '%'
1020    });
1021  }
1022  defineDimensions() {
1023    const $dimensionsElement = this.getSettings('$dimensionsElement') || this.$element,
1024      elementOffset = $dimensionsElement.offset();
1025    const dimensions = {
1026      elementHeight: $dimensionsElement.outerHeight(),
1027      elementWidth: $dimensionsElement.outerWidth(),
1028      elementTop: elementOffset.top,
1029      elementLeft: elementOffset.left
1030    };
1031    dimensions.elementRange = dimensions.elementHeight + innerHeight;
1032    this.setSettings('dimensions', dimensions);
1033    if ('background' === this.getSettings('type')) {
1034      this.defineBackgroundLayerDimensions();
1035    }
1036  }
1037  defineBackgroundLayerDimensions() {
1038    const dimensions = this.getSettings('dimensions');
1039    dimensions.layerHeight = this.elements.$motionFXLayer.height();
1040    dimensions.layerWidth = this.elements.$motionFXLayer.width();
1041    dimensions.movableX = dimensions.layerWidth - dimensions.elementWidth;
1042    dimensions.movableY = dimensions.layerHeight - dimensions.elementHeight;
1043    this.setSettings('dimensions', dimensions);
1044  }
1045  initInteractionsTypes() {
1046    this.interactionsTypes = {
1047      scroll: _scroll.default,
1048      mouseMove: _mouseMove.default
1049    };
1050  }
1051  prepareSpecialActions() {
1052    const settings = this.getSettings(),
1053      hasTiltEffect = !!(settings.interactions.mouseMove && settings.interactions.mouseMove.tilt);
1054    this.elements.$parent.toggleClass(settings.classes.perspective, hasTiltEffect);
1055  }
1056  cleanSpecialActions() {
1057    const settings = this.getSettings();
1058    this.elements.$parent.removeClass(settings.classes.perspective);
1059  }
1060  runInteractions() {
1061    var _this = this;
1062    const settings = this.getSettings();
1063    this.actions.setCSSTransformVariables(settings.elementSettings);
1064    this.prepareSpecialActions();
1065    jQuery.each(settings.interactions, (interactionName, actions) => {
1066      this.interactions[interactionName] = new this.interactionsTypes[interactionName]({
1067        motionFX: this,
1068        callback: function () {
1069          for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
1070            args[_key] = arguments[_key];
1071          }
1072          jQuery.each(actions, (actionName, actionData) => _this.actions.runAction(actionName, actionData, ...args));
1073        }
1074      });
1075      this.interactions[interactionName].run();
1076    });
1077  }
1078  destroyInteractions() {
1079    this.cleanSpecialActions();
1080    jQuery.each(this.interactions, (interactionName, interaction) => interaction.destroy());
1081    this.interactions = {};
1082  }
1083  refresh() {
1084    this.actions.setSettings(this.getSettings());
1085    if ('background' === this.getSettings('type')) {
1086      this.updateBackgroundLayerSize();
1087      this.defineBackgroundLayerDimensions();
1088    }
1089    this.actions.refresh();
1090    this.destroyInteractions();
1091    this.runInteractions();
1092  }
1093  destroy() {
1094    this.destroyInteractions();
1095    this.actions.refresh();
1096    const settings = this.getSettings();
1097    this.$element.removeClass(settings.classes.element);
1098    this.elements.$parent.removeClass(settings.classes.parent);
1099    if ('background' === settings.type) {
1100      this.$element.removeClass(settings.classes.backgroundType);
1101      this.removeBackgroundLayer();
1102    }
1103  }
1104  onInit() {
1105    super.onInit();
1106    const settings = this.getSettings();
1107    this.$element = settings.$element;
1108    this.elements.$parent = this.$element.parent();
1109    this.$element.addClass(settings.classes.element);
1110    this.elements.$parent = this.$element.parent();
1111    this.elements.$parent.addClass(settings.classes.parent);
1112    if ('background' === settings.type) {
1113      this.$element.addClass(settings.classes.backgroundType);
1114      this.addBackgroundLayer();
1115    }
1116    this.defineDimensions();
1117    settings.$targetElement = 'element' === settings.type ? this.$element : this.elements.$motionFXLayer;
1118    this.interactions = {};
1119    this.actions = new _actions.default(settings);
1120    this.initInteractionsTypes();
1121    this.runInteractions();
1122  }
1123}
1124exports["default"] = _default;
1125
1126/***/ }),
1127
1128/***/ "../modules/payments/assets/js/frontend/frontend.js":
1129/*!**********************************************************!*\
1130  !*** ../modules/payments/assets/js/frontend/frontend.js ***!
1131  \**********************************************************/
1132/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
1133
1134"use strict";
1135
1136
1137Object.defineProperty(exports, "__esModule", ({
1138  value: true
1139}));
1140exports["default"] = void 0;
1141class _default extends elementorModules.Module {
1142  constructor() {
1143    super();
1144    elementorFrontend.elementsHandler.attachHandler('paypal-button', () => __webpack_require__.e(/*! import() | paypal-button */ "paypal-button").then(__webpack_require__.bind(__webpack_require__, /*! ./handlers/paypal-button */ "../modules/payments/assets/js/frontend/handlers/paypal-button.js")));
1145    elementorFrontend.elementsHandler.attachHandler('stripe-button', () => Promise.all(/*! import() | stripe-button */[__webpack_require__.e("vendors-node_modules_dompurify_dist_purify_js"), __webpack_require__.e("stripe-button")]).then(__webpack_require__.bind(__webpack_require__, /*! ./handlers/stripe-button */ "../modules/payments/assets/js/frontend/handlers/stripe-button.js")));
1146  }
1147}
1148exports["default"] = _default;
1149
1150/***/ }),
1151
1152/***/ "../modules/progress-tracker/assets/js/frontend/frontend.js":
1153/*!******************************************************************!*\
1154  !*** ../modules/progress-tracker/assets/js/frontend/frontend.js ***!
1155  \******************************************************************/
1156/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
1157
1158"use strict";
1159
1160
1161Object.defineProperty(exports, "__esModule", ({
1162  value: true
1163}));
1164exports["default"] = void 0;
1165class _default extends elementorModules.Module {
1166  constructor() {
1167    super();
1168    elementorFrontend.elementsHandler.attachHandler('progress-tracker', () => __webpack_require__.e(/*! import() | progress-tracker */ "progress-tracker").then(__webpack_require__.bind(__webpack_require__, /*! ./handlers/progress-tracker */ "../modules/progress-tracker/assets/js/frontend/handlers/progress-tracker.js")));
1169  }
1170}
1171exports["default"] = _default;
1172
1173/***/ }),
1174
1175/***/ "../modules/sticky/assets/js/frontend/frontend.js":
1176/*!********************************************************!*\
1177  !*** ../modules/sticky/assets/js/frontend/frontend.js ***!
1178  \********************************************************/
1179/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
1180
1181"use strict";
1182
1183
1184var _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ "../node_modules/@babel/runtime/helpers/interopRequireDefault.js");
1185Object.defineProperty(exports, "__esModule", ({
1186  value: true
1187}));
1188exports["default"] = void 0;
1189var _sticky = _interopRequireDefault(__webpack_require__(/*! ./handlers/sticky */ "../modules/sticky/assets/js/frontend/handlers/sticky.js"));
1190class _default extends elementorModules.Module {
1191  constructor() {
1192    super();
1193    elementorFrontend.elementsHandler.attachHandler('section', _sticky.default, null);
1194    elementorFrontend.elementsHandler.attachHandler('container', _sticky.default, null);
1195    elementorFrontend.elementsHandler.attachHandler('widget', _sticky.default, null);
1196  }
1197}
1198exports["default"] = _default;
1199
1200/***/ }),
1201
1202/***/ "../modules/sticky/assets/js/frontend/handlers/sticky.js":
1203/*!***************************************************************!*\
1204  !*** ../modules/sticky/assets/js/frontend/handlers/sticky.js ***!
1205  \***************************************************************/
1206/***/ ((__unused_webpack_module, exports) => {
1207
1208"use strict";
1209
1210
1211Object.defineProperty(exports, "__esModule", ({
1212  value: true
1213}));
1214exports["default"] = void 0;
1215var _default = exports["default"] = elementorModules.frontend.handlers.Base.extend({
1216  currentConfig: {},
1217  debouncedReactivate: null,
1218  bindEvents() {
1219    elementorFrontend.addListenerOnce(this.getUniqueHandlerID() + 'sticky', 'resize', this.reactivateOnResize);
1220  },
1221  unbindEvents() {
1222    elementorFrontend.removeListeners(this.getUniqueHandlerID() + 'sticky', 'resize', this.reactivateOnResize);
1223  },
1224  isStickyInstanceActive() {
1225    return undefined !== this.$element.data('sticky');
1226  },
1227  /**
1228   * Get the current active setting value for a responsive control.
1229   *
1230   * @param {string} setting
1231   * @return {any} - Setting value.
1232   */
1233  getResponsiveSetting(setting) {
1234    const elementSettings = this.getElementSettings();
1235    return elementorFrontend.getCurrentDeviceSetting(elementSettings, setting);
1236  },
1237  /**
1238   * Return an array of settings names for responsive control (e.g. `settings`, `setting_tablet`, `setting_mobile` ).
1239   *
1240   * @param {string} setting
1241   * @return {string[]} - List of settings.
1242   */
1243  getResponsiveSettingList(setting) {
1244    const breakpoints = Object.keys(elementorFrontend.config.responsive.activeBreakpoints);
1245    return ['', ...breakpoints].map(suffix => {
1246      return suffix ? `${setting}_${suffix}` : setting;
1247    });
1248  },
1249  getConfig() {
1250    const elementSettings = this.getElementSettings(),
1251      stickyOptions = {
1252        to: elementSettings.sticky,
1253        offset: this.getResponsiveSetting('sticky_offset'),
1254        effectsOffset: this.getResponsiveSetting('sticky_effects_offset'),
1255        classes: {
1256          sticky: 'elementor-sticky',
1257          stickyActive: 'elementor-sticky--active elementor-section--handles-inside',
1258          stickyEffects: 'elementor-sticky--effects',
1259          spacer: 'elementor-sticky__spacer'
1260        },
1261        isRTL: elementorFrontend.config.is_rtl,
1262        // In edit mode, since the preview is an iframe, the scrollbar is on the left. The scrollbar width is
1263        // compensated for in this case.
1264        handleScrollbarWidth: elementorFrontend.isEditMode()
1265      },
1266      $wpAdminBar = elementorFrontend.elements.$wpAdminBar,
1267      isParentContainer = this.isContainerElement(this.$element[0]) && !this.isContainerElement(this.$element[0].parentElement);
1268    if ($wpAdminBar.length && 'top' === elementSettings.sticky && 'fixed' === $wpAdminBar.css('position')) {
1269      stickyOptions.offset += $wpAdminBar.height();
1270    }
1271
1272    // The `stickyOptions.parent` value should only be applied to inner elements, and not to top level containers.
1273    if (elementSettings.sticky_parent && !isParentContainer) {
1274      // TODO: The e-container classes should be removed in the next update.
1275      stickyOptions.parent = '.e-container, .e-container__inner, .e-con, .e-con-inner, .elementor-widget-wrap';
1276    }
1277    return stickyOptions;
1278  },
1279  activate() {
1280    this.currentConfig = this.getConfig();
1281    this.$element.sticky(this.currentConfig);
1282  },
1283  deactivate() {
1284    if (!this.isStickyInstanceActive()) {
1285      return;
1286    }
1287    this.$element.sticky('destroy');
1288  },
1289  run(refresh) {
1290    if (!this.getElementSettings('sticky')) {
1291      this.deactivate();
1292      return;
1293    }
1294    var currentDeviceMode = elementorFrontend.getCurrentDeviceMode(),
1295      activeDevices = this.getElementSettings('sticky_on');
1296    if (-1 !== activeDevices.indexOf(currentDeviceMode)) {
1297      if (true === refresh) {
1298        this.reactivate();
1299      } else if (!this.isStickyInstanceActive()) {
1300        this.activate();
1301      }
1302    } else {
1303      this.deactivate();
1304    }
1305  },
1306  /**
1307   * Reactivate the sticky instance on resize only if the new sticky config is different from the current active one,
1308   * in order to avoid re-initializing the sticky when not needed, and avoid layout shifts.
1309   * The config can be different between devices, so this need to be checked on each screen resize to make sure that
1310   * the current screen size uses the appropriate Sticky config.
1311   *
1312   * @return {void}
1313   */
1314  reactivateOnResize() {
1315    clearTimeout(this.debouncedReactivate);
1316    this.debouncedReactivate = setTimeout(() => {
1317      const config = this.getConfig(),
1318        isDifferentConfig = JSON.stringify(config) !== JSON.stringify(this.currentConfig);
1319      if (isDifferentConfig) {
1320        this.run(true);
1321      }
1322    }, 300);
1323  },
1324  reactivate() {
1325    this.deactivate();
1326    this.activate();
1327  },
1328  onElementChange(settingKey) {
1329    if (-1 !== ['sticky', 'sticky_on'].indexOf(settingKey)) {
1330      this.run(true);
1331    }
1332
1333    // Settings that trigger a re-activation when changed.
1334    const settings = [...this.getResponsiveSettingList('sticky_offset'), ...this.getResponsiveSettingList('sticky_effects_offset'), 'sticky_parent'];
1335    if (-1 !== settings.indexOf(settingKey)) {
1336      this.reactivate();
1337    }
1338  },
1339  /**
1340   * Listen to device mode changes and re-initialize the sticky.
1341   *
1342   * @return {void}
1343   */
1344  onDeviceModeChange() {
1345    // Wait for the call stack to be empty.
1346    // The `run` function requests the current device mode from the CSS so it's not ready immediately.
1347    // (need to wait for the `deviceMode` event to change the CSS).
1348    // See `elementorFrontend.getCurrentDeviceMode()` for reference.
1349    setTimeout(() => this.run(true));
1350  },
1351  onInit() {
1352    elementorModules.frontend.handlers.Base.prototype.onInit.apply(this, arguments);
1353    if (elementorFrontend.isEditMode()) {
1354      elementor.listenTo(elementor.channels.deviceMode, 'change', () => this.onDeviceModeChange());
1355    }
1356    this.run();
1357  },
1358  onDestroy() {
1359    elementorModules.frontend.handlers.Base.prototype.onDestroy.apply(this, arguments);
1360    this.deactivate();
1361  },
1362  /**
1363   *
1364   * @param {HTMLElement|null|undefined} element
1365   * @return {boolean} Is the passed element a container.
1366   */
1367  isContainerElement(element) {
1368    const containerClasses = [
1369    // TODO: The e-container classes should be removed in the next update.
1370    'e-container', 'e-container__inner', 'e-con', 'e-con-inner'];
1371    return containerClasses.some(containerClass => {
1372      return element?.classList.contains(containerClass);
1373    });
1374  }
1375});
1376
1377/***/ }),
1378
1379/***/ "../modules/video-playlist/assets/js/frontend/frontend.js":
1380/*!****************************************************************!*\
1381  !*** ../modules/video-playlist/assets/js/frontend/frontend.js ***!
1382  \****************************************************************/
1383/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
1384
1385"use strict";
1386
1387
1388Object.defineProperty(exports, "__esModule", ({
1389  value: true
1390}));
1391exports["default"] = void 0;
1392class _default extends elementorModules.Module {
1393  constructor() {
1394    super();
1395    elementorFrontend.hooks.addAction('frontend/element_ready/video-playlist.default', $element => {
1396      __webpack_require__.e(/*! import() | video-playlist */ "video-playlist").then(__webpack_require__.bind(__webpack_require__, /*! ./handler */ "../modules/video-playlist/assets/js/frontend/handler.js")).then(_ref => {
1397        let {
1398          default: dynamicHandler
1399        } = _ref;
1400        elementorFrontend.elementsHandler.addHandler(dynamicHandler, {
1401          $element,
1402          toggleSelf: false
1403        });
1404      });
1405    });
1406  }
1407}
1408exports["default"] = _default;
1409
1410/***/ }),
1411
vendor: 876 bytes, lines 1412-1436
1412/***/ "../node_modules/@babel/runtime/helpers/defineProperty.js":
1413/*!****************************************************************!*\
1414  !*** ../node_modules/@babel/runtime/helpers/defineProperty.js ***!
1415  \****************************************************************/
1416/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
1417
1418var toPropertyKey = __webpack_require__(/*! ./toPropertyKey.js */ "../node_modules/@babel/runtime/helpers/toPropertyKey.js");
1419function _defineProperty(obj, key, value) {
1420  key = toPropertyKey(key);
1421  if (key in obj) {
1422    Object.defineProperty(obj, key, {
1423      value: value,
1424      enumerable: true,
1425      configurable: true,
1426      writable: true
1427    });
1428  } else {
1429    obj[key] = value;
1430  }
1431  return obj;
1432}
1433module.exports = _defineProperty, module.exports.__esModule = true, module.exports["default"] = module.exports;
1434
1435/***/ }),
1436
vendor: 562 bytes, lines 1437-1451
1437/***/ "../node_modules/@babel/runtime/helpers/interopRequireDefault.js":
1438/*!***********************************************************************!*\
1439  !*** ../node_modules/@babel/runtime/helpers/interopRequireDefault.js ***!
1440  \***********************************************************************/
1441/***/ ((module) => {
1442
1443function _interopRequireDefault(obj) {
1444  return obj && obj.__esModule ? obj : {
1445    "default": obj
1446  };
1447}
1448module.exports = _interopRequireDefault, module.exports.__esModule = true, module.exports["default"] = module.exports;
1449
1450/***/ }),
1451
vendor: 976 bytes, lines 1452-1472
1452/***/ "../node_modules/@babel/runtime/helpers/toPrimitive.js":
1453/*!*************************************************************!*\
1454  !*** ../node_modules/@babel/runtime/helpers/toPrimitive.js ***!
1455  \*************************************************************/
1456/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
1457
1458var _typeof = (__webpack_require__(/*! ./typeof.js */ "../node_modules/@babel/runtime/helpers/typeof.js")["default"]);
1459function _toPrimitive(input, hint) {
1460  if (_typeof(input) !== "object" || input === null) return input;
1461  var prim = input[Symbol.toPrimitive];
1462  if (prim !== undefined) {
1463    var res = prim.call(input, hint || "default");
1464    if (_typeof(res) !== "object") return res;
1465    throw new TypeError("@@toPrimitive must return a primitive value.");
1466  }
1467  return (hint === "string" ? String : Number)(input);
1468}
1469module.exports = _toPrimitive, module.exports.__esModule = true, module.exports["default"] = module.exports;
1470
1471/***/ }),
1472
vendor: 831 bytes, lines 1473-1488
1473/***/ "../node_modules/@babel/runtime/helpers/toPropertyKey.js":
1474/*!***************************************************************!*\
1475  !*** ../node_modules/@babel/runtime/helpers/toPropertyKey.js ***!
1476  \***************************************************************/
1477/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
1478
1479var _typeof = (__webpack_require__(/*! ./typeof.js */ "../node_modules/@babel/runtime/helpers/typeof.js")["default"]);
1480var toPrimitive = __webpack_require__(/*! ./toPrimitive.js */ "../node_modules/@babel/runtime/helpers/toPrimitive.js");
1481function _toPropertyKey(arg) {
1482  var key = toPrimitive(arg, "string");
1483  return _typeof(key) === "symbol" ? key : String(key);
1484}
1485module.exports = _toPropertyKey, module.exports.__esModule = true, module.exports["default"] = module.exports;
1486
1487/***/ }),
1488
vendor: 811 bytes, lines 1489-1506
1489/***/ "../node_modules/@babel/runtime/helpers/typeof.js":
1490/*!********************************************************!*\
1491  !*** ../node_modules/@babel/runtime/helpers/typeof.js ***!
1492  \********************************************************/
1493/***/ ((module) => {
1494
1495function _typeof(o) {
1496  "@babel/helpers - typeof";
1497
1498  return (module.exports = _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) {
1499    return typeof o;
1500  } : function (o) {
1501    return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o;
1502  }, module.exports.__esModule = true, module.exports["default"] = module.exports), _typeof(o);
1503}
1504module.exports = _typeof, module.exports.__esModule = true, module.exports["default"] = module.exports;
1505
1506/***/ })
1506
1507
1508},
1509/******/ __webpack_require__ => { // webpackRuntimeModules
1510/******/ var __webpack_exec__ = (moduleId) => (__webpack_require__(__webpack_require__.s = moduleId))
1511/******/ var __webpack_exports__ = (__webpack_exec__("../assets/dev/js/frontend/frontend.js"));
1512/******/ }
1513]);
1514//# 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.