mirror of
https://git-qiuchenly.yltfspace.com/QiuChenly/corepatch
synced 2025-11-25 05:40:27 +08:00
151 lines
35 KiB
JavaScript
151 lines
35 KiB
JavaScript
import{d as e,r as a,w as t,o as n,k as i,i as o,a as l,e as r,b as s,m as u,F as d,B as c,t as m,n as p,z as v,h,c as f,g,l as y,T as b,p as w,q as k,v as M,C as I,P as A,D as C,V as D,u as W}from"./CdD4XvnD.js"
|
|
import{_ as V,a as x,A as P,U as S,d as T,C as F}from"./BaSQ3xJt.js"
|
|
const _={class:"tabs-container"},U={class:"tabs-wrapper"},E=["onClick"],X={key:0,class:"tab-badge"},N=x(e({__name:"Tabs",props:{tabs:{},activeTab:{}},emits:["update:activeTab"],setup(e){const f=e,g=a(null),y=a(!1),b=a(!1),w=()=>{if(!g.value)return
|
|
const e=g.value,a=e.scrollLeft,t=e.scrollWidth,n=e.clientWidth,i=t>n
|
|
y.value=i&&a>1,b.value=i&&a+n<t-1},k=()=>{if(!g.value)return
|
|
const e=g.value,a=.8*e.clientWidth
|
|
e.scrollBy({left:-a,behavior:"smooth"}),setTimeout(()=>{w()},300)},M=()=>{if(!g.value)return
|
|
const e=g.value,a=.8*e.clientWidth
|
|
e.scrollBy({left:a,behavior:"smooth"}),setTimeout(()=>{w()},300)},I=()=>{w()}
|
|
let A=null
|
|
return t(()=>f.tabs,()=>{i(()=>{w()})},{deep:!0}),n(()=>{i(()=>{w(),g.value&&(A=new ResizeObserver(()=>{w()}),A.observe(g.value))})}),o(()=>{A&&A.disconnect()}),(a,t)=>(h(),l("div",_,[r("div",U,[y.value?(h(),l("button",{key:0,class:"scroll-arrow left",onClick:k,type:"button"},[u(V,{icon:"mdi:chevron-left"})])):s("",!0),r("div",{ref_key:"tabsRef",ref:g,class:"tabs",onScroll:I},[(h(!0),l(d,null,c(e.tabs,t=>(h(),l("button",{key:t.id,class:p(["tab-button",{active:e.activeTab===t.id}]),onClick:m(e=>a.$emit("update:activeTab",t.id),["stop"]),type:"button"},[u(V,{icon:t.icon,class:"tab-icon"},null,8,["icon"]),r("span",null,v(t.label),1),t.badge?(h(),l("span",X,v(t.badge),1)):s("",!0)],10,E))),128))],544),b.value?(h(),l("button",{key:1,class:"scroll-arrow right",onClick:M,type:"button"},[u(V,{icon:"mdi:chevron-right"})])):s("",!0)])]))}}),[["__scopeId","data-v-e285743c"]]),j={class:"array-field"},z={class:"field-header"},Y=["onClick"],O={key:0,class:"empty-state"},R={key:1,class:"array-items"},q={key:0,class:"selected-item-label"},H=["value","onInput","placeholder"],L=["onClick"],$=x(e({__name:"ArrayField",props:{label:{},modelValue:{},placeholder:{default:""},emptyIcon:{default:"mdi:information-outline"},emptyText:{default:"暂无信息"},options:{default:void 0}},emits:["update:modelValue"],setup(e,{emit:I}){const A=e,C=I,D=a(!1),W=a(null),x=a(null),P=a({top:"0px",left:"0px",width:"200px"}),S=f(()=>A.options?A.options.filter(e=>!A.modelValue.includes(e.value)):[]),T=e=>{if(!A.options)return e
|
|
const a=A.options.find(a=>a.value===e)
|
|
return a?a.label:e},F=()=>{D.value&&W.value&&i(()=>{const e=W.value.getBoundingClientRect(),a=Math.min(48*S.value.length+16,300),t=window.innerHeight-e.bottom,n=e.top
|
|
let i=e.bottom+8,o=e.left,l=Math.max(e.width,200)
|
|
t<a&&n>t&&(i=e.top-a-8),o+l>window.innerWidth&&(o=window.innerWidth-l-16),o<16&&(o=16),i<16&&(i=16),i+a>window.innerHeight-16&&(i=window.innerHeight-a-16),P.value={top:`${i}px`,left:`${o}px`,width:`${l}px`}})},_=()=>{D.value=!D.value,D.value&&F()},U=e=>{const a=e.target
|
|
W.value&&W.value.contains(a)||x.value&&x.value.contains(a)||(D.value=!1)}
|
|
t(D,e=>{e?(F(),window.addEventListener("scroll",F,!0),window.addEventListener("resize",F)):(window.removeEventListener("scroll",F,!0),window.removeEventListener("resize",F))}),t(()=>S.value.length,()=>{D.value&&F()})
|
|
const E=()=>{const e=[...A.modelValue,""]
|
|
C("update:modelValue",e)}
|
|
return n(()=>{A.options&&document.addEventListener("click",U)}),o(()=>{A.options&&(document.removeEventListener("click",U),window.removeEventListener("scroll",F,!0),window.removeEventListener("resize",F))}),(a,t)=>(h(),l("div",j,[r("div",z,[r("label",null,v(e.label),1),e.options?(h(),l("div",{key:1,class:"select-wrapper",ref_key:"wrapperRef",ref:W},[r("button",{onClick:_,class:"btn-select"},[u(V,{icon:"mdi:plus"}),t[2]||(t[2]=g(" 选择分类 ",-1)),u(V,{icon:"fluent-color:chevron-down-24",class:p(["select-arrow",{rotated:D.value}])},null,8,["class"])]),(h(),y(b,{to:"body"},[u(w,{name:"dropdown-fade"},{default:k(()=>[D.value?(h(),l("div",{key:0,ref_key:"dropdownRef",ref:x,class:"select-dropdown",style:M(P.value),onClick:t[0]||(t[0]=m(()=>{},["stop"]))},[(h(!0),l(d,null,c(S.value,e=>(h(),l("div",{key:e.value,class:"select-option",onClick:a=>(e=>{if(!A.modelValue.includes(e)){const a=[...A.modelValue,e]
|
|
C("update:modelValue",a)}D.value=!1})(e.value)},[r("span",null,v(e.label),1)],8,Y))),128))],4)):s("",!0)]),_:1})]))],512)):(h(),l("button",{key:0,onClick:E,class:"btn-icon-text"},[u(V,{icon:"mdi:plus"}),t[1]||(t[1]=g(" 添加 ",-1))]))]),0===e.modelValue.length?(h(),l("div",O,[u(V,{icon:e.emptyIcon,class:"empty-icon"},null,8,["icon"]),r("p",null,v(e.emptyText),1)])):(h(),l("div",R,[(h(!0),l(d,null,c(e.modelValue,(a,t)=>(h(),l("div",{key:t,class:"array-item-row"},[e.options?(h(),l("span",q,v(T(a)),1)):(h(),l("input",{key:1,value:a,onInput:e=>((e,a)=>{const t=[...A.modelValue]
|
|
t[e]=a,C("update:modelValue",t)})(t,e.target.value),type:"text",placeholder:e.placeholder},null,40,H)),r("button",{onClick:e=>(e=>{const a=A.modelValue.filter((a,t)=>t!==e)
|
|
C("update:modelValue",a)})(t),class:"btn-icon-danger"},[u(V,{icon:"mdi:delete"})],8,L)]))),128))]))]))}}),[["__scopeId","data-v-26f699b0"]]),B={class:"screenshot-upload"},J={class:"upload-hint"},Q={key:1,class:"screenshots-grid"},G=["src","alt"],K=["onClick"],Z={key:0,class:"thumbnail-badge"},ee={class:"thumbnail-number"},ae=x(e({__name:"ScreenshotUpload",props:{modelValue:{},maxCount:{default:5}},emits:["update:modelValue"],setup(e,{emit:t}){const n=e,i=t,o=a(null),m=()=>{var e
|
|
null==(e=o.value)||e.click()},p=e=>{const a=e.target.files
|
|
if(!a)return
|
|
const t=n.maxCount-n.modelValue.length,l=Array.from(a).slice(0,t),r=[...n.modelValue]
|
|
l.forEach(e=>{const a=new FileReader
|
|
a.onload=a=>{var t
|
|
r.push({file:e,preview:null==(t=a.target)?void 0:t.result}),i("update:modelValue",[...r])},a.readAsDataURL(e)}),o.value&&(o.value.value="")}
|
|
return(a,t)=>(h(),l("div",B,[r("input",{ref_key:"fileInputRef",ref:o,type:"file",accept:"image/*",multiple:"",onChange:p,class:"file-input",style:{display:"none"}},null,544),0===e.modelValue.length?(h(),l("div",{key:0,class:"upload-area",onClick:m},[u(V,{icon:"mdi:image-multiple-outline",class:"upload-icon"}),t[0]||(t[0]=r("p",{class:"upload-text"},"点击选择截图",-1)),r("p",J,"最多可选择"+v(e.maxCount)+"张图片",1)])):(h(),l("div",Q,[(h(!0),l(d,null,c(e.modelValue,(e,a)=>(h(),l("div",{key:a,class:"thumbnail-box"},[r("img",{src:e.thumbnailUrl||e.preview,alt:`截图${a+1}`},null,8,G),r("button",{onClick:e=>(e=>{const a=n.modelValue.filter((a,t)=>t!==e)
|
|
i("update:modelValue",a)})(a),class:"thumbnail-remove"},[u(V,{icon:"mdi:close"})],8,K),e.fileId?(h(),l("div",Z,[u(V,{icon:"mdi:check-circle"})])):s("",!0),r("div",ee,v(a+1),1)]))),128)),e.modelValue.length<e.maxCount?(h(),l("div",{key:0,class:"thumbnail-box add-more",onClick:m},[u(V,{icon:"mdi:plus",class:"add-icon"}),t[1]||(t[1]=r("p",null,"添加更多",-1))])):s("",!0)]))]))}}),[["__scopeId","data-v-c75f593a"]]),te={class:"app-icon-upload"},ne={class:"icon-section"},ie={class:"app-icon-display"},oe=["src","alt"],le={class:"icon-upload-control"},re={key:0,class:"icon-status"},se=x(e({__name:"AppIconUpload",props:{modelValue:{},currentIconUrl:{},alt:{}},emits:["update:modelValue"],setup(e,{emit:t}){const n=e,i=t,o=a(null),d=f(()=>{var e
|
|
return(null==(e=n.modelValue)?void 0:e.preview)?n.modelValue.preview:n.currentIconUrl||""}),c=()=>{var e
|
|
null==(e=o.value)||e.click()},m=e=>{var a
|
|
const t=null==(a=e.target.files)?void 0:a[0]
|
|
if(!t)return
|
|
const n=new FileReader
|
|
n.onload=e=>{var a
|
|
const n=null==(a=e.target)?void 0:a.result
|
|
i("update:modelValue",{file:t,preview:n})},n.readAsDataURL(t)}
|
|
return(a,t)=>(h(),l("div",te,[r("div",ne,[r("div",ie,[r("img",{src:d.value,alt:e.alt||"应用图标"},null,8,oe)]),r("div",le,[r("input",{ref_key:"fileInputRef",ref:o,type:"file",accept:"image/*",onChange:m,class:"file-input",style:{display:"none"}},null,544),r("button",{onClick:c,class:"btn-icon-upload"},[u(V,{icon:"mdi:image-edit",class:"btn-icon"}),g(" "+v(e.modelValue?"更换图标":"上传图标"),1)]),e.modelValue?(h(),l("div",re,[u(V,{icon:"mdi:check-circle",class:"status-icon success"}),t[0]||(t[0]=r("span",null,"已选择图标",-1))])):s("",!0)])])]))}}),[["__scopeId","data-v-c4ff9b80"]]),ue={class:"dialog-content"},de={class:"tab-content"},ce={class:"upload-card"},me={class:"card-header"},pe={class:"card-badge"},ve={class:"card-body"},he={class:"tab-content"},fe={class:"form-card"},ge={class:"card-header"},ye={class:"card-body"},be={class:"app-header-section"},we={class:"name-section"},ke={class:"form-group"},Me={class:"form-group"},Ie={class:"form-group"},Ae={class:"form-group"},Ce={class:"checkbox-label"},De={class:"tab-content"},We={class:"form-card"},Ve={class:"card-header"},xe={class:"card-body"},Pe={key:0,class:"upload-progress-bar"},Se={class:"progress-info"},Te={class:"progress-text"},Fe={class:"progress-percent"},_e={class:"progress-bar"},Ue={key:1,class:"error-banner"},Ee={class:"dialog-footer"},Xe=["disabled"],Ne=["disabled"],je=x(e({__name:"AppInfoUploadDialog",props:{visible:{type:Boolean},app:{}},emits:["close","success"],setup(e,{emit:n}){const i=e,o=n,d=[{id:"images",label:"图片",icon:"mdi:image"},{id:"basic",label:"基本信息",icon:"mdi:information"},{id:"details",label:"详细信息",icon:"mdi:format-list-bulleted"}],c=a("images"),m=a({bundleId:"",appName:"",description:"",permissions:[],compatibility:[],architecture:[],language:[],category:[],developer:[],isDMCAed:!1}),p=a(null),b=a([]),w=a([]),x=a(!1),{fillFormFromApp:_,loadScreenshotsFromImageIds:U,loadIconFromIconId:E}={fillFormFromApp:(e,a)=>{e&&(a.value.bundleId=e.bundleId||"",a.value.appName=e.name||"",a.value.description=e.description||"",e.category&&Array.isArray(e.category)&&e.category.length>0&&(a.value.category=[...e.category]),e.developer&&(Array.isArray(e.developer)?a.value.developer=[...e.developer]:"string"==typeof e.developer&&(a.value.developer=e.developer.split(",").map(e=>e.trim()).filter(e=>e))),e.permissions&&Array.isArray(e.permissions)&&(a.value.permissions=[...e.permissions]),e.compatibility&&Array.isArray(e.compatibility)&&(a.value.compatibility=[...e.compatibility]),e.architecture&&Array.isArray(e.architecture)&&(a.value.architecture=[...e.architecture]),e.language&&Array.isArray(e.language)&&(a.value.language=[...e.language]),"boolean"==typeof e.isDMCAed&&(a.value.isDMCAed=e.isDMCAed))},loadScreenshotsFromImageIds:async e=>{if(!e||0===e.length)return[]
|
|
const a=e.map(async e=>{try{const a=await P.getImage(e)
|
|
return{preview:a,fileId:e,thumbnailUrl:a}}catch(Y){return null}})
|
|
return(await Promise.all(a)).filter(e=>null!==e)},loadIconFromIconId:async e=>{if(!e)return null
|
|
try{const a=await P.getImage(e)
|
|
return{preview:a,fileId:e,thumbnailUrl:a}}catch(Y){return null}}},{progress:X,status:j,uploading:z,error:Y,upload:O,reset:R}=function(){const e=a(!1),t=a(0),n=a(""),i=a("")
|
|
return{progress:t,status:n,uploading:e,error:i,upload:async(a,l,r,s)=>{var u,d,c
|
|
e.value=!0,t.value=0,n.value="准备上传...",i.value=""
|
|
try{let e=""
|
|
if(null==l?void 0:l.fileId)e=l.fileId,t.value=10
|
|
else if(null==l?void 0:l.file){n.value="正在上传图标...",t.value=10
|
|
const a=await P.uploadFile(S.APP_ICON,l.file)
|
|
if(!a.success||!(null==(u=a.data)?void 0:u.fileId))throw new Error(a.message||"上传图标失败")
|
|
e=a.data.fileId,t.value=30}else{if(!s)throw new Error("请先选择应用图标或确保当前应用存在")
|
|
n.value="正在获取应用图标...",t.value=5
|
|
try{const a=P.getAppIconUrl(s.bundleId),i=await fetch(a)
|
|
if(!i.ok)throw new Error("获取应用图标失败")
|
|
const o=await i.blob(),l=new File([o],`${s.bundleId}.png`,{type:o.type||"image/png"})
|
|
n.value="正在上传图标...",t.value=10
|
|
const r=await P.uploadFile(S.APP_ICON,l)
|
|
if(!r.success||!(null==(d=r.data)?void 0:d.fileId))throw new Error(r.message||"上传图标失败")
|
|
e=r.data.fileId,t.value=30}catch(m){throw new Error(`获取应用图标失败: ${m.message||"未知错误"}`)}}if(!e)throw new Error("无法获取图标ID")
|
|
n.value="正在处理截图..."
|
|
const i=[],p=(r.filter(e=>!e.fileId),r.length)
|
|
for(let a=0;a<r.length;a++){const e=r[a]
|
|
if(t.value=30+a/p*30,e.fileId)i.push(e.fileId)
|
|
else if(e.file){n.value=`正在上传截图 ${a+1}/${p}...`
|
|
const t=await P.uploadFile(S.APP_IMAGE,e.file)
|
|
t.success&&(null==(c=t.data)?void 0:c.fileId)&&i.push(t.data.fileId)}}t.value=60,n.value="正在提交应用信息..."
|
|
const v=(new Date).toISOString(),h={bundleId:a.bundleId,appName:a.appName.trim(),iconId:e,imageId:i,description:a.description.trim(),permissions:a.permissions.filter(e=>""!==e.trim()),releaseDate:v,updateDate:v,compatibility:a.compatibility.filter(e=>""!==e.trim()),architecture:a.architecture.filter(e=>""!==e.trim()),language:a.language.filter(e=>""!==e.trim()),category:a.category.filter(e=>""!==e.trim()),developer:a.developer.filter(e=>""!==e.trim()),isDMCAed:a.isDMCAed}
|
|
t.value=80
|
|
const f=await P.uploadAppInfo(h)
|
|
if(!f.success)throw new Error(f.message||"上传应用信息失败")
|
|
t.value=100,n.value="上传成功!",setTimeout(()=>{o("success"),Q()},500)}catch(m){const e=m.message||"上传失败,请重试"
|
|
throw i.value=e,m}finally{e.value=!1}},reset:()=>{e.value=!1,t.value=0,n.value="",i.value=""}}}(),q=f(()=>!z.value&&""!==m.value.appName.trim()),H=f(()=>{var e
|
|
return(null==(e=p.value)?void 0:e.preview)?p.value.preview:i.app?P.getAppIconUrl(i.app.bundleId):""})
|
|
t(()=>i.app,e=>{e&&_(e,m)},{immediate:!0})
|
|
const L=async()=>{if(!x.value){x.value=!0
|
|
try{const e=await F.getCategoryDictionaries()
|
|
e.success&&e.data&&(w.value=e.data.map(e=>({value:e.key,label:`${e.name} (${e.key})`})))}catch(e){}finally{x.value=!1}}},B=async e=>{try{const a=await P.getAppInfoFromServer(e)
|
|
a&&(a.description&&(m.value.description=a.description),a.category&&Array.isArray(a.category)&&a.category.length>0&&(m.value.category=a.category),a.developer&&(Array.isArray(a.developer)?m.value.developer=a.developer:"string"==typeof a.developer&&(m.value.developer=a.developer.split(",").map(e=>e.trim()).filter(e=>e))),a.permissions&&Array.isArray(a.permissions)&&a.permissions.length>0&&(m.value.permissions=a.permissions),a.compatibility&&Array.isArray(a.compatibility)&&a.compatibility.length>0&&(m.value.compatibility=a.compatibility),a.architecture&&Array.isArray(a.architecture)&&a.architecture.length>0&&(m.value.architecture=a.architecture),a.language&&Array.isArray(a.language)&&a.language.length>0&&(m.value.language=a.language),"boolean"==typeof a.isDMCAed&&(m.value.isDMCAed=a.isDMCAed))}catch(a){}}
|
|
t(()=>i.visible,async e=>{var a,t
|
|
if(e){c.value="images"
|
|
const e=[L(),i.app?B(i.app.bundleId):Promise.resolve()];(null==(a=i.app)?void 0:a.imageId)&&Array.isArray(i.app.imageId)&&i.app.imageId.length>0&&e.push(U(i.app.imageId).then(e=>{b.value=e}).catch(e=>{})),(null==(t=i.app)?void 0:t.iconId)&&e.push(E(i.app.iconId).then(e=>{e&&(p.value=e)}).catch(e=>{})),await Promise.all(e)}})
|
|
const J=async()=>{if(q.value)try{await O(m.value,p.value,b.value,i.app)}catch(e){}},Q=()=>{var e,a
|
|
z.value||(o("close"),m.value={bundleId:(null==(e=i.app)?void 0:e.bundleId)||"",appName:(null==(a=i.app)?void 0:a.name)||"",description:"",permissions:[],compatibility:[],architecture:[],language:[],category:[],developer:[],isDMCAed:!1},p.value=null,b.value=[],R(),c.value="images")}
|
|
return(a,t)=>(h(),y(T,{visible:e.visible,"max-width":900,"close-on-overlay-click":!W(z),"show-close-button":!0,"close-button-position":"header",loading:W(z),onClose:Q},{header:k(()=>[...t[13]||(t[13]=[r("h2",{class:"dialog-title"},"上传应用信息",-1)])]),footer:k(()=>[r("div",Ee,[r("button",{onClick:Q,class:"btn btn-secondary",disabled:W(z)}," 取消 ",8,Xe),r("button",{onClick:J,class:"btn btn-primary",disabled:W(z)||!q.value},[W(z)?(h(),y(V,{key:0,icon:"mdi:loading",class:"btn-icon spinning"})):s("",!0),g(" "+v(W(z)?"上传中...":"确认上传"),1)],8,Ne)])]),default:k(()=>[r("div",ue,[u(N,{tabs:d,"active-tab":c.value,"onUpdate:activeTab":t[0]||(t[0]=e=>c.value=e)},null,8,["active-tab"]),I(r("div",de,[r("div",ce,[r("div",me,[u(V,{icon:"mdi:image-multiple",class:"card-icon"}),t[14]||(t[14]=r("h3",null,"应用截图",-1)),r("span",pe,v(b.value.length)+"/5",1)]),r("div",ve,[u(ae,{modelValue:b.value,"onUpdate:modelValue":t[1]||(t[1]=e=>b.value=e),"max-count":5},null,8,["modelValue"])])])],512),[[A,"images"===c.value]]),I(r("div",he,[r("div",fe,[r("div",ge,[u(V,{icon:"mdi:information",class:"card-icon"}),t[15]||(t[15]=r("h3",null,"基本信息",-1))]),r("div",ye,[r("div",be,[u(se,{modelValue:p.value,"onUpdate:modelValue":t[2]||(t[2]=e=>p.value=e),"current-icon-url":H.value,alt:"应用图标"},null,8,["modelValue","current-icon-url"]),r("div",we,[r("div",ke,[t[16]||(t[16]=r("label",{class:"form-label"},[g(" 应用名称 "),r("span",{class:"required"},"*")],-1)),I(r("input",{"onUpdate:modelValue":t[3]||(t[3]=e=>m.value.appName=e),type:"text",placeholder:"请输入应用名称",required:"",class:"form-input"},null,512),[[C,m.value.appName]])])])]),r("div",Me,[t[17]||(t[17]=r("label",{class:"form-label"},"Bundle ID",-1)),I(r("input",{"onUpdate:modelValue":t[4]||(t[4]=e=>m.value.bundleId=e),type:"text",readonly:"",class:"form-input readonly-input"},null,512),[[C,m.value.bundleId]])]),r("div",Ie,[t[18]||(t[18]=r("label",{class:"form-label"},"应用描述",-1)),I(r("textarea",{"onUpdate:modelValue":t[5]||(t[5]=e=>m.value.description=e),placeholder:"请输入应用描述...",rows:"5",class:"form-textarea"},null,512),[[C,m.value.description]])]),r("div",Ae,[r("label",Ce,[I(r("input",{"onUpdate:modelValue":t[6]||(t[6]=e=>m.value.isDMCAed=e),type:"checkbox"},null,512),[[D,m.value.isDMCAed]]),t[19]||(t[19]=r("span",null,"是否被DMCA",-1))])])])])],512),[[A,"basic"===c.value]]),I(r("div",De,[r("div",We,[r("div",Ve,[u(V,{icon:"mdi:format-list-bulleted",class:"card-icon"}),t[20]||(t[20]=r("h3",null,"详细信息",-1))]),r("div",xe,[u($,{modelValue:m.value.permissions,"onUpdate:modelValue":t[7]||(t[7]=e=>m.value.permissions=e),label:"权限列表",placeholder:"权限","empty-icon":"mdi:shield-off","empty-text":"暂无权限信息"},null,8,["modelValue"]),u($,{modelValue:m.value.compatibility,"onUpdate:modelValue":t[8]||(t[8]=e=>m.value.compatibility=e),label:"系统兼容性",placeholder:"例如: macOS 10.15","empty-icon":"mdi:desktop-classic","empty-text":"暂无兼容性信息"},null,8,["modelValue"]),u($,{modelValue:m.value.architecture,"onUpdate:modelValue":t[9]||(t[9]=e=>m.value.architecture=e),label:"系统架构",placeholder:"例如: x86_64, arm64","empty-icon":"mdi:cpu-64-bit","empty-text":"暂无架构信息"},null,8,["modelValue"]),u($,{modelValue:m.value.language,"onUpdate:modelValue":t[10]||(t[10]=e=>m.value.language=e),label:"支持语言",placeholder:"例如: English, Chinese","empty-icon":"mdi:translate","empty-text":"暂无语言信息"},null,8,["modelValue"]),u($,{modelValue:m.value.category,"onUpdate:modelValue":t[11]||(t[11]=e=>m.value.category=e),label:"应用分类",placeholder:"例如: Productivity, Games","empty-icon":"mdi:folder","empty-text":"暂无分类信息",options:w.value},null,8,["modelValue","options"]),u($,{modelValue:m.value.developer,"onUpdate:modelValue":t[12]||(t[12]=e=>m.value.developer=e),label:"开发者",placeholder:"例如: Apple Inc.","empty-icon":"mdi:account","empty-text":"暂无开发者信息"},null,8,["modelValue"])])])],512),[[A,"details"===c.value]]),W(z)?(h(),l("div",Pe,[r("div",Se,[u(V,{icon:"mdi:cloud-upload",class:"progress-icon"}),r("span",Te,v(W(j)),1),r("span",Fe,v(W(X))+"%",1)]),r("div",_e,[r("div",{class:"progress-fill",style:M({width:`${W(X)}%`})},null,4)])])):s("",!0),W(Y)&&!W(z)?(h(),l("div",Ue,[u(V,{icon:"mdi:alert-circle",class:"error-icon"}),r("span",null,v(W(Y)),1)])):s("",!0)])]),_:1},8,["visible","close-on-overlay-click","loading"]))}}),[["__scopeId","data-v-38b47a32"]]),ze=43200,Ye=Symbol.for("constructDateFrom")
|
|
function Oe(e,a){return"function"==typeof e?e(a):e&&"object"==typeof e&&Ye in e?e[Ye](a):e instanceof Date?new e.constructor(a):new Date(a)}function Re(e,a){return Oe(a||e,e)}let qe={}
|
|
function He(){return qe}function Le(e,a){var t,n,i,o
|
|
const l=He(),r=(null==a?void 0:a.weekStartsOn)??(null==(n=null==(t=null==a?void 0:a.locale)?void 0:t.options)?void 0:n.weekStartsOn)??l.weekStartsOn??(null==(o=null==(i=l.locale)?void 0:i.options)?void 0:o.weekStartsOn)??0,s=Re(e,null==a?void 0:a.in),u=s.getDay(),d=(u<r?7:0)+u-r
|
|
return s.setDate(s.getDate()-d),s.setHours(0,0,0,0),s}function $e(e){const a=Re(e),t=new Date(Date.UTC(a.getFullYear(),a.getMonth(),a.getDate(),a.getHours(),a.getMinutes(),a.getSeconds(),a.getMilliseconds()))
|
|
return t.setUTCFullYear(a.getFullYear()),+e-+t}function Be(e,...a){const t=Oe.bind(null,e||a.find(e=>"object"==typeof e))
|
|
return a.map(t)}function Je(e,a){const t=+Re(e)-+Re(a)
|
|
return t<0?-1:t>0?1:t}const Qe={lessThanXSeconds:{one:"less than a second",other:"less than {{count}} seconds"},xSeconds:{one:"1 second",other:"{{count}} seconds"},halfAMinute:"half a minute",lessThanXMinutes:{one:"less than a minute",other:"less than {{count}} minutes"},xMinutes:{one:"1 minute",other:"{{count}} minutes"},aboutXHours:{one:"about 1 hour",other:"about {{count}} hours"},xHours:{one:"1 hour",other:"{{count}} hours"},xDays:{one:"1 day",other:"{{count}} days"},aboutXWeeks:{one:"about 1 week",other:"about {{count}} weeks"},xWeeks:{one:"1 week",other:"{{count}} weeks"},aboutXMonths:{one:"about 1 month",other:"about {{count}} months"},xMonths:{one:"1 month",other:"{{count}} months"},aboutXYears:{one:"about 1 year",other:"about {{count}} years"},xYears:{one:"1 year",other:"{{count}} years"},overXYears:{one:"over 1 year",other:"over {{count}} years"},almostXYears:{one:"almost 1 year",other:"almost {{count}} years"}}
|
|
function Ge(e){return(a={})=>{const t=a.width?String(a.width):e.defaultWidth
|
|
return e.formats[t]||e.formats[e.defaultWidth]}}const Ke={date:Ge({formats:{full:"EEEE, MMMM do, y",long:"MMMM do, y",medium:"MMM d, y",short:"MM/dd/yyyy"},defaultWidth:"full"}),time:Ge({formats:{full:"h:mm:ss a zzzz",long:"h:mm:ss a z",medium:"h:mm:ss a",short:"h:mm a"},defaultWidth:"full"}),dateTime:Ge({formats:{full:"{{date}} 'at' {{time}}",long:"{{date}} 'at' {{time}}",medium:"{{date}}, {{time}}",short:"{{date}}, {{time}}"},defaultWidth:"full"})},Ze={lastWeek:"'last' eeee 'at' p",yesterday:"'yesterday at' p",today:"'today at' p",tomorrow:"'tomorrow at' p",nextWeek:"eeee 'at' p",other:"P"}
|
|
function ea(e){return(a,t)=>{let n
|
|
if("formatting"===((null==t?void 0:t.context)?String(t.context):"standalone")&&e.formattingValues){const a=e.defaultFormattingWidth||e.defaultWidth,i=(null==t?void 0:t.width)?String(t.width):a
|
|
n=e.formattingValues[i]||e.formattingValues[a]}else{const a=e.defaultWidth,i=(null==t?void 0:t.width)?String(t.width):e.defaultWidth
|
|
n=e.values[i]||e.values[a]}return n[e.argumentCallback?e.argumentCallback(a):a]}}function aa(e){return(a,t={})=>{const n=t.width,i=n&&e.matchPatterns[n]||e.matchPatterns[e.defaultMatchWidth],o=a.match(i)
|
|
if(!o)return null
|
|
const l=o[0],r=n&&e.parsePatterns[n]||e.parsePatterns[e.defaultParseWidth],s=Array.isArray(r)?function(e,a){for(let t=0;t<e.length;t++)if(a(e[t]))return t}(r,e=>e.test(l)):function(e,a){for(const t in e)if(Object.prototype.hasOwnProperty.call(e,t)&&a(e[t]))return t}(r,e=>e.test(l))
|
|
let u
|
|
return u=e.valueCallback?e.valueCallback(s):s,u=t.valueCallback?t.valueCallback(u):u,{value:u,rest:a.slice(l.length)}}}function ta(e){return(a,t={})=>{const n=a.match(e.matchPattern)
|
|
if(!n)return null
|
|
const i=n[0],o=a.match(e.parsePattern)
|
|
if(!o)return null
|
|
let l=e.valueCallback?e.valueCallback(o[0]):o[0]
|
|
return l=t.valueCallback?t.valueCallback(l):l,{value:l,rest:a.slice(i.length)}}}const na={code:"en-US",formatDistance:(e,a,t)=>{let n
|
|
const i=Qe[e]
|
|
return n="string"==typeof i?i:1===a?i.one:i.other.replace("{{count}}",a.toString()),(null==t?void 0:t.addSuffix)?t.comparison&&t.comparison>0?"in "+n:n+" ago":n},formatLong:Ke,formatRelative:(e,a,t,n)=>Ze[e],localize:{ordinalNumber:(e,a)=>{const t=Number(e),n=t%100
|
|
if(n>20||n<10)switch(n%10){case 1:return t+"st"
|
|
case 2:return t+"nd"
|
|
case 3:return t+"rd"}return t+"th"},era:ea({values:{narrow:["B","A"],abbreviated:["BC","AD"],wide:["Before Christ","Anno Domini"]},defaultWidth:"wide"}),quarter:ea({values:{narrow:["1","2","3","4"],abbreviated:["Q1","Q2","Q3","Q4"],wide:["1st quarter","2nd quarter","3rd quarter","4th quarter"]},defaultWidth:"wide",argumentCallback:e=>e-1}),month:ea({values:{narrow:["J","F","M","A","M","J","J","A","S","O","N","D"],abbreviated:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],wide:["January","February","March","April","May","June","July","August","September","October","November","December"]},defaultWidth:"wide"}),day:ea({values:{narrow:["S","M","T","W","T","F","S"],short:["Su","Mo","Tu","We","Th","Fr","Sa"],abbreviated:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],wide:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"]},defaultWidth:"wide"}),dayPeriod:ea({values:{narrow:{am:"a",pm:"p",midnight:"mi",noon:"n",morning:"morning",afternoon:"afternoon",evening:"evening",night:"night"},abbreviated:{am:"AM",pm:"PM",midnight:"midnight",noon:"noon",morning:"morning",afternoon:"afternoon",evening:"evening",night:"night"},wide:{am:"a.m.",pm:"p.m.",midnight:"midnight",noon:"noon",morning:"morning",afternoon:"afternoon",evening:"evening",night:"night"}},defaultWidth:"wide",formattingValues:{narrow:{am:"a",pm:"p",midnight:"mi",noon:"n",morning:"in the morning",afternoon:"in the afternoon",evening:"in the evening",night:"at night"},abbreviated:{am:"AM",pm:"PM",midnight:"midnight",noon:"noon",morning:"in the morning",afternoon:"in the afternoon",evening:"in the evening",night:"at night"},wide:{am:"a.m.",pm:"p.m.",midnight:"midnight",noon:"noon",morning:"in the morning",afternoon:"in the afternoon",evening:"in the evening",night:"at night"}},defaultFormattingWidth:"wide"})},match:{ordinalNumber:ta({matchPattern:/^(\d+)(th|st|nd|rd)?/i,parsePattern:/\d+/i,valueCallback:e=>parseInt(e,10)}),era:aa({matchPatterns:{narrow:/^(b|a)/i,abbreviated:/^(b\.?\s?c\.?|b\.?\s?c\.?\s?e\.?|a\.?\s?d\.?|c\.?\s?e\.?)/i,wide:/^(before christ|before common era|anno domini|common era)/i},defaultMatchWidth:"wide",parsePatterns:{any:[/^b/i,/^(a|c)/i]},defaultParseWidth:"any"}),quarter:aa({matchPatterns:{narrow:/^[1234]/i,abbreviated:/^q[1234]/i,wide:/^[1234](th|st|nd|rd)? quarter/i},defaultMatchWidth:"wide",parsePatterns:{any:[/1/i,/2/i,/3/i,/4/i]},defaultParseWidth:"any",valueCallback:e=>e+1}),month:aa({matchPatterns:{narrow:/^[jfmasond]/i,abbreviated:/^(jan|feb|mar|apr|may|jun|jul|aug|sep|oct|nov|dec)/i,wide:/^(january|february|march|april|may|june|july|august|september|october|november|december)/i},defaultMatchWidth:"wide",parsePatterns:{narrow:[/^j/i,/^f/i,/^m/i,/^a/i,/^m/i,/^j/i,/^j/i,/^a/i,/^s/i,/^o/i,/^n/i,/^d/i],any:[/^ja/i,/^f/i,/^mar/i,/^ap/i,/^may/i,/^jun/i,/^jul/i,/^au/i,/^s/i,/^o/i,/^n/i,/^d/i]},defaultParseWidth:"any"}),day:aa({matchPatterns:{narrow:/^[smtwf]/i,short:/^(su|mo|tu|we|th|fr|sa)/i,abbreviated:/^(sun|mon|tue|wed|thu|fri|sat)/i,wide:/^(sunday|monday|tuesday|wednesday|thursday|friday|saturday)/i},defaultMatchWidth:"wide",parsePatterns:{narrow:[/^s/i,/^m/i,/^t/i,/^w/i,/^t/i,/^f/i,/^s/i],any:[/^su/i,/^m/i,/^tu/i,/^w/i,/^th/i,/^f/i,/^sa/i]},defaultParseWidth:"any"}),dayPeriod:aa({matchPatterns:{narrow:/^(a|p|mi|n|(in the|at) (morning|afternoon|evening|night))/i,any:/^([ap]\.?\s?m\.?|midnight|noon|(in the|at) (morning|afternoon|evening|night))/i},defaultMatchWidth:"any",parsePatterns:{any:{am:/^a/i,pm:/^p/i,midnight:/^mi/i,noon:/^no/i,morning:/morning/i,afternoon:/afternoon/i,evening:/evening/i,night:/night/i}},defaultParseWidth:"any"})},options:{weekStartsOn:0,firstWeekContainsDate:1}}
|
|
function ia(e,a){return function(e,a,t){const n=He(),i=(null==t?void 0:t.locale)??n.locale??na,o=Je(e,a)
|
|
if(isNaN(o))throw new RangeError("Invalid time value")
|
|
const l=Object.assign({},t,{addSuffix:null==t?void 0:t.addSuffix,comparison:o}),[r,s]=Be(null==t?void 0:t.in,...o>0?[a,e]:[e,a]),u=function(e,a){const t=function(e,a){return+Re(e)-+Re(a)}(e,a)/1e3
|
|
return(e=>{const a=(0,Math.trunc)(e)
|
|
return 0===a?0:a})(t)}(s,r),d=($e(s)-$e(r))/1e3,c=Math.round((u-d)/60)
|
|
let m
|
|
if(c<2)return(null==t?void 0:t.includeSeconds)?u<5?i.formatDistance("lessThanXSeconds",5,l):u<10?i.formatDistance("lessThanXSeconds",10,l):u<20?i.formatDistance("lessThanXSeconds",20,l):u<40?i.formatDistance("halfAMinute",0,l):u<60?i.formatDistance("lessThanXMinutes",1,l):i.formatDistance("xMinutes",1,l):0===c?i.formatDistance("lessThanXMinutes",1,l):i.formatDistance("xMinutes",c,l)
|
|
if(c<45)return i.formatDistance("xMinutes",c,l)
|
|
if(c<90)return i.formatDistance("aboutXHours",1,l)
|
|
if(c<1440){const e=Math.round(c/60)
|
|
return i.formatDistance("aboutXHours",e,l)}if(c<2520)return i.formatDistance("xDays",1,l)
|
|
if(c<ze){const e=Math.round(c/1440)
|
|
return i.formatDistance("xDays",e,l)}if(c<86400)return m=Math.round(c/ze),i.formatDistance("aboutXMonths",m,l)
|
|
if(m=function(e,a,t){const[n,i,o]=Be(null==t?void 0:t.in,e,e,a),l=Je(i,o),r=Math.abs(function(e,a){const[t,n]=Be(void 0,e,a)
|
|
return 12*(t.getFullYear()-n.getFullYear())+(t.getMonth()-n.getMonth())}(i,o))
|
|
if(r<1)return 0
|
|
1===i.getMonth()&&i.getDate()>27&&i.setDate(30),i.setMonth(i.getMonth()-l*r)
|
|
let s=Je(i,o)===-l;(function(e){const a=Re(e,void 0)
|
|
return+function(e){const a=Re(e,void 0)
|
|
return a.setHours(23,59,59,999),a}(a)===+function(e){const a=Re(e,void 0),t=a.getMonth()
|
|
return a.setFullYear(a.getFullYear(),t+1,0),a.setHours(23,59,59,999),a}(a)})(n)&&1===r&&1===Je(n,o)&&(s=!1)
|
|
const u=l*(r-+s)
|
|
return 0===u?0:u}(s,r),m<12){const e=Math.round(c/ze)
|
|
return i.formatDistance("xMonths",e,l)}{const e=m%12,a=Math.trunc(m/12)
|
|
return e<3?i.formatDistance("aboutXYears",a,l):e<9?i.formatDistance("overXYears",a,l):i.formatDistance("almostXYears",a+1,l)}}(e,function(e){return Oe(e,Date.now())}(e),a)}const oa={lessThanXSeconds:{one:"不到 1 秒",other:"不到 {{count}} 秒"},xSeconds:{one:"1 秒",other:"{{count}} 秒"},halfAMinute:"半分钟",lessThanXMinutes:{one:"不到 1 分钟",other:"不到 {{count}} 分钟"},xMinutes:{one:"1 分钟",other:"{{count}} 分钟"},xHours:{one:"1 小时",other:"{{count}} 小时"},aboutXHours:{one:"大约 1 小时",other:"大约 {{count}} 小时"},xDays:{one:"1 天",other:"{{count}} 天"},aboutXWeeks:{one:"大约 1 个星期",other:"大约 {{count}} 个星期"},xWeeks:{one:"1 个星期",other:"{{count}} 个星期"},aboutXMonths:{one:"大约 1 个月",other:"大约 {{count}} 个月"},xMonths:{one:"1 个月",other:"{{count}} 个月"},aboutXYears:{one:"大约 1 年",other:"大约 {{count}} 年"},xYears:{one:"1 年",other:"{{count}} 年"},overXYears:{one:"超过 1 年",other:"超过 {{count}} 年"},almostXYears:{one:"将近 1 年",other:"将近 {{count}} 年"}},la={date:Ge({formats:{full:"y'年'M'月'd'日' EEEE",long:"y'年'M'月'd'日'",medium:"yyyy-MM-dd",short:"yy-MM-dd"},defaultWidth:"full"}),time:Ge({formats:{full:"zzzz a h:mm:ss",long:"z a h:mm:ss",medium:"a h:mm:ss",short:"a h:mm"},defaultWidth:"full"}),dateTime:Ge({formats:{full:"{{date}} {{time}}",long:"{{date}} {{time}}",medium:"{{date}} {{time}}",short:"{{date}} {{time}}"},defaultWidth:"full"})}
|
|
function ra(e,a,t){const n="eeee p"
|
|
return function(e,a,t){const[n,i]=Be(null==t?void 0:t.in,e,a)
|
|
return+Le(n,t)===+Le(i,t)}(e,a,t)?n:e.getTime()>a.getTime()?"'下个'"+n:"'上个'"+n}const sa={lastWeek:ra,yesterday:"'昨天' p",today:"'今天' p",tomorrow:"'明天' p",nextWeek:ra,other:"PP p"},ua={code:"zh-CN",formatDistance:(e,a,t)=>{let n
|
|
const i=oa[e]
|
|
return n="string"==typeof i?i:1===a?i.one:i.other.replace("{{count}}",String(a)),(null==t?void 0:t.addSuffix)?t.comparison&&t.comparison>0?n+"内":n+"前":n},formatLong:la,formatRelative:(e,a,t,n)=>{const i=sa[e]
|
|
return"function"==typeof i?i(a,t,n):i},localize:{ordinalNumber:(e,a)=>{const t=Number(e)
|
|
switch(null==a?void 0:a.unit){case"date":return t.toString()+"日"
|
|
case"hour":return t.toString()+"时"
|
|
case"minute":return t.toString()+"分"
|
|
case"second":return t.toString()+"秒"
|
|
default:return"第 "+t.toString()}},era:ea({values:{narrow:["前","公元"],abbreviated:["前","公元"],wide:["公元前","公元"]},defaultWidth:"wide"}),quarter:ea({values:{narrow:["1","2","3","4"],abbreviated:["第一季","第二季","第三季","第四季"],wide:["第一季度","第二季度","第三季度","第四季度"]},defaultWidth:"wide",argumentCallback:e=>e-1}),month:ea({values:{narrow:["一","二","三","四","五","六","七","八","九","十","十一","十二"],abbreviated:["1月","2月","3月","4月","5月","6月","7月","8月","9月","10月","11月","12月"],wide:["一月","二月","三月","四月","五月","六月","七月","八月","九月","十月","十一月","十二月"]},defaultWidth:"wide"}),day:ea({values:{narrow:["日","一","二","三","四","五","六"],short:["日","一","二","三","四","五","六"],abbreviated:["周日","周一","周二","周三","周四","周五","周六"],wide:["星期日","星期一","星期二","星期三","星期四","星期五","星期六"]},defaultWidth:"wide"}),dayPeriod:ea({values:{narrow:{am:"上",pm:"下",midnight:"凌晨",noon:"午",morning:"早",afternoon:"下午",evening:"晚",night:"夜"},abbreviated:{am:"上午",pm:"下午",midnight:"凌晨",noon:"中午",morning:"早晨",afternoon:"中午",evening:"晚上",night:"夜间"},wide:{am:"上午",pm:"下午",midnight:"凌晨",noon:"中午",morning:"早晨",afternoon:"中午",evening:"晚上",night:"夜间"}},defaultWidth:"wide",formattingValues:{narrow:{am:"上",pm:"下",midnight:"凌晨",noon:"午",morning:"早",afternoon:"下午",evening:"晚",night:"夜"},abbreviated:{am:"上午",pm:"下午",midnight:"凌晨",noon:"中午",morning:"早晨",afternoon:"中午",evening:"晚上",night:"夜间"},wide:{am:"上午",pm:"下午",midnight:"凌晨",noon:"中午",morning:"早晨",afternoon:"中午",evening:"晚上",night:"夜间"}},defaultFormattingWidth:"wide"})},match:{ordinalNumber:ta({matchPattern:/^(第\s*)?\d+(日|时|分|秒)?/i,parsePattern:/\d+/i,valueCallback:e=>parseInt(e,10)}),era:aa({matchPatterns:{narrow:/^(前)/i,abbreviated:/^(前)/i,wide:/^(公元前|公元)/i},defaultMatchWidth:"wide",parsePatterns:{any:[/^(前)/i,/^(公元)/i]},defaultParseWidth:"any"}),quarter:aa({matchPatterns:{narrow:/^[1234]/i,abbreviated:/^第[一二三四]刻/i,wide:/^第[一二三四]刻钟/i},defaultMatchWidth:"wide",parsePatterns:{any:[/(1|一)/i,/(2|二)/i,/(3|三)/i,/(4|四)/i]},defaultParseWidth:"any",valueCallback:e=>e+1}),month:aa({matchPatterns:{narrow:/^(一|二|三|四|五|六|七|八|九|十[二一])/i,abbreviated:/^(一|二|三|四|五|六|七|八|九|十[二一]|\d|1[12])月/i,wide:/^(一|二|三|四|五|六|七|八|九|十[二一])月/i},defaultMatchWidth:"wide",parsePatterns:{narrow:[/^一/i,/^二/i,/^三/i,/^四/i,/^五/i,/^六/i,/^七/i,/^八/i,/^九/i,/^十(?!(一|二))/i,/^十一/i,/^十二/i],any:[/^一|1/i,/^二|2/i,/^三|3/i,/^四|4/i,/^五|5/i,/^六|6/i,/^七|7/i,/^八|8/i,/^九|9/i,/^十(?!(一|二))|10/i,/^十一|11/i,/^十二|12/i]},defaultParseWidth:"any"}),day:aa({matchPatterns:{narrow:/^[一二三四五六日]/i,short:/^[一二三四五六日]/i,abbreviated:/^周[一二三四五六日]/i,wide:/^星期[一二三四五六日]/i},defaultMatchWidth:"wide",parsePatterns:{any:[/日/i,/一/i,/二/i,/三/i,/四/i,/五/i,/六/i]},defaultParseWidth:"any"}),dayPeriod:aa({matchPatterns:{any:/^(上午?|下午?|午夜|[中正]午|早上?|下午|晚上?|凌晨|)/i},defaultMatchWidth:"any",parsePatterns:{any:{am:/^上午?/i,pm:/^下午?/i,midnight:/^午夜/i,noon:/^[中正]午/i,morning:/^早上/i,afternoon:/^下午/i,evening:/^晚上?/i,night:/^凌晨/i}},defaultParseWidth:"any"})},options:{weekStartsOn:1,firstWeekContainsDate:4}}
|
|
export{je as A,N as T,ia as f,ua as z}
|