Bilibili-Evolved/min/feeds-filter-card.vue.min.js
2019-10-16 23:41:25 +08:00

1 line
3.9 KiB
JavaScript

(()=>{return(e,t)=>{const r=`<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></div>`;t.applyStyleFromText(`body .feed-card .card.pattern-block,body.feeds-filter-block-audio .feed-card .card[data-type="256"],body.feeds-filter-block-bangumi .feed-card .card[data-type="512"],body.feeds-filter-block-column .feed-card .card[data-type="64"],body.feeds-filter-block-miniVideo .feed-card .card[data-type="16"],body.feeds-filter-block-repost .feed-card .card[data-type="1"],body.feeds-filter-block-share .feed-card .card[data-type="2048"],body.feeds-filter-block-text .feed-card .card[data-type="4"],body.feeds-filter-block-textWithImages .feed-card .card[data-type="2"],body.feeds-filter-block-video .feed-card .card[data-type="8"]{display:none!important}.feeds-filter{background-color:#fff;width:100%;padding:12px 16px;float:left;border-radius:4px;margin-top:8px;box-sizing:border-box;display:flex;flex-direction:column}.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 .filter-types{display:flex;flex-wrap:wrap;justify-content:space-between;margin-bottom:18px}.feeds-filter .filter-types .filter-type-switch{flex:0 0 49%}.feeds-filter .filter-types .filter-type-switch:not(:last-child){margin-bottom:4px}.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}.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");return{export:Object.assign({template:r},{components:{FilterTypeSwitch:()=>t.importAsync("filter-type-switch.vue"),Icon:()=>t.importAsync("icon.vue")},methods:{updateCard(t){if(e.feedsFilterPatterns.some(e=>{if(e.startsWith("/")&&e.endsWith("/")){return new RegExp(e.slice(1,e.length-1)).test(t.text)}return t.text.includes(e)})){t.element.classList.add("pattern-block")}else{t.element.classList.remove("pattern-block")}},deletePattern(t){const r=e.feedsFilterPatterns.indexOf(t);if(r!==-1){this.patterns.splice(r,1)}},addPattern(e){if(e&&!this.patterns.includes(e)){this.patterns.push(e)}this.newPattern=""}},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}},async mounted(){const{feedsCardsManager:e,feedsCardTypes:r}=await t.importAsync("feeds-apis");const a=await e.startWatching();if(!a){console.error("feedsCardsManager.startWatching() failed!");return}this.allTypes=Object.entries(r);e.cards.forEach(e=>this.updateCard(e));e.addEventListener("addCard",e=>{const t=e.detail;this.updateCard(t)});this.feedsCardsManager=e}})}}})();