@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.
Files changed (109) hide show
  1. package/components/SendOutlined.mjs +1 -1
  2. package/components/agent-chat-provider/index.d.ts +7 -0
  3. package/components/agent-chat-provider/src/api.d.ts +3 -0
  4. package/components/agent-chat-provider/src/const-roles.d.ts +8 -0
  5. package/components/agent-chat-provider/src/const.d.ts +1 -0
  6. package/components/agent-chat-provider/src/index.vue.d.ts +47 -0
  7. package/components/agent-chat-provider/src/types.d.ts +37 -0
  8. package/components/agent-chat-provider/src/use.d.ts +29 -0
  9. package/components/avatar/index.d.ts +4 -0
  10. package/components/avatar/src/ctx.d.ts +18 -0
  11. package/components/avatar/src/index.vue.d.ts +121 -0
  12. package/components/avatar/src/types.d.ts +1 -0
  13. package/components/broadcasting-markdown/index.d.ts +5 -0
  14. package/components/broadcasting-markdown/index.mjs +32 -16
  15. package/components/broadcasting-markdown/src/const.d.ts +18 -0
  16. package/components/broadcasting-markdown/src/ctx.d.ts +101 -0
  17. package/components/broadcasting-markdown/src/custom-speech.vue.d.ts +117 -0
  18. package/components/broadcasting-markdown/src/index.vue.d.ts +502 -0
  19. package/components/broadcasting-markdown/src/paragraph.vue.d.ts +78 -0
  20. package/components/broadcasting-markdown/src/speech-error.vue.d.ts +60 -0
  21. package/components/broadcasting-markdown/src/types.d.ts +17 -0
  22. package/components/broadcasting-markdown/src/use.d.ts +3 -0
  23. package/components/broadcasting-markdown/src/web-speech.vue.d.ts +110 -0
  24. package/components/bubble-list/index.d.ts +5 -0
  25. package/components/bubble-list/index.mjs +2 -316
  26. package/components/bubble-list/src/ctx.d.ts +30 -0
  27. package/components/bubble-list/src/index.vue.d.ts +952 -0
  28. package/components/bubble-list/src/types.d.ts +4 -0
  29. package/components/bubble-templates/index.d.ts +4 -0
  30. package/components/bubble-templates/index.mjs +2 -161
  31. package/components/bubble-templates/src/index.vue.d.ts +656 -0
  32. package/components/bubble-templates/src/types.d.ts +30 -0
  33. package/components/chat-independent/index.d.ts +4 -0
  34. package/components/chat-independent/index.mjs +42 -34
  35. package/components/chat-independent/src/const.d.ts +13 -0
  36. package/components/chat-independent/src/ctx.d.ts +20 -0
  37. package/components/chat-independent/src/index.vue.d.ts +2413 -0
  38. package/components/chat-independent/src/types.d.ts +13 -0
  39. package/components/index.d.ts +0 -0
  40. package/components/index.mjs +0 -35979
  41. package/components/lottie-animation/index.d.ts +4 -0
  42. package/components/lottie-animation/src/ctx.d.ts +10 -0
  43. package/components/lottie-animation/src/index.vue.d.ts +21 -0
  44. package/components/lottie-animation/src/types.d.ts +4 -0
  45. package/components/monaco-editor/index.d.ts +5 -0
  46. package/components/monaco-editor/src/ctx.d.ts +23 -0
  47. package/components/monaco-editor/src/index.vue.d.ts +40 -0
  48. package/components/monaco-editor/src/types.d.ts +1 -0
  49. package/components/monaco-environment/index.d.ts +4 -0
  50. package/components/monaco-environment/src/ctx.d.ts +8 -0
  51. package/components/monaco-environment/src/index.vue.d.ts +2 -0
  52. package/components/monaco-environment/src/types.d.ts +1 -0
  53. package/components/recorder-button/index.d.ts +4 -0
  54. package/components/recorder-button/src/ctx.d.ts +40 -0
  55. package/components/recorder-button/src/index.vue.d.ts +303 -0
  56. package/components/recorder-button/src/speech-to-text.d.ts +1 -0
  57. package/components/recorder-button/src/types.d.ts +7 -0
  58. package/components/routes-menu-content/index.d.ts +4 -0
  59. package/components/routes-menu-content/src/ctx.d.ts +17 -0
  60. package/components/routes-menu-content/src/index.vue.d.ts +472 -0
  61. package/components/routes-menu-content/src/item/core/ctx.d.ts +18 -0
  62. package/components/routes-menu-content/src/item/core/index.vue.d.ts +307 -0
  63. package/components/routes-menu-content/src/item/ctx.d.ts +14 -0
  64. package/components/routes-menu-content/src/item/index.vue.d.ts +438 -0
  65. package/components/routes-menu-content/src/types.d.ts +1 -0
  66. package/components/sender/index.d.ts +4 -0
  67. package/components/sender/index.mjs +1 -1
  68. package/components/sender/src/SenderHeader.vue.d.ts +256 -0
  69. package/components/sender/src/ctx.d.ts +58 -0
  70. package/components/sender/src/index.vue.d.ts +778 -0
  71. package/components/sender/src/types.d.ts +1 -0
  72. package/components/speech-button/index.d.ts +4 -0
  73. package/components/speech-button/index.mjs +1 -1
  74. package/components/speech-button/src/LoadingIcon.vue.d.ts +2 -0
  75. package/components/speech-button/src/RecordingIcon.vue.d.ts +2 -0
  76. package/components/speech-button/src/ctx.d.ts +10 -0
  77. package/components/speech-button/src/index.vue.d.ts +22 -0
  78. package/components/speech-button/src/types.d.ts +1 -0
  79. package/components/table-columns/index.d.ts +5 -0
  80. package/components/table-columns/src/ctx.d.ts +66 -0
  81. package/components/table-columns/src/el-ctx.d.ts +63 -0
  82. package/components/table-columns/src/index.vue.d.ts +282 -0
  83. package/components/table-columns/src/types.d.ts +21 -0
  84. package/components/tables-v1/index.d.ts +5 -0
  85. package/components/tables-v1/src/ctx.d.ts +281 -0
  86. package/components/tables-v1/src/el-ctx.d.ts +269 -0
  87. package/components/tables-v1/src/index.vue.d.ts +3014 -0
  88. package/components/tables-v1/src/types.d.ts +4 -0
  89. package/components/tables-v1-checkbox/index.d.ts +5 -0
  90. package/components/tables-v1-checkbox/src/ctx.d.ts +321 -0
  91. package/components/tables-v1-checkbox/src/index.vue.d.ts +3796 -0
  92. package/components/tables-v1-checkbox/src/types.d.ts +1 -0
  93. package/components/typing-markdown/index.d.ts +4 -0
  94. package/components/typing-markdown/index.mjs +2 -2
  95. package/components/typing-markdown/src/core.d.ts +2 -0
  96. package/components/typing-markdown/src/ctx.d.ts +33 -0
  97. package/components/typing-markdown/src/index.vue.d.ts +57 -0
  98. package/components/typing-markdown/src/types.d.ts +1 -0
  99. package/components/vditor/index.d.ts +5 -0
  100. package/components/vditor/src/ctx.d.ts +37 -0
  101. package/components/vditor/src/handle-fullscreen.vue.d.ts +18 -0
  102. package/components/vditor/src/handle-value.vue.d.ts +18 -0
  103. package/components/vditor/src/index.vue.d.ts +144 -0
  104. package/components/vditor/src/types.d.ts +9 -0
  105. package/components/vditor/src/use.d.ts +4 -0
  106. package/index.css +0 -38
  107. package/package.json +1 -7
  108. package/components/bubble-list/index.css +0 -18
  109. 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, CloudUploadOutlined as a, AudioOutlined as b };
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,3 @@
1
+ import type { NormalObject } from '@vunk/shared';
2
+ import type { RestFetchReaderOnmessage } from '@vunk/shared/fetch';
3
+ export declare function agentRequest(onmessage: RestFetchReaderOnmessage, data: NormalObject): Promise<void>;
@@ -0,0 +1,8 @@
1
+ import type { RoleMedia } from './types';
2
+ export declare enum Role {
3
+ User = "user",
4
+ Assistant = "assistant",
5
+ Broadcasting = "broadcasting"
6
+ }
7
+ export declare const roleOptions: RoleMedia[];
8
+ export declare const roleMap: Record<Role, RoleMedia>;
@@ -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,4 @@
1
+ import VkAvatar from './src/index.vue';
2
+ export * as __VkAvatar from './src/types';
3
+ export { VkAvatar, };
4
+ export default VkAvatar;
@@ -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 {};
@@ -0,0 +1,5 @@
1
+ import VkBroadcastingMarkdown from './src/index.vue';
2
+ export * from './src/const';
3
+ export * as __VkBroadcastingMarkdown from './src/types';
4
+ export { VkBroadcastingMarkdown, };
5
+ export default VkBroadcastingMarkdown;
@@ -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
- const md = markdownIt();
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
- const html = md.render(mdText);
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 = defaultRender(props.data.value).replace(/\n/g, "");
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 = defaultRender(props.data.value).replace(/\n/g, "");
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 = defaultRender(paragraph.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
- item.url ? (openBlock(), createBlock(_component_CustomSpeechView, {
601
- key: 0,
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"])) : createCommentVNode("v-if", true),
621
+ }, null, 8, ["render", "url", "pause", "deferred", "data"]),
607
622
  _ctx.webSpeech ? (openBlock(), createBlock(_component_WebSpeechView, {
608
- key: 1,
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
+ };