Bilibili-Evolved/min/custom-navbar.min.js

1 line
5.6 KiB
JavaScript

(()=>{return(t,i)=>{const e=["//www.bilibili.com","//t.bilibili.com","//search.bilibili.com","//space.bilibili.com","//account.bilibili.com","//pay.bilibili.com","//member.bilibili.com","//big.bilibili.com","//message.bilibili.com","//app.bilibili.com","//passport.bilibili.com","//game.bilibili.com","//live.bilibili.com/blackboard/"];const a=["//t.bilibili.com/vote/h5/index/#/result","//t.bilibili.com/lottery/h5/index/#/result","//member.bilibili.com/video/upload","//space.bilibili.com/ajax/","//www.bilibili.com/h5/comment/","//www.bilibili.com/blackboard/","//member.bilibili.com/v2"];const s=()=>{document.documentElement.style.setProperty("--navbar-bounds-padding",`0 ${t.customNavbarBoundsPadding}%`);document.documentElement.style.setProperty("--navbar-blur-opacity",(t.customNavbarBlurOpacity||.7).toString());addSettingsListener("customNavbarBlurOpacity",t=>{document.documentElement.style.setProperty("--navbar-blur-opacity",t)})};const n=(t,i,e)=>{e.classList.toggle(t,i)};const o=t=>{dq(".custom-navbar").classList.toggle("dark",t);dq(".custom-navbar-settings").classList.toggle("dark",t)};return(()=>{const c=document.URL.replace(location.search,"");const r=c==="https://www.bilibili.com/"||c==="https://www.bilibili.com/index.html";if(isIframe()||t.bilibiliSimpleNewHomeCompatible&&r||document.contentType!=="text/html"){i.removeStyle("customNavbarStyle");return}s();const l=!(!e.some(t=>document.URL.includes(t))||a.some(t=>document.URL.includes(t)))||document.URL.includes("//www.bilibili.com/blackboard/bnj2020.html")||document.URL.includes("//www.bilibili.com/blackboard/help.html");if(l){document.body.classList.add("custom-navbar-loading");(async()=>{const e=await i.importAsync((()=>"customNavbarHtml")());document.body.insertAdjacentHTML("beforeend",e);addSettingsListener("useDarkStyle",o,true);const a=()=>dq(".custom-navbar");["Fill","Shadow","Compact","Blur"].forEach(t=>{const i="customNavbar"+t;addSettingsListener(i,i=>n(t.toLowerCase(),i,a()),true)});SpinQuery.condition(()=>dq("#banner_link,.international-header .bili-banner"),t=>t===null?false:Boolean(t.style.backgroundImage),i=>{Observer.attributes(i,()=>{const e=dqa(".custom-navbar .blur-layer");e.forEach(t=>{t.style.backgroundImage=i.style.backgroundImage;t.setAttribute("data-image",i.style.backgroundImage)});addSettingsListener("customNavbarTransparent",i=>{if(!t.hideBanner){a().classList.toggle("transparent",i)}},true);addSettingsListener("hideBanner",i=>{if(t.customNavbarTransparent){a().classList.toggle("transparent",!i)}})})});const{Blank:s}=await i.importAsync("custom-navbar-blank");const{Logo:c}=await i.importAsync("custom-navbar-logo");const{Category:r}=await i.importAsync("custom-navbar-category");const{SimpleLink:l}=await i.importAsync("custom-navbar-simple-link");const{UserInfo:m}=await i.importAsync("custom-navbar-user-info");const{SearchBox:b}=await i.importAsync("custom-navbar-search-box");const{Iframe:u}=await i.importAsync("custom-navbar-iframe");const d=[new s(1),new c,new r,new l("排行","https://www.bilibili.com/ranking","ranking"),new l("相簿","https://h.bilibili.com","drawing"),new l("音频","https://www.bilibili.com/audio/home/","music"),new u("游戏中心","https://game.bilibili.com/",{src:`https://www.bilibili.com/page-proxy/game-nav.html`,width:`680px`,height:`260px`,lazy:true,iframeName:"games"}),new u("直播","https://live.bilibili.com",{src:`https://live.bilibili.com/blackboard/dropdown-menu.html`,width:`528px`,height:`266px`,lazy:true,iframeName:"lives"}),new l("会员购","https://show.bilibili.com","shop"),new l("漫画","https://manga.bilibili.com","manga"),new s(2),new b,new m];if(getUID()){const{WatchlaterList:t}=await i.importAsync("custom-navbar-watchlater-list");const{Messages:e}=await i.importAsync("custom-navbar-messages");const{Activities:a}=await i.importAsync("custom-navbar-activities");const{Subscriptions:s}=await i.importAsync("custom-navbar-subscriptions");const{FavoritesList:n}=await i.importAsync("custom-navbar-favorites-list");const{HistoryList:o}=await i.importAsync("custom-navbar-history-list");d.push(new e,new s,new a,new t,new n,new o)}const{Upload:p}=await i.importAsync("custom-navbar-upload");const{DarkMode:w}=await i.importAsync("custom-navbar-dark-mode");d.push(new p,new s(3),new w);new Vue({el:".custom-navbar",data:{components:d},methods:{async requestPopup(t){if(!t.requestedPopup&&!t.disabled){this.$set(t,`requestedPopup`,true);if(t.initialPopup){t.initialPopup()}}if(t.onPopup){t.onPopup()}}},mounted(){document.body.classList.remove("custom-navbar-loading");const t=[...d].sort(ascendingSort(t=>t.order));const i=()=>{const i=()=>{let i=0;let e=true;let a=t.length-1;let s=true;while(i<a&&(e||s)){if(e===true){e=t[i].checkPosition();if(e===true){i++}else{}}if(s===true){s=t[a].checkPosition();if(s===true){a--}else{}}}};addSettingsListener("customNavbarOrder",i,true);addSettingsListener("customNavbarHidden",i);addSettingsListener("customNavbarBoundsPadding",i);window.addEventListener("resize",i)};if("requestIdleCallback"in unsafeWindow&&GM.info.scriptHandler!=="Violentmonkey"){unsafeWindow.requestIdleCallback(i)}else{setTimeout(i)}}})})()}return{widget:{content:`\n<div class="gui-settings-flat-button" id="custom-navbar-settings">\n<i class="mdi mdi-24px mdi-auto-fix"></i>\n<span>顶栏布局</span>\n</div>`,condition:()=>l,success:async()=>{const{initSettingsPanel:t}=await i.importAsync("custom-navbar-settings");await t()}},unload:()=>{const t=dqa(".custom-navbar,.custom-navbar-settings");t.forEach(t=>t.style.display="none");i.removeStyle("customNavbarStyle")},reload:()=>{const t=dqa(".custom-navbar,.custom-navbar-settings");t.forEach(t=>t.style.display="flex");i.applyImportantStyle("customNavbarStyle")}}})()}})();