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

1 line
3.6 KiB
JavaScript

(()=>(e,s)=>{function i(e,s,i){if(s in e){Object.defineProperty(e,s,{value:i,enumerable:true,configurable:true,writable:true})}else{e[s]=i}return e}const t={vip:"老爷图标",enterPrompt:"入场通知",fansMedal:"粉丝勋章",title:"活动头衔",guard:"弹幕特效",emoticons:"表情特效",systemMessage:"全区广播",welcomeMessage:"欢迎信息",giftMessage:"礼物弹幕",guardPurchase:"上舰提示",giftPanel:"付费礼物",headerPanel:"标题栏活动",userEffect:"入场特效",kanban:"看板娘",eventsBanner:"活动横幅",rankList:"排行榜",popup:"抽奖提示",pk:"PK浮窗",topRank:"高能榜提示",skin:"房间皮肤"};class n{constructor(s,t){this.skinSelectors=s;this.skinClass=t;i(this,"skinDisabled",e.simplifyLiveroomSettings.skin)}start(){this.skinSelectors.forEach((async e=>{const s=await SpinQuery.select(e);if(!s){return}Observer.attributes(s,(e=>{e.forEach((e=>{if(e.attributeName==="class"){if(this.skinDisabled&&s.classList.contains(this.skinClass)){s.classList.remove(this.skinClass)}else if(!this.skinDisabled&&!s.classList.contains(this.skinClass)){s.classList.add(this.skinClass)}}}))}))}))}setSkin(e){this.skinDisabled=!e;this.skinSelectors.forEach((s=>{SpinQuery.select(s,(s=>s.classList[e?"add":"remove"](this.skinClass)))}))}}const a=[new n(["#head-info-vm","#gift-control-vm","#rank-list-vm","#rank-list-ctnr-box",".gift-panel.base-panel",".gift-panel.extend-panel",".seeds-wrap>div:first-child",".gift-section>div:last-child",".z-gift-package>div>div",".right-action",".control-panel-ctnr"],"live-skin-coloration-area"),new n([".rank-list-ctnr .tabs"],"isHundred"),new n([".rank-list-ctnr .tab-content > div"],"hundred")];const c=(e,s)=>{document.body.classList.toggle(`simplify-${s}`,e);if(s==="skin"){a.forEach((s=>s.setSkin(!e)))}};const o=()=>document.URL.startsWith(`https://live.bilibili.com/`);if(o()){Object.keys(t).forEach((s=>{const i=e.simplifyLiveroomSettings[s];c(i,s)}));SpinQuery.select((()=>document.head)).then((s=>{let i=null;const t=()=>{const s=e.simplifyLiveroomSettings.skin;if(s){var t;(t=i)===null||t===void 0?void 0:t.remove()}else{if(i&&!document.head.contains(i)){document.head.appendChild(i)}}};addSettingsListener("simplifyLiveroomSettings",t);Observer.childList(s,(e=>{e.forEach((e=>{e.addedNodes.forEach((e=>{if(!(e instanceof HTMLElement)){return}if(e.tagName.toLowerCase()==="style"&&e.id.startsWith("skin-css-")){i=e;t()}}))}))}))}))}return{widget:{condition:o,content:`\n<div class="gui-settings-flat-button" style="position: relative" id="simplify-liveroom">\n<i class="mdi mdi-24px mdi-settings"></i>\n<span>简化直播间</span>\n<div class="simplify-liveroom-settings popup">\n<ul>\n<li v-for="item in items" @click="itemClick(item)" :class="{checked: item.checked}">\n<i class="mdi mdi-18px" :class="{'mdi-eye': !item.checked, 'mdi-eye-off': item.checked}"></i>\n {{item.name}}\n</li>\n</ul>\n</div>\n</div>\n`,success:()=>{const s=document.querySelector("#simplify-liveroom");const i=document.querySelector(".gui-settings-mask");s.addEventListener("click",(e=>{const s=document.querySelector(".simplify-liveroom-settings");if(s.contains(e.target)||e.target===s){return}s.classList.toggle("opened")}));s.addEventListener("mouseenter",(()=>i.classList.add("transparent")));s.addEventListener("mouseleave",(()=>i.classList.remove("transparent")));new Vue({el:".simplify-liveroom-settings",data:{items:Object.entries(t).map((([s,i])=>{const t=e.simplifyLiveroomSettings[s];c(t,s);return{key:s,name:i,checked:t}}))},methods:{itemClick(s){s.checked=!s.checked;c(s.checked,s.key);e.simplifyLiveroomSettings=Object.assign(e.simplifyLiveroomSettings,{[s.key]:s.checked})}}})}}}})();