1/** ========================================================== 2 3* jquery lightGallery.js v1.1.2 4* http://sachinchoolur.github.io/lightGallery/ 5* Released under the Apache License - http://opensource.org/licenses/Apache-2.0 ---- FREE ---- 6 7=========================================================/**/ 8; 9(function ($) { 10 "use strict"; 11 $.fn.lightGallery = function (options) { 12 var defaults = { 13 mode: 'slide', 14 useCSS: true, 15 easing: 'ease', //'cubic-bezier(0.25, 0, 0.25, 1)',// 16 speed: 1000, 17 closable: true, 18 loop: false, 19 auto: false, 20 pause: 4000, 21 preload:1,//number of preload slides. will exicute only after the current slide is fully loaded. ex:// you clicked on 4th image and if preload = 1 then 3rd slide and 5th slide will be loaded in the background after the 4th slide is fully loaded.. if preload is 2 then 2nd 3rd 5th 6th slides will be preloaded.. ... ... 22 escKey: true, 23 rel: false, 24 lang: { 25 allPhotos: 'All photos' 26 }, 27 exThumbImage: false, 28 index: false, 29 thumbnail: true, 30 caption: true, 31 captionLink: false, 32 desc: true, 33 counter: false, 34 controls: true, 35 hideControlOnEnd: false, 36 mobileSrc: false, 37 mobileSrcMaxWidth: 640, 38 //touch 39 swipeThreshold: 50, 40 vimeoColor: 'CCCCCC', 41 videoAutoplay: true, 42 videoMaxWidth: 855, 43 dynamic: false, 44 //callbacks 45 dynamicEl: [], 46 onOpen: function () {}, 47 onSlideBefore: function () {}, 48 onSlideAfter: function () {}, 49 onSlideNext: function () {}, 50 onSlidePrev: function () {}, 51 onBeforeClose: function () {}, 52 onCloseAfter: function () {} 53 }, 54 el = $(this), 55 $children, 56 index, 57 lightGalleryOn = false, 58 html = '<div id="lightGallery-outer"><div id="lightGallery-Gallery"><div id="lightGallery-slider"></div><a id="lightGallery-close" class="close"></a></div></div>', 59 isTouch = document.createTouch !== undefined || ('ontouchstart' in window) || ('onmsgesturechange' in window) || navigator.msMaxTouchPoints, 60 $gallery, $galleryCont, $slider, $slide, $prev, $next, prevIndex, $thumb_cont, $thumb, windowWidth, interval, usingThumb = false, 61 aTiming = false, 62 aSpeed = false; 63 var settings = $.extend(true, {}, defaults, options); 64 var lightGallery = { 65 init: function () { 66 el.each(function () { 67 var $this = $(this); 68 if (settings.dynamic == true) { 69 $children = settings.dynamicEl; 70 index = 0; 71 prevIndex = index; 72 setUp.init(index); 73 } else { 74 $children = $(this).children(); 75 $children.click(function (e) { 76 if (settings.rel == true && $this.data('rel')) { 77 var rel = $this.data('rel'); 78 $children = $('[data-rel="' + rel + '"]').children(); 79 } else { 80 $children = $this.children(); 81 } 82 e.preventDefault(); 83 e.stopPropagation(); 84 index = $children.index(this); 85 prevIndex = index; 86 setUp.init(index); 87 }); 88 } 89 }); 90 }, 91 }; 92 var setUp = { 93 init: function () { 94 this.start(); 95 this.build(); 96 }, 97 start: function () { 98 this.structure(); 99 this.getWidth(); 100 this.closeSlide(); 101 }, 102 build: function () { 103 this.autoStart(); 104 this.addCaption(); 105 this.addDesc(); //description 106 this.counter(); 107 this.slideTo(); 108 this.buildThumbnail(); 109 this.keyPress(); 110 if(settings.index) { 111 this.slide(settings.index); 112 } 113 else { 114 this.slide(index); 115 } 116 this.touch(); 117 this.enableTouch(); 118 119 setTimeout(function () { 120 $gallery.addClass('opacity'); 121 }, 50); 122 }, 123 structure: function () { 124 $('body').append(html).addClass('lightGallery'); 125 $galleryCont = $('#lightGallery-outer'); 126 $gallery = $('#lightGallery-Gallery'); 127 $slider = $gallery.find('#lightGallery-slider'); 128 var slideList = ''; 129 if (settings.dynamic == true) { 130 for (var i = 0; i < settings.dynamicEl.length; i++) { 131 slideList += '<div class="lightGallery-slide"></div>'; 132 } 133 } else { 134 $children.each(function () { 135 slideList += '<div class="lightGallery-slide"></div>'; 136 }); 137 } 138 $slider.append(slideList); 139 $slide = $gallery.find('.lightGallery-slide'); 140 }, 141 closeSlide: function () { 142 var $this = this; 143 if(settings.closable) { 144 $('.lightGallery-slide') 145 .on('click', function(event) { 146 console.log(event.target); 147 if($(event.target).is('.lightGallery-slide')) { 148 $this.destroy(); 149 } 150 }) 151 ; 152 } 153 $('#lightGallery-close').bind('click touchend', function () { 154 $this.destroy(); 155 }); 156 }, 157 getWidth: function () { 158 var resizeWindow = function () { 159 windowWidth = $(window).width(); 160 }; 161 $(window).bind('resize.lightGallery', resizeWindow()); 162 }, 163 doCss: function () { 164 var support = function () { 165 var transition = ['transition', 'MozTransition', 'WebkitTransition', 'OTransition', 'msTransition', 'KhtmlTransition']; 166 var root = document.documentElement; 167 for (var i = 0; i < transition.length; i++) { 168 if (transition[i] in root.style) { 169 //cssPrefix = transition[i].replace('Transition', '').toLowerCase(); 170 //cssPrefix == 'transition' ? cssPrefix = 'transition' : cssPrefix = ('-'+cssPrefix+'-transition'); 171 return true; 172 } 173 } 174 }; 175 if (settings.useCSS && support()) { 176 return true; 177 } 178 return false; 179 }, 180 enableTouch: function () { 181 var $this = this; 182 if (isTouch){ 183 var startCoords = {}, 184 endCoords = {}; 185 $('body').on('touchstart.lightGallery', function(e) { 186 endCoords = e.originalEvent.targetTouches[0]; 187 startCoords.pageX = e.originalEvent.targetTouches[0].pageX; 188 startCoords.pageY = e.originalEvent.targetTouches[0].pageY; 189 }); 190 $('body').on('touchmove.lightGallery', function(e) { 191 var orig = e.originalEvent; 192 endCoords = orig.targetTouches[0]; 193 e.preventDefault(); 194 }); 195 $('body').on('touchend.lightGallery', function(e) {
196 var distance = endCoords.pageX - startCoords.pageX, 197 swipeThreshold = settings.swipeThreshold; 198 if( distance >= swipeThreshold ){ 199 $this.prevSlide(); 200 clearInterval(interval); 201 } 202 else if( distance <= - swipeThreshold ){ 203 $this.nextSlide(); 204 clearInterval(interval); 205 } 206 }); 207 } 208 }, 209 touch: function () { 210 var xStart, xEnd; 211 var $this = this; 212 $('.lightGallery').bind('mousedown', function (e) { 213 e.stopPropagation(); 214 e.preventDefault(); 215 xStart = e.pageX; 216 }); 217 $('.lightGallery').bind('mouseup', function (e) { 218 e.stopPropagation(); 219 e.preventDefault(); 220 xEnd = e.pageX; 221 if (xEnd - xStart > 20) { 222 $this.prevSlide(); 223 } else if (xStart - xEnd > 20) { 224 $this.nextSlide(); 225 } 226 }); 227 }, 228 isVideo: function (src) { 229 var youtube = src.match(/\/\/(?:www\.)?youtu(?:\.be|be\.com)\/(?:watch\?v=|embed\/)?([a-z0-9_\-]+)/i); 230 var vimeo = src.match(/\/\/(?:www\.)?vimeo.com\/([0-9a-z\-_]+)/i); 231 if (youtube || vimeo) { 232 return true; 233 } 234 }, 235 loadVideo: function (src, _id) { 236 var youtube = src.match(/\/\/(?:www\.)?youtu(?:\.be|be\.com)\/(?:watch\?v=|embed\/)?([a-z0-9_\-]+)/i); 237 var vimeo = src.match(/\/\/(?:www\.)?vimeo.com\/([0-9a-z\-_]+)/i); 238 var video = ''; 239 var a =''; 240 if (youtube) { 241 if (settings.videoAutoplay === true && lightGalleryOn === false) { 242 a = '?autoplay=1&rel=0&wmode=opaque'; 243 } else { 244 a = '?wmode=opaque'; 245 } 246 video = '<iframe id="video' + _id + '" width="560" height="315" src="//www.youtube.com/embed/' + youtube[1] + a + '" frameborder="0" allowfullscreen></iframe>'; 247 } else if (vimeo) { 248 if (settings.videoAutoplay === true && lightGalleryOn === false) { 249 a = 'autoplay=1&'; 250 } else { 251 a = ''; 252 } 253 video = '<iframe id="video' + _id + '" width="560" height="315" src="http://player.vimeo.com/video/' + vimeo[1] + '?' + a + 'byline=0&portrait=0&color=' + settings.vimeoColor + '" frameborder="0" webkitAllowFullScreen mozallowfullscreen allowFullScreen></iframe>'; 254 } 255 return '<div class="video_cont" style="max-width:' + settings.videoMaxWidth + 'px !important;"><div class="video">' + video + '</div></div>'; 256 }, 257 loadContent: function (index,rec) { 258 var $this = this; 259 var i, j, l = $children.length - index; 260 var src; 261 if(settings.preload>$children.length){ 262 settings.preload = $children.length; 263 } 264 if (settings.mobileSrc === true && windowWidth <= settings.mobileSrcMaxWidth) { 265 if (settings.dynamic == true) { 266 src = settings.dynamicEl[index]['mobileSrc']; 267 } else { 268 src = $children.eq(index).attr('data-responsive-src'); 269 } 270 } else { 271 if (settings.dynamic == true) { 272 src = settings.dynamicEl[index]['src']; 273 } else { 274 src = $children.eq(index).attr('data-src'); 275 } 276 } 277 if (!$this.isVideo(src)) { 278 if(!$slide.eq(index).hasClass('loaded')){ 279 $slide.eq(index).prepend('<img src="' + src + '" />'); 280 $slide.eq(index).addClass('loaded'); 281 } 282 if(rec===false){ 283 var complete = false; 284 if ($slide.eq(index).find('img')[0].complete){ 285 complete = true; 286 } 287 if(!complete){ 288 $slide.eq(index).find('img').on('load error',function(){ 289 var newIndex = index; 290 for(var k =0;k<=settings.preload;k++){ 291 if(k>=$children.length-index){ 292 break; 293 } 294 $this.loadContent(newIndex+k,true); 295 } 296 for(var h =0;h<=settings.preload;h++){ 297 if(newIndex-h<0){ 298 break; 299 } 300 $this.loadContent(newIndex-h,true); 301 } 302 }); 303 }else{ 304 var newIndex = index; 305 for(var k =0;k<=settings.preload;k++){ 306 if(k>=$children.length-index){ 307 break; 308 } 309 $this.loadContent(newIndex+k,true); 310 } 311 for(var h =0;h<=settings.preload;h++){ 312 if(newIndex-h<0){ 313 break; 314 } 315 $this.loadContent(newIndex-h,true); 316 } 317 } 318 } 319 } else { 320 if(!$slide.eq(index).hasClass('loaded')){ 321 if(rec===false && lightGalleryOn === true && settings.preload===0){ 322 setTimeout(function () { 323 $slide.eq(index).prepend($this.loadVideo(src, index)); 324 }, settings.speed); 325 }else{ 326 $slide.eq(index).prepend($this.loadVideo(src, index)); 327 } 328 $slide.eq(index).addClass('loaded'); 329 330 if (settings.auto && settings.videoAutoplay === true) { 331 clearInterval(interval); 332 } 333 } 334 335 if(rec===false){ 336 var complete = false; 337 if ($slide.eq(index).find('iframe')[0].complete){ 338 complete = true; 339 } 340 if(!complete){ 341 $slide.eq(index).find('iframe').on('load error',function(){ 342 var newIndex = index; 343 for(var k =0;k<=settings.preload;k++){ 344 if(k>=$children.length-index){ 345 break; 346 } 347 $this.loadContent(newIndex+k,true); 348 } 349 for(var h =0;h<=settings.preload;h++){ 350 $this.loadContent(newIndex-h,true); 351 } 352 }); 353 }else{ 354 var newIndex = index; 355 for(var k =0;k<=settings.preload;k++){ 356 $this.loadContent(newIndex+k,true); 357 } 358 for(var h =0;h<=settings.preload;h++){ 359 $this.loadContent(newIndex-h,true); 360 } 361 } 362 } 363 364 365 } 366 }, 367 addCaption: function () { 368 if (settings.caption === true) { 369 var i, title = false; 370 for (i = 0; i < $children.length; i++) { 371 if (settings.dynamic == true) { 372 title = settings.dynamicEl[i]['caption']; 373 } else { 374 title = $children.eq(i).attr('data-title'); 375 } 376 if (typeof title == 'undefined' || title == null) { 377 title = 'image ' + i + ''; 378 } 379 if (settings.captionLink === true) { 380 var link = null; 381 if (settings.dynamic == true) { 382 link = settings.dynamicEl[i]['link']; 383 } else { 384 link = $children.eq(i).attr('data-link'); 385 } 386 if (typeof link !== 'undefined' && link !== '') { 387 link = link 388 } else { 389 link = '#' 390 } 391 $slide.eq(i).append('<div class="info group"><a href="' + link + '" class="title">' + title + '</a></div>'); 392 } else { 393 $slide.eq(i).append('<div class="info group"><span class="title">' + title + '</span></div>'); 394 } 395 } 396 } 397 }, 398 addDesc: function () { 399 if (settings.desc === true) { 400 var i, description = false; 401 for (i = 0; i < $children.length; i++) { 402 if (settings.dynamic == true) { 403 description = settings.dynamicEl[i]['desc']; 404 } else { 405 description = $children.eq(i).attr('data-desc');; 406 } 407 if (typeof description == 'undefined' || description == null) { 408 description = 'image ' + i + ''; 409 } 410 if (settings.caption === false) { 411 $slide.eq(i).append('<div class="info group"><span class="desc">' + description + '</span></div>'); 412 } else { 413 $slide.eq(i).find('.info').append('<span class="desc">' + description + '</span>'); 414 } 415 } 416 } 417 }, 418 counter: function() { 419 if (settings.counter === true) { 420 var slideCount = $("#lightGallery-slider > div").length; 421 $gallery.append("<div id='lightGallery_counter'><span id='lightGallery_counter_current'></span> / <span id='lightGallery_counter_all'>"+slideCount+"</span></div>"); 422 } 423 }, 424 buildThumbnail: function () { 425 if (settings.thumbnail === true && $children.length > 1) { 426 var $this = this; 427 $gallery.append('<div class="thumb_cont"><div class="thumb_info"><span class="close ib"><i class="bUi-iCn-rMv-16" aria-hidden="true"></i></span></div><div class="thumb_inner"></div></div>'); 428 $thumb_cont = $gallery.find('.thumb_cont'); 429 $prev.after('<a class="cLthumb"></a>'); 430 $gallery.find('.cLthumb').bind('click touchend', function () { 431 $thumb_cont.addClass('open'); 432 if ($this.doCss() && settings.mode === 'slide') { 433 $slide.eq(index).prevAll().removeClass('nextSlide').addClass('prevSlide'); 434 $slide.eq(index).nextAll().removeClass('prevSlide').addClass('nextSlide'); 435 } 436 }); 437 $gallery.find('.close').bind('click touchend', function () { 438 $thumb_cont.removeClass('open'); 439 }); 440 var thumbInfo = $gallery.find('.thumb_info'); 441 var $thumb_inner = $gallery.find('.thumb_inner'); 442 var thumbList = ''; 443 var thumbImg; 444 if (settings.dynamic == true) { 445 for (var i = 0; i < settings.dynamicEl.length; i++) { 446 thumbImg = settings.dynamicEl[i]['thumb']; 447 thumbList += '<div class="thumb"><img src="' + thumbImg + '" /></div>'; 448 } 449 } else { 450 $children.each(function () { 451 if (settings.exThumbImage === false || typeof $(this).attr(settings.exThumbImage) == 'undefined' || $(this).attr(settings.exThumbImage) == null) { 452 thumbImg = $(this).find('img').attr('src'); 453 } else { 454 thumbImg = $(this).attr(settings.exThumbImage); 455 } 456 thumbList += '<div class="thumb"><img src="' + thumbImg + '" /></div>'; 457 }); 458 } 459 $thumb_inner.append(thumbList); 460 $thumb = $thumb_inner.find('.thumb'); 461 $thumb.bind('click touchend', function () { 462 usingThumb = true; 463 var index = $(this).index(); 464 $thumb.removeClass('active'); 465 $(this).addClass('active'); 466 $this.slide(index); 467 clearInterval(interval); 468 }); 469 thumbInfo.prepend('<span class="ib count">' + settings.lang.allPhotos + ' (' + $thumb.length + ')</span>'); 470 } 471 }, 472 slideTo: function () { 473 var $this = this; 474 if (settings.controls === true && $children.length > 1) { 475 $gallery.append('<div id="lightGallery-action"><a id="lightGallery-prev"></a><a id="lightGallery-next"></a></div>'); 476 $prev = $gallery.find('#lightGallery-prev'); 477 $next = $gallery.find('#lightGallery-next'); 478 $prev.bind('click', function () { 479 $this.prevSlide(); 480 clearInterval(interval); 481 }); 482 $next.bind('click', function () { 483 $this.nextSlide(); 484 clearInterval(interval); 485 }); 486 } 487 }, 488 autoStart: function () { 489 var $this = this; 490 if (settings.auto === true) { 491 interval = setInterval(function () { 492 if (index + 1 < $children.length) { 493 index = index; 494 } else { 495 index = -1; 496 } 497 index++; 498 $this.slide(index); 499 }, settings.pause); 500 } 501 }, 502 keyPress: function () { 503 var $this = this; 504 $(window).bind('keyup.lightGallery', function (e) { 505 e.preventDefault(); 506 e.stopPropagation(); 507 if (e.keyCode === 37) { 508 $this.prevSlide(); 509 clearInterval(interval); 510 } 511 if (e.keyCode === 38 && settings.thumbnail ==
511= true) { 512 if (!$thumb_cont.hasClass('open')) { 513 if ($this.doCss() && settings.mode === 'slide') { 514 $slide.eq(index).prevAll().removeClass('nextSlide').addClass('prevSlide'); 515 $slide.eq(index).nextAll().removeClass('prevSlide').addClass('nextSlide'); 516 } 517 $thumb_cont.addClass('open'); 518 } 519 } else if (e.keyCode === 39) { 520 $this.nextSlide(); 521 clearInterval(interval); 522 } 523 if (e.keyCode === 40 && settings.thumbnail === true) { 524 if ($thumb_cont.hasClass('open')) { 525 $thumb_cont.removeClass('open'); 526 } 527 } else if (settings.escKey === true && e.keyCode === 27) { 528 if (settings.thumbnail === true && $thumb_cont.hasClass('open')) { 529 $thumb_cont.removeClass('open'); 530 } else { 531 $this.destroy(); 532 } 533 } 534 }); 535 }, 536 nextSlide: function () { 537 var $this = this; 538 index = $slide.index($slide.eq(prevIndex)); 539 if (index + 1 < $children.length) { 540 index++; 541 $this.slide(index); 542 } else { 543 if (settings.loop) { 544 index = 0; 545 $this.slide(index); 546 } else if (settings.mode === 'fade' && settings.thumbnail === true && $children.length > 1) { 547 $thumb_cont.addClass('open'); 548 } 549 } 550 settings.onSlideNext.call(this); 551 }, 552 prevSlide: function () { 553 var $this = this; 554 index = $slide.index($slide.eq(prevIndex)); 555 if (index > 0) { 556 index--; 557 $this.slide(index); 558 } else { 559 if (settings.loop) { 560 index = $children.length - 1; 561 $this.slide(index); 562 } else if (settings.mode === 'fade' && settings.thumbnail === true && $children.length > 1) { 563 $thumb_cont.addClass('open'); 564 } 565 } 566 settings.onSlidePrev.call(this); 567 }, 568 slide: function (index) { 569 this.loadContent(index,false); 570 if (lightGalleryOn) { 571 if (!$slider.hasClass('on')) { 572 $slider.addClass('on'); 573 } 574 if (this.doCss() && settings.speed !== '') { 575 if (!$slider.hasClass('speed')) { 576 $slider.addClass('speed'); 577 } 578 if (aSpeed === false) { 579 $slider.css('transition-duration', settings.speed + 'ms'); 580 aSpeed = true; 581 } 582 } 583 if (this.doCss() && settings.easing !== '') { 584 if (!$slider.hasClass('timing')) { 585 $slider.addClass('timing'); 586 } 587 if (aTiming === false) { 588 $slider.css('transition-timing-function', settings.easing); 589 aTiming = true; 590 } 591 } 592 settings.onSlideBefore.call(this); 593 } 594 if (settings.mode === 'slide') { 595 var isiPad = navigator.userAgent.match(/iPad/i) != null; 596 if (this.doCss() && !$slider.hasClass('slide') && !isiPad) { 597 $slider.addClass('slide'); 598 }else if(this.doCss() && !$slider.hasClass('useLeft') &&isiPad){ 599 $slider.addClass('useLeft'); 600 } 601 /* if(this.doCss()){ 602 $slider.css({ 'transform' : 'translate3d('+(-index*100)+'%, 0px, 0px)' }); 603 }*/ 604 if (!this.doCss() && !lightGalleryOn) { 605 $slider.css({ 606 left: (-index * 100) + '%' 607 }); 608 //$slide.eq(index).css('transition','none'); 609 } else if (!this.doCss() && lightGalleryOn) { 610 $slider.animate({ 611 left: (-index * 100) + '%' 612 }, settings.speed, settings.easing); 613 } 614 } else if (settings.mode === 'fade') { 615 if (this.doCss() && !$slider.hasClass('fadeM')) { 616 $slider.addClass('fadeM'); 617 } else if (!this.doCss() && !$slider.hasClass('animate')) { 618 $slider.addClass('animate'); 619 } 620 if (!this.doCss() && !lightGalleryOn) { 621 $slide.fadeOut(100); 622 $slide.eq(index).fadeIn(100); 623 } else if (!this.doCss() && lightGalleryOn) { 624 $slide.eq(prevIndex).fadeOut(settings.speed, settings.easing); 625 $slide.eq(index).fadeIn(settings.speed, settings.easing); 626 } 627 } 628 if (index + 1 >= $children.length && settings.auto && settings.loop === false) { 629 clearInterval(interval); 630 } 631 $slide.eq(prevIndex).removeClass('current'); 632 $slide.eq(index).addClass('current'); 633 if (this.doCss() && settings.mode === 'slide') { 634 if (usingThumb === false) { 635 $('.prevSlide').removeClass('prevSlide'); 636 $('.nextSlide').removeClass('nextSlide'); 637 $slide.eq(index - 1).addClass('prevSlide'); 638 $slide.eq(index + 1).addClass('nextSlide'); 639 } else { 640 $slide.eq(index).prevAll().removeClass('nextSlide').addClass('prevSlide'); 641 $slide.eq(index).nextAll().removeClass('prevSlide').addClass('nextSlide'); 642 } 643 } 644 if (settings.thumbnail === true && $children.length > 1) { 645 $thumb.removeClass('active'); 646 $thumb.eq(index).addClass('active'); 647 } 648 if (settings.controls && settings.hideControlOnEnd && settings.loop === false && $children.length > 1) { 649 var l = $children.length; 650 l = parseInt(l)-1; 651 if (index === 0) { 652 $prev.addClass('disabled'); 653 $next.removeClass('disabled'); 654 } else if (index === l) { 655 $prev.removeClass('disabled'); 656 $next.addClass('disabled'); 657 } else { 658 $prev.add($next).removeClass('disabled'); 659 } 660 } 661 prevIndex = index; 662 lightGalleryOn === false ? settings.onOpen.call(this) : settings.onSlideAfter.call(this); 663 lightGalleryOn = true; 664 usingThumb = false; 665 if (settings.counter) { 666 $("#lightGallery_counter_current").text(index+1); 667 } 668 }, 669 destroy: function () { 670 settings.onBeforeClose.call(this); 671 lightGalleryOn = false; 672 aTiming = false; 673 aSpeed = false; 674 usingThumb = false; 675 clearInterval(interval); 676 $('.lightGallery').off('mousedown mouseup'); 677 $('body').off('touchstart.lightGallery touchmove.lightGallery touchend.lightGallery'); 678 $(window).off('resize.lightGallery keyup.lightGallery'); 679 $gallery.addClass('fadeM'); 680 setTimeout(function () { 681 $galleryCont.remove(); 682 $('body').removeClass('lightGallery'); 683 }, 500); 684 settings.onCloseAfter.call(this); 685 } 686 }; 687 lightGallery.init(); 688 return this; 689 }; 690}(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.