1(function () { 2 "use strict"; 3 4 /** 5 * ------------------------------------------------------------------------ 6 * Functions 7 * ------------------------------------------------------------------------ 8 */ 9 // Back to top button 10 const myBacktotop = function () { 11 // browser window scroll 12 var offset = 300, 13 offset_opacity = 1200, 14 back_to_top = document.querySelector(".back-top"), 15 scrollpos = window.scrollY; 16 17 var add_class_back_scroll = function add_class_back_scroll() { 18 return back_to_top.classList.add("backtop-is-visible"); 19 }; 20 21 var add_class_offset_scroll = function add_class_offset_scroll() { 22 return back_to_top.classList.add("backtop-fade-out"); 23 }; 24 25 var remove_class_back_scroll = function remove_class_back_scroll() { 26 return back_to_top.classList.remove("backtop-is-visible","backtop-fade-out"); 27 }; 28 29 // back to top by es6-scroll-to 30 var defaults = { 31 duration: 400, 32 easing: function easing(t, b, c, d) { 33 return -c * (t /= d) * (t - 2) + b; 34 }, 35 to: 0 36 }; 37 var animatedScrollTo = function animatedScrollTo(args) { 38 if (isInteger(args)) { 39 args = { 40 to: args 41 }; 42 } 43 var options = extend(defaults, args); 44 options.startingYOffset = window.pageYOffset; 45 options.distanceYOffset = parseInt(options.to, 10) - options.startingYOffset; 46 window.requestAnimationFrame(function (timestamp) { 47 return animateScroll(options, timestamp); 48 }); 49 }; 50 var animateScroll = function animateScroll(options, now) { 51 if (!options.startTime) { 52 options.startTime = now; 53 } 54 var currentTime = now - options.startTime; 55 var newYOffset = Math.round(options.easing(currentTime, options.startingYOffset, options.distanceYOffset, options.duration)); 56 if (currentTime < options.duration) { 57 window.requestAnimationFrame(function (timestamp) { 58 return animateScroll(options, timestamp); 59 }); 60 } else { 61 newYOffset = options.to; 62 } 63 setScrollTopPosition(newYOffset); 64 }; 65 var setScrollTopPosition = function setScrollTopPosition(newYOffset) { 66 document.documentElement.scrollTop = newYOffset; 67 document.body.scrollTop = newYOffset; 68 }; 69 var isInteger = function isInteger(value) { 70 if (Number.isInteger) { 71 return Number.isInteger(value); 72 } else { 73 return typeof value === 'number' && isFinite(value) && Math.floor(value) === value; 74 } 75 }; 76 var extend = function extend(defaults, options) { 77 var extendedOptions = {}; 78 for (var key in defaults) { 79 extendedOptions[key] = options[key] || defaults[key]; 80 } 81 return extendedOptions; 82 }; 83 var easeInQuint = function easeInQuint(t, b, c, d) { 84 return c * (t /= d) * t * t * t * t + b; 85 }; 86 87 const scroll_a = document.querySelectorAll('.back-top'); 88 if ( scroll_a !=null) { 89 for (var i = 0; i < scroll_a.length; i++) { 90 scroll_a[i].addEventListener("click", function(){ 91 animatedScrollTo({ 92 easing: easeInQuint, 93 duration: 800 94 }); 95 }); 96 } 97 } 98 99 window.addEventListener('scroll', function () { 100 scrollpos = window.scrollY; 101 if (scrollpos > offset) { 102 add_class_back_scroll(); 103 } else { 104 remove_class_back_scroll(); 105 } 106 if (scrollpos > offset_opacity) { 107 add_class_offset_scroll(); 108 } 109 }); 110 } 111 112 // Sub Dropdown 113 const sub_dropdown_js = function () { 114 // submenu 115 const onekit_submenu = function onekit_submenu() { 116 var onekit_toggle = document.querySelectorAll(".dropdown-menu a.dropdown-toggle"); 117 var _loop = function _loop(i) { 118 onekit_toggle[i].addEventListener("click", function (event) { 119 event.stopPropagation(); 120 event.preventDefault(); 121 122 onekit_toggle[i].nextElementSibling.classList.toggle("show"); 123 onekit_toggle[i].parentNode.classList.toggle("show"); 124 }); 125 window.addEventListener("mouseup", function (event) { 126 if (event.target != onekit_toggle[i].nextElementSibling && event.target.parentNode != onekit_toggle[i].nextElementSibling && event.target.classList.contains("dropdown-toggle") != true) { 127 onekit_toggle[i].nextElementSibling.classList.remove("show"); 128 onekit_toggle[i].parentNode.classList.remove("show"); 129 } 130 }); 131 }; 132 133 for (var i = 0; i < onekit_toggle.length; i++) { 134 _loop(i); 135 } 136 }; 137 138 // close if dropdown click 139 const close_all_submenu = function close_all_submenu() { 140 var dropdown_x = document.querySelectorAll(".dropdown"); 141 var dropdown_submenu_x = document.querySelectorAll(".dropdown-menu li .dropdown-menu"); 142 143 var _loop2 = function _loop2(i) { 144 dropdown_x[i].addEventListener('hide.bs.dropdown', function () { 145 for (var j = 0; j < dropdown_submenu_x.length; j++) { 146 if (i != j) { 147 dropdown_submenu_x[j].classList.remove("show"); 148 dropdown_submenu_x[j].parentNode.classList.remove("show"); 149 } 150 } 151 }); 152 }; 153 154 for (var i = 0; i < dropdown_x.length; i++) { 155 _loop2(i); 156 } 157 }; 158 159 // close submenu 160 const close_submenu = function close_submenu() { 161 var dropdown_a = document.querySelectorAll(".dropdown > .dropdown-menu > li > .dropdown-toggle"); 162 var dropdownMenu_a = document.querySelectorAll(".dropdown > .dropdown-menu > li > .dropdown-menu"); 163 var dropdownSubMenu_a = document.querySelectorAll(".dropdown > .dropdown-menu > li > .dropdown-menu > li > .dropdown-menu"); 164 165 var _loop2 = function _loop2(i) { 166 dropdown_a[i].addEventListener("click", function () { 167 for (var j = 0; j < dropdownMenu_a.length; j++) { 168 if (i != j) { 169 dropdownMenu_a[j].parentNode.classList.remove("show"); 170 dropdownMenu_a[j].classList.remove("show"); 171 if (dropdownSubMenu_a[j] === undefined) {} else { 172 dropdownSubMenu_a[j].parentNode.classList.remove("show"); 173 dropdownSubMenu_a[j].classList.remove("show"); 174 } 175 } 176 } 177 }); 178 }; 179 180 for (var i = 0; i < dropdown_a.length; i++) { 181 _loop2(i); 182 } 183 }; 184 185 // close child submenu & dropdown reverse 186 const close_child_submenu = function close_child_submenu() { 187 var dropdown_b = document.querySelectorAll(".dropdown > .dropdown-menu > li > .dropdown-menu > li > .dropdown-toggle"); 188 var dropdownMenu_b = document.querySelectorAll(".dropdown > .dropdown-menu > li > .dropdown-menu > li > .dropdown-menu"); 189 190 var _loop3 = function _loop3(i) { 191 dropdown_b[i].addEventListener("click", function () { 192 for (var j = 0; j < dropdownMenu_b.length; j++) { 193 if (i != j) { 194 if (dropdownMenu_b[j] === undefined) {} else { 195 dropdownMenu_b[j].parentNode.classList.remove("show"); 196 dropdownMenu_b[j].classList.remove("show"); 197 } 198 } 199 } 200 }); 201 202 // dropdown reverse 203 dropdown_b[i].addEventListener("mouseenter", function () { 204 for (var j = 0; j < dropdownMenu_b.length; j++) { 205 var elm = dropdownMenu_b[j]; 206 var rect = elm.getBoundingClientRect(); 207 var l = rect.left; 208 var w = elm.offsetWidth; 209 var docW = window.innerWidth || document.documentElement.clientWidth || document.body.clientWidth; 210 var isEntirelyVisible = l + w; 211 212 if (isEntirelyVisible > docW) { 213 elm.classList.add('dropdown-reverse'); 214 } 215 } 216 }); 217 }; 218 219 for (var i = 0; i < dropdown_b.length; i++) { 220 _loop3(i); 221 } 222 }; 223 224 var ef = document.querySelector(".dropdown > .dropdown-menu > li"); 225 if ( ef != null) { 226 onekit_submenu(); 227 close_all_submenu(); 228 close_submenu(); 229 close_child_submenu(); 230 } 231 } 232 233 // Mobile menu close 234 const myMobile = function () { 235 var x = document.querySelectorAll(".back-menu"); 236 if ( x != null) { 237 for (var v = 0; v < x.length; v++) { 238 x[v].addEventListener("click", function(){ 239 var y = document.getElementsByClassName("push"); 240 for (var i = 0; i < y.length; i++) { 241 y[i].classList.remove('push-open'); 242 } 243 244 var b = document.querySelectorAll(".mobile-side"); 245 for (var i = 0; i < b.length; i++) { 246 b[i].classList.remove('sidenav-body-open'); 247 } 248 }); 249 } 250 } 251 } 252 253 // Mobile menu open 254 const myOpen = function () { 255 var x = document.querySelectorAll(".sidebar-menu-trigger"); 256 if ( x != null) { 257 for (var z = 0; z < x.length; z++) { 258 x[z].addEventListener("click", function(){ 259 var y = document.getElementsByClassName("push"); 260 for (var i = 0; i < y.length; i++) { 261 y[i].classList.add('push-open'); 262 } 263 264 var b = document.querySelectorAll(".mobile-side"); 265 for (var i = 0; i < b.length; i++) { 266 b[i].classList.add('sidenav-body-open'); 267 } 268 }); 269 } 270 } 271 } 272 273 // Show Nav scroll up 274 const myScrollUp = function () { 275 var previousTop = 0; 276 window.addEventListener("scroll", function(){ 277 var show_back_top = document.querySelector('.showbacktop'); 278 var currentTop = document.body.scrollTop || document.documentElement.scrollTop; 279 var min_header = document.querySelector('.header').offsetHeight; 280 if ( show_back_top !=null) { 281 if ( currentTop >= previousTop){ 282 //scroll down 283 if (currentTop >= min_header) { 284 show_back_top.classList.add("is-fixed"); 285 } 286 } else { 287 //scroll up 288 if (currentTop >= min_header) { 289 show_back_top.classList.add("is-visible"); 290 } else { 291 show_back_top.classList.remove("is-visible","is-fixed"); 292 } 293 } 294 } 295 previousTop =currentTop <= 0 ? 0 :currentTop; 296 }, false); 297 } 298 299 // Mobile sticky nav 300 const myMobileSticky = function () { 301 var previousTop = 0; 302 window.addEventListener("scroll", function(){
303 var show_sticky = document.querySelector('.mobile-sticky'); 304 var currentTop = document.body.scrollTop || document.documentElement.scrollTop; 305 var min_header = document.querySelector('.top-menu').offsetHeight; 306 if ( show_sticky !=null) { 307 if ( currentTop >= previousTop){ 308 //scroll down 309 if (currentTop >= min_header) { 310 show_sticky.classList.add("is-sticky"); 311 } 312 } else { 313 //scroll up 314 if (currentTop <= min_header) { 315 show_sticky.classList.remove("is-sticky"); 316 } 317 } 318 } 319 previousTop =currentTop <= 0 ? 0 :currentTop; 320 }, false); 321 } 322 323 324 // Show suggestion post 325 const mySuggestion = function () { 326 var previousTop = 0; 327 328 window.addEventListener("scroll", function(){ 329 var suggestion_box = document.querySelector('.suggestion-box'); 330 var currentTop = document.body.scrollTop || document.documentElement.scrollTop; 331 332 if ( suggestion_box !=null) { 333 var min_header = document.querySelector('.post-content').offsetHeight; 334 335 if ( currentTop >= previousTop){ 336 //scroll down 337 if (currentTop >= min_header) { 338 suggestion_box.classList.add("show"); 339 } 340 } else { 341 //scroll up 342 if (currentTop <= min_header) { 343 suggestion_box.classList.remove("show"); 344 } 345 } 346 } 347 previousTop =currentTop <= 0 ? 0 :currentTop; 348 }, false); 349 } 350 351 // Mobile menu open 352 const myCloseSuggestion = function () { 353 var x = document.querySelectorAll(".close-suggestion"); 354 if ( x != null) { 355 for (var z = 0; z < x.length; z++) { 356 x[z].addEventListener("click", function(){ 357 var y = document.getElementsByClassName("suggestion-box"); 358 for (var i = 0; i < y.length; i++) { 359 y[i].classList.add('close'); 360 } 361 }); 362 } 363 } 364 } 365 366 // Lazy load images 367 const myLazyload = function () { 368 // lazy load in all 369 var lazys = document.querySelector('.lazy'); 370 if ( lazys !=null) { 371 var lazyLoadInstance = new LazyLoad({ 372 elements_selector: ".lazy", 373 callback_reveal: function (el) { 374 if ( el.complete && el.naturalWidth !== 0 ) { 375 el.classList.remove('loading'), 376 el.classList.add('loaded'); 377 } 378 } 379 }); 380 } 381 } 382 383 // Sticky element 384 const mySticky = function () { 385 // sticky 386 var stickys = document.querySelectorAll('.sticky'); 387 if ( stickys !=null) { 388 for (var i = 0; i < stickys.length; i++) { 389 new hcSticky(stickys[i], { 390 stickTo: stickys[i].parentNode, 391 top: 20, 392 bottomEnd: 30 393 }); 394 } 395 } 396 } 397 398 // vertical tabs 399 const myVertical_tabs = function() { 400 var droptab_a = document.querySelectorAll('.dropdown-menu a[data-bs-toggle="tab"]'); 401 for (var i = 0; i < droptab_a.length; i++) { 402 droptab_a[i].addEventListener("click", function(e) { 403 e.stopPropagation(); 404 }); 405 } 406 } 407 408 // Bootstrap JS 409 const myBootstrap = function () { 410 // Tooltip 411 const tooltipTriggerList = [].slice.call(document.querySelectorAll('[data-bs-toggle="tooltip"]')); 412 if ( tooltipTriggerList != null) { 413 tooltipTriggerList.map(function (tooltipTriggerEl) { 414 return new bootstrap.Tooltip(tooltipTriggerEl) 415 }); 416 } 417 418 // validation 419 const formsx = document.querySelectorAll('.needs-validation') 420 if ( formsx != null) { 421 // Loop over them and prevent submission 422 Array.prototype.slice.call(formsx) 423 .forEach(function (form) { 424 form.addEventListener('submit', function (event) { 425 if (!form.checkValidity()) { 426 event.preventDefault() 427 event.stopPropagation() 428 } 429 430 form.classList.add('was-validated') 431 }, false) 432 }); 433 } 434 435 // popovers 436 const popoverTriggerList = [].slice.call(document.querySelectorAll('[data-bs-toggle="popover"]')); 437 if ( popoverTriggerList != null) { 438 popoverTriggerList.map(function (popoverTriggerEl) { 439 return new bootstrap.Popover(popoverTriggerEl) 440 }); 441 } 442 443 const toastElList = [].slice.call(document.querySelectorAll('.toast')); 444 if ( toastElList != null) { 445 toastElList.map(function (toastEl) { 446 return new bootstrap.Toast(toastEl, option) 447 }); 448 } 449 } 450 451 // Custom JS 452 const myCustom = function () { 453 454 // insert your javascript in here 455 456 } 457 458 459 /** 460 * ------------------------------------------------------------------------ 461 * Launch Functions 462 * ------------------------------------------------------------------------ 463 */ 464 465 myBacktotop(); 466 sub_dropdown_js(); 467 myMobile(); 468 myOpen(); 469 myScrollUp(); 470 mySuggestion(); 471 myCloseSuggestion(); 472 myLazyload(); 473 mySticky(); 474 myMobileSticky(); 475 myVertical_tabs(); 476 myBootstrap(); 477 myCustom(); 478 479})();
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.