@opentiny/tiny-robot 0.5.0 → 0.5.1-alpha.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/action-group/ActionGroup.vue.d.ts +26 -0
- package/dist/action-group/ActionGroupItem.vue.d.ts +18 -0
- package/dist/action-group/index.d.ts +12 -0
- package/dist/action-group/index.type.d.ts +17 -0
- package/dist/anchor/components/AnchorItem.vue.d.ts +24 -0
- package/dist/anchor/components/AnchorList.vue.d.ts +20 -0
- package/dist/anchor/components/AnchorOverlay.vue.d.ts +33 -0
- package/dist/anchor/components/AnchorSearch.vue.d.ts +7 -0
- package/dist/anchor/composables/index.d.ts +5 -0
- package/dist/anchor/composables/useActiveSync.d.ts +10 -0
- package/dist/anchor/composables/useFloatingOffset.d.ts +6 -0
- package/dist/anchor/composables/useNavController.d.ts +12 -0
- package/dist/anchor/composables/useOverlayInteractions.d.ts +6 -0
- package/dist/anchor/composables/useTargetFeedback.d.ts +5 -0
- package/dist/anchor/defaults.d.ts +16 -0
- package/dist/anchor/index.d.ts +7 -0
- package/dist/anchor/index.type.d.ts +60 -0
- package/dist/anchor/index.vue.d.ts +159 -0
- package/dist/anchor/internal.type.d.ts +103 -0
- package/dist/anchor/utils/scroll.d.ts +7 -0
- package/dist/anchor/utils/target.d.ts +6 -0
- package/dist/attachments/components/FileCard.vue.d.ts +18 -0
- package/dist/attachments/components/ImagePreview.vue.d.ts +17 -0
- package/dist/attachments/components/index.d.ts +2 -0
- package/dist/attachments/composables/index.d.ts +5 -0
- package/dist/attachments/composables/useFileCard.d.ts +15 -0
- package/dist/attachments/composables/useFileType.d.ts +20 -0
- package/dist/attachments/composables/useImagePreview.d.ts +18 -0
- package/dist/attachments/composables/useListType.d.ts +11 -0
- package/dist/attachments/index.d.ts +7 -0
- package/dist/attachments/index.type.d.ts +70 -0
- package/dist/attachments/index.vue.d.ts +27 -0
- package/dist/attachments/utils.d.ts +3 -0
- package/dist/base-popper/components/Popper.vue.d.ts +28 -0
- package/dist/base-popper/index.d.ts +2 -0
- package/dist/base-popper/index.vue.d.ts +41 -0
- package/dist/bubble/Bubble.vue.d.ts +47 -0
- package/dist/bubble/BubbleBoxWrapper.vue.d.ts +22 -0
- package/dist/bubble/BubbleContentWrapper.vue.d.ts +22 -0
- package/dist/bubble/BubbleItem.vue.d.ts +44 -0
- package/dist/bubble/BubbleList.vue.d.ts +43 -0
- package/dist/bubble/BubbleProvider.vue.d.ts +18 -0
- package/dist/bubble/composables/index.d.ts +11 -0
- package/dist/bubble/composables/useBubbleBoxRenderer.d.ts +18 -0
- package/dist/bubble/composables/useBubbleContentRenderer.d.ts +18 -0
- package/dist/bubble/composables/useBubbleEvent.d.ts +3 -0
- package/dist/bubble/composables/useBubbleStateChange.d.ts +1 -0
- package/dist/bubble/composables/useBubbleStore.d.ts +16 -0
- package/dist/bubble/composables/useContentResolver.d.ts +5 -0
- package/dist/bubble/composables/useCopyCleanup.d.ts +6 -0
- package/dist/bubble/composables/useMessageContent.d.ts +5 -0
- package/dist/bubble/composables/useMessageGroup.d.ts +4 -0
- package/dist/bubble/composables/useOmitMessageFields.d.ts +12 -0
- package/dist/bubble/composables/useToolCall.d.ts +25 -0
- package/dist/bubble/constants.d.ts +42 -0
- package/dist/bubble/index.d.ts +19 -0
- package/dist/bubble/index.type.d.ts +185 -0
- package/dist/bubble/renderers/Box.vue.d.ts +18 -0
- package/dist/bubble/renderers/Image.vue.d.ts +4 -0
- package/dist/bubble/renderers/Loading.vue.d.ts +4 -0
- package/dist/bubble/renderers/Markdown.vue.d.ts +4 -0
- package/dist/bubble/renderers/Reasoning.vue.d.ts +9 -0
- package/dist/bubble/renderers/Text.vue.d.ts +4 -0
- package/dist/bubble/renderers/Tool.vue.d.ts +14 -0
- package/dist/bubble/renderers/ToolRole.vue.d.ts +4 -0
- package/dist/bubble/renderers/Tools.vue.d.ts +4 -0
- package/dist/bubble/renderers/allRenderers.d.ts +93 -0
- package/dist/bubble/renderers/defaultRenderers.d.ts +27 -0
- package/dist/bubble/utils.d.ts +7 -0
- package/dist/chat/components/ChatConversation.vue.d.ts +305 -0
- package/dist/chat/components/ChatLauncherButton.vue.d.ts +12 -0
- package/dist/chat/components/ChatMcpTrigger.vue.d.ts +30 -0
- package/dist/chat/components/ChatThemeToggleButton.vue.d.ts +6 -0
- package/dist/chat/components/ChatWelcome.vue.d.ts +14 -0
- package/dist/chat/components/icons/IconModelAliyunBailian.vue.d.ts +7 -0
- package/dist/chat/components/icons/IconModelDeepseek.vue.d.ts +7 -0
- package/dist/chat/components/icons/index.d.ts +5 -0
- package/dist/chat/composables/useChatConversation.d.ts +37 -0
- package/dist/chat/composables/useChatMcp.d.ts +29 -0
- package/dist/chat/composables/useChatModel.d.ts +27 -0
- package/dist/chat/index.d.ts +9 -0
- package/dist/chat/index.js +13904 -0
- package/dist/chat/index.type.d.ts +92 -0
- package/dist/chat/index.vue.d.ts +51 -0
- package/dist/chat/locale.d.ts +12 -0
- package/dist/chat/mcpServers.d.ts +3 -0
- package/dist/container/index.d.ts +7 -0
- package/dist/container/index.type.d.ts +20 -0
- package/dist/container/index.vue.d.ts +32 -0
- package/dist/conversations/index.d.ts +7 -0
- package/dist/conversations/index.vue.d.ts +2 -0
- package/dist/drag-overlay/constants.d.ts +17 -0
- package/dist/drag-overlay/directives/vDropzone.d.ts +14 -0
- package/dist/drag-overlay/index.d.ts +7 -0
- package/dist/drag-overlay/index.type.d.ts +105 -0
- package/dist/drag-overlay/index.vue.d.ts +20 -0
- package/dist/dropdown-menu/composables/usePopperHover.d.ts +6 -0
- package/dist/dropdown-menu/index.d.ts +7 -0
- package/dist/dropdown-menu/index.type.d.ts +42 -0
- package/dist/dropdown-menu/index.vue.d.ts +217 -0
- package/dist/feedback/components/SourceList.vue.d.ts +11 -0
- package/dist/feedback/components/index.d.ts +1 -0
- package/dist/feedback/index.d.ts +7 -0
- package/dist/feedback/index.type.d.ts +25 -0
- package/dist/feedback/index.vue.d.ts +13 -0
- package/dist/flow-layout-buttons/index.d.ts +7 -0
- package/dist/flow-layout-buttons/index.type.d.ts +35 -0
- package/dist/flow-layout-buttons/index.vue.d.ts +22 -0
- package/dist/history/components/Empty.vue.d.ts +7 -0
- package/dist/history/components/MenuList.vue.d.ts +24 -0
- package/dist/history/composables/useRenameEditor.d.ts +22 -0
- package/dist/history/constants.d.ts +1 -0
- package/dist/history/index.d.ts +7 -0
- package/dist/history/index.type.d.ts +33 -0
- package/dist/history/index.vue.d.ts +18 -0
- package/dist/icon-button/index.d.ts +7 -0
- package/dist/icon-button/index.type.d.ts +7 -0
- package/dist/icon-button/index.vue.d.ts +6 -0
- package/dist/index.d.ts +51 -5517
- package/dist/index.js +1 -1
- package/dist/layout/Layout.vue.d.ts +246 -0
- package/dist/layout/LayoutAsideToggle.vue.d.ts +20 -0
- package/dist/layout/LayoutProxyScrollbar.vue.d.ts +6 -0
- package/dist/layout/components/AsideContent.vue.d.ts +35 -0
- package/dist/layout/components/AsideResizeTrigger.vue.d.ts +20 -0
- package/dist/layout/components/FloatingDragBar.vue.d.ts +18 -0
- package/dist/layout/components/FloatingResizeTrigger.vue.d.ts +17 -0
- package/dist/layout/components/FloatingResizeTriggers.vue.d.ts +14 -0
- package/dist/layout/components/LayoutSurface.vue.d.ts +41 -0
- package/dist/layout/composables/useLayoutAsideStates.d.ts +21 -0
- package/dist/layout/composables/useLayoutContext.d.ts +4 -0
- package/dist/layout/composables/usePointerDrag.d.ts +19 -0
- package/dist/layout/index.d.ts +22 -0
- package/dist/layout/index.type.d.ts +111 -0
- package/dist/layout/internal.type.d.ts +43 -0
- package/dist/layout/utils/asideEventEmitters.d.ts +6 -0
- package/dist/layout/utils/asidePresets.d.ts +5 -0
- package/dist/layout/utils/cssLength.d.ts +2 -0
- package/dist/layout/utils/domInteraction.d.ts +1 -0
- package/dist/layout/utils/number.d.ts +1 -0
- package/dist/layout/utils/surfaceGeometry.d.ts +87 -0
- package/dist/layout/utils/surfaceResize.d.ts +10 -0
- package/dist/mcp-add-form/components/CodeEditor.vue.d.ts +9 -0
- package/dist/mcp-add-form/components/FormEditor.vue.d.ts +10 -0
- package/dist/mcp-add-form/components/index.d.ts +2 -0
- package/dist/mcp-add-form/index.d.ts +7 -0
- package/dist/mcp-add-form/index.type.d.ts +19 -0
- package/dist/mcp-add-form/index.vue.d.ts +13 -0
- package/dist/mcp-server-picker/components/NoData.vue.d.ts +7 -0
- package/dist/mcp-server-picker/components/PluginCard.vue.d.ts +40 -0
- package/dist/mcp-server-picker/components/PluginModal.vue.d.ts +15 -0
- package/dist/mcp-server-picker/components/index.d.ts +3 -0
- package/dist/mcp-server-picker/index.d.ts +7 -0
- package/dist/mcp-server-picker/index.type.d.ts +99 -0
- package/dist/mcp-server-picker/index.vue.d.ts +71 -0
- package/dist/prompts/index.d.ts +12 -0
- package/dist/prompts/index.type.d.ts +59 -0
- package/dist/prompts/prompt.vue.d.ts +5 -0
- package/dist/prompts/prompts.vue.d.ts +20 -0
- package/dist/sender/components/editor-content/index.vue.d.ts +4 -0
- package/dist/sender/components/footer/index.vue.d.ts +38 -0
- package/dist/sender/components/layouts/MultiLineLayout.vue.d.ts +43 -0
- package/dist/sender/components/layouts/SingleLineLayout.vue.d.ts +32 -0
- package/dist/sender/composables/index.d.ts +7 -0
- package/dist/sender/composables/useAutoSize.d.ts +5 -0
- package/dist/sender/composables/useEditor.d.ts +13 -0
- package/dist/sender/composables/useKeyboardShortcuts.d.ts +7 -0
- package/dist/sender/composables/useModeSwitch.d.ts +4 -0
- package/dist/sender/composables/useSenderCore.d.ts +31 -0
- package/dist/sender/composables/useSlotScope.d.ts +10 -0
- package/dist/sender/context/index.d.ts +6 -0
- package/dist/sender/context/types.d.ts +7 -0
- package/dist/sender/extensions/constants.d.ts +94 -0
- package/dist/sender/extensions/index.d.ts +12 -0
- package/dist/sender/extensions/mention/commands.d.ts +20 -0
- package/dist/sender/extensions/mention/components/mention-list.vue.d.ts +18 -0
- package/dist/sender/extensions/mention/components/mention-view.vue.d.ts +19 -0
- package/dist/sender/extensions/mention/extension.d.ts +6 -0
- package/dist/sender/extensions/mention/index.d.ts +22 -0
- package/dist/sender/extensions/mention/plugin.d.ts +16 -0
- package/dist/sender/extensions/mention/types.d.ts +126 -0
- package/dist/sender/extensions/mention/utils.d.ts +34 -0
- package/dist/sender/extensions/suggestion/extension.d.ts +8 -0
- package/dist/sender/extensions/suggestion/index.d.ts +20 -0
- package/dist/sender/extensions/suggestion/plugin.d.ts +21 -0
- package/dist/sender/extensions/suggestion/suggestion-list.vue.d.ts +46 -0
- package/dist/sender/extensions/suggestion/types.d.ts +254 -0
- package/dist/sender/extensions/suggestion/utils/filter.d.ts +29 -0
- package/dist/sender/extensions/suggestion/utils/highlight.d.ts +73 -0
- package/dist/sender/extensions/template/block/extension.d.ts +6 -0
- package/dist/sender/extensions/template/block/plugins.d.ts +13 -0
- package/dist/sender/extensions/template/block/template-block-view.vue.d.ts +14 -0
- package/dist/sender/extensions/template/commands.d.ts +31 -0
- package/dist/sender/extensions/template/extension.d.ts +6 -0
- package/dist/sender/extensions/template/index.d.ts +21 -0
- package/dist/sender/extensions/template/select/dropdown-manager.d.ts +23 -0
- package/dist/sender/extensions/template/select/extension.d.ts +5 -0
- package/dist/sender/extensions/template/select/plugins.d.ts +34 -0
- package/dist/sender/extensions/template/select/template-select-view.vue.d.ts +20 -0
- package/dist/sender/extensions/template/types.d.ts +100 -0
- package/dist/sender/extensions/template/utils.d.ts +20 -0
- package/dist/sender/extensions/utils/id-generator.d.ts +16 -0
- package/dist/sender/extensions/utils/index.d.ts +7 -0
- package/dist/sender/extensions/utils/keyboard.d.ts +49 -0
- package/dist/sender/extensions/utils/position.d.ts +25 -0
- package/dist/sender/index.d.ts +139 -0
- package/dist/sender/index.type.d.ts +311 -0
- package/dist/sender/index.vue.d.ts +93 -0
- package/dist/sender/types/base.d.ts +239 -0
- package/dist/sender/types/components.d.ts +68 -0
- package/dist/sender/types/composables.d.ts +122 -0
- package/dist/sender/types/context.d.ts +138 -0
- package/dist/sender/types/slots.d.ts +67 -0
- package/dist/sender/utils/countGraphemes.d.ts +1 -0
- package/dist/sender-actions/action-button/index.vue.d.ts +23 -0
- package/dist/sender-actions/clear-button/index.vue.d.ts +2 -0
- package/dist/sender-actions/clear-button/useClearButtonState.d.ts +6 -0
- package/dist/sender-actions/default-actions/index.vue.d.ts +17 -0
- package/dist/sender-actions/index.d.ts +21 -0
- package/dist/sender-actions/index.type.d.ts +7 -0
- package/dist/sender-actions/submit-button/index.vue.d.ts +2 -0
- package/dist/sender-actions/types/common.d.ts +40 -0
- package/dist/sender-actions/types/index.d.ts +5 -0
- package/dist/sender-actions/types/tooltip.d.ts +7 -0
- package/dist/sender-actions/upload-button/index.type.d.ts +57 -0
- package/dist/sender-actions/upload-button/index.vue.d.ts +16 -0
- package/dist/sender-actions/utils/tooltip.d.ts +8 -0
- package/dist/sender-actions/voice-button/index.type.d.ts +78 -0
- package/dist/sender-actions/voice-button/index.vue.d.ts +43 -0
- package/dist/sender-actions/voice-button/speech.types.d.ts +40 -0
- package/dist/sender-actions/voice-button/useSpeechHandler.d.ts +10 -0
- package/dist/sender-actions/voice-button/webSpeechHandler.d.ts +40 -0
- package/dist/sender-actions/word-counter/index.vue.d.ts +2 -0
- package/dist/sender-compat/index.d.ts +7 -0
- package/dist/sender-compat/index.type.d.ts +91 -0
- package/dist/sender-compat/index.vue.d.ts +538 -0
- package/dist/shared/composables/createTeleport.d.ts +2 -0
- package/dist/shared/composables/index.d.ts +6 -0
- package/dist/shared/composables/useAutoScroll.d.ts +25 -0
- package/dist/shared/composables/useControllableState.d.ts +20 -0
- package/dist/shared/composables/useSlotRefs.d.ts +12 -0
- package/dist/shared/composables/useTeleportTarget.d.ts +11 -0
- package/dist/shared/composables/useTouchDevice.d.ts +3 -0
- package/dist/shared/utils.d.ts +7 -0
- package/dist/style.css +1 -1
- package/dist/suggestion-pills/components/PillButton.vue.d.ts +16 -0
- package/dist/suggestion-pills/components/index.d.ts +1 -0
- package/dist/suggestion-pills/index.d.ts +13 -0
- package/dist/suggestion-pills/index.type.d.ts +45 -0
- package/dist/suggestion-pills/index.vue.d.ts +44 -0
- package/dist/suggestion-popover/components/Backdrop.vue.d.ts +5 -0
- package/dist/suggestion-popover/components/Header.vue.d.ts +4 -0
- package/dist/suggestion-popover/components/Loading.vue.d.ts +17 -0
- package/dist/suggestion-popover/components/NoData.vue.d.ts +17 -0
- package/dist/suggestion-popover/components/Tooltip.vue.d.ts +19 -0
- package/dist/suggestion-popover/index.d.ts +7 -0
- package/dist/suggestion-popover/index.type.d.ts +80 -0
- package/dist/suggestion-popover/index.vue.d.ts +262 -0
- package/dist/theme-provider/constants.d.ts +6 -0
- package/dist/theme-provider/index.d.ts +9 -0
- package/dist/theme-provider/index.js +32 -41
- package/dist/theme-provider/index.type.d.ts +18 -0
- package/dist/theme-provider/index.vue.d.ts +32 -0
- package/dist/theme-provider/useTheme.d.ts +11 -0
- package/dist/useTheme.js +22 -0
- package/dist/welcome/index.d.ts +7 -0
- package/dist/welcome/index.type.d.ts +10 -0
- package/dist/welcome/index.vue.d.ts +18 -0
- package/package.json +22 -3
|
@@ -0,0 +1,254 @@
|
|
|
1
|
+
import { Ref } from 'vue';
|
|
2
|
+
/**
|
|
3
|
+
* Suggestion 插件类型定义
|
|
4
|
+
*
|
|
5
|
+
* 包含建议项、高亮、插件配置和状态等类型定义
|
|
6
|
+
*/
|
|
7
|
+
/**
|
|
8
|
+
* 高亮文本片段
|
|
9
|
+
*/
|
|
10
|
+
export interface SuggestionTextPart {
|
|
11
|
+
text: string;
|
|
12
|
+
isMatch: boolean;
|
|
13
|
+
}
|
|
14
|
+
/**
|
|
15
|
+
* 高亮函数类型
|
|
16
|
+
*
|
|
17
|
+
* @param suggestionText - 建议项文本
|
|
18
|
+
* @param inputText - 用户输入文本
|
|
19
|
+
* @returns 包含文本片段和匹配状态的数组
|
|
20
|
+
*/
|
|
21
|
+
export type HighlightFunction = (suggestionText: string, inputText: string) => SuggestionTextPart[];
|
|
22
|
+
/**
|
|
23
|
+
* 建议项类型
|
|
24
|
+
*
|
|
25
|
+
* @example
|
|
26
|
+
* ```typescript
|
|
27
|
+
* // 自动匹配
|
|
28
|
+
* { content: 'ECS-云服务器' }
|
|
29
|
+
*
|
|
30
|
+
* // 精确指定高亮
|
|
31
|
+
* {
|
|
32
|
+
* content: 'ECS-云服务器',
|
|
33
|
+
* highlights: ['ECS', '云服务器']
|
|
34
|
+
* }
|
|
35
|
+
*
|
|
36
|
+
* // 自定义高亮函数
|
|
37
|
+
* {
|
|
38
|
+
* content: 'ECS-云服务器',
|
|
39
|
+
* highlights: (text, query) => [
|
|
40
|
+
* { text: 'ECS', isMatch: true },
|
|
41
|
+
* { text: '-云服务器', isMatch: false }
|
|
42
|
+
* ]
|
|
43
|
+
* }
|
|
44
|
+
* ```
|
|
45
|
+
*/
|
|
46
|
+
export interface SenderSuggestionItem {
|
|
47
|
+
/**
|
|
48
|
+
* 建议项内容(必填)
|
|
49
|
+
*/
|
|
50
|
+
content: string;
|
|
51
|
+
/**
|
|
52
|
+
* 显示标签(可选)
|
|
53
|
+
*
|
|
54
|
+
* 默认使用 content
|
|
55
|
+
*/
|
|
56
|
+
label?: string;
|
|
57
|
+
/**
|
|
58
|
+
* 高亮方式(可选)
|
|
59
|
+
*
|
|
60
|
+
* - undefined: 自动匹配(默认)
|
|
61
|
+
* - string[]: 精确指定高亮片段
|
|
62
|
+
* - function: 自定义高亮逻辑
|
|
63
|
+
*/
|
|
64
|
+
highlights?: string[] | HighlightFunction;
|
|
65
|
+
/**
|
|
66
|
+
* 自定义数据(可选)
|
|
67
|
+
*
|
|
68
|
+
* 用于扩展功能
|
|
69
|
+
*/
|
|
70
|
+
data?: Record<string, unknown>;
|
|
71
|
+
}
|
|
72
|
+
/**
|
|
73
|
+
* 插件状态
|
|
74
|
+
*
|
|
75
|
+
* 管理建议列表的显示、过滤、选中等状态
|
|
76
|
+
*/
|
|
77
|
+
export interface SuggestionState {
|
|
78
|
+
/**
|
|
79
|
+
* 是否激活(有匹配的建议项)
|
|
80
|
+
*/
|
|
81
|
+
active: boolean;
|
|
82
|
+
/**
|
|
83
|
+
* 匹配范围
|
|
84
|
+
*
|
|
85
|
+
* 全局模式:整个文档范围
|
|
86
|
+
* 字符模式:触发字符到光标的范围
|
|
87
|
+
*/
|
|
88
|
+
range: {
|
|
89
|
+
from: number;
|
|
90
|
+
to: number;
|
|
91
|
+
} | null;
|
|
92
|
+
/**
|
|
93
|
+
* 查询文本
|
|
94
|
+
*
|
|
95
|
+
* 全局模式:整个输入内容
|
|
96
|
+
* 字符模式:触发字符后的文本
|
|
97
|
+
*/
|
|
98
|
+
query: string;
|
|
99
|
+
/**
|
|
100
|
+
* 过滤后的建议项
|
|
101
|
+
*/
|
|
102
|
+
filteredSuggestions: SenderSuggestionItem[];
|
|
103
|
+
/**
|
|
104
|
+
* 当前选中的建议项索引
|
|
105
|
+
*
|
|
106
|
+
* -1 表示未选中
|
|
107
|
+
*/
|
|
108
|
+
selectedIndex: number;
|
|
109
|
+
/**
|
|
110
|
+
* 自动补全文本
|
|
111
|
+
*
|
|
112
|
+
* 选中项的剩余部分
|
|
113
|
+
*/
|
|
114
|
+
autoCompleteText: string;
|
|
115
|
+
/**
|
|
116
|
+
* 是否显示 Tab 提示
|
|
117
|
+
*/
|
|
118
|
+
showTabIndicator: boolean;
|
|
119
|
+
}
|
|
120
|
+
/**
|
|
121
|
+
* 插件配置选项
|
|
122
|
+
*/
|
|
123
|
+
export interface SuggestionOptions {
|
|
124
|
+
/**
|
|
125
|
+
* 建议项列表(可选)
|
|
126
|
+
*
|
|
127
|
+
* 不传或传空数组时,建议功能不会显示
|
|
128
|
+
*
|
|
129
|
+
* @default []
|
|
130
|
+
*
|
|
131
|
+
* @example
|
|
132
|
+
* ```typescript
|
|
133
|
+
* const items = ref([
|
|
134
|
+
* { content: 'ECS-云服务器' },
|
|
135
|
+
* { content: 'RDS-数据库' }
|
|
136
|
+
* ])
|
|
137
|
+
* ```
|
|
138
|
+
*/
|
|
139
|
+
items?: SenderSuggestionItem[] | Ref<SenderSuggestionItem[]>;
|
|
140
|
+
/**
|
|
141
|
+
* 自定义过滤函数(可选)
|
|
142
|
+
*
|
|
143
|
+
* - 不传:不过滤,直接显示所有项
|
|
144
|
+
* - 传入:使用自定义过滤逻辑
|
|
145
|
+
*
|
|
146
|
+
* @default undefined(不过滤)
|
|
147
|
+
*
|
|
148
|
+
* @example 模糊匹配过滤
|
|
149
|
+
* ```typescript
|
|
150
|
+
* filterFn: (items, query) => {
|
|
151
|
+
* return items.filter(item =>
|
|
152
|
+
* item.content.toLowerCase().includes(query.toLowerCase())
|
|
153
|
+
* )
|
|
154
|
+
* }
|
|
155
|
+
* ```
|
|
156
|
+
*
|
|
157
|
+
* @example 前缀匹配过滤
|
|
158
|
+
* ```typescript
|
|
159
|
+
* filterFn: (items, query) => {
|
|
160
|
+
* return items.filter(item =>
|
|
161
|
+
* item.content.toLowerCase().startsWith(query.toLowerCase())
|
|
162
|
+
* )
|
|
163
|
+
* }
|
|
164
|
+
* ```
|
|
165
|
+
*/
|
|
166
|
+
filterFn?: (suggestions: SenderSuggestionItem[], query: string) => SenderSuggestionItem[];
|
|
167
|
+
/**
|
|
168
|
+
* 选中建议项的按键
|
|
169
|
+
*
|
|
170
|
+
* 注意:Tab 键用于自动补全,不受此配置控制
|
|
171
|
+
*
|
|
172
|
+
* @default ['Enter']
|
|
173
|
+
*
|
|
174
|
+
* @example 只允许 Enter 选中
|
|
175
|
+
* ```typescript
|
|
176
|
+
* activeSuggestionKeys: ['Enter']
|
|
177
|
+
* ```
|
|
178
|
+
*
|
|
179
|
+
* @example 允许 Enter 和 Space 选中
|
|
180
|
+
* ```typescript
|
|
181
|
+
* activeSuggestionKeys: ['Enter', ' '] // 注意:空格键是 ' '
|
|
182
|
+
* ```
|
|
183
|
+
*
|
|
184
|
+
* @example 禁用所有选中按键(只能点击)
|
|
185
|
+
* ```typescript
|
|
186
|
+
* activeSuggestionKeys: []
|
|
187
|
+
* ```
|
|
188
|
+
*/
|
|
189
|
+
activeSuggestionKeys?: string[];
|
|
190
|
+
/**
|
|
191
|
+
* 弹窗宽度
|
|
192
|
+
*
|
|
193
|
+
* @default 400
|
|
194
|
+
*/
|
|
195
|
+
popupWidth?: number | string;
|
|
196
|
+
/**
|
|
197
|
+
* 是否显示自动补全提示
|
|
198
|
+
*
|
|
199
|
+
* @default true
|
|
200
|
+
*/
|
|
201
|
+
showAutoComplete?: boolean;
|
|
202
|
+
/**
|
|
203
|
+
* 选中建议项的回调
|
|
204
|
+
*
|
|
205
|
+
* @param item - 选中的建议项(包含完整的 SenderSuggestionItem 信息)
|
|
206
|
+
* @returns 返回 false 可阻止默认回填行为
|
|
207
|
+
*
|
|
208
|
+
* @example 默认行为(自动回填)
|
|
209
|
+
* ```typescript
|
|
210
|
+
* onSelect: (item) => {
|
|
211
|
+
* console.log('Selected:', item)
|
|
212
|
+
* // 不返回 false,内容会自动回填
|
|
213
|
+
* }
|
|
214
|
+
* ```
|
|
215
|
+
*
|
|
216
|
+
* @example 阻止默认行为并自定义回填
|
|
217
|
+
* ```typescript
|
|
218
|
+
* onSelect: (item) => {
|
|
219
|
+
* editor.commands.setContent(`前缀-${item.content}-后缀`)
|
|
220
|
+
* return false // 阻止默认回填
|
|
221
|
+
* }
|
|
222
|
+
* ```
|
|
223
|
+
*
|
|
224
|
+
* @example 条件性阻止
|
|
225
|
+
* ```typescript
|
|
226
|
+
* onSelect: (item) => {
|
|
227
|
+
* if (item.data?.needsValidation) {
|
|
228
|
+
* validateAndFill(item)
|
|
229
|
+
* return false
|
|
230
|
+
* }
|
|
231
|
+
* // 否则使用默认回填
|
|
232
|
+
* }
|
|
233
|
+
* ```
|
|
234
|
+
*/
|
|
235
|
+
onSelect?: (item: SenderSuggestionItem) => void | false;
|
|
236
|
+
}
|
|
237
|
+
/**
|
|
238
|
+
* 插件 Key 类型
|
|
239
|
+
*
|
|
240
|
+
* 用于访问插件状态
|
|
241
|
+
*/
|
|
242
|
+
export interface SuggestionPluginKeyType {
|
|
243
|
+
getState: (state: EditorState) => SuggestionState | undefined;
|
|
244
|
+
}
|
|
245
|
+
/**
|
|
246
|
+
* EditorState 类型(来自 @tiptap/pm/state)
|
|
247
|
+
*/
|
|
248
|
+
export interface EditorState {
|
|
249
|
+
doc: unknown;
|
|
250
|
+
selection: unknown;
|
|
251
|
+
storedMarks: unknown;
|
|
252
|
+
schema: unknown;
|
|
253
|
+
[key: string]: unknown;
|
|
254
|
+
}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 计算自动补全文本
|
|
3
|
+
*
|
|
4
|
+
* 检查选中项是否以输入内容开头,如果是则返回剩余部分
|
|
5
|
+
*
|
|
6
|
+
* @param selectedSuggestion - 选中的建议项内容
|
|
7
|
+
* @param inputText - 用户输入的文本
|
|
8
|
+
* @returns 补全信息
|
|
9
|
+
*
|
|
10
|
+
* @example
|
|
11
|
+
* ```typescript
|
|
12
|
+
* // 有补全文本
|
|
13
|
+
* syncAutoComplete('ECS-云服务器', 'ECS')
|
|
14
|
+
* // { text: '-云服务器', show: true, showTab: true }
|
|
15
|
+
*
|
|
16
|
+
* // 无补全文本(输入完整)
|
|
17
|
+
* syncAutoComplete('ECS', 'ECS')
|
|
18
|
+
* // { text: '', show: false, showTab: false }
|
|
19
|
+
*
|
|
20
|
+
* // 不匹配
|
|
21
|
+
* syncAutoComplete('ECS-云服务器', 'CDN')
|
|
22
|
+
* // { text: '', show: false, showTab: false }
|
|
23
|
+
* ```
|
|
24
|
+
*/
|
|
25
|
+
export declare const syncAutoComplete: (selectedSuggestion: string, inputText: string) => {
|
|
26
|
+
text: string;
|
|
27
|
+
show: boolean;
|
|
28
|
+
showTab: boolean;
|
|
29
|
+
};
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
import { SenderSuggestionItem, SuggestionTextPart } from '../types';
|
|
2
|
+
/**
|
|
3
|
+
* 将预定义的高亮字符串数组转换为文本片段
|
|
4
|
+
*
|
|
5
|
+
* @param content - 完整的建议文本
|
|
6
|
+
* @param highlights - 需要高亮的文本片段数组
|
|
7
|
+
* @returns 包含文本片段和匹配状态的数组
|
|
8
|
+
*
|
|
9
|
+
* @example
|
|
10
|
+
* ```typescript
|
|
11
|
+
* const result = convertHighlightsArrayToTextParts('ECS-云服务器', ['ECS', '云服务器'])
|
|
12
|
+
* // [
|
|
13
|
+
* // { text: 'ECS', isMatch: true },
|
|
14
|
+
* // { text: '-', isMatch: false },
|
|
15
|
+
* // { text: '云服务器', isMatch: true }
|
|
16
|
+
* // ]
|
|
17
|
+
* ```
|
|
18
|
+
*/
|
|
19
|
+
export declare const convertHighlightsArrayToTextParts: (content: string, highlights: string[]) => SuggestionTextPart[];
|
|
20
|
+
/**
|
|
21
|
+
* 处理建议项文本高亮(自动匹配模式)
|
|
22
|
+
*
|
|
23
|
+
* @param suggestionText - 建议文本
|
|
24
|
+
* @param inputText - 输入文本
|
|
25
|
+
* @returns 包含文本片段和匹配状态的数组
|
|
26
|
+
*
|
|
27
|
+
* @example
|
|
28
|
+
* ```typescript
|
|
29
|
+
* const result = highlightSuggestionText('ECS-云服务器', 'ECS')
|
|
30
|
+
* // [
|
|
31
|
+
* // { text: 'ECS', isMatch: true },
|
|
32
|
+
* // { text: '-云服务器', isMatch: false }
|
|
33
|
+
* // ]
|
|
34
|
+
* ```
|
|
35
|
+
*/
|
|
36
|
+
export declare const highlightSuggestionText: (suggestionText: string, inputText: string) => SuggestionTextPart[];
|
|
37
|
+
/**
|
|
38
|
+
* 处理建议项的高亮
|
|
39
|
+
*
|
|
40
|
+
* 支持三种高亮模式:
|
|
41
|
+
* 1. 自动匹配:根据输入内容自动高亮
|
|
42
|
+
* 2. 精确指定:通过数组指定要高亮的文本片段
|
|
43
|
+
* 3. 自定义函数:完全自定义高亮逻辑
|
|
44
|
+
*
|
|
45
|
+
* @param item - 建议项
|
|
46
|
+
* @param inputText - 用户输入文本
|
|
47
|
+
* @returns 包含文本片段和匹配状态的数组
|
|
48
|
+
*
|
|
49
|
+
* @example
|
|
50
|
+
* ```typescript
|
|
51
|
+
* // 自动匹配
|
|
52
|
+
* processHighlights({ content: 'ECS-云服务器' }, 'ECS')
|
|
53
|
+
*
|
|
54
|
+
* // 精确指定
|
|
55
|
+
* processHighlights(
|
|
56
|
+
* { content: 'ECS-云服务器', highlights: ['ECS', '云服务器'] },
|
|
57
|
+
* 'ECS'
|
|
58
|
+
* )
|
|
59
|
+
*
|
|
60
|
+
* // 自定义函数
|
|
61
|
+
* processHighlights(
|
|
62
|
+
* {
|
|
63
|
+
* content: 'ECS-云服务器',
|
|
64
|
+
* highlights: (text, query) => [
|
|
65
|
+
* { text: 'ECS', isMatch: true },
|
|
66
|
+
* { text: '-云服务器', isMatch: false }
|
|
67
|
+
* ]
|
|
68
|
+
* },
|
|
69
|
+
* 'ECS'
|
|
70
|
+
* )
|
|
71
|
+
* ```
|
|
72
|
+
*/
|
|
73
|
+
export declare const processHighlights: (item: SenderSuggestionItem, inputText: string) => SuggestionTextPart[];
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { Plugin } from '@tiptap/pm/state';
|
|
2
|
+
/**
|
|
3
|
+
* 零宽字符管理插件
|
|
4
|
+
*/
|
|
5
|
+
export declare function ensureZeroWidthChars(): Plugin<any>;
|
|
6
|
+
/**
|
|
7
|
+
* 键盘导航插件
|
|
8
|
+
*/
|
|
9
|
+
export declare function keyboardNavigationPlugin(): Plugin<any>;
|
|
10
|
+
/**
|
|
11
|
+
* 粘贴处理插件
|
|
12
|
+
*/
|
|
13
|
+
export declare function pasteHandlerPlugin(): Plugin<any>;
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
interface NodeAttrs {
|
|
2
|
+
id: string;
|
|
3
|
+
content: string;
|
|
4
|
+
[key: string]: unknown;
|
|
5
|
+
}
|
|
6
|
+
interface Props {
|
|
7
|
+
node: {
|
|
8
|
+
attrs: NodeAttrs;
|
|
9
|
+
textContent?: string;
|
|
10
|
+
[key: string]: unknown;
|
|
11
|
+
};
|
|
12
|
+
}
|
|
13
|
+
declare const _default: import('vue').DefineComponent<Props, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {}, string, import('vue').PublicProps, Readonly<Props> & Readonly<{}>, {}, {}, {}, {}, string, import('vue').ComponentProvideOptions, false, {}, any>;
|
|
14
|
+
export default _default;
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import { Editor } from '@tiptap/core';
|
|
2
|
+
import { TemplateItem, TemplateAttrs, TemplateSelectAttrs } from './types';
|
|
3
|
+
/**
|
|
4
|
+
* Template 命令集合
|
|
5
|
+
*/
|
|
6
|
+
export declare const templateCommands: {
|
|
7
|
+
/**
|
|
8
|
+
* 设置模板数据(批量)
|
|
9
|
+
*/
|
|
10
|
+
setTemplateData: (items: TemplateItem[]) => ({ commands }: {
|
|
11
|
+
commands: Editor["commands"];
|
|
12
|
+
}) => boolean;
|
|
13
|
+
/**
|
|
14
|
+
* 插入模板块
|
|
15
|
+
*/
|
|
16
|
+
insertTemplate: (attrs: Partial<TemplateAttrs>) => ({ commands }: {
|
|
17
|
+
commands: Editor["commands"];
|
|
18
|
+
}) => boolean;
|
|
19
|
+
/**
|
|
20
|
+
* 聚焦到第一个模板块
|
|
21
|
+
*/
|
|
22
|
+
focusFirstTemplate: () => ({ editor }: {
|
|
23
|
+
editor: Editor;
|
|
24
|
+
}) => boolean;
|
|
25
|
+
/**
|
|
26
|
+
* 插入选择器
|
|
27
|
+
*/
|
|
28
|
+
insertTemplateSelect: (attrs: Partial<TemplateSelectAttrs>) => ({ commands }: {
|
|
29
|
+
commands: Editor["commands"];
|
|
30
|
+
}) => boolean;
|
|
31
|
+
};
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { Ref } from 'vue';
|
|
2
|
+
import { TemplateItem, TemplateOptions } from './types';
|
|
3
|
+
export { Template } from './extension';
|
|
4
|
+
export { TemplateSelect } from './select/extension';
|
|
5
|
+
export { templateCommands } from './commands';
|
|
6
|
+
export * from './types';
|
|
7
|
+
export { getTextWithTemplates, getTemplateStructuredData } from './utils';
|
|
8
|
+
export { TemplateSelectDropdownPluginKey } from './select/plugins';
|
|
9
|
+
/**
|
|
10
|
+
* 创建 Template 扩展的便捷函数
|
|
11
|
+
*
|
|
12
|
+
* @param items - 模板项列表
|
|
13
|
+
* @param options - 其他配置项
|
|
14
|
+
*
|
|
15
|
+
* @example
|
|
16
|
+
* ```typescript
|
|
17
|
+
* const extensions = [template(templates)]
|
|
18
|
+
* const extensions = [template(templates, { HTMLAttributes: { class: 'custom' } })]
|
|
19
|
+
* ```
|
|
20
|
+
*/
|
|
21
|
+
export declare function template(items: TemplateItem[] | Ref<TemplateItem[]>, options?: Partial<Omit<TemplateOptions, 'items'>>): import('@tiptap/core').Extension<TemplateOptions, any>;
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 下拉菜单管理器(单例模式)
|
|
3
|
+
*/
|
|
4
|
+
/**
|
|
5
|
+
* 打开下拉菜单
|
|
6
|
+
*/
|
|
7
|
+
export declare function openDropdown(selectId: string): void;
|
|
8
|
+
/**
|
|
9
|
+
* 关闭下拉菜单
|
|
10
|
+
*/
|
|
11
|
+
export declare function closeDropdown(selectId: string): void;
|
|
12
|
+
/**
|
|
13
|
+
* 获取当前打开的下拉菜单 ID
|
|
14
|
+
*/
|
|
15
|
+
export declare function getCurrentOpenDropdown(): string | null;
|
|
16
|
+
/**
|
|
17
|
+
* 关闭所有下拉菜单
|
|
18
|
+
*/
|
|
19
|
+
export declare function closeAllDropdowns(): void;
|
|
20
|
+
/**
|
|
21
|
+
* 设置点击外部关闭监听
|
|
22
|
+
*/
|
|
23
|
+
export declare function setupClickOutside(selectElement: HTMLElement, dropdownElement: HTMLElement, onClose: () => void): () => void;
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import { Plugin, PluginKey } from '@tiptap/pm/state';
|
|
2
|
+
/**
|
|
3
|
+
* Template Select 下拉菜单状态
|
|
4
|
+
*/
|
|
5
|
+
interface TemplateSelectDropdownState {
|
|
6
|
+
/**
|
|
7
|
+
* 是否有下拉菜单打开
|
|
8
|
+
*/
|
|
9
|
+
isOpen: boolean;
|
|
10
|
+
/**
|
|
11
|
+
* 当前打开的下拉菜单 ID
|
|
12
|
+
*/
|
|
13
|
+
selectId: string | null;
|
|
14
|
+
}
|
|
15
|
+
/**
|
|
16
|
+
* Template Select 下拉菜单状态插件 Key
|
|
17
|
+
*/
|
|
18
|
+
export declare const TemplateSelectDropdownPluginKey: PluginKey<TemplateSelectDropdownState>;
|
|
19
|
+
/**
|
|
20
|
+
* 下拉菜单状态管理插件
|
|
21
|
+
* 用于在 ProseMirror 插件状态中跟踪下拉菜单的打开/关闭状态
|
|
22
|
+
*/
|
|
23
|
+
export declare function selectDropdownStatePlugin(): Plugin<TemplateSelectDropdownState>;
|
|
24
|
+
/**
|
|
25
|
+
* 零宽字符管理插件
|
|
26
|
+
* 注意:零宽字符现在由 Vue 组件直接渲染,不需要插件动态插入
|
|
27
|
+
* 这个插件保留用于清理孤立的零宽字符
|
|
28
|
+
*/
|
|
29
|
+
export declare function selectZeroWidthPlugin(): Plugin<any>;
|
|
30
|
+
/**
|
|
31
|
+
* 键盘导航插件
|
|
32
|
+
*/
|
|
33
|
+
export declare function selectKeyboardPlugin(): Plugin<any>;
|
|
34
|
+
export {};
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { Editor } from '@tiptap/core';
|
|
2
|
+
import { SelectOption } from '../types';
|
|
3
|
+
interface NodeAttrs {
|
|
4
|
+
id: string;
|
|
5
|
+
placeholder: string;
|
|
6
|
+
options: SelectOption[];
|
|
7
|
+
value?: string;
|
|
8
|
+
}
|
|
9
|
+
interface Props {
|
|
10
|
+
node: {
|
|
11
|
+
attrs: NodeAttrs;
|
|
12
|
+
};
|
|
13
|
+
updateAttributes: (attrs: Record<string, unknown>) => void;
|
|
14
|
+
editor: Editor;
|
|
15
|
+
}
|
|
16
|
+
declare const _default: import('vue').DefineComponent<Props, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {}, string, import('vue').PublicProps, Readonly<Props> & Readonly<{}>, {}, {}, {}, {}, string, import('vue').ComponentProvideOptions, false, {
|
|
17
|
+
triggerRef: HTMLSpanElement;
|
|
18
|
+
dropdownRef: HTMLDivElement;
|
|
19
|
+
}, any>;
|
|
20
|
+
export default _default;
|
|
@@ -0,0 +1,100 @@
|
|
|
1
|
+
import { Ref } from 'vue';
|
|
2
|
+
import { TemplateItem, SelectOption } from '../../index.type';
|
|
3
|
+
export type { TemplateItem, SelectOption };
|
|
4
|
+
/**
|
|
5
|
+
* TemplateSelect 节点属性
|
|
6
|
+
*/
|
|
7
|
+
export interface TemplateSelectAttrs {
|
|
8
|
+
/**
|
|
9
|
+
* 唯一标识
|
|
10
|
+
*/
|
|
11
|
+
id: string;
|
|
12
|
+
/**
|
|
13
|
+
* 占位文字(未选择时显示)
|
|
14
|
+
*/
|
|
15
|
+
placeholder: string;
|
|
16
|
+
/**
|
|
17
|
+
* 选项列表
|
|
18
|
+
*/
|
|
19
|
+
options: SelectOption[];
|
|
20
|
+
/**
|
|
21
|
+
* 当前选中的值(可选)
|
|
22
|
+
*/
|
|
23
|
+
value?: string;
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* Template 节点属性
|
|
27
|
+
*/
|
|
28
|
+
export interface TemplateAttrs {
|
|
29
|
+
/**
|
|
30
|
+
* 模板块 ID
|
|
31
|
+
*/
|
|
32
|
+
id: string;
|
|
33
|
+
/**
|
|
34
|
+
* 模板块内容
|
|
35
|
+
*/
|
|
36
|
+
content: string;
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* Template 配置选项
|
|
40
|
+
*/
|
|
41
|
+
export interface TemplateOptions {
|
|
42
|
+
/**
|
|
43
|
+
* 模板数据列表(推荐使用 ref 实现响应式)
|
|
44
|
+
*
|
|
45
|
+
* 支持两种配置方式:
|
|
46
|
+
* 1. 传入 ref(推荐):自动双向绑定,解决时序问题
|
|
47
|
+
* 2. 传入数组:仅用于静态初始化
|
|
48
|
+
*
|
|
49
|
+
* @example 响应式配置(推荐)
|
|
50
|
+
* ```typescript
|
|
51
|
+
* const items = ref<TemplateItem[]>([
|
|
52
|
+
* { type: 'text', content: '帮我分析' },
|
|
53
|
+
* { type: 'template', content: '' }
|
|
54
|
+
* ])
|
|
55
|
+
* Template.configure({ items }) // 传入 ref,自动双向绑定
|
|
56
|
+
* ```
|
|
57
|
+
*
|
|
58
|
+
* @example 静态配置
|
|
59
|
+
* ```typescript
|
|
60
|
+
* Template.configure({
|
|
61
|
+
* items: [
|
|
62
|
+
* { type: 'text', content: '帮我分析' },
|
|
63
|
+
* { type: 'template', content: '' }
|
|
64
|
+
* ]
|
|
65
|
+
* })
|
|
66
|
+
* ```
|
|
67
|
+
*/
|
|
68
|
+
items?: TemplateItem[] | Ref<TemplateItem[]>;
|
|
69
|
+
/**
|
|
70
|
+
* HTML 属性
|
|
71
|
+
*/
|
|
72
|
+
HTMLAttributes?: Record<string, unknown>;
|
|
73
|
+
}
|
|
74
|
+
/**
|
|
75
|
+
* 扩展 Tiptap Commands 接口
|
|
76
|
+
*
|
|
77
|
+
* 使 TypeScript 能够识别自定义命令
|
|
78
|
+
*/
|
|
79
|
+
declare module '@tiptap/core' {
|
|
80
|
+
interface Commands<ReturnType> {
|
|
81
|
+
template: {
|
|
82
|
+
/**
|
|
83
|
+
* 设置模板数据(批量)
|
|
84
|
+
*/
|
|
85
|
+
setTemplateData: (items: TemplateItem[]) => ReturnType;
|
|
86
|
+
/**
|
|
87
|
+
* 插入模板块
|
|
88
|
+
*/
|
|
89
|
+
insertTemplate: (attrs: Partial<TemplateAttrs>) => ReturnType;
|
|
90
|
+
/**
|
|
91
|
+
* 聚焦到第一个模板块
|
|
92
|
+
*/
|
|
93
|
+
focusFirstTemplate: () => ReturnType;
|
|
94
|
+
/**
|
|
95
|
+
* 插入选择器
|
|
96
|
+
*/
|
|
97
|
+
insertTemplateSelect: (attrs: Partial<TemplateSelectAttrs>) => ReturnType;
|
|
98
|
+
};
|
|
99
|
+
}
|
|
100
|
+
}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { Editor } from '@tiptap/core';
|
|
2
|
+
import { TemplateItem } from '../../index.type';
|
|
3
|
+
/**
|
|
4
|
+
* 零宽字符常量
|
|
5
|
+
* Unicode: U+200B (Zero Width Space)
|
|
6
|
+
* HTML Entity: ​
|
|
7
|
+
*/
|
|
8
|
+
export declare const ZERO_WIDTH_CHAR = "\u200B";
|
|
9
|
+
/**
|
|
10
|
+
* 获取包含 template 的完整文本
|
|
11
|
+
*
|
|
12
|
+
* 例如:请帮我分析 [模板内容1] 和 [模板内容2]
|
|
13
|
+
*/
|
|
14
|
+
export declare function getTextWithTemplates(editor: Editor): string;
|
|
15
|
+
/**
|
|
16
|
+
* 获取结构化数据(辅助函数)
|
|
17
|
+
*
|
|
18
|
+
* 返回包含文本和模板块的结构化数组
|
|
19
|
+
*/
|
|
20
|
+
export declare function getTemplateStructuredData(editor: Editor): TemplateItem[];
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 生成唯一 ID
|
|
3
|
+
*
|
|
4
|
+
* 用于所有扩展生成唯一标识符
|
|
5
|
+
*/
|
|
6
|
+
/**
|
|
7
|
+
* 生成唯一 ID
|
|
8
|
+
*
|
|
9
|
+
* @param prefix - ID 前缀
|
|
10
|
+
* @returns 唯一 ID 字符串
|
|
11
|
+
*
|
|
12
|
+
* @example
|
|
13
|
+
* generateId('mention') // mention_1701234567890_abc123def
|
|
14
|
+
* generateId('template') // template_1701234567890_xyz789uvw
|
|
15
|
+
*/
|
|
16
|
+
export declare function generateId(prefix: string): string;
|