Bilibili-Evolved/min/feeds-filter-card.vue.min.js
2020-01-04 21:11:58 +08:00

1 line
7.6 KiB
JavaScript

(()=>{return(e,t)=>{const i=`<div class=feeds-filter><h1>动态过滤</h1><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).feeds-filter-block-audio .feed-card .card[data-type="256"],body.enable-feeds-filter:not(.disable-feeds-filter).feeds-filter-block-bangumi .feed-card .card[data-type="512"],body.enable-feeds-filter:not(.disable-feeds-filter).feeds-filter-block-column .feed-card .card[data-type="64"],body.enable-feeds-filter:not(.disable-feeds-filter).feeds-filter-block-miniVideo .feed-card .card[data-type="16"],body.enable-feeds-filter:not(.disable-feeds-filter).feeds-filter-block-repost .feed-card .card[data-type="1"],body.enable-feeds-filter:not(.disable-feeds-filter).feeds-filter-block-share .feed-card .card[data-type="2048"],body.enable-feeds-filter:not(.disable-feeds-filter).feeds-filter-block-text .feed-card .card[data-type="4"],body.enable-feeds-filter:not(.disable-feeds-filter).feeds-filter-block-textWithImages .feed-card .card[data-type="2"],body.enable-feeds-filter:not(.disable-feeds-filter).feeds-filter-block-video .feed-card .card[data-type="8"]{display:none!important}body.enable-feeds-filter:not(.disable-feeds-filter) .left-panel>*,body.enable-feeds-filter:not(.disable-feeds-filter) .right-panel>*{margin:0 0 8px!important}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-live .right-panel .live-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}.feeds-filter{background-color:#fff;width:100%;padding:12px 16px;float:left;border-radius:4px;box-sizing:border-box;display:none;flex-direction:column}body.enable-feeds-filter:not(.disable-feeds-filter) .feeds-filter{display:flex}.feeds-filter,.feeds-filter *{transition:.2s ease-out}body.dark .feeds-filter{color:#eee;background-color:#444}.feeds-filter h1{font-weight:400;font-size:14px;margin:0 0 14px}.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:#0001;display:flex;align-items:center;justify-content:space-between;border:1px solid transparent}.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:#0002}.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}.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:#0001;font-size:12px}.feeds-filter .filter-patterns .pattern:not(:last-child){margin-bottom:4px}.feeds-filter .filter-patterns .pattern .be-icon{font-size:18px;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 s={0:{className:"profile",displayName:"个人资料"},1:{className:"following-tags",displayName:"关注的话题"},2:{className:"notice",displayName:"公告栏"},3:{className:"live",displayName:"正在直播"},4:{className:"trending-tags",displayName:"热门话题"}};const d="feeds-filter-side-block-";return{export:Object.assign({template:i},{components:{FilterTypeSwitch:()=>t.importAsync("filter-type-switch.vue"),Icon:()=>t.importAsync("icon.vue")},methods:{updateCard(t){const i=(e,t)=>{if(e.startsWith("/")&&e.endsWith("/")){return new RegExp(e.slice(1,e.length-1)).test(t)}return t.includes(e)};const s=(()=>{return e.feedsFilterPatterns.some(e=>{const s=e.match(/(.+) up:([^ ]+)/);if(s){return i(s[1],t.text)&&i(s[2],t.username)}return i(e,t.text)})})();if(s){t.element.classList.add("pattern-block")}else{t.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(s).forEach(([e,t])=>{const i=d+t.className;document.body.classList[this.blockSideCards.includes(e)?"add":"remove"](i)})},toggleBlockSide(t){const i=this.blockSideCards.indexOf(t);const a=s[t];if(i!==-1){this.blockSideCards.splice(i,1);document.body.classList.remove(d+a.className)}else{this.blockSideCards.push(t);document.body.classList.add(d+a.className)}e.feedsFilterSideCards=this.blockSideCards},sideDisabled(e){return this.blockSideCards.includes(e)}},watch:{patterns(){e.feedsFilterPatterns=this.patterns;if(this.feedsCardsManager!==null){this.feedsCardsManager.cards.forEach(e=>this.updateCard(e))}}},data(){return{allTypes:[],patterns:[...e.feedsFilterPatterns],newPattern:"",feedsCardsManager:null,allSideCards:s,blockSideCards:[...e.feedsFilterSideCards]}},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("enable-feeds-filter",i.classList.contains("selected"))});const{feedsCardsManager:s,feedsCardTypes:d}=await t.importAsync("feeds-apis");const a=await s.startWatching();if(!a){console.error("feedsCardsManager.startWatching() failed");return}this.allTypes=Object.entries(d);s.cards.forEach(e=>this.updateCard(e));s.addEventListener("addCard",e=>{const t=e.detail;this.updateCard(t)});this.feedsCardsManager=s}})}}})();