giime 0.8.11 → 0.8.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.
Files changed (52) hide show
  1. package/dist/index.css +91 -90
  2. package/es/components/src/base/tableColumn/TableColumn.vue2.mjs +5 -5
  3. package/es/components/src/base/tableColumn/TableColumn.vue2.mjs.map +1 -1
  4. package/es/components/src/composite/previewFile/PreviewFile.vue2.mjs +1 -1
  5. package/es/components/src/composite/previewFile/PreviewFile.vue2.mjs.map +1 -1
  6. package/es/components/src/composite/tablePro/TableColumnVNodeRenderer.d.ts +4 -2
  7. package/es/components/src/composite/tablePro/TableColumnVNodeRenderer.mjs +44 -16
  8. package/es/components/src/composite/tablePro/TableColumnVNodeRenderer.mjs.map +1 -1
  9. package/es/components/src/composite/tablePro/TablePro.vue.mjs +1 -1
  10. package/es/components/src/composite/tablePro/TablePro.vue2.mjs +2 -2
  11. package/es/components/src/composite/tablePro/TablePro.vue2.mjs.map +1 -1
  12. package/es/components/src/composite/tablePro/tableColumnPro/TableColumnPro.vue2.mjs +5 -5
  13. package/es/components/src/composite/tablePro/tableColumnPro/TableColumnPro.vue2.mjs.map +1 -1
  14. package/es/components/src/composite/tablePro/tableHelper.d.ts +8 -1
  15. package/es/components/src/composite/tablePro/tableHelper.mjs +10 -1
  16. package/es/components/src/composite/tablePro/tableHelper.mjs.map +1 -1
  17. package/es/components/src/composite/uploadFile/UploadFile.vue.d.ts +4 -90
  18. package/es/components/src/composite/uploadFile/UploadFile.vue.mjs +1 -1
  19. package/es/components/src/composite/uploadFile/UploadFile.vue2.mjs +47 -41
  20. package/es/components/src/composite/uploadFile/UploadFile.vue2.mjs.map +1 -1
  21. package/es/components/src/composite/uploadFile/index.d.ts +4 -190
  22. package/es/components/src/composite/uploadFile/uploadFile.d.ts +1 -51
  23. package/es/components/src/composite/uploadFile/uploadFile.mjs +0 -50
  24. package/es/components/src/composite/uploadFile/uploadFile.mjs.map +1 -1
  25. package/es/giime/version.d.ts +1 -1
  26. package/es/index.css +91 -90
  27. package/lib/components/src/base/tableColumn/TableColumn.vue2.js +4 -4
  28. package/lib/components/src/base/tableColumn/TableColumn.vue2.js.map +1 -1
  29. package/lib/components/src/composite/previewFile/PreviewFile.vue2.js +1 -1
  30. package/lib/components/src/composite/previewFile/PreviewFile.vue2.js.map +1 -1
  31. package/lib/components/src/composite/tablePro/TableColumnVNodeRenderer.d.ts +4 -2
  32. package/lib/components/src/composite/tablePro/TableColumnVNodeRenderer.js +43 -15
  33. package/lib/components/src/composite/tablePro/TableColumnVNodeRenderer.js.map +1 -1
  34. package/lib/components/src/composite/tablePro/TablePro.vue.js +1 -1
  35. package/lib/components/src/composite/tablePro/TablePro.vue2.js +2 -2
  36. package/lib/components/src/composite/tablePro/TablePro.vue2.js.map +1 -1
  37. package/lib/components/src/composite/tablePro/tableColumnPro/TableColumnPro.vue2.js +4 -4
  38. package/lib/components/src/composite/tablePro/tableColumnPro/TableColumnPro.vue2.js.map +1 -1
  39. package/lib/components/src/composite/tablePro/tableHelper.d.ts +8 -1
  40. package/lib/components/src/composite/tablePro/tableHelper.js +10 -1
  41. package/lib/components/src/composite/tablePro/tableHelper.js.map +1 -1
  42. package/lib/components/src/composite/uploadFile/UploadFile.vue.d.ts +4 -90
  43. package/lib/components/src/composite/uploadFile/UploadFile.vue.js +1 -1
  44. package/lib/components/src/composite/uploadFile/UploadFile.vue2.js +47 -41
  45. package/lib/components/src/composite/uploadFile/UploadFile.vue2.js.map +1 -1
  46. package/lib/components/src/composite/uploadFile/index.d.ts +4 -190
  47. package/lib/components/src/composite/uploadFile/uploadFile.d.ts +1 -51
  48. package/lib/components/src/composite/uploadFile/uploadFile.js +0 -50
  49. package/lib/components/src/composite/uploadFile/uploadFile.js.map +1 -1
  50. package/lib/giime/version.d.ts +1 -1
  51. package/lib/index.css +91 -90
  52. package/package.json +1 -1
@@ -1,7 +1,7 @@
1
1
  import { Fragment } from 'vue';
2
2
  import { isString } from '../../../../utils/src/is.mjs';
3
3
 
4
- const getVnodesByGmName = (defaultVnodes, name) => {
4
+ const getVnodesByGmName = (defaultVnodes, name, recursive = false) => {
5
5
  const children = [];
6
6
  if (Array.isArray(defaultVnodes)) {
7
7
  for (const childNode of defaultVnodes) {
@@ -13,6 +13,15 @@ const getVnodesByGmName = (defaultVnodes, name) => {
13
13
  children.push(vnode);
14
14
  }
15
15
  });
16
+ } else if (recursive && childNode.children) {
17
+ if (typeof childNode.children === "object" && childNode.children.default) {
18
+ const nestedVnodes = childNode.children.default();
19
+ const nestedChildren = getVnodesByGmName(Array.isArray(nestedVnodes) ? nestedVnodes : [nestedVnodes], name, true);
20
+ children.push(...nestedChildren);
21
+ } else if (Array.isArray(childNode.children)) {
22
+ const nestedChildren = getVnodesByGmName(childNode.children, name, true);
23
+ children.push(...nestedChildren);
24
+ }
16
25
  }
17
26
  }
18
27
  }
