1(function ($, Drupal, lazyLoad) { 2 Drupal.behaviors.verb_crowdriff = { 3 attach: function (context, settings) { 4 5 /** 6 * Ensure masonry grid is always loaded 7 */ 8 if ('IntersectionObserver' in window) { 9 var arr = document.querySelectorAll('.c-crowdriff-grid'); 10 var observer = new IntersectionObserver(function (entries, gridObserver) { 11 for (var i = 0; i < entries.length; i++) { 12 if (entries[i].isIntersecting) { 13 $(entries[i].target).masonry(); 14 gridObserver.unobserve(entries[i].target); 15 } 16 } 17 }); 18 for (var i = 0; i < arr.length; i++) { 19 observer.observe(arr[i]); 20 } 21 } 22 23 /** 24 * Load More Assets 25 */ 26 $(once('verb_crowdriff', '.c-crowdriff__load-more', context)).on('click', function (e) { 27 e.preventDefault(); 28 29 $crowdriff_load_more = $(this); 30 $crowdriff = $(this).parent(); 31 32 if ($crowdriff.length > 0) { 33 $crowdriff_grid = $('.c-crowdriff-grid', $crowdriff); 34 $crowdriff_assets_wrapper = $('.c-crowdriff__assets-wrapper', $crowdriff); 35 if ($crowdriff_assets_wrapper.length > 0 && $crowdriff_grid.length > 0) { 36 37 $crowdriff_load_more_wrapper = $('.c-crowdriff__load-more-wrapper', $crowdriff); 38 39 // Build assets url 40 var crowdriff_assets_url = '/crowdriff/'; 41 42 // Tack on language if present 43 if (settings.verb_crowdriff.use_path_prefix && settings.path.currentLanguage) { 44 crowdriff_assets_url = '/' + settings.path.currentLanguage + crowdriff_assets_url; 45 } 46 47 // App Id 48 var crowdriff_app_id = parseInt($crowdriff.attr('data-app')); 49 if (crowdriff_app_id) { 50 crowdriff_assets_url += 'app/' + crowdriff_app_id + '/'; 51 } 52 53 // Album Id's 54 var crowdriff_albums = $crowdriff.attr('data-albums'); 55 if (crowdriff_albums) { 56 crowdriff_assets_url += 'albums/' + crowdriff_albums + '/'; 57 } 58 59 // Folder Id 60 var crowdriff_folder = parseInt($crowdriff.attr('data-folder')); 61 if (crowdriff_folder) { 62 crowdriff_assets_url += 'folder/' + crowdriff_folder + '/'; 63 } 64 65 // Layout ID 66 var crowdriff_layout_id = $crowdriff.attr('data-layout'); 67 if (crowdriff_layout_id) { 68 crowdriff_assets_url += crowdriff_layout_id + '/'; 69 } 70 71 // Count 72 var crowdriff_count = $crowdriff.attr('data-count'); 73 if (crowdriff_count) { 74 crowdriff_assets_url += crowdriff_count + '/'; 75 } 76 77 // Pager Key 78 var crowdriff_pager_key = $crowdriff_load_more.attr('data-pager-key'); 79 if (crowdriff_pager_key) { 80 crowdriff_assets_url += crowdriff_pager_key; 81 } 82 83 if (crowdriff_assets_url && crowdriff_pager_key) { 84 85 // Make AJAX request to fetch more assets 86 $.ajax({ 87 url: crowdriff_assets_url, 88 method: 'GET', 89 dataType: "json", 90 success: function (response) { 91 92 if (response.assets) { 93 94 // Update assets 95 var $crowdriff_assets = $(response.assets); 96 $crowdriff_grid.append($crowdriff_assets).masonry('appended', $crowdriff_assets); 97 98 var $lazyImages = $crowdriff_grid.find('.js-cr-lazy'); 99 if ($lazyImages.length) { 100 $lazyImages.each(function () { 101 var $el = $(this); 102 $el.css('background-image', 'url(' + $el.data('bg') + ')'); 103 $el.removeClass('js-cr-lazy'); 104 }); 105 } 106 107 // Update pager 108 if (response.pager_key && response.count) { 109 110 $crowdriff_load_more.attr('data-pager-key', response.pager_key); 111 $crowdriff_load_more.attr('data-count', response.count); 112 113 } else { 114 115 // Remove pager 116 $crowdriff_load_more.remove(); 117 } 118 } else { 119 120 // Remove pager 121 $crowdriff_load_more.remove(); 122 } 123 } 124 }); 125 126 } else { 127 128 // Remove pager 129 $crowdriff_load_more.remove(); 130 } 131 } 132 } 133 }); 134 } 135 }; 136}(jQuery, Drupal, verb_crowdriff_helpers.imageObserver));
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.