PageSourceSearch

https://wongkarwaifu.com/wp-content/themes/blogdata/js/custom.js?ver=1.9.9

js wongkarwaifu.com collected 2026-10-04 03:12:47 UTC 12,913 bytes, 426 lines download raw bytes

1(function ($) {
2  "use strict";
3  /* =================================
4  ===       slider        ====
5  =================================== */
6  function homefeatured() {
7    var recentareaSlider = new Swiper('.recentarea-slider', {
8      direction: 'vertical',
9      loop: true,
10      slidesPerView: 4,
11      spaceBetween: 30,
12      autoplay: true,
13      // Navigation arrows
14      navigation: {
15        nextEl: '.swiper-button-next',
16        prevEl: '.swiper-button-prev'
17      },
18      breakpoints: {
19        // when window width is <= 320px
20        768: {
21          allowTouchMove: 0,
22        },
23      }
24    });
25  }
26  homefeatured();
27
28  function homemain() {
29    var homemain = new Swiper('.homemain', {
30      direction: 'horizontal',
31      loop: true,
32      autoplay: {
33        delay: 3000,
34      },
35      speed: 500,
36      slidesPerView: 1,
37      // Navigation arrows
38      navigation: {
39        nextEl: '.swiper-button-next',
40        prevEl: '.swiper-button-prev'
41      },
42
43    });
44  }
45  homemain();
46  /* =================================
47  ===       Crousel        ====
48  =================================== */
49  function postcrousel() {
50    const postcrousel = new Swiper('.postcrousel', {
51      direction: 'horizontal',
52      loop: true,
53      autoplay: {
54        delay: $(".postcrousel").attr("storySpeed"),
55      },
56      slidesPerView: 1,
57      // Navigation arrows
58      navigation: {
59        nextEl: '.swiper-button-next',
60        prevEl: '.swiper-button-prev'
61      },
62      pagination: {
63        el: ".crousel-swiper-pagination",
64        clickable: true,
65      },
66      breakpoints: {
67        640: {
68          slidesPerView: 1,
69        },
70        768: {
71          slidesPerView: 2,
72          spaceBetween: 30,
73        },
74        1024: {
75          slidesPerView: 4,
76          spaceBetween: 30,
77        },
78      }
79    });
80  }
81  postcrousel();
82
83  /* =================================
84  ===         BLOG SLIDER         ====
85  =================================== */
86  function blogslider() {
87    const Blogslider = new Swiper('.blog-slider', {
88      direction: 'horizontal',
89      loop: true,
90      autoplay: true,
91      slidesPerView: 1,
92      // Navigation arrows
93      navigation: {
94        nextEl: '.swiper-button-next',
95        prevEl: '.swiper-button-prev'
96      }
97    });
98  }
99  blogslider();
100
101  /* =================================
102  ===         SCROLL TOP       ====
103  =================================== */
104  document.addEventListener("DOMContentLoaded", function () {
105    var scrollToTopBtn = document.querySelector(".bs_upscr");
106    var rootElement = document.documentElement || document.body; // Ensure cross-browser support
107
108    function handleScroll() {
109      var scrollTotal = rootElement.scrollHeight - rootElement.clientHeight;
110      var scrollTop = document.documentElement.scrollTop || document.body.scrollTop;
111
112      if (scrollTop / scrollTotal > 0.05) {
113        // Show button
114        scrollToTopBtn.classList.add("showBtn");
115      } else {
116        // Hide button
117        scrollToTopBtn.classList.remove("showBtn");
118      }
119    }
120    function scrollToTop(event) {
121      event.preventDefault(); // Prevent default anchor behavior
122      window.scrollTo({
123        top: 0,
124        behavior: "smooth"
125      });
126    }
127    if (scrollToTopBtn) {
128      scrollToTopBtn.addEventListener("click", scrollToTop);
129      document.addEventListener("scroll", handleScroll);
130    }
131  });
132
133  /* =================================
134  ===         STICKY HEADER       ====
135  =================================== */
136
137  document.addEventListener('DOMContentLoaded', function () {
138    let stickyHeader = document.querySelector(".bs-menu-full.sticky-header");
139    if (stickyHeader) {
140      let scrollDownElement = stickyHeader.offsetTop;
141
142      window.addEventListener("scroll", function () {
143        if (window.scrollY > scrollDownElement) {
144          stickyHeader.classList.add("header-sticky");
145        } else {
146          stickyHeader.classList.remove("header-sticky");
147        }
148      }
149      );
150    }
151  });
152
153  var elements = document.getElementsByClassName('bs-sticky');
154
155  for (var i = 0; i < elements.length; i++) {
156    new hcSticky(elements[i], {
157      stickTo: elements[i].parentNode,
158      top: 0,
159      bottomEnd: 0,
160    });
161  }
162
163  jQuery('#load-more-btn').on('click', function () {
164    var $hiddenContents = $('.hide-content');
165    var $btn = $(this);
166    // Check if there is hidden content to show
167    var loop_off = 0;
168    if ($hiddenContents.length) {
169      // Show the hidden content
170      $hiddenContents.each(function () {
171        if (loop_off < 5) { $(this).removeClass('hide-content'); loop_off++; }
172      });
173      // You can also remove the "Load More" button if there's no more hidden content
174      if (loop_off < 5) {
175        $btn.parent().remove();
176      }
177    } else {
178      $btn.parent().remove();
179    }
180  });
181  jQuery(document).ready(function () {
182    jQuery('.sm').smartmenus({
183      subMenusSubOffsetX: 1,
184      subMenusSubOffsetY: -8
185    });
186  });
187
188  /*---------------------------------------
189    Off Canvas           
190  -----------------------------------------*/
191  let clickableAddElementRight = document.querySelectorAll('[bs-data-clickable-end]');
192  let clickableRemoveElement = document.querySelector('[bs-data-removable]');
193  let clickableRemoveElementTwo = document.querySelector('[bs-remove-overlay]');
194  let targetElement = document.querySelector('[bs-data-targeted]');
195  let targetBody = document.querySelector('body');
196
197  // Function to handle the click event
198  function handleClickRight() {
199    targetElement.classList.add('from-right'); 
200    clickableRemoveElementTwo.classList.add('show'); 
201    targetBody.style.overflow = 'hidden';
202    targetBody.style.paddingRight = '17px';
203    if (clickableRemoveElement) {
204      clickableRemoveElement.focus();
205    }
206  }
207  
208  function handleClickRemove(event) {
209    event.preventDefault();
210    targetElement.classList.remove('from-right');
211    clickableRemoveElementTwo.classList.remove('show'); 
212    targetBody.style.overflow = null;
213    targetBody.style.paddingRight = null;
214    if (clickableAddElementRight.length > 0) {
215      clickableAddElementRight[0].focus();
216    }
217  }
218
219  // Attach the handleClick function to the click event of the clickable element
220  if( (clickableAddElementRight !== null) && (clickableAddElementRight !== undefined)) {
221    clickableAddElementRight.forEach(function(element) {
222      element.addEventListener('click', handleClickRight);
223    });
224  }
225
226  // Safety checks for the removal elements
227  if (clickableRemoveElement) {
228    clickableRemoveElement.addEventListener('click', handleClickRemove);
229  }
230  if (clickableRemoveElementTwo) {
231    clickableRemoveElementTwo.addEventListener('click', handleClickRemove);
232  }
233  document.addEventListener('keydown', function(e) {
234    if (e.key === 'Escape' && targetElement.classList.contains('from-right')) {
235      handleClickRemove(e);
236    }
237  });
238
239  document.addEventListener('keydown', function(e) {
240
241    if (e.key === 'Tab' && targetElement.classList.contains('from-right')) {
242
243      const firstElement = document.querySelector('[bs-data-removable]');
244      const lastElement = document.querySelector('.empty-sidebar-widget-text a');
245      // const lastElement = document.querySelector('[bs-data-last]');
246
247      if (!firstElement || !lastElement) return;
248
249      if (document.activeElement === lastElement && !e.shiftKey) {
250        e.preventDefault();
251        firstElement.focus();
252      }
253
254      if (document.activeElement === firstElement && e.shiftKey) {
255        e.preventDefault();
256        lastElement.focus();
257      }
258    }
259  });
260
261
262  /*---------------------------------------
263    Search           
264  -----------------------------------------*/
265  let clickAddElementSearch = document.querySelectorAll('[bs-search-clickable]');
266  let targetSearchElement = document.querySelector('[bs-search-targeted]');
267  let targetHideSearch = document.querySelector('[bs-dismiss-search]');
268 
269  // Function to handle the click event
270  function openSearch(event) {
271    event.preventDefault();
272
273    clickableRemoveElementTwo.classList.add('show');
274    targetSearchElement.classList.add('show-search');
275    targetBody.style.overflow = 'hidden';
276    targetBody.style.paddingRight = '17px';
277
278    setTimeout(function () {
279      const closeBtn = targetSearchElement.querySelector('[bs-dismiss-search]');
280
281      if (closeBtn) {
282        closeBtn.setAttribute('tabindex', '0');
283        closeBtn.focus();
284
285        // console.log(document.activeElement === closeBtn);
286        // console.log(document.activeElement);
287      }
288    }, 350);
289  }
290  function hideSearch() {
291    clickableRemoveElementTwo.classList.remove('show'); 
292    targetSearchElement.classList.remove('show-search');
293    targetBody.style.overflow = null;
294    targetBody.style.paddingRight = null;
295    if (clickAddElementSearch.length > 0) {
296      clickAddElementSearch[0].focus();
297    }
298  }
299  if(clickAddElementSearch){
300    clickAddElementSearch.forEach(function(element) {
301      element.addEventListener('click', openSearch);
302    });
303  }
304  // clickableRemoveElementTwo.addEventListener('click', hideSearch);
305  if (targetHideSearch) {
306    targetHideSearch.addEventListener('click', hideSearch);
307  }
308  clickAddElementSearch.forEach(function(element) {
309    element.addEventListener('keydown', function(e) {
310      if (e.key === 'Enter') {
311        e.preventDefault();
312        openSearch(e);
313      }
314    });
315  });
316
317  document.addEventListener('keydown', function(e) {
318    if (e.key === 'Escape' && targetSearchElement.classList.contains('show-search')) {
319      hideSearch();
320    }
321  });
322  document.addEventListener('keydown', function(e) {
323
324    if (e.key !== 'Tab') return;
325    if (!targetSearchElement.classList.contains('show-search')) return;
326
327    const firstElement = targetSearchElement.querySelector('[bs-dismiss-search]');
328    const lastElement = targetSearchElement.querySelector('.search-popup-content .search-form .search-submit');
329
330    if (!firstElement || !lastElement) return;
331
332    if (document.activeElement === lastElement && !e.shiftKey) {
333      e.preventDefault();
334      firstElement.focus();
335    }
336    if (document.activeElement === firstElement && e.shiftKey) {
337      e.preventDefault();
338      lastElement.focus();
339    }
340
341  });
342
343  $(document).ready(function () {
344    $(".menu-btn").click(function () {
345      $(this).toggleClass("on");
346      $("#main-nav").slideToggle();
347      $("#menu-header-menu").css("transition", "all 0.8s");
348    });
349  });
350
351  function addKeydownListener() {
352    document.addEventListener('keydown', keydownHandler);
353  }
354
355  function removeKeydownListener() {
356    document.removeEventListener('keydown', keydownHandler);
357  }
358
359  function keydownHandler(event) {
360    if (event.key === 'Tab') {
361      var focusedElement = document.activeElement;
362      var parentElement = document.getElementById('main-nav');
363      var ulParent = parentElement.querySelector("ul.sm.sm-clean");
364      var lastChild = ulParent.lastElementChild.firstElementChild;
365
366      // Check if the focused element is the last child
367      if (focusedElement === lastChild) {
368        // Prevent the default tab behavior
369        event.preventDefault();
370
371        // Perform your actions here
372        const returnFocus = document.querySelector('button.menu-btn');
373        returnFocus.click();
374        returnFocus.focus();
375      }
376    }
377  }
378
379  function checkWindowSize() {
380    if (window.innerWidth < 992) {
381      addKeydownListener();
382    } else {
383      removeKeydownListener();
384      document.getElementById('main-nav').style.display = '';
385    }
386  }
387
388  // Check window size on initial load
389  checkWindowSize();
390
391  // Check window size on resize
392  window.addEventListener('resize', checkWindowSize);
393
394  document.addEventListener('DOMContentLoaded', function () {
395    var pageTitle = document.querySelector('.bs-card-box.page-entry-title + .row .page-title');
396    if (pageTitle) {
397      pageTitle.remove();
398    }
399  });
400})(jQuery);
401
402
403(function () {
404
405  jQuery(document).ready(function () {
406
407    /* ---------------------------------------------- /*
408      * Scroll top
409    /* ---------------------------------------------- */
410
411    jQuery(window).scroll(function () {
412      if (jQuery(this).scrollTop() > 100) {
413        jQuery('.page-scroll-up').fadeIn();
414      } else {
415        jQuery('.page-scroll-up').fadeOut();
416      }
417    });
418
419    jQuery('.page-scroll-up').click(function () {
420      jQuery("html, body").animate({
421        scrollTop: 0
422      }, 700);
423      return false;
424    });
425  });
426})(jQuery);

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.