@pantograph/vue 0.29.3 → 0.29.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/dist/Card/index.d.ts +1 -1
- package/dist/Upload/Upload.d.ts +18 -46
- package/dist/Upload/UploadList.d.ts +7 -15
- package/dist/Upload/index.js +443 -441
- package/dist/Upload/index.umd.cjs +1 -1
- package/dist/Upload/types.d.ts +13 -11
- package/dist/use/index.js +1 -1
- package/dist/use/index.umd.cjs +1 -1
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("vue"),X=require("reka-ui"),v=require("@pantograph/utils"),ae=require("class-variance-authority"),ce=require("../Progress.vue_vue_type_style_index_0_lang-Da3J8MwA.js"),Re=require("../FloatButton.vue_vue_type_script_setup_true_lang-BD_pn8Vu.js"),D=require("../IconButton.vue_vue_type_script_setup_true_lang-CeH-nxZ6.js"),De=require("../Image.vue_vue_type_style_index_0_lang-B5wL0qfB.js"),k=require("es-toolkit"),je=require("../GraphicalObject.vue_vue_type_script_setup_true_lang-DuCrET7F.js"),I=require("@pantograph/utils-vue"),qe=require("../FormValidation.vue_vue_type_style_index_0_lang-CeM2O3Id.js"),$=require("../isObject-BDHKUJKN.js"),Oe=require("../isArray-Bin_5of_.js"),Y=v.getBemBlock("upload"),O=v.getBemElement(Y,"list"),U=v.getBemElement(O,"item"),[Ve,ue]=X.createContext("BaseUpload"),pe=()=>Ve(null),[V,de]=X.createContext("Upload"),me=["error","paused","done","uploading","waiting"],Z=["md","lg","xlg"],Q=["image","card"],fe=["outline","transparent"],K={other:{icon:"tabler:file-text",fg:"primary",bg:"primary-subtle"},text:{icon:"tabler:file-typography",fg:"primary",bg:"primary-subtle"},image:{icon:"tabler:photo",fg:"primary",bg:"primary-subtle"},video:{icon:"tabler:video",fg:"primary",bg:"primary-subtle"},zip:{icon:"tabler:file-zip",fg:"primary",bg:"primary-subtle"},pdf:{icon:"tabler:file-type-pdf",fg:"red",bg:"red-subtle"},document:{icon:"tabler:file-type-docx",fg:"primary",bg:"primary-subtle"},excel:{icon:"tabler:file-type-csv",fg:"green",bg:"green-subtle"}},le={image:["3fr","arw","bmp","dib","cr2","crw","dng","gif","heic","heif","ico","jfif","jpe","jpeg","jpg","jp2","nef","png","raf","raw","rw2","sr2","svg","svg","tga","tif","tiff","wdp","webp"],video:["3g2","3gp2","3gp","3gpp","asf","asx","avi","flv","m1v","m2v","mod","mp2v","mpa","mpe","mpv2","mpeg","mpegvideo","m2t","m2ts","tts","ts","mkv","mp4v","mp4","mov","m4v","mjpeg","mts","ogv","webm","wm","wmv","wmx","wvx"],text:["addin","dtsconfig","vssettings","vstemplate","xml","xrm-ms","xsd","xsl","cd","cs","csproj","iss","py","pyw","rc","rc2","rct","sln","srt","txt","user","vb","vbproj","vdp","vdproj","vspscc","vsscc","vssscc","contact","css","group","html","htm","shtml","htc","ics","iqy","odc","sct","wsc","vcf","vtt"],zip:["zip","7z","rar","tar.gz"],document:["doc","docx","odt","rtf"],excel:["xls","xlsx","csv","ods"],pdf:["pdf"]},ge=(t,o)=>{if(t){for(const[n,d]of Object.entries(le))if(d.includes(t.toLowerCase()))return n}return o&&Object.keys(le).includes(o)?o:"other"},ve=(t="")=>{const o=t.split("/"),d=o[o.length-1].split(/#|\?/)[0];return(/\.[^./\\]*$/.exec(d)||[""])[0]},G=t=>{var o,n,d;return(d=(n=(o=t==null?void 0:t.split)==null?void 0:o.call(t,"/"))==null?void 0:n.pop)==null?void 0:d.call(n)},Ne=t=>{var n;let o=G((t==null?void 0:t.type)||((n=t==null?void 0:t.originFileObj)==null?void 0:n.type));if(t!=null&&t.url&&!o)try{o=ve(t==null?void 0:t.url)}catch{}return o},Ae=t=>{var o,n;return(n=(o=t==null?void 0:t.split)==null?void 0:o.call(t,"/"))==null?void 0:n[0]},$e=t=>{var o;return Ae((t==null?void 0:t.type)||((o=t==null?void 0:t.originFileObj)==null?void 0:o.type))},M=t=>ge(t)==="image",he=t=>{if(t.type&&!t.thumbUrl)return M(G(t.type));const o=t.thumbUrl||t.url||"",n=ve(o);return/^data:image\//.test(o)||M(n)?!0:!(/^data:/.test(o)||n)},Me=e.defineComponent({...v.getComponentOptions("UploadListItemImage"),__name:"UploadListItemImage",setup(t){const o=V(),n=ee(),d=()=>{var s,u,h;k.isFunction((s=n.props.uploadFile)==null?void 0:s.cancel)&&((h=(u=n.props.uploadFile).cancel)==null||h.call(u)),o.remove(n.props.uploadFile.uid)};return(s,u)=>{var h;return e.openBlock(),e.createElementBlock(e.Fragment,null,[e.unref(n).props.uploadFile.status!=="waiting"?(e.openBlock(),e.createBlock(De._sfc_main,{key:0,src:e.unref(he)(e.unref(n).props.uploadFile)?e.unref(n).props.uploadFile.thumbUrl??e.unref(n).props.uploadFile.url:void 0,aspectRatio:"1:1",class:e.normalizeClass(e.unref(v.getBemElement)(e.unref(U),"image")),sizeRange:"xsm",alt:e.unref(n).label.value,hovered:e.unref(n).props.uploadFile.status==="uploading",width:"100%"},e.createSlots({_:2},[["error","done"].includes(e.unref(n).props.uploadFile.status)?{name:"actions",fn:e.withCtx(()=>[e.unref(n).props.uploadFile.status==="done"?(e.openBlock(),e.createBlock(D._sfc_main,{key:0,color:"neutral",type:"ghost",icon:"tabler:eye",size:"sm",onClick:u[0]||(u[0]=e.withModifiers(p=>e.unref(o).emit("preview",e.unref(n).props.uploadFile),["stop"]))})):e.unref(n).props.uploadFile.status==="error"?(e.openBlock(),e.createBlock(D._sfc_main,{key:1,color:"neutral",type:"ghost",icon:"tabler:reload",size:"sm",onClick:u[1]||(u[1]=e.withModifiers(p=>e.unref(o).resetRequest(e.unref(n).props.uploadFile.uid),["stop"]))})):e.createCommentVNode("",!0)]),key:"0"}:void 0]),1032,["src","class","alt","hovered"])):e.createCommentVNode("",!0),["uploading","waiting"].includes(e.unref(n).props.uploadFile.status)?(e.openBlock(),e.createBlock(ce._sfc_main,{key:1,type:"circle",size:e.unref(o).progressSize.value,class:e.normalizeClass(e.unref(v.getBemElement)(e.unref(U),"progress")),indeterminate:e.unref(n).props.uploadFile.status==="waiting",percent:((h=e.unref(n).props.uploadFile)==null?void 0:h.percent)??0},null,8,["size","class","indeterminate","percent"])):e.createCommentVNode("",!0),e.createVNode(Re._sfc_main,{class:e.normalizeClass(e.unref(v.normCls)(e.unref(v.getBemElement)(e.unref(U),"cancel"),"pantograph-tokens pantograph-dark")),color:"neutral",icon:"tabler:x",size:"sm",onClick:e.withModifiers(d,["stop"])},null,8,["class"])],64)}}}),Ge=e.defineComponent({...v.getComponentOptions("UploadFileGO"),__name:"UploadFileGO",setup(t){const o=ee(),n=V(),d=e.computed(()=>ge(Ne(o.props.uploadFile),$e(o.props.uploadFile))),s=e.computed(()=>k.isFunction(n.props.getFileIcon)?n.props.getFileIcon(o.props.uploadFile):K[d.value].icon),u=e.computed(()=>K[d.value].fg),h=e.computed(()=>K[d.value].bg),p=()=>{var y,a,_,L;const l=(a=(y=n.slots).go)==null?void 0:a.call(y,{uploadFile:o.props.uploadFile});return I.isEmptyElement(l)?he(o.props.uploadFile)?e.h("img",{class:v.getBemElement(U,"thumb"),alt:o.props.uploadFile.name??"",src:((_=o.props.uploadFile)==null?void 0:_.thumbUrl)??((L=o.props.uploadFile)==null?void 0:L.url)}):null:l},r=()=>{var y,a;const l=(a=(y=n.slots).goIcon)==null?void 0:a.call(y,{uploadFile:o.props.uploadFile});return I.isEmptyElement(l)?null:l},f=()=>e.h(je._sfc_main,{size:n.goSize.value,icon:s.value,fg:u.value,bg:h.value},{default:p,icon:r});return(l,y)=>(e.openBlock(),e.createBlock(f))}}),We=e.defineComponent({...v.getComponentOptions("UploadListItemCard"),__name:"UploadListItemCard",setup(t){const o=V(),n=ee(),d=()=>{var l,y;const r=(y=(l=o.slots).description)==null?void 0:y.call(l,{uploadFile:n.props.uploadFile});let f;if(I.isEmptyElement(r)||(f=r),n.props.uploadFile.description&&(f=n.props.uploadFile.description),f)return e.h("div",{class:v.getBemElement(U,"description")},f)},s=()=>{var f,l;const r=(l=(f=o.slots).title)==null?void 0:l.call(f,{uploadFile:n.props.uploadFile});return I.isEmptyElement(r)?n.label.value:r},u=()=>{var r;if(k.isFunction(o.props.onDownload))return o.props.onDownload(n.props.uploadFile);if((r=n.props.uploadFile)!=null&&r.url&&typeof window<"u")return window.open(n.props.uploadFile.url)},h=e.computed(()=>{var r,f;return(r=n.props.uploadFile)!=null&&r.percent&&((f=n.props.uploadFile)==null?void 0:f.status)!=="waiting"?`${(n.props.uploadFile.percent??0).toFixed(0)}%`:"waiting..."}),p=(r,f)=>{var y,a,_,L;const l=(a=(y=o.slots)==null?void 0:y.actions)==null?void 0:a.call(y,{...o,uploadFile:n.props.uploadFile,downloadFile:u});return I.isEmptyElement(l)?(L=(_=f.slots)==null?void 0:_.default)==null?void 0:L.call(_,{}):l};return(r,f)=>{var l;return e.openBlock(),e.createElementBlock(e.Fragment,null,[e.unref(o).props.go?(e.openBlock(),e.createBlock(Ge,{key:0})):e.createCommentVNode("",!0),["error","done"].includes(e.unref(n).props.uploadFile.status)?(e.openBlock(),e.createElementBlock("div",{key:2,class:e.normalizeClass(e.unref(v.getBemElement)(e.unref(U),"content"))},[e.createElementVNode("div",{class:e.normalizeClass(e.unref(v.getBemElement)(e.unref(U),"title"))},[e.createVNode(s)],2),e.unref(n).props.uploadFile.status==="error"?(e.openBlock(),e.createBlock(qe._sfc_main,{key:0,message:"Failed",status:"error"})):e.unref(o).props.size!=="md"?(e.openBlock(),e.createBlock(d,{key:1})):e.createCommentVNode("",!0)],2)):(e.openBlock(),e.createBlock(ce._sfc_main,{key:1,class:e.normalizeClass(e.unref(v.getBemElement)(e.unref(U),"progress")),percent:((l=e.unref(n).props.uploadFile)==null?void 0:l.percent)??0,label:e.unref(n).label.value,helperText:h.value,helperTextCls:e.unref(v.getBemElement)(e.unref(U),"percent")},{label:e.withCtx(()=>[e.createVNode(s)]),_:1},8,["class","percent","label","helperText","helperTextCls"])),e.createVNode(p,null,{default:e.withCtx(()=>{var y;return[e.unref(n).props.uploadFile.status==="done"?(e.openBlock(),e.createBlock(D._sfc_main,{key:0,icon:"tabler:download",size:"sm",type:"ghost",color:"neutral",onClick:e.withModifiers(u,["stop"])})):e.createCommentVNode("",!0),e.unref(o).props.pausableChunked&&e.unref(n).props.uploadFile.status==="uploading"&&((y=e.unref(n).props.uploadFile.chunks)!=null&&y.length)&&e.unref(k.isFunction)(e.unref(n).props.uploadFile.cancel)?(e.openBlock(),e.createBlock(D._sfc_main,{key:1,icon:"tabler:pause",size:"sm",type:"ghost",color:"neutral",onClick:e.withModifiers(e.unref(n).props.uploadFile.cancel,["stop"])},null,8,["onClick"])):e.unref(o).canRunUpload(e.unref(n).props.uploadFile.uid)?(e.openBlock(),e.createBlock(D._sfc_main,{key:2,icon:["paused","waiting"].includes(e.unref(n).props.uploadFile.status)?"tabler:player-play":"tabler:reload",size:"sm",type:"ghost",color:"neutral",onClick:f[0]||(f[0]=e.withModifiers(a=>e.unref(o).resetRequest(e.unref(n).props.uploadFile.uid),["stop"]))},null,8,["icon"])):e.createCommentVNode("",!0),e.createVNode(D._sfc_main,{icon:["done","error"].includes(e.unref(n).props.uploadFile.status)?"tabler:trash":"tabler:x",size:"sm",type:"ghost",color:"neutral",onClick:f[1]||(f[1]=e.withModifiers(a=>e.unref(o).remove(e.unref(n).props.uploadFile.uid),["stop"]))},null,8,["icon"])]}),_:1})],64)}}}),[ee,He]=X.createContext("UploadItem"),Je=e.defineComponent({...v.getComponentOptions("UploadListItem"),__name:"UploadListItem",props:{uploadFile:{}},setup(t){const o=t,n=ae.cva(U,{variants:{size:v.generateVariantClassList(Z,U),listType:v.generateVariantClassList(Q,U),type:v.generateVariantClassList(fe,U),status:v.generateVariantClassList(me,U)}}),d=e.computed(()=>{var h,p,r;return((h=o.uploadFile)==null?void 0:h.name)??((r=(p=o.uploadFile)==null?void 0:p.originFileObj)==null?void 0:r.name)}),s=V();He({props:o,label:d});const u=()=>{var p,r;const h=(r=(p=s.slots).listItem)==null?void 0:r.call(p,{...s,uploadFile:o.uploadFile});return I.isEmptyElement(h)?s.props.listType==="card"?e.h(We):e.h(Me):h};return(h,p)=>{var r,f,l;return e.openBlock(),e.createElementBlock("div",e.mergeProps({class:e.unref(n)({size:e.unref(s).props.size,listType:e.unref(s).props.listType,type:e.unref(s).props.type,status:(r=h.uploadFile)==null?void 0:r.status})},{...((l=(f=e.unref(s).props).getUploadItemProps)==null?void 0:l.call(f,h.uploadFile))??{}}),[e.createVNode(u)],16)}}}),Ke=(t,o,n=1024*1024)=>{const d=[];let s=0,u=0;for(;s<t.size;){const h=Math.min(s+n,t.size),p=t.slice(s,h);d.push({chunk:p,chunkSize:h-s,index:u,uid:o(),status:"waiting"}),s=h,u++}return d},ye=(t,{getUid:o,chunkFile:n,chunkSize:d})=>{if($.isObject(t)){let s;if(t instanceof File)s=t;else try{s=new File([t],t.name??"",{type:t.type??""})}catch{s=new Blob([t],{type:t.type??""}),s.lastModified=new Date().getTime(),s.name=t.name??"",s.webkitRelativePath=""}if($.isObject(s)&&s instanceof Blob){let u=[];return n&&(u=Ke(s,()=>(o==null?void 0:o(!0))??v.usePCId(void 0,!0),d)),{uid:t.uid??(o==null?void 0:o())??v.usePCId(void 0,!0),originFileObj:s,status:"waiting",chunks:u!=null&&u.length&&(u==null?void 0:u.length)>1?u:void 0,chunksCount:u!=null&&u.length&&(u==null?void 0:u.length)>1?u.length:void 0,name:s==null?void 0:s.name,type:s==null?void 0:s.type,size:s==null?void 0:s.size,lastModified:s==null?void 0:s.lastModified,thumbUrl:void 0}}}},Xe=(t,o)=>{if($.isObject(t))return t instanceof Blob||t instanceof File?ye(t,o):(!t.uid&&!Object.isFrozen(t)&&(t.uid=o.getUid()),t)},ke=(t,o)=>{if(t&&o){const n=Array.isArray(o)?o:o.split(","),d=(t==null?void 0:t.name)||"",s=(t==null?void 0:t.type)||"",u=s.replace(/\/.*$/,"");return n.some(h=>{const p=h.trim();if(/^\*(?<temp1>\/\*)?$/.test(h))return!0;if(p.charAt(0)==="."){const r=d.toLowerCase(),f=p.toLowerCase();let l=[f];return(f===".jpg"||f===".jpeg")&&(l=[".jpg",".jpeg"]),l.some(y=>r.endsWith(y))}return/\/\*$/.test(p)?u===p.replace(/\/.*$/,""):!!(s===p||/^\w+$/.test(p))})}return!0},R=200;function Ye(t){return new Promise(o=>{if(!t.type||!M(G(t.type))){o("");return}const n=document.createElement("canvas");n.width=R,n.height=R,n.style.cssText=`position: fixed; left: 0; top: 0; width: ${R}px; height: ${R}px; z-index: 9999; display: none;`,document.body.appendChild(n);const d=n.getContext("2d"),s=new Image;if(s.onload=()=>{const{width:u,height:h}=s;let p=R,r=R,f=0,l=0;u>h?(r=h*(R/u),l=-(r-p)/2):(p=u*(R/h),f=-(p-r)/2),d.drawImage(s,f,l,p,r);const y=n.toDataURL();document.body.removeChild(n),o(y)},s.crossOrigin="anonymous",t.type.startsWith("image/svg+xml")){const u=new FileReader;u.addEventListener("load",()=>{u.result&&(s.src=u.result)}),u.readAsDataURL(t)}else s.src=window.URL.createObjectURL(t)})}const te=e.defineComponent({...v.getComponentOptions("UploadList"),__name:"UploadList",props:{onDownload:{},parallelUpload:{type:Boolean},uploadOnSelect:{type:Boolean,default:!0},pausableChunked:{type:Boolean},getUploadItemProps:{},noTrigger:{type:Boolean},fileList:{},size:{default:"md"},chunkSize:{},listType:{default:"card"},type:{default:"outline"},go:{type:Boolean,default:!0},maxCount:{},action:{},getFileIcon:{},triggerCls:{},fileListCls:{},directory:{type:Boolean},multiple:{type:Boolean,default:!0},disabled:{type:Boolean,default:void 0},accept:{}},emits:["update:fileList","change","preview","createRequest","resetRequest","remove"],setup(t,{expose:o,emit:n}){const d=t,s=n,u=e.useSlots(),h=e.useAttrs(),p=pe(),r=e.computed(()=>(p==null?void 0:p.props)??d),f=e.computed(()=>r.value.maxCount?Number(r.value.maxCount):0),l=e.computed(()=>r.value.listType!=="image"&&r.value.pausableChunked),y=e.computed(()=>r.value.accept??r.value.listType==="image"?"image/*":void 0),a=e.ref([]);let _=!1;e.watch(()=>r.value.fileList,i=>{var m,x;if(!_){const B=(x=(m=i??[])==null?void 0:m.map)==null?void 0:x.call(m,F=>{if(F&&$.isObject(F))return Xe(F,{getUid:ie,chunkFile:l.value,chunkSize:r.value.chunkSize})}).filter(Boolean);k.isEqual(B,a.value)||(_=!0,a.value=B,e.nextTick(()=>_=!1))}},{immediate:!0,deep:!0}),e.watch(a,i=>{_||(_=!0,s("update:fileList",i??[]),e.nextTick(()=>_=!1))},{immediate:!0,deep:!0});const L=i=>a.value.find(m=>i&&m.uid===i),W=i=>a.value.findIndex(m=>i&&m.uid===i),_e=i=>{if(i){const m=W(i.uid);m===-1&&(!f.value||f.value>a.value.length)?a.value.push(i):m>-1&&a.value.splice(m,0,i),s("change",{file:k.cloneDeep(i),fileList:k.cloneDeep(a.value),event:"add"})}},we=i=>{Oe.isArray(i)&&i.filter(m=>!r.value.directory||ke(m,y.value)).forEach(m=>{_e(ye(m,{getUid:ie,chunkFile:l.value,chunkSize:r.value.chunkSize}))})};let T=[];const oe=()=>{var i;return r.value.uploadOnSelect||r.value.listType==="image"?((i=a.value)==null?void 0:i.filter(m=>T.includes(m.uid)?!1:m.status==="waiting"&&m.originFileObj))??[]:[]},P=(i,m)=>{if(i&&m){const x=W(i);x>-1&&(a.value[x]={...a.value[x],...m})}},N=i=>{T=T.filter(m=>m!==i)},H=async i=>{var m,x,B,F;if(i&&a.value){const C=L(i),Ee=l.value&&((m=C==null?void 0:C.chunks)==null?void 0:m.length)&&(C==null?void 0:C.chunks.length)>1&&(C==null?void 0:C.status)==="uploading"&&(C==null?void 0:C.chunks.some(A=>A.status==="waiting"));if(C&&k.isFunction(r.value.action)&&(!T.length||r.value.parallelUpload||Ee)){T.includes(i)||T.push(i);const A=new AbortController,Te=()=>{const w=()=>{N(i),A.abort()},c=k.cloneDeep(C);if(l.value&&c.chunks&&c.chunks.length>1){const g=c.chunks.findIndex(z=>z.status==="waiting");g>-1&&(c.chunks[g]={...c.chunks[g],status:"uploading",cancel:w})}P(c.uid,{status:"uploading",cancel:w})};let b={signal:A.signal,onUploadProgress(){},uid:C.uid};if(l.value&&C.chunks&&C.chunks.length>1&&C.chunks.some(w=>w.status==="waiting")){const w=C.chunks.find(c=>c.status==="waiting");w!=null&&w.uid&&(b={...b,...k.pick(w,["chunk","chunkSize","index"]),chunkUid:w.uid,onUploadProgress(c){var z,j,S,se;const g=k.cloneDeep(a.value.find(q=>q.uid===C.uid));if(g){const q=(z=g.chunks)==null?void 0:z.findIndex(J=>J.uid===w.uid);if(q!==void 0&&((j=g.chunks)!=null&&j[q])&&(g.chunks[q].percent=Math.round(c.loaded*100/c.total)),(S=g.chunks)!=null&&S.length&&((se=g.chunks)==null?void 0:se.length)>1){const J=g.chunks.reduce((Pe,Se)=>Pe+(Se.percent??0),0);g.percent=Math.min(Math.max(J/g.chunks.length,0),100)}else g.percent=Math.round(c.loaded*100/c.total);P(g.uid,{chunks:g.chunks,percent:g.percent})}}})}else b={...b,file:C.originFileObj,onUploadProgress(w){const c=k.cloneDeep(a.value.find(g=>g.uid===C.uid));c&&P(c.uid,{percent:Math.round(w.loaded*100/w.total)})}};if(Te(),b.file||b.chunk){s("createRequest",C),s("change",{file:k.cloneDeep(C),fileList:k.cloneDeep(a.value),event:"upload"});try{let w=await r.value.action(b);try{typeof w=="string"&&(w=JSON.parse(w))}catch{}let c=k.cloneDeep(a.value.find(g=>g.uid===b.uid));if(c){let g=!1;if(b.chunkUid&&((x=c.chunks)!=null&&x.length)&&c.chunks.length>1){const z=c.chunks.findIndex(S=>S.uid===b.chunkUid);c.chunks[z]&&(c.chunks[z]={...c.chunks[z],cancel:void 0,status:"done",response:w??void 0});const j=c.chunks.every(S=>S.status==="done")?"done":"uploading";j==="done"?c={...c,cancel:void 0,status:j}:c.chunks.some(S=>S.status==="waiting")&&(g=!0)}else c={...c,cancel:void 0,status:"done",response:w??void 0};P(b.uid,c),g?await H(i):N(i)}}catch(w){if(w.name==="CanceledError"){let c=k.cloneDeep(a.value.find(g=>g.uid===b.uid));if(c){if(b.chunkUid&&((B=c.chunks)!=null&&B.length)&&c.chunks.length>1){const g=c.chunks.findIndex(z=>z.uid===b.chunkUid);c.chunks[g]&&(c.chunks[g]={...c.chunks[g],cancel:void 0,status:"waiting"}),c={...c,cancel:void 0,status:"paused"},s("change",{file:k.cloneDeep(c),fileList:k.cloneDeep(a.value),event:"paused"})}else c={...c,cancel:void 0,status:"error"},s("change",{file:k.cloneDeep(c),fileList:k.cloneDeep(a.value),event:"cancel"});P(b.uid,c),N(i)}}else{let c=k.cloneDeep(a.value.find(g=>g.uid===b.uid));if(c){if(b.chunkUid&&((F=c.chunks)!=null&&F.length)&&c.chunks.length>1){const g=c.chunks.findIndex(z=>z.uid===b.chunkUid);c.chunks[g]&&(c.chunks[g]={...c.chunks[g],cancel:void 0,status:"waiting"})}c={...c,cancel:void 0,status:"error",error:w,percent:0},s("change",{file:k.cloneDeep(c),fileList:k.cloneDeep(a.value),event:"failed"}),P(b.uid,c),N(i)}}}}}}},xe=async i=>{if(i&&a.value){const m=L(i);if(m)return P(i,{status:"waiting"}),s("resetRequest",m),H(i)}},be=async i=>{var m,x;if(i&&a.value){const B=W(i),F=k.cloneDeep(a.value??[]);B>-1&&F[B]&&((x=(m=F[B]).cancel)==null||x.call(m),F.splice(B,1),a.value=F,s("remove",F[B]),s("change",{file:F[B],fileList:k.cloneDeep(a.value),event:"remove"}))}},Be=i=>{if(r.value.parallelUpload||!T.length){const m=L(i);if(m&&(m.status==="paused"||m.status==="error"||(!r.value.uploadOnSelect||r.value.listType==="image")&&m.status==="waiting"))return!0}return!1},Ue=e.computed(()=>{switch(r.value.size){case"xlg":return"md";default:return"sm"}}),Fe=k.throttle(()=>{(r.value.parallelUpload&&oe().length||!T.length)&&oe().forEach(i=>H(i.uid)),(a.value||[]).forEach(i=>{typeof document>"u"||typeof window>"u"||!window.FileReader||!window.File||!(i.originFileObj instanceof File||i.originFileObj instanceof Blob)||i.thumbUrl!==void 0||!i.type||!M(G(i.type))||(i.thumbUrl="",Ye(i.originFileObj).then(m=>{const x=m||"";x!==i.thumbUrl&&P(i==null?void 0:i.uid,{thumbUrl:x})}))})},50);e.watch(a,Fe,{deep:!0});const ze=e.computed(()=>{switch(r.value.size){case"xlg":return"sm";case"lg":return"xsm";default:return"x2sm"}}),E={props:(p==null?void 0:p.props)??d,attrs:(p==null?void 0:p.attrs)??h,slots:(p==null?void 0:p.slots)??u,emit:(p==null?void 0:p.emit)??s,fileList:e.readonly(a),progressSize:ze,getAccept:y,goSize:Ue,resetRequest:xe,canRunUpload:Be,remove:be,addFiles:we};de(E);const Le=ae.cva(O,{variants:{size:v.generateVariantClassList(Z,O),listType:v.generateVariantClassList(Q,O)}}),Ie=()=>{var m,x;const i=(x=(m=E.slots).list)==null?void 0:x.call(m,E);return I.isEmptyElement(i)?E.fileList.value.map(B=>e.h(Je,{uploadFile:B,key:B.uid})):i};return o(E),(i,m)=>{var x;return(x=E.fileList.value)!=null&&x.length?(e.openBlock(),e.createElementBlock("div",{key:0,class:e.normalizeClass(e.unref(v.normCls)(e.unref(Le)({size:E.props.size,listType:E.props.listType}),E.props.fileListCls))},[e.createVNode(Ie)],2)):e.createCommentVNode("",!0)}}}),Ze=t=>new Promise(o=>{t.file(n=>{t.fullPath&&!n.webkitRelativePath&&Object.defineProperty(n,"webkitRelativePath",{value:t.fullPath.replace(/^\//,""),writable:!1}),o(n)})}),Qe=t=>{const o=t.createReader(),n=[];return new Promise(d=>{const s=()=>{o.readEntries(u=>{u.length===0?d(n):(n.push(...u),s())})};s()})},et=async t=>{const o=[],n=async d=>{if(d.isFile){const s=await Ze(d);o.push(s)}else if(d.isDirectory){const s=await Qe(d);await Promise.all(s.map(n))}};return await Promise.all(t.map(d=>{var u;const s=(u=d.webkitGetAsEntry)==null?void 0:u.call(d);if(s)return n(s)}).filter(Boolean)),o},tt=["accept","webkitdirectory","multiple","value","disabled"],ne=e.defineComponent({...v.getComponentOptions("UploadTrigger"),__name:"UploadTrigger",props:{directory:{type:Boolean},multiple:{type:Boolean},disabled:{type:Boolean,default:void 0},accept:{},class:{}},emits:["addFiles"],setup(t,{emit:o}){const n=o,d=t,{getDisabled:s}=I.useFormInput(),u=e.ref(),h=a=>{const{files:_}=a.target;n("addFiles",Array.prototype.slice.call(_)),p.value&&(p.value.value="")},p=e.ref(),r=()=>{var a;(a=p.value)==null||a.click()},f=a=>{a.key==="Enter"&&r()},l=async a=>{if(a.preventDefault(),a.type==="dragover")return;let _=[];a.dataTransfer&&(d.directory?_=await et(Array.prototype.slice.call(a.dataTransfer.items)):_=Array.prototype.slice.call(a.dataTransfer.files)),d.multiple||(_=_.slice(0,1)),n("addFiles",_.filter(L=>ke(L,d.accept)))},y=e.computed(()=>s.value?{}:{onClick:r,onKeydown:f,onDrop:l,onDragover:l});return(a,_)=>(e.openBlock(),e.createElementBlock("div",e.mergeProps({class:e.unref(v.normCls)(d.class)},y.value),[e.renderSlot(a.$slots,"default",e.normalizeProps(e.guardReactiveProps({...y.value,disabled:e.unref(s),tabindex:"0"}))),e.createElementVNode("input",{type:"file",accept:a.accept,webkitdirectory:a.directory,multiple:a.multiple,value:u.value,disabled:e.unref(s),onChange:h,ref_key:"inputRef",ref:p,style:{display:"none"}},null,40,tt)],16))}}),re=v.getBemElement(Y,"file"),ie=t=>v.usePCId(t?v.getBemElement(re,"chunk"):re,!0),Ce=e.defineComponent({...v.getComponentOptions("Upload",!1),__name:"Upload",props:{onDownload:{},parallelUpload:{type:Boolean},uploadOnSelect:{type:Boolean,default:!0},pausableChunked:{type:Boolean},getUploadItemProps:{},noTrigger:{type:Boolean},fileList:{},size:{default:"md"},chunkSize:{},listType:{default:"card"},type:{default:"outline"},go:{type:Boolean,default:!0},maxCount:{},action:{},getFileIcon:{},triggerCls:{},fileListCls:{},directory:{type:Boolean},multiple:{type:Boolean,default:!0},disabled:{type:Boolean,default:void 0},accept:{}},emits:["update:fileList","change","preview","createRequest","resetRequest","remove"],setup(t,{expose:o,emit:n}){const d=t,s=n,u=e.useSlots(),h=e.useAttrs(),p={props:d,attrs:h,slots:u,emit:s};ue(p);const r=e.ref(),f={progressSize:e.computed(()=>{var l;return(l=r.value)==null?void 0:l.progressSize}),resetRequest:e.computed(()=>{var l;return(l=r.value)==null?void 0:l.resetRequest}),canRunUpload:e.computed(()=>{var l;return(l=r.value)==null?void 0:l.canRunUpload}),remove:e.computed(()=>{var l;return(l=r.value)==null?void 0:l.remove}),goSize:e.computed(()=>{var l;return(l=r.value)==null?void 0:l.goSize}),addFiles:e.computed(()=>{var l;return(l=r.value)==null?void 0:l.addFiles}),fileList:e.computed(()=>{var l;return(l=r.value)==null?void 0:l.fileList}),getAccept:e.computed(()=>{var l;return(l=r.value)==null?void 0:l.getAccept})};return o({...p,...f,listRef:r}),(l,y)=>(e.openBlock(),e.createElementBlock(e.Fragment,null,[l.noTrigger?e.createCommentVNode("",!0):(e.openBlock(),e.createBlock(ne,{key:0,multiple:l.multiple,directory:l.directory,disabled:l.disabled,accept:f.getAccept.value,onAddFiles:f.addFiles.value,class:e.normalizeClass(l.triggerCls)},{default:e.withCtx(a=>[e.renderSlot(l.$slots,"default",e.normalizeProps(e.guardReactiveProps(a)))]),_:3},8,["multiple","directory","disabled","accept","onAddFiles","class"])),e.createVNode(te,{action:l.action,ref_key:"listRef",ref:r},null,8,["action"])],64))}}),nt=I.installComponent(Ce,v.getComponentName("Upload")),ot=I.installComponent(te,v.getComponentName("UploadList")),st=I.installComponent(ne,v.getComponentName("UploadTrigger"));exports.Upload=Ce;exports.UploadList=te;exports.UploadListPlugin=ot;exports.UploadListTypes=Q;exports.UploadPlugin=nt;exports.UploadSizes=Z;exports.UploadStatuses=me;exports.UploadTrigger=ne;exports.UploadTriggerPlugin=st;exports.UploadTypes=fe;exports.injectBaseUploadContext=pe;exports.injectUploadContext=V;exports.provideBaseUploadContext=ue;exports.provideUploadContext=de;exports.uploadListItemPrefix=U;exports.uploadListPrefix=O;exports.uploadPrefix=Y;
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("vue"),Y=require("reka-ui"),v=require("@pantograph/utils"),ce=require("class-variance-authority"),ue=require("../Progress.vue_vue_type_style_index_0_lang-Da3J8MwA.js"),De=require("../FloatButton.vue_vue_type_script_setup_true_lang-BD_pn8Vu.js"),D=require("../IconButton.vue_vue_type_script_setup_true_lang-CeH-nxZ6.js"),je=require("../Image.vue_vue_type_style_index_0_lang-B5wL0qfB.js"),_=require("es-toolkit"),qe=require("../GraphicalObject.vue_vue_type_script_setup_true_lang-DuCrET7F.js"),I=require("@pantograph/utils-vue"),Oe=require("../FormValidation.vue_vue_type_style_index_0_lang-CeM2O3Id.js"),$=require("../isObject-BDHKUJKN.js"),Ve=require("../isArray-Bin_5of_.js"),Z=v.getBemBlock("upload"),O=v.getBemElement(Z,"list"),U=v.getBemElement(O,"item"),[Ne,pe]=Y.createContext("BaseUpload"),de=()=>Ne(null),[V,me]=Y.createContext("Upload"),fe=["error","paused","done","uploading","waiting"],Q=["md","lg","xlg"],ee=["image","card"],ge=["outline","transparent"],X={other:{icon:"tabler:file-text",fg:"primary",bg:"primary-subtle"},text:{icon:"tabler:file-typography",fg:"primary",bg:"primary-subtle"},image:{icon:"tabler:photo",fg:"primary",bg:"primary-subtle"},video:{icon:"tabler:video",fg:"primary",bg:"primary-subtle"},zip:{icon:"tabler:file-zip",fg:"primary",bg:"primary-subtle"},pdf:{icon:"tabler:file-type-pdf",fg:"red",bg:"red-subtle"},document:{icon:"tabler:file-type-docx",fg:"primary",bg:"primary-subtle"},excel:{icon:"tabler:file-type-csv",fg:"green",bg:"green-subtle"}},re={image:["3fr","arw","bmp","dib","cr2","crw","dng","gif","heic","heif","ico","jfif","jpe","jpeg","jpg","jp2","nef","png","raf","raw","rw2","sr2","svg","svg","tga","tif","tiff","wdp","webp"],video:["3g2","3gp2","3gp","3gpp","asf","asx","avi","flv","m1v","m2v","mod","mp2v","mpa","mpe","mpv2","mpeg","mpegvideo","m2t","m2ts","tts","ts","mkv","mp4v","mp4","mov","m4v","mjpeg","mts","ogv","webm","wm","wmv","wmx","wvx"],text:["addin","dtsconfig","vssettings","vstemplate","xml","xrm-ms","xsd","xsl","cd","cs","csproj","iss","py","pyw","rc","rc2","rct","sln","srt","txt","user","vb","vbproj","vdp","vdproj","vspscc","vsscc","vssscc","contact","css","group","html","htm","shtml","htc","ics","iqy","odc","sct","wsc","vcf","vtt"],zip:["zip","7z","rar","tar.gz"],document:["doc","docx","odt","rtf"],excel:["xls","xlsx","csv","ods"],pdf:["pdf"]},ve=(t,o)=>{if(t){for(const[n,d]of Object.entries(re))if(d.includes(t.toLowerCase()))return n}return o&&Object.keys(re).includes(o)?o:"other"},he=(t="")=>{const o=t.split("/"),d=o[o.length-1].split(/#|\?/)[0];return(/\.[^./\\]*$/.exec(d)||[""])[0]},G=t=>{var o,n,d;return(d=(n=(o=t==null?void 0:t.split)==null?void 0:o.call(t,"/"))==null?void 0:n.pop)==null?void 0:d.call(n)},Ae=t=>{var n;let o=G((t==null?void 0:t.type)||((n=t==null?void 0:t.originFileObj)==null?void 0:n.type));if(t!=null&&t.url&&!o)try{o=he(t==null?void 0:t.url)}catch{}return o},$e=t=>{var o,n;return(n=(o=t==null?void 0:t.split)==null?void 0:o.call(t,"/"))==null?void 0:n[0]},Me=t=>{var o;return $e((t==null?void 0:t.type)||((o=t==null?void 0:t.originFileObj)==null?void 0:o.type))},M=t=>ve(t)==="image",ye=t=>{if(t.type&&!t.thumbUrl)return M(G(t.type));const o=t.thumbUrl||t.url||"",n=he(o);return/^data:image\//.test(o)||M(n)?!0:!(/^data:/.test(o)||n)},Ge=e.defineComponent({...v.getComponentOptions("UploadListItemImage"),__name:"UploadListItemImage",setup(t){const o=V(),n=te(),d=()=>{var s,a,h;_.isFunction((s=n.props.uploadFile)==null?void 0:s.cancel)&&((h=(a=n.props.uploadFile).cancel)==null||h.call(a)),o.remove(n.props.uploadFile.uid)};return(s,a)=>{var h;return e.openBlock(),e.createElementBlock(e.Fragment,null,[e.unref(n).props.uploadFile.status!=="waiting"?(e.openBlock(),e.createBlock(je._sfc_main,{key:0,src:e.unref(ye)(e.unref(n).props.uploadFile)?e.unref(n).props.uploadFile.thumbUrl??e.unref(n).props.uploadFile.url:void 0,aspectRatio:"1:1",class:e.normalizeClass(e.unref(v.getBemElement)(e.unref(U),"image")),sizeRange:"xsm",alt:e.unref(n).label.value,hovered:e.unref(n).props.uploadFile.status==="uploading",width:"100%"},e.createSlots({_:2},[["error","done"].includes(e.unref(n).props.uploadFile.status)?{name:"actions",fn:e.withCtx(()=>[e.unref(n).props.uploadFile.status==="done"?(e.openBlock(),e.createBlock(D._sfc_main,{key:0,color:"neutral",type:"ghost",icon:"tabler:eye",size:"sm",onClick:a[0]||(a[0]=e.withModifiers(p=>e.unref(o).emit("preview",e.unref(n).props.uploadFile),["stop"]))})):e.unref(n).props.uploadFile.status==="error"?(e.openBlock(),e.createBlock(D._sfc_main,{key:1,color:"neutral",type:"ghost",icon:"tabler:reload",size:"sm",onClick:a[1]||(a[1]=e.withModifiers(p=>e.unref(o).resetRequest(e.unref(n).props.uploadFile.uid),["stop"]))})):e.createCommentVNode("",!0)]),key:"0"}:void 0]),1032,["src","class","alt","hovered"])):e.createCommentVNode("",!0),["uploading","waiting"].includes(e.unref(n).props.uploadFile.status)?(e.openBlock(),e.createBlock(ue._sfc_main,{key:1,type:"circle",size:e.unref(o).progressSize.value,class:e.normalizeClass(e.unref(v.getBemElement)(e.unref(U),"progress")),indeterminate:e.unref(n).props.uploadFile.status==="waiting",percent:((h=e.unref(n).props.uploadFile)==null?void 0:h.percent)??0},null,8,["size","class","indeterminate","percent"])):e.createCommentVNode("",!0),e.createVNode(De._sfc_main,{class:e.normalizeClass(e.unref(v.normCls)(e.unref(v.getBemElement)(e.unref(U),"cancel"),"pantograph-tokens pantograph-dark")),color:"neutral",icon:"tabler:x",size:"sm",onClick:e.withModifiers(d,["stop"])},null,8,["class"])],64)}}}),We=e.defineComponent({...v.getComponentOptions("UploadFileGO"),__name:"UploadFileGO",setup(t){const o=te(),n=V(),d=e.computed(()=>ve(Ae(o.props.uploadFile),Me(o.props.uploadFile))),s=e.computed(()=>_.isFunction(n.props.getFileIcon)?n.props.getFileIcon(o.props.uploadFile):X[d.value].icon),a=e.computed(()=>X[d.value].fg),h=e.computed(()=>X[d.value].bg),p=()=>{var k,y,m,F;const r=(y=(k=n.slots).go)==null?void 0:y.call(k,{uploadFile:o.props.uploadFile});return I.isEmptyElement(r)?ye(o.props.uploadFile)?e.h("img",{class:v.getBemElement(U,"thumb"),alt:o.props.uploadFile.name??"",src:((m=o.props.uploadFile)==null?void 0:m.thumbUrl)??((F=o.props.uploadFile)==null?void 0:F.url)}):null:r},c=()=>{var k,y;const r=(y=(k=n.slots).goIcon)==null?void 0:y.call(k,{uploadFile:o.props.uploadFile});return I.isEmptyElement(r)?null:r},u=()=>e.h(qe._sfc_main,{size:n.goSize.value,icon:s.value,fg:a.value,bg:h.value},{default:p,icon:c});return(r,k)=>(e.openBlock(),e.createBlock(u))}}),He=e.defineComponent({...v.getComponentOptions("UploadListItemCard"),__name:"UploadListItemCard",setup(t){const o=V(),n=te(),d=()=>{var r,k;const c=(k=(r=o.slots).description)==null?void 0:k.call(r,{uploadFile:n.props.uploadFile});let u;if(I.isEmptyElement(c)||(u=c),n.props.uploadFile.description&&(u=n.props.uploadFile.description),u)return e.h("div",{class:v.getBemElement(U,"description")},u)},s=()=>{var u,r;const c=(r=(u=o.slots).title)==null?void 0:r.call(u,{uploadFile:n.props.uploadFile});return I.isEmptyElement(c)?n.label.value:c},a=()=>{var c;if(_.isFunction(o.props.onDownload))return o.props.onDownload(n.props.uploadFile);if((c=n.props.uploadFile)!=null&&c.url&&typeof window<"u")return window.open(n.props.uploadFile.url)},h=e.computed(()=>{var c,u;return(c=n.props.uploadFile)!=null&&c.percent&&((u=n.props.uploadFile)==null?void 0:u.status)!=="waiting"?`${(n.props.uploadFile.percent??0).toFixed(0)}%`:"waiting..."}),p=(c,u)=>{var k,y,m,F;const r=(y=(k=o.slots)==null?void 0:k.actions)==null?void 0:y.call(k,{...o,uploadFile:n.props.uploadFile,downloadFile:a});return I.isEmptyElement(r)?(F=(m=u.slots)==null?void 0:m.default)==null?void 0:F.call(m,{}):r};return(c,u)=>{var r;return e.openBlock(),e.createElementBlock(e.Fragment,null,[e.unref(o).props.go?(e.openBlock(),e.createBlock(We,{key:0})):e.createCommentVNode("",!0),["error","done"].includes(e.unref(n).props.uploadFile.status)?(e.openBlock(),e.createElementBlock("div",{key:2,class:e.normalizeClass(e.unref(v.getBemElement)(e.unref(U),"content"))},[e.createElementVNode("div",{class:e.normalizeClass(e.unref(v.getBemElement)(e.unref(U),"title"))},[e.createVNode(s)],2),e.unref(n).props.uploadFile.status==="error"?(e.openBlock(),e.createBlock(Oe._sfc_main,{key:0,message:"Failed",status:"error"})):e.unref(o).props.size!=="md"?(e.openBlock(),e.createBlock(d,{key:1})):e.createCommentVNode("",!0)],2)):(e.openBlock(),e.createBlock(ue._sfc_main,{key:1,class:e.normalizeClass(e.unref(v.getBemElement)(e.unref(U),"progress")),percent:((r=e.unref(n).props.uploadFile)==null?void 0:r.percent)??0,label:e.unref(n).label.value,helperText:h.value,helperTextCls:e.unref(v.getBemElement)(e.unref(U),"percent")},{label:e.withCtx(()=>[e.createVNode(s)]),_:1},8,["class","percent","label","helperText","helperTextCls"])),e.createVNode(p,null,{default:e.withCtx(()=>{var k;return[e.unref(n).props.uploadFile.status==="done"?(e.openBlock(),e.createBlock(D._sfc_main,{key:0,icon:"tabler:download",size:"sm",type:"ghost",color:"neutral",onClick:e.withModifiers(a,["stop"])})):e.createCommentVNode("",!0),e.unref(o).props.pausableChunked&&e.unref(n).props.uploadFile.status==="uploading"&&((k=e.unref(n).props.uploadFile.chunks)!=null&&k.length)&&e.unref(_.isFunction)(e.unref(n).props.uploadFile.cancel)?(e.openBlock(),e.createBlock(D._sfc_main,{key:1,icon:"tabler:pause",size:"sm",type:"ghost",color:"neutral",onClick:e.withModifiers(e.unref(n).props.uploadFile.cancel,["stop"])},null,8,["onClick"])):e.unref(o).canRunUpload(e.unref(n).props.uploadFile.uid)?(e.openBlock(),e.createBlock(D._sfc_main,{key:2,icon:["paused","waiting"].includes(e.unref(n).props.uploadFile.status)?"tabler:player-play":"tabler:reload",size:"sm",type:"ghost",color:"neutral",onClick:u[0]||(u[0]=e.withModifiers(y=>e.unref(o).resetRequest(e.unref(n).props.uploadFile.uid),["stop"]))},null,8,["icon"])):e.createCommentVNode("",!0),e.createVNode(D._sfc_main,{icon:["done","error"].includes(e.unref(n).props.uploadFile.status)?"tabler:trash":"tabler:x",size:"sm",type:"ghost",color:"neutral",onClick:u[1]||(u[1]=e.withModifiers(y=>e.unref(o).remove(e.unref(n).props.uploadFile.uid),["stop"]))},null,8,["icon"])]}),_:1})],64)}}}),[te,Je]=Y.createContext("UploadItem"),Ke=e.defineComponent({...v.getComponentOptions("UploadListItem"),__name:"UploadListItem",props:{uploadFile:{}},setup(t){const o=t,n=ce.cva(U,{variants:{size:v.generateVariantClassList(Q,U),listType:v.generateVariantClassList(ee,U),type:v.generateVariantClassList(ge,U),status:v.generateVariantClassList(fe,U)}}),d=e.computed(()=>{var h,p,c;return((h=o.uploadFile)==null?void 0:h.name)??((c=(p=o.uploadFile)==null?void 0:p.originFileObj)==null?void 0:c.name)}),s=V();Je({props:o,label:d});const a=()=>{var p,c;const h=(c=(p=s.slots).listItem)==null?void 0:c.call(p,{...s,uploadFile:o.uploadFile});return I.isEmptyElement(h)?s.props.listType==="card"?e.h(He):e.h(Ge):h};return(h,p)=>{var c,u,r;return e.openBlock(),e.createElementBlock("div",e.mergeProps({class:e.unref(n)({size:e.unref(s).props.size,listType:e.unref(s).props.listType,type:e.unref(s).props.type,status:(c=h.uploadFile)==null?void 0:c.status})},{...((r=(u=e.unref(s).props).getUploadItemProps)==null?void 0:r.call(u,h.uploadFile))??{}}),[e.createVNode(a)],16)}}}),Xe=(t,o,n=1024*1024)=>{const d=[];let s=0,a=0;for(;s<t.size;){const h=Math.min(s+n,t.size),p=t.slice(s,h);d.push({chunk:p,chunkSize:h-s,index:a,uid:o(),status:"waiting"}),s=h,a++}return d},ke=(t,{getUid:o,chunkFile:n,chunkSize:d})=>{if($.isObject(t)){let s;if(t instanceof File)s=t;else try{s=new File([t],t.name??"",{type:t.type??""})}catch{s=new Blob([t],{type:t.type??""}),s.lastModified=new Date().getTime(),s.name=t.name??"",s.webkitRelativePath=""}if($.isObject(s)&&s instanceof Blob){let a=[];return n&&(a=Xe(s,()=>(o==null?void 0:o(!0))??v.usePCId(void 0,!0),d)),{uid:t.uid??(o==null?void 0:o())??v.usePCId(void 0,!0),originFileObj:s,status:"waiting",chunks:a!=null&&a.length&&(a==null?void 0:a.length)>1?a:void 0,chunksCount:a!=null&&a.length&&(a==null?void 0:a.length)>1?a.length:void 0,name:s==null?void 0:s.name,type:s==null?void 0:s.type,size:s==null?void 0:s.size,lastModified:s==null?void 0:s.lastModified,thumbUrl:void 0}}}},Ye=(t,o)=>{if($.isObject(t))return t instanceof Blob||t instanceof File?ke(t,o):(!t.uid&&!Object.isFrozen(t)&&(t.uid=o.getUid()),t)},_e=(t,o)=>{if(t&&o){const n=Array.isArray(o)?o:o.split(","),d=(t==null?void 0:t.name)||"",s=(t==null?void 0:t.type)||"",a=s.replace(/\/.*$/,"");return n.some(h=>{const p=h.trim();if(/^\*(?<temp1>\/\*)?$/.test(h))return!0;if(p.charAt(0)==="."){const c=d.toLowerCase(),u=p.toLowerCase();let r=[u];return(u===".jpg"||u===".jpeg")&&(r=[".jpg",".jpeg"]),r.some(k=>c.endsWith(k))}return/\/\*$/.test(p)?a===p.replace(/\/.*$/,""):!!(s===p||/^\w+$/.test(p))})}return!0},R=200;function Ze(t){return new Promise(o=>{if(!t.type||!M(G(t.type))){o("");return}const n=document.createElement("canvas");n.width=R,n.height=R,n.style.cssText=`position: fixed; left: 0; top: 0; width: ${R}px; height: ${R}px; z-index: 9999; display: none;`,document.body.appendChild(n);const d=n.getContext("2d"),s=new Image;if(s.onload=()=>{const{width:a,height:h}=s;let p=R,c=R,u=0,r=0;a>h?(c=h*(R/a),r=-(c-p)/2):(p=a*(R/h),u=-(p-c)/2),d.drawImage(s,u,r,p,c);const k=n.toDataURL();document.body.removeChild(n),o(k)},s.crossOrigin="anonymous",t.type.startsWith("image/svg+xml")){const a=new FileReader;a.addEventListener("load",()=>{a.result&&(s.src=a.result)}),a.readAsDataURL(t)}else s.src=window.URL.createObjectURL(t)})}const ne=e.defineComponent({...v.getComponentOptions("UploadList"),__name:"UploadList",props:{onDownload:{},parallelUpload:{type:Boolean},uploadOnSelect:{type:Boolean,default:!0},pausableChunked:{type:Boolean},getUploadItemProps:{},noTrigger:{type:Boolean},fileList:{},size:{default:"md"},chunkSize:{},listType:{default:"card"},type:{default:"outline"},go:{type:Boolean,default:!0},maxCount:{},action:{},getFileIcon:{},triggerCls:{},fileListCls:{},directory:{type:Boolean},multiple:{type:Boolean,default:!0},disabled:{type:Boolean,default:void 0},accept:{}},emits:["update:fileList","change","preview","createRequest","resetRequest","remove"],setup(t,{expose:o,emit:n}){const d=t,s=n,a=e.useSlots(),h=e.useAttrs(),p=de(),c=(...l)=>{s(...l),p==null||p.emit(...l)},u=e.computed(()=>(p==null?void 0:p.props)??d),r=e.computed(()=>u.value.maxCount?Number(u.value.maxCount):0),k=e.computed(()=>u.value.listType!=="image"&&u.value.pausableChunked),y=e.computed(()=>u.value.accept??u.value.listType==="image"?"image/*":void 0),m=e.ref([]);let F=!1;e.watch(()=>u.value.fileList,l=>{var f,x;if(!F){const B=(x=(f=l??[])==null?void 0:f.map)==null?void 0:x.call(f,z=>{if(z&&$.isObject(z))return Ye(z,{getUid:ae,chunkFile:k.value,chunkSize:u.value.chunkSize})}).filter(Boolean);_.isEqual(B,m.value)||(F=!0,m.value=B,e.nextTick(()=>F=!1))}},{immediate:!0,deep:!0}),e.watch(m,l=>{F||(F=!0,c("update:fileList",l??[]),e.nextTick(()=>F=!1))},{immediate:!0,deep:!0});const W=l=>m.value.find(f=>l&&f.uid===l),H=l=>m.value.findIndex(f=>l&&f.uid===l),we=l=>{if(l){const f=H(l.uid);f===-1&&(!r.value||r.value>m.value.length)?m.value.push(l):f>-1&&m.value.splice(f,0,l),c("change",{file:_.cloneDeep(l),fileList:_.cloneDeep(m.value),event:"add"})}},xe=l=>{Ve.isArray(l)&&l.filter(f=>!u.value.directory||_e(f,y.value)).forEach(f=>{we(ke(f,{getUid:ae,chunkFile:k.value,chunkSize:u.value.chunkSize}))})};let T=[];const se=()=>{var l;return u.value.uploadOnSelect||u.value.listType==="image"?((l=m.value)==null?void 0:l.filter(f=>T.includes(f.uid)?!1:f.status==="waiting"&&f.originFileObj))??[]:[]},P=(l,f)=>{if(l&&f){const x=H(l);x>-1&&(m.value[x]={...m.value[x],...f})}},N=l=>{T=T.filter(f=>f!==l)},J=async l=>{var f,x,B,z;if(l&&m.value){const C=W(l),Te=k.value&&((f=C==null?void 0:C.chunks)==null?void 0:f.length)&&(C==null?void 0:C.chunks.length)>1&&(C==null?void 0:C.status)==="uploading"&&(C==null?void 0:C.chunks.some(A=>A.status==="waiting"));if(C&&_.isFunction(u.value.action)&&(!T.length||u.value.parallelUpload||Te)){T.includes(l)||T.push(l);const A=new AbortController,Pe=()=>{const w=()=>{N(l),A.abort()},i=_.cloneDeep(C);if(k.value&&i.chunks&&i.chunks.length>1){const g=i.chunks.findIndex(L=>L.status==="waiting");g>-1&&(i.chunks[g]={...i.chunks[g],status:"uploading",cancel:w})}P(i.uid,{status:"uploading",cancel:w})};let b={signal:A.signal,onUploadProgress(){},uid:C.uid};if(k.value&&C.chunks&&C.chunks.length>1&&C.chunks.some(w=>w.status==="waiting")){const w=C.chunks.find(i=>i.status==="waiting");w!=null&&w.uid&&(b={...b,..._.pick(w,["chunk","chunkSize","index"]),chunkUid:w.uid,onUploadProgress(i){var L,j,S,le;const g=_.cloneDeep(m.value.find(q=>q.uid===C.uid));if(g){const q=(L=g.chunks)==null?void 0:L.findIndex(K=>K.uid===w.uid);if(q!==void 0&&((j=g.chunks)!=null&&j[q])&&(g.chunks[q].percent=Math.round(i.loaded*100/i.total)),(S=g.chunks)!=null&&S.length&&((le=g.chunks)==null?void 0:le.length)>1){const K=g.chunks.reduce((Se,Re)=>Se+(Re.percent??0),0);g.percent=Math.min(Math.max(K/g.chunks.length,0),100)}else g.percent=Math.round(i.loaded*100/i.total);P(g.uid,{chunks:g.chunks,percent:g.percent})}}})}else b={...b,file:C.originFileObj,onUploadProgress(w){const i=_.cloneDeep(m.value.find(g=>g.uid===C.uid));i&&P(i.uid,{percent:Math.round(w.loaded*100/w.total)})}};if(Pe(),b.file||b.chunk){c("createRequest",C),c("change",{file:_.cloneDeep(C),fileList:_.cloneDeep(m.value),event:"upload"});try{let w=await u.value.action(b);try{typeof w=="string"&&(w=JSON.parse(w))}catch{}let i=_.cloneDeep(m.value.find(g=>g.uid===b.uid));if(i){let g=!1;if(b.chunkUid&&((x=i.chunks)!=null&&x.length)&&i.chunks.length>1){const L=i.chunks.findIndex(S=>S.uid===b.chunkUid);i.chunks[L]&&(i.chunks[L]={...i.chunks[L],cancel:void 0,status:"done",response:w??void 0});const j=i.chunks.every(S=>S.status==="done")?"done":"uploading";j==="done"?i={...i,cancel:void 0,status:j}:i.chunks.some(S=>S.status==="waiting")&&(g=!0)}else i={...i,cancel:void 0,status:"done",response:w??void 0};P(b.uid,i),g?await J(l):N(l)}}catch(w){if(w.name==="CanceledError"){let i=_.cloneDeep(m.value.find(g=>g.uid===b.uid));if(i){if(b.chunkUid&&((B=i.chunks)!=null&&B.length)&&i.chunks.length>1){const g=i.chunks.findIndex(L=>L.uid===b.chunkUid);i.chunks[g]&&(i.chunks[g]={...i.chunks[g],cancel:void 0,status:"waiting"}),i={...i,cancel:void 0,status:"paused"},c("change",{file:_.cloneDeep(i),fileList:_.cloneDeep(m.value),event:"paused"})}else i={...i,cancel:void 0,status:"error"},c("change",{file:_.cloneDeep(i),fileList:_.cloneDeep(m.value),event:"cancel"});P(b.uid,i),N(l)}}else{let i=_.cloneDeep(m.value.find(g=>g.uid===b.uid));if(i){if(b.chunkUid&&((z=i.chunks)!=null&&z.length)&&i.chunks.length>1){const g=i.chunks.findIndex(L=>L.uid===b.chunkUid);i.chunks[g]&&(i.chunks[g]={...i.chunks[g],cancel:void 0,status:"waiting"})}i={...i,cancel:void 0,status:"error",error:w,percent:0},c("change",{file:_.cloneDeep(i),fileList:_.cloneDeep(m.value),event:"failed"}),P(b.uid,i),N(l)}}}}}}},be=async l=>{if(l&&m.value){const f=W(l);if(f)return P(l,{status:"waiting"}),c("resetRequest",f),J(l)}},Be=async l=>{var f,x;if(l&&m.value){const B=H(l),z=_.cloneDeep(m.value??[]);B>-1&&z[B]&&((x=(f=z[B]).cancel)==null||x.call(f),z.splice(B,1),m.value=z,c("remove",z[B]),c("change",{file:z[B],fileList:_.cloneDeep(m.value),event:"remove"}))}},Ue=l=>{if(u.value.parallelUpload||!T.length){const f=W(l);if(f&&(f.status==="paused"||f.status==="error"||(!u.value.uploadOnSelect||u.value.listType==="image")&&f.status==="waiting"))return!0}return!1},Fe=e.computed(()=>{switch(u.value.size){case"xlg":return"md";default:return"sm"}}),ze=_.throttle(()=>{(u.value.parallelUpload&&se().length||!T.length)&&se().forEach(l=>J(l.uid)),(m.value||[]).forEach(l=>{typeof document>"u"||typeof window>"u"||!window.FileReader||!window.File||!(l.originFileObj instanceof File||l.originFileObj instanceof Blob)||l.thumbUrl!==void 0||!l.type||!M(G(l.type))||(l.thumbUrl="",Ze(l.originFileObj).then(f=>{const x=f||"";x!==l.thumbUrl&&P(l==null?void 0:l.uid,{thumbUrl:x})}))})},50);e.watch(m,ze,{deep:!0});const Le=e.computed(()=>{switch(u.value.size){case"xlg":return"sm";case"lg":return"xsm";default:return"x2sm"}}),E={props:(p==null?void 0:p.props)??d,attrs:(p==null?void 0:p.attrs)??h,slots:(p==null?void 0:p.slots)??a,emit:(p==null?void 0:p.emit)??c,fileList:e.readonly(m),progressSize:Le,getAccept:y,goSize:Fe,resetRequest:be,canRunUpload:Ue,remove:Be,addFiles:xe};me(E);const Ie=ce.cva(O,{variants:{size:v.generateVariantClassList(Q,O),listType:v.generateVariantClassList(ee,O)}}),Ee=()=>{var f,x;const l=(x=(f=E.slots).list)==null?void 0:x.call(f,E);return I.isEmptyElement(l)?E.fileList.value.map(B=>e.h(Ke,{uploadFile:B,key:B.uid})):l};return o(E),(l,f)=>{var x;return(x=E.fileList.value)!=null&&x.length?(e.openBlock(),e.createElementBlock("div",{key:0,class:e.normalizeClass(e.unref(v.normCls)(e.unref(Ie)({size:E.props.size,listType:E.props.listType}),E.props.fileListCls))},[e.createVNode(Ee)],2)):e.createCommentVNode("",!0)}}}),Qe=t=>new Promise(o=>{t.file(n=>{t.fullPath&&!n.webkitRelativePath&&Object.defineProperty(n,"webkitRelativePath",{value:t.fullPath.replace(/^\//,""),writable:!1}),o(n)})}),et=t=>{const o=t.createReader(),n=[];return new Promise(d=>{const s=()=>{o.readEntries(a=>{a.length===0?d(n):(n.push(...a),s())})};s()})},tt=async t=>{const o=[],n=async d=>{if(d.isFile){const s=await Qe(d);o.push(s)}else if(d.isDirectory){const s=await et(d);await Promise.all(s.map(n))}};return await Promise.all(t.map(d=>{var a;const s=(a=d.webkitGetAsEntry)==null?void 0:a.call(d);if(s)return n(s)}).filter(Boolean)),o},nt=["accept","webkitdirectory","multiple","value","disabled"],oe=e.defineComponent({...v.getComponentOptions("UploadTrigger"),__name:"UploadTrigger",props:{directory:{type:Boolean},multiple:{type:Boolean},disabled:{type:Boolean,default:void 0},accept:{},class:{}},emits:["addFiles"],setup(t,{emit:o}){const n=o,d=t,{getDisabled:s}=I.useFormInput(),a=e.ref(),h=y=>{const{files:m}=y.target;n("addFiles",Array.prototype.slice.call(m)),p.value&&(p.value.value="")},p=e.ref(),c=()=>{var y;(y=p.value)==null||y.click()},u=y=>{y.key==="Enter"&&c()},r=async y=>{if(y.preventDefault(),y.type==="dragover")return;let m=[];y.dataTransfer&&(d.directory?m=await tt(Array.prototype.slice.call(y.dataTransfer.items)):m=Array.prototype.slice.call(y.dataTransfer.files)),d.multiple||(m=m.slice(0,1)),n("addFiles",m.filter(F=>_e(F,d.accept)))},k=e.computed(()=>s.value?{}:{onClick:c,onKeydown:u,onDrop:r,onDragover:r});return(y,m)=>(e.openBlock(),e.createElementBlock("div",e.mergeProps({class:e.unref(v.normCls)(d.class)},k.value),[e.renderSlot(y.$slots,"default",e.normalizeProps(e.guardReactiveProps({...k.value,disabled:e.unref(s),tabindex:"0"}))),e.createElementVNode("input",{type:"file",accept:y.accept,webkitdirectory:y.directory,multiple:y.multiple,value:a.value,disabled:e.unref(s),onChange:h,ref_key:"inputRef",ref:p,style:{display:"none"}},null,40,nt)],16))}}),ie=v.getBemElement(Z,"file"),ae=t=>v.usePCId(t?v.getBemElement(ie,"chunk"):ie,!0),Ce=e.defineComponent({...v.getComponentOptions("Upload",!1),__name:"Upload",props:{onDownload:{},parallelUpload:{type:Boolean},uploadOnSelect:{type:Boolean,default:!0},pausableChunked:{type:Boolean},getUploadItemProps:{},noTrigger:{type:Boolean},fileList:{},size:{default:"md"},chunkSize:{},listType:{default:"card"},type:{default:"outline"},go:{type:Boolean,default:!0},maxCount:{},action:{},getFileIcon:{},triggerCls:{},fileListCls:{},directory:{type:Boolean},multiple:{type:Boolean,default:!0},disabled:{type:Boolean,default:void 0},accept:{}},emits:["update:fileList","change","preview","createRequest","resetRequest","remove"],setup(t,{expose:o,emit:n}){const d=t,s=n,a=e.useSlots(),h=e.useAttrs(),p={props:d,attrs:h,slots:a,emit:s};pe(p);const c=e.ref(),u={progressSize:e.computed(()=>{var r;return(r=c.value)==null?void 0:r.progressSize}),resetRequest:e.computed(()=>{var r;return(r=c.value)==null?void 0:r.resetRequest}),canRunUpload:e.computed(()=>{var r;return(r=c.value)==null?void 0:r.canRunUpload}),remove:e.computed(()=>{var r;return(r=c.value)==null?void 0:r.remove}),goSize:e.computed(()=>{var r;return(r=c.value)==null?void 0:r.goSize}),addFiles:e.computed(()=>{var r;return(r=c.value)==null?void 0:r.addFiles}),fileList:e.computed(()=>{var r;return(r=c.value)==null?void 0:r.fileList}),getAccept:e.computed(()=>{var r;return(r=c.value)==null?void 0:r.getAccept})};return o({...p,...u,listRef:c}),(r,k)=>(e.openBlock(),e.createElementBlock(e.Fragment,null,[r.noTrigger?e.createCommentVNode("",!0):(e.openBlock(),e.createBlock(oe,{key:0,multiple:r.multiple,directory:r.directory,disabled:r.disabled,accept:u.getAccept.value,onAddFiles:u.addFiles.value,class:e.normalizeClass(r.triggerCls)},{default:e.withCtx(y=>[e.renderSlot(r.$slots,"default",e.normalizeProps(e.guardReactiveProps(y)))]),_:3},8,["multiple","directory","disabled","accept","onAddFiles","class"])),e.createVNode(ne,{action:r.action,ref_key:"listRef",ref:c},null,8,["action"])],64))}}),ot=I.installComponent(Ce,v.getComponentName("Upload")),st=I.installComponent(ne,v.getComponentName("UploadList")),lt=I.installComponent(oe,v.getComponentName("UploadTrigger"));exports.Upload=Ce;exports.UploadList=ne;exports.UploadListPlugin=st;exports.UploadListTypes=ee;exports.UploadPlugin=ot;exports.UploadSizes=Q;exports.UploadStatuses=fe;exports.UploadTrigger=oe;exports.UploadTriggerPlugin=lt;exports.UploadTypes=ge;exports.injectBaseUploadContext=de;exports.injectUploadContext=V;exports.provideBaseUploadContext=pe;exports.provideUploadContext=me;exports.uploadListItemPrefix=U;exports.uploadListPrefix=O;exports.uploadPrefix=Z;
|
package/dist/Upload/types.d.ts
CHANGED
|
@@ -2,6 +2,7 @@ import { UploadListType, UploadSize, UploadStatus, UploadType } from './Upload.m
|
|
|
2
2
|
import { ComputedRef, Ref } from 'vue';
|
|
3
3
|
import { ProgressSize } from '../Progress';
|
|
4
4
|
import { ClassValue } from 'class-variance-authority/types';
|
|
5
|
+
import { EmitType } from '../types';
|
|
5
6
|
export interface UploadFileBase {
|
|
6
7
|
uid: string;
|
|
7
8
|
percent?: number;
|
|
@@ -62,17 +63,18 @@ export interface UploadProps extends Omit<UploadBaseProps, 'class'> {
|
|
|
62
63
|
triggerCls?: ClassValue;
|
|
63
64
|
fileListCls?: ClassValue;
|
|
64
65
|
}
|
|
66
|
+
export interface UploadChangeEvent {
|
|
67
|
+
file: UploadFile;
|
|
68
|
+
fileList: UploadFile[];
|
|
69
|
+
event: 'add' | 'remove' | 'upload' | 'failed' | 'paused' | 'cancel';
|
|
70
|
+
}
|
|
65
71
|
export interface UploadEmits {
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
(e: 'preview', value: UploadFile): void;
|
|
73
|
-
(e: 'createRequest', value: UploadFile): void;
|
|
74
|
-
(e: 'resetRequest', value: UploadFile): void;
|
|
75
|
-
(e: 'remove', value: UploadFile): void;
|
|
72
|
+
'update:fileList': [value: UploadFile[]];
|
|
73
|
+
change: [value: UploadChangeEvent];
|
|
74
|
+
preview: [value: UploadFile];
|
|
75
|
+
createRequest: [value: UploadFile];
|
|
76
|
+
resetRequest: [value: UploadFile];
|
|
77
|
+
remove: [value: UploadFile];
|
|
76
78
|
}
|
|
77
79
|
export interface UploadDefSlotProps {
|
|
78
80
|
onClick: () => void;
|
|
@@ -109,7 +111,7 @@ export interface BaseUploadContext {
|
|
|
109
111
|
props: UploadProps;
|
|
110
112
|
attrs: object;
|
|
111
113
|
slots: UploadSlots;
|
|
112
|
-
emit: UploadEmits
|
|
114
|
+
emit: EmitType<UploadEmits>;
|
|
113
115
|
}
|
|
114
116
|
export interface UploadContext extends BaseUploadContext {
|
|
115
117
|
addFiles: (files: File[]) => void;
|
package/dist/use/index.js
CHANGED
package/dist/use/index.umd.cjs
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const n=require("../index-BMbS6v_U.js"),l="0.29.
|
|
1
|
+
"use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const n=require("../index-BMbS6v_U.js"),l="0.29.4",s=function(e){return Object.values(n.components).forEach(t=>{t.install&&e.use(t)}),e},u={version:l,install:s};exports.default=u;exports.install=s;
|