knt-shared 1.3.0 → 1.4.0

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 (33) hide show
  1. package/dist/components/Form/BasicForm.vue.d.ts +0 -2
  2. package/dist/components/Form/BasicForm.vue.d.ts.map +1 -1
  3. package/dist/components/Form/componentMap.d.ts +83 -0
  4. package/dist/components/Form/componentMap.d.ts.map +1 -1
  5. package/dist/components/Form/types.d.ts +0 -4
  6. package/dist/components/Form/types.d.ts.map +1 -1
  7. package/dist/components/Modal/BasicModal.vue.d.ts +1 -1
  8. package/dist/components/Table/BasicTable.vue.d.ts +29 -1
  9. package/dist/components/Table/BasicTable.vue.d.ts.map +1 -1
  10. package/dist/components/Table/components/componentMap.d.ts +83 -0
  11. package/dist/components/Table/components/componentMap.d.ts.map +1 -1
  12. package/dist/components/Upload/BasicUpload.vue.d.ts +26 -0
  13. package/dist/components/Upload/BasicUpload.vue.d.ts.map +1 -1
  14. package/dist/components/Upload/components/SortableFileItem.vue.d.ts +59 -0
  15. package/dist/components/Upload/components/SortableFileItem.vue.d.ts.map +1 -0
  16. package/dist/components/Upload/components/SortableFileList.vue.d.ts +52 -0
  17. package/dist/components/Upload/components/SortableFileList.vue.d.ts.map +1 -0
  18. package/dist/components/Upload/components/VideoPreview.vue.d.ts +66 -0
  19. package/dist/components/Upload/components/VideoPreview.vue.d.ts.map +1 -0
  20. package/dist/components/Upload/components/VideoPreviewModal.vue.d.ts +70 -0
  21. package/dist/components/Upload/components/VideoPreviewModal.vue.d.ts.map +1 -0
  22. package/dist/components/Upload/index.d.ts +3 -1
  23. package/dist/components/Upload/index.d.ts.map +1 -1
  24. package/dist/components/Upload/types.d.ts +42 -0
  25. package/dist/components/Upload/types.d.ts.map +1 -1
  26. package/dist/components/Upload/useUpload.d.ts +16 -0
  27. package/dist/components/Upload/useUpload.d.ts.map +1 -1
  28. package/dist/index.cjs.js +1471 -83
  29. package/dist/index.cjs.js.map +1 -1
  30. package/dist/index.esm.js +1472 -84
  31. package/dist/index.esm.js.map +1 -1
  32. package/dist/style.css +441 -24
  33. package/package.json +1 -1
package/dist/index.cjs.js CHANGED
@@ -24,7 +24,85 @@ var _export_sfc$1 = (sfc, props) => {
24
24
  }
25
25
  return sfc;
26
26
  };
