/*! elementor - v3.32.0 - 05-10-2025 */ "use strict"; (self.webpackChunkelementorFrontend = self.webpackChunkelementorFrontend || []).push([ [557], { 628: (e, t, i) => { Object.defineProperty(t, "__esModule", { value: !0 }), t.default = void 0, i(4846), i(9655); class BackgroundSlideshow extends elementorModules.frontend.handlers.SwiperBase { getDefaultSettings() { return { classes: { swiperContainer: "elementor-background-slideshow swiper", swiperWrapper: "swiper-wrapper", swiperSlide: "elementor-background-slideshow__slide swiper-slide", swiperPreloader: "swiper-lazy-preloader", slideBackground: "elementor-background-slideshow__slide__image", kenBurns: "elementor-ken-burns", kenBurnsActive: "elementor-ken-burns--active", kenBurnsIn: "elementor-ken-burns--in", kenBurnsOut: "elementor-ken-burns--out" } } } getSwiperOptions() { const e = this.getElementSettings(), t = { grabCursor: !1, slidesPerView: 1, slidesPerGroup: 1, loop: "yes" === e.background_slideshow_loop, speed: e.background_slideshow_transition_duration, autoplay: { delay: e.background_slideshow_slide_duration, stopOnLastSlide: !e.background_slideshow_loop }, handleElementorBreakpoints: !0, on: { slideChange: () => { e.background_slideshow_ken_burns && this.handleKenBurns() } } }; switch ("yes" === e.background_slideshow_loop && (t.loopedSlides = this.getSlidesCount()), e.background_slideshow_slide_transition) { case "fade": t.effect = "fade", t.fadeEffect = { crossFade: !0 }; break; case "slide_down": t.autoplay.reverseDirection = !0, t.direction = "vertical"; break; case "slide_up": t.direction = "vertical" } return "yes" === e.background_slideshow_lazyload && (t.lazy = { loadPrevNext: !0, loadPrevNextAmount: 1 }), t } buildSwiperElements() { const e = this.getSettings("classes"), t = this.getElementSettings(), i = "slide_left" === t.background_slideshow_slide_transition ? "ltr" : "rtl", o = jQuery("
", { class: e.swiperContainer, dir: i }), n = jQuery("
", { class: e.swiperWrapper }), s = t.background_slideshow_ken_burns, r = "yes" === t.background_slideshow_lazyload; let d = e.slideBackground; if (s) { d += " " + e.kenBurns; const i = "in" === t.background_slideshow_ken_burns_zoom_direction ? "kenBurnsIn" : "kenBurnsOut"; d += " " + e[i] } r && (d += " swiper-lazy"), this.elements.$slides = jQuery(), t.background_slideshow_gallery.forEach(t => { const i = jQuery("
", { class: e.swiperSlide }); let o; if (r) { const i = jQuery("
", { class: e.swiperPreloader }); o = jQuery("
", { class: d, "data-background": t.url }), o.append(i) } else o = jQuery("
", { class: d, style: 'background-image: url("' + t.url + '");' }); i.append(o), n.append(i), this.elements.$slides = this.elements.$slides.add(i) }), o.append(n), this.$element.prepend(o), this.elements.$backgroundSlideShowContainer = o } async initSlider() { if (1 >= this.getSlidesCount()) return; const e = this.getElementSettings(), t = elementorFrontend.utils.swiper; this.swiper = await new t(this.elements.$backgroundSlideShowContainer, this.getSwiperOptions()), this.elements.$backgroundSlideShowContainer.data("swiper", this.swiper), e.background_slideshow_ken_burns && this.handleKenBurns() } activate() { this.buildSwiperElements(), this.initSlider() } deactivate() { this.swiper && (this.swiper.destroy(), this.elements.$backgroundSlideShowContainer.remove()) } run() { "slideshow" === this.getElementSettings("background_background") ? this.activate() : this.deactivate() } onInit() { super.onInit(), this.getElementSettings("background_slideshow_gallery") && this.run() } onDestroy() { super.onDestroy(), this.deactivate() } onElementChange(e) { "background_background" === e && this.run() } } t.default = BackgroundSlideshow }, 3031: (e, t, i) => { Object.defineProperty(t, "__esModule", { value: !0 }), t.default = void 0, i(4846), i(6211); class BackgroundVideo extends elementorModules.frontend.handlers.Base { getDefaultSettings() { return { selectors: { backgroundVideoContainer: ".elementor-background-video-container", backgroundVideoEmbed: ".elementor-background-video-embed", backgroundVideoHosted: ".elementor-background-video-hosted" } } } getDefaultElements() { const e = this.getSettings("selectors"), t = { $backgroundVideoContainer: this.$element.find(e.backgroundVideoContainer) }; return t.$backgroundVideoEmbed = t.$backgroundVideoContainer.children(e.backgroundVideoEmbed), t.$backgroundVideoHosted = t.$backgroundVideoContainer.children(e.backgroundVideoHosted), t } calcVideosSize(e) { let t = "16:9"; "vimeo" === this.videoType && (t = e[0].width + ":" + e[0].height); const i = this.elements.$backgroundVideoContainer.outerWidth(), o = this.elements.$backgroundVideoContainer.outerHeight(), n = t.split(":"), s = n[0] / n[1], r = i / o > s; return { width: r ? i : o * s, height: r ? i / s : o } } changeVideoSize() { if ("hosted" !== this.videoType && !this.player) return; let e; if ("youtube" === this.videoType ? e = jQuery(this.player.getIframe()) : "vimeo" === this.videoType ? e = jQuery(this.player.element) : "hosted" === this.videoType && (e = this.elements.$backgroundVideoHosted), !e) return; const t = this.calcVideosSize(e); e.width(t.width).height(t.height) } startVideoLoop(e) { if (!this.player.getIframe().contentWindow) return; const t = this.getElementSettings(), i = t.background_video_start || 0, o = t.background_video_end; if (!t.background_play_once || e) { if (this.player.seekTo(i), o) { setTimeout(() => { this.startVideoLoop(!1) }, 1e3 * (o - i + 1)) } } else this.player.stopVideo() } prepareVimeoVideo(e, t) { const i = this.getElementSettings(), o = { url: t, width: this.elements.$backgroundVideoContainer.outerWidth().width, autoplay: !0, loop: !i.background_play_once, transparent: !0, background: !0, muted: !0 }; i.background_privacy_mode && (o.dnt = !0), this.player = new e.Player(this.elements.$backgroundVideoContainer, o), this.handleVimeoStartEndTimes(i), this.player.ready().then(() => { jQuery(this.player.element).addClass("elementor-background-video-embed"), this.changeVideoSize() }) } handleVimeoStartEndTimes(e) { e.background_video_start && this.player.on("play", t => { 0 === t.seconds && this.player.setCurrentTime(e.background_video_start) }), this.player.on("timeupdate", t => { e.background_video_end && e.background_video_end < t.seconds && (e.background_play_once ? this.player.pause() : this.player.setCurrentTime(e.background_video_start)), this.player.getDuration().then(i => { e.background_video_start && !e.background_video_end && t.seconds > i - .5 && this.player.setCurrentTime(e.background_video_start) }) }) } prepareYTVideo(e, t) { const i = this.elements.$backgroundVideoContainer, o = this.getElementSettings(); let n = e.PlayerState.PLAYING; window.chrome && (n = e.PlayerState.UNSTARTED); const s = { videoId: t, events: { onReady: () => { this.player.mute(), this.changeVideoSize(), this.startVideoLoop(!0), this.player.playVideo() }, onStateChange: t => { switch (t.data) { case n: i.removeClass("elementor-invisible elementor-loading"); break; case e.PlayerState.ENDED: "function" == typeof this.player.seekTo && this.player.seekTo(o.background_video_start || 0), o.background_play_once && this.player.destroy() } } }, playerVars: { controls: 0, rel: 0, playsinline: 1, cc_load_policy: 0 } }; o.background_privacy_mode && (s.host = "https://www.youtube-nocookie.com", s.origin = window.location.hostname), i.addClass("elementor-loading elementor-invisible"), this.player = new e.Player(this.elements.$backgroundVideoEmbed[0], s) } activate() { let e, t = this.getElementSettings("background_video_link"); const i = this.getElementSettings("background_play_once"); if (-1 !== t.indexOf("vimeo.com") ? (this.videoType = "vimeo", this.apiProvider = elementorFrontend.utils.vimeo) : t.match(/^(?:https?:\/\/)?(?:www\.)?(?:m\.)?(?:youtu\.be\/|youtube\.com)/) && (this.videoType = "youtube", this.apiProvider = elementorFrontend.utils.youtube), this.apiProvider) e = this.apiProvider.getVideoIDFromURL(t), this.apiProvider.onApiReady(i => { "youtube" === this.videoType && this.prepareYTVideo(i, e), "vimeo" === this.videoType && this.prepareVimeoVideo(i, t) }); else { this.videoType = "hosted"; const e = this.getElementSettings("background_video_start"), o = this.getElementSettings("background_video_end"); (e || o) && (t += "#t=" + (e || 0) + (o ? "," + o : "")), this.elements.$backgroundVideoHosted.attr("src", t).one("canplay", this.changeVideoSize.bind(this)), i && this.elements.$backgroundVideoHosted.on("ended", () => { this.elements.$backgroundVideoHosted.hide() }) } elementorFrontend.elements.$window.on("resize elementor/bg-video/recalc", this.changeVideoSize) } deactivate() { "youtube" === this.videoType && this.player.getIframe() || "vimeo" === this.videoType ? this.player.destroy() : this.elements.$backgroundVideoHosted.removeAttr("src").off("ended"), elementorFrontend.elements.$window.off("resize", this.changeVideoSize) } run() { const e = this.getElementSettings(); (e.background_play_on_mobile || "mobile" !== elementorFrontend.getCurrentDeviceMode()) && ("video" === e.background_background && e.background_video_link ? this.activate() : this.deactivate()) } onInit() { super.onInit(...arguments), this.changeVideoSize = this.changeVideoSize.bind(this), this.run() } onElementChange(e) { "background_background" === e && this.run() } } t.default = BackgroundVideo } } ]);