import{aF as Q,ax as ue,aq as de,ah as A,ar as m,bh as G,bP as k,d as U,bF as ke,ae as N,aX as K,r as ce,O as W,o as b,q as w,m as R,c as _,Y as Ee,Z as $e,$ as y,e as t,p as pe,ag as C,x as h,t as q,z as D,k as S,Q as O,bQ as Ce,K as Z,aj as Re,bR as Le,bS as Fe,bn as Pe,bT as Se,bU as _e,aL as we,al as M,ad as Ue,aa as Y,bV as x,bW as Te,aD as Oe,bX as De,i as ee,aB as Be,J as je,af as qe,bY as Ne,bZ as te,b_ as se,am as Ae}from"./index-ce293e15.js";import{E as Ke}from"./el-progress-b748f709.js";import{b as Me}from"./_baseClone-e976708f.js";import{i as He}from"./isEqual-48984780.js";var ze=1,Xe=4;function ae(a){return Me(a,ze|Xe)}const fe=Symbol("uploadContextKey"),Ie="ElUpload";class Ve extends Error{constructor(l,e,p,u){super(l),this.name="UploadAjaxError",this.status=e,this.method=p,this.url=u}}function oe(a,l,e){let p;return e.response?p=`${e.response.error||e.response}`:e.responseText?p=`${e.responseText}`:p=`fail to ${l.method} ${a} ${e.status}`,new Ve(p,e.status,l.method,a)}function Ge(a){const l=a.responseText||a.response;if(!l)return l;try{return JSON.parse(l)}catch{return l}}const We=a=>{typeof XMLHttpRequest>"u"&&Q(Ie,"XMLHttpRequest is undefined");const l=new XMLHttpRequest,e=a.action;l.upload&&l.upload.addEventListener("progress",d=>{const v=d;v.percent=d.total>0?d.loaded/d.total*100:0,a.onProgress(v)});const p=new FormData;if(a.data)for(const[d,v]of Object.entries(a.data))ue(v)&&v.length?p.append(d,...v):p.append(d,v);p.append(a.filename,a.file,a.file.name),l.addEventListener("error",()=>{a.onError(oe(e,a,l))}),l.addEventListener("load",()=>{if(l.status<200||l.status>=300)return a.onError(oe(e,a,l));a.onSuccess(Ge(l))}),l.open(a.method,e,!0),a.withCredentials&&"withCredentials"in l&&(l.withCredentials=!0);const u=a.headers||{};if(u instanceof Headers)u.forEach((d,v)=>l.setRequestHeader(v,d));else for(const[d,v]of Object.entries(u))de(v)||l.setRequestHeader(d,String(v));return l.send(p),l},ve=["text","picture","picture-card"];let Ye=1;const J=()=>Date.now()+Ye++,me=A({action:{type:String,default:"#"},headers:{type:m(Object)},method:{type:String,default:"post"},data:{type:m([Object,Function,Promise]),default:()=>G({})},multiple:{type:Boolean,default:!1},name:{type:String,default:"file"},drag:{type:Boolean,default:!1},withCredentials:Boolean,showFileList:{type:Boolean,default:!0},accept:{type:String,default:""},fileList:{type:m(Array),default:()=>G([])},autoUpload:{type:Boolean,default:!0},listType:{type:String,values:ve,default:"text"},httpRequest:{type:m(Function),default:We},disabled:Boolean,limit:Number}),Je=A({...me,beforeUpload:{type:m(Function),default:k},beforeRemove:{type:m(Function)},onRemove:{type:m(Function),default:k},onChange:{type:m(Function),default:k},onPreview:{type:m(Function),default:k},onSuccess:{type:m(Function),default:k},onProgress:{type:m(Function),default:k},onError:{type:m(Function),default:k},onExceed:{type:m(Function),default:k},crossorigin:{type:m(String)}}),Qe=A({files:{type:m(Array),default:()=>G([])},disabled:{type:Boolean,default:!1},handlePreview:{type:m(Function),default:k},listType:{type:String,values:ve,default:"text"},crossorigin:{type:m(String)}}),Ze={remove:a=>!!a},xe=["onKeydown"],et=["src","crossorigin"],tt=["onClick"],st=["title"],at=["onClick"],ot=["onClick"],nt=U({name:"ElUploadList"}),lt=U({...nt,props:Qe,emits:Ze,setup(a,{emit:l}){const e=a,{t:p}=ke(),u=N("upload"),d=N("icon"),v=N("list"),E=K(),g=ce(!1),$=W(()=>[u.b("list"),u.bm("list",e.listType),u.is("disabled",e.disabled)]),F=f=>{l("remove",f)};return(f,n)=>(b(),w(we,{tag:"ul",class:y(t($)),name:t(v).b()},{default:R(()=>[(b(!0),_(Ee,null,$e(f.files,s=>(b(),_("li",{key:s.uid||s.name,class:y([t(u).be("list","item"),t(u).is(s.status),{focusing:g.value}]),tabindex:"0",onKeydown:pe(i=>!t(E)&&F(s),["delete"]),onFocus:n[0]||(n[0]=i=>g.value=!0),onBlur:n[1]||(n[1]=i=>g.value=!1),onClick:n[2]||(n[2]=i=>g.value=!1)},[C(f.$slots,"default",{file:s},()=>[f.listType==="picture"||s.status!=="uploading"&&f.listType==="picture-card"?(b(),_("img",{key:0,class:y(t(u).be("list","item-thumbnail")),src:s.url,crossorigin:f.crossorigin,alt:""},null,10,et)):h("v-if",!0),s.status==="uploading"||f.listType!=="picture-card"?(b(),_("div",{key:1,class:y(t(u).be("list","item-info"))},[q("a",{class:y(t(u).be("list","item-name")),onClick:D(i=>f.handlePreview(s),["prevent"])},[S(t(O),{class:y(t(d).m("document"))},{default:R(()=>[S(t(Ce))]),_:1},8,["class"]),q("span",{class:y(t(u).be("list","item-file-name")),title:s.name},Z(s.name),11,st)],10,tt),s.status==="uploading"?(b(),w(t(Ke),{key:0,type:f.listType==="picture-card"?"circle":"line","stroke-width":f.listType==="picture-card"?6:2,percentage:Number(s.percentage),style:Re(f.listType==="picture-card"?"":"margin-top: 0.5rem")},null,8,["type","stroke-width","percentage","style"])):h("v-if",!0)],2)):h("v-if",!0),q("label",{class:y(t(u).be("list","item-status-label"))},[f.listType==="text"?(b(),w(t(O),{key:0,class:y([t(d).m("upload-success"),t(d).m("circle-check")])},{default:R(()=>[S(t(Le))]),_:1},8,["class"])):["picture-card","picture"].includes(f.listType)?(b(),w(t(O),{key:1,class:y([t(d).m("upload-success"),t(d).m("check")])},{default:R(()=>[S(t(Fe))]),_:1},8,["class"])):h("v-if",!0)],2),t(E)?h("v-if",!0):(b(),w(t(O),{key:2,class:y(t(d).m("close")),onClick:i=>F(s)},{default:R(()=>[S(t(Pe))]),_:2},1032,["class","onClick"])),h(" Due to close btn only appears when li gets focused disappears after li gets blurred, thus keyboard navigation can never reach close btn"),h(" This is a bug which needs to be fixed "),h(" TODO: Fix the incorrect navigation interaction "),t(E)?h("v-if",!0):(b(),_("i",{key:3,class:y(t(d).m("close-tip"))},Z(t(p)("el.upload.deleteTip")),3)),f.listType==="picture-card"?(b(),_("span",{key:4,class:y(t(u).be("list","item-actions"))},[q("span",{class:y(t(u).be("list","item-preview")),onClick:i=>f.handlePreview(s)},[S(t(O),{class:y(t(d).m("zoom-in"))},{default:R(()=>[S(t(Se))]),_:1},8,["class"])],10,at),t(E)?h("v-if",!0):(b(),_("span",{key:0,class:y(t(u).be("list","item-delete")),onClick:i=>F(s)},[S(t(O),{class:y(t(d).m("delete"))},{default:R(()=>[S(t(_e))]),_:1},8,["class"])],10,ot))],2)):h("v-if",!0)])],42,xe))),128)),C(f.$slots,"append")]),_:3},8,["class","name"]))}});var ne=M(lt,[["__file","upload-list.vue"]]);const rt=A({disabled:{type:Boolean,default:!1}}),it={file:a=>ue(a)},ut=["onDrop","onDragover"],ye="ElUploadDrag",dt=U({name:ye}),ct=U({...dt,props:rt,emits:it,setup(a,{emit:l}){Ue(fe)||Q(ye,"usage: ");const p=N("upload"),u=ce(!1),d=K(),v=g=>{if(d.value)return;u.value=!1,g.stopPropagation();const $=Array.from(g.dataTransfer.files);l("file",$)},E=()=>{d.value||(u.value=!0)};return(g,$)=>(b(),_("div",{class:y([t(p).b("dragger"),t(p).is("dragover",u.value)]),onDrop:D(v,["prevent"]),onDragover:D(E,["prevent"]),onDragleave:$[0]||($[0]=D(F=>u.value=!1,["prevent"]))},[C(g.$slots,"default")],42,ut))}});var pt=M(ct,[["__file","upload-dragger.vue"]]);const ft=A({...me,beforeUpload:{type:m(Function),default:k},onRemove:{type:m(Function),default:k},onStart:{type:m(Function),default:k},onSuccess:{type:m(Function),default:k},onProgress:{type:m(Function),default:k},onError:{type:m(Function),default:k},onExceed:{type:m(Function),default:k}}),vt=["onKeydown"],mt=["name","multiple","accept"],yt=U({name:"ElUploadContent",inheritAttrs:!1}),gt=U({...yt,props:ft,setup(a,{expose:l}){const e=a,p=N("upload"),u=K(),d=Y({}),v=Y(),E=o=>{if(o.length===0)return;const{autoUpload:c,limit:r,fileList:L,multiple:P,onStart:B,onExceed:H}=e;if(r&&L.length+o.length>r){H(o,L);return}P||(o=o.slice(0,1));for(const z of o){const j=z;j.uid=J(),B(j),c&&g(j)}},g=async o=>{if(v.value.value="",!e.beforeUpload)return F(o);let c,r={};try{const P=e.data,B=e.beforeUpload(o);r=x(e.data)?ae(e.data):e.data,c=await B,x(e.data)&&He(P,r)&&(r=ae(e.data))}catch{c=!1}if(c===!1){e.onRemove(o);return}let L=o;c instanceof Blob&&(c instanceof File?L=c:L=new File([c],o.name,{type:o.type})),F(Object.assign(L,{uid:o.uid}),r)},$=async(o,c)=>Oe(o)?o(c):o,F=async(o,c)=>{const{headers:r,data:L,method:P,withCredentials:B,name:H,action:z,onProgress:j,onSuccess:ge,onError:be,httpRequest:he}=e;try{c=await $(c??L,o)}catch{e.onRemove(o);return}const{uid:X}=o,I={headers:r||{},withCredentials:B,file:o,data:c,method:P,filename:H,action:z,onProgress:T=>{j(T,o)},onSuccess:T=>{ge(T,o),delete d.value[X]},onError:T=>{be(T,o),delete d.value[X]}},V=he(I);d.value[X]=V,V instanceof Promise&&V.then(I.onSuccess,I.onError)},f=o=>{const c=o.target.files;c&&E(Array.from(c))},n=()=>{u.value||(v.value.value="",v.value.click())},s=()=>{n()};return l({abort:o=>{Te(d.value).filter(o?([r])=>String(o.uid)===r:()=>!0).forEach(([r,L])=>{L instanceof XMLHttpRequest&&L.abort(),delete d.value[r]})},upload:g}),(o,c)=>(b(),_("div",{class:y([t(p).b(),t(p).m(o.listType),t(p).is("drag",o.drag)]),tabindex:"0",onClick:n,onKeydown:pe(D(s,["self"]),["enter","space"])},[o.drag?(b(),w(pt,{key:0,disabled:t(u),onFile:E},{default:R(()=>[C(o.$slots,"default")]),_:3},8,["disabled"])):C(o.$slots,"default",{key:1}),q("input",{ref_key:"inputRef",ref:v,class:y(t(p).e("input")),name:o.name,multiple:o.multiple,accept:o.accept,type:"file",onChange:f,onClick:c[0]||(c[0]=D(()=>{},["stop"]))},null,42,mt)],42,vt))}});var le=M(gt,[["__file","upload-content.vue"]]);const re="ElUpload",ie=a=>{var l;(l=a.url)!=null&&l.startsWith("blob:")&&URL.revokeObjectURL(a.url)},bt=(a,l)=>{const e=De(a,"fileList",void 0,{passive:!0}),p=n=>e.value.find(s=>s.uid===n.uid);function u(n){var s;(s=l.value)==null||s.abort(n)}function d(n=["ready","uploading","success","fail"]){e.value=e.value.filter(s=>!n.includes(s.status))}const v=(n,s)=>{const i=p(s);i&&(console.error(n),i.status="fail",e.value.splice(e.value.indexOf(i),1),a.onError(n,i,e.value),a.onChange(i,e.value))},E=(n,s)=>{const i=p(s);i&&(a.onProgress(n,i,e.value),i.status="uploading",i.percentage=Math.round(n.percent))},g=(n,s)=>{const i=p(s);i&&(i.status="success",i.response=n,a.onSuccess(n,i,e.value),a.onChange(i,e.value))},$=n=>{de(n.uid)&&(n.uid=J());const s={name:n.name,percentage:0,status:"ready",size:n.size,raw:n,uid:n.uid};if(a.listType==="picture-card"||a.listType==="picture")try{s.url=URL.createObjectURL(n)}catch(i){Be(re,i.message),a.onError(i,s,e.value)}e.value=[...e.value,s],a.onChange(s,e.value)},F=async n=>{const s=n instanceof File?p(n):n;s||Q(re,"file to be removed not found");const i=o=>{u(o);const c=e.value;c.splice(c.indexOf(o),1),a.onRemove(o,c),ie(o)};a.beforeRemove?await a.beforeRemove(s,e.value)!==!1&&i(s):i(s)};function f(){e.value.filter(({status:n})=>n==="ready").forEach(({raw:n})=>{var s;return n&&((s=l.value)==null?void 0:s.upload(n))})}return ee(()=>a.listType,n=>{n!=="picture-card"&&n!=="picture"||(e.value=e.value.map(s=>{const{raw:i,url:o}=s;if(!o&&i)try{s.url=URL.createObjectURL(i)}catch(c){a.onError(c,s,e.value)}return s}))}),ee(e,n=>{for(const s of n)s.uid||(s.uid=J()),s.status||(s.status="success")},{immediate:!0,deep:!0}),{uploadFiles:e,abort:u,clearFiles:d,handleError:v,handleProgress:E,handleStart:$,handleSuccess:g,handleRemove:F,submit:f,revokeFileObjectURL:ie}},ht=U({name:"ElUpload"}),kt=U({...ht,props:Je,setup(a,{expose:l}){const e=a,p=K(),u=Y(),{abort:d,submit:v,clearFiles:E,uploadFiles:g,handleStart:$,handleError:F,handleRemove:f,handleSuccess:n,handleProgress:s,revokeFileObjectURL:i}=bt(e,u),o=W(()=>e.listType==="picture-card"),c=W(()=>({...e,fileList:g.value,onStart:$,onProgress:s,onSuccess:n,onError:F,onRemove:f}));return je(()=>{g.value.forEach(i)}),qe(fe,{accept:Ne(e,"accept")}),l({abort:d,submit:v,clearFiles:E,handleStart:$,handleRemove:f}),(r,L)=>(b(),_("div",null,[t(o)&&r.showFileList?(b(),w(ne,{key:0,disabled:t(p),"list-type":r.listType,files:t(g),crossorigin:r.crossorigin,"handle-preview":r.onPreview,onRemove:t(f)},te({append:R(()=>[S(le,se({ref_key:"uploadRef",ref:u},t(c)),{default:R(()=>[r.$slots.trigger?C(r.$slots,"trigger",{key:0}):h("v-if",!0),!r.$slots.trigger&&r.$slots.default?C(r.$slots,"default",{key:1}):h("v-if",!0)]),_:3},16)]),_:2},[r.$slots.file?{name:"default",fn:R(({file:P})=>[C(r.$slots,"file",{file:P})])}:void 0]),1032,["disabled","list-type","files","crossorigin","handle-preview","onRemove"])):h("v-if",!0),!t(o)||t(o)&&!r.showFileList?(b(),w(le,se({key:1,ref_key:"uploadRef",ref:u},t(c)),{default:R(()=>[r.$slots.trigger?C(r.$slots,"trigger",{key:0}):h("v-if",!0),!r.$slots.trigger&&r.$slots.default?C(r.$slots,"default",{key:1}):h("v-if",!0)]),_:3},16)):h("v-if",!0),r.$slots.trigger?C(r.$slots,"default",{key:2}):h("v-if",!0),C(r.$slots,"tip"),!t(o)&&r.showFileList?(b(),w(ne,{key:3,disabled:t(p),"list-type":r.listType,files:t(g),crossorigin:r.crossorigin,"handle-preview":r.onPreview,onRemove:t(f)},te({_:2},[r.$slots.file?{name:"default",fn:R(({file:P})=>[C(r.$slots,"file",{file:P})])}:void 0]),1032,["disabled","list-type","files","crossorigin","handle-preview","onRemove"])):h("v-if",!0)]))}});var Et=M(kt,[["__file","upload.vue"]]);const Ft=Ae(Et);export{Ft as E};