1(function($) { 2 "use strict"; 3 4 UNCODE.cssGrid = function() { 5 if ($('.cssgrid-layout').length > 0) { 6 var cssGridContainersArray = []; 7 var transitionDuration = []; 8 var $filters = $('.cssgrid-system .cssgrid-filters'); 9 10 $('[class*="cssgrid-container"]').each(function() { 11 cssGridContainersArray.push($(this)); 12 transitionDuration.push($('.t-inside.animate_when_almost_visible', this).length > 0 ? 0 : '0.5s'); 13 }); 14 15 var init_cssGridAjax = function() { 16 for (var i = 0, len = cssGridContainersArray.length; i < len; i++) { 17 var cssGridSystem = $(cssGridContainersArray[i]).closest($('.cssgrid-system')), 18 cssGridId = cssGridSystem.attr('id'); 19 20 cssGridSystem.data('transitionDuration', transitionDuration[i]); 21 22 if ($(cssGridContainersArray[i]).hasClass('cssgrid-infinite') && $.fn.infinitescroll) { 23 $(cssGridContainersArray[i]).infinitescroll({ 24 navSelector: '#' + cssGridId + ' .loadmore-button', // selector for the pagination container 25 nextSelector: '#' + cssGridId + ' .loadmore-button a', // selector for the NEXT link (to page 2) 26 itemSelector: '#' + cssGridId + ' .cssgrid-layout .tmb, #' + cssGridId + ' .grid-filters li.filter-cat, #' + cssGridId + ' .woocommerce-result-count-wrapper--default', // selector for all items you'll retrieve 27 animate: false, 28 behavior: 'local', 29 debug: false, 30 loading: { 31 selector: '#' + cssGridId + '.cssgrid-system .cssgrid-footer-inner', 32 speed: 0, 33 finished: undefined, 34 msg: $('#' + cssGridId + ' .loadmore-button'), 35 }, 36 errorCallback: function() { 37 var cssgrid_system = $(this).closest('.cssgrid-system'); 38 $('.loading-button', cssgrid_system).hide(); 39 $('.loadmore-button', cssgrid_system).attr('style', 'display:none !important'); 40 } 41 }, 42 // append the new items to cssGrid on the infinitescroll callback function. 43 function(newElements, opts) { 44 var $cssGrid = $(this), 45 cssGridSystemCont = $cssGrid.closest('.cssgrid-system'), 46 cssGridId = cssGridSystemCont.attr('id'), 47 filters = new Array(), 48 $loading_button = cssGridSystemCont.find('.loading-button'), 49 $infinite_button = cssGridSystemCont.find('.loadmore-button'), 50 $numPages = $('a', $infinite_button).data('pages'), 51 $woo_results, 52 delay = 300; 53 $('a', $infinite_button).html($('a', $infinite_button).data('label')); 54 $infinite_button.show(); 55 $loading_button.hide(); 56 if ( $numPages != undefined && opts.state.currPage == $numPages) $infinite_button.hide(); 57 $('> li', $cssGrid).remove(); 58 $('.cssgrid-container').find('.woocommerce-result-count-wrapper').remove(); 59 $.each($(newElements), function (index, val) { 60 if ($(val).hasClass('woocommerce-result-count-wrapper')) { 61 $woo_results = $(val); 62 delete newElements[index]; 63 } else { 64 $(val).addClass('tmb-grid'); 65 if ($(val).is("li")) { 66 filters.push($(val)[0]); 67 } 68 } 69 $(val).addClass('uncode-appended'); 70 }); 71 newElements = newElements.filter(function(x) { 72 return filters.indexOf(x) < 0 73 }); 74 $.each($(filters), function(index, val) { 75 if ($('#' + cssGridId + ' a[data-filter="' + $('a', val).attr('data-filter') + '"]').length == 0) $('#' + cssGridId + ' .grid-filters ul').append($(val)); 76 }); 77 if ($woo_results && $woo_results.length > 0) { 78 var old_count = cssGridSystemCont.find('.woocommerce-result-count').text(); 79 var new_count = $woo_results.find('.woocommerce-result-count').text(); 80 var old_start = old_count.match(/(\d+)â(\d+)/)[1]; 81 var new_end = new_count.match(/(\d+)â(\d+)/)[2]; 82 function replaceMatch(match, p1, p2) { 83 return old_start + 'â' + new_end; 84 } 85 var new_count_text = old_count.replace(/(\d+)â(\d+)/, replaceMatch); 86 cssGridSystemCont.find('.woocommerce-result-count').text(new_count_text); 87 } 88 89 var filterValue = cssGridSystemCont.find('.grid-nav-link.active').attr('data-filter');
90 var sequential = cssGridSystemCont.hasClass('cssgrid-animate-sequential') ? true : false; 91 if (filterValue !== undefined && filterValue != '*') { 92 $(newElements).hide(); 93 var els_to_show = $(); 94 $(newElements).each(function() { 95 var el = $(this); 96 if (el.hasClass(filterValue)) { 97 els_to_show = els_to_show.add(el); 98 el.show(); 99 } 100 }); 101 UNCODE.animate_css_grids(cssGridSystemCont, els_to_show, els_to_show.length, sequential, true); 102 } else { 103 UNCODE.animate_css_grids(cssGridSystemCont, $(newElements), $(newElements).length, sequential, true); 104 } 105 106 UNCODE.adaptive(); 107 if (SiteParameters.dynamic_srcset_active === '1') { 108 UNCODE.refresh_dynamic_srcset_size($cssGrid); 109 } 110 if (typeof UNCODE.lightbox !== 'undefined' && !SiteParameters.lbox_enhanced) { 111 var getLightbox = UNCODE.lightboxArray['ilightbox_' + cssGridId]; 112 if (typeof getLightbox === 'object') { 113 getLightbox.refresh(); 114 } else { 115 UNCODE.lightbox(); 116 } 117 } 118 if ( typeof twttr !== 'undefined' ) { 119 twttr.widgets.load(cssGridContainersArray[i]); 120 } 121 122 UNCODE.carousel($(newElements)); 123 requestTimeout(function() { 124 $cssGrid.trigger('more-items-loaded'); 125 $(window).trigger('more-items-loaded'); 126 window.dispatchEvent(new CustomEvent('uncode-more-items-loaded')); 127 }, 1000); 128 129 }); 130 if ($(cssGridContainersArray[i]).hasClass('cssgrid-infinite-button')) { 131 var $cssgrid_el = $(cssGridContainersArray[i]), 132 $infinite_button = $cssgrid_el.closest('.cssgrid-system').find('.loadmore-button a'); 133 $cssgrid_el.infinitescroll('pause'); 134 $infinite_button.on('click', function(event) { 135 event.preventDefault(); 136 var $cssgrid_system = $(event.target).closest('.cssgrid-system'), 137 $cssgrid_el = $cssgrid_system.find('.cssgrid-container'), 138 cssGridId = $cssgrid_system.attr('id'); 139 $(event.currentTarget).html(SiteParameters.loading); 140 $cssgrid_el.infinitescroll('resume'); 141 $cssgrid_el.infinitescroll('retrieve'); 142 $cssgrid_el.infinitescroll('pause'); 143 }); 144 } 145 } 146 } 147 }; 148 149 init_cssGridAjax(); 150 151 if ($('.cssgrid-pagination').length > 0) { 152 $('.cssgrid-system').on('click', '.pagination a', function(evt) { 153 evt.preventDefault(); 154 155 if (SiteParameters.index_pagination_disable_scroll !== '1') { 156 var container = $(this).closest('.cssgrid-system'), 157 pagination_disable_scroll = container.attr('data-pagination-scroll'), 158 calc_scroll = SiteParameters.index_pagination_scroll_to != false ? eval(SiteParameters.index_pagination_scroll_to) : container.closest('.row-parent').offset().top; 159 160 if ( pagination_disable_scroll !== 'disabled' ) { 161 calc_scroll -= UNCODE.get_scroll_offset(); 162 163 var menu_container = $('.menu-sticky'); 164 var menu = menu_container.find('.menu-container'); 165 166 if (menu_container.length > 0 && menu.length > 0) { 167 calc_scroll = calc_scroll - menu.outerHeight(); 168 } 169 170 var bodyTop = document.documentElement['scrollTop'] || document.body['scrollTop'], 171 delta = bodyTop - calc_scroll, 172 scrollSpeed = (SiteParameters.constant_scroll == 'on') ? Math.abs(delta) / parseFloat(SiteParameters.scroll_speed) : SiteParameters.scroll_speed; 173 if (scrollSpeed < 1000 && SiteParameters.constant_scroll == 'on') scrollSpeed = 1000; 174 175 if ( !UNCODE.isFullPage ) { 176 if (scrollSpeed == 0) { 177 $('html, body').scrollTop(calc_scroll); 178 } else { 179 $('html, body').animate({ 180 scrollTop: calc_scroll 181 },{ 182 easing: 'easeInOutQuad', 183 duration: scrollSpeed, 184 complete: function(){ 185 UNCODE.scrolling = false; 186 } 187 }); 188 } 189 } 190 } 191 } 192 193 loadCssGrid($(this), true); 194 }); 195 } 196 197 $filters.on('click', 'a.grid-nav-link', function(evt) { 198 if ($(this).hasClass('no-grid-filter')) { 199 return; 200 } 201 var $filter = $(this), 202 filterContainer = $filter.closest('.cssgrid-filters'), 203 filterValue = $filter.attr('data-filter'), 204 containerSystem = $filter.closest('.cssgrid-system'), 205 container = containerSystem.find($('.cssgrid-layout')), 206 transitionDuration = containerSystem.data('transitionDuration'),
207 delay = 300, 208 filterItems = [], 209 all_thumbs = container.find('.tmb-grid'); 210 211 var filter_items = function(){ 212 if (filterValue !== undefined) { 213 $.each($('> .tmb-grid > .t-inside', container), function(index, val) { 214 var parent = $(val).parent(), 215 objTimeout = parent.data('objTimeout'); 216 if (objTimeout) { 217 $(val).removeClass('zoom-reverse').removeClass('start_animation') 218 clearRequestTimeout(objTimeout); 219 } 220 if (transitionDuration == 0) { 221 if ($(val).hasClass('animate_when_almost_visible')) { 222 $(val).addClass('zoom-reverse').removeClass('start_animation'); 223 } else { 224 $(val).addClass('animate_when_almost_visible zoom-reverse zoom-anim force-anim'); 225 } 226 } 227 }); 228 requestTimeout(function(){ 229 if ( filterValue == '*' ) { 230 all_thumbs.show(); 231 all_thumbs.each(function(index, val) { 232 $(val).find('[data-lbox^=ilightbox]').removeClass('lb-disabled'); 233 filterItems.push($(this)); 234 }); 235 } else { 236 all_thumbs.each(function() { 237 var _tmb = $(this); 238 if (_tmb.hasClass(filterValue)) { 239 _tmb.show(); 240 _tmb.find('[data-lbox^=ilightbox]').removeClass('lb-disabled'); 241 filterItems.push(_tmb); 242 } else { 243 _tmb.find('[data-lbox^=ilightbox]').addClass('lb-disabled'); 244 _tmb.hide(); 245 } 246 }); 247 } 248 249 $('.t-inside.zoom-reverse', container).removeClass('zoom-reverse'); 250 251 var sequential = containerSystem.hasClass('cssgrid-animate-sequential') ? true : false; 252 UNCODE.animate_css_grids(containerSystem, filterItems, 0, sequential, true); 253 var lightboxElements = $('[data-lbox^=ilightbox]', container); 254 if (lightboxElements.length) { 255 container.data('lbox', $(lightboxElements[0]).data('lbox')); 256 if (typeof UNCODE.lightbox !== 'undefined' && !SiteParameters.lbox_enhanced) { 257 var getLightbox = UNCODE.lightboxArray['ilightbox_' + container.closest('.cssgrid-system').attr('id')]; 258 if (typeof getLightbox === 'object') { 259 getLightbox.refresh(); 260 } else { 261 UNCODE.lightbox(); 262 } 263 } 264 } 265 container.trigger('more-items-loaded'); 266 $(window).trigger('more-items-loaded'); 267 window.dispatchEvent(new CustomEvent('uncode-more-items-loaded')); 268 }, delay); 269 } else { 270 $.each($('> .tmb-grid > .t-inside', container), function(index, val) { 271 var parent = $(val).parent(), 272 objTimeout = parent.data('objTimeout'); 273 if (objTimeout) { 274 $(val).removeClass('zoom-reverse').removeClass('start_animation') 275 clearRequestTimeout(objTimeout); 276 } 277 if (transitionDuration == 0) { 278 if ($(val).hasClass('animate_when_almost_visible')) { 279 $(val).addClass('zoom-reverse').removeClass('start_animation'); 280 } else { 281 $(val).addClass('animate_when_almost_visible zoom-reverse zoom-anim force-anim'); 282 } 283 } 284 }); 285 loadCssGrid($filter); 286 } 287 }; 288 289 if (!$filter.hasClass('active')) { 290 /** Scroll top with filtering */ 291 if (filterContainer.hasClass('filter-scroll')) { 292 var calc_scroll = SiteParameters.index_pagination_scroll_to != false ? eval(SiteParameters.index_pagination_scroll_to) : container.closest('.row-parent').offset().top; 293 calc_scroll -= UNCODE.get_scroll_offset(); 294 295 var bodyTop = document.documentElement['scrollTop'] || document.body['scrollTop'], 296 delta = bodyTop - calc_scroll, 297 scrollSpeed = (SiteParameters.constant_scroll == 'on') ? Math.abs(delta) / parseFloat(SiteParameters.scroll_speed) : SiteParameters.scroll_speed, 298 filterTolerance = false, 299 filter_timeout; 300 if (scrollSpeed < 1000 && SiteParameters.constant_scroll == 'on') scrollSpeed = 1000; 301 302 if ( !UNCODE.isFullPage ) { 303 if (scrollSpeed == 0) { 304 $('html, body').scrollTop(calc_scroll); 305 UNCODE.scrolling = false; 306 filter_items(); 307 } else { 308 309 if ( bodyTop <= (calc_scroll+20) && bodyTop >= (calc_scroll-20) ) { 310 filter_items(); 311 filterTolerance = true; 312 } 313 314 $('html, body').animate({ 315 scrollTop: calc_scroll 316 },{ 317 easing: 'easeInOutQuad', 318 duration: scrollSpeed, 319 complete: function(){ 320 UNCODE.scrolling = false;
321 if ( !filterTolerance ) { 322 filter_timeout = setTimeout(function(){ 323 clearTimeout(filter_timeout); 324 filter_items(); 325 }, 200); 326 } 327 } 328 }); 329 } 330 } 331 } else { 332 filter_items(); 333 } 334 } 335 evt.preventDefault(); 336 }); 337 338 $(window).off('popstate.cssgrid').on("popstate.cssgrid", function(e) { 339 var params = UNCODE.getURLParams(window.location); 340 var old_params = UNCODE.getURLParams(UNCODE.lastURL, true); 341 342 UNCODE.lastURL = window.location.href; 343 344 if (UNCODE.hasEqualURLParams(params, old_params) || ($.isEmptyObject(params) && $.isEmptyObject(old_params)) || params.form !== undefined) { 345 return; 346 } 347 348 if (params.id === undefined) { 349 $.each($('.cssgrid-system'), function(index, val) { 350 loadCssGrid($(val)); 351 }); 352 } else { 353 if (!params.hasOwnProperty(SiteParameters.ajax_filter_key_unfilter)) { 354 loadCssGrid($('#' + params.id)); 355 } 356 } 357 }); 358 359 var loadCssGrid = function($href, $paginating) { 360 var is_paginating = false; 361 362 if (undefined !== $paginating && $paginating) { 363 var is_paginating = $paginating; 364 } 365 366 var href = ($href.is("a") ? $href.attr('href') : location), 367 cssgridSystem = ($href.is("a") ? $href.closest($('.cssgrid-system')) : $href), 368 cssgridWrapper = cssgridSystem.find($('.cssgrid-wrapper')), 369 cssgridFooter = cssgridSystem.find($('.cssgrid-footer-inner')), 370 cssgridResultCount = cssgridSystem.find($('.woocommerce-result-count-wrapper')), 371 cssgridContainer = cssgridSystem.find($('.cssgrid-layout')), 372 cssgridId = cssgridSystem.attr('id'); 373 if ( $href.is("a") && ! cssgridSystem.hasClass('un-no-history') ) { 374 UNCODE.lastURL = href; 375 history.pushState({ 376 myCSSgrid: true 377 }, document.title, href); 378 } 379 cssgridWrapper.addClass('cssgrid-loading'); 380 if (is_paginating) { 381 cssgridWrapper.addClass('grid-filtering'); 382 } 383 $.ajax({ 384 url: href 385 }).done(function(data) { 386 var $resultItems = $(data).find('#' + cssgridId + ' .cssgrid-layout').html(), 387 $resultPagination = $(data).find('#' + cssgridId + ' .pagination')[0], 388 $resultCount = $(data).find('#' + cssgridId + ' .woocommerce-result-count')[0]; 389 requestTimeout(function() { 390 cssgridContainer.html($resultItems); 391 cssgridWrapper.removeClass('cssgrid-loading'); 392 cssgridWrapper.removeClass('grid-filtering'); 393 var sequential = cssgridSystem.hasClass('cssgrid-animate-sequential') ? true : false; 394 UNCODE.animate_css_grids(cssgridSystem, cssgridContainer.find('.tmb-grid'), 0, sequential, false); 395 UNCODE.adaptive(); 396 if (SiteParameters.dynamic_srcset_active === '1') { 397 UNCODE.refresh_dynamic_srcset_size(cssgridContainer); 398 } 399 if (typeof UNCODE.lightbox !== 'undefined' && !SiteParameters.lbox_enhanced) { 400 var getLightbox = UNCODE.lightboxArray['ilightbox_' + cssgridContainer.closest('.cssgrid-system').attr('id')]; 401 if (typeof getLightbox === 'object') { 402 getLightbox.refresh(); 403 } else { 404 UNCODE.lightbox(); 405 } 406 } 407 cssgridContainer.trigger('more-items-loaded'); 408 $(window).trigger('more-items-loaded'); 409 window.dispatchEvent(new CustomEvent('uncode-more-items-loaded')); 410 }, 300); 411 412 $('.pagination', cssgridFooter).remove(); 413 cssgridFooter.append($resultPagination); 414 415 if (cssgridResultCount.length > 0) { 416 $('.woocommerce-result-count', cssgridResultCount).remove(); 417 cssgridResultCount.append($resultCount); 418 } 419 }); 420 }; 421 422 $filters.each(function(i, buttonGroup) { 423 var $buttonGroup = $(buttonGroup); 424 $buttonGroup.on('click', 'a:not(.no-grid-filter)', function() { 425 $buttonGroup.find('.active').removeClass('active'); 426 $(this).addClass('active'); 427 428 }); 429 430 var $cats_mobile_trigger = $('.menu-smart--filter-cats_mobile-toggle-trigger', $buttonGroup), 431 $cats_mobile_toggle = $('.menu-smart--filter-cats_mobile-toggle', $buttonGroup), 432 $cats_filters = $('.menu-smart--filter-cats', $buttonGroup); 433 $buttonGroup.on('click', 'a.menu-smart--filter-cats_mobile-toggle-trigger', function(e) { 434 e.preventDefault(); 435 $cats_filters.slideToggle(400, 'easeInOutCirc'); 436 }); 437 438 }); 439 }; 440}; 441 442 443})(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.