PageSourceSearch

https://napperon.pt/assets/scripts/scripts.js?v=40

js napperon.pt collected 2026-10-08 04:01:42 UTC 38,755 bytes, 1,267 lines download raw bytes

1$(document).ready(function() {
2  // Default settings
3  const defaultSettings = {
4    currentSite: {
5      id: $('html').attr('data-site-id'),
6    },
7    duration: {
8      default: 800,
9      fast: 300
10    },
11    easing: {
12      default: 'easeOutQuint',
13      css: 'cubic-bezier(0.165, 0.840, 0.440, 1.000)'
14    },
15    elements: {
16      document: $(document),
17      window: $(window),
18      $header: $('.h-header'),
19      $htmlBody: $('html, body'),
20      $body: $('body'),
21      icon: '.h-icon',
22    },
23    status: {
24      alt: 'is-alt',
25      above: 'is-above',
26      active: 'is-active',
27      hover: 'is-hover',
28      disabled: 'is-disabled',
29      ommited: 'is-ommited',
30      initial: 'is-initial',
31      stuck: 'is-stuck',
32      pinned: 'is-pinned',
33      unpinned: 'is-unpinned',
34      visible: 'is-visible',
35      template: 'is-template',
36      loaded: 'is-loaded',
37      inverted: 'is-inverted',
38    },
39    queries: {
40      xs: 479,
41      sm: 567,
42      md: 767,
43      lg: 1025,
44      xl: 1279,
45      xxl: 1369,
46    }
47  };
48
49  const meta = {
50    update: function(meta) {
51      var self = this;
52      $('meta[name="description"]').attr("content", meta.seo_description);
53      $('meta[property="og\\:title"]').attr("content", meta.seo_title);
54      $('meta[property="og\\:image"]').attr("content", meta.seo_image);
55      $('meta[property="og\\:description"]').attr("content", meta.seo_description);
56      $('meta[property="og\\:url"]').attr("content", window.location.href);
57      $('title').text(meta.seo_title);
58
59    }
60  };
61
62  const polyfill = {
63    ofi: function(element) {
64      objectFitImages(element);
65    }
66  };
67
68  const resizerAnimationStopper = {
69    init: function() {
70      let resizeTimer;
71      window.addEventListener("resize", () => {
72        document.body.classList.add("resize-animation-stopper");
73        clearTimeout(resizeTimer);
74        resizeTimer = setTimeout(() => {
75          document.body.classList.remove("resize-animation-stopper");
76        }, 400);
77      });
78    }
79  }
80
81  const header = {
82    elements: {
83      header: '.h-header',
84      cover: '.h-header-cover',
85      nav: {
86        container: '.h-header-nav',
87        toggle: '.h-header-nav-toggle',
88      }
89    },
90    init: function() {
91      const self = this,
92          $header = $(self.elements.header),
93          $headerNavtoggle = $(self.elements.nav.toggle);
94
95      $headerNavtoggle.on('click.navToggle', function(){
96        $header.toggleClass(defaultSettings.status.active);
97        $headerNavtoggle.toggleClass(defaultSettings.status.active);
98        return false;
99      });
100
101      self.themeCheck($header);
102    },
103
104    restart: function() {
105      const self = this,
106            $headerNavtoggle = $(self.elements.nav.toggle);
107            
108      $headerNavtoggle.off('click.navToggle');
109      defaultSettings.elements.window.off('scroll.scrollTheme');
110      defaultSettings.elements.window.off('resize.resizeTheme')
111      self.init();
112    },
113
114    themeDisable: function(){
115      const self = this,
116          $header = $(self.elements.header),
117          $headerNavtoggle = $(self.elements.nav.toggle);
118
119      $headerNavtoggle.off('click.navToggle');
120      defaultSettings.elements.window.off('scroll.scrollTheme');
121      defaultSettings.elements.window.off('resize.resizeTheme')
122      $header.removeClass(defaultSettings.status.alt);
123    },
124
125    themeCheck: function($header){
126      const self = this;
127      
128      if ($(self.elements.cover).length) {
129        defaultSettings.elements.window.on('scroll.scrollTheme', function(){
130          self.offsetCheck();
131        });
132
133        defaultSettings.elements.window.on('resize.resizeTheme', function(){
134          self.offsetCheck();
135        }).resize();
136      } else {        
137        $header.removeClass(defaultSettings.status.alt);
138      }
139    },
140
141    offsetCheck: function() {
142      const self = this,
143            $header = $(self.elements.header),
144            $cover = $(self.elements.cover),
145            scrollOffset = $header.offset().top,
146            coverLimit = $cover.outerHeight() - $header.outerHeight();
147
148      if (scrollOffset > coverLimit) {
149        $header.removeClass(defaultSettings.status.alt);
150      } else {
151        $header.addClass(defaultSettings.status.alt);
152      }
153    },
154
155    close: function() {
156      var self = this,
157          $header = $(self.elements.header),
158          $headerNavtoggle = $(self.elements.nav.toggle);
159
160      $header.removeClass(defaultSettings.status.active);
161      $headerNavtoggle.removeClass(defaultSettings.status.active);
162    }
163  };
164
165  const tools = {
166    slugify: function(text) {
167      return text.toLowerCase().replace(/[^\w ]+/g,'').replace(/ +/g,'-');
168    }
169  };
170
171  const sticky = {
172    elements: {
173      sticky: '.h-sticky',
174      parent: '.h-sticky-parent',
175    },
176    init: function() {
177      var self = this;
178
179      if ($(self.elements.sticky).length) {
180        var $sticky = $(self.elements.sticky);
181
182        $sticky.css({
183          'max-width': $sticky.outerWidth()+'px',
184        });
185
186        pageSticky = new Sticky(self.elements.sticky,{
187          'wrap': true,
188          'marginTop': defaultSettings.elements.$header.outerHeight() + 50,
189          'stickyContainer': self.elements.parent,
190          'stickyClass': defaultSettings.status.stuck,
191        });
192      }
193    },
194    update: function() {
195      pageSticky.update();
196    },
197    destroy: function() {
198      pageSticky.destroy();
199    }
200  };
201
202  // Video player (Plyr)
203	const video = {
204		elements: {
205			video: 'h-video',
206			afterLoading: 'plyr'		
207		},
208		init: function() {
209
210      const self = this,
211          $video = document.getElementsByClassName(self.elements.video);
212      
213      if ($video !== null) {
214        let players = [];
215        for (let x = 0; x < $video.length; x++) {
216          players.push(new Plyr($video[x], {
217            controls: ['play-large','play','progress','current-time','volume'],
218            fullscreen: { iosNative: true },
219          }));
220        }
221      }
222		},
223
224    setOrder: function() {
225      const self = this,
226            $afterLoading = document.getElementsByClassName(self.elements.afterLoading);
227
228      //add ordering id for each player in page
229      if ($afterLoading !== null) {
230        for (let x = 0; x < $afterLoading.length; x++) {
231          $afterLoading[x].setAttribute('data-plyr-order-id', x);
232        }
233      }
234    }
235	};
236
237  const onScreenElement = {
238    element: '.h-onscreen-element',
239    check: function($parent) {
240
241      const self = this,
242      $element = $parent.find(self.element);    
243      if (!$element.visible(false, false, 'horizontal' )) {
244        $element.addClass(defaultSettings.status.inverted);
245      } else {
246        $element.removeClass(defaultSettings.status.inverted);
247      }
248
249    },
250    remove: function($parent) {
251      const self = this,
252            $element = $parent.find(self.element);
253      $element.removeClass(defaultSettings.status.inverted);
254    }
255  };
256
257  const filtering = {
258    elements: {
259      change: '.h-filtering-change',
260      container: '.h-filtering-container',
261      item: '.h-filtering-item',
262    },
263    init: function() {
264      const self = this
265            $gridContainer = $(self.elements.container+'[data-filtering-slug="grid"]'),
266            $indexContainer = $(self.elements.container+'[data-filtering-slug="index"]'),
267            $change = $(self.elements.change);
268            $activeChange = $(self.elements.change+'.'+defaultSettings.status.active),
269            $gridContainerItems = $gridContainer.find(self.elements.item),
270            $indexContainerItems = $indexContainer.find(self.elements.item),
271            activeFilter = $activeChange.attr('data-filter');
272
273      if ($gridContainer.length) { 
274        const $grid = $gridContainer.filterizr({
275          filter: activeFilter,
276          gridItemsSelector: self.elements.item,
277          layout: 'sameSize',
278          easing: defaultSettings.easing.css,
279          gutterPixels: 24, // Items spacing in pixels
280          filterOutCss: { // Filtering out animation
281            opacity: 0,
282            transform: 'scale(1)',
283          },
284          filterInCss: { // Filtering in animation
285            opacity: 1,
286            transform: 'scale(1)'
287          },
288        });
289        setTimeout(function(){
290          $gridContainer.filterizr('filter', activeFilter);
291        },500);
292      
293      }
294      
295      if ($indexContainer.length) {
296        const $index = $indexContainer.filterizr({
297          filter: activeFilter,
298          gridItemsSelector: self.elements.item,
299          layout: 'vertical',
300          filterOutCss: { // Filtering out animation
301            opacity: 0,
302            transform: 'scale(1)'
303          },
304          filterInCss: { // Filtering in animation
305            opacity: 1,
306            transform: 'scale(1)'
307          },
308          callbacks: {
309            // @TODO: Optimize + avoid repetition
310            onInit: function() {
311              let ct = 0;
312              
313              $indexContainerItems.removeClass('list-item--odd');
314              
315              $indexContainerItems.each(function(){
316                const $this = $(this);
317
318                if (!$this.hasClass('filteredOut')) {
319                  if(ct%2 == 0) {
320                    $this.addClass('list-item--odd');
321                  }
322                  ct++;
323                }
324              });
325            },
326            onFilteringEnd: function() {
327              let ct = 0;
328              
329              $indexContainerItems.removeClass('list-item--odd');
330              
331              $indexContainerItems.each(function(){
332                const $this = $(this);
333
334                if (!$this.hasClass('filteredOut')) {
335                  if(ct%2 == 0) {
336                    $this.addClass('list-item--odd');
337                  }
338                  ct++;
339                }
340              });
341            },
342          }
343        });
344      }
345
346      $change.on('click', function(e){
347        const $this = $(this),
348              url = $this.attr('href'),
349              title = $this.text();
350
351        $change.removeClass(defaultSettings.status.active);
352        $this.addClass(defaultSettings.status.active);
353        
354        history.pushState({}, null, url);
355        // $('title').text(title);
356
357        e.preventDefault();
358      });
359
360      $gridContainerItems
361        .mouseenter(function(){
362          const $this = $(this);
363          onScreenElement.check($this);
364          $this.addClass(defaultSettings.status.above);
365        })
366        .mouseleave(function() {
367          const $this = $(this);
368          onScreenElement.remove($this);
369          $this.removeClass(defaultSettings.status.above);
370        })
371        .mousemove(function(e){
372          const $this = $(this),
373                $text = $this.find(onScreenElement.element),
374                offset = $this.offset(),
375                x = e.pageX- offset.left;
376                y = e.pageY- offset.top;
377
378          onScreenElement.check($this);
379          $text.css({
380            'top': y+'px',
381            'left': x+'px',
382          });
383        });
384
385    },
386    
387  };
388
389  const lazy = {
390    elements: {
391      lazy: 'h-lazy',
392    },
393    init: function() {
394      const self = this;
395
396      let lazyLoadInstance = new LazyLoad({
397        elements_selector: '.'+self.elements.lazy,
398        threshold: 100,
399        class_loaded: defaultSettings.status.loaded,
400        callback_loaded: function(el) {
401          polyfill.ofi(el);
402          $(el).parent().addClass(defaultSettings.status.loaded);
403        }
404      });
405    }
406  };
407
408  const toggleView = {
409    elements: {
410      trigger: '.h-toggleview-trigger',
411      container: '.h-toggleview-container',
412    },
413    init: function() {
414      const self = this,
415            $trigger = $(self.elements.trigger);
416
417      if ($(self.elements.container).length) {
418
419        if (typeof Cookies.get('toggleview') !== 'undefined') {
420          const slug = Cookies.get('toggleview');
421
422          $(self.elements.container+'[data-toggleview-slug="'+slug+'"]').addClass(defaultSettings.status.active);
423        } else {
424          const $first = $(self.elements.container+'[data-toggleview-slug="grid"]'),
425                slug = $first.attr('data-toggleview-slug');
426
427          $first.addClass(defaultSettings.status.active);
428
429          Cookies.set('toggleview', slug, {
430            expires: 1/24/60,
431            sameSite: 'strict',
432          });
433        }
434
435        $trigger.on('click', function(e){
436
437          $(self.elements.container).toggleClass(defaultSettings.status.active);
438
439          const slug = $(self.elements.container+'.'+defaultSettings.status.active).attr('data-toggleview-slug');
440
441          Cookies.set('toggleview', slug, {
442            expires: 1/24/60,
443            sameSite: 'strict',
444          });
445
446          e.preventDefault();
447        });
448      }
449    }
450  };
451
452  const maps = {
453		elements: {
454			container: '.h-map',
455		},
456		init: function() {
457			var self = this;
458
459      if (typeof global !== 'undefined' && typeof global.key !== 'undefined') { 
460        window.googleMapsLoaded = function() {
461          self.generate();
462        }
463        $.getScript('//maps.googleapis.com/maps/api/js?key='+global.key+'&callback=googleMapsLoaded');
464      }
465		},
466		generate: function() {
467			var self = this,
468          $container = $(self.elements.container);
469
470      if (typeof google === 'undefined') {
471        self.init();
472        return false;
473      }
474
475      if ($container.length) {
476        $container.each(function(){
477          var $this = $(this),
478              lat = $this.attr('data-map-lat'),
479              lng = $this.attr('data-map-lng'),
480              markerLabel = $this.attr('data-map-label') ? $this.attr('data-map-label') : '';
481              //markerIcon = $this.attr('data-map-icon') ? global.images_url+$this.attr('data-map-icon') : '';
482
483          const styles = [
484            {
485                "featureType": "water",
486                "elementType": "geometry.fill",
487                "stylers": [
488                    {
489                        "color": "#d3d3d3"
490                    }
491                ]
492            },
493            {
494                "featureType": "transit",
495                "stylers": [
496                    {
497                        "color": "#808080"
498                    },
499                    {
500                        "visibility": "off"
501                    }
502                ]
503            },
504            {
505                "featureType": "road.highway",
506                "elementType": "geometry.stroke",
507                "stylers": [
508                    {
509                        "visibility": "on"
510                    },
511                    {
512                        "color": "#b3b3b3"
513                    }
514                ]
515            },
516            {
517                "featureType": "road.highway",
518                "elementType": "geometry.fill",
519                "stylers": [
520                    {
521                        "color": "#ffffff"
522                    }
523                ]
524            },
525            {
526                "featureType": "road.local",
527                "elementType": "geometry.fill",
528                "stylers": [
529                    {
530                        "visibility": "on"
531                    },
532                    {
533                        "color": "#ffffff"
534                    },
535                    {
536                        "weight": 1.8
537                    }
538                ]
539            },
540            {
541                "featureType": "road.local",
542                "elementType": "geometry.stroke",
543                "stylers": [
544                    {
545                        "color": "#d7d7d7"
546                    }
547                ]
548            },
549            {
550                "featureType": "poi",
551                "elementType": "geometry.fill",
552                "stylers": [
553                    {
554                        "visibility": "on"
555                    },
556                    {
557                        "color": "#ebebeb"
558                    }
559                ]
560            },
561            {
562                "featureType": "administrative",
563                "elementType": "geometry",
564                "stylers": [
565                    {
566                        "color": "#a7a7a7"
567                    }
568                ]
569            },
570            {
571                "featureType": "road.arterial",
572                "elementType": "geometry.fill",
573                "stylers": [
574                    {
575                        "color": "#ffffff"
576                    }
577                ]
578            },
579            {
580                "featureType": "road.arterial",
581                "elementType": "geometry.fill",
582                "stylers": [
583                    {
584                        "color": "#ffffff"
585                    }
586                ]
587            },
588            {
589                "featureType": "landscape",
590                "elementType": "geometry.fill",
591                "stylers": [
592                    {
593                        "visibility": "on"
594                    },
595                    {
596                        "color": "#efefef"
597                    }
598                ]
599            },
600            {
601                "featureType": "road",
602                "elementType": "labels.text.fill",
603                "stylers": [
604                    {
605                        "color": "#696969"
606                    }
607                ]
608            },
609            {
610                "featureType": "administrative",
611                "elementType": "labels.text.fill",
612                "stylers": [
613                    {
614                        "visibility": "on"
615                    },
616                    {
617                        "color": "#737373"
618                    }
619                ]
620            },
621            {
622                "featureType": "poi",
623                "elementType": "labels.icon",
624                "stylers": [
625                    {
626                        "visibility": "off"
627                    }
628                ]
629            },
630            {
631                "featureType": "poi",
632                "elementType": "labels",
633                "stylers": [
634                    {
635                        "visibility": "off"
636                    }
637                ]
638            },
639            {
640                "featureType": "road.arterial",
641                "elementType": "geometry.stroke",
642                "stylers": [
643                    {
644                        "color": "#d6d6d6"
645                    }
646                ]
647            },
648            {
649                "featureType": "road",
650                "elementType": "labels.icon",
651                "stylers": [
652                    {
653                        "visibility": "off"
654                    }
655                ]
656            },
657            {},
658            {
659                "featureType": "poi",
660                "elementType": "geometry.fill",
661                "stylers": [
662                    {
663                        "color": "#dadada"
664                    }
665                ]
666            }
667        ];
668          
669          var settings = {
670            center: new google.maps.LatLng(lat,lng),
671            zoom: 15,
672            disableDefaultUI: true,
673            styles: styles,
674          };
675
676          var map = new google.maps.Map($this[0],settings);
677
678          function HTMLMarker(lat,lng){
679            this.lat = lat;
680            this.lng = lng;
681            this.pos = new google.maps.LatLng(lat,lng);
682          }
683
684          HTMLMarker.prototype = new google.maps.OverlayView();
685          HTMLMarker.prototype.onRemove= function(){}
686          
687          //init your html element here
688          HTMLMarker.prototype.onAdd= function(){
689            this.div = document.createElement('DIV');
690            this.div.className = "htmlMarker";
691            this.div.style.position='absolute';
692            this.div.innerHTML = '<div class="map-marker"></div><div class="map-label">x marks the spot</div>';
693            var panes = this.getPanes();
694            panes.overlayImage.appendChild(this.div);
695          }
696          
697          HTMLMarker.prototype.draw = function(){
698            var overlayProjection = this.getProjection();
699            var position = overlayProjection.fromLatLngToDivPixel(this.pos);
700            var panes = this.getPanes();
701            this.div.style.left = position.x + 'px';
702            this.div.style.top = position.y + 'px';
703          }
704          
705          //to use it
706          const htmlMarker = new HTMLMarker(lat, lng);
707          htmlMarker.setMap(map);
708        });
709      }
710		}
711	};
712
713  const scrollReveal = {
714    element: '.h-reveal',
715    init: function() {
716      var self = this;
717
718      var offset = defaultSettings.elements.window.height() / 4; 
719      //var offset = 200;
720
721      ScrollReveal().reveal(self.element, {
722        distance: '-100px',
723        duration: defaultSettings.duration.default,
724        easing: defaultSettings.easing.css,
725        origin: 'top',
726        scale: 0.95,
727        viewOffset: {
728          top: offset,
729          bottom: offset,
730        },
731      });
732    }
733  };
734
735  const loading = {
736    element: '.h-loading',
737    init: function(element){
738      var self = this;
739
740      // Avoid multiple loadings
741      self.destroy();
742
743      if (typeof element === 'undefined') {
744        var html = [
745          '<div class="u-loading is-fixed h-loading">',
746            '<svg width="31" height="31" viewBox="0 0 31 31" fill="none" xmlns="http://www.w3.org/2000/svg">',
747              '<g clip-path="url(#clip0)">',
748                '<path d="M15.1778 0.177795C14.6926 0.177795 14.2989 0.571545 14.2989 1.0567V6.70514C14.2989 7.1903 14.6926 7.58405 15.1778 7.58405C15.6629 7.58405 16.0567 7.1903 16.0567 6.70514V1.0567C16.0567 0.571545 15.6635 0.177795 15.1778 0.177795Z" fill="white"/>',
749                '<path d="M15.1778 22.7716C14.6926 22.7716 14.2989 23.1654 14.2989 23.6505V29.2989C14.2989 29.7841 14.6926 30.1779 15.1778 30.1779C15.6629 30.1779 16.0567 29.7841 16.0567 29.2989V23.6505C16.0567 23.1654 15.6635 22.7716 15.1778 22.7716Z" fill="white"/>',
750                '<path d="M8.87842 2.50923C8.63584 2.08912 8.09795 1.94498 7.67783 2.18755C7.25771 2.43013 7.11357 2.96802 7.35615 3.38814L10.1804 8.28013C10.3433 8.56197 10.6386 8.71958 10.9421 8.71958C11.0909 8.71958 11.2421 8.6815 11.381 8.60181C11.8011 8.35923 11.9452 7.82134 11.7026 7.40123L8.87842 2.50923Z" fill="white"/>',
751                '<path d="M20.1752 22.0759C19.9327 21.6558 19.3948 21.5117 18.9747 21.7543C18.5545 21.9968 18.4104 22.5347 18.653 22.9549L21.4772 27.8463C21.6401 28.1281 21.9354 28.2857 22.2389 28.2857C22.3883 28.2857 22.5389 28.2476 22.6778 28.1679C23.0979 27.9254 23.242 27.3875 22.9995 26.9673L20.1752 22.0759Z" fill="white"/>',
752                '<path d="M2.50926 8.87846L7.40125 11.7027C7.53953 11.7824 7.6907 11.8204 7.84011 11.8204C8.14363 11.8204 8.43953 11.6628 8.60183 11.381C8.84441 10.9609 8.70027 10.423 8.28015 10.1804L3.38816 7.3562C2.96746 7.11362 2.43015 7.25776 2.18758 7.67787C1.945 8.09799 2.08855 8.63588 2.50926 8.87846Z" fill="white"/>',
753                '<path d="M27.8463 21.4772L22.9549 18.653C22.5342 18.4104 21.9969 18.5546 21.7543 18.9747C21.5117 19.3948 21.6558 19.9327 22.076 20.1753L26.9674 22.9995C27.1056 23.0792 27.2568 23.1173 27.4062 23.1173C27.7097 23.1173 28.0056 22.9597 28.1679 22.6778C28.4111 22.2577 28.267 21.7198 27.8463 21.4772Z" fill="white"/>',
754                '<path d="M7.58403 15.1778C7.58403 14.6926 7.19028 14.2989 6.70512 14.2989H1.05669C0.57153 14.2989 0.17778 14.6926 0.17778 15.1778C0.17778 15.663 0.57153 16.0567 1.05669 16.0567H6.70512C7.19028 16.0567 7.58403 15.6635 7.58403 15.1778Z" fill="white"/>',
755                '<path d="M29.2989 14.2989H23.6505C23.1653 14.2989 22.7716 14.6926 22.7716 15.1778C22.7716 15.663 23.1653 16.0567 23.6505 16.0567H29.2989C29.7841 16.0567 30.1778 15.663 30.1778 15.1778C30.1778 14.6926 29.7841 14.2989 29.2989 14.2989Z" fill="white"/>',
756                '<path d="M8.60123 18.9747C8.35865 18.5546 7.82135 18.4104 7.40065 18.653L2.50865 21.4772C2.08854 21.7198 1.9444 22.2577 2.18698 22.6778C2.34987 22.9597 2.64518 23.1173 2.94869 23.1173C3.09752 23.1173 3.24869 23.0792 3.38756 22.9995L8.27955 20.1753C8.70026 19.9327 8.8444 19.3954 8.60123 18.9747Z" fill="white"/>',
757                '<path d="M21.7543 11.3809C21.9172 11.6627 22.2125 11.8203 22.516 11.8203C22.6649 11.8203 22.816 11.7823 22.9549 11.7026L27.8463 8.87835C28.2664 8.63577 28.4106 8.09788 28.168 7.67776C27.9254 7.25706 27.3875 7.1135 26.9674 7.35608L22.076 10.1803C21.6553 10.4229 21.5117 10.9608 21.7543 11.3809Z" fill="white"/>',
758                '<path d="M11.3809 21.7543C10.9608 21.5117 10.4229 21.6558 10.1804 22.0759L7.35615 26.9673C7.11357 27.3875 7.25771 27.9254 7.67783 28.1679C7.81611 28.2476 7.96728 28.2857 8.1167 28.2857C8.42021 28.2857 8.71611 28.1281 8.87841 27.8463L11.7026 22.9543C11.9452 22.5341 11.8016 21.9968 11.3809 21.7543Z" fill="white"/>',
759                '<path d="M18.9747 8.60123C19.1129 8.68092 19.2641 8.71901 19.4135 8.71901C19.717 8.71901 20.0129 8.56139 20.1752 8.27955L22.9995 3.38815C23.242 2.96803 23.0979 2.43014 22.6778 2.18756C22.2577 1.94498 21.7198 2.08854 21.4772 2.50924L18.653 7.40065C18.4104 7.82135 18.5545 8.35865 18.9747 8.60123Z" fill="white"/>',
760              '</g>',
761              '<defs>',
762                '<clipPath id="clip0">',
763                  '<rect width="30" height="30" fill="white" transform="translate(0.17778 0.177795)"/>',
764                '</clipPath>',
765              '</defs>',
766            '</svg>',
767          '</div>',
768        ].join('');
769
770        defaultSettings.elements.$body.append(html);
771      } else {
772        var html = [
773          '<div class="u-loading h-loading">',
774          '</div>',
775        ].join('');
776
777        $(element).append(html);
778      }
779    },
780
781    destroy: function(){
782      var self = this;
783
784      $(self.element).remove();
785    }
786  };
787
788  const scrollTop = {
789    elements: {
790      trigger: '.h-scrolltop',
791    },
792    init: function() {
793      var self = this;
794
795      $(self.elements.trigger).on('click', function() {
796        self.go();
797        return false;
798      });
799    },
800    go: function() {
801      defaultSettings.elements.$htmlBody.animate({
802        scrollTop: 0,
803      }, defaultSettings.duration.fast);
804    }
805  };
806
807  const transition = {
808    tweaking: {
809      duration: defaultSettings.duration.fast
810    },
811    hide: function($element) {
812      var self = this;
813      $element.animate({opacity:'0'}, self.tweaking.duration);
814      $element.css({pointerEvents:'none'});
815    },
816
817    show: function($element) {
818      var self = this;
819
820      setTimeout(function(){
821        $element.animate({opacity:'1'}, self.tweaking.duration);
822        $element.css({pointerEvents:'auto'});
823      }, self.tweaking.duration);
824    },
825  };
826  
827  const share = {
828    elements: {
829      item: '.h-social-item',
830      share: '.h-social-share',
831    },
832    init: function(meta){
833      var self = this;
834
835      $(self.elements.item).each(function(){
836        var $this = $(this),
837            type = $this.attr('data-social-share');
838
839        if (typeof meta !== 'undefined' && typeof meta.seo_title !== 'undefined') {
840          var title = meta.seo_title;
841        } else {
842          var title = $('meta[property="og:title"]').attr('content');
843        }
844
845        switch (type) {
846          case 'facebook':
847            $this.attr('href','//www.facebook.com/sharer/sharer.php?u='+window.location.href);
848            break;
849
850          case 'linkedin':
851            $this.attr('href','//www.linkedin.com/shareArticle?mini=true&url='+window.location.href);
852            break;
853
854          case 'twitter':
855            $this.attr('href','//twitter.com/share?url='+window.location.href+'&text='+encodeURIComponent(title));
856            break;
857
858          case 'email':
859            $this.attr('href','mailto:?subject='+title+'&body='+window.location.href);
860            break;
861          
862          case 'whatsapp':
863            $this.attr('href','//api.whatsapp.com/send?text='+window.location.href);
864            $this.attr('target','_blank');
865            break;
866        }
867      });
868
869      $(self.elements.share).on("click",function(){
870        var href = $(this).attr('href');
871        fbpopup = window.open(href, 'pop', 'width=500, height=500, scrollbars=no');
872        return false;
873      });
874    }
875  };
876
877  const slider = {
878    elements: {
879      slider: '.h-slider',
880      item: '.h-slider-item',
881    },
882    init: function() {
883      var self = this;
884      
885      sliders = [];
886      intervals = [];
887
888      if ($(self.elements.slider).length) {
889        $(self.elements.slider).each(function(index){
890          
891          const elements = this.querySelectorAll(self.elements.item);
892
893          intervals[index] = 0;
894
895          sliders[index] = new KeenSlider(this, {
896            slides: elements.length,
897            loop: true,
898            duration: 2000,
899            created: function(s) {
900              elements.forEach((element, idx) => {
901                element.style.left = '-'+parseInt(100 * idx)+'%' 
902              });
903         
904              self.autoplay(true, index);
905            },
906            dragStart: function() {
907              self.autoplay(false, index);
908            },
909            dragEnd: function() {
910              self.autoplay(true, index);
911              lazy.init();
912            },
913            move: function(s) {
914              const opacities = s.details().positions.map((slide) => slide.portion)
915              elements.forEach((element, idx) => {
916                element.style.opacity = opacities[idx]
917              })
918            },
919          });
920
921          /*
922          this.addEventListener('mouseover', function() {
923            self.autoplay(false, index);
924          });
925          this.addEventListener("mouseout", function() {
926            self.autoplay(true, index);
927          });
928          */
929        });
930      }
931      
932    },
933    autoplay: function(run, index) {
934      clearInterval(intervals[index])
935      intervals[index] = setInterval(() => {
936        if (run && sliders[index]) {
937          sliders[index].next()
938        }
939      }, 7000)
940    }
941  };
942  
943  const tracking = {
944    elements: {
945      modal: '.h-tracking-modal',
946      accept: '.h-tracking-accept',
947    },
948    init: function() {
949      var self = this;
950
951      if (typeof Cookies.get('tracking') !== 'undefined' || Cookies.get('tracking') != 'accepted') {
952        $(self.elements.modal).addClass(defaultSettings.status.active);
953      } else {
954        analytics.init();
955      }
956
957      $(self.elements.accept).on('click', function() {
958        analytics.init();
959        Cookies.set('tracking', 'accepted', {
960          expires: 1/24/60,
961          sameSite: 'strict',
962        });
963        $(self.elements.modal).removeClass(defaultSettings.status.active);
964        return false;
965      });
966    }
967  };
968  
969  const analytics = {
970    init: function(){
971      var self = this;
972      
973      var ga = document.createElement('script')
974        ga.type = 'text/javascript'
975        ga.async = true
976        ga.src = 'https://googletagmanager.com/gtag/js?id=';
977
978      var s = document.getElementsByTagName('script')[0];
979      s.parentNode.insertBefore(ga, s);
980
981      window.dataLayer = window.dataLayer || [];
982
983      self.gtag('js', new Date());
984      self.gtag('config', '');
985    },
986    gtag: function() {
987      window.dataLayer.push(arguments);
988    },
989    send: {
990      pageview: function(meta) {
991        var self = analytics;
992
993        self.gtag('config', '', {
994          'page_title' : meta.seo_title,
995          'page_path': window.location.href
996        });
997      }
998    }
999  };
1000
1001  const stickySidebar = {
1002    elements: {
1003      contentMargin: '.h-sticky-content-margin',
1004      sidebar: '.h-sticky-sidebar',
1005      container: '.h-sticky-container',
1006    },
1007    init: function() {
1008      const self = this;
1009
1010      if ($(self.elements.sidebar).length) {
1011        self._init();
1012      }
1013    },
1014    _init: function() {
1015      const self = this;
1016
1017      const sidebar = new StickySidebar(self.elements.sidebar, {
1018        topSpacing: parseInt($(self.elements.contentMargin).offset().top),
1019        //topSpacing: parseInt(defaultSettings.elements.$header.outerHeight()) * 1.5,
1020        //bottomSpacing: 20,
1021        containerSelector: self.elements.container,
1022      });
1023
1024    }
1025  };
1026
1027  const dynamicBg = {
1028    elements: {
1029      src: '.h-dynamicbg-src',
1030      target: '.h-dynamicbg-target',
1031    },
1032    init: function() {
1033      const self = this,
1034            $target = $(self.elements.target),
1035            originalSrc = $target.attr('src');
1036
1037      $(self.elements.src)
1038        .mouseenter(function(){
1039          const $this = $(this),
1040                src = $this.attr('data-dynamicbg-src');
1041
1042          if (src !== null && typeof src !== 'undefined') {
1043            $target.attr('src', src).parent().addClass(defaultSettings.status.active);
1044          }
1045        })
1046        .mouseleave(function() {
1047          $target.attr('src', originalSrc).parent().removeClass(defaultSettings.status.active);
1048        });
1049
1050      /*
1051      $(self.elements.src).on('mouseout', function(){
1052        console.log('out');
1053        $target.attr('src', originalSrc);
1054      });
1055      */
1056
1057    }
1058  };
1059
1060  const list = {
1061    elements: {
1062      year: '.h-list-year',
1063    },
1064    init: function() {
1065      const self = this,
1066            $year = $(self.elements.year);
1067      
1068      let width = 0;
1069    
1070      $year.each(function(){
1071        const $this = $(this);
1072
1073        if ($this.outerWidth() > width) {
1074          width = $this.outerWidth();
1075          $year.css('min-width', width+'px');
1076        }
1077      });
1078    }
1079  };
1080  
1081  const pages = {
1082    elements: { 
1083      main: '.h-pages-main',
1084      link: '.h-pages-link',
1085    },
1086    init: function(){
1087      var self = this;
1088
1089      // On page ajax link click
1090      $(self.elements.link).on('click.pagesClick', function(){
1091
1092        var $this = $(this),
1093            info = {
1094              url: $this.attr('href'),
1095              site_id: defaultSettings.currentSite.id,
1096              uri: $this.attr('data-pages-uri') ? $this.attr('data-pages-uri') : null,
1097              data: {},
1098            };
1099
1100        self.change($this,info,true);
1101        return false;
1102      });
1103
1104      // On browser back and front history
1105      defaultSettings.elements.window.on('popstate.browserNavigate', function(e) {
1106
1107        var $this = $(self.elements.link+'[href="'+location.href+'"]').length ? $(self.elements.link+'[href="'+location.href+'"]').first() : null;
1108
1109        if (e.originalEvent.state !== null) {
1110          var info = e.originalEvent.state;
1111        } else {
1112          var info = {
1113            url: location.href,
1114            site_id: defaultSettings.currentSite.id,
1115            uri: ($this !== null && !$this.attr('data-pages-uri')) ? $this.attr('data-pages-uri') : null, // @TODO
1116            data: {},
1117          };
1118        }
1119        
1120        // Fallback for categories
1121        if (info == null || $.isEmptyObject(info)) {
1122          // console.log('problem here');
1123
1124          let uri = location.pathname.split('/');
1125              uri = uri[1];
1126
1127          info = {
1128            site_id: defaultSettings.currentSite.id,
1129            uri: uri,
1130            url: location.href,
1131            data: {},
1132          }
1133
1134          $this = $(self.elements.link+'[data-pages-uri="'+uri+'"]').length ? $(self.elements.link+'[data-pages-uri="'+uri+'"]').first() : null;
1135        }
1136        
1137        // console.log(info);
1138
1139        self.change($this,info,false);
1140      });
1141    },
1142
1143    restart: function() {
1144      var self = this;
1145      $(self.elements.link).off('click.pagesClick');
1146      defaultSettings.elements.window.off('popstate.browserNavigate');
1147      self.init();
1148    },
1149
1150    change: function($this,info,isPushState) {
1151      var self = this;
1152      $.ajax({
1153        url: '',
1154        type: 'get',
1155        //url: info.url,
1156        data: {
1157          action: 'ajaxify/pages/render',
1158          site_id: info.site_id,
1159          uri: info.uri,
1160          url: info.url,
1161          data: info.data,
1162        },
1163        dataType: 'json',
1164        cache: false,
1165        beforeSend: function() {
1166          // Start page leave animation
1167          transition.hide($(self.elements.main));
1168
1169          scrollTop.go();
1170          $(self.elements.link).removeClass(defaultSettings.status.active);
1171
1172          if ($this !== null) {
1173            $this.addClass(defaultSettings.status.active);
1174          }
1175
1176          header.close();
1177          header.themeDisable();
1178          
1179          // Init loading
1180          loading.init();
1181        },
1182        success: function(data) {
1183          if (data.status == 'OK') {
1184
1185            //Common stuff
1186            setTimeout(function(){
1187              // Update page content
1188              $(self.elements.main).html(data.html);
1189
1190              // Update URL
1191              if (isPushState == true) {
1192                //history.pushState(info, data.meta.seo_title, info.url);
1193                history.pushState(info, null, info.url);
1194              }
1195
1196              // Update meta tags on header
1197              meta.update(data.meta);
1198
1199              // Destroy loading
1200              loading.destroy();
1201
1202              // Init / Restart scripts
1203              lazy.init();
1204              toggleView.init();
1205              filtering.init();
1206              video.init();
1207              resizerAnimationStopper.init();
1208              dynamicBg.init();
1209              stickySidebar.init();
1210              slider.init();
1211              maps.generate();
1212              list.init();
1213              //tracking.init();
1214              //scrollReveal.init();
1215              //sticky.init();
1216              //scrollTop.init();
1217              //share.init();
1218              header.restart();
1219              pages.restart();
1220              
1221              if (typeof Cookies.get('tracking') !== 'undefined' && Cookies.get('tracking') == 'accepted') {
1222                analytics.send.pageview(data.meta);
1223              }
1224
1225              // Add 'is-active' status to the $this and instances of the link with the same data-pages-uri
1226              // $(self.elements.link).removeClass(defaultSettings.status.active);
1227
1228              // $this.addClass(defaultSettings.status.active);
1229              $(self.elements.link+'[data-pages-uri="'+info.uri+'"]').addClass(defaultSettings.status.active);
1230
1231            }, transition.tweaking.duration);
1232
1233            // Remove transition
1234            transition.show($(self.elements.main));
1235
1236          }
1237
1238        },
1239        error: function(xhr, status, error) {
1240          console.log(status + ' - ' + error);
1241          
1242          if ($this !== null) {
1243            $this.removeClass(defaultSettings.status.active);
1244          }
1245        }
1246      });
1247    },
1248  };
1249  
1250  pages.init();
1251  lazy.init();
1252  toggleView.init();
1253  filtering.init();
1254  header.init();
1255  video.init();
1256  resizerAnimationStopper.init();
1257  dynamicBg.init();
1258  stickySidebar.init();
1259  slider.init();
1260  maps.init();
1261  list.init();
1262  //tracking.init();
1263  //scrollReveal.init();
1264  //sticky.init();
1265  //scrollTop.init();
1266  //share.init();
1267});

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.