PageSourceSearch

https://friscocharterbuscompany.com/assets/semantic-components.js?v=bbc83b4168

js friscocharterbuscompany.com collected 2026-10-07 06:24:35 UTC 4,033 bytes, 106 lines download raw bytes

1(function () {
2  "use strict";
3
4  function setFaqState(button, expanded) {
5    if (!button) return;
6    var panel = document.getElementById(button.getAttribute("aria-controls"));
7    var item = button.closest("[data-faq-disclosure]");
8    if (!panel || !item) return;
9    button.setAttribute("aria-expanded", expanded ? "true" : "false");
10    item.classList.toggle("open", expanded);
11    panel.classList.toggle("open", expanded);
12    if (expanded) panel.removeAttribute("hidden");
13    else panel.setAttribute("hidden", "until-found");
14  }
15
16  document.addEventListener("click", function (event) {
17    var button = event.target && event.target.closest
18      ? event.target.closest("[data-faq-toggle]")
19      : null;
20    if (!button) return;
21    setFaqState(button, button.getAttribute("aria-expanded") !== "true");
22  });
23
24  // Preserve Find in Page behavior where hidden=until-found is supported.
25  document.addEventListener("beforematch", function (event) {
26    var panel = event.target && event.target.closest ? event.target.closest("[data-faq-disclosure] > .fa") : null;
27    if (!panel) return;
28    var item = panel.closest("[data-faq-disclosure]");
29    var button = item && item.querySelector("[data-faq-toggle]");
30    setFaqState(button, true);
31  }, true);
32
33  var scrollers = Array.prototype.slice.call(document.querySelectorAll(".table-scroll"));
34  if (!scrollers.length) return;
35
36  function syncScroller(scroller) {
37    var overflows = scroller.scrollWidth > scroller.clientWidth + 1;
38    if (overflows) scroller.setAttribute("tabindex", "0");
39    else scroller.removeAttribute("tabindex");
40  }
41
42  scrollers.forEach(syncScroller);
43  if ("ResizeObserver" in window) {
44    var observer = new ResizeObserver(function (entries) {
45      entries.forEach(function (entry) { syncScroller(entry.target); });
46    });
47    scrollers.forEach(function (scroller) { observer.observe(scroller); });
48  } else {
49    window.addEventListener("resize", function () { scrollers.forEach(syncScroller); });
50  }
51})();
52
53// Long service/destination copy is focusable only while it is genuinely clipped. This avoids
54// dozens of empty tab stops while preserving keyboard access whenever a panel really scrolls.
55(function () {
56  "use strict";
57
58  var regions = Array.prototype.slice.call(document.querySelectorAll("[data-scroll-label]"));
59  if (!regions.length) return;
60
61  function syncRegion(region) {
62    var style = window.getComputedStyle(region);
63    var vertical = /^(auto|scroll)$/.test(style.overflowY)
64      && region.scrollHeight > region.clientHeight + 1;
65    var horizontal = /^(auto|scroll)$/.test(style.overflowX)
66      && region.scrollWidth > region.clientWidth + 1;
67    var active = Boolean((vertical || horizontal) && (region.textContent || "").trim());
68
69    region.toggleAttribute("data-overflowing", active);
70    if (active) {
71      region.setAttribute("tabindex", "0");
72      region.setAttribute("role", "region");
73      region.setAttribute("aria-label", region.getAttribute("data-scroll-label"));
74    } else {
75      region.removeAttribute("tabindex");
76      region.removeAttribute("role");
77      region.removeAttribute("aria-label");
78    }
79  }
80
81  function syncAll() {
82    regions.forEach(syncRegion);
83  }
84
85  syncAll();
86  window.addEventListener("load", syncAll, { once: true });
87  if (document.fonts && document.fonts.ready) document.fonts.ready.then(syncAll);
88
89  if ("ResizeObserver" in window) {
90    var resizeObserver = new ResizeObserver(function (entries) {
91      entries.forEach(function (entry) { syncRegion(entry.target); });
92    });
93    regions.forEach(function (region) { resizeObserver.observe(region); });
94  } else {
95    window.addEventListener("resize", syncAll);
96  }
97
98  if ("IntersectionObserver" in window) {
99    var visibilityObserver = new IntersectionObserver(function (entries) {
100      entries.forEach(function (entry) {
101        if (entry.isIntersecting) syncRegion(entry.target);
102      });
103    }, { rootMargin: "300px 0px" });
104    regions.forEach(function (region) { visibilityObserver.observe(region); });
105  }
106})();

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.