Bilibili-Evolved/min/custom-navbar.min.js
2021-10-26 13:22:15 +08:00

1 line
6.1 KiB
JavaScript

(()=>(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","//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/","//member.bilibili.com/v2","//game.bilibili.com/"];const n=()=>{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 i=["https://space.bilibili.com","https://www.bilibili.com/read"];if(!i.some((t=>document.URL.startsWith(t)))){addSettingsListener("customNavbarGlobalFixed",(t=>{document.body.classList.toggle("fixed-navbar",t)}),true)}};const s=(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}n();const l=!(!e.some((t=>document.URL.includes(t)))||a.some((t=>document.URL.includes(t))));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=>s(t.toLowerCase(),i,a())),true)}));SpinQuery.select("#banner_link,.international-header .bili-banner, .bili-header__banner").then((i=>{if(i===null||!(i instanceof HTMLElement)){return}if(i.style.backgroundImage||dq(i,".animated-banner")){addSettingsListener("customNavbarTransparent",(i=>{if(!t.hideBanner){a().classList.toggle("transparent",i)}}),true);addSettingsListener("hideBanner",(i=>{if(t.customNavbarTransparent){a().classList.toggle("transparent",!i)}}))}}));SpinQuery.condition((()=>dq("#banner_link,.international-header .bili-banner")),(t=>t===null?false:Boolean(t.style.backgroundImage)),(t=>{Observer.attributes(t,(()=>{const i=dqa(".custom-navbar .blur-layer");i.forEach((i=>{i.style.backgroundImage=t.style.backgroundImage;i.setAttribute("data-image",t.style.backgroundImage)}))}))}));const{Blank:n}=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{Rank:d}=await i.importAsync("custom-navbar-rank");const p=[new n(1),new c,new r,new d,new l("相簿","https://h.bilibili.com","drawing"),new l("番剧","https://www.bilibili.com/anime/","bangumi"),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://www.bilibili.com/v/game/match/","match"),new l("会员购","https://show.bilibili.com","shop"),new u("漫画","https://manga.bilibili.com",{src:"https://manga.bilibili.com/eden/bilibili-nav-panel.html",width:"720px",height:"266px",lazy:true,iframeName:"manga"}),new n(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:n}=await i.importAsync("custom-navbar-subscriptions");const{FavoritesList:s}=await i.importAsync("custom-navbar-favorites-list");const{HistoryList:o}=await i.importAsync("custom-navbar-history-list");p.push(new e,new n,new a,new t,new s,new o)}const{Upload:w}=await i.importAsync("custom-navbar-upload");const{DarkMode:g}=await i.importAsync("custom-navbar-dark-mode");p.push(new w,new n(3),new g);new Vue({el:".custom-navbar",data:{components:p},methods:{async requestPopup(t){if(!t.requestedPopup&&!t.disabled){this.$set(t,`requestedPopup`,true);if(t.initialPopup){t.initialPopup()}return}if(t.onPopup){t.onPopup()}}},mounted(){document.body.classList.remove("custom-navbar-loading");const t=[...p].sort(ascendingSort((t=>t.order)));const i=()=>{const i=()=>{let i=0;let e=true;let a=t.length-1;let n=true;while(i<a){e=t[i].checkPosition(!e);i++;n=t[a].checkPosition(!n);a--}};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)}}})})()}else{i.removeStyle("customNavbarStyle")}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")}}})()})();