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

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 (287) hide show
  1. package/dist/attachments/index.js +261 -258
  2. package/dist/dropdown-menu/index.js +1 -1
  3. package/dist/extension-manager/index.js +473 -0
  4. package/dist/floating-ui.dom.js +970 -0
  5. package/dist/index.d.ts +5949 -51
  6. package/dist/index.js +116 -103
  7. package/dist/index4.js +2 -2
  8. package/dist/index6.js +441 -431
  9. package/dist/index8.js +87 -102
  10. package/dist/layout/index.js +1 -1
  11. package/dist/model-selector/index.js +1002 -0
  12. package/dist/sender/index.js +1232 -2114
  13. package/dist/style.css +1 -1
  14. package/dist/suggestion-pills/index.js +1 -1
  15. package/dist/suggestion-popover/index.js +37 -36
  16. package/dist/theme-provider/index.js +41 -32
  17. package/dist/useSenderContentRegistration.js +8 -0
  18. package/dist/useSlotRefs.js +1 -1
  19. package/dist/useTeleportTarget.js +25 -0
  20. package/dist/utils.js +1 -1
  21. package/package.json +4 -23
  22. package/README.md +0 -192
  23. package/README.zh-CN.md +0 -192
  24. package/dist/action-group/ActionGroup.vue.d.ts +0 -26
  25. package/dist/action-group/ActionGroupItem.vue.d.ts +0 -18
  26. package/dist/action-group/index.d.ts +0 -12
  27. package/dist/action-group/index.type.d.ts +0 -17
  28. package/dist/anchor/components/AnchorItem.vue.d.ts +0 -24
  29. package/dist/anchor/components/AnchorList.vue.d.ts +0 -20
  30. package/dist/anchor/components/AnchorOverlay.vue.d.ts +0 -33
  31. package/dist/anchor/components/AnchorSearch.vue.d.ts +0 -7
  32. package/dist/anchor/composables/index.d.ts +0 -5
  33. package/dist/anchor/composables/useActiveSync.d.ts +0 -10
  34. package/dist/anchor/composables/useFloatingOffset.d.ts +0 -6
  35. package/dist/anchor/composables/useNavController.d.ts +0 -12
  36. package/dist/anchor/composables/useOverlayInteractions.d.ts +0 -6
  37. package/dist/anchor/composables/useTargetFeedback.d.ts +0 -5
  38. package/dist/anchor/defaults.d.ts +0 -16
  39. package/dist/anchor/index.d.ts +0 -7
  40. package/dist/anchor/index.type.d.ts +0 -60
  41. package/dist/anchor/index.vue.d.ts +0 -159
  42. package/dist/anchor/internal.type.d.ts +0 -103
  43. package/dist/anchor/utils/scroll.d.ts +0 -7
  44. package/dist/anchor/utils/target.d.ts +0 -6
  45. package/dist/attachments/components/FileCard.vue.d.ts +0 -18
  46. package/dist/attachments/components/ImagePreview.vue.d.ts +0 -17
  47. package/dist/attachments/components/index.d.ts +0 -2
  48. package/dist/attachments/composables/index.d.ts +0 -5
  49. package/dist/attachments/composables/useFileCard.d.ts +0 -15
  50. package/dist/attachments/composables/useFileType.d.ts +0 -20
  51. package/dist/attachments/composables/useImagePreview.d.ts +0 -18
  52. package/dist/attachments/composables/useListType.d.ts +0 -11
  53. package/dist/attachments/index.d.ts +0 -7
  54. package/dist/attachments/index.type.d.ts +0 -70
  55. package/dist/attachments/index.vue.d.ts +0 -27
  56. package/dist/attachments/utils.d.ts +0 -3
  57. package/dist/base-popper/components/Popper.vue.d.ts +0 -28
  58. package/dist/base-popper/index.d.ts +0 -2
  59. package/dist/base-popper/index.vue.d.ts +0 -41
  60. package/dist/bubble/Bubble.vue.d.ts +0 -47
  61. package/dist/bubble/BubbleBoxWrapper.vue.d.ts +0 -22
  62. package/dist/bubble/BubbleContentWrapper.vue.d.ts +0 -22
  63. package/dist/bubble/BubbleItem.vue.d.ts +0 -44
  64. package/dist/bubble/BubbleList.vue.d.ts +0 -43
  65. package/dist/bubble/BubbleProvider.vue.d.ts +0 -18
  66. package/dist/bubble/composables/index.d.ts +0 -11
  67. package/dist/bubble/composables/useBubbleBoxRenderer.d.ts +0 -18
  68. package/dist/bubble/composables/useBubbleContentRenderer.d.ts +0 -18
  69. package/dist/bubble/composables/useBubbleEvent.d.ts +0 -3
  70. package/dist/bubble/composables/useBubbleStateChange.d.ts +0 -1
  71. package/dist/bubble/composables/useBubbleStore.d.ts +0 -16
  72. package/dist/bubble/composables/useContentResolver.d.ts +0 -5
  73. package/dist/bubble/composables/useCopyCleanup.d.ts +0 -6
  74. package/dist/bubble/composables/useMessageContent.d.ts +0 -5
  75. package/dist/bubble/composables/useMessageGroup.d.ts +0 -4
  76. package/dist/bubble/composables/useOmitMessageFields.d.ts +0 -12
  77. package/dist/bubble/composables/useToolCall.d.ts +0 -25
  78. package/dist/bubble/constants.d.ts +0 -42
  79. package/dist/bubble/index.d.ts +0 -19
  80. package/dist/bubble/index.type.d.ts +0 -185
  81. package/dist/bubble/renderers/Box.vue.d.ts +0 -18
  82. package/dist/bubble/renderers/Image.vue.d.ts +0 -4
  83. package/dist/bubble/renderers/Loading.vue.d.ts +0 -4
  84. package/dist/bubble/renderers/Markdown.vue.d.ts +0 -4
  85. package/dist/bubble/renderers/Reasoning.vue.d.ts +0 -9
  86. package/dist/bubble/renderers/Text.vue.d.ts +0 -4
  87. package/dist/bubble/renderers/Tool.vue.d.ts +0 -14
  88. package/dist/bubble/renderers/ToolRole.vue.d.ts +0 -4
  89. package/dist/bubble/renderers/Tools.vue.d.ts +0 -4
  90. package/dist/bubble/renderers/allRenderers.d.ts +0 -93
  91. package/dist/bubble/renderers/defaultRenderers.d.ts +0 -27
  92. package/dist/bubble/utils.d.ts +0 -7
  93. package/dist/chat/components/ChatConversation.vue.d.ts +0 -305
  94. package/dist/chat/components/ChatLauncherButton.vue.d.ts +0 -12
  95. package/dist/chat/components/ChatMcpTrigger.vue.d.ts +0 -30
  96. package/dist/chat/components/ChatThemeToggleButton.vue.d.ts +0 -6
  97. package/dist/chat/components/ChatWelcome.vue.d.ts +0 -14
  98. package/dist/chat/components/icons/IconModelAliyunBailian.vue.d.ts +0 -7
  99. package/dist/chat/components/icons/IconModelDeepseek.vue.d.ts +0 -7
  100. package/dist/chat/components/icons/index.d.ts +0 -5
  101. package/dist/chat/composables/useChatConversation.d.ts +0 -37
  102. package/dist/chat/composables/useChatMcp.d.ts +0 -29
  103. package/dist/chat/composables/useChatModel.d.ts +0 -27
  104. package/dist/chat/index.d.ts +0 -9
  105. package/dist/chat/index.js +0 -13904
  106. package/dist/chat/index.type.d.ts +0 -92
  107. package/dist/chat/index.vue.d.ts +0 -51
  108. package/dist/chat/locale.d.ts +0 -12
  109. package/dist/chat/mcpServers.d.ts +0 -3
  110. package/dist/container/index.d.ts +0 -7
  111. package/dist/container/index.type.d.ts +0 -20
  112. package/dist/container/index.vue.d.ts +0 -32
  113. package/dist/conversations/index.d.ts +0 -7
  114. package/dist/conversations/index.vue.d.ts +0 -2
  115. package/dist/drag-overlay/constants.d.ts +0 -17
  116. package/dist/drag-overlay/directives/vDropzone.d.ts +0 -14
  117. package/dist/drag-overlay/index.d.ts +0 -7
  118. package/dist/drag-overlay/index.type.d.ts +0 -105
  119. package/dist/drag-overlay/index.vue.d.ts +0 -20
  120. package/dist/dropdown-menu/composables/usePopperHover.d.ts +0 -6
  121. package/dist/dropdown-menu/index.d.ts +0 -7
  122. package/dist/dropdown-menu/index.type.d.ts +0 -42
  123. package/dist/dropdown-menu/index.vue.d.ts +0 -217
  124. package/dist/feedback/components/SourceList.vue.d.ts +0 -11
  125. package/dist/feedback/components/index.d.ts +0 -1
  126. package/dist/feedback/index.d.ts +0 -7
  127. package/dist/feedback/index.type.d.ts +0 -25
  128. package/dist/feedback/index.vue.d.ts +0 -13
  129. package/dist/flow-layout-buttons/index.d.ts +0 -7
  130. package/dist/flow-layout-buttons/index.type.d.ts +0 -35
  131. package/dist/flow-layout-buttons/index.vue.d.ts +0 -22
  132. package/dist/history/components/Empty.vue.d.ts +0 -7
  133. package/dist/history/components/MenuList.vue.d.ts +0 -24
  134. package/dist/history/composables/useRenameEditor.d.ts +0 -22
  135. package/dist/history/constants.d.ts +0 -1
  136. package/dist/history/index.d.ts +0 -7
  137. package/dist/history/index.type.d.ts +0 -33
  138. package/dist/history/index.vue.d.ts +0 -18
  139. package/dist/icon-button/index.d.ts +0 -7
  140. package/dist/icon-button/index.type.d.ts +0 -7
  141. package/dist/icon-button/index.vue.d.ts +0 -6
  142. package/dist/layout/Layout.vue.d.ts +0 -246
  143. package/dist/layout/LayoutAsideToggle.vue.d.ts +0 -20
  144. package/dist/layout/LayoutProxyScrollbar.vue.d.ts +0 -6
  145. package/dist/layout/components/AsideContent.vue.d.ts +0 -35
  146. package/dist/layout/components/AsideResizeTrigger.vue.d.ts +0 -20
  147. package/dist/layout/components/FloatingDragBar.vue.d.ts +0 -18
  148. package/dist/layout/components/FloatingResizeTrigger.vue.d.ts +0 -17
  149. package/dist/layout/components/FloatingResizeTriggers.vue.d.ts +0 -14
  150. package/dist/layout/components/LayoutSurface.vue.d.ts +0 -41
  151. package/dist/layout/composables/useLayoutAsideStates.d.ts +0 -21
  152. package/dist/layout/composables/useLayoutContext.d.ts +0 -4
  153. package/dist/layout/composables/usePointerDrag.d.ts +0 -19
  154. package/dist/layout/index.d.ts +0 -22
  155. package/dist/layout/index.type.d.ts +0 -111
  156. package/dist/layout/internal.type.d.ts +0 -43
  157. package/dist/layout/utils/asideEventEmitters.d.ts +0 -6
  158. package/dist/layout/utils/asidePresets.d.ts +0 -5
  159. package/dist/layout/utils/cssLength.d.ts +0 -2
  160. package/dist/layout/utils/domInteraction.d.ts +0 -1
  161. package/dist/layout/utils/number.d.ts +0 -1
  162. package/dist/layout/utils/surfaceGeometry.d.ts +0 -87
  163. package/dist/layout/utils/surfaceResize.d.ts +0 -10
  164. package/dist/mcp-add-form/components/CodeEditor.vue.d.ts +0 -9
  165. package/dist/mcp-add-form/components/FormEditor.vue.d.ts +0 -10
  166. package/dist/mcp-add-form/components/index.d.ts +0 -2
  167. package/dist/mcp-add-form/index.d.ts +0 -7
  168. package/dist/mcp-add-form/index.type.d.ts +0 -19
  169. package/dist/mcp-add-form/index.vue.d.ts +0 -13
  170. package/dist/mcp-server-picker/components/NoData.vue.d.ts +0 -7
  171. package/dist/mcp-server-picker/components/PluginCard.vue.d.ts +0 -40
  172. package/dist/mcp-server-picker/components/PluginModal.vue.d.ts +0 -15
  173. package/dist/mcp-server-picker/components/index.d.ts +0 -3
  174. package/dist/mcp-server-picker/index.d.ts +0 -7
  175. package/dist/mcp-server-picker/index.type.d.ts +0 -99
  176. package/dist/mcp-server-picker/index.vue.d.ts +0 -71
  177. package/dist/prompts/index.d.ts +0 -12
  178. package/dist/prompts/index.type.d.ts +0 -59
  179. package/dist/prompts/prompt.vue.d.ts +0 -5
  180. package/dist/prompts/prompts.vue.d.ts +0 -20
  181. package/dist/sender/components/editor-content/index.vue.d.ts +0 -4
  182. package/dist/sender/components/footer/index.vue.d.ts +0 -38
  183. package/dist/sender/components/layouts/MultiLineLayout.vue.d.ts +0 -43
  184. package/dist/sender/components/layouts/SingleLineLayout.vue.d.ts +0 -32
  185. package/dist/sender/composables/index.d.ts +0 -7
  186. package/dist/sender/composables/useAutoSize.d.ts +0 -5
  187. package/dist/sender/composables/useEditor.d.ts +0 -13
  188. package/dist/sender/composables/useKeyboardShortcuts.d.ts +0 -7
  189. package/dist/sender/composables/useModeSwitch.d.ts +0 -4
  190. package/dist/sender/composables/useSenderCore.d.ts +0 -31
  191. package/dist/sender/composables/useSlotScope.d.ts +0 -10
  192. package/dist/sender/context/index.d.ts +0 -6
  193. package/dist/sender/context/types.d.ts +0 -7
  194. package/dist/sender/extensions/constants.d.ts +0 -94
  195. package/dist/sender/extensions/index.d.ts +0 -12
  196. package/dist/sender/extensions/mention/commands.d.ts +0 -20
  197. package/dist/sender/extensions/mention/components/mention-list.vue.d.ts +0 -18
  198. package/dist/sender/extensions/mention/components/mention-view.vue.d.ts +0 -19
  199. package/dist/sender/extensions/mention/extension.d.ts +0 -6
  200. package/dist/sender/extensions/mention/index.d.ts +0 -22
  201. package/dist/sender/extensions/mention/plugin.d.ts +0 -16
  202. package/dist/sender/extensions/mention/types.d.ts +0 -126
  203. package/dist/sender/extensions/mention/utils.d.ts +0 -34
  204. package/dist/sender/extensions/suggestion/extension.d.ts +0 -8
  205. package/dist/sender/extensions/suggestion/index.d.ts +0 -20
  206. package/dist/sender/extensions/suggestion/plugin.d.ts +0 -21
  207. package/dist/sender/extensions/suggestion/suggestion-list.vue.d.ts +0 -46
  208. package/dist/sender/extensions/suggestion/types.d.ts +0 -254
  209. package/dist/sender/extensions/suggestion/utils/filter.d.ts +0 -29
  210. package/dist/sender/extensions/suggestion/utils/highlight.d.ts +0 -73
  211. package/dist/sender/extensions/template/block/extension.d.ts +0 -6
  212. package/dist/sender/extensions/template/block/plugins.d.ts +0 -13
  213. package/dist/sender/extensions/template/block/template-block-view.vue.d.ts +0 -14
  214. package/dist/sender/extensions/template/commands.d.ts +0 -31
  215. package/dist/sender/extensions/template/extension.d.ts +0 -6
  216. package/dist/sender/extensions/template/index.d.ts +0 -21
  217. package/dist/sender/extensions/template/select/dropdown-manager.d.ts +0 -23
  218. package/dist/sender/extensions/template/select/extension.d.ts +0 -5
  219. package/dist/sender/extensions/template/select/plugins.d.ts +0 -34
  220. package/dist/sender/extensions/template/select/template-select-view.vue.d.ts +0 -20
  221. package/dist/sender/extensions/template/types.d.ts +0 -100
  222. package/dist/sender/extensions/template/utils.d.ts +0 -20
  223. package/dist/sender/extensions/utils/id-generator.d.ts +0 -16
  224. package/dist/sender/extensions/utils/index.d.ts +0 -7
  225. package/dist/sender/extensions/utils/keyboard.d.ts +0 -49
  226. package/dist/sender/extensions/utils/position.d.ts +0 -25
  227. package/dist/sender/index.d.ts +0 -139
  228. package/dist/sender/index.type.d.ts +0 -311
  229. package/dist/sender/index.vue.d.ts +0 -93
  230. package/dist/sender/types/base.d.ts +0 -239
  231. package/dist/sender/types/components.d.ts +0 -68
  232. package/dist/sender/types/composables.d.ts +0 -122
  233. package/dist/sender/types/context.d.ts +0 -138
  234. package/dist/sender/types/slots.d.ts +0 -67
  235. package/dist/sender/utils/countGraphemes.d.ts +0 -1
  236. package/dist/sender-actions/action-button/index.vue.d.ts +0 -23
  237. package/dist/sender-actions/clear-button/index.vue.d.ts +0 -2
  238. package/dist/sender-actions/clear-button/useClearButtonState.d.ts +0 -6
  239. package/dist/sender-actions/default-actions/index.vue.d.ts +0 -17
  240. package/dist/sender-actions/index.d.ts +0 -21
  241. package/dist/sender-actions/index.type.d.ts +0 -7
  242. package/dist/sender-actions/submit-button/index.vue.d.ts +0 -2
  243. package/dist/sender-actions/types/common.d.ts +0 -40
  244. package/dist/sender-actions/types/index.d.ts +0 -5
  245. package/dist/sender-actions/types/tooltip.d.ts +0 -7
  246. package/dist/sender-actions/upload-button/index.type.d.ts +0 -57
  247. package/dist/sender-actions/upload-button/index.vue.d.ts +0 -16
  248. package/dist/sender-actions/utils/tooltip.d.ts +0 -8
  249. package/dist/sender-actions/voice-button/index.type.d.ts +0 -78
  250. package/dist/sender-actions/voice-button/index.vue.d.ts +0 -43
  251. package/dist/sender-actions/voice-button/speech.types.d.ts +0 -40
  252. package/dist/sender-actions/voice-button/useSpeechHandler.d.ts +0 -10
  253. package/dist/sender-actions/voice-button/webSpeechHandler.d.ts +0 -40
  254. package/dist/sender-actions/word-counter/index.vue.d.ts +0 -2
  255. package/dist/sender-compat/index.d.ts +0 -7
  256. package/dist/sender-compat/index.type.d.ts +0 -91
  257. package/dist/sender-compat/index.vue.d.ts +0 -538
  258. package/dist/shared/composables/createTeleport.d.ts +0 -2
  259. package/dist/shared/composables/index.d.ts +0 -6
  260. package/dist/shared/composables/useAutoScroll.d.ts +0 -25
  261. package/dist/shared/composables/useControllableState.d.ts +0 -20
  262. package/dist/shared/composables/useSlotRefs.d.ts +0 -12
  263. package/dist/shared/composables/useTeleportTarget.d.ts +0 -11
  264. package/dist/shared/composables/useTouchDevice.d.ts +0 -3
  265. package/dist/shared/utils.d.ts +0 -7
  266. package/dist/suggestion-pills/components/PillButton.vue.d.ts +0 -16
  267. package/dist/suggestion-pills/components/index.d.ts +0 -1
  268. package/dist/suggestion-pills/index.d.ts +0 -13
  269. package/dist/suggestion-pills/index.type.d.ts +0 -45
  270. package/dist/suggestion-pills/index.vue.d.ts +0 -44
  271. package/dist/suggestion-popover/components/Backdrop.vue.d.ts +0 -5
  272. package/dist/suggestion-popover/components/Header.vue.d.ts +0 -4
  273. package/dist/suggestion-popover/components/Loading.vue.d.ts +0 -17
  274. package/dist/suggestion-popover/components/NoData.vue.d.ts +0 -17
  275. package/dist/suggestion-popover/components/Tooltip.vue.d.ts +0 -19
  276. package/dist/suggestion-popover/index.d.ts +0 -7
  277. package/dist/suggestion-popover/index.type.d.ts +0 -80
  278. package/dist/suggestion-popover/index.vue.d.ts +0 -262
  279. package/dist/theme-provider/constants.d.ts +0 -6
  280. package/dist/theme-provider/index.d.ts +0 -9
  281. package/dist/theme-provider/index.type.d.ts +0 -18
  282. package/dist/theme-provider/index.vue.d.ts +0 -32
  283. package/dist/theme-provider/useTheme.d.ts +0 -11
  284. package/dist/useTheme.js +0 -22
  285. package/dist/welcome/index.d.ts +0 -7
  286. package/dist/welcome/index.type.d.ts +0 -10
  287. package/dist/welcome/index.vue.d.ts +0 -18
