PageSourceSearch

https://be-canary.com/wp-content/plugins/diviflash/public/js/imageGallery.js?ver=5.5.0

js be-canary.com collected 2026-10-02 00:06:22 UTC 34,128 bytes, 706 lines download raw bytes

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.