giime 0.0.19 → 0.0.20

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 (38) hide show
  1. package/README.md +7 -0
  2. package/es/components/src/base/cascaderPanel/cascaderPanel.d.ts +0 -3
  3. package/es/components/src/base/cascaderPanel/cascaderPanel.mjs.map +1 -1
  4. package/es/components/src/base/tour/Tour.vue.d.ts +2 -2
  5. package/es/components/src/base/tour/index.d.ts +6 -6
  6. package/es/giime/index.mjs +1 -0
  7. package/es/giime/index.mjs.map +1 -1
  8. package/es/giime/version.d.ts +1 -1
  9. package/es/giime/version.mjs +1 -1
  10. package/es/giime/version.mjs.map +1 -1
  11. package/es/hooks/base/index.d.ts +1 -0
  12. package/es/hooks/base/index.mjs +1 -0
  13. package/es/hooks/base/index.mjs.map +1 -1
  14. package/es/hooks/base/useDownload/index.d.ts +9 -0
  15. package/es/hooks/base/useDownload/index.mjs +143 -0
  16. package/es/hooks/base/useDownload/index.mjs.map +1 -0
  17. package/es/hooks/index.mjs +1 -0
  18. package/es/hooks/index.mjs.map +1 -1
  19. package/es/utils/src/types.d.ts +14 -0
  20. package/lib/components/src/base/cascaderPanel/cascaderPanel.d.ts +0 -3
  21. package/lib/components/src/base/cascaderPanel/cascaderPanel.js.map +1 -1
  22. package/lib/components/src/base/tour/Tour.vue.d.ts +2 -2
  23. package/lib/components/src/base/tour/index.d.ts +6 -6
  24. package/lib/giime/index.js +24 -22
  25. package/lib/giime/index.js.map +1 -1
  26. package/lib/giime/version.d.ts +1 -1
  27. package/lib/giime/version.js +1 -1
  28. package/lib/giime/version.js.map +1 -1
  29. package/lib/hooks/base/index.d.ts +1 -0
  30. package/lib/hooks/base/index.js +2 -0
  31. package/lib/hooks/base/index.js.map +1 -1
  32. package/lib/hooks/base/useDownload/index.d.ts +9 -0
  33. package/lib/hooks/base/useDownload/index.js +145 -0
  34. package/lib/hooks/base/useDownload/index.js.map +1 -0
  35. package/lib/hooks/index.js +24 -22
  36. package/lib/hooks/index.js.map +1 -1
  37. package/lib/utils/src/types.d.ts +14 -0
  38. package/package.json +2 -1
package/README.md CHANGED
@@ -46,3 +46,10 @@ Giime遵循MIT许可证发布,请查阅LICENSE文件以获取更多信息。
46
46
  ## 致谢
47
47
 
48
48
  感谢所有贡献者的辛勤工作,以及`ement-Plus`团队提供的灵感和指导。
49
+
50
+ ## 版本发布
51
+ ```bash
52
+ git tag v0.0.2
53
+ git push origin --tags
54
+ git tag --sort=-creatordate
55
+ ```
@@ -5,9 +5,6 @@ export declare const elCascaderPanelEmits: {
5
5
  close: () => void;
6
6
  expandChange: (val: CascaderValue) => boolean;
7
7
  };
