giime 0.5.11 → 0.5.12
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.css +35 -35
- package/es/api/materialApi/cross/getAliOssConfigs.d.ts +14 -0
- package/es/api/materialApi/cross/getAliOssConfigs.mjs +8 -0
- package/es/api/materialApi/cross/getAliOssConfigs.mjs.map +1 -0
- package/es/api/materialApi/cross/index.d.ts +1 -1
- package/es/api/materialApi/cross/index.mjs +1 -1
- package/es/api/materialApi/index.mjs +1 -1
- package/es/components/src/business/uploadMaterial/UploadMaterial.vue.d.ts +52 -52
- package/es/components/src/business/uploadMaterial/UploadMaterial.vue2.mjs.map +1 -1
- package/es/components/src/business/uploadMaterial/index.d.ts +4 -4
- package/es/components/src/composite/uploadFile/UploadFile.vue.d.ts +10 -4
- package/es/components/src/composite/uploadFile/UploadFile.vue.mjs +1 -1
- package/es/components/src/composite/uploadFile/UploadFile.vue2.mjs +27 -7
- package/es/components/src/composite/uploadFile/UploadFile.vue2.mjs.map +1 -1
- package/es/components/src/composite/uploadFile/index.d.ts +22 -10
- package/es/components/src/composite/uploadFile/uploadFile.d.ts +30 -28
- package/es/components/src/composite/uploadFile/uploadFile.mjs.map +1 -1
- package/es/giime/index.mjs +1 -1
- package/es/giime/version.d.ts +1 -1
- package/es/giime/version.mjs +1 -1
- package/es/giime/version.mjs.map +1 -1
- package/es/hooks/index.mjs +1 -1
- package/es/hooks/store/index.d.ts +1 -1
- package/es/hooks/store/index.mjs +1 -1
- package/es/hooks/store/useAliOssConfigs/index.d.ts +20 -0
- package/es/hooks/store/useAliOssConfigs/index.mjs +31 -0
- package/es/hooks/store/useAliOssConfigs/index.mjs.map +1 -0
- package/es/index.css +35 -35
- package/es/utils/src/alioss/aliossPutHook.mjs +5 -2
- package/es/utils/src/alioss/aliossPutHook.mjs.map +1 -1
- package/es/utils/src/alioss/aliossToken.d.ts +6 -6
- package/es/utils/src/alioss/aliossToken.mjs +1 -1
- package/es/utils/src/alioss/aliossToken.mjs.map +1 -1
- package/lib/api/materialApi/cross/getAliOssConfigs.d.ts +14 -0
- package/lib/api/materialApi/cross/getAliOssConfigs.js +10 -0
- package/lib/api/materialApi/cross/getAliOssConfigs.js.map +1 -0
- package/lib/api/materialApi/cross/index.d.ts +1 -1
- package/lib/api/materialApi/cross/index.js +2 -2
- package/lib/api/materialApi/index.js +2 -2
- package/lib/components/src/business/uploadMaterial/UploadMaterial.vue.d.ts +52 -52
- package/lib/components/src/business/uploadMaterial/UploadMaterial.vue2.js.map +1 -1
- package/lib/components/src/business/uploadMaterial/index.d.ts +4 -4
- package/lib/components/src/composite/uploadFile/UploadFile.vue.d.ts +10 -4
- package/lib/components/src/composite/uploadFile/UploadFile.vue.js +1 -1
- package/lib/components/src/composite/uploadFile/UploadFile.vue2.js +27 -7
- package/lib/components/src/composite/uploadFile/UploadFile.vue2.js.map +1 -1
- package/lib/components/src/composite/uploadFile/index.d.ts +22 -10
- package/lib/components/src/composite/uploadFile/uploadFile.d.ts +30 -28
- package/lib/components/src/composite/uploadFile/uploadFile.js.map +1 -1
- package/lib/giime/index.js +2 -2
- package/lib/giime/version.d.ts +1 -1
- package/lib/giime/version.js +1 -1
- package/lib/giime/version.js.map +1 -1
- package/lib/hooks/index.js +2 -2
- package/lib/hooks/store/index.d.ts +1 -1
- package/lib/hooks/store/index.js +2 -2
- package/lib/hooks/store/useAliOssConfigs/index.d.ts +20 -0
- package/lib/hooks/store/useAliOssConfigs/index.js +33 -0
- package/lib/hooks/store/useAliOssConfigs/index.js.map +1 -0
- package/lib/index.css +35 -35
- package/lib/utils/src/alioss/aliossPutHook.js +5 -2
- package/lib/utils/src/alioss/aliossPutHook.js.map +1 -1
- package/lib/utils/src/alioss/aliossToken.d.ts +6 -6
- package/lib/utils/src/alioss/aliossToken.js +1 -1
- package/lib/utils/src/alioss/aliossToken.js.map +1 -1
- package/package.json +1 -1
- package/es/api/materialApi/cross/getAliOssConfigIds.d.ts +0 -14
- package/es/api/materialApi/cross/getAliOssConfigIds.mjs +0 -8
- package/es/api/materialApi/cross/getAliOssConfigIds.mjs.map +0 -1
- package/es/hooks/store/useAliOssConfigIds/index.d.ts +0 -20
- package/es/hooks/store/useAliOssConfigIds/index.mjs +0 -31
- package/es/hooks/store/useAliOssConfigIds/index.mjs.map +0 -1
- package/lib/api/materialApi/cross/getAliOssConfigIds.d.ts +0 -14
- package/lib/api/materialApi/cross/getAliOssConfigIds.js +0 -10
- package/lib/api/materialApi/cross/getAliOssConfigIds.js.map +0 -1
- package/lib/hooks/store/useAliOssConfigIds/index.d.ts +0 -20
- package/lib/hooks/store/useAliOssConfigIds/index.js +0 -33
- package/lib/hooks/store/useAliOssConfigIds/index.js.map +0 -1
|
@@ -1,7 +1,10 @@
|
|
|
1
1
|
import UploadFile from './UploadFile.vue';
|
|
2
2
|
export declare const GmUploadFile: import("../../../../utils").SFCWithInstall<{
|
|
3
3
|
new (...args: any[]): import("vue").CreateComponentPublicInstance<Readonly<import("vue").ExtractPropTypes<{
|
|
4
|
-
fileList:
|
|
4
|
+
fileList: {
|
|
5
|
+
required: true;
|
|
6
|
+
type: import("vue").PropType<import("element-plus").UploadFile[]>;
|
|
7
|
+
};
|
|
5
8
|
checkoutFiles: import("vue").PropType<any[]>;
|
|
6
9
|
listType: {
|
|
7
10
|
type: import("vue").PropType<import("element-plus/es/utils/index.js").EpPropMergeType<StringConstructor, "text" | "picture" | "picture-card", unknown>>;
|
|
@@ -211,7 +214,7 @@ export declare const GmUploadFile: import("../../../../utils").SFCWithInstall<{
|
|
|
211
214
|
disabled: BooleanConstructor;
|
|
212
215
|
limit: NumberConstructor;
|
|
213
216
|
}>> & {
|
|
214
|
-
"onUpdate:fileList"?: ((fileList: import("element-plus").
|
|
217
|
+
"onUpdate:fileList"?: ((fileList: import("element-plus").UploadFile[]) => any) | undefined;
|
|
215
218
|
onHandleRemove?: ((file: {
|
|
216
219
|
file: import("element-plus").UploadFile;
|
|
217
220
|
index: number;
|
|
@@ -699,7 +702,7 @@ export declare const GmUploadFile: import("../../../../utils").SFCWithInstall<{
|
|
|
699
702
|
};
|
|
700
703
|
}) | undefined>;
|
|
701
704
|
}, unknown, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
|
|
702
|
-
"update:fileList": (fileList: import("element-plus").
|
|
705
|
+
"update:fileList": (fileList: import("element-plus").UploadFile[]) => void;
|
|
703
706
|
"update:checkoutFiles": (checkoutFiles: any[]) => void;
|
|
704
707
|
handleRemove: (file: {
|
|
705
708
|
file: import("element-plus").UploadFile;
|
|
@@ -707,7 +710,10 @@ export declare const GmUploadFile: import("../../../../utils").SFCWithInstall<{
|
|
|
707
710
|
}) => void;
|
|
708
711
|
handleSaveFileSuccess: (file: import("../../../../api/materialApi/index.js").PostSaveFileResourcesData) => void;
|
|
709
712
|
}, import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps & Readonly<import("vue").ExtractPropTypes<{
|
|
710
|
-
fileList:
|
|
713
|
+
fileList: {
|
|
714
|
+
required: true;
|
|
715
|
+
type: import("vue").PropType<import("element-plus").UploadFile[]>;
|
|
716
|
+
};
|
|
711
717
|
checkoutFiles: import("vue").PropType<any[]>;
|
|
712
718
|
listType: {
|
|
713
719
|
type: import("vue").PropType<import("element-plus/es/utils/index.js").EpPropMergeType<StringConstructor, "text" | "picture" | "picture-card", unknown>>;
|
|
@@ -917,7 +923,7 @@ export declare const GmUploadFile: import("../../../../utils").SFCWithInstall<{
|
|
|
917
923
|
disabled: BooleanConstructor;
|
|
918
924
|
limit: NumberConstructor;
|
|
919
925
|
}>> & {
|
|
920
|
-
"onUpdate:fileList"?: ((fileList: import("element-plus").
|
|
926
|
+
"onUpdate:fileList"?: ((fileList: import("element-plus").UploadFile[]) => any) | undefined;
|
|
921
927
|
onHandleRemove?: ((file: {
|
|
922
928
|
file: import("element-plus").UploadFile;
|
|
923
929
|
index: number;
|
|
@@ -974,7 +980,10 @@ export declare const GmUploadFile: import("../../../../utils").SFCWithInstall<{
|
|
|
974
980
|
M: {};
|
|
975
981
|
Defaults: {};
|
|
976
982
|
}, Readonly<import("vue").ExtractPropTypes<{
|
|
977
|
-
fileList:
|
|
983
|
+
fileList: {
|
|
984
|
+
required: true;
|
|
985
|
+
type: import("vue").PropType<import("element-plus").UploadFile[]>;
|
|
986
|
+
};
|
|
978
987
|
checkoutFiles: import("vue").PropType<any[]>;
|
|
979
988
|
listType: {
|
|
980
989
|
type: import("vue").PropType<import("element-plus/es/utils/index.js").EpPropMergeType<StringConstructor, "text" | "picture" | "picture-card", unknown>>;
|
|
@@ -1184,7 +1193,7 @@ export declare const GmUploadFile: import("../../../../utils").SFCWithInstall<{
|
|
|
1184
1193
|
disabled: BooleanConstructor;
|
|
1185
1194
|
limit: NumberConstructor;
|
|
1186
1195
|
}>> & {
|
|
1187
|
-
"onUpdate:fileList"?: ((fileList: import("element-plus").
|
|
1196
|
+
"onUpdate:fileList"?: ((fileList: import("element-plus").UploadFile[]) => any) | undefined;
|
|
1188
1197
|
onHandleRemove?: ((file: {
|
|
1189
1198
|
file: import("element-plus").UploadFile;
|
|
1190
1199
|
index: number;
|
|
@@ -1718,7 +1727,10 @@ export declare const GmUploadFile: import("../../../../utils").SFCWithInstall<{
|
|
|
1718
1727
|
__isTeleport?: undefined;
|
|
1719
1728
|
__isSuspense?: undefined;
|
|
1720
1729
|
} & import("vue").ComponentOptionsBase<Readonly<import("vue").ExtractPropTypes<{
|
|
1721
|
-
fileList:
|
|
1730
|
+
fileList: {
|
|
1731
|
+
required: true;
|
|
1732
|
+
type: import("vue").PropType<import("element-plus").UploadFile[]>;
|
|
1733
|
+
};
|
|
1722
1734
|
checkoutFiles: import("vue").PropType<any[]>;
|
|
1723
1735
|
listType: {
|
|
1724
1736
|
type: import("vue").PropType<import("element-plus/es/utils/index.js").EpPropMergeType<StringConstructor, "text" | "picture" | "picture-card", unknown>>;
|
|
@@ -1928,7 +1940,7 @@ export declare const GmUploadFile: import("../../../../utils").SFCWithInstall<{
|
|
|
1928
1940
|
disabled: BooleanConstructor;
|
|
1929
1941
|
limit: NumberConstructor;
|
|
1930
1942
|
}>> & {
|
|
1931
|
-
"onUpdate:fileList"?: ((fileList: import("element-plus").
|
|
1943
|
+
"onUpdate:fileList"?: ((fileList: import("element-plus").UploadFile[]) => any) | undefined;
|
|
1932
1944
|
onHandleRemove?: ((file: {
|
|
1933
1945
|
file: import("element-plus").UploadFile;
|
|
1934
1946
|
index: number;
|
|
@@ -2416,7 +2428,7 @@ export declare const GmUploadFile: import("../../../../utils").SFCWithInstall<{
|
|
|
2416
2428
|
};
|
|
2417
2429
|
}) | undefined>;
|
|
2418
2430
|
}, unknown, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
|
|
2419
|
-
"update:fileList": (fileList: import("element-plus").
|
|
2431
|
+
"update:fileList": (fileList: import("element-plus").UploadFile[]) => void;
|
|
2420
2432
|
"update:checkoutFiles": (checkoutFiles: any[]) => void;
|
|
2421
2433
|
handleRemove: (file: {
|
|
2422
2434
|
file: import("element-plus").UploadFile;
|
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
import { type PropType } from 'vue';
|
|
2
|
+
import { type UploadFile } from 'element-plus';
|
|
2
3
|
import type { AliOssResponse } from '../../../../utils/src/alioss/aliossPutHook';
|
|
4
|
+
export type GmUploadFile = Partial<UploadFile>;
|
|
3
5
|
export type UploadFileResponse = AliOssResponse;
|
|
4
6
|
export declare const uploadFileProps: {
|
|
5
7
|
listType: {
|
|
@@ -88,11 +90,11 @@ export declare const uploadFileProps: {
|
|
|
88
90
|
default: number;
|
|
89
91
|
};
|
|
90
92
|
fileList: {
|
|
91
|
-
type: PropType<Partial<
|
|
93
|
+
type: PropType<Partial<UploadFile>[]>;
|
|
92
94
|
default: () => never[];
|
|
93
95
|
};
|
|
94
96
|
file: {
|
|
95
|
-
type: PropType<Partial<
|
|
97
|
+
type: PropType<Partial<UploadFile>>;
|
|
96
98
|
default: () => {};
|
|
97
99
|
};
|
|
98
100
|
url: {
|
|
@@ -104,7 +106,7 @@ export declare const uploadFileProps: {
|
|
|
104
106
|
default: number;
|
|
105
107
|
};
|
|
106
108
|
field: {
|
|
107
|
-
type: PropType<keyof
|
|
109
|
+
type: PropType<keyof UploadFile>;
|
|
108
110
|
default: string;
|
|
109
111
|
};
|
|
110
112
|
controls: {
|
|
@@ -129,62 +131,62 @@ export declare const uploadFileProps: {
|
|
|
129
131
|
readonly prototype: any;
|
|
130
132
|
})[], unknown, unknown, () => void, boolean>;
|
|
131
133
|
beforeRemove: {
|
|
132
|
-
readonly type: PropType<(uploadFile:
|
|
134
|
+
readonly type: PropType<(uploadFile: UploadFile, uploadFiles: import("element-plus").UploadFiles) => import("element-plus/es/utils").Awaitable<boolean>>;
|
|
133
135
|
readonly required: false;
|
|
134
136
|
readonly validator: ((val: unknown) => boolean) | undefined;
|
|
135
137
|
__epPropKey: true;
|
|
136
138
|
};
|
|
137
|
-
onRemove: import("element-plus/es/utils").EpPropFinalized<(new (...args: any[]) => (uploadFile:
|
|
138
|
-
(): (uploadFile:
|
|
139
|
+
onRemove: import("element-plus/es/utils").EpPropFinalized<(new (...args: any[]) => (uploadFile: UploadFile, uploadFiles: import("element-plus").UploadFiles) => void) | (() => (uploadFile: UploadFile, uploadFiles: import("element-plus").UploadFiles) => void) | {
|
|
140
|
+
(): (uploadFile: UploadFile, uploadFiles: import("element-plus").UploadFiles) => void;
|
|
139
141
|
new (): any;
|
|
140
142
|
readonly prototype: any;
|
|
141
|
-
} | ((new (...args: any[]) => (uploadFile:
|
|
142
|
-
(): (uploadFile:
|
|
143
|
+
} | ((new (...args: any[]) => (uploadFile: UploadFile, uploadFiles: import("element-plus").UploadFiles) => void) | (() => (uploadFile: UploadFile, uploadFiles: import("element-plus").UploadFiles) => void) | {
|
|
144
|
+
(): (uploadFile: UploadFile, uploadFiles: import("element-plus").UploadFiles) => void;
|
|
143
145
|
new (): any;
|
|
144
146
|
readonly prototype: any;
|
|
145
147
|
})[], unknown, unknown, () => void, boolean>;
|
|
146
|
-
onChange: import("element-plus/es/utils").EpPropFinalized<(new (...args: any[]) => (uploadFile:
|
|
147
|
-
(): (uploadFile:
|
|
148
|
+
onChange: import("element-plus/es/utils").EpPropFinalized<(new (...args: any[]) => (uploadFile: UploadFile, uploadFiles: import("element-plus").UploadFiles) => void) | (() => (uploadFile: UploadFile, uploadFiles: import("element-plus").UploadFiles) => void) | {
|
|
149
|
+
(): (uploadFile: UploadFile, uploadFiles: import("element-plus").UploadFiles) => void;
|
|
148
150
|
new (): any;
|
|
149
151
|
readonly prototype: any;
|
|
150
|
-
} | ((new (...args: any[]) => (uploadFile:
|
|
151
|
-
(): (uploadFile:
|
|
152
|
+
} | ((new (...args: any[]) => (uploadFile: UploadFile, uploadFiles: import("element-plus").UploadFiles) => void) | (() => (uploadFile: UploadFile, uploadFiles: import("element-plus").UploadFiles) => void) | {
|
|
153
|
+
(): (uploadFile: UploadFile, uploadFiles: import("element-plus").UploadFiles) => void;
|
|
152
154
|
new (): any;
|
|
153
155
|
readonly prototype: any;
|
|
154
156
|
})[], unknown, unknown, () => void, boolean>;
|
|
155
|
-
onPreview: import("element-plus/es/utils").EpPropFinalized<(new (...args: any[]) => (uploadFile:
|
|
156
|
-
(): (uploadFile:
|
|
157
|
+
onPreview: import("element-plus/es/utils").EpPropFinalized<(new (...args: any[]) => (uploadFile: UploadFile) => void) | (() => (uploadFile: UploadFile) => void) | {
|
|
158
|
+
(): (uploadFile: UploadFile) => void;
|
|
157
159
|
new (): any;
|
|
158
160
|
readonly prototype: any;
|
|
159
|
-
} | ((new (...args: any[]) => (uploadFile:
|
|
160
|
-
(): (uploadFile:
|
|
161
|
+
} | ((new (...args: any[]) => (uploadFile: UploadFile) => void) | (() => (uploadFile: UploadFile) => void) | {
|
|
162
|
+
(): (uploadFile: UploadFile) => void;
|
|
161
163
|
new (): any;
|
|
162
164
|
readonly prototype: any;
|
|
163
165
|
})[], unknown, unknown, () => void, boolean>;
|
|
164
|
-
onSuccess: import("element-plus/es/utils").EpPropFinalized<(new (...args: any[]) => (response: any, uploadFile:
|
|
165
|
-
(): (response: any, uploadFile:
|
|
166
|
+
onSuccess: import("element-plus/es/utils").EpPropFinalized<(new (...args: any[]) => (response: any, uploadFile: UploadFile, uploadFiles: import("element-plus").UploadFiles) => void) | (() => (response: any, uploadFile: UploadFile, uploadFiles: import("element-plus").UploadFiles) => void) | {
|
|
167
|
+
(): (response: any, uploadFile: UploadFile, uploadFiles: import("element-plus").UploadFiles) => void;
|
|
166
168
|
new (): any;
|
|
167
169
|
readonly prototype: any;
|
|
168
|
-
} | ((new (...args: any[]) => (response: any, uploadFile:
|
|
169
|
-
(): (response: any, uploadFile:
|
|
170
|
+
} | ((new (...args: any[]) => (response: any, uploadFile: UploadFile, uploadFiles: import("element-plus").UploadFiles) => void) | (() => (response: any, uploadFile: UploadFile, uploadFiles: import("element-plus").UploadFiles) => void) | {
|
|
171
|
+
(): (response: any, uploadFile: UploadFile, uploadFiles: import("element-plus").UploadFiles) => void;
|
|
170
172
|
new (): any;
|
|
171
173
|
readonly prototype: any;
|
|
172
174
|
})[], unknown, unknown, () => void, boolean>;
|
|
173
|
-
onProgress: import("element-plus/es/utils").EpPropFinalized<(new (...args: any[]) => (evt: import("element-plus").UploadProgressEvent, uploadFile:
|
|
174
|
-
(): (evt: import("element-plus").UploadProgressEvent, uploadFile:
|
|
175
|
+
onProgress: import("element-plus/es/utils").EpPropFinalized<(new (...args: any[]) => (evt: import("element-plus").UploadProgressEvent, uploadFile: UploadFile, uploadFiles: import("element-plus").UploadFiles) => void) | (() => (evt: import("element-plus").UploadProgressEvent, uploadFile: UploadFile, uploadFiles: import("element-plus").UploadFiles) => void) | {
|
|
176
|
+
(): (evt: import("element-plus").UploadProgressEvent, uploadFile: UploadFile, uploadFiles: import("element-plus").UploadFiles) => void;
|
|
175
177
|
new (): any;
|
|
176
178
|
readonly prototype: any;
|
|
177
|
-
} | ((new (...args: any[]) => (evt: import("element-plus").UploadProgressEvent, uploadFile:
|
|
178
|
-
(): (evt: import("element-plus").UploadProgressEvent, uploadFile:
|
|
179
|
+
} | ((new (...args: any[]) => (evt: import("element-plus").UploadProgressEvent, uploadFile: UploadFile, uploadFiles: import("element-plus").UploadFiles) => void) | (() => (evt: import("element-plus").UploadProgressEvent, uploadFile: UploadFile, uploadFiles: import("element-plus").UploadFiles) => void) | {
|
|
180
|
+
(): (evt: import("element-plus").UploadProgressEvent, uploadFile: UploadFile, uploadFiles: import("element-plus").UploadFiles) => void;
|
|
179
181
|
new (): any;
|
|
180
182
|
readonly prototype: any;
|
|
181
183
|
})[], unknown, unknown, () => void, boolean>;
|
|
182
|
-
onError: import("element-plus/es/utils").EpPropFinalized<(new (...args: any[]) => (error: Error, uploadFile:
|
|
183
|
-
(): (error: Error, uploadFile:
|
|
184
|
+
onError: import("element-plus/es/utils").EpPropFinalized<(new (...args: any[]) => (error: Error, uploadFile: UploadFile, uploadFiles: import("element-plus").UploadFiles) => void) | (() => (error: Error, uploadFile: UploadFile, uploadFiles: import("element-plus").UploadFiles) => void) | {
|
|
185
|
+
(): (error: Error, uploadFile: UploadFile, uploadFiles: import("element-plus").UploadFiles) => void;
|
|
184
186
|
new (): any;
|
|
185
187
|
readonly prototype: any;
|
|
186
|
-
} | ((new (...args: any[]) => (error: Error, uploadFile:
|
|
187
|
-
(): (error: Error, uploadFile:
|
|
188
|
+
} | ((new (...args: any[]) => (error: Error, uploadFile: UploadFile, uploadFiles: import("element-plus").UploadFiles) => void) | (() => (error: Error, uploadFile: UploadFile, uploadFiles: import("element-plus").UploadFiles) => void) | {
|
|
189
|
+
(): (error: Error, uploadFile: UploadFile, uploadFiles: import("element-plus").UploadFiles) => void;
|
|
188
190
|
new (): any;
|
|
189
191
|
readonly prototype: any;
|
|
190
192
|
})[], unknown, unknown, () => void, boolean>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"uploadFile.mjs","sources":["../../../../../../../packages/components/src/composite/uploadFile/uploadFile.ts"],"sourcesContent":["import { type PropType } from 'vue';\r\nimport { type UploadProps, uploadProps } from 'element-plus';\r\nimport { previewFileProps } from '../previewFile';\r\nimport type { AliOssResponse } from '@giime/utils/src/alioss/aliossPutHook';\r\n\r\nexport type UploadFileResponse = AliOssResponse;\r\n\r\nexport const uploadFileProps = {\r\n ...uploadProps,\r\n ...previewFileProps,\r\n listType: {\r\n type: String as PropType<UploadProps['listType']>,\r\n default: 'picture-card',\r\n },\r\n accept: {\r\n type: String,\r\n default: '*',\r\n },\r\n autoUpload: {\r\n type: Boolean,\r\n default: false,\r\n },\r\n drag: {\r\n type: Boolean,\r\n default: true,\r\n },\r\n multiple: {\r\n type: Boolean,\r\n default: true,\r\n },\r\n /** 文件存储位置 */\r\n folder: {\r\n type: String,\r\n default: 'uploadFile',\r\n },\r\n /** 文件存储文件夹 */\r\n seat: {\r\n type: String,\r\n default: 'default',\r\n },\r\n /** 并行上传数量 */\r\n parallel: {\r\n type: Number,\r\n default: null,\r\n },\r\n /** 并行分片大小 */\r\n partSize: {\r\n type: Number,\r\n default: null,\r\n },\r\n /** 阿里oss上传配置 */\r\n options: {\r\n type: Object,\r\n default: () => ({}),\r\n },\r\n /** 阿里oss上传bucket */\r\n bucket: {\r\n type: String,\r\n default: 'giikin-material',\r\n },\r\n /** 文件存储名称 */\r\n fileName: {\r\n type: String,\r\n default: '',\r\n },\r\n /** 是否展示删除按钮 */\r\n showDelete: {\r\n type: Boolean,\r\n default: true,\r\n },\r\n /** 是否开启文件多选 */\r\n checkbox: {\r\n type: Boolean,\r\n default: false,\r\n },\r\n /** 文件是否保存入库 */\r\n saveStore: {\r\n type: Boolean,\r\n default: false,\r\n },\r\n /** cdn */\r\n cdn: {\r\n type: String,\r\n default: 'https://sucai.giikin.cn/',\r\n },\r\n /** 缩略图宽度 */\r\n width: {\r\n type: Number,\r\n default: 120,\r\n },\r\n /** 缩略图高度 */\r\n height: {\r\n type: Number,\r\n default: 120,\r\n },\r\n};\r\n"],"names":[],"mappings":";;;;
|
|
1
|
+
{"version":3,"file":"uploadFile.mjs","sources":["../../../../../../../packages/components/src/composite/uploadFile/uploadFile.ts"],"sourcesContent":["import { type PropType } from 'vue';\r\nimport { type UploadFile, type UploadProps, uploadProps } from 'element-plus';\r\nimport { previewFileProps } from '../previewFile';\r\nimport type { AliOssResponse } from '@giime/utils/src/alioss/aliossPutHook';\r\n\r\nexport type GmUploadFile = Partial<UploadFile>;\r\n\r\nexport type UploadFileResponse = AliOssResponse;\r\n\r\nexport const uploadFileProps = {\r\n ...uploadProps,\r\n ...previewFileProps,\r\n listType: {\r\n type: String as PropType<UploadProps['listType']>,\r\n default: 'picture-card',\r\n },\r\n accept: {\r\n type: String,\r\n default: '*',\r\n },\r\n autoUpload: {\r\n type: Boolean,\r\n default: false,\r\n },\r\n drag: {\r\n type: Boolean,\r\n default: true,\r\n },\r\n multiple: {\r\n type: Boolean,\r\n default: true,\r\n },\r\n /** 文件存储位置 */\r\n folder: {\r\n type: String,\r\n default: 'uploadFile',\r\n },\r\n /** 文件存储文件夹 */\r\n seat: {\r\n type: String,\r\n default: 'default',\r\n },\r\n /** 并行上传数量 */\r\n parallel: {\r\n type: Number,\r\n default: null,\r\n },\r\n /** 并行分片大小 */\r\n partSize: {\r\n type: Number,\r\n default: null,\r\n },\r\n /** 阿里oss上传配置 */\r\n options: {\r\n type: Object,\r\n default: () => ({}),\r\n },\r\n /** 阿里oss上传bucket */\r\n bucket: {\r\n type: String,\r\n default: 'giikin-material',\r\n },\r\n /** 文件存储名称 */\r\n fileName: {\r\n type: String,\r\n default: '',\r\n },\r\n /** 是否展示删除按钮 */\r\n showDelete: {\r\n type: Boolean,\r\n default: true,\r\n },\r\n /** 是否开启文件多选 */\r\n checkbox: {\r\n type: Boolean,\r\n default: false,\r\n },\r\n /** 文件是否保存入库 */\r\n saveStore: {\r\n type: Boolean,\r\n default: false,\r\n },\r\n /** cdn */\r\n cdn: {\r\n type: String,\r\n default: 'https://sucai.giikin.cn/',\r\n },\r\n /** 缩略图宽度 */\r\n width: {\r\n type: Number,\r\n default: 120,\r\n },\r\n /** 缩略图高度 */\r\n height: {\r\n type: Number,\r\n default: 120,\r\n },\r\n};\r\n"],"names":[],"mappings":";;;;AASO,MAAM,eAAkB,GAAA;AAAA,EAC7B,GAAG,WAAA;AAAA,EACH,GAAG,gBAAA;AAAA,EACH,QAAU,EAAA;AAAA,IACR,IAAM,EAAA,MAAA;AAAA,IACN,OAAS,EAAA,cAAA;AAAA,GACX;AAAA,EACA,MAAQ,EAAA;AAAA,IACN,IAAM,EAAA,MAAA;AAAA,IACN,OAAS,EAAA,GAAA;AAAA,GACX;AAAA,EACA,UAAY,EAAA;AAAA,IACV,IAAM,EAAA,OAAA;AAAA,IACN,OAAS,EAAA,KAAA;AAAA,GACX;AAAA,EACA,IAAM,EAAA;AAAA,IACJ,IAAM,EAAA,OAAA;AAAA,IACN,OAAS,EAAA,IAAA;AAAA,GACX;AAAA,EACA,QAAU,EAAA;AAAA,IACR,IAAM,EAAA,OAAA;AAAA,IACN,OAAS,EAAA,IAAA;AAAA,GACX;AAAA;AAAA,EAEA,MAAQ,EAAA;AAAA,IACN,IAAM,EAAA,MAAA;AAAA,IACN,OAAS,EAAA,YAAA;AAAA,GACX;AAAA;AAAA,EAEA,IAAM,EAAA;AAAA,IACJ,IAAM,EAAA,MAAA;AAAA,IACN,OAAS,EAAA,SAAA;AAAA,GACX;AAAA;AAAA,EAEA,QAAU,EAAA;AAAA,IACR,IAAM,EAAA,MAAA;AAAA,IACN,OAAS,EAAA,IAAA;AAAA,GACX;AAAA;AAAA,EAEA,QAAU,EAAA;AAAA,IACR,IAAM,EAAA,MAAA;AAAA,IACN,OAAS,EAAA,IAAA;AAAA,GACX;AAAA;AAAA,EAEA,OAAS,EAAA;AAAA,IACP,IAAM,EAAA,MAAA;AAAA,IACN,OAAA,EAAS,OAAO,EAAC,CAAA;AAAA,GACnB;AAAA;AAAA,EAEA,MAAQ,EAAA;AAAA,IACN,IAAM,EAAA,MAAA;AAAA,IACN,OAAS,EAAA,iBAAA;AAAA,GACX;AAAA;AAAA,EAEA,QAAU,EAAA;AAAA,IACR,IAAM,EAAA,MAAA;AAAA,IACN,OAAS,EAAA,EAAA;AAAA,GACX;AAAA;AAAA,EAEA,UAAY,EAAA;AAAA,IACV,IAAM,EAAA,OAAA;AAAA,IACN,OAAS,EAAA,IAAA;AAAA,GACX;AAAA;AAAA,EAEA,QAAU,EAAA;AAAA,IACR,IAAM,EAAA,OAAA;AAAA,IACN,OAAS,EAAA,KAAA;AAAA,GACX;AAAA;AAAA,EAEA,SAAW,EAAA;AAAA,IACT,IAAM,EAAA,OAAA;AAAA,IACN,OAAS,EAAA,KAAA;AAAA,GACX;AAAA;AAAA,EAEA,GAAK,EAAA;AAAA,IACH,IAAM,EAAA,MAAA;AAAA,IACN,OAAS,EAAA,0BAAA;AAAA,GACX;AAAA;AAAA,EAEA,KAAO,EAAA;AAAA,IACL,IAAM,EAAA,MAAA;AAAA,IACN,OAAS,EAAA,GAAA;AAAA,GACX;AAAA;AAAA,EAEA,MAAQ,EAAA;AAAA,IACN,IAAM,EAAA,MAAA;AAAA,IACN,OAAS,EAAA,GAAA;AAAA,GACX;AACF;;;;"}
|
package/es/giime/index.mjs
CHANGED
|
@@ -315,7 +315,7 @@ export { useAreaListStore } from '../hooks/store/userCenter/useAreaList/index.mj
|
|
|
315
315
|
export { useRoleListStore } from '../hooks/store/userCenter/useRoleList/index.mjs';
|
|
316
316
|
export { useOrgTreeListStore } from '../hooks/store/userCenter/useOrgTreeList/index.mjs';
|
|
317
317
|
export { usePlatformListStore } from '../hooks/store/usePlatformList/index.mjs';
|
|
318
|
-
export {
|
|
318
|
+
export { useAliOssConfigsStore } from '../hooks/store/useAliOssConfigs/index.mjs';
|
|
319
319
|
|
|
320
320
|
const install = installer.install;
|
|
321
321
|
const version = installer.version;
|
package/es/giime/version.d.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
export declare const version = "0.5.
|
|
1
|
+
export declare const version = "0.5.12";
|
package/es/giime/version.mjs
CHANGED
package/es/giime/version.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"version.mjs","sources":["../../../../packages/giime/version.ts"],"sourcesContent":["export const version = '0.5.
|
|
1
|
+
{"version":3,"file":"version.mjs","sources":["../../../../packages/giime/version.ts"],"sourcesContent":["export const version = '0.5.12';\n"],"names":[],"mappings":"AAAO,MAAM,OAAU,GAAA;;;;"}
|
package/es/hooks/index.mjs
CHANGED
|
@@ -23,5 +23,5 @@ export { useAreaListStore } from './store/userCenter/useAreaList/index.mjs';
|
|
|
23
23
|
export { useRoleListStore } from './store/userCenter/useRoleList/index.mjs';
|
|
24
24
|
export { useOrgTreeListStore } from './store/userCenter/useOrgTreeList/index.mjs';
|
|
25
25
|
export { usePlatformListStore } from './store/usePlatformList/index.mjs';
|
|
26
|
-
export {
|
|
26
|
+
export { useAliOssConfigsStore } from './store/useAliOssConfigs/index.mjs';
|
|
27
27
|
//# sourceMappingURL=index.mjs.map
|
package/es/hooks/store/index.mjs
CHANGED
|
@@ -10,7 +10,7 @@ export { useRepiteFilterStore } from './useRepiteFilter/index.mjs';
|
|
|
10
10
|
import './common/index.mjs';
|
|
11
11
|
import './userCenter/index.mjs';
|
|
12
12
|
export { usePlatformListStore } from './usePlatformList/index.mjs';
|
|
13
|
-
export {
|
|
13
|
+
export { useAliOssConfigsStore } from './useAliOssConfigs/index.mjs';
|
|
14
14
|
export { useCurrencyListStore } from './common/useCurrencyList/index.mjs';
|
|
15
15
|
export { useCountryListStore } from './common/useCountryList/index.mjs';
|
|
16
16
|
export { useSystemListStore } from './common/useSystemList/index.mjs';
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
/** 阿里云oss配置id */
|
|
2
|
+
export declare const useAliOssConfigsStore: import("pinia").StoreDefinition<"gmaliOssConfigs", import("pinia")._UnwrapAll<Pick<{
|
|
3
|
+
isLoading: import("vue").Ref<boolean>;
|
|
4
|
+
aliOssConfigs: import("vue").Ref<{
|
|
5
|
+
config_ids: string[];
|
|
6
|
+
} | null>;
|
|
7
|
+
getaliOssConfigsAsync: () => Promise<void>;
|
|
8
|
+
}, "isLoading" | "aliOssConfigs">>, Pick<{
|
|
9
|
+
isLoading: import("vue").Ref<boolean>;
|
|
10
|
+
aliOssConfigs: import("vue").Ref<{
|
|
11
|
+
config_ids: string[];
|
|
12
|
+
} | null>;
|
|
13
|
+
getaliOssConfigsAsync: () => Promise<void>;
|
|
14
|
+
}, never>, Pick<{
|
|
15
|
+
isLoading: import("vue").Ref<boolean>;
|
|
16
|
+
aliOssConfigs: import("vue").Ref<{
|
|
17
|
+
config_ids: string[];
|
|
18
|
+
} | null>;
|
|
19
|
+
getaliOssConfigsAsync: () => Promise<void>;
|
|
20
|
+
}, "getaliOssConfigsAsync">>;
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import { ref, onMounted } from 'vue';
|
|
2
|
+
import { defineStore } from 'pinia';
|
|
3
|
+
import '../../../api/materialApi/index.mjs';
|
|
4
|
+
import { getAliOssConfigs } from '../../../api/materialApi/cross/getAliOssConfigs.mjs';
|
|
5
|
+
|
|
6
|
+
const useAliOssConfigsStore = defineStore("gmaliOssConfigs", () => {
|
|
7
|
+
const aliOssConfigs = ref(null);
|
|
8
|
+
const isLoading = ref(false);
|
|
9
|
+
const getaliOssConfigsAsync = async () => {
|
|
10
|
+
if (aliOssConfigs.value)
|
|
11
|
+
return;
|
|
12
|
+
isLoading.value = true;
|
|
13
|
+
try {
|
|
14
|
+
const { data } = await getAliOssConfigs();
|
|
15
|
+
aliOssConfigs.value = data.data;
|
|
16
|
+
} finally {
|
|
17
|
+
isLoading.value = false;
|
|
18
|
+
}
|
|
19
|
+
};
|
|
20
|
+
onMounted(() => {
|
|
21
|
+
getaliOssConfigsAsync();
|
|
22
|
+
});
|
|
23
|
+
return {
|
|
24
|
+
isLoading,
|
|
25
|
+
aliOssConfigs,
|
|
26
|
+
getaliOssConfigsAsync
|
|
27
|
+
};
|
|
28
|
+
});
|
|
29
|
+
|
|
30
|
+
export { useAliOssConfigsStore };
|
|
31
|
+
//# sourceMappingURL=index.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.mjs","sources":["../../../../../../packages/hooks/store/useAliOssConfigs/index.ts"],"sourcesContent":["import { onMounted, ref } from 'vue';\r\nimport { defineStore } from 'pinia';\r\nimport { type GetAliOssConfigsResponseData, getAliOssConfigs } from '@giime/api/materialApi';\r\n\r\n/** 阿里云oss配置id */\r\nexport const useAliOssConfigsStore = defineStore('gmaliOssConfigs', () => {\r\n const aliOssConfigs = ref<GetAliOssConfigsResponseData | null>(null);\r\n const isLoading = ref(false);\r\n\r\n const getaliOssConfigsAsync = async () => {\r\n if (aliOssConfigs.value) return;\r\n isLoading.value = true;\r\n try {\r\n const { data } = await getAliOssConfigs();\r\n aliOssConfigs.value = data.data;\r\n } finally {\r\n isLoading.value = false;\r\n }\r\n };\r\n\r\n onMounted(() => {\r\n getaliOssConfigsAsync();\r\n });\r\n\r\n return {\r\n isLoading,\r\n aliOssConfigs,\r\n getaliOssConfigsAsync,\r\n };\r\n});\r\n"],"names":[],"mappings":";;;;;AAKa,MAAA,qBAAA,GAAwB,WAAY,CAAA,iBAAA,EAAmB,MAAM;AACxE,EAAM,MAAA,aAAA,GAAgB,IAAyC,IAAI,CAAA,CAAA;AACnE,EAAM,MAAA,SAAA,GAAY,IAAI,KAAK,CAAA,CAAA;AAE3B,EAAA,MAAM,wBAAwB,YAAY;AACxC,IAAA,IAAI,aAAc,CAAA,KAAA;AAAO,MAAA,OAAA;AACzB,IAAA,SAAA,CAAU,KAAQ,GAAA,IAAA,CAAA;AAClB,IAAI,IAAA;AACF,MAAA,MAAM,EAAE,IAAA,EAAS,GAAA,MAAM,gBAAiB,EAAA,CAAA;AACxC,MAAA,aAAA,CAAc,QAAQ,IAAK,CAAA,IAAA,CAAA;AAAA,KAC3B,SAAA;AACA,MAAA,SAAA,CAAU,KAAQ,GAAA,KAAA,CAAA;AAAA,KACpB;AAAA,GACF,CAAA;AAEA,EAAA,SAAA,CAAU,MAAM;AACd,IAAsB,qBAAA,EAAA,CAAA;AAAA,GACvB,CAAA,CAAA;AAED,EAAO,OAAA;AAAA,IACL,SAAA;AAAA,IACA,aAAA;AAAA,IACA,qBAAA;AAAA,GACF,CAAA;AACF,CAAC;;;;"}
|
package/es/index.css
CHANGED
|
@@ -806,16 +806,12 @@ video {
|
|
|
806
806
|
margin: 0;
|
|
807
807
|
}
|
|
808
808
|
|
|
809
|
-
.gm-
|
|
810
|
-
|
|
809
|
+
.gm-flex-center[data-v-2a79bac9] {
|
|
810
|
+
align-items: center;
|
|
811
811
|
}
|
|
812
812
|
|
|
813
|
-
.gm-
|
|
814
|
-
|
|
815
|
-
height: 120px;
|
|
816
|
-
display: flex;
|
|
817
|
-
align-items: center;
|
|
818
|
-
justify-content: center;
|
|
813
|
+
.gm-flex-justify-between[data-v-2a79bac9] {
|
|
814
|
+
justify-content: space-between;
|
|
819
815
|
}
|
|
820
816
|
.circular[data-v-b391445c] {
|
|
821
817
|
animation: loading-rotate-b391445c 2s linear infinite;
|
|
@@ -848,12 +844,28 @@ video {
|
|
|
848
844
|
stroke-dashoffset: -120px;
|
|
849
845
|
}
|
|
850
846
|
}
|
|
851
|
-
|
|
852
|
-
|
|
847
|
+
[data-v-668dc408] .gmTableNoBorder .el-table__body .el-table__cell {
|
|
848
|
+
border-right: none;
|
|
853
849
|
}
|
|
854
850
|
|
|
855
|
-
|
|
856
|
-
|
|
851
|
+
[data-v-668dc408] .gmTableNoBorder .el-table__inner-wrapper:before {
|
|
852
|
+
height: 0;
|
|
853
|
+
}
|
|
854
|
+
|
|
855
|
+
[data-v-668dc408] .gmTableNoBorder.el-table--border .el-table__inner-wrapper:after {
|
|
856
|
+
height: 0;
|
|
857
|
+
}
|
|
858
|
+
|
|
859
|
+
[data-v-668dc408] .gmTableNoBorder.el-table--border:after {
|
|
860
|
+
height: 0;
|
|
861
|
+
}
|
|
862
|
+
|
|
863
|
+
[data-v-668dc408] .gmTableNoBorder.el-table--border:before {
|
|
864
|
+
height: 0;
|
|
865
|
+
}
|
|
866
|
+
|
|
867
|
+
[data-v-668dc408] .gmTableNoBorder .el-table__border-left-patch {
|
|
868
|
+
height: 0;
|
|
857
869
|
}
|
|
858
870
|
[data-v-7b6755e2] .gmSearchForm .el-form-item {
|
|
859
871
|
margin-right: 0;
|
|
@@ -885,6 +897,17 @@ video {
|
|
|
885
897
|
.gm-upload-file-disabled .el-upload-list__item-status-label {
|
|
886
898
|
display: none;
|
|
887
899
|
}
|
|
900
|
+
.gm-upload-preview-dialog[data-v-5de3f0ab] [data-v-5de3f0ab] .el-dialog__body {
|
|
901
|
+
padding: 0;
|
|
902
|
+
}
|
|
903
|
+
|
|
904
|
+
.gm-upload-file-picture-card[data-v-5de3f0ab] [data-v-5de3f0ab] .el-upload-list__item, .gm-upload-file-picture-card[data-v-5de3f0ab] [data-v-5de3f0ab] .el-upload--picture-card {
|
|
905
|
+
width: 120px;
|
|
906
|
+
height: 120px;
|
|
907
|
+
display: flex;
|
|
908
|
+
align-items: center;
|
|
909
|
+
justify-content: center;
|
|
910
|
+
}
|
|
888
911
|
.gm-number-interval-single[data-v-47a13fd0] {
|
|
889
912
|
border-radius: var(--el-input-border-radius, var(--el-border-radius-base));
|
|
890
913
|
box-shadow: 0 0 0 1px var(--el-input-border-color, var(--el-border-color)) inset;
|
|
@@ -903,29 +926,6 @@ video {
|
|
|
903
926
|
.gm-number-interval-single[data-v-47a13fd0]:hover .gm-number-interval-close[data-v-47a13fd0] {
|
|
904
927
|
display: flex;
|
|
905
928
|
}
|
|
906
|
-
[data-v-668dc408] .gmTableNoBorder .el-table__body .el-table__cell {
|
|
907
|
-
border-right: none;
|
|
908
|
-
}
|
|
909
|
-
|
|
910
|
-
[data-v-668dc408] .gmTableNoBorder .el-table__inner-wrapper:before {
|
|
911
|
-
height: 0;
|
|
912
|
-
}
|
|
913
|
-
|
|
914
|
-
[data-v-668dc408] .gmTableNoBorder.el-table--border .el-table__inner-wrapper:after {
|
|
915
|
-
height: 0;
|
|
916
|
-
}
|
|
917
|
-
|
|
918
|
-
[data-v-668dc408] .gmTableNoBorder.el-table--border:after {
|
|
919
|
-
height: 0;
|
|
920
|
-
}
|
|
921
|
-
|
|
922
|
-
[data-v-668dc408] .gmTableNoBorder.el-table--border:before {
|
|
923
|
-
height: 0;
|
|
924
|
-
}
|
|
925
|
-
|
|
926
|
-
[data-v-668dc408] .gmTableNoBorder .el-table__border-left-patch {
|
|
927
|
-
height: 0;
|
|
928
|
-
}
|
|
929
929
|
|
|
930
930
|
.pagination-container[data-v-19230954] {
|
|
931
931
|
background: #fff;
|
|
@@ -103,7 +103,10 @@ const useAliossHookStore = defineStore("aliossHook", () => {
|
|
|
103
103
|
ContentDisposition: `attachment;filename=${encodeURIComponent(name)}${ext};filename*=${encodeURIComponent(name)}${ext}`,
|
|
104
104
|
...options
|
|
105
105
|
};
|
|
106
|
-
const
|
|
106
|
+
const bucketName = bucket || "giikin-material";
|
|
107
|
+
const { AccessKeyId, AccessKeySecret, SecurityToken } = await useAliossTokenStore().getAliossTokenAsync({
|
|
108
|
+
config_id: bucketName
|
|
109
|
+
});
|
|
107
110
|
const client = new AliOss({
|
|
108
111
|
// yourRegion填写Bucket所在地域。以华东1(杭州)为例,Region填写为oss-cn-hangzhou。
|
|
109
112
|
region: "oss-cn-shenzhen",
|
|
@@ -114,7 +117,7 @@ const useAliossHookStore = defineStore("aliossHook", () => {
|
|
|
114
117
|
// 刷新临时访问凭证的时间间隔,单位为毫秒。
|
|
115
118
|
refreshSTSTokenInterval: 3e5,
|
|
116
119
|
// 填写Bucket名称。
|
|
117
|
-
bucket:
|
|
120
|
+
bucket: bucketName
|
|
118
121
|
});
|
|
119
122
|
const upload = options.parallel === 1 ? "put" : "multipartUpload";
|
|
120
123
|
const { res } = await client[upload](path, file, options);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"aliossPutHook.mjs","sources":["../../../../../../packages/utils/src/alioss/aliossPutHook.ts"],"sourcesContent":["import { defineStore } from 'pinia';\r\nimport { createEventHook } from '@vueuse/core';\r\nimport { md5 } from 'js-md5';\r\nimport AliOss from 'ali-oss';\r\nimport { type PostSaveFileResourcesData, getAdFileExist, postSaveFileResources } from '@giime/api/materialApi';\r\nimport useAliossTokenStore from './aliossToken';\r\n\r\nexport type PostSaveFileResponse = PostSaveFileResourcesData;\r\nexport type UploadAliOssFile = File & { uid: number };\r\n\r\n/** 上传文件到阿里云 */\r\nexport type AliOssParams = {\r\n /** 资源文件 */\r\n file: UploadAliOssFile;\r\n /** 文件名 */\r\n fileName?: string;\r\n /** 文件存储路径 */\r\n folder?: string;\r\n /** 文件存储位置 */\r\n seat?: string;\r\n /** 并行上传数量 */\r\n parallel?: number;\r\n /** 并行分片大小 */\r\n partSize?: number;\r\n /** 阿里上传配置 */\r\n options?: { [key: string]: any };\r\n /** 阿里服务器 Bucket 名称 */\r\n bucket?: string;\r\n /** cdn */\r\n cdn?: string;\r\n /** 文件是否保存入库 */\r\n saveStore?: boolean;\r\n};\r\n\r\n/** 返回数据 */\r\nexport type AliOssResponse = {\r\n /** 文件地址 */\r\n url: string;\r\n /** 文件名 */\r\n name: string;\r\n /** 文件唯一标识 */\r\n uid: number;\r\n /** 文件最后修改时间 */\r\n lastModified: number;\r\n /** 文件md5 */\r\n md5: string;\r\n /** 文件大小 */\r\n size: number;\r\n /** 文件后缀 */\r\n type: string;\r\n /** 文件库是否存在 */\r\n isExist: boolean;\r\n};\r\n\r\nexport const ts_md5_file = (file: File) => {\r\n return new Promise<string>(resolve => {\r\n const reader = new FileReader();\r\n reader.onload = async function (e) {\r\n const binary = (e.target as any).result;\r\n resolve(md5(binary));\r\n };\r\n reader.readAsArrayBuffer(file);\r\n });\r\n};\r\n\r\n/** 文件分片 */\r\nexport const getParallelPartSize = (size: number) => {\r\n const thresholds = [\r\n {\r\n max: 5,\r\n parallel: 1,\r\n multiplier: 5,\r\n },\r\n {\r\n max: 10,\r\n parallel: 2,\r\n multiplier: 4,\r\n },\r\n {\r\n max: 30,\r\n parallel: 4,\r\n multiplier: 5,\r\n },\r\n {\r\n max: 50,\r\n parallel: 6,\r\n multiplier: 6,\r\n },\r\n {\r\n max: Number.POSITIVE_INFINITY,\r\n parallel: 8,\r\n multiplier: 8,\r\n },\r\n ];\r\n const { parallel, multiplier } = thresholds.find(({ max }) => size <= max) || thresholds[thresholds.length - 1];\r\n\r\n return {\r\n parallel,\r\n partSize: multiplier * 1024 * 1024,\r\n };\r\n};\r\n\r\n/** 上传 Hook */\r\nexport const useAliossHookStore = defineStore('aliossHook', () => {\r\n const aliossResult = createEventHook<AliOssResponse>();\r\n const aliossError = createEventHook<any>();\r\n const saveFileResult = createEventHook<PostSaveFileResponse>();\r\n const saveFileError = createEventHook<any>();\r\n\r\n /** 检测广告素材是否已存在 */\r\n const getFileExist = async ({\r\n md5Code,\r\n ext,\r\n name,\r\n size,\r\n uid,\r\n lastModified,\r\n }: {\r\n md5Code: string;\r\n ext: string;\r\n name: string;\r\n size: number;\r\n uid: number;\r\n lastModified: number;\r\n }) => {\r\n // eslint-disable-next-line no-async-promise-executor\r\n return new Promise<AliOssResponse | false>(async resolve => {\r\n const { data } = await getAdFileExist({ md5Code, ext });\r\n if (data.code !== 0 || data.data.count === 0) {\r\n return resolve(false);\r\n }\r\n const result = {\r\n name,\r\n uid,\r\n lastModified,\r\n size,\r\n url: data.data.url,\r\n md5: md5Code,\r\n type: ext,\r\n isExist: true,\r\n };\r\n resolve(result);\r\n aliossResult.trigger(result);\r\n });\r\n };\r\n\r\n /** 上传文件 */\r\n const uploadFile = async ({ file, fileName, folder, seat, parallel, partSize, options, bucket, cdn, saveStore }: AliOssParams) => {\r\n let { name, uid, lastModified, size } = file;\r\n const ext = name.match(/\\.(\\w+)$/)?.[0] || '';\r\n name = (fileName || name).slice(0, name.lastIndexOf('.'));\r\n const md5Code = await ts_md5_file(file);\r\n const FileName = name + ext;\r\n const type = ext.replaceAll('.', '');\r\n\r\n try {\r\n let result = await getFileExist({ md5Code, ext: type, name: FileName, size, uid, lastModified });\r\n if (result) return result;\r\n\r\n // 文件存储路径\r\n const timestr = Date.now();\r\n const path = `${folder ?? 'material'}/${seat ?? 'default'}/file-${timestr}-${md5Code}${ext}`;\r\n\r\n const P = getParallelPartSize(size);\r\n options = {\r\n ...P,\r\n ...{ parallel, partSize },\r\n ContentDisposition: `attachment;filename=${encodeURIComponent(name)}${ext};filename*=${encodeURIComponent(name)}${ext}`,\r\n ...options,\r\n };\r\n\r\n // 阿里云临时上传权限\r\n const { AccessKeyId, AccessKeySecret, SecurityToken } = await useAliossTokenStore().getAliossTokenAsync({ config_id: null });\r\n\r\n const client = new AliOss({\r\n // yourRegion填写Bucket所在地域。以华东1(杭州)为例,Region填写为oss-cn-hangzhou。\r\n region: 'oss-cn-shenzhen',\r\n // 从STS服务获取的临时访问密钥(AccessKey ID、AccessKey Secret、StsToken)。\r\n accessKeyId: AccessKeyId,\r\n accessKeySecret: AccessKeySecret,\r\n stsToken: SecurityToken,\r\n // 刷新临时访问凭证的时间间隔,单位为毫秒。\r\n refreshSTSTokenInterval: 300000,\r\n // 填写Bucket名称。\r\n bucket: bucket ?? 'giikin-material',\r\n });\r\n\r\n const upload = options.parallel === 1 ? 'put' : 'multipartUpload';\r\n const { res } = await client[upload](path, file, options);\r\n if (res.status !== 200) {\r\n aliossError.trigger(res);\r\n return res;\r\n }\r\n cdn = cdn ?? 'https://sucai.giikin.cn/';\r\n const resultUrl = cdn + path;\r\n result = {\r\n url: resultUrl,\r\n name: name + ext,\r\n md5: md5Code,\r\n type: ext.replaceAll('.', ''),\r\n uid,\r\n lastModified,\r\n size,\r\n isExist: false,\r\n };\r\n if (saveStore) {\r\n postSaveFile({ url: resultUrl, md5_code: md5Code, file_size: size });\r\n }\r\n aliossResult.trigger(result);\r\n return result;\r\n } catch (error) {\r\n aliossError.trigger(error);\r\n return error;\r\n }\r\n };\r\n\r\n /** 文件入库 */\r\n const postSaveFile = async ({ url, md5_code, file_size }: PostSaveFileResourcesData) => {\r\n try {\r\n const { data } = await postSaveFileResources({ fileData: { url, md5_code, file_size } });\r\n if (data?.code !== 0) {\r\n saveFileError.trigger(data);\r\n return data;\r\n }\r\n const result = {\r\n url,\r\n md5_code,\r\n file_size,\r\n };\r\n saveFileResult.trigger(result);\r\n return result;\r\n } catch (error) {\r\n saveFileError.trigger(error);\r\n return error;\r\n }\r\n };\r\n return {\r\n aliossResult: aliossResult.on,\r\n aliossError: aliossError.on,\r\n saveFileResult: saveFileResult.on,\r\n saveFileError: saveFileError.on,\r\n uploadFile,\r\n postSaveFile,\r\n };\r\n});\r\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"aliossPutHook.mjs","sources":["../../../../../../packages/utils/src/alioss/aliossPutHook.ts"],"sourcesContent":["import { defineStore } from 'pinia';\r\nimport { createEventHook } from '@vueuse/core';\r\nimport { md5 } from 'js-md5';\r\nimport AliOss from 'ali-oss';\r\nimport { type PostSaveFileResourcesData, getAdFileExist, postSaveFileResources } from '@giime/api/materialApi';\r\nimport useAliossTokenStore from './aliossToken';\r\n\r\nexport type PostSaveFileResponse = PostSaveFileResourcesData;\r\nexport type UploadAliOssFile = File & { uid: number };\r\n\r\n/** 上传文件到阿里云 */\r\nexport type AliOssParams = {\r\n /** 资源文件 */\r\n file: UploadAliOssFile;\r\n /** 文件名 */\r\n fileName?: string;\r\n /** 文件存储路径 */\r\n folder?: string;\r\n /** 文件存储位置 */\r\n seat?: string;\r\n /** 并行上传数量 */\r\n parallel?: number;\r\n /** 并行分片大小 */\r\n partSize?: number;\r\n /** 阿里上传配置 */\r\n options?: { [key: string]: any };\r\n /** 阿里服务器 Bucket 名称 */\r\n bucket?: string;\r\n /** cdn */\r\n cdn?: string;\r\n /** 文件是否保存入库 */\r\n saveStore?: boolean;\r\n};\r\n\r\n/** 返回数据 */\r\nexport type AliOssResponse = {\r\n /** 文件地址 */\r\n url: string;\r\n /** 文件名 */\r\n name: string;\r\n /** 文件唯一标识 */\r\n uid: number;\r\n /** 文件最后修改时间 */\r\n lastModified: number;\r\n /** 文件md5 */\r\n md5: string;\r\n /** 文件大小 */\r\n size: number;\r\n /** 文件后缀 */\r\n type: string;\r\n /** 文件库是否存在 */\r\n isExist: boolean;\r\n};\r\n\r\nexport const ts_md5_file = (file: File) => {\r\n return new Promise<string>(resolve => {\r\n const reader = new FileReader();\r\n reader.onload = async function (e) {\r\n const binary = (e.target as any).result;\r\n resolve(md5(binary));\r\n };\r\n reader.readAsArrayBuffer(file);\r\n });\r\n};\r\n\r\n/** 文件分片 */\r\nexport const getParallelPartSize = (size: number) => {\r\n const thresholds = [\r\n {\r\n max: 5,\r\n parallel: 1,\r\n multiplier: 5,\r\n },\r\n {\r\n max: 10,\r\n parallel: 2,\r\n multiplier: 4,\r\n },\r\n {\r\n max: 30,\r\n parallel: 4,\r\n multiplier: 5,\r\n },\r\n {\r\n max: 50,\r\n parallel: 6,\r\n multiplier: 6,\r\n },\r\n {\r\n max: Number.POSITIVE_INFINITY,\r\n parallel: 8,\r\n multiplier: 8,\r\n },\r\n ];\r\n const { parallel, multiplier } = thresholds.find(({ max }) => size <= max) || thresholds[thresholds.length - 1];\r\n\r\n return {\r\n parallel,\r\n partSize: multiplier * 1024 * 1024,\r\n };\r\n};\r\n\r\n/** 上传 Hook */\r\nexport const useAliossHookStore = defineStore('aliossHook', () => {\r\n const aliossResult = createEventHook<AliOssResponse>();\r\n const aliossError = createEventHook<any>();\r\n const saveFileResult = createEventHook<PostSaveFileResponse>();\r\n const saveFileError = createEventHook<any>();\r\n\r\n /** 检测广告素材是否已存在 */\r\n const getFileExist = async ({\r\n md5Code,\r\n ext,\r\n name,\r\n size,\r\n uid,\r\n lastModified,\r\n }: {\r\n md5Code: string;\r\n ext: string;\r\n name: string;\r\n size: number;\r\n uid: number;\r\n lastModified: number;\r\n }) => {\r\n // eslint-disable-next-line no-async-promise-executor\r\n return new Promise<AliOssResponse | false>(async resolve => {\r\n const { data } = await getAdFileExist({ md5Code, ext });\r\n if (data.code !== 0 || data.data.count === 0) {\r\n return resolve(false);\r\n }\r\n const result = {\r\n name,\r\n uid,\r\n lastModified,\r\n size,\r\n url: data.data.url,\r\n md5: md5Code,\r\n type: ext,\r\n isExist: true,\r\n };\r\n resolve(result);\r\n aliossResult.trigger(result);\r\n });\r\n };\r\n\r\n /** 上传文件 */\r\n const uploadFile = async ({ file, fileName, folder, seat, parallel, partSize, options, bucket, cdn, saveStore }: AliOssParams) => {\r\n let { name, uid, lastModified, size } = file;\r\n const ext = name.match(/\\.(\\w+)$/)?.[0] || '';\r\n name = (fileName || name).slice(0, name.lastIndexOf('.'));\r\n const md5Code = await ts_md5_file(file);\r\n const FileName = name + ext;\r\n const type = ext.replaceAll('.', '');\r\n\r\n try {\r\n let result = await getFileExist({ md5Code, ext: type, name: FileName, size, uid, lastModified });\r\n if (result) return result;\r\n\r\n // 文件存储路径\r\n const timestr = Date.now();\r\n const path = `${folder ?? 'material'}/${seat ?? 'default'}/file-${timestr}-${md5Code}${ext}`;\r\n\r\n const P = getParallelPartSize(size);\r\n options = {\r\n ...P,\r\n ...{ parallel, partSize },\r\n ContentDisposition: `attachment;filename=${encodeURIComponent(name)}${ext};filename*=${encodeURIComponent(name)}${ext}`,\r\n ...options,\r\n };\r\n\r\n // 阿里云临时上传权限\r\n // 使用组件 props 的默认值\r\n const bucketName = bucket || 'giikin-material';\r\n const { AccessKeyId, AccessKeySecret, SecurityToken } = await useAliossTokenStore().getAliossTokenAsync({\r\n config_id: bucketName,\r\n });\r\n\r\n const client = new AliOss({\r\n // yourRegion填写Bucket所在地域。以华东1(杭州)为例,Region填写为oss-cn-hangzhou。\r\n region: 'oss-cn-shenzhen',\r\n // 从STS服务获取的临时访问密钥(AccessKey ID、AccessKey Secret、StsToken)。\r\n accessKeyId: AccessKeyId,\r\n accessKeySecret: AccessKeySecret,\r\n stsToken: SecurityToken,\r\n // 刷新临时访问凭证的时间间隔,单位为毫秒。\r\n refreshSTSTokenInterval: 300000,\r\n // 填写Bucket名称。\r\n bucket: bucketName,\r\n });\r\n\r\n const upload = options.parallel === 1 ? 'put' : 'multipartUpload';\r\n const { res } = await client[upload](path, file, options);\r\n if (res.status !== 200) {\r\n aliossError.trigger(res);\r\n return res;\r\n }\r\n cdn = cdn ?? 'https://sucai.giikin.cn/';\r\n const resultUrl = cdn + path;\r\n result = {\r\n url: resultUrl,\r\n name: name + ext,\r\n md5: md5Code,\r\n type: ext.replaceAll('.', ''),\r\n uid,\r\n lastModified,\r\n size,\r\n isExist: false,\r\n };\r\n if (saveStore) {\r\n postSaveFile({ url: resultUrl, md5_code: md5Code, file_size: size });\r\n }\r\n aliossResult.trigger(result);\r\n return result;\r\n } catch (error) {\r\n aliossError.trigger(error);\r\n return error;\r\n }\r\n };\r\n\r\n /** 文件入库 */\r\n const postSaveFile = async ({ url, md5_code, file_size }: PostSaveFileResourcesData) => {\r\n try {\r\n const { data } = await postSaveFileResources({ fileData: { url, md5_code, file_size } });\r\n if (data?.code !== 0) {\r\n saveFileError.trigger(data);\r\n return data;\r\n }\r\n const result = {\r\n url,\r\n md5_code,\r\n file_size,\r\n };\r\n saveFileResult.trigger(result);\r\n return result;\r\n } catch (error) {\r\n saveFileError.trigger(error);\r\n return error;\r\n }\r\n };\r\n return {\r\n aliossResult: aliossResult.on,\r\n aliossError: aliossError.on,\r\n saveFileResult: saveFileResult.on,\r\n saveFileError: saveFileError.on,\r\n uploadFile,\r\n postSaveFile,\r\n };\r\n});\r\n"],"names":[],"mappings":"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"}
|
|
@@ -6,18 +6,18 @@ import { type GetOssAccessTokenResponseData } from '../../../api/materialApi';
|
|
|
6
6
|
**/
|
|
7
7
|
declare const useAliossTokenStore: import("pinia").StoreDefinition<"aliossToken", import("pinia")._UnwrapAll<Pick<{
|
|
8
8
|
isLoading: import("vue").Ref<boolean>;
|
|
9
|
-
getAliossTokenAsync: (params
|
|
10
|
-
config_id
|
|
9
|
+
getAliossTokenAsync: (params?: {
|
|
10
|
+
config_id?: string;
|
|
11
11
|
}) => Promise<GetOssAccessTokenResponseData>;
|
|
12
12
|
}, "isLoading">>, Pick<{
|
|
13
13
|
isLoading: import("vue").Ref<boolean>;
|
|
14
|
-
getAliossTokenAsync: (params
|
|
15
|
-
config_id
|
|
14
|
+
getAliossTokenAsync: (params?: {
|
|
15
|
+
config_id?: string;
|
|
16
16
|
}) => Promise<GetOssAccessTokenResponseData>;
|
|
17
17
|
}, never>, Pick<{
|
|
18
18
|
isLoading: import("vue").Ref<boolean>;
|
|
19
|
-
getAliossTokenAsync: (params
|
|
20
|
-
config_id
|
|
19
|
+
getAliossTokenAsync: (params?: {
|
|
20
|
+
config_id?: string;
|
|
21
21
|
}) => Promise<GetOssAccessTokenResponseData>;
|
|
22
22
|
}, "getAliossTokenAsync">>;
|
|
23
23
|
export default useAliossTokenStore;
|
|
@@ -22,7 +22,7 @@ const useAliossTokenStore = defineStore("aliossToken", () => {
|
|
|
22
22
|
}
|
|
23
23
|
isLoading.value = true;
|
|
24
24
|
try {
|
|
25
|
-
const { data } = await getOssAccessToken(params);
|
|
25
|
+
const { data } = await getOssAccessToken({ config_id: params?.config_id || "giikin-material" });
|
|
26
26
|
if (data.code === 0) {
|
|
27
27
|
setCookie(data.data);
|
|
28
28
|
aliossTokenResult.trigger(data.data);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"aliossToken.mjs","sources":["../../../../../../packages/utils/src/alioss/aliossToken.ts"],"sourcesContent":["import { ref } from 'vue';\r\nimport { defineStore } from 'pinia';\r\nimport { type GetOssAccessTokenResponseData, getOssAccessToken } from '@giime/api/materialApi';\r\nimport { createEventHook } from '@vueuse/core';\r\nimport Cookies from 'js-cookie';\r\n\r\n/**\r\n * @description 素材上传权限\r\n * @param {*}\r\n * @return {*}\r\n **/\r\n\r\nconst useAliossTokenStore = defineStore('aliossToken', () => {\r\n const isLoading = ref(false);\r\n const aliossTokenResult = createEventHook<GetOssAccessTokenResponseData>();\r\n\r\n const setCookie = (data: GetOssAccessTokenResponseData) => {\r\n if (!data) return;\r\n const { Expiration } = data;\r\n const time = new Date(new Date(Expiration ?? 0).getTime() - 10000); //-10秒作为缓冲\r\n Cookies.set('aliossStsToken', JSON.stringify(data), { expires: time });\r\n };\r\n\r\n /* 请求临时上传权限 */\r\n const getAliossToken = async (params
|
|
1
|
+
{"version":3,"file":"aliossToken.mjs","sources":["../../../../../../packages/utils/src/alioss/aliossToken.ts"],"sourcesContent":["import { ref } from 'vue';\r\nimport { defineStore } from 'pinia';\r\nimport { type GetOssAccessTokenResponseData, getOssAccessToken } from '@giime/api/materialApi';\r\nimport { createEventHook } from '@vueuse/core';\r\nimport Cookies from 'js-cookie';\r\n\r\n/**\r\n * @description 素材上传权限\r\n * @param {*}\r\n * @return {*}\r\n **/\r\n\r\nconst useAliossTokenStore = defineStore('aliossToken', () => {\r\n const isLoading = ref(false);\r\n const aliossTokenResult = createEventHook<GetOssAccessTokenResponseData>();\r\n\r\n const setCookie = (data: GetOssAccessTokenResponseData) => {\r\n if (!data) return;\r\n const { Expiration } = data;\r\n const time = new Date(new Date(Expiration ?? 0).getTime() - 10000); //-10秒作为缓冲\r\n Cookies.set('aliossStsToken', JSON.stringify(data), { expires: time });\r\n };\r\n\r\n /* 请求临时上传权限 */\r\n const getAliossToken = async (params?: { config_id?: string }) => {\r\n const aliossStsToken = Cookies.get('aliossStsToken');\r\n if (aliossStsToken) {\r\n return JSON.parse(aliossStsToken) as GetOssAccessTokenResponseData;\r\n }\r\n isLoading.value = true;\r\n try {\r\n const { data } = await getOssAccessToken({ config_id: params?.config_id || 'giikin-material' });\r\n if (data.code === 0) {\r\n setCookie(data.data);\r\n aliossTokenResult.trigger(data.data);\r\n }\r\n return data.data;\r\n } finally {\r\n isLoading.value = false;\r\n }\r\n };\r\n\r\n /* 获取 alioss 临时上传 token*/\r\n const getAliossTokenAsync = (params?: { config_id?: string }) => {\r\n /* 若正在请求请求临时token接口 则其他后进来的等待 */\r\n return new Promise<GetOssAccessTokenResponseData>(resolve => {\r\n if (isLoading.value) {\r\n aliossTokenResult.on(value => resolve(value));\r\n } else {\r\n resolve(getAliossToken(params));\r\n }\r\n });\r\n };\r\n\r\n return {\r\n isLoading,\r\n getAliossTokenAsync,\r\n };\r\n});\r\n\r\nexport default useAliossTokenStore;\r\n"],"names":[],"mappings":";;;;;;;AAYM,MAAA,mBAAA,GAAsB,WAAY,CAAA,aAAA,EAAe,MAAM;AAC3D,EAAM,MAAA,SAAA,GAAY,IAAI,KAAK,CAAA,CAAA;AAC3B,EAAA,MAAM,oBAAoB,eAA+C,EAAA,CAAA;AAEzE,EAAM,MAAA,SAAA,GAAY,CAAC,IAAwC,KAAA;AACzD,IAAA,IAAI,CAAC,IAAA;AAAM,MAAA,OAAA;AACX,IAAM,MAAA,EAAE,YAAe,GAAA,IAAA,CAAA;AACvB,IAAM,MAAA,IAAA,GAAO,IAAI,IAAA,CAAK,IAAI,IAAA,CAAK,cAAc,CAAC,CAAA,CAAE,OAAQ,EAAA,GAAI,GAAK,CAAA,CAAA;AACjE,IAAQ,OAAA,CAAA,GAAA,CAAI,kBAAkB,IAAK,CAAA,SAAA,CAAU,IAAI,CAAG,EAAA,EAAE,OAAS,EAAA,IAAA,EAAM,CAAA,CAAA;AAAA,GACvE,CAAA;AAGA,EAAM,MAAA,cAAA,GAAiB,OAAO,MAAoC,KAAA;AAChE,IAAM,MAAA,cAAA,GAAiB,OAAQ,CAAA,GAAA,CAAI,gBAAgB,CAAA,CAAA;AACnD,IAAA,IAAI,cAAgB,EAAA;AAClB,MAAO,OAAA,IAAA,CAAK,MAAM,cAAc,CAAA,CAAA;AAAA,KAClC;AACA,IAAA,SAAA,CAAU,KAAQ,GAAA,IAAA,CAAA;AAClB,IAAI,IAAA;AACF,MAAM,MAAA,EAAE,IAAK,EAAA,GAAI,MAAM,iBAAA,CAAkB,EAAE,SAAW,EAAA,MAAA,EAAQ,SAAa,IAAA,iBAAA,EAAmB,CAAA,CAAA;AAC9F,MAAI,IAAA,IAAA,CAAK,SAAS,CAAG,EAAA;AACnB,QAAA,SAAA,CAAU,KAAK,IAAI,CAAA,CAAA;AACnB,QAAkB,iBAAA,CAAA,OAAA,CAAQ,KAAK,IAAI,CAAA,CAAA;AAAA,OACrC;AACA,MAAA,OAAO,IAAK,CAAA,IAAA,CAAA;AAAA,KACZ,SAAA;AACA,MAAA,SAAA,CAAU,KAAQ,GAAA,KAAA,CAAA;AAAA,KACpB;AAAA,GACF,CAAA;AAGA,EAAM,MAAA,mBAAA,GAAsB,CAAC,MAAoC,KAAA;AAE/D,IAAO,OAAA,IAAI,QAAuC,CAAW,OAAA,KAAA;AAC3D,MAAA,IAAI,UAAU,KAAO,EAAA;AACnB,QAAA,iBAAA,CAAkB,EAAG,CAAA,CAAA,KAAA,KAAS,OAAQ,CAAA,KAAK,CAAC,CAAA,CAAA;AAAA,OACvC,MAAA;AACL,QAAQ,OAAA,CAAA,cAAA,CAAe,MAAM,CAAC,CAAA,CAAA;AAAA,OAChC;AAAA,KACD,CAAA,CAAA;AAAA,GACH,CAAA;AAEA,EAAO,OAAA;AAAA,IACL,SAAA;AAAA,IACA,mBAAA;AAAA,GACF,CAAA;AACF,CAAC;;;;"}
|