@pantograph/vue 0.29.4 → 0.29.6

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.
@@ -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"),X=require("reka-ui"),g=require("@pantograph/utils"),ae=require("class-variance-authority"),ce=require("../Progress.vue_vue_type_style_index_0_lang-Da3J8MwA.js"),De=require("../FloatButton.vue_vue_type_script_setup_true_lang-BD_pn8Vu.js"),j=require("../IconButton.vue_vue_type_script_setup_true_lang-CeH-nxZ6.js"),je=require("../Image.vue_vue_type_style_index_0_lang-B5wL0qfB.js"),k=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"),A=require("../isObject-BDHKUJKN.js"),Ve=require("../isArray-Bin_5of_.js"),Y=g.getBemBlock("upload"),O=g.getBemElement(Y,"list"),F=g.getBemElement(O,"item"),[Ne,ue]=X.createContext("BaseUpload"),pe=()=>Ne(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]},M=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=M((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},$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))},$=t=>ge(t)==="image",he=t=>{if(t.type&&!t.thumbUrl)return $(M(t.type));const o=t.thumbUrl||t.url||"",n=ve(o);return/^data:image\//.test(o)||$(n)?!0:!(/^data:/.test(o)||n)},Ge=e.defineComponent({...g.getComponentOptions("UploadListItemImage"),__name:"UploadListItemImage",setup(t){const o=V(),n=ee(),d=()=>{var s,a,v;k.isFunction((s=n.props.uploadFile)==null?void 0:s.cancel)&&((v=(a=n.props.uploadFile).cancel)==null||v.call(a)),o.remove(n.props.uploadFile.uid)};return(s,a)=>{var v;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(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(g.getBemElement)(e.unref(F),"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(j._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(j._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(ce._sfc_main,{key:1,type:"circle",size:e.unref(o).progressSize.value,class:e.normalizeClass(e.unref(g.getBemElement)(e.unref(F),"progress")),indeterminate:e.unref(n).props.uploadFile.status==="waiting",percent:((v=e.unref(n).props.uploadFile)==null?void 0:v.percent)??0},null,8,["size","class","indeterminate","percent"])):e.createCommentVNode("",!0),e.createVNode(De._sfc_main,{class:e.normalizeClass(e.unref(g.normCls)(e.unref(g.getBemElement)(e.unref(F),"cancel"),"pantograph-tokens pantograph-dark")),color:"neutral",icon:"tabler:x",size:"sm",onClick:e.withModifiers(d,["stop"])},null,8,["class"])],64)}}}),We=e.defineComponent({...g.getComponentOptions("UploadFileGO"),__name:"UploadFileGO",setup(t){const o=ee(),n=V(),d=e.computed(()=>ge(Ae(o.props.uploadFile),Me(o.props.uploadFile))),s=e.computed(()=>k.isFunction(n.props.getFileIcon)?n.props.getFileIcon(o.props.uploadFile):K[d.value].icon),a=e.computed(()=>K[d.value].fg),v=e.computed(()=>K[d.value].bg),p=()=>{var y,h,m,z;const l=(h=(y=n.slots).go)==null?void 0:h.call(y,{uploadFile:o.props.uploadFile});return I.isEmptyElement(l)?he(o.props.uploadFile)?e.h("img",{class:g.getBemElement(F,"thumb"),alt:o.props.uploadFile.name??"",src:((m=o.props.uploadFile)==null?void 0:m.thumbUrl)??((z=o.props.uploadFile)==null?void 0:z.url)}):null:l},c=()=>{var y,h;const l=(h=(y=n.slots).goIcon)==null?void 0:h.call(y,{uploadFile:o.props.uploadFile});return I.isEmptyElement(l)?null:l},u=()=>e.h(qe._sfc_main,{size:n.goSize.value,icon:s.value,fg:a.value,bg:v.value},{default:p,icon:c});return(l,y)=>(e.openBlock(),e.createBlock(u))}}),He=e.defineComponent({...g.getComponentOptions("UploadListItemCard"),__name:"UploadListItemCard",setup(t){const o=V(),n=ee(),d=()=>{var l,y;const c=(y=(l=o.slots).description)==null?void 0:y.call(l,{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:g.getBemElement(F,"description")},u)},s=()=>{var u,l;const c=(l=(u=o.slots).title)==null?void 0:l.call(u,{uploadFile:n.props.uploadFile});return I.isEmptyElement(c)?n.label.value:c},a=()=>{var c;if(k.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)},v=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 y,h,m,z;const l=(h=(y=o.slots)==null?void 0:y.actions)==null?void 0:h.call(y,{...o,uploadFile:n.props.uploadFile,downloadFile:a});return I.isEmptyElement(l)?(z=(m=u.slots)==null?void 0:m.default)==null?void 0:z.call(m,{}):l};return(c,u)=>{var l;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(g.getBemElement)(e.unref(F),"content"))},[e.createElementVNode("div",{class:e.normalizeClass(e.unref(g.getBemElement)(e.unref(F),"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(ce._sfc_main,{key:1,class:e.normalizeClass(e.unref(g.getBemElement)(e.unref(F),"progress")),percent:((l=e.unref(n).props.uploadFile)==null?void 0:l.percent)??0,label:e.unref(n).label.value,helperText:v.value,helperTextCls:e.unref(g.getBemElement)(e.unref(F),"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(j._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"&&((y=e.unref(n).props.uploadFile.chunks)!=null&&y.length)&&e.unref(k.isFunction)(e.unref(n).props.uploadFile.cancel)?(e.openBlock(),e.createBlock(j._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(j._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(h=>e.unref(o).resetRequest(e.unref(n).props.uploadFile.uid),["stop"]))},null,8,["icon"])):e.createCommentVNode("",!0),e.createVNode(j._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(h=>e.unref(o).remove(e.unref(n).props.uploadFile.uid),["stop"]))},null,8,["icon"])]}),_:1})],64)}}}),[ee,Je]=X.createContext("UploadItem"),Ke=e.defineComponent({...g.getComponentOptions("UploadListItem"),__name:"UploadListItem",props:{uploadFile:{}},setup(t){const o=t,n=ae.cva(F,{variants:{size:g.generateVariantClassList(Z,F),listType:g.generateVariantClassList(Q,F),type:g.generateVariantClassList(fe,F),status:g.generateVariantClassList(me,F)}}),d=e.computed(()=>{var v,p,c;return((v=o.uploadFile)==null?void 0:v.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 v=(c=(p=s.slots).listItem)==null?void 0:c.call(p,{...s,uploadFile:o.uploadFile});return I.isEmptyElement(v)?s.props.listType==="card"?e.h(He):e.h(Ge):v};return(v,p)=>{var c,u,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:(c=v.uploadFile)==null?void 0:c.status})},{...((l=(u=e.unref(s).props).getUploadItemProps)==null?void 0:l.call(u,v.uploadFile))??{}}),[e.createVNode(a)],16)}}}),Xe=(t,o,n=1024*1024)=>{const d=[];let s=0,a=0;for(;s<t.size;){const v=Math.min(s+n,t.size),p=t.slice(s,v);d.push({chunk:p,chunkSize:v-s,index:a,uid:o(),status:"waiting"}),s=v,a++}return d},ye=(t,{getUid:o,chunkFile:n,chunkSize:d})=>{if(A.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(A.isObject(s)&&s instanceof Blob){let a=[];return n&&(a=Xe(s,()=>(o==null?void 0:o(!0))??g.usePCId(void 0,!0),d)),{uid:t.uid??(o==null?void 0:o())??g.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(A.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)||"",a=s.replace(/\/.*$/,"");return n.some(v=>{const p=v.trim();if(/^\*(?<temp1>\/\*)?$/.test(v))return!0;if(p.charAt(0)==="."){const c=d.toLowerCase(),u=p.toLowerCase();let l=[u];return(u===".jpg"||u===".jpeg")&&(l=[".jpg",".jpeg"]),l.some(y=>c.endsWith(y))}return/\/\*$/.test(p)?a===p.replace(/\/.*$/,""):!!(s===p||/^\w+$/.test(p))})}return!0},D=200;function Ze(t){return new Promise(o=>{if(!t.type||!$(M(t.type))){o("");return}const n=document.createElement("canvas");n.width=D,n.height=D,n.style.cssText=`position: fixed; left: 0; top: 0; width: ${D}px; height: ${D}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:v}=s;let p=D,c=D,u=0,l=0;a>v?(c=v*(D/a),l=-(c-p)/2):(p=a*(D/v),u=-(p-c)/2),d.drawImage(s,u,l,p,c);const y=n.toDataURL();document.body.removeChild(n),o(y)},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 te=e.defineComponent({...g.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(),v=e.useAttrs(),p=pe(),c=(...r)=>{s(...r),p==null||p.emit(...r)},u=e.computed(()=>(p==null?void 0:p.props)??d),l=e.computed(()=>u.value.maxCount?Number(u.value.maxCount):0),y=e.computed(()=>u.value.listType!=="image"&&u.value.pausableChunked),h=e.computed(()=>u.value.accept??u.value.listType==="image"?"image/*":void 0),m=e.ref([]);let z=!1;e.watch(()=>u.value.fileList,r=>{var f,x;if(!z){const U=(x=(f=r??[])==null?void 0:f.map)==null?void 0:x.call(f,L=>{if(L&&A.isObject(L))return Ye(L,{getUid:ie,chunkFile:y.value,chunkSize:u.value.chunkSize})}).filter(Boolean);k.isEqual(U,m.value)||(z=!0,m.value=U,e.nextTick(()=>z=!1))}},{immediate:!0,deep:!0}),e.watch(m,r=>{z||(z=!0,c("update:fileList",r??[]),e.nextTick(()=>z=!1))},{immediate:!0,deep:!0});const G=r=>m.value.find(f=>r&&f.uid===r),W=r=>m.value.findIndex(f=>r&&f.uid===r),Ce=r=>{if(r){const f=W(r.uid);f===-1&&(!l.value||l.value>m.value.length)?m.value.push(r):f>-1&&m.value.splice(f,0,r),c("change",{file:k.cloneDeep(r),fileList:k.cloneDeep(m.value),event:"add"})}},we=r=>{Ve.isArray(r)&&r.filter(f=>!u.value.directory||ke(f,h.value)).forEach(f=>{Ce(ye(f,{getUid:ie,chunkFile:y.value,chunkSize:u.value.chunkSize}))})},E=e.ref([]),oe=()=>{var r;return u.value.uploadOnSelect||u.value.listType==="image"?((r=m.value)==null?void 0:r.filter(f=>E.value.includes(f.uid)?!1:f.status==="waiting"&&f.originFileObj))??[]:[]},S=(r,f)=>{if(r&&f){const x=W(r);x>-1&&(m.value[x]={...m.value[x],...f})}},xe=r=>{E.value=E.value.filter(f=>f!==r)},H=async r=>{var f,x,U,L;if(r&&m.value){const C=G(r),Te=y.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(N=>N.status==="waiting"));if(C&&k.isFunction(u.value.action)&&(!E.value.length||u.value.parallelUpload||Te)){E.value.includes(r)||E.value.push(r);const N=new AbortController,Pe=()=>{const B=()=>{N.abort()},_=k.cloneDeep(C);if(y.value&&_.chunks&&_.chunks.length>1){const i=_.chunks.findIndex(w=>w.status==="waiting");i>-1&&(_.chunks[i]={..._.chunks[i],status:"uploading",cancel:B})}S(_.uid,{status:"uploading",cancel:B})};let b={signal:N.signal,onUploadProgress(){},uid:C.uid};if(y.value&&C.chunks&&C.chunks.length>1&&C.chunks.some(B=>B.status==="waiting")){const B=C.chunks.find(_=>_.status==="waiting");B!=null&&B.uid&&(b={...b,...k.pick(B,["chunk","chunkSize","index"]),chunkUid:B.uid,onUploadProgress(_){var w,P,R,se;const i=k.cloneDeep(m.value.find(q=>q.uid===C.uid));if(i){const q=(w=i.chunks)==null?void 0:w.findIndex(J=>J.uid===B.uid);if(q!==void 0&&((P=i.chunks)!=null&&P[q])&&(i.chunks[q].percent=Math.round(_.loaded*100/_.total)),(R=i.chunks)!=null&&R.length&&((se=i.chunks)==null?void 0:se.length)>1){const J=i.chunks.reduce((Se,Re)=>Se+(Re.percent??0),0);i.percent=Math.min(Math.max(J/i.chunks.length,0),100)}else i.percent=Math.round(_.loaded*100/_.total);S(i.uid,{chunks:i.chunks,percent:i.percent})}}})}else b={...b,file:C.originFileObj,onUploadProgress(B){const _=k.cloneDeep(m.value.find(i=>i.uid===C.uid));_&&S(_.uid,{percent:Math.round(B.loaded*100/B.total)})}};if(Pe(),b.file||b.chunk){c("createRequest",C),c("change",{file:k.cloneDeep(C),fileList:k.cloneDeep(m.value),event:"upload"});let B=!1;try{let _=await u.value.action(b);try{typeof _=="string"&&(_=JSON.parse(_))}catch{}let i=k.cloneDeep(m.value.find(w=>w.uid===b.uid));if(i){if(b.chunkUid&&((x=i.chunks)!=null&&x.length)&&i.chunks.length>1){const w=i.chunks.findIndex(R=>R.uid===b.chunkUid);i.chunks[w]&&(i.chunks[w]={...i.chunks[w],cancel:void 0,status:"done",response:_??void 0});const P=i.chunks.every(R=>R.status==="done")?"done":"uploading";P==="done"?i={...i,cancel:void 0,status:P}:i.chunks.some(R=>R.status==="waiting")&&(B=!0)}else i={...i,cancel:void 0,status:"done",response:_??void 0};S(b.uid,i),B&&await H(r)}}catch(_){if(_.name==="CanceledError"){let i=k.cloneDeep(m.value.find(w=>w.uid===b.uid));if(i){if(b.chunkUid&&((U=i.chunks)!=null&&U.length)&&i.chunks.length>1){const w=i.chunks.findIndex(P=>P.uid===b.chunkUid);i.chunks[w]&&(i.chunks[w]={...i.chunks[w],cancel:void 0,status:"waiting"}),i={...i,cancel:void 0,status:"paused"},c("change",{file:k.cloneDeep(i),fileList:k.cloneDeep(m.value),event:"paused"})}else i={...i,cancel:void 0,status:"error"},c("change",{file:k.cloneDeep(i),fileList:k.cloneDeep(m.value),event:"cancel"});S(b.uid,i)}}else{let i=k.cloneDeep(m.value.find(w=>w.uid===b.uid));if(i){if(b.chunkUid&&((L=i.chunks)!=null&&L.length)&&i.chunks.length>1){const w=i.chunks.findIndex(P=>P.uid===b.chunkUid);i.chunks[w]&&(i.chunks[w]={...i.chunks[w],cancel:void 0,status:"waiting"})}i={...i,cancel:void 0,status:"error",error:_,percent:0},c("change",{file:k.cloneDeep(i),fileList:k.cloneDeep(m.value),event:"failed"}),S(b.uid,i)}}}finally{B||xe(r)}}}}},be=async r=>{if(r&&m.value){const f=G(r);if(f)return S(r,{status:"waiting"}),c("resetRequest",f),H(r)}},Be=async r=>{var f,x;if(r&&m.value){const U=W(r),L=k.cloneDeep(m.value??[]);U>-1&&L[U]&&((x=(f=L[U]).cancel)==null||x.call(f),L.splice(U,1),m.value=L,c("remove",L[U]),c("change",{file:L[U],fileList:k.cloneDeep(m.value),event:"remove"}))}},Ue=r=>{if(u.value.parallelUpload||!E.value.length){const f=G(r);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=k.throttle(()=>{(u.value.parallelUpload&&oe().length||!E.value.length)&&oe().forEach(r=>H(r.uid)),(m.value||[]).forEach(r=>{typeof document>"u"||typeof window>"u"||!window.FileReader||!window.File||!(r.originFileObj instanceof File||r.originFileObj instanceof Blob)||r.thumbUrl!==void 0||!r.type||!$(M(r.type))||(r.thumbUrl="",Ze(r.originFileObj).then(f=>{const x=f||"";x!==r.thumbUrl&&S(r==null?void 0:r.uid,{thumbUrl:x})}))})},50);e.watch([m,E],ze,{deep:!0});const Le=e.computed(()=>{switch(u.value.size){case"xlg":return"sm";case"lg":return"xsm";default:return"x2sm"}}),T={props:(p==null?void 0:p.props)??d,attrs:(p==null?void 0:p.attrs)??v,slots:(p==null?void 0:p.slots)??a,emit:(p==null?void 0:p.emit)??c,fileList:e.readonly(m),progressSize:Le,getAccept:h,goSize:Fe,resetRequest:be,canRunUpload:Ue,remove:Be,addFiles:we};de(T);const Ie=ae.cva(O,{variants:{size:g.generateVariantClassList(Z,O),listType:g.generateVariantClassList(Q,O)}}),Ee=()=>{var f,x;const r=(x=(f=T.slots).list)==null?void 0:x.call(f,T);return I.isEmptyElement(r)?T.fileList.value.map(U=>e.h(Ke,{uploadFile:U,key:U.uid})):r};return o(T),(r,f)=>{var x;return(x=T.fileList.value)!=null&&x.length?(e.openBlock(),e.createElementBlock("div",{key:0,class:e.normalizeClass(e.unref(g.normCls)(e.unref(Ie)({size:T.props.size,listType:T.props.listType}),T.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"],ne=e.defineComponent({...g.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(),v=h=>{const{files:m}=h.target;n("addFiles",Array.prototype.slice.call(m)),p.value&&(p.value.value="")},p=e.ref(),c=()=>{var h;(h=p.value)==null||h.click()},u=h=>{h.key==="Enter"&&c()},l=async h=>{if(h.preventDefault(),h.type==="dragover")return;let m=[];h.dataTransfer&&(d.directory?m=await tt(Array.prototype.slice.call(h.dataTransfer.items)):m=Array.prototype.slice.call(h.dataTransfer.files)),d.multiple||(m=m.slice(0,1)),n("addFiles",m.filter(z=>ke(z,d.accept)))},y=e.computed(()=>s.value?{}:{onClick:c,onKeydown:u,onDrop:l,onDragover:l});return(h,m)=>(e.openBlock(),e.createElementBlock("div",e.mergeProps({class:e.unref(g.normCls)(d.class)},y.value),[e.renderSlot(h.$slots,"default",e.normalizeProps(e.guardReactiveProps({...y.value,disabled:e.unref(s),tabindex:"0"}))),e.createElementVNode("input",{type:"file",accept:h.accept,webkitdirectory:h.directory,multiple:h.multiple,value:a.value,disabled:e.unref(s),onChange:v,ref_key:"inputRef",ref:p,style:{display:"none"}},null,40,nt)],16))}}),re=g.getBemElement(Y,"file"),ie=t=>g.usePCId(t?g.getBemElement(re,"chunk"):re,!0),_e=e.defineComponent({...g.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(),v=e.useAttrs(),p={props:d,attrs:v,slots:a,emit:s};ue(p);const c=e.ref(),u={progressSize:e.computed(()=>{var l;return(l=c.value)==null?void 0:l.progressSize}),resetRequest:e.computed(()=>{var l;return(l=c.value)==null?void 0:l.resetRequest}),canRunUpload:e.computed(()=>{var l;return(l=c.value)==null?void 0:l.canRunUpload}),remove:e.computed(()=>{var l;return(l=c.value)==null?void 0:l.remove}),goSize:e.computed(()=>{var l;return(l=c.value)==null?void 0:l.goSize}),addFiles:e.computed(()=>{var l;return(l=c.value)==null?void 0:l.addFiles}),fileList:e.computed(()=>{var l;return(l=c.value)==null?void 0:l.fileList}),getAccept:e.computed(()=>{var l;return(l=c.value)==null?void 0:l.getAccept})};return o({...p,...u,listRef:c}),(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:u.getAccept.value,onAddFiles:u.addFiles.value,class:e.normalizeClass(l.triggerCls)},{default:e.withCtx(h=>[e.renderSlot(l.$slots,"default",e.normalizeProps(e.guardReactiveProps(h)))]),_:3},8,["multiple","directory","disabled","accept","onAddFiles","class"])),e.createVNode(te,{action:l.action,ref_key:"listRef",ref:c},null,8,["action"])],64))}}),ot=I.installComponent(_e,g.getComponentName("Upload")),st=I.installComponent(te,g.getComponentName("UploadList")),lt=I.installComponent(ne,g.getComponentName("UploadTrigger"));exports.Upload=_e;exports.UploadList=te;exports.UploadListPlugin=st;exports.UploadListTypes=Q;exports.UploadPlugin=ot;exports.UploadSizes=Z;exports.UploadStatuses=me;exports.UploadTrigger=ne;exports.UploadTriggerPlugin=lt;exports.UploadTypes=fe;exports.injectBaseUploadContext=pe;exports.injectUploadContext=V;exports.provideBaseUploadContext=ue;exports.provideUploadContext=de;exports.uploadListItemPrefix=F;exports.uploadListPrefix=O;exports.uploadPrefix=Y;
@@ -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
- (e: 'update:fileList', value: UploadFile[]): void;
67
- (e: 'change', data: {
68
- file: UploadFile;
69
- fileList: UploadFile[];
70
- event: 'add' | 'remove' | 'upload' | 'failed' | 'paused' | 'cancel';
71
- }): void;
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
@@ -1,5 +1,5 @@
1
1
  import { c as n } from "../index-DiTA0K4J.js";
2
- const o = "0.29.3", e = function(s) {
2
+ const o = "0.29.5", e = function(s) {
3
3
  return Object.values(n).forEach((t) => {
4
4
  t.install && s.use(t);
5
5
  }), s;
@@ -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.3",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;
1
+ "use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const n=require("../index-BMbS6v_U.js"),l="0.29.5",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;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pantograph/vue",
3
- "version": "0.29.4",
3
+ "version": "0.29.6",
4
4
  "private": false,
5
5
  "license": "MIT",
6
6
  "keywords": [