1(function($){ 2 if (jQuery().justifiedGallery) { 3 jQuery('.df_jsg_container').each(function(index, element) { 4 5 var settings = JSON.parse(element.dataset.settings); 6 var _this = jQuery(this); 7 var image_obj = settings.gallery.split(","); 8 var image_count = parseInt(settings.image_count); 9 var target = settings.url_target; 10 var lg_options = { 11 use_lightbox: settings.use_lightbox, 12 download: settings.use_lightbox_download === 'on' ? true : false 13 } 14 15 if (typeof imagesLoaded === "function") { 16 // js gallery 17 df_init_jsgallery( 18 _this.find('.justified-gallery'), 19 settings 20 ); 21 22 // load more functionality 23 _this.find('.jsg-more-image-btn') 24 .on('click', function(event) { 25 event.preventDefault(); 26 event.target.classList.add('loading') 27 28 var pageCount = parseInt(event.target.dataset.page); 29 var loaded = parseInt(event.target.dataset.loaded); 30 31 fetch(window.et_pb_custom.ajaxurl, { 32 method: 'POST', 33 credentials: 'same-origin', 34 headers: { 35 'Content-Type': 'application/x-www-form-urlencoded', 36 'Cache-Control': 'no-cache', 37 }, 38 body: new URLSearchParams({ 39 et_frontend_nonce: window.et_pb_custom.et_frontend_nonce, 40 action: 'df_jsg_fetch', 41 gallery: settings.gallery, 42 image_count: image_count, 43 show_caption: settings.show_caption, 44 ini_count: settings.ini_count, 45 show_content_lg: settings.show_content_lg, 46 loaded: loaded, 47 options: JSON.stringify(settings) 48 }) 49 }) 50 .then(function (response) { return response.json()}) 51 .then(function (response) { 52 let parsedHtml = jQuery.parseHTML(response.data); 53 54 55 if ( loaded >= image_obj.length) { 56 event.target.style.display = "none"; 57 } else { 58 _this 59 .find('.justified-gallery') 60 .append(parsedHtml) 61 loaded = loaded + image_count; 62 event.target.setAttribute("data-loaded", loaded); 63 if(loaded >= image_obj.length){event.target.style.display = "none";} 64 } 65 event.target.classList.remove('loading') 66 df_jsg_use_lightbox( 67 element 68 .querySelector('.justified-gallery'), 69 lg_options 70 ) 71 }) 72 .then(function() { 73 df_init_jsgallery( 74 _this.find('.justified-gallery'), 75 settings 76 ); 77 }) 78 }) 79 80 // pagination functionality start 81 const pageElem = element.querySelector('.df-jsg-pagination'); 82 if (pageElem !== null) { 83 const pageTags = pageElem.querySelectorAll('a'); 84 85 pageElem.addEventListener( 'click', function( event ) { 86 event.preventDefault(); 87 window.scrollTo({ top: $(element).offset().top-150, behavior: 'smooth' }); 88 // Ditect mouse click outside button 89 if( !event.target.classList.contains('page-numbers')){ 90 return; 91 } 92 let firstPage,lastPage; 93 for ( var i=0, len = pageTags.length; i < len; i++ ) { 94 var pageTag = pageTags[i]; 95 pageTag.classList.remove('current'); 96 } 97
98 // only work with buttons 99 if ( ! event.target.classList.contains( 'page-numbers' ) ) { 100 return; 101 } 102 103 let pageNumber = ''; 104 const imgCount = event.target.getAttribute('data-count'); 105 if('on' === settings.use_number_pagination){ 106 if(event.target.classList.contains('prev')){ 107 const currentPage = event.target.getAttribute('data-current'); 108 if(currentPage === pageTags[1].getAttribute('data-page')){ 109 pageTags[1].classList.add('current'); 110 return; 111 } 112 pageNumber = parseInt(currentPage)-1; 113 pageTags[pageNumber].classList.add('current'); 114 pageTags[0].setAttribute('data-current', pageNumber); 115 pageTags[pageTags.length-1].setAttribute('data-current', pageNumber); 116 } 117 else if(event.target.classList.contains('next')){ 118 const currentPage = event.target.getAttribute('data-current'); 119 if(currentPage === pageTags[(parseInt(pageTags.length)-2)].getAttribute('data-page')){ 120 pageTags[pageTags.length-2].classList.add('current'); 121 return; 122 } 123 pageNumber = parseInt(currentPage)+1; 124 pageTags[pageNumber].classList.add('current'); 125 pageTags[0].setAttribute('data-current', pageNumber); 126 pageTags[pageTags.length-1].setAttribute('data-current', pageNumber); 127 } 128 else{ 129 pageNumber = event.target.getAttribute('data-page'); 130 event.target.classList.add('current'); 131 pageTags[0].setAttribute('data-current', pageNumber); 132 pageTags[pageTags.length-1].setAttribute('data-current', pageNumber); 133 } 134 (parseInt(pageNumber) > 1)?pageTags[0].style.display = 'flex':pageTags[0].style.display = 'none'; 135 (parseInt(pageNumber) === pageTags.length-2)?pageTags[pageTags.length-1].style.display = 'none':pageTags[pageTags.length-1].style.display = 'flex'; 136 } 137 else{ 138 if(event.target.classList.contains('prev')){ 139 const currentPage = event.target.getAttribute('data-current'); 140 pageNumber = parseInt(currentPage)-1; 141 pageTags[0].setAttribute('data-current', pageNumber); 142 pageTags[pageTags.length-1].setAttribute('data-current', pageNumber); 143 } 144 else if(event.target.classList.contains('next')){ 145 const currentPage = event.target.getAttribute('data-current'); 146 pageNumber = parseInt(currentPage)+1; 147 pageTags[0].setAttribute('data-current', pageNumber); 148 pageTags[pageTags.length-1].setAttribute('data-current', pageNumber); 149 } 150 (parseInt(pageNumber) > 1)?pageTags[0].style.display = 'block':pageTags[0].style.display = 'none'; 151 (parseInt(pageNumber) === Math.ceil(settings.gallery.split(",").length/parseInt(imgCount)))?pageTags[pageTags.length-1].style.display = 'none':pageTags[pageTags.length-1].style.display = 'block'; 152 153 } 154 155 const ajaxurl = window.et_pb_custom.ajaxurl; 156 fetch(ajaxurl, { 157 method: 'POST', 158 credentials: 'same-origin', 159 headers: { 160 'Content-Type': 'application/x-www-form-urlencoded', 161 'Cache-Control': 'no-cache', 162 }, 163 body: new URLSearchParams({ 164 et_frontend_nonce: window.et_pb_custom.et_frontend_nonce, 165 action: 'df_jsg_fetch_page_data', 166 gallery: settings.gallery, 167 page: parseInt(pageNumber), 168 image_count: parseInt(settings.image_count), 169 options: JSON.stringify(settings) 170 }) 171 }) 172 .then(function(response) { return response.json()}) 173 .then(function(response) { 174 let parsedHtml = jQuery.parseHTML(response.data); 175 if ( parseInt(imgCount) >= image_obj.length) { 176 event.target.style.display = "none"; 177 } else { 178 _this 179 .find('.justified-gallery') 180 .empty() 181 .append(parsedHtml) 182 if(parseInt(imgCount) >= image_obj.length){event.target.style.display = "none";} 183 } 184 df_jsg_use_lightbox( 185 element 186 .querySelector('.justified-gallery'), 187 lg_options 188 ); 189 }) 190 .then(function() { 191 df_init_jsgallery( 192 _this.find('.justified-gallery'), 193 settings 194 ); 195 }) 196 }); 197 } 198 // pagination functionality end 199 200 // lightbox functionality 201 df_jsg_use_lightbox( 202 element 203 .querySelector('.justified-gallery'), 204 lg_options 205 ); 206 } 207 208 209 }) 210 } 211 jQuery(document.body).on('click','.df_jsg_image', function(event) { 212 if(jQuery(this).data('customurl')) { 213 var url = jQuery(this).data('customurl'); 214 var target = jQuery(this).data('target') 215 if (url !== '') { 216 if (target === 'same_window') { 217 window.location = url; 218 } else { 219 window.open(url) 220 } 221 } 222 } 223 }) 224})(jQuery) 225 226function df_init_jsgallery(selector, settings) { 227 selector.imagesLoaded() 228 .done(function(){ 229 selector.justifiedGallery({ 230 rowHeight : parseInt(settings.rowHeight),
231 margins : parseInt(settings.margin), 232 selector : 'figure, div:not(.spinner)', 233 captions: false, 234 imagesAnimationDuration: 500, 235 waitThumbnailsLoad: false 236 }).on('jg.complete', function(e){ 237 238 jQuery(this).find('img') 239 .css('transition', 'all 600ms ease') 240 241 jQuery(this).find('.df_jsg_image') 242 .fadeIn("slow") 243 .removeClass('image_loading'); 244 245 // support for lazy load for smush 246 247 const lazyImages = [].slice.call( document.querySelectorAll( '.df_jsg_container img.lazyloaded' ) ); 248 lazyImages.forEach( function ( image ) { 249 image.src = image.dataset.src; 250 } ) 251 }) 252 }) 253 254} 255 256function df_jsg_use_lightbox(selector, options) { 257 if (options.use_lightbox === 'on') { 258 var settings = { 259 subHtmlSelectorRelative: true, 260 addClass: 'df_jsg_lightbox', 261 counter: false, 262 download: options.download 263 }; 264 lightGallery(selector,settings); 265 } 266} 267
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.