@@ -1 +1 @@
1
- {"version":3,"file":"tableHelper.mjs","sources":["../../../../../../../packages/components/src/composite/tablePro/tableHelper.ts"],"sourcesContent":["import { Fragment } from 'vue';\nimport { isString } from '@giime/utils/src/is';\nexport const getVnodesByGmName = (defaultVnodes: any[], name: string) => {\n const children = [];\n if (Array.isArray(defaultVnodes)) {\n for (const childNode of defaultVnodes) {\n if (childNode.type?.name === name || childNode.shapeFlag & 2) {\n children.push(childNode);\n } else if (childNode.type === Fragment && Array.isArray(childNode.children)) {\n childNode.children.forEach((vnode: any) => {\n // No rendering when vnode is dynamic slot or text\n if (vnode?.patchFlag !== 1024 && !isString(vnode?.children)) {\n children.push(vnode);\n }\n });\n }\n }\n }\n return children;\n};\n"],"names":[],"mappings":";;;AAEO,MAAM,iBAAA,GAAoB,CAAC,aAAA,EAAsB,IAAA,KAAiB;AACvE,EAAA,MAAM,WAAW,EAAC;AAClB,EAAA,IAAI,KAAA,CAAM,OAAA,CAAQ,aAAa,CAAA,EAAG;AAChC,IAAA,KAAA,MAAW,aAAa,aAAA,EAAe;AACrC,MAAA,IAAI,UAAU,IAAA,EAAM,IAAA,KAAS,IAAA,IAAQ,SAAA,CAAU,YAAY,CAAA,EAAG;AAC5D,QAAA,QAAA,CAAS,KAAK,SAAS,CAAA;AAAA,MACzB,CAAA,MAAA,IAAW,UAAU,IAAA,KAAS,QAAA,IAAY,MAAM,OAAA,CAAQ,SAAA,CAAU,QAAQ,CAAA,EAAG;AAC3E,QAAA,SAAA,CAAU,QAAA,CAAS,OAAA,CAAQ,CAAC,KAAA,KAAe;AAEzC,UAAA,IAAI,OAAO,SAAA,KAAc,IAAA,IAAQ,CAAC,QAAA,CAAS,KAAA,EAAO,QAAQ,CAAA,EAAG;AAC3D,YAAA,QAAA,CAAS,KAAK,KAAK,CAAA;AAAA,UACrB;AAAA,QACF,CAAC,CAAA;AAAA,MACH;AAAA,IACF;AAAA,EACF;AACA,EAAA,OAAO,QAAA;AACT;;;;"}
1
+ {"version":3,"file":"tableHelper.mjs","sources":["../../../../../../../packages/components/src/composite/tablePro/tableHelper.ts"],"sourcesContent":["import { Fragment } from 'vue';\nimport { isString } from '@giime/utils/src/is';\n\n/**\n * 从 vnode 数组中提取指定名称的组件\n * @param defaultVnodes vnode 数组\n * @param name 目标组件名称\n * @param recursive 是否递归提取嵌套组件(用于支持多级表头)\n * @returns 提取的 vnode 数组\n */\nexport const getVnodesByGmName = (defaultVnodes: any[], name: string, recursive = false): any[] => {\n const children: any[] = [];\n if (Array.isArray(defaultVnodes)) {\n for (const childNode of defaultVnodes) {\n // 匹配目标组件\n if (childNode.type?.name === name || childNode.shapeFlag & 2) {\n children.push(childNode);\n }\n // 处理 Fragment\n else if (childNode.type === Fragment && Array.isArray(childNode.children)) {\n childNode.children.forEach((vnode: any) => {\n // No rendering when vnode is dynamic slot or text\n if (vnode?.patchFlag !== 1024 && !isString(vnode?.children)) {\n children.push(vnode);\n }\n });\n }\n // 递归提取嵌套在其他组件中的目标组件(用于多级表头)\n else if (recursive && childNode.children) {\n // 如果有 default slot,递归提取\n if (typeof childNode.children === 'object' && childNode.children.default) {\n const nestedVnodes = childNode.children.default();\n const nestedChildren: any[] = getVnodesByGmName(Array.isArray(nestedVnodes) ? nestedVnodes : [nestedVnodes], name, true);\n children.push(...nestedChildren);\n }\n // 如果 children 是数组,递归提取\n else if (Array.isArray(childNode.children)) {\n const nestedChildren: any[] = getVnodesByGmName(childNode.children, name, true);\n children.push(...nestedChildren);\n }\n }\n }\n }\n return children;\n};\n"],"names":[],"mappings":";;;AAUO,MAAM,iBAAA,GAAoB,CAAC,aAAA,EAAsB,IAAA,EAAc,YAAY,KAAA,KAAiB;AACjG,EAAA,MAAM,WAAkB,EAAC;AACzB,EAAA,IAAI,KAAA,CAAM,OAAA,CAAQ,aAAa,CAAA,EAAG;AAChC,IAAA,KAAA,MAAW,aAAa,aAAA,EAAe;AAErC,MAAA,IAAI,UAAU,IAAA,EAAM,IAAA,KAAS,IAAA,IAAQ,SAAA,CAAU,YAAY,CAAA,EAAG;AAC5D,QAAA,QAAA,CAAS,KAAK,SAAS,CAAA;AAAA,MACzB,CAAA,MAAA,IAES,UAAU,IAAA,KAAS,QAAA,IAAY,MAAM,OAAA,CAAQ,SAAA,CAAU,QAAQ,CAAA,EAAG;AACzE,QAAA,SAAA,CAAU,QAAA,CAAS,OAAA,CAAQ,CAAC,KAAA,KAAe;AAEzC,UAAA,IAAI,OAAO,SAAA,KAAc,IAAA,IAAQ,CAAC,QAAA,CAAS,KAAA,EAAO,QAAQ,CAAA,EAAG;AAC3D,YAAA,QAAA,CAAS,KAAK,KAAK,CAAA;AAAA,UACrB;AAAA,QACF,CAAC,CAAA;AAAA,MACH,CAAA,MAAA,IAES,SAAA,IAAa,SAAA,CAAU,QAAA,EAAU;AAExC,QAAA,IAAI,OAAO,SAAA,CAAU,QAAA,KAAa,QAAA,IAAY,SAAA,CAAU,SAAS,OAAA,EAAS;AACxE,UAAA,MAAM,YAAA,GAAe,SAAA,CAAU,QAAA,CAAS,OAAA,EAAQ;AAChD,UAAA,MAAM,cAAA,GAAwB,iBAAA,CAAkB,KAAA,CAAM,OAAA,CAAQ,YAAY,CAAA,GAAI,YAAA,GAAe,CAAC,YAAY,CAAA,EAAG,IAAA,EAAM,IAAI,CAAA;AACvH,UAAA,QAAA,CAAS,IAAA,CAAK,GAAG,cAAc,CAAA;AAAA,QACjC,CAAA,MAAA,IAES,KAAA,CAAM,OAAA,CAAQ,SAAA,CAAU,QAAQ,CAAA,EAAG;AAC1C,UAAA,MAAM,cAAA,GAAwB,iBAAA,CAAkB,SAAA,CAAU,QAAA,EAAU,MAAM,IAAI,CAAA;AAC9E,UAAA,QAAA,CAAS,IAAA,CAAK,GAAG,cAAc,CAAA;AAAA,QACjC;AAAA,MACF;AAAA,IACF;AAAA,EACF;AACA,EAAA,OAAO,QAAA;AACT;;;;"}
@@ -1,11 +1,15 @@
1
1
  import type { UploadFile, UploadFiles, UploadInstance, UploadRawFile, UploadStatus } from 'element-plus';
