@duxweb/dvha-core 0.1.11 → 0.1.13

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.
Files changed (36) hide show
  1. package/dist/cjs/components/auth/can.cjs +1 -1
  2. package/dist/cjs/directive/permission.cjs +1 -1
  3. package/dist/cjs/hooks/exportCsv.cjs +2 -0
  4. package/dist/cjs/hooks/importCsv.cjs +2 -0
  5. package/dist/cjs/hooks/overlay.cjs +1 -1
  6. package/dist/cjs/hooks/upload/local.cjs +1 -0
  7. package/dist/cjs/hooks/upload/s3.cjs +1 -0
  8. package/dist/cjs/hooks/upload.cjs +1 -0
  9. package/dist/cjs/index.cjs +1 -1
  10. package/dist/cjs/preset/dataProvider.cjs +1 -1
  11. package/dist/cjs/provider/app.cjs +1 -1
  12. package/dist/esm/components/auth/can.js +7 -5
  13. package/dist/esm/directive/permission.js +4 -2
  14. package/dist/esm/hooks/exportCsv.js +55 -0
  15. package/dist/esm/hooks/importCsv.js +56 -0
  16. package/dist/esm/hooks/overlay.js +6 -4
  17. package/dist/esm/hooks/upload/local.js +31 -0
  18. package/dist/esm/hooks/upload/s3.js +72 -0
  19. package/dist/esm/hooks/upload.js +269 -0
  20. package/dist/esm/index.js +66 -56
  21. package/dist/esm/preset/dataProvider.js +67 -48
  22. package/dist/esm/provider/app.js +4 -2
  23. package/dist/types/hooks/data.d.ts +1 -1
  24. package/dist/types/hooks/export.d.ts +1 -2
  25. package/dist/types/hooks/exportCsv.d.ts +17 -0
  26. package/dist/types/hooks/import.d.ts +1 -1
  27. package/dist/types/hooks/importCsv.d.ts +26 -0
  28. package/dist/types/hooks/index.d.ts +4 -0
  29. package/dist/types/hooks/theme.d.ts +0 -4
  30. package/dist/types/hooks/upload/index.d.ts +3 -0
  31. package/dist/types/hooks/upload/local.d.ts +2 -0
  32. package/dist/types/hooks/upload/s3.d.ts +12 -0
  33. package/dist/types/hooks/upload/types.d.ts +14 -0
  34. package/dist/types/hooks/upload.d.ts +141 -0
  35. package/dist/types/types/data.d.ts +8 -0
  36. package/package.json +2 -1
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const i=require("vue"),t=require("../../hooks/auth.cjs");require("@tanstack/vue-query");require("lodash-es");require("pinia");require("vue-router");require("@vueuse/core");require("@overlastic/vue");require("clsx");const q=i.defineComponent({name:"DuxCan",props:{name:{type:String,required:!0},params:{type:Object}},setup(r,{slots:e}){const a=t.useCan();return()=>{var u,n;return a(r.name,r.params)?(u=e.default)==null?void 0:u.call(e):((n=e.fallback)==null?void 0:n.call(e))||null}}});exports.DuxCan=q;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const i=require("vue"),q=require("../../hooks/auth.cjs");require("@tanstack/vue-query");require("lodash-es");require("pinia");require("vue-router");require("@vueuse/core");require("@overlastic/vue");require("clsx");require("json-2-csv");require("axios");const t=i.defineComponent({name:"DuxCan",props:{name:{type:String,required:!0},params:{type:Object}},setup(r,{slots:e}){const a=q.useCan();return()=>{var u,n;return a(r.name,r.params)?(u=e.default)==null?void 0:u.call(e):((n=e.fallback)==null?void 0:n.call(e))||null}}});exports.DuxCan=t;
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const u=require("../hooks/auth.cjs");require("vue");require("@tanstack/vue-query");require("lodash-es");require("pinia");require("vue-router");require("@vueuse/core");require("@overlastic/vue");require("clsx");const n={mounted(e,t){var i;const{value:r}=t;if(!r)return;u.useCan()(r)||(i=e.parentElement)==null||i.removeChild(e)}};exports.permissionDirective=n;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const t=require("../hooks/auth.cjs");require("vue");require("@tanstack/vue-query");require("lodash-es");require("pinia");require("vue-router");require("@vueuse/core");require("@overlastic/vue");require("clsx");require("json-2-csv");require("axios");const n={mounted(e,u){var i;const{value:r}=u;if(!r)return;t.useCan()(r)||(i=e.parentElement)==null||i.removeChild(e)}};exports.permissionDirective=n;
@@ -0,0 +1,2 @@
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const f=require("json-2-csv"),l=require("vue"),y=require("./export.cjs");function h(e){const d=l.computed(()=>{const{filename:t,headers:r,csvOptions:o,...c}=e;return c}),v=l.computed(()=>{const t=e.csvOptions||{},r=t.quote;return{prependHeader:e.headers!==!1,keys:Array.isArray(e.headers)?e.headers:void 0,delimiter:{field:t.delimiter||",",wrap:typeof r=="string"?r:'"',eol:t.eol||`
2
+ `},excelBOM:t.writeBOM||!1}});return y.useExport({...d.value,onSuccess:async t=>{var o,c,a,i;if(!(t!=null&&t.pages)){(o=e.onError)==null||o.call(e,{message:"No data to export",status:400});return}const r=t.pages.flatMap(n=>(n==null?void 0:n.data)||[]);if(r.length===0){(c=e.onError)==null||c.call(e,{message:"No data to export",status:400});return}try{const n=await f.json2csv(r,v.value),m=new Blob([n],{type:"text/csv;charset=utf-8;"}),u=URL.createObjectURL(m),s=document.createElement("a");s.href=u,s.download=e.filename||"export.csv",s.style.display="none",document.body.appendChild(s),s.click(),document.body.removeChild(s),URL.revokeObjectURL(u),(a=e.onSuccess)==null||a.call(e,t)}catch(n){(i=e.onError)==null||i.call(e,{message:`CSV Export Error: ${n}`,status:500})}}})}exports.useExportCsv=h;
@@ -0,0 +1,2 @@
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const g=require("@vueuse/core"),f=require("json-2-csv"),c=require("vue"),F=require("./import.cjs");function O(t){const l=c.computed(()=>{const{csvOptions:e,...s}=t;return s}),u=c.computed(()=>{const e=t.csvOptions||{};return{delimiter:{field:e.delimiter||",",wrap:e.wrap||'"',eol:e.eol||`
2
+ `},excelBOM:e.excelBOM||!1,headerFields:e.headerFields,keys:e.keys,trimHeaderFields:e.trimHeaderFields||!1,trimFieldValues:e.trimFieldValues||!1}}),i=F.useImport({...l.value}),o=async e=>{var s,a;try{const r=await e.text(),n=await f.csv2json(r,u.value);n&&n.length>0?await i.trigger(n):(s=t.onError)==null||s.call(t,{message:"CSV 文件为空或格式不正确",status:400})}catch(r){(a=t.onError)==null||a.call(t,{message:`CSV 解析错误: ${r}`,status:500})}},{open:m,reset:d,onChange:v}=g.useFileDialog({accept:".csv",multiple:!1});return v(e=>{e&&e.length>0&&o(e[0])}),{...i,open:()=>{d(),m()},readFile:o}}exports.useImportCsv=O;
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const u=require("@overlastic/vue");require("vue");require("clsx");require("vue-router");const t=require("../components/overlay/overlay.cjs");require("pinia");require("lodash-es");require("@tanstack/vue-query");require("@vueuse/core");function i(){const e=u.useOverlayInject(t.DuxOverlay);return{show:r=>e(r)}}exports.useOverlay=i;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const u=require("@overlastic/vue");require("vue");require("clsx");require("vue-router");const i=require("../components/overlay/overlay.cjs");require("pinia");require("lodash-es");require("@tanstack/vue-query");require("@vueuse/core");require("json-2-csv");require("axios");function t(){const e=u.useOverlayInject(i.DuxOverlay);return{show:r=>e(r)}}exports.useOverlay=t;
@@ -0,0 +1 @@
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const o=require("../data.cjs"),s=()=>{const d=o.useClient();return{upload(l,e){const c=e.query||{};let a=null;if(e.method==="PUT")Object.entries(e.params||{}).forEach(([r,t])=>{c[r]=t}),a=l;else{const r=new FormData;r.append("file",l),Object.entries(e.params||{}).forEach(([t,n])=>{r.append(t,n)}),a=r}return d.request({...e,query:c,method:e.method||"POST",payload:a,signal:e.signal,onUploadProgress:e.onUploadProgress})}}};exports.createLocalUploadDriver=s;
@@ -0,0 +1 @@
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const P=require("../data.cjs"),w=require("axios");function g(s){const h=P.useClient();return{async upload(a,t){var i,c,m,U;const o=await h.request({method:"GET",path:s.signPath,query:{name:a.name,size:a.size,mime:a.type,...t.params},signal:t.signal,onUploadProgress:t.onUploadProgress}),r=((i=s.signCallback)==null?void 0:i.call(s,o))||{uploadUrl:(c=o.data)==null?void 0:c.uploadUrl,url:(m=o.data)==null?void 0:m.url,params:(U=o.data)==null?void 0:U.params};if(!r.uploadUrl)throw new Error("Upload URL is required");if(!r.url)throw new Error("File URL is required");const u=t.method||"POST";let l=null;const p=t.headers||{};if(u==="PUT")l=a,p["Content-Type"]=a.type||"application/octet-stream";else{const e=new FormData;e.append("Content-Type",a.type||"application/octet-stream"),e.append("file",a),r.params&&Object.entries(r.params).forEach(([n,y])=>{e.append(n,String(y))}),l=e}const d=await w.request({method:u,url:r.uploadUrl,data:l,signal:t.signal,headers:p,onUploadProgress:e=>{if(t.onUploadProgress&&e.total){const n=Math.round(e.loaded*100/e.total);t.onUploadProgress({loaded:e.loaded,total:e.total,percent:n})}}});if(d.status<200||d.status>=300)throw new Error(`S3 upload failed: ${d.statusText}`);return{data:{url:r.url,filename:a.name,size:a.size,mime:a.type},message:"upload successful"}}}}exports.createS3UploadDriver=g;
@@ -0,0 +1 @@
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const Q=require("@vueuse/core"),R=require("lodash-es"),u=require("vue"),V=require("./upload/local.cjs");function W(l){const v=u.ref(!1),i=u.ref([]),d=u.ref(-1),f=u.ref(new Map),P=l.driver||V.createLocalUploadDriver(),A=u.computed(()=>{const{onProgress:e,onDataCallback:n,onCancel:a,onComplete:t,maxFileSize:c,maxFileCount:o,accept:s,multiple:r,autoUpload:m,options:S,onSuccess:U,onError:F,method:X,driver:Y,...J}=l;return J}),$=u.computed(()=>l.method||"POST"),b=u.computed(()=>{const e=i.value.length,n=i.value.reduce((o,s)=>o+(s.filesize||0),0);let a=0,t=0;return i.value.forEach((o,s)=>{var r;s<d.value?a+=o.filesize||0:s===d.value&&(a+=((r=o.progress)==null?void 0:r.loaded)||0)}),n>0&&(t=Math.round(a/n*100)),{index:d.value>=0?d.value+1:0,totalFiles:e,currentFile:i.value[d.value],totalPercent:t,totalLoaded:a,totalSize:n}}),w=e=>{if(e===0)return"0 Bytes";const n=1024,a=["Bytes","KB","MB","GB"],t=Math.floor(Math.log(e)/Math.log(n));return`${Number.parseFloat((e/n**t).toFixed(2))} ${a[t]}`},h=e=>{if(e===0)return"0 B/s";const n=1024,a=["B/s","KB/s","MB/s","GB/s"],t=Math.floor(Math.log(e)/Math.log(n));return`${Number.parseFloat((e/n**t).toFixed(2))} ${a[t]}`},x=()=>R.uniqueId("upload-"),I=async(e,n,a)=>{switch(n){case"file":{if(!(e instanceof File))throw new TypeError('Payload must be a File when type is "file"');return e}case"blob":{if(!(e instanceof Blob))throw new TypeError('Payload must be a Blob when type is "blob"');return new File([e],"blob-file",{type:e.type})}case"base64":{if(typeof e!="string")throw new TypeError('Payload must be a string when type is "base64"');const t=e.includes(",")?e.split(",")[1]:e,c=e.includes(",")?e.split(",")[0].split(":")[1].split(";")[0]:"application/octet-stream",o=atob(t),s=new Uint8Array(o.length);for(let m=0;m<o.length;m++)s[m]=o.charCodeAt(m);const r=new Blob([s],{type:c});return new File([r],"base64-file",{type:c})}case"arrayBuffer":{if(!(e instanceof ArrayBuffer))throw new TypeError('Payload must be ArrayBuffer when type is "arrayBuffer"');const t=new Blob([e]);return new File([t],"array-buffer-file",{type:"application/octet-stream"})}default:throw new Error(`Unsupported upload type: ${n}`)}},T=e=>{if(l.maxFileSize&&e.size>l.maxFileSize)throw new Error(`File size cannot exceed ${w(l.maxFileSize)}`);if(l.maxFileCount&&i.value.length>=l.maxFileCount)throw new Error(`File count cannot exceed ${l.maxFileCount}`)},k=async(e,n,a)=>{const t=await I(e,n);T(t);const c={id:x(),file:t,filename:t.name,filesize:t.size,filetype:t.type,filesizeText:w(t.size),status:"pending",progress:{loaded:0,total:t.size,percent:0,speed:0,speedText:h(0),remainingTime:0,uploadTime:0}};return i.value.push(c),c},g=(e,n)=>{const a=i.value.findIndex(t=>t.id===e);a!==-1&&(i.value[a]={...i.value[a],...n})},z=()=>{var n;i.value.every(a=>a.status!=="uploading")&&((n=l.onComplete)==null||n.call(l,i.value))},y=e=>{var a;const n=i.value.find(t=>t.id===e);if(!n||n.status!=="pending"&&n.status!=="uploading")return!1;if(n.status==="uploading"){const t=f.value.get(e);t&&(t.abort(),f.value.delete(e))}return g(e,{status:"cancelled"}),(a=l.onCancel)==null||a.call(l,e),z(),!0},q=e=>{e?e.forEach(n=>y(n)):i.value.forEach(n=>y(n.id))},D=async e=>{if(!e.file)throw new Error("File not found");T(e.file);const n=new AbortController;f.value.set(e.id,n);const a=Date.now();g(e.id,{status:"uploading"}),await P.upload(e.file,{...A.value,method:$.value,signal:n.signal,onUploadProgress:t=>{var F;const s=(Date.now()-a)/1e3,r=s>0?t.loaded/s:0,m=(t.total||0)-t.loaded,S=r>0?m/r:0,U={loaded:t.loaded,total:t.total,percent:t.percent||0,speed:Math.round(r),speedText:h(r),uploadTime:Math.round(s),remainingTime:Math.round(S)};g(e.id,{status:"uploading",progress:U}),(F=l.onProgress)==null||F.call(l,b.value)}}).then(t=>{var s,r;if(e.status==="cancelled")return;const c=((s=l.onDataCallback)==null?void 0:s.call(l,t,e))||{},o=Math.round((Date.now()-a)/1e3);g(e.id,{status:"success",data:t,...c,progress:{...e.progress,loaded:e.filesize||0,percent:100,speed:0,speedText:h(0),uploadTime:o,remainingTime:0}}),f.value.delete(e.id),(r=l.onSuccess)==null||r.call(l,t)}).catch(t=>{if(!(t.message==="canceled"||e.status==="cancelled"))throw g(e.id,{status:"error",error:t.message}),f.value.delete(e.id),t}).finally(()=>{z()})},C=async()=>{var n;const e=i.value.filter(a=>a.status==="pending");if(e.length!==0){v.value=!0;try{for(let a=0;a<e.length;a++){const t=e[a],c=i.value.findIndex(o=>o.id===t.id);d.value=c,await D(t)}}catch(a){throw(n=l.onError)==null||n.call(l,{status:(a==null?void 0:a.status)||500,message:(a==null?void 0:a.message)||"upload failed"}),a}finally{v.value=!1,d.value=-1}}},B=async(e,n="file")=>{var a;try{if(l.maxFileCount&&i.value.length+e.length>l.maxFileCount)throw new Error(`Adding ${e.length} files would exceed the maximum limit of ${l.maxFileCount}`);for(const t of e)await k(t,n)}catch(t){throw(a=l.onError)==null||a.call(l,{status:(t==null?void 0:t.status)||400,message:(t==null?void 0:t.message)||"Failed to add files"}),t}l.autoUpload&&C()},G=e=>{const n=e.map(a=>j(a));i.value.push(...n)},K=()=>{i.value.forEach(e=>{y(e.id)}),f.value.clear(),i.value=[],d.value=-1},E=e=>{const n=i.value.find(t=>t.id===e);if(n&&n.status==="uploading"){g(e,{status:"cancelled"});const t=f.value.get(e);if(!t)return;t.abort(),f.value.delete(e)}const a=i.value.findIndex(t=>t.id===e);a!==-1&&i.value.splice(a,1)},L=e=>{e?e.forEach(n=>E(n)):i.value.forEach(n=>E(n.id))},{files:N,open:O,reset:M}=Q.useFileDialog({accept:l.accept,multiple:l.multiple||!1}),j=e=>({id:x(),...e,filesizeText:e.filesize?w(e.filesize):void 0,status:e.url?"success":"pending",progress:{loaded:0,total:e.filesize||0,percent:e.url?100:0,speed:0,speedText:h(0),remainingTime:0,uploadTime:0}});u.watch(N,async e=>{if(e&&e.length>0){const n=Array.from(e);M(),await B(n,"file").catch(a=>{console.warn("Failed to add selected files:",a)})}});const H=u.computed(()=>i.value.filter(e=>e.status==="success").map(e=>({url:e.url,filename:e.filename,filesize:e.filesize,filetype:e.filetype})));return{isUploading:v,uploadFiles:i,dataFiles:H,progress:b,open:O,trigger:C,resetFiles:M,clearFiles:K,removeFiles:L,addFiles:B,addDataFiles:G,cancelFiles:q}}exports.useUpload=W;
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const s=require("./main.cjs"),r=require("./hooks/auth.cjs"),t=require("./hooks/config.cjs"),e=require("./hooks/data.cjs"),o=require("./hooks/manage.cjs"),i=require("./hooks/menu.cjs"),n=require("./hooks/theme.cjs"),a=require("./hooks/overlay.cjs"),c=require("./hooks/i18n.cjs"),q=require("./hooks/select.cjs"),d=require("./hooks/form.cjs"),l=require("./hooks/export.cjs"),g=require("./hooks/import.cjs"),m=require("./router/route.cjs"),p=require("./stores/auth.cjs"),v=require("./stores/route.cjs"),D=require("./stores/tab.cjs"),y=require("./stores/manage.cjs"),C=require("./stores/i18n.cjs"),M=require("./components/common/logo.cjs"),h=require("./components/loader/iframe.cjs"),x=require("./components/overlay/overlay.cjs"),P=require("./components/auth/can.cjs"),u=require("./utils/tree.cjs"),T=require("./provider/app.cjs"),S=require("./provider/tab.cjs"),I=require("./preset/authProvider.cjs"),L=require("./preset/dataProvider.cjs"),A=require("./preset/i18nProvider.cjs");exports.createDux=s.createDux;exports.useCan=r.useCan;exports.useCheck=r.useCheck;exports.useError=r.useError;exports.useForgotPassword=r.useForgotPassword;exports.useGetAuth=r.useGetAuth;exports.useIsLogin=r.useIsLogin;exports.useLogin=r.useLogin;exports.useLogout=r.useLogout;exports.useRegister=r.useRegister;exports.useUpdatePassword=r.useUpdatePassword;exports.useConfig=t.useConfig;exports.useClient=e.useClient;exports.useCreate=e.useCreate;exports.useCreateMany=e.useCreateMany;exports.useCustom=e.useCustom;exports.useCustomMutation=e.useCustomMutation;exports.useDelete=e.useDelete;exports.useDeleteMany=e.useDeleteMany;exports.useInfiniteList=e.useInfiniteList;exports.useInvalidate=e.useInvalidate;exports.useList=e.useList;exports.useMany=e.useMany;exports.useOne=e.useOne;exports.useUpdate=e.useUpdate;exports.useUpdateMany=e.useUpdateMany;exports.useManage=o.useManage;exports.useMenu=i.useMenu;exports.useTheme=n.useTheme;exports.useOverlay=a.useOverlay;exports.useI18n=c.useI18n;exports.useSelect=q.useSelect;exports.useForm=d.useForm;exports.useExport=l.useExport;exports.useImport=g.useImport;exports.initRouter=m.initRouter;exports.useAuthStore=p.useAuthStore;exports.useRouteStore=v.useRouteStore;exports.useTabStore=D.useTabStore;exports.useManageStore=y.useManageStore;exports.useI18nStore=C.useI18nStore;exports.DuxLogo=M.DuxLogo;exports.DuxLoaderIframe=h;exports.DuxOverlay=x.DuxOverlay;exports.DuxCan=P.DuxCan;exports.arrayToTree=u.arrayToTree;exports.searchTree=u.searchTree;exports.treeToArr=u.treeToArr;exports.DuxAppProvider=T.DuxAppProvider;exports.DuxTabRouterView=S.DuxTabRouterView;exports.simpleAuthProvider=I.simpleAuthProvider;exports.simpleDataProvider=L.simpleDataProvider;exports.i18nProvider=A.i18nProvider;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const s=require("./main.cjs"),r=require("./hooks/auth.cjs"),t=require("./hooks/config.cjs"),e=require("./hooks/data.cjs"),o=require("./hooks/manage.cjs"),a=require("./hooks/menu.cjs"),i=require("./hooks/theme.cjs"),n=require("./hooks/overlay.cjs"),c=require("./hooks/i18n.cjs"),l=require("./hooks/select.cjs"),p=require("./hooks/form.cjs"),d=require("./hooks/export.cjs"),q=require("./hooks/import.cjs"),v=require("./hooks/exportCsv.cjs"),m=require("./hooks/importCsv.cjs"),g=require("./hooks/upload.cjs"),C=require("./hooks/upload/local.cjs"),D=require("./hooks/upload/s3.cjs"),x=require("./router/route.cjs"),y=require("./stores/auth.cjs"),M=require("./stores/route.cjs"),h=require("./stores/tab.cjs"),P=require("./stores/manage.cjs"),S=require("./stores/i18n.cjs"),I=require("./components/common/logo.cjs"),L=require("./components/loader/iframe.cjs"),T=require("./components/overlay/overlay.cjs"),U=require("./components/auth/can.cjs"),u=require("./utils/tree.cjs"),A=require("./provider/app.cjs"),f=require("./provider/tab.cjs"),b=require("./preset/authProvider.cjs"),R=require("./preset/dataProvider.cjs"),O=require("./preset/i18nProvider.cjs");exports.createDux=s.createDux;exports.useCan=r.useCan;exports.useCheck=r.useCheck;exports.useError=r.useError;exports.useForgotPassword=r.useForgotPassword;exports.useGetAuth=r.useGetAuth;exports.useIsLogin=r.useIsLogin;exports.useLogin=r.useLogin;exports.useLogout=r.useLogout;exports.useRegister=r.useRegister;exports.useUpdatePassword=r.useUpdatePassword;exports.useConfig=t.useConfig;exports.useClient=e.useClient;exports.useCreate=e.useCreate;exports.useCreateMany=e.useCreateMany;exports.useCustom=e.useCustom;exports.useCustomMutation=e.useCustomMutation;exports.useDelete=e.useDelete;exports.useDeleteMany=e.useDeleteMany;exports.useInfiniteList=e.useInfiniteList;exports.useInvalidate=e.useInvalidate;exports.useList=e.useList;exports.useMany=e.useMany;exports.useOne=e.useOne;exports.useUpdate=e.useUpdate;exports.useUpdateMany=e.useUpdateMany;exports.useManage=o.useManage;exports.useMenu=a.useMenu;exports.useTheme=i.useTheme;exports.useOverlay=n.useOverlay;exports.useI18n=c.useI18n;exports.useSelect=l.useSelect;exports.useForm=p.useForm;exports.useExport=d.useExport;exports.useImport=q.useImport;exports.useExportCsv=v.useExportCsv;exports.useImportCsv=m.useImportCsv;exports.useUpload=g.useUpload;exports.createLocalUploadDriver=C.createLocalUploadDriver;exports.createS3UploadDriver=D.createS3UploadDriver;exports.initRouter=x.initRouter;exports.useAuthStore=y.useAuthStore;exports.useRouteStore=M.useRouteStore;exports.useTabStore=h.useTabStore;exports.useManageStore=P.useManageStore;exports.useI18nStore=S.useI18nStore;exports.DuxLogo=I.DuxLogo;exports.DuxLoaderIframe=L;exports.DuxOverlay=T.DuxOverlay;exports.DuxCan=U.DuxCan;exports.arrayToTree=u.arrayToTree;exports.searchTree=u.searchTree;exports.treeToArr=u.treeToArr;exports.DuxAppProvider=A.DuxAppProvider;exports.DuxTabRouterView=f.DuxTabRouterView;exports.simpleAuthProvider=b.simpleAuthProvider;exports.simpleDataProvider=R.simpleDataProvider;exports.i18nProvider=O.i18nProvider;
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const n=require("axios"),s=require("lodash-es");function m(c){const r=a=>a?`${c.apiUrl}/${s.trimStart(a||"","/")}`:c.apiUrl;return{apiUrl:r,getList:(a,l,t)=>{const e={};return a.pagination&&typeof a.pagination=="object"&&(e.page=a.pagination.page,e.pageSize=a.pagination.pageSize),n.get(r(a.path)||"",{params:{...e,...a.filters,...a.sorters},headers:{Authorization:t==null?void 0:t.token},...a.meta}).then(d=>c.successCallback?c.successCallback(d):k(d)).catch(d=>{throw c.errorCallback?c.errorCallback(d):b(d)})},create:(a,l,t)=>n.post(r(a.path)||"",a.data,{headers:{Authorization:t==null?void 0:t.token},...a.meta}).then(e=>c.successCallback?c.successCallback(e):k(e)).catch(e=>{throw c.errorCallback?c.errorCallback(e):b(e)}),update:(a,l,t)=>n.put(r(a.id?`${a.path}/${a.id}`:a.path)||"",a.data,{headers:{Authorization:t==null?void 0:t.token},...a.meta}).then(e=>c.successCallback?c.successCallback(e):k(e)).catch(e=>{throw c.errorCallback?c.errorCallback(e):b(e)}),deleteOne:(a,l,t)=>n.delete(r(a.id?`${a.path}/${a.id}`:a.path)||"",{headers:{Authorization:t==null?void 0:t.token},...a.meta}).then(e=>c.successCallback?c.successCallback(e):k(e)).catch(e=>{throw c.errorCallback?c.errorCallback(e):b(e)}),getOne:(a,l,t)=>n.get(r(a.id?`${a.path}/${a.id}`:a.path)||"",{headers:{Authorization:t==null?void 0:t.token},...a.meta}).then(e=>c.successCallback?c.successCallback(e):k(e)).catch(e=>{throw c.errorCallback?c.errorCallback(e):b(e)}),getMany:(a,l,t)=>n.get(r(a.path)||"",{params:{ids:a.ids},headers:{Authorization:t==null?void 0:t.token},...a.meta}).then(e=>c.successCallback?c.successCallback(e):k(e)).catch(e=>{throw c.errorCallback?c.errorCallback(e):b(e)}),createMany:(a,l,t)=>n.post(r(a.path)||"",a.data,{headers:{Authorization:t==null?void 0:t.token},...a.meta}).then(e=>c.successCallback?c.successCallback(e):k(e)).catch(e=>{throw c.errorCallback?c.errorCallback(e):b(e)}),updateMany:(a,l,t)=>n.put(r(a.path)||"",{ids:a.ids,data:a.data},{headers:{Authorization:t==null?void 0:t.token},...a.meta}).then(e=>c.successCallback?c.successCallback(e):k(e)).catch(e=>{throw c.errorCallback?c.errorCallback(e):b(e)}),deleteMany:(a,l,t)=>n.delete(r(a.path)||"",{params:{ids:a.ids},headers:{Authorization:t==null?void 0:t.token},...a.meta}).then(e=>c.successCallback?c.successCallback(e):k(e)).catch(e=>{throw c.errorCallback?c.errorCallback(e):b(e)}),custom:(a,l,t)=>{let e={...a.query};return a.sorters&&typeof a.sorters=="object"&&(e={...e,...a.sorters}),a.filters&&typeof a.filters=="object"&&(e={...e,...a.filters}),n.request({url:r(a.path||""),method:a.method||"GET",data:a.payload,params:e,headers:{Authorization:t==null?void 0:t.token,...a.headers},...a.meta}).then(d=>c.successCallback?c.successCallback(d):k(d)).catch(d=>{throw c.errorCallback?c.errorCallback(d):b(d)})}}}function k(c){var r,a,l;return{message:(r=c.data)==null?void 0:r.message,data:(a=c.data)==null?void 0:a.data,meta:(l=c.data)==null?void 0:l.meta,raw:c.data}}function b(c){var r,a,l,t;return{message:((r=c.response.data)==null?void 0:r.message)||c.message,data:(a=c.response.data)==null?void 0:a.data,meta:(l=c.response.data)==null?void 0:l.meta,status:((t=c.response.data)==null?void 0:t.code)||c.response.status||500,raw:c.response.data}}exports.simpleDataProvider=m;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const n=require("axios"),s=require("lodash-es");function h(c){const r=a=>a?`${c.apiUrl}/${s.trimStart(a||"","/")}`:c.apiUrl;return{apiUrl:r,getList:(a,d,l)=>{const e={};return a.pagination&&typeof a.pagination=="object"&&(e.page=a.pagination.page,e.pageSize=a.pagination.pageSize),n.get(r(a.path)||"",{params:{...e,...a.filters,...a.sorters},headers:{Authorization:l==null?void 0:l.token},...a.meta}).then(t=>c.successCallback?c.successCallback(t):k(t)).catch(t=>{throw c.errorCallback?c.errorCallback(t):b(t)})},create:(a,d,l)=>n.post(r(a.path)||"",a.data,{headers:{Authorization:l==null?void 0:l.token},...a.meta}).then(e=>c.successCallback?c.successCallback(e):k(e)).catch(e=>{throw c.errorCallback?c.errorCallback(e):b(e)}),update:(a,d,l)=>n.put(r(a.id?`${a.path}/${a.id}`:a.path)||"",a.data,{headers:{Authorization:l==null?void 0:l.token},...a.meta}).then(e=>c.successCallback?c.successCallback(e):k(e)).catch(e=>{throw c.errorCallback?c.errorCallback(e):b(e)}),deleteOne:(a,d,l)=>n.delete(r(a.id?`${a.path}/${a.id}`:a.path)||"",{headers:{Authorization:l==null?void 0:l.token},...a.meta}).then(e=>c.successCallback?c.successCallback(e):k(e)).catch(e=>{throw c.errorCallback?c.errorCallback(e):b(e)}),getOne:(a,d,l)=>n.get(r(a.id?`${a.path}/${a.id}`:a.path)||"",{headers:{Authorization:l==null?void 0:l.token},...a.meta}).then(e=>c.successCallback?c.successCallback(e):k(e)).catch(e=>{throw c.errorCallback?c.errorCallback(e):b(e)}),getMany:(a,d,l)=>n.get(r(a.path)||"",{params:{ids:a.ids},headers:{Authorization:l==null?void 0:l.token},...a.meta}).then(e=>c.successCallback?c.successCallback(e):k(e)).catch(e=>{throw c.errorCallback?c.errorCallback(e):b(e)}),createMany:(a,d,l)=>n.post(r(a.path)||"",a.data,{headers:{Authorization:l==null?void 0:l.token},...a.meta}).then(e=>c.successCallback?c.successCallback(e):k(e)).catch(e=>{throw c.errorCallback?c.errorCallback(e):b(e)}),updateMany:(a,d,l)=>n.put(r(a.path)||"",{ids:a.ids,data:a.data},{headers:{Authorization:l==null?void 0:l.token},...a.meta}).then(e=>c.successCallback?c.successCallback(e):k(e)).catch(e=>{throw c.errorCallback?c.errorCallback(e):b(e)}),deleteMany:(a,d,l)=>n.delete(r(a.path)||"",{params:{ids:a.ids},headers:{Authorization:l==null?void 0:l.token},...a.meta}).then(e=>c.successCallback?c.successCallback(e):k(e)).catch(e=>{throw c.errorCallback?c.errorCallback(e):b(e)}),custom:(a,d,l)=>{let e={...a.query};return a.sorters&&typeof a.sorters=="object"&&(e={...e,...a.sorters}),a.filters&&typeof a.filters=="object"&&(e={...e,...a.filters}),n.request({url:r(a.path||""),method:a.method||"GET",data:a.payload,params:e,signal:a.signal,headers:{Authorization:l==null?void 0:l.token,...a.headers},onUploadProgress:t=>{var m;const C=Math.round(t.loaded*100/(t.total||1));(m=a.onUploadProgress)==null||m.call(a,{loaded:t.loaded,total:t.total,percent:C})},onDownloadProgress:t=>{var m;const C=Math.round(t.loaded*100/(t.total||1));(m=a.onDownloadProgress)==null||m.call(a,{loaded:t.loaded,total:t.total,percent:C})},...a.meta}).then(t=>c.successCallback?c.successCallback(t):k(t)).catch(t=>{throw c.errorCallback?c.errorCallback(t):b(t)})}}}function k(c){var r,a,d;return{message:(r=c.data)==null?void 0:r.message,data:(a=c.data)==null?void 0:a.data,meta:(d=c.data)==null?void 0:d.meta,raw:c.data}}function b(c){var r,a,d,l,e,t,C,m,u,g;return{message:((a=(r=c.response)==null?void 0:r.data)==null?void 0:a.message)||(c==null?void 0:c.message),data:(l=(d=c.response)==null?void 0:d.data)==null?void 0:l.data,meta:(t=(e=c.response)==null?void 0:e.data)==null?void 0:t.meta,status:((m=(C=c.response)==null?void 0:C.data)==null?void 0:m.code)||((u=c.response)==null?void 0:u.status)||500,raw:(g=c.response)==null?void 0:g.data}}exports.simpleDataProvider=h;
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const h=require("vue"),U=require("@overlastic/vue"),V=require("vue-router"),B=require("../hooks/auth.cjs"),G=require("../hooks/config.cjs");require("@tanstack/vue-query");const H=require("../hooks/manage.cjs");require("lodash-es");require("pinia");const J=require("../stores/auth.cjs"),K=require("../stores/route.cjs"),Q=require("../stores/manage.cjs"),W=require("../stores/i18n.cjs");require("@vueuse/core");require("clsx");const p=l=>Object.freeze(Object.defineProperty({__proto__:null,default:l},Symbol.toStringTag,{value:"Module"})),X=h.defineComponent({name:"DuxAppProvider",props:{},setup(l,{slots:f}){const m=h.inject("dux.manage"),s=G.useConfig(),d=V.useRouter();return d.beforeEach(async(n,Y,a)=>{var $,S,R,A,M,y,_,k,z,w,D,I,O,j;const t=n.meta.manageName,L=n.meta.authorization===!1;if(!t){const e=s.defaultManage||((S=($=s.manages)==null?void 0:$[0])==null?void 0:S.name)||"";return a({path:`/${e}`,replace:!0})}m&&(m.value=t);const g=Q.useManageStore(t);g.isInit()||g.setConfig((R=s.manages)==null?void 0:R.find(e=>e.name===t),s);const c=K.useRouteStore(t),o=H.useManage(t),v=J.useAuthStore(t),q=W.useI18nStore(t);if((A=o.config)!=null&&A.i18nProvider&&!q.isInit()){const e=q.getLocale();e&&((M=o.config)==null||M.i18nProvider.changeLocale(e))}if(!v.isLogin())return L?a():a({path:o.getRoutePath("login"),replace:!0});const P=e=>e==null?void 0:e.map(u=>({...u,path:o.getRoutePath(u.path||"")}));if(!c.getRouteInit()){const e=((y=o.config)==null?void 0:y.components)||{},u=[];if(u.push({name:`${t}.notFound`,label:"404",path:":pathMatch(.*)*",component:e.notFound||(()=>Promise.resolve().then(()=>p(require("../components/status/notFound.cjs")))),hidden:!0,meta:{can:!1}}),u.push({name:`${t}.notAuthorized`,label:"403",path:"notAuthorized",component:e.notAuthorized||(()=>Promise.resolve().then(()=>p(require("../components/status/notAuthorized.cjs")))),hidden:!0,meta:{can:!1}}),u.push({name:`${t}.error`,label:"500",path:"error",component:e.error||(()=>Promise.resolve().then(()=>p(require("../components/status/error.cjs")))),hidden:!0,meta:{can:!1}}),c.setRoutes(P(((_=o.config)==null?void 0:_.menus)||[])),(k=o.config)!=null&&k.apiRoutePath)try{await((D=(w=(z=o.config)==null?void 0:z.dataProvider)==null?void 0:w.default)==null?void 0:D.custom({path:o.config.apiRoutePath,meta:{timeout:5e3}},o,v.getUser()).then(r=>{c.appendRoutes(P(r.data||[]))}))}catch(r){console.error(r)}return c.appendRoutes(u),c.getRoutes().forEach(r=>{var C,N;if(!r.path)return;const i={name:r.name,path:r.path,meta:r.meta};switch(r.loader){case"iframe":i.component=((N=(C=o.config)==null?void 0:C.components)==null?void 0:N.iframe)||(()=>Promise.resolve().then(()=>p(require("../components/loader/iframe.cjs"))));break;case"link":i.beforeEnter=()=>{var F;const E=((F=r.meta)==null?void 0:F.url)||r.path;return E&&window.open(E,"_blank"),!1},i.component=()=>Promise.resolve({template:"<div></div>"});break;default:r.component&&(i.component=r.component);break}d.addRoute(`${t}.auth`,i)}),a({path:((I=n.redirectedFrom)==null?void 0:I.path)||n.path,replace:!0})}const b=["","/",`/${t}`,`/${t}/`];if(b.includes(n.path)){const e=c.getIndexRoute();return!(e!=null&&e.path)||b.includes(e==null?void 0:e.path)?(console.warn("[Dux] index route not found, skip redirect"),a()):a({path:(e==null?void 0:e.path)||"/",replace:!0})}const T=B.useCan(t);return(((O=n.meta)==null?void 0:O.can)===void 0||((j=n.meta)==null?void 0:j.can)===!0)&&!T(n.name)?a({name:`${t}.notAuthorized`}):a()}),()=>h.createVNode(U.OverlaysProvider,null,{default:()=>{var n;return[(n=f.default)==null?void 0:n.call(f)]}})}});exports.DuxAppProvider=X;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const h=require("vue"),U=require("@overlastic/vue"),V=require("vue-router"),B=require("../hooks/auth.cjs"),G=require("../hooks/config.cjs");require("@tanstack/vue-query");const H=require("../hooks/manage.cjs");require("lodash-es");require("pinia");const J=require("../stores/auth.cjs"),K=require("../stores/route.cjs"),Q=require("../stores/manage.cjs"),W=require("../stores/i18n.cjs");require("@vueuse/core");require("clsx");require("json-2-csv");require("axios");const p=l=>Object.freeze(Object.defineProperty({__proto__:null,default:l},Symbol.toStringTag,{value:"Module"})),X=h.defineComponent({name:"DuxAppProvider",props:{},setup(l,{slots:f}){const m=h.inject("dux.manage"),s=G.useConfig(),d=V.useRouter();return d.beforeEach(async(n,Y,a)=>{var $,S,R,A,M,y,_,k,z,w,D,I,O,j;const r=n.meta.manageName,L=n.meta.authorization===!1;if(!r){const e=s.defaultManage||((S=($=s.manages)==null?void 0:$[0])==null?void 0:S.name)||"";return a({path:`/${e}`,replace:!0})}m&&(m.value=r);const g=Q.useManageStore(r);g.isInit()||g.setConfig((R=s.manages)==null?void 0:R.find(e=>e.name===r),s);const i=K.useRouteStore(r),o=H.useManage(r),q=J.useAuthStore(r),v=W.useI18nStore(r);if((A=o.config)!=null&&A.i18nProvider&&!v.isInit()){const e=v.getLocale();e&&((M=o.config)==null||M.i18nProvider.changeLocale(e))}if(!q.isLogin())return L?a():a({path:o.getRoutePath("login"),replace:!0});const P=e=>e==null?void 0:e.map(u=>({...u,path:o.getRoutePath(u.path||"")}));if(!i.getRouteInit()){const e=((y=o.config)==null?void 0:y.components)||{},u=[];if(u.push({name:`${r}.notFound`,label:"404",path:":pathMatch(.*)*",component:e.notFound||(()=>Promise.resolve().then(()=>p(require("../components/status/notFound.cjs")))),hidden:!0,meta:{can:!1}}),u.push({name:`${r}.notAuthorized`,label:"403",path:"notAuthorized",component:e.notAuthorized||(()=>Promise.resolve().then(()=>p(require("../components/status/notAuthorized.cjs")))),hidden:!0,meta:{can:!1}}),u.push({name:`${r}.error`,label:"500",path:"error",component:e.error||(()=>Promise.resolve().then(()=>p(require("../components/status/error.cjs")))),hidden:!0,meta:{can:!1}}),i.setRoutes(P(((_=o.config)==null?void 0:_.menus)||[])),(k=o.config)!=null&&k.apiRoutePath)try{await((D=(w=(z=o.config)==null?void 0:z.dataProvider)==null?void 0:w.default)==null?void 0:D.custom({path:o.config.apiRoutePath,meta:{timeout:5e3}},o,q.getUser()).then(t=>{i.appendRoutes(P(t.data||[]))}))}catch(t){console.error(t)}return i.appendRoutes(u),i.getRoutes().forEach(t=>{var C,N;if(!t.path)return;const c={name:t.name,path:t.path,meta:t.meta};switch(t.loader){case"iframe":c.component=((N=(C=o.config)==null?void 0:C.components)==null?void 0:N.iframe)||(()=>Promise.resolve().then(()=>p(require("../components/loader/iframe.cjs"))));break;case"link":c.beforeEnter=()=>{var F;const E=((F=t.meta)==null?void 0:F.url)||t.path;return E&&window.open(E,"_blank"),!1},c.component=()=>Promise.resolve({template:"<div></div>"});break;default:t.component&&(c.component=t.component);break}d.addRoute(`${r}.auth`,c)}),a({path:((I=n.redirectedFrom)==null?void 0:I.path)||n.path,replace:!0})}const b=["","/",`/${r}`,`/${r}/`];if(b.includes(n.path)){const e=i.getIndexRoute();return!(e!=null&&e.path)||b.includes(e==null?void 0:e.path)?(console.warn("[Dux] index route not found, skip redirect"),a()):a({path:(e==null?void 0:e.path)||"/",replace:!0})}const T=B.useCan(r);return(((O=n.meta)==null?void 0:O.can)===void 0||((j=n.meta)==null?void 0:j.can)===!0)&&!T(n.name)?a({name:`${r}.notAuthorized`}):a()}),()=>h.createVNode(U.OverlaysProvider,null,{default:()=>{var n;return[(n=f.default)==null?void 0:n.call(f)]}})}});exports.DuxAppProvider=X;
@@ -7,7 +7,9 @@ import "vue-router";
7
7
  import "@vueuse/core";
