PageSourceSearch

https://www.waldis-berry.ch/cis-data/plugins/creanetLightbox/swiper/creanetLightbox.js?dt=202609211358

js waldis-berry.ch collected 2026-10-09 22:41:17 UTC 7,192 bytes, 258 lines download raw bytes

1function CreanetLightbox(options, fOptions){
2	let L = this;
3
4	$.extend(L.swiperOptions, fOptions);
5	$.extend(L.options, options);
6
7	if(typeof $("." + L.boxClass)[0] != "Object") $("body").prepend(`<div class="${L.boxClass}"></div>`);
8
9	L.box = $("." + L.boxClass);
10
11	L.collections = new Object;
12	L.swiper = undefined;
13	L.updateCollections();
14	L.initEventListener();
15};
16
17CreanetLightbox.prototype = {
18	version: "2.0.0",
19	isOpen: 0,
20	boxClass: "cislightbox",
21	titleIsVisible: false,
22	hasTitle: false,
23	triggerSelector: "[data-cislightbox]",
24	options: {
25		dev: false,
26		displayTextAlways: true
27	},
28	swiperOptions: {
29		lazy:true,
30		keyboard: {
31			enabled:true
32		},
33		pagination: {
34		  el: ".cislightbox__counter",
35		  type: "fraction",
36		  lockClass: "cislightbox__counter--never-hide"
37		},
38	},
39	addCollection: function(collection){
40		let L = this;
41
42		if(L.options["dev"]) console.log("addCollection");
43
44		if(L.collections.hasOwnProperty(collection)) return false;
45
46		L.collections[collection] = new Object();
47		L.collections[collection]["options"] = new Object();
48		L.collections[collection]["images"] = new Array();
49		L.collections[collection]["titles"] = new Array();
50
51		L.collections[collection]["options"]["id"] = parseInt(Math.random() * 1000000);
52	},
53	initEventListener: function(){
54		let L = this;
55
56		if(L.options["dev"]) console.log("initEventListener");
57
58		$(document).on("click", L.triggerSelector, function(e){
59			e.preventDefault();
60			if(L.options["dev"]) console.log("click");
61
62			let collection = $(this).data("cislightbox");
63
64			if(!L.collections.hasOwnProperty(collection)){
65				console.log("=> implement updateCollections()");
66			} else {
67				let imageIndex = L.collections[collection]["images"].indexOf($(this).attr("data-image"));
68
69				return L.open(collection, imageIndex);
70			}
71			return false;
72		});
73
74		if(!L.options.displayTextAlways){
75			$(document).on("click",".cislightbox__show-text-toggle", function(e){
76				e.preventDefault();
77				L.titleIsVisible = !L.titleIsVisible;
78
79				if(L.titleIsVisible){
80					L.box.find(".cislightbox__text-wrapper").slideDown();
81					$(this).addClass("cislightbox__show-text-toggle--on");
82				} else {
83					L.box.find(".cislightbox__text-wrapper").slideUp();
84					$(this).removeClass("cislightbox__show-text-toggle--on");
85				}
86			});
87		} else {
88			L.titleIsVisible = true;
89			L.box.find(".cislightbox__text-wrapper").slideDown();
90			$(this).addClass("cislightbox__show-text-toggle--on");
91		}
92	},
93	enableBoxListeners: function(){
94		let L = this;
95
96		if(L.options["dev"]) console.log("enableBoxListeners");
97
98		$(".cislightbox__close-background, .cislightbox__close-button").on("click", function(e){
99			e.preventDefault();
100			L.close();
101		});
102
103		$(".body--cislightbox-open").off("keyup").on("keyup", e => {
104			if(e.which == 27) L.close();
105		});
106	},
107	open: function(collection, initialIndex){
108		let L = this,
109			$gallery;
110
111		if(isNaN(initialIndex)) initialIndex = 0;
112
113		if(L.options["dev"]) console.log("open");
114		if(L.isOpen == 1) return false;
115
116		L.box.html(L.getBoxTemplate(collection));
117
118		$gallery = L.box.find(".cislightbox__wrapper");
119
120		L.collections[collection]["images"].forEach(function(v,i){
121			$gallery.append(L.getImageTemplate(v,L.collections[collection]["titles"][i] || ""));
122		});
123
124		if(initialIndex != -1) L.swiperOptions.initialSlide = initialIndex;
125
126		if(L.collections[collection]["images"].length >= 2){
127			$.extend(L.swiperOptions, {
128				loop:true,
129				navigation: {
130					prevEl: ".cislightbox__navigation--previous",
131					nextEl: ".cislightbox__navigation--next",
132				},
133			});
134		}
135
136		L.swiper = new Swiper(`.cislightbox__gallery--${L.collections[collection]["options"]["id"]}`, L.swiperOptions);
137
138		L.box.show();
139
140		$(".body").addClass("body--cislightbox-open");
141
142		L.enableBoxListeners();
143		L.isOpen = 1;
144	},
145	close: function(){
146		let L = this;
147
148		if(L.options["dev"]) console.log("close");
149		$(".body").removeClass("body--cislightbox-open");
150
151		if(L.swiper !== undefined || !L.swiper.__swiper__) L.swiper.destroy();
152
153		L.box.empty();
154		L.box.hide();
155
156		L.isOpen = 0;
157	},
158	addImage: function(collection, image, title){
159		let L = this;
160		if(L.options["dev"]) console.log("addImage");
161
162		if(L.collections[collection]["images"].indexOf(image) == -1){
163			L.collections[collection]["images"].push(image);
164
165			if(title) {
166				title.replace(/\n/g, "<br>");
167				L.hasTitle = true;
168			}
169
170			L.collections[collection]["titles"].push(title || null);
171		}
172	},
173	updateCollections: function(){
174		let L = this;
175
176		if(L.options["dev"]) console.log("updateCollections");
177
178		$(L.triggerSelector).each(function(){
179			let elementData = $(this).data(),
180				collection = elementData["cislightbox"],
181				image = elementData["image"],
182				title = null;
183
184				if ("title" in elementData) title = String(elementData["title"]);
185
186			if(!L.collections.hasOwnProperty(collection)) L.addCollection(collection);
187			L.addImage(collection, image, title);
188		})
189	},
190	removeCollection: function(collection){
191		let L = this;
192
193		if(typeof collection === "string"){
194			if(L.collections.hasOwnProperty(collection)){
195				delete L.collections[collection];
196			} else {
197				console.log("collection not found");
198
199				return false;
200			}
201		} else {
202			L.collections = {};
203		}
204
205		return true;
206	},
207	getImageTemplate: function(image, title){
208		let L = this,
209			T = new Array();
210
211		if(L.options["dev"]) console.log("getImageTemplate");
212
213		T.push(`
214			<div class="cislightbox__slide swiper-slide">
215				<div class="cislightbox__close-background"></div>
216				<img class="cislightbox__image" src="${image}" alt="${(title.length ? title : "")}" loading="lazy" />
217				<div class="swiper-lazy-preloader swiper-lazy-preloader-white"></div>
218				${title ? `
219					<div class="cislightbox__text-wrapper${!L.options.displayTextAlways ? " cislightbox__text-wrapper--hidden-initially" : ""}">
220						<div class="cislightbox__text">
221							<span class="swiper-no-swiping">${title}</span>
222						</div>
223					</div>
224				` : ''}
225			</div>
226		`);
227
228		return T.join("");
229	},
230	getBoxTemplate: function(collection){
231		let L = this,
232			T = new Array(),
233			displayShowTextToggle = L.hasTitle && !L.options.displayTextAlways;
234
235		if(L.options["dev"]) console.log("getBoxTemplate");
236
237		T.push(`
238			<div class="cislightbox__gallery cislightbox__gallery--${L.collections[collection]["options"]["id"]} swiper">
239				<div class="cislightbox__wrapper swiper-wrapper"></div>
240
241				${L.collections[collection]["images"].length >= 2 ? `
242					<div class="cislightbox__navigation cislightbox__navigation--previous swiper-button-prev"></div>
243					<div class="cislightbox__navigation cislightbox__navigation--next swiper-button-next"></div>
244				` : ''}
245
246				<div class="cislightbox__bar">
247					<div class="cislightbox__counter swiper-pagination"></div>
248					${displayShowTextToggle ? `
249						<div class="cislightbox__show-text-toggle"></div>
250					` : ''}
251					<div class="cislightbox__close-button"></div>
252				</div>
253			</div>
254		`);
255
256		return T.join("");
257	}
258};

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.