@robot-admin/naive-ui-components 0.13.2 → 0.13.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +20 -0
- package/dist/C_ActionBar.css +75 -63
- package/dist/C_ActionBar2.cjs +1 -1
- package/dist/C_ActionBar2.js +1 -1
- package/dist/C_AntV.css +249 -79
- package/dist/C_AntV2.cjs +3 -3
- package/dist/C_AntV2.js +2 -2
- package/dist/C_AudioPlayer.css +88 -76
- package/dist/C_AudioPlayer2.cjs +1 -1
- package/dist/C_AudioPlayer2.js +1 -1
- package/dist/C_AvatarGroup.css +32 -28
- package/dist/C_AvatarGroup2.cjs +1 -1
- package/dist/C_AvatarGroup2.js +1 -1
- package/dist/C_Breadcrumb.css +35 -17
- package/dist/C_Breadcrumb2.cjs +1 -1
- package/dist/C_Breadcrumb2.js +1 -1
- package/dist/C_Captcha.css +66 -53
- package/dist/C_Captcha2.cjs +1 -1
- package/dist/C_Captcha2.js +1 -1
- package/dist/C_Cascade.css +6 -2
- package/dist/C_Cascade2.cjs +1 -1
- package/dist/C_Cascade2.js +1 -1
- package/dist/C_Chat.css +40 -33
- package/dist/C_City.css +37 -32
- package/dist/C_City2.cjs +1 -1
- package/dist/C_City2.js +1 -1
- package/dist/C_Code.css +53 -40
- package/dist/C_Code2.cjs +1 -1
- package/dist/C_Code2.js +1 -1
- package/dist/C_CollapsePanel.css +68 -55
- package/dist/C_CollapsePanel2.cjs +1 -1
- package/dist/C_CollapsePanel2.js +1 -1
- package/dist/C_ContextMenu.css +68 -26
- package/dist/C_ContextMenu2.cjs +1 -1
- package/dist/C_ContextMenu2.js +1 -1
- package/dist/C_Cron.css +95 -68
- package/dist/C_Cron2.cjs +1 -1
- package/dist/C_Cron2.js +1 -1
- package/dist/C_Date.css +8 -1
- package/dist/C_Date2.cjs +1 -1
- package/dist/C_Date2.js +1 -1
- package/dist/C_Draggable.css +60 -51
- package/dist/C_Draggable2.cjs +1 -1
- package/dist/C_Draggable2.js +1 -1
- package/dist/C_Editor.css +23 -15
- package/dist/C_Editor2.cjs +1 -1
- package/dist/C_Editor2.js +1 -1
- package/dist/C_FilePreview.css +200 -90
- package/dist/C_FilePreview2.cjs +1 -1
- package/dist/C_FilePreview2.js +1 -1
- package/dist/C_Form.base.css +284 -224
- package/dist/C_Form.css +307 -239
- package/dist/C_Form2.cjs +1 -1
- package/dist/C_Form2.js +1 -1
- package/dist/C_FormModal.css +18 -8
- package/dist/C_FormModal2.cjs +1 -1
- package/dist/C_FormModal2.js +1 -1
- package/dist/C_FormSearch.css +58 -45
- package/dist/C_FormSearch2.cjs +1 -1
- package/dist/C_FormSearch2.js +1 -1
- package/dist/C_FormulaEditor.css +62 -37
- package/dist/C_FormulaEditor2.cjs +1 -1
- package/dist/C_FormulaEditor2.js +1 -1
- package/dist/C_FullCalendar.css +16 -3
- package/dist/C_FullCalendar2.cjs +1 -1
- package/dist/C_FullCalendar2.js +1 -1
- package/dist/C_GlobalSearch.css +121 -112
- package/dist/C_GlobalSearch2.cjs +1 -1
- package/dist/C_GlobalSearch2.js +1 -1
- package/dist/C_Guide.css +30 -18
- package/dist/C_Guide2.cjs +1 -1
- package/dist/C_Guide2.js +1 -1
- package/dist/C_Icon.css +24 -17
- package/dist/C_Icon2.cjs +1 -1
- package/dist/C_Icon2.js +1 -1
- package/dist/C_ImageCropper.css +39 -22
- package/dist/C_ImageCropper2.cjs +1 -1
- package/dist/C_ImageCropper2.js +1 -1
- package/dist/C_Language.css +30 -17
- package/dist/C_Language2.cjs +1 -1
- package/dist/C_Language2.js +1 -1
- package/dist/C_Login.css +162 -137
- package/dist/C_Login2.cjs +1 -1
- package/dist/C_Login2.js +1 -1
- package/dist/C_Map.css +25 -4
- package/dist/C_Map2.cjs +1 -1
- package/dist/C_Map2.js +1 -1
- package/dist/C_Markdown.css +47 -42
- package/dist/C_Markdown2.cjs +1 -1
- package/dist/C_Markdown2.js +1 -1
- package/dist/C_Menu.css +7 -1
- package/dist/C_Menu2.cjs +1 -1
- package/dist/C_Menu2.js +1 -1
- package/dist/C_NotificationCenter.css +134 -90
- package/dist/C_NotificationCenter2.cjs +1 -1
- package/dist/C_NotificationCenter2.js +1 -1
- package/dist/C_OrgChart.css +10 -0
- package/dist/C_OrgChart2.cjs +1 -1
- package/dist/C_OrgChart2.js +1 -1
- package/dist/C_QRCode.css +12 -8
- package/dist/C_QRCode2.cjs +1 -1
- package/dist/C_QRCode2.js +1 -1
- package/dist/C_Signature.css +18 -14
- package/dist/C_Signature2.cjs +1 -1
- package/dist/C_Signature2.js +1 -1
- package/dist/C_Skeleton.css +5 -0
- package/dist/C_Skeleton2.cjs +1 -1
- package/dist/C_Skeleton2.js +1 -1
- package/dist/C_SplitPane.css +61 -39
- package/dist/C_SplitPane2.cjs +1 -1
- package/dist/C_SplitPane2.js +1 -1
- package/dist/C_Steps.css +42 -38
- package/dist/C_Steps2.cjs +1 -1
- package/dist/C_Steps2.js +1 -1
- package/dist/C_Table.base.css +465 -352
- package/dist/C_Table.css +488 -367
- package/dist/C_TagsView.css +93 -55
- package/dist/C_TagsView2.cjs +1 -1
- package/dist/C_TagsView2.js +1 -1
- package/dist/C_Theme.css +24 -17
- package/dist/C_Timeline.css +47 -36
- package/dist/C_Transfer.css +86 -67
- package/dist/C_Transfer2.cjs +1 -1
- package/dist/C_Transfer2.js +1 -1
- package/dist/C_Tree.css +48 -33
- package/dist/C_Tree2.cjs +1 -1
- package/dist/C_Tree2.js +1 -1
- package/dist/C_Upload.css +104 -51
- package/dist/C_Upload2.cjs +1 -1
- package/dist/C_Upload2.js +1 -1
- package/dist/C_VideoPlayer.css +140 -69
- package/dist/C_VideoPlayer2.cjs +1 -1
- package/dist/C_VideoPlayer2.js +1 -1
- package/dist/C_VtableGantt.css +42 -19
- package/dist/C_VtableGantt2.cjs +1 -1
- package/dist/C_VtableGantt2.js +1 -1
- package/dist/C_WaterFall.css +32 -16
- package/dist/C_WaterFall2.cjs +1 -1
- package/dist/C_WaterFall2.js +1 -1
- package/dist/C_WorkFlow.css +332 -221
- package/dist/C_WorkFlow2.cjs +1 -1
- package/dist/C_WorkFlow2.js +1 -1
- package/dist/constants.d.cts +5 -5
- package/dist/constants.d.ts +5 -5
- package/dist/constants2.d.cts +5 -5
- package/dist/constants2.d.ts +5 -5
- package/dist/constants3.d.cts +3 -3
- package/dist/constants3.d.ts +3 -3
- package/dist/constants4.d.cts +6 -6
- package/dist/constants4.d.ts +6 -6
- package/dist/data.d.cts +9 -9
- package/dist/data.d.ts +9 -9
- package/dist/data2.cjs +1 -1
- package/dist/data2.js +1 -1
- package/dist/index.vue.d.cts +5 -5
- package/dist/index.vue.d.ts +5 -5
- package/dist/index10.vue.d.cts +2 -2
- package/dist/index10.vue.d.ts +3 -3
- package/dist/index11.vue.d.cts +3 -3
- package/dist/index11.vue.d.ts +6 -6
- package/dist/index12.vue.d.cts +6 -6
- package/dist/index13.vue.d.ts +3 -3
- package/dist/index14.vue.d.cts +3 -3
- package/dist/index14.vue.d.ts +16 -14
- package/dist/index15.vue.d.cts +16 -14
- package/dist/index15.vue.d.ts +3 -3
- package/dist/index16.vue.d.cts +3 -3
- package/dist/index16.vue.d.ts +1 -1
- package/dist/index17.vue.d.cts +1 -1
- package/dist/index17.vue.d.ts +6 -6
- package/dist/index18.vue.d.cts +6 -6
- package/dist/index19.vue.d.cts +1 -1
- package/dist/index19.vue.d.ts +1 -1
- package/dist/index2.vue.d.cts +2 -2
- package/dist/index2.vue.d.ts +2 -2
- package/dist/index20.vue.d.cts +1 -1
- package/dist/index20.vue.d.ts +1 -1
- package/dist/index22.vue.d.cts +1 -1
- package/dist/index22.vue.d.ts +1 -1
- package/dist/index24.vue.d.cts +4 -4
- package/dist/index24.vue.d.ts +4 -4
- package/dist/index26.vue.d.cts +4 -4
- package/dist/index26.vue.d.ts +4 -4
- package/dist/index27.vue.d.cts +4 -4
- package/dist/index27.vue.d.ts +4 -4
- package/dist/index3.vue.d.cts +5 -5
- package/dist/index3.vue.d.ts +5 -5
- package/dist/index5.vue.d.ts +2 -2
- package/dist/index6.vue.d.cts +2 -2
- package/dist/index6.vue.d.ts +2 -2
- package/dist/index7.vue.d.cts +2 -2
- package/dist/index7.vue.d.ts +2 -2
- package/dist/index8.vue.d.cts +2 -2
- package/dist/index8.vue.d.ts +1 -1
- package/dist/index9.vue.d.cts +1 -1
- package/dist/index9.vue.d.ts +2 -2
- package/dist/mapUtils.d.cts +2 -2
- package/dist/mapUtils.d.ts +2 -2
- package/dist/presets.d.cts +1 -1
- package/dist/presets.d.ts +1 -1
- package/dist/style.css +3083 -1982
- package/dist/useCalendarEvents.d.cts +1 -1
- package/dist/useCalendarEvents.d.ts +1 -1
- package/dist/useCollapsePanel.d.cts +2 -2
- package/dist/useCollapsePanel.d.ts +2 -2
- package/dist/useCropperCore.d.cts +5 -5
- package/dist/useCropperCore.d.ts +5 -5
- package/dist/useDraggableLayout.d.cts +5 -5
- package/dist/useDraggableLayout.d.ts +5 -5
- package/dist/useDynamicFormState.d.cts +2 -2
- package/dist/useDynamicFormState.d.ts +2 -2
- package/dist/useEdgeInteraction.d.cts +2 -2
- package/dist/useEdgeInteraction.d.ts +2 -2
- package/dist/useFullscreen.d.cts +2 -2
- package/dist/useFullscreen.d.ts +2 -2
- package/dist/useQRCode.d.cts +5 -5
- package/dist/useQRCode.d.ts +5 -5
- package/dist/useSearchState.d.cts +27 -27
- package/dist/useSearchState.d.ts +27 -27
- package/dist/useSignatureHistory.d.cts +6 -6
- package/dist/useSignatureHistory.d.ts +6 -6
- package/dist/useSplitResize.d.cts +8 -8
- package/dist/useSplitResize.d.ts +8 -8
- package/dist/useTableQuery.cjs +1 -1
- package/dist/useTableQuery.js +1 -1
- package/dist/useTimeSelection.d.cts +5 -5
- package/dist/useTimeSelection.d.ts +5 -5
- package/dist/useTreeOperations.d.cts +5 -5
- package/dist/useTreeOperations.d.ts +5 -5
- package/dist/useWorkflowValidation.d.cts +7 -7
- package/dist/useWorkflowValidation.d.ts +7 -7
- package/dist/verification.d.cts +3 -3
- package/dist/verification.d.ts +3 -3
- package/package.json +8 -1
package/dist/C_Upload2.cjs
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
const e=require(`./chunk.cjs`),t=require(`./C_Icon2.cjs`),n=require(`./export-helper.cjs`);let r=require(`vue`),i=require(`naive-ui`),a=require(`spark-md5`);a=e.t(a);const o=2*1024*1024,s={pending:`等待上传`,validating:`校验文件…`,hashing:`计算校验…`,uploading:`上传中…`,success:`上传成功`,error:`上传失败`,paused:`已暂停`,instant:`秒传成功`},c={pending:`default`,validating:`info`,hashing:`info`,uploading:`info`,success:`success`,error:`error`,paused:`warning`,instant:`success`},l={"image/":`mdi:file-image-outline`,"video/":`mdi:file-video-outline`,"audio/":`mdi:file-music-outline`,"application/pdf":`mdi:file-pdf-box`,"application/zip":`mdi:folder-zip-outline`,"application/x-rar":`mdi:folder-zip-outline`,"application/vnd.ms-excel":`mdi:file-excel-outline`,"application/vnd.openxmlformats-officedocument.spreadsheetml":`mdi:file-excel-outline`,"application/msword":`mdi:file-word-outline`,"application/vnd.openxmlformats-officedocument.wordprocessingml":`mdi:file-word-outline`,"text/":`mdi:file-document-outline`,default:`mdi:file-outline`};function u(e){for(let[t,n]of Object.entries(l))if(t!==`default`&&e.startsWith(t))return n;return l.default}function d(e){if(e===0)return`0 B`;let t=[`B`,`KB`,`MB`,`GB`,`TB`],n=Math.floor(Math.log(e)/Math.log(1024));return`${(e/1024**n).toFixed(n>0?1:0)} ${t[n]}`}const f=()=>new Promise(e=>{typeof requestAnimationFrame==`function`?requestAnimationFrame(()=>e()):setTimeout(e,0)});function p(e){let t=(0,r.ref)(0),n=(0,r.ref)(0),i=(0,r.computed)(()=>t.value>0);async function o(r,i){t.value+=1,n.value=0,i?.(0);let o=new a.default.ArrayBuffer,s=Math.max(1,Math.trunc(Number(e.value)||1)),c=Math.max(1,Math.ceil(r.size/s));try{if(r.size===0)return o.append(new ArrayBuffer(0)),n.value=100,i?.(100),o.end();for(let e=0;e<c;e+=1){let t=e*s,a=await r.slice(t,t+s).arrayBuffer();o.append(a),n.value=Math.round((e+1)/c*100),i?.(n.value),await f()}return o.end()}finally{t.value=Math.max(0,t.value-1)}}return{hashing:i,hashProgress:(0,r.readonly)(n),calculateHash:o}}function m(e){let t=new Map,n=new Map;function r(t){let n=Math.max(1,Math.trunc(Number(e.chunkSize.value)||1)),r=[],i=0,a=0;for(;a<t.size;){let e=Math.min(a+n,t.size);r.push({index:i,blob:t.slice(a,e),size:e-a,uploaded:!1}),a=e,i++}return r}async function i(t,n){if(e.uploadedChunksQuery?.value)try{let r=await e.uploadedChunksQuery.value(t);for(let e of r){let t=n[e];t&&(t.uploaded=!0)}}catch{}}function a(t){return new Promise((n,r)=>{let i=!1,a=()=>{i||(i=!0,n())},o=e=>{i||(i=!0,t.setError(),r(e instanceof Error?e:Error(String(e))))},s={action:e.action.value,headers:e.headers.value,data:{...e.data.value,hash:t.hash,chunkIndex:t.chunk.index,totalChunks:t.totalChunks,filename:t.file.name},file:t.chunk.blob,filename:t.file.name,hash:t.hash,chunkIndex:t.chunk.index,totalChunks:t.totalChunks,onProgress:()=>{},onSuccess:()=>{if(!i){if(t.isCancelled()){a();return}t.chunk.uploaded=!0,t.setUploadedBytes(t.chunk.size),t.onProgress({uploadedChunks:t.chunks.filter(e=>e.uploaded).length,totalChunks:t.totalChunks,uploadedBytes:t.chunks.filter(e=>e.uploaded).reduce((e,t)=>e+t.size,0),totalBytes:t.totalBytes}),a()}},onError:o};try{let n=e.customRequest?.value?e.customRequest.value(s):h(s);t.abortControllers.push(()=>{try{n.abort()}catch{}finally{a()}})}catch(e){o(e)}})}async function o(o){let{uid:c,file:l,hash:u,onProgress:d,onSuccess:f,onError:p,isPaused:m}=o,h=Symbol(c);n.set(c,h);let g=()=>n.get(c)!==h,_=()=>{g()||n.delete(c)},v=r(l),y=v.length,b=l.size,x=0;if(await i(u,v),g()||m()){_();return}x=v.filter(e=>e.uploaded).reduce((e,t)=>e+t.size,0),d({uploadedChunks:v.filter(e=>e.uploaded).length,totalChunks:y,uploadedBytes:x,totalBytes:b});let S=v.filter(e=>!e.uploaded);if(S.length===0){try{g()||await s(u,l.name,y,f,p,g)}finally{_()}return}let C=[];t.set(c,C);let w=Math.max(1,Math.trunc(Number(e.concurrency.value)||1)),T=0,E=!1;async function D(){for(;T<S.length&&!E&&!m()&&!g();){let e=S[T++];await a({chunk:e,hash:u,file:l,totalChunks:y,chunks:v,totalBytes:b,abortControllers:C,onProgress:e=>{g()||d(e)},setUploadedBytes:e=>{x+=e},setError:()=>{E=!0},isCancelled:g})}}let O=Array.from({length:Math.min(w,S.length)},()=>D());try{let e=(await Promise.allSettled(O)).find(e=>e.status===`rejected`);e&&!g()?p(e.reason instanceof Error?e.reason:Error(String(e.reason))):!E&&!m()&&!g()&&await s(u,l.name,y,f,p,g)}finally{g()||t.delete(c),_()}}async function s(t,n,r,i,a,o){if(e.mergeChunks?.value)try{let a=await e.mergeChunks.value(t,n,r);o()||i(a)}catch(e){o()||a(e instanceof Error?e:Error(`分片合并失败`))}else o()||i({message:`分片上传完成(未配置合并函数)`})}function c(e){n.delete(e),t.get(e)?.forEach(e=>e()),t.delete(e)}function l(){n.clear(),t.forEach(e=>{e.forEach(e=>e())}),t.clear()}return{createChunks:r,uploadChunks:o,abortUpload:c,abortAll:l}}function h(e){let t=new XMLHttpRequest;t.open(`POST`,e.action),e.headers&&Object.entries(e.headers).forEach(([e,n])=>{t.setRequestHeader(e,n)}),t.upload.addEventListener(`progress`,t=>{t.lengthComputable&&e.onProgress?.(Math.round(t.loaded/t.total*100))}),t.addEventListener(`load`,()=>{if(t.status>=200&&t.status<300){let n;try{n=JSON.parse(t.responseText)}catch{n=t.responseText}e.onSuccess?.(n)}else e.onError?.(Error(`上传失败: HTTP ${t.status}`))}),t.addEventListener(`error`,()=>{e.onError?.(Error(`网络错误`))}),t.addEventListener(`abort`,()=>{e.onError?.(new DOMException(`上传已取消`,`AbortError`))});let n=new FormData;return n.append(`file`,e.file,e.filename),e.data&&Object.entries(e.data).forEach(([e,t])=>{n.append(e,String(t))}),t.send(n),{abort:()=>t.abort()}}function g(e){return e instanceof Error?e:Error(String(e))}function _(e){let t=[],n=(0,r.ref)(0),i=new Map,a=()=>{n.value=i.size},o=()=>Math.max(1,Math.trunc(Number(e.concurrency.value)||1));function s(){for(;i.size<o()&&t.length>0;){let n=t.shift(),{file:r}=n;if(!r.raw||i.has(r.uid))continue;let o=!1,c=e=>{o||(o=!0,i.delete(r.uid),a(),e?.error?n.onError(r.uid,e.error):e&&`response`in e&&n.onSuccess(r.uid,e.response),s())},l={action:e.action.value,headers:e.headers.value,data:e.data.value,file:r.raw,filename:r.name,onProgress:e=>n.onProgress(r.uid,e),onSuccess:e=>c({response:e}),onError:e=>c({error:e})};i.set(r.uid,{abort:()=>void 0,settle:c}),a();try{let t=e.customRequest?.value?e.customRequest.value(l):v(l),n=i.get(r.uid);n&&(n.abort=t.abort)}catch(e){c({error:g(e)})}}}function c(e,n,r,i){l(e.uid),t.push({file:e,onProgress:n,onSuccess:r,onError:i}),s()}function l(e){for(let n=t.length-1;n>=0;--n)t[n].file.uid===e&&t.splice(n,1);let n=i.get(e);if(n){n.settle();try{n.abort()}catch{}}}function u(){t.length=0;let e=[...i.values()];i.clear(),a(),e.forEach(e=>{e.settle();try{e.abort()}catch{}})}return(0,r.watch)(e.concurrency,s),{activeCount:(0,r.readonly)(n),enqueue:c,abort:l,abortAll:u}}function v(e){let t=new XMLHttpRequest;t.open(`POST`,e.action),Object.entries(e.headers??{}).forEach(([e,n])=>{t.setRequestHeader(e,n)}),t.upload.addEventListener(`progress`,t=>{t.lengthComputable&&e.onProgress?.(Math.round(t.loaded/t.total*100))}),t.addEventListener(`load`,()=>{if(t.status>=200&&t.status<300){let n=t.responseText;try{n=JSON.parse(t.responseText)}catch{}e.onSuccess?.(n)}else e.onError?.(Error(`上传失败: HTTP ${t.status}`))}),t.addEventListener(`error`,()=>e.onError?.(Error(`网络错误`)));let n=new FormData;return n.append(`file`,e.file,e.filename),Object.entries(e.data??{}).forEach(([e,t])=>{n.append(e,String(t))}),t.send(n),{abort:()=>t.abort()}}function y(e){let t=(0,r.computed)(()=>e.action??``),n=(0,r.computed)(()=>e.headers??{}),i=(0,r.computed)(()=>e.data??{}),a=(0,r.computed)(()=>{let t=Math.trunc(Number(e.chunkSize));return Number.isFinite(t)&&t>0?t:o}),s=(0,r.computed)(()=>{let t=Math.trunc(Number(e.concurrency));return Number.isFinite(t)&&t>0?t:3}),c=(0,r.computed)(()=>e.customRequest),l=(0,r.computed)(()=>e.instantCheck),u=(0,r.computed)(()=>e.uploadedChunksQuery),d=(0,r.computed)(()=>e.mergeChunks),f=(0,r.ref)((e.defaultFileList??[]).map(e=>({...e}))),h=(0,r.reactive)(new Set),g=new Map,v=new Set,{hashing:y,hashProgress:b,calculateHash:x}=p(a),S=m({chunkSize:a,concurrency:s,action:t,headers:n,data:i,customRequest:c,uploadedChunksQuery:u,mergeChunks:d}),C=_({concurrency:s,action:t,headers:n,data:i,customRequest:c}),w=(0,r.computed)(()=>{let e=f.value;if(e.length===0)return 0;let t=e.reduce((e,t)=>e+t.percent,0);return Math.round(t/e.length)});function T(){return typeof crypto<`u`&&`randomUUID`in crypto?`upload-${crypto.randomUUID()}`:`upload-${Date.now()}-${Math.random().toString(36).slice(2,10)}`}function E(e){if(e.type.startsWith(`image/`)){let t=URL.createObjectURL(e);return v.add(t),t}}function D(t){let n=[];for(let r of t){if(Number.isFinite(e.maxCount)&&(e.maxCount??0)>0&&f.value.length+n.length>=Math.trunc(e.maxCount))break;let t={uid:T(),name:r.name,size:r.size,type:r.type,status:`pending`,percent:0,raw:r,thumbUrl:E(r)};n.push(t)}return f.value.push(...n),n}function O(e,t){let n=f.value.find(t=>t.uid===e);n&&Object.assign(n,t)}function k(e){g.set(e,Symbol(e)),S.abortUpload(e),C.abort(e),h.delete(e);let t=f.value.findIndex(t=>t.uid===e);if(t!==-1){let e=f.value[t];M(e.thumbUrl),f.value.splice(t,1)}}function A(){S.abortAll(),C.abortAll(),h.clear(),f.value.forEach(e=>{M(e.thumbUrl)}),f.value=[],g.clear()}async function j(t){if((e.maxSize??0)>0&&t.size>e.maxSize)return null;if(e.beforeUpload){let n=await e.beforeUpload(t);if(n===!1)return null;if(n instanceof File)return(e.maxSize??0)>0&&n.size>e.maxSize?null:n}return t}function M(e){!e||!v.has(e)||(URL.revokeObjectURL(e),v.delete(e))}function N(e,t){return g.get(e)===t&&!h.has(e)&&f.value.some(t=>t.uid===e)}function P(e,t){return x(e.raw,n=>{N(e.uid,t)&&O(e.uid,{percent:n})})}async function F(n){if(!n.raw)return;let r=Symbol(n.uid);g.set(n.uid,r),O(n.uid,{status:`validating`,error:void 0});let i;try{i=await j(n.raw)}catch(e){N(n.uid,r)&&O(n.uid,{status:`error`,error:e instanceof Error?e.message:`文件校验失败`});return}if(N(n.uid,r)){if(!i){O(n.uid,{status:`error`,error:`文件校验未通过`});return}if(i!==n.raw&&(M(n.thumbUrl),Object.assign(n,{raw:i,name:i.name,size:i.size,type:i.type,hash:void 0,chunkProgress:void 0,thumbUrl:E(i)})),!c.value&&!t.value.trim()){O(n.uid,{status:`error`,error:`未配置上传地址`});return}if(l.value&&!n.hash){O(n.uid,{status:`hashing`});try{let e=await P(n,r);if(!N(n.uid,r))return;O(n.uid,{hash:e});let t=await l.value(e,n.raw.name);if(!N(n.uid,r))return;if(t.exists){O(n.uid,{status:`instant`,percent:100,url:t.url});return}}catch{if(!N(n.uid,r))return}}e.chunked&&n.raw.size>a.value?await I(n,r):L(n,r)}}async function I(e,t){let n=e.raw,{hash:r}=e;if(!r){O(e.uid,{status:`hashing`});try{if(r=await P(e,t),!N(e.uid,t))return;O(e.uid,{hash:r})}catch{N(e.uid,t)&&O(e.uid,{status:`error`,error:`Hash 计算失败`});return}}O(e.uid,{status:`uploading`,percent:0}),await S.uploadChunks({uid:e.uid,file:n,hash:r,onProgress:n=>{if(!N(e.uid,t))return;let r=Math.round(n.uploadedBytes/n.totalBytes*100);O(e.uid,{percent:r,chunkProgress:n})},onSuccess:n=>{N(e.uid,t)&&O(e.uid,{status:`success`,percent:100,response:n})},onError:n=>{N(e.uid,t)&&O(e.uid,{status:`error`,error:n.message})},isPaused:()=>h.has(e.uid)})}function L(e,t){O(e.uid,{status:`uploading`,percent:0}),C.enqueue(e,(e,n)=>{N(e,t)&&O(e,{percent:n})},(e,n)=>{N(e,t)&&O(e,{status:`success`,percent:100,response:n})},(e,n)=>{N(e,t)&&O(e,{status:`error`,error:n.message})})}function R(){f.value.filter(e=>e.status===`pending`).forEach(e=>void F(e))}function z(){f.value.forEach(e=>{(e.status===`uploading`||e.status===`hashing`||e.status===`validating`)&&(h.add(e.uid),g.set(e.uid,Symbol(e.uid)),S.abortUpload(e.uid),C.abort(e.uid),O(e.uid,{status:`paused`}))})}function B(){f.value.forEach(e=>{e.status===`paused`&&(h.delete(e.uid),O(e.uid,{status:`pending`}))}),R()}function V(e){let t=f.value.find(t=>t.uid===e);t&&t.status===`error`&&(O(e,{status:`pending`,percent:0,error:void 0}),F(t))}function H(){return f.value.filter(e=>e.status===`success`||e.status===`instant`)}return(0,r.onBeforeUnmount)(()=>{S.abortAll(),C.abortAll(),g.clear(),f.value.forEach(e=>{M(e.thumbUrl)})}),{fileList:f,totalPercent:w,hashing:y,hashProgress:b,addFiles:D,removeFile:k,clearAll:A,startUpload:R,pauseAll:z,resumeAll:B,retryFile:V,processFile:F,getSuccessList:H}}function b(e,t,n,i,a){let o=(0,r.ref)(!1),s=null,c=!1;function l(e){t.value&&(e.preventDefault(),o.value=!0)}function u(e){t.value&&(e.preventDefault(),o.value=!0)}function d(n){if(!t.value)return;n.preventDefault();let r=e.value;r&&!r.contains(n.relatedTarget)&&(o.value=!1)}async function f(e){if(!t.value)return;e.preventDefault(),o.value=!1;let n=e.dataTransfer?.items;if(!n)return;let r=await x(n,e.dataTransfer);if(c||!t.value)return;let s=C(r,i.value);s.length>0&&a(s)}function p(e){if(!n.value)return;let t=e.clipboardData?.items;if(!t)return;let r=[];for(let e=0;e<t.length;e++){let n=t[e];if(n.kind===`file`){let e=n.getAsFile();e&&r.push(e)}}let o=C(r,i.value);o.length>0&&(e.preventDefault(),a(o))}function m(){let t=e.value;!t||s===t||(s=t,t.addEventListener(`dragenter`,l),t.addEventListener(`dragover`,u),t.addEventListener(`dragleave`,d),t.addEventListener(`drop`,f),n.value&&t.addEventListener(`paste`,p))}function h(){let e=s;e&&(e.removeEventListener(`dragenter`,l),e.removeEventListener(`dragover`,u),e.removeEventListener(`dragleave`,d),e.removeEventListener(`drop`,f)),e?.removeEventListener(`paste`,p),s=null}return(0,r.onMounted)(()=>{c=!1,m()}),(0,r.onBeforeUnmount)(()=>{c=!0,h()}),(0,r.watch)([e,t,n],()=>{h(),m()}),{isDragOver:(0,r.readonly)(o)}}async function x(e,t){let n=[];for(let t=0;t<e.length;t++){let r=e[t].webkitGetAsEntry?.();r&&n.push(r)}if(n.length>0)return(await Promise.all(n.map(S))).flat();let r=[],i=t?.files;if(i)for(let e=0;e<i.length;e++)r.push(i[e]);return r}async function S(e){if(e.isFile)return new Promise(t=>{e.file(e=>t([e]),()=>t([]))});if(e.isDirectory){let t=e.createReader(),n=[];for(;;){let e=await new Promise(e=>{t.readEntries(t=>e(t),()=>e([]))});if(e.length===0)break;n.push(...e)}return(await Promise.all(n.map(S))).flat()}return[]}function C(e,t){if(!t)return e;let n=t.split(`,`).map(e=>e.trim().toLowerCase()).filter(Boolean);return n.length===0?e:e.filter(e=>n.some(t=>{if(t.startsWith(`.`))return e.name.toLowerCase().endsWith(t);if(t.endsWith(`/*`)){let n=t.replace(`/*`,``);return e.type.toLowerCase().startsWith(`${n}/`)}return e.type.toLowerCase()===t}))}const w=[`tabindex`,`aria-disabled`,`onKeydown`],T=[`accept`,`multiple`,`webkitdirectory`,`disabled`],E={class:`upload-area__default`},D={class:`upload-area__text`},O={key:0},k={key:1},A={key:0,class:`upload-area__tip`},j=(0,r.defineComponent)({__name:`UploadArea`,props:{accept:{default:``},multiple:{type:Boolean,default:!1},directory:{type:Boolean,default:!1},disabled:{type:Boolean,default:!1},draggable:{type:Boolean,default:!0},pasteable:{type:Boolean,default:!1},tip:{default:``}},emits:[`files`],setup(e,{expose:n,emit:i}){let a=e,o=i,s=(0,r.ref)(),c=(0,r.ref)(),{isDragOver:l}=b(s,(0,r.computed)(()=>a.draggable&&!a.disabled),(0,r.computed)(()=>a.pasteable&&!a.disabled),(0,r.computed)(()=>a.accept),e=>o(`files`,e));function u(){a.disabled||c.value?.click()}function d(e){let t=e.target,n=a.disabled?[]:C(Array.from(t.files??[]),a.accept);n.length>0&&o(`files`,n),t.value=``}return n({triggerSelect:u}),(n,i)=>((0,r.openBlock)(),(0,r.createElementBlock)(`div`,{ref_key:`areaRef`,ref:s,class:(0,r.normalizeClass)([`upload-area`,{"upload-area--drag-over":(0,r.unref)(l),"upload-area--disabled":e.disabled}]),role:`button`,tabindex:e.disabled?-1:0,"aria-disabled":e.disabled,onClick:u,onKeydown:[(0,r.withKeys)((0,r.withModifiers)(u,[`prevent`]),[`enter`]),(0,r.withKeys)((0,r.withModifiers)(u,[`prevent`]),[`space`])]},[(0,r.createElementVNode)(`input`,{ref_key:`inputRef`,ref:c,type:`file`,class:`upload-area__input`,accept:e.accept,multiple:e.multiple,webkitdirectory:e.directory||void 0,disabled:e.disabled,onClick:i[0]||=(0,r.withModifiers)(()=>{},[`stop`]),onChange:d},null,40,T),(0,r.renderSlot)(n.$slots,`default`,{},()=>[(0,r.createElementVNode)(`div`,E,[(0,r.createVNode)(t.t,{name:(0,r.unref)(l)?`mdi:cloud-download-outline`:`mdi:cloud-upload-outline`,class:`upload-area__icon`},null,8,[`name`]),(0,r.createElementVNode)(`div`,D,[(0,r.unref)(l)?((0,r.openBlock)(),(0,r.createElementBlock)(`span`,O,`释放文件到此处`)):((0,r.openBlock)(),(0,r.createElementBlock)(`span`,k,[i[4]||=(0,r.createTextVNode)(` 点击或拖拽文件到此区域上传 `,-1),e.pasteable?((0,r.openBlock)(),(0,r.createElementBlock)(r.Fragment,{key:0},[i[1]||=(0,r.createTextVNode)(` ,支持 `,-1),i[2]||=(0,r.createElementVNode)(`kbd`,null,`Ctrl+V`,-1),i[3]||=(0,r.createTextVNode)(` 粘贴 `,-1)],64)):(0,r.createCommentVNode)(`v-if`,!0)]))]),e.tip?((0,r.openBlock)(),(0,r.createElementBlock)(`div`,A,(0,r.toDisplayString)(e.tip),1)):(0,r.createCommentVNode)(`v-if`,!0)])],!0)],42,w))}});var M=n.t(j,[[`__scopeId`,`data-v-f0ba26e3`]]);const N={class:`file-list__thumb`},P=[`src`,`alt`],F={class:`file-list__info`},I={class:`file-list__name`},L={class:`file-list__meta`},R={class:`file-list__size`},z={key:0,class:`file-list__instant`},B={key:1,class:`file-list__chunk-info`},V={key:2,class:`file-list__error`},H={class:`file-list__actions`},U=(0,r.defineComponent)({__name:`FileList`,props:{fileList:{},showThumbnail:{type:Boolean}},emits:[`remove`,`retry`],setup(e,{emit:n}){let a=n;return(n,o)=>((0,r.openBlock)(),(0,r.createBlock)(r.TransitionGroup,{name:`file-list`,tag:`div`,class:`file-list`},{default:(0,r.withCtx)(()=>[((0,r.openBlock)(!0),(0,r.createElementBlock)(r.Fragment,null,(0,r.renderList)(e.fileList,n=>((0,r.openBlock)(),(0,r.createElementBlock)(`div`,{key:n.uid,class:(0,r.normalizeClass)([`file-list__item`,`file-list__item--${n.status}`])},[(0,r.createCommentVNode)(` 缩略图 / 图标 `),(0,r.createElementVNode)(`div`,N,[e.showThumbnail&&n.thumbUrl?((0,r.openBlock)(),(0,r.createElementBlock)(`img`,{key:0,src:n.thumbUrl,alt:n.name,class:`file-list__thumb-img`},null,8,P)):((0,r.openBlock)(),(0,r.createBlock)(t.t,{key:1,name:(0,r.unref)(u)(n.type),class:`file-list__thumb-icon`},null,8,[`name`]))]),(0,r.createCommentVNode)(` 文件信息 `),(0,r.createElementVNode)(`div`,F,[(0,r.createElementVNode)(`div`,I,[(0,r.createVNode)((0,r.unref)(i.NEllipsis),{"line-clamp":1},{default:(0,r.withCtx)(()=>[(0,r.createTextVNode)((0,r.toDisplayString)(n.name),1)]),_:2},1024)]),(0,r.createElementVNode)(`div`,L,[(0,r.createElementVNode)(`span`,R,(0,r.toDisplayString)((0,r.unref)(d)(n.size)),1),(0,r.createVNode)((0,r.unref)(i.NTag),{type:(0,r.unref)(c)[n.status]||`default`,size:`tiny`,bordered:!1},{default:(0,r.withCtx)(()=>[(0,r.createTextVNode)((0,r.toDisplayString)((0,r.unref)(s)[n.status]||n.status),1)]),_:2},1032,[`type`]),n.status===`instant`?((0,r.openBlock)(),(0,r.createElementBlock)(`span`,z,` ⚡ `)):(0,r.createCommentVNode)(`v-if`,!0)]),(0,r.createCommentVNode)(` 进度条 `),n.status===`uploading`||n.status===`hashing`?((0,r.openBlock)(),(0,r.createBlock)((0,r.unref)(i.NProgress),{key:0,percentage:n.percent,height:4,"border-radius":2,"show-indicator":!1,status:n.status===`hashing`?`info`:`success`},null,8,[`percentage`,`status`])):(0,r.createCommentVNode)(`v-if`,!0),(0,r.createCommentVNode)(` 分片进度描述 `),n.chunkProgress&&n.status===`uploading`?((0,r.openBlock)(),(0,r.createElementBlock)(`div`,B,` 分片 `+(0,r.toDisplayString)(n.chunkProgress.uploadedChunks)+`/`+(0,r.toDisplayString)(n.chunkProgress.totalChunks),1)):(0,r.createCommentVNode)(`v-if`,!0),(0,r.createCommentVNode)(` 错误信息 `),n.status===`error`&&n.error?((0,r.openBlock)(),(0,r.createElementBlock)(`div`,V,(0,r.toDisplayString)(n.error),1)):(0,r.createCommentVNode)(`v-if`,!0)]),(0,r.createCommentVNode)(` 操作按钮 `),(0,r.createElementVNode)(`div`,H,[n.status===`error`?((0,r.openBlock)(),(0,r.createBlock)((0,r.unref)(i.NButton),{key:0,text:``,type:`warning`,size:`tiny`,"aria-label":`重试上传`,onClick:e=>a(`retry`,n.uid)},{icon:(0,r.withCtx)(()=>[(0,r.createVNode)(t.t,{name:`mdi:refresh`})]),_:1},8,[`onClick`])):(0,r.createCommentVNode)(`v-if`,!0),(0,r.createVNode)((0,r.unref)(i.NButton),{text:``,type:`error`,size:`tiny`,"aria-label":`移除文件`,onClick:e=>a(`remove`,n.uid)},{icon:(0,r.withCtx)(()=>[(0,r.createVNode)(t.t,{name:`mdi:close`})]),_:1},8,[`onClick`])])],2))),128))]),_:1}))}});var W=n.t(U,[[`__scopeId`,`data-v-4cf56679`]]);const G={key:0,class:`image-preview`},K=[`src`,`alt`],q={class:`image-preview__overlay`},J={key:0,class:`image-preview__progress`},Y={class:`image-preview__actions`},X={class:`image-preview__name`},Z=(0,r.defineComponent)({__name:`ImagePreview`,props:{fileList:{}},emits:[`remove`,`retry`],setup(e,{emit:n}){let a=e,o=n,s=(0,r.computed)(()=>a.fileList.filter(e=>e.type?.startsWith(`image/`)));return(e,n)=>s.value.length>0?((0,r.openBlock)(),(0,r.createElementBlock)(`div`,G,[((0,r.openBlock)(!0),(0,r.createElementBlock)(r.Fragment,null,(0,r.renderList)(s.value,e=>((0,r.openBlock)(),(0,r.createElementBlock)(`div`,{key:e.uid,class:(0,r.normalizeClass)([`image-preview__item`,`image-preview__item--${e.status}`])},[e.thumbUrl?((0,r.openBlock)(),(0,r.createElementBlock)(`img`,{key:0,src:e.thumbUrl,alt:e.name,class:`image-preview__img`},null,8,K)):(0,r.createCommentVNode)(`v-if`,!0),(0,r.createCommentVNode)(` 遮罩层 `),(0,r.createElementVNode)(`div`,q,[(0,r.createCommentVNode)(` 上传中进度 `),e.status===`uploading`||e.status===`hashing`?((0,r.openBlock)(),(0,r.createElementBlock)(`div`,J,[(0,r.createVNode)((0,r.unref)(i.NProgress),{type:`circle`,percentage:e.percent,"stroke-width":3,style:{width:`40px`}},null,8,[`percentage`])])):e.status===`success`||e.status===`instant`?((0,r.openBlock)(),(0,r.createElementBlock)(r.Fragment,{key:1},[(0,r.createCommentVNode)(` 状态图标 `),(0,r.createVNode)(t.t,{name:`mdi:check-circle`,class:`image-preview__status-icon image-preview__status-icon--success`})],2112)):e.status===`error`?((0,r.openBlock)(),(0,r.createBlock)(t.t,{key:2,name:`mdi:alert-circle`,class:`image-preview__status-icon image-preview__status-icon--error`})):(0,r.createCommentVNode)(`v-if`,!0),(0,r.createCommentVNode)(` 操作 `),(0,r.createElementVNode)(`div`,Y,[e.status===`error`?((0,r.openBlock)(),(0,r.createBlock)((0,r.unref)(i.NButton),{key:0,circle:``,size:`tiny`,type:`warning`,"aria-label":`重试上传`,onClick:t=>o(`retry`,e.uid)},{icon:(0,r.withCtx)(()=>[(0,r.createVNode)(t.t,{name:`mdi:refresh`})]),_:1},8,[`onClick`])):(0,r.createCommentVNode)(`v-if`,!0),(0,r.createVNode)((0,r.unref)(i.NButton),{circle:``,size:`tiny`,type:`error`,"aria-label":`移除文件`,onClick:t=>o(`remove`,e.uid)},{icon:(0,r.withCtx)(()=>[(0,r.createVNode)(t.t,{name:`mdi:close`})]),_:1},8,[`onClick`])])]),(0,r.createCommentVNode)(` 文件名 `),(0,r.createElementVNode)(`div`,X,[(0,r.createVNode)((0,r.unref)(i.NEllipsis),{"line-clamp":1},{default:(0,r.withCtx)(()=>[(0,r.createTextVNode)((0,r.toDisplayString)(e.name),1)]),_:2},1024)])],2))),128))])):(0,r.createCommentVNode)(`v-if`,!0)}});var Q=n.t(Z,[[`__scopeId`,`data-v-a5f9d244`]]);const $={class:`c-upload`},ee={key:0,class:`c-upload__total-progress`},te={class:`c-upload__total-label`},ne=(0,r.defineComponent)({__name:`index`,props:{action:{default:``},headers:{default:()=>({})},data:{default:()=>({})},multiple:{type:Boolean,default:!1},directory:{type:Boolean,default:!1},accept:{default:``},maxSize:{default:0},maxCount:{default:0},disabled:{type:Boolean,default:!1},draggable:{type:Boolean,default:!0},pasteable:{type:Boolean,default:!1},chunked:{type:Boolean,default:!1},chunkSize:{default:o},concurrency:{default:3},showFileList:{type:Boolean,default:!0},listType:{default:`text`},showThumbnail:{type:Boolean,default:!0},customRequest:{},instantCheck:{},uploadedChunksQuery:{},mergeChunks:{},beforeUpload:{},tip:{default:``},defaultFileList:{default:()=>[]}},emits:[`change`,`success`,`error`,`progress`,`remove`,`finish`,`exceed`],setup(e,{expose:t,emit:n}){let a=e,o=n,s=(0,r.ref)(),{fileList:c,totalPercent:l,addFiles:u,removeFile:d,clearAll:f,startUpload:p,pauseAll:m,resumeAll:h,retryFile:g,processFile:_,getSuccessList:v}=y(a),b=(0,r.computed)(()=>c.value.some(e=>e.status===`uploading`||e.status===`hashing`||e.status===`validating`)),x=e=>({...e}),S=()=>c.value.map(x);function C(e){let t=Math.max(0,Math.trunc(Number(a.maxCount)||0));if(t>0&&c.value.length+e.length>t){o(`exceed`,e,S());let n=t-c.value.length;if(n<=0)return;e=e.slice(0,n)}let n=u(e);o(`change`,S()),n.forEach(e=>void _(e))}function w(e){let t=c.value.find(t=>t.uid===e);t&&(o(`remove`,x(t)),d(e),o(`change`,S()))}function T(e){g(e)}let E=new Map,D=!1;return(0,r.watch)(c,e=>{let t=new Set(e.map(e=>e.uid));E.forEach((e,n)=>{t.has(n)||E.delete(n)}),e.forEach(e=>{let t=E.get(e.uid);t&&t.percent!==e.percent&&o(`progress`,x(e),e.percent),t&&t.status!==e.status&&(e.status===`success`||e.status===`instant`)&&o(`success`,x(e),e.response),t&&t.status!==`error`&&e.status===`error`&&o(`error`,x(e),Error(e.error||`上传失败`)),E.set(e.uid,{status:e.status,percent:e.percent})}),e.length>0&&e.every(e=>e.status===`success`||e.status===`instant`||e.status===`error`)?(D||o(`finish`,S()),D=!0):D=!1},{deep:!0}),t({selectFiles:()=>s.value?.triggerSelect(),startUpload:p,pauseAll:m,resumeAll:h,clearAll:()=>{f(),o(`change`,S())},removeFile:e=>{w(e)},retryFile:g,getFileList:S,getSuccessList:()=>v().map(x),get totalPercent(){return l.value}}),(e,t)=>((0,r.openBlock)(),(0,r.createElementBlock)(`div`,$,[(0,r.createCommentVNode)(` 上传区域 `),(0,r.createVNode)(M,{ref_key:`uploadAreaRef`,ref:s,accept:a.accept,multiple:a.multiple,directory:a.directory,disabled:a.disabled,draggable:a.draggable,pasteable:a.pasteable,tip:a.tip,onFiles:C},{default:(0,r.withCtx)(()=>[(0,r.renderSlot)(e.$slots,`area`,{},void 0,!0)]),_:3},8,[`accept`,`multiple`,`directory`,`disabled`,`draggable`,`pasteable`,`tip`]),(0,r.createCommentVNode)(` 总进度条 `),b.value?((0,r.openBlock)(),(0,r.createElementBlock)(`div`,ee,[(0,r.createElementVNode)(`div`,te,[t[0]||=(0,r.createElementVNode)(`span`,null,`总进度`,-1),(0,r.createElementVNode)(`span`,null,(0,r.toDisplayString)((0,r.unref)(l))+`%`,1)]),(0,r.createVNode)((0,r.unref)(i.NProgress),{percentage:(0,r.unref)(l),height:6,"border-radius":3,"show-indicator":!1,status:`success`},null,8,[`percentage`])])):(0,r.createCommentVNode)(`v-if`,!0),(0,r.createCommentVNode)(` 图片预览模式 `),a.listType===`image`?((0,r.openBlock)(),(0,r.createBlock)(Q,{key:1,"file-list":(0,r.unref)(c),onRemove:w,onRetry:T},null,8,[`file-list`])):a.showFileList&&(0,r.unref)(c).length>0?((0,r.openBlock)(),(0,r.createElementBlock)(r.Fragment,{key:2},[(0,r.createCommentVNode)(` 文件列表模式 `),(0,r.createVNode)(W,{"file-list":(0,r.unref)(c),"show-thumbnail":a.showThumbnail,onRemove:w,onRetry:T},null,8,[`file-list`,`show-thumbnail`])],2112)):(0,r.createCommentVNode)(`v-if`,!0)]))}});var re=n.t(ne,[[`__scopeId`,`data-v-0739f585`]]);Object.defineProperty(exports,`a`,{enumerable:!0,get:function(){return m}}),Object.defineProperty(exports,`c`,{enumerable:!0,get:function(){return u}}),Object.defineProperty(exports,`i`,{enumerable:!0,get:function(){return _}}),Object.defineProperty(exports,`n`,{enumerable:!0,get:function(){return b}}),Object.defineProperty(exports,`o`,{enumerable:!0,get:function(){return p}}),Object.defineProperty(exports,`r`,{enumerable:!0,get:function(){return y}}),Object.defineProperty(exports,`s`,{enumerable:!0,get:function(){return d}}),Object.defineProperty(exports,`t`,{enumerable:!0,get:function(){return re}});
|
|
1
|
+
const e=require(`./chunk.cjs`),t=require(`./C_Icon2.cjs`),n=require(`./export-helper.cjs`);let r=require(`vue`),i=require(`naive-ui`),a=require(`spark-md5`);a=e.t(a);const o=2*1024*1024,s={pending:`等待上传`,validating:`校验文件…`,hashing:`计算校验…`,uploading:`上传中…`,success:`上传成功`,error:`上传失败`,paused:`已暂停`,instant:`秒传成功`},c={pending:`default`,validating:`info`,hashing:`info`,uploading:`info`,success:`success`,error:`error`,paused:`warning`,instant:`success`},l={"image/":`mdi:file-image-outline`,"video/":`mdi:file-video-outline`,"audio/":`mdi:file-music-outline`,"application/pdf":`mdi:file-pdf-box`,"application/zip":`mdi:folder-zip-outline`,"application/x-rar":`mdi:folder-zip-outline`,"application/vnd.ms-excel":`mdi:file-excel-outline`,"application/vnd.openxmlformats-officedocument.spreadsheetml":`mdi:file-excel-outline`,"application/msword":`mdi:file-word-outline`,"application/vnd.openxmlformats-officedocument.wordprocessingml":`mdi:file-word-outline`,"text/":`mdi:file-document-outline`,default:`mdi:file-outline`};function u(e){for(let[t,n]of Object.entries(l))if(t!==`default`&&e.startsWith(t))return n;return l.default}function d(e){if(e===0)return`0 B`;let t=[`B`,`KB`,`MB`,`GB`,`TB`],n=Math.floor(Math.log(e)/Math.log(1024));return`${(e/1024**n).toFixed(n>0?1:0)} ${t[n]}`}const f=()=>new Promise(e=>{typeof requestAnimationFrame==`function`?requestAnimationFrame(()=>e()):setTimeout(e,0)});function p(e){let t=(0,r.ref)(0),n=(0,r.ref)(0),i=(0,r.computed)(()=>t.value>0);async function o(r,i){t.value+=1,n.value=0,i?.(0);let o=new a.default.ArrayBuffer,s=Math.max(1,Math.trunc(Number(e.value)||1)),c=Math.max(1,Math.ceil(r.size/s));try{if(r.size===0)return o.append(new ArrayBuffer(0)),n.value=100,i?.(100),o.end();for(let e=0;e<c;e+=1){let t=e*s,a=await r.slice(t,t+s).arrayBuffer();o.append(a),n.value=Math.round((e+1)/c*100),i?.(n.value),await f()}return o.end()}finally{t.value=Math.max(0,t.value-1)}}return{hashing:i,hashProgress:(0,r.readonly)(n),calculateHash:o}}function m(e){let t=new Map,n=new Map;function r(t){let n=Math.max(1,Math.trunc(Number(e.chunkSize.value)||1)),r=[],i=0,a=0;for(;a<t.size;){let e=Math.min(a+n,t.size);r.push({index:i,blob:t.slice(a,e),size:e-a,uploaded:!1}),a=e,i++}return r}async function i(t,n){if(e.uploadedChunksQuery?.value)try{let r=await e.uploadedChunksQuery.value(t);for(let e of r){let t=n[e];t&&(t.uploaded=!0)}}catch{}}function a(t){return new Promise((n,r)=>{let i=!1,a=()=>{i||(i=!0,n())},o=e=>{i||(i=!0,t.setError(),r(e instanceof Error?e:Error(String(e))))},s={action:e.action.value,headers:e.headers.value,data:{...e.data.value,hash:t.hash,chunkIndex:t.chunk.index,totalChunks:t.totalChunks,filename:t.file.name},file:t.chunk.blob,filename:t.file.name,hash:t.hash,chunkIndex:t.chunk.index,totalChunks:t.totalChunks,onProgress:()=>{},onSuccess:()=>{if(!i){if(t.isCancelled()){a();return}t.chunk.uploaded=!0,t.setUploadedBytes(t.chunk.size),t.onProgress({uploadedChunks:t.chunks.filter(e=>e.uploaded).length,totalChunks:t.totalChunks,uploadedBytes:t.chunks.filter(e=>e.uploaded).reduce((e,t)=>e+t.size,0),totalBytes:t.totalBytes}),a()}},onError:o};try{let n=e.customRequest?.value?e.customRequest.value(s):h(s);t.abortControllers.push(()=>{try{n.abort()}catch{}finally{a()}})}catch(e){o(e)}})}async function o(o){let{uid:c,file:l,hash:u,onProgress:d,onSuccess:f,onError:p,isPaused:m}=o,h=Symbol(c);n.set(c,h);let g=()=>n.get(c)!==h,_=()=>{g()||n.delete(c)},v=r(l),y=v.length,b=l.size,x=0;if(await i(u,v),g()||m()){_();return}x=v.filter(e=>e.uploaded).reduce((e,t)=>e+t.size,0),d({uploadedChunks:v.filter(e=>e.uploaded).length,totalChunks:y,uploadedBytes:x,totalBytes:b});let S=v.filter(e=>!e.uploaded);if(S.length===0){try{g()||await s(u,l.name,y,f,p,g)}finally{_()}return}let C=[];t.set(c,C);let w=Math.max(1,Math.trunc(Number(e.concurrency.value)||1)),T=0,E=!1;async function D(){for(;T<S.length&&!E&&!m()&&!g();){let e=S[T++];await a({chunk:e,hash:u,file:l,totalChunks:y,chunks:v,totalBytes:b,abortControllers:C,onProgress:e=>{g()||d(e)},setUploadedBytes:e=>{x+=e},setError:()=>{E=!0},isCancelled:g})}}let O=Array.from({length:Math.min(w,S.length)},()=>D());try{let e=(await Promise.allSettled(O)).find(e=>e.status===`rejected`);e&&!g()?p(e.reason instanceof Error?e.reason:Error(String(e.reason))):!E&&!m()&&!g()&&await s(u,l.name,y,f,p,g)}finally{g()||t.delete(c),_()}}async function s(t,n,r,i,a,o){if(e.mergeChunks?.value)try{let a=await e.mergeChunks.value(t,n,r);o()||i(a)}catch(e){o()||a(e instanceof Error?e:Error(`分片合并失败`))}else o()||i({message:`分片上传完成(未配置合并函数)`})}function c(e){n.delete(e),t.get(e)?.forEach(e=>e()),t.delete(e)}function l(){n.clear(),t.forEach(e=>{e.forEach(e=>e())}),t.clear()}return{createChunks:r,uploadChunks:o,abortUpload:c,abortAll:l}}function h(e){let t=new XMLHttpRequest;t.open(`POST`,e.action),e.headers&&Object.entries(e.headers).forEach(([e,n])=>{t.setRequestHeader(e,n)}),t.upload.addEventListener(`progress`,t=>{t.lengthComputable&&e.onProgress?.(Math.round(t.loaded/t.total*100))}),t.addEventListener(`load`,()=>{if(t.status>=200&&t.status<300){let n;try{n=JSON.parse(t.responseText)}catch{n=t.responseText}e.onSuccess?.(n)}else e.onError?.(Error(`上传失败: HTTP ${t.status}`))}),t.addEventListener(`error`,()=>{e.onError?.(Error(`网络错误`))}),t.addEventListener(`abort`,()=>{e.onError?.(new DOMException(`上传已取消`,`AbortError`))});let n=new FormData;return n.append(`file`,e.file,e.filename),e.data&&Object.entries(e.data).forEach(([e,t])=>{n.append(e,String(t))}),t.send(n),{abort:()=>t.abort()}}function g(e){return e instanceof Error?e:Error(String(e))}function _(e){let t=[],n=(0,r.ref)(0),i=new Map,a=()=>{n.value=i.size},o=()=>Math.max(1,Math.trunc(Number(e.concurrency.value)||1));function s(){for(;i.size<o()&&t.length>0;){let n=t.shift(),{file:r}=n;if(!r.raw||i.has(r.uid))continue;let o=!1,c=e=>{o||(o=!0,i.delete(r.uid),a(),e?.error?n.onError(r.uid,e.error):e&&`response`in e&&n.onSuccess(r.uid,e.response),s())},l={action:e.action.value,headers:e.headers.value,data:e.data.value,file:r.raw,filename:r.name,onProgress:e=>n.onProgress(r.uid,e),onSuccess:e=>c({response:e}),onError:e=>c({error:e})};i.set(r.uid,{abort:()=>void 0,settle:c}),a();try{let t=e.customRequest?.value?e.customRequest.value(l):v(l),n=i.get(r.uid);n&&(n.abort=t.abort)}catch(e){c({error:g(e)})}}}function c(e,n,r,i){l(e.uid),t.push({file:e,onProgress:n,onSuccess:r,onError:i}),s()}function l(e){for(let n=t.length-1;n>=0;--n)t[n].file.uid===e&&t.splice(n,1);let n=i.get(e);if(n){n.settle();try{n.abort()}catch{}}}function u(){t.length=0;let e=[...i.values()];i.clear(),a(),e.forEach(e=>{e.settle();try{e.abort()}catch{}})}return(0,r.watch)(e.concurrency,s),{activeCount:(0,r.readonly)(n),enqueue:c,abort:l,abortAll:u}}function v(e){let t=new XMLHttpRequest;t.open(`POST`,e.action),Object.entries(e.headers??{}).forEach(([e,n])=>{t.setRequestHeader(e,n)}),t.upload.addEventListener(`progress`,t=>{t.lengthComputable&&e.onProgress?.(Math.round(t.loaded/t.total*100))}),t.addEventListener(`load`,()=>{if(t.status>=200&&t.status<300){let n=t.responseText;try{n=JSON.parse(t.responseText)}catch{}e.onSuccess?.(n)}else e.onError?.(Error(`上传失败: HTTP ${t.status}`))}),t.addEventListener(`error`,()=>e.onError?.(Error(`网络错误`)));let n=new FormData;return n.append(`file`,e.file,e.filename),Object.entries(e.data??{}).forEach(([e,t])=>{n.append(e,String(t))}),t.send(n),{abort:()=>t.abort()}}function y(e){let t=(0,r.computed)(()=>e.action??``),n=(0,r.computed)(()=>e.headers??{}),i=(0,r.computed)(()=>e.data??{}),a=(0,r.computed)(()=>{let t=Math.trunc(Number(e.chunkSize));return Number.isFinite(t)&&t>0?t:o}),s=(0,r.computed)(()=>{let t=Math.trunc(Number(e.concurrency));return Number.isFinite(t)&&t>0?t:3}),c=(0,r.computed)(()=>e.customRequest),l=(0,r.computed)(()=>e.instantCheck),u=(0,r.computed)(()=>e.uploadedChunksQuery),d=(0,r.computed)(()=>e.mergeChunks),f=(0,r.ref)((e.defaultFileList??[]).map(e=>({...e}))),h=(0,r.reactive)(new Set),g=new Map,v=new Set,{hashing:y,hashProgress:b,calculateHash:x}=p(a),S=m({chunkSize:a,concurrency:s,action:t,headers:n,data:i,customRequest:c,uploadedChunksQuery:u,mergeChunks:d}),C=_({concurrency:s,action:t,headers:n,data:i,customRequest:c}),w=(0,r.computed)(()=>{let e=f.value;if(e.length===0)return 0;let t=e.reduce((e,t)=>e+t.percent,0);return Math.round(t/e.length)});function T(){return typeof crypto<`u`&&`randomUUID`in crypto?`upload-${crypto.randomUUID()}`:`upload-${Date.now()}-${Math.random().toString(36).slice(2,10)}`}function E(e){if(e.type.startsWith(`image/`)){let t=URL.createObjectURL(e);return v.add(t),t}}function D(t){let n=[];for(let r of t){if(Number.isFinite(e.maxCount)&&(e.maxCount??0)>0&&f.value.length+n.length>=Math.trunc(e.maxCount))break;let t={uid:T(),name:r.name,size:r.size,type:r.type,status:`pending`,percent:0,raw:r,thumbUrl:E(r)};n.push(t)}return f.value.push(...n),n}function O(e,t){let n=f.value.find(t=>t.uid===e);n&&Object.assign(n,t)}function k(e){g.set(e,Symbol(e)),S.abortUpload(e),C.abort(e),h.delete(e);let t=f.value.findIndex(t=>t.uid===e);if(t!==-1){let e=f.value[t];M(e.thumbUrl),f.value.splice(t,1)}}function A(){S.abortAll(),C.abortAll(),h.clear(),f.value.forEach(e=>{M(e.thumbUrl)}),f.value=[],g.clear()}async function j(t){if((e.maxSize??0)>0&&t.size>e.maxSize)return null;if(e.beforeUpload){let n=await e.beforeUpload(t);if(n===!1)return null;if(n instanceof File)return(e.maxSize??0)>0&&n.size>e.maxSize?null:n}return t}function M(e){!e||!v.has(e)||(URL.revokeObjectURL(e),v.delete(e))}function N(e,t){return g.get(e)===t&&!h.has(e)&&f.value.some(t=>t.uid===e)}function P(e,t){return x(e.raw,n=>{N(e.uid,t)&&O(e.uid,{percent:n})})}async function F(n){if(!n.raw)return;let r=Symbol(n.uid);g.set(n.uid,r),O(n.uid,{status:`validating`,error:void 0});let i;try{i=await j(n.raw)}catch(e){N(n.uid,r)&&O(n.uid,{status:`error`,error:e instanceof Error?e.message:`文件校验失败`});return}if(N(n.uid,r)){if(!i){O(n.uid,{status:`error`,error:`文件校验未通过`});return}if(i!==n.raw&&(M(n.thumbUrl),Object.assign(n,{raw:i,name:i.name,size:i.size,type:i.type,hash:void 0,chunkProgress:void 0,thumbUrl:E(i)})),!c.value&&!t.value.trim()){O(n.uid,{status:`error`,error:`未配置上传地址`});return}if(l.value&&!n.hash){O(n.uid,{status:`hashing`});try{let e=await P(n,r);if(!N(n.uid,r))return;O(n.uid,{hash:e});let t=await l.value(e,n.raw.name);if(!N(n.uid,r))return;if(t.exists){O(n.uid,{status:`instant`,percent:100,url:t.url});return}}catch{if(!N(n.uid,r))return}}e.chunked&&n.raw.size>a.value?await I(n,r):L(n,r)}}async function I(e,t){let n=e.raw,{hash:r}=e;if(!r){O(e.uid,{status:`hashing`});try{if(r=await P(e,t),!N(e.uid,t))return;O(e.uid,{hash:r})}catch{N(e.uid,t)&&O(e.uid,{status:`error`,error:`Hash 计算失败`});return}}O(e.uid,{status:`uploading`,percent:0}),await S.uploadChunks({uid:e.uid,file:n,hash:r,onProgress:n=>{if(!N(e.uid,t))return;let r=Math.round(n.uploadedBytes/n.totalBytes*100);O(e.uid,{percent:r,chunkProgress:n})},onSuccess:n=>{N(e.uid,t)&&O(e.uid,{status:`success`,percent:100,response:n})},onError:n=>{N(e.uid,t)&&O(e.uid,{status:`error`,error:n.message})},isPaused:()=>h.has(e.uid)})}function L(e,t){O(e.uid,{status:`uploading`,percent:0}),C.enqueue(e,(e,n)=>{N(e,t)&&O(e,{percent:n})},(e,n)=>{N(e,t)&&O(e,{status:`success`,percent:100,response:n})},(e,n)=>{N(e,t)&&O(e,{status:`error`,error:n.message})})}function R(){f.value.filter(e=>e.status===`pending`).forEach(e=>void F(e))}function z(){f.value.forEach(e=>{(e.status===`uploading`||e.status===`hashing`||e.status===`validating`)&&(h.add(e.uid),g.set(e.uid,Symbol(e.uid)),S.abortUpload(e.uid),C.abort(e.uid),O(e.uid,{status:`paused`}))})}function B(){f.value.forEach(e=>{e.status===`paused`&&(h.delete(e.uid),O(e.uid,{status:`pending`}))}),R()}function V(e){let t=f.value.find(t=>t.uid===e);t&&t.status===`error`&&(O(e,{status:`pending`,percent:0,error:void 0}),F(t))}function H(){return f.value.filter(e=>e.status===`success`||e.status===`instant`)}return(0,r.onBeforeUnmount)(()=>{S.abortAll(),C.abortAll(),g.clear(),f.value.forEach(e=>{M(e.thumbUrl)})}),{fileList:f,totalPercent:w,hashing:y,hashProgress:b,addFiles:D,removeFile:k,clearAll:A,startUpload:R,pauseAll:z,resumeAll:B,retryFile:V,processFile:F,getSuccessList:H}}function b(e,t,n,i,a){let o=(0,r.ref)(!1),s=null,c=!1;function l(e){t.value&&(e.preventDefault(),o.value=!0)}function u(e){t.value&&(e.preventDefault(),o.value=!0)}function d(n){if(!t.value)return;n.preventDefault();let r=e.value;r&&!r.contains(n.relatedTarget)&&(o.value=!1)}async function f(e){if(!t.value)return;e.preventDefault(),o.value=!1;let n=e.dataTransfer?.items;if(!n)return;let r=await x(n,e.dataTransfer);if(c||!t.value)return;let s=C(r,i.value);s.length>0&&a(s)}function p(e){if(!n.value)return;let t=e.clipboardData?.items;if(!t)return;let r=[];for(let e=0;e<t.length;e++){let n=t[e];if(n.kind===`file`){let e=n.getAsFile();e&&r.push(e)}}let o=C(r,i.value);o.length>0&&(e.preventDefault(),a(o))}function m(){let t=e.value;!t||s===t||(s=t,t.addEventListener(`dragenter`,l),t.addEventListener(`dragover`,u),t.addEventListener(`dragleave`,d),t.addEventListener(`drop`,f),n.value&&t.addEventListener(`paste`,p))}function h(){let e=s;e&&(e.removeEventListener(`dragenter`,l),e.removeEventListener(`dragover`,u),e.removeEventListener(`dragleave`,d),e.removeEventListener(`drop`,f)),e?.removeEventListener(`paste`,p),s=null}return(0,r.onMounted)(()=>{c=!1,m()}),(0,r.onBeforeUnmount)(()=>{c=!0,h()}),(0,r.watch)([e,t,n],()=>{h(),m()}),{isDragOver:(0,r.readonly)(o)}}async function x(e,t){let n=[];for(let t=0;t<e.length;t++){let r=e[t].webkitGetAsEntry?.();r&&n.push(r)}if(n.length>0)return(await Promise.all(n.map(S))).flat();let r=[],i=t?.files;if(i)for(let e=0;e<i.length;e++)r.push(i[e]);return r}async function S(e){if(e.isFile)return new Promise(t=>{e.file(e=>t([e]),()=>t([]))});if(e.isDirectory){let t=e.createReader(),n=[];for(;;){let e=await new Promise(e=>{t.readEntries(t=>e(t),()=>e([]))});if(e.length===0)break;n.push(...e)}return(await Promise.all(n.map(S))).flat()}return[]}function C(e,t){if(!t)return e;let n=t.split(`,`).map(e=>e.trim().toLowerCase()).filter(Boolean);return n.length===0?e:e.filter(e=>n.some(t=>{if(t.startsWith(`.`))return e.name.toLowerCase().endsWith(t);if(t.endsWith(`/*`)){let n=t.replace(`/*`,``);return e.type.toLowerCase().startsWith(`${n}/`)}return e.type.toLowerCase()===t}))}const w=[`tabindex`,`aria-disabled`,`onKeydown`],T=[`accept`,`multiple`,`webkitdirectory`,`disabled`],E={class:`upload-area__default`},D={class:`upload-area__text`},O={key:0},k={key:1},A={key:0,class:`upload-area__tip`},j=(0,r.defineComponent)({__name:`UploadArea`,props:{accept:{default:``},multiple:{type:Boolean,default:!1},directory:{type:Boolean,default:!1},disabled:{type:Boolean,default:!1},draggable:{type:Boolean,default:!0},pasteable:{type:Boolean,default:!1},tip:{default:``}},emits:[`files`],setup(e,{expose:n,emit:i}){let a=e,o=i,s=(0,r.ref)(),c=(0,r.ref)(),{isDragOver:l}=b(s,(0,r.computed)(()=>a.draggable&&!a.disabled),(0,r.computed)(()=>a.pasteable&&!a.disabled),(0,r.computed)(()=>a.accept),e=>o(`files`,e));function u(){a.disabled||c.value?.click()}function d(e){let t=e.target,n=a.disabled?[]:C(Array.from(t.files??[]),a.accept);n.length>0&&o(`files`,n),t.value=``}return n({triggerSelect:u}),(n,i)=>((0,r.openBlock)(),(0,r.createElementBlock)(`div`,{ref_key:`areaRef`,ref:s,class:(0,r.normalizeClass)([`upload-area`,{"upload-area--drag-over":(0,r.unref)(l),"upload-area--disabled":e.disabled}]),role:`button`,tabindex:e.disabled?-1:0,"aria-disabled":e.disabled,onClick:u,onKeydown:[(0,r.withKeys)((0,r.withModifiers)(u,[`prevent`]),[`enter`]),(0,r.withKeys)((0,r.withModifiers)(u,[`prevent`]),[`space`])]},[(0,r.createElementVNode)(`input`,{ref_key:`inputRef`,ref:c,type:`file`,class:`upload-area__input`,accept:e.accept,multiple:e.multiple,webkitdirectory:e.directory||void 0,disabled:e.disabled,onClick:i[0]||=(0,r.withModifiers)(()=>{},[`stop`]),onChange:d},null,40,T),(0,r.renderSlot)(n.$slots,`default`,{},()=>[(0,r.createElementVNode)(`div`,E,[(0,r.createVNode)(t.t,{name:(0,r.unref)(l)?`mdi:cloud-download-outline`:`mdi:cloud-upload-outline`,class:`upload-area__icon`},null,8,[`name`]),(0,r.createElementVNode)(`div`,D,[(0,r.unref)(l)?((0,r.openBlock)(),(0,r.createElementBlock)(`span`,O,`释放文件到此处`)):((0,r.openBlock)(),(0,r.createElementBlock)(`span`,k,[i[4]||=(0,r.createTextVNode)(` 点击或拖拽文件到此区域上传 `,-1),e.pasteable?((0,r.openBlock)(),(0,r.createElementBlock)(r.Fragment,{key:0},[i[1]||=(0,r.createTextVNode)(` ,支持 `,-1),i[2]||=(0,r.createElementVNode)(`kbd`,null,`Ctrl+V`,-1),i[3]||=(0,r.createTextVNode)(` 粘贴 `,-1)],64)):(0,r.createCommentVNode)(`v-if`,!0)]))]),e.tip?((0,r.openBlock)(),(0,r.createElementBlock)(`div`,A,(0,r.toDisplayString)(e.tip),1)):(0,r.createCommentVNode)(`v-if`,!0)])],!0)],42,w))}});var M=n.t(j,[[`__scopeId`,`data-v-705892ab`]]);const N={class:`file-list__thumb`},P=[`src`,`alt`],F={class:`file-list__info`},I={class:`file-list__name`},L={class:`file-list__meta`},R={class:`file-list__size`},z={key:0,class:`file-list__instant`},B={key:1,class:`file-list__chunk-info`},V={key:2,class:`file-list__error`},H={class:`file-list__actions`},U=(0,r.defineComponent)({__name:`FileList`,props:{fileList:{},showThumbnail:{type:Boolean}},emits:[`remove`,`retry`],setup(e,{emit:n}){let a=n;return(n,o)=>((0,r.openBlock)(),(0,r.createBlock)(r.TransitionGroup,{name:`file-list`,tag:`div`,class:`file-list`},{default:(0,r.withCtx)(()=>[((0,r.openBlock)(!0),(0,r.createElementBlock)(r.Fragment,null,(0,r.renderList)(e.fileList,n=>((0,r.openBlock)(),(0,r.createElementBlock)(`div`,{key:n.uid,class:(0,r.normalizeClass)([`file-list__item`,`file-list__item--${n.status}`])},[(0,r.createCommentVNode)(` 缩略图 / 图标 `),(0,r.createElementVNode)(`div`,N,[e.showThumbnail&&n.thumbUrl?((0,r.openBlock)(),(0,r.createElementBlock)(`img`,{key:0,src:n.thumbUrl,alt:n.name,class:`file-list__thumb-img`},null,8,P)):((0,r.openBlock)(),(0,r.createBlock)(t.t,{key:1,name:(0,r.unref)(u)(n.type),class:`file-list__thumb-icon`},null,8,[`name`]))]),(0,r.createCommentVNode)(` 文件信息 `),(0,r.createElementVNode)(`div`,F,[(0,r.createElementVNode)(`div`,I,[(0,r.createVNode)((0,r.unref)(i.NEllipsis),{"line-clamp":1},{default:(0,r.withCtx)(()=>[(0,r.createTextVNode)((0,r.toDisplayString)(n.name),1)]),_:2},1024)]),(0,r.createElementVNode)(`div`,L,[(0,r.createElementVNode)(`span`,R,(0,r.toDisplayString)((0,r.unref)(d)(n.size)),1),(0,r.createVNode)((0,r.unref)(i.NTag),{type:(0,r.unref)(c)[n.status]||`default`,size:`tiny`,bordered:!1},{default:(0,r.withCtx)(()=>[(0,r.createTextVNode)((0,r.toDisplayString)((0,r.unref)(s)[n.status]||n.status),1)]),_:2},1032,[`type`]),n.status===`instant`?((0,r.openBlock)(),(0,r.createElementBlock)(`span`,z,` ⚡ `)):(0,r.createCommentVNode)(`v-if`,!0)]),(0,r.createCommentVNode)(` 进度条 `),n.status===`uploading`||n.status===`hashing`?((0,r.openBlock)(),(0,r.createBlock)((0,r.unref)(i.NProgress),{key:0,percentage:n.percent,height:4,"border-radius":2,"show-indicator":!1,status:n.status===`hashing`?`info`:`success`},null,8,[`percentage`,`status`])):(0,r.createCommentVNode)(`v-if`,!0),(0,r.createCommentVNode)(` 分片进度描述 `),n.chunkProgress&&n.status===`uploading`?((0,r.openBlock)(),(0,r.createElementBlock)(`div`,B,` 分片 `+(0,r.toDisplayString)(n.chunkProgress.uploadedChunks)+`/`+(0,r.toDisplayString)(n.chunkProgress.totalChunks),1)):(0,r.createCommentVNode)(`v-if`,!0),(0,r.createCommentVNode)(` 错误信息 `),n.status===`error`&&n.error?((0,r.openBlock)(),(0,r.createElementBlock)(`div`,V,(0,r.toDisplayString)(n.error),1)):(0,r.createCommentVNode)(`v-if`,!0)]),(0,r.createCommentVNode)(` 操作按钮 `),(0,r.createElementVNode)(`div`,H,[n.status===`error`?((0,r.openBlock)(),(0,r.createBlock)((0,r.unref)(i.NButton),{key:0,text:``,type:`warning`,size:`tiny`,"aria-label":`重试上传`,onClick:e=>a(`retry`,n.uid)},{icon:(0,r.withCtx)(()=>[(0,r.createVNode)(t.t,{name:`mdi:refresh`})]),_:1},8,[`onClick`])):(0,r.createCommentVNode)(`v-if`,!0),(0,r.createVNode)((0,r.unref)(i.NButton),{text:``,type:`error`,size:`tiny`,"aria-label":`移除文件`,onClick:e=>a(`remove`,n.uid)},{icon:(0,r.withCtx)(()=>[(0,r.createVNode)(t.t,{name:`mdi:close`})]),_:1},8,[`onClick`])])],2))),128))]),_:1}))}});var W=n.t(U,[[`__scopeId`,`data-v-04f26012`]]);const G={key:0,class:`image-preview`},K=[`src`,`alt`],q={class:`image-preview__overlay`},J={key:0,class:`image-preview__progress`},Y={class:`image-preview__actions`},X={class:`image-preview__name`},Z=(0,r.defineComponent)({__name:`ImagePreview`,props:{fileList:{}},emits:[`remove`,`retry`],setup(e,{emit:n}){let a=e,o=n,s=(0,r.computed)(()=>a.fileList.filter(e=>e.type?.startsWith(`image/`)));return(e,n)=>s.value.length>0?((0,r.openBlock)(),(0,r.createElementBlock)(`div`,G,[((0,r.openBlock)(!0),(0,r.createElementBlock)(r.Fragment,null,(0,r.renderList)(s.value,e=>((0,r.openBlock)(),(0,r.createElementBlock)(`div`,{key:e.uid,class:(0,r.normalizeClass)([`image-preview__item`,`image-preview__item--${e.status}`])},[e.thumbUrl?((0,r.openBlock)(),(0,r.createElementBlock)(`img`,{key:0,src:e.thumbUrl,alt:e.name,class:`image-preview__img`},null,8,K)):(0,r.createCommentVNode)(`v-if`,!0),(0,r.createCommentVNode)(` 遮罩层 `),(0,r.createElementVNode)(`div`,q,[(0,r.createCommentVNode)(` 上传中进度 `),e.status===`uploading`||e.status===`hashing`?((0,r.openBlock)(),(0,r.createElementBlock)(`div`,J,[(0,r.createVNode)((0,r.unref)(i.NProgress),{type:`circle`,percentage:e.percent,"stroke-width":3,style:{width:`40px`}},null,8,[`percentage`])])):e.status===`success`||e.status===`instant`?((0,r.openBlock)(),(0,r.createElementBlock)(r.Fragment,{key:1},[(0,r.createCommentVNode)(` 状态图标 `),(0,r.createVNode)(t.t,{name:`mdi:check-circle`,class:`image-preview__status-icon image-preview__status-icon--success`})],2112)):e.status===`error`?((0,r.openBlock)(),(0,r.createBlock)(t.t,{key:2,name:`mdi:alert-circle`,class:`image-preview__status-icon image-preview__status-icon--error`})):(0,r.createCommentVNode)(`v-if`,!0),(0,r.createCommentVNode)(` 操作 `),(0,r.createElementVNode)(`div`,Y,[e.status===`error`?((0,r.openBlock)(),(0,r.createBlock)((0,r.unref)(i.NButton),{key:0,circle:``,size:`tiny`,type:`warning`,"aria-label":`重试上传`,onClick:t=>o(`retry`,e.uid)},{icon:(0,r.withCtx)(()=>[(0,r.createVNode)(t.t,{name:`mdi:refresh`})]),_:1},8,[`onClick`])):(0,r.createCommentVNode)(`v-if`,!0),(0,r.createVNode)((0,r.unref)(i.NButton),{circle:``,size:`tiny`,type:`error`,"aria-label":`移除文件`,onClick:t=>o(`remove`,e.uid)},{icon:(0,r.withCtx)(()=>[(0,r.createVNode)(t.t,{name:`mdi:close`})]),_:1},8,[`onClick`])])]),(0,r.createCommentVNode)(` 文件名 `),(0,r.createElementVNode)(`div`,X,[(0,r.createVNode)((0,r.unref)(i.NEllipsis),{"line-clamp":1},{default:(0,r.withCtx)(()=>[(0,r.createTextVNode)((0,r.toDisplayString)(e.name),1)]),_:2},1024)])],2))),128))])):(0,r.createCommentVNode)(`v-if`,!0)}});var Q=n.t(Z,[[`__scopeId`,`data-v-32d39ae9`]]);const $={class:`c-upload`},ee={key:0,class:`c-upload__total-progress`},te={class:`c-upload__total-label`},ne=(0,r.defineComponent)({__name:`index`,props:{action:{default:``},headers:{default:()=>({})},data:{default:()=>({})},multiple:{type:Boolean,default:!1},directory:{type:Boolean,default:!1},accept:{default:``},maxSize:{default:0},maxCount:{default:0},disabled:{type:Boolean,default:!1},draggable:{type:Boolean,default:!0},pasteable:{type:Boolean,default:!1},chunked:{type:Boolean,default:!1},chunkSize:{default:o},concurrency:{default:3},showFileList:{type:Boolean,default:!0},listType:{default:`text`},showThumbnail:{type:Boolean,default:!0},customRequest:{},instantCheck:{},uploadedChunksQuery:{},mergeChunks:{},beforeUpload:{},tip:{default:``},defaultFileList:{default:()=>[]}},emits:[`change`,`success`,`error`,`progress`,`remove`,`finish`,`exceed`],setup(e,{expose:t,emit:n}){let a=e,o=n,s=(0,r.ref)(),{fileList:c,totalPercent:l,addFiles:u,removeFile:d,clearAll:f,startUpload:p,pauseAll:m,resumeAll:h,retryFile:g,processFile:_,getSuccessList:v}=y(a),b=(0,r.computed)(()=>c.value.some(e=>e.status===`uploading`||e.status===`hashing`||e.status===`validating`)),x=e=>({...e}),S=()=>c.value.map(x);function C(e){let t=Math.max(0,Math.trunc(Number(a.maxCount)||0));if(t>0&&c.value.length+e.length>t){o(`exceed`,e,S());let n=t-c.value.length;if(n<=0)return;e=e.slice(0,n)}let n=u(e);o(`change`,S()),n.forEach(e=>void _(e))}function w(e){let t=c.value.find(t=>t.uid===e);t&&(o(`remove`,x(t)),d(e),o(`change`,S()))}function T(e){g(e)}let E=new Map,D=!1;return(0,r.watch)(c,e=>{let t=new Set(e.map(e=>e.uid));E.forEach((e,n)=>{t.has(n)||E.delete(n)}),e.forEach(e=>{let t=E.get(e.uid);t&&t.percent!==e.percent&&o(`progress`,x(e),e.percent),t&&t.status!==e.status&&(e.status===`success`||e.status===`instant`)&&o(`success`,x(e),e.response),t&&t.status!==`error`&&e.status===`error`&&o(`error`,x(e),Error(e.error||`上传失败`)),E.set(e.uid,{status:e.status,percent:e.percent})}),e.length>0&&e.every(e=>e.status===`success`||e.status===`instant`||e.status===`error`)?(D||o(`finish`,S()),D=!0):D=!1},{deep:!0}),t({selectFiles:()=>s.value?.triggerSelect(),startUpload:p,pauseAll:m,resumeAll:h,clearAll:()=>{f(),o(`change`,S())},removeFile:e=>{w(e)},retryFile:g,getFileList:S,getSuccessList:()=>v().map(x),get totalPercent(){return l.value}}),(e,t)=>((0,r.openBlock)(),(0,r.createElementBlock)(`div`,$,[(0,r.createCommentVNode)(` 上传区域 `),(0,r.createVNode)(M,{ref_key:`uploadAreaRef`,ref:s,accept:a.accept,multiple:a.multiple,directory:a.directory,disabled:a.disabled,draggable:a.draggable,pasteable:a.pasteable,tip:a.tip,onFiles:C},{default:(0,r.withCtx)(()=>[(0,r.renderSlot)(e.$slots,`area`,{},void 0,!0)]),_:3},8,[`accept`,`multiple`,`directory`,`disabled`,`draggable`,`pasteable`,`tip`]),(0,r.createCommentVNode)(` 总进度条 `),b.value?((0,r.openBlock)(),(0,r.createElementBlock)(`div`,ee,[(0,r.createElementVNode)(`div`,te,[t[0]||=(0,r.createElementVNode)(`span`,null,`总进度`,-1),(0,r.createElementVNode)(`span`,null,(0,r.toDisplayString)((0,r.unref)(l))+`%`,1)]),(0,r.createVNode)((0,r.unref)(i.NProgress),{percentage:(0,r.unref)(l),height:6,"border-radius":3,"show-indicator":!1,status:`success`},null,8,[`percentage`])])):(0,r.createCommentVNode)(`v-if`,!0),(0,r.createCommentVNode)(` 图片预览模式 `),a.listType===`image`?((0,r.openBlock)(),(0,r.createBlock)(Q,{key:1,"file-list":(0,r.unref)(c),onRemove:w,onRetry:T},null,8,[`file-list`])):a.showFileList&&(0,r.unref)(c).length>0?((0,r.openBlock)(),(0,r.createElementBlock)(r.Fragment,{key:2},[(0,r.createCommentVNode)(` 文件列表模式 `),(0,r.createVNode)(W,{"file-list":(0,r.unref)(c),"show-thumbnail":a.showThumbnail,onRemove:w,onRetry:T},null,8,[`file-list`,`show-thumbnail`])],2112)):(0,r.createCommentVNode)(`v-if`,!0)]))}});var re=n.t(ne,[[`__scopeId`,`data-v-7674f0c8`]]);Object.defineProperty(exports,`a`,{enumerable:!0,get:function(){return m}}),Object.defineProperty(exports,`c`,{enumerable:!0,get:function(){return u}}),Object.defineProperty(exports,`i`,{enumerable:!0,get:function(){return _}}),Object.defineProperty(exports,`n`,{enumerable:!0,get:function(){return b}}),Object.defineProperty(exports,`o`,{enumerable:!0,get:function(){return p}}),Object.defineProperty(exports,`r`,{enumerable:!0,get:function(){return y}}),Object.defineProperty(exports,`s`,{enumerable:!0,get:function(){return d}}),Object.defineProperty(exports,`t`,{enumerable:!0,get:function(){return re}});
|
package/dist/C_Upload2.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
import{t as e}from"./C_Icon2.js";import{t}from"./export-helper.js";import{Fragment as n,TransitionGroup as r,computed as i,createBlock as a,createCommentVNode as o,createElementBlock as s,createElementVNode as c,createTextVNode as l,createVNode as u,defineComponent as d,normalizeClass as f,onBeforeUnmount as p,onMounted as m,openBlock as h,reactive as g,readonly as _,ref as v,renderList as y,renderSlot as b,toDisplayString as x,unref as S,watch as C,withCtx as w,withKeys as T,withModifiers as E}from"vue";import{NButton as D,NEllipsis as O,NProgress as k,NTag as A}from"naive-ui";import j from"spark-md5";const M=2*1024*1024,N={pending:`等待上传`,validating:`校验文件…`,hashing:`计算校验…`,uploading:`上传中…`,success:`上传成功`,error:`上传失败`,paused:`已暂停`,instant:`秒传成功`},P={pending:`default`,validating:`info`,hashing:`info`,uploading:`info`,success:`success`,error:`error`,paused:`warning`,instant:`success`},F={"image/":`mdi:file-image-outline`,"video/":`mdi:file-video-outline`,"audio/":`mdi:file-music-outline`,"application/pdf":`mdi:file-pdf-box`,"application/zip":`mdi:folder-zip-outline`,"application/x-rar":`mdi:folder-zip-outline`,"application/vnd.ms-excel":`mdi:file-excel-outline`,"application/vnd.openxmlformats-officedocument.spreadsheetml":`mdi:file-excel-outline`,"application/msword":`mdi:file-word-outline`,"application/vnd.openxmlformats-officedocument.wordprocessingml":`mdi:file-word-outline`,"text/":`mdi:file-document-outline`,default:`mdi:file-outline`};function I(e){for(let[t,n]of Object.entries(F))if(t!==`default`&&e.startsWith(t))return n;return F.default}function L(e){if(e===0)return`0 B`;let t=[`B`,`KB`,`MB`,`GB`,`TB`],n=Math.floor(Math.log(e)/Math.log(1024));return`${(e/1024**n).toFixed(n>0?1:0)} ${t[n]}`}const R=()=>new Promise(e=>{typeof requestAnimationFrame==`function`?requestAnimationFrame(()=>e()):setTimeout(e,0)});function z(e){let t=v(0),n=v(0),r=i(()=>t.value>0);async function a(r,i){t.value+=1,n.value=0,i?.(0);let a=new j.ArrayBuffer,o=Math.max(1,Math.trunc(Number(e.value)||1)),s=Math.max(1,Math.ceil(r.size/o));try{if(r.size===0)return a.append(new ArrayBuffer(0)),n.value=100,i?.(100),a.end();for(let e=0;e<s;e+=1){let t=e*o,c=await r.slice(t,t+o).arrayBuffer();a.append(c),n.value=Math.round((e+1)/s*100),i?.(n.value),await R()}return a.end()}finally{t.value=Math.max(0,t.value-1)}}return{hashing:r,hashProgress:_(n),calculateHash:a}}function B(e){let t=new Map,n=new Map;function r(t){let n=Math.max(1,Math.trunc(Number(e.chunkSize.value)||1)),r=[],i=0,a=0;for(;a<t.size;){let e=Math.min(a+n,t.size);r.push({index:i,blob:t.slice(a,e),size:e-a,uploaded:!1}),a=e,i++}return r}async function i(t,n){if(e.uploadedChunksQuery?.value)try{let r=await e.uploadedChunksQuery.value(t);for(let e of r){let t=n[e];t&&(t.uploaded=!0)}}catch{}}function a(t){return new Promise((n,r)=>{let i=!1,a=()=>{i||(i=!0,n())},o=e=>{i||(i=!0,t.setError(),r(e instanceof Error?e:Error(String(e))))},s={action:e.action.value,headers:e.headers.value,data:{...e.data.value,hash:t.hash,chunkIndex:t.chunk.index,totalChunks:t.totalChunks,filename:t.file.name},file:t.chunk.blob,filename:t.file.name,hash:t.hash,chunkIndex:t.chunk.index,totalChunks:t.totalChunks,onProgress:()=>{},onSuccess:()=>{if(!i){if(t.isCancelled()){a();return}t.chunk.uploaded=!0,t.setUploadedBytes(t.chunk.size),t.onProgress({uploadedChunks:t.chunks.filter(e=>e.uploaded).length,totalChunks:t.totalChunks,uploadedBytes:t.chunks.filter(e=>e.uploaded).reduce((e,t)=>e+t.size,0),totalBytes:t.totalBytes}),a()}},onError:o};try{let n=e.customRequest?.value?e.customRequest.value(s):V(s);t.abortControllers.push(()=>{try{n.abort()}catch{}finally{a()}})}catch(e){o(e)}})}async function o(o){let{uid:c,file:l,hash:u,onProgress:d,onSuccess:f,onError:p,isPaused:m}=o,h=Symbol(c);n.set(c,h);let g=()=>n.get(c)!==h,_=()=>{g()||n.delete(c)},v=r(l),y=v.length,b=l.size,x=0;if(await i(u,v),g()||m()){_();return}x=v.filter(e=>e.uploaded).reduce((e,t)=>e+t.size,0),d({uploadedChunks:v.filter(e=>e.uploaded).length,totalChunks:y,uploadedBytes:x,totalBytes:b});let S=v.filter(e=>!e.uploaded);if(S.length===0){try{g()||await s(u,l.name,y,f,p,g)}finally{_()}return}let C=[];t.set(c,C);let w=Math.max(1,Math.trunc(Number(e.concurrency.value)||1)),T=0,E=!1;async function D(){for(;T<S.length&&!E&&!m()&&!g();){let e=S[T++];await a({chunk:e,hash:u,file:l,totalChunks:y,chunks:v,totalBytes:b,abortControllers:C,onProgress:e=>{g()||d(e)},setUploadedBytes:e=>{x+=e},setError:()=>{E=!0},isCancelled:g})}}let O=Array.from({length:Math.min(w,S.length)},()=>D());try{let e=(await Promise.allSettled(O)).find(e=>e.status===`rejected`);e&&!g()?p(e.reason instanceof Error?e.reason:Error(String(e.reason))):!E&&!m()&&!g()&&await s(u,l.name,y,f,p,g)}finally{g()||t.delete(c),_()}}async function s(t,n,r,i,a,o){if(e.mergeChunks?.value)try{let a=await e.mergeChunks.value(t,n,r);o()||i(a)}catch(e){o()||a(e instanceof Error?e:Error(`分片合并失败`))}else o()||i({message:`分片上传完成(未配置合并函数)`})}function c(e){n.delete(e),t.get(e)?.forEach(e=>e()),t.delete(e)}function l(){n.clear(),t.forEach(e=>{e.forEach(e=>e())}),t.clear()}return{createChunks:r,uploadChunks:o,abortUpload:c,abortAll:l}}function V(e){let t=new XMLHttpRequest;t.open(`POST`,e.action),e.headers&&Object.entries(e.headers).forEach(([e,n])=>{t.setRequestHeader(e,n)}),t.upload.addEventListener(`progress`,t=>{t.lengthComputable&&e.onProgress?.(Math.round(t.loaded/t.total*100))}),t.addEventListener(`load`,()=>{if(t.status>=200&&t.status<300){let n;try{n=JSON.parse(t.responseText)}catch{n=t.responseText}e.onSuccess?.(n)}else e.onError?.(Error(`上传失败: HTTP ${t.status}`))}),t.addEventListener(`error`,()=>{e.onError?.(Error(`网络错误`))}),t.addEventListener(`abort`,()=>{e.onError?.(new DOMException(`上传已取消`,`AbortError`))});let n=new FormData;return n.append(`file`,e.file,e.filename),e.data&&Object.entries(e.data).forEach(([e,t])=>{n.append(e,String(t))}),t.send(n),{abort:()=>t.abort()}}function H(e){return e instanceof Error?e:Error(String(e))}function U(e){let t=[],n=v(0),r=new Map,i=()=>{n.value=r.size},a=()=>Math.max(1,Math.trunc(Number(e.concurrency.value)||1));function o(){for(;r.size<a()&&t.length>0;){let n=t.shift(),{file:a}=n;if(!a.raw||r.has(a.uid))continue;let s=!1,c=e=>{s||(s=!0,r.delete(a.uid),i(),e?.error?n.onError(a.uid,e.error):e&&`response`in e&&n.onSuccess(a.uid,e.response),o())},l={action:e.action.value,headers:e.headers.value,data:e.data.value,file:a.raw,filename:a.name,onProgress:e=>n.onProgress(a.uid,e),onSuccess:e=>c({response:e}),onError:e=>c({error:e})};r.set(a.uid,{abort:()=>void 0,settle:c}),i();try{let t=e.customRequest?.value?e.customRequest.value(l):W(l),n=r.get(a.uid);n&&(n.abort=t.abort)}catch(e){c({error:H(e)})}}}function s(e,n,r,i){c(e.uid),t.push({file:e,onProgress:n,onSuccess:r,onError:i}),o()}function c(e){for(let n=t.length-1;n>=0;--n)t[n].file.uid===e&&t.splice(n,1);let n=r.get(e);if(n){n.settle();try{n.abort()}catch{}}}function l(){t.length=0;let e=[...r.values()];r.clear(),i(),e.forEach(e=>{e.settle();try{e.abort()}catch{}})}return C(e.concurrency,o),{activeCount:_(n),enqueue:s,abort:c,abortAll:l}}function W(e){let t=new XMLHttpRequest;t.open(`POST`,e.action),Object.entries(e.headers??{}).forEach(([e,n])=>{t.setRequestHeader(e,n)}),t.upload.addEventListener(`progress`,t=>{t.lengthComputable&&e.onProgress?.(Math.round(t.loaded/t.total*100))}),t.addEventListener(`load`,()=>{if(t.status>=200&&t.status<300){let n=t.responseText;try{n=JSON.parse(t.responseText)}catch{}e.onSuccess?.(n)}else e.onError?.(Error(`上传失败: HTTP ${t.status}`))}),t.addEventListener(`error`,()=>e.onError?.(Error(`网络错误`)));let n=new FormData;return n.append(`file`,e.file,e.filename),Object.entries(e.data??{}).forEach(([e,t])=>{n.append(e,String(t))}),t.send(n),{abort:()=>t.abort()}}function G(e){let t=i(()=>e.action??``),n=i(()=>e.headers??{}),r=i(()=>e.data??{}),a=i(()=>{let t=Math.trunc(Number(e.chunkSize));return Number.isFinite(t)&&t>0?t:M}),o=i(()=>{let t=Math.trunc(Number(e.concurrency));return Number.isFinite(t)&&t>0?t:3}),s=i(()=>e.customRequest),c=i(()=>e.instantCheck),l=i(()=>e.uploadedChunksQuery),u=i(()=>e.mergeChunks),d=v((e.defaultFileList??[]).map(e=>({...e}))),f=g(new Set),m=new Map,h=new Set,{hashing:_,hashProgress:y,calculateHash:b}=z(a),x=B({chunkSize:a,concurrency:o,action:t,headers:n,data:r,customRequest:s,uploadedChunksQuery:l,mergeChunks:u}),S=U({concurrency:o,action:t,headers:n,data:r,customRequest:s}),C=i(()=>{let e=d.value;if(e.length===0)return 0;let t=e.reduce((e,t)=>e+t.percent,0);return Math.round(t/e.length)});function w(){return typeof crypto<`u`&&`randomUUID`in crypto?`upload-${crypto.randomUUID()}`:`upload-${Date.now()}-${Math.random().toString(36).slice(2,10)}`}function T(e){if(e.type.startsWith(`image/`)){let t=URL.createObjectURL(e);return h.add(t),t}}function E(t){let n=[];for(let r of t){if(Number.isFinite(e.maxCount)&&(e.maxCount??0)>0&&d.value.length+n.length>=Math.trunc(e.maxCount))break;let t={uid:w(),name:r.name,size:r.size,type:r.type,status:`pending`,percent:0,raw:r,thumbUrl:T(r)};n.push(t)}return d.value.push(...n),n}function D(e,t){let n=d.value.find(t=>t.uid===e);n&&Object.assign(n,t)}function O(e){m.set(e,Symbol(e)),x.abortUpload(e),S.abort(e),f.delete(e);let t=d.value.findIndex(t=>t.uid===e);if(t!==-1){let e=d.value[t];j(e.thumbUrl),d.value.splice(t,1)}}function k(){x.abortAll(),S.abortAll(),f.clear(),d.value.forEach(e=>{j(e.thumbUrl)}),d.value=[],m.clear()}async function A(t){if((e.maxSize??0)>0&&t.size>e.maxSize)return null;if(e.beforeUpload){let n=await e.beforeUpload(t);if(n===!1)return null;if(n instanceof File)return(e.maxSize??0)>0&&n.size>e.maxSize?null:n}return t}function j(e){!e||!h.has(e)||(URL.revokeObjectURL(e),h.delete(e))}function N(e,t){return m.get(e)===t&&!f.has(e)&&d.value.some(t=>t.uid===e)}function P(e,t){return b(e.raw,n=>{N(e.uid,t)&&D(e.uid,{percent:n})})}async function F(n){if(!n.raw)return;let r=Symbol(n.uid);m.set(n.uid,r),D(n.uid,{status:`validating`,error:void 0});let i;try{i=await A(n.raw)}catch(e){N(n.uid,r)&&D(n.uid,{status:`error`,error:e instanceof Error?e.message:`文件校验失败`});return}if(N(n.uid,r)){if(!i){D(n.uid,{status:`error`,error:`文件校验未通过`});return}if(i!==n.raw&&(j(n.thumbUrl),Object.assign(n,{raw:i,name:i.name,size:i.size,type:i.type,hash:void 0,chunkProgress:void 0,thumbUrl:T(i)})),!s.value&&!t.value.trim()){D(n.uid,{status:`error`,error:`未配置上传地址`});return}if(c.value&&!n.hash){D(n.uid,{status:`hashing`});try{let e=await P(n,r);if(!N(n.uid,r))return;D(n.uid,{hash:e});let t=await c.value(e,n.raw.name);if(!N(n.uid,r))return;if(t.exists){D(n.uid,{status:`instant`,percent:100,url:t.url});return}}catch{if(!N(n.uid,r))return}}e.chunked&&n.raw.size>a.value?await I(n,r):L(n,r)}}async function I(e,t){let n=e.raw,{hash:r}=e;if(!r){D(e.uid,{status:`hashing`});try{if(r=await P(e,t),!N(e.uid,t))return;D(e.uid,{hash:r})}catch{N(e.uid,t)&&D(e.uid,{status:`error`,error:`Hash 计算失败`});return}}D(e.uid,{status:`uploading`,percent:0}),await x.uploadChunks({uid:e.uid,file:n,hash:r,onProgress:n=>{if(!N(e.uid,t))return;let r=Math.round(n.uploadedBytes/n.totalBytes*100);D(e.uid,{percent:r,chunkProgress:n})},onSuccess:n=>{N(e.uid,t)&&D(e.uid,{status:`success`,percent:100,response:n})},onError:n=>{N(e.uid,t)&&D(e.uid,{status:`error`,error:n.message})},isPaused:()=>f.has(e.uid)})}function L(e,t){D(e.uid,{status:`uploading`,percent:0}),S.enqueue(e,(e,n)=>{N(e,t)&&D(e,{percent:n})},(e,n)=>{N(e,t)&&D(e,{status:`success`,percent:100,response:n})},(e,n)=>{N(e,t)&&D(e,{status:`error`,error:n.message})})}function R(){d.value.filter(e=>e.status===`pending`).forEach(e=>void F(e))}function V(){d.value.forEach(e=>{(e.status===`uploading`||e.status===`hashing`||e.status===`validating`)&&(f.add(e.uid),m.set(e.uid,Symbol(e.uid)),x.abortUpload(e.uid),S.abort(e.uid),D(e.uid,{status:`paused`}))})}function H(){d.value.forEach(e=>{e.status===`paused`&&(f.delete(e.uid),D(e.uid,{status:`pending`}))}),R()}function W(e){let t=d.value.find(t=>t.uid===e);t&&t.status===`error`&&(D(e,{status:`pending`,percent:0,error:void 0}),F(t))}function G(){return d.value.filter(e=>e.status===`success`||e.status===`instant`)}return p(()=>{x.abortAll(),S.abortAll(),m.clear(),d.value.forEach(e=>{j(e.thumbUrl)})}),{fileList:d,totalPercent:C,hashing:_,hashProgress:y,addFiles:E,removeFile:O,clearAll:k,startUpload:R,pauseAll:V,resumeAll:H,retryFile:W,processFile:F,getSuccessList:G}}function K(e,t,n,r,i){let a=v(!1),o=null,s=!1;function c(e){t.value&&(e.preventDefault(),a.value=!0)}function l(e){t.value&&(e.preventDefault(),a.value=!0)}function u(n){if(!t.value)return;n.preventDefault();let r=e.value;r&&!r.contains(n.relatedTarget)&&(a.value=!1)}async function d(e){if(!t.value)return;e.preventDefault(),a.value=!1;let n=e.dataTransfer?.items;if(!n)return;let o=await ee(n,e.dataTransfer);if(s||!t.value)return;let c=J(o,r.value);c.length>0&&i(c)}function f(e){if(!n.value)return;let t=e.clipboardData?.items;if(!t)return;let a=[];for(let e=0;e<t.length;e++){let n=t[e];if(n.kind===`file`){let e=n.getAsFile();e&&a.push(e)}}let o=J(a,r.value);o.length>0&&(e.preventDefault(),i(o))}function h(){let t=e.value;!t||o===t||(o=t,t.addEventListener(`dragenter`,c),t.addEventListener(`dragover`,l),t.addEventListener(`dragleave`,u),t.addEventListener(`drop`,d),n.value&&t.addEventListener(`paste`,f))}function g(){let e=o;e&&(e.removeEventListener(`dragenter`,c),e.removeEventListener(`dragover`,l),e.removeEventListener(`dragleave`,u),e.removeEventListener(`drop`,d)),e?.removeEventListener(`paste`,f),o=null}return m(()=>{s=!1,h()}),p(()=>{s=!0,g()}),C([e,t,n],()=>{g(),h()}),{isDragOver:_(a)}}async function ee(e,t){let n=[];for(let t=0;t<e.length;t++){let r=e[t].webkitGetAsEntry?.();r&&n.push(r)}if(n.length>0)return(await Promise.all(n.map(q))).flat();let r=[],i=t?.files;if(i)for(let e=0;e<i.length;e++)r.push(i[e]);return r}async function q(e){if(e.isFile)return new Promise(t=>{e.file(e=>t([e]),()=>t([]))});if(e.isDirectory){let t=e.createReader(),n=[];for(;;){let e=await new Promise(e=>{t.readEntries(t=>e(t),()=>e([]))});if(e.length===0)break;n.push(...e)}return(await Promise.all(n.map(q))).flat()}return[]}function J(e,t){if(!t)return e;let n=t.split(`,`).map(e=>e.trim().toLowerCase()).filter(Boolean);return n.length===0?e:e.filter(e=>n.some(t=>{if(t.startsWith(`.`))return e.name.toLowerCase().endsWith(t);if(t.endsWith(`/*`)){let n=t.replace(`/*`,``);return e.type.toLowerCase().startsWith(`${n}/`)}return e.type.toLowerCase()===t}))}const Y=[`tabindex`,`aria-disabled`,`onKeydown`],X=[`accept`,`multiple`,`webkitdirectory`,`disabled`],Z={class:`upload-area__default`},Q={class:`upload-area__text`},te={key:0},ne={key:1},re={key:0,class:`upload-area__tip`};var ie=t(d({__name:`UploadArea`,props:{accept:{default:``},multiple:{type:Boolean,default:!1},directory:{type:Boolean,default:!1},disabled:{type:Boolean,default:!1},draggable:{type:Boolean,default:!0},pasteable:{type:Boolean,default:!1},tip:{default:``}},emits:[`files`],setup(t,{expose:r,emit:a}){let d=t,p=a,m=v(),g=v(),{isDragOver:_}=K(m,i(()=>d.draggable&&!d.disabled),i(()=>d.pasteable&&!d.disabled),i(()=>d.accept),e=>p(`files`,e));function y(){d.disabled||g.value?.click()}function C(e){let t=e.target,n=d.disabled?[]:J(Array.from(t.files??[]),d.accept);n.length>0&&p(`files`,n),t.value=``}return r({triggerSelect:y}),(r,i)=>(h(),s(`div`,{ref_key:`areaRef`,ref:m,class:f([`upload-area`,{"upload-area--drag-over":S(_),"upload-area--disabled":t.disabled}]),role:`button`,tabindex:t.disabled?-1:0,"aria-disabled":t.disabled,onClick:y,onKeydown:[T(E(y,[`prevent`]),[`enter`]),T(E(y,[`prevent`]),[`space`])]},[c(`input`,{ref_key:`inputRef`,ref:g,type:`file`,class:`upload-area__input`,accept:t.accept,multiple:t.multiple,webkitdirectory:t.directory||void 0,disabled:t.disabled,onClick:i[0]||=E(()=>{},[`stop`]),onChange:C},null,40,X),b(r.$slots,`default`,{},()=>[c(`div`,Z,[u(e,{name:S(_)?`mdi:cloud-download-outline`:`mdi:cloud-upload-outline`,class:`upload-area__icon`},null,8,[`name`]),c(`div`,Q,[S(_)?(h(),s(`span`,te,`释放文件到此处`)):(h(),s(`span`,ne,[i[4]||=l(` 点击或拖拽文件到此区域上传 `,-1),t.pasteable?(h(),s(n,{key:0},[i[1]||=l(` ,支持 `,-1),i[2]||=c(`kbd`,null,`Ctrl+V`,-1),i[3]||=l(` 粘贴 `,-1)],64)):o(`v-if`,!0)]))]),t.tip?(h(),s(`div`,re,x(t.tip),1)):o(`v-if`,!0)])],!0)],42,Y))}}),[[`__scopeId`,`data-v-f0ba26e3`]]);const ae={class:`file-list__thumb`},oe=[`src`,`alt`],se={class:`file-list__info`},ce={class:`file-list__name`},le={class:`file-list__meta`},ue={class:`file-list__size`},de={key:0,class:`file-list__instant`},fe={key:1,class:`file-list__chunk-info`},pe={key:2,class:`file-list__error`},me={class:`file-list__actions`};var he=t(d({__name:`FileList`,props:{fileList:{},showThumbnail:{type:Boolean}},emits:[`remove`,`retry`],setup(t,{emit:i}){let d=i;return(i,p)=>(h(),a(r,{name:`file-list`,tag:`div`,class:`file-list`},{default:w(()=>[(h(!0),s(n,null,y(t.fileList,n=>(h(),s(`div`,{key:n.uid,class:f([`file-list__item`,`file-list__item--${n.status}`])},[o(` 缩略图 / 图标 `),c(`div`,ae,[t.showThumbnail&&n.thumbUrl?(h(),s(`img`,{key:0,src:n.thumbUrl,alt:n.name,class:`file-list__thumb-img`},null,8,oe)):(h(),a(e,{key:1,name:S(I)(n.type),class:`file-list__thumb-icon`},null,8,[`name`]))]),o(` 文件信息 `),c(`div`,se,[c(`div`,ce,[u(S(O),{"line-clamp":1},{default:w(()=>[l(x(n.name),1)]),_:2},1024)]),c(`div`,le,[c(`span`,ue,x(S(L)(n.size)),1),u(S(A),{type:S(P)[n.status]||`default`,size:`tiny`,bordered:!1},{default:w(()=>[l(x(S(N)[n.status]||n.status),1)]),_:2},1032,[`type`]),n.status===`instant`?(h(),s(`span`,de,` ⚡ `)):o(`v-if`,!0)]),o(` 进度条 `),n.status===`uploading`||n.status===`hashing`?(h(),a(S(k),{key:0,percentage:n.percent,height:4,"border-radius":2,"show-indicator":!1,status:n.status===`hashing`?`info`:`success`},null,8,[`percentage`,`status`])):o(`v-if`,!0),o(` 分片进度描述 `),n.chunkProgress&&n.status===`uploading`?(h(),s(`div`,fe,` 分片 `+x(n.chunkProgress.uploadedChunks)+`/`+x(n.chunkProgress.totalChunks),1)):o(`v-if`,!0),o(` 错误信息 `),n.status===`error`&&n.error?(h(),s(`div`,pe,x(n.error),1)):o(`v-if`,!0)]),o(` 操作按钮 `),c(`div`,me,[n.status===`error`?(h(),a(S(D),{key:0,text:``,type:`warning`,size:`tiny`,"aria-label":`重试上传`,onClick:e=>d(`retry`,n.uid)},{icon:w(()=>[u(e,{name:`mdi:refresh`})]),_:1},8,[`onClick`])):o(`v-if`,!0),u(S(D),{text:``,type:`error`,size:`tiny`,"aria-label":`移除文件`,onClick:e=>d(`remove`,n.uid)},{icon:w(()=>[u(e,{name:`mdi:close`})]),_:1},8,[`onClick`])])],2))),128))]),_:1}))}}),[[`__scopeId`,`data-v-4cf56679`]]);const ge={key:0,class:`image-preview`},_e=[`src`,`alt`],$={class:`image-preview__overlay`},ve={key:0,class:`image-preview__progress`},ye={class:`image-preview__actions`},be={class:`image-preview__name`};var xe=t(d({__name:`ImagePreview`,props:{fileList:{}},emits:[`remove`,`retry`],setup(t,{emit:r}){let d=t,p=r,m=i(()=>d.fileList.filter(e=>e.type?.startsWith(`image/`)));return(t,r)=>m.value.length>0?(h(),s(`div`,ge,[(h(!0),s(n,null,y(m.value,t=>(h(),s(`div`,{key:t.uid,class:f([`image-preview__item`,`image-preview__item--${t.status}`])},[t.thumbUrl?(h(),s(`img`,{key:0,src:t.thumbUrl,alt:t.name,class:`image-preview__img`},null,8,_e)):o(`v-if`,!0),o(` 遮罩层 `),c(`div`,$,[o(` 上传中进度 `),t.status===`uploading`||t.status===`hashing`?(h(),s(`div`,ve,[u(S(k),{type:`circle`,percentage:t.percent,"stroke-width":3,style:{width:`40px`}},null,8,[`percentage`])])):t.status===`success`||t.status===`instant`?(h(),s(n,{key:1},[o(` 状态图标 `),u(e,{name:`mdi:check-circle`,class:`image-preview__status-icon image-preview__status-icon--success`})],2112)):t.status===`error`?(h(),a(e,{key:2,name:`mdi:alert-circle`,class:`image-preview__status-icon image-preview__status-icon--error`})):o(`v-if`,!0),o(` 操作 `),c(`div`,ye,[t.status===`error`?(h(),a(S(D),{key:0,circle:``,size:`tiny`,type:`warning`,"aria-label":`重试上传`,onClick:e=>p(`retry`,t.uid)},{icon:w(()=>[u(e,{name:`mdi:refresh`})]),_:1},8,[`onClick`])):o(`v-if`,!0),u(S(D),{circle:``,size:`tiny`,type:`error`,"aria-label":`移除文件`,onClick:e=>p(`remove`,t.uid)},{icon:w(()=>[u(e,{name:`mdi:close`})]),_:1},8,[`onClick`])])]),o(` 文件名 `),c(`div`,be,[u(S(O),{"line-clamp":1},{default:w(()=>[l(x(t.name),1)]),_:2},1024)])],2))),128))])):o(`v-if`,!0)}}),[[`__scopeId`,`data-v-a5f9d244`]]);const Se={class:`c-upload`},Ce={key:0,class:`c-upload__total-progress`},we={class:`c-upload__total-label`};var Te=t(d({__name:`index`,props:{action:{default:``},headers:{default:()=>({})},data:{default:()=>({})},multiple:{type:Boolean,default:!1},directory:{type:Boolean,default:!1},accept:{default:``},maxSize:{default:0},maxCount:{default:0},disabled:{type:Boolean,default:!1},draggable:{type:Boolean,default:!0},pasteable:{type:Boolean,default:!1},chunked:{type:Boolean,default:!1},chunkSize:{default:M},concurrency:{default:3},showFileList:{type:Boolean,default:!0},listType:{default:`text`},showThumbnail:{type:Boolean,default:!0},customRequest:{},instantCheck:{},uploadedChunksQuery:{},mergeChunks:{},beforeUpload:{},tip:{default:``},defaultFileList:{default:()=>[]}},emits:[`change`,`success`,`error`,`progress`,`remove`,`finish`,`exceed`],setup(e,{expose:t,emit:r}){let l=e,d=r,f=v(),{fileList:p,totalPercent:m,addFiles:g,removeFile:_,clearAll:y,startUpload:T,pauseAll:E,resumeAll:D,retryFile:O,processFile:A,getSuccessList:j}=G(l),M=i(()=>p.value.some(e=>e.status===`uploading`||e.status===`hashing`||e.status===`validating`)),N=e=>({...e}),P=()=>p.value.map(N);function F(e){let t=Math.max(0,Math.trunc(Number(l.maxCount)||0));if(t>0&&p.value.length+e.length>t){d(`exceed`,e,P());let n=t-p.value.length;if(n<=0)return;e=e.slice(0,n)}let n=g(e);d(`change`,P()),n.forEach(e=>void A(e))}function I(e){let t=p.value.find(t=>t.uid===e);t&&(d(`remove`,N(t)),_(e),d(`change`,P()))}function L(e){O(e)}let R=new Map,z=!1;return C(p,e=>{let t=new Set(e.map(e=>e.uid));R.forEach((e,n)=>{t.has(n)||R.delete(n)}),e.forEach(e=>{let t=R.get(e.uid);t&&t.percent!==e.percent&&d(`progress`,N(e),e.percent),t&&t.status!==e.status&&(e.status===`success`||e.status===`instant`)&&d(`success`,N(e),e.response),t&&t.status!==`error`&&e.status===`error`&&d(`error`,N(e),Error(e.error||`上传失败`)),R.set(e.uid,{status:e.status,percent:e.percent})}),e.length>0&&e.every(e=>e.status===`success`||e.status===`instant`||e.status===`error`)?(z||d(`finish`,P()),z=!0):z=!1},{deep:!0}),t({selectFiles:()=>f.value?.triggerSelect(),startUpload:T,pauseAll:E,resumeAll:D,clearAll:()=>{y(),d(`change`,P())},removeFile:e=>{I(e)},retryFile:O,getFileList:P,getSuccessList:()=>j().map(N),get totalPercent(){return m.value}}),(e,t)=>(h(),s(`div`,Se,[o(` 上传区域 `),u(ie,{ref_key:`uploadAreaRef`,ref:f,accept:l.accept,multiple:l.multiple,directory:l.directory,disabled:l.disabled,draggable:l.draggable,pasteable:l.pasteable,tip:l.tip,onFiles:F},{default:w(()=>[b(e.$slots,`area`,{},void 0,!0)]),_:3},8,[`accept`,`multiple`,`directory`,`disabled`,`draggable`,`pasteable`,`tip`]),o(` 总进度条 `),M.value?(h(),s(`div`,Ce,[c(`div`,we,[t[0]||=c(`span`,null,`总进度`,-1),c(`span`,null,x(S(m))+`%`,1)]),u(S(k),{percentage:S(m),height:6,"border-radius":3,"show-indicator":!1,status:`success`},null,8,[`percentage`])])):o(`v-if`,!0),o(` 图片预览模式 `),l.listType===`image`?(h(),a(xe,{key:1,"file-list":S(p),onRemove:I,onRetry:L},null,8,[`file-list`])):l.showFileList&&S(p).length>0?(h(),s(n,{key:2},[o(` 文件列表模式 `),u(he,{"file-list":S(p),"show-thumbnail":l.showThumbnail,onRemove:I,onRetry:L},null,8,[`file-list`,`show-thumbnail`])],2112)):o(`v-if`,!0)]))}}),[[`__scopeId`,`data-v-0739f585`]]);export{B as a,I as c,U as i,K as n,z as o,G as r,L as s,Te as t};
|
|
1
|
+
import{t as e}from"./C_Icon2.js";import{t}from"./export-helper.js";import{Fragment as n,TransitionGroup as r,computed as i,createBlock as a,createCommentVNode as o,createElementBlock as s,createElementVNode as c,createTextVNode as l,createVNode as u,defineComponent as d,normalizeClass as f,onBeforeUnmount as p,onMounted as m,openBlock as h,reactive as g,readonly as _,ref as v,renderList as y,renderSlot as b,toDisplayString as x,unref as S,watch as C,withCtx as w,withKeys as T,withModifiers as E}from"vue";import{NButton as D,NEllipsis as O,NProgress as k,NTag as A}from"naive-ui";import j from"spark-md5";const M=2*1024*1024,N={pending:`等待上传`,validating:`校验文件…`,hashing:`计算校验…`,uploading:`上传中…`,success:`上传成功`,error:`上传失败`,paused:`已暂停`,instant:`秒传成功`},P={pending:`default`,validating:`info`,hashing:`info`,uploading:`info`,success:`success`,error:`error`,paused:`warning`,instant:`success`},F={"image/":`mdi:file-image-outline`,"video/":`mdi:file-video-outline`,"audio/":`mdi:file-music-outline`,"application/pdf":`mdi:file-pdf-box`,"application/zip":`mdi:folder-zip-outline`,"application/x-rar":`mdi:folder-zip-outline`,"application/vnd.ms-excel":`mdi:file-excel-outline`,"application/vnd.openxmlformats-officedocument.spreadsheetml":`mdi:file-excel-outline`,"application/msword":`mdi:file-word-outline`,"application/vnd.openxmlformats-officedocument.wordprocessingml":`mdi:file-word-outline`,"text/":`mdi:file-document-outline`,default:`mdi:file-outline`};function I(e){for(let[t,n]of Object.entries(F))if(t!==`default`&&e.startsWith(t))return n;return F.default}function L(e){if(e===0)return`0 B`;let t=[`B`,`KB`,`MB`,`GB`,`TB`],n=Math.floor(Math.log(e)/Math.log(1024));return`${(e/1024**n).toFixed(n>0?1:0)} ${t[n]}`}const R=()=>new Promise(e=>{typeof requestAnimationFrame==`function`?requestAnimationFrame(()=>e()):setTimeout(e,0)});function z(e){let t=v(0),n=v(0),r=i(()=>t.value>0);async function a(r,i){t.value+=1,n.value=0,i?.(0);let a=new j.ArrayBuffer,o=Math.max(1,Math.trunc(Number(e.value)||1)),s=Math.max(1,Math.ceil(r.size/o));try{if(r.size===0)return a.append(new ArrayBuffer(0)),n.value=100,i?.(100),a.end();for(let e=0;e<s;e+=1){let t=e*o,c=await r.slice(t,t+o).arrayBuffer();a.append(c),n.value=Math.round((e+1)/s*100),i?.(n.value),await R()}return a.end()}finally{t.value=Math.max(0,t.value-1)}}return{hashing:r,hashProgress:_(n),calculateHash:a}}function B(e){let t=new Map,n=new Map;function r(t){let n=Math.max(1,Math.trunc(Number(e.chunkSize.value)||1)),r=[],i=0,a=0;for(;a<t.size;){let e=Math.min(a+n,t.size);r.push({index:i,blob:t.slice(a,e),size:e-a,uploaded:!1}),a=e,i++}return r}async function i(t,n){if(e.uploadedChunksQuery?.value)try{let r=await e.uploadedChunksQuery.value(t);for(let e of r){let t=n[e];t&&(t.uploaded=!0)}}catch{}}function a(t){return new Promise((n,r)=>{let i=!1,a=()=>{i||(i=!0,n())},o=e=>{i||(i=!0,t.setError(),r(e instanceof Error?e:Error(String(e))))},s={action:e.action.value,headers:e.headers.value,data:{...e.data.value,hash:t.hash,chunkIndex:t.chunk.index,totalChunks:t.totalChunks,filename:t.file.name},file:t.chunk.blob,filename:t.file.name,hash:t.hash,chunkIndex:t.chunk.index,totalChunks:t.totalChunks,onProgress:()=>{},onSuccess:()=>{if(!i){if(t.isCancelled()){a();return}t.chunk.uploaded=!0,t.setUploadedBytes(t.chunk.size),t.onProgress({uploadedChunks:t.chunks.filter(e=>e.uploaded).length,totalChunks:t.totalChunks,uploadedBytes:t.chunks.filter(e=>e.uploaded).reduce((e,t)=>e+t.size,0),totalBytes:t.totalBytes}),a()}},onError:o};try{let n=e.customRequest?.value?e.customRequest.value(s):V(s);t.abortControllers.push(()=>{try{n.abort()}catch{}finally{a()}})}catch(e){o(e)}})}async function o(o){let{uid:c,file:l,hash:u,onProgress:d,onSuccess:f,onError:p,isPaused:m}=o,h=Symbol(c);n.set(c,h);let g=()=>n.get(c)!==h,_=()=>{g()||n.delete(c)},v=r(l),y=v.length,b=l.size,x=0;if(await i(u,v),g()||m()){_();return}x=v.filter(e=>e.uploaded).reduce((e,t)=>e+t.size,0),d({uploadedChunks:v.filter(e=>e.uploaded).length,totalChunks:y,uploadedBytes:x,totalBytes:b});let S=v.filter(e=>!e.uploaded);if(S.length===0){try{g()||await s(u,l.name,y,f,p,g)}finally{_()}return}let C=[];t.set(c,C);let w=Math.max(1,Math.trunc(Number(e.concurrency.value)||1)),T=0,E=!1;async function D(){for(;T<S.length&&!E&&!m()&&!g();){let e=S[T++];await a({chunk:e,hash:u,file:l,totalChunks:y,chunks:v,totalBytes:b,abortControllers:C,onProgress:e=>{g()||d(e)},setUploadedBytes:e=>{x+=e},setError:()=>{E=!0},isCancelled:g})}}let O=Array.from({length:Math.min(w,S.length)},()=>D());try{let e=(await Promise.allSettled(O)).find(e=>e.status===`rejected`);e&&!g()?p(e.reason instanceof Error?e.reason:Error(String(e.reason))):!E&&!m()&&!g()&&await s(u,l.name,y,f,p,g)}finally{g()||t.delete(c),_()}}async function s(t,n,r,i,a,o){if(e.mergeChunks?.value)try{let a=await e.mergeChunks.value(t,n,r);o()||i(a)}catch(e){o()||a(e instanceof Error?e:Error(`分片合并失败`))}else o()||i({message:`分片上传完成(未配置合并函数)`})}function c(e){n.delete(e),t.get(e)?.forEach(e=>e()),t.delete(e)}function l(){n.clear(),t.forEach(e=>{e.forEach(e=>e())}),t.clear()}return{createChunks:r,uploadChunks:o,abortUpload:c,abortAll:l}}function V(e){let t=new XMLHttpRequest;t.open(`POST`,e.action),e.headers&&Object.entries(e.headers).forEach(([e,n])=>{t.setRequestHeader(e,n)}),t.upload.addEventListener(`progress`,t=>{t.lengthComputable&&e.onProgress?.(Math.round(t.loaded/t.total*100))}),t.addEventListener(`load`,()=>{if(t.status>=200&&t.status<300){let n;try{n=JSON.parse(t.responseText)}catch{n=t.responseText}e.onSuccess?.(n)}else e.onError?.(Error(`上传失败: HTTP ${t.status}`))}),t.addEventListener(`error`,()=>{e.onError?.(Error(`网络错误`))}),t.addEventListener(`abort`,()=>{e.onError?.(new DOMException(`上传已取消`,`AbortError`))});let n=new FormData;return n.append(`file`,e.file,e.filename),e.data&&Object.entries(e.data).forEach(([e,t])=>{n.append(e,String(t))}),t.send(n),{abort:()=>t.abort()}}function H(e){return e instanceof Error?e:Error(String(e))}function U(e){let t=[],n=v(0),r=new Map,i=()=>{n.value=r.size},a=()=>Math.max(1,Math.trunc(Number(e.concurrency.value)||1));function o(){for(;r.size<a()&&t.length>0;){let n=t.shift(),{file:a}=n;if(!a.raw||r.has(a.uid))continue;let s=!1,c=e=>{s||(s=!0,r.delete(a.uid),i(),e?.error?n.onError(a.uid,e.error):e&&`response`in e&&n.onSuccess(a.uid,e.response),o())},l={action:e.action.value,headers:e.headers.value,data:e.data.value,file:a.raw,filename:a.name,onProgress:e=>n.onProgress(a.uid,e),onSuccess:e=>c({response:e}),onError:e=>c({error:e})};r.set(a.uid,{abort:()=>void 0,settle:c}),i();try{let t=e.customRequest?.value?e.customRequest.value(l):W(l),n=r.get(a.uid);n&&(n.abort=t.abort)}catch(e){c({error:H(e)})}}}function s(e,n,r,i){c(e.uid),t.push({file:e,onProgress:n,onSuccess:r,onError:i}),o()}function c(e){for(let n=t.length-1;n>=0;--n)t[n].file.uid===e&&t.splice(n,1);let n=r.get(e);if(n){n.settle();try{n.abort()}catch{}}}function l(){t.length=0;let e=[...r.values()];r.clear(),i(),e.forEach(e=>{e.settle();try{e.abort()}catch{}})}return C(e.concurrency,o),{activeCount:_(n),enqueue:s,abort:c,abortAll:l}}function W(e){let t=new XMLHttpRequest;t.open(`POST`,e.action),Object.entries(e.headers??{}).forEach(([e,n])=>{t.setRequestHeader(e,n)}),t.upload.addEventListener(`progress`,t=>{t.lengthComputable&&e.onProgress?.(Math.round(t.loaded/t.total*100))}),t.addEventListener(`load`,()=>{if(t.status>=200&&t.status<300){let n=t.responseText;try{n=JSON.parse(t.responseText)}catch{}e.onSuccess?.(n)}else e.onError?.(Error(`上传失败: HTTP ${t.status}`))}),t.addEventListener(`error`,()=>e.onError?.(Error(`网络错误`)));let n=new FormData;return n.append(`file`,e.file,e.filename),Object.entries(e.data??{}).forEach(([e,t])=>{n.append(e,String(t))}),t.send(n),{abort:()=>t.abort()}}function G(e){let t=i(()=>e.action??``),n=i(()=>e.headers??{}),r=i(()=>e.data??{}),a=i(()=>{let t=Math.trunc(Number(e.chunkSize));return Number.isFinite(t)&&t>0?t:M}),o=i(()=>{let t=Math.trunc(Number(e.concurrency));return Number.isFinite(t)&&t>0?t:3}),s=i(()=>e.customRequest),c=i(()=>e.instantCheck),l=i(()=>e.uploadedChunksQuery),u=i(()=>e.mergeChunks),d=v((e.defaultFileList??[]).map(e=>({...e}))),f=g(new Set),m=new Map,h=new Set,{hashing:_,hashProgress:y,calculateHash:b}=z(a),x=B({chunkSize:a,concurrency:o,action:t,headers:n,data:r,customRequest:s,uploadedChunksQuery:l,mergeChunks:u}),S=U({concurrency:o,action:t,headers:n,data:r,customRequest:s}),C=i(()=>{let e=d.value;if(e.length===0)return 0;let t=e.reduce((e,t)=>e+t.percent,0);return Math.round(t/e.length)});function w(){return typeof crypto<`u`&&`randomUUID`in crypto?`upload-${crypto.randomUUID()}`:`upload-${Date.now()}-${Math.random().toString(36).slice(2,10)}`}function T(e){if(e.type.startsWith(`image/`)){let t=URL.createObjectURL(e);return h.add(t),t}}function E(t){let n=[];for(let r of t){if(Number.isFinite(e.maxCount)&&(e.maxCount??0)>0&&d.value.length+n.length>=Math.trunc(e.maxCount))break;let t={uid:w(),name:r.name,size:r.size,type:r.type,status:`pending`,percent:0,raw:r,thumbUrl:T(r)};n.push(t)}return d.value.push(...n),n}function D(e,t){let n=d.value.find(t=>t.uid===e);n&&Object.assign(n,t)}function O(e){m.set(e,Symbol(e)),x.abortUpload(e),S.abort(e),f.delete(e);let t=d.value.findIndex(t=>t.uid===e);if(t!==-1){let e=d.value[t];j(e.thumbUrl),d.value.splice(t,1)}}function k(){x.abortAll(),S.abortAll(),f.clear(),d.value.forEach(e=>{j(e.thumbUrl)}),d.value=[],m.clear()}async function A(t){if((e.maxSize??0)>0&&t.size>e.maxSize)return null;if(e.beforeUpload){let n=await e.beforeUpload(t);if(n===!1)return null;if(n instanceof File)return(e.maxSize??0)>0&&n.size>e.maxSize?null:n}return t}function j(e){!e||!h.has(e)||(URL.revokeObjectURL(e),h.delete(e))}function N(e,t){return m.get(e)===t&&!f.has(e)&&d.value.some(t=>t.uid===e)}function P(e,t){return b(e.raw,n=>{N(e.uid,t)&&D(e.uid,{percent:n})})}async function F(n){if(!n.raw)return;let r=Symbol(n.uid);m.set(n.uid,r),D(n.uid,{status:`validating`,error:void 0});let i;try{i=await A(n.raw)}catch(e){N(n.uid,r)&&D(n.uid,{status:`error`,error:e instanceof Error?e.message:`文件校验失败`});return}if(N(n.uid,r)){if(!i){D(n.uid,{status:`error`,error:`文件校验未通过`});return}if(i!==n.raw&&(j(n.thumbUrl),Object.assign(n,{raw:i,name:i.name,size:i.size,type:i.type,hash:void 0,chunkProgress:void 0,thumbUrl:T(i)})),!s.value&&!t.value.trim()){D(n.uid,{status:`error`,error:`未配置上传地址`});return}if(c.value&&!n.hash){D(n.uid,{status:`hashing`});try{let e=await P(n,r);if(!N(n.uid,r))return;D(n.uid,{hash:e});let t=await c.value(e,n.raw.name);if(!N(n.uid,r))return;if(t.exists){D(n.uid,{status:`instant`,percent:100,url:t.url});return}}catch{if(!N(n.uid,r))return}}e.chunked&&n.raw.size>a.value?await I(n,r):L(n,r)}}async function I(e,t){let n=e.raw,{hash:r}=e;if(!r){D(e.uid,{status:`hashing`});try{if(r=await P(e,t),!N(e.uid,t))return;D(e.uid,{hash:r})}catch{N(e.uid,t)&&D(e.uid,{status:`error`,error:`Hash 计算失败`});return}}D(e.uid,{status:`uploading`,percent:0}),await x.uploadChunks({uid:e.uid,file:n,hash:r,onProgress:n=>{if(!N(e.uid,t))return;let r=Math.round(n.uploadedBytes/n.totalBytes*100);D(e.uid,{percent:r,chunkProgress:n})},onSuccess:n=>{N(e.uid,t)&&D(e.uid,{status:`success`,percent:100,response:n})},onError:n=>{N(e.uid,t)&&D(e.uid,{status:`error`,error:n.message})},isPaused:()=>f.has(e.uid)})}function L(e,t){D(e.uid,{status:`uploading`,percent:0}),S.enqueue(e,(e,n)=>{N(e,t)&&D(e,{percent:n})},(e,n)=>{N(e,t)&&D(e,{status:`success`,percent:100,response:n})},(e,n)=>{N(e,t)&&D(e,{status:`error`,error:n.message})})}function R(){d.value.filter(e=>e.status===`pending`).forEach(e=>void F(e))}function V(){d.value.forEach(e=>{(e.status===`uploading`||e.status===`hashing`||e.status===`validating`)&&(f.add(e.uid),m.set(e.uid,Symbol(e.uid)),x.abortUpload(e.uid),S.abort(e.uid),D(e.uid,{status:`paused`}))})}function H(){d.value.forEach(e=>{e.status===`paused`&&(f.delete(e.uid),D(e.uid,{status:`pending`}))}),R()}function W(e){let t=d.value.find(t=>t.uid===e);t&&t.status===`error`&&(D(e,{status:`pending`,percent:0,error:void 0}),F(t))}function G(){return d.value.filter(e=>e.status===`success`||e.status===`instant`)}return p(()=>{x.abortAll(),S.abortAll(),m.clear(),d.value.forEach(e=>{j(e.thumbUrl)})}),{fileList:d,totalPercent:C,hashing:_,hashProgress:y,addFiles:E,removeFile:O,clearAll:k,startUpload:R,pauseAll:V,resumeAll:H,retryFile:W,processFile:F,getSuccessList:G}}function K(e,t,n,r,i){let a=v(!1),o=null,s=!1;function c(e){t.value&&(e.preventDefault(),a.value=!0)}function l(e){t.value&&(e.preventDefault(),a.value=!0)}function u(n){if(!t.value)return;n.preventDefault();let r=e.value;r&&!r.contains(n.relatedTarget)&&(a.value=!1)}async function d(e){if(!t.value)return;e.preventDefault(),a.value=!1;let n=e.dataTransfer?.items;if(!n)return;let o=await ee(n,e.dataTransfer);if(s||!t.value)return;let c=J(o,r.value);c.length>0&&i(c)}function f(e){if(!n.value)return;let t=e.clipboardData?.items;if(!t)return;let a=[];for(let e=0;e<t.length;e++){let n=t[e];if(n.kind===`file`){let e=n.getAsFile();e&&a.push(e)}}let o=J(a,r.value);o.length>0&&(e.preventDefault(),i(o))}function h(){let t=e.value;!t||o===t||(o=t,t.addEventListener(`dragenter`,c),t.addEventListener(`dragover`,l),t.addEventListener(`dragleave`,u),t.addEventListener(`drop`,d),n.value&&t.addEventListener(`paste`,f))}function g(){let e=o;e&&(e.removeEventListener(`dragenter`,c),e.removeEventListener(`dragover`,l),e.removeEventListener(`dragleave`,u),e.removeEventListener(`drop`,d)),e?.removeEventListener(`paste`,f),o=null}return m(()=>{s=!1,h()}),p(()=>{s=!0,g()}),C([e,t,n],()=>{g(),h()}),{isDragOver:_(a)}}async function ee(e,t){let n=[];for(let t=0;t<e.length;t++){let r=e[t].webkitGetAsEntry?.();r&&n.push(r)}if(n.length>0)return(await Promise.all(n.map(q))).flat();let r=[],i=t?.files;if(i)for(let e=0;e<i.length;e++)r.push(i[e]);return r}async function q(e){if(e.isFile)return new Promise(t=>{e.file(e=>t([e]),()=>t([]))});if(e.isDirectory){let t=e.createReader(),n=[];for(;;){let e=await new Promise(e=>{t.readEntries(t=>e(t),()=>e([]))});if(e.length===0)break;n.push(...e)}return(await Promise.all(n.map(q))).flat()}return[]}function J(e,t){if(!t)return e;let n=t.split(`,`).map(e=>e.trim().toLowerCase()).filter(Boolean);return n.length===0?e:e.filter(e=>n.some(t=>{if(t.startsWith(`.`))return e.name.toLowerCase().endsWith(t);if(t.endsWith(`/*`)){let n=t.replace(`/*`,``);return e.type.toLowerCase().startsWith(`${n}/`)}return e.type.toLowerCase()===t}))}const Y=[`tabindex`,`aria-disabled`,`onKeydown`],X=[`accept`,`multiple`,`webkitdirectory`,`disabled`],Z={class:`upload-area__default`},Q={class:`upload-area__text`},te={key:0},ne={key:1},re={key:0,class:`upload-area__tip`};var ie=t(d({__name:`UploadArea`,props:{accept:{default:``},multiple:{type:Boolean,default:!1},directory:{type:Boolean,default:!1},disabled:{type:Boolean,default:!1},draggable:{type:Boolean,default:!0},pasteable:{type:Boolean,default:!1},tip:{default:``}},emits:[`files`],setup(t,{expose:r,emit:a}){let d=t,p=a,m=v(),g=v(),{isDragOver:_}=K(m,i(()=>d.draggable&&!d.disabled),i(()=>d.pasteable&&!d.disabled),i(()=>d.accept),e=>p(`files`,e));function y(){d.disabled||g.value?.click()}function C(e){let t=e.target,n=d.disabled?[]:J(Array.from(t.files??[]),d.accept);n.length>0&&p(`files`,n),t.value=``}return r({triggerSelect:y}),(r,i)=>(h(),s(`div`,{ref_key:`areaRef`,ref:m,class:f([`upload-area`,{"upload-area--drag-over":S(_),"upload-area--disabled":t.disabled}]),role:`button`,tabindex:t.disabled?-1:0,"aria-disabled":t.disabled,onClick:y,onKeydown:[T(E(y,[`prevent`]),[`enter`]),T(E(y,[`prevent`]),[`space`])]},[c(`input`,{ref_key:`inputRef`,ref:g,type:`file`,class:`upload-area__input`,accept:t.accept,multiple:t.multiple,webkitdirectory:t.directory||void 0,disabled:t.disabled,onClick:i[0]||=E(()=>{},[`stop`]),onChange:C},null,40,X),b(r.$slots,`default`,{},()=>[c(`div`,Z,[u(e,{name:S(_)?`mdi:cloud-download-outline`:`mdi:cloud-upload-outline`,class:`upload-area__icon`},null,8,[`name`]),c(`div`,Q,[S(_)?(h(),s(`span`,te,`释放文件到此处`)):(h(),s(`span`,ne,[i[4]||=l(` 点击或拖拽文件到此区域上传 `,-1),t.pasteable?(h(),s(n,{key:0},[i[1]||=l(` ,支持 `,-1),i[2]||=c(`kbd`,null,`Ctrl+V`,-1),i[3]||=l(` 粘贴 `,-1)],64)):o(`v-if`,!0)]))]),t.tip?(h(),s(`div`,re,x(t.tip),1)):o(`v-if`,!0)])],!0)],42,Y))}}),[[`__scopeId`,`data-v-705892ab`]]);const ae={class:`file-list__thumb`},oe=[`src`,`alt`],se={class:`file-list__info`},ce={class:`file-list__name`},le={class:`file-list__meta`},ue={class:`file-list__size`},de={key:0,class:`file-list__instant`},fe={key:1,class:`file-list__chunk-info`},pe={key:2,class:`file-list__error`},me={class:`file-list__actions`};var he=t(d({__name:`FileList`,props:{fileList:{},showThumbnail:{type:Boolean}},emits:[`remove`,`retry`],setup(t,{emit:i}){let d=i;return(i,p)=>(h(),a(r,{name:`file-list`,tag:`div`,class:`file-list`},{default:w(()=>[(h(!0),s(n,null,y(t.fileList,n=>(h(),s(`div`,{key:n.uid,class:f([`file-list__item`,`file-list__item--${n.status}`])},[o(` 缩略图 / 图标 `),c(`div`,ae,[t.showThumbnail&&n.thumbUrl?(h(),s(`img`,{key:0,src:n.thumbUrl,alt:n.name,class:`file-list__thumb-img`},null,8,oe)):(h(),a(e,{key:1,name:S(I)(n.type),class:`file-list__thumb-icon`},null,8,[`name`]))]),o(` 文件信息 `),c(`div`,se,[c(`div`,ce,[u(S(O),{"line-clamp":1},{default:w(()=>[l(x(n.name),1)]),_:2},1024)]),c(`div`,le,[c(`span`,ue,x(S(L)(n.size)),1),u(S(A),{type:S(P)[n.status]||`default`,size:`tiny`,bordered:!1},{default:w(()=>[l(x(S(N)[n.status]||n.status),1)]),_:2},1032,[`type`]),n.status===`instant`?(h(),s(`span`,de,` ⚡ `)):o(`v-if`,!0)]),o(` 进度条 `),n.status===`uploading`||n.status===`hashing`?(h(),a(S(k),{key:0,percentage:n.percent,height:4,"border-radius":2,"show-indicator":!1,status:n.status===`hashing`?`info`:`success`},null,8,[`percentage`,`status`])):o(`v-if`,!0),o(` 分片进度描述 `),n.chunkProgress&&n.status===`uploading`?(h(),s(`div`,fe,` 分片 `+x(n.chunkProgress.uploadedChunks)+`/`+x(n.chunkProgress.totalChunks),1)):o(`v-if`,!0),o(` 错误信息 `),n.status===`error`&&n.error?(h(),s(`div`,pe,x(n.error),1)):o(`v-if`,!0)]),o(` 操作按钮 `),c(`div`,me,[n.status===`error`?(h(),a(S(D),{key:0,text:``,type:`warning`,size:`tiny`,"aria-label":`重试上传`,onClick:e=>d(`retry`,n.uid)},{icon:w(()=>[u(e,{name:`mdi:refresh`})]),_:1},8,[`onClick`])):o(`v-if`,!0),u(S(D),{text:``,type:`error`,size:`tiny`,"aria-label":`移除文件`,onClick:e=>d(`remove`,n.uid)},{icon:w(()=>[u(e,{name:`mdi:close`})]),_:1},8,[`onClick`])])],2))),128))]),_:1}))}}),[[`__scopeId`,`data-v-04f26012`]]);const ge={key:0,class:`image-preview`},_e=[`src`,`alt`],$={class:`image-preview__overlay`},ve={key:0,class:`image-preview__progress`},ye={class:`image-preview__actions`},be={class:`image-preview__name`};var xe=t(d({__name:`ImagePreview`,props:{fileList:{}},emits:[`remove`,`retry`],setup(t,{emit:r}){let d=t,p=r,m=i(()=>d.fileList.filter(e=>e.type?.startsWith(`image/`)));return(t,r)=>m.value.length>0?(h(),s(`div`,ge,[(h(!0),s(n,null,y(m.value,t=>(h(),s(`div`,{key:t.uid,class:f([`image-preview__item`,`image-preview__item--${t.status}`])},[t.thumbUrl?(h(),s(`img`,{key:0,src:t.thumbUrl,alt:t.name,class:`image-preview__img`},null,8,_e)):o(`v-if`,!0),o(` 遮罩层 `),c(`div`,$,[o(` 上传中进度 `),t.status===`uploading`||t.status===`hashing`?(h(),s(`div`,ve,[u(S(k),{type:`circle`,percentage:t.percent,"stroke-width":3,style:{width:`40px`}},null,8,[`percentage`])])):t.status===`success`||t.status===`instant`?(h(),s(n,{key:1},[o(` 状态图标 `),u(e,{name:`mdi:check-circle`,class:`image-preview__status-icon image-preview__status-icon--success`})],2112)):t.status===`error`?(h(),a(e,{key:2,name:`mdi:alert-circle`,class:`image-preview__status-icon image-preview__status-icon--error`})):o(`v-if`,!0),o(` 操作 `),c(`div`,ye,[t.status===`error`?(h(),a(S(D),{key:0,circle:``,size:`tiny`,type:`warning`,"aria-label":`重试上传`,onClick:e=>p(`retry`,t.uid)},{icon:w(()=>[u(e,{name:`mdi:refresh`})]),_:1},8,[`onClick`])):o(`v-if`,!0),u(S(D),{circle:``,size:`tiny`,type:`error`,"aria-label":`移除文件`,onClick:e=>p(`remove`,t.uid)},{icon:w(()=>[u(e,{name:`mdi:close`})]),_:1},8,[`onClick`])])]),o(` 文件名 `),c(`div`,be,[u(S(O),{"line-clamp":1},{default:w(()=>[l(x(t.name),1)]),_:2},1024)])],2))),128))])):o(`v-if`,!0)}}),[[`__scopeId`,`data-v-32d39ae9`]]);const Se={class:`c-upload`},Ce={key:0,class:`c-upload__total-progress`},we={class:`c-upload__total-label`};var Te=t(d({__name:`index`,props:{action:{default:``},headers:{default:()=>({})},data:{default:()=>({})},multiple:{type:Boolean,default:!1},directory:{type:Boolean,default:!1},accept:{default:``},maxSize:{default:0},maxCount:{default:0},disabled:{type:Boolean,default:!1},draggable:{type:Boolean,default:!0},pasteable:{type:Boolean,default:!1},chunked:{type:Boolean,default:!1},chunkSize:{default:M},concurrency:{default:3},showFileList:{type:Boolean,default:!0},listType:{default:`text`},showThumbnail:{type:Boolean,default:!0},customRequest:{},instantCheck:{},uploadedChunksQuery:{},mergeChunks:{},beforeUpload:{},tip:{default:``},defaultFileList:{default:()=>[]}},emits:[`change`,`success`,`error`,`progress`,`remove`,`finish`,`exceed`],setup(e,{expose:t,emit:r}){let l=e,d=r,f=v(),{fileList:p,totalPercent:m,addFiles:g,removeFile:_,clearAll:y,startUpload:T,pauseAll:E,resumeAll:D,retryFile:O,processFile:A,getSuccessList:j}=G(l),M=i(()=>p.value.some(e=>e.status===`uploading`||e.status===`hashing`||e.status===`validating`)),N=e=>({...e}),P=()=>p.value.map(N);function F(e){let t=Math.max(0,Math.trunc(Number(l.maxCount)||0));if(t>0&&p.value.length+e.length>t){d(`exceed`,e,P());let n=t-p.value.length;if(n<=0)return;e=e.slice(0,n)}let n=g(e);d(`change`,P()),n.forEach(e=>void A(e))}function I(e){let t=p.value.find(t=>t.uid===e);t&&(d(`remove`,N(t)),_(e),d(`change`,P()))}function L(e){O(e)}let R=new Map,z=!1;return C(p,e=>{let t=new Set(e.map(e=>e.uid));R.forEach((e,n)=>{t.has(n)||R.delete(n)}),e.forEach(e=>{let t=R.get(e.uid);t&&t.percent!==e.percent&&d(`progress`,N(e),e.percent),t&&t.status!==e.status&&(e.status===`success`||e.status===`instant`)&&d(`success`,N(e),e.response),t&&t.status!==`error`&&e.status===`error`&&d(`error`,N(e),Error(e.error||`上传失败`)),R.set(e.uid,{status:e.status,percent:e.percent})}),e.length>0&&e.every(e=>e.status===`success`||e.status===`instant`||e.status===`error`)?(z||d(`finish`,P()),z=!0):z=!1},{deep:!0}),t({selectFiles:()=>f.value?.triggerSelect(),startUpload:T,pauseAll:E,resumeAll:D,clearAll:()=>{y(),d(`change`,P())},removeFile:e=>{I(e)},retryFile:O,getFileList:P,getSuccessList:()=>j().map(N),get totalPercent(){return m.value}}),(e,t)=>(h(),s(`div`,Se,[o(` 上传区域 `),u(ie,{ref_key:`uploadAreaRef`,ref:f,accept:l.accept,multiple:l.multiple,directory:l.directory,disabled:l.disabled,draggable:l.draggable,pasteable:l.pasteable,tip:l.tip,onFiles:F},{default:w(()=>[b(e.$slots,`area`,{},void 0,!0)]),_:3},8,[`accept`,`multiple`,`directory`,`disabled`,`draggable`,`pasteable`,`tip`]),o(` 总进度条 `),M.value?(h(),s(`div`,Ce,[c(`div`,we,[t[0]||=c(`span`,null,`总进度`,-1),c(`span`,null,x(S(m))+`%`,1)]),u(S(k),{percentage:S(m),height:6,"border-radius":3,"show-indicator":!1,status:`success`},null,8,[`percentage`])])):o(`v-if`,!0),o(` 图片预览模式 `),l.listType===`image`?(h(),a(xe,{key:1,"file-list":S(p),onRemove:I,onRetry:L},null,8,[`file-list`])):l.showFileList&&S(p).length>0?(h(),s(n,{key:2},[o(` 文件列表模式 `),u(he,{"file-list":S(p),"show-thumbnail":l.showThumbnail,onRemove:I,onRetry:L},null,8,[`file-list`,`show-thumbnail`])],2112)):o(`v-if`,!0)]))}}),[[`__scopeId`,`data-v-7674f0c8`]]);export{B as a,I as c,U as i,K as n,z as o,G as r,L as s,Te as t};
|