2
2
  declare var __VLS_11: {}, __VLS_29: {
3
3
  file: UploadFile;
4
+ }, __VLS_51: {
5
+ file: UploadFile;
4
6
  };
5
7
  type __VLS_Slots = {} & {
6
8
  default?: (props: typeof __VLS_11) => any;
7
9
  } & {
8
10
  file?: (props: typeof __VLS_29) => any;
11
+ } & {
12
+ fileBottom?: (props: typeof __VLS_51) => any;
9
13
  };
10
14
  declare const _default: __VLS_WithSlots<import("vue").DefineComponent<{
11
15
  listType: {
@@ -28,34 +32,6 @@ declare const _default: __VLS_WithSlots<import("vue").DefineComponent<{
28
32
  type: BooleanConstructor;
29
33
  default: boolean;
30
34
  };
31
- folder: {
32
- type: StringConstructor;
33
- default: string;
34
- };
35
- seat: {
36
- type: StringConstructor;
37
- default: string;
38
- };
39
- parallel: {
40
- type: NumberConstructor;
41
- default: null;
42
- };
43
- partSize: {
44
- type: NumberConstructor;
45
- default: null;
46
- };
47
- options: {
48
- type: ObjectConstructor;
49
- default: () => {};
50
- };
51
- bucket: {
52
- type: StringConstructor;
53
- default: string;
54
- };
55
- fileName: {
56
- type: StringConstructor;
57
- default: string;
58
- };
59
35
  showDelete: {
60
36
  type: BooleanConstructor;
61
37
  default: boolean;
@@ -68,18 +44,6 @@ declare const _default: __VLS_WithSlots<import("vue").DefineComponent<{
68
44
  type: BooleanConstructor;
69
45
  default: boolean;
70
46
  };
71
- saveStore: {
72
- type: BooleanConstructor;
73
- default: boolean;
74
- };
75
- platform: {
76
- type: StringConstructor;
77
- default: string;
78
- };
79
- cdn: {
80
- type: StringConstructor;
81
- default: string;
82
- };
83
47
  width: {
84
48
  type: NumberConstructor;
85
49
  default: number;
@@ -355,34 +319,6 @@ declare const _default: __VLS_WithSlots<import("vue").DefineComponent<{
355
319
  type: BooleanConstructor;
356
320
  default: boolean;
357
321
  };
358
- folder: {
359
- type: StringConstructor;
360
- default: string;
361
- };
362
- seat: {
363
- type: StringConstructor;
364
- default: string;
365
- };
366
- parallel: {
367
- type: NumberConstructor;
368
- default: null;
369
- };
370
- partSize: {
371
- type: NumberConstructor;
372
- default: null;
373
- };
374
- options: {
375
- type: ObjectConstructor;
376
- default: () => {};
377
- };
378
- bucket: {
379
- type: StringConstructor;
380
- default: string;
381
- };
382
- fileName: {
383
- type: StringConstructor;
384
- default: string;
385
- };
386
322
  showDelete: {
387
323
  type: BooleanConstructor;
388
324
  default: boolean;
@@ -395,18 +331,6 @@ declare const _default: __VLS_WithSlots<import("vue").DefineComponent<{
395
331
  type: BooleanConstructor;
396
332
  default: boolean;
397
333
  };
398
- saveStore: {
399
- type: BooleanConstructor;
400
- default: boolean;
401
- };
402
- platform: {
403
- type: StringConstructor;
404
- default: string;
405
- };
406
- cdn: {
407
- type: StringConstructor;
408
- default: string;
409
- };
410
334
  width: {
411
335
  type: NumberConstructor;
412
336
  default: number;
@@ -657,7 +581,6 @@ declare const _default: __VLS_WithSlots<import("vue").DefineComponent<{
657
581
  "onUpdate:checkoutFiles"?: ((value: any[]) => any) | undefined;
658
582
  }, {
659
583
  size: number;
660
- options: Record<string, any>;
661
584
  method: string;
662
585
  data: ({
663
586
  [x: string]: any;
@@ -695,9 +618,7 @@ declare const _default: __VLS_WithSlots<import("vue").DefineComponent<{
695
618
  autoUpload: boolean;
696
619
  listType: "text" | "picture" | "picture-card";
697
620
  httpRequest: import("element-plus").UploadRequestHandler;
698
- fileName: string;
699
621
  acl: string;
700
- platform: string;
701
622
  fileWidth: string;
702
623
  fileHeight: string;
703
624
  fileStyle: Record<string, any>;
@@ -712,13 +633,6 @@ declare const _default: __VLS_WithSlots<import("vue").DefineComponent<{
712
633
  deleteTip: boolean;
713
634
  disabledCheckboxUids: number[];
714
635
  onAllComplete: () => void;
715
- folder: string;
716
- seat: string;
717
- parallel: number;
718
- partSize: number;
719
- bucket: string;
720
- saveStore: boolean;
721
- cdn: string;
722
636
  }, {}>, __VLS_Slots>;
723
637
  export default _default;
724
638
  type __VLS_WithSlots<T, S> = T & {
@@ -3,7 +3,7 @@ import './UploadFile.vue3.mjs';
3
3
  import './UploadFile.vue4.mjs';
4
4
  import _export_sfc from '../../../../_virtual/_plugin-vue_export-helper.mjs';
5
5
 
6
- var UploadFile = /* @__PURE__ */ _export_sfc(_sfc_main, [["__scopeId", "data-v-312f9322"]]);
6
+ var UploadFile = /* @__PURE__ */ _export_sfc(_sfc_main, [["__scopeId", "data-v-28529631"]]);
7
7
 
8
8
  export { UploadFile as default };
9
9
  //# sourceMappingURL=UploadFile.vue.mjs.map
@@ -8,7 +8,7 @@ import { GmFileComponent } from '../fileComponent/index.mjs';
8
8
  import { GmPreviewFile } from '../previewFile/index.mjs';
9
9
  import { uploadFileProps } from './uploadFile.mjs';
10
10
 
11
- const _withScopeId = (n) => (pushScopeId("data-v-312f9322"), n = n(), popScopeId(), n);
11
+ const _withScopeId = (n) => (pushScopeId("data-v-28529631"), n = n(), popScopeId(), n);
12
12
  const _hoisted_1 = /* @__PURE__ */ _withScopeId(() => /* @__PURE__ */ createElementVNode(
13
13
  "div",
14
14
  { class: "el-upload__text gm-text-center !gm-text-xs gm-text-gray-500" },
@@ -19,9 +19,10 @@ const _hoisted_1 = /* @__PURE__ */ _withScopeId(() => /* @__PURE__ */ createElem
19
19
  -1
20
20
  /* HOISTED */
21
21
  ));
22
- const _hoisted_2 = { class: "el-upload-list__item-actions" };
23
- const _hoisted_3 = ["onClick"];
22
+ const _hoisted_2 = { class: "gm-relative gm-flex gm-items-center gm-justify-center gm-overflow-hidden gm-rounded-md" };
23
+ const _hoisted_3 = { class: "el-upload-list__item-actions" };
24
24
  const _hoisted_4 = ["onClick"];
25
+ const _hoisted_5 = ["onClick"];
25
26
  var _sfc_main = /* @__PURE__ */ defineComponent({
26
27
  ...{
27
28
  name: "GmUploadFile"
@@ -220,49 +221,54 @@ var _sfc_main = /* @__PURE__ */ defineComponent({
220
221
  createElementVNode(
221
222
  "div",
222
223
  {
223
- class: "gm-flex gm-items-center gm-justify-center gm-rounded-md",
224
- style: normalizeStyle({ width: _ctx.width + "px", height: _ctx.height + "px" })
224
+ style: normalizeStyle({ width: _ctx.width + "px" })
225
225
  },
226
226
  [
227
- createVNode(unref(GmFileComponent), {
228
- file,
229
- size: _ctx.width - 40,
230
- url: _ctx.url,
231
- controls: false,
232
- "show-icon": true,
233
- field: _ctx.field
234
- }, null, 8, ["file", "size", "url", "field"])
227
+ createElementVNode("div", _hoisted_2, [
228
+ createVNode(unref(GmFileComponent), {
229
+ file,
230
+ size: _ctx.width - 40,
231
+ url: _ctx.url,
232
+ controls: false,
233
+ "show-icon": true,
234
+ field: _ctx.field,
235
+ fileWidth: _ctx.width + "px",
236
+ fileHeight: _ctx.height + "px",
237
+ fileStyle: { border: "1px solid #dcdfe6", overflow: "hidden", borderRadius: "5px" }
238
+ }, null, 8, ["file", "size", "url", "field", "fileWidth", "fileHeight"]),
239
+ createElementVNode("div", _hoisted_3, [
240
+ createElementVNode("span", {
241
+ class: "el-upload-list__item-preview",
242
+ onClick: ($event) => handlePreview(file)
243
+ }, [
244
+ createVNode(_component_el_icon, null, {
245
+ default: withCtx(() => [
246
+ createVNode(unref(View))
247
+ ]),
248
+ _: 1
249
+ /* STABLE */
250
+ })
251
+ ], 8, _hoisted_4),
252
+ _ctx.showDelete ? (openBlock(), createElementBlock("span", {
253
+ key: 0,
254
+ class: "el-upload-list__item-delete",
255
+ onClick: ($event) => handleRemove(file, fileList.value)
256
+ }, [
257
+ createVNode(_component_el_icon, null, {
258
+ default: withCtx(() => [
259
+ createVNode(unref(Delete))
260
+ ]),
261
+ _: 1
262
+ /* STABLE */
263
+ })
264
+ ], 8, _hoisted_5)) : createCommentVNode("v-if", true)
265
+ ])
266
+ ]),
267
+ renderSlot(_ctx.$slots, "fileBottom", { file }, void 0, true)
235
268
  ],
236
269
  4
237
270
  /* STYLE */
238
- ),
239
- createElementVNode("div", _hoisted_2, [
240
- createElementVNode("span", {
241
- class: "el-upload-list__item-preview",
242
- onClick: ($event) => handlePreview(file)
243
- }, [
244
- createVNode(_component_el_icon, null, {
245
- default: withCtx(() => [
246
- createVNode(unref(View))
247
- ]),
248
- _: 1
249
- /* STABLE */
250
- })
251
- ], 8, _hoisted_3),
252
- _ctx.showDelete ? (openBlock(), createElementBlock("span", {
253
- key: 0,
254
- class: "el-upload-list__item-delete",
255
- onClick: ($event) => handleRemove(file, fileList.value)
256
- }, [
257
- createVNode(_component_el_icon, null, {
258
- default: withCtx(() => [
259
- createVNode(unref(Delete))
260
- ]),
261
- _: 1
262
- /* STABLE */
263
- })
264
- ], 8, _hoisted_4)) : createCommentVNode("v-if", true)
265
- ])
271
+ )
266
272
  ], true)
267
273
  ]),
268
274
  key: "0"
@@ -1 +1 @@
1
- {"version":3,"file":"UploadFile.vue2.mjs","sources":["../../../../../../../packages/components/src/composite/uploadFile/UploadFile.vue"],"sourcesContent":["<template>\n <div>\n <div\n ref=\"pasteFileRef\"\n :class=\"{ 'gm-upload-file-picture-card': listType === 'picture-card', 'gm-upload-file-disabled': disabled }\"\n class=\"gm-upload-file\"\n >\n <el-checkbox-group v-model=\"checkoutFiles\">\n <el-upload\n ref=\"uploadFileRef\"\n v-bind=\"props\"\n v-model:file-list=\"fileList\"\n :before-remove=\"beforeRemove\"\n action=\"\"\n :http-request=\"httpRequest\"\n :on-success=\"coverFileSuccess\"\n :on-error=\"coverFileError\"\n >\n <slot v-if=\"!disabled\">\n <template v-if=\"listType === 'picture-card'\">\n <div\n class=\"gm-flex gm-flex-col gm-items-center gm-justify-center gm-rounded-md gm-border gm-border-dashed gm-p-1\"\n style=\"flex-direction: column\"\n :style=\"{ width: width + 'px', height: height + 'px' }\"\n >\n <el-icon :size=\"30\" color=\"#999\">\n <UploadFilled />\n </el-icon>\n <div class=\"el-upload__text gm-text-center !gm-text-xs gm-text-gray-500\">\n 将文件拖到此处,复制粘贴,或 <em class=\"gm-text-blue-700\">点击上传</em>\n </div>\n </div>\n </template>\n <template v-else>\n <el-button type=\"primary\" size=\"default\">点击上传</el-button>\n </template>\n </slot>\n <template v-if=\"showFileList && listType === 'picture-card'\" #file=\"{ file }\">\n <el-checkbox v-if=\"checkbox\" :value=\"file\" />\n <slot name=\"file\" :file=\"file\">\n <div class=\"gm-flex gm-items-center gm-justify-center gm-rounded-md\" :style=\"{ width: width + 'px', height: height + 'px' }\">\n <GmFileComponent :file=\"file\" :size=\"width - 40\" :url=\"url\" :controls=\"false\" :show-icon=\"true\" :field=\"field\" />\n </div>\n <div class=\"el-upload-list__item-actions\">\n <span class=\"el-upload-list__item-preview\" @click=\"handlePreview(file)\">\n <el-icon><View /></el-icon>\n </span>\n <span v-if=\"showDelete\" class=\"el-upload-list__item-delete\" @click=\"handleRemove(file, fileList)\">\n <el-icon><Delete /></el-icon>\n </span>\n </div>\n </slot>\n </template>\n </el-upload>\n </el-checkbox-group>\n\n <GmPreviewFile\n v-model:dialogVisible=\"dialogVisible\"\n v-model:file-index=\"fileIndex\"\n :file-list=\"fileList\"\n :controls=\"controls\"\n :oncontextmenu=\"oncontextmenu\"\n :controlslist=\"controlslist\"\n :field=\"field\"\n />\n </div>\n </div>\n</template>\n\n<script setup lang=\"ts\">\nimport { ref } from 'vue';\nimport { ElMessageBox } from 'element-plus';\nimport { useUploadTaskStore } from '@giime/hooks/store/useUploadTask';\nimport { usePasteFile } from '@giime/hooks/base/usePasteFile';\nimport { GmConfirmBox } from '@giime/components/src/plugins/confirmBox';\nimport { Delete, UploadFilled, View } from '@element-plus/icons-vue';\nimport GmFileComponent from '../fileComponent';\nimport GmPreviewFile from '../previewFile';\nimport { uploadFileProps } from './uploadFile';\nimport type { GmUploadProUserFileResponse } from './uploadFile';\nimport type { UploadFile, UploadFiles, UploadInstance, UploadProps, UploadRawFile, UploadRequestOptions, UploadStatus } from 'element-plus';\n\ndefineOptions({\n name: 'GmUploadFile',\n});\n\nconst props = defineProps(uploadFileProps);\nconst emit = defineEmits([\"handleRemove\"]);\n\nconst { uploadFileTask } = useUploadTaskStore();\n\n/** 上传文件 */\nconst fileList = defineModel<UploadFile[]>('fileList', { required: true, default: () => [] });\n/** 多选数据 */\nconst checkoutFiles = defineModel<any[]>('checkoutFiles', { default: () => [] });\n\nconst loadingUids = ref<Set<number>>(new Set());\n\n/* 上传 */\nconst httpRequest = async (options: UploadRequestOptions) => {\n loadingUids.value.add(options.file.uid);\n const { file } = options;\n\n const res: any = await uploadFileTask(file, {\n domainCode: props.domainCode,\n sceneCode: props.sceneCode,\n accept: props.accept,\n acl: props.acl,\n elOptions: options,\n });\n\n return { ...res, file };\n};\n\n/**判断是否全部上传完成 并触发事件 */\nconst checkAllUploadComplete = () => {\n if (loadingUids.value.size === 0) {\n // 全部文件上传完成\n props.onAllComplete?.();\n }\n};\n// 上传成功\nconst coverFileSuccess: UploadProps['onSuccess'] = (response: GmUploadProUserFileResponse, uploadFile, uploadFiles) => {\n loadingUids.value.delete(uploadFile.uid);\n uploadFile.url = response.url;\n props.onSuccess?.(response, uploadFile, uploadFiles);\n // 判断是否全部上传完成\n checkAllUploadComplete();\n};\n// 上传失败\nconst coverFileError: UploadProps['onError'] = (error, uploadFile, uploadFiles) => {\n loadingUids.value.delete(uploadFile.uid);\n props.onError?.(error, uploadFile, uploadFiles);\n // 判断是否全部上传完成\n checkAllUploadComplete();\n};\n\n/* 删除文件前 */\nconst beforeRemove = (file: UploadFile, files: UploadFiles) => {\n if (props.disabled) {\n return false;\n }\n return props.beforeRemove ? props.beforeRemove(file, files) : true;\n};\n\n/* 删除文件 */\nconst removeFile = (file: UploadFile, uploadFiles: UploadFiles) => {\n const index = fileList.value.indexOf(file);\n if (index > -1) {\n fileList.value.splice(index, 1);\n emit('handleRemove', { file, index });\n return props.onRemove?.(file, uploadFiles);\n }\n};\nconst handleRemove = async (file: UploadFile, uploadFiles: UploadFiles) => {\n if (props.deleteTip) {\n await GmConfirmBox({ message: '确定删除该文件吗?' }, async () => {});\n }\n\n removeFile(file, uploadFiles);\n};\n\nconst uploadFileRef = ref<UploadInstance>();\nconst pasteFileRef = ref<HTMLElement>();\n/* 手动上传 */\nconst submit = () => {\n uploadFileRef.value!.submit();\n};\n\n/** 取消上传 */\nconst abort = (file: UploadFile) => {\n uploadFileRef.value!.abort(file);\n};\n\n/** 清空已上传的文件列表 */\nconst clearFiles = (status?: UploadStatus[]) => {\n uploadFileRef.value!.clearFiles(status);\n};\n\n/** 手动选择文件 */\nconst handleStart = (rawFile: UploadRawFile) => {\n uploadFileRef.value!.handleStart(rawFile);\n};\n\n/** 预览 */\nconst dialogVisible = ref(false);\nconst fileIndex = ref(0);\nconst handlePreview = (file: UploadFile) => {\n fileIndex.value = fileList.value.indexOf(file);\n dialogVisible.value = true;\n};\n\n//** 复制粘贴 */\nconst { onSuccess, onError } = usePasteFile(pasteFileRef, { accept: props.accept, disabled: props.disabled });\nonSuccess((files: File[]) => {\n if (Array.isArray(files) && files.length > 0) {\n files.forEach(file => {\n if (file instanceof File) {\n const rawFile = file as UploadRawFile;\n handleStart(rawFile);\n\n // 粘贴成功自动上传\n if (props.autoUpload) {\n submit();\n }\n }\n });\n }\n});\n\nonError((error: Error) => {\n console.error('粘贴错误:', error);\n ElMessageBox.alert(error.message, '提示', {\n type: 'error',\n });\n});\n\ndefineExpose({\n submit,\n abort,\n clearFiles,\n handleStart,\n uploadFileRef,\n});\n</script>\n\n<style scoped lang=\"scss\">\n.gm-upload-preview-dialog {\n :deep(.el-dialog__body) {\n padding: 0;\n }\n}\n.gm-upload-file-picture-card {\n :deep(.el-upload-list__item),\n :deep(.el-upload--picture-card) {\n width: auto;\n height: auto;\n }\n}\n</style>\n<style lang=\"scss\">\n.gm-upload-file {\n line-height: normal;\n .el-checkbox {\n position: absolute;\n left: 10px;\n top: 0;\n z-index: 9;\n }\n .el-upload-list--picture-card {\n gap: 10px;\n }\n .el-upload-list__item {\n margin: 0;\n }\n .el-upload-list__item-file-name {\n line-height: normal;\n }\n .el-upload-dragger {\n padding: 0;\n border: none;\n width: 100%;\n height: 100%;\n display: flex;\n }\n .el-upload--picture-card {\n border: none;\n }\n}\n.gm-upload-file-disabled {\n .el-upload--picture-card {\n display: none;\n }\n .el-upload-list__item-status-label {\n display: none;\n }\n}\n</style>\n"],"names":["_useModel"],"mappings":"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"}
1
+ {"version":3,"file":"UploadFile.vue2.mjs","sources":["../../../../../../../packages/components/src/composite/uploadFile/UploadFile.vue"],"sourcesContent":["<template>\n <div>\n <div\n ref=\"pasteFileRef\"\n :class=\"{ 'gm-upload-file-picture-card': listType === 'picture-card', 'gm-upload-file-disabled': disabled }\"\n class=\"gm-upload-file\"\n >\n <el-checkbox-group v-model=\"checkoutFiles\">\n <el-upload\n ref=\"uploadFileRef\"\n v-bind=\"props\"\n v-model:file-list=\"fileList\"\n :before-remove=\"beforeRemove\"\n action=\"\"\n :http-request=\"httpRequest\"\n :on-success=\"coverFileSuccess\"\n :on-error=\"coverFileError\"\n >\n <slot v-if=\"!disabled\">\n <template v-if=\"listType === 'picture-card'\">\n <div\n class=\"gm-flex gm-flex-col gm-items-center gm-justify-center gm-rounded-md gm-border gm-border-dashed gm-p-1\"\n style=\"flex-direction: column\"\n :style=\"{ width: width + 'px', height: height + 'px' }\"\n >\n <el-icon :size=\"30\" color=\"#999\">\n <UploadFilled />\n </el-icon>\n <div class=\"el-upload__text gm-text-center !gm-text-xs gm-text-gray-500\">\n 将文件拖到此处,复制粘贴,或 <em class=\"gm-text-blue-700\">点击上传</em>\n </div>\n </div>\n </template>\n <template v-else>\n <el-button type=\"primary\" size=\"default\">点击上传</el-button>\n </template>\n </slot>\n <template v-if=\"showFileList && listType === 'picture-card'\" #file=\"{ file }\">\n <el-checkbox v-if=\"checkbox\" :value=\"file\" />\n <slot name=\"file\" :file=\"file\">\n <div :style=\"{ width: width + 'px' }\">\n <div class=\"gm-relative gm-flex gm-items-center gm-justify-center gm-overflow-hidden gm-rounded-md\">\n <GmFileComponent\n :file=\"file\"\n :size=\"width - 40\"\n :url=\"url\"\n :controls=\"false\"\n :show-icon=\"true\"\n :field=\"field\"\n :fileWidth=\"width + 'px'\"\n :fileHeight=\"height + 'px'\"\n :fileStyle=\"{ border: '1px solid #dcdfe6', overflow: 'hidden', borderRadius: '5px' }\"\n />\n <div class=\"el-upload-list__item-actions\">\n <span class=\"el-upload-list__item-preview\" @click=\"handlePreview(file)\">\n <el-icon><View /></el-icon>\n </span>\n <span v-if=\"showDelete\" class=\"el-upload-list__item-delete\" @click=\"handleRemove(file, fileList)\">\n <el-icon><Delete /></el-icon>\n </span>\n </div>\n </div>\n <slot name=\"fileBottom\" :file=\"file\" />\n </div>\n </slot>\n </template>\n </el-upload>\n </el-checkbox-group>\n\n <GmPreviewFile\n v-model:dialogVisible=\"dialogVisible\"\n v-model:file-index=\"fileIndex\"\n :file-list=\"fileList\"\n :controls=\"controls\"\n :oncontextmenu=\"oncontextmenu\"\n :controlslist=\"controlslist\"\n :field=\"field\"\n />\n </div>\n </div>\n</template>\n\n<script setup lang=\"ts\">\nimport { ref } from 'vue';\nimport { ElMessageBox } from 'element-plus';\nimport { useUploadTaskStore } from '@giime/hooks/store/useUploadTask';\nimport { usePasteFile } from '@giime/hooks/base/usePasteFile';\nimport { GmConfirmBox } from '@giime/components/src/plugins/confirmBox';\nimport { Delete, UploadFilled, View } from '@element-plus/icons-vue';\nimport GmFileComponent from '../fileComponent';\nimport GmPreviewFile from '../previewFile';\nimport { uploadFileProps } from './uploadFile';\nimport type { GmUploadProUserFileResponse } from './uploadFile';\nimport type { UploadFile, UploadFiles, UploadInstance, UploadProps, UploadRawFile, UploadRequestOptions, UploadStatus } from 'element-plus';\n\ndefineOptions({\n name: 'GmUploadFile',\n});\n\nconst props = defineProps(uploadFileProps);\nconst emit = defineEmits([\"handleRemove\"]);\n\nconst { uploadFileTask } = useUploadTaskStore();\n\n/** 上传文件 */\nconst fileList = defineModel<UploadFile[]>('fileList', { required: true, default: () => [] });\n/** 多选数据 */\nconst checkoutFiles = defineModel<any[]>('checkoutFiles', { default: () => [] });\n\nconst loadingUids = ref<Set<number>>(new Set());\n\n/* 上传 */\nconst httpRequest = async (options: UploadRequestOptions) => {\n loadingUids.value.add(options.file.uid);\n const { file } = options;\n\n const res: any = await uploadFileTask(file, {\n domainCode: props.domainCode,\n sceneCode: props.sceneCode,\n accept: props.accept,\n acl: props.acl,\n elOptions: options,\n });\n\n return { ...res, file };\n};\n\n/**判断是否全部上传完成 并触发事件 */\nconst checkAllUploadComplete = () => {\n if (loadingUids.value.size === 0) {\n // 全部文件上传完成\n props.onAllComplete?.();\n }\n};\n// 上传成功\nconst coverFileSuccess: UploadProps['onSuccess'] = (response: GmUploadProUserFileResponse, uploadFile, uploadFiles) => {\n loadingUids.value.delete(uploadFile.uid);\n uploadFile.url = response.url;\n props.onSuccess?.(response, uploadFile, uploadFiles);\n // 判断是否全部上传完成\n checkAllUploadComplete();\n};\n// 上传失败\nconst coverFileError: UploadProps['onError'] = (error, uploadFile, uploadFiles) => {\n loadingUids.value.delete(uploadFile.uid);\n props.onError?.(error, uploadFile, uploadFiles);\n // 判断是否全部上传完成\n checkAllUploadComplete();\n};\n\n/* 删除文件前 */\nconst beforeRemove = (file: UploadFile, files: UploadFiles) => {\n if (props.disabled) {\n return false;\n }\n return props.beforeRemove ? props.beforeRemove(file, files) : true;\n};\n\n/* 删除文件 */\nconst removeFile = (file: UploadFile, uploadFiles: UploadFiles) => {\n const index = fileList.value.indexOf(file);\n if (index > -1) {\n fileList.value.splice(index, 1);\n emit('handleRemove', { file, index });\n return props.onRemove?.(file, uploadFiles);\n }\n};\nconst handleRemove = async (file: UploadFile, uploadFiles: UploadFiles) => {\n if (props.deleteTip) {\n await GmConfirmBox({ message: '确定删除该文件吗?' }, async () => {});\n }\n\n removeFile(file, uploadFiles);\n};\n\nconst uploadFileRef = ref<UploadInstance>();\nconst pasteFileRef = ref<HTMLElement>();\n/* 手动上传 */\nconst submit = () => {\n uploadFileRef.value!.submit();\n};\n\n/** 取消上传 */\nconst abort = (file: UploadFile) => {\n uploadFileRef.value!.abort(file);\n};\n\n/** 清空已上传的文件列表 */\nconst clearFiles = (status?: UploadStatus[]) => {\n uploadFileRef.value!.clearFiles(status);\n};\n\n/** 手动选择文件 */\nconst handleStart = (rawFile: UploadRawFile) => {\n uploadFileRef.value!.handleStart(rawFile);\n};\n\n/** 预览 */\nconst dialogVisible = ref(false);\nconst fileIndex = ref(0);\nconst handlePreview = (file: UploadFile) => {\n fileIndex.value = fileList.value.indexOf(file);\n dialogVisible.value = true;\n};\n\n//** 复制粘贴 */\nconst { onSuccess, onError } = usePasteFile(pasteFileRef, { accept: props.accept, disabled: props.disabled });\nonSuccess((files: File[]) => {\n if (Array.isArray(files) && files.length > 0) {\n files.forEach(file => {\n if (file instanceof File) {\n const rawFile = file as UploadRawFile;\n handleStart(rawFile);\n\n // 粘贴成功自动上传\n if (props.autoUpload) {\n submit();\n }\n }\n });\n }\n});\n\nonError((error: Error) => {\n console.error('粘贴错误:', error);\n ElMessageBox.alert(error.message, '提示', {\n type: 'error',\n });\n});\n\ndefineExpose({\n submit,\n abort,\n clearFiles,\n handleStart,\n uploadFileRef,\n});\n</script>\n\n<style scoped lang=\"scss\">\n.gm-upload-preview-dialog {\n :deep(.el-dialog__body) {\n padding: 0;\n }\n}\n.gm-upload-file-picture-card {\n :deep(.el-upload-list__item),\n :deep(.el-upload--picture-card) {\n width: auto;\n height: auto;\n }\n}\n</style>\n<style lang=\"scss\">\n.gm-upload-file {\n line-height: normal;\n .el-checkbox {\n position: absolute;\n left: 10px;\n top: 0;\n z-index: 9;\n }\n .el-upload-list--picture-card {\n gap: 10px;\n }\n .el-upload-list__item {\n margin: 0;\n border: none;\n }\n .el-upload-list__item-file-name {\n line-height: normal;\n }\n .el-upload-dragger {\n padding: 0;\n border: none;\n width: 100%;\n height: 100%;\n display: flex;\n }\n .el-upload--picture-card {\n border: none;\n }\n}\n.gm-upload-file-disabled {\n .el-upload--picture-card {\n display: none;\n }\n .el-upload-list__item-status-label {\n display: none;\n }\n}\n</style>\n"],"names":["_useModel"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAmGA,IAAA,MAAM,KAAA,GAAQ,OAAA;AACd,IAAA,MAAM,IAAA,GAAO,MAAA;AAEb,IAAA,MAAM,EAAE,cAAA,EAAe,GAAI,kBAAA,EAAmB;AAG9C,IAAA,MAAM,QAAA,GAAWA,QAAA,CAAyB,OAAA,EAAC,UAAiD,CAAA;AAE5F,IAAA,MAAM,aAAA,GAAgBA,QAAA,CAAkB,OAAA,EAAC,eAAsC,CAAA;AAE/E,IAAA,MAAM,WAAA,GAAc,GAAA,iBAAiB,IAAI,GAAA,EAAK,CAAA;AAG9C,IAAA,MAAM,WAAA,GAAc,OAAO,OAAA,KAAkC;AAC3D,MAAA,WAAA,CAAY,KAAA,CAAM,GAAA,CAAI,OAAA,CAAQ,IAAA,CAAK,GAAG,CAAA;AACtC,MAAA,MAAM,EAAE,MAAK,GAAI,OAAA;AAEjB,MAAA,MAAM,GAAA,GAAW,MAAM,cAAA,CAAe,IAAA,EAAM;AAAA,QAC1C,YAAY,KAAA,CAAM,UAAA;AAAA,QAClB,WAAW,KAAA,CAAM,SAAA;AAAA,QACjB,QAAQ,KAAA,CAAM,MAAA;AAAA,QACd,KAAK,KAAA,CAAM,GAAA;AAAA,QACX,SAAA,EAAW;AAAA,OACZ,CAAA;AAED,MAAA,OAAO,EAAE,GAAG,GAAA,EAAK,IAAA,EAAK;AAAA,IACxB,CAAA;AAGA,IAAA,MAAM,yBAAyB,MAAM;AACnC,MAAA,IAAI,WAAA,CAAY,KAAA,CAAM,IAAA,KAAS,CAAA,EAAG;AAEhC,QAAA,KAAA,CAAM,aAAA,IAAgB;AAAA,MACxB;AAAA,IACF,CAAA;AAEA,IAAA,MAAM,gBAAA,GAA6C,CAAC,QAAA,EAAuC,UAAA,EAAY,WAAA,KAAgB;AACrH,MAAA,WAAA,CAAY,KAAA,CAAM,MAAA,CAAO,UAAA,CAAW,GAAG,CAAA;AACvC,MAAA,UAAA,CAAW,MAAM,QAAA,CAAS,GAAA;AAC1B,MAAA,KAAA,CAAM,SAAA,GAAY,QAAA,EAAU,UAAA,EAAY,WAAW,CAAA;AAEnD,MAAA,sBAAA,EAAuB;AAAA,IACzB,CAAA;AAEA,IAAA,MAAM,cAAA,GAAyC,CAAC,KAAA,EAAO,UAAA,EAAY,WAAA,KAAgB;AACjF,MAAA,WAAA,CAAY,KAAA,CAAM,MAAA,CAAO,UAAA,CAAW,GAAG,CAAA;AACvC,MAAA,KAAA,CAAM,OAAA,GAAU,KAAA,EAAO,UAAA,EAAY,WAAW,CAAA;AAE9C,MAAA,sBAAA,EAAuB;AAAA,IACzB,CAAA;AAGA,IAAA,MAAM,YAAA,GAAe,CAAC,IAAA,EAAkB,KAAA,KAAuB;AAC7D,MAAA,IAAI,MAAM,QAAA,EAAU;AAClB,QAAA,OAAO,KAAA;AAAA,MACT;AACA,MAAA,OAAO,MAAM,YAAA,GAAe,KAAA,CAAM,YAAA,CAAa,IAAA,EAAM,KAAK,CAAA,GAAI,IAAA;AAAA,IAChE,CAAA;AAGA,IAAA,MAAM,UAAA,GAAa,CAAC,IAAA,EAAkB,WAAA,KAA6B;AACjE,MAAA,MAAM,KAAA,GAAQ,QAAA,CAAS,KAAA,CAAM,OAAA,CAAQ,IAAI,CAAA;AACzC,MAAA,IAAI,QAAQ,CAAA,CAAA,EAAI;AACd,QAAA,QAAA,CAAS,KAAA,CAAM,MAAA,CAAO,KAAA,EAAO,CAAC,CAAA;AAC9B,QAAA,IAAA,CAAK,cAAA,EAAgB,EAAE,IAAA,EAAM,KAAA,EAAO,CAAA;AACpC,QAAA,OAAO,KAAA,CAAM,QAAA,GAAW,IAAA,EAAM,WAAW,CAAA;AAAA,MAC3C;AAAA,IACF,CAAA;AACA,IAAA,MAAM,YAAA,GAAe,OAAO,IAAA,EAAkB,WAAA,KAA6B;AACzE,MAAA,IAAI,MAAM,SAAA,EAAW;AACnB,QAAA,MAAM,YAAA,CAAa,EAAE,OAAA,EAAS,wDAAA,IAAe,YAAY;AAAA,QAAC,CAAC,CAAA;AAAA,MAC7D;AAEA,MAAA,UAAA,CAAW,MAAM,WAAW,CAAA;AAAA,IAC9B,CAAA;AAEA,IAAA,MAAM,gBAAgB,GAAA,EAAoB;AAC1C,IAAA,MAAM,eAAe,GAAA,EAAiB;AAEtC,IAAA,MAAM,SAAS,MAAM;AACnB,MAAA,aAAA,CAAc,MAAO,MAAA,EAAO;AAAA,IAC9B,CAAA;AAGA,IAAA,MAAM,KAAA,GAAQ,CAAC,IAAA,KAAqB;AAClC,MAAA,aAAA,CAAc,KAAA,CAAO,MAAM,IAAI,CAAA;AAAA,IACjC,CAAA;AAGA,IAAA,MAAM,UAAA,GAAa,CAAC,MAAA,KAA4B;AAC9C,MAAA,aAAA,CAAc,KAAA,CAAO,WAAW,MAAM,CAAA;AAAA,IACxC,CAAA;AAGA,IAAA,MAAM,WAAA,GAAc,CAAC,OAAA,KAA2B;AAC9C,MAAA,aAAA,CAAc,KAAA,CAAO,YAAY,OAAO,CAAA;AAAA,IAC1C,CAAA;AAGA,IAAA,MAAM,aAAA,GAAgB,IAAI,KAAK,CAAA;AAC/B,IAAA,MAAM,SAAA,GAAY,IAAI,CAAC,CAAA;AACvB,IAAA,MAAM,aAAA,GAAgB,CAAC,IAAA,KAAqB;AAC1C,MAAA,SAAA,CAAU,KAAA,GAAQ,QAAA,CAAS,KAAA,CAAM,OAAA,CAAQ,IAAI,CAAA;AAC7C,MAAA,aAAA,CAAc,KAAA,GAAQ,IAAA;AAAA,IACxB,CAAA;AAGA,IAAA,MAAM,EAAE,SAAA,EAAW,OAAA,EAAQ,GAAI,YAAA,CAAa,YAAA,EAAc,EAAE,MAAA,EAAQ,KAAA,CAAM,MAAA,EAAQ,QAAA,EAAU,KAAA,CAAM,UAAU,CAAA;AAC5G,IAAA,SAAA,CAAU,CAAC,KAAA,KAAkB;AAC3B,MAAA,IAAI,MAAM,OAAA,CAAQ,KAAK,CAAA,IAAK,KAAA,CAAM,SAAS,CAAA,EAAG;AAC5C,QAAA,KAAA,CAAM,QAAQ,CAAA,IAAA,KAAQ;AACpB,UAAA,IAAI,gBAAgB,IAAA,EAAM;AACxB,YAAA,MAAM,OAAA,GAAU,IAAA;AAChB,YAAA,WAAA,CAAY,OAAO,CAAA;AAGnB,YAAA,IAAI,MAAM,UAAA,EAAY;AACpB,cAAA,MAAA,EAAO;AAAA,YACT;AAAA,UACF;AAAA,QACF,CAAC,CAAA;AAAA,MACH;AAAA,IACF,CAAC,CAAA;AAED,IAAA,OAAA,CAAQ,CAAC,KAAA,KAAiB;AACxB,MAAA,OAAA,CAAQ,KAAA,CAAM,6BAAS,KAAK,CAAA;AAC5B,MAAA,YAAA,CAAa,KAAA,CAAM,KAAA,CAAM,OAAA,EAAS,cAAA,EAAM;AAAA,QACtC,IAAA,EAAM;AAAA,OACP,CAAA;AAAA,IACH,CAAC,CAAA;AAED,IAAA,QAAA,CAAa;AAAA,MACX,MAAA;AAAA,MACA,KAAA;AAAA,MACA,UAAA;AAAA,MACA,WAAA;AAAA,MACA;AAAA,KACD,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}