8
8
  import "@overlastic/vue";
9
9
  import "clsx";
10
- const y = /* @__PURE__ */ a({
10
+ import "json-2-csv";
11
+ import "axios";
12
+ const g = /* @__PURE__ */ a({
11
13
  name: "DuxCan",
12
14
  props: {
13
15
  name: {
@@ -18,16 +20,16 @@ const y = /* @__PURE__ */ a({
18
20
  type: Object
19
21
  }
20
22
  },
21
- setup(e, {
23
+ setup(m, {
22
24
  slots: r
23
25
  }) {
24
26
  const n = i();
25
27
  return () => {
26
- var m, p;
27
- return n(e.name, e.params) ? (m = r.default) == null ? void 0 : m.call(r) : ((p = r.fallback) == null ? void 0 : p.call(r)) || null;
28
+ var p, e;
29
+ return n(m.name, m.params) ? (p = r.default) == null ? void 0 : p.call(r) : ((e = r.fallback) == null ? void 0 : e.call(r)) || null;
28
30
  };
29
31
  }
30
32
  });
31
33
  export {
32
- y as DuxCan
34
+ g as DuxCan
33
35
  };
@@ -7,7 +7,9 @@ import "vue-router";
7
7
  import "@vueuse/core";
8
8
  import "@overlastic/vue";
9
9
  import "clsx";
10
- const l = {
10
+ import "json-2-csv";
11
+ import "axios";
12
+ const h = {
11
13
  mounted(t, i) {
12
14
  var r;
13
15
  const { value: o } = i;
@@ -17,5 +19,5 @@ const l = {
17
19
  }
18
20
  };
19
21
  export {
20
- l as permissionDirective
22
+ h as permissionDirective
21
23
  };
@@ -0,0 +1,55 @@
1
+ import { json2csv as v } from "json-2-csv";
2
+ import { computed as u } from "vue";
3
+ import { useExport as h } from "./export.js";
4
+ function b(e) {
5
+ const d = u(() => {
6
+ const { filename: t, headers: r, csvOptions: s, ...c } = e;
7
+ return c;
8
+ }), m = u(() => {
9
+ const t = e.csvOptions || {}, r = t.quote;
10
+ return {
11
+ prependHeader: e.headers !== !1,
12
+ keys: Array.isArray(e.headers) ? e.headers : void 0,
13
+ delimiter: {
14
+ field: t.delimiter || ",",
15
+ wrap: typeof r == "string" ? r : '"',
16
+ eol: t.eol || `
17
+ `
18
+ },
19
+ excelBOM: t.writeBOM || !1
20
+ };
21
+ });
22
+ return h({
23
+ ...d.value,
24
+ onSuccess: async (t) => {
25
+ var s, c, a, i;
26
+ if (!(t != null && t.pages)) {
27
+ (s = e.onError) == null || s.call(e, {
28
+ message: "No data to export",
29
+ status: 400
30
+ });
31
+ return;
32
+ }
33
+ const r = t.pages.flatMap((n) => (n == null ? void 0 : n.data) || []);
34
+ if (r.length === 0) {
35
+ (c = e.onError) == null || c.call(e, {
36
+ message: "No data to export",
37
+ status: 400
38
+ });
39
+ return;
40
+ }
41
+ try {
42
+ const n = await v(r, m.value), f = new Blob([n], { type: "text/csv;charset=utf-8;" }), l = URL.createObjectURL(f), o = document.createElement("a");
43
+ o.href = l, o.download = e.filename || "export.csv", o.style.display = "none", document.body.appendChild(o), o.click(), document.body.removeChild(o), URL.revokeObjectURL(l), (a = e.onSuccess) == null || a.call(e, t);
44
+ } catch (n) {
45
+ (i = e.onError) == null || i.call(e, {
46
+ message: `CSV Export Error: ${n}`,
47
+ status: 500
48
+ });
49
+ }
50
+ }
51
+ });
52
+ }
53
+ export {
54
+ b as useExportCsv
55
+ };
@@ -0,0 +1,56 @@
1
+ import { useFileDialog as g } from "@vueuse/core";
2
+ import { csv2json as v } from "json-2-csv";
3
+ import { computed as l } from "vue";
4
+ import { useImport as F } from "./import.js";
5
+ function C(t) {
6
+ const c = l(() => {
7
+ const { csvOptions: e, ...s } = t;
8
+ return s;
9
+ }), m = l(() => {
10
+ const e = t.csvOptions || {};
11
+ return {
12
+ delimiter: {
13
+ field: e.delimiter || ",",
14
+ wrap: e.wrap || '"',
15
+ eol: e.eol || `
16
+ `
17
+ },
18
+ excelBOM: e.excelBOM || !1,
19
+ headerFields: e.headerFields,
20
+ keys: e.keys,
21
+ trimHeaderFields: e.trimHeaderFields || !1,
22
+ trimFieldValues: e.trimFieldValues || !1
23
+ };
24
+ }), r = F({
25
+ ...c.value
26
+ }), n = async (e) => {
27
+ var s, a;
28
+ try {
29
+ const i = await e.text(), o = await v(i, m.value);
30
+ o && o.length > 0 ? await r.trigger(o) : (s = t.onError) == null || s.call(t, {
31
+ message: "CSV 文件为空或格式不正确",
32
+ status: 400
33
+ });
34
+ } catch (i) {
35
+ (a = t.onError) == null || a.call(t, {
36
+ message: `CSV 解析错误: ${i}`,
37
+ status: 500
38
+ });
39
+ }
40
+ }, { open: u, reset: d, onChange: f } = g({
41
+ accept: ".csv",
42
+ multiple: !1
43
+ });
44
+ return f((e) => {
45
+ e && e.length > 0 && n(e[0]);
46
+ }), {
47
+ ...r,
48
+ open: () => {
49
+ d(), u();
50
+ },
51
+ readFile: n
52
+ };
53
+ }
54
+ export {
55
+ C as useImportCsv
56
+ };
@@ -2,17 +2,19 @@ import { useOverlayInject as t } from "@overlastic/vue";
2
2
  import "vue";
3
3
  import "clsx";
4
4
  import "vue-router";
5
- import { DuxOverlay as e } from "../components/overlay/overlay.js";
5
+ import { DuxOverlay as m } from "../components/overlay/overlay.js";
6
6
  import "pinia";
7
7
  import "lodash-es";
8
8
  import "@tanstack/vue-query";
9
9
  import "@vueuse/core";
10
- function v() {
11
- const r = t(e);
10
+ import "json-2-csv";
11
+ import "axios";
12
+ function O() {
13
+ const r = t(m);
12
14
  return {
13
15
  show: (o) => r(o)
14
16
  };
15
17
  }
16
18
  export {
17
- v as useOverlay
19
+ O as useOverlay
18
20
  };
@@ -0,0 +1,31 @@
1
+ import { useClient as o } from "../data.js";
2
+ const m = () => {
3
+ const n = o();
4
+ return {
5
+ upload(l, e) {
6
+ const c = e.query || {};
7
+ let a = null;
8
+ if (e.method === "PUT")
9
+ Object.entries(e.params || {}).forEach(([r, t]) => {
10
+ c[r] = t;
11
+ }), a = l;
12
+ else {
13
+ const r = new FormData();
14
+ r.append("file", l), Object.entries(e.params || {}).forEach(([t, d]) => {
15
+ r.append(t, d);
16
+ }), a = r;
17
+ }
18
+ return n.request({
19
+ ...e,
20
+ query: c,
21
+ method: e.method || "POST",
22
+ payload: a,
23
+ signal: e.signal,
24
+ onUploadProgress: e.onUploadProgress
25
+ });
26
+ }
27
+ };
28
+ };
29
+ export {
30
+ m as createLocalUploadDriver
31
+ };
@@ -0,0 +1,72 @@
1
+ import { useClient as y } from "../data.js";
2
+ import P from "axios";
3
+ function q(s) {
4
+ const h = y();
5
+ return {
6
+ async upload(a, t) {
7
+ var m, i, c, U;
8
+ const o = await h.request({
9
+ method: "GET",
10
+ path: s.signPath,
11
+ query: {
12
+ name: a.name,
13
+ size: a.size,
14
+ mime: a.type,
15
+ ...t.params
16
+ },
17
+ signal: t.signal,
18
+ onUploadProgress: t.onUploadProgress
19
+ }), r = ((m = s.signCallback) == null ? void 0 : m.call(s, o)) || {
20
+ uploadUrl: (i = o.data) == null ? void 0 : i.uploadUrl,
21
+ url: (c = o.data) == null ? void 0 : c.url,
22
+ params: (U = o.data) == null ? void 0 : U.params
23
+ };
24
+ if (!r.uploadUrl)
25
+ throw new Error("Upload URL is required");
26
+ if (!r.url)
27
+ throw new Error("File URL is required");
28
+ const p = t.method || "POST";
29
+ let l = null;
30
+ const u = t.headers || {};
31
+ if (p === "PUT")
32
+ l = a, u["Content-Type"] = a.type || "application/octet-stream";
33
+ else {
34
+ const e = new FormData();
35
+ e.append("Content-Type", a.type || "application/octet-stream"), e.append("file", a), r.params && Object.entries(r.params).forEach(([n, w]) => {
36
+ e.append(n, String(w));
37
+ }), l = e;
38
+ }
39
+ const d = await P.request({
40
+ method: p,
41
+ url: r.uploadUrl,
42
+ data: l,
43
+ signal: t.signal,
44
+ headers: u,
45
+ onUploadProgress: (e) => {
46
+ if (t.onUploadProgress && e.total) {
47
+ const n = Math.round(e.loaded * 100 / e.total);
48
+ t.onUploadProgress({
49
+ loaded: e.loaded,
50
+ total: e.total,
51
+ percent: n
52
+ });
53
+ }
54
+ }
55
+ });
56
+ if (d.status < 200 || d.status >= 300)
57
+ throw new Error(`S3 upload failed: ${d.statusText}`);
58
+ return {
59
+ data: {
60
+ url: r.url,
61
+ filename: a.name,
62
+ size: a.size,
63
+ mime: a.type
64
+ },
65
+ message: "upload successful"
66
+ };
67
+ }
68
+ };
69
+ }
70
+ export {
71
+ q as createS3UploadDriver
72
+ };