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