@opentiny/tiny-robot 0.4.2-alpha.4 → 0.4.2-alpha.6

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 (251) hide show
  1. package/dist/action-group/ActionGroup.vue.d.ts +26 -0
  2. package/dist/action-group/ActionGroupItem.vue.d.ts +18 -0
  3. package/dist/action-group/index.d.ts +12 -0
  4. package/dist/action-group/index.type.d.ts +17 -0
  5. package/dist/anchor/components/AnchorItem.vue.d.ts +24 -0
  6. package/dist/anchor/components/AnchorList.vue.d.ts +20 -0
  7. package/dist/anchor/components/AnchorOverlay.vue.d.ts +33 -0
  8. package/dist/anchor/components/AnchorSearch.vue.d.ts +7 -0
  9. package/dist/anchor/composables/index.d.ts +5 -0
  10. package/dist/anchor/composables/useActiveSync.d.ts +10 -0
  11. package/dist/anchor/composables/useFloatingOffset.d.ts +6 -0
  12. package/dist/anchor/composables/useNavController.d.ts +12 -0
  13. package/dist/anchor/composables/useOverlayInteractions.d.ts +6 -0
  14. package/dist/anchor/composables/useTargetFeedback.d.ts +5 -0
  15. package/dist/anchor/defaults.d.ts +16 -0
  16. package/dist/anchor/index.d.ts +7 -0
  17. package/dist/anchor/index.type.d.ts +60 -0
  18. package/dist/anchor/index.vue.d.ts +159 -0
  19. package/dist/anchor/internal.type.d.ts +103 -0
  20. package/dist/anchor/utils/scroll.d.ts +7 -0
  21. package/dist/anchor/utils/target.d.ts +6 -0
  22. package/dist/attachments/components/FileCard.vue.d.ts +18 -0
  23. package/dist/attachments/components/ImagePreview.vue.d.ts +17 -0
  24. package/dist/attachments/components/index.d.ts +2 -0
  25. package/dist/attachments/composables/index.d.ts +5 -0
  26. package/dist/attachments/composables/useFileCard.d.ts +15 -0
  27. package/dist/attachments/composables/useFileType.d.ts +20 -0
  28. package/dist/attachments/composables/useImagePreview.d.ts +18 -0
  29. package/dist/attachments/composables/useListType.d.ts +11 -0
  30. package/dist/attachments/index.d.ts +7 -0
  31. package/dist/attachments/index.js +2 -2
  32. package/dist/attachments/index.type.d.ts +70 -0
  33. package/dist/attachments/index.vue.d.ts +27 -0
  34. package/dist/attachments/utils.d.ts +3 -0
  35. package/dist/base-popper/components/Popper.vue.d.ts +28 -0
  36. package/dist/base-popper/index.d.ts +2 -0
  37. package/dist/base-popper/index.vue.d.ts +41 -0
  38. package/dist/bubble/Bubble.vue.d.ts +39 -0
  39. package/dist/bubble/BubbleBoxWrapper.vue.d.ts +22 -0
  40. package/dist/bubble/BubbleContentWrapper.vue.d.ts +16 -0
  41. package/dist/bubble/BubbleItem.vue.d.ts +36 -0
  42. package/dist/bubble/BubbleList.vue.d.ts +41 -0
  43. package/dist/bubble/BubbleProvider.vue.d.ts +18 -0
  44. package/dist/bubble/composables/index.d.ts +10 -0
  45. package/dist/bubble/composables/useBubbleBoxRenderer.d.ts +18 -0
  46. package/dist/bubble/composables/useBubbleContentRenderer.d.ts +18 -0
  47. package/dist/bubble/composables/useBubbleStateChange.d.ts +2 -0
  48. package/dist/bubble/composables/useBubbleStore.d.ts +16 -0
  49. package/dist/bubble/composables/useContentResolver.d.ts +5 -0
  50. package/dist/bubble/composables/useCopyCleanup.d.ts +6 -0
  51. package/dist/bubble/composables/useMessageContent.d.ts +5 -0
  52. package/dist/bubble/composables/useMessageGroup.d.ts +4 -0
  53. package/dist/bubble/composables/useOmitMessageFields.d.ts +12 -0
  54. package/dist/bubble/composables/useToolCall.d.ts +25 -0
  55. package/dist/bubble/constants.d.ts +42 -0
  56. package/dist/bubble/index.d.ts +19 -0
  57. package/dist/bubble/index.type.d.ts +171 -0
  58. package/dist/bubble/renderers/Box.vue.d.ts +18 -0
  59. package/dist/bubble/renderers/Image.vue.d.ts +4 -0
  60. package/dist/bubble/renderers/Loading.vue.d.ts +4 -0
  61. package/dist/bubble/renderers/Markdown.vue.d.ts +4 -0
  62. package/dist/bubble/renderers/Reasoning.vue.d.ts +9 -0
  63. package/dist/bubble/renderers/Text.vue.d.ts +4 -0
  64. package/dist/bubble/renderers/Tool.vue.d.ts +14 -0
  65. package/dist/bubble/renderers/ToolRole.vue.d.ts +4 -0
  66. package/dist/bubble/renderers/Tools.vue.d.ts +4 -0
  67. package/dist/bubble/renderers/allRenderers.d.ts +93 -0
  68. package/dist/bubble/renderers/defaultRenderers.d.ts +27 -0
  69. package/dist/bubble/utils.d.ts +7 -0
  70. package/dist/chat/components/ChatConversation.vue.d.ts +267 -0
  71. package/dist/chat/components/ChatLauncherButton.vue.d.ts +12 -0
  72. package/dist/chat/components/ChatMcpTrigger.vue.d.ts +30 -0
  73. package/dist/chat/components/ChatThemeToggleButton.vue.d.ts +6 -0
  74. package/dist/chat/components/ChatWelcome.vue.d.ts +14 -0
  75. package/dist/chat/components/icons/IconModelAliyunBailian.vue.d.ts +7 -0
  76. package/dist/chat/components/icons/IconModelDeepseek.vue.d.ts +7 -0
  77. package/dist/chat/components/icons/index.d.ts +5 -0
  78. package/dist/chat/composables/useChatConversation.d.ts +37 -0
  79. package/dist/chat/composables/useChatMcp.d.ts +29 -0
  80. package/dist/chat/composables/useChatModel.d.ts +27 -0
  81. package/dist/chat/index.d.ts +9 -0
  82. package/dist/chat/index.js +13902 -0
  83. package/dist/chat/index.type.d.ts +92 -0
  84. package/dist/chat/index.vue.d.ts +51 -0
  85. package/dist/chat/locale.d.ts +12 -0
  86. package/dist/chat/mcpServers.d.ts +3 -0
  87. package/dist/container/index.d.ts +7 -0
  88. package/dist/container/index.type.d.ts +20 -0
  89. package/dist/container/index.vue.d.ts +32 -0
  90. package/dist/conversations/index.d.ts +7 -0
  91. package/dist/conversations/index.vue.d.ts +2 -0
  92. package/dist/drag-overlay/constants.d.ts +17 -0
  93. package/dist/drag-overlay/directives/vDropzone.d.ts +14 -0
  94. package/dist/drag-overlay/index.d.ts +7 -0
  95. package/dist/drag-overlay/index.type.d.ts +105 -0
  96. package/dist/drag-overlay/index.vue.d.ts +20 -0
  97. package/dist/dropdown-menu/composables/usePopperHover.d.ts +6 -0
  98. package/dist/dropdown-menu/index.d.ts +7 -0
  99. package/dist/dropdown-menu/index.js +17 -17
  100. package/dist/dropdown-menu/index.type.d.ts +42 -0
  101. package/dist/dropdown-menu/index.vue.d.ts +217 -0
  102. package/dist/feedback/components/SourceList.vue.d.ts +11 -0
  103. package/dist/feedback/components/index.d.ts +1 -0
  104. package/dist/feedback/index.d.ts +7 -0
  105. package/dist/feedback/index.type.d.ts +25 -0
  106. package/dist/feedback/index.vue.d.ts +13 -0
  107. package/dist/flow-layout-buttons/index.d.ts +7 -0
  108. package/dist/flow-layout-buttons/index.js +1 -1
  109. package/dist/flow-layout-buttons/index.type.d.ts +35 -0
  110. package/dist/flow-layout-buttons/index.vue.d.ts +22 -0
  111. package/dist/history/components/Empty.vue.d.ts +7 -0
  112. package/dist/history/components/MenuList.vue.d.ts +24 -0
  113. package/dist/history/composables/useRenameEditor.d.ts +22 -0
  114. package/dist/history/constants.d.ts +1 -0
  115. package/dist/history/index.d.ts +7 -0
  116. package/dist/history/index.type.d.ts +33 -0
  117. package/dist/history/index.vue.d.ts +18 -0
  118. package/dist/icon-button/index.d.ts +7 -0
  119. package/dist/icon-button/index.type.d.ts +7 -0
  120. package/dist/icon-button/index.vue.d.ts +6 -0
  121. package/dist/index.d.ts +49 -5018
  122. package/dist/index.js +1 -1
  123. package/dist/mcp-add-form/components/CodeEditor.vue.d.ts +9 -0
  124. package/dist/mcp-add-form/components/FormEditor.vue.d.ts +10 -0
  125. package/dist/mcp-add-form/components/index.d.ts +2 -0
  126. package/dist/mcp-add-form/index.d.ts +7 -0
  127. package/dist/mcp-add-form/index.type.d.ts +19 -0
  128. package/dist/mcp-add-form/index.vue.d.ts +13 -0
  129. package/dist/mcp-server-picker/components/NoData.vue.d.ts +7 -0
  130. package/dist/mcp-server-picker/components/PluginCard.vue.d.ts +40 -0
  131. package/dist/mcp-server-picker/components/PluginModal.vue.d.ts +15 -0
  132. package/dist/mcp-server-picker/components/index.d.ts +3 -0
  133. package/dist/mcp-server-picker/index.d.ts +7 -0
  134. package/dist/mcp-server-picker/index.js +83 -80
  135. package/dist/mcp-server-picker/index.type.d.ts +99 -0
  136. package/dist/mcp-server-picker/index.vue.d.ts +71 -0
  137. package/dist/prompts/index.d.ts +12 -0
  138. package/dist/prompts/index.type.d.ts +59 -0
  139. package/dist/prompts/prompt.vue.d.ts +5 -0
  140. package/dist/prompts/prompts.vue.d.ts +20 -0
  141. package/dist/sender/components/editor-content/index.vue.d.ts +4 -0
  142. package/dist/sender/components/footer/index.vue.d.ts +38 -0
  143. package/dist/sender/components/layouts/MultiLineLayout.vue.d.ts +43 -0
  144. package/dist/sender/components/layouts/SingleLineLayout.vue.d.ts +32 -0
  145. package/dist/sender/composables/index.d.ts +7 -0
  146. package/dist/sender/composables/useAutoSize.d.ts +5 -0
  147. package/dist/sender/composables/useEditor.d.ts +13 -0
  148. package/dist/sender/composables/useKeyboardShortcuts.d.ts +7 -0
  149. package/dist/sender/composables/useModeSwitch.d.ts +4 -0
  150. package/dist/sender/composables/useSenderCore.d.ts +31 -0
  151. package/dist/sender/composables/useSlotScope.d.ts +10 -0
  152. package/dist/sender/context/index.d.ts +6 -0
  153. package/dist/sender/context/types.d.ts +7 -0
  154. package/dist/sender/extensions/constants.d.ts +94 -0
  155. package/dist/sender/extensions/index.d.ts +12 -0
  156. package/dist/sender/extensions/mention/commands.d.ts +20 -0
  157. package/dist/sender/extensions/mention/components/mention-list.vue.d.ts +18 -0
  158. package/dist/sender/extensions/mention/components/mention-view.vue.d.ts +19 -0
  159. package/dist/sender/extensions/mention/extension.d.ts +6 -0
  160. package/dist/sender/extensions/mention/index.d.ts +22 -0
  161. package/dist/sender/extensions/mention/plugin.d.ts +16 -0
  162. package/dist/sender/extensions/mention/types.d.ts +126 -0
  163. package/dist/sender/extensions/mention/utils.d.ts +34 -0
  164. package/dist/sender/extensions/suggestion/extension.d.ts +8 -0
  165. package/dist/sender/extensions/suggestion/index.d.ts +20 -0
  166. package/dist/sender/extensions/suggestion/plugin.d.ts +21 -0
  167. package/dist/sender/extensions/suggestion/suggestion-list.vue.d.ts +46 -0
  168. package/dist/sender/extensions/suggestion/types.d.ts +254 -0
  169. package/dist/sender/extensions/suggestion/utils/filter.d.ts +29 -0
  170. package/dist/sender/extensions/suggestion/utils/highlight.d.ts +73 -0
  171. package/dist/sender/extensions/template/block/extension.d.ts +6 -0
  172. package/dist/sender/extensions/template/block/plugins.d.ts +13 -0
  173. package/dist/sender/extensions/template/block/template-block-view.vue.d.ts +14 -0
  174. package/dist/sender/extensions/template/commands.d.ts +31 -0
  175. package/dist/sender/extensions/template/extension.d.ts +6 -0
  176. package/dist/sender/extensions/template/index.d.ts +21 -0
  177. package/dist/sender/extensions/template/select/dropdown-manager.d.ts +23 -0
  178. package/dist/sender/extensions/template/select/extension.d.ts +5 -0
  179. package/dist/sender/extensions/template/select/plugins.d.ts +34 -0
  180. package/dist/sender/extensions/template/select/template-select-view.vue.d.ts +20 -0
  181. package/dist/sender/extensions/template/types.d.ts +100 -0
  182. package/dist/sender/extensions/template/utils.d.ts +20 -0
  183. package/dist/sender/extensions/utils/id-generator.d.ts +16 -0
  184. package/dist/sender/extensions/utils/index.d.ts +7 -0
  185. package/dist/sender/extensions/utils/keyboard.d.ts +49 -0
  186. package/dist/sender/extensions/utils/position.d.ts +25 -0
  187. package/dist/sender/index.d.ts +136 -0
  188. package/dist/sender/index.type.d.ts +302 -0
  189. package/dist/sender/index.vue.d.ts +90 -0
  190. package/dist/sender/types/base.d.ts +239 -0
  191. package/dist/sender/types/components.d.ts +68 -0
  192. package/dist/sender/types/composables.d.ts +122 -0
  193. package/dist/sender/types/context.d.ts +132 -0
  194. package/dist/sender/types/slots.d.ts +67 -0
  195. package/dist/sender/utils/countGraphemes.d.ts +1 -0
  196. package/dist/sender-actions/action-button/index.vue.d.ts +23 -0
  197. package/dist/sender-actions/clear-button/index.vue.d.ts +2 -0
  198. package/dist/sender-actions/clear-button/useClearButtonState.d.ts +6 -0
  199. package/dist/sender-actions/default-actions/index.vue.d.ts +17 -0
  200. package/dist/sender-actions/index.d.ts +21 -0
  201. package/dist/sender-actions/index.type.d.ts +7 -0
  202. package/dist/sender-actions/submit-button/index.vue.d.ts +2 -0
  203. package/dist/sender-actions/types/common.d.ts +40 -0
  204. package/dist/sender-actions/types/index.d.ts +5 -0
  205. package/dist/sender-actions/types/tooltip.d.ts +7 -0
  206. package/dist/sender-actions/upload-button/index.type.d.ts +57 -0
  207. package/dist/sender-actions/upload-button/index.vue.d.ts +16 -0
  208. package/dist/sender-actions/utils/tooltip.d.ts +8 -0
  209. package/dist/sender-actions/voice-button/index.type.d.ts +78 -0
  210. package/dist/sender-actions/voice-button/index.vue.d.ts +43 -0
  211. package/dist/sender-actions/voice-button/speech.types.d.ts +40 -0
  212. package/dist/sender-actions/voice-button/useSpeechHandler.d.ts +10 -0
  213. package/dist/sender-actions/voice-button/webSpeechHandler.d.ts +40 -0
  214. package/dist/sender-actions/word-counter/index.vue.d.ts +2 -0
  215. package/dist/sender-compat/index.d.ts +7 -0
  216. package/dist/sender-compat/index.type.d.ts +91 -0
  217. package/dist/sender-compat/index.vue.d.ts +532 -0
  218. package/dist/shared/composables/createTeleport.d.ts +2 -0
  219. package/dist/shared/composables/index.d.ts +5 -0
  220. package/dist/shared/composables/useAutoScroll.d.ts +25 -0
  221. package/dist/shared/composables/useSlotRefs.d.ts +12 -0
  222. package/dist/shared/composables/useTeleportTarget.d.ts +11 -0
  223. package/dist/shared/composables/useTouchDevice.d.ts +3 -0
  224. package/dist/shared/utils.d.ts +7 -0
  225. package/dist/style.css +1 -1
  226. package/dist/suggestion-pills/components/PillButton.vue.d.ts +16 -0
  227. package/dist/suggestion-pills/components/index.d.ts +1 -0
  228. package/dist/suggestion-pills/index.d.ts +13 -0
  229. package/dist/suggestion-pills/index.js +12 -12
  230. package/dist/suggestion-pills/index.type.d.ts +45 -0
  231. package/dist/suggestion-pills/index.vue.d.ts +44 -0
  232. package/dist/suggestion-popover/components/Backdrop.vue.d.ts +5 -0
  233. package/dist/suggestion-popover/components/Header.vue.d.ts +4 -0
  234. package/dist/suggestion-popover/components/Loading.vue.d.ts +17 -0
  235. package/dist/suggestion-popover/components/NoData.vue.d.ts +17 -0
  236. package/dist/suggestion-popover/components/Tooltip.vue.d.ts +19 -0
  237. package/dist/suggestion-popover/index.d.ts +7 -0
  238. package/dist/suggestion-popover/index.js +35 -35
  239. package/dist/suggestion-popover/index.type.d.ts +80 -0
  240. package/dist/suggestion-popover/index.vue.d.ts +262 -0
  241. package/dist/theme-provider/constants.d.ts +6 -0
  242. package/dist/theme-provider/index.d.ts +9 -0
  243. package/dist/theme-provider/index.js +32 -41
  244. package/dist/theme-provider/index.type.d.ts +18 -0
  245. package/dist/theme-provider/index.vue.d.ts +32 -0
  246. package/dist/theme-provider/useTheme.d.ts +11 -0
  247. package/dist/useTheme.js +22 -0
  248. package/dist/welcome/index.d.ts +7 -0
  249. package/dist/welcome/index.type.d.ts +10 -0
  250. package/dist/welcome/index.vue.d.ts +18 -0
  251. package/package.json +22 -3
