PageSourceSearch

https://cidade997.com.br/wp-content/themes/cidade-23/assets/js/functions.js?ver=1791153097

js cidade997.com.br collected 2026-10-05 22:10:19 UTC 27,830 bytes, 779 lines download raw bytes

1/**
2* Blogzine - Blog and Magazine Bootstrap 5 Theme
3*
4* @author Webestica (https://www.webestica.com/)
5* @version 1.3.0
6**/
7
8
9/* ===================
10Table Of Content
11======================
1201 PRELOADER
1302 MEGA MENU
1403 STICKY HEADER
1504 TINY SLIDER
1605 PARALLAX BACKGROUND
1706 STICKY BAR
1807 TOOLTIP
1908 POPOVER
2009 BACK TO TOP
2110 STICKY POST
2211 STICKY FOOTER
2312 GLIGHTBOX
2413 ISOTOPE
2514 FONT SIZE
2615 LAZY LOAD
2716 QUILL EDITOR
2817 VIDEO PLAYER
2918 OVERLAY SCROLLBAR
3019 DASHBOARD CHART
3120 TRAFFIC CHART
32====================== */
33
34"use strict";
35!function () {
36
37    window.Element.prototype.removeClass = function () {
38        let className = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : "",
39            selectors = this;
40        if (!(selectors instanceof HTMLElement) && selectors !== null) {
41            selectors = document.querySelector(selectors);
42        }
43        if (this.isVariableDefined(selectors) && className) {
44            selectors.classList.remove(className);
45        }
46        return this;
47    }, window.Element.prototype.addClass = function () {
48        let className = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : "",
49            selectors = this;
50        if (!(selectors instanceof HTMLElement) && selectors !== null) {
51            selectors = document.querySelector(selectors);
52        }
53        if (this.isVariableDefined(selectors) && className) {
54            selectors.classList.add(className);
55        }
56        return this;
57    }, window.Element.prototype.toggleClass = function () {
58        let className = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : "",
59            selectors = this;
60        if (!(selectors instanceof HTMLElement) && selectors !== null) {
61            selectors = document.querySelector(selectors);
62        }
63        if (this.isVariableDefined(selectors) && className) {
64            selectors.classList.toggle(className);
65        }
66        return this;
67    }, window.Element.prototype.isVariableDefined = function () {
68        return !!this && typeof (this) != 'undefined' && this != null;
69    }
70}();
71
72// Get CSS var value
73var ThemeColor = function () {
74  return {
75    getCssVariableValue: function (e) {
76      var t = getComputedStyle(document.documentElement).getPropertyValue(e);
77      return t && t.length > 0 && (t = t.trim()), t;
78    }
79  };
80}();
81
82var e = {
83    init: function () {
84        e.preLoader(),
85        e.megaMenu(),
86        e.stickyHeader(),
87        e.tinySlider(),
88        e.parallaxBG(),
89        e.stickyBar(),
90        e.toolTipFunc(),
91        e.popOverFunc(),
92        e.backTotop(),
93        e.stickyPost(),
94        e.stickyFooter(),
95        e.lightBox(),
96        e.enableIsotope(),
97        e.zooming(),
98        e.lazyLoading(),
99        e.quill(),
100        e.videoPlyr()
101        e.overlayScrollbars(),
102        e.trafficsourcesChart(),
103        e.trafficstatsChart();
104    },
105    isVariableDefined: function (el) {
106        return typeof !!el && (el) != 'undefined' && el != null;
107    },
108    getParents: function (el, selector, filter) {
109        const result = [];
110        const matchesSelector = el.matches || el.webkitMatchesSelector || el.mozMatchesSelector || el.msMatchesSelector;
111
112        // match start from parent
113        el = el.parentElement;
114        while (el && !matchesSelector.call(el, selector)) {
115            if (!filter) {
116                if (selector) {
117                    if (matchesSelector.call(el, selector)) {
118                        return result.push(el);
119                    }
120                } else {
121                    result.push(el);
122                }
123            } else {
124                if (matchesSelector.call(el, filter)) {
125                    result.push(el);
126                }
127            }
128            el = el.parentElement;
129            if (e.isVariableDefined(el)) {
130                if (matchesSelector.call(el, selector)) {
131                    return el;
132                }
133            }
134
135        }
136        return result;
137    },
138    getNextSiblings: function (el, selector, filter) {
139        let sibs = [];
140        let nextElem = el.parentNode.firstChild;
141        const matchesSelector = el.matches || el.webkitMatchesSelector || el.mozMatchesSelector || el.msMatchesSelector;
142        do {
143            if (nextElem.nodeType === 3) continue; // ignore text nodes
144            if (nextElem === el) continue; // ignore elem of target
145            if (nextElem === el.nextElementSibling) {
146                if ((!filter || filter(el))) {
147                    if (selector) {
148                        if (matchesSelector.call(nextElem, selector)) {
149                            return nextElem;
150                        }
151                    } else {
152                        sibs.push(nextElem);
153                    }
154                    el = nextElem;
155
156                }
157            }
158        } while (nextElem = nextElem.nextSibling)
159        return sibs;
160    },
161    on: function (selectors, type, listener) {
162        document.addEventListener("DOMContentLoaded", () => {
163            if (!(selectors instanceof HTMLElement) && selectors !== null) {
164                selectors = document.querySelector(selectors);
165            }
166            selectors.addEventListener(type, listener);
167        });
168    },
169    onAll: function (selectors, type, listener) {
170        document.addEventListener("DOMContentLoaded", () => {
171            document.querySelectorAll(selectors).forEach((element) => {
172                if (type.indexOf(',') > -1) {
173                    let types = type.split(',');
174                    types.forEach((type) => {
175                        element.addEventListener(type, listener);
176                    });
177                } else {
178                    element.addEventListener(type, listener);
179                }
180
181
182            });
183        });
184    },
185    removeClass: function (selectors, className) {
186        if (!(selectors instanceof HTMLElement) && selectors !== null) {
187            selectors = document.querySelector(selectors);
188        }
189        if (e.isVariableDefined(selectors)) {
190            selectors.removeClass(className);
191        }
192    },
193    removeAllClass: function (selectors, className) {
194        if (e.isVariableDefined(selectors) && (selectors instanceof HTMLElement)) {
195            document.querySelectorAll(selectors).forEach((element) => {
196                element.removeClass(className);
197            });
198        }
199
200    },
201    toggleClass: function (selectors, className) {
202        if (!(selectors instanceof HTMLElement) && selectors !== null) {
203            selectors = document.querySelector(selectors);
204        }
205        if (e.isVariableDefined(selectors)) {
206            selectors.toggleClass(className);
207        }
208    },
209    toggleAllClass: function (selectors, className) {
210        if (e.isVariableDefined(selectors)  && (selectors instanceof HTMLElement)) {
211            document.querySelectorAll(selectors).forEach((element) => {
212                element.toggleClass(className);
213            });
214        }
215    },
216    addClass: function (selectors, className) {
217        if (!(selectors instanceof HTMLElement) && selectors !== null) {
218            selectors = document.querySelector(selectors);
219        }
220        if (e.isVariableDefined(selectors)) {
221            selectors.addClass(className);
222        }
223    },
224    select: function (selectors) {
225        return document.querySelector(selectors);
226    },
227    selectAll: function (selectors) {
228        return document.querySelectorAll(selectors);
229    },
230
231    // START: 01 Preloader
232    preLoader: function () {
233        window.onload = function () {
234            var preloader = e.select('.preloader');
235            if (e.isVariableDefined(preloader)) {
236                preloader.className += ' animate__animated animate__fadeOut';
237                setTimeout(function(){
238                    preloader.style.display = 'none';
239                }, 200);
240            }
241        };
242    },
243    // END: Preloader
244
245    // START: 02 Mega Menu
246    megaMenu: function () {
247        e.onAll('.dropdown-menu a.dropdown-item.dropdown-toggle', 'click', function (event) {
248            var element = this;
249            event.preventDefault();
250            event.stopImmediatePropagation();
251            if (e.isVariableDefined(element.nextElementSibling) && !element.nextElementSibling.classList.contains("show")) {
252                const parents = e.getParents(element, '.dropdown-menu');
253                e.removeClass(parents.querySelector('.show'), "show");
254                if(e.isVariableDefined(parents.querySelector('.dropdown-opened'))){
255                    e.removeClass(parents.querySelector('.dropdown-opened'), "dropdown-opened");
256                }
257
258            }
259            var $subMenu = e.getNextSiblings(element, ".dropdown-menu");
260            e.toggleClass($subMenu, "show");
261            $subMenu.previousElementSibling.toggleClass('dropdown-opened');
262            var parents = e.getParents(element, 'li.nav-item.dropdown.show');
263            if (e.isVariableDefined(parents) && parents.length > 0) {
264                e.on(parents, 'hidden.bs.dropdown', function (event) {
265                    e.removeAllClass('.dropdown-submenu .show');
266                });
267            }
268        });
269    },
270    // END: Mega Menu
271
272    // START: 03 Sticky Header
273    stickyHeader: function () {
274        var stickyNav = e.select('.navbar-sticky');
275        if (e.isVariableDefined(stickyNav)) {
276            var stickyHeight = stickyNav.offsetHeight;
277            stickyNav.insertAdjacentHTML('afterend', '<div id="sticky-space"></div>');
278            var stickySpace = e.select('#sticky-space');
279            if (e.isVariableDefined(stickySpace)) {
280                document.addEventListener('scroll', function (event) {
281                    var scTop = window.pageYOffset || document.documentElement.scrollTop;
282                    if (scTop >= 400) {
283                        stickySpace.addClass('active');
284                        e.select("#sticky-space.active").style.height = stickyHeight + 'px';
285                        stickyNav.addClass('navbar-sticky-on');
286                    } else {
287                        stickySpace.removeClass('active');
288                        stickySpace.style.height = '0px';
289                        stickyNav.removeClass("navbar-sticky-on");
290                    }
291                });
292            }
293        }
294    },
295    // END: Sticky Header
296
297    // START: 04 Tiny Slider
298    tinySlider: function () {
299        var $carousel = e.select('.tiny-slider-inner');
300        if (e.isVariableDefined($carousel)) {
301          var tnsCarousel = e.selectAll('.tiny-slider-inner');
302          tnsCarousel.forEach(slider => {
303              var slider1 = slider;
304              var sliderMode = slider1.getAttribute('data-mode') ? slider1.getAttribute('data-mode') : 'carousel';
305              var sliderAxis = slider1.getAttribute('data-axis') ? slider1.getAttribute('data-axis') : 'horizontal';
306              var sliderSpace = slider1.getAttribute('data-gutter') ? slider1.getAttribute('data-gutter') : 30;
307              var sliderEdge = slider1.getAttribute('data-edge') ? slider1.getAttribute('data-edge') : 0;
308
309              var sliderItems = slider1.getAttribute('data-items') ? slider1.getAttribute('data-items') : 4; //option: number (items in all device)
310              var sliderItemsXl = slider1.getAttribute('data-items-xl') ? slider1.getAttribute('data-items-xl') : Number(sliderItems); //option: number (items in 1200 to end )
311              var sliderItemsLg = slider1.getAttribute('data-items-lg') ? slider1.getAttribute('data-items-lg') : Number(sliderItemsXl); //option: number (items in 992 to 1199 )
312              var sliderItemsMd = slider1.getAttribute('data-items-md') ? slider1.getAttribute('data-items-md') : Number(sliderItemsLg); //option: number (items in 768 to 991 )
313              var sliderItemsSm = slider1.getAttribute('data-items-sm') ? slider1.getAttribute('data-items-sm') : Number(sliderItemsMd); //option: number (items in 576 to 767 )
314              var sliderItemsXs = slider1.getAttribute('data-items-xs') ? slider1.getAttribute('data-items-xs') : Number(sliderItemsSm); //option: number (items in start to 575 )
315
316              var sliderSpeed = slider1.getAttribute('data-speed') ? slider1.getAttribute('data-speed') : 500;
317              var sliderautoWidth = slider1.getAttribute('data-autowidth') === 'true'; //option: true or false
318              var sliderArrow = slider1.getAttribute('data-arrow') !== 'false'; //option: true or false
319              var sliderDots = slider1.getAttribute('data-dots') !== 'false'; //option: true or false
320
321              var sliderAutoPlay = slider1.getAttribute('data-autoplay') !== 'false'; //option: true or false
322              var sliderAutoPlayTime = slider1.getAttribute('data-autoplaytime') ? slider1.getAttribute('data-autoplaytime') : 4000;
323              var sliderHoverPause = slider1.getAttribute('data-hoverpause') === 'true'; //option: true or false
324              if (e.isVariableDefined(e.select('.custom-thumb'))) {
325                var sliderNavContainer = e.select('.custom-thumb');
326              } 
327              var sliderLoop = slider1.getAttribute('data-loop') !== 'false'; //option: true or false
328              var sliderRewind = slider1.getAttribute('data-rewind') === 'true'; //option: true or false
329              var sliderAutoHeight = slider1.getAttribute('data-autoheight') === 'true'; //option: true or false
330              var sliderfixedWidth = slider1.getAttribute('data-fixedwidth') === 'true'; //option: true or false
331              var sliderTouch = slider1.getAttribute('data-touch') !== 'false'; //option: true or false
332              var sliderDrag = slider1.getAttribute('data-drag') !== 'false'; //option: true or false
333              // Check if document DIR is RTL
334              var ifRtl = document.getElementsByTagName("html")[0].getAttribute("dir");
335              var sliderDirection;
336              if (ifRtl === 'rtl') {
337                  sliderDirection = 'rtl';
338              }
339
340              var tnsSlider = tns({
341                  container: slider,
342                  mode: sliderMode,
343                  axis: sliderAxis,
344                  gutter: sliderSpace,
345                  edgePadding: sliderEdge,
346                  speed: sliderSpeed,
347                  autoWidth: sliderautoWidth,
348                  controls: sliderArrow,
349                  nav: sliderDots,
350                  autoplay: sliderAutoPlay,
351                  autoplayTimeout: sliderAutoPlayTime,
352                  autoplayHoverPause: sliderHoverPause,
353                  autoplayButton: false,
354                  autoplayButtonOutput: false,
355                  controlsPosition: top,
356                  navContainer: sliderNavContainer,
357                  navPosition: top,
358                  autoplayPosition: top,
359                  controlsText: [
360                      '<i class="fas fa-chevron-left"></i>',
361                      '<i class="fas fa-chevron-right"></i>'
362                  ],
363                  loop: sliderLoop,
364                  rewind: sliderRewind,
365                  autoHeight: sliderAutoHeight,
366                  fixedWidth: sliderfixedWidth,
367                  touch: sliderTouch,
368                  mouseDrag: sliderDrag,
369                  arrowKeys: true,
370                  items: sliderItems,
371                  textDirection: sliderDirection,
372                  lazyload: true,
373                  lazyloadSelector: '.lazy',
374                  responsive: {
375                      0: {
376                          items: Number(sliderItemsXs)
377                      },
378                      576: {
379                          items: Number(sliderItemsSm)
380                      },
381                      768: {
382                          items: Number(sliderItemsMd)
383                      },
384                      992: {
385                          items: Number(sliderItemsLg)
386                      },
387                      1200: {
388                          items: Number(sliderItemsXl)
389                      }
390                  }
391              });
392          }); 
393        }
394    },
395    // END: Tiny Slider
396
397    // START: 05 Parallax Background
398    parallaxBG: function () {
399        var parBG = e.select('.bg-parallax');
400        if (e.isVariableDefined(parBG)) {
401            jarallax(e.selectAll('.bg-parallax'), {
402                speed: 0.6
403            });
404        }
405    },
406    // END: Parallax Background
407
408    // START: 06 Sticky Bar
409    stickyBar: function () {
410        var sb = e.select('[data-sticky]');
411        if (e.isVariableDefined(sb)) {
412            var sticky = new Sticky('[data-sticky]');
413        }
414    },
415    // END: Sticky Bar
416
417    // START: 07 Tooltip
418    // Enable tooltips everywhere via data-toggle attribute
419    toolTipFunc: function () {
420        var tooltipTriggerList = [].slice.call(e.selectAll('[data-bs-toggle="tooltip"]'))
421        var tooltipList = tooltipTriggerList.map(function (tooltipTriggerEl) {
422          return new bootstrap.Tooltip(tooltipTriggerEl)
423        })
424    },
425    // END: Tooltip
426
427    // START: 08 Popover
428    // Enable popover everywhere via data-toggle attribute
429    popOverFunc: function () {
430        var popoverTriggerList = [].slice.call(e.selectAll('[data-bs-toggle="popover"]'))
431        var popoverList = popoverTriggerList.map(function (popoverTriggerEl) {
432          return new bootstrap.Popover(popoverTriggerEl)
433        })
434    },
435    // END: Popover
436
437    // START: 09 Back to Top
438    backTotop: function () {
439        var scrollpos = window.scrollY;
440        var backBtn = e.select('.back-top');
441        if (e.isVariableDefined(backBtn)) {
442            var add_class_on_scroll = () => backBtn.addClass("back-top-show");
443            var remove_class_on_scroll = () => backBtn.removeClass("back-top-show");
444
445            window.addEventListener('scroll', function () {
446                scrollpos = window.scrollY;
447                if (scrollpos >= 800) {
448                    add_class_on_scroll()
449                } else {
450                    remove_class_on_scroll()
451                }
452            });
453
454            backBtn.addEventListener('click', () => window.scrollTo({
455                top: 0,
456                behavior: 'smooth',
457            }));
458        }
459    },
460    // END: Back to Top
461
462    // START: 10 Sticky post
463    stickyPost: function () {
464        var scrollpos = window.scrollY;
465        var sp = e.select('.sticky-post');
466        if (e.isVariableDefined(sp)) {
467            var add_class_on_scroll = () => sp.addClass("sticky-post-sticked");
468            var remove_class_on_scroll = () => sp.removeClass("sticky-post-sticked");
469
470            window.addEventListener('scroll', function () {
471                scrollpos = window.scrollY;
472                if (scrollpos >= 1400) {
473                    add_class_on_scroll()
474                } else {
475                    remove_class_on_scroll()
476                }
477            });
478        }
479    },
480    // END: Sticky Post
481
482    // START: 11 Sticky Footer
483    stickyFooter: function () {
484        var fixedFooter = e.select('.footer-sticky');
485        if (e.isVariableDefined(fixedFooter)) {
486            window.addEventListener("load", function () {
487                window.dispatchEvent(new Event('resize'));
488            });
489            window.addEventListener('resize', function (event) {
490                var screenWidth = window.outerWidth;
491                var footerHeight = fixedFooter.offsetHeight - 1;
492                if (screenWidth >= 768) {
493                    document.getElementsByTagName('main')[0].style.marginBottom = footerHeight + 'px';
494                }
495            });
496        }
497    },
498    // END: Sticky Footer
499
500    // START: 12 GLightbox
501    lightBox: function () {
502        var light = e.select('[data-glightbox]');
503        if (e.isVariableDefined(light)) {
504            var lb = GLightbox({
505                selector: '*[data-glightbox]',
506                openEffect: 'fade',
507                closeEffect: 'fade'
508            });
509        }
510    },
511    // END: GLightbox
512
513    // START: 13 Isotope
514    enableIsotope: function () {
515        var isGridItem = e.select('.grid-item');
516        if (e.isVariableDefined(isGridItem)) {
517
518            // Code only for normal Grid
519            var onlyGrid = e.select('[data-isotope]');
520            if (e.isVariableDefined(onlyGrid)) {
521                var allGrid = e.selectAll("[data-isotope]");
522                allGrid.forEach(gridItem => {
523                    var gridItemData = gridItem.getAttribute('data-isotope');
524                    var gridItemDataObj = JSON.parse(gridItemData);
525                    var iso = new Isotope(gridItem, {
526                        itemSelector: '.grid-item',
527                        layoutMode: gridItemDataObj.layoutMode
528                    });
529
530                    imagesLoaded(gridItem).on('progress', function () {
531                        // layout Isotope after each image loads
532                        iso.layout();
533                    });
534                });
535            }
536
537            // Code only for normal Grid
538            var onlyGridFilter = e.select('.grid-menu');
539            if (e.isVariableDefined(onlyGridFilter)) {
540                var filterMenu = e.selectAll('.grid-menu');
541                filterMenu.forEach(menu => {
542                    var filterContainer = menu.getAttribute('data-target');
543                    var a = menu.dataset.target;
544                    var b = e.select(a);
545                    var filterContainerItemData = b.getAttribute('data-isotope');
546                    var filterContainerItemDataObj = JSON.parse(filterContainerItemData);
547                    var filter = new Isotope(filterContainer, {
548                        itemSelector: '.grid-item',
549                        transitionDuration: '0.7s',
550                        layoutMode: filterContainerItemDataObj.layoutMode
551                    });
552
553                    var menuItems = menu.querySelectorAll('li a');
554                    menuItems.forEach(menuItem => {
555                        menuItem.addEventListener('click', function (event) {
556                            var filterValue = menuItem.getAttribute('data-filter');
557                            filter.arrange({filter: filterValue});
558                            menuItems.forEach((control) => control.removeClass('active'));
559                            menuItem.addClass('active');
560                        });
561                    });
562
563                    imagesLoaded(filterContainer).on('progress', function () {
564                        filter.layout();
565                    });
566                });
567            }
568
569        }
570    },
571    // END: Isotope
572
573    // START: 14 Font size
574    zooming: function () {
575      const doc = document.documentElement;
576      var radios = document.querySelectorAll('input[type=radio][name="fntradio"]');
577      radios.forEach(radio => {
578        radio.addEventListener("change", function() {
579            var idZ = radio.getAttribute('id');
580            if(idZ == 'font-sm') {
581              doc.classList.remove('font-lg');
582              doc.classList.add('font-sm');
583            } else if(idZ == 'font-default') {
584              doc.classList.remove('font-sm','font-lg');
585            } else if(idZ == 'font-lg') {
586              doc.classList.remove('font-sm');
587              doc.classList.add('font-lg');
588            }
589        });
590      });
591    },
592    // END: Font size
593
594    // START: 15 Lazy Load
595    lazyLoading: function () {
596        var lazLoad = e.select('.lazy');
597        if (e.isVariableDefined(lazLoad)) {
598            var lazyLoadInstance = new LazyLoad({
599            });
600        }
601    },
602    // END: Lazy Load
603
604    // START: 16 Quill Editor
605    quill: function () {
606      var ql = e.select('#quilleditor');
607      if (e.isVariableDefined(ql)) {
608        var editor = new Quill('#quilleditor', {
609          modules: { toolbar: '#quilltoolbar' },
610          theme: 'snow'
611        });
612      }
613    },
614    // END: Quill Editor
615
616  // START: 17 Video player
617  videoPlyr: function () {
618    var vdp = e.select('.player-wrapper');
619    if (e.isVariableDefined(vdp)) {
620      // youtube
621      const playerYoutube = Plyr.setup('.player-youtube', {});
622      window.player = playerYoutube;
623
624      // Vimeo
625      const playerVimeo = Plyr.setup('.player-vimeo', {});
626      window.player = playerVimeo;
627      
628      // HTML video
629      const playerHtmlvideo = Plyr.setup('.player-html', {
630        captions: {active: true}
631      });
632      window.player = playerHtmlvideo;
633
634      // HTML audio
635      const playerHtmlaudio = Plyr.setup('.player-audio', {});
636      window.player = playerHtmlaudio;
637    }
638  },
639  // END: Video player
640
641  // START: 18 Overlay scrollbar
642  overlayScrollbars: function () {
643    var os = e.select('.custom-scrollbar');
644    if (os) {
645      document.addEventListener("DOMContentLoaded", function() {
646        var cs = document.querySelectorAll('.custom-scrollbar');
647        cs.forEach(c => {
648            OverlayScrollbars(c, {
649              scrollbars: {
650                autoHide: 'leave',
651                autoHideDelay: 200
652              },
653              overflowBehavior : {
654                  x : "visible-hidden",
655                  y : "scroll"
656              }
657             });
658        });
659      });
660    }
661  },
662  // END: Overlay scrollbar
663
664  // START: 19 Dashboard Chart
665  trafficsourcesChart: function () {
666    var ac = e.select('#apexChartTrafficSources');
667    if (e.isVariableDefined(ac)) {
668      var options = {
669        colors: [
670          '#2163e8', '#0cbc87', '#d6293e', '#f7c32e'
671        ],
672        labels: ['Search', 'Direct', 'Social', 'Display ads'],
673        series: [44, 55, 41, 17],
674        legend: {
675          show: false,
676          position: 'right'
677        },
678        chart: {
679          height: 300,
680          type: 'donut',
681        },
682        plotOptions: {
683          pie: {
684            donut: {
685              size: '75%',
686            },
687            offsetY: 20,
688          },
689          stroke: {
690            colors: undefined
691          }
692        },
693        stroke:{
694          show: false
695        },
696        dataLabels: {
697          enabled: false
698        },
699        responsive: [{
700          breakpoint: 480,
701          options: {
702            chart: {
703              height: 200
704            },
705            legend: {
706              show: false
707            }
708          }
709        }]
710      };
711    var chart = new ApexCharts(document.querySelector("#apexChartTrafficSources"), options);
712    chart.render();
713    }
714  },
715  // END: Dashboard Chart
716
717  // START: 20 Traffic Chart
718  trafficstatsChart: function () {
719    var cpv = e.select('#apexChartTrafficStats');
720    if (e.isVariableDefined(cpv)) {
721      var options = {
722        colors: [
723          '#2163e8',
724        ],
725        series: [{
726          name: 'Users',
727          data: [100, 401, 305, 501, 409, 602, 609, 901, 848, 602, 809, 901]
728        }],
729        chart: {
730          height: 320,
731          type: 'area',
732          toolbar: {
733            show: false
734          }
735        },
736        grid: {
737          strokeDashArray: 4,
738          position: 'back'
739        },
740        dataLabels: {
741          enabled: false
742        },
743        stroke: {
744          curve: 'smooth'
745        },
746        legend: {
747          show: true,
748          horizontalAlign: 'right',
749          position: 'top',
750          labels: {
751          },
752          markers: {
753            width: 8,
754            height: 8
755          }
756        },
757        xaxis: {
758          labels: {
759            show: true
760          },
761          axisBorder: {
762            show: false
763          },
764          categories: ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec']
765        },
766        tooltip: {
767          x: {
768            format: 'dd/MM/yy HH:mm'
769          },
770        },
771      };
772      var chart = new ApexCharts(document.querySelector("#apexChartTrafficStats"), options);
773      chart.render();
774    }
775  },
776  // END: Traffic Chart   
777
778};
779e.init();

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.