27
- const _sfc_main$e = vue.defineComponent({
27
+ const _sfc_main$p = vue.defineComponent({
28
+ name: "IconExclamationCircle",
29
+ props: {
30
+ size: {
31
+ type: [Number, String]
32
+ },
33
+ strokeWidth: {
34
+ type: Number,
35
+ default: 4
36
+ },
37
+ strokeLinecap: {
38
+ type: String,
39
+ default: "butt",
40
+ validator: (value) => {
41
+ return ["butt", "round", "square"].includes(value);
42
+ }
43
+ },
44
+ strokeLinejoin: {
45
+ type: String,
46
+ default: "miter",
47
+ validator: (value) => {
48
+ return ["arcs", "bevel", "miter", "miter-clip", "round"].includes(value);
49
+ }
50
+ },
51
+ rotate: Number,
52
+ spin: Boolean
53
+ },
54
+ emits: {
55
+ click: (ev) => true
56
+ },
57
+ setup(props, { emit }) {
58
+ const prefixCls = getPrefixCls("icon");
59
+ const cls = vue.computed(() => [prefixCls, `${prefixCls}-exclamation-circle`, { [`${prefixCls}-spin`]: props.spin }]);
60
+ const innerStyle = vue.computed(() => {
61
+ const styles = {};
62
+ if (props.size) {
63
+ styles.fontSize = isNumber(props.size) ? `${props.size}px` : props.size;
64
+ }
65
+ if (props.rotate) {
66
+ styles.transform = `rotate(${props.rotate}deg)`;
67
+ }
68
+ return styles;
69
+ });
70
+ const onClick = (ev) => {
71
+ emit("click", ev);
72
+ };
73
+ return {
74
+ cls,
75
+ innerStyle,
76
+ onClick
77
+ };
78
+ }
79
+ });
80
+ const _hoisted_1$o = ["stroke-width", "stroke-linecap", "stroke-linejoin"];
81
+ function _sfc_render$e(_ctx, _cache, $props, $setup, $data, $options) {
82
+ return vue.openBlock(), vue.createElementBlock("svg", {
83
+ viewBox: "0 0 48 48",
84
+ fill: "none",
85
+ xmlns: "http://www.w3.org/2000/svg",
86
+ stroke: "currentColor",
87
+ class: vue.normalizeClass(_ctx.cls),
88
+ style: vue.normalizeStyle(_ctx.innerStyle),
89
+ "stroke-width": _ctx.strokeWidth,
90
+ "stroke-linecap": _ctx.strokeLinecap,
91
+ "stroke-linejoin": _ctx.strokeLinejoin,
92
+ onClick: _cache[0] || (_cache[0] = (...args) => _ctx.onClick && _ctx.onClick(...args))
93
+ }, _cache[1] || (_cache[1] = [
94
+ vue.createElementVNode("path", { d: "M24 28V14m0 16v4M6 24c0-9.941 8.059-18 18-18s18 8.059 18 18-8.059 18-18 18S6 33.941 6 24Z" }, null, -1)
95
+ ]), 14, _hoisted_1$o);
96
+ }
97
+ var _IconExclamationCircle = /* @__PURE__ */ _export_sfc$1(_sfc_main$p, [["render", _sfc_render$e]]);
98
+ const IconExclamationCircle = Object.assign(_IconExclamationCircle, {
99
+ install: (app, options) => {
100
+ var _a;
101
+ const iconPrefix = (_a = options == null ? void 0 : options.iconPrefix) != null ? _a : "";
102
+ app.component(iconPrefix + _IconExclamationCircle.name, _IconExclamationCircle);
103
+ }
104
+ });
105
+ const _sfc_main$o = vue.defineComponent({
28
106
  name: "IconPlus",
29
107
  props: {
30
108
  size: {
@@ -77,8 +155,8 @@ const _sfc_main$e = vue.defineComponent({
77
155
  };
78
156
  }
79
157
  });
80
- const _hoisted_1$d = ["stroke-width", "stroke-linecap", "stroke-linejoin"];
81
- function _sfc_render$7(_ctx, _cache, $props, $setup, $data, $options) {
158
+ const _hoisted_1$n = ["stroke-width", "stroke-linecap", "stroke-linejoin"];
159
+ function _sfc_render$d(_ctx, _cache, $props, $setup, $data, $options) {
82
160
  return vue.openBlock(), vue.createElementBlock("svg", {
83
161
  viewBox: "0 0 48 48",
84
162
  fill: "none",
@@ -92,9 +170,9 @@ function _sfc_render$7(_ctx, _cache, $props, $setup, $data, $options) {
92
170
  onClick: _cache[0] || (_cache[0] = (...args) => _ctx.onClick && _ctx.onClick(...args))
93
171
  }, _cache[1] || (_cache[1] = [
94
172
  vue.createElementVNode("path", { d: "M5 24h38M24 5v38" }, null, -1)
95
- ]), 14, _hoisted_1$d);
173
+ ]), 14, _hoisted_1$n);
96
174
  }
97
- var _IconPlus = /* @__PURE__ */ _export_sfc$1(_sfc_main$e, [["render", _sfc_render$7]]);
175
+ var _IconPlus = /* @__PURE__ */ _export_sfc$1(_sfc_main$o, [["render", _sfc_render$d]]);
98
176
  const IconPlus = Object.assign(_IconPlus, {
99
177
  install: (app, options) => {
100
178
  var _a;
@@ -102,7 +180,7 @@ const IconPlus = Object.assign(_IconPlus, {
102
180
  app.component(iconPrefix + _IconPlus.name, _IconPlus);
103
181
  }
104
182
  });
105
- const _sfc_main$d = vue.defineComponent({
183
+ const _sfc_main$n = vue.defineComponent({
106
184
  name: "IconQuestionCircle",
107
185
  props: {
108
186
  size: {
@@ -155,8 +233,8 @@ const _sfc_main$d = vue.defineComponent({
155
233
  };
156
234
  }
157
235
  });
158
- const _hoisted_1$c = ["stroke-width", "stroke-linecap", "stroke-linejoin"];
159
- function _sfc_render$6(_ctx, _cache, $props, $setup, $data, $options) {
236
+ const _hoisted_1$m = ["stroke-width", "stroke-linecap", "stroke-linejoin"];
237
+ function _sfc_render$c(_ctx, _cache, $props, $setup, $data, $options) {
160
238
  return vue.openBlock(), vue.createElementBlock("svg", {
161
239
  viewBox: "0 0 48 48",
162
240
  fill: "none",
@@ -171,9 +249,9 @@ function _sfc_render$6(_ctx, _cache, $props, $setup, $data, $options) {
171
249
  }, _cache[1] || (_cache[1] = [
172
250
  vue.createElementVNode("path", { d: "M42 24c0 9.941-8.059 18-18 18S6 33.941 6 24 14.059 6 24 6s18 8.059 18 18Z" }, null, -1),
173
251
  vue.createElementVNode("path", { d: "M24.006 31v4.008m0-6.008L24 28c0-3 3-4 4.78-6.402C30.558 19.195 28.288 15 23.987 15c-4.014 0-5.382 2.548-5.388 4.514v.465" }, null, -1)
174
- ]), 14, _hoisted_1$c);
252
+ ]), 14, _hoisted_1$m);
175
253
  }
176
- var _IconQuestionCircle = /* @__PURE__ */ _export_sfc$1(_sfc_main$d, [["render", _sfc_render$6]]);
254
+ var _IconQuestionCircle = /* @__PURE__ */ _export_sfc$1(_sfc_main$n, [["render", _sfc_render$c]]);
177
255
  const IconQuestionCircle = Object.assign(_IconQuestionCircle, {
178
256
  install: (app, options) => {
179
257
  var _a;
@@ -181,7 +259,89 @@ const IconQuestionCircle = Object.assign(_IconQuestionCircle, {
181
259
  app.component(iconPrefix + _IconQuestionCircle.name, _IconQuestionCircle);
182
260
  }
183
261
  });
184
- const _sfc_main$c = vue.defineComponent({
262
+ const _sfc_main$m = vue.defineComponent({
263
+ name: "IconEye",
264
+ props: {
265
+ size: {
266
+ type: [Number, String]
267
+ },
268
+ strokeWidth: {
269
+ type: Number,
270
+ default: 4
271
+ },
272
+ strokeLinecap: {
273
+ type: String,
274
+ default: "butt",
275
+ validator: (value) => {
276
+ return ["butt", "round", "square"].includes(value);
277
+ }
278
+ },
279
+ strokeLinejoin: {
280
+ type: String,
281
+ default: "miter",
282
+ validator: (value) => {
283
+ return ["arcs", "bevel", "miter", "miter-clip", "round"].includes(value);
284
+ }
285
+ },
286
+ rotate: Number,
287
+ spin: Boolean
288
+ },
289
+ emits: {
290
+ click: (ev) => true
291
+ },
292
+ setup(props, { emit }) {
293
+ const prefixCls = getPrefixCls("icon");
294
+ const cls = vue.computed(() => [prefixCls, `${prefixCls}-eye`, { [`${prefixCls}-spin`]: props.spin }]);
295
+ const innerStyle = vue.computed(() => {
296
+ const styles = {};
297
+ if (props.size) {
298
+ styles.fontSize = isNumber(props.size) ? `${props.size}px` : props.size;
299
+ }
300
+ if (props.rotate) {
301
+ styles.transform = `rotate(${props.rotate}deg)`;
302
+ }
303
+ return styles;
304
+ });
305
+ const onClick = (ev) => {
306
+ emit("click", ev);
307
+ };
308
+ return {
309
+ cls,
310
+ innerStyle,
311
+ onClick
312
+ };
313
+ }
314
+ });
315
+ const _hoisted_1$l = ["stroke-width", "stroke-linecap", "stroke-linejoin"];
316
+ function _sfc_render$b(_ctx, _cache, $props, $setup, $data, $options) {
317
+ return vue.openBlock(), vue.createElementBlock("svg", {
318
+ viewBox: "0 0 48 48",
319
+ fill: "none",
320
+ xmlns: "http://www.w3.org/2000/svg",
321
+ stroke: "currentColor",
322
+ class: vue.normalizeClass(_ctx.cls),
323
+ style: vue.normalizeStyle(_ctx.innerStyle),
324
+ "stroke-width": _ctx.strokeWidth,
325
+ "stroke-linecap": _ctx.strokeLinecap,
326
+ "stroke-linejoin": _ctx.strokeLinejoin,
327
+ onClick: _cache[0] || (_cache[0] = (...args) => _ctx.onClick && _ctx.onClick(...args))
328
+ }, _cache[1] || (_cache[1] = [
329
+ vue.createElementVNode("path", {
330
+ "clip-rule": "evenodd",
331
+ d: "M24 37c6.627 0 12.627-4.333 18-13-5.373-8.667-11.373-13-18-13-6.627 0-12.627 4.333-18 13 5.373 8.667 11.373 13 18 13Z"
332
+ }, null, -1),
333
+ vue.createElementVNode("path", { d: "M29 24a5 5 0 1 1-10 0 5 5 0 0 1 10 0Z" }, null, -1)
334
+ ]), 14, _hoisted_1$l);
335
+ }
336
+ var _IconEye = /* @__PURE__ */ _export_sfc$1(_sfc_main$m, [["render", _sfc_render$b]]);
337
+ const IconEye = Object.assign(_IconEye, {
338
+ install: (app, options) => {
339
+ var _a;
340
+ const iconPrefix = (_a = options == null ? void 0 : options.iconPrefix) != null ? _a : "";
341
+ app.component(iconPrefix + _IconEye.name, _IconEye);
342
+ }
343
+ });
344
+ const _sfc_main$l = vue.defineComponent({
185
345
  name: "IconRefresh",
186
346
  props: {
187
347
  size: {
@@ -234,8 +394,8 @@ const _sfc_main$c = vue.defineComponent({
234
394
  };
235
395
  }
236
396
  });
237
- const _hoisted_1$b = ["stroke-width", "stroke-linecap", "stroke-linejoin"];
238
- function _sfc_render$5(_ctx, _cache, $props, $setup, $data, $options) {
397
+ const _hoisted_1$k = ["stroke-width", "stroke-linecap", "stroke-linejoin"];
398
+ function _sfc_render$a(_ctx, _cache, $props, $setup, $data, $options) {
239
399
  return vue.openBlock(), vue.createElementBlock("svg", {
240
400
  viewBox: "0 0 48 48",
241
401
  fill: "none",
@@ -249,9 +409,9 @@ function _sfc_render$5(_ctx, _cache, $props, $setup, $data, $options) {
249
409
  onClick: _cache[0] || (_cache[0] = (...args) => _ctx.onClick && _ctx.onClick(...args))
250
410
  }, _cache[1] || (_cache[1] = [
251
411
  vue.createElementVNode("path", { d: "M38.837 18C36.463 12.136 30.715 8 24 8 15.163 8 8 15.163 8 24s7.163 16 16 16c7.455 0 13.72-5.1 15.496-12M40 8v10H30" }, null, -1)
252
- ]), 14, _hoisted_1$b);
412
+ ]), 14, _hoisted_1$k);
253
413
  }
254
- var _IconRefresh = /* @__PURE__ */ _export_sfc$1(_sfc_main$c, [["render", _sfc_render$5]]);
414
+ var _IconRefresh = /* @__PURE__ */ _export_sfc$1(_sfc_main$l, [["render", _sfc_render$a]]);
255
415
  const IconRefresh = Object.assign(_IconRefresh, {
256
416
  install: (app, options) => {
257
417
  var _a;
@@ -259,7 +419,7 @@ const IconRefresh = Object.assign(_IconRefresh, {
259
419
  app.component(iconPrefix + _IconRefresh.name, _IconRefresh);
260
420
  }
261
421
  });
262
- const _sfc_main$b = vue.defineComponent({
422
+ const _sfc_main$k = vue.defineComponent({
263
423
  name: "IconSettings",
264
424
  props: {
265
425
  size: {
@@ -312,7 +472,404 @@ const _sfc_main$b = vue.defineComponent({
312
472
  };
313
473
  }
314
474
  });
315
- const _hoisted_1$a = ["stroke-width", "stroke-linecap", "stroke-linejoin"];
475
+ const _hoisted_1$j = ["stroke-width", "stroke-linecap", "stroke-linejoin"];
476
+ function _sfc_render$9(_ctx, _cache, $props, $setup, $data, $options) {
477
+ return vue.openBlock(), vue.createElementBlock("svg", {
478
+ viewBox: "0 0 48 48",
479
+ fill: "none",
480
+ xmlns: "http://www.w3.org/2000/svg",
481
+ stroke: "currentColor",
482
+ class: vue.normalizeClass(_ctx.cls),
483
+ style: vue.normalizeStyle(_ctx.innerStyle),
484
+ "stroke-width": _ctx.strokeWidth,
485
+ "stroke-linecap": _ctx.strokeLinecap,
486
+ "stroke-linejoin": _ctx.strokeLinejoin,
487
+ onClick: _cache[0] || (_cache[0] = (...args) => _ctx.onClick && _ctx.onClick(...args))
488
+ }, _cache[1] || (_cache[1] = [
489
+ vue.createElementVNode("path", { d: "M18.797 6.732A1 1 0 0 1 19.76 6h8.48a1 1 0 0 1 .964.732l1.285 4.628a1 1 0 0 0 1.213.7l4.651-1.2a1 1 0 0 1 1.116.468l4.24 7.344a1 1 0 0 1-.153 1.2L38.193 23.3a1 1 0 0 0 0 1.402l3.364 3.427a1 1 0 0 1 .153 1.2l-4.24 7.344a1 1 0 0 1-1.116.468l-4.65-1.2a1 1 0 0 0-1.214.7l-1.285 4.628a1 1 0 0 1-.964.732h-8.48a1 1 0 0 1-.963-.732L17.51 36.64a1 1 0 0 0-1.213-.7l-4.65 1.2a1 1 0 0 1-1.116-.468l-4.24-7.344a1 1 0 0 1 .153-1.2L9.809 24.7a1 1 0 0 0 0-1.402l-3.364-3.427a1 1 0 0 1-.153-1.2l4.24-7.344a1 1 0 0 1 1.116-.468l4.65 1.2a1 1 0 0 0 1.213-.7l1.286-4.628Z" }, null, -1),
490
+ vue.createElementVNode("path", { d: "M30 24a6 6 0 1 1-12 0 6 6 0 0 1 12 0Z" }, null, -1)
491
+ ]), 14, _hoisted_1$j);
492
+ }
493
+ var _IconSettings = /* @__PURE__ */ _export_sfc$1(_sfc_main$k, [["render", _sfc_render$9]]);
494
+ const IconSettings = Object.assign(_IconSettings, {
495
+ install: (app, options) => {
496
+ var _a;
497
+ const iconPrefix = (_a = options == null ? void 0 : options.iconPrefix) != null ? _a : "";
498
+ app.component(iconPrefix + _IconSettings.name, _IconSettings);
499
+ }
500
+ });
501
+ const _sfc_main$j = vue.defineComponent({
502
+ name: "IconUpload",
503
+ props: {
504
+ size: {
505
+ type: [Number, String]
506
+ },
507
+ strokeWidth: {
508
+ type: Number,
509
+ default: 4
510
+ },
511
+ strokeLinecap: {
512
+ type: String,
513
+ default: "butt",
514
+ validator: (value) => {
515
+ return ["butt", "round", "square"].includes(value);
516
+ }
517
+ },
518
+ strokeLinejoin: {
519
+ type: String,
520
+ default: "miter",
521
+ validator: (value) => {
522
+ return ["arcs", "bevel", "miter", "miter-clip", "round"].includes(value);
523
+ }
524
+ },
525
+ rotate: Number,
526
+ spin: Boolean
527
+ },
528
+ emits: {
529
+ click: (ev) => true
530
+ },
531
+ setup(props, { emit }) {
532
+ const prefixCls = getPrefixCls("icon");
533
+ const cls = vue.computed(() => [prefixCls, `${prefixCls}-upload`, { [`${prefixCls}-spin`]: props.spin }]);
534
+ const innerStyle = vue.computed(() => {
535
+ const styles = {};
536
+ if (props.size) {
537
+ styles.fontSize = isNumber(props.size) ? `${props.size}px` : props.size;
538
+ }
539
+ if (props.rotate) {
540
+ styles.transform = `rotate(${props.rotate}deg)`;
541
+ }
542
+ return styles;
543
+ });
544
+ const onClick = (ev) => {
545
+ emit("click", ev);
546
+ };
547
+ return {
548
+ cls,
549
+ innerStyle,
550
+ onClick
551
+ };
552
+ }
553
+ });
554
+ const _hoisted_1$i = ["stroke-width", "stroke-linecap", "stroke-linejoin"];
555
+ function _sfc_render$8(_ctx, _cache, $props, $setup, $data, $options) {
556
+ return vue.openBlock(), vue.createElementBlock("svg", {
557
+ viewBox: "0 0 48 48",
558
+ fill: "none",
559
+ xmlns: "http://www.w3.org/2000/svg",
560
+ stroke: "currentColor",
561
+ class: vue.normalizeClass(_ctx.cls),
562
+ style: vue.normalizeStyle(_ctx.innerStyle),
563
+ "stroke-width": _ctx.strokeWidth,
564
+ "stroke-linecap": _ctx.strokeLinecap,
565
+ "stroke-linejoin": _ctx.strokeLinejoin,
566
+ onClick: _cache[0] || (_cache[0] = (...args) => _ctx.onClick && _ctx.onClick(...args))
567
+ }, _cache[1] || (_cache[1] = [
568
+ vue.createElementVNode("path", { d: "M14.93 17.071 24.001 8l9.071 9.071m-9.07 16.071v-25M40 35v6H8v-6" }, null, -1)
569
+ ]), 14, _hoisted_1$i);
570
+ }
571
+ var _IconUpload = /* @__PURE__ */ _export_sfc$1(_sfc_main$j, [["render", _sfc_render$8]]);
572
+ const IconUpload = Object.assign(_IconUpload, {
573
+ install: (app, options) => {
574
+ var _a;
575
+ const iconPrefix = (_a = options == null ? void 0 : options.iconPrefix) != null ? _a : "";
576
+ app.component(iconPrefix + _IconUpload.name, _IconUpload);
577
+ }
578
+ });
579
+ const _sfc_main$i = vue.defineComponent({
580
+ name: "IconDelete",
581
+ props: {
582
+ size: {
583
+ type: [Number, String]
584
+ },
585
+ strokeWidth: {
586
+ type: Number,
587
+ default: 4
588
+ },
589
+ strokeLinecap: {
590
+ type: String,
591
+ default: "butt",
592
+ validator: (value) => {
593
+ return ["butt", "round", "square"].includes(value);
594
+ }
595
+ },
596
+ strokeLinejoin: {
597
+ type: String,
598
+ default: "miter",
599
+ validator: (value) => {
600
+ return ["arcs", "bevel", "miter", "miter-clip", "round"].includes(value);
601
+ }
602
+ },
603
+ rotate: Number,
604
+ spin: Boolean
605
+ },
606
+ emits: {
607
+ click: (ev) => true
608
+ },
609
+ setup(props, { emit }) {
610
+ const prefixCls = getPrefixCls("icon");
611
+ const cls = vue.computed(() => [prefixCls, `${prefixCls}-delete`, { [`${prefixCls}-spin`]: props.spin }]);
612
+ const innerStyle = vue.computed(() => {
613
+ const styles = {};
614
+ if (props.size) {
615
+ styles.fontSize = isNumber(props.size) ? `${props.size}px` : props.size;
616
+ }
617
+ if (props.rotate) {
618
+ styles.transform = `rotate(${props.rotate}deg)`;
619
+ }
620
+ return styles;
621
+ });
622
+ const onClick = (ev) => {
623
+ emit("click", ev);
624
+ };
625
+ return {
626
+ cls,
627
+ innerStyle,
628
+ onClick
629
+ };
630
+ }
631
+ });
632
+ const _hoisted_1$h = ["stroke-width", "stroke-linecap", "stroke-linejoin"];
633
+ function _sfc_render$7(_ctx, _cache, $props, $setup, $data, $options) {
634
+ return vue.openBlock(), vue.createElementBlock("svg", {
635
+ viewBox: "0 0 48 48",
636
+ fill: "none",
637
+ xmlns: "http://www.w3.org/2000/svg",
638
+ stroke: "currentColor",
639
+ class: vue.normalizeClass(_ctx.cls),
640
+ style: vue.normalizeStyle(_ctx.innerStyle),
641
+ "stroke-width": _ctx.strokeWidth,
642
+ "stroke-linecap": _ctx.strokeLinecap,
643
+ "stroke-linejoin": _ctx.strokeLinejoin,
644
+ onClick: _cache[0] || (_cache[0] = (...args) => _ctx.onClick && _ctx.onClick(...args))
645
+ }, _cache[1] || (_cache[1] = [
646
+ vue.createElementVNode("path", { d: "M5 11h5.5m0 0v29a1 1 0 0 0 1 1h25a1 1 0 0 0 1-1V11m-27 0H16m21.5 0H43m-5.5 0H32m-16 0V7h16v4m-16 0h16M20 18v15m8-15v15" }, null, -1)
647
+ ]), 14, _hoisted_1$h);
648
+ }
649
+ var _IconDelete = /* @__PURE__ */ _export_sfc$1(_sfc_main$i, [["render", _sfc_render$7]]);
650
+ const IconDelete = Object.assign(_IconDelete, {
651
+ install: (app, options) => {
652
+ var _a;
653
+ const iconPrefix = (_a = options == null ? void 0 : options.iconPrefix) != null ? _a : "";
654
+ app.component(iconPrefix + _IconDelete.name, _IconDelete);
655
+ }
656
+ });
657
+ const _sfc_main$h = vue.defineComponent({
658
+ name: "IconLineHeight",
659
+ props: {
660
+ size: {
661
+ type: [Number, String]
662
+ },
663
+ strokeWidth: {
664
+ type: Number,
665
+ default: 4
666
+ },
667
+ strokeLinecap: {
668
+ type: String,
669
+ default: "butt",
670
+ validator: (value) => {
671
+ return ["butt", "round", "square"].includes(value);
672
+ }
673
+ },
674
+ strokeLinejoin: {
675
+ type: String,
676
+ default: "miter",
677
+ validator: (value) => {
678
+ return ["arcs", "bevel", "miter", "miter-clip", "round"].includes(value);
679
+ }
680
+ },
681
+ rotate: Number,
682
+ spin: Boolean
683
+ },
684
+ emits: {
685
+ click: (ev) => true
686
+ },
687
+ setup(props, { emit }) {
688
+ const prefixCls = getPrefixCls("icon");
689
+ const cls = vue.computed(() => [prefixCls, `${prefixCls}-line-height`, { [`${prefixCls}-spin`]: props.spin }]);
690
+ const innerStyle = vue.computed(() => {
691
+ const styles = {};
692
+ if (props.size) {
693
+ styles.fontSize = isNumber(props.size) ? `${props.size}px` : props.size;
694
+ }
695
+ if (props.rotate) {
696
+ styles.transform = `rotate(${props.rotate}deg)`;
697
+ }
698
+ return styles;
699
+ });
700
+ const onClick = (ev) => {
701
+ emit("click", ev);
702
+ };
703
+ return {
704
+ cls,
705
+ innerStyle,
706
+ onClick
707
+ };
708
+ }
709
+ });
710
+ const _hoisted_1$g = ["stroke-width", "stroke-linecap", "stroke-linejoin"];
711
+ function _sfc_render$6(_ctx, _cache, $props, $setup, $data, $options) {
712
+ return vue.openBlock(), vue.createElementBlock("svg", {
713
+ viewBox: "0 0 48 48",
714
+ fill: "none",
715
+ xmlns: "http://www.w3.org/2000/svg",
716
+ stroke: "currentColor",
717
+ class: vue.normalizeClass(_ctx.cls),
718
+ style: vue.normalizeStyle(_ctx.innerStyle),
719
+ "stroke-width": _ctx.strokeWidth,
720
+ "stroke-linecap": _ctx.strokeLinecap,
721
+ "stroke-linejoin": _ctx.strokeLinejoin,
722
+ onClick: _cache[0] || (_cache[0] = (...args) => _ctx.onClick && _ctx.onClick(...args))
723
+ }, _cache[1] || (_cache[1] = [
724
+ vue.createElementVNode("path", { d: "M4 8h14.5M33 8H18.5m0 0v34" }, null, -1),
725
+ vue.createElementVNode("path", {
726
+ d: "M39 9.5 37 13h4l-2-3.5ZM39 38.5 37 35h4l-2 3.5Z",
727
+ fill: "currentColor",
728
+ stroke: "none"
729
+ }, null, -1),
730
+ vue.createElementVNode("path", { d: "M39 13h2l-2-3.5-2 3.5h2Zm0 0v22m0 0h2l-2 3.5-2-3.5h2Z" }, null, -1)
731
+ ]), 14, _hoisted_1$g);
732
+ }
733
+ var _IconLineHeight = /* @__PURE__ */ _export_sfc$1(_sfc_main$h, [["render", _sfc_render$6]]);
734
+ const IconLineHeight = Object.assign(_IconLineHeight, {
735
+ install: (app, options) => {
736
+ var _a;
737
+ const iconPrefix = (_a = options == null ? void 0 : options.iconPrefix) != null ? _a : "";
738
+ app.component(iconPrefix + _IconLineHeight.name, _IconLineHeight);
739
+ }
740
+ });
741
+ const _sfc_main$g = vue.defineComponent({
742
+ name: "IconFullscreenExit",
743
+ props: {
744
+ size: {
745
+ type: [Number, String]
746
+ },
747
+ strokeWidth: {
748
+ type: Number,
749
+ default: 4
750
+ },
751
+ strokeLinecap: {
752
+ type: String,
753
+ default: "butt",
754
+ validator: (value) => {
755
+ return ["butt", "round", "square"].includes(value);
756
+ }
757
+ },
758
+ strokeLinejoin: {
759
+ type: String,
760
+ default: "miter",
761
+ validator: (value) => {
762
+ return ["arcs", "bevel", "miter", "miter-clip", "round"].includes(value);
763
+ }
764
+ },
765
+ rotate: Number,
766
+ spin: Boolean
767
+ },
768
+ emits: {
769
+ click: (ev) => true
770
+ },
771
+ setup(props, { emit }) {
772
+ const prefixCls = getPrefixCls("icon");
773
+ const cls = vue.computed(() => [prefixCls, `${prefixCls}-fullscreen-exit`, { [`${prefixCls}-spin`]: props.spin }]);
774
+ const innerStyle = vue.computed(() => {
775
+ const styles = {};
776
+ if (props.size) {
777
+ styles.fontSize = isNumber(props.size) ? `${props.size}px` : props.size;
778
+ }
779
+ if (props.rotate) {
780
+ styles.transform = `rotate(${props.rotate}deg)`;
781
+ }
782
+ return styles;
783
+ });
784
+ const onClick = (ev) => {
785
+ emit("click", ev);
786
+ };
787
+ return {
788
+ cls,
789
+ innerStyle,
790
+ onClick
791
+ };
792
+ }
793
+ });
794
+ const _hoisted_1$f = ["stroke-width", "stroke-linecap", "stroke-linejoin"];
795
+ function _sfc_render$5(_ctx, _cache, $props, $setup, $data, $options) {
796
+ return vue.openBlock(), vue.createElementBlock("svg", {
797
+ viewBox: "0 0 48 48",
798
+ fill: "none",
799
+ xmlns: "http://www.w3.org/2000/svg",
800
+ stroke: "currentColor",
801
+ class: vue.normalizeClass(_ctx.cls),
802
+ style: vue.normalizeStyle(_ctx.innerStyle),
803
+ "stroke-width": _ctx.strokeWidth,
804
+ "stroke-linecap": _ctx.strokeLinecap,
805
+ "stroke-linejoin": _ctx.strokeLinejoin,
806
+ onClick: _cache[0] || (_cache[0] = (...args) => _ctx.onClick && _ctx.onClick(...args))
807
+ }, _cache[1] || (_cache[1] = [
808
+ vue.createElementVNode("path", { d: "M35 6v8a1 1 0 0 0 1 1h8M13 6v8a1 1 0 0 1-1 1H4m31 27v-8a1 1 0 0 1 1-1h8m-31 9v-8a1 1 0 0 0-1-1H4" }, null, -1)
809
+ ]), 14, _hoisted_1$f);
810
+ }
811
+ var _IconFullscreenExit = /* @__PURE__ */ _export_sfc$1(_sfc_main$g, [["render", _sfc_render$5]]);
812
+ const IconFullscreenExit = Object.assign(_IconFullscreenExit, {
813
+ install: (app, options) => {
814
+ var _a;
815
+ const iconPrefix = (_a = options == null ? void 0 : options.iconPrefix) != null ? _a : "";
816
+ app.component(iconPrefix + _IconFullscreenExit.name, _IconFullscreenExit);
817
+ }
818
+ });
819
+ const _sfc_main$f = vue.defineComponent({
820
+ name: "IconFullscreen",
821
+ props: {
822
+ size: {
823
+ type: [Number, String]
824
+ },
825
+ strokeWidth: {
826
+ type: Number,
827
+ default: 4
828
+ },
829
+ strokeLinecap: {
830
+ type: String,
831
+ default: "butt",
832
+ validator: (value) => {
833
+ return ["butt", "round", "square"].includes(value);
834
+ }
835
+ },
836
+ strokeLinejoin: {
837
+ type: String,
838
+ default: "miter",
839
+ validator: (value) => {
840
+ return ["arcs", "bevel", "miter", "miter-clip", "round"].includes(value);
841
+ }
842
+ },
843
+ rotate: Number,
844
+ spin: Boolean
845
+ },
846
+ emits: {
847
+ click: (ev) => true
848
+ },
849
+ setup(props, { emit }) {
850
+ const prefixCls = getPrefixCls("icon");
851
+ const cls = vue.computed(() => [prefixCls, `${prefixCls}-fullscreen`, { [`${prefixCls}-spin`]: props.spin }]);
852
+ const innerStyle = vue.computed(() => {
853
+ const styles = {};
854
+ if (props.size) {
855
+ styles.fontSize = isNumber(props.size) ? `${props.size}px` : props.size;
856
+ }
857
+ if (props.rotate) {
858
+ styles.transform = `rotate(${props.rotate}deg)`;
859
+ }
860
+ return styles;
861
+ });
862
+ const onClick = (ev) => {
863
+ emit("click", ev);
864
+ };
865
+ return {
866
+ cls,
867
+ innerStyle,
868
+ onClick
869
+ };
870
+ }
871
+ });
872
+ const _hoisted_1$e = ["stroke-width", "stroke-linecap", "stroke-linejoin"];
316
873
  function _sfc_render$4(_ctx, _cache, $props, $setup, $data, $options) {
317
874
  return vue.openBlock(), vue.createElementBlock("svg", {
318
875
  viewBox: "0 0 48 48",
@@ -326,20 +883,19 @@ function _sfc_render$4(_ctx, _cache, $props, $setup, $data, $options) {
326
883
  "stroke-linejoin": _ctx.strokeLinejoin,
327
884
  onClick: _cache[0] || (_cache[0] = (...args) => _ctx.onClick && _ctx.onClick(...args))
328
885
  }, _cache[1] || (_cache[1] = [
329
- vue.createElementVNode("path", { d: "M18.797 6.732A1 1 0 0 1 19.76 6h8.48a1 1 0 0 1 .964.732l1.285 4.628a1 1 0 0 0 1.213.7l4.651-1.2a1 1 0 0 1 1.116.468l4.24 7.344a1 1 0 0 1-.153 1.2L38.193 23.3a1 1 0 0 0 0 1.402l3.364 3.427a1 1 0 0 1 .153 1.2l-4.24 7.344a1 1 0 0 1-1.116.468l-4.65-1.2a1 1 0 0 0-1.214.7l-1.285 4.628a1 1 0 0 1-.964.732h-8.48a1 1 0 0 1-.963-.732L17.51 36.64a1 1 0 0 0-1.213-.7l-4.65 1.2a1 1 0 0 1-1.116-.468l-4.24-7.344a1 1 0 0 1 .153-1.2L9.809 24.7a1 1 0 0 0 0-1.402l-3.364-3.427a1 1 0 0 1-.153-1.2l4.24-7.344a1 1 0 0 1 1.116-.468l4.65 1.2a1 1 0 0 0 1.213-.7l1.286-4.628Z" }, null, -1),
330
- vue.createElementVNode("path", { d: "M30 24a6 6 0 1 1-12 0 6 6 0 0 1 12 0Z" }, null, -1)
331
- ]), 14, _hoisted_1$a);
886
+ vue.createElementVNode("path", { d: "M42 17V9a1 1 0 0 0-1-1h-8M6 17V9a1 1 0 0 1 1-1h8m27 23v8a1 1 0 0 1-1 1h-8M6 31v8a1 1 0 0 0 1 1h8" }, null, -1)
887
+ ]), 14, _hoisted_1$e);
332
888
  }
333
- var _IconSettings = /* @__PURE__ */ _export_sfc$1(_sfc_main$b, [["render", _sfc_render$4]]);
334
- const IconSettings = Object.assign(_IconSettings, {
889
+ var _IconFullscreen = /* @__PURE__ */ _export_sfc$1(_sfc_main$f, [["render", _sfc_render$4]]);
890
+ const IconFullscreen = Object.assign(_IconFullscreen, {
335
891
  install: (app, options) => {
336
892
  var _a;
337
893
  const iconPrefix = (_a = options == null ? void 0 : options.iconPrefix) != null ? _a : "";
338
- app.component(iconPrefix + _IconSettings.name, _IconSettings);
894
+ app.component(iconPrefix + _IconFullscreen.name, _IconFullscreen);
339
895
  }
340
896
  });
341
- const _sfc_main$a = vue.defineComponent({
342
- name: "IconUpload",
897
+ const _sfc_main$e = vue.defineComponent({
898
+ name: "IconMute",
343
899
  props: {
344
900
  size: {
345
901
  type: [Number, String]
@@ -370,7 +926,7 @@ const _sfc_main$a = vue.defineComponent({
370
926
  },
371
927
  setup(props, { emit }) {
372
928
  const prefixCls = getPrefixCls("icon");
373
- const cls = vue.computed(() => [prefixCls, `${prefixCls}-upload`, { [`${prefixCls}-spin`]: props.spin }]);
929
+ const cls = vue.computed(() => [prefixCls, `${prefixCls}-mute`, { [`${prefixCls}-spin`]: props.spin }]);
374
930
  const innerStyle = vue.computed(() => {
375
931
  const styles = {};
376
932
  if (props.size) {
@@ -391,7 +947,7 @@ const _sfc_main$a = vue.defineComponent({
391
947
  };
392
948
  }
393
949
  });
394
- const _hoisted_1$9 = ["stroke-width", "stroke-linecap", "stroke-linejoin"];
950
+ const _hoisted_1$d = ["stroke-width", "stroke-linecap", "stroke-linejoin"];
395
951
  function _sfc_render$3(_ctx, _cache, $props, $setup, $data, $options) {
396
952
  return vue.openBlock(), vue.createElementBlock("svg", {
397
953
  viewBox: "0 0 48 48",
@@ -405,19 +961,19 @@ function _sfc_render$3(_ctx, _cache, $props, $setup, $data, $options) {
405
961
  "stroke-linejoin": _ctx.strokeLinejoin,
406
962
  onClick: _cache[0] || (_cache[0] = (...args) => _ctx.onClick && _ctx.onClick(...args))
407
963
  }, _cache[1] || (_cache[1] = [
408
- vue.createElementVNode("path", { d: "M14.93 17.071 24.001 8l9.071 9.071m-9.07 16.071v-25M40 35v6H8v-6" }, null, -1)
409
- ]), 14, _hoisted_1$9);
964
+ vue.createElementVNode("path", { d: "m19 11.5 4.833-4.35a.1.1 0 0 1 .167.075V17m-14-1H7.1a.1.1 0 0 0-.1.1v15.8a.1.1 0 0 0 .1.1H14l9.833 8.85a.1.1 0 0 0 .167-.075V31m6.071-14.071C32.535 19.393 34 23 32.799 26m2.929-14.728C41.508 17.052 42.5 25 39.123 32M6.5 6.5l35 35" }, null, -1)
965
+ ]), 14, _hoisted_1$d);
410
966
  }
411
- var _IconUpload = /* @__PURE__ */ _export_sfc$1(_sfc_main$a, [["render", _sfc_render$3]]);
412
- const IconUpload = Object.assign(_IconUpload, {
967
+ var _IconMute = /* @__PURE__ */ _export_sfc$1(_sfc_main$e, [["render", _sfc_render$3]]);
968
+ const IconMute = Object.assign(_IconMute, {
413
969
  install: (app, options) => {
414
970
  var _a;
415
971
  const iconPrefix = (_a = options == null ? void 0 : options.iconPrefix) != null ? _a : "";
416
- app.component(iconPrefix + _IconUpload.name, _IconUpload);
972
+ app.component(iconPrefix + _IconMute.name, _IconMute);
417
973
  }
418
974
  });
419
- const _sfc_main$9 = vue.defineComponent({
420
- name: "IconLineHeight",
975
+ const _sfc_main$d = vue.defineComponent({
976
+ name: "IconPause",
421
977
  props: {
422
978
  size: {
423
979
  type: [Number, String]
@@ -448,7 +1004,7 @@ const _sfc_main$9 = vue.defineComponent({
448
1004
  },
449
1005
  setup(props, { emit }) {
450
1006
  const prefixCls = getPrefixCls("icon");
451
- const cls = vue.computed(() => [prefixCls, `${prefixCls}-line-height`, { [`${prefixCls}-spin`]: props.spin }]);
1007
+ const cls = vue.computed(() => [prefixCls, `${prefixCls}-pause`, { [`${prefixCls}-spin`]: props.spin }]);
452
1008
  const innerStyle = vue.computed(() => {
453
1009
  const styles = {};
454
1010
  if (props.size) {
@@ -469,7 +1025,7 @@ const _sfc_main$9 = vue.defineComponent({
469
1025
  };
470
1026
  }
471
1027
  });
472
- const _hoisted_1$8 = ["stroke-width", "stroke-linecap", "stroke-linejoin"];
1028
+ const _hoisted_1$c = ["stroke-width", "stroke-linecap", "stroke-linejoin"];
473
1029
  function _sfc_render$2(_ctx, _cache, $props, $setup, $data, $options) {
474
1030
  return vue.openBlock(), vue.createElementBlock("svg", {
475
1031
  viewBox: "0 0 48 48",
@@ -483,25 +1039,24 @@ function _sfc_render$2(_ctx, _cache, $props, $setup, $data, $options) {
483
1039
  "stroke-linejoin": _ctx.strokeLinejoin,
484
1040
  onClick: _cache[0] || (_cache[0] = (...args) => _ctx.onClick && _ctx.onClick(...args))
485
1041
  }, _cache[1] || (_cache[1] = [
486
- vue.createElementVNode("path", { d: "M4 8h14.5M33 8H18.5m0 0v34" }, null, -1),
1042
+ vue.createElementVNode("path", { d: "M14 12h4v24h-4zM30 12h4v24h-4z" }, null, -1),
487
1043
  vue.createElementVNode("path", {
488
- d: "M39 9.5 37 13h4l-2-3.5ZM39 38.5 37 35h4l-2 3.5Z",
489
1044
  fill: "currentColor",
490
- stroke: "none"
491
- }, null, -1),
492
- vue.createElementVNode("path", { d: "M39 13h2l-2-3.5-2 3.5h2Zm0 0v22m0 0h2l-2 3.5-2-3.5h2Z" }, null, -1)
493
- ]), 14, _hoisted_1$8);
1045
+ stroke: "none",
1046
+ d: "M14 12h4v24h-4zM30 12h4v24h-4z"
1047
+ }, null, -1)
1048
+ ]), 14, _hoisted_1$c);
494
1049
  }
495
- var _IconLineHeight = /* @__PURE__ */ _export_sfc$1(_sfc_main$9, [["render", _sfc_render$2]]);
496
- const IconLineHeight = Object.assign(_IconLineHeight, {
1050
+ var _IconPause = /* @__PURE__ */ _export_sfc$1(_sfc_main$d, [["render", _sfc_render$2]]);
1051
+ const IconPause = Object.assign(_IconPause, {
497
1052
  install: (app, options) => {
498
1053
  var _a;
499
1054
  const iconPrefix = (_a = options == null ? void 0 : options.iconPrefix) != null ? _a : "";
500
- app.component(iconPrefix + _IconLineHeight.name, _IconLineHeight);
1055
+ app.component(iconPrefix + _IconPause.name, _IconPause);
501
1056
  }
502
1057
  });
503
- const _sfc_main$8 = vue.defineComponent({
504
- name: "IconFullscreenExit",
1058
+ const _sfc_main$c = vue.defineComponent({
1059
+ name: "IconPlayArrow",
505
1060
  props: {
506
1061
  size: {
507
1062
  type: [Number, String]
@@ -532,7 +1087,7 @@ const _sfc_main$8 = vue.defineComponent({
532
1087
  },
533
1088
  setup(props, { emit }) {
534
1089
  const prefixCls = getPrefixCls("icon");
535
- const cls = vue.computed(() => [prefixCls, `${prefixCls}-fullscreen-exit`, { [`${prefixCls}-spin`]: props.spin }]);
1090
+ const cls = vue.computed(() => [prefixCls, `${prefixCls}-play-arrow`, { [`${prefixCls}-spin`]: props.spin }]);
536
1091
  const innerStyle = vue.computed(() => {
537
1092
  const styles = {};
538
1093
  if (props.size) {
@@ -553,7 +1108,7 @@ const _sfc_main$8 = vue.defineComponent({
553
1108
  };
554
1109
  }
555
1110
  });
556
- const _hoisted_1$7 = ["stroke-width", "stroke-linecap", "stroke-linejoin"];
1111
+ const _hoisted_1$b = ["stroke-width", "stroke-linecap", "stroke-linejoin"];
557
1112
  function _sfc_render$1(_ctx, _cache, $props, $setup, $data, $options) {
558
1113
  return vue.openBlock(), vue.createElementBlock("svg", {
559
1114
  viewBox: "0 0 48 48",
@@ -567,19 +1122,19 @@ function _sfc_render$1(_ctx, _cache, $props, $setup, $data, $options) {
567
1122
  "stroke-linejoin": _ctx.strokeLinejoin,
568
1123
  onClick: _cache[0] || (_cache[0] = (...args) => _ctx.onClick && _ctx.onClick(...args))
569
1124
  }, _cache[1] || (_cache[1] = [
570
- vue.createElementVNode("path", { d: "M35 6v8a1 1 0 0 0 1 1h8M13 6v8a1 1 0 0 1-1 1H4m31 27v-8a1 1 0 0 1 1-1h8m-31 9v-8a1 1 0 0 0-1-1H4" }, null, -1)
571
- ]), 14, _hoisted_1$7);
1125
+ vue.createElementVNode("path", { d: "M12.533 7.965A1 1 0 0 0 11 8.81v30.377a1 1 0 0 0 1.533.846L36.656 24.84a1 1 0 0 0 0-1.692L12.533 7.965Z" }, null, -1)
1126
+ ]), 14, _hoisted_1$b);
572
1127
  }
573
- var _IconFullscreenExit = /* @__PURE__ */ _export_sfc$1(_sfc_main$8, [["render", _sfc_render$1]]);
574
- const IconFullscreenExit = Object.assign(_IconFullscreenExit, {
1128
+ var _IconPlayArrow = /* @__PURE__ */ _export_sfc$1(_sfc_main$c, [["render", _sfc_render$1]]);
1129
+ const IconPlayArrow = Object.assign(_IconPlayArrow, {
575
1130
  install: (app, options) => {
576
1131
  var _a;
577
1132
  const iconPrefix = (_a = options == null ? void 0 : options.iconPrefix) != null ? _a : "";
578
- app.component(iconPrefix + _IconFullscreenExit.name, _IconFullscreenExit);
1133
+ app.component(iconPrefix + _IconPlayArrow.name, _IconPlayArrow);
579
1134
  }
580
1135
  });
581
- const _sfc_main$7 = vue.defineComponent({
582
- name: "IconFullscreen",
1136
+ const _sfc_main$b = vue.defineComponent({
1137
+ name: "IconSound",
583
1138
  props: {
584
1139
  size: {
585
1140
  type: [Number, String]
@@ -610,7 +1165,7 @@ const _sfc_main$7 = vue.defineComponent({
610
1165
  },
611
1166
  setup(props, { emit }) {
612
1167
  const prefixCls = getPrefixCls("icon");
613
- const cls = vue.computed(() => [prefixCls, `${prefixCls}-fullscreen`, { [`${prefixCls}-spin`]: props.spin }]);
1168
+ const cls = vue.computed(() => [prefixCls, `${prefixCls}-sound`, { [`${prefixCls}-spin`]: props.spin }]);
614
1169
  const innerStyle = vue.computed(() => {
615
1170
  const styles = {};
616
1171
  if (props.size) {
@@ -631,7 +1186,7 @@ const _sfc_main$7 = vue.defineComponent({
631
1186
  };
632
1187
  }
633
1188
  });
634
- const _hoisted_1$6 = ["stroke-width", "stroke-linecap", "stroke-linejoin"];
1189
+ const _hoisted_1$a = ["stroke-width", "stroke-linecap", "stroke-linejoin"];
635
1190
  function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
636
1191
  return vue.openBlock(), vue.createElementBlock("svg", {
637
1192
  viewBox: "0 0 48 48",
@@ -645,23 +1200,684 @@ function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
645
1200
  "stroke-linejoin": _ctx.strokeLinejoin,
646
1201
  onClick: _cache[0] || (_cache[0] = (...args) => _ctx.onClick && _ctx.onClick(...args))
647
1202
  }, _cache[1] || (_cache[1] = [
648
- vue.createElementVNode("path", { d: "M42 17V9a1 1 0 0 0-1-1h-8M6 17V9a1 1 0 0 1 1-1h8m27 23v8a1 1 0 0 1-1 1h-8M6 31v8a1 1 0 0 0 1 1h8" }, null, -1)
649
- ]), 14, _hoisted_1$6);
1203
+ vue.createElementVNode("path", { d: "m14 16 10-9v34l-10-9H6V16h8Z" }, null, -1),
1204
+ vue.createElementVNode("path", { d: "M31.071 16.929c3.905 3.905 3.905 10.237 0 14.142M36.727 11.272c7.03 7.03 7.03 18.426 0 25.456" }, null, -1)
1205
+ ]), 14, _hoisted_1$a);
650
1206
  }
651
- var _IconFullscreen = /* @__PURE__ */ _export_sfc$1(_sfc_main$7, [["render", _sfc_render]]);
652
- const IconFullscreen = Object.assign(_IconFullscreen, {
1207
+ var _IconSound = /* @__PURE__ */ _export_sfc$1(_sfc_main$b, [["render", _sfc_render]]);
1208
+ const IconSound = Object.assign(_IconSound, {
653
1209
  install: (app, options) => {
654
1210
  var _a;
655
1211
  const iconPrefix = (_a = options == null ? void 0 : options.iconPrefix) != null ? _a : "";
656
- app.component(iconPrefix + _IconFullscreen.name, _IconFullscreen);
1212
+ app.component(iconPrefix + _IconSound.name, _IconSound);
1213
+ }
1214
+ });
1215
+ const _hoisted_1$9 = ["draggable"];
1216
+ const _hoisted_2$7 = ["src", "alt"];
1217
+ const _hoisted_3$5 = {
1218
+ key: 1,
1219
+ class: "upload-progress"
1220
+ };
1221
+ const _hoisted_4$4 = {
1222
+ key: 2,
1223
+ class: "file-mask"
1224
+ };
1225
+ const _hoisted_5$4 = { class: "file-actions" };
1226
+ const _hoisted_6$3 = {
1227
+ key: 3,
1228
+ class: "error-tip"
1229
+ };
1230
+ const _sfc_main$a = /* @__PURE__ */ vue.defineComponent({
1231
+ ...{
1232
+ name: "SortableFileItem"
1233
+ },
1234
+ __name: "SortableFileItem",
1235
+ props: {
1236
+ file: {},
1237
+ isDragging: { type: Boolean, default: false },
1238
+ isOver: { type: Boolean, default: false },
1239
+ cardSize: { default: 80 },
1240
+ disabled: { type: Boolean, default: false }
1241
+ },
1242
+ emits: ["dragstart", "dragend", "preview", "remove"],
1243
+ setup(__props, { emit: __emit }) {
1244
+ const props = __props;
1245
+ const emit = __emit;
1246
+ const isVideoFile = (file) => {
1247
+ if (!file.url && !file.name) return false;
1248
+ const fileName = file.name || "";
1249
+ const videoExtensions = [".mp4", ".avi", ".mov", ".wmv", ".flv", ".mkv", ".webm", ".m4v"];
1250
+ return videoExtensions.some((ext) => fileName.toLowerCase().endsWith(ext));
1251
+ };
1252
+ const handleDragStart = (event) => {
1253
+ if (props.disabled) {
1254
+ event.preventDefault();
1255
+ return;
1256
+ }
1257
+ emit("dragstart", event);
1258
+ };
1259
+ const handleDragEnd = (event) => {
1260
+ emit("dragend", event);
1261
+ };
1262
+ const handlePreview = () => {
1263
+ emit("preview", props.file);
1264
+ };
1265
+ const handleRemove = () => {
1266
+ if (!props.disabled) {
1267
+ emit("remove", props.file);
1268
+ }
1269
+ };
1270
+ return (_ctx, _cache) => {
1271
+ const _component_a_progress = vue.resolveComponent("a-progress");
1272
+ return vue.openBlock(), vue.createElementBlock("div", {
1273
+ class: vue.normalizeClass(["sortable-file-item", {
1274
+ "is-dragging": __props.isDragging,
1275
+ "is-over": __props.isOver,
1276
+ "is-uploading": __props.file.status === "uploading",
1277
+ "is-error": __props.file.status === "error",
1278
+ "is-disabled": __props.disabled,
1279
+ "is-video": isVideoFile(__props.file)
1280
+ }]),
1281
+ draggable: !__props.disabled,
1282
+ style: vue.normalizeStyle({
1283
+ width: `${__props.cardSize}px`,
1284
+ height: `${__props.cardSize}px`
1285
+ }),
1286
+ onDragstart: handleDragStart,
1287
+ onDragend: handleDragEnd
1288
+ }, [
1289
+ __props.file.url ? (vue.openBlock(), vue.createElementBlock("img", {
1290
+ key: 0,
1291
+ src: __props.file.url,
1292
+ alt: __props.file.name,
1293
+ class: "file-image"
1294
+ }, null, 8, _hoisted_2$7)) : vue.createCommentVNode("", true),
1295
+ __props.file.status === "uploading" ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_3$5, [
1296
+ vue.createVNode(_component_a_progress, {
1297
+ percent: __props.file.percent || 0,
1298
+ size: "mini"
1299
+ }, null, 8, ["percent"])
1300
+ ])) : vue.createCommentVNode("", true),
1301
+ __props.file.status === "done" ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_4$4, [
1302
+ vue.createElementVNode("div", _hoisted_5$4, [
1303
+ vue.createVNode(vue.unref(IconEye), {
1304
+ class: "action-icon",
1305
+ onClick: handlePreview
1306
+ }),
1307
+ !__props.disabled ? (vue.openBlock(), vue.createBlock(vue.unref(IconDelete), {
1308
+ key: 0,
1309
+ class: "action-icon",
1310
+ onClick: handleRemove
1311
+ })) : vue.createCommentVNode("", true)
1312
+ ])
1313
+ ])) : vue.createCommentVNode("", true),
1314
+ __props.file.status === "error" ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_6$3, [
1315
+ vue.createVNode(vue.unref(IconExclamationCircle))
1316
+ ])) : vue.createCommentVNode("", true)
1317
+ ], 46, _hoisted_1$9);
1318
+ };
1319
+ }
1320
+ });
1321
+ const _export_sfc = (sfc, props) => {
1322
+ const target = sfc.__vccOpts || sfc;
1323
+ for (const [key, val] of props) {
1324
+ target[key] = val;
1325
+ }
1326
+ return target;
1327
+ };
1328
+ const SortableFileItem = /* @__PURE__ */ _export_sfc(_sfc_main$a, [["__scopeId", "data-v-f3ec7e11"]]);
1329
+ const _hoisted_1$8 = { class: "sortable-file-list" };
1330
+ const _sfc_main$9 = /* @__PURE__ */ vue.defineComponent({
1331
+ ...{
1332
+ name: "SortableFileList"
1333
+ },
1334
+ __name: "SortableFileList",
1335
+ props: {
1336
+ fileList: { default: () => [] },
1337
+ cardSize: { default: 80 },
1338
+ disabled: { type: Boolean, default: false }
1339
+ },
1340
+ emits: ["update:fileList", "sortChange", "preview", "remove"],
1341
+ setup(__props, { emit: __emit }) {
1342
+ const props = __props;
1343
+ const emit = __emit;
1344
+ const dragState = vue.reactive({
1345
+ dragIndex: null,
1346
+ overIndex: null
1347
+ });
1348
+ const handleDragStart = (event, index) => {
1349
+ if (props.disabled) {
1350
+ event.preventDefault();
1351
+ return;
1352
+ }
1353
+ dragState.dragIndex = index;
1354
+ event.dataTransfer.effectAllowed = "move";
1355
+ event.dataTransfer.setData("text/plain", String(index));
1356
+ };
1357
+ const handleDragOver = (event, index) => {
1358
+ if (props.disabled) {
1359
+ return;
1360
+ }
1361
+ event.preventDefault();
1362
+ dragState.overIndex = index;
1363
+ event.dataTransfer.dropEffect = "move";
1364
+ };
1365
+ const handleDrop = (event, index) => {
1366
+ if (props.disabled) {
1367
+ return;
1368
+ }
1369
+ event.preventDefault();
1370
+ const fromIndex = dragState.dragIndex;
1371
+ const toIndex = index;
1372
+ if (fromIndex === null || fromIndex === toIndex) {
1373
+ return;
1374
+ }
1375
+ const newFileList = [...props.fileList];
1376
+ const [movedItem] = newFileList.splice(fromIndex, 1);
1377
+ newFileList.splice(toIndex, 0, movedItem);
1378
+ emit("update:fileList", newFileList);
1379
+ emit("sortChange", newFileList);
1380
+ dragState.dragIndex = null;
1381
+ dragState.overIndex = null;
1382
+ };
1383
+ const handleDragEnd = () => {
1384
+ dragState.dragIndex = null;
1385
+ dragState.overIndex = null;
1386
+ };
1387
+ const handlePreview = (file) => {
1388
+ emit("preview", file);
1389
+ };
1390
+ const handleRemove = (file) => {
1391
+ emit("remove", file);
1392
+ };
1393
+ return (_ctx, _cache) => {
1394
+ return vue.openBlock(), vue.createElementBlock("div", _hoisted_1$8, [
1395
+ (vue.openBlock(true), vue.createElementBlock(vue.Fragment, null, vue.renderList(__props.fileList, (file, index) => {
1396
+ return vue.openBlock(), vue.createBlock(SortableFileItem, {
1397
+ key: file.uid,
1398
+ file,
1399
+ "card-size": __props.cardSize,
1400
+ disabled: __props.disabled,
1401
+ "is-dragging": dragState.dragIndex === index,
1402
+ "is-over": dragState.overIndex === index,
1403
+ onDragstart: ($event) => handleDragStart($event, index),
1404
+ onDragover: vue.withModifiers(($event) => handleDragOver($event, index), ["prevent"]),
1405
+ onDrop: ($event) => handleDrop($event, index),
1406
+ onDragend: handleDragEnd,
1407
+ onPreview: handlePreview,
1408
+ onRemove: handleRemove
1409
+ }, null, 8, ["file", "card-size", "disabled", "is-dragging", "is-over", "onDragstart", "onDragover", "onDrop"]);
1410
+ }), 128))
1411
+ ]);
1412
+ };
1413
+ }
1414
+ });
1415
+ const SortableFileList = /* @__PURE__ */ _export_sfc(_sfc_main$9, [["__scopeId", "data-v-1ede8f45"]]);
1416
+ const _hoisted_1$7 = ["src", "autoplay", "loop", "muted", "preload"];
1417
+ const _hoisted_2$6 = {
1418
+ key: 0,
1419
+ class: "play-overlay"
1420
+ };
1421
+ const _hoisted_3$4 = { class: "play-button" };
1422
+ const _hoisted_4$3 = {
1423
+ key: 1,
1424
+ class: "loading-overlay"
1425
+ };
1426
+ const _hoisted_5$3 = { class: "progress-bar" };
1427
+ const _hoisted_6$2 = { class: "controls-bottom" };
1428
+ const _hoisted_7$2 = { class: "controls-left" };
1429
+ const _hoisted_8 = { class: "volume-slider-container" };
1430
+ const _hoisted_9 = { class: "time-display" };
1431
+ const _hoisted_10 = { class: "controls-right" };
1432
+ const _hoisted_11 = { class: "control-button" };
1433
+ const _sfc_main$8 = /* @__PURE__ */ vue.defineComponent({
1434
+ ...{
1435
+ name: "VideoPreview"
1436
+ },
1437
+ __name: "VideoPreview",
1438
+ props: {
1439
+ videoUrl: {},
1440
+ playerOptions: { default: () => ({
1441
+ autoplay: false,
1442
+ loop: false,
1443
+ muted: false,
1444
+ controls: true,
1445
+ preload: "metadata"
1446
+ }) }
1447
+ },
1448
+ emits: ["play", "pause", "ended", "timeupdate"],
1449
+ setup(__props, { expose: __expose, emit: __emit }) {
1450
+ var _a;
1451
+ const props = __props;
1452
+ const emit = __emit;
1453
+ const videoRef = vue.ref();
1454
+ const isPlaying = vue.ref(false);
1455
+ const isLoading = vue.ref(true);
1456
+ const currentTime = vue.ref(0);
1457
+ const duration = vue.ref(0);
1458
+ const loadedPercent = vue.ref(0);
1459
+ const volume = vue.ref(100);
1460
+ const isMuted = vue.ref(((_a = props.playerOptions) == null ? void 0 : _a.muted) || false);
1461
+ const showVolumeSlider = vue.ref(false);
1462
+ const playbackRate = vue.ref(1);
1463
+ const playbackRates = [0.5, 0.75, 1, 1.25, 1.5, 2];
1464
+ const isFullscreen = vue.ref(false);
1465
+ const isDraggingProgress = vue.ref(false);
1466
+ const playedPercent = vue.computed(() => {
1467
+ if (duration.value === 0) return 0;
1468
+ return currentTime.value / duration.value * 100;
1469
+ });
1470
+ const formatTime = (seconds) => {
1471
+ if (!isFinite(seconds)) return "00:00";
1472
+ const mins = Math.floor(seconds / 60);
1473
+ const secs = Math.floor(seconds % 60);
1474
+ return `${String(mins).padStart(2, "0")}:${String(secs).padStart(2, "0")}`;
1475
+ };
1476
+ const togglePlay = () => {
1477
+ if (!videoRef.value) return;
1478
+ if (isPlaying.value) {
1479
+ videoRef.value.pause();
1480
+ emit("pause");
1481
+ } else {
1482
+ videoRef.value.play();
1483
+ emit("play");
1484
+ }
1485
+ };
1486
+ const toggleMute = () => {
1487
+ if (!videoRef.value) return;
1488
+ isMuted.value = !isMuted.value;
1489
+ videoRef.value.muted = isMuted.value;
1490
+ };
1491
+ const handleVolumeInput = (event) => {
1492
+ if (!videoRef.value) return;
1493
+ const target = event.target;
1494
+ const newVolume = Number(target.value);
1495
+ volume.value = newVolume;
1496
+ videoRef.value.volume = newVolume / 100;
1497
+ if (newVolume > 0 && isMuted.value) {
1498
+ isMuted.value = false;
1499
+ }
1500
+ };
1501
+ const setPlaybackRate = (rate) => {
1502
+ if (!videoRef.value) return;
1503
+ playbackRate.value = rate;
1504
+ videoRef.value.playbackRate = rate;
1505
+ };
1506
+ const toggleFullscreen = async () => {
1507
+ var _a2, _b;
1508
+ const container = (_b = (_a2 = videoRef.value) == null ? void 0 : _a2.parentElement) == null ? void 0 : _b.parentElement;
1509
+ if (!container) return;
1510
+ try {
1511
+ if (!isFullscreen.value) {
1512
+ if (container.requestFullscreen) {
1513
+ await container.requestFullscreen();
1514
+ } else if (container.webkitRequestFullscreen) {
1515
+ await container.webkitRequestFullscreen();
1516
+ } else if (container.mozRequestFullScreen) {
1517
+ await container.mozRequestFullScreen();
1518
+ } else if (container.msRequestFullscreen) {
1519
+ await container.msRequestFullscreen();
1520
+ }
1521
+ } else {
1522
+ if (document.exitFullscreen) {
1523
+ await document.exitFullscreen();
1524
+ } else if (document.webkitExitFullscreen) {
1525
+ await document.webkitExitFullscreen();
1526
+ } else if (document.mozCancelFullScreen) {
1527
+ await document.mozCancelFullScreen();
1528
+ } else if (document.msExitFullscreen) {
1529
+ await document.msExitFullscreen();
1530
+ }
1531
+ }
1532
+ } catch (error) {
1533
+ console.error("全屏切换失败:", error);
1534
+ }
1535
+ };
1536
+ const handleProgressClick = (event) => {
1537
+ if (!videoRef.value) return;
1538
+ const target = event.currentTarget;
1539
+ const rect = target.getBoundingClientRect();
1540
+ const percent = (event.clientX - rect.left) / rect.width;
1541
+ videoRef.value.currentTime = percent * duration.value;
1542
+ };
1543
+ const handleProgressMouseDown = (event) => {
1544
+ event.preventDefault();
1545
+ isDraggingProgress.value = true;
1546
+ document.addEventListener("mousemove", handleProgressMouseMove);
1547
+ document.addEventListener("mouseup", handleProgressMouseUp);
1548
+ };
1549
+ const handleProgressMouseMove = (event) => {
1550
+ var _a2, _b;
1551
+ if (!isDraggingProgress.value || !videoRef.value) return;
1552
+ const container = (_b = (_a2 = videoRef.value.parentElement) == null ? void 0 : _a2.parentElement) == null ? void 0 : _b.querySelector(".progress-bar-container");
1553
+ if (!container) return;
1554
+ const rect = container.getBoundingClientRect();
1555
+ let percent = (event.clientX - rect.left) / rect.width;
1556
+ percent = Math.max(0, Math.min(1, percent));
1557
+ videoRef.value.currentTime = percent * duration.value;
1558
+ };
1559
+ const handleProgressMouseUp = () => {
1560
+ isDraggingProgress.value = false;
1561
+ document.removeEventListener("mousemove", handleProgressMouseMove);
1562
+ document.removeEventListener("mouseup", handleProgressMouseUp);
1563
+ };
1564
+ const handleLoadedMetadata = () => {
1565
+ if (!videoRef.value) return;
1566
+ duration.value = videoRef.value.duration;
1567
+ isLoading.value = false;
1568
+ };
1569
+ const handleTimeUpdate = () => {
1570
+ if (!videoRef.value || isDraggingProgress.value) return;
1571
+ currentTime.value = videoRef.value.currentTime;
1572
+ if (videoRef.value.buffered.length > 0) {
1573
+ const bufferedEnd = videoRef.value.buffered.end(videoRef.value.buffered.length - 1);
1574
+ loadedPercent.value = bufferedEnd / duration.value * 100;
1575
+ }
1576
+ emit("timeupdate", currentTime.value);
1577
+ };
1578
+ const handleEnded = () => {
1579
+ isPlaying.value = false;
1580
+ emit("ended");
1581
+ };
1582
+ const handleVolumeChange = () => {
1583
+ if (!videoRef.value) return;
1584
+ volume.value = videoRef.value.volume * 100;
1585
+ isMuted.value = videoRef.value.muted;
1586
+ };
1587
+ const handleFullscreenChange = () => {
1588
+ isFullscreen.value = !!(document.fullscreenElement || document.webkitFullscreenElement || document.mozFullScreenElement || document.msFullscreenElement);
1589
+ };
1590
+ vue.watch(
1591
+ () => props.videoUrl,
1592
+ () => {
1593
+ isLoading.value = true;
1594
+ currentTime.value = 0;
1595
+ duration.value = 0;
1596
+ isPlaying.value = false;
1597
+ }
1598
+ );
1599
+ vue.onMounted(() => {
1600
+ document.addEventListener("fullscreenchange", handleFullscreenChange);
1601
+ document.addEventListener("webkitfullscreenchange", handleFullscreenChange);
1602
+ document.addEventListener("mozfullscreenchange", handleFullscreenChange);
1603
+ document.addEventListener("MSFullscreenChange", handleFullscreenChange);
1604
+ });
1605
+ vue.onUnmounted(() => {
1606
+ document.removeEventListener("fullscreenchange", handleFullscreenChange);
1607
+ document.removeEventListener("webkitfullscreenchange", handleFullscreenChange);
1608
+ document.removeEventListener("mozfullscreenchange", handleFullscreenChange);
1609
+ document.removeEventListener("MSFullscreenChange", handleFullscreenChange);
1610
+ document.removeEventListener("mousemove", handleProgressMouseMove);
1611
+ document.removeEventListener("mouseup", handleProgressMouseUp);
1612
+ });
1613
+ __expose({
1614
+ play: () => {
1615
+ var _a2;
1616
+ return (_a2 = videoRef.value) == null ? void 0 : _a2.play();
1617
+ },
1618
+ pause: () => {
1619
+ var _a2;
1620
+ return (_a2 = videoRef.value) == null ? void 0 : _a2.pause();
1621
+ },
1622
+ togglePlay,
1623
+ toggleMute,
1624
+ setPlaybackRate,
1625
+ toggleFullscreen
1626
+ });
1627
+ return (_ctx, _cache) => {
1628
+ var _a2, _b, _c, _d;
1629
+ const _component_a_spin = vue.resolveComponent("a-spin");
1630
+ const _component_a_doption = vue.resolveComponent("a-doption");
1631
+ const _component_a_dropdown = vue.resolveComponent("a-dropdown");
1632
+ return vue.openBlock(), vue.createElementBlock("div", {
1633
+ class: vue.normalizeClass(["video-preview", { fullscreen: isFullscreen.value }])
1634
+ }, [
1635
+ vue.createElementVNode("div", {
1636
+ class: "video-container",
1637
+ onClick: togglePlay
1638
+ }, [
1639
+ vue.createElementVNode("video", {
1640
+ ref_key: "videoRef",
1641
+ ref: videoRef,
1642
+ src: __props.videoUrl,
1643
+ autoplay: (_a2 = __props.playerOptions) == null ? void 0 : _a2.autoplay,
1644
+ loop: (_b = __props.playerOptions) == null ? void 0 : _b.loop,
1645
+ muted: isMuted.value,
1646
+ preload: ((_c = __props.playerOptions) == null ? void 0 : _c.preload) || "metadata",
1647
+ onLoadedmetadata: handleLoadedMetadata,
1648
+ onTimeupdate: handleTimeUpdate,
1649
+ onPlay: _cache[0] || (_cache[0] = ($event) => isPlaying.value = true),
1650
+ onPause: _cache[1] || (_cache[1] = ($event) => isPlaying.value = false),
1651
+ onEnded: handleEnded,
1652
+ onVolumechange: handleVolumeChange
1653
+ }, null, 40, _hoisted_1$7),
1654
+ !isPlaying.value && !isLoading.value ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_2$6, [
1655
+ vue.createElementVNode("div", _hoisted_3$4, [
1656
+ vue.createVNode(vue.unref(IconPlayArrow), { size: 48 })
1657
+ ])
1658
+ ])) : vue.createCommentVNode("", true),
1659
+ isLoading.value ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_4$3, [
1660
+ vue.createVNode(_component_a_spin, { size: 48 })
1661
+ ])) : vue.createCommentVNode("", true)
1662
+ ]),
1663
+ ((_d = __props.playerOptions) == null ? void 0 : _d.controls) !== false ? (vue.openBlock(), vue.createElementBlock("div", {
1664
+ key: 0,
1665
+ class: "video-controls",
1666
+ onClick: _cache[5] || (_cache[5] = vue.withModifiers(() => {
1667
+ }, ["stop"]))
1668
+ }, [
1669
+ vue.createElementVNode("div", {
1670
+ class: "progress-bar-container",
1671
+ onClick: handleProgressClick
1672
+ }, [
1673
+ vue.createElementVNode("div", _hoisted_5$3, [
1674
+ vue.createElementVNode("div", {
1675
+ class: "progress-bar-loaded",
1676
+ style: vue.normalizeStyle({ width: `${loadedPercent.value}%` })
1677
+ }, null, 4),
1678
+ vue.createElementVNode("div", {
1679
+ class: "progress-bar-played",
1680
+ style: vue.normalizeStyle({ width: `${playedPercent.value}%` })
1681
+ }, null, 4),
1682
+ vue.createElementVNode("div", {
1683
+ class: "progress-bar-handle",
1684
+ style: vue.normalizeStyle({ left: `${playedPercent.value}%` }),
1685
+ onMousedown: handleProgressMouseDown
1686
+ }, null, 36)
1687
+ ])
1688
+ ]),
1689
+ vue.createElementVNode("div", _hoisted_6$2, [
1690
+ vue.createElementVNode("div", _hoisted_7$2, [
1691
+ vue.createElementVNode("button", {
1692
+ class: "control-button",
1693
+ onClick: togglePlay
1694
+ }, [
1695
+ isPlaying.value ? (vue.openBlock(), vue.createBlock(vue.unref(IconPause), {
1696
+ key: 0,
1697
+ size: 20
1698
+ })) : (vue.openBlock(), vue.createBlock(vue.unref(IconPlayArrow), {
1699
+ key: 1,
1700
+ size: 20
1701
+ }))
1702
+ ]),
1703
+ vue.createElementVNode("div", {
1704
+ class: "volume-control",
1705
+ onMouseenter: _cache[3] || (_cache[3] = ($event) => showVolumeSlider.value = true),
1706
+ onMouseleave: _cache[4] || (_cache[4] = ($event) => showVolumeSlider.value = false)
1707
+ }, [
1708
+ vue.createElementVNode("button", {
1709
+ class: "control-button",
1710
+ onClick: toggleMute
1711
+ }, [
1712
+ isMuted.value || volume.value === 0 ? (vue.openBlock(), vue.createBlock(vue.unref(IconMute), {
1713
+ key: 0,
1714
+ size: 20
1715
+ })) : (vue.openBlock(), vue.createBlock(vue.unref(IconSound), {
1716
+ key: 1,
1717
+ size: 20
1718
+ }))
1719
+ ]),
1720
+ vue.withDirectives(vue.createElementVNode("div", _hoisted_8, [
1721
+ vue.withDirectives(vue.createElementVNode("input", {
1722
+ "onUpdate:modelValue": _cache[2] || (_cache[2] = ($event) => volume.value = $event),
1723
+ type: "range",
1724
+ min: "0",
1725
+ max: "100",
1726
+ class: "volume-slider",
1727
+ onInput: handleVolumeInput
1728
+ }, null, 544), [
1729
+ [
1730
+ vue.vModelText,
1731
+ volume.value,
1732
+ void 0,
1733
+ { number: true }
1734
+ ]
1735
+ ])
1736
+ ], 512), [
1737
+ [vue.vShow, showVolumeSlider.value]
1738
+ ])
1739
+ ], 32),
1740
+ vue.createElementVNode("span", _hoisted_9, vue.toDisplayString(formatTime(currentTime.value)) + " / " + vue.toDisplayString(formatTime(duration.value)), 1)
1741
+ ]),
1742
+ vue.createElementVNode("div", _hoisted_10, [
1743
+ vue.createVNode(_component_a_dropdown, { "popup-max-height": false }, {
1744
+ content: vue.withCtx(() => [
1745
+ (vue.openBlock(), vue.createElementBlock(vue.Fragment, null, vue.renderList(playbackRates, (rate) => {
1746
+ return vue.createVNode(_component_a_doption, {
1747
+ key: rate,
1748
+ value: rate,
1749
+ onClick: ($event) => setPlaybackRate(rate)
1750
+ }, {
1751
+ default: vue.withCtx(() => [
1752
+ vue.createTextVNode(vue.toDisplayString(rate) + "x ", 1)
1753
+ ]),
1754
+ _: 2
1755
+ }, 1032, ["value", "onClick"]);
1756
+ }), 64))
1757
+ ]),
1758
+ default: vue.withCtx(() => [
1759
+ vue.createElementVNode("button", _hoisted_11, vue.toDisplayString(playbackRate.value) + "x ", 1)
1760
+ ]),
1761
+ _: 1
1762
+ }),
1763
+ vue.createElementVNode("button", {
1764
+ class: "control-button",
1765
+ onClick: toggleFullscreen
1766
+ }, [
1767
+ isFullscreen.value ? (vue.openBlock(), vue.createBlock(vue.unref(IconFullscreenExit), {
1768
+ key: 0,
1769
+ size: 20
1770
+ })) : (vue.openBlock(), vue.createBlock(vue.unref(IconFullscreen), {
1771
+ key: 1,
1772
+ size: 20
1773
+ }))
1774
+ ])
1775
+ ])
1776
+ ])
1777
+ ])) : vue.createCommentVNode("", true)
1778
+ ], 2);
1779
+ };
1780
+ }
1781
+ });
1782
+ const VideoPreview = /* @__PURE__ */ _export_sfc(_sfc_main$8, [["__scopeId", "data-v-4056caea"]]);
1783
+ const _hoisted_1$6 = { class: "video-modal-title" };
1784
+ const _hoisted_2$5 = { class: "file-name" };
1785
+ const _hoisted_3$3 = { class: "video-modal-content" };
1786
+ const _sfc_main$7 = /* @__PURE__ */ vue.defineComponent({
1787
+ ...{
1788
+ name: "VideoPreviewModal"
1789
+ },
1790
+ __name: "VideoPreviewModal",
1791
+ props: {
1792
+ visible: { type: Boolean, default: false },
1793
+ videoUrl: { default: "" },
1794
+ fileName: { default: "" },
1795
+ playerOptions: { default: () => ({
1796
+ autoplay: false,
1797
+ loop: false,
1798
+ muted: false,
1799
+ controls: true,
1800
+ preload: "metadata"
1801
+ }) }
1802
+ },
1803
+ emits: ["update:visible", "play", "pause", "ended"],
1804
+ setup(__props, { emit: __emit }) {
1805
+ const props = __props;
1806
+ const emit = __emit;
1807
+ const handleClose = () => {
1808
+ emit("update:visible", false);
1809
+ };
1810
+ const handlePlay = () => {
1811
+ emit("play");
1812
+ };
1813
+ const handlePause = () => {
1814
+ emit("pause");
1815
+ };
1816
+ const handleEnded = () => {
1817
+ emit("ended");
1818
+ };
1819
+ vue.watch(
1820
+ () => props.visible,
1821
+ (newVisible) => {
1822
+ }
1823
+ );
1824
+ return (_ctx, _cache) => {
1825
+ const _component_a_modal = vue.resolveComponent("a-modal");
1826
+ return vue.openBlock(), vue.createBlock(_component_a_modal, {
1827
+ visible: __props.visible,
1828
+ footer: false,
1829
+ simple: true,
1830
+ "mask-closable": true,
1831
+ "esc-to-close": true,
1832
+ width: "auto",
1833
+ "modal-class": "video-preview-modal",
1834
+ onCancel: handleClose
1835
+ }, {
1836
+ title: vue.withCtx(() => [
1837
+ vue.createElementVNode("div", _hoisted_1$6, [
1838
+ vue.createElementVNode("span", _hoisted_2$5, vue.toDisplayString(__props.fileName || "视频预览"), 1)
1839
+ ])
1840
+ ]),
1841
+ default: vue.withCtx(() => [
1842
+ vue.createElementVNode("div", _hoisted_3$3, [
1843
+ __props.videoUrl ? (vue.openBlock(), vue.createBlock(VideoPreview, {
1844
+ key: 0,
1845
+ "video-url": __props.videoUrl,
1846
+ "player-options": __props.playerOptions,
1847
+ onPlay: handlePlay,
1848
+ onPause: handlePause,
1849
+ onEnded: handleEnded
1850
+ }, null, 8, ["video-url", "player-options"])) : vue.createCommentVNode("", true)
1851
+ ])
1852
+ ]),
1853
+ _: 1
1854
+ }, 8, ["visible"]);
1855
+ };
657
1856
  }
658
1857
  });
1858
+ const VideoPreviewModal = /* @__PURE__ */ _export_sfc(_sfc_main$7, [["__scopeId", "data-v-0ae4ec5c"]]);
659
1859
  const _hoisted_1$5 = { class: "basic-upload" };
660
1860
  const _hoisted_2$4 = {
661
1861
  key: 0,
662
1862
  class: "upload-text"
663
1863
  };
664
1864
  const _hoisted_3$2 = { class: "upload-tip" };
1865
+ const _hoisted_4$2 = {
1866
+ key: 1,
1867
+ class: "sortable-upload-container"
1868
+ };
1869
+ const _hoisted_5$2 = {
1870
+ key: 0,
1871
+ class: "upload-text"
1872
+ };
1873
+ const _hoisted_6$1 = {
1874
+ key: 1,
1875
+ class: "upload-tip sortable-tip"
1876
+ };
1877
+ const _hoisted_7$1 = {
1878
+ key: 4,
1879
+ class: "inline-video-preview"
1880
+ };
665
1881
  const _sfc_main$6 = /* @__PURE__ */ vue.defineComponent({
666
1882
  ...{
667
1883
  name: "BasicUpload",
@@ -706,12 +1922,22 @@ const _sfc_main$6 = /* @__PURE__ */ vue.defineComponent({
706
1922
  resultType: { default: "fileList" },
707
1923
  uploadButtonText: {},
708
1924
  uploadButtonType: { default: "primary" },
709
- responseUrlKey: { type: [String, Function], default: void 0 }
1925
+ responseUrlKey: { type: [String, Function], default: void 0 },
1926
+ sortable: { type: Boolean, default: false },
1927
+ videoPreview: { type: Boolean, default: true },
1928
+ videoPreviewMode: { default: "modal" },
1929
+ videoPlayerOptions: { default: () => ({
1930
+ autoplay: false,
1931
+ loop: false,
1932
+ muted: false,
1933
+ controls: true,
1934
+ preload: "metadata"
1935
+ }) }
710
1936
  },
711
- emits: ["register", "update:modelValue", "change", "success", "handleSuccess", "error", "handlError", "progress", "remove", "preview", "exceed"],
1937
+ emits: ["register", "update:modelValue", "change", "success", "handleSuccess", "error", "handlError", "progress", "remove", "preview", "exceed", "sortChange"],
712
1938
  setup(__props, { expose: __expose, emit: __emit }) {
713
1939
  vue.useCssVars((_ctx) => ({
714
- "f530bac6": cardSizeValue.value
1940
+ "v1d2beb5a": cardSizeValue.value
715
1941
  }));
716
1942
  const props = __props;
717
1943
  const emit = __emit;
@@ -720,9 +1946,17 @@ const _sfc_main$6 = /* @__PURE__ */ vue.defineComponent({
720
1946
  const propsRef = vue.ref({});
721
1947
  const hasShownActionError = vue.ref(false);
722
1948
  const processedFiles = vue.ref(/* @__PURE__ */ new Map());
1949
+ const previewVisible = vue.ref(false);
1950
+ const previewImageUrl = vue.ref("");
1951
+ const previewVideoUrl = vue.ref("");
1952
+ const previewVideoVisible = vue.ref(false);
1953
+ const previewFileName = vue.ref("");
723
1954
  const getProps = vue.computed(() => {
724
1955
  return { ...props, ...vue.unref(propsRef) };
725
1956
  });
1957
+ const shouldUseSortable = vue.computed(() => {
1958
+ return getProps.value.sortable && getProps.value.listType === "picture-card";
1959
+ });
726
1960
  const hideUploadButton = vue.computed(() => {
727
1961
  const propsData = vue.unref(getProps);
728
1962
  if (!propsData.showUploadButton) return true;
@@ -743,7 +1977,9 @@ const _sfc_main$6 = /* @__PURE__ */ vue.defineComponent({
743
1977
  showRemoveButton: propsData.showRemoveButton && !propsData.readonly,
744
1978
  showUploadButton: !hideUploadButton.value,
745
1979
  // 只有在没有自定义预览时才启用 imagePreview
746
- imagePreview: propsData.imagePreview && !propsData.onPreview,
1980
+ // imagePreview: propsData.imagePreview && !propsData.onPreview,
1981
+ // 只有在没有自定义预览且未启用视频预览时才启用原生 imagePreview
1982
+ imagePreview: propsData.imagePreview && !propsData.onPreview && !propsData.videoPreview,
747
1983
  onRemove: async (fileItem) => {
748
1984
  if (propsData.onRemove) {
749
1985
  const canRemove = await propsData.onRemove(fileItem);
@@ -754,6 +1990,18 @@ const _sfc_main$6 = /* @__PURE__ */ vue.defineComponent({
754
1990
  }
755
1991
  };
756
1992
  });
1993
+ const isVideoFile = (fileItem) => {
1994
+ var _a, _b;
1995
+ if (!fileItem.url && !fileItem.file) return false;
1996
+ const fileName = fileItem.name || ((_a = fileItem.file) == null ? void 0 : _a.name) || "";
1997
+ const videoExtensions = [".mp4", ".avi", ".mov", ".wmv", ".flv", ".mkv", ".webm", ".m4v"];
1998
+ const hasVideoExtension = videoExtensions.some(
1999
+ (ext) => fileName.toLowerCase().endsWith(ext)
2000
+ );
2001
+ const mimeType = ((_b = fileItem.file) == null ? void 0 : _b.type) || "";
2002
+ const isVideoMimeType = mimeType.startsWith("video/");
2003
+ return hasVideoExtension || isVideoMimeType;
2004
+ };
757
2005
  const validateFileSize = (file) => {
758
2006
  const propsData = vue.unref(getProps);
759
2007
  if (!propsData.maxSize) return true;
@@ -937,10 +2185,28 @@ const _sfc_main$6 = /* @__PURE__ */ vue.defineComponent({
937
2185
  }
938
2186
  };
939
2187
  };
2188
+ const addVideoFileClass = () => {
2189
+ vue.nextTick(() => {
2190
+ const uploadItems = document.querySelectorAll(".arco-upload-list-picture");
2191
+ uploadItems.forEach((item) => {
2192
+ const img = item.querySelector("img");
2193
+ if (img && img.src) {
2194
+ const videoExtensions = [".mp4", ".avi", ".mov", ".wmv", ".flv", ".webm", ".mkv", ".m4v"];
2195
+ const isVideo = videoExtensions.some((ext) => img.src.toLowerCase().includes(ext));
2196
+ if (isVideo) {
2197
+ item.classList.add("is-video-file");
2198
+ } else {
2199
+ item.classList.remove("is-video-file");
2200
+ }
2201
+ }
2202
+ });
2203
+ });
2204
+ };
940
2205
  const handleChange = (fileList, currentFile) => {
941
2206
  const oldLength = fileListRef.value.length;
942
2207
  const newLength = fileList.length;
943
2208
  fileListRef.value = fileList;
2209
+ addVideoFileClass();
944
2210
  emit("change", fileList);
945
2211
  const isRemove = newLength < oldLength;
946
2212
  const fileKey = currentFile.uid || `file-${Date.now()}-${Math.random()}`;
@@ -955,7 +2221,7 @@ const _sfc_main$6 = /* @__PURE__ */ vue.defineComponent({
955
2221
  }
956
2222
  if (isRemove) {
957
2223
  const fileUids = new Set(fileList.map((f) => f.uid));
958
- processedFiles.value.forEach((_, uid) => {
2224
+ processedFiles.value.forEach((_value, uid) => {
959
2225
  if (!fileUids.has(uid)) {
960
2226
  processedFiles.value.delete(uid);
961
2227
  }
@@ -963,7 +2229,7 @@ const _sfc_main$6 = /* @__PURE__ */ vue.defineComponent({
963
2229
  }
964
2230
  updateModelValue(fileList);
965
2231
  };
966
- const handleProgress = (currentFile, event) => {
2232
+ const handleProgress = (currentFile) => {
967
2233
  const percent = currentFile.percent || 0;
968
2234
  emit("progress", percent, currentFile);
969
2235
  };
@@ -973,6 +2239,20 @@ const _sfc_main$6 = /* @__PURE__ */ vue.defineComponent({
973
2239
  propsData.onPreview(fileItem);
974
2240
  return;
975
2241
  }
2242
+ if (propsData.videoPreview && isVideoFile(fileItem) && fileItem.url) {
2243
+ previewImageUrl.value = "";
2244
+ previewVisible.value = false;
2245
+ previewVideoUrl.value = fileItem.url;
2246
+ previewFileName.value = fileItem.name || "";
2247
+ previewVideoVisible.value = true;
2248
+ return;
2249
+ }
2250
+ if (propsData.imagePreview && fileItem.url) {
2251
+ previewVideoUrl.value = "";
2252
+ previewVideoVisible.value = false;
2253
+ previewImageUrl.value = fileItem.url;
2254
+ previewVisible.value = true;
2255
+ }
976
2256
  };
977
2257
  const updateModelValue = (fileList) => {
978
2258
  var _a;
@@ -1068,6 +2348,22 @@ const _sfc_main$6 = /* @__PURE__ */ vue.defineComponent({
1068
2348
  updateModelValue(fileListRef.value);
1069
2349
  }
1070
2350
  };
2351
+ const handleFileListUpdate = (newFileList) => {
2352
+ fileListRef.value = newFileList;
2353
+ emit("change", newFileList);
2354
+ updateModelValue(newFileList);
2355
+ };
2356
+ const handleSortChange = (newFileList) => {
2357
+ emit("sortChange", newFileList);
2358
+ };
2359
+ const handleRemoveFile = async (file) => {
2360
+ const propsData = vue.unref(getProps);
2361
+ if (propsData.onRemove) {
2362
+ const canRemove = await propsData.onRemove(file);
2363
+ if (!canRemove) return;
2364
+ }
2365
+ removeFile(file);
2366
+ };
1071
2367
  __expose({
1072
2368
  submit,
1073
2369
  abort,
@@ -1084,6 +2380,7 @@ const _sfc_main$6 = /* @__PURE__ */ vue.defineComponent({
1084
2380
  () => getProps.value.modelValue,
1085
2381
  (val) => {
1086
2382
  fileListRef.value = parseModelValue(val);
2383
+ addVideoFileClass();
1087
2384
  },
1088
2385
  { immediate: true }
1089
2386
  );
@@ -1106,8 +2403,10 @@ const _sfc_main$6 = /* @__PURE__ */ vue.defineComponent({
1106
2403
  return (_ctx, _cache) => {
1107
2404
  const _component_a_button = vue.resolveComponent("a-button");
1108
2405
  const _component_a_upload = vue.resolveComponent("a-upload");
2406
+ const _component_a_image = vue.resolveComponent("a-image");
1109
2407
  return vue.openBlock(), vue.createElementBlock("div", _hoisted_1$5, [
1110
- vue.createVNode(_component_a_upload, vue.mergeProps({
2408
+ !shouldUseSortable.value ? (vue.openBlock(), vue.createBlock(_component_a_upload, vue.mergeProps({
2409
+ key: 0,
1111
2410
  ref_key: "uploadRef",
1112
2411
  ref: uploadRef
1113
2412
  }, getBindValue.value, {
@@ -1171,19 +2470,85 @@ const _sfc_main$6 = /* @__PURE__ */ vue.defineComponent({
1171
2470
  ]),
1172
2471
  key: "3"
1173
2472
  } : void 0
1174
- ]), 1040, ["file-list"])
2473
+ ]), 1040, ["file-list"])) : (vue.openBlock(), vue.createElementBlock("div", _hoisted_4$2, [
2474
+ fileListRef.value.length > 0 ? (vue.openBlock(), vue.createBlock(SortableFileList, {
2475
+ key: 0,
2476
+ "file-list": fileListRef.value,
2477
+ "card-size": getProps.value.cardSize || 80,
2478
+ disabled: getProps.value.readonly || getProps.value.disabled,
2479
+ "onUpdate:fileList": handleFileListUpdate,
2480
+ onSortChange: handleSortChange,
2481
+ onPreview: handlePreview,
2482
+ onRemove: handleRemoveFile
2483
+ }, null, 8, ["file-list", "card-size", "disabled"])) : vue.createCommentVNode("", true),
2484
+ vue.createVNode(_component_a_upload, vue.mergeProps({
2485
+ ref_key: "uploadRef",
2486
+ ref: uploadRef
2487
+ }, getBindValue.value, {
2488
+ "file-list": fileListRef.value,
2489
+ "show-file-list": false,
2490
+ "custom-request": handleCustomRequest,
2491
+ onChange: handleChange,
2492
+ onBeforeUpload: handleBeforeUpload,
2493
+ onProgress: handleProgress
2494
+ }), vue.createSlots({ _: 2 }, [
2495
+ !hideUploadButton.value ? {
2496
+ name: "upload-button",
2497
+ fn: vue.withCtx(() => [
2498
+ vue.renderSlot(_ctx.$slots, "upload-button", {}, () => [
2499
+ vue.createElementVNode("div", {
2500
+ class: "upload-card-button",
2501
+ style: vue.normalizeStyle({
2502
+ width: cardSizeValue.value,
2503
+ height: cardSizeValue.value
2504
+ })
2505
+ }, [
2506
+ vue.createVNode(vue.unref(IconPlus), { size: 16 }),
2507
+ getProps.value.uploadButtonText ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_5$2, vue.toDisplayString(getProps.value.uploadButtonText), 1)) : vue.createCommentVNode("", true)
2508
+ ], 4)
2509
+ ], true)
2510
+ ]),
2511
+ key: "0"
2512
+ } : void 0
2513
+ ]), 1040, ["file-list"]),
2514
+ getProps.value.tip ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_6$1, vue.toDisplayString(getProps.value.tip), 1)) : vue.createCommentVNode("", true)
2515
+ ])),
2516
+ previewImageUrl.value ? (vue.openBlock(), vue.createBlock(_component_a_image, {
2517
+ key: 2,
2518
+ src: previewImageUrl.value,
2519
+ "preview-visible": previewVisible.value,
2520
+ "preview-props": { closable: true },
2521
+ style: { "display": "none" },
2522
+ onPreviewVisibleChange: _cache[0] || (_cache[0] = (visible) => previewVisible.value = visible)
2523
+ }, null, 8, ["src", "preview-visible"])) : vue.createCommentVNode("", true),
2524
+ getProps.value.videoPreviewMode === "modal" || !getProps.value.videoPreviewMode ? (vue.openBlock(), vue.createBlock(VideoPreviewModal, {
2525
+ key: 3,
2526
+ visible: previewVideoVisible.value,
2527
+ "onUpdate:visible": _cache[1] || (_cache[1] = ($event) => previewVideoVisible.value = $event),
2528
+ "video-url": previewVideoUrl.value,
2529
+ "file-name": previewFileName.value,
2530
+ "player-options": getProps.value.videoPlayerOptions
2531
+ }, null, 8, ["visible", "video-url", "file-name", "player-options"])) : vue.createCommentVNode("", true),
2532
+ getProps.value.videoPreviewMode === "inline" && previewVideoVisible.value ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_7$1, [
2533
+ vue.createVNode(VideoPreview, {
2534
+ "video-url": previewVideoUrl.value,
2535
+ "player-options": getProps.value.videoPlayerOptions
2536
+ }, null, 8, ["video-url", "player-options"]),
2537
+ vue.createVNode(_component_a_button, {
2538
+ class: "close-inline-preview",
2539
+ onClick: _cache[2] || (_cache[2] = ($event) => previewVideoVisible.value = false)
2540
+ }, {
2541
+ default: vue.withCtx(() => [..._cache[3] || (_cache[3] = [
2542
+ vue.createTextVNode(" 关闭预览 ", -1)
2543
+ ])]),
2544
+ _: 1
2545
+ })
2546
+ ])) : vue.createCommentVNode("", true)
1175
2547
  ]);
1176
2548
  };
1177
2549
  }
1178
2550
  });
1179
- const _export_sfc = (sfc, props) => {
1180
- const target = sfc.__vccOpts || sfc;
1181
- for (const [key, val] of props) {
1182
- target[key] = val;
1183
- }
1184
- return target;
1185
- };
1186
- const BasicUpload = /* @__PURE__ */ _export_sfc(_sfc_main$6, [["__scopeId", "data-v-03d56780"]]);
2551
+ const BasicUpload = /* @__PURE__ */ _export_sfc(_sfc_main$6, [["__scopeId", "data-v-b2fe6ba6"]]);
1187
2552
  function useUpload(props) {
1188
2553
  const uploadRef = vue.ref(null);
1189
2554
  const fileListRef = vue.ref((props == null ? void 0 : props.defaultFileList) || []);
@@ -1366,7 +2731,6 @@ const _sfc_main$5 = /* @__PURE__ */ vue.defineComponent({
1366
2731
  disabled: { type: Boolean, default: false },
1367
2732
  labelAlign: { default: "right" },
1368
2733
  autoLabelWidth: { type: Boolean },
1369
- labelWidth: {},
1370
2734
  labelColProps: {},
1371
2735
  wrapperColProps: {},
1372
2736
  baseColProps: { default: () => ({ span: 24 }) },
@@ -1400,7 +2764,6 @@ const _sfc_main$5 = /* @__PURE__ */ vue.defineComponent({
1400
2764
  disabled: propsData.disabled,
1401
2765
  labelAlign: propsData.labelAlign,
1402
2766
  autoLabelWidth: propsData.autoLabelWidth,
1403
- labelWidth: propsData.labelWidth,
1404
2767
  labelColProps: propsData.labelColProps,
1405
2768
  wrapperColProps: propsData.wrapperColProps
1406
2769
  };
@@ -2761,6 +4124,20 @@ const _sfc_main$2 = /* @__PURE__ */ vue.defineComponent({
2761
4124
  };
2762
4125
  const props = __props;
2763
4126
  const emit = __emit;
4127
+ const slots = vue.useSlots();
4128
+ const formSlots = vue.computed(() => {
4129
+ const result = {};
4130
+ Object.keys(slots).forEach((name) => {
4131
+ if (name.startsWith("form-")) {
4132
+ result[name] = slots[name];
4133
+ }
4134
+ });
4135
+ return result;
4136
+ });
4137
+ const getFormSlotName = (slotName) => {
4138
+ const name = slotName.toString();
4139
+ return name.startsWith("form-") ? name.slice(5) : name;
4140
+ };
2764
4141
  const tableRef = vue.ref();
2765
4142
  const searchFormRef = vue.ref();
2766
4143
  const innerPropsRef = vue.ref({});
@@ -3628,7 +5005,16 @@ const _sfc_main$2 = /* @__PURE__ */ vue.defineComponent({
3628
5005
  }, getSearchFormProps.value, {
3629
5006
  onSubmit: handleSearch,
3630
5007
  onReset: handleReset
3631
- }), null, 16),
5008
+ }), vue.createSlots({ _: 2 }, [
5009
+ vue.renderList(formSlots.value, (_, name) => {
5010
+ return {
5011
+ name: getFormSlotName(name),
5012
+ fn: vue.withCtx((slotProps) => [
5013
+ vue.renderSlot(_ctx.$slots, name, vue.normalizeProps(vue.guardReactiveProps(slotProps || {})), void 0, true)
5014
+ ])
5015
+ };
5016
+ })
5017
+ ]), 1040),
3632
5018
  vue.createVNode(_component_a_divider, { class: "!mt-0" })
3633
5019
  ])) : vue.createCommentVNode("", true),
3634
5020
  getToolbarConfig.value.show || getToolbarConfig.value.title || _ctx.$slots.tableTitle ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_3$1, [
@@ -3927,7 +5313,7 @@ const _sfc_main$2 = /* @__PURE__ */ vue.defineComponent({
3927
5313
  };
3928
5314
  }
3929
5315
  });
3930
- const BasicTable = /* @__PURE__ */ _export_sfc(_sfc_main$2, [["__scopeId", "data-v-42280842"]]);
5316
+ const BasicTable = /* @__PURE__ */ _export_sfc(_sfc_main$2, [["__scopeId", "data-v-587bcc14"]]);
3931
5317
  function useTable(options = {}) {
3932
5318
  const tableRef = vue.ref(null);
3933
5319
  const formRef = vue.ref(null);
@@ -5137,6 +6523,8 @@ exports.BasicModal = BasicModal;
5137
6523
  exports.BasicTable = BasicTable;
5138
6524
  exports.BasicTextEllipsis = BasicTextEllipsis;
5139
6525
  exports.BasicUpload = BasicUpload;
6526
+ exports.VideoPreview = VideoPreview;
6527
+ exports.VideoPreviewModal = VideoPreviewModal;
5140
6528
  exports.componentMap = componentMap;
5141
6529
  exports.createFormSchema = createFormSchema;
5142
6530
  exports.createTableColumns = createTableColumns;