ll-package
Version:
2 lines (1 loc) • 4.29 kB
JavaScript
Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const _=require("../../../@babel/runtime/helpers/esm/objectSpread2.js"),F=require("vue"),B=require("./request.js"),S=require("./uid.js"),A=require("./attr-accept.js"),I=require("./traverseFileTree.js"),K=require("./interface.js"),N=require("../_util/pickAttrs.js"),V=require("../../../lodash-es/partition.js");var z=function(t,O,s,i){function u(m){return m instanceof s?m:new s(function(l){l(m)})}return new(s||(s=Promise))(function(m,l){function P(p){try{k(i.next(p))}catch(j){l(j)}}function C(p){try{k(i.throw(p))}catch(j){l(j)}}function k(p){p.done?m(p.value):u(p.value).then(P,C)}k((i=i.apply(t,O||[])).next())})},G=function(t,O){var s={};for(var i in t)Object.prototype.hasOwnProperty.call(t,i)&&O.indexOf(i)<0&&(s[i]=t[i]);if(t!=null&&typeof Object.getOwnPropertySymbols=="function")for(var u=0,i=Object.getOwnPropertySymbols(t);u<i.length;u++)O.indexOf(i[u])<0&&Object.prototype.propertyIsEnumerable.call(t,i[u])&&(s[i[u]]=t[i[u]]);return s};const H=F.defineComponent({compatConfig:{MODE:3},name:"AjaxUploader",inheritAttrs:!1,props:K.uploadProps(),setup(t,O){let{slots:s,attrs:i,expose:u}=O;const m=F.ref(S.default()),l={},P=F.ref();let C=!1;const k=(e,n)=>z(this,void 0,void 0,function*(){const{beforeUpload:r}=t;let o=e;if(r){try{o=yield r(e,n)}catch{o=!1}if(o===!1)return{origin:e,parsedFile:null,action:null,data:null}}const{action:a}=t;let c;typeof a=="function"?c=yield a(e):c=a;const{data:y}=t;let f;typeof y=="function"?f=yield y(e):f=y;const b=(typeof o=="object"||typeof o=="string")&&o?o:e;let g;b instanceof File?g=b:g=new File([b],e.name,{type:e.type});const q=g;return q.uid=e.uid,{origin:e,data:f,parsedFile:q,action:c}}),p=e=>{let{data:n,origin:r,action:o,parsedFile:a}=e;if(!C)return;const{onStart:c,customRequest:y,name:f,headers:b,withCredentials:g,method:q}=t,{uid:w}=r,D=y||B.default,M={action:o,filename:f,data:n,file:a,headers:b,withCredentials:g,method:q||"post",onProgress:h=>{const{onProgress:v}=t;v==null||v(h,a)},onSuccess:(h,v)=>{const{onSuccess:d}=t;d==null||d(h,a,v),delete l[w]},onError:(h,v)=>{const{onError:d}=t;d==null||d(h,v,a),delete l[w]}};c(r),l[w]=D(M)},j=()=>{m.value=S.default()},E=e=>{if(e){const n=e.uid?e.uid:e;l[n]&&l[n].abort&&l[n].abort(),delete l[n]}else Object.keys(l).forEach(n=>{l[n]&&l[n].abort&&l[n].abort(),delete l[n]})};F.onMounted(()=>{C=!0}),F.onBeforeUnmount(()=>{C=!1,E()});const x=e=>{const n=[...e],r=n.map(o=>(o.uid=S.default(),k(o,n)));Promise.all(r).then(o=>{const{onBatchStart:a}=t;a==null||a(o.map(c=>{let{origin:y,parsedFile:f}=c;return{file:y,parsedFile:f}})),o.filter(c=>c.parsedFile!==null).forEach(c=>{p(c)})})},R=e=>{const{accept:n,directory:r}=t,{files:o}=e.target,a=[...o].filter(c=>!r||A.default(c,n));x(a),j()},T=e=>{const n=P.value;if(!n)return;const{onClick:r}=t;n.click(),r&&r(e)},$=e=>{e.key==="Enter"&&T(e)},U=e=>{const{multiple:n}=t;if(e.preventDefault(),e.type!=="dragover")if(t.directory)I.default(Array.prototype.slice.call(e.dataTransfer.items),x,r=>A.default(r,t.accept));else{const r=V.default(Array.prototype.slice.call(e.dataTransfer.files),c=>A.default(c,t.accept));let o=r[0];const a=r[1];n===!1&&(o=o.slice(0,1)),x(o),a.length&&t.onReject&&t.onReject(a)}};return u({abort:E}),()=>{var e;const{componentTag:n,prefixCls:r,disabled:o,id:a,multiple:c,accept:y,capture:f,directory:b,openFileDialogOnClick:g,onMouseenter:q,onMouseleave:w}=t,D=G(t,["componentTag","prefixCls","disabled","id","multiple","accept","capture","directory","openFileDialogOnClick","onMouseenter","onMouseleave"]),M={[r]:!0,[`${r}-disabled`]:o,[i.class]:!!i.class},h=b?{directory:"directory",webkitdirectory:"webkitdirectory"}:{},v=o?{}:{onClick:g?T:()=>{},onKeydown:g?$:()=>{},onMouseenter:q,onMouseleave:w,onDrop:U,onDragover:U,tabindex:"0"};return F.createVNode(n,_.default(_.default({},v),{},{class:M,role:"button",style:i.style}),{default:()=>[F.createVNode("input",_.default(_.default(_.default({},N.default(D,{aria:!0,data:!0})),{},{id:a,type:"file",ref:P,onClick:d=>d.stopPropagation(),onCancel:d=>d.stopPropagation(),key:m.value,style:{display:"none"},accept:y},h),{},{multiple:c,onChange:R},f!=null?{capture:f}:{}),null),(e=s.default)===null||e===void 0?void 0:e.call(s)]})}}});exports.default=H;
;