PageSourceSearch

https://www.unrc.edu.ar/unrc/transparencia/assets/js/main.js

js unrc.edu.ar collected 2026-10-02 02:58:09 UTC 6,522 bytes, 275 lines download raw bytes

1/**
2* Template Name: OnePage
3* Updated: Mar 09 2023 with Bootstrap v5.2.3
4* Template URL: https://bootstrapmade.com/onepage-multipurpose-bootstrap-template/
5* Author: BootstrapMade.com
6* License: https://bootstrapmade.com/license/
7*/
8(function() {
9  "use strict";
10
11  /**
12   * Easy selector helper function
13   */
14  const select = (el, all = false) => {
15    el = el.trim()
16    if (all) {
17      return [...document.querySelectorAll(el)]
18    } else {
19      return document.querySelector(el)
20    }
21  }
22
23  /**
24   * Easy event listener function
25   */
26  const on = (type, el, listener, all = false) => {
27    let selectEl = select(el, all)
28    if (selectEl) {
29      if (all) {
30        selectEl.forEach(e => e.addEventListener(type, listener))
31      } else {
32        selectEl.addEventListener(type, listener)
33      }
34    }
35  }
36
37  /**
38   * Easy on scroll event listener 
39   */
40  const onscroll = (el, listener) => {
41    el.addEventListener('scroll', listener)
42  }
43
44  /**
45   * Navbar links active state on scroll
46   */
47  let navbarlinks = select('#navbar .scrollto', true)
48  const navbarlinksActive = () => {
49    let position = window.scrollY + 200
50    navbarlinks.forEach(navbarlink => {
51      if (!navbarlink.hash) return
52      let section = select(navbarlink.hash)
53      if (!section) return
54      if (position >= section.offsetTop && position <= (section.offsetTop + section.offsetHeight)) {
55        navbarlink.classList.add('active')
56      } else {
57        navbarlink.classList.remove('active')
58      }
59    })
60  }
61  window.addEventListener('load', navbarlinksActive)
62  onscroll(document, navbarlinksActive)
63
64  /**
65   * Scrolls to an element with header offset
66   */
67  const scrollto = (el) => {
68    let header = select('#header')
69    let offset = header.offsetHeight
70
71    let elementPos = select(el).offsetTop
72    window.scrollTo({
73      top: elementPos - offset,
74      behavior: 'smooth'
75    })
76  }
77
78  /**
79   * Toggle .header-scrolled class to #header when page is scrolled
80   */
81  let selectHeader = select('#header')
82  if (selectHeader) {
83    const headerScrolled = () => {
84      if (window.scrollY > 100) {
85        selectHeader.classList.add('header-scrolled')
86      } else {
87        selectHeader.classList.remove('header-scrolled')
88      }
89    }
90    window.addEventListener('load', headerScrolled)
91    onscroll(document, headerScrolled)
92  }
93
94  /**
95   * Back to top button
96   */
97  let backtotop = select('.back-to-top')
98  if (backtotop) {
99    const toggleBacktotop = () => {
100      if (window.scrollY > 100) {
101        backtotop.classList.add('active')
102      } else {
103        backtotop.classList.remove('active')
104      }
105    }
106    window.addEventListener('load', toggleBacktotop)
107    onscroll(document, toggleBacktotop)
108  }
109
110  /**
111   * Mobile nav toggle
112   */
113  on('click', '.mobile-nav-toggle', function(e) {
114    select('#navbar').classList.toggle('navbar-mobile')
115    this.classList.toggle('bi-list')
116    this.classList.toggle('bi-x')
117  })
118
119  /**
120   * Mobile nav dropdowns activate
121   */
122  on('click', '.navbar .dropdown > a', function(e) {
123    if (select('#navbar').classList.contains('navbar-mobile')) {
124      e.preventDefault()
125      this.nextElementSibling.classList.toggle('dropdown-active')
126    }
127  }, true)
128
129  /**
130   * Scrool with ofset on links with a class name .scrollto
131   */
132  on('click', '.scrollto', function(e) {
133    if (select(this.hash)) {
134      e.preventDefault()
135
136      let navbar = select('#navbar')
137      if (navbar.classList.contains('navbar-mobile')) {
138        navbar.classList.remove('navbar-mobile')
139        let navbarToggle = select('.mobile-nav-toggle')
140        navbarToggle.classList.toggle('bi-list')
141        navbarToggle.classList.toggle('bi-x')
142      }
143      scrollto(this.hash)
144    }
145  }, true)
146
147  /**
148   * Scroll with ofset on page load with hash links in the url
149   */
150  window.addEventListener('load', () => {
151    if (window.location.hash) {
152      if (select(window.location.hash)) {
153        scrollto(window.location.hash)
154      }
155    }
156  });
157
158  /**
159   * Preloader
160   */
161  let preloader = select('#preloader');
162  if (preloader) {
163    window.addEventListener('load', () => {
164      preloader.remove()
165    });
166  }
167
168  /**
169   * Initiate glightbox 
170   */
171  const glightbox = GLightbox({
172    selector: '.glightbox'
173  });
174
175  /**
176   * Testimonials slider
177   */
178  new Swiper('.testimonials-slider', {
179    speed: 600,
180    loop: true,
181    autoplay: {
182      delay: 5000,
183      disableOnInteraction: false
184    },
185    slidesPerView: 'auto',
186    pagination: {
187      el: '.swiper-pagination',
188      type: 'bullets',
189      clickable: true
190    },
191    breakpoints: {
192      320: {
193        slidesPerView: 1,
194        spaceBetween: 20
195      },
196
197      1200: {
198        slidesPerView: 3,
199        spaceBetween: 20
200      }
201    }
202  });
203
204  /**
205   * Porfolio isotope and filter
206   */
207  window.addEventListener('load', () => {
208    let portfolioContainer = select('.portfolio-container');
209    if (portfolioContainer) {
210      let portfolioIsotope = new Isotope(portfolioContainer, {
211        itemSelector: '.portfolio-item'
212      });
213
214      let portfolioFilters = select('#portfolio-flters li', true);
215
216      on('click', '#portfolio-flters li', function(e) {
217        e.preventDefault();
218        portfolioFilters.forEach(function(el) {
219          el.classList.remove('filter-active');
220        });
221        this.classList.add('filter-active');
222
223        portfolioIsotope.arrange({
224          filter: this.getAttribute('data-filter')
225        });
226        portfolioIsotope.on('arrangeComplete', function() {
227          AOS.refresh()
228        });
229      }, true);
230    }
231
232  });
233
234  /**
235   * Initiate portfolio lightbox 
236   */
237  const portfolioLightbox = GLightbox({
238    selector: '.portfolio-lightbox'
239  });
240
241  /**
242   * Portfolio details slider
243   */
244  new Swiper('.portfolio-details-slider', {
245    speed: 400,
246    loop: true,
247    autoplay: {
248      delay: 5000,
249      disableOnInteraction: false
250    },
251    pagination: {
252      el: '.swiper-pagination',
253      type: 'bullets',
254      clickable: true
255    }
256  });
257
258  /**
259   * Animation on scroll
260   */
261  window.addEventListener('load', () => {
262    AOS.init({
263      duration: 1000,
264      easing: 'ease-in-out',
265      once: true,
266      mirror: false
267    })
268  });
269
270  /**
271   * Initiate Pure Counter 
272   */
273  new PureCounter();
274
275})()

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.