@@ -1,5 +1,5 @@
1
1
  import { ref as k, onUnmounted as T, watch as C, defineComponent as E, useModel as H, computed as p, openBlock as w, createBlock as I, unref as X, withCtx as y, createElementVNode as j, createElementBlock as _, Fragment as D, renderList as L, toDisplayString as Y, renderSlot as O, mergeModels as M } from "vue";
2
- import { w as S, a as b, o as $ } from "../index4.js";
2
+ import { w as S, u as b, o as $ } from "../index4.js";
3
3
  import { B as A } from "../index8.js";
4
4
  import { u as F } from "../utils.js";
5
5
  import { _ as G } from "../_plugin-vue_export-helper.js";
@@ -0,0 +1,473 @@
1
+ import * as G from "vue";
2
+ import { cloneVNode as U, Comment as q, Text as J, Fragment as $, isVNode as Q, Teleport as X, Suspense as Y, ref as E, watch as Z, nextTick as ee, defineComponent as S, onMounted as te, toRef as ne, computed as _, useSlots as V, openBlock as i, createElementBlock as p, createBlock as k, resolveDynamicComponent as P, renderSlot as A, withDirectives as oe, createElementVNode as h, normalizeStyle as W, vShow as ae, createVNode as H, withCtx as R, renderList as z, normalizeClass as x, createCommentVNode as g, toDisplayString as C, unref as j, withModifiers as D, createSlots as se, normalizeProps as ie, guardReactiveProps as re, createTextVNode as le, mergeProps as ce } from "vue";
3
+ import { IconMore as de } from "@opentiny/tiny-robot-svgs";
4
+ import { g as L } from "../index4.js";
5
+ import { _ as T } from "../_plugin-vue_export-helper.js";
6
+ const K = /* @__PURE__ */ new WeakMap();
7
+ function ue() {
8
+ const t = G.useId;
9
+ if (t)
10
+ return t();
11
+ const u = G.getCurrentInstance();
12
+ if (!u)
13
+ return "";
14
+ const o = u.appContext, m = K.get(o) ?? 0;
15
+ return K.set(o, m + 1), `tr-${m}`;
16
+ }
17
+ const F = (t) => t.flatMap((u) => u.type === q ? [] : u.type === J && typeof u.children == "string" && u.children.trim() === "" ? [] : u.type !== $ || !Array.isArray(u.children) ? [u] : F(u.children.filter(Q))), pe = (t) => t.type === X || t.type === Y ? !1 : typeof t.type == "string" || typeof t.type == "object" || typeof t.type == "function";
18
+ function me({ getSlot: t, componentName: u }) {
19
+ return {
20
+ renderAsChild: (m, d = {}) => {
21
+ var a;
22
+ const l = F(((a = t()) == null ? void 0 : a(m)) ?? []);
23
+ return l.length !== 1 || !pe(l[0]) ? null : U(l[0], d, !0);
24
+ }
25
+ };
26
+ }
27
+ const ve = ({
28
+ triggerRef: t,
29
+ popoverRef: u,
30
+ open: o,
31
+ placement: m
32
+ }) => {
33
+ const d = E(), l = () => {
34
+ if (!o.value || !t.value || !u.value) return;
35
+ const a = t.value.getBoundingClientRect(), s = u.value.getBoundingClientRect(), n = 8, e = 8, c = Math.max(
36
+ n,
37
+ document.documentElement.clientWidth - s.width - n
38
+ ), b = Math.max(
39
+ n,
40
+ document.documentElement.clientHeight - s.height - n
41
+ ), y = Math.min(c, Math.max(n, a.right - s.width)), w = a.bottom + e, M = a.top - s.height - e, f = w + s.height <= document.documentElement.clientHeight - n, r = M >= n;
42
+ let v = m.value;
43
+ v === "bottom-end" && !f && r ? v = "top-end" : v === "top-end" && !r && f && (v = "bottom-end");
44
+ const O = Math.min(b, Math.max(n, v === "bottom-end" ? w : M));
45
+ d.value = {
46
+ x: y,
47
+ y: O,
48
+ placement: v
49
+ };
50
+ };
51
+ return Z(
52
+ [o, m],
53
+ async ([a]) => {
54
+ a && (await ee(), l());
55
+ },
56
+ { flush: "post" }
57
+ ), L("resize", l, { passive: !0 }), L("scroll", l, {
58
+ capture: !0,
59
+ passive: !0
60
+ }), {
61
+ position: d
62
+ };
63
+ }, fe = ["aria-expanded"], he = ["popover"], ye = /* @__PURE__ */ S({
64
+ inheritAttrs: !1,
65
+ __name: "ExtensionCardPopover",
66
+ props: {
67
+ asChild: { type: Boolean, default: !1 },
68
+ placement: { default: "bottom-end" }
69
+ },
70
+ setup(t) {
71
+ const u = t, o = `tr-extension-card-popover-${ue()}`, m = E(null), d = E(null), l = E(!1), a = E(!1);
72
+ te(() => {
73
+ a.value = typeof HTMLElement.prototype.showPopover == "function" && typeof HTMLElement.prototype.hidePopover == "function";
74
+ });
75
+ const { position: s } = ve({
76
+ triggerRef: m,
77
+ popoverRef: d,
78
+ open: l,
79
+ placement: ne(u, "placement")
80
+ }), n = _(() => {
81
+ if (s.value)
82
+ return {
83
+ left: `${s.value.x}px`,
84
+ top: `${s.value.y}px`
85
+ };
86
+ }), e = V(), c = (r) => {
87
+ const v = r instanceof Element ? r : r == null ? void 0 : r.$el;
88
+ m.value = v instanceof HTMLElement ? v : null;
89
+ }, b = () => {
90
+ var r;
91
+ if (!a.value) {
92
+ l.value = !1;
93
+ return;
94
+ }
95
+ (r = d.value) != null && r.matches(":popover-open") && d.value.hidePopover();
96
+ }, y = () => {
97
+ if (!a.value) {
98
+ l.value = !l.value;
99
+ return;
100
+ }
101
+ d.value && (d.value.matches(":popover-open") ? d.value.hidePopover() : d.value.showPopover());
102
+ };
103
+ L("click", (r) => {
104
+ var v, N;
105
+ a.value || !l.value || !(r.target instanceof Node) || (v = m.value) != null && v.contains(r.target) || (N = d.value) != null && N.contains(r.target) || b();
106
+ }), L("keydown", (r) => {
107
+ var v;
108
+ a.value || !l.value || r.key !== "Escape" || (b(), (v = m.value) == null || v.focus());
109
+ });
110
+ const { renderAsChild: w } = me({
111
+ getSlot: () => e.trigger,
112
+ componentName: "ExtensionCardPopover"
113
+ }), M = () => w(
114
+ {
115
+ popoverId: o,
116
+ open: l.value
117
+ },
118
+ {
119
+ ref: c,
120
+ ...a.value ? {
121
+ popovertarget: o,
122
+ popovertargetaction: "toggle"
123
+ } : { onClick: y }
124
+ }
125
+ ), f = (r) => {
126
+ l.value = r.newState === "open";
127
+ };
128
+ return (r, v) => (i(), p($, null, [
129
+ t.asChild ? (i(), k(P(M()), { key: 0 })) : (i(), p("button", {
130
+ key: 1,
131
+ ref_key: "triggerRef",
132
+ ref: m,
133
+ type: "button",
134
+ class: "tr-extension-card-popover__trigger",
135
+ "aria-controls": o,
136
+ "aria-expanded": l.value,
137
+ onClick: y
138
+ }, [
139
+ A(r.$slots, "trigger", {
140
+ popoverId: o,
141
+ open: l.value
142
+ }, void 0, !0)
143
+ ], 8, fe)),
144
+ oe(h("div", {
145
+ id: o,
146
+ ref_key: "popoverRef",
147
+ ref: d,
148
+ popover: a.value ? "auto" : void 0,
149
+ class: "tr-extension-card-popover__content",
150
+ style: W(n.value),
151
+ onToggle: f
152
+ }, [
153
+ A(r.$slots, "content", { close: b }, void 0, !0)
154
+ ], 44, he), [
155
+ [ae, a.value || l.value]
156
+ ])
157
+ ], 64));
158
+ }
159
+ }), be = /* @__PURE__ */ T(ye, [["__scopeId", "data-v-6dbac593"]]), _e = {
160
+ key: 0,
161
+ class: "tr-extension-card__more-action"
162
+ }, ge = ["title", "aria-label", "aria-expanded"], ke = { class: "tr-extension-card__more-menu" }, xe = ["disabled", "aria-pressed", "onClick"], Ce = {
163
+ key: 0,
164
+ class: "tr-extension-card__more-menu-item-icon-slot"
165
+ }, we = {
166
+ key: 1,
167
+ class: "tr-extension-card__more-menu-item-icon-placeholder",
168
+ "aria-hidden": "true"
169
+ }, Me = /* @__PURE__ */ S({
170
+ __name: "ExtensionCardMoreMenu",
171
+ props: {
172
+ actions: { default: () => [] },
173
+ label: { default: "更多操作" },
174
+ placement: { default: "bottom-end" },
175
+ showIcons: { type: Boolean, default: !0 }
176
+ },
177
+ emits: ["action"],
178
+ setup(t, { emit: u }) {
179
+ const o = t, m = u, d = _(() => o.showIcons && o.actions.some((a) => !!a.icon)), l = (a, s) => {
180
+ a.disabled || (s(), m("action", {
181
+ id: a.id,
182
+ type: a.type,
183
+ ...a.type === "switch" ? { checked: !a.checked } : {}
184
+ }));
185
+ };
186
+ return (a, s) => o.actions.length ? (i(), p("div", _e, [
187
+ H(be, {
188
+ "as-child": "",
189
+ placement: o.placement
190
+ }, {
191
+ trigger: R(({ open: n }) => [
192
+ h("button", {
193
+ class: "tr-extension-card__icon-button",
194
+ type: "button",
195
+ title: o.label,
196
+ "aria-label": o.label,
197
+ "aria-expanded": n
198
+ }, [
199
+ H(j(de), { class: "tr-extension-card__action-icon" })
200
+ ], 8, ge)
201
+ ]),
202
+ content: R(({ close: n }) => [
203
+ h("ul", ke, [
204
+ (i(!0), p($, null, z(o.actions, (e) => (i(), p("li", {
205
+ key: e.id
206
+ }, [
207
+ h("button", {
208
+ class: x(["tr-extension-card__more-menu-item", { "is-danger": e.danger }]),
209
+ type: "button",
210
+ disabled: e.disabled,
211
+ "aria-pressed": e.type === "switch" ? e.checked : void 0,
212
+ onClick: (c) => l(e, n)
213
+ }, [
214
+ d.value ? (i(), p("span", Ce, [
215
+ e.icon ? (i(), k(P(e.icon), {
216
+ key: 0,
217
+ class: "tr-extension-card__more-menu-item-icon"
218
+ })) : (i(), p("span", we))
219
+ ])) : g("", !0),
220
+ h("span", null, C(e.label), 1)
221
+ ], 10, xe)
222
+ ]))), 128))
223
+ ])
224
+ ]),
225
+ _: 1
226
+ }, 8, ["placement"])
227
+ ])) : g("", !0);
228
+ }
229
+ }), $e = /* @__PURE__ */ T(Me, [["__scopeId", "data-v-8d00263e"]]), Ae = { class: "tr-extension-card-primary-actions" }, Ee = ["checked", "disabled", "aria-label", "onChange"], Pe = ["aria-label", "disabled", "onClick"], Ie = ["aria-label", "disabled", "onClick"], Se = /* @__PURE__ */ S({
230
+ __name: "ExtensionCardActions",
231
+ props: {
232
+ actions: { default: () => [] }
233
+ },
234
+ emits: ["action"],
235
+ setup(t, { emit: u }) {
236
+ const o = t, m = u, d = (s, n) => {
237
+ if (s.disabled) return;
238
+ const e = n.currentTarget, c = e.checked;
239
+ e.checked = !!s.checked, m("action", {
240
+ id: s.id,
241
+ type: s.type,
242
+ checked: c
243
+ });
244
+ }, l = (s) => {
245
+ s.disabled || m("action", { id: s.id, type: s.type });
246
+ }, a = (s, n) => {
247
+ if (s.disabled) return;
248
+ const e = { id: s.id, type: s.type };
249
+ n !== void 0 && (e.payload = n), m("action", e);
250
+ };
251
+ return (s, n) => (i(), p("div", Ae, [
252
+ (i(!0), p($, null, z(o.actions, (e) => (i(), p($, {
253
+ key: e.id
254
+ }, [
255
+ e.type === "switch" ? (i(), p("label", {
256
+ key: 0,
257
+ class: x(["tr-extension-card-primary-actions__switch", { "is-disabled": e.disabled, "is-danger": e.danger }])
258
+ }, [
259
+ h("input", {
260
+ type: "checkbox",
261
+ role: "switch",
262
+ checked: e.checked,
263
+ disabled: e.disabled,
264
+ "aria-label": e.label,
265
+ onChange: (c) => d(e, c)
266
+ }, null, 40, Ee),
267
+ n[0] || (n[0] = h("span", { class: "tr-extension-card-primary-actions__switch-track" }, null, -1))
268
+ ], 2)) : e.type === "button" ? (i(), p("button", {
269
+ key: 1,
270
+ class: x(["tr-extension-card-primary-actions__button", { "is-danger": e.danger }]),
271
+ type: "button",
272
+ "aria-label": e.label,
273
+ disabled: e.disabled,
274
+ onClick: (c) => l(e)
275
+ }, [
276
+ e.icon ? (i(), k(P(e.icon), {
277
+ key: 0,
278
+ class: "tr-extension-card-primary-actions__button-icon"
279
+ })) : g("", !0),
280
+ h("span", null, C(e.label), 1)
281
+ ], 10, Pe)) : s.$slots["primary-action"] ? (i(), p("span", {
282
+ key: 2,
283
+ class: x(["tr-extension-card-primary-actions__custom-action", { "is-disabled": e.disabled, "is-danger": e.danger }])
284
+ }, [
285
+ A(s.$slots, "primary-action", {
286
+ action: e,
287
+ trigger: (c) => a(e, c)
288
+ }, void 0, !0)
289
+ ], 2)) : (i(), p("button", {
290
+ key: 3,
291
+ class: x(["tr-extension-card-primary-actions__button", { "is-danger": e.danger }]),
292
+ type: "button",
293
+ "aria-label": e.label,
294
+ disabled: e.disabled,
295
+ onClick: (c) => a(e)
296
+ }, [
297
+ e.icon ? (i(), k(P(e.icon), {
298
+ key: 0,
299
+ class: "tr-extension-card-primary-actions__button-icon"
300
+ })) : g("", !0),
301
+ h("span", null, C(e.label), 1)
302
+ ], 10, Ie))
303
+ ], 64))), 128))
304
+ ]));
305
+ }
306
+ }), Te = /* @__PURE__ */ T(Se, [["__scopeId", "data-v-7f997e75"]]), Le = { class: "tr-extension-card" }, Be = { class: "tr-extension-card__icon-region" }, Ne = ["src", "alt"], Re = {
307
+ key: 2,
308
+ class: "tr-extension-card__icon tr-extension-card__icon--placeholder"
309
+ }, Ve = { class: "tr-extension-card__content" }, ze = ["role", "tabindex", "title"], Ge = ["title"], He = ["aria-label", "aria-valuenow"], De = /* @__PURE__ */ S({
310
+ __name: "ExtensionCard",
311
+ props: {
312
+ name: {},
313
+ description: {},
314
+ icon: {},
315
+ actions: { default: () => [] },
316
+ primaryActionsLimit: { default: 1 },
317
+ progress: {},
318
+ nameClickable: { type: Boolean, default: !0 },
319
+ overflowMenuLabel: { default: "更多操作" },
320
+ overflowMenuPlacement: { default: "bottom-end" },
321
+ overflowMenuShowIcons: { type: Boolean, default: !0 }
322
+ },
323
+ emits: ["name-click", "action"],
324
+ setup(t, { emit: u }) {
325
+ const o = t, m = V(), d = u, l = _(() => o.actions.filter((f) => !f.hidden)), a = _(() => Math.max(0, Math.floor(o.primaryActionsLimit))), s = _(() => l.value.slice(0, a.value)), n = _(() => l.value.slice(a.value)), e = _(() => s.value.length > 0 || n.value.length > 0), c = _(() => o.progress === "indeterminate" || o.progress === void 0 ? o.progress : Math.min(100, Math.max(0, o.progress))), b = _(() => !!m["primary-action"]), y = (f) => {
326
+ d("action", f);
327
+ }, w = (f) => {
328
+ o.nameClickable && d("name-click", f);
329
+ }, M = (f) => {
330
+ !o.nameClickable || f.key !== "Enter" && f.key !== " " || (f.preventDefault(), d("name-click", f));
331
+ };
332
+ return (f, r) => (i(), p("div", Le, [
333
+ h("div", Be, [
334
+ typeof t.icon == "string" && t.icon ? (i(), p("img", {
335
+ key: 0,
336
+ src: t.icon,
337
+ alt: t.name,
338
+ class: "tr-extension-card__icon"
339
+ }, null, 8, Ne)) : t.icon ? (i(), k(P(t.icon), {
340
+ key: 1,
341
+ class: "tr-extension-card__icon"
342
+ })) : (i(), p("div", Re, C(t.name.slice(0, 1)), 1))
343
+ ]),
344
+ h("div", Ve, [
345
+ h("div", {
346
+ class: x(["tr-extension-card__name", { "is-clickable": t.nameClickable }]),
347
+ role: t.nameClickable ? "button" : void 0,
348
+ tabindex: t.nameClickable ? 0 : void 0,
349
+ title: t.name,
350
+ onClick: w,
351
+ onKeydown: M
352
+ }, C(t.name), 43, ze),
353
+ t.description ? (i(), p("div", {
354
+ key: 0,
355
+ class: "tr-extension-card__description",
356
+ title: t.description
357
+ }, C(t.description), 9, Ge)) : g("", !0)
358
+ ]),
359
+ e.value ? (i(), p("div", {
360
+ key: 0,
361
+ class: "tr-extension-card__actions",
362
+ onClick: r[1] || (r[1] = D(() => {
363
+ }, ["stop"])),
364
+ onKeydown: r[2] || (r[2] = D(() => {
365
+ }, ["stop"]))
366
+ }, [
367
+ s.value.length ? (i(), k(Te, {
368
+ key: 0,
369
+ actions: s.value,
370
+ onAction: r[0] || (r[0] = (v) => d("action", v))
371
+ }, se({ _: 2 }, [
372
+ b.value ? {
373
+ name: "primary-action",
374
+ fn: R((v) => [
375
+ A(f.$slots, "primary-action", ie(re(v)), void 0, !0)
376
+ ]),
377
+ key: "0"
378
+ } : void 0
379
+ ]), 1032, ["actions"])) : g("", !0),
380
+ n.value.length ? (i(), k($e, {
381
+ key: 1,
382
+ actions: n.value,
383
+ label: t.overflowMenuLabel,
384
+ placement: t.overflowMenuPlacement,
385
+ "show-icons": t.overflowMenuShowIcons,
386
+ onAction: y
387
+ }, null, 8, ["actions", "label", "placement", "show-icons"])) : g("", !0)
388
+ ], 32)) : g("", !0),
389
+ c.value !== void 0 ? (i(), p("div", {
390
+ key: 1,
391
+ class: "tr-extension-card__progress",
392
+ role: "progressbar",
393
+ "aria-label": t.name,
394
+ "aria-valuemin": "0",
395
+ "aria-valuemax": "100",
396
+ "aria-valuenow": c.value === "indeterminate" ? void 0 : c.value
397
+ }, [
398
+ h("span", {
399
+ class: x(["tr-extension-card__progress-bar", { "is-indeterminate": c.value === "indeterminate" }]),
400
+ style: W(c.value === "indeterminate" ? void 0 : { width: `${c.value}%` })
401
+ }, null, 6)
402
+ ], 8, He)) : g("", !0)
403
+ ]));
404
+ }
405
+ }), I = /* @__PURE__ */ T(De, [["__scopeId", "data-v-adf5e9c0"]]), Ke = { class: "tr-extension-card-grid" }, We = {
406
+ key: 0,
407
+ class: "tr-extension-card-grid__empty"
408
+ }, je = ["data-card-id"], Fe = /* @__PURE__ */ S({
409
+ __name: "ExtensionCardGrid",
410
+ props: {
411
+ items: {},
412
+ emptyText: { default: "暂无内容" },
413
+ primaryActionsLimit: {},
414
+ nameClickable: { type: Boolean, default: void 0 },
415
+ overflowMenuLabel: {},
416
+ overflowMenuPlacement: {},
417
+ overflowMenuShowIcons: { type: Boolean, default: void 0 }
418
+ },
419
+ emits: ["action", "name-click"],
420
+ setup(t, { emit: u }) {
421
+ const o = t, m = V(), d = u, l = (n) => {
422
+ const { id: e, ...c } = n;
423
+ return {
424
+ ...c,
425
+ primaryActionsLimit: n.primaryActionsLimit ?? o.primaryActionsLimit,
426
+ nameClickable: n.nameClickable ?? o.nameClickable,
427
+ overflowMenuLabel: n.overflowMenuLabel ?? o.overflowMenuLabel,
428
+ overflowMenuPlacement: n.overflowMenuPlacement ?? o.overflowMenuPlacement,
429
+ overflowMenuShowIcons: n.overflowMenuShowIcons ?? o.overflowMenuShowIcons
430
+ };
431
+ }, a = (n, e) => {
432
+ d("action", { itemId: n, action: e });
433
+ }, s = (n, e) => {
434
+ d("name-click", { itemId: n, event: e });
435
+ };
436
+ return (n, e) => (i(), p("ul", Ke, [
437
+ t.items.length === 0 ? (i(), p("li", We, [
438
+ A(n.$slots, "empty", {}, () => [
439
+ le(C(t.emptyText), 1)
440
+ ], !0)
441
+ ])) : (i(!0), p($, { key: 1 }, z(t.items, (c, b) => (i(), p("li", {
442
+ key: c.id,
443
+ class: "tr-extension-card-grid__item",
444
+ "data-card-id": c.id
445
+ }, [
446
+ j(m).item ? A(n.$slots, "item", {
447
+ item: c,
448
+ index: b
449
+ }, void 0, !0, 0) : (i(), k(I, ce({
450
+ key: 1,
451
+ ref_for: !0
452
+ }, l(c), {
453
+ onAction: (y) => a(c.id, y),
454
+ onNameClick: (y) => s(c.id, y)
455
+ }), null, 16, ["onAction", "onNameClick"]))
456
+ ], 8, je))), 128))
457
+ ]));
458
+ }
459
+ }), B = /* @__PURE__ */ T(Fe, [["__scopeId", "data-v-b736eba6"]]);
460
+ I.name = "TrExtensionCard";
461
+ const Oe = function(t) {
462
+ t.component(I.name, I);
463
+ }, Ue = I;
464
+ Ue.install = Oe;
465
+ B.name = "TrExtensionCardGrid";
466
+ const qe = function(t) {
467
+ t.component(B.name, B);
468
+ }, Je = B;
469
+ Je.install = qe;
470
+ export {
471
+ Ue as ExtensionCard,
472
+ Je as ExtensionCardGrid
473
+ };