8
- export type MergeType<T> = {
9
- [K in keyof T]: T[K];
10
- };
11
8
  export declare const cascaderPanelProps: {
12
9
  modelValue: {
13
10
  readonly type: import("vue").PropType<import("element-plus/es/utils").EpPropMergeType<(new (...args: any[]) => string | number | import("element-plus/es/components/cascader-panel/src/node").CascaderNodePathValue | (import("element-plus/es/components/cascader-panel/src/node").CascaderNodeValue | import("element-plus/es/components/cascader-panel/src/node").CascaderNodePathValue)[]) | (() => import("element-plus/es/components/cascader-panel/src/node").CascaderValue) | ((new (...args: any[]) => string | number | import("element-plus/es/components/cascader-panel/src/node").CascaderNodePathValue | (import("element-plus/es/components/cascader-panel/src/node").CascaderNodeValue | import("element-plus/es/components/cascader-panel/src/node").CascaderNodePathValue)[]) | (() => import("element-plus/es/components/cascader-panel/src/node").CascaderValue))[], unknown, unknown>>;
@@ -1 +1 @@
1
- {"version":3,"file":"cascaderPanel.mjs","sources":["../../../../../../../packages/components/src/base/cascaderPanel/cascaderPanel.ts"],"sourcesContent":["import { CommonProps as elCascaderPanelProps } from 'element-plus';\r\nimport type { CascaderValue } from 'element-plus';\r\n// import type { ExtractPropTypes } from 'vue';\r\nexport const elCascaderPanelEmits = {\r\n 'update:modelValue': (val: CascaderValue) => !!val || val === null,\r\n change: (val: CascaderValue) => !!val || val === null,\r\n close: () => {},\r\n expandChange: (val: CascaderValue) => !!val,\r\n};\r\nexport type MergeType<T> = {\r\n [K in keyof T]: T[K];\r\n};\r\n\r\ntype ElCascaderPanelProps = MergeType<typeof elCascaderPanelProps>;\r\nexport const cascaderPanelProps = {\r\n ...(elCascaderPanelProps as ElCascaderPanelProps),\r\n};\r\n\r\nexport const cascaderPanelEmits = {\r\n ...elCascaderPanelEmits,\r\n};\r\n"],"names":["elCascaderPanelProps"],"mappings":";;AAGO,MAAM,oBAAuB,GAAA;AAAA,EAClC,qBAAqB,CAAC,GAAA,KAAuB,CAAC,CAAC,OAAO,GAAQ,KAAA,IAAA;AAAA,EAC9D,QAAQ,CAAC,GAAA,KAAuB,CAAC,CAAC,OAAO,GAAQ,KAAA,IAAA;AAAA,EACjD,OAAO,MAAM;AAAA,GAAC;AAAA,EACd,YAAc,EAAA,CAAC,GAAuB,KAAA,CAAC,CAAC,GAAA;AAC1C,EAAA;AAMO,MAAM,kBAAqB,GAAA;AAAA,EAChC,GAAIA,WAAA;AACN,EAAA;AAEO,MAAM,kBAAqB,GAAA;AAAA,EAChC,GAAG,oBAAA;AACL;;;;"}
1
+ {"version":3,"file":"cascaderPanel.mjs","sources":["../../../../../../../packages/components/src/base/cascaderPanel/cascaderPanel.ts"],"sourcesContent":["import { CommonProps as elCascaderPanelProps } from 'element-plus';\r\nimport type { MergeType } from '@giime/utils/src/types';\r\nimport type { CascaderValue } from 'element-plus';\r\n// import type { ExtractPropTypes } from 'vue';\r\nexport const elCascaderPanelEmits = {\r\n 'update:modelValue': (val: CascaderValue) => !!val || val === null,\r\n change: (val: CascaderValue) => !!val || val === null,\r\n close: () => {},\r\n expandChange: (val: CascaderValue) => !!val,\r\n};\r\n\r\ntype ElCascaderPanelProps = MergeType<typeof elCascaderPanelProps>;\r\nexport const cascaderPanelProps = {\r\n ...(elCascaderPanelProps as ElCascaderPanelProps),\r\n};\r\n\r\nexport const cascaderPanelEmits = {\r\n ...elCascaderPanelEmits,\r\n};\r\n"],"names":["elCascaderPanelProps"],"mappings":";;AAIO,MAAM,oBAAuB,GAAA;AAAA,EAClC,qBAAqB,CAAC,GAAA,KAAuB,CAAC,CAAC,OAAO,GAAQ,KAAA,IAAA;AAAA,EAC9D,QAAQ,CAAC,GAAA,KAAuB,CAAC,CAAC,OAAO,GAAQ,KAAA,IAAA;AAAA,EACjD,OAAO,MAAM;AAAA,GAAC;AAAA,EACd,YAAc,EAAA,CAAC,GAAuB,KAAA,CAAC,CAAC,GAAA;AAC1C,EAAA;AAGO,MAAM,kBAAqB,GAAA;AAAA,EAChC,GAAIA,WAAA;AACN,EAAA;AAEO,MAAM,kBAAqB,GAAA;AAAA,EAChC,GAAG,oBAAA;AACL;;;;"}
@@ -181,7 +181,7 @@ declare const _default: __VLS_WithTemplateSlots<import("vue").DefineComponent<{
181
181
  };
182
182
  total: import("vue").Ref<number>;
183
183
  currentStep: import("vue").Ref<import("element-plus/es/components/tour/src/step").TourStepProps | undefined>;
184
- current: import("vue").WritableComputedRef<number> | import("vue").Ref<number>;
184
+ current: import("vue").Ref<number> | import("vue").WritableComputedRef<number>;
185
185
  currentTarget: import("vue").ComputedRef<import("element-plus/es/utils").EpPropMergeType<(new (...args: any[]) => string | HTMLElement | (() => HTMLElement | null)) | (() => string | HTMLElement | (() => HTMLElement | null) | null) | ((new (...args: any[]) => string | HTMLElement | (() => HTMLElement | null)) | (() => string | HTMLElement | (() => HTMLElement | null) | null))[], unknown, unknown> | undefined>;
186
186
  kls: import("vue").ComputedRef<string[]>;
187
187
  mergedPlacement: import("vue").ComputedRef<import("element-plus/es/utils").EpPropMergeType<(new (...args: any[]) => "top" | "bottom" | "top-start" | "top-end" | "bottom-start" | "bottom-end" | "right" | "left" | "right-start" | "right-end" | "left-start" | "left-end") | (() => import("@floating-ui/dom").Placement) | ((new (...args: any[]) => "top" | "bottom" | "top-start" | "top-end" | "bottom-start" | "bottom-end" | "right" | "left" | "right-start" | "right-end" | "left-start" | "left-end") | (() => import("@floating-ui/dom").Placement))[], "top" | "bottom" | "top-start" | "top-end" | "bottom-start" | "bottom-end" | "right" | "left" | "right-start" | "right-end" | "left-start" | "left-end", unknown>>;
@@ -602,7 +602,7 @@ declare const _default: __VLS_WithTemplateSlots<import("vue").DefineComponent<{
602
602
  };
603
603
  total: import("vue").Ref<number>;
604
604
  currentStep: import("vue").Ref<import("element-plus/es/components/tour/src/step").TourStepProps | undefined>;
605
- current: import("vue").WritableComputedRef<number> | import("vue").Ref<number>;
605
+ current: import("vue").Ref<number> | import("vue").WritableComputedRef<number>;
606
606
  currentTarget: import("vue").ComputedRef<import("element-plus/es/utils").EpPropMergeType<(new (...args: any[]) => string | HTMLElement | (() => HTMLElement | null)) | (() => string | HTMLElement | (() => HTMLElement | null) | null) | ((new (...args: any[]) => string | HTMLElement | (() => HTMLElement | null)) | (() => string | HTMLElement | (() => HTMLElement | null) | null))[], unknown, unknown> | undefined>;
607
607
  kls: import("vue").ComputedRef<string[]>;
608
608
  mergedPlacement: import("vue").ComputedRef<import("element-plus/es/utils").EpPropMergeType<(new (...args: any[]) => "top" | "bottom" | "top-start" | "top-end" | "bottom-start" | "bottom-end" | "right" | "left" | "right-start" | "right-end" | "left-start" | "left-end") | (() => import("@floating-ui/dom").Placement) | ((new (...args: any[]) => "top" | "bottom" | "top-start" | "top-end" | "bottom-start" | "bottom-end" | "right" | "left" | "right-start" | "right-end" | "left-start" | "left-end") | (() => import("@floating-ui/dom").Placement))[], "top" | "bottom" | "top-start" | "top-end" | "bottom-start" | "bottom-end" | "right" | "left" | "right-start" | "right-end" | "left-start" | "left-end", unknown>>;
@@ -183,7 +183,7 @@ export declare const GmTour: import("../../../../utils").SFCWithInstall<{
183
183
  };
184
184
  total: import("vue").Ref<number>;
185
185
  currentStep: import("vue").Ref<import("element-plus/es/components/tour/src/step.js").TourStepProps | undefined>;
186
- current: import("vue").WritableComputedRef<number> | import("vue").Ref<number>;
186
+ current: import("vue").Ref<number> | import("vue").WritableComputedRef<number>;
187
187
  currentTarget: import("vue").ComputedRef<import("element-plus/es/utils/index.js").EpPropMergeType<(new (...args: any[]) => string | HTMLElement | (() => HTMLElement | null)) | (() => string | HTMLElement | (() => HTMLElement | null) | null) | ((new (...args: any[]) => string | HTMLElement | (() => HTMLElement | null)) | (() => string | HTMLElement | (() => HTMLElement | null) | null))[], unknown, unknown> | undefined>;
188
188
  kls: import("vue").ComputedRef<string[]>;
189
189
  mergedPlacement: import("vue").ComputedRef<import("element-plus/es/utils/index.js").EpPropMergeType<(new (...args: any[]) => "top" | "bottom" | "top-start" | "top-end" | "bottom-start" | "bottom-end" | "right" | "left" | "right-start" | "right-end" | "left-start" | "left-end") | (() => import("@floating-ui/dom").Placement) | ((new (...args: any[]) => "top" | "bottom" | "top-start" | "top-end" | "bottom-start" | "bottom-end" | "right" | "left" | "right-start" | "right-end" | "left-start" | "left-end") | (() => import("@floating-ui/dom").Placement))[], "top" | "bottom" | "top-start" | "top-end" | "bottom-start" | "bottom-end" | "right" | "left" | "right-start" | "right-end" | "left-start" | "left-end", unknown>>;
@@ -604,7 +604,7 @@ export declare const GmTour: import("../../../../utils").SFCWithInstall<{
604
604
  };
605
605
  total: import("vue").Ref<number>;
606
606
  currentStep: import("vue").Ref<import("element-plus/es/components/tour/src/step.js").TourStepProps | undefined>;
607
- current: import("vue").WritableComputedRef<number> | import("vue").Ref<number>;
607
+ current: import("vue").Ref<number> | import("vue").WritableComputedRef<number>;
608
608
  currentTarget: import("vue").ComputedRef<import("element-plus/es/utils/index.js").EpPropMergeType<(new (...args: any[]) => string | HTMLElement | (() => HTMLElement | null)) | (() => string | HTMLElement | (() => HTMLElement | null) | null) | ((new (...args: any[]) => string | HTMLElement | (() => HTMLElement | null)) | (() => string | HTMLElement | (() => HTMLElement | null) | null))[], unknown, unknown> | undefined>;
609
609
  kls: import("vue").ComputedRef<string[]>;
610
610
  mergedPlacement: import("vue").ComputedRef<import("element-plus/es/utils/index.js").EpPropMergeType<(new (...args: any[]) => "top" | "bottom" | "top-start" | "top-end" | "bottom-start" | "bottom-end" | "right" | "left" | "right-start" | "right-end" | "left-start" | "left-end") | (() => import("@floating-ui/dom").Placement) | ((new (...args: any[]) => "top" | "bottom" | "top-start" | "top-end" | "bottom-start" | "bottom-end" | "right" | "left" | "right-start" | "right-end" | "left-start" | "left-end") | (() => import("@floating-ui/dom").Placement))[], "top" | "bottom" | "top-start" | "top-end" | "bottom-start" | "bottom-end" | "right" | "left" | "right-start" | "right-end" | "left-start" | "left-end", unknown>>;
@@ -1092,7 +1092,7 @@ export declare const GmTour: import("../../../../utils").SFCWithInstall<{
1092
1092
  };
1093
1093
  total: import("vue").Ref<number>;
1094
1094
  currentStep: import("vue").Ref<import("element-plus/es/components/tour/src/step.js").TourStepProps | undefined>;
1095
- current: import("vue").WritableComputedRef<number> | import("vue").Ref<number>;
1095
+ current: import("vue").Ref<number> | import("vue").WritableComputedRef<number>;
1096
1096
  currentTarget: import("vue").ComputedRef<import("element-plus/es/utils/index.js").EpPropMergeType<(new (...args: any[]) => string | HTMLElement | (() => HTMLElement | null)) | (() => string | HTMLElement | (() => HTMLElement | null) | null) | ((new (...args: any[]) => string | HTMLElement | (() => HTMLElement | null)) | (() => string | HTMLElement | (() => HTMLElement | null) | null))[], unknown, unknown> | undefined>;
1097
1097
  kls: import("vue").ComputedRef<string[]>;
1098
1098
  mergedPlacement: import("vue").ComputedRef<import("element-plus/es/utils/index.js").EpPropMergeType<(new (...args: any[]) => "top" | "bottom" | "top-start" | "top-end" | "bottom-start" | "bottom-end" | "right" | "left" | "right-start" | "right-end" | "left-start" | "left-end") | (() => import("@floating-ui/dom").Placement) | ((new (...args: any[]) => "top" | "bottom" | "top-start" | "top-end" | "bottom-start" | "bottom-end" | "right" | "left" | "right-start" | "right-end" | "left-start" | "left-end") | (() => import("@floating-ui/dom").Placement))[], "top" | "bottom" | "top-start" | "top-end" | "bottom-start" | "bottom-end" | "right" | "left" | "right-start" | "right-end" | "left-start" | "left-end", unknown>>;
@@ -1513,7 +1513,7 @@ export declare const GmTour: import("../../../../utils").SFCWithInstall<{
1513
1513
  };
1514
1514
  total: import("vue").Ref<number>;
1515
1515
  currentStep: import("vue").Ref<import("element-plus/es/components/tour/src/step.js").TourStepProps | undefined>;
1516
- current: import("vue").WritableComputedRef<number> | import("vue").Ref<number>;
1516
+ current: import("vue").Ref<number> | import("vue").WritableComputedRef<number>;
1517
1517
  currentTarget: import("vue").ComputedRef<import("element-plus/es/utils/index.js").EpPropMergeType<(new (...args: any[]) => string | HTMLElement | (() => HTMLElement | null)) | (() => string | HTMLElement | (() => HTMLElement | null) | null) | ((new (...args: any[]) => string | HTMLElement | (() => HTMLElement | null)) | (() => string | HTMLElement | (() => HTMLElement | null) | null))[], unknown, unknown> | undefined>;
1518
1518
  kls: import("vue").ComputedRef<string[]>;
1519
1519
  mergedPlacement: import("vue").ComputedRef<import("element-plus/es/utils/index.js").EpPropMergeType<(new (...args: any[]) => "top" | "bottom" | "top-start" | "top-end" | "bottom-start" | "bottom-end" | "right" | "left" | "right-start" | "right-end" | "left-start" | "left-end") | (() => import("@floating-ui/dom").Placement) | ((new (...args: any[]) => "top" | "bottom" | "top-start" | "top-end" | "bottom-start" | "bottom-end" | "right" | "left" | "right-start" | "right-end" | "left-start" | "left-end") | (() => import("@floating-ui/dom").Placement))[], "top" | "bottom" | "top-start" | "top-end" | "bottom-start" | "bottom-end" | "right" | "left" | "right-start" | "right-end" | "left-start" | "left-end", unknown>>;
@@ -1939,7 +1939,7 @@ export declare const GmTour: import("../../../../utils").SFCWithInstall<{
1939
1939
  };
1940
1940
  total: import("vue").Ref<number>;
1941
1941
  currentStep: import("vue").Ref<import("element-plus/es/components/tour/src/step.js").TourStepProps | undefined>;
1942
- current: import("vue").WritableComputedRef<number> | import("vue").Ref<number>;
1942
+ current: import("vue").Ref<number> | import("vue").WritableComputedRef<number>;
1943
1943
  currentTarget: import("vue").ComputedRef<import("element-plus/es/utils/index.js").EpPropMergeType<(new (...args: any[]) => string | HTMLElement | (() => HTMLElement | null)) | (() => string | HTMLElement | (() => HTMLElement | null) | null) | ((new (...args: any[]) => string | HTMLElement | (() => HTMLElement | null)) | (() => string | HTMLElement | (() => HTMLElement | null) | null))[], unknown, unknown> | undefined>;
1944
1944
  kls: import("vue").ComputedRef<string[]>;
1945
1945
  mergedPlacement: import("vue").ComputedRef<import("element-plus/es/utils/index.js").EpPropMergeType<(new (...args: any[]) => "top" | "bottom" | "top-start" | "top-end" | "bottom-start" | "bottom-end" | "right" | "left" | "right-start" | "right-end" | "left-start" | "left-end") | (() => import("@floating-ui/dom").Placement) | ((new (...args: any[]) => "top" | "bottom" | "top-start" | "top-end" | "bottom-start" | "bottom-end" | "right" | "left" | "right-start" | "right-end" | "left-start" | "left-end") | (() => import("@floating-ui/dom").Placement))[], "top" | "bottom" | "top-start" | "top-end" | "bottom-start" | "bottom-end" | "right" | "left" | "right-start" | "right-end" | "left-start" | "left-end", unknown>>;
@@ -2360,7 +2360,7 @@ export declare const GmTour: import("../../../../utils").SFCWithInstall<{
2360
2360
  };
2361
2361
  total: import("vue").Ref<number>;
2362
2362
  currentStep: import("vue").Ref<import("element-plus/es/components/tour/src/step.js").TourStepProps | undefined>;
2363
- current: import("vue").WritableComputedRef<number> | import("vue").Ref<number>;
2363
+ current: import("vue").Ref<number> | import("vue").WritableComputedRef<number>;
2364
2364
  currentTarget: import("vue").ComputedRef<import("element-plus/es/utils/index.js").EpPropMergeType<(new (...args: any[]) => string | HTMLElement | (() => HTMLElement | null)) | (() => string | HTMLElement | (() => HTMLElement | null) | null) | ((new (...args: any[]) => string | HTMLElement | (() => HTMLElement | null)) | (() => string | HTMLElement | (() => HTMLElement | null) | null))[], unknown, unknown> | undefined>;
2365
2365
  kls: import("vue").ComputedRef<string[]>;
2366
2366
  mergedPlacement: import("vue").ComputedRef<import("element-plus/es/utils/index.js").EpPropMergeType<(new (...args: any[]) => "top" | "bottom" | "top-start" | "top-end" | "bottom-start" | "bottom-end" | "right" | "left" | "right-start" | "right-end" | "left-start" | "left-end") | (() => import("@floating-ui/dom").Placement) | ((new (...args: any[]) => "top" | "bottom" | "top-start" | "top-end" | "bottom-start" | "bottom-end" | "right" | "left" | "right-start" | "right-end" | "left-start" | "left-end") | (() => import("@floating-ui/dom").Placement))[], "top" | "bottom" | "top-start" | "top-end" | "bottom-start" | "bottom-end" | "right" | "left" | "right-start" | "right-end" | "left-start" | "left-end", unknown>>;
@@ -257,6 +257,7 @@ export { GmNotification } from '../components/src/plugins/notification/index.mjs
257
257
  export { GmCopy } from '../components/src/plugins/copy/index.mjs';
258
258
  export { useCheckAll } from '../hooks/base/useCheckAll/index.mjs';
259
259
  export { useIDBKeyval } from '../hooks/base/useIDBKeyval/index.mjs';
260
+ export { useDownload } from '../hooks/base/useDownload/index.mjs';
260
261
  export { useLangListStore } from '../hooks/store/useLangList/index.mjs';
261
262
  export { useLoginStore } from '../hooks/store/useLogin/index.mjs';
262
263
  export { useCustomSettingsStore } from '../hooks/store/useCustomSettings/index.mjs';
@@ -1 +1 @@
1
- {"version":3,"file":"index.mjs","sources":["../../../../packages/giime/index.ts"],"sourcesContent":["import installer from './defaults';\r\nimport './tailwind.css';\r\nexport * from '@giime/utils';\r\nexport * from '@giime/components';\r\nexport * from '@giime/hooks';\r\n// export * from '@giime/api'; // 用户通过giime/es/api 导入类型\r\nexport const install = installer.install;\r\nexport const version = installer.version;\r\nexport default installer;\r\n"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAMO,MAAM,UAAU,SAAU,CAAA,QAAA;AAC1B,MAAM,UAAU,SAAU,CAAA;;;;"}
1
+ {"version":3,"file":"index.mjs","sources":["../../../../packages/giime/index.ts"],"sourcesContent":["import installer from './defaults';\r\nimport './tailwind.css';\r\nexport * from '@giime/utils';\r\nexport * from '@giime/components';\r\nexport * from '@giime/hooks';\r\n// export * from '@giime/api'; // 用户通过giime/es/api 导入类型\r\nexport const install = installer.install;\r\nexport const version = installer.version;\r\nexport default installer;\r\n"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAMO,MAAM,UAAU,SAAU,CAAA,QAAA;AAC1B,MAAM,UAAU,SAAU,CAAA;;;;"}
@@ -1 +1 @@
1
- export declare const version = "0.0.19";
1
+ export declare const version = "0.0.20";
@@ -1,4 +1,4 @@
1
- const version = "0.0.18";
1
+ const version = "0.0.20";
2
2
 
3
3
  export { version };
4
4
  //# sourceMappingURL=version.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"version.mjs","sources":["../../../../packages/giime/version.ts"],"sourcesContent":["export const version = '0.0.18';\n"],"names":[],"mappings":"AAAO,MAAM,OAAU,GAAA;;;;"}
1
+ {"version":3,"file":"version.mjs","sources":["../../../../packages/giime/version.ts"],"sourcesContent":["export const version = '0.0.20';\n"],"names":[],"mappings":"AAAO,MAAM,OAAU,GAAA;;;;"}
@@ -1,2 +1,3 @@
1
1
  export * from './useCheckAll';
2
2
  export * from './useIDBKeyval';
3
+ export * from './useDownload';
@@ -1,3 +1,4 @@
1
1
  export { useCheckAll } from './useCheckAll/index.mjs';
2
2
  export { useIDBKeyval } from './useIDBKeyval/index.mjs';
3
+ export { useDownload } from './useDownload/index.mjs';
3
4
  //# sourceMappingURL=index.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.mjs","sources":[],"sourcesContent":[],"names":[],"mappings":";"}
1
+ {"version":3,"file":"index.mjs","sources":[],"sourcesContent":[],"names":[],"mappings":";;"}
@@ -0,0 +1,9 @@
1
+ export interface OptionsType {
2
+ url: string;
3
+ fileName: string;
4
+ fileType?: string;
5
+ }
6
+ export declare const useDownload: () => {
7
+ downloadFile: (options: OptionsType) => Promise<void>;
8
+ downloadZip: (fileList: OptionsType[], fileName: string) => Promise<void>;
9
+ };
@@ -0,0 +1,143 @@
1
+ import { ref, onBeforeUnmount, h } from 'vue';
2
+ import { GmNotification } from '../../../components/src/plugins/notification/index.mjs';
3
+ import JSZip from 'jszip';
4
+
5
+ const useDownload = () => {
6
+ let xhrInstance;
7
+ let downloading = false;
8
+ const progress = ref(0);
9
+ const currentClass = `class${Date.now()}`;
10
+ onBeforeUnmount(() => {
11
+ if (xhrInstance) {
12
+ xhrInstance.abort();
13
+ xhrInstance = null;
14
+ }
15
+ });
16
+ const downloadBlob = (url, fileName, fileType, isZip) => {
17
+ return new Promise((resolve, reject) => {
18
+ xhrInstance = new XMLHttpRequest();
19
+ xhrInstance.responseType = "blob";
20
+ xhrInstance.open("get", url, true);
21
+ xhrInstance.onprogress = (e) => {
22
+ progress.value = Math.floor(e.loaded / e.total * 100);
23
+ editElementContent(currentClass, `\u5F53\u524D\u4E0B\u8F7D\u8FDB\u5EA6 ${progress.value}%`);
24
+ if (progress.value == 100) {
25
+ progress.value = 0;
26
+ downloading = false;
27
+ }
28
+ };
29
+ xhrInstance.onloadend = (e) => {
30
+ const eventTarget = e.target;
31
+ if ([200, 304].includes(eventTarget.status)) {
32
+ const blob = eventTarget.response;
33
+ if (!isZip) {
34
+ createDownload(blob, fileName, fileType);
35
+ GmNotification({
36
+ type: "success",
37
+ title: "\u6E29\u99A8\u63D0\u793A",
38
+ message: "\u4E0B\u8F7D\u5B8C\u6210",
39
+ duration: 3e3
40
+ });
41
+ }
42
+ xhrInstance = null;
43
+ resolve(blob);
44
+ }
45
+ };
46
+ xhrInstance.onerror = function(e) {
47
+ downloading = false;
48
+ GmNotification({
49
+ type: "error",
50
+ title: "\u6E29\u99A8\u63D0\u793A",
51
+ message: "\u4E0B\u8F7D\u5F02\u5E38\uFF0C\u8BF7\u91CD\u8BD5",
52
+ duration: 1500
53
+ });
54
+ reject(e);
55
+ };
56
+ xhrInstance.send();
57
+ });
58
+ };
59
+ const downloadFile = async (options) => {
60
+ try {
61
+ if (downloading || !options.url || !options.fileName)
62
+ return;
63
+ downloading = true;
64
+ const fileType = options.fileType || options.url.split(".").pop();
65
+ const modalInfo = GmNotification({
66
+ title: "\u4E0B\u8F7D\u4E2D",
67
+ message: h("div", { className: currentClass }, [`\u5F53\u524D\u4E0B\u8F7D\u8FDB\u5EA6 ${progress.value}%`]),
68
+ duration: 0
69
+ });
70
+ await downloadBlob(options.url, options.fileName, fileType, false);
71
+ modalInfo.close();
72
+ } catch (error) {
73
+ console.error(error);
74
+ }
75
+ };
76
+ const downloadZip = async (fileList, fileName) => {
77
+ try {
78
+ const currentContentClass = `message${Date.now()}`;
79
+ const downloadCount = ref(0);
80
+ const currentDownloadFileName = ref();
81
+ const len = fileList.length;
82
+ const modalInfo = GmNotification({
83
+ title: "\u4E0B\u8F7D\u4E2D",
84
+ message: h("div", [
85
+ h("div", { className: currentContentClass }, [`\u603B\u4E0B\u8F7D\u6587\u4EF6\u6570\uFF1A${len}\uFF0C\u5DF2\u4E0B\u8F7D\u6587\u4EF6\u6570\uFF1A${downloadCount.value}`]),
86
+ h("div", { className: currentClass }, [`\u5F53\u524D\u4E0B\u8F7D\u8FDB\u5EA6 ${progress.value}%`])
87
+ ]),
88
+ duration: 0
89
+ });
90
+ const zipInstance = new JSZip();
91
+ for (let i = 0; i < len; i++) {
92
+ const currentItem = fileList[i];
93
+ const currentFileType = currentItem.fileType || currentItem.url.split(".").pop();
94
+ currentDownloadFileName.value = currentItem.fileName;
95
+ const fileBlob = await downloadBlob(currentItem.url, currentItem.fileName, currentFileType, true);
96
+ zipInstance.file(`${currentItem.fileName}.${currentFileType}`, fileBlob);
97
+ downloadCount.value++;
98
+ editElementContent(currentContentClass, `\u603B\u4E0B\u8F7D\u6587\u4EF6\u6570\uFF1A${len}\uFF0C\u5DF2\u4E0B\u8F7D\u6587\u4EF6\u6570\uFF1A${downloadCount.value}`);
99
+ }
100
+ downloading = false;
101
+ modalInfo.close();
102
+ GmNotification({
103
+ type: "success",
104
+ title: "\u6E29\u99A8\u63D0\u793A",
105
+ message: "\u4E0B\u8F7D\u5B8C\u6210",
106
+ duration: 3e3
107
+ });
108
+ zipInstance.generateAsync({ type: "blob" }).then((res) => {
109
+ createDownload(res, fileName, "zip");
110
+ }).catch((error) => {
111
+ console.error(error);
112
+ });
113
+ } catch (error) {
114
+ console.error(error);
115
+ }
116
+ };
117
+ return {
118
+ downloadFile,
119
+ downloadZip
120
+ };
121
+ };
122
+ const createDownload = (blob, fileName, fileType) => {
123
+ if (!blob || !fileName || !fileType)
124
+ return;
125
+ const ele = document.createElement("a");
126
+ const url = window.URL.createObjectURL(blob);
127
+ ele.style.display = "none";
128
+ ele.href = url;
129
+ ele.download = `${fileName}.${fileType}`;
130
+ document.body.appendChild(ele);
131
+ ele.click();
132
+ window.URL.revokeObjectURL(url);
133
+ document.body.removeChild(ele);
134
+ };
135
+ const editElementContent = (className, content) => {
136
+ const currentEle = document.getElementsByClassName(className)[0];
137
+ if (currentEle) {
138
+ currentEle.innerHTML = content;
139
+ }
140
+ };
141
+
142
+ export { useDownload };
143
+ //# sourceMappingURL=index.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.mjs","sources":["../../../../../../packages/hooks/base/useDownload/index.ts"],"sourcesContent":["import { h, onBeforeUnmount, ref } from 'vue';\r\nimport GmNotification from '@giime/components/src/plugins/notification';\r\nimport JSZip from 'jszip';\r\n\r\n// 参数类型\r\nexport interface OptionsType {\r\n url: string;\r\n fileName: string;\r\n fileType?: string;\r\n}\r\n\r\nexport const useDownload = () => {\r\n let xhrInstance: XMLHttpRequest | null;\r\n // 是否正在下载\r\n let downloading = false;\r\n // 单文件下载进度\r\n const progress = ref(0);\r\n // 动态生成唯一的 class\r\n const currentClass = `class${Date.now()}`;\r\n onBeforeUnmount(() => {\r\n if (xhrInstance) {\r\n xhrInstance.abort();\r\n xhrInstance = null;\r\n }\r\n });\r\n // 将 url 下载为 blob 文件\r\n const downloadBlob = (url: string, fileName: string, fileType: string, isZip: boolean) => {\r\n return new Promise<Blob>((resolve, reject) => {\r\n xhrInstance = new XMLHttpRequest();\r\n xhrInstance.responseType = 'blob';\r\n xhrInstance.open('get', url, true);\r\n xhrInstance.onprogress = e => {\r\n progress.value = Math.floor((e.loaded / e.total) * 100);\r\n editElementContent(currentClass, `当前下载进度 ${progress.value}%`);\r\n if (progress.value == 100) {\r\n progress.value = 0;\r\n downloading = false;\r\n }\r\n };\r\n xhrInstance.onloadend = e => {\r\n const eventTarget = e.target as XMLHttpRequest;\r\n if ([200, 304].includes(eventTarget.status)) {\r\n const blob = eventTarget.response;\r\n if (!isZip) {\r\n createDownload(blob, fileName, fileType);\r\n GmNotification({\r\n type: 'success',\r\n title: '温馨提示',\r\n message: '下载完成',\r\n duration: 3000,\r\n });\r\n }\r\n xhrInstance = null;\r\n resolve(blob);\r\n }\r\n };\r\n xhrInstance.onerror = function (e) {\r\n downloading = false;\r\n GmNotification({\r\n type: 'error',\r\n title: '温馨提示',\r\n message: '下载异常,请重试',\r\n duration: 1500,\r\n });\r\n reject(e);\r\n };\r\n xhrInstance.send();\r\n });\r\n };\r\n // 下载单文件\r\n const downloadFile = async (options: OptionsType) => {\r\n try {\r\n if (downloading || !options.url || !options.fileName) return;\r\n downloading = true;\r\n const fileType = options.fileType || options.url.split('.').pop()!;\r\n const modalInfo = GmNotification({\r\n title: '下载中',\r\n message: h('div', { className: currentClass }, [`当前下载进度 ${progress.value}%`]),\r\n duration: 0,\r\n });\r\n await downloadBlob(options.url, options.fileName, fileType, false);\r\n modalInfo.close();\r\n } catch (error) {\r\n console.error(error);\r\n }\r\n };\r\n // 下载多文件 转为zip\r\n const downloadZip = async (fileList: OptionsType[], fileName: string) => {\r\n try {\r\n const currentContentClass = `message${Date.now()}`;\r\n const downloadCount = ref(0);\r\n const currentDownloadFileName = ref<string>();\r\n const len = fileList.length;\r\n const modalInfo = GmNotification({\r\n title: '下载中',\r\n message: h('div', [\r\n h('div', { className: currentContentClass }, [`总下载文件数:${len},已下载文件数:${downloadCount.value}`]),\r\n h('div', { className: currentClass }, [`当前下载进度 ${progress.value}%`]),\r\n ]),\r\n duration: 0,\r\n });\r\n const zipInstance = new JSZip();\r\n for (let i = 0; i < len; i++) {\r\n const currentItem = fileList[i];\r\n const currentFileType = currentItem.fileType || currentItem.url.split('.').pop()!;\r\n currentDownloadFileName.value = currentItem.fileName;\r\n const fileBlob = await downloadBlob(currentItem.url, currentItem.fileName, currentFileType, true);\r\n zipInstance.file(`${currentItem.fileName}.${currentFileType}`, fileBlob);\r\n downloadCount.value++;\r\n editElementContent(currentContentClass, `总下载文件数:${len},已下载文件数:${downloadCount.value}`);\r\n }\r\n downloading = false;\r\n modalInfo.close();\r\n GmNotification({\r\n type: 'success',\r\n title: '温馨提示',\r\n message: '下载完成',\r\n duration: 3000,\r\n });\r\n zipInstance\r\n .generateAsync({ type: 'blob' })\r\n .then(res => {\r\n createDownload(res, fileName, 'zip');\r\n })\r\n .catch(error => {\r\n console.error(error);\r\n });\r\n } catch (error) {\r\n console.error(error);\r\n }\r\n };\r\n\r\n return {\r\n downloadFile,\r\n downloadZip,\r\n };\r\n};\r\n// 创建下载链接 并下载\r\nconst createDownload = (blob: Blob, fileName: string, fileType: string) => {\r\n if (!blob || !fileName || !fileType) return;\r\n const ele = document.createElement('a');\r\n const url = window.URL.createObjectURL(blob);\r\n ele.style.display = 'none';\r\n ele.href = url;\r\n ele.download = `${fileName}.${fileType}`;\r\n document.body.appendChild(ele);\r\n ele.click();\r\n window.URL.revokeObjectURL(url);\r\n document.body.removeChild(ele);\r\n};\r\n\r\n// 动态更新 notify 中的message 信息\r\nconst editElementContent = (className: string, content: string) => {\r\n // eslint-disable-next-line unicorn/prefer-query-selector\r\n const currentEle = document.getElementsByClassName(className)[0];\r\n if (currentEle) {\r\n currentEle.innerHTML = content;\r\n }\r\n};\r\n"],"names":[],"mappings":"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"}
@@ -2,6 +2,7 @@ import './base/index.mjs';
2
2
  import './store/index.mjs';
3
3
  export { useCheckAll } from './base/useCheckAll/index.mjs';
4
4
  export { useIDBKeyval } from './base/useIDBKeyval/index.mjs';
5
+ export { useDownload } from './base/useDownload/index.mjs';
5
6
  export { useLangListStore } from './store/useLangList/index.mjs';
6
7
  export { useLoginStore } from './store/useLogin/index.mjs';
7
8
  export { useCustomSettingsStore } from './store/useCustomSettings/index.mjs';
@@ -1 +1 @@
1
- {"version":3,"file":"index.mjs","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"index.mjs","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;"}
@@ -16,3 +16,17 @@ export type DeepRequired<T> = T extends Primitive ? T : keyof T extends never ?
16
16
  export type DeepWritable<T> = T extends Primitive ? T : keyof T extends never ? T : {
17
17
  -readonly [K in keyof T]: DeepWritable<T[K]>;
18
18
  };
19
+ /**
20
+ * 把一堆类型 如:Partial<Pick<User, "name">> & Omit<User, "name"> 合并成简单的 {name?:string;age:number}
21
+ */
22
+ export type MergeType<T> = {
23
+ [K in keyof T]: T[K];
24
+ };
25
+ /**
26
+ * https://github.com/type-challenges/type-challenges/blob/master/questions/02757-medium-partialbykeys/README.md
27
+ */
28
+ export type PartialByKeys<T, K = keyof T, P extends keyof T = Extract<keyof T, K>> = MergeType<Partial<Pick<T, P>> & Omit<T, P>>;
29
+ /**
30
+ * https://github.com/type-challenges/type-challenges/blob/master/questions/02759-medium-requiredbykeys/README.md
31
+ */
32
+ export type RequiredByKeys<T, K = keyof T, P extends keyof T = Extract<keyof T, K>> = MergeType<Required<Pick<T, P>> & Omit<T, P>>;
@@ -5,9 +5,6 @@ export declare const elCascaderPanelEmits: {
5
5
  close: () => void;
6
6
  expandChange: (val: CascaderValue) => boolean;
7
7
  };
8
- export type MergeType<T> = {
9
- [K in keyof T]: T[K];
10
- };
11
8
  export declare const cascaderPanelProps: {
12
9
  modelValue: {
13
10
  readonly type: import("vue").PropType<import("element-plus/es/utils").EpPropMergeType<(new (...args: any[]) => string | number | import("element-plus/es/components/cascader-panel/src/node").CascaderNodePathValue | (import("element-plus/es/components/cascader-panel/src/node").CascaderNodeValue | import("element-plus/es/components/cascader-panel/src/node").CascaderNodePathValue)[]) | (() => import("element-plus/es/components/cascader-panel/src/node").CascaderValue) | ((new (...args: any[]) => string | number | import("element-plus/es/components/cascader-panel/src/node").CascaderNodePathValue | (import("element-plus/es/components/cascader-panel/src/node").CascaderNodeValue | import("element-plus/es/components/cascader-panel/src/node").CascaderNodePathValue)[]) | (() => import("element-plus/es/components/cascader-panel/src/node").CascaderValue))[], unknown, unknown>>;
@@ -1 +1 @@
1
- {"version":3,"file":"cascaderPanel.js","sources":["../../../../../../../packages/components/src/base/cascaderPanel/cascaderPanel.ts"],"sourcesContent":["import { CommonProps as elCascaderPanelProps } from 'element-plus';\r\nimport type { CascaderValue } from 'element-plus';\r\n// import type { ExtractPropTypes } from 'vue';\r\nexport const elCascaderPanelEmits = {\r\n 'update:modelValue': (val: CascaderValue) => !!val || val === null,\r\n change: (val: CascaderValue) => !!val || val === null,\r\n close: () => {},\r\n expandChange: (val: CascaderValue) => !!val,\r\n};\r\nexport type MergeType<T> = {\r\n [K in keyof T]: T[K];\r\n};\r\n\r\ntype ElCascaderPanelProps = MergeType<typeof elCascaderPanelProps>;\r\nexport const cascaderPanelProps = {\r\n ...(elCascaderPanelProps as ElCascaderPanelProps),\r\n};\r\n\r\nexport const cascaderPanelEmits = {\r\n ...elCascaderPanelEmits,\r\n};\r\n"],"names":["elCascaderPanelProps"],"mappings":";;;;AAGO,MAAM,oBAAuB,GAAA;AAAA,EAClC,qBAAqB,CAAC,GAAA,KAAuB,CAAC,CAAC,OAAO,GAAQ,KAAA,IAAA;AAAA,EAC9D,QAAQ,CAAC,GAAA,KAAuB,CAAC,CAAC,OAAO,GAAQ,KAAA,IAAA;AAAA,EACjD,OAAO,MAAM;AAAA,GAAC;AAAA,EACd,YAAc,EAAA,CAAC,GAAuB,KAAA,CAAC,CAAC,GAAA;AAC1C,EAAA;AAMO,MAAM,kBAAqB,GAAA;AAAA,EAChC,GAAIA,uBAAA;AACN,EAAA;AAEO,MAAM,kBAAqB,GAAA;AAAA,EAChC,GAAG,oBAAA;AACL;;;;;;"}
1
+ {"version":3,"file":"cascaderPanel.js","sources":["../../../../../../../packages/components/src/base/cascaderPanel/cascaderPanel.ts"],"sourcesContent":["import { CommonProps as elCascaderPanelProps } from 'element-plus';\r\nimport type { MergeType } from '@giime/utils/src/types';\r\nimport type { CascaderValue } from 'element-plus';\r\n// import type { ExtractPropTypes } from 'vue';\r\nexport const elCascaderPanelEmits = {\r\n 'update:modelValue': (val: CascaderValue) => !!val || val === null,\r\n change: (val: CascaderValue) => !!val || val === null,\r\n close: () => {},\r\n expandChange: (val: CascaderValue) => !!val,\r\n};\r\n\r\ntype ElCascaderPanelProps = MergeType<typeof elCascaderPanelProps>;\r\nexport const cascaderPanelProps = {\r\n ...(elCascaderPanelProps as ElCascaderPanelProps),\r\n};\r\n\r\nexport const cascaderPanelEmits = {\r\n ...elCascaderPanelEmits,\r\n};\r\n"],"names":["elCascaderPanelProps"],"mappings":";;;;AAIO,MAAM,oBAAuB,GAAA;AAAA,EAClC,qBAAqB,CAAC,GAAA,KAAuB,CAAC,CAAC,OAAO,GAAQ,KAAA,IAAA;AAAA,EAC9D,QAAQ,CAAC,GAAA,KAAuB,CAAC,CAAC,OAAO,GAAQ,KAAA,IAAA;AAAA,EACjD,OAAO,MAAM;AAAA,GAAC;AAAA,EACd,YAAc,EAAA,CAAC,GAAuB,KAAA,CAAC,CAAC,GAAA;AAC1C,EAAA;AAGO,MAAM,kBAAqB,GAAA;AAAA,EAChC,GAAIA,uBAAA;AACN,EAAA;AAEO,MAAM,kBAAqB,GAAA;AAAA,EAChC,GAAG,oBAAA;AACL;;;;;;"}
@@ -181,7 +181,7 @@ declare const _default: __VLS_WithTemplateSlots<import("vue").DefineComponent<{
181
181
  };
182
182
  total: import("vue").Ref<number>;
183
183
  currentStep: import("vue").Ref<import("element-plus/es/components/tour/src/step").TourStepProps | undefined>;
184
- current: import("vue").WritableComputedRef<number> | import("vue").Ref<number>;
184
+ current: import("vue").Ref<number> | import("vue").WritableComputedRef<number>;
185
185
  currentTarget: import("vue").ComputedRef<import("element-plus/es/utils").EpPropMergeType<(new (...args: any[]) => string | HTMLElement | (() => HTMLElement | null)) | (() => string | HTMLElement | (() => HTMLElement | null) | null) | ((new (...args: any[]) => string | HTMLElement | (() => HTMLElement | null)) | (() => string | HTMLElement | (() => HTMLElement | null) | null))[], unknown, unknown> | undefined>;
186
186
  kls: import("vue").ComputedRef<string[]>;
187
187
  mergedPlacement: import("vue").ComputedRef<import("element-plus/es/utils").EpPropMergeType<(new (...args: any[]) => "top" | "bottom" | "top-start" | "top-end" | "bottom-start" | "bottom-end" | "right" | "left" | "right-start" | "right-end" | "left-start" | "left-end") | (() => import("@floating-ui/dom").Placement) | ((new (...args: any[]) => "top" | "bottom" | "top-start" | "top-end" | "bottom-start" | "bottom-end" | "right" | "left" | "right-start" | "right-end" | "left-start" | "left-end") | (() => import("@floating-ui/dom").Placement))[], "top" | "bottom" | "top-start" | "top-end" | "bottom-start" | "bottom-end" | "right" | "left" | "right-start" | "right-end" | "left-start" | "left-end", unknown>>;
@@ -602,7 +602,7 @@ declare const _default: __VLS_WithTemplateSlots<import("vue").DefineComponent<{
602
602
  };
603
603
  total: import("vue").Ref<number>;
604
604
  currentStep: import("vue").Ref<import("element-plus/es/components/tour/src/step").TourStepProps | undefined>;
605
- current: import("vue").WritableComputedRef<number> | import("vue").Ref<number>;
605
+ current: import("vue").Ref<number> | import("vue").WritableComputedRef<number>;
606
606
  currentTarget: import("vue").ComputedRef<import("element-plus/es/utils").EpPropMergeType<(new (...args: any[]) => string | HTMLElement | (() => HTMLElement | null)) | (() => string | HTMLElement | (() => HTMLElement | null) | null) | ((new (...args: any[]) => string | HTMLElement | (() => HTMLElement | null)) | (() => string | HTMLElement | (() => HTMLElement | null) | null))[], unknown, unknown> | undefined>;
607
607
  kls: import("vue").ComputedRef<string[]>;
608
608
  mergedPlacement: import("vue").ComputedRef<import("element-plus/es/utils").EpPropMergeType<(new (...args: any[]) => "top" | "bottom" | "top-start" | "top-end" | "bottom-start" | "bottom-end" | "right" | "left" | "right-start" | "right-end" | "left-start" | "left-end") | (() => import("@floating-ui/dom").Placement) | ((new (...args: any[]) => "top" | "bottom" | "top-start" | "top-end" | "bottom-start" | "bottom-end" | "right" | "left" | "right-start" | "right-end" | "left-start" | "left-end") | (() => import("@floating-ui/dom").Placement))[], "top" | "bottom" | "top-start" | "top-end" | "bottom-start" | "bottom-end" | "right" | "left" | "right-start" | "right-end" | "left-start" | "left-end", unknown>>;
@@ -183,7 +183,7 @@ export declare const GmTour: import("../../../../utils").SFCWithInstall<{
183
183
  };
184
184
  total: import("vue").Ref<number>;
185
185
  currentStep: import("vue").Ref<import("element-plus/es/components/tour/src/step.js").TourStepProps | undefined>;
186
- current: import("vue").WritableComputedRef<number> | import("vue").Ref<number>;
186
+ current: import("vue").Ref<number> | import("vue").WritableComputedRef<number>;
187
187
  currentTarget: import("vue").ComputedRef<import("element-plus/es/utils/index.js").EpPropMergeType<(new (...args: any[]) => string | HTMLElement | (() => HTMLElement | null)) | (() => string | HTMLElement | (() => HTMLElement | null) | null) | ((new (...args: any[]) => string | HTMLElement | (() => HTMLElement | null)) | (() => string | HTMLElement | (() => HTMLElement | null) | null))[], unknown, unknown> | undefined>;
188
188
  kls: import("vue").ComputedRef<string[]>;
189
189
  mergedPlacement: import("vue").ComputedRef<import("element-plus/es/utils/index.js").EpPropMergeType<(new (...args: any[]) => "top" | "bottom" | "top-start" | "top-end" | "bottom-start" | "bottom-end" | "right" | "left" | "right-start" | "right-end" | "left-start" | "left-end") | (() => import("@floating-ui/dom").Placement) | ((new (...args: any[]) => "top" | "bottom" | "top-start" | "top-end" | "bottom-start" | "bottom-end" | "right" | "left" | "right-start" | "right-end" | "left-start" | "left-end") | (() => import("@floating-ui/dom").Placement))[], "top" | "bottom" | "top-start" | "top-end" | "bottom-start" | "bottom-end" | "right" | "left" | "right-start" | "right-end" | "left-start" | "left-end", unknown>>;
@@ -604,7 +604,7 @@ export declare const GmTour: import("../../../../utils").SFCWithInstall<{
604
604
  };
605
605
  total: import("vue").Ref<number>;
606
606
  currentStep: import("vue").Ref<import("element-plus/es/components/tour/src/step.js").TourStepProps | undefined>;
607
- current: import("vue").WritableComputedRef<number> | import("vue").Ref<number>;
607
+ current: import("vue").Ref<number> | import("vue").WritableComputedRef<number>;
608
608
  currentTarget: import("vue").ComputedRef<import("element-plus/es/utils/index.js").EpPropMergeType<(new (...args: any[]) => string | HTMLElement | (() => HTMLElement | null)) | (() => string | HTMLElement | (() => HTMLElement | null) | null) | ((new (...args: any[]) => string | HTMLElement | (() => HTMLElement | null)) | (() => string | HTMLElement | (() => HTMLElement | null) | null))[], unknown, unknown> | undefined>;
609
609
  kls: import("vue").ComputedRef<string[]>;
610
610
  mergedPlacement: import("vue").ComputedRef<import("element-plus/es/utils/index.js").EpPropMergeType<(new (...args: any[]) => "top" | "bottom" | "top-start" | "top-end" | "bottom-start" | "bottom-end" | "right" | "left" | "right-start" | "right-end" | "left-start" | "left-end") | (() => import("@floating-ui/dom").Placement) | ((new (...args: any[]) => "top" | "bottom" | "top-start" | "top-end" | "bottom-start" | "bottom-end" | "right" | "left" | "right-start" | "right-end" | "left-start" | "left-end") | (() => import("@floating-ui/dom").Placement))[], "top" | "bottom" | "top-start" | "top-end" | "bottom-start" | "bottom-end" | "right" | "left" | "right-start" | "right-end" | "left-start" | "left-end", unknown>>;
@@ -1092,7 +1092,7 @@ export declare const GmTour: import("../../../../utils").SFCWithInstall<{
1092
1092
  };
1093
1093
  total: import("vue").Ref<number>;
1094
1094
  currentStep: import("vue").Ref<import("element-plus/es/components/tour/src/step.js").TourStepProps | undefined>;
1095
- current: import("vue").WritableComputedRef<number> | import("vue").Ref<number>;
1095
+ current: import("vue").Ref<number> | import("vue").WritableComputedRef<number>;
1096
1096
  currentTarget: import("vue").ComputedRef<import("element-plus/es/utils/index.js").EpPropMergeType<(new (...args: any[]) => string | HTMLElement | (() => HTMLElement | null)) | (() => string | HTMLElement | (() => HTMLElement | null) | null) | ((new (...args: any[]) => string | HTMLElement | (() => HTMLElement | null)) | (() => string | HTMLElement | (() => HTMLElement | null) | null))[], unknown, unknown> | undefined>;
1097
1097
  kls: import("vue").ComputedRef<string[]>;
1098
1098
  mergedPlacement: import("vue").ComputedRef<import("element-plus/es/utils/index.js").EpPropMergeType<(new (...args: any[]) => "top" | "bottom" | "top-start" | "top-end" | "bottom-start" | "bottom-end" | "right" | "left" | "right-start" | "right-end" | "left-start" | "left-end") | (() => import("@floating-ui/dom").Placement) | ((new (...args: any[]) => "top" | "bottom" | "top-start" | "top-end" | "bottom-start" | "bottom-end" | "right" | "left" | "right-start" | "right-end" | "left-start" | "left-end") | (() => import("@floating-ui/dom").Placement))[], "top" | "bottom" | "top-start" | "top-end" | "bottom-start" | "bottom-end" | "right" | "left" | "right-start" | "right-end" | "left-start" | "left-end", unknown>>;
@@ -1513,7 +1513,7 @@ export declare const GmTour: import("../../../../utils").SFCWithInstall<{
1513
1513
  };
1514
1514
  total: import("vue").Ref<number>;
1515
1515
  currentStep: import("vue").Ref<import("element-plus/es/components/tour/src/step.js").TourStepProps | undefined>;
1516
- current: import("vue").WritableComputedRef<number> | import("vue").Ref<number>;
1516
+ current: import("vue").Ref<number> | import("vue").WritableComputedRef<number>;
1517
1517
  currentTarget: import("vue").ComputedRef<import("element-plus/es/utils/index.js").EpPropMergeType<(new (...args: any[]) => string | HTMLElement | (() => HTMLElement | null)) | (() => string | HTMLElement | (() => HTMLElement | null) | null) | ((new (...args: any[]) => string | HTMLElement | (() => HTMLElement | null)) | (() => string | HTMLElement | (() => HTMLElement | null) | null))[], unknown, unknown> | undefined>;
1518
1518
  kls: import("vue").ComputedRef<string[]>;
1519
1519
  mergedPlacement: import("vue").ComputedRef<import("element-plus/es/utils/index.js").EpPropMergeType<(new (...args: any[]) => "top" | "bottom" | "top-start" | "top-end" | "bottom-start" | "bottom-end" | "right" | "left" | "right-start" | "right-end" | "left-start" | "left-end") | (() => import("@floating-ui/dom").Placement) | ((new (...args: any[]) => "top" | "bottom" | "top-start" | "top-end" | "bottom-start" | "bottom-end" | "right" | "left" | "right-start" | "right-end" | "left-start" | "left-end") | (() => import("@floating-ui/dom").Placement))[], "top" | "bottom" | "top-start" | "top-end" | "bottom-start" | "bottom-end" | "right" | "left" | "right-start" | "right-end" | "left-start" | "left-end", unknown>>;
@@ -1939,7 +1939,7 @@ export declare const GmTour: import("../../../../utils").SFCWithInstall<{
1939
1939
  };
1940
1940
  total: import("vue").Ref<number>;
1941
1941
  currentStep: import("vue").Ref<import("element-plus/es/components/tour/src/step.js").TourStepProps | undefined>;
1942
- current: import("vue").WritableComputedRef<number> | import("vue").Ref<number>;
1942
+ current: import("vue").Ref<number> | import("vue").WritableComputedRef<number>;
1943
1943
  currentTarget: import("vue").ComputedRef<import("element-plus/es/utils/index.js").EpPropMergeType<(new (...args: any[]) => string | HTMLElement | (() => HTMLElement | null)) | (() => string | HTMLElement | (() => HTMLElement | null) | null) | ((new (...args: any[]) => string | HTMLElement | (() => HTMLElement | null)) | (() => string | HTMLElement | (() => HTMLElement | null) | null))[], unknown, unknown> | undefined>;
1944
1944
  kls: import("vue").ComputedRef<string[]>;
1945
1945
  mergedPlacement: import("vue").ComputedRef<import("element-plus/es/utils/index.js").EpPropMergeType<(new (...args: any[]) => "top" | "bottom" | "top-start" | "top-end" | "bottom-start" | "bottom-end" | "right" | "left" | "right-start" | "right-end" | "left-start" | "left-end") | (() => import("@floating-ui/dom").Placement) | ((new (...args: any[]) => "top" | "bottom" | "top-start" | "top-end" | "bottom-start" | "bottom-end" | "right" | "left" | "right-start" | "right-end" | "left-start" | "left-end") | (() => import("@floating-ui/dom").Placement))[], "top" | "bottom" | "top-start" | "top-end" | "bottom-start" | "bottom-end" | "right" | "left" | "right-start" | "right-end" | "left-start" | "left-end", unknown>>;
@@ -2360,7 +2360,7 @@ export declare const GmTour: import("../../../../utils").SFCWithInstall<{
2360
2360
  };
2361
2361
  total: import("vue").Ref<number>;
2362
2362
  currentStep: import("vue").Ref<import("element-plus/es/components/tour/src/step.js").TourStepProps | undefined>;
2363
- current: import("vue").WritableComputedRef<number> | import("vue").Ref<number>;
2363
+ current: import("vue").Ref<number> | import("vue").WritableComputedRef<number>;
2364
2364
  currentTarget: import("vue").ComputedRef<import("element-plus/es/utils/index.js").EpPropMergeType<(new (...args: any[]) => string | HTMLElement | (() => HTMLElement | null)) | (() => string | HTMLElement | (() => HTMLElement | null) | null) | ((new (...args: any[]) => string | HTMLElement | (() => HTMLElement | null)) | (() => string | HTMLElement | (() => HTMLElement | null) | null))[], unknown, unknown> | undefined>;
2365
2365
  kls: import("vue").ComputedRef<string[]>;
2366
2366
  mergedPlacement: import("vue").ComputedRef<import("element-plus/es/utils/index.js").EpPropMergeType<(new (...args: any[]) => "top" | "bottom" | "top-start" | "top-end" | "bottom-start" | "bottom-end" | "right" | "left" | "right-start" | "right-end" | "left-start" | "left-end") | (() => import("@floating-ui/dom").Placement) | ((new (...args: any[]) => "top" | "bottom" | "top-start" | "top-end" | "bottom-start" | "bottom-end" | "right" | "left" | "right-start" | "right-end" | "left-start" | "left-end") | (() => import("@floating-ui/dom").Placement))[], "top" | "bottom" | "top-start" | "top-end" | "bottom-start" | "bottom-end" | "right" | "left" | "right-start" | "right-end" | "left-start" | "left-end", unknown>>;
@@ -261,17 +261,18 @@ var index$1V = require('../components/src/plugins/notification/index.js');
261
261
  var index$1W = require('../components/src/plugins/copy/index.js');
262
262
  var index$1X = require('../hooks/base/useCheckAll/index.js');
263
263
  var index$1Y = require('../hooks/base/useIDBKeyval/index.js');
264
- var index$1Z = require('../hooks/store/useLangList/index.js');
265
- var index$1_ = require('../hooks/store/useLogin/index.js');
266
- var index$1$ = require('../hooks/store/useCustomSettings/index.js');
267
- var index$20 = require('../hooks/store/useCurrencyList/index.js');
268
- var index$21 = require('../hooks/store/useLineList/index.js');
269
- var index$22 = require('../hooks/store/usePlatformLineList/index.js');
270
- var index$23 = require('../hooks/store/useOrgUserList/index.js');
271
- var index$24 = require('../hooks/store/useAliCategoryList/index.js');
272
- var index$25 = require('../hooks/store/useCompanyCategoryList/index.js');
273
- var index$26 = require('../hooks/store/useRepiteFilter/index.js');
274
- var index$27 = require('../hooks/store/usePlatformList/index.js');
264
+ var index$1Z = require('../hooks/base/useDownload/index.js');
265
+ var index$1_ = require('../hooks/store/useLangList/index.js');
266
+ var index$1$ = require('../hooks/store/useLogin/index.js');
267
+ var index$20 = require('../hooks/store/useCustomSettings/index.js');
268
+ var index$21 = require('../hooks/store/useCurrencyList/index.js');
269
+ var index$22 = require('../hooks/store/useLineList/index.js');
270
+ var index$23 = require('../hooks/store/usePlatformLineList/index.js');
271
+ var index$24 = require('../hooks/store/useOrgUserList/index.js');
272
+ var index$25 = require('../hooks/store/useAliCategoryList/index.js');
273
+ var index$26 = require('../hooks/store/useCompanyCategoryList/index.js');
274
+ var index$27 = require('../hooks/store/useRepiteFilter/index.js');
275
+ var index$28 = require('../hooks/store/usePlatformList/index.js');
275
276
 
276
277
  const install = defaults.default.install;
277
278
  const version = defaults.default.version;
@@ -662,17 +663,18 @@ exports.GmNotification = index$1V.GmNotification;
662
663
  exports.GmCopy = index$1W.GmCopy;
663
664
  exports.useCheckAll = index$1X.useCheckAll;
664
665
  exports.useIDBKeyval = index$1Y.useIDBKeyval;
665
- exports.useLangListStore = index$1Z.useLangListStore;
666
- exports.useLoginStore = index$1_.useLoginStore;
667
- exports.useCustomSettingsStore = index$1$.useCustomSettingsStore;
668
- exports.useCurrencyListStore = index$20.useCurrencyListStore;
669
- exports.useLineListStore = index$21.useLineListStore;
670
- exports.usePlatformLineListStore = index$22.usePlatformLineListStore;
671
- exports.useOrgUserListStore = index$23.useOrgUserListStore;
672
- exports.useAliCategoryListStore = index$24.useAliCategoryListStore;
673
- exports.useCompanyCategoryListStore = index$25.useCompanyCategoryListStore;
674
- exports.useRepiteFilterStore = index$26.useRepiteFilterStore;
675
- exports.usePlatformListStore = index$27.usePlatformListStore;
666
+ exports.useDownload = index$1Z.useDownload;
667
+ exports.useLangListStore = index$1_.useLangListStore;
668
+ exports.useLoginStore = index$1$.useLoginStore;
669
+ exports.useCustomSettingsStore = index$20.useCustomSettingsStore;
670
+ exports.useCurrencyListStore = index$21.useCurrencyListStore;
671
+ exports.useLineListStore = index$22.useLineListStore;
672
+ exports.usePlatformLineListStore = index$23.usePlatformLineListStore;
673
+ exports.useOrgUserListStore = index$24.useOrgUserListStore;
674
+ exports.useAliCategoryListStore = index$25.useAliCategoryListStore;
675
+ exports.useCompanyCategoryListStore = index$26.useCompanyCategoryListStore;
676
+ exports.useRepiteFilterStore = index$27.useRepiteFilterStore;
677
+ exports.usePlatformListStore = index$28.usePlatformListStore;
676
678
  exports.install = install;
677
679
  exports.version = version;
678
680
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../../../../packages/giime/index.ts"],"sourcesContent":["import installer from './defaults';\r\nimport './tailwind.css';\r\nexport * from '@giime/utils';\r\nexport * from '@giime/components';\r\nexport * from '@giime/hooks';\r\n// export * from '@giime/api'; // 用户通过giime/es/api 导入类型\r\nexport const install = installer.install;\r\nexport const version = installer.version;\r\nexport default installer;\r\n"],"names":["installer"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAMO,MAAM,UAAUA,gBAAU,CAAA,QAAA;AAC1B,MAAM,UAAUA,gBAAU,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"index.js","sources":["../../../../packages/giime/index.ts"],"sourcesContent":["import installer from './defaults';\r\nimport './tailwind.css';\r\nexport * from '@giime/utils';\r\nexport * from '@giime/components';\r\nexport * from '@giime/hooks';\r\n// export * from '@giime/api'; // 用户通过giime/es/api 导入类型\r\nexport const install = installer.install;\r\nexport const version = installer.version;\r\nexport default installer;\r\n"],"names":["installer"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAMO,MAAM,UAAUA,gBAAU,CAAA,QAAA;AAC1B,MAAM,UAAUA,gBAAU,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
@@ -1 +1 @@
1
- export declare const version = "0.0.19";
1
+ export declare const version = "0.0.20";
@@ -1,6 +1,6 @@
1
1
  'use strict';
2
2
 
3
- const version = "0.0.18";
3
+ const version = "0.0.20";
4
4
 
5
5
  exports.version = version;
6
6
  //# sourceMappingURL=version.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"version.js","sources":["../../../../packages/giime/version.ts"],"sourcesContent":["export const version = '0.0.18';\n"],"names":[],"mappings":";;AAAO,MAAM,OAAU,GAAA;;;;"}
1
+ {"version":3,"file":"version.js","sources":["../../../../packages/giime/version.ts"],"sourcesContent":["export const version = '0.0.20';\n"],"names":[],"mappings":";;AAAO,MAAM,OAAU,GAAA;;;;"}
@@ -1,2 +1,3 @@
1
1
  export * from './useCheckAll';
2
2
  export * from './useIDBKeyval';
3
+ export * from './useDownload';
@@ -2,9 +2,11 @@
2
2
 
3
3
  var index = require('./useCheckAll/index.js');
4
4
  var index$1 = require('./useIDBKeyval/index.js');
5
+ var index$2 = require('./useDownload/index.js');
5
6
 
6
7
 
7
8
 
8
9
  exports.useCheckAll = index.useCheckAll;
9
10
  exports.useIDBKeyval = index$1.useIDBKeyval;
11
+ exports.useDownload = index$2.useDownload;
10
12
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;"}
1
+ {"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;"}
@@ -0,0 +1,9 @@
1
+ export interface OptionsType {
2
+ url: string;
3
+ fileName: string;
4
+ fileType?: string;
5
+ }
6
+ export declare const useDownload: () => {
7
+ downloadFile: (options: OptionsType) => Promise<void>;
8
+ downloadZip: (fileList: OptionsType[], fileName: string) => Promise<void>;
9
+ };
@@ -0,0 +1,145 @@
1
+ 'use strict';
2
+
3
+ var vue = require('vue');
4
+ var index = require('../../../components/src/plugins/notification/index.js');
5
+ var JSZip = require('jszip');
6
+
7
+ const useDownload = () => {
8
+ let xhrInstance;
9
+ let downloading = false;
10
+ const progress = vue.ref(0);
11
+ const currentClass = `class${Date.now()}`;
12
+ vue.onBeforeUnmount(() => {
13
+ if (xhrInstance) {
14
+ xhrInstance.abort();
15
+ xhrInstance = null;
16
+ }
17
+ });
18
+ const downloadBlob = (url, fileName, fileType, isZip) => {
19
+ return new Promise((resolve, reject) => {
20
+ xhrInstance = new XMLHttpRequest();
21
+ xhrInstance.responseType = "blob";
22
+ xhrInstance.open("get", url, true);
23
+ xhrInstance.onprogress = (e) => {
24
+ progress.value = Math.floor(e.loaded / e.total * 100);
25
+ editElementContent(currentClass, `\u5F53\u524D\u4E0B\u8F7D\u8FDB\u5EA6 ${progress.value}%`);
26
+ if (progress.value == 100) {
27
+ progress.value = 0;
28
+ downloading = false;
29
+ }
30
+ };
31
+ xhrInstance.onloadend = (e) => {
32
+ const eventTarget = e.target;
33
+ if ([200, 304].includes(eventTarget.status)) {
34
+ const blob = eventTarget.response;
35
+ if (!isZip) {
36
+ createDownload(blob, fileName, fileType);
37
+ index.GmNotification({
38
+ type: "success",
39
+ title: "\u6E29\u99A8\u63D0\u793A",
40
+ message: "\u4E0B\u8F7D\u5B8C\u6210",
41
+ duration: 3e3
42
+ });
43
+ }
44
+ xhrInstance = null;
45
+ resolve(blob);
46
+ }
47
+ };
48
+ xhrInstance.onerror = function(e) {
49
+ downloading = false;
50
+ index.GmNotification({
51
+ type: "error",
52
+ title: "\u6E29\u99A8\u63D0\u793A",
53
+ message: "\u4E0B\u8F7D\u5F02\u5E38\uFF0C\u8BF7\u91CD\u8BD5",
54
+ duration: 1500
55
+ });
56
+ reject(e);
57
+ };
58
+ xhrInstance.send();
59
+ });
60
+ };
61
+ const downloadFile = async (options) => {
62
+ try {
63
+ if (downloading || !options.url || !options.fileName)
64
+ return;
65
+ downloading = true;
66
+ const fileType = options.fileType || options.url.split(".").pop();
67
+ const modalInfo = index.GmNotification({
68
+ title: "\u4E0B\u8F7D\u4E2D",
69
+ message: vue.h("div", { className: currentClass }, [`\u5F53\u524D\u4E0B\u8F7D\u8FDB\u5EA6 ${progress.value}%`]),
70
+ duration: 0
71
+ });
72
+ await downloadBlob(options.url, options.fileName, fileType, false);
73
+ modalInfo.close();
74
+ } catch (error) {
75
+ console.error(error);
76
+ }
77
+ };
78
+ const downloadZip = async (fileList, fileName) => {
79
+ try {
80
+ const currentContentClass = `message${Date.now()}`;
81
+ const downloadCount = vue.ref(0);
82
+ const currentDownloadFileName = vue.ref();
83
+ const len = fileList.length;
84
+ const modalInfo = index.GmNotification({
85
+ title: "\u4E0B\u8F7D\u4E2D",
86
+ message: vue.h("div", [
87
+ vue.h("div", { className: currentContentClass }, [`\u603B\u4E0B\u8F7D\u6587\u4EF6\u6570\uFF1A${len}\uFF0C\u5DF2\u4E0B\u8F7D\u6587\u4EF6\u6570\uFF1A${downloadCount.value}`]),
88
+ vue.h("div", { className: currentClass }, [`\u5F53\u524D\u4E0B\u8F7D\u8FDB\u5EA6 ${progress.value}%`])
89
+ ]),
90
+ duration: 0
91
+ });
92
+ const zipInstance = new JSZip();
93
+ for (let i = 0; i < len; i++) {
94
+ const currentItem = fileList[i];
95
+ const currentFileType = currentItem.fileType || currentItem.url.split(".").pop();
96
+ currentDownloadFileName.value = currentItem.fileName;
97
+ const fileBlob = await downloadBlob(currentItem.url, currentItem.fileName, currentFileType, true);
98
+ zipInstance.file(`${currentItem.fileName}.${currentFileType}`, fileBlob);
99
+ downloadCount.value++;
100
+ editElementContent(currentContentClass, `\u603B\u4E0B\u8F7D\u6587\u4EF6\u6570\uFF1A${len}\uFF0C\u5DF2\u4E0B\u8F7D\u6587\u4EF6\u6570\uFF1A${downloadCount.value}`);
101
+ }
102
+ downloading = false;
103
+ modalInfo.close();
104
+ index.GmNotification({
105
+ type: "success",
106
+ title: "\u6E29\u99A8\u63D0\u793A",
107
+ message: "\u4E0B\u8F7D\u5B8C\u6210",
108
+ duration: 3e3
109
+ });
110
+ zipInstance.generateAsync({ type: "blob" }).then((res) => {
111
+ createDownload(res, fileName, "zip");
112
+ }).catch((error) => {
113
+ console.error(error);
114
+ });
115
+ } catch (error) {
116
+ console.error(error);
117
+ }
118
+ };
119
+ return {
120
+ downloadFile,
121
+ downloadZip
122
+ };
123
+ };
124
+ const createDownload = (blob, fileName, fileType) => {
125
+ if (!blob || !fileName || !fileType)
126
+ return;
127
+ const ele = document.createElement("a");
128
+ const url = window.URL.createObjectURL(blob);
129
+ ele.style.display = "none";
130
+ ele.href = url;
131
+ ele.download = `${fileName}.${fileType}`;
132
+ document.body.appendChild(ele);
133
+ ele.click();
134
+ window.URL.revokeObjectURL(url);
135
+ document.body.removeChild(ele);
136
+ };
137
+ const editElementContent = (className, content) => {
138
+ const currentEle = document.getElementsByClassName(className)[0];
139
+ if (currentEle) {
140
+ currentEle.innerHTML = content;
141
+ }
142
+ };
143
+
144
+ exports.useDownload = useDownload;
145
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sources":["../../../../../../packages/hooks/base/useDownload/index.ts"],"sourcesContent":["import { h, onBeforeUnmount, ref } from 'vue';\r\nimport GmNotification from '@giime/components/src/plugins/notification';\r\nimport JSZip from 'jszip';\r\n\r\n// 参数类型\r\nexport interface OptionsType {\r\n url: string;\r\n fileName: string;\r\n fileType?: string;\r\n}\r\n\r\nexport const useDownload = () => {\r\n let xhrInstance: XMLHttpRequest | null;\r\n // 是否正在下载\r\n let downloading = false;\r\n // 单文件下载进度\r\n const progress = ref(0);\r\n // 动态生成唯一的 class\r\n const currentClass = `class${Date.now()}`;\r\n onBeforeUnmount(() => {\r\n if (xhrInstance) {\r\n xhrInstance.abort();\r\n xhrInstance = null;\r\n }\r\n });\r\n // 将 url 下载为 blob 文件\r\n const downloadBlob = (url: string, fileName: string, fileType: string, isZip: boolean) => {\r\n return new Promise<Blob>((resolve, reject) => {\r\n xhrInstance = new XMLHttpRequest();\r\n xhrInstance.responseType = 'blob';\r\n xhrInstance.open('get', url, true);\r\n xhrInstance.onprogress = e => {\r\n progress.value = Math.floor((e.loaded / e.total) * 100);\r\n editElementContent(currentClass, `当前下载进度 ${progress.value}%`);\r\n if (progress.value == 100) {\r\n progress.value = 0;\r\n downloading = false;\r\n }\r\n };\r\n xhrInstance.onloadend = e => {\r\n const eventTarget = e.target as XMLHttpRequest;\r\n if ([200, 304].includes(eventTarget.status)) {\r\n const blob = eventTarget.response;\r\n if (!isZip) {\r\n createDownload(blob, fileName, fileType);\r\n GmNotification({\r\n type: 'success',\r\n title: '温馨提示',\r\n message: '下载完成',\r\n duration: 3000,\r\n });\r\n }\r\n xhrInstance = null;\r\n resolve(blob);\r\n }\r\n };\r\n xhrInstance.onerror = function (e) {\r\n downloading = false;\r\n GmNotification({\r\n type: 'error',\r\n title: '温馨提示',\r\n message: '下载异常,请重试',\r\n duration: 1500,\r\n });\r\n reject(e);\r\n };\r\n xhrInstance.send();\r\n });\r\n };\r\n // 下载单文件\r\n const downloadFile = async (options: OptionsType) => {\r\n try {\r\n if (downloading || !options.url || !options.fileName) return;\r\n downloading = true;\r\n const fileType = options.fileType || options.url.split('.').pop()!;\r\n const modalInfo = GmNotification({\r\n title: '下载中',\r\n message: h('div', { className: currentClass }, [`当前下载进度 ${progress.value}%`]),\r\n duration: 0,\r\n });\r\n await downloadBlob(options.url, options.fileName, fileType, false);\r\n modalInfo.close();\r\n } catch (error) {\r\n console.error(error);\r\n }\r\n };\r\n // 下载多文件 转为zip\r\n const downloadZip = async (fileList: OptionsType[], fileName: string) => {\r\n try {\r\n const currentContentClass = `message${Date.now()}`;\r\n const downloadCount = ref(0);\r\n const currentDownloadFileName = ref<string>();\r\n const len = fileList.length;\r\n const modalInfo = GmNotification({\r\n title: '下载中',\r\n message: h('div', [\r\n h('div', { className: currentContentClass }, [`总下载文件数:${len},已下载文件数:${downloadCount.value}`]),\r\n h('div', { className: currentClass }, [`当前下载进度 ${progress.value}%`]),\r\n ]),\r\n duration: 0,\r\n });\r\n const zipInstance = new JSZip();\r\n for (let i = 0; i < len; i++) {\r\n const currentItem = fileList[i];\r\n const currentFileType = currentItem.fileType || currentItem.url.split('.').pop()!;\r\n currentDownloadFileName.value = currentItem.fileName;\r\n const fileBlob = await downloadBlob(currentItem.url, currentItem.fileName, currentFileType, true);\r\n zipInstance.file(`${currentItem.fileName}.${currentFileType}`, fileBlob);\r\n downloadCount.value++;\r\n editElementContent(currentContentClass, `总下载文件数:${len},已下载文件数:${downloadCount.value}`);\r\n }\r\n downloading = false;\r\n modalInfo.close();\r\n GmNotification({\r\n type: 'success',\r\n title: '温馨提示',\r\n message: '下载完成',\r\n duration: 3000,\r\n });\r\n zipInstance\r\n .generateAsync({ type: 'blob' })\r\n .then(res => {\r\n createDownload(res, fileName, 'zip');\r\n })\r\n .catch(error => {\r\n console.error(error);\r\n });\r\n } catch (error) {\r\n console.error(error);\r\n }\r\n };\r\n\r\n return {\r\n downloadFile,\r\n downloadZip,\r\n };\r\n};\r\n// 创建下载链接 并下载\r\nconst createDownload = (blob: Blob, fileName: string, fileType: string) => {\r\n if (!blob || !fileName || !fileType) return;\r\n const ele = document.createElement('a');\r\n const url = window.URL.createObjectURL(blob);\r\n ele.style.display = 'none';\r\n ele.href = url;\r\n ele.download = `${fileName}.${fileType}`;\r\n document.body.appendChild(ele);\r\n ele.click();\r\n window.URL.revokeObjectURL(url);\r\n document.body.removeChild(ele);\r\n};\r\n\r\n// 动态更新 notify 中的message 信息\r\nconst editElementContent = (className: string, content: string) => {\r\n // eslint-disable-next-line unicorn/prefer-query-selector\r\n const currentEle = document.getElementsByClassName(className)[0];\r\n if (currentEle) {\r\n currentEle.innerHTML = content;\r\n }\r\n};\r\n"],"names":["ref","onBeforeUnmount","GmNotification","h"],"mappings":"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"}
@@ -4,31 +4,33 @@ require('./base/index.js');
4
4
  require('./store/index.js');
5
5
  var index = require('./base/useCheckAll/index.js');
6
6
  var index$1 = require('./base/useIDBKeyval/index.js');
7
- var index$2 = require('./store/useLangList/index.js');
8
- var index$3 = require('./store/useLogin/index.js');
9
- var index$4 = require('./store/useCustomSettings/index.js');
10
- var index$5 = require('./store/useCurrencyList/index.js');
11
- var index$6 = require('./store/useLineList/index.js');
12
- var index$7 = require('./store/usePlatformLineList/index.js');
13
- var index$8 = require('./store/useOrgUserList/index.js');
14
- var index$9 = require('./store/useAliCategoryList/index.js');
15
- var index$a = require('./store/useCompanyCategoryList/index.js');
16
- var index$b = require('./store/useRepiteFilter/index.js');
17
- var index$c = require('./store/usePlatformList/index.js');
7
+ var index$2 = require('./base/useDownload/index.js');
8
+ var index$3 = require('./store/useLangList/index.js');
9
+ var index$4 = require('./store/useLogin/index.js');
10
+ var index$5 = require('./store/useCustomSettings/index.js');
11
+ var index$6 = require('./store/useCurrencyList/index.js');
12
+ var index$7 = require('./store/useLineList/index.js');
13
+ var index$8 = require('./store/usePlatformLineList/index.js');
14
+ var index$9 = require('./store/useOrgUserList/index.js');
15
+ var index$a = require('./store/useAliCategoryList/index.js');
16
+ var index$b = require('./store/useCompanyCategoryList/index.js');
17
+ var index$c = require('./store/useRepiteFilter/index.js');
18
+ var index$d = require('./store/usePlatformList/index.js');
18
19
 
19
20
 
20
21
 
21
22
  exports.useCheckAll = index.useCheckAll;
22
23
  exports.useIDBKeyval = index$1.useIDBKeyval;
23
- exports.useLangListStore = index$2.useLangListStore;
24
- exports.useLoginStore = index$3.useLoginStore;
25
- exports.useCustomSettingsStore = index$4.useCustomSettingsStore;
26
- exports.useCurrencyListStore = index$5.useCurrencyListStore;
27
- exports.useLineListStore = index$6.useLineListStore;
28
- exports.usePlatformLineListStore = index$7.usePlatformLineListStore;
29
- exports.useOrgUserListStore = index$8.useOrgUserListStore;
30
- exports.useAliCategoryListStore = index$9.useAliCategoryListStore;
31
- exports.useCompanyCategoryListStore = index$a.useCompanyCategoryListStore;
32
- exports.useRepiteFilterStore = index$b.useRepiteFilterStore;
33
- exports.usePlatformListStore = index$c.usePlatformListStore;
24
+ exports.useDownload = index$2.useDownload;
25
+ exports.useLangListStore = index$3.useLangListStore;
26
+ exports.useLoginStore = index$4.useLoginStore;
27
+ exports.useCustomSettingsStore = index$5.useCustomSettingsStore;
28
+ exports.useCurrencyListStore = index$6.useCurrencyListStore;
29
+ exports.useLineListStore = index$7.useLineListStore;
30
+ exports.usePlatformLineListStore = index$8.usePlatformLineListStore;
31
+ exports.useOrgUserListStore = index$9.useOrgUserListStore;
32
+ exports.useAliCategoryListStore = index$a.useAliCategoryListStore;
33
+ exports.useCompanyCategoryListStore = index$b.useCompanyCategoryListStore;
34
+ exports.useRepiteFilterStore = index$c.useRepiteFilterStore;
35
+ exports.usePlatformListStore = index$d.usePlatformListStore;
34
36
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
@@ -16,3 +16,17 @@ export type DeepRequired<T> = T extends Primitive ? T : keyof T extends never ?
16
16
  export type DeepWritable<T> = T extends Primitive ? T : keyof T extends never ? T : {
17
17
  -readonly [K in keyof T]: DeepWritable<T[K]>;
18
18
  };
19
+ /**
20
+ * 把一堆类型 如:Partial<Pick<User, "name">> & Omit<User, "name"> 合并成简单的 {name?:string;age:number}
21
+ */
22
+ export type MergeType<T> = {
23
+ [K in keyof T]: T[K];
24
+ };
25
+ /**
26
+ * https://github.com/type-challenges/type-challenges/blob/master/questions/02757-medium-partialbykeys/README.md
27
+ */
28
+ export type PartialByKeys<T, K = keyof T, P extends keyof T = Extract<keyof T, K>> = MergeType<Partial<Pick<T, P>> & Omit<T, P>>;
29
+ /**
30
+ * https://github.com/type-challenges/type-challenges/blob/master/questions/02759-medium-requiredbykeys/README.md
31
+ */
32
+ export type RequiredByKeys<T, K = keyof T, P extends keyof T = Extract<keyof T, K>> = MergeType<Required<Pick<T, P>> & Omit<T, P>>;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "giime",
3
- "version": "0.0.19",
3
+ "version": "0.0.20",
4
4
  "description": "A Component Library for Vue 3",
5
5
  "keywords": [
6
6
  "giime",
@@ -61,6 +61,7 @@
61
61
  "lodash-es": "^4.17.21",
62
62
  "idb-keyval": "^6.2.1",
63
63
  "clipboard": "^2.0.11",
64
+ "jszip": "^3.10.1",
64
65
  "@types/lodash": "^4.17.0",
65
66
  "@types/lodash-es": "^4.17.12"
66
67
  },