@opentiny/tiny-robot 0.5.0 → 0.5.1-alpha.1

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 (269) 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.type.d.ts +70 -0
  32. package/dist/attachments/index.vue.d.ts +27 -0
  33. package/dist/attachments/utils.d.ts +3 -0
  34. package/dist/base-popper/components/Popper.vue.d.ts +28 -0
  35. package/dist/base-popper/index.d.ts +2 -0
  36. package/dist/base-popper/index.vue.d.ts +41 -0
  37. package/dist/bubble/Bubble.vue.d.ts +47 -0
  38. package/dist/bubble/BubbleBoxWrapper.vue.d.ts +22 -0
  39. package/dist/bubble/BubbleContentWrapper.vue.d.ts +22 -0
  40. package/dist/bubble/BubbleItem.vue.d.ts +44 -0
  41. package/dist/bubble/BubbleList.vue.d.ts +43 -0
  42. package/dist/bubble/BubbleProvider.vue.d.ts +18 -0
  43. package/dist/bubble/composables/index.d.ts +11 -0
  44. package/dist/bubble/composables/useBubbleBoxRenderer.d.ts +18 -0
  45. package/dist/bubble/composables/useBubbleContentRenderer.d.ts +18 -0
  46. package/dist/bubble/composables/useBubbleEvent.d.ts +3 -0
  47. package/dist/bubble/composables/useBubbleStateChange.d.ts +1 -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 +185 -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 +305 -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 +13904 -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.type.d.ts +42 -0
  100. package/dist/dropdown-menu/index.vue.d.ts +217 -0
  101. package/dist/feedback/components/SourceList.vue.d.ts +11 -0
  102. package/dist/feedback/components/index.d.ts +1 -0
  103. package/dist/feedback/index.d.ts +7 -0
  104. package/dist/feedback/index.type.d.ts +25 -0
  105. package/dist/feedback/index.vue.d.ts +13 -0
  106. package/dist/flow-layout-buttons/index.d.ts +7 -0
  107. package/dist/flow-layout-buttons/index.type.d.ts +35 -0
  108. package/dist/flow-layout-buttons/index.vue.d.ts +22 -0
  109. package/dist/history/components/Empty.vue.d.ts +7 -0
  110. package/dist/history/components/MenuList.vue.d.ts +24 -0
  111. package/dist/history/composables/useRenameEditor.d.ts +22 -0
  112. package/dist/history/constants.d.ts +1 -0
  113. package/dist/history/index.d.ts +7 -0
  114. package/dist/history/index.type.d.ts +33 -0
  115. package/dist/history/index.vue.d.ts +18 -0
  116. package/dist/icon-button/index.d.ts +7 -0
  117. package/dist/icon-button/index.type.d.ts +7 -0
  118. package/dist/icon-button/index.vue.d.ts +6 -0
  119. package/dist/index.d.ts +51 -5517
  120. package/dist/index.js +1 -1
  121. package/dist/layout/Layout.vue.d.ts +246 -0
  122. package/dist/layout/LayoutAsideToggle.vue.d.ts +20 -0
  123. package/dist/layout/LayoutProxyScrollbar.vue.d.ts +6 -0
  124. package/dist/layout/components/AsideContent.vue.d.ts +35 -0
  125. package/dist/layout/components/AsideResizeTrigger.vue.d.ts +20 -0
  126. package/dist/layout/components/FloatingDragBar.vue.d.ts +18 -0
  127. package/dist/layout/components/FloatingResizeTrigger.vue.d.ts +17 -0
  128. package/dist/layout/components/FloatingResizeTriggers.vue.d.ts +14 -0
  129. package/dist/layout/components/LayoutSurface.vue.d.ts +41 -0
  130. package/dist/layout/composables/useLayoutAsideStates.d.ts +21 -0
  131. package/dist/layout/composables/useLayoutContext.d.ts +4 -0
  132. package/dist/layout/composables/usePointerDrag.d.ts +19 -0
  133. package/dist/layout/index.d.ts +22 -0
  134. package/dist/layout/index.type.d.ts +111 -0
  135. package/dist/layout/internal.type.d.ts +43 -0
  136. package/dist/layout/utils/asideEventEmitters.d.ts +6 -0
  137. package/dist/layout/utils/asidePresets.d.ts +5 -0
  138. package/dist/layout/utils/cssLength.d.ts +2 -0
  139. package/dist/layout/utils/domInteraction.d.ts +1 -0
  140. package/dist/layout/utils/number.d.ts +1 -0
  141. package/dist/layout/utils/surfaceGeometry.d.ts +87 -0
  142. package/dist/layout/utils/surfaceResize.d.ts +10 -0
  143. package/dist/mcp-add-form/components/CodeEditor.vue.d.ts +9 -0
  144. package/dist/mcp-add-form/components/FormEditor.vue.d.ts +10 -0
  145. package/dist/mcp-add-form/components/index.d.ts +2 -0
  146. package/dist/mcp-add-form/index.d.ts +7 -0
  147. package/dist/mcp-add-form/index.type.d.ts +19 -0
  148. package/dist/mcp-add-form/index.vue.d.ts +13 -0
  149. package/dist/mcp-server-picker/components/NoData.vue.d.ts +7 -0
  150. package/dist/mcp-server-picker/components/PluginCard.vue.d.ts +40 -0
  151. package/dist/mcp-server-picker/components/PluginModal.vue.d.ts +15 -0
  152. package/dist/mcp-server-picker/components/index.d.ts +3 -0
  153. package/dist/mcp-server-picker/index.d.ts +7 -0
  154. package/dist/mcp-server-picker/index.type.d.ts +99 -0
  155. package/dist/mcp-server-picker/index.vue.d.ts +71 -0
  156. package/dist/prompts/index.d.ts +12 -0
  157. package/dist/prompts/index.type.d.ts +59 -0
  158. package/dist/prompts/prompt.vue.d.ts +5 -0
  159. package/dist/prompts/prompts.vue.d.ts +20 -0
  160. package/dist/sender/components/editor-content/index.vue.d.ts +4 -0
  161. package/dist/sender/components/footer/index.vue.d.ts +38 -0
  162. package/dist/sender/components/layouts/MultiLineLayout.vue.d.ts +43 -0
  163. package/dist/sender/components/layouts/SingleLineLayout.vue.d.ts +32 -0
  164. package/dist/sender/composables/index.d.ts +7 -0
  165. package/dist/sender/composables/useAutoSize.d.ts +5 -0
  166. package/dist/sender/composables/useEditor.d.ts +13 -0
  167. package/dist/sender/composables/useKeyboardShortcuts.d.ts +7 -0
  168. package/dist/sender/composables/useModeSwitch.d.ts +4 -0
  169. package/dist/sender/composables/useSenderCore.d.ts +31 -0
  170. package/dist/sender/composables/useSlotScope.d.ts +10 -0
  171. package/dist/sender/context/index.d.ts +6 -0
  172. package/dist/sender/context/types.d.ts +7 -0
  173. package/dist/sender/extensions/constants.d.ts +94 -0
  174. package/dist/sender/extensions/index.d.ts +12 -0
  175. package/dist/sender/extensions/mention/commands.d.ts +20 -0
  176. package/dist/sender/extensions/mention/components/mention-list.vue.d.ts +18 -0
  177. package/dist/sender/extensions/mention/components/mention-view.vue.d.ts +19 -0
  178. package/dist/sender/extensions/mention/extension.d.ts +6 -0
  179. package/dist/sender/extensions/mention/index.d.ts +22 -0
  180. package/dist/sender/extensions/mention/plugin.d.ts +16 -0
  181. package/dist/sender/extensions/mention/types.d.ts +126 -0
  182. package/dist/sender/extensions/mention/utils.d.ts +34 -0
  183. package/dist/sender/extensions/suggestion/extension.d.ts +8 -0
  184. package/dist/sender/extensions/suggestion/index.d.ts +20 -0
  185. package/dist/sender/extensions/suggestion/plugin.d.ts +21 -0
  186. package/dist/sender/extensions/suggestion/suggestion-list.vue.d.ts +46 -0
  187. package/dist/sender/extensions/suggestion/types.d.ts +254 -0
  188. package/dist/sender/extensions/suggestion/utils/filter.d.ts +29 -0
  189. package/dist/sender/extensions/suggestion/utils/highlight.d.ts +73 -0
  190. package/dist/sender/extensions/template/block/extension.d.ts +6 -0
  191. package/dist/sender/extensions/template/block/plugins.d.ts +13 -0
  192. package/dist/sender/extensions/template/block/template-block-view.vue.d.ts +14 -0
  193. package/dist/sender/extensions/template/commands.d.ts +31 -0
  194. package/dist/sender/extensions/template/extension.d.ts +6 -0
  195. package/dist/sender/extensions/template/index.d.ts +21 -0
  196. package/dist/sender/extensions/template/select/dropdown-manager.d.ts +23 -0
  197. package/dist/sender/extensions/template/select/extension.d.ts +5 -0
  198. package/dist/sender/extensions/template/select/plugins.d.ts +34 -0
  199. package/dist/sender/extensions/template/select/template-select-view.vue.d.ts +20 -0
  200. package/dist/sender/extensions/template/types.d.ts +100 -0
  201. package/dist/sender/extensions/template/utils.d.ts +20 -0
  202. package/dist/sender/extensions/utils/id-generator.d.ts +16 -0
  203. package/dist/sender/extensions/utils/index.d.ts +7 -0
  204. package/dist/sender/extensions/utils/keyboard.d.ts +49 -0
  205. package/dist/sender/extensions/utils/position.d.ts +25 -0
  206. package/dist/sender/index.d.ts +139 -0
  207. package/dist/sender/index.type.d.ts +311 -0
  208. package/dist/sender/index.vue.d.ts +93 -0
  209. package/dist/sender/types/base.d.ts +239 -0
  210. package/dist/sender/types/components.d.ts +68 -0
  211. package/dist/sender/types/composables.d.ts +122 -0
  212. package/dist/sender/types/context.d.ts +138 -0
  213. package/dist/sender/types/slots.d.ts +67 -0
  214. package/dist/sender/utils/countGraphemes.d.ts +1 -0
  215. package/dist/sender-actions/action-button/index.vue.d.ts +23 -0
  216. package/dist/sender-actions/clear-button/index.vue.d.ts +2 -0
  217. package/dist/sender-actions/clear-button/useClearButtonState.d.ts +6 -0
  218. package/dist/sender-actions/default-actions/index.vue.d.ts +17 -0
  219. package/dist/sender-actions/index.d.ts +21 -0
  220. package/dist/sender-actions/index.type.d.ts +7 -0
  221. package/dist/sender-actions/submit-button/index.vue.d.ts +2 -0
  222. package/dist/sender-actions/types/common.d.ts +40 -0
  223. package/dist/sender-actions/types/index.d.ts +5 -0
  224. package/dist/sender-actions/types/tooltip.d.ts +7 -0
  225. package/dist/sender-actions/upload-button/index.type.d.ts +57 -0
  226. package/dist/sender-actions/upload-button/index.vue.d.ts +16 -0
  227. package/dist/sender-actions/utils/tooltip.d.ts +8 -0
  228. package/dist/sender-actions/voice-button/index.type.d.ts +78 -0
  229. package/dist/sender-actions/voice-button/index.vue.d.ts +43 -0
  230. package/dist/sender-actions/voice-button/speech.types.d.ts +40 -0
  231. package/dist/sender-actions/voice-button/useSpeechHandler.d.ts +10 -0
  232. package/dist/sender-actions/voice-button/webSpeechHandler.d.ts +40 -0
  233. package/dist/sender-actions/word-counter/index.vue.d.ts +2 -0
  234. package/dist/sender-compat/index.d.ts +7 -0
  235. package/dist/sender-compat/index.type.d.ts +91 -0
  236. package/dist/sender-compat/index.vue.d.ts +538 -0
  237. package/dist/shared/composables/createTeleport.d.ts +2 -0
  238. package/dist/shared/composables/index.d.ts +6 -0
  239. package/dist/shared/composables/useAutoScroll.d.ts +25 -0
  240. package/dist/shared/composables/useControllableState.d.ts +20 -0
  241. package/dist/shared/composables/useSlotRefs.d.ts +12 -0
  242. package/dist/shared/composables/useTeleportTarget.d.ts +11 -0
  243. package/dist/shared/composables/useTouchDevice.d.ts +3 -0
  244. package/dist/shared/utils.d.ts +7 -0
  245. package/dist/style.css +1 -1
  246. package/dist/suggestion-pills/components/PillButton.vue.d.ts +16 -0
  247. package/dist/suggestion-pills/components/index.d.ts +1 -0
  248. package/dist/suggestion-pills/index.d.ts +13 -0
  249. package/dist/suggestion-pills/index.type.d.ts +45 -0
  250. package/dist/suggestion-pills/index.vue.d.ts +44 -0
  251. package/dist/suggestion-popover/components/Backdrop.vue.d.ts +5 -0
  252. package/dist/suggestion-popover/components/Header.vue.d.ts +4 -0
  253. package/dist/suggestion-popover/components/Loading.vue.d.ts +17 -0
  254. package/dist/suggestion-popover/components/NoData.vue.d.ts +17 -0
  255. package/dist/suggestion-popover/components/Tooltip.vue.d.ts +19 -0
  256. package/dist/suggestion-popover/index.d.ts +7 -0
  257. package/dist/suggestion-popover/index.type.d.ts +80 -0
  258. package/dist/suggestion-popover/index.vue.d.ts +262 -0
  259. package/dist/theme-provider/constants.d.ts +6 -0
  260. package/dist/theme-provider/index.d.ts +9 -0
  261. package/dist/theme-provider/index.js +32 -41
  262. package/dist/theme-provider/index.type.d.ts +18 -0
  263. package/dist/theme-provider/index.vue.d.ts +32 -0
  264. package/dist/theme-provider/useTheme.d.ts +11 -0
  265. package/dist/useTheme.js +22 -0
  266. package/dist/welcome/index.d.ts +7 -0
  267. package/dist/welcome/index.type.d.ts +10 -0
  268. package/dist/welcome/index.vue.d.ts +18 -0
  269. package/package.json +21 -2
