@king-design/vue 3.7.0 → 3.8.0-beta.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/__tests__/__snapshots__/Vue Next Demos.md +399 -0
- package/components/bubble/bubble.d.ts +61 -0
- package/components/bubble/bubble.js +81 -0
- package/components/bubble/bubble.vdt.js +85 -0
- package/components/bubble/index.d.ts +1 -0
- package/components/bubble/index.js +1 -0
- package/components/bubble/index.spec.d.ts +1 -0
- package/components/bubble/index.spec.js +771 -0
- package/components/bubble/styles.d.ts +5 -0
- package/components/bubble/styles.js +53 -0
- package/components/bubble/useBubbleDisplay.d.ts +18 -0
- package/components/bubble/useBubbleDisplay.js +300 -0
- package/components/bubbleList/bubbleList.d.ts +87 -0
- package/components/bubbleList/bubbleList.js +75 -0
- package/components/bubbleList/bubbleList.vdt.js +143 -0
- package/components/bubbleList/index.d.ts +1 -0
- package/components/bubbleList/index.js +1 -0
- package/components/bubbleList/index.spec.d.ts +1 -0
- package/components/bubbleList/index.spec.js +1268 -0
- package/components/bubbleList/item.d.ts +16 -0
- package/components/bubbleList/item.js +27 -0
- package/components/bubbleList/item.vdt.js +36 -0
- package/components/bubbleList/styles.d.ts +5 -0
- package/components/bubbleList/styles.js +33 -0
- package/components/bubbleList/useBubbleList.d.ts +28 -0
- package/components/bubbleList/useBubbleList.js +455 -0
- package/components/checkbox/index.d.ts +3 -3
- package/components/fileCard/fileCard.d.ts +65 -0
- package/components/fileCard/fileCard.js +72 -0
- package/components/fileCard/fileCard.vdt.js +161 -0
- package/components/fileCard/fileCardAssets.d.ts +1 -0
- package/components/fileCard/fileCardAssets.js +54 -0
- package/components/fileCard/fileCardUtils.d.ts +14 -0
- package/components/fileCard/fileCardUtils.js +94 -0
- package/components/fileCard/index.d.ts +2 -0
- package/components/fileCard/index.js +2 -0
- package/components/fileCard/index.spec.d.ts +1 -0
- package/components/fileCard/index.spec.js +1096 -0
- package/components/fileCard/list.d.ts +29 -0
- package/components/fileCard/list.js +46 -0
- package/components/fileCard/list.vdt.js +71 -0
- package/components/fileCard/styles.d.ts +5 -0
- package/components/fileCard/styles.js +83 -0
- package/components/fileCard/useFileCard.d.ts +45 -0
- package/components/fileCard/useFileCard.js +330 -0
- package/components/fileCard/useFileCardList.d.ts +14 -0
- package/components/fileCard/useFileCardList.js +49 -0
- package/components/form/form.js +2 -1
- package/components/media/context.d.ts +6 -0
- package/components/media/context.js +2 -0
- package/components/media/group.d.ts +12 -0
- package/components/media/group.js +32 -0
- package/components/media/group.vdt.js +50 -0
- package/components/media/index.d.ts +2 -0
- package/components/media/index.js +2 -0
- package/components/media/index.spec.d.ts +1 -0
- package/components/media/index.spec.js +1691 -0
- package/components/media/media.d.ts +37 -0
- package/components/media/media.js +67 -0
- package/components/media/media.vdt.js +202 -0
- package/components/media/mediaAssets.d.ts +4 -0
- package/components/media/mediaAssets.js +9 -0
- package/components/media/mediaUtils.d.ts +6 -0
- package/components/media/mediaUtils.js +66 -0
- package/components/media/styles.d.ts +13 -0
- package/components/media/styles.js +52 -0
- package/components/media/types.d.ts +37 -0
- package/components/media/types.js +1 -0
- package/components/media/useMedia.d.ts +70 -0
- package/components/media/useMedia.js +471 -0
- package/components/media/useMediaGroup.d.ts +15 -0
- package/components/media/useMediaGroup.js +136 -0
- package/components/media/useMediaViewer.d.ts +14 -0
- package/components/media/useMediaViewer.js +129 -0
- package/components/media/viewer.d.ts +24 -0
- package/components/media/viewer.js +54 -0
- package/components/media/viewer.vdt.js +100 -0
- package/components/radio/index.d.ts +3 -3
- package/components/sender/icons.d.ts +3 -0
- package/components/sender/icons.js +17 -0
- package/components/sender/index.d.ts +1 -0
- package/components/sender/index.js +1 -0
- package/components/sender/index.spec.d.ts +1 -0
- package/components/sender/index.spec.js +1597 -0
- package/components/sender/sender.d.ts +104 -0
- package/components/sender/sender.js +111 -0
- package/components/sender/sender.vdt.js +230 -0
- package/components/sender/styles.d.ts +5 -0
- package/components/sender/styles.js +56 -0
- package/components/sender/useAutoResize.d.ts +4 -0
- package/components/sender/useAutoResize.js +99 -0
- package/components/sender/useSenderDrag.d.ts +6 -0
- package/components/sender/useSenderDrag.js +320 -0
- package/components/sender/useSenderInput.d.ts +16 -0
- package/components/sender/useSenderInput.js +101 -0
- package/components/sender/useSenderPaste.d.ts +5 -0
- package/components/sender/useSenderPaste.js +36 -0
- package/components/sender/useSenderUpload.d.ts +11 -0
- package/components/sender/useSenderUpload.js +395 -0
- package/components/skeleton/skeleton.d.ts +2 -1
- package/components/skeleton/skeleton.js +1 -1
- package/components/think/index.d.ts +1 -0
- package/components/think/index.js +1 -0
- package/components/think/index.spec.d.ts +1 -0
- package/components/think/index.spec.js +345 -0
- package/components/think/index.vdt.js +82 -0
- package/components/think/styles.d.ts +5 -0
- package/components/think/styles.js +25 -0
- package/components/think/think.d.ts +28 -0
- package/components/think/think.js +48 -0
- package/components/think/useThinkExpand.d.ts +10 -0
- package/components/think/useThinkExpand.js +56 -0
- package/components/types.d.ts +4 -2
- package/components/upload/ajaxUploader.d.ts +1 -0
- package/components/upload/ajaxUploader.js +6 -0
- package/components/xmarkdown/index.d.ts +2 -0
- package/components/xmarkdown/index.js +1 -0
- package/components/xmarkdown/index.spec.d.ts +1 -0
- package/components/xmarkdown/index.spec.js +1666 -0
- package/components/xmarkdown/markdown/codeBlockRenderer.d.ts +8 -0
- package/components/xmarkdown/markdown/codeBlockRenderer.js +52 -0
- package/components/xmarkdown/markdown/codeblock.d.ts +8 -0
- package/components/xmarkdown/markdown/codeblock.js +74 -0
- package/components/xmarkdown/markdown/highlight.d.ts +17 -0
- package/components/xmarkdown/markdown/highlight.js +83 -0
- package/components/xmarkdown/markdown/index.d.ts +14 -0
- package/components/xmarkdown/markdown/index.js +14 -0
- package/components/xmarkdown/markdown/mermaid.d.ts +8 -0
- package/components/xmarkdown/markdown/mermaid.js +104 -0
- package/components/xmarkdown/markdown/renderTree.d.ts +54 -0
- package/components/xmarkdown/markdown/renderTree.js +386 -0
- package/components/xmarkdown/markdown/renderer.d.ts +18 -0
- package/components/xmarkdown/markdown/renderer.js +461 -0
- package/components/xmarkdown/markdown/streaming.d.ts +24 -0
- package/components/xmarkdown/markdown/streaming.js +513 -0
- package/components/xmarkdown/markdown/types.d.ts +124 -0
- package/components/xmarkdown/markdown/types.js +6 -0
- package/components/xmarkdown/markdown/utils.d.ts +7 -0
- package/components/xmarkdown/markdown/utils.js +9 -0
- package/components/xmarkdown/markdown.d.ts +1 -0
- package/components/xmarkdown/markdown.js +1 -0
- package/components/xmarkdown/styles.d.ts +5 -0
- package/components/xmarkdown/styles.js +50 -0
- package/components/xmarkdown/useMermaid.d.ts +27 -0
- package/components/xmarkdown/useMermaid.js +745 -0
- package/components/xmarkdown/useXMarkdownContent.d.ts +14 -0
- package/components/xmarkdown/useXMarkdownContent.js +218 -0
- package/components/xmarkdown/useXMarkdownDisplay.d.ts +26 -0
- package/components/xmarkdown/useXMarkdownDisplay.js +569 -0
- package/components/xmarkdown/xmarkdown.d.ts +61 -0
- package/components/xmarkdown/xmarkdown.js +109 -0
- package/components/xmarkdown/xmarkdown.vdt.js +43 -0
- package/dist/fonts/KaTeX_AMS-Regular.ttf +0 -0
- package/dist/fonts/KaTeX_AMS-Regular.woff +0 -0
- package/dist/fonts/KaTeX_AMS-Regular.woff2 +0 -0
- package/dist/fonts/KaTeX_Caligraphic-Bold.ttf +0 -0
- package/dist/fonts/KaTeX_Caligraphic-Bold.woff +0 -0
- package/dist/fonts/KaTeX_Caligraphic-Bold.woff2 +0 -0
- package/dist/fonts/KaTeX_Caligraphic-Regular.ttf +0 -0
- package/dist/fonts/KaTeX_Caligraphic-Regular.woff +0 -0
- package/dist/fonts/KaTeX_Caligraphic-Regular.woff2 +0 -0
- package/dist/fonts/KaTeX_Fraktur-Bold.ttf +0 -0
- package/dist/fonts/KaTeX_Fraktur-Bold.woff +0 -0
- package/dist/fonts/KaTeX_Fraktur-Bold.woff2 +0 -0
- package/dist/fonts/KaTeX_Fraktur-Regular.ttf +0 -0
- package/dist/fonts/KaTeX_Fraktur-Regular.woff +0 -0
- package/dist/fonts/KaTeX_Fraktur-Regular.woff2 +0 -0
- package/dist/fonts/KaTeX_Main-Bold.ttf +0 -0
- package/dist/fonts/KaTeX_Main-Bold.woff +0 -0
- package/dist/fonts/KaTeX_Main-Bold.woff2 +0 -0
- package/dist/fonts/KaTeX_Main-BoldItalic.ttf +0 -0
- package/dist/fonts/KaTeX_Main-BoldItalic.woff +0 -0
- package/dist/fonts/KaTeX_Main-BoldItalic.woff2 +0 -0
- package/dist/fonts/KaTeX_Main-Italic.ttf +0 -0
- package/dist/fonts/KaTeX_Main-Italic.woff +0 -0
- package/dist/fonts/KaTeX_Main-Italic.woff2 +0 -0
- package/dist/fonts/KaTeX_Main-Regular.ttf +0 -0
- package/dist/fonts/KaTeX_Main-Regular.woff +0 -0
- package/dist/fonts/KaTeX_Main-Regular.woff2 +0 -0
- package/dist/fonts/KaTeX_Math-BoldItalic.ttf +0 -0
- package/dist/fonts/KaTeX_Math-BoldItalic.woff +0 -0
- package/dist/fonts/KaTeX_Math-BoldItalic.woff2 +0 -0
- package/dist/fonts/KaTeX_Math-Italic.ttf +0 -0
- package/dist/fonts/KaTeX_Math-Italic.woff +0 -0
- package/dist/fonts/KaTeX_Math-Italic.woff2 +0 -0
- package/dist/fonts/KaTeX_SansSerif-Bold.ttf +0 -0
- package/dist/fonts/KaTeX_SansSerif-Bold.woff +0 -0
- package/dist/fonts/KaTeX_SansSerif-Bold.woff2 +0 -0
- package/dist/fonts/KaTeX_SansSerif-Italic.ttf +0 -0
- package/dist/fonts/KaTeX_SansSerif-Italic.woff +0 -0
- package/dist/fonts/KaTeX_SansSerif-Italic.woff2 +0 -0
- package/dist/fonts/KaTeX_SansSerif-Regular.ttf +0 -0
- package/dist/fonts/KaTeX_SansSerif-Regular.woff +0 -0
- package/dist/fonts/KaTeX_SansSerif-Regular.woff2 +0 -0
- package/dist/fonts/KaTeX_Script-Regular.ttf +0 -0
- package/dist/fonts/KaTeX_Script-Regular.woff +0 -0
- package/dist/fonts/KaTeX_Script-Regular.woff2 +0 -0
- package/dist/fonts/KaTeX_Size1-Regular.ttf +0 -0
- package/dist/fonts/KaTeX_Size1-Regular.woff +0 -0
- package/dist/fonts/KaTeX_Size1-Regular.woff2 +0 -0
- package/dist/fonts/KaTeX_Size2-Regular.ttf +0 -0
- package/dist/fonts/KaTeX_Size2-Regular.woff +0 -0
- package/dist/fonts/KaTeX_Size2-Regular.woff2 +0 -0
- package/dist/fonts/KaTeX_Size3-Regular.ttf +0 -0
- package/dist/fonts/KaTeX_Size3-Regular.woff +0 -0
- package/dist/fonts/KaTeX_Size3-Regular.woff2 +0 -0
- package/dist/fonts/KaTeX_Size4-Regular.ttf +0 -0
- package/dist/fonts/KaTeX_Size4-Regular.woff +0 -0
- package/dist/fonts/KaTeX_Size4-Regular.woff2 +0 -0
- package/dist/fonts/KaTeX_Typewriter-Regular.ttf +0 -0
- package/dist/fonts/KaTeX_Typewriter-Regular.woff +0 -0
- package/dist/fonts/KaTeX_Typewriter-Regular.woff2 +0 -0
- package/dist/i18n/en-US.js +29 -1
- package/dist/i18n/en-US.js.map +1 -1
- package/dist/i18n/en-US.min.js +1 -1
- package/dist/index.js +100506 -37457
- package/dist/index.js.map +1 -1
- package/dist/index.min.js +1569 -1
- package/dist/kpc.css +4 -0
- package/dist/ksyun.css +4 -0
- package/i18n/en-US.d.ts +27 -0
- package/i18n/en-US.js +29 -1
- package/index.d.ts +9 -2
- package/index.js +9 -2
- package/package.json +8 -2
- package/styles/global.js +12 -6
- package/yarn-error.log +0 -1012
|
@@ -0,0 +1,129 @@
|
|
|
1
|
+
import { onMounted, onUnmounted, useInstance } from 'intact-vue-next';
|
|
2
|
+
import { useFixBody } from '../../hooks/useFixBody';
|
|
3
|
+
import { mediaAudioCardUrl } from './mediaAssets';
|
|
4
|
+
export function useMediaViewer() {
|
|
5
|
+
var instance = useInstance();
|
|
6
|
+
var fixBody = useFixBody();
|
|
7
|
+
var isListening = false;
|
|
8
|
+
function close() {
|
|
9
|
+
var onClose = instance.get('onClose');
|
|
10
|
+
if (onClose) onClose();
|
|
11
|
+
}
|
|
12
|
+
function prev() {
|
|
13
|
+
var onPrev = instance.get('onPrev');
|
|
14
|
+
if (onPrev && instance.get('hasPrev')) onPrev();
|
|
15
|
+
}
|
|
16
|
+
function next() {
|
|
17
|
+
var onNext = instance.get('onNext');
|
|
18
|
+
if (onNext && instance.get('hasNext')) onNext();
|
|
19
|
+
}
|
|
20
|
+
// 预览层支持 Esc 关闭和左右方向键切换。
|
|
21
|
+
function onKeydown(e) {
|
|
22
|
+
switch (e.keyCode) {
|
|
23
|
+
case 27:
|
|
24
|
+
close();
|
|
25
|
+
break;
|
|
26
|
+
case 37:
|
|
27
|
+
prev();
|
|
28
|
+
break;
|
|
29
|
+
case 39:
|
|
30
|
+
next();
|
|
31
|
+
break;
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
// 避免重复绑定全局键盘事件。
|
|
35
|
+
function addKeydownListener() {
|
|
36
|
+
if (isListening) return;
|
|
37
|
+
document.addEventListener('keydown', onKeydown);
|
|
38
|
+
isListening = true;
|
|
39
|
+
}
|
|
40
|
+
// Viewer 不可见或卸载时及时移除全局监听。
|
|
41
|
+
function removeKeydownListener() {
|
|
42
|
+
if (!isListening) return;
|
|
43
|
+
document.removeEventListener('keydown', onKeydown);
|
|
44
|
+
isListening = false;
|
|
45
|
+
}
|
|
46
|
+
onMounted(function () {
|
|
47
|
+
if (instance.get('value')) {
|
|
48
|
+
fixBody.onOpen();
|
|
49
|
+
addKeydownListener();
|
|
50
|
+
}
|
|
51
|
+
});
|
|
52
|
+
onUnmounted(function () {
|
|
53
|
+
removeKeydownListener();
|
|
54
|
+
fixBody.onClose();
|
|
55
|
+
});
|
|
56
|
+
instance.watch('value', function (value) {
|
|
57
|
+
if (value) {
|
|
58
|
+
fixBody.onOpen();
|
|
59
|
+
addKeydownListener();
|
|
60
|
+
} else {
|
|
61
|
+
removeKeydownListener();
|
|
62
|
+
}
|
|
63
|
+
});
|
|
64
|
+
// 点击遮罩关闭,内容区域在模板中会阻止冒泡。
|
|
65
|
+
function onMaskClick() {
|
|
66
|
+
close();
|
|
67
|
+
}
|
|
68
|
+
function onCloseClick(e) {
|
|
69
|
+
e.stopPropagation();
|
|
70
|
+
close();
|
|
71
|
+
}
|
|
72
|
+
function onPrevClick(e) {
|
|
73
|
+
e.stopPropagation();
|
|
74
|
+
prev();
|
|
75
|
+
}
|
|
76
|
+
function onNextClick(e) {
|
|
77
|
+
e.stopPropagation();
|
|
78
|
+
next();
|
|
79
|
+
}
|
|
80
|
+
function isImage() {
|
|
81
|
+
var _instance$get;
|
|
82
|
+
return ((_instance$get = instance.get('item')) == null ? void 0 : _instance$get.resolvedType) === 'image';
|
|
83
|
+
}
|
|
84
|
+
function isVideo() {
|
|
85
|
+
var _instance$get2;
|
|
86
|
+
return ((_instance$get2 = instance.get('item')) == null ? void 0 : _instance$get2.resolvedType) === 'video';
|
|
87
|
+
}
|
|
88
|
+
function isAudio() {
|
|
89
|
+
var _instance$get3;
|
|
90
|
+
return ((_instance$get3 = instance.get('item')) == null ? void 0 : _instance$get3.resolvedType) === 'audio';
|
|
91
|
+
}
|
|
92
|
+
function getTitle() {
|
|
93
|
+
var _instance$get4;
|
|
94
|
+
return ((_instance$get4 = instance.get('item')) == null ? void 0 : _instance$get4.name) || '';
|
|
95
|
+
}
|
|
96
|
+
function getCounterText() {
|
|
97
|
+
var total = instance.get('total') || 0;
|
|
98
|
+
if (total <= 1) return '';
|
|
99
|
+
return (instance.get('index') || 0) + 1 + " / " + total;
|
|
100
|
+
}
|
|
101
|
+
function shouldShowNavigation() {
|
|
102
|
+
return (instance.get('total') || 0) > 1;
|
|
103
|
+
}
|
|
104
|
+
function getAudioCardAssetSrc() {
|
|
105
|
+
return mediaAudioCardUrl;
|
|
106
|
+
}
|
|
107
|
+
// 离场动画完成后释放滚动锁并通知外层卸载。
|
|
108
|
+
function onAfterLeave() {
|
|
109
|
+
if (!instance.get('value')) {
|
|
110
|
+
fixBody.onClose();
|
|
111
|
+
}
|
|
112
|
+
var onAfterClose = instance.get('onAfterClose');
|
|
113
|
+
if (onAfterClose) onAfterClose();
|
|
114
|
+
}
|
|
115
|
+
return {
|
|
116
|
+
onMaskClick: onMaskClick,
|
|
117
|
+
onCloseClick: onCloseClick,
|
|
118
|
+
onPrevClick: onPrevClick,
|
|
119
|
+
onNextClick: onNextClick,
|
|
120
|
+
onAfterLeave: onAfterLeave,
|
|
121
|
+
isImage: isImage,
|
|
122
|
+
isVideo: isVideo,
|
|
123
|
+
isAudio: isAudio,
|
|
124
|
+
getTitle: getTitle,
|
|
125
|
+
getCounterText: getCounterText,
|
|
126
|
+
shouldShowNavigation: shouldShowNavigation,
|
|
127
|
+
getAudioCardAssetSrc: getAudioCardAssetSrc
|
|
128
|
+
};
|
|
129
|
+
}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { Component, TypeDefs } from 'intact-vue-next';
|
|
2
|
+
import type { Container } from '../portal';
|
|
3
|
+
import type { MediaViewerItem } from './types';
|
|
4
|
+
export interface MediaViewerProps {
|
|
5
|
+
className?: string;
|
|
6
|
+
value?: boolean;
|
|
7
|
+
item?: MediaViewerItem | null;
|
|
8
|
+
index?: number;
|
|
9
|
+
total?: number;
|
|
10
|
+
hasPrev?: boolean;
|
|
11
|
+
hasNext?: boolean;
|
|
12
|
+
container?: Container;
|
|
13
|
+
onClose?: () => void;
|
|
14
|
+
onAfterClose?: () => void;
|
|
15
|
+
onPrev?: () => void;
|
|
16
|
+
onNext?: () => void;
|
|
17
|
+
}
|
|
18
|
+
export declare class MediaViewer extends Component<MediaViewerProps> {
|
|
19
|
+
static template: string | import('intact-vue-next').Template<any>;
|
|
20
|
+
static typeDefs: Required<TypeDefs<MediaViewerProps>>;
|
|
21
|
+
static defaults: () => Partial<MediaViewerProps>;
|
|
22
|
+
private config;
|
|
23
|
+
private viewer;
|
|
24
|
+
}
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
import _inheritsLoose from "@babel/runtime-corejs3/helpers/inheritsLoose";
|
|
2
|
+
import _concatInstanceProperty from "@babel/runtime-corejs3/core-js/instance/concat";
|
|
3
|
+
import { Component } from 'intact-vue-next';
|
|
4
|
+
import template from './viewer.vdt';
|
|
5
|
+
import { useConfigContext } from '../config';
|
|
6
|
+
import { useMediaViewer } from './useMediaViewer';
|
|
7
|
+
var typeDefs = {
|
|
8
|
+
className: String,
|
|
9
|
+
value: Boolean,
|
|
10
|
+
item: Object,
|
|
11
|
+
index: Number,
|
|
12
|
+
total: Number,
|
|
13
|
+
hasPrev: Boolean,
|
|
14
|
+
hasNext: Boolean,
|
|
15
|
+
container: [String, Function],
|
|
16
|
+
onClose: Function,
|
|
17
|
+
onAfterClose: Function,
|
|
18
|
+
onPrev: Function,
|
|
19
|
+
onNext: Function
|
|
20
|
+
};
|
|
21
|
+
var defaults = function defaults() {
|
|
22
|
+
return {
|
|
23
|
+
className: undefined,
|
|
24
|
+
value: false,
|
|
25
|
+
item: null,
|
|
26
|
+
index: 0,
|
|
27
|
+
total: 0,
|
|
28
|
+
hasPrev: false,
|
|
29
|
+
hasNext: false,
|
|
30
|
+
container: undefined,
|
|
31
|
+
onClose: undefined,
|
|
32
|
+
onAfterClose: undefined,
|
|
33
|
+
onPrev: undefined,
|
|
34
|
+
onNext: undefined
|
|
35
|
+
};
|
|
36
|
+
};
|
|
37
|
+
export var MediaViewer = /*#__PURE__*/function (_Component) {
|
|
38
|
+
_inheritsLoose(MediaViewer, _Component);
|
|
39
|
+
function MediaViewer() {
|
|
40
|
+
var _context;
|
|
41
|
+
var _this;
|
|
42
|
+
for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
|
|
43
|
+
args[_key] = arguments[_key];
|
|
44
|
+
}
|
|
45
|
+
_this = _Component.call.apply(_Component, _concatInstanceProperty(_context = [this]).call(_context, args)) || this;
|
|
46
|
+
_this.config = useConfigContext();
|
|
47
|
+
_this.viewer = useMediaViewer();
|
|
48
|
+
return _this;
|
|
49
|
+
}
|
|
50
|
+
return MediaViewer;
|
|
51
|
+
}(Component);
|
|
52
|
+
MediaViewer.template = template;
|
|
53
|
+
MediaViewer.typeDefs = typeDefs;
|
|
54
|
+
MediaViewer.defaults = defaults;
|
|
@@ -0,0 +1,100 @@
|
|
|
1
|
+
import { createUnknownComponentVNode as _$cc, createElementVNode as _$ce, className as _$cn } from 'intact-vue-next';
|
|
2
|
+
import { Portal } from '../portal';
|
|
3
|
+
import { Icon } from '../icon';
|
|
4
|
+
import { Transition } from 'intact-vue-next';
|
|
5
|
+
import { stopPropagation } from '../utils';
|
|
6
|
+
export default function ($props, $blocks, $__proto__) {
|
|
7
|
+
var _$cn2;
|
|
8
|
+
$blocks || ($blocks = {});
|
|
9
|
+
$props || ($props = {});
|
|
10
|
+
var $this = this;
|
|
11
|
+
var _this$viewer = this.viewer,
|
|
12
|
+
onMaskClick = _this$viewer.onMaskClick,
|
|
13
|
+
onCloseClick = _this$viewer.onCloseClick,
|
|
14
|
+
onPrevClick = _this$viewer.onPrevClick,
|
|
15
|
+
onNextClick = _this$viewer.onNextClick,
|
|
16
|
+
onAfterLeave = _this$viewer.onAfterLeave,
|
|
17
|
+
isImage = _this$viewer.isImage,
|
|
18
|
+
isVideo = _this$viewer.isVideo,
|
|
19
|
+
isAudio = _this$viewer.isAudio,
|
|
20
|
+
getTitle = _this$viewer.getTitle,
|
|
21
|
+
getCounterText = _this$viewer.getCounterText,
|
|
22
|
+
shouldShowNavigation = _this$viewer.shouldShowNavigation,
|
|
23
|
+
getAudioCardAssetSrc = _this$viewer.getAudioCardAssetSrc;
|
|
24
|
+
var _this$get = this.get(),
|
|
25
|
+
item = _this$get.item,
|
|
26
|
+
hasPrev = _this$get.hasPrev,
|
|
27
|
+
hasNext = _this$get.hasNext,
|
|
28
|
+
container = _this$get.container,
|
|
29
|
+
value = _this$get.value;
|
|
30
|
+
var k = this.config.k;
|
|
31
|
+
var currentItem = item || {
|
|
32
|
+
name: '',
|
|
33
|
+
src: '',
|
|
34
|
+
poster: ''
|
|
35
|
+
};
|
|
36
|
+
return _$cc(Portal, {
|
|
37
|
+
'container': container,
|
|
38
|
+
'children': _$cc(Transition, {
|
|
39
|
+
'show': value,
|
|
40
|
+
'appear': value,
|
|
41
|
+
'name': 'k-fade',
|
|
42
|
+
'onAfterLeave': onAfterLeave,
|
|
43
|
+
'children': value ? _$ce(2, 'div', [_$ce(2, 'div', [_$ce(2, 'div', [_$ce(2, 'div', getTitle(), 0, _$cn(k + "-media-viewer-title"), {
|
|
44
|
+
'title': getTitle()
|
|
45
|
+
}), getCounterText() ? _$ce(2, 'div', getCounterText(), 0, _$cn(k + "-media-viewer-counter")) : undefined], 0, _$cn(k + "-media-viewer-heading")), _$ce(2, 'button', _$cc(Icon, {
|
|
46
|
+
'className': _$cn(k + "-icon-close-bold")
|
|
47
|
+
}), 2, _$cn(k + "-media-viewer-close"), {
|
|
48
|
+
'type': 'button',
|
|
49
|
+
'title': '关闭预览',
|
|
50
|
+
'aria-label': '关闭预览',
|
|
51
|
+
'ev-click': onCloseClick
|
|
52
|
+
})], 4, _$cn(k + "-media-viewer-header"), {
|
|
53
|
+
'ev-click': stopPropagation
|
|
54
|
+
}), shouldShowNavigation() ? _$ce(2, 'button', _$cc(Icon, {
|
|
55
|
+
'className': _$cn(k + "-icon-left")
|
|
56
|
+
}), 2, _$cn(k + "-media-viewer-prev"), {
|
|
57
|
+
'type': 'button',
|
|
58
|
+
'title': '上一个',
|
|
59
|
+
'aria-label': '上一个',
|
|
60
|
+
'disabled': !hasPrev,
|
|
61
|
+
'ev-click': onPrevClick
|
|
62
|
+
}) : undefined, shouldShowNavigation() ? _$ce(2, 'button', _$cc(Icon, {
|
|
63
|
+
'className': _$cn(k + "-icon-right")
|
|
64
|
+
}), 2, _$cn(k + "-media-viewer-next"), {
|
|
65
|
+
'type': 'button',
|
|
66
|
+
'title': '下一个',
|
|
67
|
+
'aria-label': '下一个',
|
|
68
|
+
'disabled': !hasNext,
|
|
69
|
+
'ev-click': onNextClick
|
|
70
|
+
}) : undefined, _$ce(2, 'div', isImage() ? _$ce(2, 'img', null, 1, _$cn(k + "-media-viewer-image"), {
|
|
71
|
+
'src': currentItem.src,
|
|
72
|
+
'alt': currentItem.name,
|
|
73
|
+
'draggable': false,
|
|
74
|
+
'ev-click': stopPropagation
|
|
75
|
+
}) : isVideo() ? _$ce(2, 'video', null, 1, _$cn(k + "-media-viewer-video"), {
|
|
76
|
+
'src': currentItem.src,
|
|
77
|
+
'poster': currentItem.poster || undefined,
|
|
78
|
+
'controls': true,
|
|
79
|
+
'autoplay': true,
|
|
80
|
+
'preload': 'metadata',
|
|
81
|
+
'playsinline': true,
|
|
82
|
+
'ev-click': stopPropagation
|
|
83
|
+
}) : isAudio() ? _$ce(2, 'div', [_$ce(2, 'div', _$ce(2, 'img', null, 1, _$cn(k + "-media-viewer-audio-cover-image"), {
|
|
84
|
+
'src': getAudioCardAssetSrc(),
|
|
85
|
+
'alt': '',
|
|
86
|
+
'draggable': false
|
|
87
|
+
}), 2, _$cn(k + "-media-viewer-audio-cover")), _$ce(2, 'div', currentItem.name, 0, _$cn(k + "-media-viewer-audio-title")), _$ce(2, 'audio', null, 1, _$cn(k + "-media-viewer-audio-player"), {
|
|
88
|
+
'src': currentItem.src,
|
|
89
|
+
'controls': true,
|
|
90
|
+
'autoplay': true,
|
|
91
|
+
'preload': 'metadata'
|
|
92
|
+
})], 4, _$cn(k + "-media-viewer-audio"), {
|
|
93
|
+
'ev-click': stopPropagation
|
|
94
|
+
}) : undefined, 0, _$cn(k + "-media-viewer-stage"))], 0, _$cn((_$cn2 = {}, _$cn2[k + "-media-viewer"] = true, _$cn2[this.get('className')] = this.get('className'), _$cn2)), {
|
|
95
|
+
'ev-click': onMaskClick
|
|
96
|
+
}) : undefined
|
|
97
|
+
})
|
|
98
|
+
});
|
|
99
|
+
}
|
|
100
|
+
;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { Component, TypeDefs } from 'intact-vue-next';
|
|
2
|
-
import type {
|
|
3
|
-
export interface RadioProps<Value = false, True = true> extends
|
|
2
|
+
import type { CommonFormElementAttributes, Events } from '../types';
|
|
3
|
+
export interface RadioProps<Value = false, True = true> extends CommonFormElementAttributes {
|
|
4
4
|
disabled?: boolean;
|
|
5
5
|
value?: Value | True;
|
|
6
6
|
trueValue?: True;
|
|
@@ -11,7 +11,7 @@ export interface RadioEvents<True = true> {
|
|
|
11
11
|
}
|
|
12
12
|
export declare class Radio<Value = false, True = true> extends Component<RadioProps<Value, True>, RadioEvents<True>> {
|
|
13
13
|
static template: string | import('intact-vue-next').Template<any>;
|
|
14
|
-
static typeDefs: Required<TypeDefs<Omit<RadioProps<false, true>, keyof
|
|
14
|
+
static typeDefs: Required<TypeDefs<Omit<RadioProps<false, true>, keyof CommonFormElementAttributes>>>;
|
|
15
15
|
static defaults: () => Partial<RadioProps<false, true>>;
|
|
16
16
|
static events: Events<RadioEvents<true>>;
|
|
17
17
|
private elementRef;
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
// 内联 SVG 资源:data URL 形式,与 fileCard 中的占位图保持一致策略,避免下游打包额外处理 SVG 资源。
|
|
2
|
+
// 三个发送态共用同一张图,hover/disabled 通过 CSS opacity 切换;附件用 currentColor,hover 时由 CSS 改色。
|
|
3
|
+
// 设计为 32×32 可点击主形(与 sendButtonSize 一致);原先 48×48 导出版本中间才是 32px 圆,用 img 外溢对齐容易「撑不满 / 对不齐」。
|
|
4
|
+
// 将图形坐标归一到 viewBox 0 0 32 32,阴影用组件侧 CSS filter,与原有 SVG feDropShadow 观感接近且不占画布。
|
|
5
|
+
var SEND_SVG = ['<svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 32 32" fill="none">', '<rect width="32" height="32" rx="16" fill="url(#b)"/>',
|
|
6
|
+
// 路径由原 48 稿中 path 平移 (-8, -4) 到 0..32 坐标系
|
|
7
|
+
'<path d="M22.3337 9.6666L17.9003 22.3333L16.0003 16L9.667 14.1L22.3337 9.6666Z" fill="white" stroke="white" stroke-linejoin="round"/>', '<defs>', '<linearGradient id="b" x1="0" y1="0" x2="32" y2="32" gradientUnits="userSpaceOnUse">', '<stop stop-color="#00DDDD"/>', '<stop offset="0.538462" stop-color="#5370FF"/>', '<stop offset="1" stop-color="#712FFF"/>', '</linearGradient>', '</defs>', '</svg>'].join('');
|
|
8
|
+
var STOP_SVG = ['<svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 32 32" fill="none">', '<rect width="32" height="32" rx="16" fill="url(#b)"/>', '<rect x="10" y="10" width="12" height="12" rx="2" fill="white"/>', '<defs>', '<linearGradient id="b" x1="0" y1="0" x2="32" y2="32" gradientUnits="userSpaceOnUse">', '<stop stop-color="#00DDDD"/>', '<stop offset="0.538462" stop-color="#5370FF"/>', '<stop offset="1" stop-color="#712FFF"/>', '</linearGradient>', '</defs>', '</svg>'].join('');
|
|
9
|
+
// 附件回形针 16x16,stroke 用 currentColor,方便用 CSS color 控制颜色变化。
|
|
10
|
+
var ATTACH_SVG = ['<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16" fill="none">', '<path d="M8.23567 3.18836L3.28591 8.13812C2.11433 9.30969 2.11433 11.2092 3.28591 12.3808C4.45747 13.5523 6.35697 13.5523 7.52854 12.3808L13.4211 6.48819C14.2021 5.70716 14.2021 4.44082 13.4211 3.65975C12.6401 2.87871 11.3737 2.87871 10.5927 3.65975L4.70014 9.55232C4.3096 9.94286 4.3096 10.576 4.70014 10.9665C5.09064 11.3571 5.7238 11.3571 6.11434 10.9665L11.0641 6.01679" stroke="currentColor" stroke-linecap="square" stroke-linejoin="round"/>', '</svg>'].join('');
|
|
11
|
+
function toDataUrl(svg) {
|
|
12
|
+
return "data:image/svg+xml;charset=UTF-8," + encodeURIComponent(svg);
|
|
13
|
+
}
|
|
14
|
+
export var senderSendIcon = toDataUrl(SEND_SVG);
|
|
15
|
+
export var senderStopIcon = toDataUrl(STOP_SVG);
|
|
16
|
+
// 附件用 innerHTML 注入,因为 currentColor 在 <img src> 形式下无法继承 color。
|
|
17
|
+
export var senderAttachSvg = ATTACH_SVG;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './sender';
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './sender';
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|