PageSourceSearch

https://www.hiltonheadisland.org/modules/custom/verb_crowdriff/js/verb_crowdriff.js?tlx7u6

js hiltonheadisland.org collected 2026-10-02 05:16:20 UTC 4,707 bytes, 136 lines download raw bytes

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.