@@ -0,0 +1,49 @@
1
+ import { KEYBOARD_KEYS } from '../constants';
2
+ /**
3
+ * 键盘按键类型
4
+ */
5
+ export type KeyboardKey = keyof typeof KEYBOARD_KEYS;
6
+ /**
7
+ * 检查是否按下指定按键
8
+ *
9
+ * @param event - 键盘事件
10
+ * @param key - 按键名称
11
+ * @returns 是否按下指定按键
12
+ *
13
+ * @example
14
+ * if (isKey(event, 'ENTER')) { ... }
15
+ * if (isKey(event, 'ARROW_UP')) { ... }
16
+ */
17
+ export declare const isKey: (event: KeyboardEvent, key: KeyboardKey) => boolean;
18
+ /**
19
+ * 检查是否按下多个按键中的任意一个
20
+ *
21
+ * @param event - 键盘事件
22
+ * @param keys - 按键名称数组
23
+ * @returns 是否按下指定按键之一
24
+ *
25
+ * @example
26
+ * if (isAnyKey(event, ['ARROW_UP', 'ARROW_DOWN'])) { ... }
27
+ * if (isAnyKey(event, ['ENTER', 'TAB'])) { ... }
28
+ */
29
+ export declare const isAnyKey: (event: KeyboardEvent, keys: KeyboardKey[]) => boolean;
30
+ /**
31
+ * 检查是否按下方向键
32
+ *
33
+ * @param event - 键盘事件
34
+ * @returns 是否按下方向键
35
+ *
36
+ * @example
37
+ * if (isArrowKey(event)) { ... }
38
+ */
39
+ export declare const isArrowKey: (event: KeyboardEvent) => boolean;
40
+ /**
41
+ * 检查是否按下删除键(Backspace 或 Delete)
42
+ *
43
+ * @param event - 键盘事件
44
+ * @returns 是否按下删除键
45
+ *
46
+ * @example
47
+ * if (isDeleteKey(event)) { ... }
48
+ */
49
+ export declare const isDeleteKey: (event: KeyboardEvent) => boolean;
@@ -0,0 +1,25 @@
1
+ import { Selection } from '@tiptap/pm/state';
2
+ /**
3
+ * 查找触发字符的位置和查询文本
4
+ *
5
+ * 用于 mention 和 suggestion 扩展
6
+ *
7
+ * @param selection - 当前光标位置
8
+ * @param char - 触发字符
9
+ * @param allowSpaces - 是否允许空格
10
+ * @returns 触发范围和查询文本,未找到返回 null
11
+ *
12
+ * @example
13
+ * const result = findTextRange(selection, '@', false)
14
+ * if (result) {
15
+ * console.log(result.range) // { from: 10, to: 20 }
16
+ * console.log(result.query) // 'user'
17
+ * }
18
+ */
19
+ export declare function findTextRange(selection: Selection, char: string, allowSpaces?: boolean): {
20
+ range: {
21
+ from: number;
22
+ to: number;
23
+ };
24
+ query: string;
25
+ } | null;
@@ -0,0 +1,139 @@
1
+ import { App } from 'vue';
2
+ import { mention, suggestion, template } from './extensions';
3
+ declare const Sender: {
4
+ new (...args: any[]): import('vue').CreateComponentPublicInstanceWithMixins<Readonly<import('./index.type').SenderProps> & Readonly<{
5
+ onClear?: (() => any) | undefined;
6
+ onInput?: ((value: string) => any) | undefined;
7
+ onBlur?: ((event: FocusEvent) => any) | undefined;
8
+ onCancel?: (() => any) | undefined;
9
+ onFocus?: ((event: FocusEvent) => any) | undefined;
10
+ onSubmit?: ((textContent: string, structuredData?: import('./index.type').StructuredData | undefined) => any) | undefined;
11
+ "onUpdate:modelValue"?: ((value: string) => any) | undefined;
12
+ }>, {
13
+ submit: () => void;
14
+ clear: () => void;
15
+ cancel: () => void;
16
+ focus: () => void;
17
+ blur: () => void;
18
+ setContent: (content: string) => void;
19
+ getContent: () => string;
20
+ editor: import('./index.type').SenderContext["editor"];
21
+ }, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {} & {
22
+ clear: () => any;
23
+ input: (value: string) => any;
24
+ blur: (event: FocusEvent) => any;
25
+ cancel: () => any;
26
+ focus: (event: FocusEvent) => any;
27
+ submit: (textContent: string, structuredData?: import('./index.type').StructuredData | undefined) => any;
28
+ "update:modelValue": (value: string) => any;
29
+ }, import('vue').PublicProps, {
30
+ size: "normal" | "small";
31
+ placeholder: string;
32
+ mode: import('./index.type').InputMode;
33
+ enterkeyhint: import('./index.type').EnterKeyHint;
34
+ autoSize: import('./index.type').AutoSize;
35
+ hasExternalContent: boolean;
36
+ extensions: import('@tiptap/core').Extension[] | any[];
37
+ submitType: import('./index.type').SubmitTrigger;
38
+ }, false, {}, {}, import('vue').GlobalComponents, import('vue').GlobalDirectives, string, {}, HTMLDivElement, import('vue').ComponentProvideOptions, {
39
+ P: {};
40
+ B: {};
41
+ D: {};
42
+ C: {};
43
+ M: {};
44
+ Defaults: {};
45
+ }, Readonly<import('./index.type').SenderProps> & Readonly<{
46
+ onClear?: (() => any) | undefined;
47
+ onInput?: ((value: string) => any) | undefined;
48
+ onBlur?: ((event: FocusEvent) => any) | undefined;
49
+ onCancel?: (() => any) | undefined;
50
+ onFocus?: ((event: FocusEvent) => any) | undefined;
51
+ onSubmit?: ((textContent: string, structuredData?: import('./index.type').StructuredData | undefined) => any) | undefined;
52
+ "onUpdate:modelValue"?: ((value: string) => any) | undefined;
53
+ }>, {
54
+ submit: () => void;
55
+ clear: () => void;
56
+ cancel: () => void;
57
+ focus: () => void;
58
+ blur: () => void;
59
+ setContent: (content: string) => void;
60
+ getContent: () => string;
61
+ editor: import('./index.type').SenderContext["editor"];
62
+ }, {}, {}, {}, {
63
+ size: "normal" | "small";
64
+ placeholder: string;
65
+ mode: import('./index.type').InputMode;
66
+ enterkeyhint: import('./index.type').EnterKeyHint;
67
+ autoSize: import('./index.type').AutoSize;
68
+ hasExternalContent: boolean;
69
+ extensions: import('@tiptap/core').Extension[] | any[];
70
+ submitType: import('./index.type').SubmitTrigger;
71
+ }>;
72
+ __isFragment?: never;
73
+ __isTeleport?: never;
74
+ __isSuspense?: never;
75
+ } & import('vue').ComponentOptionsBase<Readonly<import('./index.type').SenderProps> & Readonly<{
76
+ onClear?: (() => any) | undefined;
77
+ onInput?: ((value: string) => any) | undefined;
78
+ onBlur?: ((event: FocusEvent) => any) | undefined;
79
+ onCancel?: (() => any) | undefined;
80
+ onFocus?: ((event: FocusEvent) => any) | undefined;
81
+ onSubmit?: ((textContent: string, structuredData?: import('./index.type').StructuredData | undefined) => any) | undefined;
82
+ "onUpdate:modelValue"?: ((value: string) => any) | undefined;
83
+ }>, {
84
+ submit: () => void;
85
+ clear: () => void;
86
+ cancel: () => void;
87
+ focus: () => void;
88
+ blur: () => void;
89
+ setContent: (content: string) => void;
90
+ getContent: () => string;
91
+ editor: import('./index.type').SenderContext["editor"];
92
+ }, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {} & {
93
+ clear: () => any;
94
+ input: (value: string) => any;
95
+ blur: (event: FocusEvent) => any;
96
+ cancel: () => any;
97
+ focus: (event: FocusEvent) => any;
98
+ submit: (textContent: string, structuredData?: import('./index.type').StructuredData | undefined) => any;
99
+ "update:modelValue": (value: string) => any;
100
+ }, string, {
101
+ size: "normal" | "small";
102
+ placeholder: string;
103
+ mode: import('./index.type').InputMode;
104
+ enterkeyhint: import('./index.type').EnterKeyHint;
105
+ autoSize: import('./index.type').AutoSize;
106
+ hasExternalContent: boolean;
107
+ extensions: import('@tiptap/core').Extension[] | any[];
108
+ submitType: import('./index.type').SubmitTrigger;
109
+ }, {}, string, {}, import('vue').GlobalComponents, import('vue').GlobalDirectives, string, import('vue').ComponentProvideOptions> & import('vue').VNodeProps & import('vue').AllowedComponentProps & import('vue').ComponentCustomProps & (new () => {
110
+ $slots: {
111
+ header?(_: {}): any;
112
+ header?(_: {}): any;
113
+ prefix?(_: {}): any;
114
+ prefix?(_: {}): any;
115
+ content?(_: {
116
+ editor: import('@tiptap/vue-3').Editor | undefined;
117
+ }): any;
118
+ content?(_: {
119
+ editor: import('vue').Ref<import('@tiptap/vue-3').Editor | undefined, import('@tiptap/vue-3').Editor | undefined>;
120
+ }): any;
121
+ 'actions-inline'?(_: {}): any;
122
+ footer?(_: {}): any;
123
+ 'footer-right'?(_: {}): any;
124
+ };
125
+ }) & {
126
+ install: <T>(app: App<T>) => void;
127
+ Mention: import('@tiptap/core').Node<import('./extensions').MentionOptions, any>;
128
+ Suggestion: import('@tiptap/core').Extension<import('./index.type').SuggestionOptions, any>;
129
+ Template: import('@tiptap/core').Extension<import('./extensions').TemplateOptions, any>;
130
+ mention: typeof mention;
131
+ suggestion: typeof suggestion;
132
+ template: typeof template;
133
+ };
134
+ export default Sender;
135
+ export type { SenderProps, SenderEmits, SenderSlots, SenderContext, UseEditorReturn, UseModeSwitchReturn, UseSuggestionReturn, UseKeyboardShortcutsReturn, TemplateItem, MentionItem, DefaultActions, } from './index.type';
136
+ export { useSenderContext } from './context';
137
+ export type { TemplateAttrs, TemplateOptions } from './extensions/template';
138
+ export type { MentionAttrs, MentionOptions } from './extensions/mention';
139
+ export type { SenderSuggestionItem, SuggestionOptions, SuggestionState, SuggestionTextPart, HighlightFunction, } from './extensions/suggestion';
@@ -0,0 +1,311 @@
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
+ * 是否存在外部可提交内容
104
+ *
105
+ * 用于附件、图片、文件列表等不写入编辑器文本的内容场景。
106
+ * 当编辑器文本为空但该值为 true 时,Sender 仍会认为存在可提交内容。
107
+ *
108
+ * @default false
109
+ */
110
+ hasExternalContent?: boolean;
111
+ /**
112
+ * Tiptap 扩展配置
113
+ *
114
+ * 用于添加增强输入能力,如 Template、Mention、Suggestion 等
115
+ *
116
+ * @example 基础使用
117
+ * ```typescript
118
+ * import { Template } from '@tiny-robot/components/sender/extensions'
119
+ *
120
+ * <Sender :extensions="[Template]" />
121
+ * ```
122
+ *
123
+ * @example 带配置的扩展(响应式推荐)
124
+ * ```typescript
125
+ * import { Mention, Suggestion } from '@tiny-robot/components/sender/extensions'
126
+ *
127
+ * const mentions = ref([...])
128
+ * const suggestions = ref([...])
129
+ *
130
+ * const extensions = [
131
+ * Mention.configure({ items: mentions }),
132
+ * Suggestion.configure({ items: suggestions })
133
+ * ]
134
+ *
135
+ * <Sender :extensions="extensions" />
136
+ * ```
137
+ */
138
+ extensions?: Extension[] | any[];
139
+ /**
140
+ * 组件尺寸
141
+ *
142
+ * - normal: 正常尺寸(默认)
143
+ * - small: 紧凑模式,更小的字体、间距和图标
144
+ *
145
+ * @default 'normal'
146
+ */
147
+ size?: 'normal' | 'small';
148
+ /**
149
+ * 停止按钮文字
150
+ *
151
+ * @default '停止响应'
152
+ */
153
+ stopText?: string;
154
+ /**
155
+ * 默认操作按钮配置
156
+ *
157
+ * 用于统一配置默认按钮(Clear、Submit)的状态和提示
158
+ *
159
+ * @example 基础使用
160
+ * ```vue
161
+ * <Sender
162
+ * :actions-config="{
163
+ * submit: { disabled: !isValid, tooltip: '请完善表单' }
164
+ * }"
165
+ * />
166
+ * ```
167
+ *
168
+ * @example 动态配置
169
+ * ```vue
170
+ * <script setup>
171
+ * const defaultActions = computed(() => ({
172
+ * submit: {
173
+ * disabled: !canSubmit.value,
174
+ * tooltip: canSubmit.value ? '发送' : '请输入内容'
175
+ * },
176
+ * clear: { tooltip: '清空输入' }
177
+ * }))
178
+ * </script>
179
+ *
180
+ * <template>
181
+ * <Sender :actions-config="defaultActions" />
182
+ * </template>
183
+ * ```
184
+ *
185
+ * @default undefined
186
+ */
187
+ defaultActions?: DefaultActions;
188
+ /**
189
+ * 提交触发方式
190
+ *
191
+ * @default 'enter'
192
+ */
193
+ submitType?: SubmitTrigger;
194
+ }
195
+ /**
196
+ * Sender 组件 Emits
197
+ */
198
+ export interface SenderEmits {
199
+ /**
200
+ * 更新输入内容
201
+ *
202
+ * @param e - 事件名
203
+ * @param value - 新内容
204
+ */
205
+ (e: 'update:modelValue', value: string): void;
206
+ /**
207
+ * 提交内容(增强版)
208
+ *
209
+ * @param e - 事件名
210
+ * @param textContent - 提交的内容(纯文本,如 "帮我分析 @张三 的周报")
211
+ * @param structuredData - 结构化数据(可选)
212
+ *
213
+ * @example
214
+ * ```typescript
215
+ * function handleSubmit(text: string, data?: StructuredData) {
216
+ * console.log('纯文本:', text)
217
+ *
218
+ * if (data?.template) {
219
+ * // Template 场景
220
+ * console.log('模板数据:', data.template)
221
+ * }
222
+ *
223
+ * if (data?.mentions) {
224
+ * // Mention 场景
225
+ * console.log('提及的人:', data.mentions)
226
+ * }
227
+ * }
228
+ * ```
229
+ */
230
+ (e: 'submit', textContent: string, structuredData?: StructuredData): void;
231
+ /**
232
+ * 聚焦事件
233
+ *
234
+ * @param e - 事件名
235
+ * @param event - 原生事件
236
+ */
237
+ (e: 'focus', event: FocusEvent): void;
238
+ /**
239
+ * 失焦事件
240
+ *
241
+ * @param e - 事件名
242
+ * @param event - 原生事件
243
+ */
244
+ (e: 'blur', event: FocusEvent): void;
245
+ /**
246
+ * 清空事件
247
+ *
248
+ * @param e - 事件名
249
+ */
250
+ (e: 'clear'): void;
251
+ /**
252
+ * 取消事件
253
+ *
254
+ * 在 loading 状态下点击停止按钮时触发
255
+ * 用于取消正在进行的操作(如 AI 响应)
256
+ *
257
+ * @param e - 事件名
258
+ */
259
+ (e: 'cancel'): void;
260
+ /**
261
+ * 输入事件
262
+ *
263
+ * @param e - 事件名
264
+ * @param value - 当前内容
265
+ */
266
+ (e: 'input', value: string): void;
267
+ }
268
+ /**
269
+ * Sender 组件 Slots
270
+ */
271
+ export interface SenderSlots {
272
+ /**
273
+ * 头部插槽
274
+ */
275
+ header?: () => unknown;
276
+ /**
277
+ * 前缀插槽
278
+ */
279
+ prefix?: () => unknown;
280
+ /**
281
+ * 内容插槽
282
+ *
283
+ * @param props - 插槽属性
284
+ * @param props.editor - 编辑器实例
285
+ */
286
+ content?: (props: {
287
+ editor: unknown;
288
+ }) => unknown;
289
+ /**
290
+ * 单行模式内联操作按钮插槽
291
+ *
292
+ * @example
293
+ * ```vue
294
+ * <sender>
295
+ * <template #actions-inline="{ insert, focus, disabled }">
296
+ * <voice-input @result="insert" :disabled="disabled" />
297
+ * <file-upload @select="handleFiles" />
298
+ * </template>
299
+ * </sender>
300
+ * ```
301
+ */
302
+ 'actions-inline'?: (scope: SenderSlotScope) => unknown;
303
+ /**
304
+ * 底部插槽(多行模式)
305
+ */
306
+ footer?: (scope: SenderSlotScope) => unknown;
307
+ /**
308
+ * 底部右侧插槽(多行模式)
309
+ */
310
+ 'footer-right'?: (scope: SenderSlotScope) => unknown;
311
+ }
@@ -0,0 +1,93 @@
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 hasExternalContent: boolean;
20
+ readonly extensions: any[] | import('@tiptap/core').Extension<any, any>[];
21
+ readonly autoSize: import('./index.type').AutoSize;
22
+ } & {
23
+ readonly disabled: boolean;
24
+ readonly loading: boolean;
25
+ readonly autofocus: boolean;
26
+ readonly showWordLimit: boolean;
27
+ readonly clearable: boolean;
28
+ readonly hasExternalContent: boolean;
29
+ };
30
+ export type SenderPropsWithDefaults = typeof props;
31
+ declare function __VLS_template(): {
32
+ attrs: Partial<{}>;
33
+ slots: {
34
+ header?(_: {}): any;
35
+ header?(_: {}): any;
36
+ prefix?(_: {}): any;
37
+ prefix?(_: {}): any;
38
+ content?(_: {
39
+ editor: import('@tiptap/vue-3').Editor | undefined;
40
+ }): any;
41
+ content?(_: {
42
+ editor: import('vue').Ref<import('@tiptap/vue-3').Editor | undefined, import('@tiptap/vue-3').Editor | undefined>;
43
+ }): any;
44
+ 'actions-inline'?(_: {}): any;
45
+ footer?(_: {}): any;
46
+ 'footer-right'?(_: {}): any;
47
+ };
48
+ refs: {};
49
+ rootEl: HTMLDivElement;
50
+ };
51
+ type __VLS_TemplateResult = ReturnType<typeof __VLS_template>;
52
+ declare const __VLS_component: import('vue').DefineComponent<SenderProps, {
53
+ submit: () => void;
54
+ clear: () => void;
55
+ cancel: () => void;
56
+ focus: () => void;
57
+ blur: () => void;
58
+ setContent: (content: string) => void;
59
+ getContent: () => string;
60
+ editor: import('./index.type').SenderContext["editor"];
61
+ }, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {} & {
62
+ clear: () => any;
63
+ input: (value: string) => any;
64
+ blur: (event: FocusEvent) => any;
65
+ cancel: () => any;
66
+ focus: (event: FocusEvent) => any;
67
+ submit: (textContent: string, structuredData?: import('./index.type').StructuredData | undefined) => any;
68
+ "update:modelValue": (value: string) => any;
69
+ }, string, import('vue').PublicProps, Readonly<SenderProps> & Readonly<{
70
+ onClear?: (() => any) | undefined;
71
+ onInput?: ((value: string) => any) | undefined;
72
+ onBlur?: ((event: FocusEvent) => any) | undefined;
73
+ onCancel?: (() => any) | undefined;
74
+ onFocus?: ((event: FocusEvent) => any) | undefined;
75
+ onSubmit?: ((textContent: string, structuredData?: import('./index.type').StructuredData | undefined) => any) | undefined;
76
+ "onUpdate:modelValue"?: ((value: string) => any) | undefined;
77
+ }>, {
78
+ size: "normal" | "small";
79
+ placeholder: string;
80
+ mode: import('./index.type').InputMode;
81
+ enterkeyhint: import('./index.type').EnterKeyHint;
82
+ autoSize: import('./index.type').AutoSize;
83
+ hasExternalContent: boolean;
84
+ extensions: import('@tiptap/core').Extension[] | any[];
85
+ submitType: import('./index.type').SubmitTrigger;
86
+ }, {}, {}, {}, string, import('vue').ComponentProvideOptions, false, {}, HTMLDivElement>;
87
+ declare const _default: __VLS_WithTemplateSlots<typeof __VLS_component, __VLS_TemplateResult["slots"]>;
88
+ export default _default;
89
+ type __VLS_WithTemplateSlots<T, S> = T & {
90
+ new (): {
91
+ $slots: S;
92
+ };
93
+ };