@opentiny/tiny-robot 0.3.0-alpha.13 → 0.3.0-alpha.15
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/index.js +7 -7
- package/dist/attachments/index.js +71 -71
- package/dist/bubble/index.js +1905 -1171
- package/dist/container/index.js +29 -29
- package/dist/feedback/index.js +52 -52
- package/dist/flow-layout-buttons/index.js +1 -1
- package/dist/history/index.js +30 -30
- package/dist/index.d.ts +438 -388
- package/dist/index.js +74 -68
- package/dist/index3.js +283 -269
- package/dist/loading.js +4 -0
- package/dist/mcp-server-picker/index.js +632 -632
- package/dist/question/index.js +54 -54
- package/dist/sender/index.js +835 -812
- package/dist/style.css +1 -1
- package/dist/suggestion/index.js +62 -62
- package/dist/suggestion-pills/index.js +1 -1
- package/dist/suggestion-popover/index.js +185 -184
- package/dist/tiny-robot-svgs.js +377 -257
- package/package.json +4 -3
package/dist/suggestion/index.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { defineComponent as U, ref as p, computed as P, watch as K, watchEffect as ne, onMounted as Y, onBeforeUnmount as Z, createElementBlock as v, openBlock as g, normalizeClass as j, createElementVNode as u, withDirectives as oe, Fragment as z, renderList as M, createVNode as E, unref as w, toDisplayString as T, vShow as le, nextTick as ie, renderSlot as
|
|
2
|
-
import {
|
|
1
|
+
import { defineComponent as U, ref as p, computed as P, watch as K, watchEffect as ne, onMounted as Y, onBeforeUnmount as Z, createElementBlock as v, openBlock as g, normalizeClass as j, createElementVNode as u, withDirectives as oe, Fragment as z, renderList as M, createVNode as E, unref as w, toDisplayString as T, vShow as le, nextTick as ie, renderSlot as x, createCommentVNode as N, createBlock as L, normalizeStyle as ae, resolveComponent as ce, withCtx as O } from "vue";
|
|
2
|
+
import { y as Q, d as G, x as re, g as ue, a as ge } from "../tiny-robot-svgs.js";
|
|
3
3
|
function de(l, c = "") {
|
|
4
4
|
const s = document.createElement("div");
|
|
5
5
|
c && (s.className = c), s.style.visibility = "hidden", s.style.position = "absolute", s.style.whiteSpace = "nowrap", s.textContent = l, document.body.appendChild(s);
|
|
@@ -14,7 +14,7 @@ function X(l, c = "") {
|
|
|
14
14
|
const o = de(l, c);
|
|
15
15
|
return F.set(s, o), o;
|
|
16
16
|
}
|
|
17
|
-
const ve = { class: "tr-common-suggestions_content" }, me = { class: "tr-common-suggestions_expanded-wrapper" }, pe = { class: "tr-common-suggestions_expanded-area" },
|
|
17
|
+
const ve = { class: "tr-common-suggestions_content" }, me = { class: "tr-common-suggestions_expanded-wrapper" }, pe = { class: "tr-common-suggestions_expanded-area" }, he = ["onClick"], fe = { class: "tr-common-suggestions_item_icon" }, ye = { class: "tr-common-suggestions_item_text" }, _e = { class: "tr-common-suggestions_container" }, ke = ["onClick"], Ce = { class: "tr-common-suggestions_item_icon" }, xe = { class: "tr-common-suggestions_item_text" }, $e = /* @__PURE__ */ U({
|
|
18
18
|
__name: "SuggestionCapsule",
|
|
19
19
|
props: {
|
|
20
20
|
suggestions: {
|
|
@@ -28,15 +28,15 @@ const ve = { class: "tr-common-suggestions_content" }, me = { class: "tr-common-
|
|
|
28
28
|
},
|
|
29
29
|
emits: ["suggestion-click", "show-expand-button"],
|
|
30
30
|
setup(l, { emit: c }) {
|
|
31
|
-
const s = l, o = c, n = p(null),
|
|
32
|
-
if (
|
|
31
|
+
const s = l, o = c, n = p(null), f = p(!1), t = p(!1), m = p([]), a = p([]), h = p(0), S = p(null), R = P(() => {
|
|
32
|
+
if (h.value <= 0 || a.value.length === 0) return [];
|
|
33
33
|
const i = [], d = [...a.value];
|
|
34
34
|
for (; d.length > 0; )
|
|
35
|
-
i.push(d.splice(0,
|
|
35
|
+
i.push(d.splice(0, h.value));
|
|
36
36
|
return i.reverse();
|
|
37
37
|
}), b = async () => {
|
|
38
38
|
if (await ie(), !n.value || s.suggestions.length === 0) {
|
|
39
|
-
|
|
39
|
+
f.value = !1, o("show-expand-button", !1);
|
|
40
40
|
return;
|
|
41
41
|
}
|
|
42
42
|
const d = n.value.clientWidth;
|
|
@@ -50,12 +50,12 @@ const ve = { class: "tr-common-suggestions_content" }, me = { class: "tr-common-
|
|
|
50
50
|
k += I;
|
|
51
51
|
}
|
|
52
52
|
const q = k / B;
|
|
53
|
-
|
|
53
|
+
h.value = Math.max(1, Math.floor(d / q));
|
|
54
54
|
for (let C = 0; C < s.suggestions.length; C++) {
|
|
55
|
-
const I = s.suggestions[C],
|
|
56
|
-
r +
|
|
55
|
+
const I = s.suggestions[C], V = X(I.text, "tr-common-suggestions_item") + _;
|
|
56
|
+
r + V <= d ? (r += V, m.value.push(I)) : a.value.push(I);
|
|
57
57
|
}
|
|
58
|
-
|
|
58
|
+
f.value = a.value.length > 0, o("show-expand-button", f.value);
|
|
59
59
|
}, y = (i) => {
|
|
60
60
|
o("suggestion-click", i);
|
|
61
61
|
};
|
|
@@ -89,11 +89,11 @@ const ve = { class: "tr-common-suggestions_content" }, me = { class: "tr-common-
|
|
|
89
89
|
class: "tr-common-suggestions_item",
|
|
90
90
|
onClick: (q) => y(k)
|
|
91
91
|
}, [
|
|
92
|
-
u("div",
|
|
92
|
+
u("div", fe, [
|
|
93
93
|
E(w(Q))
|
|
94
94
|
]),
|
|
95
95
|
u("div", ye, T(k.text), 1)
|
|
96
|
-
], 8,
|
|
96
|
+
], 8, he))), 128))
|
|
97
97
|
]))), 128))
|
|
98
98
|
], 512), [
|
|
99
99
|
[le, t.value && a.value.length > 0]
|
|
@@ -108,7 +108,7 @@ const ve = { class: "tr-common-suggestions_content" }, me = { class: "tr-common-
|
|
|
108
108
|
u("div", Ce, [
|
|
109
109
|
E(w(Q))
|
|
110
110
|
]),
|
|
111
|
-
u("div",
|
|
111
|
+
u("div", xe, T(r.text), 1)
|
|
112
112
|
], 8, ke))), 128))
|
|
113
113
|
])
|
|
114
114
|
])
|
|
@@ -134,13 +134,13 @@ const ve = { class: "tr-common-suggestions_content" }, me = { class: "tr-common-
|
|
|
134
134
|
const s = c, o = (n) => {
|
|
135
135
|
s("category-select", n);
|
|
136
136
|
};
|
|
137
|
-
return (n,
|
|
137
|
+
return (n, f) => (g(), v("div", be, [
|
|
138
138
|
(g(!0), v(z, null, M(l.categories, (t) => (g(), v("div", {
|
|
139
139
|
key: t.id,
|
|
140
140
|
class: j(["tr-suggestion-categories-item", { active: l.activeCategory === t.id }]),
|
|
141
141
|
onClick: (m) => o(t.id)
|
|
142
142
|
}, [
|
|
143
|
-
|
|
143
|
+
x(n.$slots, "category-label", { category: t }, () => [
|
|
144
144
|
t.icon ? (g(), v("div", Se, T(t.icon), 1)) : N("", !0),
|
|
145
145
|
u("span", null, T(t.label), 1)
|
|
146
146
|
])
|
|
@@ -175,8 +175,8 @@ function Ee(l, c = {}) {
|
|
|
175
175
|
setTimeout(() => {
|
|
176
176
|
const t = document.querySelector(`.tr-suggestion-list-item:nth-child(${s.value + 1})`), m = t == null ? void 0 : t.closest(".tr-suggestion-content");
|
|
177
177
|
if (t && m) {
|
|
178
|
-
const a = m.getBoundingClientRect(),
|
|
179
|
-
|
|
178
|
+
const a = m.getBoundingClientRect(), h = t.getBoundingClientRect();
|
|
179
|
+
h.bottom > a.bottom ? m.scrollTop += h.bottom - a.bottom : h.top < a.top && (m.scrollTop -= a.top - h.top);
|
|
180
180
|
}
|
|
181
181
|
}, 0);
|
|
182
182
|
};
|
|
@@ -189,7 +189,7 @@ function Ee(l, c = {}) {
|
|
|
189
189
|
}
|
|
190
190
|
};
|
|
191
191
|
}
|
|
192
|
-
const Te = { class: "tr-suggestion-panel" }, Be = { class: "tr-suggestion-header" }, De = { class: "tr-suggestion-header-left" }, Oe = { class: "tr-suggestion-header-icon" }, Re = { class: "tr-suggestion-header-title" },
|
|
192
|
+
const Te = { class: "tr-suggestion-panel" }, Be = { class: "tr-suggestion-header" }, De = { class: "tr-suggestion-header-left" }, Oe = { class: "tr-suggestion-header-icon" }, Re = { class: "tr-suggestion-header-title" }, Ve = { class: "close-icon" }, We = {
|
|
193
193
|
key: 0,
|
|
194
194
|
class: "tr-suggestion-loading"
|
|
195
195
|
}, Ae = { key: 1 }, Ke = ["onClick", "onMouseenter"], ze = { class: "item-content" }, Me = { class: "item-label" }, Ne = {
|
|
@@ -224,11 +224,11 @@ const Te = { class: "tr-suggestion-panel" }, Be = { class: "tr-suggestion-header
|
|
|
224
224
|
},
|
|
225
225
|
emits: ["close", "select", "category-select", "item-hover"],
|
|
226
226
|
setup(l, { expose: c, emit: s }) {
|
|
227
|
-
const o = l, n = s,
|
|
227
|
+
const o = l, n = s, f = p(o.items), { handleKeyDown: t, activeIndex: m } = Ee(f, {
|
|
228
228
|
initialIndex: 0,
|
|
229
229
|
onClose: () => n("close"),
|
|
230
230
|
onSelect: (i) => n("select", i)
|
|
231
|
-
}), a = p(o.categories.length > 0 ? o.categories[0].id : ""),
|
|
231
|
+
}), a = p(o.categories.length > 0 ? o.categories[0].id : ""), h = P(() => {
|
|
232
232
|
if (o.categories.length === 0 || !a.value)
|
|
233
233
|
return o.items;
|
|
234
234
|
const i = o.categories.find((d) => d.id === a.value);
|
|
@@ -250,7 +250,7 @@ const Te = { class: "tr-suggestion-panel" }, Be = { class: "tr-suggestion-header
|
|
|
250
250
|
u("div", Be, [
|
|
251
251
|
u("div", De, [
|
|
252
252
|
u("div", Oe, [
|
|
253
|
-
|
|
253
|
+
x(i.$slots, "title-icon", {}, () => [
|
|
254
254
|
E(w(G), { style: { color: "#1476ff", "font-size": "24px" } })
|
|
255
255
|
])
|
|
256
256
|
]),
|
|
@@ -260,7 +260,7 @@ const Te = { class: "tr-suggestion-panel" }, Be = { class: "tr-suggestion-header
|
|
|
260
260
|
class: "tr-suggestion-close-btn",
|
|
261
261
|
onClick: b
|
|
262
262
|
}, [
|
|
263
|
-
u("span",
|
|
263
|
+
u("span", Ve, [
|
|
264
264
|
E(w(re))
|
|
265
265
|
])
|
|
266
266
|
])
|
|
@@ -273,20 +273,20 @@ const Te = { class: "tr-suggestion-panel" }, Be = { class: "tr-suggestion-header
|
|
|
273
273
|
}, null, 8, ["categories", "active-category"])) : N("", !0),
|
|
274
274
|
u("div", {
|
|
275
275
|
class: "tr-suggestion-content",
|
|
276
|
-
style: ae({ "max-height":
|
|
276
|
+
style: ae({ "max-height": h.value.length > l.maxVisibleItems ? `${l.maxVisibleItems * 56}px` : "auto" })
|
|
277
277
|
}, [
|
|
278
|
-
l.loading ? (g(), v("div",
|
|
279
|
-
|
|
278
|
+
l.loading ? (g(), v("div", We, [
|
|
279
|
+
x(i.$slots, "loading-indicator", {}, () => [
|
|
280
280
|
d[0] || (d[0] = u("div", { class: "tr-suggestion-loading-spinner" }, null, -1))
|
|
281
281
|
])
|
|
282
|
-
])) :
|
|
283
|
-
(g(!0), v(z, null, M(
|
|
282
|
+
])) : h.value.length > 0 ? (g(), v("ul", Ae, [
|
|
283
|
+
(g(!0), v(z, null, M(h.value, (r, _) => (g(), v("li", {
|
|
284
284
|
key: r.id,
|
|
285
285
|
class: j(["tr-suggestion-list-item", { "tr-suggestion-item-active": _ === w(m) }]),
|
|
286
286
|
onClick: (k) => R(r),
|
|
287
287
|
onMouseenter: (k) => y(_)
|
|
288
288
|
}, [
|
|
289
|
-
|
|
289
|
+
x(i.$slots, "item", {
|
|
290
290
|
item: r,
|
|
291
291
|
active: _ === w(m)
|
|
292
292
|
}, () => [
|
|
@@ -297,7 +297,7 @@ const Te = { class: "tr-suggestion-panel" }, Be = { class: "tr-suggestion-header
|
|
|
297
297
|
])
|
|
298
298
|
], 42, Ke))), 128))
|
|
299
299
|
])) : (g(), v("div", qe, [
|
|
300
|
-
|
|
300
|
+
x(i.$slots, "empty", {}, () => [
|
|
301
301
|
d[1] || (d[1] = u("p", null, "无匹配结果", -1))
|
|
302
302
|
])
|
|
303
303
|
]))
|
|
@@ -334,17 +334,17 @@ const Te = { class: "tr-suggestion-panel" }, Be = { class: "tr-suggestion-header
|
|
|
334
334
|
},
|
|
335
335
|
emits: ["update:open", "select", "close", "trigger", "category-select", "suggestion-select", "update:expanded", "fill-template"],
|
|
336
336
|
setup(l, { expose: c, emit: s }) {
|
|
337
|
-
const o = l, n = s,
|
|
337
|
+
const o = l, n = s, f = p(!1), t = p([]), m = p({
|
|
338
338
|
text: "",
|
|
339
339
|
position: 0
|
|
340
|
-
}), a = p(o.defaultExpanded),
|
|
340
|
+
}), a = p(o.defaultExpanded), h = p(!1), S = () => {
|
|
341
341
|
a.value = !a.value, n("update:expanded", a.value);
|
|
342
342
|
}, R = (e) => {
|
|
343
|
-
|
|
344
|
-
}, b = p(""), y = p(-1), i = p(null), d = p(null), r = P(() => o.open !== void 0 ? o.open :
|
|
343
|
+
h.value = e;
|
|
344
|
+
}, b = p(""), y = p(-1), i = p(null), d = p(null), r = P(() => o.open !== void 0 ? o.open : f.value), _ = P(() => {
|
|
345
345
|
if (o.categories.length === 0 || !b.value)
|
|
346
346
|
return t.value;
|
|
347
|
-
const e = o.categories.find((
|
|
347
|
+
const e = o.categories.find(($) => $.id === b.value);
|
|
348
348
|
return e ? e.items : [];
|
|
349
349
|
});
|
|
350
350
|
K(r, (e) => {
|
|
@@ -366,28 +366,28 @@ const Te = { class: "tr-suggestion-panel" }, Be = { class: "tr-suggestion-header
|
|
|
366
366
|
position: 0
|
|
367
367
|
}), e.template && n("fill-template", e.template);
|
|
368
368
|
}, C = (e) => {
|
|
369
|
-
e === !1 ?
|
|
369
|
+
e === !1 ? W() : (typeof e == "object" && e !== null && (m.value = {
|
|
370
370
|
text: e.text || "",
|
|
371
371
|
position: e.position || 0
|
|
372
|
-
}), k(),
|
|
373
|
-
}, I = (e,
|
|
374
|
-
const A = B(e,
|
|
375
|
-
return A ? (m.value = A, C(A), !0) : r.value &&
|
|
376
|
-
},
|
|
372
|
+
}), k(), f.value = !0, n("update:open", !0));
|
|
373
|
+
}, I = (e, $) => {
|
|
374
|
+
const A = B(e, $);
|
|
375
|
+
return A ? (m.value = A, C(A), !0) : r.value && $ === "" ? (C(!1), !0) : !1;
|
|
376
|
+
}, V = (e) => {
|
|
377
377
|
if (r.value && d.value) {
|
|
378
378
|
d.value.handleKeyDown(e);
|
|
379
379
|
return;
|
|
380
380
|
}
|
|
381
|
-
},
|
|
382
|
-
o.open === void 0 && (
|
|
381
|
+
}, W = () => {
|
|
382
|
+
o.open === void 0 && (f.value = !1), n("update:open", !1), n("close");
|
|
383
383
|
}, ee = (e) => {
|
|
384
384
|
b.value = e.id, y.value = 0, n("category-select", e);
|
|
385
|
-
}, te = (e,
|
|
386
|
-
n("select", e.text,
|
|
385
|
+
}, te = (e, $) => {
|
|
386
|
+
n("select", e.text, $), e.template && n("fill-template", e.template), W();
|
|
387
387
|
}, J = (e) => {
|
|
388
|
-
o.closeOnOutsideClick && r.value && i.value && !i.value.contains(e.target) &&
|
|
388
|
+
o.closeOnOutsideClick && r.value && i.value && !i.value.contains(e.target) && W();
|
|
389
389
|
}, se = () => {
|
|
390
|
-
r.value ?
|
|
390
|
+
r.value ? W() : (k(), f.value = !0, n("update:open", !0));
|
|
391
391
|
};
|
|
392
392
|
return Y(() => {
|
|
393
393
|
o.closeOnOutsideClick && document.addEventListener("click", J);
|
|
@@ -395,10 +395,10 @@ const Te = { class: "tr-suggestion-panel" }, Be = { class: "tr-suggestion-header
|
|
|
395
395
|
o.closeOnOutsideClick && document.removeEventListener("click", J);
|
|
396
396
|
}), c({
|
|
397
397
|
trigger: C,
|
|
398
|
-
keyDown:
|
|
398
|
+
keyDown: V,
|
|
399
399
|
input: I,
|
|
400
400
|
toggleExpand: S
|
|
401
|
-
}), (e,
|
|
401
|
+
}), (e, $) => {
|
|
402
402
|
const A = ce("IconEdit");
|
|
403
403
|
return g(), v("div", {
|
|
404
404
|
ref_key: "rootRef",
|
|
@@ -412,14 +412,14 @@ const Te = { class: "tr-suggestion-panel" }, Be = { class: "tr-suggestion-header
|
|
|
412
412
|
}, [
|
|
413
413
|
E(w(G), { style: { color: "#1476ff" } })
|
|
414
414
|
]),
|
|
415
|
-
E(
|
|
415
|
+
E($e, {
|
|
416
416
|
suggestions: e.items,
|
|
417
417
|
isExpanded: a.value,
|
|
418
418
|
onSuggestionClick: q,
|
|
419
419
|
onShowExpandButton: R
|
|
420
420
|
}, {
|
|
421
421
|
"suggestion-icon": O((D) => [
|
|
422
|
-
|
|
422
|
+
x(e.$slots, "capsule-icon", {
|
|
423
423
|
suggestion: D.suggestion
|
|
424
424
|
}, () => [
|
|
425
425
|
E(A)
|
|
@@ -427,7 +427,7 @@ const Te = { class: "tr-suggestion-panel" }, Be = { class: "tr-suggestion-header
|
|
|
427
427
|
]),
|
|
428
428
|
_: 3
|
|
429
429
|
}, 8, ["suggestions", "isExpanded"]),
|
|
430
|
-
|
|
430
|
+
h.value ? (g(), v("div", {
|
|
431
431
|
key: 0,
|
|
432
432
|
class: "tr-suggestion__expand-button",
|
|
433
433
|
onClick: S
|
|
@@ -435,9 +435,9 @@ const Te = { class: "tr-suggestion-panel" }, Be = { class: "tr-suggestion-header
|
|
|
435
435
|
a.value ? (g(), L(w(ge), { key: 1 })) : (g(), L(w(ue), { key: 0 }))
|
|
436
436
|
])) : N("", !0)
|
|
437
437
|
]),
|
|
438
|
-
|
|
438
|
+
x(e.$slots, "trigger", {
|
|
439
439
|
onTrigger: C,
|
|
440
|
-
onKeyDown:
|
|
440
|
+
onKeyDown: V,
|
|
441
441
|
onInput: I
|
|
442
442
|
}),
|
|
443
443
|
r.value ? (g(), L(Le, {
|
|
@@ -451,34 +451,34 @@ const Te = { class: "tr-suggestion-panel" }, Be = { class: "tr-suggestion-header
|
|
|
451
451
|
title: e.title,
|
|
452
452
|
maxVisibleItems: e.maxVisibleItems,
|
|
453
453
|
triggerContext: m.value,
|
|
454
|
-
onClose:
|
|
454
|
+
onClose: W,
|
|
455
455
|
onSelect: te,
|
|
456
456
|
onCategorySelect: ee
|
|
457
457
|
}, {
|
|
458
458
|
"title-icon": O(() => [
|
|
459
|
-
|
|
459
|
+
x(e.$slots, "title-icon", {}, () => [
|
|
460
460
|
E(w(G), { style: { "font-size": "24px", color: "#1476ff" } })
|
|
461
461
|
])
|
|
462
462
|
]),
|
|
463
463
|
"category-label": O((D) => [
|
|
464
|
-
|
|
464
|
+
x(e.$slots, "category-label", {
|
|
465
465
|
category: D.category
|
|
466
466
|
})
|
|
467
467
|
]),
|
|
468
468
|
item: O((D) => [
|
|
469
|
-
|
|
469
|
+
x(e.$slots, "item", {
|
|
470
470
|
item: D.item,
|
|
471
471
|
active: D.active
|
|
472
472
|
})
|
|
473
473
|
]),
|
|
474
474
|
"loading-indicator": O(() => [
|
|
475
|
-
|
|
476
|
-
|
|
475
|
+
x(e.$slots, "loading-indicator", {}, () => [
|
|
476
|
+
$[0] || ($[0] = u("div", { class: "tr-suggestion__loading-spinner" }, null, -1))
|
|
477
477
|
])
|
|
478
478
|
]),
|
|
479
479
|
empty: O(() => [
|
|
480
|
-
|
|
481
|
-
|
|
480
|
+
x(e.$slots, "empty", {}, () => [
|
|
481
|
+
$[1] || ($[1] = u("p", null, "无匹配结果", -1))
|
|
482
482
|
])
|
|
483
483
|
]),
|
|
484
484
|
_: 3
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { defineComponent as K, useSlots as Q, computed as a, createElementBlock as m, openBlock as r, normalizeClass as w, renderSlot as H, createBlock as S, resolveDynamicComponent as b, createCommentVNode as M, toDisplayString as ne, mergeModels as N, useModel as le, ref as d, watch as R, nextTick as $, createElementVNode as D, Fragment as z, renderList as G, isVNode as j, createVNode as q, Transition as se, withCtx as re, unref as ae } from "vue";
|
|
2
|
-
import {
|
|
2
|
+
import { g as ie } from "../tiny-robot-svgs.js";
|
|
3
3
|
import { e as ce, b as J, f as ue, o as fe, g as de } from "../index3.js";
|
|
4
4
|
import { u as me } from "../useSlotRefs.js";
|
|
5
5
|
import { _ as U } from "../_plugin-vue_export-helper.js";
|