1/** 2 * ÐниÑиализаÑÐ¸Ñ Ð»Ð°Ð¹ÑбокÑа галеÑеи (GLightbox). 3 * 4 * ФоÑо в каÑÑомном ÑлайдеÑе (.galleryAnim) обÑÑнÑÑÑ Ð² 5 * <a class="glightbox" data-gallery="tl-gallery"> (Ñм. ÑаблонÑ). Swiper в 6 * Ñежиме loop клониÑÑÐµÑ ÑлайдÑ, поÑÑÐ¾Ð¼Ñ ÐРиÑполÑзÑем деклаÑаÑивнÑй selector 7 * (инаÑе ÐºÐ»Ð¾Ð½Ñ Ð¿Ð¾Ð¿Ð°Ð»Ð¸ Ð±Ñ Ð² лайÑÐ±Ð¾ÐºÑ Ð´ÑблÑми). ÐмеÑÑо ÑÑого ÑобиÑаем ÑпиÑок 8 * кадÑов из Ð ÐÐÐЬÐЫХ (не клониÑованнÑÑ ) Ñлайдов и оÑкÑÑваем нÑжнÑй индекÑ: 9 * - кликом по ÑоÑо (делегиÑование Ð»Ð¾Ð²Ð¸Ñ ÐºÐ»Ð¸Ðº и по клонам); 10 * - кнопкой в ÑлайдеÑе (galleryAnim__remove) â ÑеÑез window.tlGalleryLightbox. 11 * swiper.realIndex и data-swiper-slide-index ÑовпадаÑÑ Ñ Ð¸Ð½Ð´ÐµÐºÑами ÑÑого ÑпиÑка. 12 */ 13(function () { 14 "use strict"; 15 16 function init() { 17 if (typeof window.GLightbox !== "function") return; 18 19 var slider = document.querySelector(".galleryAnim__slider"); 20 21 // ФолбÑк: еÑли каÑÑомного ÑлайдеÑа Ð½ÐµÑ â обÑÑÐ½Ð°Ñ Ð´ÐµÐºÐ»Ð°ÑаÑÐ¸Ð²Ð½Ð°Ñ Ð¿Ð¾Ð´Ð°Ñа. 22 if (!slider) { 23 window.GLightbox({ 24 selector: ".glightbox", 25 loop: true, 26 zoomable: true, 27 touchNavigation: true, 28 openEffect: "fade", 29 closeEffect: "fade", 30 slideEffect: "fade" 31 }); 32 return; 33 } 34 35 var realAnchors = slider.querySelectorAll( 36 ".swiper-slide:not(.swiper-slide-duplicate) a.glightbox" 37 ); 38 var elements = Array.prototype.map.call(realAnchors, function (a) { 39 return { href: a.getAttribute("href"), type: "image" }; 40 }); 41 if (!elements.length) return; 42 43 // ÐÑÑжок ÑÑÑаниÑÑ Ð½Ð°Ð²ÐµÑÑ Ð¿Ñи оÑкÑÑÑии леÑиÑÑÑ ÑиÑÑо в CSS 44 // (styles/gallery-lightbox.css, пÑавило html.glightbox-open): GLightbox менÑл 45 // overflow/height коÑневого <html> â а ÑÑо ÑкÑолл-конÑÐµÐ¹Ð½ÐµÑ Ð¿Ñи 46 // html,body{height:100%} â и ÑбÑаÑÑвал scrollTop. ÐдеÑÑ Ñо ÑкÑоллом делаÑÑ 47 // ниÑего не нÑжно. 48 var lightbox = window.GLightbox({ 49 elements: elements, 50 loop: true, 51 zoomable: true, 52 touchNavigation: true, 53 openEffect: "fade", 54 closeEffect: "fade", 55 slideEffect: "fade" 56 }); 57 58 // ÐÐ½Ð´ÐµÐºÑ ÑеалÑного Ñлайда (ÑÑÑойÑив к клонам loop-Ñежима). 59 function realIndexOf(slide) { 60 if (!slide) return 0; 61 var attr = slide.getAttribute("data-swiper-slide-index"); 62 if (attr !== null && attr !== "" && !isNaN(parseInt(attr, 10))) { 63 return parseInt(attr, 10); 64 } 65 var reals = slider.querySelectorAll( 66 ".swiper-slide:not(.swiper-slide-duplicate)" 67 ); 68 var pos = Array.prototype.indexOf.call(reals, slide); 69 return pos < 0 ? 0 : pos; 70 } 71 72 // Ðлик по ÑоÑо оÑкÑÑÐ²Ð°ÐµÑ Ð»Ð°Ð¹ÑÐ±Ð¾ÐºÑ Ð½Ð° ÑекÑÑем кадÑе. 73 slider.addEventListener("click", function (e) { 74 var link = e.target.closest("a.glightbox"); 75 if (!link) return; 76 e.preventDefault(); 77 lightbox.openAt(realIndexOf(link.closest(".swiper-slide"))); 78 }); 79 80 // ÐаÑÑÐ¶Ñ â ÑÑÐ¾Ð±Ñ ÐºÐ½Ð¾Ð¿ÐºÐ° в script.js оÑкÑÑвала ÑекÑÑий ÐºÐ°Ð´Ñ ÑлайдеÑа. 81 window.tlGalleryLightbox = lightbox; 82 } 83 84 if (document.readyState === "loading") { 85 document.addEventListener("DOMContentLoaded", init); 86 } else { 87 init(); 88 } 89})();
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.