PageSourceSearch

https://188bet-ok.im/wp-content/themes/pfaa91cbf3937-template-019/…=1.0.0.1785408558&pns=pfaa91cbf3937-1-0-7

js 188bet-ok.im collected 2026-10-01 02:51:57 UTC 6,807 bytes, 211 lines download raw bytes

1(() => {
2  'use strict';
3
4  const ready = (callback) => {
5    if (document.readyState === 'loading') {
6      document.addEventListener('DOMContentLoaded', callback, {
7        once: true,
8      });
9      return;
10    }
11    callback();
12  };
13
14  const setupMobileMenu = () => {
15    const toggle = document.querySelector('.pfaa91cbf3937-mobile-menu');
16    const panel = document.querySelector('#pfaa91cbf3937-mobile-navigation');
17    if (!toggle || !panel) {
18      return;
19    }
20    const setOpen = (open) => {
21      toggle.setAttribute('aria-expanded', String(open));
22      panel.hidden = !open;
23      document.body.classList.toggle('pfaa91cbf3937-mobile-menu-open', open);
24    };
25    toggle.addEventListener('click', () => {
26      setOpen(toggle.getAttribute('aria-expanded') !== 'true');
27    });
28    document.addEventListener('keydown', (event) => {
29      if (event.key === 'Escape') {
30        setOpen(false);
31      }
32    });
33    window.addEventListener('resize', () => {
34      if (window.innerWidth > 849) {
35        setOpen(false);
36      }
37    }, {
38      passive: true,
39    });
40  };
41
42  const setupSubmenus = () => {
43    document.querySelectorAll('.menu-item-has-children').forEach((item) => {
44      const submenu = item.querySelector(':scope > .sub-menu');
45      if (!submenu || item.querySelector(':scope > .pfaa91cbf3937-submenu-toggle')) {
46        return;
47      }
48      const button = document.createElement('button');
49      button.type = 'button';
50      button.className = 'pfaa91cbf3937-submenu-toggle';
51      button.setAttribute('aria-expanded', 'false');
52      button.setAttribute('aria-label', 'Mở trình đơn con');
53      button.textContent = '⌄';
54      item.insertBefore(button, submenu);
55      button.addEventListener('click', (event) => {
56        const open = button.getAttribute('aria-expanded') !== 'true';
57        button.setAttribute('aria-expanded', String(open));
58        item.classList.toggle('is-open', open);
59      });
60    });
61  };
62
63  const setupAccordion = () => {
64    document.querySelectorAll(
65      '.pfaa91cbf3937-accordion-item > button, .accordion-item > .accordion-title',
66    ).forEach((button) => {
67      const panel = button.parentElement.querySelector(
68        ':scope > .pfaa91cbf3937-accordion-panel, :scope > .accordion-inner',
69      );
70      if (!panel) {
71        return;
72      }
73      const setOpen = (open) => {
74        button.setAttribute('aria-expanded', String(open));
75        panel.hidden = !open;
76      };
77      setOpen(button.getAttribute('aria-expanded') === 'true');
78      button.addEventListener('click', (event) => {
79        if (button.matches('a')) {
80          event.preventDefault();
81        }
82        const open = button.getAttribute('aria-expanded') !== 'true';
83        setOpen(open);
84      });
85    });
86  };
87
88  const setupSlider = () => {
89    document.querySelectorAll('.pfaa91cbf3937-slider').forEach((slider) => {
90      const slides = Array.from(slider.querySelectorAll('.pfaa91cbf3937-slide'));
91      const dots = slider.querySelector('.pfaa91cbf3937-slider-dots');
92      if (slides.length < 2 || !dots) {
93        return;
94      }
95      let activeIndex = Math.max(
96        0,
97        slides.findIndex((slide) => slide.classList.contains('is-active')),
98      );
99      let timer = 0;
100      const activate = (requestedIndex) => {
101        activeIndex = (requestedIndex + slides.length) % slides.length;
102        slides.forEach((slide, index) => {
103          slide.classList.toggle('is-active', index === activeIndex);
104          slide.setAttribute('aria-hidden', String(index !== activeIndex));
105        });
106        dots.querySelectorAll('.pfaa91cbf3937-slider-dot').forEach((dot, index) => {
107          dot.classList.toggle('is-active', index === activeIndex);
108          dot.setAttribute('aria-current', index === activeIndex ? 'true' : 'false');
109        });
110      };
111      const schedule = () => {
112        window.clearInterval(timer);
113        timer = window.setInterval(() => activate(activeIndex + 1), 6500);
114      };
115      slides.forEach((slide, index) => {
116        const dot = document.createElement('button');
117        dot.type = 'button';
118        dot.className = 'pfaa91cbf3937-slider-dot';
119        dot.setAttribute('aria-label', `Nội dung ${index + 1}`);
120        dot.addEventListener('click', () => {
121          activate(index);
122          schedule();
123        });
124        dots.appendChild(dot);
125      });
126      slider.querySelectorAll('[data-direction]').forEach((button) => {
127        button.addEventListener('click', () => {
128          activate(
129            activeIndex + (button.dataset.direction === 'previous' ? -1 : 1),
130          );
131          schedule();
132        });
133      });
134      slider.addEventListener('mouseenter', () => window.clearInterval(timer));
135      slider.addEventListener('mouseleave', schedule);
136      activate(activeIndex);
137      if (!window.matchMedia('(prefers-reduced-motion: reduce)').matches) {
138        schedule();
139      }
140    });
141  };
142
143  const setupToc = () => {
144    document.querySelectorAll(
145      '.pfaa91cbf3937-toc, #ftwp-container, .lwptoc, #ez-toc-container',
146    ).forEach((toc) => {
147      const toggle = toc.querySelector(
148        '.pfaa91cbf3937-toc-toggle, #ftwp-trigger, .lwptoc_header, .ez-toc-toggle',
149      );
150      if (!toggle) {
151        return;
152      }
153      const list = toc.querySelector(
154        'ol, #ftwp-list, .lwptoc_items, .ez-toc-list',
155      );
156      const setOpen = (open) => {
157        toggle.setAttribute('aria-expanded', String(open));
158        toc.classList.toggle('is-collapsed', !open);
159        if (list) {
160          list.hidden = !open;
161        }
162      };
163      setOpen(!toc.classList.contains('is-collapsed'));
164      toggle.addEventListener('click', (event) => {
165        if (toggle.matches('a')) {
166          event.preventDefault();
167        }
168        const open = toggle.getAttribute('aria-expanded') !== 'true';
169        setOpen(open);
170      });
171      toc.querySelectorAll('a[href*="#"]').forEach((link) => {
172        link.addEventListener('click', () => {
173          if (window.innerWidth <= 549) {
174            setOpen(false);
175          }
176        });
177      });
178    });
179  };
180
181  const setupBackToTop = () => {
182    const button = document.querySelector('.pfaa91cbf3937-back-to-top');
183    if (!button) {
184      return;
185    }
186    const update = () => {
187      button.classList.toggle('is-visible', window.scrollY > 500);
188    };
189    button.addEventListener('click', () => {
190      window.scrollTo({
191        top: 0,
192        behavior: window.matchMedia('(prefers-reduced-motion: reduce)').matches
193          ? 'auto'
194          : 'smooth',
195      });
196    });
197    window.addEventListener('scroll', update, {
198      passive: true,
199    });
200    update();
201  };
202
203  ready(() => {
204    setupMobileMenu();
205    setupSubmenus();
206    setupAccordion();
207    setupSlider();
208    setupToc();
209    setupBackToTop();
210  });
211})();

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.