PageSourceSearch

https://distribucionmayorista.online/modules/custombanners/views/js/slider.js

js distribucionmayorista.online collected 2026-10-04 13:26:02 UTC 4,294 bytes, 133 lines download raw bytes

1/**
2*  @author    Amazzing
3*  @copyright Amazzing
4*  @license   https://opensource.org/licenses/afl-3.0.php  Academic Free License (AFL 3.0)
5*/
6
7$.extend(cb, {
8	carousels: {},
9	classes: {n: 'sw-nav', p: 'sw-pgn'},
10	resizeTimer: null,
11	initCarousels: function() {
12		cb.prepareAllCarousels();
13		$(window).on('resize.cb', function() {
14			cb.onResize();
15		});
16	},
17	prepareAllCarousels: function() {
18		$('.cb-wrapper').find('.cb-carousel').each(function() {
19			cb.renderCarousel($(this));
20		});
21	},
22	renderCarousel: function($container) {
23		var id = $container.closest('.cb-wrapper').data('wrapper'),
24			settings = cb.formatSettings($container.data('settings'));
25		if (!$container.data('ready')) {
26			cb.addHoverClassesIfRequired($container, settings);
27			cb.carousels[id] = new Swiper($container[0], cb.prepareCarouselParams($container, settings));
28			$container.data('ready', 1);
29		} else if (id in cb.carousels) {
30			$.extend(cb.carousels[id].params, cb.getResponsiveParams($container, settings, false));
31			cb.carousels[id].update();
32		}
33	},
34	formatSettings: function(settings) {
35		$.each(settings, function(i, v){
36			settings[i] = parseInt(v);
37		});
38		return settings;
39	},
40	addHoverClassesIfRequired: function($container, settings) {
41		if (cb_isDesktop) {
42			['n', 'p'].forEach(function(type) {
43				if (settings[type] && settings[type] == 2) {
44					$container.closest('.cb-wrapper').addClass(type+'-hover');
45				}
46			});
47		}
48	},
49	prepareCarouselParams: function($container, settings) {
50		var params = {
51				speed: settings.s,
52				autoplay: settings.a ? {
53					delay: settings.ps,
54					pauseOnMouseEnter: !!settings.ah,
55				} : false,
56				updateOnImagesReady: false,
57				spaceBetween: settings.sb,
58				on: {
59					init: function () {
60						cb.fixLazyDelay($container, settings);
61					},
62				},
63				// effect: 'cube', //"slide", "fade", "cube", "coverflow", "flip"
64			};
65		if (settings.n) {
66			$container.append('<div class="'+cb.classes.n+' prev"></div><div class="'+cb.classes.n+' next"></div>');
67			params.navigation = {
68				prevEl: $container.find('.'+cb.classes.n+'.prev')[0],
69				nextEl: $container.find('.'+cb.classes.n+'.next')[0],
70			};
71		}
72		if (settings.p) {
73			// pagination is added after container in order to not affect position of nav buttons
74			$container.after('<div class="'+cb.classes.p+'"></div>');
75			params.pagination = {
76				el: $container.parent().find('.'+cb.classes.p)[0],
77				bulletClass: cb.classes.p+'-bullet',
78				modifierClass: cb.classes.p+'-',
79				bulletActiveClass: 'active',
80				clickable: true,
81			};
82		}
83		$.extend(params, cb.getResponsiveParams($container, settings, true));
84		return params;
85	},
86	getResponsiveParams: function($container, settings, includeLoop) {
87		var itemsData = cb.getItemsData($container, settings),
88			params = {
89				slidesPerView: itemsData.num,
90				slidesPerGroup: settings.m && settings.m < itemsData.num ? settings.m : itemsData.num,
91			};
92		if (includeLoop) {
93			params.loop = settings.l && itemsData.overflow;
94		}
95		$container.parent().find('.'+cb.classes.n+', .'+cb.classes.p).toggleClass('hidden', !itemsData.overflow);
96		return params;
97	},
98	getItemsData: function($container, settings) {
99		var itemsNum = cb.getResponsiveItemsNum(settings),
100			wrapperWidth = $container.closest('.cb-wrapper').innerWidth(),
101			itemWidth = parseInt(wrapperWidth / itemsNum);
102		return {num: itemsNum, width: itemWidth, overflow: $container.find('.cb-item').length > itemsNum};
103	},
104	getResponsiveItemsNum: function(settings) {
105		var w = $(window).width(), itemsNum = settings.i;
106		if (w < 480) {itemsNum = settings.i_480;}
107		else if (w < 768) {itemsNum = settings.i_768;}
108		else if (w < 992) {itemsNum = settings.i_992;}
109		else if (w < 1200) {itemsNum = settings.i_1200;}
110		return itemsNum;
111	},
112	fixLazyDelay: function($container, settings) {
113		if (settings.a) {
114			setTimeout(function() {
115				cb.removeLazyAttr($container);
116			}, Math.round(settings.ps / 2));
117		} else {
118			$container.one('mouseenter.nolazy', function() {
119				cb.removeLazyAttr($container);
120			});
121		}
122	},
123	removeLazyAttr: function($container) {
124		$container.find('img[loading="lazy"]').removeAttr('loading');
125	},
126	onResize: function() {
127		clearTimeout(cb.resizeTimer);
128		cb.resizeTimer = setTimeout(function() {
129			cb.prepareAllCarousels();
130		}, 200);
131	},
132});
133/* since 3.0.0 */

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.