PageSourceSearch

https://lichi-shop.com/wp-content/plugins/alpus-flexbox/inc/modules/slider/slider.min.js?ver=1.0.0

js lichi-shop.com collected 2026-10-02 00:32:16 UTC 23,323 bytes, 378 lines download raw bytes

1!function (e) {
2    window.alpusFlexbox = window.alpusFlexbox || {},
3        e(window).on("elementor/frontend/init", (function () {
4            if (elementorFrontend && elementorModules.frontend) {
5                class e extends elementorModules.frontend.handlers.SwiperBase {
6                    getDefaultSettings() {
7                        return {
8                            selectors: {
9                                slider: ".elementor-slides-wrapper",
10                                slide: ".swiper-slide",
11                                slideInnerContents: ".swiper-slide-contents",
12                                activeSlide: ".swiper-slide-active",
13                                activeDuplicate: ".swiper-slide-duplicate-active"
14                            },
15                            classes: {
16                                animated: "animated",
17                                kenBurnsActive: "elementor-ken-burns--active",
18                                slideBackground: "swiper-slide-bg"
19                            },
20                            attributes: {
21                                dataSliderOptions: "slider_options",
22                                dataAnimation: "animation"
23                            }
24                        }
25                    }
26                    getDefaultElements() {
27                        const e = this.getSettings("selectors")
28                            , t = {
29                                $swiperContainer: this.$element.find(e.slider)
30                            };
31                        return t.$slides = t.$swiperContainer.find(e.slide),
32                            t
33                    }
34                    getSwiperOptions() {
35                        const e = this.getElementSettings()
36                            , t = +e.slides_to_show || 1
37                            , s = 1 === t
38                            , i = elementorFrontend.config.responsive.activeBreakpoints
39                            , n = {
40                                mobile: 1,
41                                tablet: s ? 1 : 2
42                            }
43                            , a = {
44                                autoplay: this.getAutoplayConfig(),
45                                grabCursor: !0,
46                                initialSlide: this.getInitialSlide(),
47                                slidesPerView: t,
48                                slidesPerGroup: 1,
49                                parallax: "parallax" === e.transition,
50                                loop: "yes" === e.infinite,
51                                centeredSlides: "yes" === e.center_mode,
52                                speed: e.transition_speed,
53                                effect: e.transition,
54                                observeParents: !0,
55                                observer: !0,
56                                handleElementorBreakpoints: 0,
57                                watchSlidesProgress: true,
58                                on: {
59                                    slideChange: () => {
60                                        this.handleKenBurns()
61                                    }
62                                },
63                                breakpoints: {}
64                            };
65                        let o = t;
66                        Object.keys(i).reverse().forEach((t => {
67                            const s = n[t] ? n[t] : o;
68                            a.breakpoints[i[t].value + 1] = {
69                                slidesPerView: +e["slides_to_show_" + t] || s,
70                                slidesPerGroup: +e["slides_to_scroll_" + t] || 1
71                            },
72                                e.slide_spacing && (a.breakpoints[i[t].value + 1].spaceBetween = this.getSpaceBetween(t)),
73                                o = +e["slides_to_show_" + t] || s
74                        }
75                        )),
76                            e.slide_spacing && (a.spaceBetween = this.get
76SpaceBetween());
77                        const r = "arrows" === e.navigation || "both" === e.navigation
78                            , l = "dots" === e.navigation || "both" === e.navigation;
79                        return r && (a.navigation = {
80                            prevEl: ".elementor-swiper-button-prev",
81                            nextEl: ".elementor-swiper-button-next"
82                        }),
83                            e.autoheight && (a.autoHeight = 1),
84                            e.disable_drag && (a.allowTouchMove = !1),
85                            l && e.pagination && (a.pagination = {
86                                el: ".swiper-pagination",
87                                type: e.pagination,
88                                clickable: !0
89                            },
90                                "dynamic" == e.pagination && (a.pagination.dynamicBullets = !0,
91                                    delete a.pagination.type)),
92                            !0 === a.loop && (a.loopedSlides = this.getSlidesCount()),
93                            s ? "fade" === a.effect && (a.fadeEffect = {
94                                crossFade: !0
95                            }) : a.slidesPerGroup = +e.slides_to_scroll || 1,
96                            "coverflow" == a.effect ? a.coverflowEffect = {
97                                rotate: 50,
98                                stretch: 0,
99                                depth: 100,
100                                modifier: 1,
101                                slideShadows: !0
102                            } : "creative" == a.effect ? a.creativeEffect = {
103                                prev: {
104                                    shadow: !0,
105                                    translate: [0, 0, -400]
106                                },
107                                next: {
108                                    translate: ["100%", 0, 0]
109                                }
110                            } : "creative2" == a.effect ? (a.effect = "creative",
111                                a.creativeEffect = {
112                                    perspective: !0,
113                                    limitProgress: 2,
114                                    shadowPerProgress: !0,
115                                    prev: {
116                                        shadow: !0,
117                                        translate: ["-10%", 0, -200],
118                                        rotate: [0, 0, -2]
119                                    },
120                                    next: {
121                                        shadow: !1,
122                                        translate: ["120%", 0, 0]
123                                    }
124                                }) : "creative3" == a.effect ? (a.effect = "creative",
125                                    a.creativeEffect = {
126                                        prev: {
127                                            shadow: !0,
128                                            translate: ["-125%", 0, -800],
129                                            rotate: [0, 0, -90]
130                                        },
131                                        next: {
132                                            shadow: !0,
133                                            translate: ["125%", 0, -800],
134                                            rotate: [0, 0, 90]
135                                        }
136                                    }) : "creative4" == a.effect ? (a.effect = "creative",
137                                        a.creativeEffect = {
138                                            prev: {
139                                                shadow: !0,
140                                                origin: "left center",
141                                                translate: ["-5%", 0, -200],
142                                                rotate: [0, 100, 0]
143                                            },
144                                            next: {
145                                                origin: "right center",
146                                                translate: ["5%", 0, -200],
147                                                rotate: [0, -100, 0]
148                                            }
149                                        }) : "cube" == a.effect ? a.cubeEffect = {
150                                            shadow: !0,
151                                            slideShadows: !0,
152                                            shadowOffset: 20,
153                                            shadowScale: .94
154                                        } : "coverflow2" == a.effect && (a.effect = "coverflow",
155                                            a.coverflowEffect = {
156                                                rotate: 0,
157                                                stretch: 0,
158                                                depth: 100,
159                                                modifier: 3,
160                                                slideShadows: !0
161                                            }),
162                            a
163                    }
164                    getAutoplayConfig() {
165                        const e = this.getElementSettings();
166                        return "yes" === e.autoplay && {
167                            stopOnLastSlide: !0,
168                            delay: e.autoplay_speed,
169                            disableOnInteraction: "yes" === e.pause_on_interaction
170                        }
171                    }
172                    initSingleSlideAnimations() {
173                        const e = this.getSettings()
174                            , t = this.elements.$swiperContainer.data(e.attributes.dataAnimation);
175                        this.elements.$swiperContainer.find("." + e.classes.slideBackground).addClass(e.classes.kenBurnsActive),
176                            t && this.elements.$swiperContainer.find(e.selectors.slideInnerContents).addClass(e.classes.animated + " " + t)
177                    }
178                    adjustConfig(config) {
179                        const elementorBreakpoints = elementorFrontend.config.responsive.activeBreakpoints,
180                            elementorBreakpointValues = elementorFrontend.breakpoints.getBreakpointValues();
181                        Object.keys(config.breakpoints).forEach(configBPKey => {
182                            const configBPKeyInt = parseInt(configBPKey);
183                            let breakpointToUpdate;
184
185                            // The `configBPKeyInt + 1` is a BC Fix for Elementor Pro Carousels from 2.8.0-2.8.3 used with Elementor >= 2.9.0
186                            if (configBPKeyInt === elementorBreakpoints.mobile.value + 1 || configBPKeyInt + 1 === elementorBreakpoints.mobile.value + 1) {
187                                // This handles the mobile breakpoint. Elementor's default sm breakpoint is never actually used,
188                                // so the mobile breakpoint (md) needs to be handled separately and set to the 0 breakpoint (xs)
189                                breakpointToUpdate = 0;
190                            } else if (elementorBreakpoints.widescreen && (configBPKeyInt === elementorBreakpoints.widescreen.value + 1 || configBPKeyInt + 1 === elementorBreakpoints.widescreen.value + 1)) {
191                                // Widescreen is a min-width breakpoint. Since in Swiper >5.0 the breakpoint system is min-width based,
192                                // the value we pass to the Swiper instance in this case is the breakpoint from the user, unchanged.
193                                breakpointToUpdate = configBPKeyInt;
194                            } else {
195                                // Find the index of the current config breakpoint in the Elementor Breakpoints array
196                                const currentBPIndexInElementorBPs = elementorBreakpointValues.findIndex(elementorBP => {
197                                    // BC Fix for Elementor Pro Carousels from 2.8.0-2.8.3 used with Elementor >= 2.9.0
198                                    return configBPKeyInt === elementorBP + 1 || configBPKeyInt + 1 === elementorBP + 1;
199                                });
200
201                                // For all other Swiper config breakpoints, move them one breakpoint down on the breakpoint list,
202                                // according to the array of Elementor's global breakpoints
203                                breakpointToUpdate = elementorBreakpointValues[currentBPIndexInElementorBPs - 1] + 1;
204                            }
205                            config.breakpoints[breakpointToUpdate] = config.breakpoints[configBPKey];
206
207                            // Then reset the settings in the original breakpoint key to the default values
208                            config.breakpoints[configBPKey] = {
209                                slidesPerView: config.slidesPerView,
210                                slidesPerGroup: config.slidesPerGroup ? config.slidesPerGroup : 1
211                            };
212                        });
213                        return config;
214                    }
215                    async initSlider() {
216                        const e = this.elements.$swiperContainer;
217                        if (!e.length)
218                            return;
219                        if (1 >= this.getSlidesCount())
220                            return;
221                        const t = elementorFrontend.utils.swiper;
222                        var s = this.getSwiperOptions();
223                        this.adjustConfig(s);
224                        this.swiper = await new t(e, s),
225                            e.data("swiper", this.swiper),
226                            this.handleKenBurns();
227                        const i = this.getElementSettings();
228                        "creative2" == i.transition && this.elements.$swiperContainer.css("overflow", "visible"),
229                            i.pause_on_hover && this.togglePauseOnHover(!0);
230                        const n = this.getSettings()
231                            , a = e.data(n.attributes.dataAnimation);
232                        this.$element.filter(function () {
233                            var $anim_obj = jQuery(this).find('.elementor-invisible');
234                            if ($anim_obj.length) {
235                                $anim_obj.addClass('slide-animate');
236                                return true;
237                            }
238                            return false;
239                        })
240                        var timers = [];
241                        this.swiper.on("slideChangeTransitionStart", (function () {
242                            e.find(n.selectors.slideInnerContents).removeClass(n.classes.animated + " " + a).hide()
243
244                            if (timers.length) {
245                                for (var i = 0; i < timers.length; i++) {
246                                    clearTimeout(timers[i]);
247                                }
248                                timers = [];
249                            }
250
251                            // Hide elements inside carousel
252                            e.find('[data-plugin-animated-letters]').addClass('invisible');
253                            // Animated Letters
254                            e.find('[data-plugin-animated-letters]').trigger('animated.letters.destroy');
255
256                            var $active = jQuery(this.$el).find('.swiper-slide-active');
257                            $active.find('.elementor-invisible').each(function () {
258                                var $animation_item = jQuery(this),
259                                    settings = $animation_item.data('settings');
260                                if (settings && (settings._animation || settings.animation)) {
261                                    var animation = settings._animation || settings.animation,
262                                        delay = settings._animation_delay || settings.animation_delay || 0;
263                                    var _resTimer = setTimeout(function () {
264                                        $animation_item.removeClass('elementor-invisible').addClass('animated ' + animation);
265                                    }, delay);
266                                    timers.push(_resTimer);
267                                }
268                            });
269                        }
270                        )),
271                            this.swiper.on("slideChangeTransitionEnd", (function () {
272                                e.find(n.selectors.slideInnerContents).show().addClass(n.classes.animated + " " + a)
273                                // Animated Letters
274                                e.find('[data-plugin-animated-letters]').removeClass('invisible');
275                                e.find('.swiper-slide-active [data-plugin-animated-letters]').trigger('animated.letters.initialize');
276                                // if ( timers.length ) {
277                                //     for (var i = 0; i < timers.length; i++) {
278                                //         clearTimeout(timers[i]);
279                                //     }
280                                //     timers = [];
281                                // }
282                                var $this = jQuery(this.$el);
283                                $this.find('.swiper-slide:not(.swiper-slide-active) .slide-animate').addClass('elementor-invisible').each(function () {
284                                    var $animation_item = jQuery(this),
285                                        settings = $animation_item.data('settings');
286                                    if (settings._animation || settings.animation) {
287                                        $animation_item.removeClass(settings._animation || settings.animation).removeClass('animated');
288                                    }
289                                });
290                            }
291                            ))
292                        if (typeof jQuery.fn.themePluginLazyLoad == 'function') {
293                            this.$element.find('.swiper-slide-duplicate .porto-lazyload:not(.lazy-load-loaded)').themePluginLazyLoad({ effect: 'fadeIn', effect_speed: 400 })
294                        }
295                    }
296                    onInit() {
297                        let index = 1;
298                        var $slider = this.$element;
299                        elementorFrontend.isEditMode() && this.findElement(".alpus-nested-slider>.e-con").each((function () {
300                            if (!jQuery(this).parent().hasClass('swiper-slide')) {
301                                $slider.find('.swiper-slide:nth-child(' + index + ')').append(jQuery(this));
302                            }
303                            index++;
304                        }
305                        ));
306                        elementorModules.frontend.handlers.Base.prototype.onInit.apply(this, arguments),
307                            2 > this.getSlidesCount() ? this.initSingleSlideAnimations() : this.initSlider()
308                    }
309                    getChangeableProperties() {
310                        return {
311                            pause_on_hover: "pauseOnHover",
312                            pause_on_interaction: "disableOnInteraction",
313                            autoplay_speed: "delay",
314                            transition_speed: "speed"
315                        }
316                    }
317                    updateSwiperOption(e) {
318                        if (0 === e.indexOf("width"))
319                            return void this.swiper.update();
320                        const t = this.getElementSettings()
321                            , s = t[e];
322                        let i = this.getChangeableProperties()[e]
323                            , n = s;
324                        switch (e) {
325                            case "autoplay_speed":
326                                i = "autoplay",
327                                    n = {
328                                        stopOnLastSlide: !0,
329                                        delay: s,
330                                        disableOnInteraction: "yes" === t.pause_on_interaction
331                                    };
332                                break;
333                            case "pause_on_hover":
334                                this.togglePauseOnHover("yes" === s);
335                                break;
336                            case "pause_on_interaction":
337                                n = "yes" === s
338                        }
339                        "pause_on_hover" !== e && (this.swiper.params[i] = n),
340                            this.swiper.update()
341                    }
342                    onElementChange(e) {
343                        if (0 === e.indexOf("slide_spacing"))
344                            return void this.updateSpaceBetween(e);
345                        if (1 >= this.getSlidesCount())
346                            return;
347                        const t = this.getChangeableProperties();
348                        Object.prototype.hasOwnProperty.call(t, e) && (this.updateSwiperOption(e),
349                            this.swiper.autoplay.start())
350                    }
351                    getSpaceBetween() {
352                        let e = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : null;
353                        return elementorFrontend.utils.controls.getResponsiveControlValue(this.getElementSettings(), "slide_spacing", "size", e) || 0
354                    }
355                    updateSpaceBetween(e) {
356                        const t = e.match("slide_spacing_(.*)")
357                            , s = t ? t[1] : "desktop"
358                            , i = this.getSpaceBetween(s);
359                        if ("desktop" !== s) {
360                            if (typeof this.swiper.params.breakpoints[elementorFrontend.config.responsive.activeBreakpoints[s].value] == 'undefined') {
361                                this.swiper.params.breakpoints[elementorFrontend.config.responsive.activeBreakpoints[s].value] = [];
362                            }
363                            this.swiper.params.breakpoints[elementorFrontend.config.responsive.activeBreakpoints[s].value].spaceBetween = i
364                        }
365                        this.swiper.params.spaceBetween = i;
366                        this.swiper.update();
367                    }
368                    onEditSettingsChange(e) {
369                        1 >= this.getSlidesCount() || "activeItemIndex" === e && (this.swiper.slideToLoop(this.getEditSettings("activeItemIndex") - 1),
370                            this.swiper.autoplay.stop())
371                    }
372                }
373                alpusFlexbox.SlidesHandler = e,
374                    elementorFrontend.elementsHandler.attachHandler("alpus-nested-slider", e)
375            }
376        }
377        ))
378}(window.jQuery);

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.