@sdata/web-vue 3.4.0 → 3.6.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/sd.css +20 -10
- package/dist/sd.min.css +1 -1
- package/es/file-previewer/file-previewer.vue.d.ts +19 -1
- package/es/file-previewer/file-previewer.vue_vue_type_script_setup_true_lang.js +135 -52
- package/es/file-previewer/index.d.ts +86 -1
- package/es/file-previewer/style/index.css +20 -9
- package/es/file-previewer/style/index.scss +25 -7
- package/es/file-previewer/types.d.ts +17 -0
- package/es/index.css +20 -10
- package/es/index.d.ts +1 -1
- package/es/index.js +4 -4
- package/es/sd-vue.js +4 -4
- package/es/toolbar/style/index.css +0 -1
- package/es/toolbar/style/index.scss +0 -1
- package/es/toolbar/style/token.scss +0 -2
- package/es/trigger/context.d.ts +1 -0
- package/es/trigger/trigger.js +37 -25
- package/json/vetur-attributes.json +9 -0
- package/json/vetur-tags.json +4 -1
- package/json/web-types.json +25 -1
- package/package.json +1 -1
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type { PropType } from 'vue';
|
|
2
|
-
import type { FilePreviewerContentSlotProps, FilePreviewerType } from './types';
|
|
2
|
+
import type { FilePreviewerContentSlotProps, FilePreviewerImageProps, FilePreviewerMediaProps, FilePreviewerPdfProps, FilePreviewerType } from './types';
|
|
3
3
|
type __VLS_Slots = {
|
|
4
4
|
title?: () => unknown;
|
|
5
5
|
content?: (_props: FilePreviewerContentSlotProps) => unknown;
|
|
@@ -49,6 +49,15 @@ declare const __VLS_base: import("vue").DefineComponent<import("vue").ExtractPro
|
|
|
49
49
|
type: BooleanConstructor;
|
|
50
50
|
default: boolean;
|
|
51
51
|
};
|
|
52
|
+
imageProps: {
|
|
53
|
+
type: PropType<FilePreviewerImageProps>;
|
|
54
|
+
};
|
|
55
|
+
mediaProps: {
|
|
56
|
+
type: PropType<FilePreviewerMediaProps>;
|
|
57
|
+
};
|
|
58
|
+
pdfProps: {
|
|
59
|
+
type: PropType<FilePreviewerPdfProps>;
|
|
60
|
+
};
|
|
52
61
|
}>, {
|
|
53
62
|
close: typeof close;
|
|
54
63
|
onLoad: typeof onPreviewLoad;
|
|
@@ -102,6 +111,15 @@ declare const __VLS_base: import("vue").DefineComponent<import("vue").ExtractPro
|
|
|
102
111
|
type: BooleanConstructor;
|
|
103
112
|
default: boolean;
|
|
104
113
|
};
|
|
114
|
+
imageProps: {
|
|
115
|
+
type: PropType<FilePreviewerImageProps>;
|
|
116
|
+
};
|
|
117
|
+
mediaProps: {
|
|
118
|
+
type: PropType<FilePreviewerMediaProps>;
|
|
119
|
+
};
|
|
120
|
+
pdfProps: {
|
|
121
|
+
type: PropType<FilePreviewerPdfProps>;
|
|
122
|
+
};
|
|
105
123
|
}>> & Readonly<{
|
|
106
124
|
onClose?: (() => any) | undefined;
|
|
107
125
|
"onUpdate:visible"?: ((_visible: boolean) => any) | undefined;
|
|
@@ -8,7 +8,8 @@ import { KEYBOARD_KEY } from "../_utils/keyboard.js";
|
|
|
8
8
|
import usePopupManager from "../_hooks/use-popup-manager.js";
|
|
9
9
|
import usePopupContainer from "../_hooks/use-popup-container.js";
|
|
10
10
|
import usePopupOverflowHidden from "../_hooks/use-popup-overflow-hidden.js";
|
|
11
|
-
import
|
|
11
|
+
import Image from "../image/index.js";
|
|
12
|
+
import { Fragment, Teleport, computed, createBlock, createCommentVNode, createElementBlock, createElementVNode, createVNode, defineComponent, guardReactiveProps, mergeProps, nextTick, normalizeClass, normalizeProps, normalizeStyle, openBlock, reactive, renderSlot, resolveDynamicComponent, shallowRef, toDisplayString, toRefs, unref, useSlots, watch, withCtx } from "vue";
|
|
12
13
|
//#region components/file-previewer/file-previewer.vue?vue&type=script&setup=true&lang.ts
|
|
13
14
|
var _hoisted_1 = ["tabindex"];
|
|
14
15
|
var _hoisted_2 = [
|
|
@@ -16,10 +17,6 @@ var _hoisted_2 = [
|
|
|
16
17
|
"aria-modal",
|
|
17
18
|
"aria-label"
|
|
18
19
|
];
|
|
19
|
-
var _hoisted_3 = ["src", "alt"];
|
|
20
|
-
var _hoisted_4 = ["src"];
|
|
21
|
-
var _hoisted_5 = ["src"];
|
|
22
|
-
var _hoisted_6 = ["src"];
|
|
23
20
|
var file_previewer_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ defineComponent(_objectSpread2(_objectSpread2({}, { name: "FilePreviewer" }), {}, {
|
|
24
21
|
__name: "file-previewer",
|
|
25
22
|
props: {
|
|
@@ -102,7 +99,22 @@ var file_previewer_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ d
|
|
|
102
99
|
renderToBody: {
|
|
103
100
|
type: Boolean,
|
|
104
101
|
default: true
|
|
105
|
-
}
|
|
102
|
+
},
|
|
103
|
+
/**
|
|
104
|
+
* @zh 图片预览器参数
|
|
105
|
+
* @en Image previewer props
|
|
106
|
+
*/
|
|
107
|
+
imageProps: { type: Object },
|
|
108
|
+
/**
|
|
109
|
+
* @zh 视频和音频预览器参数
|
|
110
|
+
* @en Video and audio previewer props
|
|
111
|
+
*/
|
|
112
|
+
mediaProps: { type: Object },
|
|
113
|
+
/**
|
|
114
|
+
* @zh PDF 预览器参数
|
|
115
|
+
* @en PDF previewer props
|
|
116
|
+
*/
|
|
117
|
+
pdfProps: { type: Object }
|
|
106
118
|
},
|
|
107
119
|
emits: [
|
|
108
120
|
"close",
|
|
@@ -113,12 +125,13 @@ var file_previewer_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ d
|
|
|
113
125
|
const slots = useSlots();
|
|
114
126
|
const props = __props;
|
|
115
127
|
const emit = __emit;
|
|
116
|
-
const { src, type, visible, defaultVisible, fullscreen, popupContainer, renderToBody, maskClosable, closable, escToClose, title } = toRefs(props);
|
|
128
|
+
const { src, type, visible, defaultVisible, fullscreen, popupContainer, renderToBody, maskClosable, closable, escToClose, title, imageProps, mediaProps, pdfProps } = toRefs(props);
|
|
117
129
|
const prefixCls = getPrefixCls("file-previewer");
|
|
118
130
|
const wrapperRef = shallowRef();
|
|
119
131
|
const status = shallowRef("beforeLoad");
|
|
120
132
|
const requestId = shallowRef(0);
|
|
121
|
-
let
|
|
133
|
+
let videoJsVideoPromise;
|
|
134
|
+
let videoJsAudioPromise;
|
|
122
135
|
const localVisible = shallowRef(defaultVisible.value);
|
|
123
136
|
const mergedVisible = computed(() => {
|
|
124
137
|
var _visible$value;
|
|
@@ -170,6 +183,82 @@ var file_previewer_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ d
|
|
|
170
183
|
onLoad: onPreviewLoad,
|
|
171
184
|
onError: onLoadError
|
|
172
185
|
}));
|
|
186
|
+
const mergedImageProps = computed(() => {
|
|
187
|
+
var _imageProps$value;
|
|
188
|
+
const userProps = (_imageProps$value = imageProps === null || imageProps === void 0 ? void 0 : imageProps.value) !== null && _imageProps$value !== void 0 ? _imageProps$value : {};
|
|
189
|
+
return _objectSpread2(_objectSpread2({
|
|
190
|
+
preview: false,
|
|
191
|
+
width: "100%",
|
|
192
|
+
height: "100%",
|
|
193
|
+
fit: "contain",
|
|
194
|
+
alt: (title === null || title === void 0 ? void 0 : title.value) || ""
|
|
195
|
+
}, userProps), {}, {
|
|
196
|
+
src: currentSrc.value,
|
|
197
|
+
onLoad: (event) => {
|
|
198
|
+
callEventHandler(userProps.onLoad, event);
|
|
199
|
+
onPreviewLoad();
|
|
200
|
+
},
|
|
201
|
+
onError: (event) => {
|
|
202
|
+
callEventHandler(userProps.onError, event);
|
|
203
|
+
onLoadError();
|
|
204
|
+
}
|
|
205
|
+
});
|
|
206
|
+
});
|
|
207
|
+
const mediaSkin = computed(() => {
|
|
208
|
+
var _mediaProps$value$ski, _mediaProps$value;
|
|
209
|
+
return (_mediaProps$value$ski = mediaProps === null || mediaProps === void 0 || (_mediaProps$value = mediaProps.value) === null || _mediaProps$value === void 0 ? void 0 : _mediaProps$value.skin) !== null && _mediaProps$value$ski !== void 0 ? _mediaProps$value$ski : "default";
|
|
210
|
+
});
|
|
211
|
+
const useVideoJsMediaSkin = computed(() => mediaSkin.value !== false && mediaSkin.value !== "native");
|
|
212
|
+
const mediaSkinTag = computed(() => {
|
|
213
|
+
if (mediaSkin.value === "minimal") return type.value === "audio" ? "minimal-audio-skin" : "minimal-video-skin";
|
|
214
|
+
if (mediaSkin.value && mediaSkin.value !== "default") return String(mediaSkin.value);
|
|
215
|
+
return type.value === "audio" ? "audio-skin" : "video-skin";
|
|
216
|
+
});
|
|
217
|
+
const mediaPlayerTag = computed(() => type.value === "audio" ? "audio-player" : "video-player");
|
|
218
|
+
const mediaSkinClassNames = computed(() => [`${prefixCls}-media-skin`, `${prefixCls}-media-skin-${type.value}`]);
|
|
219
|
+
const mediaPlayerProps = computed(() => {
|
|
220
|
+
var _mediaProps$value$pla, _mediaProps$value2;
|
|
221
|
+
return (_mediaProps$value$pla = mediaProps === null || mediaProps === void 0 || (_mediaProps$value2 = mediaProps.value) === null || _mediaProps$value2 === void 0 ? void 0 : _mediaProps$value2.playerProps) !== null && _mediaProps$value$pla !== void 0 ? _mediaProps$value$pla : {};
|
|
222
|
+
});
|
|
223
|
+
const mediaSkinProps = computed(() => {
|
|
224
|
+
var _mediaProps$value$ski2, _mediaProps$value3;
|
|
225
|
+
return (_mediaProps$value$ski2 = mediaProps === null || mediaProps === void 0 || (_mediaProps$value3 = mediaProps.value) === null || _mediaProps$value3 === void 0 ? void 0 : _mediaProps$value3.skinProps) !== null && _mediaProps$value$ski2 !== void 0 ? _mediaProps$value$ski2 : {};
|
|
226
|
+
});
|
|
227
|
+
const mergedMediaProps = computed(() => {
|
|
228
|
+
const userProps = _objectSpread2({}, mediaProps === null || mediaProps === void 0 ? void 0 : mediaProps.value);
|
|
229
|
+
const { onLoadedData, onError } = userProps;
|
|
230
|
+
delete userProps.skin;
|
|
231
|
+
delete userProps.playerProps;
|
|
232
|
+
delete userProps.skinProps;
|
|
233
|
+
delete userProps.onLoadedData;
|
|
234
|
+
delete userProps.onError;
|
|
235
|
+
return _objectSpread2(_objectSpread2(_objectSpread2(_objectSpread2({}, useVideoJsMediaSkin.value ? void 0 : { controls: true }), type.value === "video" ? { playsinline: true } : void 0), userProps), {}, {
|
|
236
|
+
src: currentSrc.value,
|
|
237
|
+
onLoadedData: (event) => {
|
|
238
|
+
callEventHandler(onLoadedData, event);
|
|
239
|
+
onPreviewLoad();
|
|
240
|
+
},
|
|
241
|
+
onError: (event) => {
|
|
242
|
+
callEventHandler(onError, event);
|
|
243
|
+
onLoadError();
|
|
244
|
+
}
|
|
245
|
+
});
|
|
246
|
+
});
|
|
247
|
+
const mergedPdfProps = computed(() => {
|
|
248
|
+
var _pdfProps$value;
|
|
249
|
+
const userProps = (_pdfProps$value = pdfProps === null || pdfProps === void 0 ? void 0 : pdfProps.value) !== null && _pdfProps$value !== void 0 ? _pdfProps$value : {};
|
|
250
|
+
return _objectSpread2(_objectSpread2({ title: "PDF preview" }, userProps), {}, {
|
|
251
|
+
src: currentSrc.value,
|
|
252
|
+
onLoad: (event) => {
|
|
253
|
+
callEventHandler(userProps.onLoad, event);
|
|
254
|
+
onPreviewLoad();
|
|
255
|
+
},
|
|
256
|
+
onError: (event) => {
|
|
257
|
+
callEventHandler(userProps.onError, event);
|
|
258
|
+
onLoadError();
|
|
259
|
+
}
|
|
260
|
+
});
|
|
261
|
+
});
|
|
173
262
|
usePopupOverflowHidden(reactive({
|
|
174
263
|
container,
|
|
175
264
|
hidden: popupVisible
|
|
@@ -204,6 +293,13 @@ var file_previewer_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ d
|
|
|
204
293
|
function onLoadError() {
|
|
205
294
|
status.value = "error";
|
|
206
295
|
}
|
|
296
|
+
function callEventHandler(handler, event) {
|
|
297
|
+
if (Array.isArray(handler)) {
|
|
298
|
+
handler.forEach((item) => callEventHandler(item, event));
|
|
299
|
+
return;
|
|
300
|
+
}
|
|
301
|
+
if (typeof handler === "function") handler(event);
|
|
302
|
+
}
|
|
207
303
|
function ensureVideoJsHtml() {
|
|
208
304
|
return _ensureVideoJsHtml.apply(this, arguments);
|
|
209
305
|
}
|
|
@@ -213,16 +309,21 @@ var file_previewer_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ d
|
|
|
213
309
|
configurable: true,
|
|
214
310
|
value: window.Element
|
|
215
311
|
});
|
|
216
|
-
if (
|
|
217
|
-
|
|
312
|
+
if (type.value === "audio") {
|
|
313
|
+
if (!videoJsAudioPromise) videoJsAudioPromise = import("@videojs/html/audio");
|
|
314
|
+
yield videoJsAudioPromise;
|
|
315
|
+
return;
|
|
316
|
+
}
|
|
317
|
+
if (!videoJsVideoPromise) videoJsVideoPromise = import("@videojs/html/video");
|
|
318
|
+
yield videoJsVideoPromise;
|
|
218
319
|
});
|
|
219
320
|
return _ensureVideoJsHtml.apply(this, arguments);
|
|
220
321
|
}
|
|
221
|
-
function
|
|
222
|
-
return
|
|
322
|
+
function prepareMedia(_x) {
|
|
323
|
+
return _prepareMedia.apply(this, arguments);
|
|
223
324
|
}
|
|
224
|
-
function
|
|
225
|
-
|
|
325
|
+
function _prepareMedia() {
|
|
326
|
+
_prepareMedia = _asyncToGenerator(function* (currentRequestId) {
|
|
226
327
|
status.value = "loading";
|
|
227
328
|
try {
|
|
228
329
|
if (!isServerRendering) yield ensureVideoJsHtml();
|
|
@@ -233,7 +334,7 @@ var file_previewer_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ d
|
|
|
233
334
|
status.value = "error";
|
|
234
335
|
}
|
|
235
336
|
});
|
|
236
|
-
return
|
|
337
|
+
return _prepareMedia.apply(this, arguments);
|
|
237
338
|
}
|
|
238
339
|
watch([
|
|
239
340
|
src,
|
|
@@ -252,11 +353,15 @@ var file_previewer_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ d
|
|
|
252
353
|
return;
|
|
253
354
|
}
|
|
254
355
|
const currentRequestId = requestId.value;
|
|
255
|
-
if (type.value === "video") {
|
|
256
|
-
|
|
356
|
+
if (type.value === "video" || type.value === "audio") {
|
|
357
|
+
if (useVideoJsMediaSkin.value) {
|
|
358
|
+
prepareMedia(currentRequestId);
|
|
359
|
+
return;
|
|
360
|
+
}
|
|
361
|
+
status.value = "loading";
|
|
257
362
|
return;
|
|
258
363
|
}
|
|
259
|
-
if (type.value === "
|
|
364
|
+
if (type.value === "pdf") {
|
|
260
365
|
status.value = "loaded";
|
|
261
366
|
return;
|
|
262
367
|
}
|
|
@@ -296,44 +401,22 @@ var file_previewer_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ d
|
|
|
296
401
|
}, [unref(title) || _ctx.$slots.title ? (openBlock(), createElementBlock("header", {
|
|
297
402
|
key: 0,
|
|
298
403
|
class: normalizeClass(`${unref(prefixCls)}-header`)
|
|
299
|
-
}, [renderSlot(_ctx.$slots, "title", {}, () => [createElementVNode("span", { class: normalizeClass(`${unref(prefixCls)}-title`) }, toDisplayString(unref(title)), 3)])], 2)) : createCommentVNode("", true), createElementVNode("div", { class: normalizeClass(`${unref(prefixCls)}-body`) }, [renderSlot(_ctx.$slots, "content", normalizeProps(guardReactiveProps(contentSlotProps.value)), () => [unref(type) === "image" ? (openBlock(),
|
|
300
|
-
|
|
301
|
-
|
|
302
|
-
src: currentSrc.value,
|
|
303
|
-
alt: unref(title) || "",
|
|
304
|
-
onLoad: onPreviewLoad,
|
|
305
|
-
onError: onLoadError
|
|
306
|
-
}, null, 42, _hoisted_3)) : unref(type) === "video" ? (openBlock(), createBlock(resolveDynamicComponent("video-player"), {
|
|
307
|
-
key: 1,
|
|
308
|
-
class: normalizeClass(`${unref(prefixCls)}-video-player`)
|
|
309
|
-
}, {
|
|
310
|
-
default: withCtx(() => [(openBlock(), createBlock(resolveDynamicComponent("video-skin"), null, {
|
|
311
|
-
default: withCtx(() => [(openBlock(), createElementBlock("video", {
|
|
312
|
-
key: currentSrc.value,
|
|
313
|
-
class: normalizeClass(`${unref(prefixCls)}-video`),
|
|
314
|
-
src: currentSrc.value,
|
|
315
|
-
controls: "",
|
|
316
|
-
playsinline: ""
|
|
317
|
-
}, null, 10, _hoisted_4))]),
|
|
404
|
+
}, [renderSlot(_ctx.$slots, "title", {}, () => [createElementVNode("span", { class: normalizeClass(`${unref(prefixCls)}-title`) }, toDisplayString(unref(title)), 3)])], 2)) : createCommentVNode("", true), createElementVNode("div", { class: normalizeClass(`${unref(prefixCls)}-body`) }, [renderSlot(_ctx.$slots, "content", normalizeProps(guardReactiveProps(contentSlotProps.value)), () => [unref(type) === "image" ? (openBlock(), createBlock(unref(Image), mergeProps({ key: currentSrc.value + "image" }, mergedImageProps.value, { class: `${unref(prefixCls)}-image` }), null, 16, ["class"])) : unref(type) === "video" ? (openBlock(), createElementBlock(Fragment, { key: 1 }, [useVideoJsMediaSkin.value ? (openBlock(), createBlock(resolveDynamicComponent(mediaPlayerTag.value), mergeProps({ key: 0 }, mediaPlayerProps.value, { class: `${unref(prefixCls)}-video-player` }), {
|
|
405
|
+
default: withCtx(() => [(openBlock(), createBlock(resolveDynamicComponent(mediaSkinTag.value), mergeProps(mediaSkinProps.value, { class: mediaSkinClassNames.value }), {
|
|
406
|
+
default: withCtx(() => [(openBlock(), createElementBlock("video", mergeProps({ key: currentSrc.value + "video" }, mergedMediaProps.value, { class: `${unref(prefixCls)}-video` }), null, 16))]),
|
|
318
407
|
_: 1
|
|
319
|
-
}))]),
|
|
408
|
+
}, 16, ["class"]))]),
|
|
320
409
|
_: 1
|
|
321
|
-
},
|
|
410
|
+
}, 16, ["class"])) : (openBlock(), createElementBlock("video", mergeProps({ key: currentSrc.value }, mergedMediaProps.value, { class: `${unref(prefixCls)}-video` }), null, 16))], 64)) : unref(type) === "audio" ? (openBlock(), createElementBlock("div", {
|
|
322
411
|
key: 2,
|
|
323
412
|
class: normalizeClass(`${unref(prefixCls)}-audio-panel`)
|
|
324
|
-
}, [(openBlock(),
|
|
325
|
-
|
|
326
|
-
|
|
327
|
-
|
|
328
|
-
|
|
329
|
-
|
|
330
|
-
|
|
331
|
-
class: normalizeClass(`${unref(prefixCls)}-pdf`),
|
|
332
|
-
src: currentSrc.value,
|
|
333
|
-
title: "PDF preview",
|
|
334
|
-
onLoad: onPreviewLoad,
|
|
335
|
-
onError: onLoadError
|
|
336
|
-
}, null, 42, _hoisted_6)) : createCommentVNode("", true)])], 2)], 10, _hoisted_2),
|
|
413
|
+
}, [useVideoJsMediaSkin.value ? (openBlock(), createBlock(resolveDynamicComponent(mediaPlayerTag.value), mergeProps({ key: 0 }, mediaPlayerProps.value, { class: `${unref(prefixCls)}-audio-player` }), {
|
|
414
|
+
default: withCtx(() => [(openBlock(), createBlock(resolveDynamicComponent(mediaSkinTag.value), mergeProps(mediaSkinProps.value, { class: mediaSkinClassNames.value }), {
|
|
415
|
+
default: withCtx(() => [(openBlock(), createElementBlock("audio", mergeProps({ key: currentSrc.value + "audio" }, mergedMediaProps.value, { class: `${unref(prefixCls)}-audio` }), null, 16))]),
|
|
416
|
+
_: 1
|
|
417
|
+
}, 16, ["class"]))]),
|
|
418
|
+
_: 1
|
|
419
|
+
}, 16, ["class"])) : (openBlock(), createElementBlock("audio", mergeProps({ key: currentSrc.value + "audio" }, mergedMediaProps.value, { class: `${unref(prefixCls)}-audio` }), null, 16))], 2)) : unref(type) === "pdf" ? (openBlock(), createElementBlock("iframe", mergeProps({ key: currentSrc.value + "pdf" }, mergedPdfProps.value, { class: `${unref(prefixCls)}-pdf` }), null, 16)) : createCommentVNode("", true)])], 2)], 10, _hoisted_2),
|
|
337
420
|
unref(fullscreen) && unref(closable) ? (openBlock(), createElementBlock("button", {
|
|
338
421
|
key: 1,
|
|
339
422
|
type: "button",
|
|
@@ -44,6 +44,44 @@ declare const FilePreviewer: {
|
|
|
44
44
|
type: BooleanConstructor;
|
|
45
45
|
default: boolean;
|
|
46
46
|
};
|
|
47
|
+
imageProps: {
|
|
48
|
+
type: import("vue").PropType<{
|
|
49
|
+
[x: string]: unknown;
|
|
50
|
+
[x: number]: unknown;
|
|
51
|
+
[x: symbol]: unknown;
|
|
52
|
+
src?: string | undefined;
|
|
53
|
+
width?: string | number | undefined;
|
|
54
|
+
height?: string | number | undefined;
|
|
55
|
+
title?: string | undefined;
|
|
56
|
+
description?: string | undefined;
|
|
57
|
+
alt?: string | undefined;
|
|
58
|
+
hideFooter?: boolean | undefined;
|
|
59
|
+
footerPosition?: "outer" | "inner" | undefined;
|
|
60
|
+
showLoader?: boolean | undefined;
|
|
61
|
+
preview?: boolean | undefined;
|
|
62
|
+
previewVisible?: boolean | undefined;
|
|
63
|
+
defaultPreviewVisible?: boolean | undefined;
|
|
64
|
+
previewProps?: Partial<import("../image/interface.ts").ImagePreviewProps> | undefined;
|
|
65
|
+
extra?: import("vue").Slot | undefined;
|
|
66
|
+
error?: import("vue").Slot | undefined;
|
|
67
|
+
loader?: import("vue").Slot | undefined;
|
|
68
|
+
onPreviewVisibleChange?: ((visible: boolean) => void) | undefined;
|
|
69
|
+
fit?: ("fill" | "none" | "contain" | "cover" | "scale-down") | undefined;
|
|
70
|
+
}>;
|
|
71
|
+
};
|
|
72
|
+
mediaProps: {
|
|
73
|
+
type: import("vue").PropType<{
|
|
74
|
+
[x: string]: unknown;
|
|
75
|
+
[x: number]: unknown;
|
|
76
|
+
[x: symbol]: unknown;
|
|
77
|
+
skin?: import("./types").FilePreviewerMediaSkin | undefined;
|
|
78
|
+
playerProps?: import("type-fest").UnknownRecord | undefined;
|
|
79
|
+
skinProps?: import("type-fest").UnknownRecord | undefined;
|
|
80
|
+
}>;
|
|
81
|
+
};
|
|
82
|
+
pdfProps: {
|
|
83
|
+
type: import("vue").PropType<import("./types").FilePreviewerPdfProps>;
|
|
84
|
+
};
|
|
47
85
|
}>> & Readonly<{
|
|
48
86
|
onClose?: (() => any) | undefined;
|
|
49
87
|
"onUpdate:visible"?: ((_visible: boolean) => any) | undefined;
|
|
@@ -117,6 +155,44 @@ declare const FilePreviewer: {
|
|
|
117
155
|
type: BooleanConstructor;
|
|
118
156
|
default: boolean;
|
|
119
157
|
};
|
|
158
|
+
imageProps: {
|
|
159
|
+
type: import("vue").PropType<{
|
|
160
|
+
[x: string]: unknown;
|
|
161
|
+
[x: number]: unknown;
|
|
162
|
+
[x: symbol]: unknown;
|
|
163
|
+
src?: string | undefined;
|
|
164
|
+
width?: string | number | undefined;
|
|
165
|
+
height?: string | number | undefined;
|
|
166
|
+
title?: string | undefined;
|
|
167
|
+
description?: string | undefined;
|
|
168
|
+
alt?: string | undefined;
|
|
169
|
+
hideFooter?: boolean | undefined;
|
|
170
|
+
footerPosition?: "outer" | "inner" | undefined;
|
|
171
|
+
showLoader?: boolean | undefined;
|
|
172
|
+
preview?: boolean | undefined;
|
|
173
|
+
previewVisible?: boolean | undefined;
|
|
174
|
+
defaultPreviewVisible?: boolean | undefined;
|
|
175
|
+
previewProps?: Partial<import("../image/interface.ts").ImagePreviewProps> | undefined;
|
|
176
|
+
extra?: import("vue").Slot | undefined;
|
|
177
|
+
error?: import("vue").Slot | undefined;
|
|
178
|
+
loader?: import("vue").Slot | undefined;
|
|
179
|
+
onPreviewVisibleChange?: ((visible: boolean) => void) | undefined;
|
|
180
|
+
fit?: ("fill" | "none" | "contain" | "cover" | "scale-down") | undefined;
|
|
181
|
+
}>;
|
|
182
|
+
};
|
|
183
|
+
mediaProps: {
|
|
184
|
+
type: import("vue").PropType<{
|
|
185
|
+
[x: string]: unknown;
|
|
186
|
+
[x: number]: unknown;
|
|
187
|
+
[x: symbol]: unknown;
|
|
188
|
+
skin?: import("./types").FilePreviewerMediaSkin | undefined;
|
|
189
|
+
playerProps?: import("type-fest").UnknownRecord | undefined;
|
|
190
|
+
skinProps?: import("type-fest").UnknownRecord | undefined;
|
|
191
|
+
}>;
|
|
192
|
+
};
|
|
193
|
+
pdfProps: {
|
|
194
|
+
type: import("vue").PropType<import("./types").FilePreviewerPdfProps>;
|
|
195
|
+
};
|
|
120
196
|
}>> & Readonly<{
|
|
121
197
|
onClose?: (() => any) | undefined;
|
|
122
198
|
"onUpdate:visible"?: ((_visible: boolean) => any) | undefined;
|
|
@@ -183,6 +259,15 @@ declare const FilePreviewer: {
|
|
|
183
259
|
type: BooleanConstructor;
|
|
184
260
|
default: boolean;
|
|
185
261
|
};
|
|
262
|
+
imageProps: {
|
|
263
|
+
type: import("vue").PropType<import("./types").FilePreviewerImageProps>;
|
|
264
|
+
};
|
|
265
|
+
mediaProps: {
|
|
266
|
+
type: import("vue").PropType<import("./types").FilePreviewerMediaProps>;
|
|
267
|
+
};
|
|
268
|
+
pdfProps: {
|
|
269
|
+
type: import("vue").PropType<import("./types").FilePreviewerPdfProps>;
|
|
270
|
+
};
|
|
186
271
|
}>> & Readonly<{
|
|
187
272
|
onClose?: (() => any) | undefined;
|
|
188
273
|
"onUpdate:visible"?: ((_visible: boolean) => any) | undefined;
|
|
@@ -216,5 +301,5 @@ declare const FilePreviewer: {
|
|
|
216
301
|
install: (app: App, options?: SDOptions) => void;
|
|
217
302
|
};
|
|
218
303
|
export type FilePreviewerInstance = InstanceType<typeof _FilePreviewer>;
|
|
219
|
-
export type { FilePreviewerContentSlotProps, FilePreviewerProps, FilePreviewerStatus, FilePreviewerType, } from './types';
|
|
304
|
+
export type { FilePreviewerContentSlotProps, FilePreviewerImageProps, FilePreviewerMediaProps, FilePreviewerMediaSkin, FilePreviewerPdfProps, FilePreviewerProps, FilePreviewerStatus, FilePreviewerType, } from './types';
|
|
220
305
|
export default FilePreviewer;
|
|
@@ -28,9 +28,6 @@
|
|
|
28
28
|
.sd-file-previewer-inline {
|
|
29
29
|
overflow: hidden;
|
|
30
30
|
color: var(--sd-color-text-1);
|
|
31
|
-
background: var(--sd-color-fill-1);
|
|
32
|
-
border: 1px solid var(--sd-color-border-2);
|
|
33
|
-
border-radius: var(--sd-border-radius-medium);
|
|
34
31
|
}
|
|
35
32
|
.sd-file-previewer-mask {
|
|
36
33
|
position: absolute;
|
|
@@ -82,31 +79,45 @@
|
|
|
82
79
|
min-width: 0;
|
|
83
80
|
min-height: 0;
|
|
84
81
|
}
|
|
85
|
-
.sd-file-previewer-image, .sd-file-previewer-video-player, .sd-file-previewer-video, .sd-file-previewer-pdf {
|
|
82
|
+
.sd-file-previewer-image, .sd-file-previewer-video-player, .sd-file-previewer-audio-player, .sd-file-previewer-video, .sd-file-previewer-pdf {
|
|
86
83
|
display: block;
|
|
87
84
|
width: 100%;
|
|
88
85
|
height: 100%;
|
|
89
86
|
}
|
|
90
|
-
.sd-file-previewer-image {
|
|
87
|
+
.sd-file-previewer-image .sd-image-img {
|
|
91
88
|
object-fit: contain;
|
|
92
89
|
}
|
|
90
|
+
.sd-file-previewer-video-player, .sd-file-previewer-audio-player {
|
|
91
|
+
min-width: 0 !important;
|
|
92
|
+
min-height: 0 !important;
|
|
93
|
+
}
|
|
93
94
|
.sd-file-previewer-video-player {
|
|
94
95
|
max-width: 1180px;
|
|
95
96
|
max-height: 78vh;
|
|
96
97
|
}
|
|
97
|
-
.sd-file-previewer-
|
|
98
|
+
.sd-file-previewer-media-skin {
|
|
99
|
+
display: block;
|
|
100
|
+
width: 100%;
|
|
101
|
+
min-width: 0 !important;
|
|
98
102
|
max-width: 100%;
|
|
99
|
-
|
|
103
|
+
height: 100%;
|
|
104
|
+
min-height: 0 !important;
|
|
105
|
+
max-height: 100%;
|
|
106
|
+
--media-object-fit: cover;
|
|
100
107
|
}
|
|
101
108
|
.sd-file-previewer-video {
|
|
102
|
-
|
|
109
|
+
object-fit: cover;
|
|
110
|
+
}
|
|
111
|
+
.sd-file-previewer-inline .sd-file-previewer-video-player {
|
|
112
|
+
max-width: 100%;
|
|
113
|
+
max-height: none;
|
|
103
114
|
}
|
|
104
115
|
.sd-file-previewer-audio-panel {
|
|
105
116
|
box-sizing: border-box;
|
|
106
117
|
width: 100%;
|
|
107
118
|
padding: 20px;
|
|
108
119
|
}
|
|
109
|
-
.sd-file-previewer-audio {
|
|
120
|
+
.sd-file-previewer-audio-player, .sd-file-previewer-audio {
|
|
110
121
|
display: block;
|
|
111
122
|
width: 100%;
|
|
112
123
|
}
|
|
@@ -3,6 +3,7 @@
|
|
|
3
3
|
@use './token.scss' as *;
|
|
4
4
|
|
|
5
5
|
$file-previewer-prefix-cls: string.unquote('#{theme.$prefix}-file-previewer');
|
|
6
|
+
$image-prefix-cls: string.unquote('#{theme.$prefix}-image');
|
|
6
7
|
|
|
7
8
|
@mixin center() {
|
|
8
9
|
position: absolute;
|
|
@@ -25,9 +26,6 @@ $file-previewer-prefix-cls: string.unquote('#{theme.$prefix}-file-previewer');
|
|
|
25
26
|
&-inline {
|
|
26
27
|
overflow: hidden;
|
|
27
28
|
color: $file-previewer-color-content-text;
|
|
28
|
-
background: $file-previewer-color-inline-bg;
|
|
29
|
-
border: 1px solid $file-previewer-color-inline-border;
|
|
30
|
-
border-radius: $file-previewer-radius-panel;
|
|
31
29
|
}
|
|
32
30
|
|
|
33
31
|
&-mask {
|
|
@@ -94,6 +92,7 @@ $file-previewer-prefix-cls: string.unquote('#{theme.$prefix}-file-previewer');
|
|
|
94
92
|
|
|
95
93
|
&-image,
|
|
96
94
|
&-video-player,
|
|
95
|
+
&-audio-player,
|
|
97
96
|
&-video,
|
|
98
97
|
&-pdf {
|
|
99
98
|
display: block;
|
|
@@ -101,22 +100,40 @@ $file-previewer-prefix-cls: string.unquote('#{theme.$prefix}-file-previewer');
|
|
|
101
100
|
height: 100%;
|
|
102
101
|
}
|
|
103
102
|
|
|
104
|
-
&-image {
|
|
103
|
+
&-image .#{$image-prefix-cls}-img {
|
|
105
104
|
object-fit: contain;
|
|
106
105
|
}
|
|
107
106
|
|
|
107
|
+
&-video-player,
|
|
108
|
+
&-audio-player {
|
|
109
|
+
min-width: 0 !important;
|
|
110
|
+
min-height: 0 !important;
|
|
111
|
+
}
|
|
112
|
+
|
|
108
113
|
&-video-player {
|
|
109
114
|
max-width: $file-previewer-size-media-width;
|
|
110
115
|
max-height: $file-previewer-size-media-height;
|
|
111
116
|
}
|
|
112
117
|
|
|
113
|
-
&-
|
|
118
|
+
&-media-skin {
|
|
119
|
+
display: block;
|
|
120
|
+
width: 100%;
|
|
121
|
+
min-width: 0 !important;
|
|
114
122
|
max-width: 100%;
|
|
115
|
-
|
|
123
|
+
height: 100%;
|
|
124
|
+
min-height: 0 !important;
|
|
125
|
+
max-height: 100%;
|
|
126
|
+
|
|
127
|
+
--media-object-fit: cover;
|
|
116
128
|
}
|
|
117
129
|
|
|
118
130
|
&-video {
|
|
119
|
-
|
|
131
|
+
object-fit: cover;
|
|
132
|
+
}
|
|
133
|
+
|
|
134
|
+
&-inline &-video-player {
|
|
135
|
+
max-width: 100%;
|
|
136
|
+
max-height: none;
|
|
120
137
|
}
|
|
121
138
|
|
|
122
139
|
&-audio-panel {
|
|
@@ -125,6 +142,7 @@ $file-previewer-prefix-cls: string.unquote('#{theme.$prefix}-file-previewer');
|
|
|
125
142
|
padding: $file-previewer-spacing-panel-padding;
|
|
126
143
|
}
|
|
127
144
|
|
|
145
|
+
&-audio-player,
|
|
128
146
|
&-audio {
|
|
129
147
|
display: block;
|
|
130
148
|
width: 100%;
|
|
@@ -1,5 +1,18 @@
|
|
|
1
|
+
import type { Except, Simplify, UnknownRecord } from 'type-fest';
|
|
2
|
+
import type { ImageProps } from '../image/interface';
|
|
1
3
|
export type FilePreviewerType = 'image' | 'video' | 'audio' | 'pdf';
|
|
2
4
|
export type FilePreviewerStatus = 'beforeLoad' | 'loading' | 'loaded' | 'error';
|
|
5
|
+
type FilePreviewerImageFit = 'contain' | 'cover' | 'fill' | 'none' | 'scale-down';
|
|
6
|
+
export type FilePreviewerImageProps = Simplify<Except<Partial<ImageProps>, 'fit'> & {
|
|
7
|
+
fit?: FilePreviewerImageFit;
|
|
8
|
+
} & UnknownRecord>;
|
|
9
|
+
export type FilePreviewerMediaSkin = 'default' | 'minimal' | 'native' | false | (string & {});
|
|
10
|
+
export type FilePreviewerMediaProps = Simplify<UnknownRecord & {
|
|
11
|
+
skin?: FilePreviewerMediaSkin;
|
|
12
|
+
playerProps?: UnknownRecord;
|
|
13
|
+
skinProps?: UnknownRecord;
|
|
14
|
+
}>;
|
|
15
|
+
export type FilePreviewerPdfProps = UnknownRecord;
|
|
3
16
|
export interface FilePreviewerContentSlotProps {
|
|
4
17
|
src: string;
|
|
5
18
|
type: FilePreviewerType;
|
|
@@ -26,4 +39,8 @@ export interface FilePreviewerProps {
|
|
|
26
39
|
escToClose?: boolean;
|
|
27
40
|
popupContainer?: HTMLElement | string;
|
|
28
41
|
renderToBody?: boolean;
|
|
42
|
+
imageProps?: FilePreviewerImageProps;
|
|
43
|
+
mediaProps?: FilePreviewerMediaProps;
|
|
44
|
+
pdfProps?: FilePreviewerPdfProps;
|
|
29
45
|
}
|
|
46
|
+
export {};
|
package/es/index.css
CHANGED
|
@@ -5276,7 +5276,6 @@ body.sd-tour-active .sd-tour-popover * {
|
|
|
5276
5276
|
grid-template-columns: repeat(auto-fill, minmax(var(--toolbar-span-width), 1fr));
|
|
5277
5277
|
gap: 8px;
|
|
5278
5278
|
width: 100%;
|
|
5279
|
-
background-color: var(--sd-color-bg-2);
|
|
5280
5279
|
}
|
|
5281
5280
|
.sd-toolbar-body--schema .sd-form > * {
|
|
5282
5281
|
max-width: var(--toolbar-item-max-width);
|
|
@@ -14898,9 +14897,6 @@ body.sd-tour-active .sd-tour-popover * {
|
|
|
14898
14897
|
.sd-file-previewer-inline {
|
|
14899
14898
|
overflow: hidden;
|
|
14900
14899
|
color: var(--sd-color-text-1);
|
|
14901
|
-
background: var(--sd-color-fill-1);
|
|
14902
|
-
border: 1px solid var(--sd-color-border-2);
|
|
14903
|
-
border-radius: var(--sd-border-radius-medium);
|
|
14904
14900
|
}
|
|
14905
14901
|
.sd-file-previewer-mask {
|
|
14906
14902
|
position: absolute;
|
|
@@ -14952,31 +14948,45 @@ body.sd-tour-active .sd-tour-popover * {
|
|
|
14952
14948
|
min-width: 0;
|
|
14953
14949
|
min-height: 0;
|
|
14954
14950
|
}
|
|
14955
|
-
.sd-file-previewer-image, .sd-file-previewer-video-player, .sd-file-previewer-video, .sd-file-previewer-pdf {
|
|
14951
|
+
.sd-file-previewer-image, .sd-file-previewer-video-player, .sd-file-previewer-audio-player, .sd-file-previewer-video, .sd-file-previewer-pdf {
|
|
14956
14952
|
display: block;
|
|
14957
14953
|
width: 100%;
|
|
14958
14954
|
height: 100%;
|
|
14959
14955
|
}
|
|
14960
|
-
.sd-file-previewer-image {
|
|
14956
|
+
.sd-file-previewer-image .sd-image-img {
|
|
14961
14957
|
object-fit: contain;
|
|
14962
14958
|
}
|
|
14959
|
+
.sd-file-previewer-video-player, .sd-file-previewer-audio-player {
|
|
14960
|
+
min-width: 0 !important;
|
|
14961
|
+
min-height: 0 !important;
|
|
14962
|
+
}
|
|
14963
14963
|
.sd-file-previewer-video-player {
|
|
14964
14964
|
max-width: 1180px;
|
|
14965
14965
|
max-height: 78vh;
|
|
14966
14966
|
}
|
|
14967
|
-
.sd-file-previewer-
|
|
14967
|
+
.sd-file-previewer-media-skin {
|
|
14968
|
+
display: block;
|
|
14969
|
+
width: 100%;
|
|
14970
|
+
min-width: 0 !important;
|
|
14968
14971
|
max-width: 100%;
|
|
14969
|
-
|
|
14972
|
+
height: 100%;
|
|
14973
|
+
min-height: 0 !important;
|
|
14974
|
+
max-height: 100%;
|
|
14975
|
+
--media-object-fit: cover;
|
|
14970
14976
|
}
|
|
14971
14977
|
.sd-file-previewer-video {
|
|
14972
|
-
|
|
14978
|
+
object-fit: cover;
|
|
14979
|
+
}
|
|
14980
|
+
.sd-file-previewer-inline .sd-file-previewer-video-player {
|
|
14981
|
+
max-width: 100%;
|
|
14982
|
+
max-height: none;
|
|
14973
14983
|
}
|
|
14974
14984
|
.sd-file-previewer-audio-panel {
|
|
14975
14985
|
box-sizing: border-box;
|
|
14976
14986
|
width: 100%;
|
|
14977
14987
|
padding: 20px;
|
|
14978
14988
|
}
|
|
14979
|
-
.sd-file-previewer-audio {
|
|
14989
|
+
.sd-file-previewer-audio-player, .sd-file-previewer-audio {
|
|
14980
14990
|
display: block;
|
|
14981
14991
|
width: 100%;
|
|
14982
14992
|
}
|
package/es/index.d.ts
CHANGED
|
@@ -70,7 +70,7 @@ export type { ColProps, GridColInstance, GridInstance, GridItemInstance, GridIte
|
|
|
70
70
|
export { default as Icon } from './icon-component';
|
|
71
71
|
export type { IconInstance, IconProps } from './icon-component';
|
|
72
72
|
export { default as FilePreviewer } from './file-previewer';
|
|
73
|
-
export type { FilePreviewerContentSlotProps, FilePreviewerInstance, FilePreviewerProps, FilePreviewerStatus, FilePreviewerType, } from './file-previewer';
|
|
73
|
+
export type { FilePreviewerContentSlotProps, FilePreviewerImageProps, FilePreviewerInstance, FilePreviewerMediaProps, FilePreviewerMediaSkin, FilePreviewerPdfProps, FilePreviewerProps, FilePreviewerStatus, FilePreviewerType, } from './file-previewer';
|
|
74
74
|
export { default as Image, ImagePreviewAction, ImagePreview, ImagePreviewGroup } from './image';
|
|
75
75
|
export type { ImageInstance, ImagePreviewActionInstance, ImagePreviewInstance, ImagePreviewGroupInstance, } from './image';
|
|
76
76
|
export { default as Input, InputGroup, InputPassword, InputSearch } from './input';
|