PluginProbe
Elementor Website Builder – more than just a page builder / 3.9.2
Elementor Website Builder – more than just a page builder v3.9.2
4.3.0-beta3 4.3.0-beta2 4.3.0-beta1 4.2.4 4.2.3 4.2.2 4.2.1 4.2.0 4.1.5 4.2.0-beta2 4.2.0-dev2 4.2.0-beta1 4.1.4 4.1.3 4.1.2 4.1.1 4.1.0 4.1.0-beta3 4.1.0-dev3 4.0.9 4.1.0-beta2 4.1.0-dev2 4.0.8 4.1.0-beta1 4.1.0-dev1 All 452 releases
← All changes | assets/js/frontend.js +909 -604 4.2.43.9.2 View file →
@@ -1,6 +1,6 @@
1 -"use strict";
2 -(self["webpackChunkelementorFrontend"] = self["webpackChunkelementorFrontend"] || []).push([["frontend"],{
1 +/*! elementor - v3.9.2 - 21-12-2022 */
2 +(self["webpackChunkelementor"] = self["webpackChunkelementor"] || []).push([["frontend"],{
3 3
4 4 /***/ "../assets/dev/js/frontend/documents-manager.js":
5 5 /*!******************************************************!*\
6 6 !*** ../assets/dev/js/frontend/documents-manager.js ***!
@@ -6,8 +6,9 @@
6 6 !*** ../assets/dev/js/frontend/documents-manager.js ***!
7 7 \******************************************************/
8 8 /***/ ((__unused_webpack_module, exports, __webpack_require__) => {
9 9
10 +"use strict";
10 11
11 12
12 13 var _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ "../node_modules/@babel/runtime/helpers/interopRequireDefault.js");
13 14 Object.defineProperty(exports, "__esModule", ({
@@ -15,10 +16,10 @@
15 16 }));
16 17 exports["default"] = void 0;
17 18 var _document = _interopRequireDefault(__webpack_require__(/*! ./document */ "../assets/dev/js/frontend/document.js"));
18 19 class _default extends elementorModules.ViewModule {
19 - constructor(...args) {
20 - super(...args);
20 + constructor() {
21 + super(...arguments);
21 22 this.documents = {};
22 23 this.initDocumentClasses();
23 24 this.attachDocumentsClasses();
24 25 }
@@ -67,20 +68,23 @@
67 68 !*** ../assets/dev/js/frontend/elements-handlers-manager.js ***!
68 69 \**************************************************************/
69 70 /***/ ((module, __unused_webpack_exports, __webpack_require__) => {
70 71
72 +"use strict";
71 73
72 74
73 75 var _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ "../node_modules/@babel/runtime/helpers/interopRequireDefault.js");
74 -__webpack_require__(/*! core-js/modules/esnext.iterator.constructor.js */ "../node_modules/core-js/modules/esnext.iterator.constructor.js");
75 -__webpack_require__(/*! core-js/modules/esnext.iterator.for-each.js */ "../node_modules/core-js/modules/esnext.iterator.for-each.js");
76 76 var _global = _interopRequireDefault(__webpack_require__(/*! ./handlers/global */ "../assets/dev/js/frontend/handlers/global.js"));
77 +var _background = _interopRequireDefault(__webpack_require__(/*! ./handlers/background */ "../assets/dev/js/frontend/handlers/background.js"));
77 78 var _container = _interopRequireDefault(__webpack_require__(/*! ./handlers/container/container */ "../assets/dev/js/frontend/handlers/container/container.js"));
78 -var _section = _interopRequireDefault(__webpack_require__(/*! ./handlers/section/section */ "../assets/dev/js/frontend/handlers/section/section.js"));
79 79 var _column = _interopRequireDefault(__webpack_require__(/*! ./handlers/column */ "../assets/dev/js/frontend/handlers/column.js"));
80 -/* global elementorFrontendConfig */
80 +var _handlesPosition = _interopRequireDefault(__webpack_require__(/*! ./handlers/section/handles-position */ "../assets/dev/js/frontend/handlers/section/handles-position.js"));
81 +var _stretchedSection = _interopRequireDefault(__webpack_require__(/*! ./handlers/section/stretched-section */ "../assets/dev/js/frontend/handlers/section/stretched-section.js"));
82 +var _shapes = _interopRequireDefault(__webpack_require__(/*! ./handlers/section/shapes */ "../assets/dev/js/frontend/handlers/section/shapes.js"));
83 +// Section handlers.
81 84
82 85 module.exports = function ($) {
86 + var _this = this;
83 87 const handlersInstances = {};
84 88 this.elementsHandlers = {
85 89 'accordion.default': () => __webpack_require__.e(/*! import() | accordion */ "accordion").then(__webpack_require__.bind(__webpack_require__, /*! ./handlers/accordion */ "../assets/dev/js/frontend/handlers/accordion.js")),
86 90 'alert.default': () => __webpack_require__.e(/*! import() | alert */ "alert").then(__webpack_require__.bind(__webpack_require__, /*! ./handlers/alert */ "../assets/dev/js/frontend/handlers/alert.js")),
@@ -90,25 +94,22 @@
90 94 'toggle.default': () => __webpack_require__.e(/*! import() | toggle */ "toggle").then(__webpack_require__.bind(__webpack_require__, /*! ./handlers/toggle */ "../assets/dev/js/frontend/handlers/toggle.js")),
91 95 'video.default': () => __webpack_require__.e(/*! import() | video */ "video").then(__webpack_require__.bind(__webpack_require__, /*! ./handlers/video */ "../assets/dev/js/frontend/handlers/video.js")),
92 96 'image-carousel.default': () => __webpack_require__.e(/*! import() | image-carousel */ "image-carousel").then(__webpack_require__.bind(__webpack_require__, /*! ./handlers/image-carousel */ "../assets/dev/js/frontend/handlers/image-carousel.js")),
93 97 'text-editor.default': () => __webpack_require__.e(/*! import() | text-editor */ "text-editor").then(__webpack_require__.bind(__webpack_require__, /*! ./handlers/text-editor */ "../assets/dev/js/frontend/handlers/text-editor.js")),
94 - 'wp-widget-media_audio.default': () => __webpack_require__.e(/*! import() | wp-audio */ "wp-audio").then(__webpack_require__.bind(__webpack_require__, /*! ./handlers/wp-audio */ "../assets/dev/js/frontend/handlers/wp-audio.js")),
95 - container: _container.default,
96 - section: _section.default,
97 - column: _column.default
98 + '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"))
98 99 };
99 - if (elementorFrontendConfig.experimentalFeatures['nested-elements']) {
100 - this.elementsHandlers['nested-tabs.default'] = () => __webpack_require__.e(/*! import() | nested-tabs */ "nested-tabs").then(__webpack_require__.bind(__webpack_require__, /*! elementor/modules/nested-tabs/assets/js/frontend/handlers/nested-tabs */ "../modules/nested-tabs/assets/js/frontend/handlers/nested-tabs.js"));
101 - }
102 - if (elementorFrontendConfig.experimentalFeatures['nested-elements']) {
103 - this.elementsHandlers['nested-accordion.default'] = () => __webpack_require__.e(/*! import() | nested-accordion */ "nested-accordion").then(__webpack_require__.bind(__webpack_require__, /*! elementor/modules/nested-accordion/assets/js/frontend/handlers/nested-accordion */ "../modules/nested-accordion/assets/js/frontend/handlers/nested-accordion.js"));
104 - }
105 - if (elementorFrontendConfig.experimentalFeatures.container) {
106 - this.elementsHandlers['contact-buttons.default'] = () => __webpack_require__.e(/*! import() | contact-buttons */ "contact-buttons").then(__webpack_require__.bind(__webpack_require__, /*! elementor/modules/floating-buttons/assets/js/floating-buttons/frontend/handlers/contact-buttons */ "../modules/floating-buttons/assets/js/floating-buttons/frontend/handlers/contact-buttons.js"));
107 - this.elementsHandlers['floating-bars-var-1.default'] = () => __webpack_require__.e(/*! import() | floating-bars */ "floating-bars").then(__webpack_require__.bind(__webpack_require__, /*! elementor/modules/floating-buttons/assets/js/floating-bars/frontend/handlers/floating-bars */ "../modules/floating-buttons/assets/js/floating-bars/frontend/handlers/floating-bars.js"));
108 - }
109 100 const addGlobalHandlers = () => elementorFrontend.hooks.addAction('frontend/element_ready/global', _global.default);
110 101 const addElementsHandlers = () => {
102 + this.elementsHandlers.section = [_stretchedSection.default,
103 + // Must run before background handlers to init the slideshow only after the stretch.
104 + ..._background.default, _handlesPosition.default, _shapes.default];
105 + this.elementsHandlers.container = [..._background.default];
106 +
107 + // Add editor-only handlers.
108 + if (elementorFrontend.isEditMode()) {
109 + this.elementsHandlers.container.push(..._container.default);
110 + }
111 + this.elementsHandlers.column = _column.default;
111 112 $.each(this.elementsHandlers, (elementName, Handlers) => {
112 113 const elementData = elementName.split('.');
113 114 elementName = elementData[0];
114 115 const skin = elementData[1] || null;
@@ -115,14 +116,15 @@
115 116 this.attachHandler(elementName, Handlers, skin);
116 117 });
117 118 };
118 119 const isClassHandler = Handler => Handler.prototype?.getUniqueHandlerID;
119 - const addHandlerWithHook = (elementBaseName, Handler, skin = 'default') => {
120 + const addHandlerWithHook = function (elementBaseName, Handler) {
121 + let skin = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 'default';
120 122 skin = skin ? '.' + skin : '';
121 123 const elementName = elementBaseName + skin;
122 124 elementorFrontend.hooks.addAction(`frontend/element_ready/${elementName}`, $element => {
123 125 if (isClassHandler(Handler)) {
124 - this.addHandler(Handler, {
126 + _this.addHandler(Handler, {
125 127 $element,
126 128 elementName
127 129 }, true);
128 130 } else {
@@ -130,18 +132,19 @@
130 132 if (!handlerValue) {
131 133 return;
132 134 }
133 135 if (handlerValue instanceof Promise) {
134 - handlerValue.then(({
135 - default: dynamicHandler
136 - }) => {
137 - this.addHandler(dynamicHandler, {
136 + handlerValue.then(_ref => {
137 + let {
138 + default: dynamicHandler
139 + } = _ref;
140 + _this.addHandler(dynamicHandler, {
138 141 $element,
139 142 elementName
140 143 }, true);
141 144 });
142 145 } else {
143 - this.addHandler(handlerValue, {
146 + _this.addHandler(handlerValue, {
144 147 $element,
145 148 elementName
146 149 }, true);
147 150 }
@@ -180,20 +183,16 @@
180 183 if (isClassHandler(elementHandler)) {
181 184 return elementHandler;
182 185 }
183 186 return new Promise(res => {
184 - elementHandler().then(({
185 - default: dynamicHandler
186 - }) => {
187 + elementHandler().then(_ref2 => {
188 + let {
189 + default: dynamicHandler
190 + } = _ref2;
187 191 res(dynamicHandler);
188 192 });
189 193 });
190 194 };
191 -
192 - /**
193 - * @param {string} handlerName
194 - * @deprecated since 3.1.0, use `elementorFrontend.elementsHandler.getHandler` instead.
195 - */
196 195 this.getHandlers = function (handlerName) {
197 196 elementorDevTools.deprecation.deprecated('getHandlers', '3.1.0', 'elementorFrontend.elementsHandler.getHandler');
198 197 if (handlerName) {
199 198 return this.getHandler(handlerName);
@@ -200,10 +199,9 @@
200 199 }
201 200 return this.elementsHandlers;
202 201 };
203 202 this.runReadyTrigger = function (scope) {
204 - const isDelayChildHandlers = !!scope.closest('[data-delay-child-handlers="true"]') && 0 !== scope.closest('[data-delay-child-handlers="true"]').length;
205 - if (elementorFrontend.config.is_static || isDelayChildHandlers) {
203 + if (elementorFrontend.config.is_static) {
206 204 return;
207 205 }
208 206
209 207 // Initializing the `$scope` as frontend jQuery instance
@@ -232,8 +230,9 @@
232 230 !*** ../assets/dev/js/frontend/frontend.js ***!
233 231 \*********************************************/
234 232 /***/ ((__unused_webpack_module, exports, __webpack_require__) => {
235 233
234 +"use strict";
236 235
237 236
238 237 var _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ "../node_modules/@babel/runtime/helpers/interopRequireDefault.js");
239 238 Object.defineProperty(exports, "__esModule", ({
@@ -239,11 +238,8 @@
239 238 Object.defineProperty(exports, "__esModule", ({
240 239 value: true
241 240 }));
242 241 exports["default"] = void 0;
243 -__webpack_require__(/*! core-js/modules/esnext.iterator.constructor.js */ "../node_modules/core-js/modules/esnext.iterator.constructor.js");
244 -__webpack_require__(/*! core-js/modules/esnext.iterator.find.js */ "../node_modules/core-js/modules/esnext.iterator.find.js");
245 -__webpack_require__(/*! core-js/modules/esnext.iterator.for-each.js */ "../node_modules/core-js/modules/esnext.iterator.for-each.js");
246 242 __webpack_require__(/*! ../public-path */ "../assets/dev/js/public-path.js");
247 243 var _documentsManager = _interopRequireDefault(__webpack_require__(/*! ./documents-manager */ "../assets/dev/js/frontend/documents-manager.js"));
248 244 var _storage = _interopRequireDefault(__webpack_require__(/*! elementor-common/utils/storage */ "../core/common/assets/js/utils/storage.js"));
249 245 var _environment = _interopRequireDefault(__webpack_require__(/*! elementor-common/utils/environment */ "../core/common/assets/js/utils/environment.js"));
@@ -256,36 +252,30 @@
256 252 var _assetsLoader = _interopRequireDefault(__webpack_require__(/*! ./utils/assets-loader */ "../assets/dev/js/frontend/utils/assets-loader.js"));
257 253 var _breakpoints = _interopRequireDefault(__webpack_require__(/*! elementor-utils/breakpoints */ "../assets/dev/js/utils/breakpoints.js"));
258 254 var _events = _interopRequireDefault(__webpack_require__(/*! elementor-utils/events */ "../assets/dev/js/utils/events.js"));
259 255 var _frontend = _interopRequireDefault(__webpack_require__(/*! elementor/modules/shapes/assets/js/frontend/frontend */ "../modules/shapes/assets/js/frontend/frontend.js"));
260 -var _controls = _interopRequireDefault(__webpack_require__(/*! ./utils/controls */ "../assets/dev/js/frontend/utils/controls.js"));
261 -var _anchorScrollMargin = _interopRequireDefault(__webpack_require__(/*! ./utils/anchor-scroll-margin */ "../assets/dev/js/frontend/utils/anchor-scroll-margin.js"));
262 256 var _utils = __webpack_require__(/*! elementor-frontend/utils/utils */ "../assets/dev/js/frontend/utils/utils.js");
263 257 /* global elementorFrontendConfig */
264 258
265 259 const EventManager = __webpack_require__(/*! elementor-utils/hooks */ "../assets/dev/js/utils/hooks.js"),
266 - ElementsHandler = __webpack_require__(/*! elementor-frontend/elements-handlers-manager */ "../assets/dev/js/frontend/elements-handlers-manager.js");
260 + ElementsHandler = __webpack_require__(/*! elementor-frontend/elements-handlers-manager */ "../assets/dev/js/frontend/elements-handlers-manager.js"),
261 + AnchorsModule = __webpack_require__(/*! elementor-frontend/utils/anchors */ "../assets/dev/js/frontend/utils/anchors.js");
267 262 class Frontend extends elementorModules.ViewModule {
268 - constructor(...args) {
269 - super(...args);
263 + constructor() {
264 + super(...arguments);
270 265 this.config = elementorFrontendConfig;
271 266 this.config.legacyMode = {
272 - /**
273 - * @deprecated since 3.1.0
274 - */
275 267 get elementWrappers() {
276 268 if (elementorFrontend.isEditMode()) {
277 - window.top.elementorDevTools.deprecation.deprecated('elementorFrontend.config.legacyMode.elementWrappers', '3.1.0');
269 + window.top.elementorDevTools.deprecation.deprecated('elementorFrontend.config.legacyMode.elementWrappers', '3.1.0', 'elementorFrontend.config.experimentalFeatures.e_dom_optimization');
278 270 }
279 - return false;
271 + return !elementorFrontend.config.experimentalFeatures.e_dom_optimization;
280 272 }
281 273 };
282 274 this.populateActiveBreakpointsConfig();
283 275 }
284 276
285 - /**
286 - * @deprecated since 2.5.0, use `elementorModules.frontend.handlers.Base` instead.
287 - */
277 + // TODO: BC since 2.5.0
288 278 get Module() {
289 279 if (this.isEditMode()) {
290 280 parent.elementorDevTools.deprecation.deprecated('elementorFrontend.Module', '2.5.0', 'elementorModules.frontend.handlers.Base');
291 281 }
@@ -319,9 +309,9 @@
319 309 }
320 310
321 311 /**
322 312 * @param {string} elementName
323 - * @deprecated since 2.4.0, use `this.elements` instead.
313 + * @deprecated 2.4.0 Use just `this.elements` instead
324 314 */
325 315 getElements(elementName) {
326 316 return this.getItems(this.elements, elementName);
327 317 }
@@ -327,22 +317,17 @@
327 317 }
328 318
329 319 /**
330 320 * @param {string} settingName
331 - * @deprecated since 2.4.0, this method was never in use.
321 + * @deprecated 2.4.0 This method was never in use
332 322 */
333 323 getPageSettings(settingName) {
334 324 const settingsObject = this.isEditMode() ? elementor.settings.page.model.attributes : this.config.settings.page;
335 325 return this.getItems(settingsObject, settingName);
336 326 }
337 -
338 - /**
339 - * @param {string} settingName
340 - * @deprecated since 3.0.0, use `getKitSettings()` instead and remove the `elementor_` prefix.
341 - */
342 327 getGeneralSettings(settingName) {
343 328 if (this.isEditMode()) {
344 - parent.elementorDevTools.deprecation.deprecated('getGeneralSettings()', '3.0.0', 'getKitSettings() and remove the `elementor_` prefix');
329 + parent.elementorDevTools.deprecation.deprecated('getGeneralSettings', '3.0.0', 'getKitSettings and remove the `elementor_` prefix');
345 330 }
346 331 return this.getKitSettings(`elementor_${settingName}`);
347 332 }
348 333 getKitSettings(settingName) {
@@ -411,8 +396,9 @@
411 396 this.utils = {
412 397 youtube: new _youtubeLoader.default(),
413 398 vimeo: new _vimeoLoader.default(),
414 399 baseVideoLoader: new _baseLoader.default(),
400 + anchors: new AnchorsModule(),
415 401 get lightbox() {
416 402 return _lightboxManager.default.getLightbox();
417 403 },
418 404 urlActions: new _urlActions.default(),
@@ -419,11 +405,9 @@
419 405 swiper: _swiper.default,
420 406 environment: _environment.default,
421 407 assetsLoader: new _assetsLoader.default(),
422 408 escapeHTML: _utils.escapeHTML,
423 - events: _events.default,
424 - controls: new _controls.default(),
425 - anchor_scroll_margin: new _anchorScrollMargin.default()
409 + events: _events.default
426 410 };
427 411
428 412 // TODO: BC since 2.4.0
429 413 this.modules = {
@@ -495,8 +479,26 @@
495 479 func.apply(context, args);
496 480 }
497 481 };
498 482 }
483 + waypoint($element, callback, options) {
484 + const defaultOptions = {
485 + offset: '100%',
486 + triggerOnce: true
487 + };
488 + options = jQuery.extend(defaultOptions, options);
489 + const correctCallback = function () {
490 + const element = this.element || this,
491 + result = callback.apply(element, arguments);
492 +
493 + // If is Waypoint new API and is frontend
494 + if (options.triggerOnce && this.destroy) {
495 + this.destroy();
496 + }
497 + return result;
498 + };
499 + return $element.elementorWaypoint(correctCallback, options);
500 + }
499 501 muteMigrationTraces() {
500 502 jQuery.migrateMute = true;
501 503 jQuery.migrateTrace = false;
502 504 }
@@ -513,15 +515,17 @@
513 515 elementorFrontend.trigger('elementor/modules/init:before');
514 516
515 517 // TODO: Use this instead.
516 518 elementorFrontend.trigger('elementor/modules/init/before');
517 - Object.entries(handlers).forEach(([moduleName, ModuleClass]) => {
519 + Object.entries(handlers).forEach(_ref => {
520 + let [moduleName, ModuleClass] = _ref;
518 521 this.modulesHandlers[moduleName] = new ModuleClass();
519 522 });
520 523 }
521 524 populateActiveBreakpointsConfig() {
522 525 this.config.responsive.activeBreakpoints = {};
523 - Object.entries(this.config.responsive.breakpoints).forEach(([breakpointKey, breakpointData]) => {
526 + Object.entries(this.config.responsive.breakpoints).forEach(_ref2 => {
527 + let [breakpointKey, breakpointData] = _ref2;
524 528 if (breakpointData.is_enabled) {
525 529 this.config.responsive.activeBreakpoints[breakpointKey] = breakpointData;
526 530 }
527 531 });
@@ -558,62 +562,501 @@
558 562 }
559 563
560 564 /***/ }),
561 565
562 -/***/ "../assets/dev/js/frontend/handlers/column.js":
563 -/*!****************************************************!*\
564 - !*** ../assets/dev/js/frontend/handlers/column.js ***!
565 - \****************************************************/
566 +/***/ "../assets/dev/js/frontend/handlers/background-slideshow.js":
567 +/*!******************************************************************!*\
568 + !*** ../assets/dev/js/frontend/handlers/background-slideshow.js ***!
569 + \******************************************************************/
570 +/***/ ((__unused_webpack_module, exports) => {
571 +
572 +"use strict";
573 +
574 +
575 +Object.defineProperty(exports, "__esModule", ({
576 + value: true
577 +}));
578 +exports["default"] = void 0;
579 +class BackgroundSlideshow extends elementorModules.frontend.handlers.SwiperBase {
580 + getDefaultSettings() {
581 + return {
582 + classes: {
583 + swiperContainer: 'elementor-background-slideshow swiper-container',
584 + swiperWrapper: 'swiper-wrapper',
585 + swiperSlide: 'elementor-background-slideshow__slide swiper-slide',
586 + swiperPreloader: 'swiper-lazy-preloader',
587 + slideBackground: 'elementor-background-slideshow__slide__image',
588 + kenBurns: 'elementor-ken-burns',
589 + kenBurnsActive: 'elementor-ken-burns--active',
590 + kenBurnsIn: 'elementor-ken-burns--in',
591 + kenBurnsOut: 'elementor-ken-burns--out'
592 + }
593 + };
594 + }
595 + getSwiperOptions() {
596 + const elementSettings = this.getElementSettings(),
597 + swiperOptions = {
598 + grabCursor: false,
599 + slidesPerView: 1,
600 + slidesPerGroup: 1,
601 + loop: 'yes' === elementSettings.background_slideshow_loop,
602 + speed: elementSettings.background_slideshow_transition_duration,
603 + autoplay: {
604 + delay: elementSettings.background_slideshow_slide_duration,
605 + stopOnLastSlide: !elementSettings.background_slideshow_loop
606 + },
607 + handleElementorBreakpoints: true,
608 + on: {
609 + slideChange: () => {
610 + if (elementSettings.background_slideshow_ken_burns) {
611 + this.handleKenBurns();
612 + }
613 + }
614 + }
615 + };
616 + if ('yes' === elementSettings.background_slideshow_loop) {
617 + swiperOptions.loopedSlides = this.getSlidesCount();
618 + }
619 + switch (elementSettings.background_slideshow_slide_transition) {
620 + case 'fade':
621 + swiperOptions.effect = 'fade';
622 + swiperOptions.fadeEffect = {
623 + crossFade: true
624 + };
625 + break;
626 + case 'slide_down':
627 + swiperOptions.autoplay.reverseDirection = true;
628 + swiperOptions.direction = 'vertical';
629 + break;
630 + case 'slide_up':
631 + swiperOptions.direction = 'vertical';
632 + break;
633 + }
634 + if ('yes' === elementSettings.background_slideshow_lazyload) {
635 + swiperOptions.lazy = {
636 + loadPrevNext: true,
637 + loadPrevNextAmount: 1
638 + };
639 + }
640 + return swiperOptions;
641 + }
642 + buildSwiperElements() {
643 + const classes = this.getSettings('classes'),
644 + elementSettings = this.getElementSettings(),
645 + direction = 'slide_left' === elementSettings.background_slideshow_slide_transition ? 'ltr' : 'rtl',
646 + $container = jQuery('<div>', {
647 + class: classes.swiperContainer,
648 + dir: direction
649 + }),
650 + $wrapper = jQuery('<div>', {
651 + class: classes.swiperWrapper
652 + }),
653 + kenBurnsActive = elementSettings.background_slideshow_ken_burns,
654 + lazyload = 'yes' === elementSettings.background_slideshow_lazyload;
655 + let slideInnerClass = classes.slideBackground;
656 + if (kenBurnsActive) {
657 + slideInnerClass += ' ' + classes.kenBurns;
658 + const kenBurnsDirection = 'in' === elementSettings.background_slideshow_ken_burns_zoom_direction ? 'kenBurnsIn' : 'kenBurnsOut';
659 + slideInnerClass += ' ' + classes[kenBurnsDirection];
660 + }
661 + if (lazyload) {
662 + slideInnerClass += ' swiper-lazy';
663 + }
664 + this.elements.$slides = jQuery();
665 + elementSettings.background_slideshow_gallery.forEach(slide => {
666 + const $slide = jQuery('<div>', {
667 + class: classes.swiperSlide
668 + });
669 + let $slidebg;
670 + if (lazyload) {
671 + const $slideloader = jQuery('<div>', {
672 + class: classes.swiperPreloader
673 + });
674 + $slidebg = jQuery('<div>', {
675 + class: slideInnerClass,
676 + 'data-background': slide.url
677 + });
678 + $slidebg.append($slideloader);
679 + } else {
680 + $slidebg = jQuery('<div>', {
681 + class: slideInnerClass,
682 + style: 'background-image: url("' + slide.url + '");'
683 + });
684 + }
685 + $slide.append($slidebg);
686 + $wrapper.append($slide);
687 + this.elements.$slides = this.elements.$slides.add($slide);
688 + });
689 + $container.append($wrapper);
690 + this.$element.prepend($container);
691 + this.elements.$backgroundSlideShowContainer = $container;
692 + }
693 + async initSlider() {
694 + if (1 >= this.getSlidesCount()) {
695 + return;
696 + }
697 + const elementSettings = this.getElementSettings();
698 + const Swiper = elementorFrontend.utils.swiper;
699 + this.swiper = await new Swiper(this.elements.$backgroundSlideShowContainer, this.getSwiperOptions());
700 +
701 + // Expose the swiper instance in the frontend
702 + this.elements.$backgroundSlideShowContainer.data('swiper', this.swiper);
703 + if (elementSettings.background_slideshow_ken_burns) {
704 + this.handleKenBurns();
705 + }
706 + }
707 + activate() {
708 + this.buildSwiperElements();
709 + this.initSlider();
710 + }
711 + deactivate() {
712 + if (this.swiper) {
713 + this.swiper.destroy();
714 + this.elements.$backgroundSlideShowContainer.remove();
715 + }
716 + }
717 + run() {
718 + if ('slideshow' === this.getElementSettings('background_background')) {
719 + this.activate();
720 + } else {
721 + this.deactivate();
722 + }
723 + }
724 + onInit() {
725 + super.onInit();
726 + if (this.getElementSettings('background_slideshow_gallery')) {
727 + this.run();
728 + }
729 + }
730 + onDestroy() {
731 + super.onDestroy();
732 + this.deactivate();
733 + }
734 + onElementChange(propertyName) {
735 + if ('background_background' === propertyName) {
736 + this.run();
737 + }
738 + }
739 +}
740 +exports["default"] = BackgroundSlideshow;
741 +
742 +/***/ }),
743 +
744 +/***/ "../assets/dev/js/frontend/handlers/background-video.js":
745 +/*!**************************************************************!*\
746 + !*** ../assets/dev/js/frontend/handlers/background-video.js ***!
747 + \**************************************************************/
748 +/***/ ((__unused_webpack_module, exports) => {
749 +
750 +"use strict";
751 +
752 +
753 +Object.defineProperty(exports, "__esModule", ({
754 + value: true
755 +}));
756 +exports["default"] = void 0;
757 +class BackgroundVideo extends elementorModules.frontend.handlers.Base {
758 + getDefaultSettings() {
759 + return {
760 + selectors: {
761 + backgroundVideoContainer: '.elementor-background-video-container',
762 + backgroundVideoEmbed: '.elementor-background-video-embed',
763 + backgroundVideoHosted: '.elementor-background-video-hosted'
764 + }
765 + };
766 + }
767 + getDefaultElements() {
768 + const selectors = this.getSettings('selectors'),
769 + elements = {
770 + $backgroundVideoContainer: this.$element.find(selectors.backgroundVideoContainer)
771 + };
772 + elements.$backgroundVideoEmbed = elements.$backgroundVideoContainer.children(selectors.backgroundVideoEmbed);
773 + elements.$backgroundVideoHosted = elements.$backgroundVideoContainer.children(selectors.backgroundVideoHosted);
774 + return elements;
775 + }
776 + calcVideosSize($video) {
777 + let aspectRatioSetting = '16:9';
778 + if ('vimeo' === this.videoType) {
779 + aspectRatioSetting = $video[0].width + ':' + $video[0].height;
780 + }
781 + const containerWidth = this.elements.$backgroundVideoContainer.outerWidth(),
782 + containerHeight = this.elements.$backgroundVideoContainer.outerHeight(),
783 + aspectRatioArray = aspectRatioSetting.split(':'),
784 + aspectRatio = aspectRatioArray[0] / aspectRatioArray[1],
785 + ratioWidth = containerWidth / aspectRatio,
786 + ratioHeight = containerHeight * aspectRatio,
787 + isWidthFixed = containerWidth / containerHeight > aspectRatio;
788 + return {
789 + width: isWidthFixed ? containerWidth : ratioHeight,
790 + height: isWidthFixed ? ratioWidth : containerHeight
791 + };
792 + }
793 + changeVideoSize() {
794 + if (!('hosted' === this.videoType) && !this.player) {
795 + return;
796 + }
797 + let $video;
798 + if ('youtube' === this.videoType) {
799 + $video = jQuery(this.player.getIframe());
800 + } else if ('vimeo' === this.videoType) {
801 + $video = jQuery(this.player.element);
802 + } else if ('hosted' === this.videoType) {
803 + $video = this.elements.$backgroundVideoHosted;
804 + }
805 + if (!$video) {
806 + return;
807 + }
808 + const size = this.calcVideosSize($video);
809 + $video.width(size.width).height(size.height);
810 + }
811 + startVideoLoop(firstTime) {
812 + // If the section has been removed
813 + if (!this.player.getIframe().contentWindow) {
814 + return;
815 + }
816 + const elementSettings = this.getElementSettings(),
817 + startPoint = elementSettings.background_video_start || 0,
818 + endPoint = elementSettings.background_video_end;
819 + if (elementSettings.background_play_once && !firstTime) {
820 + this.player.stopVideo();
821 + return;
822 + }
823 + this.player.seekTo(startPoint);
824 + if (endPoint) {
825 + const durationToEnd = endPoint - startPoint + 1;
826 + setTimeout(() => {
827 + this.startVideoLoop(false);
828 + }, durationToEnd * 1000);
829 + }
830 + }
831 + prepareVimeoVideo(Vimeo, videoLink) {
832 + const elementSettings = this.getElementSettings(),
833 + videoSize = this.elements.$backgroundVideoContainer.outerWidth(),
834 + vimeoOptions = {
835 + url: videoLink,
836 + width: videoSize.width,
837 + autoplay: true,
838 + loop: !elementSettings.background_play_once,
839 + transparent: false,
840 + background: true,
841 + muted: true
842 + };
843 + if (elementSettings.background_privacy_mode) {
844 + vimeoOptions.dnt = true;
845 + }
846 + this.player = new Vimeo.Player(this.elements.$backgroundVideoContainer, vimeoOptions);
847 +
848 + // Handle user-defined start/end times
849 + this.handleVimeoStartEndTimes(elementSettings);
850 + this.player.ready().then(() => {
851 + jQuery(this.player.element).addClass('elementor-background-video-embed');
852 + this.changeVideoSize();
853 + });
854 + }
855 + handleVimeoStartEndTimes(elementSettings) {
856 + // If a start time is defined, set the start time
857 + if (elementSettings.background_video_start) {
858 + this.player.on('play', data => {
859 + if (0 === data.seconds) {
860 + this.player.setCurrentTime(elementSettings.background_video_start);
861 + }
862 + });
863 + }
864 + this.player.on('timeupdate', data => {
865 + // If an end time is defined, handle ending the video
866 + if (elementSettings.background_video_end && elementSettings.background_video_end < data.seconds) {
867 + if (elementSettings.background_play_once) {
868 + // Stop at user-defined end time if not loop
869 + this.player.pause();
870 + } else {
871 + // Go to start time if loop
872 + this.player.setCurrentTime(elementSettings.background_video_start);
873 + }
874 + }
875 +
876 + // If start time is defined but an end time is not, go to user-defined start time at video end.
877 + // Vimeo JS API has an 'ended' event, but it never fires when infinite loop is defined, so we
878 + // get the video duration (returns a promise) then use duration-0.5s as end time
879 + this.player.getDuration().then(duration => {
880 + if (elementSettings.background_video_start && !elementSettings.background_video_end && data.seconds > duration - 0.5) {
881 + this.player.setCurrentTime(elementSettings.background_video_start);
882 + }
883 + });
884 + });
885 + }
886 + prepareYTVideo(YT, videoID) {
887 + const $backgroundVideoContainer = this.elements.$backgroundVideoContainer,
888 + elementSettings = this.getElementSettings();
889 + let startStateCode = YT.PlayerState.PLAYING;
890 +
891 + // Since version 67, Chrome doesn't fire the `PLAYING` state at start time
892 + if (window.chrome) {
893 + startStateCode = YT.PlayerState.UNSTARTED;
894 + }
895 + const playerOptions = {
896 + videoId: videoID,
897 + events: {
898 + onReady: () => {
899 + this.player.mute();
900 + this.changeVideoSize();
901 + this.startVideoLoop(true);
902 + this.player.playVideo();
903 + },
904 + onStateChange: event => {
905 + switch (event.data) {
906 + case startStateCode:
907 + $backgroundVideoContainer.removeClass('elementor-invisible elementor-loading');
908 + break;
909 + case YT.PlayerState.ENDED:
910 + this.player.seekTo(elementSettings.background_video_start || 0);
911 + if (elementSettings.background_play_once) {
912 + this.player.destroy();
913 + }
914 + }
915 + }
916 + },
917 + playerVars: {
918 + controls: 0,
919 + rel: 0,
920 + playsinline: 1
921 + }
922 + };
923 +
924 + // To handle CORS issues, when the default host is changed, the origin parameter has to be set.
925 + if (elementSettings.background_privacy_mode) {
926 + playerOptions.host = 'https://www.youtube-nocookie.com';
927 + playerOptions.origin = window.location.hostname;
928 + }
929 + $backgroundVideoContainer.addClass('elementor-loading elementor-invisible');
930 + this.player = new YT.Player(this.elements.$backgroundVideoEmbed[0], playerOptions);
931 + }
932 + activate() {
933 + let videoLink = this.getElementSettings('background_video_link'),
934 + videoID;
935 + const playOnce = this.getElementSettings('background_play_once');
936 + if (-1 !== videoLink.indexOf('vimeo.com')) {
937 + this.videoType = 'vimeo';
938 + this.apiProvider = elementorFrontend.utils.vimeo;
939 + } else if (videoLink.match(/^(?:https?:\/\/)?(?:www\.)?(?:m\.)?(?:youtu\.be\/|youtube\.com)/)) {
940 + this.videoType = 'youtube';
941 + this.apiProvider = elementorFrontend.utils.youtube;
942 + }
943 + if (this.apiProvider) {
944 + videoID = this.apiProvider.getVideoIDFromURL(videoLink);
945 + this.apiProvider.onApiReady(apiObject => {
946 + if ('youtube' === this.videoType) {
947 + this.prepareYTVideo(apiObject, videoID);
948 + }
949 + if ('vimeo' === this.videoType) {
950 + this.prepareVimeoVideo(apiObject, videoLink);
951 + }
952 + });
953 + } else {
954 + this.videoType = 'hosted';
955 + const startTime = this.getElementSettings('background_video_start'),
956 + endTime = this.getElementSettings('background_video_end');
957 + if (startTime || endTime) {
958 + videoLink += '#t=' + (startTime || 0) + (endTime ? ',' + endTime : '');
959 + }
960 + this.elements.$backgroundVideoHosted.attr('src', videoLink).one('canplay', this.changeVideoSize.bind(this));
961 + if (playOnce) {
962 + this.elements.$backgroundVideoHosted.on('ended', () => {
963 + this.elements.$backgroundVideoHosted.hide();
964 + });
965 + }
966 + }
967 + elementorFrontend.elements.$window.on('resize', this.changeVideoSize);
968 + }
969 + deactivate() {
970 + if ('youtube' === this.videoType && this.player.getIframe() || 'vimeo' === this.videoType) {
971 + this.player.destroy();
972 + } else {
973 + this.elements.$backgroundVideoHosted.removeAttr('src').off('ended');
974 + }
975 + elementorFrontend.elements.$window.off('resize', this.changeVideoSize);
976 + }
977 + run() {
978 + const elementSettings = this.getElementSettings();
979 + if (!elementSettings.background_play_on_mobile && 'mobile' === elementorFrontend.getCurrentDeviceMode()) {
980 + return;
981 + }
982 + if ('video' === elementSettings.background_background && elementSettings.background_video_link) {
983 + this.activate();
984 + } else {
985 + this.deactivate();
986 + }
987 + }
988 + onInit() {
989 + super.onInit(...arguments);
990 + this.changeVideoSize = this.changeVideoSize.bind(this);
991 + this.run();
992 + }
993 + onElementChange(propertyName) {
994 + if ('background_background' === propertyName) {
995 + this.run();
996 + }
997 + }
998 +}
999 +exports["default"] = BackgroundVideo;
1000 +
1001 +/***/ }),
1002 +
1003 +/***/ "../assets/dev/js/frontend/handlers/background.js":
1004 +/*!********************************************************!*\
1005 + !*** ../assets/dev/js/frontend/handlers/background.js ***!
1006 + \********************************************************/
566 1007 /***/ ((__unused_webpack_module, exports, __webpack_require__) => {
567 1008
1009 +"use strict";
568 1010
569 1011
1012 +var _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ "../node_modules/@babel/runtime/helpers/interopRequireDefault.js");
570 1013 Object.defineProperty(exports, "__esModule", ({
571 1014 value: true
572 1015 }));
573 1016 exports["default"] = void 0;
574 -var _default = exports["default"] = [() => __webpack_require__.e(/*! import() | shared-frontend-handlers */ "shared-frontend-handlers").then(__webpack_require__.bind(__webpack_require__, /*! ./background-slideshow */ "../assets/dev/js/frontend/handlers/background-slideshow.js"))];
1017 +var _backgroundSlideshow = _interopRequireDefault(__webpack_require__(/*! ./background-slideshow */ "../assets/dev/js/frontend/handlers/background-slideshow.js"));
1018 +var _backgroundVideo = _interopRequireDefault(__webpack_require__(/*! ./background-video */ "../assets/dev/js/frontend/handlers/background-video.js"));
1019 +var _default = [_backgroundSlideshow.default, _backgroundVideo.default];
1020 +exports["default"] = _default;
575 1021
576 1022 /***/ }),
577 1023
578 -/***/ "../assets/dev/js/frontend/handlers/container/container.js":
579 -/*!*****************************************************************!*\
580 - !*** ../assets/dev/js/frontend/handlers/container/container.js ***!
581 - \*****************************************************************/
1024 +/***/ "../assets/dev/js/frontend/handlers/column.js":
1025 +/*!****************************************************!*\
1026 + !*** ../assets/dev/js/frontend/handlers/column.js ***!
1027 + \****************************************************/
582 1028 /***/ ((__unused_webpack_module, exports, __webpack_require__) => {
583 1029
1030 +"use strict";
584 1031
585 1032
1033 +var _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ "../node_modules/@babel/runtime/helpers/interopRequireDefault.js");
586 1034 Object.defineProperty(exports, "__esModule", ({
587 1035 value: true
588 1036 }));
589 1037 exports["default"] = void 0;
590 -var _createEditorHandler = __webpack_require__(/*! ../create-editor-handler */ "../assets/dev/js/frontend/handlers/create-editor-handler.js");
591 -var _default = exports["default"] = [() => __webpack_require__.e(/*! import() | shared-frontend-handlers */ "shared-frontend-handlers").then(__webpack_require__.bind(__webpack_require__, /*! ../background-slideshow */ "../assets/dev/js/frontend/handlers/background-slideshow.js")), () => __webpack_require__.e(/*! import() | shared-frontend-handlers */ "shared-frontend-handlers").then(__webpack_require__.bind(__webpack_require__, /*! ../background-video */ "../assets/dev/js/frontend/handlers/background-video.js")), (0, _createEditorHandler.createEditorHandler)(() => __webpack_require__.e(/*! import() | shared-editor-handlers */ "shared-editor-handlers").then(__webpack_require__.bind(__webpack_require__, /*! ../handles-position */ "../assets/dev/js/frontend/handlers/handles-position.js"))), (0, _createEditorHandler.createEditorHandler)(() => __webpack_require__.e(/*! import() | container-editor-handlers */ "container-editor-handlers").then(__webpack_require__.bind(__webpack_require__, /*! ./shapes */ "../assets/dev/js/frontend/handlers/container/shapes.js"))), (0, _createEditorHandler.createEditorHandler)(() => __webpack_require__.e(/*! import() | container-editor-handlers */ "container-editor-handlers").then(__webpack_require__.bind(__webpack_require__, /*! ./grid-container */ "../assets/dev/js/frontend/handlers/container/grid-container.js")))];
1038 +var _backgroundSlideshow = _interopRequireDefault(__webpack_require__(/*! ./background-slideshow */ "../assets/dev/js/frontend/handlers/background-slideshow.js"));
1039 +var _default = [_backgroundSlideshow.default];
1040 +exports["default"] = _default;
592 1041
593 1042 /***/ }),
594 1043
595 -/***/ "../assets/dev/js/frontend/handlers/create-editor-handler.js":
596 -/*!*******************************************************************!*\
597 - !*** ../assets/dev/js/frontend/handlers/create-editor-handler.js ***!
598 - \*******************************************************************/
599 -/***/ ((__unused_webpack_module, exports) => {
1044 +/***/ "../assets/dev/js/frontend/handlers/container/container.js":
1045 +/*!*****************************************************************!*\
1046 + !*** ../assets/dev/js/frontend/handlers/container/container.js ***!
1047 + \*****************************************************************/
1048 +/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
600 1049
1050 +"use strict";
601 1051
602 1052
603 1053 Object.defineProperty(exports, "__esModule", ({
604 1054 value: true
605 1055 }));
606 -exports.createEditorHandler = createEditorHandler;
607 -function createEditorHandler(importer) {
608 - return () => {
609 - return new Promise(resolve => {
610 - if (elementorFrontend.isEditMode()) {
611 - importer().then(resolve);
612 - }
613 - });
614 - };
615 -}
1056 +exports["default"] = void 0;
1057 +var _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"))];
1058 +exports["default"] = _default;
616 1059
617 1060 /***/ }),
618 1061
619 1062 /***/ "../assets/dev/js/frontend/handlers/global.js":
@@ -621,8 +1064,9 @@
621 1064 !*** ../assets/dev/js/frontend/handlers/global.js ***!
622 1065 \****************************************************/
623 1066 /***/ ((__unused_webpack_module, exports) => {
624 1067
1068 +"use strict";
625 1069
626 1070
627 1071 Object.defineProperty(exports, "__esModule", ({
628 1072 value: true
@@ -652,10 +1096,10 @@
652 1096 }
653 1097 getAnimation() {
654 1098 return this.getCurrentDeviceSetting('animation') || this.getCurrentDeviceSetting('_animation');
655 1099 }
656 - onInit(...args) {
657 - super.onInit(...args);
1100 + onInit() {
1101 + super.onInit(...arguments);
658 1102 if (this.getAnimation()) {
659 1103 const observer = elementorModules.utils.Scroll.scrollObserver({
660 1104 callback: event => {
661 1105 if (event.isInViewport) {
@@ -681,14 +1125,15 @@
681 1125 exports["default"] = _default;
682 1126
683 1127 /***/ }),
684 1128
685 -/***/ "../assets/dev/js/frontend/handlers/section/section.js":
686 -/*!*************************************************************!*\
687 - !*** ../assets/dev/js/frontend/handlers/section/section.js ***!
688 - \*************************************************************/
689 -/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
1129 +/***/ "../assets/dev/js/frontend/handlers/section/handles-position.js":
1130 +/*!**********************************************************************!*\
1131 + !*** ../assets/dev/js/frontend/handlers/section/handles-position.js ***!
1132 + \**********************************************************************/
1133 +/***/ ((__unused_webpack_module, exports) => {
690 1134
1135 +"use strict";
691 1136
692 1137
693 1138 Object.defineProperty(exports, "__esModule", ({
694 1139 value: true
@@ -693,21 +1138,71 @@
693 1138 Object.defineProperty(exports, "__esModule", ({
694 1139 value: true
695 1140 }));
696 1141 exports["default"] = void 0;
697 -var _createEditorHandler = __webpack_require__(/*! ../create-editor-handler */ "../assets/dev/js/frontend/handlers/create-editor-handler.js");
698 -var _default = exports["default"] = [() => __webpack_require__.e(/*! import() | section-frontend-handlers */ "section-frontend-handlers").then(__webpack_require__.bind(__webpack_require__, /*! ./stretched-section */ "../assets/dev/js/frontend/handlers/section/stretched-section.js")),
699 -// Must run before BackgroundSlideshow to init the slideshow only after the stretch.
700 -() => __webpack_require__.e(/*! import() | shared-frontend-handlers */ "shared-frontend-handlers").then(__webpack_require__.bind(__webpack_require__, /*! ../background-slideshow */ "../assets/dev/js/frontend/handlers/background-slideshow.js")), () => __webpack_require__.e(/*! import() | shared-frontend-handlers */ "shared-frontend-handlers").then(__webpack_require__.bind(__webpack_require__, /*! ../background-video */ "../assets/dev/js/frontend/handlers/background-video.js")), (0, _createEditorHandler.createEditorHandler)(() => __webpack_require__.e(/*! import() | shared-editor-handlers */ "shared-editor-handlers").then(__webpack_require__.bind(__webpack_require__, /*! ../handles-position */ "../assets/dev/js/frontend/handlers/handles-position.js"))), (0, _createEditorHandler.createEditorHandler)(() => __webpack_require__.e(/*! import() | section-editor-handlers */ "section-editor-handlers").then(__webpack_require__.bind(__webpack_require__, /*! ./shapes */ "../assets/dev/js/frontend/handlers/section/shapes.js")))];
1142 +class HandlesPosition extends elementorModules.frontend.handlers.Base {
1143 + isActive() {
1144 + return elementorFrontend.isEditMode();
1145 + }
1146 + isFirstSection() {
1147 + return this.$element[0] === document.querySelector('.elementor-edit-mode .elementor-top-section');
1148 + }
1149 + isOverflowHidden() {
1150 + return 'hidden' === this.$element.css('overflow');
1151 + }
1152 + getOffset() {
1153 + if ('body' === elementor.config.document.container) {
1154 + return this.$element.offset().top;
1155 + }
1156 + const $container = jQuery(elementor.config.document.container);
1157 + return this.$element.offset().top - $container.offset().top;
1158 + }
1159 + setHandlesPosition() {
1160 + const document = elementor.documents.getCurrent();
1161 + if (!document || !document.container.isEditable()) {
1162 + return;
1163 + }
1164 + const insideHandleClass = 'elementor-section--handles-inside';
1165 + if (elementor.settings.page.model.attributes.scroll_snap) {
1166 + this.$element.addClass(insideHandleClass);
1167 + return;
1168 + }
1169 + const isOverflowHidden = this.isOverflowHidden();
1170 + if (!isOverflowHidden && !this.isFirstSection()) {
1171 + return;
1172 + }
1173 + const offset = isOverflowHidden ? 0 : this.getOffset();
1174 + if (offset < 25) {
1175 + this.$element.addClass(insideHandleClass);
1176 + const $handlesElement = this.$element.find('> .elementor-element-overlay > .elementor-editor-section-settings');
1177 + if (offset < -5) {
1178 + $handlesElement.css('top', -offset);
1179 + } else {
1180 + $handlesElement.css('top', '');
1181 + }
1182 + } else {
1183 + this.$element.removeClass(insideHandleClass);
1184 + }
1185 + }
1186 + onInit() {
1187 + if (!this.isActive()) {
1188 + return;
1189 + }
1190 + this.setHandlesPosition();
1191 + this.$element.on('mouseenter', this.setHandlesPosition.bind(this));
1192 + }
1193 +}
1194 +exports["default"] = HandlesPosition;
701 1195
702 1196 /***/ }),
703 1197
704 -/***/ "../assets/dev/js/frontend/utils/anchor-scroll-margin.js":
705 -/*!***************************************************************!*\
706 - !*** ../assets/dev/js/frontend/utils/anchor-scroll-margin.js ***!
707 - \***************************************************************/
708 -/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
1198 +/***/ "../assets/dev/js/frontend/handlers/section/shapes.js":
1199 +/*!************************************************************!*\
1200 + !*** ../assets/dev/js/frontend/handlers/section/shapes.js ***!
1201 + \************************************************************/
1202 +/***/ ((__unused_webpack_module, exports) => {
709 1203
1204 +"use strict";
710 1205
711 1206
712 1207 Object.defineProperty(exports, "__esModule", ({
713 1208 value: true
@@ -712,138 +1207,249 @@
712 1207 Object.defineProperty(exports, "__esModule", ({
713 1208 value: true
714 1209 }));
715 1210 exports["default"] = void 0;
716 -__webpack_require__(/*! core-js/modules/es.array.push.js */ "../node_modules/core-js/modules/es.array.push.js");
717 -__webpack_require__(/*! core-js/modules/esnext.iterator.constructor.js */ "../node_modules/core-js/modules/esnext.iterator.constructor.js");
718 -__webpack_require__(/*! core-js/modules/esnext.iterator.filter.js */ "../node_modules/core-js/modules/esnext.iterator.filter.js");
719 -__webpack_require__(/*! core-js/modules/esnext.iterator.for-each.js */ "../node_modules/core-js/modules/esnext.iterator.for-each.js");
720 -class _default extends elementorModules.ViewModule {
1211 +class Shapes extends elementorModules.frontend.handlers.Base {
721 1212 getDefaultSettings() {
722 1213 return {
723 1214 selectors: {
724 - links: '.elementor-element a[href*="#"]',
725 - stickyElements: '.elementor-element.elementor-sticky'
726 - }
1215 + container: '> .elementor-shape-%s'
1216 + },
1217 + svgURL: elementorFrontend.config.urls.assets + 'shapes/'
727 1218 };
728 1219 }
729 - onInit() {
730 - this.observeStickyElements(() => {
731 - this.initializeStickyAndAnchorTracking();
732 - });
1220 + getDefaultElements() {
1221 + const elements = {},
1222 + selectors = this.getSettings('selectors');
1223 + elements.$topContainer = this.$element.find(selectors.container.replace('%s', 'top'));
1224 + elements.$bottomContainer = this.$element.find(selectors.container.replace('%s', 'bottom'));
1225 + return elements;
733 1226 }
734 - observeStickyElements(callback) {
735 - const observer = new MutationObserver(mutationsList => {
736 - for (const mutation of mutationsList) {
737 - if ('childList' === mutation.type || 'attributes' === mutation.type && mutation.target.classList.contains('elementor-sticky')) {
738 - callback();
739 - }
1227 + isActive() {
1228 + return elementorFrontend.isEditMode();
1229 + }
1230 + getSvgURL(shapeType, fileName) {
1231 + let svgURL = this.getSettings('svgURL') + fileName + '.svg';
1232 + if (elementor.config.additional_shapes && shapeType in elementor.config.additional_shapes) {
1233 + svgURL = elementor.config.additional_shapes[shapeType];
1234 + if (-1 < fileName.indexOf('-negative')) {
1235 + svgURL = svgURL.replace('.svg', '-negative.svg');
740 1236 }
741 - });
742 - observer.observe(document.body, {
743 - childList: true,
744 - subtree: true,
745 - attributes: true,
746 - attributeFilter: ['class', 'style']
747 - });
1237 + }
1238 + return svgURL;
748 1239 }
749 - initializeStickyAndAnchorTracking() {
750 - const anchorLinks = this.getAllAnchorLinks();
751 - const stickyElements = this.getAllStickyElements();
752 - const trackedElements = [];
753 - if (!stickyElements.length > 0 && !anchorLinks.length > 0) {
1240 + buildSVG(side) {
1241 + const baseSettingKey = 'shape_divider_' + side,
1242 + shapeType = this.getElementSettings(baseSettingKey),
1243 + $svgContainer = this.elements['$' + side + 'Container'];
1244 + $svgContainer.attr('data-shape', shapeType);
1245 + if (!shapeType) {
1246 + $svgContainer.empty(); // Shape-divider set to 'none'
754 1247 return;
755 1248 }
756 - this.trackStickyElements(stickyElements, trackedElements);
757 - this.trackAnchorLinks(anchorLinks, trackedElements);
758 - this.organizeStickyAndAnchors(trackedElements);
1249 + let fileName = shapeType;
1250 + if (this.getElementSettings(baseSettingKey + '_negative')) {
1251 + fileName += '-negative';
1252 + }
1253 + const svgURL = this.getSvgURL(shapeType, fileName);
1254 + jQuery.get(svgURL, data => {
1255 + $svgContainer.empty().append(data.childNodes[0]);
1256 + });
1257 + this.setNegative(side);
759 1258 }
760 - trackAnchorLinks(anchorLinks, trackedElements) {
761 - anchorLinks.forEach(element => {
762 - const target = this.getAnchorTarget(element);
763 - const scrollPosition = this.getScrollPosition(target);
764 - trackedElements.push({
765 - element: target,
766 - type: 'anchor',
767 - scrollPosition
768 - });
769 - });
1259 + setNegative(side) {
1260 + this.elements['$' + side + 'Container'].attr('data-negative', !!this.getElementSettings('shape_divider_' + side + '_negative'));
770 1261 }
771 - trackStickyElements(stickyElements, trackedElements) {
772 - stickyElements.forEach(element => {
773 - const settings = this.getElementSettings(element);
774 - if (!settings || !settings.sticky_anchor_link_offset) {
775 - return;
1262 + onInit() {
1263 + if (!this.isActive(this.getSettings())) {
1264 + return;
1265 + }
1266 + super.onInit(...arguments);
1267 + ['top', 'bottom'].forEach(side => {
1268 + if (this.getElementSettings('shape_divider_' + side)) {
1269 + this.buildSVG(side);
776 1270 }
777 - const {
778 - sticky_anchor_link_offset: scrollMarginTop
779 - } = settings;
780 - if (0 === scrollMarginTop) {
781 - return;
782 - }
783 - const scrollPosition = this.getScrollPosition(element);
784 - trackedElements.push({
785 - scrollMarginTop,
786 - type: 'sticky',
787 - scrollPosition
788 - });
789 1271 });
790 1272 }
791 - organizeStickyAndAnchors(elements) {
792 - const stickyList = this.filterAndSortElementsByType(elements, 'sticky');
793 - const anchorList = this.filterAndSortElementsByType(elements, 'anchor');
794 - stickyList.forEach((sticky, index) => {
795 - this.defineCurrentStickyRange(sticky, index, stickyList, anchorList);
796 - });
1273 + onElementChange(propertyName) {
1274 + const shapeChange = propertyName.match(/^shape_divider_(top|bottom)$/);
1275 + if (shapeChange) {
1276 + this.buildSVG(shapeChange[1]);
1277 + return;
1278 + }
1279 + const negativeChange = propertyName.match(/^shape_divider_(top|bottom)_negative$/);
1280 + if (negativeChange) {
1281 + this.buildSVG(negativeChange[1]);
1282 + this.setNegative(negativeChange[1]);
1283 + }
797 1284 }
798 - defineCurrentStickyRange(sticky, index, stickyList, anchorList) {
799 - const nextStickyScrollPosition = index + 1 < stickyList.length ? stickyList[index + 1].scrollPosition : Infinity;
800 - sticky.anchor = anchorList.filter(anchor => {
801 - const withinRange = anchor.scrollPosition > sticky.scrollPosition && anchor.scrollPosition < nextStickyScrollPosition;
802 - if (withinRange) {
803 - anchor.element.style.scrollMarginTop = `${sticky.scrollMarginTop}px`;
804 - }
805 - return withinRange;
806 - });
1285 +}
1286 +exports["default"] = Shapes;
1287 +
1288 +/***/ }),
1289 +
1290 +/***/ "../assets/dev/js/frontend/handlers/section/stretched-section.js":
1291 +/*!***********************************************************************!*\
1292 + !*** ../assets/dev/js/frontend/handlers/section/stretched-section.js ***!
1293 + \***********************************************************************/
1294 +/***/ ((__unused_webpack_module, exports) => {
1295 +
1296 +"use strict";
1297 +
1298 +
1299 +Object.defineProperty(exports, "__esModule", ({
1300 + value: true
1301 +}));
1302 +exports["default"] = void 0;
1303 +class StretchedSection extends elementorModules.frontend.handlers.Base {
1304 + bindEvents() {
1305 + const handlerID = this.getUniqueHandlerID();
1306 + elementorFrontend.addListenerOnce(handlerID, 'resize', this.stretch);
1307 + elementorFrontend.addListenerOnce(handlerID, 'sticky:stick', this.stretch, this.$element);
1308 + elementorFrontend.addListenerOnce(handlerID, 'sticky:unstick', this.stretch, this.$element);
1309 + if (elementorFrontend.isEditMode()) {
1310 + this.onKitChangeStretchContainerChange = this.onKitChangeStretchContainerChange.bind(this);
1311 + elementor.channels.editor.on('kit:change:stretchContainer', this.onKitChangeStretchContainerChange);
1312 + }
807 1313 }
808 - getScrollPosition(element) {
809 - let offsetTop = 0;
810 - while (element) {
811 - offsetTop += element.offsetTop;
812 - element = element.offsetParent;
1314 + unbindEvents() {
1315 + elementorFrontend.removeListeners(this.getUniqueHandlerID(), 'resize', this.stretch);
1316 + if (elementorFrontend.isEditMode()) {
1317 + elementor.channels.editor.off('kit:change:stretchContainer', this.onKitChangeStretchContainerChange);
813 1318 }
814 - return offsetTop;
815 1319 }
816 - getAllStickyElements() {
817 - const allStickyElements = document.querySelectorAll(this.getSettings('selectors.stickyElements'));
818 - return Array.from(allStickyElements).filter((anchor, index, self) => index === self.findIndex(t => t.getAttribute('data-id') === anchor.getAttribute('data-id')));
1320 + isActive(settings) {
1321 + return elementorFrontend.isEditMode() || settings.$element.hasClass('elementor-section-stretched');
819 1322 }
820 - getAllAnchorLinks() {
821 - const allAnchors = document.querySelectorAll(this.getSettings('selectors.links'));
822 - return Array.from(allAnchors).filter((anchor, index, self) => index === self.findIndex(t => t.getAttribute('href') === anchor.getAttribute('href')));
1323 + initStretch() {
1324 + this.stretch = this.stretch.bind(this);
1325 + this.stretchElement = new elementorModules.frontend.tools.StretchElement({
1326 + element: this.$element,
1327 + selectors: {
1328 + container: this.getStretchContainer()
1329 + }
1330 + });
823 1331 }
824 - filterAndSortElementsByType(elements, type) {
825 - return elements.filter(item => type === item.type).sort((a, b) => a.scrollPosition - b.scrollPosition);
1332 + getStretchContainer() {
1333 + return elementorFrontend.getKitSettings('stretched_section_container') || window;
826 1334 }
827 - isValidSelector(hash) {
828 - const validSelectorPattern = /^#[A-Za-z_][\w-]*$/;
829 - return validSelectorPattern.test(hash);
1335 + stretch() {
1336 + if (!this.getElementSettings('stretch_section')) {
1337 + return;
1338 + }
1339 + this.stretchElement.stretch();
830 1340 }
831 - getAnchorTarget(element) {
832 - const hash = element?.hash;
833 - if (!this.isValidSelector(hash)) {
834 - return null;
1341 + onInit() {
1342 + if (!this.isActive(this.getSettings())) {
1343 + return;
835 1344 }
836 - return document.querySelector(hash);
1345 + this.initStretch();
1346 + super.onInit(...arguments);
1347 + this.stretch();
837 1348 }
838 - getElementSettings(element) {
839 - return JSON.parse(element.getAttribute('data-settings'));
1349 + onElementChange(propertyName) {
1350 + if ('stretch_section' === propertyName) {
1351 + if (this.getElementSettings('stretch_section')) {
1352 + this.stretch();
1353 + } else {
1354 + this.stretchElement.reset();
1355 + }
1356 + }
840 1357 }
1358 + onKitChangeStretchContainerChange() {
1359 + this.stretchElement.setSettings('selectors.container', this.getStretchContainer());
1360 + this.stretch();
1361 + }
841 1362 }
842 -exports["default"] = _default;
1363 +exports["default"] = StretchedSection;
843 1364
844 1365 /***/ }),
845 1366
1367 +/***/ "../assets/dev/js/frontend/utils/anchors.js":
1368 +/*!**************************************************!*\
1369 + !*** ../assets/dev/js/frontend/utils/anchors.js ***!
1370 + \**************************************************/
1371 +/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
1372 +
1373 +"use strict";
1374 +
1375 +
1376 +var _utils = __webpack_require__(/*! ./utils */ "../assets/dev/js/frontend/utils/utils.js");
1377 +module.exports = elementorModules.ViewModule.extend({
1378 + getDefaultSettings() {
1379 + return {
1380 + scrollDuration: 500,
1381 + selectors: {
1382 + links: 'a[href*="#"]',
1383 + targets: '.elementor-element, .elementor-menu-anchor',
1384 + scrollable: (0, _utils.isScrollSnapActive)() ? 'body' : 'html, body'
1385 + }
1386 + };
1387 + },
1388 + getDefaultElements() {
1389 + var $ = jQuery,
1390 + selectors = this.getSettings('selectors');
1391 + return {
1392 + $scrollable: $(selectors.scrollable)
1393 + };
1394 + },
1395 + bindEvents() {
1396 + elementorFrontend.elements.$document.on('click', this.getSettings('selectors.links'), this.handleAnchorLinks);
1397 + },
1398 + handleAnchorLinks(event) {
1399 + var clickedLink = event.currentTarget,
1400 + isSamePathname = location.pathname === clickedLink.pathname,
1401 + isSameHostname = location.hostname === clickedLink.hostname,
1402 + $anchor;
1403 + if (!isSameHostname || !isSamePathname || clickedLink.hash.length < 2) {
1404 + return;
1405 + }
1406 + try {
1407 + $anchor = jQuery(clickedLink.hash).filter(this.getSettings('selectors.targets'));
1408 + } catch (e) {
1409 + return;
1410 + }
1411 + if (!$anchor.length) {
1412 + return;
1413 + }
1414 + var scrollTop = $anchor.offset().top,
1415 + $wpAdminBar = elementorFrontend.elements.$wpAdminBar,
1416 + $activeStickies = jQuery('.elementor-section.elementor-sticky--active:visible'),
1417 + maxStickyHeight = 0;
1418 + if ($wpAdminBar.length > 0) {
1419 + scrollTop -= $wpAdminBar.height();
1420 + }
1421 +
1422 + // Offset height of tallest sticky
1423 + if ($activeStickies.length > 0) {
1424 + maxStickyHeight = Math.max.apply(null, $activeStickies.map(function () {
1425 + return jQuery(this).outerHeight();
1426 + }).get());
1427 + scrollTop -= maxStickyHeight;
1428 + }
1429 + event.preventDefault();
1430 + scrollTop = elementorFrontend.hooks.applyFilters('frontend/handlers/menu_anchor/scroll_top_distance', scrollTop);
1431 +
1432 + // On scroll animation start: remove scroll-snap.
1433 + if ((0, _utils.isScrollSnapActive)()) {
1434 + elementorFrontend.elements.$body.css('scroll-snap-type', 'none');
1435 + }
1436 + this.elements.$scrollable.animate({
1437 + scrollTop
1438 + }, this.getSettings('scrollDuration'), 'linear', () => {
1439 + // On scroll animation complete: add scroll-snap back.
1440 + if ((0, _utils.isScrollSnapActive)()) {
1441 + elementorFrontend.elements.$body.css('scroll-snap-type', '');
1442 + }
1443 + });
1444 + },
1445 + onInit() {
1446 + elementorModules.ViewModule.prototype.onInit.apply(this, arguments);
1447 + }
1448 +});
1449 +
1450 +/***/ }),
1451 +
846 1452 /***/ "../assets/dev/js/frontend/utils/assets-loader.js":
847 1453 /*!********************************************************!*\
848 1454 !*** ../assets/dev/js/frontend/utils/assets-loader.js ***!
849 1455 \********************************************************/
@@ -848,8 +1454,9 @@
848 1454 !*** ../assets/dev/js/frontend/utils/assets-loader.js ***!
849 1455 \********************************************************/
850 1456 /***/ ((__unused_webpack_module, exports) => {
851 1457
1458 +"use strict";
852 1459
853 1460
854 1461 Object.defineProperty(exports, "__esModule", ({
855 1462 value: true
@@ -869,158 +1476,37 @@
869 1476 }
870 1477 load(type, key) {
871 1478 const assetData = AssetsLoader.assets[type][key];
872 1479 if (!assetData.loader) {
873 - assetData.loader = this.isAssetLoaded(assetData, type) ? Promise.resolve(true) : this.loadAsset(assetData, type);
1480 + assetData.loader = new Promise(resolve => {
1481 + const element = 'style' === type ? this.getStyleElement(assetData.src) : this.getScriptElement(assetData.src);
1482 + element.onload = () => resolve(true);
1483 + const parent = 'head' === assetData.parent ? assetData.parent : 'body';
1484 + document[parent].appendChild(element);
1485 + });
874 1486 }
875 1487 return assetData.loader;
876 1488 }
877 - isAssetLoaded(assetData, assetType) {
878 - const filePath = 'script' === assetType ? `script[src="${assetData.src}"]` : `link[href="${assetData.src}"]`;
879 - return !!document.querySelectorAll(filePath)?.length;
880 - }
881 - loadAsset(assetData, assetType) {
882 - return new Promise(resolve => {
883 - const element = 'style' === assetType ? this.getStyleElement(assetData.src) : this.getScriptElement(assetData.src);
884 - element.onload = () => resolve(true);
885 - this.appendAsset(assetData, element);
886 - });
887 - }
888 - appendAsset(assetData, element) {
889 - const beforeElement = document.querySelector(assetData.before);
890 - if (!!beforeElement) {
891 - beforeElement.insertAdjacentElement('beforebegin', element);
892 - return;
893 - }
894 - const parent = 'head' === assetData.parent ? assetData.parent : 'body';
895 - document[parent].appendChild(element);
896 - }
897 1489 }
898 1490 exports["default"] = AssetsLoader;
899 -const assetsUrl = elementorFrontendConfig.urls.assets;
900 1491 const fileSuffix = elementorFrontendConfig.environmentMode.isScriptDebug ? '' : '.min';
901 -const pluginVersion = elementorFrontendConfig.version;
902 1492 AssetsLoader.assets = {
903 1493 script: {
904 1494 dialog: {
905 - src: `${assetsUrl}lib/dialog/dialog${fileSuffix}.js?ver=4.9.3`
1495 + src: `${elementorFrontendConfig.urls.assets}lib/dialog/dialog${fileSuffix}.js?ver=4.9.0`
906 1496 },
907 1497 'share-link': {
908 - src: `${assetsUrl}lib/share-link/share-link${fileSuffix}.js?ver=${pluginVersion}`
1498 + src: `${elementorFrontendConfig.urls.assets}lib/share-link/share-link${fileSuffix}.js?ver=${elementorFrontendConfig.version}`
909 1499 },
910 - // TODO: Remove 'swiper' in v3.29.0 [ED-16272].
911 1500 swiper: {
912 - src: `${assetsUrl}lib/swiper/v8/swiper${fileSuffix}.js?ver=8.4.5`
1501 + src: `${elementorFrontendConfig.urls.assets}lib/swiper/swiper${fileSuffix}.js?ver=5.3.6`
913 1502 }
914 1503 },
915 - style: {
916 - swiper: {
917 - src: `${assetsUrl}lib/swiper/v8/css/swiper${fileSuffix}.css?ver=8.4.5`,
918 - parent: 'head'
919 - },
920 - 'e-lightbox': {
921 - src: elementorFrontendConfig?.responsive?.hasCustomBreakpoints ? `${elementorFrontendConfig.urls.uploadUrl}/elementor/css/custom-lightbox.min.css?ver=${pluginVersion}` : `${assetsUrl}css/conditionals/lightbox${fileSuffix}.css?ver=${pluginVersion}`
922 - },
923 - dialog: {
924 - src: `${assetsUrl}css/conditionals/dialog${fileSuffix}.css?ver=${pluginVersion}`,
925 - parent: 'head',
926 - before: '#elementor-frontend-css'
927 - }
928 - }
1504 + style: {}
929 1505 };
930 1506
931 1507 /***/ }),
932 1508
933 -/***/ "../assets/dev/js/frontend/utils/controls.js":
934 -/*!***************************************************!*\
935 - !*** ../assets/dev/js/frontend/utils/controls.js ***!
936 - \***************************************************/
937 -/***/ ((__unused_webpack_module, exports) => {
938 -
939 -
940 -
941 -Object.defineProperty(exports, "__esModule", ({
942 - value: true
943 -}));
944 -exports["default"] = void 0;
945 -class Controls {
946 - /**
947 - * Get Control Value
948 - *
949 - * Retrieves a control value.
950 - * This function has been copied from `elementor/assets/dev/js/editor/utils/conditions.js`.
951 - *
952 - * @since 3.11.0
953 - *
954 - * @param {{}} controlSettings A settings object (e.g. element settings - keys and values)
955 - * @param {string} controlKey The control key name
956 - * @param {string} controlSubKey A specific property of the control object.
957 - * @return {*} Control Value
958 - */
959 - getControlValue(controlSettings, controlKey, controlSubKey) {
960 - let value;
961 - if ('object' === typeof controlSettings[controlKey] && controlSubKey) {
962 - value = controlSettings[controlKey][controlSubKey];
963 - } else {
964 - value = controlSettings[controlKey];
965 - }
966 - return value;
967 - }
968 -
969 - /**
970 - * Get the value of a responsive control.
971 - *
972 - * Retrieves the value of a responsive control for the current device or for this first parent device which has a control value.
973 - *
974 - * @since 3.11.0
975 - *
976 - * @param {{}} controlSettings A settings object (e.g. element settings - keys and values)
977 - * @param {string} controlKey The control key name
978 - * @param {string} controlSubKey A specific property of the control object.
979 - * @param {string} device If we want to get a value for a specific device mode.
980 - * @return {*} Control Value
981 - */
982 - getResponsiveControlValue(controlSettings, controlKey, controlSubKey = '', device = null) {
983 - const currentDeviceMode = device || elementorFrontend.getCurrentDeviceMode(),
984 - controlValueDesktop = this.getControlValue(controlSettings, controlKey, controlSubKey);
985 -
986 - // Set the control value for the current device mode.
987 - // First check the widescreen device mode.
988 - if ('widescreen' === currentDeviceMode) {
989 - const controlValueWidescreen = this.getControlValue(controlSettings, `${controlKey}_widescreen`, controlSubKey);
990 - return !!controlValueWidescreen || 0 === controlValueWidescreen ? controlValueWidescreen : controlValueDesktop;
991 - }
992 -
993 - // Loop through all responsive and desktop device modes.
994 - const activeBreakpoints = elementorFrontend.breakpoints.getActiveBreakpointsList({
995 - withDesktop: true
996 - });
997 - let parentDeviceMode = currentDeviceMode,
998 - deviceIndex = activeBreakpoints.indexOf(currentDeviceMode),
999 - controlValue = '';
1000 - while (deviceIndex <= activeBreakpoints.length) {
1001 - if ('desktop' === parentDeviceMode) {
1002 - controlValue = controlValueDesktop;
1003 - break;
1004 - }
1005 - const responsiveControlKey = `${controlKey}_${parentDeviceMode}`,
1006 - responsiveControlValue = this.getControlValue(controlSettings, responsiveControlKey, controlSubKey);
1007 - if (!!responsiveControlValue || 0 === responsiveControlValue) {
1008 - controlValue = responsiveControlValue;
1009 - break;
1010 - }
1011 -
1012 - // If no control value has been set for the current device mode, then check the parent device mode.
1013 - deviceIndex++;
1014 - parentDeviceMode = activeBreakpoints[deviceIndex];
1015 - }
1016 - return controlValue;
1017 - }
1018 -}
1019 -exports["default"] = Controls;
1020 -
1021 -/***/ }),
1022 -
1023 1509 /***/ "../assets/dev/js/frontend/utils/lightbox/lightbox-manager.js":
1024 1510 /*!********************************************************************!*\
1025 1511 !*** ../assets/dev/js/frontend/utils/lightbox/lightbox-manager.js ***!
1026 1512 \********************************************************************/
@@ -1025,8 +1511,9 @@
1025 1511 !*** ../assets/dev/js/frontend/utils/lightbox/lightbox-manager.js ***!
1026 1512 \********************************************************************/
1027 1513 /***/ ((__unused_webpack_module, exports, __webpack_require__) => {
1028 1514
1515 +"use strict";
1029 1516
1030 1517
1031 1518 Object.defineProperty(exports, "__esModule", ({
1032 1519 value: true
@@ -1031,41 +1518,37 @@
1031 1518 Object.defineProperty(exports, "__esModule", ({
1032 1519 value: true
1033 1520 }));
1034 1521 exports["default"] = void 0;
1035 -__webpack_require__(/*! core-js/modules/esnext.iterator.constructor.js */ "../node_modules/core-js/modules/esnext.iterator.constructor.js");
1036 -__webpack_require__(/*! core-js/modules/esnext.iterator.find.js */ "../node_modules/core-js/modules/esnext.iterator.find.js");
1037 1522 class LightboxManager extends elementorModules.ViewModule {
1038 1523 static getLightbox() {
1039 1524 const lightboxPromise = new Promise(resolveLightbox => {
1040 - Promise.all(/*! import() | lightbox */[__webpack_require__.e("vendors-node_modules_dompurify_dist_purify_cjs_js"), __webpack_require__.e("lightbox")]).then(__webpack_require__.t.bind(__webpack_require__, /*! elementor-frontend/utils/lightbox/lightbox */ "../assets/dev/js/frontend/utils/lightbox/lightbox.js", 23)).then(({
1041 - default: LightboxModule
1042 - }) => resolveLightbox(new LightboxModule()));
1525 + __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 => {
1526 + let {
1527 + default: LightboxModule
1528 + } = _ref;
1529 + return resolveLightbox(new LightboxModule());
1530 + });
1043 1531 }),
1044 - dialogScriptPromise = elementorFrontend.utils.assetsLoader.load('script', 'dialog'),
1045 - dialogStylePromise = elementorFrontend.utils.assetsLoader.load('style', 'dialog'),
1046 - shareLinkPromise = elementorFrontend.utils.assetsLoader.load('script', 'share-link'),
1047 - swiperStylePromise = elementorFrontend.utils.assetsLoader.load('style', 'swiper'),
1048 - lightboxStylePromise = elementorFrontend.utils.assetsLoader.load('style', 'e-lightbox');
1049 - return Promise.all([lightboxPromise, dialogScriptPromise, dialogStylePromise, shareLinkPromise, swiperStylePromise, lightboxStylePromise]).then(() => lightboxPromise);
1532 + dialogPromise = elementorFrontend.utils.assetsLoader.load('script', 'dialog'),
1533 + shareLinkPromise = elementorFrontend.utils.assetsLoader.load('script', 'share-link');
1534 + return Promise.all([lightboxPromise, dialogPromise, shareLinkPromise]).then(() => lightboxPromise);
1050 1535 }
1051 1536 getDefaultSettings() {
1052 1537 return {
1053 1538 selectors: {
1054 - links: 'a, [data-elementor-lightbox]',
1055 - slideshow: '[data-elementor-lightbox-slideshow]'
1539 + links: 'a, [data-elementor-lightbox]'
1056 1540 }
1057 1541 };
1058 1542 }
1059 1543 getDefaultElements() {
1060 1544 return {
1061 - $links: jQuery(this.getSettings('selectors.links')),
1062 - $slideshow: jQuery(this.getSettings('selectors.slideshow'))
1545 + $links: jQuery(this.getSettings('selectors.links'))
1063 1546 };
1064 1547 }
1065 1548 isLightboxLink(element) {
1066 1549 // Check for lowercase `a` to make sure it works also for links inside SVGs.
1067 - if ('a' === element.tagName.toLowerCase() && (element.hasAttribute('download') || !/^[^?]+\.(png|jpe?g|gif|svg|webp|avif)(\?.*)?$/i.test(element.href)) && !element.dataset.elementorLightboxVideo) {
1550 + if ('a' === element.tagName.toLowerCase() && (element.hasAttribute('download') || !/^[^?]+\.(png|jpe?g|gif|svg|webp)(\?.*)?$/i.test(element.href)) && !element.dataset.elementorLightboxVideo) {
1068 1551 return false;
1069 1552 }
1070 1553 const generalOpenInLightbox = elementorFrontend.getKitSettings('global_image_lightbox'),
1071 1554 currentLinkOpenInLightbox = element.dataset.elementorOpenLightbox;
@@ -1070,11 +1553,8 @@
1070 1553 const generalOpenInLightbox = elementorFrontend.getKitSettings('global_image_lightbox'),
1071 1554 currentLinkOpenInLightbox = element.dataset.elementorOpenLightbox;
1072 1555 return 'yes' === currentLinkOpenInLightbox || generalOpenInLightbox && 'no' !== currentLinkOpenInLightbox;
1073 1556 }
1074 - isLightboxSlideshow() {
1075 - return 0 !== this.elements.$slideshow.length;
1076 - }
1077 1557 async onLinkClick(event) {
1078 1558 const element = event.currentTarget,
1079 1559 $target = jQuery(event.target),
1080 1560 editMode = elementorFrontend.isEditMode(),
@@ -1094,22 +1574,23 @@
1094 1574 // Disable lightbox on color picking mode.
1095 1575 if (isColorPickingMode) {
1096 1576 return;
1097 1577 }
1098 - const lightbox = await LightboxManager.getLightbox();
1578 + const lightbox = this.isOptimizedAssetsLoading() ? await LightboxManager.getLightbox() : elementorFrontend.utils.lightbox;
1099 1579 lightbox.createLightbox(element);
1100 1580 }
1581 + isOptimizedAssetsLoading() {
1582 + return elementorFrontend.config.experimentalFeatures.e_optimized_assets_loading;
1583 + }
1101 1584 bindEvents() {
1102 1585 elementorFrontend.elements.$document.on('click', this.getSettings('selectors.links'), event => this.onLinkClick(event));
1103 1586 }
1104 - onInit(...args) {
1105 - super.onInit(...args);
1106 - if (elementorFrontend.isEditMode()) {
1587 + onInit() {
1588 + super.onInit(...arguments);
1589 + if (!this.isOptimizedAssetsLoading() || elementorFrontend.isEditMode()) {
1107 1590 return;
1108 1591 }
1109 - this.maybeActivateLightboxOnLink();
1110 - }
1111 - maybeActivateLightboxOnLink() {
1592 +
1112 1593 // Detecting lightbox links on init will reduce the time of waiting to the lightbox to be display on slow connections.
1113 1594 this.elements.$links.each((index, element) => {
1114 1595 if (this.isLightboxLink(element)) {
1115 1596 LightboxManager.getLightbox();
@@ -1127,10 +1608,11 @@
1127 1608 /***/ "../assets/dev/js/frontend/utils/swiper.js":
1128 1609 /*!*************************************************!*\
1129 1610 !*** ../assets/dev/js/frontend/utils/swiper.js ***!
1130 1611 \*************************************************/
1131 -/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
1612 +/***/ ((__unused_webpack_module, exports) => {
1132 1613
1614 +"use strict";
1133 1615
1134 1616
1135 1617 Object.defineProperty(exports, "__esModule", ({
1136 1618 value: true
@@ -1135,11 +1617,9 @@
1135 1617 Object.defineProperty(exports, "__esModule", ({
1136 1618 value: true
1137 1619 }));
1138 1620 exports["default"] = void 0;
1139 -__webpack_require__(/*! core-js/modules/esnext.iterator.constructor.js */ "../node_modules/core-js/modules/esnext.iterator.constructor.js");
1140 -__webpack_require__(/*! core-js/modules/esnext.iterator.for-each.js */ "../node_modules/core-js/modules/esnext.iterator.for-each.js");
1141 -class SwiperHandler {
1621 +class Swiper {
1142 1622 constructor(container, config) {
1143 1623 this.config = config;
1144 1624 if (this.config.breakpoints) {
1145 1625 // The config is passed as a param to allow adjustConfig to be called outside of this wrapper
@@ -1144,31 +1624,22 @@
1144 1624 if (this.config.breakpoints) {
1145 1625 // The config is passed as a param to allow adjustConfig to be called outside of this wrapper
1146 1626 this.config = this.adjustConfig(config);
1147 1627 }
1148 - if (container instanceof jQuery) {
1149 - container = container[0];
1150 - }
1151 1628
1152 1629 // The Swiper will overlap the column width when applying custom margin values on the column.
1153 - container.closest('.elementor-widget-wrap')?.classList.add('e-swiper-container');
1154 - container.closest('.elementor-widget')?.classList.add('e-widget-swiper');
1630 + jQuery(container).closest('.elementor-widget-wrap').addClass('e-swiper-container');
1631 + jQuery(container).closest('.elementor-widget').addClass('e-widget-swiper');
1155 1632 return new Promise(resolve => {
1156 - // TODO: Remove in v3.29.0 [ED-16272].
1157 - if ('undefined' === typeof Swiper) {
1158 - elementorFrontend.utils.assetsLoader.load('script', 'swiper').then(() => resolve(this.createSwiperInstance(container, this.config)));
1159 - return;
1633 + if (!elementorFrontend.config.experimentalFeatures.e_optimized_assets_loading) {
1634 + return resolve(this.createSwiperInstance(container, this.config));
1160 1635 }
1161 - if ('function' === typeof Swiper && 'undefined' === typeof window.Swiper) {
1162 - window.Swiper = Swiper;
1163 - }
1164 - resolve(this.createSwiperInstance(container, this.config));
1636 + elementorFrontend.utils.assetsLoader.load('script', 'swiper').then(() => resolve(this.createSwiperInstance(container, this.config)));
1165 1637 });
1166 1638 }
1167 1639 createSwiperInstance(container, config) {
1168 1640 const SwiperSource = window.Swiper;
1169 1641 SwiperSource.prototype.adjustConfig = this.adjustConfig;
1170 - config = this.applyMotionPreferences(config);
1171 1642 return new SwiperSource(container, config);
1172 1643 }
1173 1644
1174 1645 // Backwards compatibility for Elementor Pro <2.9.0 (old Swiper version - <5.0.0)
@@ -1213,20 +1684,10 @@
1213 1684 };
1214 1685 });
1215 1686 return config;
1216 1687 }
1217 - applyMotionPreferences(config) {
1218 - const prefersReducedMotion = window.matchMedia('(prefers-reduced-motion: reduce)').matches;
1219 - if (!prefersReducedMotion) {
1220 - return config;
1221 - }
1222 - return Object.assign({}, config, {
1223 - speed: 0,
1224 - autoplay: false
1225 - });
1226 - }
1227 1688 }
1228 -exports["default"] = SwiperHandler;
1689 +exports["default"] = Swiper;
1229 1690
1230 1691 /***/ }),
1231 1692
1232 1693 /***/ "../assets/dev/js/frontend/utils/url-actions.js":
@@ -1234,8 +1695,9 @@
1234 1695 !*** ../assets/dev/js/frontend/utils/url-actions.js ***!
1235 1696 \******************************************************/
1236 1697 /***/ ((__unused_webpack_module, exports, __webpack_require__) => {
1237 1698
1699 +"use strict";
1238 1700
1239 1701
1240 1702 Object.defineProperty(exports, "__esModule", ({
1241 1703 value: true
@@ -1272,10 +1734,9 @@
1272 1734 }
1273 1735 addAction(name, callback) {
1274 1736 this.actions[name] = callback;
1275 1737 }
1276 - runAction(url, ...restArgs) {
1277 - url = decodeURI(url);
1738 + runAction(url) {
1278 1739 url = decodeURIComponent(url);
1279 1740 const actionMatch = url.match(/action=(.+?)&/);
1280 1741 if (!actionMatch) {
1281 1742 return;
@@ -1288,9 +1749,11 @@
1288 1749 const settingsMatch = url.match(/settings=(.+)/);
1289 1750 if (settingsMatch) {
1290 1751 settings = JSON.parse(atob(settingsMatch[1]));
1291 1752 }
1292 - settings.previousEvent = event;
1753 + for (var _len = arguments.length, restArgs = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {
1754 + restArgs[_key - 1] = arguments[_key];
1755 + }
1293 1756 action(settings, ...restArgs);
1294 1757 }
1295 1758 runLinkAction(event) {
1296 1759 event.preventDefault();
@@ -1301,11 +1764,11 @@
1301 1764 return;
1302 1765 }
1303 1766
1304 1767 // Only if an element with this action hash exists on the page do we allow running the action.
1305 - const elementWithHash = document.querySelector(`[data-e-action-hash="${location.hash}"], a[href*="${location.hash}"]`);
1768 + const elementWithHash = document.querySelector(`[e-action-hash="${location.hash}"], a[href*="${location.hash}"]`);
1306 1769 if (elementWithHash) {
1307 - this.runAction(elementWithHash.getAttribute('data-e-action-hash'));
1770 + this.runAction(elementWithHash.getAttribute('e-action-hash'));
1308 1771 }
1309 1772 }
1310 1773 createActionHash(action, settings) {
1311 1774 // We need to encode the hash tag (#) here, in order to support share links for a variety of providers
@@ -1326,8 +1789,9 @@
1326 1789 !*** ../assets/dev/js/frontend/utils/utils.js ***!
1327 1790 \************************************************/
1328 1791 /***/ ((__unused_webpack_module, exports) => {
1329 1792
1793 +"use strict";
1330 1794
1331 1795
1332 1796 Object.defineProperty(exports, "__esModule", ({
1333 1797 value: true
@@ -1360,8 +1824,9 @@
1360 1824 !*** ../assets/dev/js/frontend/utils/video-api/base-loader.js ***!
1361 1825 \****************************************************************/
1362 1826 /***/ ((__unused_webpack_module, exports) => {
1363 1827
1828 +"use strict";
1364 1829
1365 1830
1366 1831 Object.defineProperty(exports, "__esModule", ({
1367 1832 value: true
@@ -1417,8 +1882,9 @@
1417 1882 !*** ../assets/dev/js/frontend/utils/video-api/vimeo-loader.js ***!
1418 1883 \*****************************************************************/
1419 1884 /***/ ((__unused_webpack_module, exports, __webpack_require__) => {
1420 1885
1886 +"use strict";
1421 1887
1422 1888
1423 1889 var _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ "../node_modules/@babel/runtime/helpers/interopRequireDefault.js");
1424 1890 Object.defineProperty(exports, "__esModule", ({
@@ -1439,8 +1905,10 @@
1439 1905 getApiObject() {
1440 1906 return Vimeo;
1441 1907 }
1442 1908 getAutoplayURL(videoURL) {
1909 + videoURL = super.getAutoplayURL(videoURL);
1910 +
1443 1911 // Vimeo requires the '#t=' param to be last in the URL.
1444 1912 const timeMatch = videoURL.match(/#t=[^&]*/);
1445 1913 return videoURL.replace(timeMatch[0], '') + timeMatch;
1446 1914 }
@@ -1454,8 +1922,9 @@
1454 1922 !*** ../assets/dev/js/frontend/utils/video-api/youtube-loader.js ***!
1455 1923 \*******************************************************************/
1456 1924 /***/ ((__unused_webpack_module, exports, __webpack_require__) => {
1457 1925
1926 +"use strict";
1458 1927
1459 1928
1460 1929 var _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ "../node_modules/@babel/runtime/helpers/interopRequireDefault.js");
1461 1930 Object.defineProperty(exports, "__esModule", ({
@@ -1467,9 +1936,9 @@
1467 1936 getApiURL() {
1468 1937 return 'https://www.youtube.com/iframe_api';
1469 1938 }
1470 1939 getURLRegex() {
1471 - return /^(?:https?:\/\/)?(?:www\.)?(?:m\.)?(?:youtu\.be\/|youtube\.com\/(?:(?:watch)?\?(?:.*&)?vi?=|(?:embed|v|vi|user|shorts)\/))([^?&"'>]+)/;
1940 + return /^(?:https?:\/\/)?(?:www\.)?(?:m\.)?(?:youtu\.be\/|youtube\.com\/(?:(?:watch)?\?(?:.*&)?vi?=|(?:embed|v|vi|user)\/))([^?&"'>]+)/;
1472 1941 }
1473 1942 isApiLoaded() {
1474 1943 return window.YT && YT.loaded;
1475 1944 }
@@ -1486,8 +1955,9 @@
1486 1955 !*** ../assets/dev/js/public-path.js ***!
1487 1956 \***************************************/
1488 1957 /***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {
1489 1958
1959 +"use strict";
1490 1960
1491 1961
1492 1962 /* eslint-disable camelcase */
1493 1963 __webpack_require__.p = elementorFrontendConfig.urls.assets + 'js/';
@@ -1497,10 +1967,11 @@
1497 1967 /***/ "../assets/dev/js/utils/breakpoints.js":
1498 1968 /*!*********************************************!*\
1499 1969 !*** ../assets/dev/js/utils/breakpoints.js ***!
1500 1970 \*********************************************/
1501 -/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
1971 +/***/ ((__unused_webpack_module, exports) => {
1502 1972
1973 +"use strict";
1503 1974
1504 1975
1505 1976 Object.defineProperty(exports, "__esModule", ({
1506 1977 value: true
@@ -1505,12 +1976,8 @@
1505 1976 Object.defineProperty(exports, "__esModule", ({
1506 1977 value: true
1507 1978 }));
1508 1979 exports["default"] = void 0;
1509 -__webpack_require__(/*! core-js/modules/es.array.push.js */ "../node_modules/core-js/modules/es.array.push.js");
1510 -__webpack_require__(/*! core-js/modules/esnext.iterator.constructor.js */ "../node_modules/core-js/modules/esnext.iterator.constructor.js");
1511 -__webpack_require__(/*! core-js/modules/esnext.iterator.for-each.js */ "../node_modules/core-js/modules/esnext.iterator.for-each.js");
1512 -__webpack_require__(/*! core-js/modules/esnext.iterator.map.js */ "../node_modules/core-js/modules/esnext.iterator.map.js");
1513 1980 /**
1514 1981 * Breakpoints
1515 1982 *
1516 1983 * This utility class contains helper functions relating to Elementor's breakpoints system.
@@ -1534,9 +2001,10 @@
1534 2001 * @since 3.4.0
1535 2002 *
1536 2003 * @param {Object} args
1537 2004 */
1538 - getActiveBreakpointsList(args = {}) {
2005 + getActiveBreakpointsList() {
2006 + let args = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
1539 2007 const defaultArgs = {
1540 2008 largeToSmall: false,
1541 2009 withDesktop: false
1542 2010 };
@@ -1683,8 +2151,9 @@
1683 2151 !*** ../assets/dev/js/utils/events.js ***!
1684 2152 \****************************************/
1685 2153 /***/ ((__unused_webpack_module, exports) => {
1686 2154
2155 +"use strict";
1687 2156
1688 2157
1689 2158 Object.defineProperty(exports, "__esModule", ({
1690 2159 value: true
@@ -1703,9 +2172,11 @@
1703 2172 * @param {string|null} bcEvent - BC event to dispatch, default to `null`.
1704 2173 *
1705 2174 * @return {void}
1706 2175 */
1707 - static dispatch(context, event, data = null, bcEvent = null) {
2176 + static dispatch(context, event) {
2177 + let data = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : null;
2178 + let bcEvent = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : null;
1708 2179 // Make sure to use the native context if it's a jQuery instance.
1709 2180 context = context instanceof jQuery ? context[0] : context;
1710 2181
1711 2182 // Dispatch the BC event only if exists.
@@ -1722,9 +2193,10 @@
1722 2193 }));
1723 2194 }
1724 2195 }
1725 2196 exports.Events = Events;
1726 -var _default = exports["default"] = Events;
2197 +var _default = Events;
2198 +exports["default"] = _default;
1727 2199
1728 2200 /***/ }),
1729 2201
1730 2202 /***/ "../assets/dev/js/utils/hooks.js":
@@ -1730,10 +2202,11 @@
1730 2202 /***/ "../assets/dev/js/utils/hooks.js":
1731 2203 /*!***************************************!*\
1732 2204 !*** ../assets/dev/js/utils/hooks.js ***!
1733 2205 \***************************************/
1734 -/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
2206 +/***/ ((module) => {
1735 2207
2208 +"use strict";
1736 2209
1737 2210
1738 2211 /**
1739 2212 * Handles managing all events for whatever you plug it into. Priorities for hooks are based on lowest to highest in
@@ -1738,9 +2211,8 @@
1738 2211 /**
1739 2212 * Handles managing all events for whatever you plug it into. Priorities for hooks are based on lowest to highest in
1740 2213 * that, lowest priority hooks are fired first.
1741 2214 */
1742 -__webpack_require__(/*! core-js/modules/es.array.push.js */ "../node_modules/core-js/modules/es.array.push.js");
1743 2215 var EventManager = function () {
1744 2216 var slice = Array.prototype.slice,
1745 2217 MethodsAvailable;
1746 2218
@@ -1897,10 +2369,10 @@
1897 2369 /**
1898 2370 * Performs an action if it exists. You can pass as many arguments as you want to this function; the only rule is
1899 2371 * that the first argument must always be the action.
1900 2372 */
1901 - function doAction(/* Action, arg1, arg2, ... */
1902 - ) {
2373 + function /* Action, arg1, arg2, ... */
2374 + doAction() {
1903 2375 var args = slice.call(arguments);
1904 2376 var action = args.shift();
1905 2377 if ('string' === typeof action) {
1906 2378 _runHook('actions', action, args);
@@ -1940,10 +2412,10 @@
1940 2412 /**
1941 2413 * Performs a filter if it exists. You should only ever pass 1 argument to be filtered. The only rule is that
1942 2414 * the first argument must always be the filter.
1943 2415 */
1944 - function applyFilters(/* Filter, filtered arg, arg2, ... */
1945 - ) {
2416 + function /* Filter, filtered arg, arg2, ... */
2417 + applyFilters() {
1946 2418 var args = slice.call(arguments);
1947 2419 var filter = args.shift();
1948 2420 if ('string' === typeof filter) {
1949 2421 return _runHook('filters', filter, args);
@@ -1988,8 +2460,9 @@
1988 2460 !*** ../core/common/assets/js/utils/environment.js ***!
1989 2461 \*****************************************************/
1990 2462 /***/ ((__unused_webpack_module, exports) => {
1991 2463
2464 +"use strict";
1992 2465
1993 2466
1994 2467 Object.defineProperty(exports, "__esModule", ({
1995 2468 value: true
@@ -2009,9 +2482,9 @@
2009 2482 isSafari = /^((?!chrome|android).)*safari/i.test(userAgent) || /constructor/i.test(window.HTMLElement) || (p => {
2010 2483 return '[object SafariRemoteNotification]' === p.toString();
2011 2484 })(!window.safari || typeof safari !== 'undefined' && safari.pushNotification),
2012 2485 // Internet Explorer 6-11
2013 - isIE = /Trident|MSIE/.test(userAgent) && (/* @cc_on!@*/ false || !!document.documentMode),
2486 + isIE = /Trident|MSIE/.test(userAgent) && ( /* @cc_on!@*/ false || !!document.documentMode),
2014 2487 // Edge 20+
2015 2488 isEdge = !isIE && !!window.StyleMedia || matchUserAgent('Edg'),
2016 2489 // Google Chrome (Not accurate)
2017 2490 isChrome = !!window.chrome && matchUserAgent('Chrome') && !(isEdge || isOpera),
@@ -2018,11 +2491,9 @@
2018 2491 // Blink engine
2019 2492 isBlink = matchUserAgent('Chrome') && !!window.CSS,
2020 2493 // Apple Webkit engine
2021 2494 isAppleWebkit = matchUserAgent('AppleWebKit') && !isBlink,
2022 - isTouchDevice = 'ontouchstart' in window || navigator.maxTouchPoints > 0 || navigator.msMaxTouchPoints > 0,
2023 2495 environment = {
2024 - isTouchDevice,
2025 2496 appleWebkit: isAppleWebkit,
2026 2497 blink: isBlink,
2027 2498 chrome: isChrome,
2028 2499 edge: isEdge,
@@ -2032,9 +2503,10 @@
2032 2503 opera: isOpera,
2033 2504 safari: isSafari,
2034 2505 webkit: matchUserAgent('AppleWebKit')
2035 2506 };
2036 -var _default = exports["default"] = environment;
2507 +var _default = environment;
2508 +exports["default"] = _default;
2037 2509
2038 2510 /***/ }),
2039 2511
2040 2512 /***/ "../core/common/assets/js/utils/storage.js":
@@ -2040,10 +2512,11 @@
2040 2512 /***/ "../core/common/assets/js/utils/storage.js":
2041 2513 /*!*************************************************!*\
2042 2514 !*** ../core/common/assets/js/utils/storage.js ***!
2043 2515 \*************************************************/
2044 -/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
2516 +/***/ ((__unused_webpack_module, exports) => {
2045 2517
2518 +"use strict";
2046 2519
2047 2520
2048 2521 Object.defineProperty(exports, "__esModule", ({
2049 2522 value: true
@@ -2048,10 +2521,8 @@
2048 2521 Object.defineProperty(exports, "__esModule", ({
2049 2522 value: true
2050 2523 }));
2051 2524 exports["default"] = void 0;
2052 -__webpack_require__(/*! core-js/modules/esnext.iterator.constructor.js */ "../node_modules/core-js/modules/esnext.iterator.constructor.js");
2053 -__webpack_require__(/*! core-js/modules/esnext.iterator.for-each.js */ "../node_modules/core-js/modules/esnext.iterator.for-each.js");
2054 2525 class _default extends elementorModules.Module {
2055 2526 get(key, options) {
2056 2527 options = options || {};
2057 2528 let storage;
@@ -2124,8 +2595,9 @@
2124 2595 !*** ../modules/shapes/assets/js/frontend/frontend.js ***!
2125 2596 \********************************************************/
2126 2597 /***/ ((__unused_webpack_module, exports, __webpack_require__) => {
2127 2598
2599 +"use strict";
2128 2600
2129 2601
2130 2602 Object.defineProperty(exports, "__esModule", ({
2131 2603 value: true
@@ -2133,9 +2605,9 @@
2133 2605 exports["default"] = void 0;
2134 2606 class _default extends elementorModules.Module {
2135 2607 constructor() {
2136 2608 super();
2137 - elementorFrontend.elementsHandler.attachHandler('text-path', () => Promise.all(/*! import() | text-path */[__webpack_require__.e("vendors-node_modules_dompurify_dist_purify_cjs_js"), __webpack_require__.e("text-path")]).then(__webpack_require__.bind(__webpack_require__, /*! ./handlers/text-path */ "../modules/shapes/assets/js/frontend/handlers/text-path.js")));
2609 + 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")));
2138 2610 }
2139 2611 }
2140 2612 exports["default"] = _default;
2141 2613
@@ -2140,23 +2612,21 @@
2140 2612 exports["default"] = _default;
2141 2613
2142 2614 /***/ }),
2143 2615
2144 -/***/ "../node_modules/core-js/internals/a-possible-prototype.js":
2145 -/*!*****************************************************************!*\
2146 - !*** ../node_modules/core-js/internals/a-possible-prototype.js ***!
2147 - \*****************************************************************/
2616 +/***/ "../node_modules/core-js/internals/an-instance.js":
2617 +/*!********************************************************!*\
2618 + !*** ../node_modules/core-js/internals/an-instance.js ***!
2619 + \********************************************************/
2148 2620 /***/ ((module, __unused_webpack_exports, __webpack_require__) => {
2149 2621
2622 +var isPrototypeOf = __webpack_require__(/*! ../internals/object-is-prototype-of */ "../node_modules/core-js/internals/object-is-prototype-of.js");
2150 2623
2151 -var isPossiblePrototype = __webpack_require__(/*! ../internals/is-possible-prototype */ "../node_modules/core-js/internals/is-possible-prototype.js");
2152 -
2153 -var $String = String;
2154 2624 var $TypeError = TypeError;
2155 2625
2156 -module.exports = function (argument) {
2157 - if (isPossiblePrototype(argument)) return argument;
2158 - throw new $TypeError("Can't set " + $String(argument) + ' as a prototype');
2626 +module.exports = function (it, Prototype) {
2627 + if (isPrototypeOf(Prototype, it)) return it;
2628 + throw $TypeError('Incorrect invocation');
2159 2629 };
2160 2630
2161 2631
2162 2632 /***/ }),
@@ -2166,9 +2636,8 @@
2166 2636 !*** ../node_modules/core-js/internals/dom-exception-constants.js ***!
2167 2637 \********************************************************************/
2168 2638 /***/ ((module) => {
2169 2639
2170 -
2171 2640 module.exports = {
2172 2641 IndexSizeError: { s: 'INDEX_SIZE_ERR', c: 1, m: 1 },
2173 2642 DOMStringSizeError: { s: 'DOMSTRING_SIZE_ERR', c: 2, m: 0 },
2174 2643 HierarchyRequestError: { s: 'HIERARCHY_REQUEST_ERR', c: 3, m: 1 },
@@ -2198,173 +2667,8 @@
2198 2667
2199 2668
2200 2669 /***/ }),
2201 2670
2202 -/***/ "../node_modules/core-js/internals/error-stack-clear.js":
2203 -/*!**************************************************************!*\
2204 - !*** ../node_modules/core-js/internals/error-stack-clear.js ***!
2205 - \**************************************************************/
2206 -/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
2207 -
2208 -
2209 -var uncurryThis = __webpack_require__(/*! ../internals/function-uncurry-this */ "../node_modules/core-js/internals/function-uncurry-this.js");
2210 -
2211 -var $Error = Error;
2212 -var replace = uncurryThis(''.replace);
2213 -
2214 -var TEST = (function (arg) { return String(new $Error(arg).stack); })('zxcasd');
2215 -// eslint-disable-next-line redos/no-vulnerable, sonarjs/slow-regex -- safe
2216 -var V8_OR_CHAKRA_STACK_ENTRY = /\n\s*at [^:]*:[^\n]*/;
2217 -var IS_V8_OR_CHAKRA_STACK = V8_OR_CHAKRA_STACK_ENTRY.test(TEST);
2218 -
2219 -module.exports = function (stack, dropEntries) {
2220 - if (IS_V8_OR_CHAKRA_STACK && typeof stack == 'string' && !$Error.prepareStackTrace) {
2221 - while (dropEntries--) stack = replace(stack, V8_OR_CHAKRA_STACK_ENTRY, '');
2222 - } return stack;
2223 -};
2224 -
2225 -
2226 -/***/ }),
2227 -
2228 -/***/ "../node_modules/core-js/internals/function-uncurry-this-accessor.js":
2229 -/*!***************************************************************************!*\
2230 - !*** ../node_modules/core-js/internals/function-uncurry-this-accessor.js ***!
2231 - \***************************************************************************/
2232 -/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
2233 -
2234 -
2235 -var uncurryThis = __webpack_require__(/*! ../internals/function-uncurry-this */ "../node_modules/core-js/internals/function-uncurry-this.js");
2236 -var aCallable = __webpack_require__(/*! ../internals/a-callable */ "../node_modules/core-js/internals/a-callable.js");
2237 -
2238 -module.exports = function (object, key, method) {
2239 - try {
2240 - // eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe
2241 - return uncurryThis(aCallable(Object.getOwnPropertyDescriptor(object, key)[method]));
2242 - } catch (error) { /* empty */ }
2243 -};
2244 -
2245 -
2246 -/***/ }),
2247 -
2248 -/***/ "../node_modules/core-js/internals/inherit-if-required.js":
2249 -/*!****************************************************************!*\
2250 - !*** ../node_modules/core-js/internals/inherit-if-required.js ***!
2251 - \****************************************************************/
2252 -/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
2253 -
2254 -
2255 -var isCallable = __webpack_require__(/*! ../internals/is-callable */ "../node_modules/core-js/internals/is-callable.js");
2256 -var isObject = __webpack_require__(/*! ../internals/is-object */ "../node_modules/core-js/internals/is-object.js");
2257 -var setPrototypeOf = __webpack_require__(/*! ../internals/object-set-prototype-of */ "../node_modules/core-js/internals/object-set-prototype-of.js");
2258 -
2259 -// makes subclassing work correct for wrapped built-ins
2260 -module.exports = function ($this, dummy, Wrapper) {
2261 - var NewTarget, NewTargetPrototype;
2262 - if (
2263 - // it can work only with native `setPrototypeOf`
2264 - setPrototypeOf &&
2265 - // we haven't completely correct pre-ES6 way for getting `new.target`, so use this
2266 - isCallable(NewTarget = dummy.constructor) &&
2267 - NewTarget !== Wrapper &&
2268 - isObject(NewTargetPrototype = NewTarget.prototype) &&
2269 - NewTargetPrototype !== Wrapper.prototype
2270 - ) setPrototypeOf($this, NewTargetPrototype);
2271 - return $this;
2272 -};
2273 -
2274 -
2275 -/***/ }),
2276 -
2277 -/***/ "../node_modules/core-js/internals/is-possible-prototype.js":
2278 -/*!******************************************************************!*\
2279 - !*** ../node_modules/core-js/internals/is-possible-prototype.js ***!
2280 - \******************************************************************/
2281 -/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
2282 -
2283 -
2284 -var isObject = __webpack_require__(/*! ../internals/is-object */ "../node_modules/core-js/internals/is-object.js");
2285 -
2286 -module.exports = function (argument) {
2287 - return isObject(argument) || argument === null;
2288 -};
2289 -
2290 -
2291 -/***/ }),
2292 -
2293 -/***/ "../node_modules/core-js/internals/normalize-string-argument.js":
2294 -/*!**********************************************************************!*\
2295 - !*** ../node_modules/core-js/internals/normalize-string-argument.js ***!
2296 - \**********************************************************************/
2297 -/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
2298 -
2299 -
2300 -var toString = __webpack_require__(/*! ../internals/to-string */ "../node_modules/core-js/internals/to-string.js");
2301 -
2302 -module.exports = function (argument, $default) {
2303 - return argument === undefined ? arguments.length < 2 ? '' : $default : toString(argument);
2304 -};
2305 -
2306 -
2307 -/***/ }),
2308 -
2309 -/***/ "../node_modules/core-js/internals/object-set-prototype-of.js":
2310 -/*!********************************************************************!*\
2311 - !*** ../node_modules/core-js/internals/object-set-prototype-of.js ***!
2312 - \********************************************************************/
2313 -/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
2314 -
2315 -
2316 -/* eslint-disable no-proto -- safe */
2317 -var uncurryThisAccessor = __webpack_require__(/*! ../internals/function-uncurry-this-accessor */ "../node_modules/core-js/internals/function-uncurry-this-accessor.js");
2318 -var isObject = __webpack_require__(/*! ../internals/is-object */ "../node_modules/core-js/internals/is-object.js");
2319 -var requireObjectCoercible = __webpack_require__(/*! ../internals/require-object-coercible */ "../node_modules/core-js/internals/require-object-coercible.js");
2320 -var aPossiblePrototype = __webpack_require__(/*! ../internals/a-possible-prototype */ "../node_modules/core-js/internals/a-possible-prototype.js");
2321 -
2322 -// `Object.setPrototypeOf` method
2323 -// https://tc39.es/ecma262/#sec-object.setprototypeof
2324 -// Works with __proto__ only. Old v8 can't work with null proto objects.
2325 -// eslint-disable-next-line es/no-object-setprototypeof -- safe
2326 -module.exports = Object.setPrototypeOf || ('__proto__' in {} ? function () {
2327 - var CORRECT_SETTER = false;
2328 - var test = {};
2329 - var setter;
2330 - try {
2331 - setter = uncurryThisAccessor(Object.prototype, '__proto__', 'set');
2332 - setter(test, []);
2333 - CORRECT_SETTER = test instanceof Array;
2334 - } catch (error) { /* empty */ }
2335 - return function setPrototypeOf(O, proto) {
2336 - requireObjectCoercible(O);
2337 - aPossiblePrototype(proto);
2338 - if (!isObject(O)) return O;
2339 - if (CORRECT_SETTER) setter(O, proto);
2340 - else O.__proto__ = proto;
2341 - return O;
2342 - };
2343 -}() : undefined);
2344 -
2345 -
2346 -/***/ }),
2347 -
2348 -/***/ "../node_modules/core-js/internals/to-string.js":
2349 -/*!******************************************************!*\
2350 - !*** ../node_modules/core-js/internals/to-string.js ***!
2351 - \******************************************************/
2352 -/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
2353 -
2354 -
2355 -var classof = __webpack_require__(/*! ../internals/classof */ "../node_modules/core-js/internals/classof.js");
2356 -
2357 -var $String = String;
2358 -
2359 -module.exports = function (argument) {
2360 - if (classof(argument) === 'Symbol') throw new TypeError('Cannot convert a Symbol value to a string');
2361 - return $String(argument);
2362 -};
2363 -
2364 -
2365 -/***/ }),
2366 -
2367 2671 /***/ "../node_modules/core-js/modules/web.dom-exception.stack.js":
2368 2672 /*!******************************************************************!*\
2369 2673 !*** ../node_modules/core-js/modules/web.dom-exception.stack.js ***!
2370 2674 \******************************************************************/
@@ -2369,11 +2673,12 @@
2369 2673 !*** ../node_modules/core-js/modules/web.dom-exception.stack.js ***!
2370 2674 \******************************************************************/
2371 2675 /***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {
2372 2676
2677 +"use strict";
2373 2678
2374 2679 var $ = __webpack_require__(/*! ../internals/export */ "../node_modules/core-js/internals/export.js");
2375 -var globalThis = __webpack_require__(/*! ../internals/global-this */ "../node_modules/core-js/internals/global-this.js");
2680 +var global = __webpack_require__(/*! ../internals/global */ "../node_modules/core-js/internals/global.js");
2376 2681 var getBuiltIn = __webpack_require__(/*! ../internals/get-built-in */ "../node_modules/core-js/internals/get-built-in.js");
2377 2682 var createPropertyDescriptor = __webpack_require__(/*! ../internals/create-property-descriptor */ "../node_modules/core-js/internals/create-property-descriptor.js");
2378 2683 var defineProperty = (__webpack_require__(/*! ../internals/object-define-property */ "../node_modules/core-js/internals/object-define-property.js").f);
2379 2684 var hasOwn = __webpack_require__(/*! ../internals/has-own-property */ "../node_modules/core-js/internals/has-own-property.js");
@@ -2394,9 +2699,9 @@
2394 2699 var argumentsLength = arguments.length;
2395 2700 var message = normalizeStringArgument(argumentsLength < 1 ? undefined : arguments[0]);
2396 2701 var name = normalizeStringArgument(argumentsLength < 2 ? undefined : arguments[1], 'Error');
2397 2702 var that = new NativeDOMException(message, name);
2398 - var error = new Error(message);
2703 + var error = Error(message);
2399 2704 error.name = DOM_EXCEPTION;
2400 2705 defineProperty(that, 'stack', createPropertyDescriptor(1, clearErrorStack(error.stack, 1)));
2401 2706 inheritIfRequired(that, this, $DOMException);
2402 2707 return that;
@@ -2403,13 +2708,13 @@
2403 2708 };
2404 2709
2405 2710 var DOMExceptionPrototype = $DOMException.prototype = NativeDOMException.prototype;
2406 2711
2407 -var ERROR_HAS_STACK = 'stack' in new Error(DOM_EXCEPTION);
2712 +var ERROR_HAS_STACK = 'stack' in Error(DOM_EXCEPTION);
2408 2713 var DOM_EXCEPTION_HAS_STACK = 'stack' in new NativeDOMException(1, 2);
2409 2714
2410 2715 // eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe
2411 -var descriptor = NativeDOMException && DESCRIPTORS && Object.getOwnPropertyDescriptor(globalThis, DOM_EXCEPTION);
2716 +var descriptor = NativeDOMException && DESCRIPTORS && Object.getOwnPropertyDescriptor(global, DOM_EXCEPTION);
2412 2717
2413 2718 // Bun ~ 0.1.1 DOMException have incorrect descriptor and we can't redefine it
2414 2719 // https://github.com/Jarred-Sumner/bun/issues/399
2415 2720 var BUGGY_DESCRIPTOR = !!descriptor && !(descriptor.writable && descriptor.configurable);