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

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 (246) 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 +70 -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 +2 -0
  74. package/dist/chat/components/ChatWelcome.vue.d.ts +13 -0
  75. package/dist/chat/composables/useChatConversation.d.ts +37 -0
  76. package/dist/chat/composables/useChatMcp.d.ts +29 -0
  77. package/dist/chat/composables/useChatModel.d.ts +27 -0
  78. package/dist/chat/index.d.ts +9 -0
  79. package/dist/chat/index.js +13701 -0
  80. package/dist/chat/index.type.d.ts +88 -0
  81. package/dist/chat/index.vue.d.ts +58 -0
  82. package/dist/container/index.d.ts +7 -0
  83. package/dist/container/index.type.d.ts +20 -0
  84. package/dist/container/index.vue.d.ts +32 -0
  85. package/dist/conversations/index.d.ts +7 -0
  86. package/dist/conversations/index.vue.d.ts +2 -0
  87. package/dist/drag-overlay/constants.d.ts +17 -0
  88. package/dist/drag-overlay/directives/vDropzone.d.ts +14 -0
  89. package/dist/drag-overlay/index.d.ts +7 -0
  90. package/dist/drag-overlay/index.type.d.ts +105 -0
  91. package/dist/drag-overlay/index.vue.d.ts +20 -0
  92. package/dist/dropdown-menu/composables/usePopperHover.d.ts +6 -0
  93. package/dist/dropdown-menu/index.d.ts +7 -0
  94. package/dist/dropdown-menu/index.js +17 -17
  95. package/dist/dropdown-menu/index.type.d.ts +42 -0
  96. package/dist/dropdown-menu/index.vue.d.ts +217 -0
  97. package/dist/feedback/components/SourceList.vue.d.ts +11 -0
  98. package/dist/feedback/components/index.d.ts +1 -0
  99. package/dist/feedback/index.d.ts +7 -0
  100. package/dist/feedback/index.type.d.ts +25 -0
  101. package/dist/feedback/index.vue.d.ts +13 -0
  102. package/dist/flow-layout-buttons/index.d.ts +7 -0
  103. package/dist/flow-layout-buttons/index.js +1 -1
  104. package/dist/flow-layout-buttons/index.type.d.ts +35 -0
  105. package/dist/flow-layout-buttons/index.vue.d.ts +22 -0
  106. package/dist/history/components/Empty.vue.d.ts +7 -0
  107. package/dist/history/components/MenuList.vue.d.ts +24 -0
  108. package/dist/history/composables/useRenameEditor.d.ts +22 -0
  109. package/dist/history/constants.d.ts +1 -0
  110. package/dist/history/index.d.ts +7 -0
  111. package/dist/history/index.type.d.ts +33 -0
  112. package/dist/history/index.vue.d.ts +18 -0
  113. package/dist/icon-button/index.d.ts +7 -0
  114. package/dist/icon-button/index.type.d.ts +7 -0
  115. package/dist/icon-button/index.vue.d.ts +6 -0
  116. package/dist/index.d.ts +49 -5018
  117. package/dist/index.js +1 -1
  118. package/dist/mcp-add-form/components/CodeEditor.vue.d.ts +9 -0
  119. package/dist/mcp-add-form/components/FormEditor.vue.d.ts +10 -0
  120. package/dist/mcp-add-form/components/index.d.ts +2 -0
  121. package/dist/mcp-add-form/index.d.ts +7 -0
  122. package/dist/mcp-add-form/index.type.d.ts +19 -0
  123. package/dist/mcp-add-form/index.vue.d.ts +13 -0
  124. package/dist/mcp-server-picker/components/NoData.vue.d.ts +7 -0
  125. package/dist/mcp-server-picker/components/PluginCard.vue.d.ts +40 -0
  126. package/dist/mcp-server-picker/components/PluginModal.vue.d.ts +15 -0
  127. package/dist/mcp-server-picker/components/index.d.ts +3 -0
  128. package/dist/mcp-server-picker/index.d.ts +7 -0
  129. package/dist/mcp-server-picker/index.js +83 -80
  130. package/dist/mcp-server-picker/index.type.d.ts +99 -0
  131. package/dist/mcp-server-picker/index.vue.d.ts +71 -0
  132. package/dist/prompts/index.d.ts +12 -0
  133. package/dist/prompts/index.type.d.ts +59 -0
  134. package/dist/prompts/prompt.vue.d.ts +5 -0
  135. package/dist/prompts/prompts.vue.d.ts +20 -0
  136. package/dist/sender/components/editor-content/index.vue.d.ts +4 -0
  137. package/dist/sender/components/footer/index.vue.d.ts +38 -0
  138. package/dist/sender/components/layouts/MultiLineLayout.vue.d.ts +43 -0
  139. package/dist/sender/components/layouts/SingleLineLayout.vue.d.ts +32 -0
  140. package/dist/sender/composables/index.d.ts +7 -0
  141. package/dist/sender/composables/useAutoSize.d.ts +5 -0
  142. package/dist/sender/composables/useEditor.d.ts +13 -0
  143. package/dist/sender/composables/useKeyboardShortcuts.d.ts +7 -0
  144. package/dist/sender/composables/useModeSwitch.d.ts +4 -0
  145. package/dist/sender/composables/useSenderCore.d.ts +31 -0
  146. package/dist/sender/composables/useSlotScope.d.ts +10 -0
  147. package/dist/sender/context/index.d.ts +6 -0
  148. package/dist/sender/context/types.d.ts +7 -0
  149. package/dist/sender/extensions/constants.d.ts +94 -0
  150. package/dist/sender/extensions/index.d.ts +12 -0
  151. package/dist/sender/extensions/mention/commands.d.ts +20 -0
  152. package/dist/sender/extensions/mention/components/mention-list.vue.d.ts +18 -0
  153. package/dist/sender/extensions/mention/components/mention-view.vue.d.ts +19 -0
  154. package/dist/sender/extensions/mention/extension.d.ts +6 -0
  155. package/dist/sender/extensions/mention/index.d.ts +22 -0
  156. package/dist/sender/extensions/mention/plugin.d.ts +16 -0
  157. package/dist/sender/extensions/mention/types.d.ts +126 -0
  158. package/dist/sender/extensions/mention/utils.d.ts +34 -0
  159. package/dist/sender/extensions/suggestion/extension.d.ts +8 -0
  160. package/dist/sender/extensions/suggestion/index.d.ts +20 -0
  161. package/dist/sender/extensions/suggestion/plugin.d.ts +21 -0
  162. package/dist/sender/extensions/suggestion/suggestion-list.vue.d.ts +46 -0
  163. package/dist/sender/extensions/suggestion/types.d.ts +254 -0
  164. package/dist/sender/extensions/suggestion/utils/filter.d.ts +29 -0
  165. package/dist/sender/extensions/suggestion/utils/highlight.d.ts +73 -0
  166. package/dist/sender/extensions/template/block/extension.d.ts +6 -0
  167. package/dist/sender/extensions/template/block/plugins.d.ts +13 -0
  168. package/dist/sender/extensions/template/block/template-block-view.vue.d.ts +14 -0
  169. package/dist/sender/extensions/template/commands.d.ts +31 -0
  170. package/dist/sender/extensions/template/extension.d.ts +6 -0
  171. package/dist/sender/extensions/template/index.d.ts +21 -0
  172. package/dist/sender/extensions/template/select/dropdown-manager.d.ts +23 -0
  173. package/dist/sender/extensions/template/select/extension.d.ts +5 -0
  174. package/dist/sender/extensions/template/select/plugins.d.ts +34 -0
  175. package/dist/sender/extensions/template/select/template-select-view.vue.d.ts +20 -0
  176. package/dist/sender/extensions/template/types.d.ts +100 -0
  177. package/dist/sender/extensions/template/utils.d.ts +20 -0
  178. package/dist/sender/extensions/utils/id-generator.d.ts +16 -0
  179. package/dist/sender/extensions/utils/index.d.ts +7 -0
  180. package/dist/sender/extensions/utils/keyboard.d.ts +49 -0
  181. package/dist/sender/extensions/utils/position.d.ts +25 -0
  182. package/dist/sender/index.d.ts +136 -0
  183. package/dist/sender/index.type.d.ts +302 -0
  184. package/dist/sender/index.vue.d.ts +90 -0
  185. package/dist/sender/types/base.d.ts +239 -0
  186. package/dist/sender/types/components.d.ts +68 -0
  187. package/dist/sender/types/composables.d.ts +122 -0
  188. package/dist/sender/types/context.d.ts +132 -0
  189. package/dist/sender/types/slots.d.ts +67 -0
  190. package/dist/sender/utils/countGraphemes.d.ts +1 -0
  191. package/dist/sender-actions/action-button/index.vue.d.ts +23 -0
  192. package/dist/sender-actions/clear-button/index.vue.d.ts +2 -0
  193. package/dist/sender-actions/clear-button/useClearButtonState.d.ts +6 -0
  194. package/dist/sender-actions/default-actions/index.vue.d.ts +17 -0
  195. package/dist/sender-actions/index.d.ts +21 -0
  196. package/dist/sender-actions/index.type.d.ts +7 -0
  197. package/dist/sender-actions/submit-button/index.vue.d.ts +2 -0
  198. package/dist/sender-actions/types/common.d.ts +40 -0
  199. package/dist/sender-actions/types/index.d.ts +5 -0
  200. package/dist/sender-actions/types/tooltip.d.ts +7 -0
  201. package/dist/sender-actions/upload-button/index.type.d.ts +57 -0
  202. package/dist/sender-actions/upload-button/index.vue.d.ts +16 -0
  203. package/dist/sender-actions/utils/tooltip.d.ts +8 -0
  204. package/dist/sender-actions/voice-button/index.type.d.ts +78 -0
  205. package/dist/sender-actions/voice-button/index.vue.d.ts +43 -0
  206. package/dist/sender-actions/voice-button/speech.types.d.ts +40 -0
  207. package/dist/sender-actions/voice-button/useSpeechHandler.d.ts +10 -0
  208. package/dist/sender-actions/voice-button/webSpeechHandler.d.ts +40 -0
  209. package/dist/sender-actions/word-counter/index.vue.d.ts +2 -0
  210. package/dist/sender-compat/index.d.ts +7 -0
  211. package/dist/sender-compat/index.type.d.ts +91 -0
  212. package/dist/sender-compat/index.vue.d.ts +532 -0
  213. package/dist/shared/composables/createTeleport.d.ts +2 -0
  214. package/dist/shared/composables/index.d.ts +5 -0
  215. package/dist/shared/composables/useAutoScroll.d.ts +25 -0
  216. package/dist/shared/composables/useSlotRefs.d.ts +12 -0
  217. package/dist/shared/composables/useTeleportTarget.d.ts +11 -0
  218. package/dist/shared/composables/useTouchDevice.d.ts +3 -0
  219. package/dist/shared/utils.d.ts +7 -0
  220. package/dist/style.css +1 -1
  221. package/dist/suggestion-pills/components/PillButton.vue.d.ts +16 -0
  222. package/dist/suggestion-pills/components/index.d.ts +1 -0
  223. package/dist/suggestion-pills/index.d.ts +13 -0
  224. package/dist/suggestion-pills/index.js +12 -12
  225. package/dist/suggestion-pills/index.type.d.ts +45 -0
  226. package/dist/suggestion-pills/index.vue.d.ts +44 -0
  227. package/dist/suggestion-popover/components/Backdrop.vue.d.ts +5 -0
  228. package/dist/suggestion-popover/components/Header.vue.d.ts +4 -0
  229. package/dist/suggestion-popover/components/Loading.vue.d.ts +17 -0
  230. package/dist/suggestion-popover/components/NoData.vue.d.ts +17 -0
  231. package/dist/suggestion-popover/components/Tooltip.vue.d.ts +19 -0
  232. package/dist/suggestion-popover/index.d.ts +7 -0
  233. package/dist/suggestion-popover/index.js +35 -35
  234. package/dist/suggestion-popover/index.type.d.ts +80 -0
  235. package/dist/suggestion-popover/index.vue.d.ts +262 -0
  236. package/dist/theme-provider/constants.d.ts +6 -0
  237. package/dist/theme-provider/index.d.ts +9 -0
  238. package/dist/theme-provider/index.js +32 -41
  239. package/dist/theme-provider/index.type.d.ts +18 -0
  240. package/dist/theme-provider/index.vue.d.ts +32 -0
  241. package/dist/theme-provider/useTheme.d.ts +11 -0
  242. package/dist/useTheme.js +22 -0
  243. package/dist/welcome/index.d.ts +7 -0
  244. package/dist/welcome/index.type.d.ts +10 -0
  245. package/dist/welcome/index.vue.d.ts +18 -0
  246. package/package.json +22 -3
