text: /*! elementor-pro - v3.5.2 - 28-11-2021 */
  (self["webpackChunkelementor_pro"] = self["webpackChunkelementor_pro"] || []).push([["carousel"],{
  
  /***/ "../modules/carousel/assets/js/frontend/handlers/base.js":
  /*!***************************************************************!*\
    !*** ../modules/carousel/assets/js/frontend/handlers/base.js ***!
    \***************************************************************/
  /***/ ((__unused_webpack_module, exports) => {
  
  "use strict";
  
  
  Object.defineProperty(exports, "__esModule", ({
    value: true
  }));
  exports.default = void 0;
  
  class CarouselBase extends elementorModules.frontend.handlers.SwiperBase {
    getDefaultSettings() {
      return {
        selectors: {
          swiperContainer: '.elementor-main-swiper',
          swiperSlide: '.swiper-slide'
        },
        slidesPerView: {
          widescreen: 3,
          desktop: 3,
          laptop: 3,
          tablet_extra: 3,
          tablet: 2,
          mobile_extra: 2,
          mobile: 1
        }
      };
    }
  
    getDefaultElements() {
      const selectors = this.getSettings('selectors'),
            elements = {
        $swiperContainer: this.$element.find(selectors.swiperContainer)
      };
      elements.$slides = elements.$swiperContainer.find(selectors.swiperSlide);
      return elements;
    }
  
    getEffect() {
      return this.getElementSettings('effect');
    }
  
    getDeviceSlidesPerView(device) {
      const slidesPerViewKey = 'slides_per_view' + ('desktop' === device ? '' : '_' + device);
      return Math.min(this.getSlidesCount(), +this.getElementSettings(slidesPerViewKey) || this.getSettings('slidesPerView')[device]);
    }
  
    getSlidesPerView(device) {
      if ('slide' === this.getEffect()) {
        return this.getDeviceSlidesPerView(device);
      }
  
      return 1;
    }
  
    getDeviceSlidesToScroll(device) {
      const slidesToScrollKey = 'slides_to_scroll' + ('desktop' === device ? '' : '_' + device);
      return Math.min(this.getSlidesCount(), +this.getElementSettings(slidesToScrollKey) || 1);
    }
  
    getSlidesToScroll(device) {
      if ('slide' === this.getEffect()) {
        return this.getDeviceSlidesToScroll(device);
      }
  
      return 1;
    }
  
    getSpaceBetween(device) {
      let propertyName = 'space_between';
  
      if (device && 'desktop' !== device) {
        propertyName += '_' + device;
      }
  
      return this.getElementSettings(propertyName).size || 0;
    }
  
    getSwiperOptions() {
      const elementSettings = this.getElementSettings();
      const swiperOptions = {
        grabCursor: true,
        initialSlide: this.getInitialSlide(),
        slidesPerView: this.getSlidesPerView('desktop'),
        slidesPerGroup: this.getSlidesToScroll('desktop'),
        spaceBetween: this.getSpaceBetween(),
        loop: 'yes' === elementSettings.loop,
        speed: elementSettings.speed,
        effect: this.getEffect(),
        preventClicksPropagation: false,
        slideToClickedSlide: true,
        handleElementorBreakpoints: true
      };
  
      if (elementSettings.show_arrows) {
        swiperOptions.navigation = {
          prevEl: '.elementor-swiper-button-prev',
          nextEl: '.elementor-swiper-button-next'
        };
      }
  
      if (elementSettings.pagination) {
        swiperOptions.pagination = {
          el: '.swiper-pagination',
          type: elementSettings.pagination,
          clickable: true
        };
      }
  
      if ('cube' !== this.getEffect()) {
        const breakpointsSettings = {},
              breakpoints = elementorFrontend.config.responsive.activeBreakpoints;
        Object.keys(breakpoints).forEach(breakpointName => {
          breakpointsSettings[breakpoints[breakpointName].value] = {
            slidesPerView: this.getSlidesPerView(breakpointName),
            slidesPerGroup: this.getSlidesToScroll(breakpointName),
            spaceBetween: this.getSpaceBetween(breakpointName)
          };
        });
        swiperOptions.breakpoints = breakpointsSettings;
      }
  
      if (!this.isEdit && elementSettings.autoplay) {
        swiperOptions.autoplay = {
          delay: elementSettings.autoplay_speed,
          disableOnInteraction: !!elementSettings.pause_on_interaction
        };
      }
  
      return swiperOptions;
    }
  
    getDeviceBreakpointValue(device) {
      if (!this.breakpointsDictionary) {
        const breakpoints = elementorFrontend.config.responsive.activeBreakpoints;
        this.breakpointsDictionary = {};
        Object.keys(breakpoints).forEach(breakpointName => {
          this.breakpointsDictionary[breakpointName] = breakpoints[breakpointName].value;
        });
      }
  
      return this.breakpointsDictionary[device];
    }
  
    updateSpaceBetween(propertyName) {
      const deviceMatch = propertyName.match('space_between_(.*)'),
            device = deviceMatch ? deviceMatch[1] : 'desktop',
            newSpaceBetween = this.getSpaceBetween(device);
  
      if ('desktop' !== device) {
        this.swiper.params.breakpoints[this.getDeviceBreakpointValue(device)].spaceBetween = newSpaceBetween;
      } else {
        this.swiper.params.spaceBetween = newSpaceBetween;
      }
  
      this.swiper.params.spaceBetween = newSpaceBetween;
      this.swiper.update();
    }
  
    async onInit() {
      elementorModules.frontend.handlers.Base.prototype.onInit.apply(this, arguments);
      const elementSettings = this.getElementSettings();
  
      if (1 >= this.getSlidesCount()) {
        return;
      }
  
      const Swiper = elementorFrontend.utils.swiper;
      this.swiper = await new Swiper(this.elements.$swiperContainer, this.getSwiperOptions());
  
      if ('yes' === elementSettings.pause_on_hover) {
        this.togglePauseOnHover(true);
      } // Expose the swiper instance in the frontend
  
  
      this.elements.$swiperContainer.data('swiper', this.swiper);
    }
  
    getChangeableProperties() {
      return {
        autoplay: 'autoplay',
        pause_on_hover: 'pauseOnHover',
        pause_on_interaction: 'disableOnInteraction',
        autoplay_speed: 'delay',
        speed: 'speed',
        width: 'width'
      };
    }
  
    updateSwiperOption(propertyName) {
      if (0 === propertyName.indexOf('width')) {
        this.swiper.update();
        return;
      }
  
      const elementSettings = this.getElementSettings(),
            newSettingValue = elementSettings[propertyName],
            changeableProperties = this.getChangeableProperties();
      let propertyToUpdate = changeableProperties[propertyName],
          valueToUpdate = newSettingValue; // Handle special cases where the value to update is not the value that the Swiper library accepts
  
      switch (propertyName) {
        case 'autoplay':
          if (newSettingValue) {
            valueToUpdate = {
              delay: elementSettings.autoplay_speed,
              disableOnInteraction: 'yes' === elementSettings.pause_on_interaction
            };
          } else {
            valueToUpdate = false;
          }
  
          break;
  
        case 'autoplay_speed':
          propertyToUpdate = 'autoplay';
          valueToUpdate = {
            delay: newSettingValue,
            disableOnInteraction: 'yes' === elementSettings.pause_on_interaction
          };
          break;
  
        case 'pause_on_hover':
          this.togglePauseOnHover('yes' === newSettingValue);
          break;
  
        case 'pause_on_interaction':
          valueToUpdate = 'yes' === newSettingValue;
          break;
      } // 'pause_on_hover' is implemented by the handler with event listeners, not the Swiper library
  
  
      if ('pause_on_hover' !== propertyName) {
        this.swiper.params[propertyToUpdate] = valueToUpdate;
      }
  
      this.swiper.update();
    }
  
    onElementChange(propertyName) {
      if (1 >= this.getSlidesCount()) {
        return;
      }
  
      if (0 === propertyName.indexOf('width')) {
        this.swiper.update(); // If there is another thumbs slider, like in the Media Carousel widget.
  
        if (this.thumbsSwiper) {
          this.thumbsSwiper.update();
        }
  
        return;
      } // This is for handling the responsive control 'space_between'.
      // Responsive controls require a separate way of handling, and some currently don't work
      // (Swiper bug, currently exists in v5.3.6) TODO: update Swiper when bug is fixed and handle responsive controls
  
  
      if (0 === propertyName.indexOf('space_between')) {
        this.updateSpaceBetween(propertyName);
        return;
      }
  
      const changeableProperties = this.getChangeableProperties();
  
      if (changeableProperties.hasOwnProperty(propertyName)) {
        this.updateSwiperOption(propertyName);
      }
    }
  
    onEditSettingsChange(propertyName) {
      if (1 >= this.getSlidesCount()) {
        return;
      }
  
      if ('activeItemIndex' === propertyName) {
        this.swiper.slideToLoop(this.getEditSettings('activeItemIndex') - 1);
      }
    }
  
  }
  
  exports.default = CarouselBase;
  
  /***/ }),
  
  /***/ "../modules/carousel/assets/js/frontend/handlers/testimonial-carousel.js":
  /*!*******************************************************************************!*\
    !*** ../modules/carousel/assets/js/frontend/handlers/testimonial-carousel.js ***!
    \*******************************************************************************/
  /***/ ((__unused_webpack_module, exports, __webpack_require__) => {
  
  "use strict";
  
  
  var _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ "../node_modules/@babel/runtime/helpers/interopRequireDefault.js");
  
  Object.defineProperty(exports, "__esModule", ({
    value: true
  }));
  exports.default = void 0;
  
  var _base = _interopRequireDefault(__webpack_require__(/*! ./base */ "../modules/carousel/assets/js/frontend/handlers/base.js"));
  
  class TestimonialCarousel extends _base.default {
    getDefaultSettings() {
      const defaultSettings = super.getDefaultSettings();
      defaultSettings.slidesPerView = {
        desktop: 1
      };
      Object.keys(elementorFrontend.config.responsive.activeBreakpoints).forEach(breakpointName => {
        defaultSettings.slidesPerView[breakpointName] = 1;
      });
  
      if (defaultSettings.loop) {
        defaultSettings.loopedSlides = this.getSlidesCount();
      }
  
      return defaultSettings;
    }
  
    getEffect() {
      return 'slide';
    }
  
  }
  
  exports.default = TestimonialCarousel;
  
  /***/ })
  
  }]);
  //# sourceMappingURL=carousel.364bbaf018e09f58c819.bundle.js.map