PluginProbe
Elementor Website Builder – more than just a page builder / 3.27.4
Elementor Website Builder – more than just a page builder v3.27.4
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 +778 -80 4.2.43.27.4 View file →
@@ -1,4 +1,5 @@
1 +/*! elementor - v3.27.0 - 13-02-2025 */
1 2 "use strict";
2 3 (self["webpackChunkelementorFrontend"] = self["webpackChunkelementorFrontend"] || []).push([["frontend"],{
3 4
4 5 /***/ "../assets/dev/js/frontend/documents-manager.js":
@@ -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 }
@@ -70,17 +71,24 @@
70 71
71 72
72 73
73 74 var _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ "../node_modules/@babel/runtime/helpers/interopRequireDefault.js");
75 +__webpack_require__(/*! core-js/modules/es.array.push.js */ "../node_modules/core-js/modules/es.array.push.js");
74 76 __webpack_require__(/*! core-js/modules/esnext.iterator.constructor.js */ "../node_modules/core-js/modules/esnext.iterator.constructor.js");
75 77 __webpack_require__(/*! core-js/modules/esnext.iterator.for-each.js */ "../node_modules/core-js/modules/esnext.iterator.for-each.js");
76 78 var _global = _interopRequireDefault(__webpack_require__(/*! ./handlers/global */ "../assets/dev/js/frontend/handlers/global.js"));
79 +var _background = _interopRequireDefault(__webpack_require__(/*! ./handlers/background */ "../assets/dev/js/frontend/handlers/background.js"));
77 80 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 81 var _column = _interopRequireDefault(__webpack_require__(/*! ./handlers/column */ "../assets/dev/js/frontend/handlers/column.js"));
82 +var _handlesPosition = _interopRequireDefault(__webpack_require__(/*! ./handlers/section/handles-position */ "../assets/dev/js/frontend/handlers/section/handles-position.js"));
83 +var _stretchedSection = _interopRequireDefault(__webpack_require__(/*! ./handlers/section/stretched-section */ "../assets/dev/js/frontend/handlers/section/stretched-section.js"));
84 +var _shapes = _interopRequireDefault(__webpack_require__(/*! ./handlers/section/shapes */ "../assets/dev/js/frontend/handlers/section/shapes.js"));
85 +// Section handlers.
86 +
80 87 /* global elementorFrontendConfig */
81 88
82 89 module.exports = function ($) {
90 + var _this = this;
83 91 const handlersInstances = {};
84 92 this.elementsHandlers = {
85 93 'accordion.default': () => __webpack_require__.e(/*! import() | accordion */ "accordion").then(__webpack_require__.bind(__webpack_require__, /*! ./handlers/accordion */ "../assets/dev/js/frontend/handlers/accordion.js")),
86 94 'alert.default': () => __webpack_require__.e(/*! import() | alert */ "alert").then(__webpack_require__.bind(__webpack_require__, /*! ./handlers/alert */ "../assets/dev/js/frontend/handlers/alert.js")),
@@ -90,15 +98,12 @@
90 98 'toggle.default': () => __webpack_require__.e(/*! import() | toggle */ "toggle").then(__webpack_require__.bind(__webpack_require__, /*! ./handlers/toggle */ "../assets/dev/js/frontend/handlers/toggle.js")),
91 99 'video.default': () => __webpack_require__.e(/*! import() | video */ "video").then(__webpack_require__.bind(__webpack_require__, /*! ./handlers/video */ "../assets/dev/js/frontend/handlers/video.js")),
92 100 'image-carousel.default': () => __webpack_require__.e(/*! import() | image-carousel */ "image-carousel").then(__webpack_require__.bind(__webpack_require__, /*! ./handlers/image-carousel */ "../assets/dev/js/frontend/handlers/image-carousel.js")),
93 101 'text-editor.default': () => __webpack_require__.e(/*! import() | text-editor */ "text-editor").then(__webpack_require__.bind(__webpack_require__, /*! ./handlers/text-editor */ "../assets/dev/js/frontend/handlers/text-editor.js")),
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
102 + 'wp-widget-media_audio.default': () => __webpack_require__.e(/*! import() | wp-audio */ "wp-audio").then(__webpack_require__.bind(__webpack_require__, /*! ./handlers/wp-audio */ "../assets/dev/js/frontend/handlers/wp-audio.js"))
98 103 };
99 104 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"));
105 + this.elementsHandlers['nested-tabs.default'] = () => Promise.resolve(/*! import() */).then(__webpack_require__.bind(__webpack_require__, /*! elementor/modules/nested-tabs/assets/js/frontend/handlers/nested-tabs */ "../modules/nested-tabs/assets/js/frontend/handlers/nested-tabs.js"));
101 106 }
102 107 if (elementorFrontendConfig.experimentalFeatures['nested-elements']) {
103 108 this.elementsHandlers['nested-accordion.default'] = () => __webpack_require__.e(/*! import() | nested-accordion */ "nested-accordion").then(__webpack_require__.bind(__webpack_require__, /*! elementor/modules/nested-accordion/assets/js/frontend/handlers/nested-accordion */ "../modules/nested-accordion/assets/js/frontend/handlers/nested-accordion.js"));
104 109 }
@@ -107,8 +112,18 @@
107 112 this.elementsHandlers['floating-bars-var-1.default'] = () => __webpack_require__.e(/*! import() | floating-bars */ "floating-bars").then(__webpack_require__.bind(__webpack_require__, /*! elementor/modules/floating-buttons/assets/js/floating-bars/frontend/handlers/floating-bars */ "../modules/floating-buttons/assets/js/floating-bars/frontend/handlers/floating-bars.js"));
108 113 }
109 114 const addGlobalHandlers = () => elementorFrontend.hooks.addAction('frontend/element_ready/global', _global.default);
110 115 const addElementsHandlers = () => {
116 + this.elementsHandlers.section = [_stretchedSection.default,
117 + // Must run before background handlers to init the slideshow only after the stretch.
118 + ..._background.default, _handlesPosition.default, _shapes.default];
119 + this.elementsHandlers.container = [..._background.default];
120 +
121 + // Add editor-only handlers.
122 + if (elementorFrontend.isEditMode()) {
123 + this.elementsHandlers.container.push(..._container.default);
124 + }
125 + this.elementsHandlers.column = _column.default;
111 126 $.each(this.elementsHandlers, (elementName, Handlers) => {
112 127 const elementData = elementName.split('.');
113 128 elementName = elementData[0];
114 129 const skin = elementData[1] || null;
@@ -115,14 +130,15 @@
115 130 this.attachHandler(elementName, Handlers, skin);
116 131 });
117 132 };
118 133 const isClassHandler = Handler => Handler.prototype?.getUniqueHandlerID;
119 - const addHandlerWithHook = (elementBaseName, Handler, skin = 'default') => {
134 + const addHandlerWithHook = function (elementBaseName, Handler) {
135 + let skin = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 'default';
120 136 skin = skin ? '.' + skin : '';
121 137 const elementName = elementBaseName + skin;
122 138 elementorFrontend.hooks.addAction(`frontend/element_ready/${elementName}`, $element => {
123 139 if (isClassHandler(Handler)) {
124 - this.addHandler(Handler, {
140 + _this.addHandler(Handler, {
125 141 $element,
126 142 elementName
127 143 }, true);
128 144 } else {
@@ -130,18 +146,19 @@
130 146 if (!handlerValue) {
131 147 return;
132 148 }
133 149 if (handlerValue instanceof Promise) {
134 - handlerValue.then(({
135 - default: dynamicHandler
136 - }) => {
137 - this.addHandler(dynamicHandler, {
150 + handlerValue.then(_ref => {
151 + let {
152 + default: dynamicHandler
153 + } = _ref;
154 + _this.addHandler(dynamicHandler, {
138 155 $element,
139 156 elementName
140 157 }, true);
141 158 });
142 159 } else {
143 - this.addHandler(handlerValue, {
160 + _this.addHandler(handlerValue, {
144 161 $element,
145 162 elementName
146 163 }, true);
147 164 }
@@ -180,11 +197,12 @@
180 197 if (isClassHandler(elementHandler)) {
181 198 return elementHandler;
182 199 }
183 200 return new Promise(res => {
184 - elementHandler().then(({
185 - default: dynamicHandler
186 - }) => {
201 + elementHandler().then(_ref2 => {
202 + let {
203 + default: dynamicHandler
204 + } = _ref2;
187 205 res(dynamicHandler);
188 206 });
189 207 });
190 208 };
@@ -264,10 +282,10 @@
264 282
265 283 const EventManager = __webpack_require__(/*! elementor-utils/hooks */ "../assets/dev/js/utils/hooks.js"),
266 284 ElementsHandler = __webpack_require__(/*! elementor-frontend/elements-handlers-manager */ "../assets/dev/js/frontend/elements-handlers-manager.js");
267 285 class Frontend extends elementorModules.ViewModule {
268 - constructor(...args) {
269 - super(...args);
286 + constructor() {
287 + super(...arguments);
270 288 this.config = elementorFrontendConfig;
271 289 this.config.legacyMode = {
272 290 /**
273 291 * @deprecated since 3.1.0
@@ -513,15 +531,17 @@
513 531 elementorFrontend.trigger('elementor/modules/init:before');
514 532
515 533 // TODO: Use this instead.
516 534 elementorFrontend.trigger('elementor/modules/init/before');
517 - Object.entries(handlers).forEach(([moduleName, ModuleClass]) => {
535 + Object.entries(handlers).forEach(_ref => {
536 + let [moduleName, ModuleClass] = _ref;
518 537 this.modulesHandlers[moduleName] = new ModuleClass();
519 538 });
520 539 }
521 540 populateActiveBreakpointsConfig() {
522 541 this.config.responsive.activeBreakpoints = {};
523 - Object.entries(this.config.responsive.breakpoints).forEach(([breakpointKey, breakpointData]) => {
542 + Object.entries(this.config.responsive.breakpoints).forEach(_ref2 => {
543 + let [breakpointKey, breakpointData] = _ref2;
524 544 if (breakpointData.is_enabled) {
525 545 this.config.responsive.activeBreakpoints[breakpointKey] = breakpointData;
526 546 }
527 547 });
@@ -558,12 +578,12 @@
558 578 }
559 579
560 580 /***/ }),
561 581
562 -/***/ "../assets/dev/js/frontend/handlers/column.js":
563 -/*!****************************************************!*\
564 - !*** ../assets/dev/js/frontend/handlers/column.js ***!
565 - \****************************************************/
582 +/***/ "../assets/dev/js/frontend/handlers/background-slideshow.js":
583 +/*!******************************************************************!*\
584 + !*** ../assets/dev/js/frontend/handlers/background-slideshow.js ***!
585 + \******************************************************************/
566 586 /***/ ((__unused_webpack_module, exports, __webpack_require__) => {
567 587
568 588
569 589
@@ -570,16 +590,179 @@
570 590 Object.defineProperty(exports, "__esModule", ({
571 591 value: true
572 592 }));
573 593 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"))];
594 +__webpack_require__(/*! core-js/modules/esnext.iterator.constructor.js */ "../node_modules/core-js/modules/esnext.iterator.constructor.js");
595 +__webpack_require__(/*! core-js/modules/esnext.iterator.for-each.js */ "../node_modules/core-js/modules/esnext.iterator.for-each.js");
596 +class BackgroundSlideshow extends elementorModules.frontend.handlers.SwiperBase {
597 + getDefaultSettings() {
598 + return {
599 + classes: {
600 + swiperContainer: 'elementor-background-slideshow swiper',
601 + swiperWrapper: 'swiper-wrapper',
602 + swiperSlide: 'elementor-background-slideshow__slide swiper-slide',
603 + swiperPreloader: 'swiper-lazy-preloader',
604 + slideBackground: 'elementor-background-slideshow__slide__image',
605 + kenBurns: 'elementor-ken-burns',
606 + kenBurnsActive: 'elementor-ken-burns--active',
607 + kenBurnsIn: 'elementor-ken-burns--in',
608 + kenBurnsOut: 'elementor-ken-burns--out'
609 + }
610 + };
611 + }
612 + getSwiperOptions() {
613 + const elementSettings = this.getElementSettings(),
614 + swiperOptions = {
615 + grabCursor: false,
616 + slidesPerView: 1,
617 + slidesPerGroup: 1,
618 + loop: 'yes' === elementSettings.background_slideshow_loop,
619 + speed: elementSettings.background_slideshow_transition_duration,
620 + autoplay: {
621 + delay: elementSettings.background_slideshow_slide_duration,
622 + stopOnLastSlide: !elementSettings.background_slideshow_loop
623 + },
624 + handleElementorBreakpoints: true,
625 + on: {
626 + slideChange: () => {
627 + if (elementSettings.background_slideshow_ken_burns) {
628 + this.handleKenBurns();
629 + }
630 + }
631 + }
632 + };
633 + if ('yes' === elementSettings.background_slideshow_loop) {
634 + swiperOptions.loopedSlides = this.getSlidesCount();
635 + }
636 + switch (elementSettings.background_slideshow_slide_transition) {
637 + case 'fade':
638 + swiperOptions.effect = 'fade';
639 + swiperOptions.fadeEffect = {
640 + crossFade: true
641 + };
642 + break;
643 + case 'slide_down':
644 + swiperOptions.autoplay.reverseDirection = true;
645 + swiperOptions.direction = 'vertical';
646 + break;
647 + case 'slide_up':
648 + swiperOptions.direction = 'vertical';
649 + break;
650 + }
651 + if ('yes' === elementSettings.background_slideshow_lazyload) {
652 + swiperOptions.lazy = {
653 + loadPrevNext: true,
654 + loadPrevNextAmount: 1
655 + };
656 + }
657 + return swiperOptions;
658 + }
659 + buildSwiperElements() {
660 + const classes = this.getSettings('classes'),
661 + elementSettings = this.getElementSettings(),
662 + direction = 'slide_left' === elementSettings.background_slideshow_slide_transition ? 'ltr' : 'rtl',
663 + $container = jQuery('<div>', {
664 + class: classes.swiperContainer,
665 + dir: direction
666 + }),
667 + $wrapper = jQuery('<div>', {
668 + class: classes.swiperWrapper
669 + }),
670 + kenBurnsActive = elementSettings.background_slideshow_ken_burns,
671 + lazyload = 'yes' === elementSettings.background_slideshow_lazyload;
672 + let slideInnerClass = classes.slideBackground;
673 + if (kenBurnsActive) {
674 + slideInnerClass += ' ' + classes.kenBurns;
675 + const kenBurnsDirection = 'in' === elementSettings.background_slideshow_ken_burns_zoom_direction ? 'kenBurnsIn' : 'kenBurnsOut';
676 + slideInnerClass += ' ' + classes[kenBurnsDirection];
677 + }
678 + if (lazyload) {
679 + slideInnerClass += ' swiper-lazy';
680 + }
681 + this.elements.$slides = jQuery();
682 + elementSettings.background_slideshow_gallery.forEach(slide => {
683 + const $slide = jQuery('<div>', {
684 + class: classes.swiperSlide
685 + });
686 + let $slidebg;
687 + if (lazyload) {
688 + const $slideloader = jQuery('<div>', {
689 + class: classes.swiperPreloader
690 + });
691 + $slidebg = jQuery('<div>', {
692 + class: slideInnerClass,
693 + 'data-background': slide.url
694 + });
695 + $slidebg.append($slideloader);
696 + } else {
697 + $slidebg = jQuery('<div>', {
698 + class: slideInnerClass,
699 + style: 'background-image: url("' + slide.url + '");'
700 + });
701 + }
702 + $slide.append($slidebg);
703 + $wrapper.append($slide);
704 + this.elements.$slides = this.elements.$slides.add($slide);
705 + });
706 + $container.append($wrapper);
707 + this.$element.prepend($container);
708 + this.elements.$backgroundSlideShowContainer = $container;
709 + }
710 + async initSlider() {
711 + if (1 >= this.getSlidesCount()) {
712 + return;
713 + }
714 + const elementSettings = this.getElementSettings();
715 + const Swiper = elementorFrontend.utils.swiper;
716 + this.swiper = await new Swiper(this.elements.$backgroundSlideShowContainer, this.getSwiperOptions());
575 717
718 + // Expose the swiper instance in the frontend
719 + this.elements.$backgroundSlideShowContainer.data('swiper', this.swiper);
720 + if (elementSettings.background_slideshow_ken_burns) {
721 + this.handleKenBurns();
722 + }
723 + }
724 + activate() {
725 + this.buildSwiperElements();
726 + this.initSlider();
727 + }
728 + deactivate() {
729 + if (this.swiper) {
730 + this.swiper.destroy();
731 + this.elements.$backgroundSlideShowContainer.remove();
732 + }
733 + }
734 + run() {
735 + if ('slideshow' === this.getElementSettings('background_background')) {
736 + this.activate();
737 + } else {
738 + this.deactivate();
739 + }
740 + }
741 + onInit() {
742 + super.onInit();
743 + if (this.getElementSettings('background_slideshow_gallery')) {
744 + this.run();
745 + }
746 + }
747 + onDestroy() {
748 + super.onDestroy();
749 + this.deactivate();
750 + }
751 + onElementChange(propertyName) {
752 + if ('background_background' === propertyName) {
753 + this.run();
754 + }
755 + }
756 +}
757 +exports["default"] = BackgroundSlideshow;
758 +
576 759 /***/ }),
577 760
578 -/***/ "../assets/dev/js/frontend/handlers/container/container.js":
579 -/*!*****************************************************************!*\
580 - !*** ../assets/dev/js/frontend/handlers/container/container.js ***!
581 - \*****************************************************************/
761 +/***/ "../assets/dev/js/frontend/handlers/background-video.js":
762 +/*!**************************************************************!*\
763 + !*** ../assets/dev/js/frontend/handlers/background-video.js ***!
764 + \**************************************************************/
582 765 /***/ ((__unused_webpack_module, exports, __webpack_require__) => {
583 766
584 767
585 768
@@ -586,37 +769,312 @@
586 769 Object.defineProperty(exports, "__esModule", ({
587 770 value: true
588 771 }));
589 772 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")))];
773 +__webpack_require__(/*! core-js/modules/esnext.iterator.constructor.js */ "../node_modules/core-js/modules/esnext.iterator.constructor.js");
774 +__webpack_require__(/*! core-js/modules/esnext.iterator.find.js */ "../node_modules/core-js/modules/esnext.iterator.find.js");
775 +class BackgroundVideo extends elementorModules.frontend.handlers.Base {
776 + getDefaultSettings() {
777 + return {
778 + selectors: {
779 + backgroundVideoContainer: '.elementor-background-video-container',
780 + backgroundVideoEmbed: '.elementor-background-video-embed',
781 + backgroundVideoHosted: '.elementor-background-video-hosted'
782 + }
783 + };
784 + }
785 + getDefaultElements() {
786 + const selectors = this.getSettings('selectors'),
787 + elements = {
788 + $backgroundVideoContainer: this.$element.find(selectors.backgroundVideoContainer)
789 + };
790 + elements.$backgroundVideoEmbed = elements.$backgroundVideoContainer.children(selectors.backgroundVideoEmbed);
791 + elements.$backgroundVideoHosted = elements.$backgroundVideoContainer.children(selectors.backgroundVideoHosted);
792 + return elements;
793 + }
794 + calcVideosSize($video) {
795 + let aspectRatioSetting = '16:9';
796 + if ('vimeo' === this.videoType) {
797 + aspectRatioSetting = $video[0].width + ':' + $video[0].height;
798 + }
799 + const containerWidth = this.elements.$backgroundVideoContainer.outerWidth(),
800 + containerHeight = this.elements.$backgroundVideoContainer.outerHeight(),
801 + aspectRatioArray = aspectRatioSetting.split(':'),
802 + aspectRatio = aspectRatioArray[0] / aspectRatioArray[1],
803 + ratioWidth = containerWidth / aspectRatio,
804 + ratioHeight = containerHeight * aspectRatio,
805 + isWidthFixed = containerWidth / containerHeight > aspectRatio;
806 + return {
807 + width: isWidthFixed ? containerWidth : ratioHeight,
808 + height: isWidthFixed ? ratioWidth : containerHeight
809 + };
810 + }
811 + changeVideoSize() {
812 + if (!('hosted' === this.videoType) && !this.player) {
813 + return;
814 + }
815 + let $video;
816 + if ('youtube' === this.videoType) {
817 + $video = jQuery(this.player.getIframe());
818 + } else if ('vimeo' === this.videoType) {
819 + $video = jQuery(this.player.element);
820 + } else if ('hosted' === this.videoType) {
821 + $video = this.elements.$backgroundVideoHosted;
822 + }
823 + if (!$video) {
824 + return;
825 + }
826 + const size = this.calcVideosSize($video);
827 + $video.width(size.width).height(size.height);
828 + }
829 + startVideoLoop(firstTime) {
830 + // If the section has been removed
831 + if (!this.player.getIframe().contentWindow) {
832 + return;
833 + }
834 + const elementSettings = this.getElementSettings(),
835 + startPoint = elementSettings.background_video_start || 0,
836 + endPoint = elementSettings.background_video_end;
837 + if (elementSettings.background_play_once && !firstTime) {
838 + this.player.stopVideo();
839 + return;
840 + }
841 + this.player.seekTo(startPoint);
842 + if (endPoint) {
843 + const durationToEnd = endPoint - startPoint + 1;
844 + setTimeout(() => {
845 + this.startVideoLoop(false);
846 + }, durationToEnd * 1000);
847 + }
848 + }
849 + prepareVimeoVideo(Vimeo, videoLink) {
850 + const elementSettings = this.getElementSettings(),
851 + videoSize = this.elements.$backgroundVideoContainer.outerWidth(),
852 + vimeoOptions = {
853 + url: videoLink,
854 + width: videoSize.width,
855 + autoplay: true,
856 + loop: !elementSettings.background_play_once,
857 + transparent: true,
858 + background: true,
859 + muted: true
860 + };
861 + if (elementSettings.background_privacy_mode) {
862 + vimeoOptions.dnt = true;
863 + }
864 + this.player = new Vimeo.Player(this.elements.$backgroundVideoContainer, vimeoOptions);
592 865
866 + // Handle user-defined start/end times
867 + this.handleVimeoStartEndTimes(elementSettings);
868 + this.player.ready().then(() => {
869 + jQuery(this.player.element).addClass('elementor-background-video-embed');
870 + this.changeVideoSize();
871 + });
872 + }
873 + handleVimeoStartEndTimes(elementSettings) {
874 + // If a start time is defined, set the start time
875 + if (elementSettings.background_video_start) {
876 + this.player.on('play', data => {
877 + if (0 === data.seconds) {
878 + this.player.setCurrentTime(elementSettings.background_video_start);
879 + }
880 + });
881 + }
882 + this.player.on('timeupdate', data => {
883 + // If an end time is defined, handle ending the video
884 + if (elementSettings.background_video_end && elementSettings.background_video_end < data.seconds) {
885 + if (elementSettings.background_play_once) {
886 + // Stop at user-defined end time if not loop
887 + this.player.pause();
888 + } else {
889 + // Go to start time if loop
890 + this.player.setCurrentTime(elementSettings.background_video_start);
891 + }
892 + }
893 +
894 + // If start time is defined but an end time is not, go to user-defined start time at video end.
895 + // Vimeo JS API has an 'ended' event, but it never fires when infinite loop is defined, so we
896 + // get the video duration (returns a promise) then use duration-0.5s as end time
897 + this.player.getDuration().then(duration => {
898 + if (elementSettings.background_video_start && !elementSettings.background_video_end && data.seconds > duration - 0.5) {
899 + this.player.setCurrentTime(elementSettings.background_video_start);
900 + }
901 + });
902 + });
903 + }
904 + prepareYTVideo(YT, videoID) {
905 + const $backgroundVideoContainer = this.elements.$backgroundVideoContainer,
906 + elementSettings = this.getElementSettings();
907 + let startStateCode = YT.PlayerState.PLAYING;
908 +
909 + // Since version 67, Chrome doesn't fire the `PLAYING` state at start time
910 + if (window.chrome) {
911 + startStateCode = YT.PlayerState.UNSTARTED;
912 + }
913 + const playerOptions = {
914 + videoId: videoID,
915 + events: {
916 + onReady: () => {
917 + this.player.mute();
918 + this.changeVideoSize();
919 + this.startVideoLoop(true);
920 + this.player.playVideo();
921 + },
922 + onStateChange: event => {
923 + switch (event.data) {
924 + case startStateCode:
925 + $backgroundVideoContainer.removeClass('elementor-invisible elementor-loading');
926 + break;
927 + case YT.PlayerState.ENDED:
928 + if ('function' === typeof this.player.seekTo) {
929 + this.player.seekTo(elementSettings.background_video_start || 0);
930 + }
931 + if (elementSettings.background_play_once) {
932 + this.player.destroy();
933 + }
934 + }
935 + }
936 + },
937 + playerVars: {
938 + controls: 0,
939 + rel: 0,
940 + playsinline: 1,
941 + cc_load_policy: 0
942 + }
943 + };
944 +
945 + // To handle CORS issues, when the default host is changed, the origin parameter has to be set.
946 + if (elementSettings.background_privacy_mode) {
947 + playerOptions.host = 'https://www.youtube-nocookie.com';
948 + playerOptions.origin = window.location.hostname;
949 + }
950 + $backgroundVideoContainer.addClass('elementor-loading elementor-invisible');
951 + this.player = new YT.Player(this.elements.$backgroundVideoEmbed[0], playerOptions);
952 + }
953 + activate() {
954 + let videoLink = this.getElementSettings('background_video_link'),
955 + videoID;
956 + const playOnce = this.getElementSettings('background_play_once');
957 + if (-1 !== videoLink.indexOf('vimeo.com')) {
958 + this.videoType = 'vimeo';
959 + this.apiProvider = elementorFrontend.utils.vimeo;
960 + } else if (videoLink.match(/^(?:https?:\/\/)?(?:www\.)?(?:m\.)?(?:youtu\.be\/|youtube\.com)/)) {
961 + this.videoType = 'youtube';
962 + this.apiProvider = elementorFrontend.utils.youtube;
963 + }
964 + if (this.apiProvider) {
965 + videoID = this.apiProvider.getVideoIDFromURL(videoLink);
966 + this.apiProvider.onApiReady(apiObject => {
967 + if ('youtube' === this.videoType) {
968 + this.prepareYTVideo(apiObject, videoID);
969 + }
970 + if ('vimeo' === this.videoType) {
971 + this.prepareVimeoVideo(apiObject, videoLink);
972 + }
973 + });
974 + } else {
975 + this.videoType = 'hosted';
976 + const startTime = this.getElementSettings('background_video_start'),
977 + endTime = this.getElementSettings('background_video_end');
978 + if (startTime || endTime) {
979 + videoLink += '#t=' + (startTime || 0) + (endTime ? ',' + endTime : '');
980 + }
981 + this.elements.$backgroundVideoHosted.attr('src', videoLink).one('canplay', this.changeVideoSize.bind(this));
982 + if (playOnce) {
983 + this.elements.$backgroundVideoHosted.on('ended', () => {
984 + this.elements.$backgroundVideoHosted.hide();
985 + });
986 + }
987 + }
988 + elementorFrontend.elements.$window.on('resize elementor/bg-video/recalc', this.changeVideoSize);
989 + }
990 + deactivate() {
991 + if ('youtube' === this.videoType && this.player.getIframe() || 'vimeo' === this.videoType) {
992 + this.player.destroy();
993 + } else {
994 + this.elements.$backgroundVideoHosted.removeAttr('src').off('ended');
995 + }
996 + elementorFrontend.elements.$window.off('resize', this.changeVideoSize);
997 + }
998 + run() {
999 + const elementSettings = this.getElementSettings();
1000 + if (!elementSettings.background_play_on_mobile && 'mobile' === elementorFrontend.getCurrentDeviceMode()) {
1001 + return;
1002 + }
1003 + if ('video' === elementSettings.background_background && elementSettings.background_video_link) {
1004 + this.activate();
1005 + } else {
1006 + this.deactivate();
1007 + }
1008 + }
1009 + onInit() {
1010 + super.onInit(...arguments);
1011 + this.changeVideoSize = this.changeVideoSize.bind(this);
1012 + this.run();
1013 + }
1014 + onElementChange(propertyName) {
1015 + if ('background_background' === propertyName) {
1016 + this.run();
1017 + }
1018 + }
1019 +}
1020 +exports["default"] = BackgroundVideo;
1021 +
593 1022 /***/ }),
594 1023
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) => {
1024 +/***/ "../assets/dev/js/frontend/handlers/background.js":
1025 +/*!********************************************************!*\
1026 + !*** ../assets/dev/js/frontend/handlers/background.js ***!
1027 + \********************************************************/
1028 +/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
600 1029
601 1030
602 1031
1032 +var _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ "../node_modules/@babel/runtime/helpers/interopRequireDefault.js");
603 1033 Object.defineProperty(exports, "__esModule", ({
604 1034 value: true
605 1035 }));
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 -}
1036 +exports["default"] = void 0;
1037 +var _backgroundSlideshow = _interopRequireDefault(__webpack_require__(/*! ./background-slideshow */ "../assets/dev/js/frontend/handlers/background-slideshow.js"));
1038 +var _backgroundVideo = _interopRequireDefault(__webpack_require__(/*! ./background-video */ "../assets/dev/js/frontend/handlers/background-video.js"));
1039 +var _default = exports["default"] = [_backgroundSlideshow.default, _backgroundVideo.default];
616 1040
617 1041 /***/ }),
618 1042
1043 +/***/ "../assets/dev/js/frontend/handlers/column.js":
1044 +/*!****************************************************!*\
1045 + !*** ../assets/dev/js/frontend/handlers/column.js ***!
1046 + \****************************************************/
1047 +/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
1048 +
1049 +
1050 +
1051 +var _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ "../node_modules/@babel/runtime/helpers/interopRequireDefault.js");
1052 +Object.defineProperty(exports, "__esModule", ({
1053 + value: true
1054 +}));
1055 +exports["default"] = void 0;
1056 +var _backgroundSlideshow = _interopRequireDefault(__webpack_require__(/*! ./background-slideshow */ "../assets/dev/js/frontend/handlers/background-slideshow.js"));
1057 +var _default = exports["default"] = [_backgroundSlideshow.default];
1058 +
1059 +/***/ }),
1060 +
1061 +/***/ "../assets/dev/js/frontend/handlers/container/container.js":
1062 +/*!*****************************************************************!*\
1063 + !*** ../assets/dev/js/frontend/handlers/container/container.js ***!
1064 + \*****************************************************************/
1065 +/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
1066 +
1067 +
1068 +
1069 +Object.defineProperty(exports, "__esModule", ({
1070 + value: true
1071 +}));
1072 +exports["default"] = void 0;
1073 +var _default = exports["default"] = [() => __webpack_require__.e(/*! import() | container */ "container").then(__webpack_require__.bind(__webpack_require__, /*! ./handles-position */ "../assets/dev/js/frontend/handlers/container/handles-position.js")), () => __webpack_require__.e(/*! import() | container */ "container").then(__webpack_require__.bind(__webpack_require__, /*! ./shapes */ "../assets/dev/js/frontend/handlers/container/shapes.js")), () => __webpack_require__.e(/*! import() | container */ "container").then(__webpack_require__.bind(__webpack_require__, /*! ./grid-container */ "../assets/dev/js/frontend/handlers/container/grid-container.js"))];
1074 +
1075 +/***/ }),
1076 +
619 1077 /***/ "../assets/dev/js/frontend/handlers/global.js":
620 1078 /*!****************************************************!*\
621 1079 !*** ../assets/dev/js/frontend/handlers/global.js ***!
622 1080 \****************************************************/
@@ -652,10 +1110,10 @@
652 1110 }
653 1111 getAnimation() {
654 1112 return this.getCurrentDeviceSetting('animation') || this.getCurrentDeviceSetting('_animation');
655 1113 }
656 - onInit(...args) {
657 - super.onInit(...args);
1114 + onInit() {
1115 + super.onInit(...arguments);
658 1116 if (this.getAnimation()) {
659 1117 const observer = elementorModules.utils.Scroll.scrollObserver({
660 1118 callback: event => {
661 1119 if (event.isInViewport) {
@@ -681,12 +1139,12 @@
681 1139 exports["default"] = _default;
682 1140
683 1141 /***/ }),
684 1142
685 -/***/ "../assets/dev/js/frontend/handlers/section/section.js":
686 -/*!*************************************************************!*\
687 - !*** ../assets/dev/js/frontend/handlers/section/section.js ***!
688 - \*************************************************************/
1143 +/***/ "../assets/dev/js/frontend/handlers/section/handles-position.js":
1144 +/*!**********************************************************************!*\
1145 + !*** ../assets/dev/js/frontend/handlers/section/handles-position.js ***!
1146 + \**********************************************************************/
689 1147 /***/ ((__unused_webpack_module, exports, __webpack_require__) => {
690 1148
691 1149
692 1150
@@ -693,15 +1151,186 @@
693 1151 Object.defineProperty(exports, "__esModule", ({
694 1152 value: true
695 1153 }));
696 1154 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")))];
1155 +__webpack_require__(/*! core-js/modules/esnext.iterator.constructor.js */ "../node_modules/core-js/modules/esnext.iterator.constructor.js");
1156 +__webpack_require__(/*! core-js/modules/esnext.iterator.find.js */ "../node_modules/core-js/modules/esnext.iterator.find.js");
1157 +class HandlesPosition extends elementorModules.frontend.handlers.Base {
1158 + isActive() {
1159 + return elementorFrontend.isEditMode();
1160 + }
1161 + isFirstSection() {
1162 + return this.$element[0] === document.querySelector('.elementor-edit-mode .elementor-top-section');
1163 + }
1164 + isOverflowHidden() {
1165 + return 'hidden' === this.$element.css('overflow');
1166 + }
1167 + getOffset() {
1168 + if ('body' === elementor.config.document.container) {
1169 + return this.$element.offset().top;
1170 + }
1171 + const $container = jQuery(elementor.config.document.container);
1172 + return this.$element.offset().top - $container.offset().top;
1173 + }
1174 + setHandlesPosition() {
1175 + const document = elementor.documents.getCurrent();
1176 + if (!document || !document.container.isEditable()) {
1177 + return;
1178 + }
1179 + const insideHandleClass = 'elementor-section--handles-inside';
1180 + if (elementor.settings.page.model.attributes.scroll_snap) {
1181 + this.$element.addClass(insideHandleClass);
1182 + return;
1183 + }
1184 + const isOverflowHidden = this.isOverflowHidden();
1185 + if (!isOverflowHidden && !this.isFirstSection()) {
1186 + return;
1187 + }
1188 + const offset = isOverflowHidden ? 0 : this.getOffset();
1189 + if (offset < 25) {
1190 + this.$element.addClass(insideHandleClass);
1191 + const $handlesElement = this.$element.find('> .elementor-element-overlay > .elementor-editor-section-settings');
1192 + if (offset < -5) {
1193 + $handlesElement.css('top', -offset);
1194 + } else {
1195 + $handlesElement.css('top', '');
1196 + }
1197 + } else {
1198 + this.$element.removeClass(insideHandleClass);
1199 + }
1200 + }
1201 + onInit() {
1202 + if (!this.isActive()) {
1203 + return;
1204 + }
1205 + this.setHandlesPosition();
1206 + this.$element.on('mouseenter', this.setHandlesPosition.bind(this));
1207 + }
1208 +}
1209 +exports["default"] = HandlesPosition;
701 1210
702 1211 /***/ }),
703 1212
1213 +/***/ "../assets/dev/js/frontend/handlers/section/shapes.js":
1214 +/*!************************************************************!*\
1215 + !*** ../assets/dev/js/frontend/handlers/section/shapes.js ***!
1216 + \************************************************************/
1217 +/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
1218 +
1219 +
1220 +
1221 +Object.defineProperty(exports, "__esModule", ({
1222 + value: true
1223 +}));
1224 +exports["default"] = void 0;
1225 +__webpack_require__(/*! core-js/modules/esnext.iterator.constructor.js */ "../node_modules/core-js/modules/esnext.iterator.constructor.js");
1226 +__webpack_require__(/*! core-js/modules/esnext.iterator.find.js */ "../node_modules/core-js/modules/esnext.iterator.find.js");
1227 +class Shapes extends elementorModules.frontend.handlers.Base {
1228 + getDefaultSettings() {
1229 + return {
1230 + selectors: {
1231 + container: '> .elementor-shape-%s'
1232 + },
1233 + svgURL: elementorFrontend.config.urls.assets + 'shapes/'
1234 + };
1235 + }
1236 + getDefaultElements() {
1237 + const elements = {},
1238 + selectors = this.getSettings('selectors');
1239 + elements.$topContainer = this.$element.find(selectors.container.replace('%s', 'top'));
1240 + elements.$bottomContainer = this.$element.find(selectors.container.replace('%s', 'bottom'));
1241 + return elements;
1242 + }
1243 + isActive() {
1244 + return elementorFrontend.isEditMode();
1245 + }
1246 + getSvgURL(shapeType, fileName) {
1247 + let svgURL = this.getSettings('svgURL') + fileName + '.svg';
1248 + if (elementor.config.additional_shapes && shapeType in elementor.config.additional_shapes) {
1249 + svgURL = elementor.config.additional_shapes[shapeType];
1250 + if (-1 < fileName.indexOf('-negative')) {
1251 + svgURL = svgURL.replace('.svg', '-negative.svg');
1252 + }
1253 + }
1254 + return svgURL;
1255 + }
1256 + buildSVG(side) {
1257 + const baseSettingKey = 'shape_divider_' + side,
1258 + shapeType = this.getElementSettings(baseSettingKey),
1259 + $svgContainer = this.elements['$' + side + 'Container'];
1260 + $svgContainer.attr('data-shape', shapeType);
1261 + if (!shapeType) {
1262 + $svgContainer.empty(); // Shape-divider set to 'none'
1263 + return;
1264 + }
1265 + let fileName = shapeType;
1266 + if (this.getElementSettings(baseSettingKey + '_negative')) {
1267 + fileName += '-negative';
1268 + }
1269 + const svgURL = this.getSvgURL(shapeType, fileName);
1270 + jQuery.get(svgURL, data => {
1271 + $svgContainer.empty().append(data.childNodes[0]);
1272 + });
1273 + this.setNegative(side);
1274 + }
1275 + setNegative(side) {
1276 + this.elements['$' + side + 'Container'].attr('data-negative', !!this.getElementSettings('shape_divider_' + side + '_negative'));
1277 + }
1278 + onInit() {
1279 + if (!this.isActive(this.getSettings())) {
1280 + return;
1281 + }
1282 + super.onInit(...arguments);
1283 + ['top', 'bottom'].forEach(side => {
1284 + if (this.getElementSettings('shape_divider_' + side)) {
1285 + this.buildSVG(side);
1286 + }
1287 + });
1288 + }
1289 + onElementChange(propertyName) {
1290 + const shapeChange = propertyName.match(/^shape_divider_(top|bottom)$/);
1291 + if (shapeChange) {
1292 + this.buildSVG(shapeChange[1]);
1293 + return;
1294 + }
1295 + const negativeChange = propertyName.match(/^shape_divider_(top|bottom)_negative$/);
1296 + if (negativeChange) {
1297 + this.buildSVG(negativeChange[1]);
1298 + this.setNegative(negativeChange[1]);
1299 + }
1300 + }
1301 +}
1302 +exports["default"] = Shapes;
1303 +
1304 +/***/ }),
1305 +
1306 +/***/ "../assets/dev/js/frontend/handlers/section/stretched-section.js":
1307 +/*!***********************************************************************!*\
1308 + !*** ../assets/dev/js/frontend/handlers/section/stretched-section.js ***!
1309 + \***********************************************************************/
1310 +/***/ ((__unused_webpack_module, exports) => {
1311 +
1312 +
1313 +
1314 +Object.defineProperty(exports, "__esModule", ({
1315 + value: true
1316 +}));
1317 +exports["default"] = void 0;
1318 +class StretchedSection extends elementorModules.frontend.handlers.StretchedElement {
1319 + getStretchedClass() {
1320 + return 'elementor-section-stretched';
1321 + }
1322 + getStretchSettingName() {
1323 + return 'stretch_section';
1324 + }
1325 + getStretchActiveValue() {
1326 + return 'section-stretched';
1327 + }
1328 +}
1329 +exports["default"] = StretchedSection;
1330 +
1331 +/***/ }),
1332 +
704 1333 /***/ "../assets/dev/js/frontend/utils/anchor-scroll-margin.js":
705 1334 /*!***************************************************************!*\
706 1335 !*** ../assets/dev/js/frontend/utils/anchor-scroll-margin.js ***!
707 1336 \***************************************************************/
@@ -912,8 +1541,9 @@
912 1541 src: `${assetsUrl}lib/swiper/v8/swiper${fileSuffix}.js?ver=8.4.5`
913 1542 }
914 1543 },
915 1544 style: {
1545 + // TODO: Remove 'swiper' in v3.28.0 [ED-16258].
916 1546 swiper: {
917 1547 src: `${assetsUrl}lib/swiper/v8/css/swiper${fileSuffix}.css?ver=8.4.5`,
918 1548 parent: 'head'
919 1549 },
@@ -978,9 +1608,11 @@
978 1608 * @param {string} controlSubKey A specific property of the control object.
979 1609 * @param {string} device If we want to get a value for a specific device mode.
980 1610 * @return {*} Control Value
981 1611 */
982 - getResponsiveControlValue(controlSettings, controlKey, controlSubKey = '', device = null) {
1612 + getResponsiveControlValue(controlSettings, controlKey) {
1613 + let controlSubKey = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : '';
1614 + let device = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : null;
983 1615 const currentDeviceMode = device || elementorFrontend.getCurrentDeviceMode(),
984 1616 controlValueDesktop = this.getControlValue(controlSettings, controlKey, controlSubKey);
985 1617
986 1618 // Set the control value for the current device mode.
@@ -1036,16 +1668,20 @@
1036 1668 __webpack_require__(/*! core-js/modules/esnext.iterator.find.js */ "../node_modules/core-js/modules/esnext.iterator.find.js");
1037 1669 class LightboxManager extends elementorModules.ViewModule {
1038 1670 static getLightbox() {
1039 1671 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()));
1672 + __webpack_require__.e(/*! import() | lightbox */ "lightbox").then(__webpack_require__.t.bind(__webpack_require__, /*! elementor-frontend/utils/lightbox/lightbox */ "../assets/dev/js/frontend/utils/lightbox/lightbox.js", 23)).then(_ref => {
1673 + let {
1674 + default: LightboxModule
1675 + } = _ref;
1676 + return resolveLightbox(new LightboxModule());
1677 + });
1043 1678 }),
1044 1679 dialogScriptPromise = elementorFrontend.utils.assetsLoader.load('script', 'dialog'),
1045 1680 dialogStylePromise = elementorFrontend.utils.assetsLoader.load('style', 'dialog'),
1046 1681 shareLinkPromise = elementorFrontend.utils.assetsLoader.load('script', 'share-link'),
1047 1682 swiperStylePromise = elementorFrontend.utils.assetsLoader.load('style', 'swiper'),
1683 + // TODO: Remove in v3.28.0 [ED-16258].
1048 1684 lightboxStylePromise = elementorFrontend.utils.assetsLoader.load('style', 'e-lightbox');
1049 1685 return Promise.all([lightboxPromise, dialogScriptPromise, dialogStylePromise, shareLinkPromise, swiperStylePromise, lightboxStylePromise]).then(() => lightboxPromise);
1050 1686 }
1051 1687 getDefaultSettings() {
@@ -1063,9 +1699,9 @@
1063 1699 };
1064 1700 }
1065 1701 isLightboxLink(element) {
1066 1702 // 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) {
1703 + if ('a' === element.tagName.toLowerCase() && (element.hasAttribute('download') || !/^[^?]+\.(png|jpe?g|gif|svg|webp)(\?.*)?$/i.test(element.href)) && !element.dataset.elementorLightboxVideo) {
1068 1704 return false;
1069 1705 }
1070 1706 const generalOpenInLightbox = elementorFrontend.getKitSettings('global_image_lightbox'),
1071 1707 currentLinkOpenInLightbox = element.dataset.elementorOpenLightbox;
@@ -1100,10 +1736,10 @@
1100 1736 }
1101 1737 bindEvents() {
1102 1738 elementorFrontend.elements.$document.on('click', this.getSettings('selectors.links'), event => this.onLinkClick(event));
1103 1739 }
1104 - onInit(...args) {
1105 - super.onInit(...args);
1740 + onInit() {
1741 + super.onInit(...arguments);
1106 1742 if (elementorFrontend.isEditMode()) {
1107 1743 return;
1108 1744 }
1109 1745 this.maybeActivateLightboxOnLink();
@@ -1166,9 +1802,8 @@
1166 1802 }
1167 1803 createSwiperInstance(container, config) {
1168 1804 const SwiperSource = window.Swiper;
1169 1805 SwiperSource.prototype.adjustConfig = this.adjustConfig;
1170 - config = this.applyMotionPreferences(config);
1171 1806 return new SwiperSource(container, config);
1172 1807 }
1173 1808
1174 1809 // Backwards compatibility for Elementor Pro <2.9.0 (old Swiper version - <5.0.0)
@@ -1213,18 +1848,8 @@
1213 1848 };
1214 1849 });
1215 1850 return config;
1216 1851 }
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 1852 }
1228 1853 exports["default"] = SwiperHandler;
1229 1854
1230 1855 /***/ }),
@@ -1272,9 +1897,9 @@
1272 1897 }
1273 1898 addAction(name, callback) {
1274 1899 this.actions[name] = callback;
1275 1900 }
1276 - runAction(url, ...restArgs) {
1901 + runAction(url) {
1277 1902 url = decodeURI(url);
1278 1903 url = decodeURIComponent(url);
1279 1904 const actionMatch = url.match(/action=(.+?)&/);
1280 1905 if (!actionMatch) {
@@ -1289,8 +1914,11 @@
1289 1914 if (settingsMatch) {
1290 1915 settings = JSON.parse(atob(settingsMatch[1]));
1291 1916 }
1292 1917 settings.previousEvent = event;
1918 + for (var _len = arguments.length, restArgs = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {
1919 + restArgs[_key - 1] = arguments[_key];
1920 + }
1293 1921 action(settings, ...restArgs);
1294 1922 }
1295 1923 runLinkAction(event) {
1296 1924 event.preventDefault();
@@ -1534,9 +2162,10 @@
1534 2162 * @since 3.4.0
1535 2163 *
1536 2164 * @param {Object} args
1537 2165 */
1538 - getActiveBreakpointsList(args = {}) {
2166 + getActiveBreakpointsList() {
2167 + let args = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
1539 2168 const defaultArgs = {
1540 2169 largeToSmall: false,
1541 2170 withDesktop: false
1542 2171 };
@@ -1703,9 +2332,11 @@
1703 2332 * @param {string|null} bcEvent - BC event to dispatch, default to `null`.
1704 2333 *
1705 2334 * @return {void}
1706 2335 */
1707 - static dispatch(context, event, data = null, bcEvent = null) {
2336 + static dispatch(context, event) {
2337 + let data = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : null;
2338 + let bcEvent = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : null;
1708 2339 // Make sure to use the native context if it's a jQuery instance.
1709 2340 context = context instanceof jQuery ? context[0] : context;
1710 2341
1711 2342 // Dispatch the BC event only if exists.
@@ -2133,9 +2764,9 @@
2133 2764 exports["default"] = void 0;
2134 2765 class _default extends elementorModules.Module {
2135 2766 constructor() {
2136 2767 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")));
2768 + elementorFrontend.elementsHandler.attachHandler('text-path', () => __webpack_require__.e(/*! import() | text-path */ "text-path").then(__webpack_require__.bind(__webpack_require__, /*! ./handlers/text-path */ "../modules/shapes/assets/js/frontend/handlers/text-path.js")));
2138 2769 }
2139 2770 }
2140 2771 exports["default"] = _default;
2141 2772
@@ -2289,8 +2920,42 @@
2289 2920
2290 2921
2291 2922 /***/ }),
2292 2923
2924 +/***/ "../node_modules/core-js/internals/iterator-map.js":
2925 +/*!*********************************************************!*\
2926 + !*** ../node_modules/core-js/internals/iterator-map.js ***!
2927 + \*********************************************************/
2928 +/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
2929 +
2930 +
2931 +var call = __webpack_require__(/*! ../internals/function-call */ "../node_modules/core-js/internals/function-call.js");
2932 +var aCallable = __webpack_require__(/*! ../internals/a-callable */ "../node_modules/core-js/internals/a-callable.js");
2933 +var anObject = __webpack_require__(/*! ../internals/an-object */ "../node_modules/core-js/internals/an-object.js");
2934 +var getIteratorDirect = __webpack_require__(/*! ../internals/get-iterator-direct */ "../node_modules/core-js/internals/get-iterator-direct.js");
2935 +var createIteratorProxy = __webpack_require__(/*! ../internals/iterator-create-proxy */ "../node_modules/core-js/internals/iterator-create-proxy.js");
2936 +var callWithSafeIterationClosing = __webpack_require__(/*! ../internals/call-with-safe-iteration-closing */ "../node_modules/core-js/internals/call-with-safe-iteration-closing.js");
2937 +
2938 +var IteratorProxy = createIteratorProxy(function () {
2939 + var iterator = this.iterator;
2940 + var result = anObject(call(this.next, iterator));
2941 + var done = this.done = !!result.done;
2942 + if (!done) return callWithSafeIterationClosing(iterator, this.mapper, [result.value, this.counter++], true);
2943 +});
2944 +
2945 +// `Iterator.prototype.map` method
2946 +// https://github.com/tc39/proposal-iterator-helpers
2947 +module.exports = function map(mapper) {
2948 + anObject(this);
2949 + aCallable(mapper);
2950 + return new IteratorProxy(getIteratorDirect(this), {
2951 + mapper: mapper
2952 + });
2953 +};
2954 +
2955 +
2956 +/***/ }),
2957 +
2293 2958 /***/ "../node_modules/core-js/internals/normalize-string-argument.js":
2294 2959 /*!**********************************************************************!*\
2295 2960 !*** ../node_modules/core-js/internals/normalize-string-argument.js ***!
2296 2961 \**********************************************************************/
@@ -2359,8 +3024,41 @@
2359 3024 module.exports = function (argument) {
2360 3025 if (classof(argument) === 'Symbol') throw new TypeError('Cannot convert a Symbol value to a string');
2361 3026 return $String(argument);
2362 3027 };
3028 +
3029 +
3030 +/***/ }),
3031 +
3032 +/***/ "../node_modules/core-js/modules/es.iterator.map.js":
3033 +/*!**********************************************************!*\
3034 + !*** ../node_modules/core-js/modules/es.iterator.map.js ***!
3035 + \**********************************************************/
3036 +/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {
3037 +
3038 +
3039 +var $ = __webpack_require__(/*! ../internals/export */ "../node_modules/core-js/internals/export.js");
3040 +var map = __webpack_require__(/*! ../internals/iterator-map */ "../node_modules/core-js/internals/iterator-map.js");
3041 +var IS_PURE = __webpack_require__(/*! ../internals/is-pure */ "../node_modules/core-js/internals/is-pure.js");
3042 +
3043 +// `Iterator.prototype.map` method
3044 +// https://tc39.es/ecma262/#sec-iterator.prototype.map
3045 +$({ target: 'Iterator', proto: true, real: true, forced: IS_PURE }, {
3046 + map: map
3047 +});
3048 +
3049 +
3050 +/***/ }),
3051 +
3052 +/***/ "../node_modules/core-js/modules/esnext.iterator.map.js":
3053 +/*!**************************************************************!*\
3054 + !*** ../node_modules/core-js/modules/esnext.iterator.map.js ***!
3055 + \**************************************************************/
3056 +/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {
3057 +
3058 +
3059 +// TODO: Remove from `core-js@4`
3060 +__webpack_require__(/*! ../modules/es.iterator.map */ "../node_modules/core-js/modules/es.iterator.map.js");
2363 3061
2364 3062
2365 3063 /***/ }),
2366 3064