2 lines
14 KiB
JavaScript
2 lines
14 KiB
JavaScript
import{C as Y,a6 as ce,J as ke,a8 as fe,b as N,R as f,a5 as X,aU as h,d as q,aW as Ee,a as K,o as b,e as U,w as F,c as T,M as we,ad as Re,t as x,f as o,n as g,h as $,g as k,q as A,aL as B,s as S,E as D,b3 as Pe,aa as Q,al as $e,b4 as Fe,b5 as Ce,b6 as Se,b7 as Te,b8 as Le,b9 as Ue,y as pe,j as G,B as Be,aT as W,ba as Z,bb as De,bc as Oe,bd as je,D as ee,aK as Ae,be as Ke,P as Ne,H as qe,a$ as te,Y as ae,F as Me,a9 as He,l as _e}from"./index-BYkWxQIk.js";import{c as M}from"./index-CvV3lMhj.js";import{E as ze}from"./el-progress-DGuNen6-.js";import{f as se}from"./index-BdMmiJIJ.js";import{c as oe}from"./el-form-item-BCGHWWEr.js";const Ie="ElUpload";var Ve=class extends Error{constructor(t,i,n,d){super(t),this.name="UploadAjaxError",this.status=i,this.method=n,this.url=d}};function ne(t,i,n){let d;return n.response?d=`${n.response.error||n.response}`:n.responseText?d=`${n.responseText}`:d=`fail to ${i.method} ${t} ${n.status}`,new Ve(d,n.status,i.method,t)}function Xe(t){const i=t.responseText||t.response;if(!i)return i;try{return JSON.parse(i)}catch{return i}}const xe=t=>{typeof XMLHttpRequest>"u"&&Y(Ie,"XMLHttpRequest is undefined");const i=new XMLHttpRequest,n=t.action;i.upload&&i.upload.addEventListener("progress",r=>{const u=r;u.percent=r.total>0?r.loaded/r.total*100:0,t.onProgress(u)});const d=new FormData;if(t.data)for(const[r,u]of Object.entries(t.data))ce(u)?u.length===2&&u[0]instanceof Blob&&ke(u[1])?d.append(r,u[0],u[1]):u.forEach(w=>{d.append(r,w)}):d.append(r,u);d.append(t.filename,t.file,t.file.name),i.addEventListener("error",()=>{t.onError(ne(n,t,i))}),i.addEventListener("load",()=>{if(i.status<200||i.status>=300)return t.onError(ne(n,t,i));t.onSuccess(Xe(i))}),i.open(t.method,n,!0),t.withCredentials&&"withCredentials"in i&&(i.withCredentials=!0);const p=t.headers||{};if(p instanceof Headers)p.forEach((r,u)=>i.setRequestHeader(u,r));else for(const[r,u]of Object.entries(p))fe(u)||i.setRequestHeader(r,String(u));return i.send(d),i},ve=["text","picture","picture-card"];let Ge=1;const J=()=>Date.now()+Ge++,ye=N({action:{type:String,default:"#"},headers:{type:f(Object)},method:{type:String,default:"post"},data:{type:f([Object,Function,Promise]),default:()=>X({})},multiple:Boolean,name:{type:String,default:"file"},drag:Boolean,withCredentials:Boolean,showFileList:{type:Boolean,default:!0},accept:{type:String,default:""},fileList:{type:f(Array),default:()=>X([])},autoUpload:{type:Boolean,default:!0},listType:{type:String,values:ve,default:"text"},httpRequest:{type:f(Function),default:xe},disabled:{type:Boolean,default:void 0},limit:Number,directory:Boolean}),We=N({...ye,beforeUpload:{type:f(Function),default:h},beforeRemove:{type:f(Function)},onRemove:{type:f(Function),default:h},onChange:{type:f(Function),default:h},onPreview:{type:f(Function),default:h},onSuccess:{type:f(Function),default:h},onProgress:{type:f(Function),default:h},onError:{type:f(Function),default:h},onExceed:{type:f(Function),default:h},crossorigin:{type:f(String)}}),me=Symbol("uploadContextKey"),Je=N({files:{type:f(Array),default:()=>X([])},disabled:{type:Boolean,default:void 0},handlePreview:{type:f(Function),default:h},listType:{type:String,values:ve,default:"text"},crossorigin:{type:f(String)}}),Ye={remove:t=>!!t},Qe=N({...ye,beforeUpload:{type:f(Function),default:h},onRemove:{type:f(Function),default:h},onStart:{type:f(Function),default:h},onSuccess:{type:f(Function),default:h},onProgress:{type:f(Function),default:h},onError:{type:f(Function),default:h},onExceed:{type:f(Function),default:h}}),Ze=N({disabled:{type:Boolean,default:void 0},directory:Boolean}),et={file:t=>ce(t)},tt=["tabindex","aria-disabled","onKeydown"],at=["src","crossorigin"],st=["onClick"],ot=["title"],nt=["onClick"],lt=["onClick"];var rt=q({name:"ElUploadList",__name:"upload-list",props:Je,emits:Ye,setup(t,{emit:i}){const n=t,d=i,{t:p}=Ee(),r=K("upload"),u=K("icon"),w=K("list"),y=M(),P=pe(!1),C=G(()=>[r.b("list"),r.bm("list",n.listType),r.is("disabled",y.value)]),E=c=>{d("remove",c)};return(c,v)=>(b(),U(Ue,{tag:"ul",class:g(C.value),name:o(w).b()},{default:F(()=>[(b(!0),T(we,null,Re(t.files,(s,e)=>(b(),T("li",{key:s.uid||s.name,class:g([o(r).be("list","item"),o(r).is(s.status),{focusing:P.value}]),tabindex:o(y)?void 0:0,"aria-disabled":o(y),role:"button",onKeydown:x(a=>!o(y)&&E(s),["delete"]),onFocus:v[0]||(v[0]=a=>P.value=!0),onBlur:v[1]||(v[1]=a=>P.value=!1),onClick:v[2]||(v[2]=a=>P.value=!1)},[$(c.$slots,"default",{file:s,index:e},()=>[t.listType==="picture"||s.status!=="uploading"&&t.listType==="picture-card"?(b(),T("img",{key:0,class:g(o(r).be("list","item-thumbnail")),src:s.url,crossorigin:t.crossorigin,alt:""},null,10,at)):k("v-if",!0),s.status==="uploading"||t.listType!=="picture-card"?(b(),T("div",{key:1,class:g(o(r).be("list","item-info"))},[A("a",{class:g(o(r).be("list","item-name")),onClick:B(a=>t.handlePreview(s),["prevent"])},[S(o(D),{class:g(o(u).m("document"))},{default:F(()=>[S(o(Pe))]),_:1},8,["class"]),A("span",{class:g(o(r).be("list","item-file-name")),title:s.name},Q(s.name),11,ot)],10,st),s.status==="uploading"?(b(),U(o(ze),{key:0,type:t.listType==="picture-card"?"circle":"line","stroke-width":t.listType==="picture-card"?6:2,percentage:Number(s.percentage),style:$e(t.listType==="picture-card"?"":"margin-top: 0.5rem")},null,8,["type","stroke-width","percentage","style"])):k("v-if",!0)],2)):k("v-if",!0),A("label",{class:g(o(r).be("list","item-status-label"))},[t.listType==="text"?(b(),U(o(D),{key:0,class:g([o(u).m("upload-success"),o(u).m("circle-check")])},{default:F(()=>[S(o(Fe))]),_:1},8,["class"])):["picture-card","picture"].includes(t.listType)?(b(),U(o(D),{key:1,class:g([o(u).m("upload-success"),o(u).m("check")])},{default:F(()=>[S(o(Ce))]),_:1},8,["class"])):k("v-if",!0)],2),o(y)?k("v-if",!0):(b(),U(o(D),{key:2,class:g(o(u).m("close")),"aria-label":o(p)("el.upload.delete"),role:"button",tabindex:"0",onClick:a=>E(s),onKeydown:x(B(a=>E(s),["prevent"]),["enter","space"])},{default:F(()=>[S(o(Se))]),_:1},8,["class","aria-label","onClick","onKeydown"])),o(y)?k("v-if",!0):(b(),T("i",{key:3,class:g(o(u).m("close-tip"))},Q(o(p)("el.upload.deleteTip")),3)),t.listType==="picture-card"?(b(),T("span",{key:4,class:g(o(r).be("list","item-actions"))},[A("span",{class:g(o(r).be("list","item-preview")),onClick:a=>t.handlePreview(s)},[S(o(D),{class:g(o(u).m("zoom-in"))},{default:F(()=>[S(o(Te))]),_:1},8,["class"])],10,nt),o(y)?k("v-if",!0):(b(),T("span",{key:0,class:g(o(r).be("list","item-delete")),onClick:a=>E(s)},[S(o(D),{class:g(o(u).m("delete"))},{default:F(()=>[S(o(Le))]),_:1},8,["class"])],10,lt))],2)):k("v-if",!0)])],42,tt))),128)),$(c.$slots,"append")]),_:3},8,["class","name"]))}}),le=rt;const re="ElUploadDrag";var it=q({name:re,__name:"upload-dragger",props:Ze,emits:et,setup(t,{emit:i}){const n=t,d=i;Be(me)||Y(re,"usage: <el-upload><el-upload-dragger /></el-upload>");const p=K("upload"),r=pe(!1),u=M(),w=c=>new Promise((v,s)=>c.file(v,s)),y=async c=>{try{if(c.isFile){const v=await w(c);return v.isDirectory=!1,[v]}if(c.isDirectory){const v=c.createReader(),s=()=>new Promise((m,R)=>v.readEntries(m,R)),e=[];let a=await s();for(;a.length>0;)e.push(...a),a=await s();const l=e.map(m=>y(m).catch(()=>[]));return se(await Promise.all(l))}}catch{return[]}return[]},P=async c=>{if(u.value)return;r.value=!1,c.stopPropagation();const v=Array.from(c.dataTransfer.files),s=c.dataTransfer.items||[];if(n.directory){const e=Array.from(s).map(a=>{var l;return(l=a==null?void 0:a.webkitGetAsEntry)==null?void 0:l.call(a)}).filter(a=>a);d("file",se(await Promise.all(e.map(y))));return}v.forEach((e,a)=>{var m,R;const l=(R=(m=s[a])==null?void 0:m.webkitGetAsEntry)==null?void 0:R.call(m);l&&(e.isDirectory=l.isDirectory)}),d("file",v)},C=()=>{u.value||(r.value=!0)},E=c=>{c.currentTarget.contains(c.relatedTarget)||(r.value=!1)};return(c,v)=>(b(),T("div",{class:g([o(p).b("dragger"),o(p).is("dragover",r.value)]),onDrop:B(P,["prevent"]),onDragover:B(C,["prevent"]),onDragleave:B(E,["prevent"])},[$(c.$slots,"default")],34))}}),ut=it;const dt=["tabindex","aria-disabled","onKeydown"],ct=["name","disabled","multiple","accept","webkitdirectory"];var ft=q({name:"ElUploadContent",inheritAttrs:!1,__name:"upload-content",props:Qe,setup(t,{expose:i}){const n=t,d=K("upload"),p=M(),r=W({}),u=W(),w=e=>{if(e.length===0)return;const{autoUpload:a,limit:l,fileList:m,multiple:R,onStart:L,onExceed:H}=n;if(l&&m.length+e.length>l){H(e,m);return}R||(e=e.slice(0,1));for(const _ of e){const O=_;O.uid=J(),L(O),a&&y(O)}},y=async e=>{if(u.value.value="",!n.beforeUpload)return C(e);let a,l={};try{const R=n.data,L=n.beforeUpload(e);l=Z(n.data)?oe(n.data):n.data,a=await L,Z(n.data)&&De(R,l)&&(l=oe(n.data))}catch{a=!1}if(a===!1){n.onRemove(e);return}let m=e;a instanceof Blob&&(a instanceof File?m=a:m=new File([a],e.name,{type:e.type})),C(Object.assign(m,{uid:e.uid}),l)},P=async(e,a)=>je(e)?e(a):e,C=async(e,a)=>{const{headers:l,data:m,method:R,withCredentials:L,name:H,action:_,onProgress:O,onSuccess:ge,onError:be,httpRequest:he}=n;try{a=await P(a??m,e)}catch{n.onRemove(e);return}const{uid:z}=e,I={headers:l||{},withCredentials:L,file:e,data:a,method:R,filename:H,action:_,onProgress:j=>{O(j,e)},onSuccess:j=>{ge(j,e),delete r.value[z]},onError:j=>{be(j,e),delete r.value[z]}},V=he(I);r.value[z]=V,V instanceof Promise&&V.then(I.onSuccess,I.onError)},E=e=>{const a=e.target.files;a&&w(Array.from(a))},c=()=>{p.value||(u.value.value="",u.value.click())},v=()=>{c()};return i({abort:e=>{Oe(r.value).filter(e?([a])=>String(e.uid)===a:()=>!0).forEach(([a,l])=>{l instanceof XMLHttpRequest&&l.abort(),delete r.value[a]})},upload:y}),(e,a)=>(b(),T("div",{class:g([o(d).b(),o(d).m(t.listType),o(d).is("drag",t.drag),o(d).is("disabled",o(p))]),tabindex:o(p)?void 0:0,"aria-disabled":o(p),role:"button",onClick:c,onKeydown:x(B(v,["self"]),["enter","space"])},[t.drag?(b(),U(ut,{key:0,disabled:o(p),directory:t.directory,onFile:w},{default:F(()=>[$(e.$slots,"default")]),_:3},8,["disabled","directory"])):$(e.$slots,"default",{key:1}),A("input",{ref_key:"inputRef",ref:u,class:g(o(d).e("input")),name:t.name,disabled:o(p),multiple:t.multiple,accept:t.accept,webkitdirectory:t.directory||void 0,type:"file",onChange:E,onClick:a[0]||(a[0]=B(()=>{},["stop"]))},null,42,ct)],42,dt))}}),ie=ft;const ue="ElUpload",de=t=>{var i;(i=t.url)!=null&&i.startsWith("blob:")&&URL.revokeObjectURL(t.url)},pt=(t,i)=>{const n=Ke(t,"fileList",void 0,{passive:!0}),d=s=>n.value.find(e=>e.uid===s.uid);function p(s){var e;(e=i.value)==null||e.abort(s)}function r(s=["ready","uploading","success","fail"]){n.value=n.value.filter(e=>!s.includes(e.status))}function u(s){n.value=n.value.filter(e=>e.uid!==s.uid)}const w=s=>{Ne(()=>t.onChange(s,n.value))},y=(s,e)=>{const a=d(e);a&&(console.error(s),a.status="fail",u(a),t.onError(s,a,n.value),w(a))},P=(s,e)=>{const a=d(e);a&&(t.onProgress(s,a,n.value),a.status="uploading",a.percentage=Math.round(s.percent))},C=(s,e)=>{const a=d(e);a&&(a.status="success",a.response=s,t.onSuccess(s,a,n.value),w(a))},E=s=>{fe(s.uid)&&(s.uid=J());const e={name:s.name,percentage:0,status:"ready",size:s.size,raw:s,uid:s.uid};if(t.listType==="picture-card"||t.listType==="picture")try{e.url=URL.createObjectURL(s)}catch(a){Ae(ue,a.message),t.onError(a,e,n.value)}n.value=[...n.value,e],w(e)},c=async s=>{const e=s instanceof File?d(s):s;e||Y(ue,"file to be removed not found");const a=l=>{p(l),u(l),t.onRemove(l,n.value),de(l)};t.beforeRemove?await t.beforeRemove(e,n.value)!==!1&&a(e):a(e)};function v(){n.value.filter(({status:s})=>s==="ready").forEach(({raw:s})=>{var e;return s&&((e=i.value)==null?void 0:e.upload(s))})}return ee(()=>t.listType,s=>{s!=="picture-card"&&s!=="picture"||(n.value=n.value.map(e=>{const{raw:a,url:l}=e;if(!l&&a)try{e.url=URL.createObjectURL(a)}catch(m){t.onError(m,e,n.value)}return e}))}),ee(n,s=>{for(const e of s)e.uid||(e.uid=J()),e.status||(e.status="success")},{immediate:!0,deep:!0}),{uploadFiles:n,abort:p,clearFiles:r,handleError:y,handleProgress:P,handleStart:E,handleSuccess:C,handleRemove:c,submit:v,revokeFileObjectURL:de}};var vt=q({name:"ElUpload",__name:"upload",props:We,setup(t,{expose:i}){const n=t,d=M(),p=W(),{abort:r,submit:u,clearFiles:w,uploadFiles:y,handleStart:P,handleError:C,handleRemove:E,handleSuccess:c,handleProgress:v,revokeFileObjectURL:s}=pt(n,p),e=G(()=>n.listType==="picture-card"),a=G(()=>({...n,fileList:y.value,onStart:P,onProgress:v,onSuccess:c,onError:C,onRemove:E}));return qe(()=>{y.value.forEach(s)}),Me(me,{accept:He(n,"accept")}),i({abort:r,submit:u,clearFiles:w,handleStart:P,handleRemove:E}),(l,m)=>(b(),T("div",null,[e.value&&t.showFileList?(b(),U(le,{key:0,disabled:o(d),"list-type":t.listType,files:o(y),crossorigin:t.crossorigin,"handle-preview":t.onPreview,onRemove:o(E)},te({append:F(()=>[S(ie,ae({ref_key:"uploadRef",ref:p},a.value),{default:F(()=>[l.$slots.trigger?$(l.$slots,"trigger",{key:0}):k("v-if",!0),!l.$slots.trigger&&l.$slots.default?$(l.$slots,"default",{key:1}):k("v-if",!0)]),_:3},16)]),_:2},[l.$slots.file?{name:"default",fn:F(({file:R,index:L})=>[$(l.$slots,"file",{file:R,index:L})]),key:"0"}:void 0]),1032,["disabled","list-type","files","crossorigin","handle-preview","onRemove"])):k("v-if",!0),!e.value||e.value&&!t.showFileList?(b(),U(ie,ae({key:1,ref_key:"uploadRef",ref:p},a.value),{default:F(()=>[l.$slots.trigger?$(l.$slots,"trigger",{key:0}):k("v-if",!0),!l.$slots.trigger&&l.$slots.default?$(l.$slots,"default",{key:1}):k("v-if",!0)]),_:3},16)):k("v-if",!0),l.$slots.trigger?$(l.$slots,"default",{key:2}):k("v-if",!0),$(l.$slots,"tip"),!e.value&&t.showFileList?(b(),U(le,{key:3,disabled:o(d),"list-type":t.listType,files:o(y),crossorigin:t.crossorigin,"handle-preview":t.onPreview,onRemove:o(E)},te({_:2},[l.$slots.file?{name:"default",fn:F(({file:R,index:L})=>[$(l.$slots,"file",{file:R,index:L})]),key:"0"}:void 0]),1032,["disabled","list-type","files","crossorigin","handle-preview","onRemove"])):k("v-if",!0)]))}}),yt=vt;const Et=_e(yt);export{Et as E};
|