@@ -0,0 +1,302 @@
1
+ import { Extension } from '@tiptap/core';
2
+ import { InputMode, SubmitTrigger, DefaultActions, AutoSize, StructuredData, EnterKeyHint } from './types/base';
3
+ import { SenderSlotScope } from './types/slots';
4
+ export * from './types/base';
5
+ export * from './types/composables';
6
+ export * from './types/components';
7
+ export * from './types/context';
8
+ export * from './types/slots';
9
+ export type { MentionItem } from './extensions/mention';
10
+ export type { SenderSuggestionItem, SuggestionOptions, SuggestionState, SuggestionTextPart, HighlightFunction, } from './extensions/suggestion';
11
+ /**
12
+ * Sender 组件 Props
13
+ */
14
+ export interface SenderProps {
15
+ /**
16
+ * 输入内容(双向绑定)
17
+ *
18
+ * 支持 v-model
19
+ */
20
+ modelValue?: string;
21
+ /**
22
+ * 默认值
23
+ *
24
+ * 仅在初始化时使用
25
+ */
26
+ defaultValue?: string;
27
+ /**
28
+ * 占位符文本
29
+ *
30
+ * @default '请输入内容...'
31
+ */
32
+ placeholder?: string;
33
+ /**
34
+ * 是否禁用
35
+ *
36
+ * @default false
37
+ */
38
+ disabled?: boolean;
39
+ /**
40
+ * 是否加载中
41
+ *
42
+ * 加载状态下显示停止按钮
43
+ *
44
+ * @default false
45
+ */
46
+ loading?: boolean;
47
+ /**
48
+ * 是否自动聚焦
49
+ *
50
+ * @default false
51
+ */
52
+ autofocus?: boolean;
53
+ /**
54
+ * 移动端虚拟键盘回车键提示
55
+ *
56
+ * 用于自定义移动端虚拟键盘上回车键的显示文本或图标
57
+ *
58
+ * @default 'send'
59
+ */
60
+ enterkeyhint?: EnterKeyHint;
61
+ /**
62
+ * 输入模式
63
+ *
64
+ * - single: 单行模式
65
+ * - multiple: 多行模式
66
+ *
67
+ * @default 'single'
68
+ */
69
+ mode?: InputMode;
70
+ /**
71
+ * 自动调整高度
72
+ *
73
+ * - false: 不自动调整
74
+ * - true: 自动调整(默认 1-3 行)
75
+ * - { minRows, maxRows }: 自定义行数范围
76
+ *
77
+ * 仅在 mode === 'multiple' 时有效
78
+ *
79
+ * @default { minRows: 1, maxRows: 3 }
80
+ */
81
+ autoSize?: AutoSize;
82
+ /**
83
+ * 最大字符数
84
+ *
85
+ * @default Infinity
86
+ */
87
+ maxLength?: number;
88
+ /**
89
+ * 是否显示字数限制
90
+ *
91
+ * 仅在 maxLength 有值时有效
92
+ *
93
+ * @default false
94
+ */
95
+ showWordLimit?: boolean;
96
+ /**
97
+ * 是否显示清空按钮
98
+ *
99
+ * @default false
100
+ */
101
+ clearable?: boolean;
102
+ /**
103
+ * Tiptap 扩展配置
104
+ *
105
+ * 用于添加增强输入能力,如 Template、Mention、Suggestion 等
106
+ *
107
+ * @example 基础使用
108
+ * ```typescript
109
+ * import { Template } from '@tiny-robot/components/sender/extensions'
110
+ *
111
+ * <Sender :extensions="[Template]" />
112
+ * ```
113
+ *
114
+ * @example 带配置的扩展(响应式推荐)
115
+ * ```typescript
116
+ * import { Mention, Suggestion } from '@tiny-robot/components/sender/extensions'
117
+ *
118
+ * const mentions = ref([...])
119
+ * const suggestions = ref([...])
120
+ *
121
+ * const extensions = [
122
+ * Mention.configure({ items: mentions }),
123
+ * Suggestion.configure({ items: suggestions })
124
+ * ]
125
+ *
126
+ * <Sender :extensions="extensions" />
127
+ * ```
128
+ */
129
+ extensions?: Extension[] | any[];
130
+ /**
131
+ * 组件尺寸
132
+ *
133
+ * - normal: 正常尺寸(默认)
134
+ * - small: 紧凑模式,更小的字体、间距和图标
135
+ *
136
+ * @default 'normal'
137
+ */
138
+ size?: 'normal' | 'small';
139
+ /**
140
+ * 停止按钮文字
141
+ *
142
+ * @default '停止响应'
143
+ */
144
+ stopText?: string;
145
+ /**
146
+ * 默认操作按钮配置
147
+ *
148
+ * 用于统一配置默认按钮(Clear、Submit)的状态和提示
149
+ *
150
+ * @example 基础使用
151
+ * ```vue
152
+ * <Sender
153
+ * :actions-config="{
154
+ * submit: { disabled: !isValid, tooltip: '请完善表单' }
155
+ * }"
156
+ * />
157
+ * ```
158
+ *
159
+ * @example 动态配置
160
+ * ```vue
161
+ * <script setup>
162
+ * const defaultActions = computed(() => ({
163
+ * submit: {
164
+ * disabled: !canSubmit.value,
165
+ * tooltip: canSubmit.value ? '发送' : '请输入内容'
166
+ * },
167
+ * clear: { tooltip: '清空输入' }
168
+ * }))
169
+ * </script>
170
+ *
171
+ * <template>
172
+ * <Sender :actions-config="defaultActions" />
173
+ * </template>
174
+ * ```
175
+ *
176
+ * @default undefined
177
+ */
178
+ defaultActions?: DefaultActions;
179
+ /**
180
+ * 提交触发方式
181
+ *
182
+ * @default 'enter'
183
+ */
184
+ submitType?: SubmitTrigger;
185
+ }
186
+ /**
187
+ * Sender 组件 Emits
188
+ */
189
+ export interface SenderEmits {
190
+ /**
191
+ * 更新输入内容
192
+ *
193
+ * @param e - 事件名
194
+ * @param value - 新内容
195
+ */
196
+ (e: 'update:modelValue', value: string): void;
197
+ /**
198
+ * 提交内容(增强版)
199
+ *
200
+ * @param e - 事件名
201
+ * @param textContent - 提交的内容(纯文本,如 "帮我分析 @张三 的周报")
202
+ * @param structuredData - 结构化数据(可选)
203
+ *
204
+ * @example
205
+ * ```typescript
206
+ * function handleSubmit(text: string, data?: StructuredData) {
207
+ * console.log('纯文本:', text)
208
+ *
209
+ * if (data?.template) {
210
+ * // Template 场景
211
+ * console.log('模板数据:', data.template)
212
+ * }
213
+ *
214
+ * if (data?.mentions) {
215
+ * // Mention 场景
216
+ * console.log('提及的人:', data.mentions)
217
+ * }
218
+ * }
219
+ * ```
220
+ */
221
+ (e: 'submit', textContent: string, structuredData?: StructuredData): void;
222
+ /**
223
+ * 聚焦事件
224
+ *
225
+ * @param e - 事件名
226
+ * @param event - 原生事件
227
+ */
228
+ (e: 'focus', event: FocusEvent): void;
229
+ /**
230
+ * 失焦事件
231
+ *
232
+ * @param e - 事件名
233
+ * @param event - 原生事件
234
+ */
235
+ (e: 'blur', event: FocusEvent): void;
236
+ /**
237
+ * 清空事件
238
+ *
239
+ * @param e - 事件名
240
+ */
241
+ (e: 'clear'): void;
242
+ /**
243
+ * 取消事件
244
+ *
245
+ * 在 loading 状态下点击停止按钮时触发
246
+ * 用于取消正在进行的操作(如 AI 响应)
247
+ *
248
+ * @param e - 事件名
249
+ */
250
+ (e: 'cancel'): void;
251
+ /**
252
+ * 输入事件
253
+ *
254
+ * @param e - 事件名
255
+ * @param value - 当前内容
256
+ */
257
+ (e: 'input', value: string): void;
258
+ }
259
+ /**
260
+ * Sender 组件 Slots
261
+ */
262
+ export interface SenderSlots {
263
+ /**
264
+ * 头部插槽
265
+ */
266
+ header?: () => unknown;
267
+ /**
268
+ * 前缀插槽
269
+ */
270
+ prefix?: () => unknown;
271
+ /**
272
+ * 内容插槽
273
+ *
274
+ * @param props - 插槽属性
275
+ * @param props.editor - 编辑器实例
276
+ */
277
+ content?: (props: {
278
+ editor: unknown;
279
+ }) => unknown;
280
+ /**
281
+ * 单行模式内联操作按钮插槽
282
+ *
283
+ * @example
284
+ * ```vue
285
+ * <sender>
286
+ * <template #actions-inline="{ insert, focus, disabled }">
287
+ * <voice-input @result="insert" :disabled="disabled" />
288
+ * <file-upload @select="handleFiles" />
289
+ * </template>
290
+ * </sender>
291
+ * ```
292
+ */
293
+ 'actions-inline'?: (scope: SenderSlotScope) => unknown;
294
+ /**
295
+ * 底部插槽(多行模式)
296
+ */
297
+ footer?: (scope: SenderSlotScope) => unknown;
298
+ /**
299
+ * 底部右侧插槽(多行模式)
300
+ */
301
+ 'footer-right'?: (scope: SenderSlotScope) => unknown;
302
+ }
@@ -0,0 +1,90 @@
1
+ import { SenderProps } from './index.type';
2
+ declare const props: Readonly<{
3
+ modelValue: string;
4
+ defaultValue: string;
5
+ disabled: boolean;
6
+ loading: boolean;
7
+ autofocus: boolean;
8
+ maxLength: number;
9
+ showWordLimit: boolean;
10
+ clearable: boolean;
11
+ stopText: string;
12
+ defaultActions: import('./index.type').DefaultActions;
13
+ }> & {
14
+ readonly placeholder: string;
15
+ readonly mode: import('./index.type').InputMode;
16
+ readonly size: "small" | "normal";
17
+ readonly submitType: import('./index.type').SubmitTrigger;
18
+ readonly enterkeyhint: import('./index.type').EnterKeyHint;
19
+ readonly extensions: any[] | import('@tiptap/core').Extension<any, any>[];
20
+ readonly autoSize: import('./index.type').AutoSize;
21
+ } & {
22
+ readonly disabled: boolean;
23
+ readonly loading: boolean;
24
+ readonly autofocus: boolean;
25
+ readonly showWordLimit: boolean;
26
+ readonly clearable: boolean;
27
+ };
28
+ export type SenderPropsWithDefaults = typeof props;
29
+ declare function __VLS_template(): {
30
+ attrs: Partial<{}>;
31
+ slots: {
32
+ header?(_: {}): any;
33
+ header?(_: {}): any;
34
+ prefix?(_: {}): any;
35
+ prefix?(_: {}): any;
36
+ content?(_: {
37
+ editor: import('@tiptap/vue-3').Editor | undefined;
38
+ }): any;
39
+ content?(_: {
40
+ editor: import('vue').Ref<import('@tiptap/vue-3').Editor | undefined, import('@tiptap/vue-3').Editor | undefined>;
41
+ }): any;
42
+ 'actions-inline'?(_: {}): any;
43
+ footer?(_: {}): any;
44
+ 'footer-right'?(_: {}): any;
45
+ };
46
+ refs: {};
47
+ rootEl: HTMLDivElement;
48
+ };
49
+ type __VLS_TemplateResult = ReturnType<typeof __VLS_template>;
50
+ declare const __VLS_component: import('vue').DefineComponent<SenderProps, {
51
+ submit: () => void;
52
+ clear: () => void;
53
+ cancel: () => void;
54
+ focus: () => void;
55
+ blur: () => void;
56
+ setContent: (content: string) => void;
57
+ getContent: () => string;
58
+ editor: import('./index.type').SenderContext["editor"];
59
+ }, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {} & {
60
+ clear: () => any;
61
+ input: (value: string) => any;
62
+ blur: (event: FocusEvent) => any;
63
+ cancel: () => any;
64
+ focus: (event: FocusEvent) => any;
65
+ submit: (textContent: string, structuredData?: import('./index.type').StructuredData | undefined) => any;
66
+ "update:modelValue": (value: string) => any;
67
+ }, string, import('vue').PublicProps, Readonly<SenderProps> & Readonly<{
68
+ onClear?: (() => any) | undefined;
69
+ onInput?: ((value: string) => any) | undefined;
70
+ onBlur?: ((event: FocusEvent) => any) | undefined;
71
+ onCancel?: (() => any) | undefined;
72
+ onFocus?: ((event: FocusEvent) => any) | undefined;
73
+ onSubmit?: ((textContent: string, structuredData?: import('./index.type').StructuredData | undefined) => any) | undefined;
74
+ "onUpdate:modelValue"?: ((value: string) => any) | undefined;
75
+ }>, {
76
+ size: "normal" | "small";
77
+ placeholder: string;
78
+ mode: import('./index.type').InputMode;
79
+ enterkeyhint: import('./index.type').EnterKeyHint;
80
+ autoSize: import('./index.type').AutoSize;
81
+ extensions: import('@tiptap/core').Extension[] | any[];
82
+ submitType: import('./index.type').SubmitTrigger;
83
+ }, {}, {}, {}, string, import('vue').ComponentProvideOptions, false, {}, HTMLDivElement>;
84
+ declare const _default: __VLS_WithTemplateSlots<typeof __VLS_component, __VLS_TemplateResult["slots"]>;
85
+ export default _default;
86
+ type __VLS_WithTemplateSlots<T, S> = T & {
87
+ new (): {
88
+ $slots: S;
89
+ };
90
+ };
@@ -0,0 +1,239 @@
1
+ import { TooltipContent, TooltipPlacement } from '../../sender-actions/types/common';
2
+ import { MentionItem, MentionStructuredItem } from '../extensions/mention/types';
3
+ /**
4
+ * 输入模式
5
+ * - single: 单行模式,适用于简短输入
6
+ * - multiple: 多行模式,适用于长文本输入
7
+ */
8
+ export type InputMode = 'single' | 'multiple';
9
+ /**
10
+ * 提交触发方式
11
+ * - enter: Enter 键提交
12
+ * - ctrlEnter: Ctrl+Enter 提交
13
+ * - shiftEnter: Shift+Enter 提交
14
+ */
15
+ export type SubmitTrigger = 'enter' | 'ctrlEnter' | 'shiftEnter';
16
+ /**
17
+ * 移动端虚拟键盘回车键提示
18
+ *
19
+ * 用于自定义移动端虚拟键盘上回车键的显示文本或图标
20
+ *
21
+ * - `enter`: 插入换行
22
+ * - `done`: 完成
23
+ * - `go`: 前往
24
+ * - `next`: 下一项
25
+ * - `previous`: 上一项
26
+ * - `search`: 搜索
27
+ * - `send`: 发送(推荐用于聊天场景)
28
+ *
29
+ * @see https://developer.mozilla.org/en-US/docs/Web/HTML/Global_attributes/enterkeyhint
30
+ */
31
+ export type EnterKeyHint = 'enter' | 'done' | 'go' | 'next' | 'previous' | 'search' | 'send';
32
+ /**
33
+ * 选择器选项
34
+ */
35
+ export interface SelectOption {
36
+ /**
37
+ * 显示文本
38
+ */
39
+ label: string;
40
+ /**
41
+ * 选择后的值
42
+ */
43
+ value: string;
44
+ /**
45
+ * 自定义数据(可选)
46
+ */
47
+ data?: string;
48
+ }
49
+ /**
50
+ * 模板项(用户侧)
51
+ *
52
+ * 用户传入的模板数据格式
53
+ * 组件内部会转换为 Tiptap 节点格式
54
+ */
55
+ export type TemplateItem = {
56
+ /**
57
+ * 模板 ID,可选
58
+ * 如果不提供,组件会自动生成
59
+ */
60
+ id?: string;
61
+ /**
62
+ * 类型:普通文本
63
+ */
64
+ type: 'text';
65
+ /**
66
+ * 内容
67
+ */
68
+ content: string;
69
+ } | {
70
+ /**
71
+ * 模板 ID,可选
72
+ * 如果不提供,组件会自动生成
73
+ */
74
+ id?: string;
75
+ /**
76
+ * 类型:模板块(可编辑)
77
+ */
78
+ type: 'block';
79
+ /**
80
+ * 内容
81
+ */
82
+ content: string;
83
+ } | {
84
+ /**
85
+ * 模板 ID,可选
86
+ * 如果不提供,组件会自动生成
87
+ */
88
+ id?: string;
89
+ /**
90
+ * 类型:选择器
91
+ */
92
+ type: 'select';
93
+ /**
94
+ * 内容(选中的值)
95
+ */
96
+ content: string;
97
+ /**
98
+ * 占位文字(未选择时显示)
99
+ */
100
+ placeholder?: string;
101
+ /**
102
+ * 选项列表
103
+ */
104
+ options?: SelectOption[];
105
+ /**
106
+ * 当前选中的值
107
+ */
108
+ value?: string;
109
+ };
110
+ /**
111
+ * 提及项
112
+ *
113
+ * 用于 @ 提及功能的数据
114
+ *
115
+ * @deprecated 请从 extensions/mention 导入
116
+ * @see packages/components/src/sender/extensions/mention/types.ts
117
+ */
118
+ export type { MentionItem };
119
+ /**
120
+ * 结构化数据(联合类型)
121
+ *
122
+ * Submit 事件的第二个参数,根据使用的扩展直接返回对应的数据数组
123
+ *
124
+ * **设计理念**:
125
+ * - 第一个参数 `text`:纯文本内容,适用于简单场景
126
+ * - 第二个参数 `data`:结构化数据数组,直接使用无需解包
127
+ *
128
+ * **类型说明**:
129
+ * - `TemplateItem[]`: 使用 Template 扩展时返回(混合结构)
130
+ * - `MentionStructuredItem[]`: 使用 Mention 扩展时返回(混合结构)
131
+ *
132
+ * @example Template 场景
133
+ * ```typescript
134
+ * function handleSubmit(text: string, data?: StructuredData) {
135
+ * // text: "帮我分析 的周报"
136
+ * // data: [
137
+ * // { type: 'text', content: '帮我分析 ' },
138
+ * // { type: 'block', content: '张三' },
139
+ * // { type: 'text', content: ' 的周报' }
140
+ * // ]
141
+ *
142
+ * // 提取模板块(可编辑部分)
143
+ * if (data && data.some(item => item.type === 'block')) {
144
+ * const blocks = data.filter(item => item.type === 'block')
145
+ * console.log('模板块:', blocks)
146
+ * }
147
+ *
148
+ * // 提取选择器
149
+ * if (data && data.some(item => item.type === 'select')) {
150
+ * const selects = data.filter(item => item.type === 'select')
151
+ * console.log('选择器:', selects)
152
+ * }
153
+ * }
154
+ * ```
155
+ *
156
+ * @example Mention 场景
157
+ * ```typescript
158
+ * function handleSubmit(text: string, data?: StructuredData) {
159
+ * // text: "帮我分析 @张三 的周报"
160
+ * // data: [
161
+ * // { type: 'text', content: '帮我分析 ' },
162
+ * // { type: 'mention', content: '张三', value: '...' },
163
+ * // { type: 'text', content: ' 的周报' }
164
+ * // ]
165
+ *
166
+ * // 统一使用 content 属性
167
+ * const allContent = data?.map(item => item.content).join('')
168
+ * console.log('完整内容:', allContent)
169
+ *
170
+ * // 提取 mention(正确的类型守卫)
171
+ * if (data && data.some(item => item.type === 'mention')) {
172
+ * const mentions = data.filter(item => item.type === 'mention')
173
+ * console.log('提及的人:', mentions.map(m => m.content))
174
+ * console.log('关联值:', mentions.map(m => m.value))
175
+ * }
176
+ * }
177
+ * ```
178
+ */
179
+ export type StructuredData = TemplateItem[] | MentionStructuredItem[];
180
+ /**
181
+ * 默认操作按钮配置
182
+ *
183
+ * 用于统一配置 Sender 的默认按钮(Clear、Submit)
184
+ *
185
+ * @example
186
+ * ```typescript
187
+ * const defaultActions = {
188
+ * submit: { disabled: !isValid, tooltip: '请完善表单' },
189
+ * clear: { tooltip: '清空内容' }
190
+ * }
191
+ * ```
192
+ */
193
+ export interface DefaultActions {
194
+ /**
195
+ * 提交按钮配置
196
+ */
197
+ submit?: {
198
+ /**
199
+ * 是否禁用
200
+ */
201
+ disabled?: boolean;
202
+ /**
203
+ * 工具提示
204
+ * - string: 简单文本
205
+ * - () => string | VNode: 渲染函数,支持复杂内容
206
+ */
207
+ tooltip?: TooltipContent;
208
+ /**
209
+ * Tooltip 位置
210
+ */
211
+ tooltipPlacement?: TooltipPlacement;
212
+ };
213
+ /**
214
+ * 清空按钮配置
215
+ */
216
+ clear?: {
217
+ /**
218
+ * 是否禁用
219
+ */
220
+ disabled?: boolean;
221
+ /**
222
+ * 工具提示
223
+ * - string: 简单文本
224
+ * - () => string | VNode: 渲染函数,支持复杂内容
225
+ */
226
+ tooltip?: TooltipContent;
227
+ /**
228
+ * Tooltip 位置
229
+ */
230
+ tooltipPlacement?: TooltipPlacement;
231
+ };
232
+ }
233
+ /**
234
+ * 自动高度配置
235
+ */
236
+ export type AutoSize = boolean | {
237
+ minRows: number;
238
+ maxRows: number;
239
+ };
@@ -0,0 +1,68 @@
1
+ import { SenderSuggestionItem } from '../extensions/suggestion/types';
2
+ /**
3
+ * WordCounter Props
4
+ */
5
+ export interface WordCounterProps {
6
+ /**
7
+ * 当前字符数
8
+ */
9
+ current: number;
10
+ /**
11
+ * 最大字符数
12
+ */
13
+ max: number;
14
+ /**
15
+ * 是否超出限制
16
+ */
17
+ isOverLimit: boolean;
18
+ }
19
+ /**
20
+ * SuggestionList Props
21
+ */
22
+ export interface SuggestionListProps {
23
+ /**
24
+ * 是否显示
25
+ */
26
+ show: boolean;
27
+ /**
28
+ * 建议列表
29
+ */
30
+ suggestions: SenderSuggestionItem[];
31
+ /**
32
+ * 键盘激活索引
33
+ */
34
+ activeKeyboardIndex: number;
35
+ /**
36
+ * 鼠标激活索引
37
+ */
38
+ activeMouseIndex: number;
39
+ /**
40
+ * 输入值
41
+ */
42
+ inputValue: string;
43
+ /**
44
+ * 弹窗样式
45
+ */
46
+ popupStyle?: Record<string, string | number>;
47
+ }
48
+ /**
49
+ * SuggestionList Emits
50
+ */
51
+ export interface SuggestionListEmits {
52
+ /**
53
+ * 选择建议
54
+ *
55
+ * @param suggestion - 建议内容
56
+ */
57
+ (e: 'select', suggestion: string): void;
58
+ /**
59
+ * 鼠标进入
60
+ *
61
+ * @param index - 索引
62
+ */
63
+ (e: 'mouse-enter', index: number): void;
64
+ /**
65
+ * 鼠标离开
66
+ */
67
+ (e: 'mouse-leave'): void;
68
+ }