@vunk/plus 1.3.0 → 1.3.2
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/components/SendOutlined.mjs +1 -1
- package/components/agent-chat-provider/index.d.ts +7 -0
- package/components/agent-chat-provider/src/api.d.ts +3 -0
- package/components/agent-chat-provider/src/const-roles.d.ts +8 -0
- package/components/agent-chat-provider/src/const.d.ts +1 -0
- package/components/agent-chat-provider/src/index.vue.d.ts +47 -0
- package/components/agent-chat-provider/src/types.d.ts +37 -0
- package/components/agent-chat-provider/src/use.d.ts +29 -0
- package/components/avatar/index.d.ts +4 -0
- package/components/avatar/src/ctx.d.ts +18 -0
- package/components/avatar/src/index.vue.d.ts +121 -0
- package/components/avatar/src/types.d.ts +1 -0
- package/components/broadcasting-markdown/index.d.ts +5 -0
- package/components/broadcasting-markdown/index.mjs +32 -16
- package/components/broadcasting-markdown/src/const.d.ts +18 -0
- package/components/broadcasting-markdown/src/ctx.d.ts +101 -0
- package/components/broadcasting-markdown/src/custom-speech.vue.d.ts +117 -0
- package/components/broadcasting-markdown/src/index.vue.d.ts +502 -0
- package/components/broadcasting-markdown/src/paragraph.vue.d.ts +78 -0
- package/components/broadcasting-markdown/src/speech-error.vue.d.ts +60 -0
- package/components/broadcasting-markdown/src/types.d.ts +17 -0
- package/components/broadcasting-markdown/src/use.d.ts +3 -0
- package/components/broadcasting-markdown/src/web-speech.vue.d.ts +110 -0
- package/components/bubble-list/index.d.ts +5 -0
- package/components/bubble-list/index.mjs +2 -316
- package/components/bubble-list/src/ctx.d.ts +30 -0
- package/components/bubble-list/src/index.vue.d.ts +952 -0
- package/components/bubble-list/src/types.d.ts +4 -0
- package/components/bubble-templates/index.d.ts +4 -0
- package/components/bubble-templates/index.mjs +2 -161
- package/components/bubble-templates/src/index.vue.d.ts +656 -0
- package/components/bubble-templates/src/types.d.ts +30 -0
- package/components/chat-independent/index.d.ts +4 -0
- package/components/chat-independent/index.mjs +42 -34
- package/components/chat-independent/src/const.d.ts +13 -0
- package/components/chat-independent/src/ctx.d.ts +20 -0
- package/components/chat-independent/src/index.vue.d.ts +2413 -0
- package/components/chat-independent/src/types.d.ts +13 -0
- package/components/index.d.ts +0 -0
- package/components/index.mjs +0 -35979
- package/components/lottie-animation/index.d.ts +4 -0
- package/components/lottie-animation/src/ctx.d.ts +10 -0
- package/components/lottie-animation/src/index.vue.d.ts +21 -0
- package/components/lottie-animation/src/types.d.ts +4 -0
- package/components/monaco-editor/index.d.ts +5 -0
- package/components/monaco-editor/src/ctx.d.ts +23 -0
- package/components/monaco-editor/src/index.vue.d.ts +40 -0
- package/components/monaco-editor/src/types.d.ts +1 -0
- package/components/monaco-environment/index.d.ts +4 -0
- package/components/monaco-environment/src/ctx.d.ts +8 -0
- package/components/monaco-environment/src/index.vue.d.ts +2 -0
- package/components/monaco-environment/src/types.d.ts +1 -0
- package/components/recorder-button/index.d.ts +4 -0
- package/components/recorder-button/src/ctx.d.ts +40 -0
- package/components/recorder-button/src/index.vue.d.ts +303 -0
- package/components/recorder-button/src/speech-to-text.d.ts +1 -0
- package/components/recorder-button/src/types.d.ts +7 -0
- package/components/routes-menu-content/index.d.ts +4 -0
- package/components/routes-menu-content/src/ctx.d.ts +17 -0
- package/components/routes-menu-content/src/index.vue.d.ts +472 -0
- package/components/routes-menu-content/src/item/core/ctx.d.ts +18 -0
- package/components/routes-menu-content/src/item/core/index.vue.d.ts +307 -0
- package/components/routes-menu-content/src/item/ctx.d.ts +14 -0
- package/components/routes-menu-content/src/item/index.vue.d.ts +438 -0
- package/components/routes-menu-content/src/types.d.ts +1 -0
- package/components/sender/index.d.ts +4 -0
- package/components/sender/index.mjs +1 -1
- package/components/sender/src/SenderHeader.vue.d.ts +256 -0
- package/components/sender/src/ctx.d.ts +58 -0
- package/components/sender/src/index.vue.d.ts +778 -0
- package/components/sender/src/types.d.ts +1 -0
- package/components/speech-button/index.d.ts +4 -0
- package/components/speech-button/index.mjs +1 -1
- package/components/speech-button/src/LoadingIcon.vue.d.ts +2 -0
- package/components/speech-button/src/RecordingIcon.vue.d.ts +2 -0
- package/components/speech-button/src/ctx.d.ts +10 -0
- package/components/speech-button/src/index.vue.d.ts +22 -0
- package/components/speech-button/src/types.d.ts +1 -0
- package/components/table-columns/index.d.ts +5 -0
- package/components/table-columns/src/ctx.d.ts +66 -0
- package/components/table-columns/src/el-ctx.d.ts +63 -0
- package/components/table-columns/src/index.vue.d.ts +282 -0
- package/components/table-columns/src/types.d.ts +21 -0
- package/components/tables-v1/index.d.ts +5 -0
- package/components/tables-v1/src/ctx.d.ts +281 -0
- package/components/tables-v1/src/el-ctx.d.ts +269 -0
- package/components/tables-v1/src/index.vue.d.ts +3014 -0
- package/components/tables-v1/src/types.d.ts +4 -0
- package/components/tables-v1-checkbox/index.d.ts +5 -0
- package/components/tables-v1-checkbox/src/ctx.d.ts +321 -0
- package/components/tables-v1-checkbox/src/index.vue.d.ts +3796 -0
- package/components/tables-v1-checkbox/src/types.d.ts +1 -0
- package/components/typing-markdown/index.d.ts +4 -0
- package/components/typing-markdown/index.mjs +2 -2
- package/components/typing-markdown/src/core.d.ts +2 -0
- package/components/typing-markdown/src/ctx.d.ts +33 -0
- package/components/typing-markdown/src/index.vue.d.ts +57 -0
- package/components/typing-markdown/src/types.d.ts +1 -0
- package/components/vditor/index.d.ts +5 -0
- package/components/vditor/src/ctx.d.ts +37 -0
- package/components/vditor/src/handle-fullscreen.vue.d.ts +18 -0
- package/components/vditor/src/handle-value.vue.d.ts +18 -0
- package/components/vditor/src/index.vue.d.ts +144 -0
- package/components/vditor/src/types.d.ts +9 -0
- package/components/vditor/src/use.d.ts +4 -0
- package/index.css +0 -38
- package/package.json +1 -7
- package/components/bubble-list/index.css +0 -18
- package/components/bubble-templates/index.css +0 -18
|
@@ -1334,4 +1334,4 @@ var SendOutlined = function SendOutlined(props, context) {
|
|
|
1334
1334
|
SendOutlined.displayName = 'SendOutlined';
|
|
1335
1335
|
SendOutlined.inheritAttrs = false;
|
|
1336
1336
|
|
|
1337
|
-
export { AudioMutedOutlined as A, CloseOutlined as C, LinkOutlined as L, SendOutlined as S,
|
|
1337
|
+
export { AudioMutedOutlined as A, CloseOutlined as C, LinkOutlined as L, SendOutlined as S, AudioOutlined as a, CloudUploadOutlined as b };
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import VkAgentChatProvider from './src/index.vue';
|
|
2
|
+
export * from './src/const';
|
|
3
|
+
export * from './src/const-roles';
|
|
4
|
+
export * as __VkAgentChatProvider from './src/types';
|
|
5
|
+
export { useAgentChat } from './src/use';
|
|
6
|
+
export { VkAgentChatProvider, };
|
|
7
|
+
export default VkAgentChatProvider;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const ChatAgentInjectKey = "vk_agent_chat_inject_key";
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
import type { AnyFunc } from '@vunk/shared';
|
|
2
|
+
import type { PropType } from 'vue';
|
|
3
|
+
import type { AgentChatContext, AgentMessage, Parser } from './types';
|
|
4
|
+
declare const _default: import("vue").DefineComponent<import("vue").ExtractPropTypes<{
|
|
5
|
+
request: {
|
|
6
|
+
type: PropType<AnyFunc>;
|
|
7
|
+
};
|
|
8
|
+
parser: {
|
|
9
|
+
type: PropType<Parser>;
|
|
10
|
+
};
|
|
11
|
+
}>, import("vue").Slot<any> | undefined, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
|
|
12
|
+
load: (e: AgentChatContext) => {
|
|
13
|
+
agent: import("vue").ComputedRef<import("ant-design-x-vue").XAgent<AgentMessage>>;
|
|
14
|
+
chat: {
|
|
15
|
+
readonly onRequest: (value: AgentMessage) => void;
|
|
16
|
+
readonly messages: import("vue").Ref<import("ant-design-x-vue").MessageInfo<AgentMessage>[], import("ant-design-x-vue").MessageInfo<AgentMessage>[]>;
|
|
17
|
+
readonly parsedMessages: import("vue").ComputedRef<import("ant-design-x-vue").MessageInfo<import("./types").BubbleMessage>[]>;
|
|
18
|
+
readonly setMessages: (updater: import("ant-design-x-vue").MessageInfo<AgentMessage>[] | ((prev: import("ant-design-x-vue").MessageInfo<AgentMessage>[]) => import("ant-design-x-vue").MessageInfo<AgentMessage>[])) => void;
|
|
19
|
+
};
|
|
20
|
+
simplicity: {
|
|
21
|
+
onRequest: (message: string) => void;
|
|
22
|
+
items: import("vue").ComputedRef<import("./types").BubbleItem[]>;
|
|
23
|
+
};
|
|
24
|
+
};
|
|
25
|
+
}, string, import("vue").PublicProps, Readonly<import("vue").ExtractPropTypes<{
|
|
26
|
+
request: {
|
|
27
|
+
type: PropType<AnyFunc>;
|
|
28
|
+
};
|
|
29
|
+
parser: {
|
|
30
|
+
type: PropType<Parser>;
|
|
31
|
+
};
|
|
32
|
+
}>> & Readonly<{
|
|
33
|
+
onLoad?: ((e: {
|
|
34
|
+
agent: import("vue").ComputedRef<import("ant-design-x-vue").XAgent<AgentMessage>>;
|
|
35
|
+
chat: {
|
|
36
|
+
readonly onRequest: (value: AgentMessage) => void;
|
|
37
|
+
readonly messages: import("vue").Ref<import("ant-design-x-vue").MessageInfo<AgentMessage>[], import("ant-design-x-vue").MessageInfo<AgentMessage>[]>;
|
|
38
|
+
readonly parsedMessages: import("vue").ComputedRef<import("ant-design-x-vue").MessageInfo<import("./types").BubbleMessage>[]>;
|
|
39
|
+
readonly setMessages: (updater: import("ant-design-x-vue").MessageInfo<AgentMessage>[] | ((prev: import("ant-design-x-vue").MessageInfo<AgentMessage>[]) => import("ant-design-x-vue").MessageInfo<AgentMessage>[])) => void;
|
|
40
|
+
};
|
|
41
|
+
simplicity: {
|
|
42
|
+
onRequest: (message: string) => void;
|
|
43
|
+
items: import("vue").ComputedRef<import("./types").BubbleItem[]>;
|
|
44
|
+
};
|
|
45
|
+
}) => any) | undefined;
|
|
46
|
+
}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
|
|
47
|
+
export default _default;
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import type { __VkBubbleTemplates } from '@vunk/plus/components/bubble-templates';
|
|
2
|
+
import type { Media, NormalObject } from '@vunk/shared';
|
|
3
|
+
import type { RequestFn } from 'ant-design-x-vue';
|
|
4
|
+
import type { BubbleListItemProps } from 'vue-element-plus-x/types/components/BubbleList/types';
|
|
5
|
+
import type { initAgentChat } from './use';
|
|
6
|
+
export type AgentChatContext = ReturnType<typeof initAgentChat>;
|
|
7
|
+
export type Request = RequestFn<AgentMessage>;
|
|
8
|
+
export type Parser = (message: AgentMessage) => BubbleMessage | BubbleMessage[];
|
|
9
|
+
/**
|
|
10
|
+
* @description useXAgent request onSuccess 发送的数据
|
|
11
|
+
*/
|
|
12
|
+
export type AgentMessage = BubbleMessage & {
|
|
13
|
+
seviceLoading?: boolean;
|
|
14
|
+
seviceEnd?: boolean;
|
|
15
|
+
};
|
|
16
|
+
/**
|
|
17
|
+
* @description useXChat parser 解析数据
|
|
18
|
+
*/
|
|
19
|
+
export type BubbleMessage = Partial<BubbleListItemProps> & {
|
|
20
|
+
role: string;
|
|
21
|
+
content: string;
|
|
22
|
+
seviceEnd?: boolean;
|
|
23
|
+
thinkingStatus?: 'start' | 'thinking' | 'end' | 'error';
|
|
24
|
+
thinkingContent?: string;
|
|
25
|
+
meta?: NormalObject;
|
|
26
|
+
};
|
|
27
|
+
export type BubbleItem = BubbleItemBasic & __VkBubbleTemplates.RenderItem;
|
|
28
|
+
export type RoleMedia = RoleMediaBasic & __VkBubbleTemplates.RenderItem;
|
|
29
|
+
export type BubbleItemModule = 'Thinking';
|
|
30
|
+
interface BubbleItemBasic extends BubbleMessage {
|
|
31
|
+
key: string;
|
|
32
|
+
modules?: BubbleItemModule[];
|
|
33
|
+
}
|
|
34
|
+
interface RoleMediaBasic extends Partial<BubbleItemBasic>, Media {
|
|
35
|
+
value: string;
|
|
36
|
+
}
|
|
37
|
+
export {};
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import type { RequestFn } from 'ant-design-x-vue';
|
|
2
|
+
import type { AgentMessage, BubbleItem, BubbleMessage, Parser } from './types';
|
|
3
|
+
export declare function useAgent(request: RequestFn<AgentMessage>): import("vue").ComputedRef<import("ant-design-x-vue").XAgent<AgentMessage>>[];
|
|
4
|
+
export declare function initAgentChat(request: RequestFn<AgentMessage>, parser: Parser): {
|
|
5
|
+
agent: import("vue").ComputedRef<import("ant-design-x-vue").XAgent<AgentMessage>>;
|
|
6
|
+
chat: {
|
|
7
|
+
readonly onRequest: (value: AgentMessage) => void;
|
|
8
|
+
readonly messages: import("vue").Ref<import("ant-design-x-vue").MessageInfo<AgentMessage>[], import("ant-design-x-vue").MessageInfo<AgentMessage>[]>;
|
|
9
|
+
readonly parsedMessages: import("vue").ComputedRef<import("ant-design-x-vue").MessageInfo<BubbleMessage>[]>;
|
|
10
|
+
readonly setMessages: (updater: import("ant-design-x-vue").MessageInfo<AgentMessage>[] | ((prev: import("ant-design-x-vue").MessageInfo<AgentMessage>[]) => import("ant-design-x-vue").MessageInfo<AgentMessage>[])) => void;
|
|
11
|
+
};
|
|
12
|
+
simplicity: {
|
|
13
|
+
onRequest: (message: string) => void;
|
|
14
|
+
items: import("vue").ComputedRef<BubbleItem[]>;
|
|
15
|
+
};
|
|
16
|
+
};
|
|
17
|
+
export declare function useAgentChat(): {
|
|
18
|
+
agent: import("vue").ComputedRef<import("ant-design-x-vue").XAgent<AgentMessage>>;
|
|
19
|
+
chat: {
|
|
20
|
+
readonly onRequest: (value: AgentMessage) => void;
|
|
21
|
+
readonly messages: import("vue").Ref<import("ant-design-x-vue").MessageInfo<AgentMessage>[], import("ant-design-x-vue").MessageInfo<AgentMessage>[]>;
|
|
22
|
+
readonly parsedMessages: import("vue").ComputedRef<import("ant-design-x-vue").MessageInfo<BubbleMessage>[]>;
|
|
23
|
+
readonly setMessages: (updater: import("ant-design-x-vue").MessageInfo<AgentMessage>[] | ((prev: import("ant-design-x-vue").MessageInfo<AgentMessage>[]) => import("ant-design-x-vue").MessageInfo<AgentMessage>[])) => void;
|
|
24
|
+
};
|
|
25
|
+
simplicity: {
|
|
26
|
+
onRequest: (message: string) => void;
|
|
27
|
+
items: import("vue").ComputedRef<BubbleItem[]>;
|
|
28
|
+
};
|
|
29
|
+
};
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
export declare const props: {
|
|
2
|
+
readonly size: import("element-plus/es/utils").EpPropFinalized<readonly [NumberConstructor, StringConstructor], "" | "small" | "default" | "large", number, "", boolean>;
|
|
3
|
+
readonly shape: import("element-plus/es/utils").EpPropFinalized<StringConstructor, "circle" | "square", unknown, "circle", boolean>;
|
|
4
|
+
readonly icon: {
|
|
5
|
+
readonly type: import("vue").PropType<import("element-plus").ButtonType<(new (...args: any[]) => (string | import("vue").Component<any, any, any, import("vue").ComputedOptions, import("vue").MethodOptions, {}, any>) & {}) | (() => string | import("vue").Component<any, any, any, import("vue").ComputedOptions, import("vue").MethodOptions, {}, any>) | ((new (...args: any[]) => (string | import("vue").Component<any, any, any, import("vue").ComputedOptions, import("vue").MethodOptions, {}, any>) & {}) | (() => string | import("vue").Component<any, any, any, import("vue").ComputedOptions, import("vue").MethodOptions, {}, any>))[], unknown, unknown>>;
|
|
6
|
+
readonly required: false;
|
|
7
|
+
readonly validator: ((val: unknown) => boolean) | undefined;
|
|
8
|
+
__epPropKey: true;
|
|
9
|
+
};
|
|
10
|
+
readonly src: import("element-plus/es/utils").EpPropFinalized<StringConstructor, unknown, unknown, "", boolean>;
|
|
11
|
+
readonly alt: StringConstructor;
|
|
12
|
+
readonly srcSet: StringConstructor;
|
|
13
|
+
readonly fit: import("element-plus/es/utils").EpPropFinalized<(new (...args: any[]) => "initial" | "fill" | "cover" | "contain" | "none" | "scale-down" | "-moz-initial" | "inherit" | "revert" | "unset") | (() => ObjectFitProperty) | ((new (...args: any[]) => "initial" | "fill" | "cover" | "contain" | "none" | "scale-down" | "-moz-initial" | "inherit" | "revert" | "unset") | (() => ObjectFitProperty))[], unknown, unknown, "cover", boolean>;
|
|
14
|
+
} & {
|
|
15
|
+
background: never;
|
|
16
|
+
color: never;
|
|
17
|
+
};
|
|
18
|
+
export declare const emits: {};
|
|
@@ -0,0 +1,121 @@
|
|
|
1
|
+
declare const _default: import("vue").DefineComponent<import("vue").ExtractPropTypes<{
|
|
2
|
+
readonly size: import("element-plus/es/utils").EpPropFinalized<readonly [NumberConstructor, StringConstructor], "" | "small" | "default" | "large", number, "", boolean>;
|
|
3
|
+
readonly shape: import("element-plus/es/utils").EpPropFinalized<StringConstructor, "circle" | "square", unknown, "circle", boolean>;
|
|
4
|
+
readonly icon: {
|
|
5
|
+
readonly type: import("vue").PropType<import("element-plus").ButtonType<(new (...args: any[]) => (string | import("vue").Component<any, any, any, import("vue").ComputedOptions, import("vue").MethodOptions, {}, any>) & {}) | (() => string | import("vue").Component<any, any, any, import("vue").ComputedOptions, import("vue").MethodOptions, {}, any>) | ((new (...args: any[]) => (string | import("vue").Component<any, any, any, import("vue").ComputedOptions, import("vue").MethodOptions, {}, any>) & {}) | (() => string | import("vue").Component<any, any, any, import("vue").ComputedOptions, import("vue").MethodOptions, {}, any>))[], unknown, unknown>>;
|
|
6
|
+
readonly required: false;
|
|
7
|
+
readonly validator: ((val: unknown) => boolean) | undefined;
|
|
8
|
+
__epPropKey: true;
|
|
9
|
+
};
|
|
10
|
+
readonly src: import("element-plus/es/utils").EpPropFinalized<StringConstructor, unknown, unknown, "", boolean>;
|
|
11
|
+
readonly alt: StringConstructor;
|
|
12
|
+
readonly srcSet: StringConstructor;
|
|
13
|
+
readonly fit: import("element-plus/es/utils").EpPropFinalized<(new (...args: any[]) => "initial" | "fill" | "cover" | "contain" | "none" | "scale-down" | "-moz-initial" | "inherit" | "revert" | "unset") | (() => ObjectFitProperty) | ((new (...args: any[]) => "initial" | "fill" | "cover" | "contain" | "none" | "scale-down" | "-moz-initial" | "inherit" | "revert" | "unset") | (() => ObjectFitProperty))[], unknown, unknown, "cover", boolean>;
|
|
14
|
+
} & {
|
|
15
|
+
background: never;
|
|
16
|
+
color: never;
|
|
17
|
+
}>, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<import("vue").ExtractPropTypes<{
|
|
18
|
+
readonly size: import("element-plus/es/utils").EpPropFinalized<readonly [NumberConstructor, StringConstructor], "" | "small" | "default" | "large", number, "", boolean>;
|
|
19
|
+
readonly shape: import("element-plus/es/utils").EpPropFinalized<StringConstructor, "circle" | "square", unknown, "circle", boolean>;
|
|
20
|
+
readonly icon: {
|
|
21
|
+
readonly type: import("vue").PropType<import("element-plus").ButtonType<(new (...args: any[]) => (string | import("vue").Component<any, any, any, import("vue").ComputedOptions, import("vue").MethodOptions, {}, any>) & {}) | (() => string | import("vue").Component<any, any, any, import("vue").ComputedOptions, import("vue").MethodOptions, {}, any>) | ((new (...args: any[]) => (string | import("vue").Component<any, any, any, import("vue").ComputedOptions, import("vue").MethodOptions, {}, any>) & {}) | (() => string | import("vue").Component<any, any, any, import("vue").ComputedOptions, import("vue").MethodOptions, {}, any>))[], unknown, unknown>>;
|
|
22
|
+
readonly required: false;
|
|
23
|
+
readonly validator: ((val: unknown) => boolean) | undefined;
|
|
24
|
+
__epPropKey: true;
|
|
25
|
+
};
|
|
26
|
+
readonly src: import("element-plus/es/utils").EpPropFinalized<StringConstructor, unknown, unknown, "", boolean>;
|
|
27
|
+
readonly alt: StringConstructor;
|
|
28
|
+
readonly srcSet: StringConstructor;
|
|
29
|
+
readonly fit: import("element-plus/es/utils").EpPropFinalized<(new (...args: any[]) => "initial" | "fill" | "cover" | "contain" | "none" | "scale-down" | "-moz-initial" | "inherit" | "revert" | "unset") | (() => ObjectFitProperty) | ((new (...args: any[]) => "initial" | "fill" | "cover" | "contain" | "none" | "scale-down" | "-moz-initial" | "inherit" | "revert" | "unset") | (() => ObjectFitProperty))[], unknown, unknown, "cover", boolean>;
|
|
30
|
+
} & {
|
|
31
|
+
background: never;
|
|
32
|
+
color: never;
|
|
33
|
+
}>> & Readonly<{}>, {
|
|
34
|
+
readonly size: import("element-plus").ButtonType<readonly [NumberConstructor, StringConstructor], "" | "small" | "default" | "large", number>;
|
|
35
|
+
readonly shape: import("element-plus").ButtonType<StringConstructor, "circle" | "square", unknown>;
|
|
36
|
+
readonly src: string;
|
|
37
|
+
readonly fit: any;
|
|
38
|
+
}, {}, {
|
|
39
|
+
ElAvatar: import("element-plus/es/utils").SFCWithInstall<{
|
|
40
|
+
new (...args: any[]): import("vue").CreateComponentPublicInstanceWithMixins<Readonly<import("vue").ExtractPropTypes<{
|
|
41
|
+
readonly size: import("element-plus/es/utils").EpPropFinalized<readonly [NumberConstructor, StringConstructor], "" | "small" | "default" | "large", number, "", boolean>;
|
|
42
|
+
readonly shape: import("element-plus/es/utils").EpPropFinalized<StringConstructor, "circle" | "square", unknown, "circle", boolean>;
|
|
43
|
+
readonly icon: {
|
|
44
|
+
readonly type: import("vue").PropType<import("element-plus").ButtonType<(new (...args: any[]) => (string | import("vue").Component<any, any, any, import("vue").ComputedOptions, import("vue").MethodOptions, {}, any>) & {}) | (() => string | import("vue").Component<any, any, any, import("vue").ComputedOptions, import("vue").MethodOptions, {}, any>) | ((new (...args: any[]) => (string | import("vue").Component<any, any, any, import("vue").ComputedOptions, import("vue").MethodOptions, {}, any>) & {}) | (() => string | import("vue").Component<any, any, any, import("vue").ComputedOptions, import("vue").MethodOptions, {}, any>))[], unknown, unknown>>;
|
|
45
|
+
readonly required: false;
|
|
46
|
+
readonly validator: ((val: unknown) => boolean) | undefined;
|
|
47
|
+
__epPropKey: true;
|
|
48
|
+
};
|
|
49
|
+
readonly src: import("element-plus/es/utils").EpPropFinalized<StringConstructor, unknown, unknown, "", boolean>;
|
|
50
|
+
readonly alt: StringConstructor;
|
|
51
|
+
readonly srcSet: StringConstructor;
|
|
52
|
+
readonly fit: import("element-plus/es/utils").EpPropFinalized<(new (...args: any[]) => "initial" | "fill" | "cover" | "contain" | "none" | "scale-down" | "-moz-initial" | "inherit" | "revert" | "unset") | (() => any) | ((new (...args: any[]) => "initial" | "fill" | "cover" | "contain" | "none" | "scale-down" | "-moz-initial" | "inherit" | "revert" | "unset") | (() => any))[], unknown, unknown, "cover", boolean>;
|
|
53
|
+
}>> & {
|
|
54
|
+
onError?: ((evt: Event) => any) | undefined;
|
|
55
|
+
}, {}, unknown, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
|
|
56
|
+
error: (evt: Event) => void;
|
|
57
|
+
}, import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps, {
|
|
58
|
+
readonly size: import("element-plus").ButtonType<readonly [NumberConstructor, StringConstructor], "" | "small" | "default" | "large", number>;
|
|
59
|
+
readonly shape: import("element-plus").ButtonType<StringConstructor, "circle" | "square", unknown>;
|
|
60
|
+
readonly src: string;
|
|
61
|
+
readonly fit: any;
|
|
62
|
+
}, true, {}, {}, import("vue").GlobalComponents, import("vue").GlobalDirectives, string, {}, any, import("vue").ComponentProvideOptions, {
|
|
63
|
+
P: {};
|
|
64
|
+
B: {};
|
|
65
|
+
D: {};
|
|
66
|
+
C: {};
|
|
67
|
+
M: {};
|
|
68
|
+
Defaults: {};
|
|
69
|
+
}, Readonly<import("vue").ExtractPropTypes<{
|
|
70
|
+
readonly size: import("element-plus/es/utils").EpPropFinalized<readonly [NumberConstructor, StringConstructor], "" | "small" | "default" | "large", number, "", boolean>;
|
|
71
|
+
readonly shape: import("element-plus/es/utils").EpPropFinalized<StringConstructor, "circle" | "square", unknown, "circle", boolean>;
|
|
72
|
+
readonly icon: {
|
|
73
|
+
readonly type: import("vue").PropType<import("element-plus").ButtonType<(new (...args: any[]) => (string | import("vue").Component<any, any, any, import("vue").ComputedOptions, import("vue").MethodOptions, {}, any>) & {}) | (() => string | import("vue").Component<any, any, any, import("vue").ComputedOptions, import("vue").MethodOptions, {}, any>) | ((new (...args: any[]) => (string | import("vue").Component<any, any, any, import("vue").ComputedOptions, import("vue").MethodOptions, {}, any>) & {}) | (() => string | import("vue").Component<any, any, any, import("vue").ComputedOptions, import("vue").MethodOptions, {}, any>))[], unknown, unknown>>;
|
|
74
|
+
readonly required: false;
|
|
75
|
+
readonly validator: ((val: unknown) => boolean) | undefined;
|
|
76
|
+
__epPropKey: true;
|
|
77
|
+
};
|
|
78
|
+
readonly src: import("element-plus/es/utils").EpPropFinalized<StringConstructor, unknown, unknown, "", boolean>;
|
|
79
|
+
readonly alt: StringConstructor;
|
|
80
|
+
readonly srcSet: StringConstructor;
|
|
81
|
+
readonly fit: import("element-plus/es/utils").EpPropFinalized<(new (...args: any[]) => "initial" | "fill" | "cover" | "contain" | "none" | "scale-down" | "-moz-initial" | "inherit" | "revert" | "unset") | (() => any) | ((new (...args: any[]) => "initial" | "fill" | "cover" | "contain" | "none" | "scale-down" | "-moz-initial" | "inherit" | "revert" | "unset") | (() => any))[], unknown, unknown, "cover", boolean>;
|
|
82
|
+
}>> & {
|
|
83
|
+
onError?: ((evt: Event) => any) | undefined;
|
|
84
|
+
}, {}, {}, {}, {}, {
|
|
85
|
+
readonly size: import("element-plus").ButtonType<readonly [NumberConstructor, StringConstructor], "" | "small" | "default" | "large", number>;
|
|
86
|
+
readonly shape: import("element-plus").ButtonType<StringConstructor, "circle" | "square", unknown>;
|
|
87
|
+
readonly src: string;
|
|
88
|
+
readonly fit: any;
|
|
89
|
+
}>;
|
|
90
|
+
__isFragment?: undefined;
|
|
91
|
+
__isTeleport?: undefined;
|
|
92
|
+
__isSuspense?: undefined;
|
|
93
|
+
} & import("vue").ComponentOptionsBase<Readonly<import("vue").ExtractPropTypes<{
|
|
94
|
+
readonly size: import("element-plus/es/utils").EpPropFinalized<readonly [NumberConstructor, StringConstructor], "" | "small" | "default" | "large", number, "", boolean>;
|
|
95
|
+
readonly shape: import("element-plus/es/utils").EpPropFinalized<StringConstructor, "circle" | "square", unknown, "circle", boolean>;
|
|
96
|
+
readonly icon: {
|
|
97
|
+
readonly type: import("vue").PropType<import("element-plus").ButtonType<(new (...args: any[]) => (string | import("vue").Component<any, any, any, import("vue").ComputedOptions, import("vue").MethodOptions, {}, any>) & {}) | (() => string | import("vue").Component<any, any, any, import("vue").ComputedOptions, import("vue").MethodOptions, {}, any>) | ((new (...args: any[]) => (string | import("vue").Component<any, any, any, import("vue").ComputedOptions, import("vue").MethodOptions, {}, any>) & {}) | (() => string | import("vue").Component<any, any, any, import("vue").ComputedOptions, import("vue").MethodOptions, {}, any>))[], unknown, unknown>>;
|
|
98
|
+
readonly required: false;
|
|
99
|
+
readonly validator: ((val: unknown) => boolean) | undefined;
|
|
100
|
+
__epPropKey: true;
|
|
101
|
+
};
|
|
102
|
+
readonly src: import("element-plus/es/utils").EpPropFinalized<StringConstructor, unknown, unknown, "", boolean>;
|
|
103
|
+
readonly alt: StringConstructor;
|
|
104
|
+
readonly srcSet: StringConstructor;
|
|
105
|
+
readonly fit: import("element-plus/es/utils").EpPropFinalized<(new (...args: any[]) => "initial" | "fill" | "cover" | "contain" | "none" | "scale-down" | "-moz-initial" | "inherit" | "revert" | "unset") | (() => any) | ((new (...args: any[]) => "initial" | "fill" | "cover" | "contain" | "none" | "scale-down" | "-moz-initial" | "inherit" | "revert" | "unset") | (() => any))[], unknown, unknown, "cover", boolean>;
|
|
106
|
+
}>> & {
|
|
107
|
+
onError?: ((evt: Event) => any) | undefined;
|
|
108
|
+
}, {}, unknown, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
|
|
109
|
+
error: (evt: Event) => void;
|
|
110
|
+
}, string, {
|
|
111
|
+
readonly size: import("element-plus").ButtonType<readonly [NumberConstructor, StringConstructor], "" | "small" | "default" | "large", number>;
|
|
112
|
+
readonly shape: import("element-plus").ButtonType<StringConstructor, "circle" | "square", unknown>;
|
|
113
|
+
readonly src: string;
|
|
114
|
+
readonly fit: any;
|
|
115
|
+
}, {}, string, {}, import("vue").GlobalComponents, import("vue").GlobalDirectives, string, import("vue").ComponentProvideOptions> & import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps & (new () => {
|
|
116
|
+
$slots: {
|
|
117
|
+
default?(_: {}): any;
|
|
118
|
+
};
|
|
119
|
+
})>;
|
|
120
|
+
}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
|
|
121
|
+
export default _default;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -1,18 +1,17 @@
|
|
|
1
1
|
import { VkTypingMarkdown } from '@vunk/plus/components/typing-markdown';
|
|
2
2
|
import { setData } from '@vunk/core';
|
|
3
3
|
import { defineComponent, createElementBlock, openBlock, createElementVNode, Fragment, createVNode, unref, withCtx, computed, onBeforeUnmount, onMounted, watch, shallowRef, nextTick, renderSlot, createCommentVNode, ref, watchEffect, resolveComponent, renderList, createBlock } from 'vue';
|
|
4
|
-
import markdownIt from 'markdown-it';
|
|
5
4
|
import { useDeferred } from '@vunk/core/composables';
|
|
6
5
|
import { ElIcon } from 'element-plus';
|
|
7
6
|
import { noop } from '@vunk/shared/function';
|
|
8
7
|
import { Deferred } from '@vunk/shared/promise';
|
|
9
8
|
import { _ as _export_sfc } from '../_plugin-vue_export-helper.mjs';
|
|
10
9
|
|
|
11
|
-
|
|
10
|
+
function markdownToPlainText(md) {
|
|
11
|
+
return md.replace(/!\[.*?\]\(.*?\)/g, "").replace(/\[([^\]]+)\]\([^)]+\)/g, "$1").replace(/^#{1,6}\s+/gm, "").replace(/\*\*(.*?)\*\*/g, "$1").replace(/__(.*?)__/g, "$1").replace(/\*(.*?)\*/g, "$1").replace(/_(.*?)_/g, "$1").replace(/`(.*?)`/g, "$1").replace(/```[\s\S]*?```/g, "").replace(/\n{2,}/g, "\n").replace(/-{3,}/g, "").replace(/^\s*-\s+/gm, "").replace(/\|/g, "").trim();
|
|
12
|
+
}
|
|
12
13
|
function defaultRender(mdText) {
|
|
13
|
-
|
|
14
|
-
const doc = new DOMParser().parseFromString(html, "text/html");
|
|
15
|
-
return doc.body.textContent || "";
|
|
14
|
+
return markdownToPlainText(mdText);
|
|
16
15
|
}
|
|
17
16
|
var ParagraphStatus = /* @__PURE__ */ ((ParagraphStatus2) => {
|
|
18
17
|
ParagraphStatus2["initial"] = "initial";
|
|
@@ -32,6 +31,13 @@ var Broadcast = /* @__PURE__ */ ((Broadcast2) => {
|
|
|
32
31
|
})(Broadcast || {});
|
|
33
32
|
|
|
34
33
|
const props = {
|
|
34
|
+
/**
|
|
35
|
+
* @description md文本转纯文本的函数
|
|
36
|
+
*/
|
|
37
|
+
render: {
|
|
38
|
+
type: Function,
|
|
39
|
+
default: defaultRender
|
|
40
|
+
},
|
|
35
41
|
/**
|
|
36
42
|
* @description 段落详情
|
|
37
43
|
*/
|
|
@@ -178,10 +184,14 @@ var _sfc_main$3 = /* @__PURE__ */ defineComponent({
|
|
|
178
184
|
url: {
|
|
179
185
|
type: String,
|
|
180
186
|
default: ""
|
|
187
|
+
},
|
|
188
|
+
render: {
|
|
189
|
+
type: Function,
|
|
190
|
+
required: true
|
|
181
191
|
}
|
|
182
192
|
},
|
|
183
193
|
setup(props) {
|
|
184
|
-
const value =
|
|
194
|
+
const value = props.render(props.data.value);
|
|
185
195
|
const theData = computed(() => props.data);
|
|
186
196
|
if (!value.trim()) {
|
|
187
197
|
props.deferred.resolve(true);
|
|
@@ -327,13 +337,15 @@ var _sfc_main$1 = /* @__PURE__ */ defineComponent({
|
|
|
327
337
|
pause: {
|
|
328
338
|
type: Boolean,
|
|
329
339
|
default: false
|
|
340
|
+
},
|
|
341
|
+
render: {
|
|
342
|
+
type: Function,
|
|
343
|
+
required: true
|
|
330
344
|
}
|
|
331
345
|
},
|
|
332
346
|
setup(props) {
|
|
333
|
-
const value =
|
|
334
|
-
const theData = computed(() =>
|
|
335
|
-
return props.data;
|
|
336
|
-
});
|
|
347
|
+
const value = props.render(props.data.value);
|
|
348
|
+
const theData = computed(() => props.data);
|
|
337
349
|
if (!value.trim()) {
|
|
338
350
|
props.deferred.resolve(true);
|
|
339
351
|
theData.value.broadcast = Broadcast.ended;
|
|
@@ -415,7 +427,10 @@ var _sfc_main = defineComponent({
|
|
|
415
427
|
if (!props2.textToSpeech) {
|
|
416
428
|
return;
|
|
417
429
|
}
|
|
418
|
-
const value =
|
|
430
|
+
const value = props2.render(paragraph.value);
|
|
431
|
+
if (!value) {
|
|
432
|
+
return;
|
|
433
|
+
}
|
|
419
434
|
return props2.textToSpeech(`${value}`).then((url) => {
|
|
420
435
|
paragraph.url = url;
|
|
421
436
|
});
|
|
@@ -597,19 +612,20 @@ function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
|
|
|
597
612
|
data: item,
|
|
598
613
|
deferred
|
|
599
614
|
}, () => [
|
|
600
|
-
|
|
601
|
-
|
|
615
|
+
createVNode(_component_CustomSpeechView, {
|
|
616
|
+
render: _ctx.render,
|
|
602
617
|
url: item.url,
|
|
603
618
|
pause: _ctx.pause,
|
|
604
619
|
deferred,
|
|
605
620
|
data: item
|
|
606
|
-
}, null, 8, ["url", "pause", "deferred", "data"])
|
|
621
|
+
}, null, 8, ["render", "url", "pause", "deferred", "data"]),
|
|
607
622
|
_ctx.webSpeech ? (openBlock(), createBlock(_component_WebSpeechView, {
|
|
608
|
-
key:
|
|
623
|
+
key: 0,
|
|
624
|
+
render: _ctx.render,
|
|
609
625
|
pause: _ctx.pause,
|
|
610
626
|
deferred,
|
|
611
627
|
data: item
|
|
612
|
-
}, null, 8, ["pause", "deferred", "data"])) : createCommentVNode("v-if", true)
|
|
628
|
+
}, null, 8, ["render", "pause", "deferred", "data"])) : createCommentVNode("v-if", true)
|
|
613
629
|
])
|
|
614
630
|
]),
|
|
615
631
|
_: 2
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
export declare function defaultRender(mdText: string): string;
|
|
2
|
+
export declare enum ParagraphStatus {
|
|
3
|
+
initial = "initial",
|
|
4
|
+
/**
|
|
5
|
+
* @description 处理中, 通常用于需要对段落进行异步处理
|
|
6
|
+
*/
|
|
7
|
+
processing = "processing",
|
|
8
|
+
pending = "pending",
|
|
9
|
+
fulfilled = "fulfilled",
|
|
10
|
+
rejected = "rejected"
|
|
11
|
+
}
|
|
12
|
+
export declare enum Broadcast {
|
|
13
|
+
initial = "initial",
|
|
14
|
+
playing = "playing",
|
|
15
|
+
ended = "ended",
|
|
16
|
+
paused = "paused",
|
|
17
|
+
failed = "failed"
|
|
18
|
+
}
|
|
@@ -0,0 +1,101 @@
|
|
|
1
|
+
import type { SetDataEvent } from '@vunk/core';
|
|
2
|
+
import type { PropType } from 'vue';
|
|
3
|
+
import type { Paragraph, TextToSpeech } from './types';
|
|
4
|
+
import { defaultRender } from './const';
|
|
5
|
+
export declare const props: {
|
|
6
|
+
/**
|
|
7
|
+
* @description md文本转纯文本的函数
|
|
8
|
+
*/
|
|
9
|
+
render: {
|
|
10
|
+
type: PropType<(text: string) => string>;
|
|
11
|
+
default: typeof defaultRender;
|
|
12
|
+
};
|
|
13
|
+
/**
|
|
14
|
+
* @description 段落详情
|
|
15
|
+
*/
|
|
16
|
+
data: {
|
|
17
|
+
type: {
|
|
18
|
+
(arrayLength: number): Paragraph[];
|
|
19
|
+
(...items: Paragraph[]): Paragraph[];
|
|
20
|
+
new (arrayLength: number): Paragraph[];
|
|
21
|
+
new (...items: Paragraph[]): Paragraph[];
|
|
22
|
+
isArray(arg: any): arg is any[];
|
|
23
|
+
readonly prototype: any[];
|
|
24
|
+
from<T>(arrayLike: ArrayLike<T>): T[];
|
|
25
|
+
from<T_1, U>(arrayLike: ArrayLike<T_1>, mapfn: (v: T_1, k: number) => U, thisArg?: any): U[];
|
|
26
|
+
from<T_2>(iterable: Iterable<T_2> | ArrayLike<T_2>): T_2[];
|
|
27
|
+
from<T_3, U_1>(iterable: Iterable<T_3> | ArrayLike<T_3>, mapfn: (v: T_3, k: number) => U_1, thisArg?: any): U_1[];
|
|
28
|
+
of<T_4>(...items: T_4[]): T_4[];
|
|
29
|
+
readonly [Symbol.species]: ArrayConstructor;
|
|
30
|
+
};
|
|
31
|
+
default: undefined;
|
|
32
|
+
};
|
|
33
|
+
/**
|
|
34
|
+
* @description md 文本
|
|
35
|
+
*/
|
|
36
|
+
source: {
|
|
37
|
+
type: StringConstructor;
|
|
38
|
+
default: string;
|
|
39
|
+
};
|
|
40
|
+
/**
|
|
41
|
+
* @description 游标阅读延迟
|
|
42
|
+
*/
|
|
43
|
+
delay: {
|
|
44
|
+
type: NumberConstructor;
|
|
45
|
+
default: number;
|
|
46
|
+
};
|
|
47
|
+
/**
|
|
48
|
+
* @description 段落切割符号
|
|
49
|
+
*/
|
|
50
|
+
separators: {
|
|
51
|
+
type: {
|
|
52
|
+
(arrayLength: number): string[];
|
|
53
|
+
(...items: string[]): string[];
|
|
54
|
+
new (arrayLength: number): string[];
|
|
55
|
+
new (...items: string[]): string[];
|
|
56
|
+
isArray(arg: any): arg is any[];
|
|
57
|
+
readonly prototype: any[];
|
|
58
|
+
from<T>(arrayLike: ArrayLike<T>): T[];
|
|
59
|
+
from<T_1, U>(arrayLike: ArrayLike<T_1>, mapfn: (v: T_1, k: number) => U, thisArg?: any): U[];
|
|
60
|
+
from<T_2>(iterable: Iterable<T_2> | ArrayLike<T_2>): T_2[];
|
|
61
|
+
from<T_3, U_1>(iterable: Iterable<T_3> | ArrayLike<T_3>, mapfn: (v: T_3, k: number) => U_1, thisArg?: any): U_1[];
|
|
62
|
+
of<T_4>(...items: T_4[]): T_4[];
|
|
63
|
+
readonly [Symbol.species]: ArrayConstructor;
|
|
64
|
+
};
|
|
65
|
+
default: () => string[];
|
|
66
|
+
};
|
|
67
|
+
/**
|
|
68
|
+
* @description 暂停的
|
|
69
|
+
*/
|
|
70
|
+
pause: {
|
|
71
|
+
type: BooleanConstructor;
|
|
72
|
+
default: boolean;
|
|
73
|
+
};
|
|
74
|
+
/**
|
|
75
|
+
* @description 组件内会根据当前游标是否和 source 长度一致来判断,是否持续阅读, 当一致时,会关闭阅读状态。但若设置为 true,则会持续阅读, 这在动态接收数据时会有用
|
|
76
|
+
*/
|
|
77
|
+
keepRead: {
|
|
78
|
+
type: BooleanConstructor;
|
|
79
|
+
default: boolean;
|
|
80
|
+
};
|
|
81
|
+
/**
|
|
82
|
+
* @description 是否使用 web speech api
|
|
83
|
+
*/
|
|
84
|
+
webSpeech: {
|
|
85
|
+
type: BooleanConstructor;
|
|
86
|
+
default: boolean;
|
|
87
|
+
};
|
|
88
|
+
/**
|
|
89
|
+
* @description 是否使用自定义语音合成
|
|
90
|
+
*/
|
|
91
|
+
textToSpeech: {
|
|
92
|
+
type: PropType<TextToSpeech>;
|
|
93
|
+
default: undefined;
|
|
94
|
+
};
|
|
95
|
+
};
|
|
96
|
+
export declare const emits: {
|
|
97
|
+
setData: (e: SetDataEvent) => SetDataEvent;
|
|
98
|
+
'update:broadcasting': (_: boolean) => boolean;
|
|
99
|
+
'update:completed': (_: boolean) => boolean;
|
|
100
|
+
'update:error': (_: boolean) => boolean;
|
|
101
|
+
};
|