knt-shared 1.3.0 → 1.4.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/components/Form/BasicForm.vue.d.ts +5 -3
- package/dist/components/Form/BasicForm.vue.d.ts.map +1 -1
- package/dist/components/Form/componentMap.d.ts +83 -0
- package/dist/components/Form/componentMap.d.ts.map +1 -1
- package/dist/components/Form/types.d.ts +2 -4
- package/dist/components/Form/types.d.ts.map +1 -1
- package/dist/components/Modal/BasicModal.vue.d.ts +1 -1
- package/dist/components/Table/BasicTable.vue.d.ts +30 -1
- package/dist/components/Table/BasicTable.vue.d.ts.map +1 -1
- package/dist/components/Table/components/componentMap.d.ts +83 -0
- package/dist/components/Table/components/componentMap.d.ts.map +1 -1
- package/dist/components/Upload/BasicUpload.vue.d.ts +26 -0
- package/dist/components/Upload/BasicUpload.vue.d.ts.map +1 -1
- package/dist/components/Upload/components/SortableFileItem.vue.d.ts +59 -0
- package/dist/components/Upload/components/SortableFileItem.vue.d.ts.map +1 -0
- package/dist/components/Upload/components/SortableFileList.vue.d.ts +52 -0
- package/dist/components/Upload/components/SortableFileList.vue.d.ts.map +1 -0
- package/dist/components/Upload/components/VideoPreview.vue.d.ts +66 -0
- package/dist/components/Upload/components/VideoPreview.vue.d.ts.map +1 -0
- package/dist/components/Upload/components/VideoPreviewModal.vue.d.ts +70 -0
- package/dist/components/Upload/components/VideoPreviewModal.vue.d.ts.map +1 -0
- package/dist/components/Upload/index.d.ts +3 -1
- package/dist/components/Upload/index.d.ts.map +1 -1
- package/dist/components/Upload/types.d.ts +42 -0
- package/dist/components/Upload/types.d.ts.map +1 -1
- package/dist/components/Upload/useUpload.d.ts +16 -0
- package/dist/components/Upload/useUpload.d.ts.map +1 -1
- package/dist/index.cjs.js +1475 -84
- package/dist/index.cjs.js.map +1 -1
- package/dist/index.esm.js +1476 -85
- package/dist/index.esm.js.map +1 -1
- package/dist/style.css +441 -24
- 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,
|
|
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$
|
|
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$
|
|
79
|
-
function _sfc_render$
|
|
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$
|
|
171
|
+
]), 14, _hoisted_1$n);
|
|
94
172
|
}
|
|
95
|
-
var _IconPlus = /* @__PURE__ */ _export_sfc$1(_sfc_main$
|
|
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$
|
|
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$
|
|
157
|
-
function _sfc_render$
|
|
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$
|
|
250
|
+
]), 14, _hoisted_1$m);
|
|
173
251
|
}
|
|
174
|
-
var _IconQuestionCircle = /* @__PURE__ */ _export_sfc$1(_sfc_main$
|
|
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$
|
|
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$
|
|
236
|
-
function _sfc_render$
|
|
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$
|
|
410
|
+
]), 14, _hoisted_1$k);
|
|
251
411
|
}
|
|
252
|
-
var _IconRefresh = /* @__PURE__ */ _export_sfc$1(_sfc_main$
|
|
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$
|
|
420
|
+
const _sfc_main$k = defineComponent({
|
|
261
421
|
name: "IconSettings",
|
|
262
422
|
props: {
|
|
263
423
|
size: {
|
|
@@ -310,8 +470,8 @@ const _sfc_main$b = defineComponent({
|
|
|
310
470
|
};
|
|
311
471
|
}
|
|
312
472
|
});
|
|
313
|
-
const _hoisted_1$
|
|
314
|
-
function _sfc_render$
|
|
473
|
+
const _hoisted_1$j = ["stroke-width", "stroke-linecap", "stroke-linejoin"];
|
|
474
|
+
function _sfc_render$9(_ctx, _cache, $props, $setup, $data, $options) {
|
|
315
475
|
return openBlock(), createElementBlock("svg", {
|
|
316
476
|
viewBox: "0 0 48 48",
|
|
317
477
|
fill: "none",
|
|
@@ -326,18 +486,414 @@ function _sfc_render$4(_ctx, _cache, $props, $setup, $data, $options) {
|
|
|
326
486
|
}, _cache[1] || (_cache[1] = [
|
|
327
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),
|
|
328
488
|
createElementVNode("path", { d: "M30 24a6 6 0 1 1-12 0 6 6 0 0 1 12 0Z" }, null, -1)
|
|
329
|
-
]), 14, _hoisted_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"];
|
|
871
|
+
function _sfc_render$4(_ctx, _cache, $props, $setup, $data, $options) {
|
|
872
|
+
return openBlock(), createElementBlock("svg", {
|
|
873
|
+
viewBox: "0 0 48 48",
|
|
874
|
+
fill: "none",
|
|
875
|
+
xmlns: "http://www.w3.org/2000/svg",
|
|
876
|
+
stroke: "currentColor",
|
|
877
|
+
class: normalizeClass(_ctx.cls),
|
|
878
|
+
style: normalizeStyle(_ctx.innerStyle),
|
|
879
|
+
"stroke-width": _ctx.strokeWidth,
|
|
880
|
+
"stroke-linecap": _ctx.strokeLinecap,
|
|
881
|
+
"stroke-linejoin": _ctx.strokeLinejoin,
|
|
882
|
+
onClick: _cache[0] || (_cache[0] = (...args) => _ctx.onClick && _ctx.onClick(...args))
|
|
883
|
+
}, _cache[1] || (_cache[1] = [
|
|
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
|
|
332
|
-
const
|
|
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 +
|
|
892
|
+
app.component(iconPrefix + _IconFullscreen.name, _IconFullscreen);
|
|
337
893
|
}
|
|
338
894
|
});
|
|
339
|
-
const _sfc_main$
|
|
340
|
-
name: "
|
|
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}-
|
|
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$
|
|
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: "
|
|
407
|
-
]), 14, _hoisted_1$
|
|
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
|
|
410
|
-
const
|
|
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 +
|
|
970
|
+
app.component(iconPrefix + _IconMute.name, _IconMute);
|
|
415
971
|
}
|
|
416
972
|
});
|
|
417
|
-
const _sfc_main$
|
|
418
|
-
name: "
|
|
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}-
|
|
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$
|
|
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: "
|
|
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
|
-
|
|
490
|
-
|
|
491
|
-
]), 14, _hoisted_1$
|
|
1043
|
+
stroke: "none",
|
|
1044
|
+
d: "M14 12h4v24h-4zM30 12h4v24h-4z"
|
|
1045
|
+
}, null, -1)
|
|
1046
|
+
]), 14, _hoisted_1$c);
|
|
492
1047
|
}
|
|
493
|
-
var
|
|
494
|
-
const
|
|
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 +
|
|
1053
|
+
app.component(iconPrefix + _IconPause.name, _IconPause);
|
|
499
1054
|
}
|
|
500
1055
|
});
|
|
501
|
-
const _sfc_main$
|
|
502
|
-
name: "
|
|
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}-
|
|
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$
|
|
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: "
|
|
569
|
-
]), 14, _hoisted_1$
|
|
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
|
|
572
|
-
const
|
|
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 +
|
|
1131
|
+
app.component(iconPrefix + _IconPlayArrow.name, _IconPlayArrow);
|
|
577
1132
|
}
|
|
578
1133
|
});
|
|
579
|
-
const _sfc_main$
|
|
580
|
-
name: "
|
|
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}-
|
|
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$
|
|
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: "
|
|
647
|
-
|
|
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
|
|
650
|
-
const
|
|
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 +
|
|
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
|
-
"
|
|
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((
|
|
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
|
|
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
|
-
|
|
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
|
|
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) || []);
|
|
@@ -1361,10 +2726,10 @@ const _sfc_main$5 = /* @__PURE__ */ defineComponent({
|
|
|
1361
2726
|
schemas: { default: () => [] },
|
|
1362
2727
|
layout: { default: "horizontal" },
|
|
1363
2728
|
size: {},
|
|
2729
|
+
gutter: { default: 24 },
|
|
1364
2730
|
disabled: { type: Boolean, default: false },
|
|
1365
2731
|
labelAlign: { default: "right" },
|
|
1366
2732
|
autoLabelWidth: { type: Boolean },
|
|
1367
|
-
labelWidth: {},
|
|
1368
2733
|
labelColProps: {},
|
|
1369
2734
|
wrapperColProps: {},
|
|
1370
2735
|
baseColProps: { default: () => ({ span: 24 }) },
|
|
@@ -1398,14 +2763,14 @@ const _sfc_main$5 = /* @__PURE__ */ defineComponent({
|
|
|
1398
2763
|
disabled: propsData.disabled,
|
|
1399
2764
|
labelAlign: propsData.labelAlign,
|
|
1400
2765
|
autoLabelWidth: propsData.autoLabelWidth,
|
|
1401
|
-
labelWidth: propsData.labelWidth,
|
|
1402
2766
|
labelColProps: propsData.labelColProps,
|
|
1403
2767
|
wrapperColProps: propsData.wrapperColProps
|
|
1404
2768
|
};
|
|
1405
2769
|
});
|
|
1406
2770
|
const getRow = computed(() => {
|
|
2771
|
+
const propsData = unref(getProps);
|
|
1407
2772
|
return {
|
|
1408
|
-
gutter: 24
|
|
2773
|
+
gutter: propsData.gutter || 24
|
|
1409
2774
|
};
|
|
1410
2775
|
});
|
|
1411
2776
|
const getActionProps = computed(() => {
|
|
@@ -1702,8 +3067,9 @@ const _sfc_main$5 = /* @__PURE__ */ defineComponent({
|
|
|
1702
3067
|
default: withCtx(() => [
|
|
1703
3068
|
schema.slotName ? renderSlot(_ctx.$slots, schema.slotName, {
|
|
1704
3069
|
key: 0,
|
|
3070
|
+
field: schema.field,
|
|
1705
3071
|
schema,
|
|
1706
|
-
|
|
3072
|
+
formModel
|
|
1707
3073
|
}) : schema.renderComponentContent ? (openBlock(), createBlock(resolveDynamicComponent(schema.renderComponentContent(schema, formModel)), { key: 1 })) : (openBlock(), createBlock(resolveDynamicComponent(unref(getComponent)(schema.component)), mergeProps({
|
|
1708
3074
|
key: 2,
|
|
1709
3075
|
modelValue: formModel[schema.field],
|
|
@@ -2759,6 +4125,20 @@ const _sfc_main$2 = /* @__PURE__ */ defineComponent({
|
|
|
2759
4125
|
};
|
|
2760
4126
|
const props = __props;
|
|
2761
4127
|
const emit = __emit;
|
|
4128
|
+
const slots = useSlots();
|
|
4129
|
+
const formSlots = computed(() => {
|
|
4130
|
+
const result = {};
|
|
4131
|
+
Object.keys(slots).forEach((name) => {
|
|
4132
|
+
if (name.startsWith("form-")) {
|
|
4133
|
+
result[name] = slots[name];
|
|
4134
|
+
}
|
|
4135
|
+
});
|
|
4136
|
+
return result;
|
|
4137
|
+
});
|
|
4138
|
+
const getFormSlotName = (slotName) => {
|
|
4139
|
+
const name = slotName.toString();
|
|
4140
|
+
return name.startsWith("form-") ? name.slice(5) : name;
|
|
4141
|
+
};
|
|
2762
4142
|
const tableRef = ref();
|
|
2763
4143
|
const searchFormRef = ref();
|
|
2764
4144
|
const innerPropsRef = ref({});
|
|
@@ -3626,7 +5006,16 @@ const _sfc_main$2 = /* @__PURE__ */ defineComponent({
|
|
|
3626
5006
|
}, getSearchFormProps.value, {
|
|
3627
5007
|
onSubmit: handleSearch,
|
|
3628
5008
|
onReset: handleReset
|
|
3629
|
-
}),
|
|
5009
|
+
}), createSlots({ _: 2 }, [
|
|
5010
|
+
renderList(formSlots.value, (_, name) => {
|
|
5011
|
+
return {
|
|
5012
|
+
name: getFormSlotName(name),
|
|
5013
|
+
fn: withCtx((slotProps) => [
|
|
5014
|
+
renderSlot(_ctx.$slots, name, normalizeProps(guardReactiveProps(slotProps || {})), void 0, true)
|
|
5015
|
+
])
|
|
5016
|
+
};
|
|
5017
|
+
})
|
|
5018
|
+
]), 1040),
|
|
3630
5019
|
createVNode(_component_a_divider, { class: "!mt-0" })
|
|
3631
5020
|
])) : createCommentVNode("", true),
|
|
3632
5021
|
getToolbarConfig.value.show || getToolbarConfig.value.title || _ctx.$slots.tableTitle ? (openBlock(), createElementBlock("div", _hoisted_3$1, [
|
|
@@ -3925,7 +5314,7 @@ const _sfc_main$2 = /* @__PURE__ */ defineComponent({
|
|
|
3925
5314
|
};
|
|
3926
5315
|
}
|
|
3927
5316
|
});
|
|
3928
|
-
const BasicTable = /* @__PURE__ */ _export_sfc(_sfc_main$2, [["__scopeId", "data-v-
|
|
5317
|
+
const BasicTable = /* @__PURE__ */ _export_sfc(_sfc_main$2, [["__scopeId", "data-v-587bcc14"]]);
|
|
3929
5318
|
function useTable(options = {}) {
|
|
3930
5319
|
const tableRef = ref(null);
|
|
3931
5320
|
const formRef = ref(null);
|
|
@@ -5136,6 +6525,8 @@ export {
|
|
|
5136
6525
|
BasicTable,
|
|
5137
6526
|
BasicTextEllipsis,
|
|
5138
6527
|
BasicUpload,
|
|
6528
|
+
VideoPreview,
|
|
6529
|
+
VideoPreviewModal,
|
|
5139
6530
|
componentMap,
|
|
5140
6531
|
createFormSchema,
|
|
5141
6532
|
createTableColumns,
|