1(function($){ 2 const df_image_gallery = document.querySelectorAll('.difl_imagegallery'); 3 [].forEach.call(df_image_gallery, function(ele, index) { 4 const container = ele.querySelector('.df_ig_container'); 5 const settings = JSON.parse(container.dataset.settings); 6 let image_obj = settings.image_ids.split(","); 7 image_obj = image_obj.filter(function (v,i) { return image_obj.indexOf(v) === i}); 8 const image_count = parseInt(settings.image_count); 9 let grid = ele.querySelector('.grid'); 10 11 let target = settings.url_target; 12 let ig_lightbox_options = { 13 ig_lightbox: settings.use_lightbox, 14 filter: false, 15 filterValue: '', 16 download : settings.use_lightbox_download === 'on' ? true : false 17 }; 18 19 if (typeof imagesLoaded === "function") { 20 if (typeof Isotope === "function") { 21 let iso = new Isotope( grid, { 22 layoutMode: settings.layout_mode, 23 percentPosition: false, 24 itemSelector: '.grid-item', 25 transitionDuration: '0.6s', 26 stagger: 30 27 }); 28 // fix the lazy load layout issue 29 let entries = grid.querySelectorAll('.grid-item'); 30 observer = new IntersectionObserver(function (item) { 31 iso.layout(); 32 }); 33 [].forEach.call(entries, function (v){ 34 observer.observe(v); 35 }) 36 // ***************** 37 38 df_ig_isotop(grid, iso); 39 40 // load more functionality 41 if (ele.querySelector('.ig-load-more-btn')) { 42 ele.querySelector('.ig-load-more-btn').addEventListener('click', function(event) { 43 event.preventDefault(); 44 ele.querySelector('.ig-load-more-btn').classList.add('loading') 45 46 const ajaxurl = window.et_pb_custom.ajaxurl; 47 let load_more = container.querySelector('.ig-load-more-btn'); 48 let loaded = parseInt(event.target.dataset.loaded); 49 50 fetch(ajaxurl, { 51 method: 'POST', 52 credentials: 'same-origin', 53 headers: { 54 'Content-Type': 'application/x-www-form-urlencoded', 55 'Cache-Control': 'no-cache', 56 }, 57 body: new URLSearchParams({ 58 et_frontend_nonce: window.et_pb_custom.et_frontend_nonce, 59 action: 'df_image_gallery_fetch', 60 images: settings.image_ids, 61 page: load_more.dataset.page, 62 loaded: loaded, 63 image_count: parseInt(settings.image_count), 64 options: JSON.stringify(settings) 65 }) 66 }) 67 .then(function(response) { return response.json()}) 68 .then(function(response) { 69 let parser = new DOMParser(); 70 let parsedHtml = parser.parseFromString(response.data, 'text/html'); 71 var items = parsedHtml.querySelectorAll('.df_ig_image'); 72 73 if ( loaded >= image_obj.length) { 74 event.target.style.display = "none"; 75 } else { 76 items.forEach(function(item) { 77 grid.appendChild(item) 78 }) 79 loaded = loaded + image_count; 80 event.target.setAttribute("data-loaded", loaded); 81 if(loaded >= image_obj.length){event.target.style.display = "none";} 82 } 83 iso.appended( items ) 84 df_ig_isotop(grid, iso); 85 event.target.classList.remove('loading') 86 }) 87 .then(function() { 88 df_ig_url_open(target, ele); 89 90 df_ig_use_wrap_lightbox( 91 ele, 92 ig_lightbox_options 93 ); 94 }) 95 }) 96 } 97 98 // filter 99 const filtersElem = ele.querySelector('.df_filter_buttons'); 100 101 if (filtersElem !== null) { 102 const buttons = filtersElem.querySelectorAll('.button'); 103 104 filtersElem.addEventListener( 'click', function( event ) { 105 // Ditect mouse click outside button 106 if( !event.target.classList.contains('button')){ 107 return; 108 } 109 for ( var i=0, len = buttons.length; i < len; i++ ) { 110 var button = buttons[i]; 111 button.classList.remove('is-checked'); 112 } 113
114 // only work with buttons 115 if ( !matchesSelector( event.target, 'button' ) ) { 116 return; 117 } 118 119 const filterValue = event.target.getAttribute('data-filter'); 120 event.target.classList.add('is-checked'); 121 122 // use matching filter function 123 iso.arrange({ filter: filterValue }); 124 ig_lightbox_options.filter = true; 125 ig_lightbox_options.filterValue = filterValue; 126 127 df_ig_url_open(target, ele); 128 129 df_ig_use_wrap_lightbox( 130 ele, 131 ig_lightbox_options 132 ); 133 134 }); 135 136 const filterValue = filtersElem.querySelector('.is-checked').getAttribute('data-filter'); 137 iso.arrange({ filter: filterValue }); 138 } 139 140 // pagination functionality start 141 const pageElem = ele.querySelector('.df-ig-pagination'); 142 if (pageElem !== null) { 143 const pageTags = pageElem.querySelectorAll('a'); 144 145 pageElem.addEventListener( 'click', function( event ) { 146 event.preventDefault(); 147 window.scrollTo({ top: $(ele).offset().top-150, behavior: 'smooth' }); 148 // Ditect mouse click outside button 149 if( !event.target.classList.contains('page-numbers')){ 150 return; 151 } 152 let firstPage,lastPage; 153 for ( var i=0, len = pageTags.length; i < len; i++ ) { 154 var pageTag = pageTags[i]; 155 pageTag.classList.remove('current'); 156 } 157 158 // only work with buttons 159 if ( !matchesSelector( event.target, 'a' ) ) { 160 return; 161 } 162 163 let pageNumber = ''; 164 const imgCount = event.target.getAttribute('data-count'); 165 if('on' === settings.use_number_pagination){ 166 if(event.target.classList.contains('prev')){ 167 const currentPage = event.target.getAttribute('data-current'); 168 if(currentPage === pageTags[1].getAttribute('data-page')){ 169 pageTags[1].classList.add('current'); 170 return; 171 } 172 pageNumber = parseInt(currentPage)-1; 173 pageTags[pageNumber].classList.add('current'); 174 pageTags[0].setAttribute('data-current', pageNumber); 175 pageTags[pageTags.length-1].setAttribute('data-current', pageNumber); 176 } 177 else if(event.target.classList.contains('next')){ 178 const currentPage = event.target.getAttribute('data-current'); 179 if(currentPage === pageTags[(parseInt(pageTags.length)-2)].getAttribute('data-page')){ 180 pageTags[pageTags.length-2].classList.add('current'); 181 return; 182 } 183 pageNumber = parseInt(currentPage)+1; 184 pageTags[pageNumber].classList.add('current'); 185 pageTags[0].setAttribute('data-current', pageNumber); 186 pageTags[pageTags.length-1].setAttribute('data-current', pageNumber); 187 } 188 else{ 189 pageNumber = event.target.getAttribute('data-page'); 190 event.target.classList.add('current'); 191 pageTags[0].setAttribute('data-current', pageNumber); 192 pageTags[pageTags.length-1].setAttribute('data-current', pageNumber); 193 } 194 (parseInt(pageNumber) > 1)?pageTags[0].style.display = 'block':pageTags[0].style.display = 'none'; 195 (parseInt(pageNumber) === pageTags.length-2)?pageTags[pageTags.length-1].style.display = 'none':pageTags[pageTags.length-1].style.display = 'block'; 196 } 197 else{ 198 if(event.target.classList.contains('prev')){ 199 const currentPage = event.target.getAttribute('data-current'); 200 pageNumber = parseInt(currentPage)-1; 201 pageTags[0].setAttribute('data-current', pageNumber); 202 pageTags[pageTags.length-1].setAttribute('data-current', pageNumber); 203 } 204 else if(event.target.classList.contains('next')){ 205 const currentPage = event.target.getAttribute('data-current'); 206 pageNumber = parseInt(currentPage)+1; 207 pageTags[0].setAttribute('data-current', pageNumber); 208 pageTags[pageTags.length-1].setAttribute('data-current', pageNumber); 209 } 210 (parseInt(pageNumber) > 1)?pageTags[0].style.display = 'block':pageTags[0].style.display = 'none'; 211 (parseInt(pageNumber) === Math.ceil(settings.image_ids.split(",").length/parseInt(imgCount)))?pageTags[pageTags.length-1].style.display = 'none':pageTags[pageTags.length-1].style.display = 'block'; 212 213 } 214 215 var ajaxurl = window.et_pb_custom.ajaxurl; 216 fetch(ajaxurl, { 217 method: 'POST', 218 credentials: 'same-origin', 219 headers: { 220 'Content-Type': 'application/x-www-form-urlencoded', 221 'Cache-Control': 'no-cache', 222 }, 223 body: new URLSearchParams({ 224 et_frontend_nonce: window.et_pb_custom.et_frontend_nonce, 225 action: 'df_image_gallery_fetch_page_data', 226 images: settings.image_ids, 227 page: parseInt(pageNumber), 228 image_count: parseInt(imgCount), 229 options: JSON.stringify(settings) 230 }) 231 }) 232 .then(function(response) { return response.json()}) 233 .then(function(response) { 234 let parser = new DOMParser(); 235 let parsedHtml = parser.parseFromString(response.data, 'text/html'); 236 var items = parsedHtml.querySelectorAll('.df_ig_image'); 237 grid.innerHTML = '' 238 if ( parseInt(imgCount) >= image_obj.length) { 239 event.target.style.display = "none"; 240 } else {
241 items.forEach(function(item) { 242 grid.appendChild(item); 243 }) 244 if(parseInt(imgCount) >= image_obj.length){event.target.style.display = "none";} 245 } 246 iso = new Isotope( grid, { 247 layoutMode: settings.layout_mode, 248 percentPosition: true, 249 itemSelector: '.grid-item', 250 transitionDuration: '0.6s', 251 stagger: 30 252 }); 253 df_ig_isotop(grid, iso); 254 }) 255 .then(function() { 256 df_ig_url_open(target, ele); 257 258 df_ig_use_wrap_lightbox( 259 ele, 260 ig_lightbox_options 261 ); 262 }) 263 }); 264 } 265 // pagination functionality end 266 267 df_ig_url_open(target, ele); 268 269 df_ig_use_wrap_lightbox( 270 ele, 271 ig_lightbox_options 272 ); 273 274 } 275 276 } 277 278 279 $(document).ready(function() { 280 df_ig_use_lightbox( 281 ele.querySelector('.grid'), 282 ig_lightbox_options 283 ); 284 }); 285 286 }) 287})(jQuery) 288 289// (function ($) { 290 291// function initDfImageGallery() { 292// const df_image_gallery = document.querySelectorAll('.difl_imagegallery'); 293// [].forEach.call(df_image_gallery, function (ele, index) { 294// const container = ele.querySelector('.df_ig_container'); 295// if (!container) return; 296 297// const settings = JSON.parse(container.dataset.settings); 298// let image_obj = settings.image_ids.split(","); 299// image_obj = image_obj.filter((v, i) => image_obj.indexOf(v) === i); 300 301// const image_count = parseInt(settings.image_count); 302// let grid = ele.querySelector('.grid'); 303// if (!grid) return; 304 305// let target = settings.url_target; 306// let ig_lightbox_options = { 307// ig_lightbox: settings.use_lightbox, 308// filter: false, 309// filterValue: '', 310// download: settings.use_lightbox_download === 'on' 311// }; 312 313// if (typeof imagesLoaded === "function" && typeof Isotope === "function") { 314// let iso = new Isotope(grid, { 315// layoutMode: settings.layout_mode, 316// percentPosition: false, 317// itemSelector: '.grid-item', 318// transitionDuration: '0.6s', 319// stagger: 30 320// }); 321 322// // Fix lazy load layout issue 323// let entries = grid.querySelectorAll('.grid-item'); 324// let observer = new IntersectionObserver(() => iso.layout()); 325// [].forEach.call(entries, (v) => observer.observe(v)); 326 327// df_ig_isotop(grid, iso); 328 329// // â Re-apply Isotope when images finish loading 330// imagesLoaded(grid, function () { 331// iso.layout(); 332// }); 333 334// // â Add load more, filters, pagination (same as before) 335// // ... Keep your existing load more & filter code here ... 336 337// // load more functionality 338// if (ele.querySelector('.ig-load-more-btn')) { 339// ele.querySelector('.ig-load-more-btn').addEventListener('click', function(event) { 340// event.preventDefault(); 341// ele.querySelector('.ig-load-more-btn').classList.add('loading') 342 343// const ajaxurl = window.et_pb_custom.ajaxurl; 344// let load_more = container.querySelector('.ig-load-more-btn'); 345// let loaded = parseInt(event.target.dataset.loaded); 346 347// fetch(ajaxurl, { 348// method: 'POST', 349// credentials: 'same-origin', 350// headers: { 351// 'Content-Type': 'application/x-www-form-urlencoded', 352// 'Cache-Control': 'no-cache', 353// }, 354// body: new URLSearchParams({ 355// et_frontend_nonce: window.et_pb_custom.et_frontend_nonce, 356// action: 'df_image_gallery_fetch', 357// images: settings.image_ids, 358// page: load_more.dataset.page, 359// loaded: loaded, 360// image_count: parseInt(settings.image_count),
361// options: JSON.stringify(settings) 362// }) 363// }) 364// .then(function(response) { return response.json()}) 365// .then(function(response) { 366// let parser = new DOMParser(); 367// let parsedHtml = parser.parseFromString(response.data, 'text/html'); 368// var items = parsedHtml.querySelectorAll('.df_ig_image'); 369 370// if ( loaded >= image_obj.length) { 371// event.target.style.display = "none"; 372// } else { 373// items.forEach(function(item) { 374// grid.appendChild(item) 375// }) 376// loaded = loaded + image_count; 377// event.target.setAttribute("data-loaded", loaded); 378// if(loaded >= image_obj.length){event.target.style.display = "none";} 379// } 380// iso.appended( items ) 381// df_ig_isotop(grid, iso); 382// event.target.classList.remove('loading') 383// }) 384// .then(function() { 385// df_ig_url_open(target, ele); 386 387// df_ig_use_wrap_lightbox( 388// ele, 389// ig_lightbox_options 390// ); 391// }) 392// }) 393// } 394 395// // filter 396// const filtersElem = ele.querySelector('.df_filter_buttons'); 397 398// if (filtersElem !== null) { 399// const buttons = filtersElem.querySelectorAll('.button'); 400 401// filtersElem.addEventListener( 'click', function( event ) { 402// // Ditect mouse click outside button 403// if( !event.target.classList.contains('button')){ 404// return; 405// } 406// for ( var i=0, len = buttons.length; i < len; i++ ) { 407// var button = buttons[i]; 408// button.classList.remove('is-checked'); 409// } 410 411// // only work with buttons 412// if ( !matchesSelector( event.target, 'button' ) ) { 413// return; 414// } 415 416// const filterValue = event.target.getAttribute('data-filter'); 417// event.target.classList.add('is-checked'); 418 419// // use matching filter function 420// iso.arrange({ filter: filterValue }); 421// ig_lightbox_options.filter = true; 422// ig_lightbox_options.filterValue = filterValue; 423 424// df_ig_url_open(target, ele); 425 426// df_ig_use_wrap_lightbox( 427// ele, 428// ig_lightbox_options 429// ); 430 431// }); 432 433// const filterValue = filtersElem.querySelector('.is-checked').getAttribute('data-filter'); 434// iso.arrange({ filter: filterValue }); 435// } 436 437// // pagination functionality start 438// const pageElem = ele.querySelector('.df-ig-pagination'); 439// if (pageElem !== null) { 440// const pageTags = pageElem.querySelectorAll('a'); 441 442// pageElem.addEventListener( 'click', function( event ) { 443// event.preventDefault(); 444// window.scrollTo({ top: $(ele).offset().top-150, behavior: 'smooth' }); 445// // Ditect mouse click outside button 446// if( !event.target.classList.contains('page-numbers')){ 447// return; 448// } 449// let firstPage,lastPage; 450// for ( var i=0, len = pageTags.length; i < len; i++ ) { 451// var pageTag = pageTags[i]; 452// pageTag.classList.remove('current'); 453// } 454
455// // only work with buttons 456// if ( !matchesSelector( event.target, 'a' ) ) { 457// return; 458// } 459 460// let pageNumber = ''; 461// const imgCount = event.target.getAttribute('data-count'); 462// if('on' === settings.use_number_pagination){ 463// if(event.target.classList.contains('prev')){ 464// const currentPage = event.target.getAttribute('data-current'); 465// if(currentPage === pageTags[1].getAttribute('data-page')){ 466// pageTags[1].classList.add('current'); 467// return; 468// } 469// pageNumber = parseInt(currentPage)-1; 470// pageTags[pageNumber].classList.add('current'); 471// pageTags[0].setAttribute('data-current', pageNumber); 472// pageTags[pageTags.length-1].setAttribute('data-current', pageNumber); 473// } 474// else if(event.target.classList.contains('next')){ 475// const currentPage = event.target.getAttribute('data-current'); 476// if(currentPage === pageTags[(parseInt(pageTags.length)-2)].getAttribute('data-page')){ 477// pageTags[pageTags.length-2].classList.add('current'); 478// return; 479// } 480// pageNumber = parseInt(currentPage)+1; 481// pageTags[pageNumber].classList.add('current'); 482// pageTags[0].setAttribute('data-current', pageNumber); 483// pageTags[pageTags.length-1].setAttribute('data-current', pageNumber); 484// } 485// else{ 486// pageNumber = event.target.getAttribute('data-page'); 487// event.target.classList.add('current'); 488// pageTags[0].setAttribute('data-current', pageNumber); 489// pageTags[pageTags.length-1].setAttribute('data-current', pageNumber); 490// } 491// (parseInt(pageNumber) > 1)?pageTags[0].style.display = 'block':pageTags[0].style.display = 'none'; 492// (parseInt(pageNumber) === pageTags.length-2)?pageTags[pageTags.length-1].style.display = 'none':pageTags[pageTags.length-1].style.display = 'block'; 493// } 494// else{ 495// if(event.target.classList.contains('prev')){ 496// const currentPage = event.target.getAttribute('data-current'); 497// pageNumber = parseInt(currentPage)-1; 498// pageTags[0].setAttribute('data-current', pageNumber); 499// pageTags[pageTags.length-1].setAttribute('data-current', pageNumber); 500// } 501// else if(event.target.classList.contains('next')){ 502// const currentPage = event.target.getAttribute('data-current'); 503// pageNumber = parseInt(currentPage)+1; 504// pageTags[0].setAttribute('data-current', pageNumber); 505// pageTags[pageTags.length-1].setAttribute('data-current', pageNumber); 506// } 507// (parseInt(pageNumber) > 1)?pageTags[0].style.display = 'block':pageTags[0].style.display = 'none'; 508// (parseInt(pageNumber) === Math.ceil(settings.image_ids.split(",").length/parseInt(imgCount)))?pageTags[pageTags.length-1].style.display = 'none':pageTags[pageTags.length-1].style.display = 'block'; 509 510// } 511 512// var ajaxurl = window.et_pb_custom.ajaxurl; 513// fetch(ajaxurl, { 514// method: 'POST', 515// credentials: 'same-origin', 516// headers: { 517// 'Content-Type': 'application/x-www-form-urlencoded', 518// 'Cache-Control': 'no-cache', 519// }, 520// body: new URLSearchParams({ 521// et_frontend_nonce: window.et_pb_custom.et_frontend_nonce, 522// action: 'df_image_gallery_fetch_page_data', 523// images: settings.image_ids, 524// page: parseInt(pageNumber), 525// image_count: parseInt(imgCount),
526// options: JSON.stringify(settings) 527// }) 528// }) 529// .then(function(response) { return response.json()}) 530// .then(function(response) { 531// let parser = new DOMParser(); 532// let parsedHtml = parser.parseFromString(response.data, 'text/html'); 533// var items = parsedHtml.querySelectorAll('.df_ig_image'); 534// grid.innerHTML = '' 535// if ( parseInt(imgCount) >= image_obj.length) { 536// event.target.style.display = "none"; 537// } else { 538// items.forEach(function(item) { 539// grid.appendChild(item); 540// }) 541// if(parseInt(imgCount) >= image_obj.length){event.target.style.display = "none";} 542// } 543// iso = new Isotope( grid, { 544// layoutMode: settings.layout_mode, 545// percentPosition: true, 546// itemSelector: '.grid-item', 547// transitionDuration: '0.6s', 548// stagger: 30 549// }); 550// df_ig_isotop(grid, iso); 551// }) 552// .then(function() { 553// df_ig_url_open(target, ele); 554 555// df_ig_use_wrap_lightbox( 556// ele, 557// ig_lightbox_options 558// ); 559// }) 560// }); 561// } 562// // pagination functionality end 563// } 564 565// // â Initialize lightbox after DOM ready 566// df_ig_use_lightbox(ele.querySelector('.grid'), ig_lightbox_options); 567// }); 568// } 569 570// // â Run initially on frontend 571// $(document).ready(initDfImageGallery); 572 573// })(jQuery); 574 575 576function df_ig_isotop(selector, iso) { 577 imagesLoaded(selector).on('progress', function() { 578 iso.layout() 579 }).on('always', function() { 580 selector.style.opacity = 1; 581 }) 582} 583 584function df_ig_use_lightbox(selector, options) { 585 if (options.ig_lightbox === 'on') { 586 var settings = { 587 subHtmlSelectorRelative: true, 588 addClass: 'df_ig_lightbox', 589 counter: false, 590 download: options.download 591 }; 592 593 if (options.filter) { 594 settings.selector= options.filterValue.replace('*', ''); 595 // window.lgData[selector.getAttribute('lg-uid')].destroy(true); 596 } 597 598 lightGallery(selector,settings); 599 } 600} 601 602function df_ig_url_open(target, ele) { 603 var elements = ele.querySelectorAll('.item-content'); 604 [].forEach.call(elements, function(image, index) { 605 var url = image.dataset.url; 606 if(url && url !== '') { 607 image.addEventListener('click', function(event) { 608 if (target === 'same_window') { 609 window.location = url; 610 } else { 611 window.open(url) 612 } 613 }) 614 } 615 }) 616} 617 618function df_ig_use_wrap_lightbox(selector, options) { 619 if (options.ig_lightbox === 'on') { 620 const settings = { 621 subHtmlSelectorRelative: true, 622 addClass: 'df_ig_lightbox', 623 counter: false, 624 download: options.download 625 }; 626 627 selector.querySelectorAll(".df_ig_image").forEach(function (item) { 628 item.addEventListener("click", function () { 629 630 const parentDiv = this.parentElement; 631 if (options.filter) { 632 settings.parentDiv= options.filterValue.replace('*', ''); 633 } 634 635 lightGallery(parentDiv, settings); 636 637 }); 638 }); 639 } 640} 641function igHandleClick(event) { 642 643 let parentContainer = event.target.parentElement.parentElement; 644 const settings = JSON.parse(parentContainer.dataset.settings); 645 let ig_lightbox_options = { 646 ig_lightbox: settings.use_lightbox, 647 filter: false, 648 filterValue: '', 649 download : settings.use_lightbox_download === 'on' ? true : false 650 }; 651 652 const listWrap = parentContainer.querySelector(".df_ig_gallery "); 653 const wrapper = document.createElement("div");
654 const filter = event.target.dataset.filter; 655 let nameClass = filter.slice(1); 656 657 // Reset All button functionality 658 if(filter==="*") { 659 const itemsAll = parentContainer.querySelectorAll('.df_ig_image '); 660 const sameWrapAll = parentContainer.querySelectorAll('.same_wrap '); 661 662 // Save the current scroll position 663 let scrollPosition = window.scrollY; 664 665 sameWrapAll.forEach(item => 666 window.lgData[item.getAttribute('lg-uid')].destroy(true) 667 ); 668 669 // Restore the scroll position 670 window.scrollTo(0, scrollPosition); 671 672 listWrap.innerHTML = ""; 673 itemsAll.forEach(item => listWrap.appendChild(item)); 674 675 df_ig_use_lightbox(listWrap, ig_lightbox_options); 676 677 return; 678 } 679 680 const existingWrapper = listWrap.querySelector(`.${nameClass}_wrapper`); 681 if (existingWrapper) { 682 return; 683 } 684 685 // Destroy any existing lightbox instances 686 const allGalleryImg = parentContainer.querySelector(".df_ig_gallery "); 687 if (allGalleryImg.getAttribute('lg-uid')) { 688 let scrollPosition = window.scrollY; 689 window.lgData[allGalleryImg.getAttribute('lg-uid')].destroy(true); 690 window.scrollTo(0, scrollPosition); 691 } 692 693 wrapper.classList.add(`${nameClass}_wrapper`); 694 wrapper.classList.add(`same_wrap`); 695 696 const items = parentContainer.querySelectorAll(filter); 697 698 if (items.length > 0) { 699 items.forEach(item => wrapper.appendChild(item)); 700 listWrap.appendChild(wrapper); 701 702 df_ig_use_lightbox(wrapper, ig_lightbox_options); 703 704 } 705 return false; 706}
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.