Bilibili-Evolved/min/feeds-filter-card.vue.min.js
2021-03-29 17:57:56 +08:00

1 line
9.2 KiB
JavaScript

(()=>(e,t)=>{const i=`<div class=feeds-filter :class={collapse}><div class=feeds-filter-header @click="collapse = !collapse"><h1>动态过滤</h1><icon type=mdi icon=chevron-up></icon></div><h2>类型</h2><div class=filter-types><filter-type-switch v-for="[name, type] of allTypes":name=name :type=type :key=type.id></filter-type-switch></div><h2>关键词</h2><div class=filter-patterns><div class=pattern v-for="p of patterns":key=p>{{p}}<icon title=删除 type=mdi icon=trash-can-outline @click.native=deletePattern(p)></icon></div></div><div class=add-pattern><input placeholder="支持正则表达式 /^xxx$/"type=text v-model=newPattern @keydown.enter=addPattern(newPattern)><icon title=添加 type=mdi icon=plus @click.native=addPattern(newPattern)></icon></div><h2>侧边栏</h2><div class=filter-side-card><div class="filter-side-card-switch feeds-filter-swtich"v-for="[id, type] of Object.entries(allSideCards)":key=id @click=toggleBlockSide(id)><label :class="{disabled: sideDisabled(id)}"><span class=name :class="{disabled: sideDisabled(id)}">{{type.displayName}}</span><icon class=disabled type=mdi icon=cancel></icon><icon type=mdi icon=check></icon></label></div></div></div>`;t.applyStyleFromText(`body.enable-feeds-filter:not(.disable-feeds-filter):not(.by-type).feeds-filter-block-audio .feed-card .card[data-type="256"],body.enable-feeds-filter:not(.disable-feeds-filter):not(.by-type).feeds-filter-block-bangumi .feed-card .card[data-type="512"],body.enable-feeds-filter:not(.disable-feeds-filter):not(.by-type).feeds-filter-block-column .feed-card .card[data-type="64"],body.enable-feeds-filter:not(.disable-feeds-filter):not(.by-type).feeds-filter-block-liveRecord .feed-card .card[data-type="2047"],body.enable-feeds-filter:not(.disable-feeds-filter):not(.by-type).feeds-filter-block-miniVideo .feed-card .card[data-type="16"],body.enable-feeds-filter:not(.disable-feeds-filter):not(.by-type).feeds-filter-block-repost .feed-card .card[data-type="1"],body.enable-feeds-filter:not(.disable-feeds-filter):not(.by-type).feeds-filter-block-self-repost .feed-card .card[data-self-repost],body.enable-feeds-filter:not(.disable-feeds-filter):not(.by-type).feeds-filter-block-share .feed-card .card[data-type="2048"],body.enable-feeds-filter:not(.disable-feeds-filter):not(.by-type).feeds-filter-block-text .feed-card .card[data-type="4"],body.enable-feeds-filter:not(.disable-feeds-filter):not(.by-type).feeds-filter-block-textWithImages .feed-card .card[data-type="2"],body.enable-feeds-filter:not(.disable-feeds-filter):not(.by-type).feeds-filter-block-video .feed-card .card[data-type="8"]{display:none!important}body.enable-feeds-filter:not(.disable-feeds-filter) .left-panel .scroll-content>*,body.enable-feeds-filter:not(.disable-feeds-filter) .left-panel>:not(:last-child),body.enable-feeds-filter:not(.disable-feeds-filter) .right-panel .scroll-content>*{margin:0 0 8px!important}body.enable-feeds-filter:not(.disable-feeds-filter) .left-panel .user-panel.f-left{float:none!important}.adaptive-scroll>div:first-child:empty,body.enable-feeds-filter:not(.disable-feeds-filter) .feed-card .card.pattern-block,body.enable-feeds-filter:not(.disable-feeds-filter).feeds-filter-side-block-following-tags .left-panel .tag-panel,body.enable-feeds-filter:not(.disable-feeds-filter).feeds-filter-side-block-following-tags .right-panel .new-topic-panel,body.enable-feeds-filter:not(.disable-feeds-filter).feeds-filter-side-block-live .left-panel .live-panel,body.enable-feeds-filter:not(.disable-feeds-filter).feeds-filter-side-block-most-viewed .card-list .most-viewed-panel,body.enable-feeds-filter:not(.disable-feeds-filter).feeds-filter-side-block-notice .right-panel .notice-panel,body.enable-feeds-filter:not(.disable-feeds-filter).feeds-filter-side-block-profile .left-panel .user-wrapper,body.enable-feeds-filter:not(.disable-feeds-filter).feeds-filter-side-block-trending-tags .right-panel .tag-panel{display:none!important}.adaptive-scroll .scroll-content{position:static!important;top:unset!important;bottom:unset!important}.feeds-filter{background-color:#fff;width:100%;padding:12px 16px;border-radius:4px;box-sizing:border-box;display:none;flex-direction:column;overflow:auto;max-height:80vh;scrollbar-width:none!important}.feeds-filter::-webkit-scrollbar{height:0!important;width:0!important}body.enable-feeds-filter:not(.disable-feeds-filter) .feeds-filter{display:flex}.feeds-filter,.feeds-filter *{transition:.2s ease-out;transition-property:border-color,color,background-color}body.dark .feeds-filter{color:#eee;background-color:#444}.feeds-filter .feeds-filter-header{cursor:pointer;margin-bottom:14px;display:flex;align-items:center;justify-content:space-between}.feeds-filter .feeds-filter-header h1{font-weight:400;font-size:14px;margin:0}.feeds-filter.collapse .feeds-filter-header{margin-bottom:0}.feeds-filter.collapse .feeds-filter-header .be-icon{transform:rotate(180deg)}.feeds-filter.collapse>:not(.feeds-filter-header){display:none}.feeds-filter h2{font-weight:700;font-size:13px;margin:0 0 8px}.feeds-filter .feeds-filter-swtich:not(:last-child){margin-bottom:4px}.feeds-filter .feeds-filter-swtich label{cursor:pointer;margin:0;padding:4px 8px;border-radius:4px;background-color:transparent;display:flex;align-items:center;justify-content:space-between;border:1px solid #8884}.feeds-filter .feeds-filter-swtich label .name{font-size:12px}.feeds-filter .feeds-filter-swtich label .disabled{color:var(--theme-color)!important}.feeds-filter .feeds-filter-swtich label:hover{background-color:#8882}.feeds-filter .feeds-filter-swtich label input{display:none}.feeds-filter .feeds-filter-swtich label .be-icon{font-size:16px}.feeds-filter .feeds-filter-swtich label .be-icon.disabled,.feeds-filter .feeds-filter-swtich label.disabled .be-icon{display:none}.feeds-filter .feeds-filter-swtich label.disabled .be-icon.disabled{display:block}.feeds-filter .filter-type-switch{flex:0 0 49%}.feeds-filter .filter-side-card-switch{flex:0 0 100%}.feeds-filter .filter-types{display:flex;flex-wrap:wrap;justify-content:space-between;margin-bottom:18px}body.by-type .feeds-filter .filter-types,body.by-type .feeds-filter h2:nth-of-type(1){display:none}.feeds-filter .filter-patterns:not(:empty){margin-bottom:8px}.feeds-filter .filter-patterns .pattern{display:flex;align-items:center;justify-content:space-between;padding:4px 8px;border-radius:4px;background-color:transparent;font-size:12px;border:1px solid #8884}.feeds-filter .filter-patterns .pattern:not(:last-child){margin-bottom:4px}.feeds-filter .filter-patterns .pattern .be-icon{font-size:16px;cursor:pointer}.feeds-filter .add-pattern{display:flex;align-items:center;margin-bottom:18px}.feeds-filter .add-pattern input{color:inherit;background-color:transparent;font-size:12px;border:1px solid #8884;border-radius:4px;outline:0!important;padding:4px;flex:1 0 0;width:0}.feeds-filter .add-pattern input:focus{border-color:var(--theme-color)}.feeds-filter .add-pattern .be-icon{font-size:18px;cursor:pointer;margin-left:8px}`,"feeds-filter-card-style");const d={0:{className:"profile",displayName:"个人资料"},1:{className:"following-tags",displayName:"话题"},2:{className:"notice",displayName:"公告栏"},3:{className:"live",displayName:"正在直播"},5:{className:"most-viewed",displayName:"关注栏"}};let l;const s="feeds-filter-side-block-";return{export:Object.assign({template:i},{components:{FilterTypeSwitch:()=>t.importAsync("filter-type-switch.vue"),Icon:()=>t.importAsync("icon.vue")},data(){return{allTypes:[],patterns:[...e.feedsFilterPatterns],newPattern:"",allSideCards:d,blockSideCards:[...e.feedsFilterSideCards],collapse:true}},methods:{async updateCard(e){const{isCardBlocked:i}=await t.importAsync("feeds-apis");if(i(e)){e.element.classList.add("pattern-block")}else{e.element.classList.remove("pattern-block")}},deletePattern(t){const i=e.feedsFilterPatterns.indexOf(t);if(i!==-1){this.patterns.splice(i,1)}},addPattern(e){if(e&&!this.patterns.includes(e)){this.patterns.push(e)}this.newPattern=""},updateBlockSide(){Object.entries(d).forEach((([e,t])=>{const i=s+t.className;document.body.classList[this.blockSideCards.includes(e)?"add":"remove"](i)}))},toggleBlockSide(t){const i=this.blockSideCards.indexOf(t);const l=d[t];if(i!==-1){this.blockSideCards.splice(i,1);document.body.classList.remove(s+l.className)}else{this.blockSideCards.push(t);document.body.classList.add(s+l.className)}e.feedsFilterSideCards=this.blockSideCards},sideDisabled(e){return this.blockSideCards.includes(e)}},watch:{patterns(){e.feedsFilterPatterns=this.patterns;if(l){l.cards.forEach((e=>this.updateCard(_.clone(e))))}}},async mounted(){this.updateBlockSide();const e=await SpinQuery.select(".feed-card .tab-bar");if(!e){console.error("tabBar not found");return}const i=e.querySelector(".tab:nth-child(1) .tab-text");Observer.attributes(i,(()=>{document.body.classList.toggle("by-type",!i.classList.contains("selected"))}));document.body.classList.add("enable-feeds-filter");const{feedsCardsManager:d,feedsCardTypes:s}=await t.importAsync("feeds-apis");const a=await d.startWatching();if(!a){console.error("feedsCardsManager.startWatching() failed");return}const r={"self-repost":{id:-1,name:"自转发"}};this.allTypes=Object.entries(s).concat(Object.entries(r)).filter((([e,t])=>t.id<=2048)).map((([e,t])=>[e,_.clone(t)]));d.cards.forEach((e=>this.updateCard(_.clone(e))));d.addEventListener("addCard",(e=>{const t=e.detail;this.updateCard(t)}));l=d}})}})();