1"use strict" 2 3window.AcrypleMainNavigation = (() => { 4 const createNavigationRuntime = () => { 5 let blogNameWidth 6 let menusWidth 7 let searchWidth 8 let navElement 9 let mobileSidebarOpen = false 10 11 const adjustMenu = (init) => { 12 if (init) { 13 const siteNameEle = document.getElementById("site-name") 14 if (!siteNameEle) return 15 16 blogNameWidth = siteNameEle.offsetWidth 17 const menusEle = document.querySelectorAll("#menus .menus_item") 18 menusWidth = 0 19 menusEle.forEach((item) => { 20 menusWidth += item.offsetWidth 21 }) 22 23 const searchEle = document.querySelector("#search-button") 24 searchWidth = searchEle ? searchEle.offsetWidth : 0 25 navElement = document.getElementById("nav") 26 if (!navElement) return 27 } 28 29 if (!navElement) return 30 31 let hideMenuIndex = false 32 if (window.innerWidth < 768) { 33 hideMenuIndex = true 34 } else { 35 hideMenuIndex = blogNameWidth + menusWidth + searchWidth > navElement.offsetWidth - 120 36 } 37 38 navElement.classList.toggle("hide-menu", hideMenuIndex) 39 } 40 41 const initAdjust = () => { 42 try { 43 adjustMenu(true) 44 } catch (err) { 45 console.error("Header initialization error:", err) 46 } 47 } 48 49 const sidebar = { 50 open: () => { 51 btf.sidebarPaddingR() 52 document.body.style.overflow = "hidden" 53 const menuMask = document.getElementById("menu-mask") 54 const sidebarMenus = document.getElementById("sidebar-menus") 55 if (menuMask) btf.animateIn(menuMask, "to_show 0.5s") 56 if (sidebarMenus) sidebarMenus.classList.add("open") 57 mobileSidebarOpen = true 58 }, 59 close: () => { 60 const body = document.body 61 body.style.overflow = "" 62 body.style.paddingRight = "" 63 const menuMask = document.getElementById("menu-mask") 64 const sidebarMenus = document.getElementById("sidebar-menus") 65 if (menuMask) btf.animateOut(menuMask, "to_hide 0.5s") 66 if (sidebarMenus) sidebarMenus.classList.remove("open") 67 mobileSidebarOpen = false 68 }, 69 isOpen: () => mobileSidebarOpen 70 } 71 72 const scrollDownInIndex = () => { 73 try { 74 const scrollDownEle = document.getElementById("scroll-down") 75 const contentInner = document.getElementById("content-inner") 76 if (scrollDownEle && contentInner) { 77 scrollDownEle.addEventListener("click", () => { 78 btf.scrollToDest(contentInner.offsetTop, 300) 79 }) 80 } 81 } catch (err) { 82 console.error("Scroll down setup error:", err) 83 } 84 } 85 86 const bindSubMenu = () => { 87 document.querySelectorAll("#sidebar-menus .site-page.group").forEach((item) => { 88 item.addEventListener("click", function () { 89 this.classList.toggle("hide") 90 }) 91 }) 92 } 93 94 const bindPersistentEvents = () => { 95 const toggleMenu = document.getElementById("toggle-menu") 96 if (toggleMenu) toggleMenu.addEventListener("click", sidebar.open) 97 98 window.addEventListener("resize", () => { 99 adjustMenu(false) 100 const toggleMenu = document.getElementById("toggle-menu") 101 if (toggleMenu && btf.isHidden(toggleMenu) && mobileSidebarOpen) { 102 sidebar.close() 103 } 104 }) 105 106 const menuMask = document.getElementById("menu-mask") 107 if (menuMask) { 108 menuMask.addEventListener("click", () => { 109 sidebar.close() 110 }) 111 } 112 113 bindSubMenu() 114 } 115 116 return { 117 adjustMenu, 118 initAdjust, 119 sidebar, 120 scrollDownInIndex, 121 bindPersistentEvents 122 } 123 } 124 125 return { 126 createNavigationRuntime 127 } 128})()
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.