Bilibili-Evolved/min/aria2-rpc-profiles.vue.min.js
2021-10-26 13:22:15 +08:00

1 line
3.4 KiB
JavaScript

(()=>(e,i)=>{const r=`<div class=aria2-rpc-profiles><div class=profiles-header><h2>预设</h2><div class=profile-operations><div v-if="profiles.length > 1"class="operation delete-profile"@click=deleteProfile() title=删除预设><icon type=mdi icon=trash-can-outline></icon></div><div class="operation new-profile"@click=addProfile() title=新增预设><icon type=mdi icon=plus></icon></div></div></div><div class=profiles-list><profile-item v-for="(profile, index) of profiles":key="profile.name + index"@profile-update=profileUpdate() @click.native=changeProfile(profile) :profile=profile :deletable="profiles.length > 1":selected="profile.name === selectedProfile"></profile-item></div></div>`;i.applyStyleFromText(`.aria2-rpc-profiles .profiles-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:8px}.aria2-rpc-profiles .profiles-header .profile-operations{display:flex;align-items:center}.aria2-rpc-profiles .profiles-header .profile-operations .operation{padding:4px;background-color:#8882;border-radius:50%;display:flex;align-items:center;justify-content:center;cursor:pointer}.aria2-rpc-profiles .profiles-header .profile-operations .operation:not(:last-child){margin-right:8px}.aria2-rpc-profiles .profiles-header .profile-operations .operation:hover{background-color:#8884}.aria2-rpc-profiles .profiles-header .profile-operations .operation .mdi{margin:0}.aria2-rpc-profiles .profiles-list{display:flex;overflow:auto;scrollbar-width:none!important}.aria2-rpc-profiles .profiles-list::-webkit-scrollbar{height:0!important}`,"aria2-rpc-profiles-style");const o={name:"未命名",...e.aria2RpcOption};const t=()=>{const i=["baseDir","maxDownloadLimit","skipByDefault"];if(i.some((i=>i in e.aria2RpcOption))){e.aria2RpcOption=_.omit(e.aria2RpcOption,...i)}const r=Object.getOwnPropertyNames(e.aria2RpcOption).filter((e=>!e.startsWith("_")));let o=false;e.aria2RpcOptionProfiles.forEach((i=>{r.filter((e=>!(e in i)&&e!=="name")).forEach((r=>{if(r==="name"){return}if(!(r in i)){i[r]=e.aria2RpcOption[r];console.log(`[Add] migrated profile property '${r}'`);o=true}}));Object.keys(i).forEach((e=>{if(e==="name"){return}if(!r.includes(e)){delete i[e];console.log(`[Delete] migrated profile property '${e}'`);o=true}}))}));if(o){e.aria2RpcOptionProfiles=e.aria2RpcOptionProfiles}};return{export:Object.assign({template:r},{components:{ProfileItem:()=>i.importAsync("aria2-rpc-profile-item.vue"),Icon:()=>i.importAsync("icon.vue")},data(){t();const i=[...e.aria2RpcOptionProfiles];if(i.length===0){i.push(o);e.aria2RpcOptionProfiles=i}return{profiles:i,selectedProfile:e.aria2RpcOptionSelectedProfile||o.name}},watch:{selectedProfile(i){if(e.aria2RpcOptionSelectedProfile!==i){e.aria2RpcOptionSelectedProfile=i}}},methods:{profileUpdate(){e.aria2RpcOptionProfiles=this.profiles;this.selectedProfile=e.aria2RpcOptionSelectedProfile},changeProfile(e){this.selectedProfile=e.name;this.$emit("profile-change",e)},addProfile(){const i={...this.profiles.find((e=>e.name===this.selectedProfile))};i.name=i.name.replace(/[\d]+$/,"");if(this.profiles.some((e=>e.name===i.name))){let e=1;while(this.profiles.some((r=>r.name===i.name+e.toString()))){e++}i.name=i.name+e.toString()}this.profiles.push(i);e.aria2RpcOptionProfiles=this.profiles;this.changeProfile(i)},deleteProfile(){const i=this.profiles.findIndex((e=>e.name===this.selectedProfile));const r=i===0?0:i-1;const o=this.profiles[r];this.profiles.splice(i,1);e.aria2RpcOptionProfiles=this.profiles;this.changeProfile(o)}}})}})();