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