@@ -0,0 +1,122 @@
1
+ import { Ref } from 'vue';
2
+ import { Editor } from '@tiptap/vue-3';
3
+ import { InputMode, SubmitTrigger } from './base';
4
+ /**
5
+ * 键盘处理器接口
6
+ */
7
+ export interface KeyboardHandlers {
8
+ checkSubmitShortcut: (event: KeyboardEvent) => boolean;
9
+ checkNewlineShortcut: (event: KeyboardEvent) => boolean;
10
+ submit: () => void;
11
+ }
12
+ /**
13
+ * useKeyboardShortcuts Hook 参数
14
+ */
15
+ export interface UseKeyboardShortcutsParams {
16
+ submitType: Ref<SubmitTrigger>;
17
+ canSubmit: Ref<boolean>;
18
+ mode: Ref<InputMode>;
19
+ submit: () => void;
20
+ setMode: (mode: InputMode) => void;
21
+ }
22
+ /**
23
+ * useKeyboardShortcuts Hook 返回值
24
+ */
25
+ export interface UseKeyboardShortcutsReturn {
26
+ checkSubmitShortcut: (event: KeyboardEvent) => boolean;
27
+ checkNewlineShortcut: (event: KeyboardEvent) => boolean;
28
+ }
29
+ /**
30
+ * useEditor 返回类型
31
+ */
32
+ export interface UseEditorReturn {
33
+ /**
34
+ * 编辑器实例
35
+ * 注意:Tiptap 的 useEditor 返回 ShallowRef<Editor | undefined>
36
+ */
37
+ editor: Ref<Editor | undefined>;
38
+ /**
39
+ * 编辑器 DOM 引用
40
+ */
41
+ editorRef: Ref<HTMLElement | null>;
42
+ }
43
+ /**
44
+ * useModeSwitch 返回类型
45
+ */
46
+ export interface UseModeSwitchReturn {
47
+ /**
48
+ * 当前模式
49
+ */
50
+ currentMode: Ref<InputMode>;
51
+ /**
52
+ * 是否正在自动切换
53
+ */
54
+ isAutoSwitching: Ref<boolean>;
55
+ /**
56
+ * 设置模式
57
+ *
58
+ * @param mode - 输入模式
59
+ */
60
+ setMode: (mode: InputMode) => void;
61
+ /**
62
+ * 检查内容溢出
63
+ *
64
+ * 用于自动切换模式
65
+ */
66
+ checkOverflow: () => void;
67
+ }
68
+ /**
69
+ * useSuggestion 返回类型
70
+ */
71
+ export interface UseSuggestionReturn {
72
+ /**
73
+ * 弹窗是否可见
74
+ */
75
+ isPopupVisible: Ref<boolean>;
76
+ /**
77
+ * 当前激活的建议
78
+ */
79
+ activeSuggestion: Ref<string>;
80
+ /**
81
+ * 键盘导航的激活索引
82
+ */
83
+ activeKeyboardIndex: Ref<number>;
84
+ /**
85
+ * 鼠标悬停的激活索引
86
+ */
87
+ activeMouseIndex: Ref<number>;
88
+ /**
89
+ * 自动补全文本
90
+ */
91
+ autoCompleteText: Ref<string>;
92
+ /**
93
+ * 是否显示 Tab 提示器
94
+ */
95
+ showTabIndicator: Ref<boolean>;
96
+ /**
97
+ * 应用建议
98
+ *
99
+ * @param suggestion - 建议内容
100
+ */
101
+ applySuggestion: (suggestion: string) => void;
102
+ /**
103
+ * 键盘导航
104
+ *
105
+ * @param direction - 方向(上/下)
106
+ */
107
+ navigateWithKeyboard: (direction: 'up' | 'down') => void;
108
+ /**
109
+ * 鼠标进入
110
+ *
111
+ * @param index - 建议项索引
112
+ */
113
+ handleMouseEnter: (index: number) => void;
114
+ /**
115
+ * 鼠标离开
116
+ */
117
+ handleMouseLeave: () => void;
118
+ /**
119
+ * 关闭弹窗
120
+ */
121
+ closePopup: () => void;
122
+ }
@@ -0,0 +1,132 @@
1
+ import { Ref } from 'vue';
2
+ import { Editor } from '@tiptap/vue-3';
3
+ import { InputMode, DefaultActions, SubmitTrigger } from './base';
4
+ /**
5
+ * Sender Context
6
+ *
7
+ * 通过 provide/inject 在组件树中共享的状态和方法
8
+ * 所有子组件都可以通过 inject 获取
9
+ */
10
+ export interface SenderContext {
11
+ /**
12
+ * Tiptap 编辑器实例
13
+ * 注意:Tiptap 的 useEditor 返回 ShallowRef<Editor | undefined>
14
+ */
15
+ editor: Ref<Editor | undefined>;
16
+ /**
17
+ * 编辑器 DOM 引用
18
+ */
19
+ editorRef: Ref<HTMLElement | null>;
20
+ /**
21
+ * 当前输入模式
22
+ */
23
+ mode: Ref<InputMode>;
24
+ /**
25
+ * 是否正在自动切换模式
26
+ * 用于控制切换时的过渡动画
27
+ */
28
+ isAutoSwitching: Ref<boolean>;
29
+ /**
30
+ * 是否加载中
31
+ */
32
+ loading: Ref<boolean>;
33
+ /**
34
+ * 是否禁用
35
+ */
36
+ disabled: Ref<boolean>;
37
+ /**
38
+ * 是否有内容
39
+ */
40
+ hasContent: Ref<boolean>;
41
+ /**
42
+ * 是否可以提交
43
+ *
44
+ * 综合判断:
45
+ * - !disabled
46
+ * - !loading
47
+ * - hasContent
48
+ * - !isOverLimit
49
+ * - !defaultActions.submit?.disabled
50
+ */
51
+ canSubmit: Ref<boolean>;
52
+ /**
53
+ * 是否超出字数限制
54
+ */
55
+ isOverLimit: Ref<boolean>;
56
+ /**
57
+ * 当前字符数
58
+ */
59
+ characterCount: Ref<number>;
60
+ /**
61
+ * 最大字符数限制
62
+ */
63
+ maxLength: Ref<number | undefined>;
64
+ /**
65
+ * 组件的尺寸
66
+ */
67
+ size: Ref<'small' | 'normal'>;
68
+ /**
69
+ * 是否显示字数限制
70
+ */
71
+ showWordLimit: Ref<boolean>;
72
+ /**
73
+ * 是否显示清空按钮
74
+ */
75
+ clearable: Ref<boolean>;
76
+ /**
77
+ * 默认操作按钮配置
78
+ */
79
+ defaultActions: Ref<DefaultActions | undefined>;
80
+ /**
81
+ * 提交触发方式
82
+ */
83
+ submitType: Ref<SubmitTrigger>;
84
+ /**
85
+ * 停止按钮文字
86
+ */
87
+ stopText: Ref<string | undefined>;
88
+ /**
89
+ * 提交内容
90
+ */
91
+ submit: () => void;
92
+ /**
93
+ * 清空内容
94
+ */
95
+ clear: () => void;
96
+ /**
97
+ * 取消操作
98
+ *
99
+ * 在 loading 状态下触发,用于取消正在进行的操作
100
+ */
101
+ cancel: () => void;
102
+ /**
103
+ * 聚焦编辑器
104
+ */
105
+ focus: () => void;
106
+ /**
107
+ * 失焦编辑器
108
+ */
109
+ blur: () => void;
110
+ /**
111
+ * 设置编辑器内容
112
+ *
113
+ * @param content - 内容(HTML 或 JSON)
114
+ */
115
+ setContent: (content: string) => void;
116
+ /**
117
+ * 获取编辑器内容
118
+ *
119
+ * @returns 内容(HTML)
120
+ */
121
+ getContent: () => string;
122
+ }
123
+ /**
124
+ * Context Key
125
+ *
126
+ * 用于 provide/inject 的 key
127
+ */
128
+ export declare const SENDER_CONTEXT_KEY: unique symbol;
129
+ /**
130
+ * useSenderContext 返回类型
131
+ */
132
+ export type UseSenderContextReturn = SenderContext;
@@ -0,0 +1,67 @@
1
+ import { Editor } from '@tiptap/core';
2
+ /**
3
+ * Sender 插槽作用域
4
+ *
5
+ * 通过插槽作用域暴露给外部组件的状态和方法
6
+ * 主要为增强按钮(Upload、Voice 等)提供便捷的操作方法
7
+ */
8
+ export interface SenderSlotScope {
9
+ /**
10
+ * Tiptap 编辑器实例
11
+ * 用于高级操作
12
+ */
13
+ editor: Editor | undefined;
14
+ /**
15
+ * 聚焦编辑器
16
+ */
17
+ focus: () => void;
18
+ /**
19
+ * 失焦编辑器
20
+ */
21
+ blur: () => void;
22
+ /**
23
+ * 插入内容到当前光标位置
24
+ *
25
+ * 适用场景:语音输入、快捷短语插入
26
+ *
27
+ * @param content - 要插入的内容
28
+ * @example
29
+ * ```vue
30
+ * <template #actions-inline="{ insert }">
31
+ * <VoiceButton @speech-final="insert" />
32
+ * </template>
33
+ * ```
34
+ */
35
+ insert: (content: string) => void;
36
+ /**
37
+ * 追加内容到编辑器末尾
38
+ *
39
+ * 适用场景:连续语音输入、批量添加内容
40
+ *
41
+ * @param content - 要追加的内容
42
+ */
43
+ append: (content: string) => void;
44
+ /**
45
+ * 替换编辑器全部内容
46
+ *
47
+ * 适用场景:模板填充、内容重置
48
+ *
49
+ * @param content - 新内容
50
+ */
51
+ replace: (content: string) => void;
52
+ /**
53
+ * 是否禁用
54
+ * 用于控制自定义按钮状态
55
+ */
56
+ disabled: boolean;
57
+ /**
58
+ * 是否加载中
59
+ * 用于控制按钮加载状态和禁用
60
+ */
61
+ loading: boolean;
62
+ /**
63
+ * 是否有内容
64
+ * 用于控制按钮显示/隐藏
65
+ */
66
+ hasContent: boolean;
67
+ }
@@ -0,0 +1 @@
1
+ export declare function countGraphemes(text: string): number;
@@ -0,0 +1,23 @@
1
+ import { ActionButtonProps } from '../types/common';
2
+ declare function __VLS_template(): {
3
+ attrs: Partial<{}>;
4
+ slots: {
5
+ icon?(_: {}): any;
6
+ icon?(_: {}): any;
7
+ };
8
+ refs: {};
9
+ rootEl: any;
10
+ };
11
+ type __VLS_TemplateResult = ReturnType<typeof __VLS_template>;
12
+ declare const __VLS_component: import('vue').DefineComponent<ActionButtonProps, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {}, string, import('vue').PublicProps, Readonly<ActionButtonProps> & Readonly<{}>, {
13
+ disabled: boolean;
14
+ active: boolean;
15
+ tooltipPlacement: import('../index.type').TooltipPlacement;
16
+ }, {}, {}, {}, string, import('vue').ComponentProvideOptions, false, {}, any>;
17
+ declare const _default: __VLS_WithTemplateSlots<typeof __VLS_component, __VLS_TemplateResult["slots"]>;
18
+ export default _default;
19
+ type __VLS_WithTemplateSlots<T, S> = T & {
20
+ new (): {
21
+ $slots: S;
22
+ };
23
+ };
@@ -0,0 +1,2 @@
1
+ declare const _default: import('vue').DefineComponent<{}, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {}, string, import('vue').PublicProps, Readonly<{}> & Readonly<{}>, {}, {}, {}, {}, string, import('vue').ComponentProvideOptions, true, {}, any>;
2
+ export default _default;
@@ -0,0 +1,6 @@
1
+ export declare const useClearButtonState: () => {
2
+ isDisabled: import('vue').ComputedRef<boolean>;
3
+ tooltip: import('vue').ComputedRef<import('../index.type').TooltipContent | undefined>;
4
+ tooltipPlacement: import('vue').ComputedRef<import('../index.type').TooltipPlacement>;
5
+ show: import('vue').ComputedRef<boolean>;
6
+ };
@@ -0,0 +1,17 @@
1
+ declare function __VLS_template(): {
2
+ attrs: Partial<{}>;
3
+ slots: {
4
+ prepend?(_: {}): any;
5
+ };
6
+ refs: {};
7
+ rootEl: any;
8
+ };
9
+ type __VLS_TemplateResult = ReturnType<typeof __VLS_template>;
10
+ declare const __VLS_component: import('vue').DefineComponent<{}, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {}, string, import('vue').PublicProps, Readonly<{}> & Readonly<{}>, {}, {}, {}, {}, string, import('vue').ComponentProvideOptions, true, {}, any>;
11
+ declare const _default: __VLS_WithTemplateSlots<typeof __VLS_component, __VLS_TemplateResult["slots"]>;
12
+ export default _default;
13
+ type __VLS_WithTemplateSlots<T, S> = T & {
14
+ new (): {
15
+ $slots: S;
16
+ };
17
+ };
@@ -0,0 +1,21 @@
1
+ /**
2
+ * Sender Actions 组件导出
3
+ *
4
+ * 包含所有操作按钮组件:
5
+ * - ActionButton: 基础按钮
6
+ * - SubmitButton: 提交按钮
7
+ * - ClearButton: 清空按钮
8
+ * - UploadButton: 上传按钮
9
+ * - VoiceButton: 语音输入按钮
10
+ * - WordCounter: 字数统计
11
+ * - DefaultActionButtons: 默认按钮组合
12
+ */
13
+ export { default as ActionButton } from './action-button/index.vue';
14
+ export { default as SubmitButton } from './submit-button/index.vue';
15
+ export { default as ClearButton } from './clear-button/index.vue';
16
+ export { default as UploadButton } from './upload-button/index.vue';
17
+ export { default as VoiceButton } from './voice-button/index.vue';
18
+ export { default as WordCounter } from './word-counter/index.vue';
19
+ export { default as DefaultActionButtons } from './default-actions/index.vue';
20
+ export { useSpeechHandler } from './voice-button/useSpeechHandler';
21
+ export { WebSpeechHandler } from './voice-button/webSpeechHandler';
@@ -0,0 +1,7 @@
1
+ /**
2
+ * Sender Actions 类型导出
3
+ */
4
+ export type { TooltipPlacement, TooltipContent, ActionButtonProps } from './types/common';
5
+ export type { UploadButtonProps, UploadButtonEmits } from './upload-button/index.type';
6
+ export type { VoiceButtonProps, VoiceButtonEmits } from './voice-button/index.type';
7
+ export type { SpeechConfig, SpeechHandler, SpeechState, SpeechCallbacks, SpeechHookOptions, SpeechHandlerResult, } from './voice-button/speech.types';
@@ -0,0 +1,2 @@
1
+ declare const _default: import('vue').DefineComponent<{}, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {}, string, import('vue').PublicProps, Readonly<{}> & Readonly<{}>, {}, {}, {}, {}, string, import('vue').ComponentProvideOptions, true, {}, any>;
2
+ export default _default;
@@ -0,0 +1,40 @@
1
+ import { VNode, Component } from 'vue';
2
+ import { TooltipContent } from './tooltip';
3
+ export type { TooltipContent } from './tooltip';
4
+ /**
5
+ * Tooltip 位置
6
+ *
7
+ * 支持 TinyTooltip 的所有位置选项
8
+ */
9
+ export type TooltipPlacement = 'top' | 'top-start' | 'top-end' | 'bottom' | 'bottom-start' | 'bottom-end' | 'left' | 'left-start' | 'left-end' | 'right' | 'right-start' | 'right-end';
10
+ /**
11
+ * ActionButton Props
12
+ *
13
+ * 基础操作按钮的 Props
14
+ */
15
+ export interface ActionButtonProps {
16
+ /**
17
+ * 按钮图标
18
+ */
19
+ icon: VNode | Component;
20
+ /**
21
+ * 是否禁用
22
+ */
23
+ disabled?: boolean;
24
+ /**
25
+ * 是否激活状态
26
+ */
27
+ active?: boolean;
28
+ /**
29
+ * 工具提示
30
+ */
31
+ tooltip?: TooltipContent;
32
+ /**
33
+ * Tooltip 位置
34
+ */
35
+ tooltipPlacement?: TooltipPlacement;
36
+ /**
37
+ * 按钮大小
38
+ */
39
+ size?: string | number;
40
+ }
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Sender Actions 类型统一导出
3
+ */
4
+ export * from './tooltip';
5
+ export * from './common';
@@ -0,0 +1,7 @@
1
+ import { VNode } from 'vue';
2
+ /**
3
+ * Tooltip 内容类型
4
+ * - string: 简单文本
5
+ * - () => string | VNode: 渲染函数,支持复杂内容
6
+ */
7
+ export type TooltipContent = string | (() => string | VNode);
@@ -0,0 +1,57 @@
1
+ import { Component } from 'vue';
2
+ import { TooltipContent, TooltipPlacement } from '../types/common';
3
+ export interface UploadButtonProps {
4
+ /**
5
+ * 是否禁用
6
+ */
7
+ disabled?: boolean;
8
+ /**
9
+ * 接受的文件类型
10
+ * @default '*'
11
+ */
12
+ accept?: string;
13
+ /**
14
+ * 是否支持多选
15
+ * @default false
16
+ */
17
+ multiple?: boolean;
18
+ /**
19
+ * 是否在选择文件后重置 input
20
+ * @default true
21
+ */
22
+ reset?: boolean;
23
+ /**
24
+ * 文件大小限制(MB)
25
+ */
26
+ maxSize?: number;
27
+ /**
28
+ * 最大文件数量
29
+ */
30
+ maxCount?: number;
31
+ /**
32
+ * 按钮提示文本
33
+ */
34
+ tooltip?: TooltipContent;
35
+ /**
36
+ * 按钮尺寸
37
+ */
38
+ size?: number | string;
39
+ /**
40
+ * 自定义图标
41
+ */
42
+ icon?: Component;
43
+ /**
44
+ * Tooltip 位置
45
+ */
46
+ tooltipPlacement?: TooltipPlacement;
47
+ }
48
+ export interface UploadButtonEmits {
49
+ /**
50
+ * 文件选择
51
+ */
52
+ (e: 'select', files: File[]): void;
53
+ /**
54
+ * 文件验证失败
55
+ */
56
+ (e: 'error', error: Error, files?: File[]): void;
57
+ }
@@ -0,0 +1,16 @@
1
+ import { UploadButtonProps } from './index.type';
2
+ declare const _default: import('vue').DefineComponent<UploadButtonProps, {
3
+ open: (localOptions?: Partial<import('@vueuse/core').UseFileDialogOptions>) => void;
4
+ }, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {} & {
5
+ error: (error: Error, files?: File[] | undefined) => any;
6
+ select: (files: File[]) => any;
7
+ }, string, import('vue').PublicProps, Readonly<UploadButtonProps> & Readonly<{
8
+ onError?: ((error: Error, files?: File[] | undefined) => any) | undefined;
9
+ onSelect?: ((files: File[]) => any) | undefined;
10
+ }>, {
11
+ reset: boolean;
12
+ multiple: boolean;
13
+ tooltipPlacement: import('../index.type').TooltipPlacement;
14
+ accept: string;
15
+ }, {}, {}, {}, string, import('vue').ComponentProvideOptions, false, {}, any>;
16
+ export default _default;
@@ -0,0 +1,8 @@
1
+ import { VNode } from 'vue';
2
+ import { TooltipContent } from '../types/tooltip';
3
+ /**
4
+ * 将 TooltipContent 转换为 TinyTooltip 的 render-content 函数
5
+ */
6
+ export declare function normalizeTooltipContent(tooltip: TooltipContent | undefined): (() => VNode<import('vue').RendererNode, import('vue').RendererElement, {
7
+ [key: string]: any;
8
+ }>) | undefined;
@@ -0,0 +1,78 @@
1
+ import { VNode, Component } from 'vue';
2
+ import { SpeechConfig } from './speech.types';
3
+ import { TooltipPlacement, TooltipContent } from '../types/common';
4
+ /**
5
+ * VoiceButton 组件 Props
6
+ */
7
+ export interface VoiceButtonProps {
8
+ /**
9
+ * 自定义未录音状态的图标
10
+ *
11
+ * @default IconVoice
12
+ *
13
+ * @example 基础使用
14
+ * ```vue
15
+ * <VoiceButton :icon="IconMicrophone" />
16
+ * ```
17
+ */
18
+ icon?: VNode | Component;
19
+ /**
20
+ * 自定义录音中状态的图标
21
+ *
22
+ * @default IconRecordingWave
23
+ *
24
+ * @example 自定义录音中图标
25
+ * ```vue
26
+ * <VoiceButton :recording-icon="MyRecordingIcon" />
27
+ * ```
28
+ */
29
+ recordingIcon?: VNode | Component;
30
+ /**
31
+ * 是否禁用(会与 Context 的 disabled 合并)
32
+ */
33
+ disabled?: boolean;
34
+ /**
35
+ * 按钮尺寸
36
+ */
37
+ size?: 'small' | 'normal';
38
+ /**
39
+ * Tooltip 文本
40
+ */
41
+ tooltip?: TooltipContent;
42
+ /**
43
+ * Tooltip 位置
44
+ */
45
+ tooltipPlacement?: TooltipPlacement;
46
+ /**
47
+ * 语音配置
48
+ */
49
+ speechConfig?: SpeechConfig;
50
+ /**
51
+ * 是否自动插入识别结果到编辑器
52
+ * @default true
53
+ */
54
+ autoInsert?: boolean;
55
+ /**
56
+ * 按钮点击拦截器(用于自定义 UI)
57
+ */
58
+ onButtonClick?: (isRecording: boolean, preventDefault: () => void) => void | Promise<void>;
59
+ }
60
+ /**
61
+ * VoiceButton 组件 Emits
62
+ */
63
+ export interface VoiceButtonEmits {
64
+ (e: 'speech-start'): void;
65
+ (e: 'speech-interim', transcript: string): void;
66
+ (e: 'speech-final', transcript: string): void;
67
+ (e: 'speech-end', transcript?: string): void;
68
+ (e: 'speech-error', error: Error): void;
69
+ }
70
+ /**
71
+ * VoiceButton 插槽作用域
72
+ */
73
+ export interface VoiceButtonSlotScope {
74
+ /**
75
+ * 是否正在录音
76
+ */
77
+ isRecording: boolean;
78
+ }
@@ -0,0 +1,43 @@
1
+ import { VoiceButtonProps } from './index.type';
2
+ declare function __VLS_template(): {
3
+ attrs: Partial<{}>;
4
+ slots: {
5
+ icon?(_: {
6
+ isRecording: boolean;
7
+ }): any;
8
+ 'recording-overlay'?(_: {
9
+ isRecording: boolean;
10
+ stop: () => void;
11
+ }): any;
12
+ };
13
+ refs: {};
14
+ rootEl: any;
15
+ };
16
+ type __VLS_TemplateResult = ReturnType<typeof __VLS_template>;
17
+ declare const __VLS_component: import('vue').DefineComponent<VoiceButtonProps, {
18
+ start: () => void;
19
+ stop: () => void;
20
+ speechState: import('./speech.types').SpeechState;
21
+ }, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {} & {
22
+ "speech-start": () => any;
23
+ "speech-interim": (transcript: string) => any;
24
+ "speech-final": (transcript: string) => any;
25
+ "speech-end": (transcript?: string | undefined) => any;
26
+ "speech-error": (error: Error) => any;
27
+ }, string, import('vue').PublicProps, Readonly<VoiceButtonProps> & Readonly<{
28
+ "onSpeech-start"?: (() => any) | undefined;
29
+ "onSpeech-interim"?: ((transcript: string) => any) | undefined;
30
+ "onSpeech-final"?: ((transcript: string) => any) | undefined;
31
+ "onSpeech-end"?: ((transcript?: string | undefined) => any) | undefined;
32
+ "onSpeech-error"?: ((error: Error) => any) | undefined;
33
+ }>, {
34
+ tooltipPlacement: import('../index.type').TooltipPlacement;
35
+ autoInsert: boolean;
36
+ }, {}, {}, {}, string, import('vue').ComponentProvideOptions, false, {}, any>;
37
+ declare const _default: __VLS_WithTemplateSlots<typeof __VLS_component, __VLS_TemplateResult["slots"]>;
38
+ export default _default;
39
+ type __VLS_WithTemplateSlots<T, S> = T & {
40
+ new (): {
41
+ $slots: S;
42
+ };
43
+ };