@opentiny/tiny-robot 0.3.0-rc.3 → 0.3.0-rc.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index4.js ADDED
@@ -0,0 +1,161 @@
1
+ import { onMounted as U, nextTick as B, h as C, defineComponent as g, render as R, onBeforeUnmount as D, Teleport as W, computed as h, ref as E, createBlock as F, openBlock as _, Transition as j, normalizeProps as q, guardReactiveProps as L, withCtx as Z, createElementBlock as G, createCommentVNode as J, renderSlot as K, useSlots as Q, watch as X, useAttrs as Y, resolveDynamicComponent as ee, unref as S, mergeProps as k, createVNode as te } from "vue";
2
+ import { b as oe, a as re, d as ne } from "./index3.js";
3
+ import { t as u } from "./utils.js";
4
+ import { _ as N } from "./_plugin-vue_export-helper.js";
5
+ import { u as se } from "./useSlotRefs.js";
6
+ const pe = g({
7
+ setup: (r) => () => C(W, r.propsFactory(), r.vnodeFactory()),
8
+ props: ["propsFactory", "vnodeFactory"]
9
+ });
10
+ function ae(r, n) {
11
+ let e = null, t = null, s = !1;
12
+ U(() => {
13
+ B(() => {
14
+ s || (t = document.createElement("div"), e = C(pe, { propsFactory: r, vnodeFactory: n }), R(e, t));
15
+ });
16
+ }), D(() => {
17
+ s = !0, B(() => {
18
+ t && (R(null, t), t.remove(), e = null, t = null);
19
+ });
20
+ });
21
+ }
22
+ function ce(r, n) {
23
+ return h(() => {
24
+ var v;
25
+ if (n instanceof HTMLElement)
26
+ return n;
27
+ const e = n, t = oe(r), s = (v = t == null ? void 0 : t.getRootNode) == null ? void 0 : v.call(t), i = s instanceof ShadowRoot, d = i ? s : document.body;
28
+ if (e) {
29
+ if (!i && e === "body")
30
+ return document.body;
31
+ const f = d.querySelector(e);
32
+ if (f instanceof Node) return f;
33
+ }
34
+ return d;
35
+ });
36
+ }
37
+ const ie = /* @__PURE__ */ g({
38
+ __name: "Popper",
39
+ props: {
40
+ show: { type: Boolean },
41
+ transitionProps: {}
42
+ },
43
+ setup(r, { expose: n }) {
44
+ const e = E(null);
45
+ return n({
46
+ popperRef: e
47
+ }), (t, s) => (_(), F(j, q(L(t.transitionProps)), {
48
+ default: Z(() => [
49
+ t.show ? (_(), G("div", {
50
+ key: 0,
51
+ class: "tr-base-popper",
52
+ ref_key: "popperRef",
53
+ ref: e
54
+ }, [
55
+ K(t.$slots, "default", {}, void 0, !0)
56
+ ], 512)) : J("", !0)
57
+ ]),
58
+ _: 3
59
+ }, 16));
60
+ }
61
+ }), le = /* @__PURE__ */ N(ie, [["__scopeId", "data-v-25c13ab7"]]), ue = /* @__PURE__ */ g({
62
+ inheritAttrs: !1,
63
+ __name: "index",
64
+ props: {
65
+ appendTo: {},
66
+ offset: {},
67
+ placement: {
68
+ default: "top-center"
69
+ },
70
+ preventOverflow: {
71
+ type: Boolean
72
+ },
73
+ show: {
74
+ type: Boolean
75
+ },
76
+ transitionProps: {},
77
+ triggerEvents: {}
78
+ },
79
+ setup(r, {
80
+ expose: n
81
+ }) {
82
+ const e = r, t = Q(), {
83
+ vnodes: s,
84
+ ref: i,
85
+ setRef: d
86
+ } = se(t.trigger), v = (o = {}) => {
87
+ const p = {};
88
+ for (const [c, a] of Object.entries(o))
89
+ /^on[A-Z]/.test(c) && typeof a == "function" && (p[c] = a);
90
+ return p;
91
+ }, f = E(null), b = h(() => {
92
+ var o;
93
+ return ((o = f.value) == null ? void 0 : o.popperRef) || null;
94
+ }), m = h(() => {
95
+ var o, p;
96
+ return typeof e.offset == "number" ? {
97
+ mainAxis: e.offset,
98
+ crossAxis: 0
99
+ } : {
100
+ mainAxis: ((o = e.offset) == null ? void 0 : o.mainAxis) ?? 0,
101
+ crossAxis: ((p = e.offset) == null ? void 0 : p.crossAxis) ?? 0
102
+ };
103
+ }), {
104
+ top: $,
105
+ bottom: O,
106
+ left: w,
107
+ right: V,
108
+ width: z,
109
+ update: A
110
+ } = re(i), {
111
+ width: y,
112
+ height: P
113
+ } = ne(b, void 0, {
114
+ box: "border-box"
115
+ }), H = h(() => {
116
+ const {
117
+ placement: o,
118
+ preventOverflow: p
119
+ } = e, c = {}, a = (l, x) => {
120
+ if (!p) {
121
+ c[l] = x;
122
+ return;
123
+ }
124
+ const T = u(l === "top" ? P.value : y.value);
125
+ l === "top" ? c[l] = `clamp(var(--tr-base-popper-min-top), ${x}, calc(var(--tr-base-popper-max-bottom) - ${T}))` : l === "left" && (c[l] = `clamp(var(--tr-base-popper-min-left), ${x}, calc(var(--tr-base-popper-max-right) - ${T}))`);
126
+ };
127
+ return o.includes("top") && a("top", u($.value - P.value - m.value.mainAxis)), o.includes("bottom") && a("top", u(O.value + m.value.mainAxis)), o.includes("left") && a("left", u(w.value + m.value.crossAxis)), o.includes("right") && a("left", u(V.value - y.value + m.value.crossAxis)), o.includes("center") && a("left", u(w.value + z.value / 2 - y.value / 2 + m.value.crossAxis)), c;
128
+ });
129
+ X(() => e.show, (o) => {
130
+ o && A();
131
+ }, {
132
+ flush: "post"
133
+ });
134
+ const I = ce(i, e.appendTo), M = Y();
135
+ return ae(() => ({
136
+ to: I.value
137
+ }), () => te(le, k({
138
+ ref: f,
139
+ show: e.show,
140
+ transitionProps: e.transitionProps,
141
+ style: H.value
142
+ }, M), {
143
+ default: () => {
144
+ var o;
145
+ return [(o = t.content) == null ? void 0 : o.call(t)];
146
+ }
147
+ })), n({
148
+ triggerRef: i,
149
+ popperRef: b,
150
+ update: A
151
+ }), (o, p) => (_(), F(ee(S(s)[0]), k({
152
+ ref: S(d)
153
+ }, v(e.triggerEvents)), null, 16));
154
+ }
155
+ }), fe = /* @__PURE__ */ N(ue, [["__scopeId", "data-v-f1e25842"]]);
156
+ fe.name = "TrBasePopper";
157
+ export {
158
+ fe as B,
159
+ ae as c,
160
+ ce as u
161
+ };
@@ -0,0 +1,212 @@
1
+ import { defineComponent as g, ref as b, useModel as k, watch as O, onUnmounted as R, createElementBlock as _, openBlock as v, createElementVNode as t, withDirectives as c, vModelText as f, createVNode as y, unref as D, createCommentVNode as $ } from "vue";
2
+ import { TinyRadioGroup as E } from "@opentiny/vue";
3
+ import { e as L } from "../index3.js";
4
+ import { _ as T } from "../_plugin-vue_export-helper.js";
5
+ const M = { class: "form-editor__container" }, S = { class: "form-editor__item" }, F = { class: "form-editor__item" }, I = { class: "form-editor__item" }, N = { class: "form-editor__item" }, H = { class: "form-editor__item" }, w = { class: "form-editor__item" }, A = ["src"], C = "https://res.hc-cdn.com/tinyui-design/1.1.0.20250526191525/home/images/tiny-ng.svg", P = /* @__PURE__ */ g({
6
+ __name: "FormEditor",
7
+ props: {
8
+ formData: { required: !0 },
9
+ formDataModifiers: {}
10
+ },
11
+ emits: ["update:formData"],
12
+ setup(i) {
13
+ const d = b(""), o = k(i, "formData"), s = [
14
+ { label: "streamableHttp", text: "流式HTTP(Streamable HTTP)" },
15
+ { label: "sse", text: "服务器发送事件(SSE)" }
16
+ ], { open: n, files: u } = L({
17
+ accept: "image/*",
18
+ // 只接受图片文件
19
+ multiple: !1
20
+ // 只允许选择单个文件
21
+ }), r = () => {
22
+ d.value && d.value !== C && (URL.revokeObjectURL(d.value), d.value = "");
23
+ };
24
+ O(u, (m) => {
25
+ if (m && m.length > 0) {
26
+ const e = m[0];
27
+ if (!e.type.startsWith("image/"))
28
+ return;
29
+ const a = 5 * 1024 * 1024;
30
+ if (e.size > a)
31
+ return;
32
+ r(), d.value = URL.createObjectURL(e), o.value.thumbnail = e;
33
+ }
34
+ });
35
+ const x = () => {
36
+ n();
37
+ };
38
+ return R(() => {
39
+ r();
40
+ }), (m, e) => (v(), _("form", M, [
41
+ t("div", S, [
42
+ e[5] || (e[5] = t("label", { class: "form-editor__label" }, "名称", -1)),
43
+ c(t("input", {
44
+ "onUpdate:modelValue": e[0] || (e[0] = (a) => o.value.name = a),
45
+ class: "form-editor__input",
46
+ type: "text",
47
+ placeholder: "请输入插件名称"
48
+ }, null, 512), [
49
+ [f, o.value.name]
50
+ ])
51
+ ]),
52
+ t("div", F, [
53
+ e[6] || (e[6] = t("label", { class: "form-editor__label" }, "描述", -1)),
54
+ c(t("textarea", {
55
+ "onUpdate:modelValue": e[1] || (e[1] = (a) => o.value.description = a),
56
+ class: "form-editor__textarea",
57
+ placeholder: "请输入插件描述"
58
+ }, null, 512), [
59
+ [f, o.value.description]
60
+ ])
61
+ ]),
62
+ t("div", I, [
63
+ e[7] || (e[7] = t("label", { class: "form-editor__label custom-label" }, "类型", -1)),
64
+ y(D(E), {
65
+ modelValue: o.value.type,
66
+ "onUpdate:modelValue": e[2] || (e[2] = (a) => o.value.type = a),
67
+ options: s,
68
+ class: "form-editor__radio-group"
69
+ }, null, 8, ["modelValue"])
70
+ ]),
71
+ t("div", N, [
72
+ e[8] || (e[8] = t("label", { class: "form-editor__label" }, "URL", -1)),
73
+ c(t("input", {
74
+ "onUpdate:modelValue": e[3] || (e[3] = (a) => o.value.url = a),
75
+ class: "form-editor__input",
76
+ type: "url",
77
+ placeholder: "请输入插件URL"
78
+ }, null, 512), [
79
+ [f, o.value.url]
80
+ ])
81
+ ]),
82
+ t("div", H, [
83
+ e[9] || (e[9] = t("label", { class: "form-editor__label" }, "请求头", -1)),
84
+ c(t("textarea", {
85
+ "onUpdate:modelValue": e[4] || (e[4] = (a) => o.value.headers = a),
86
+ class: "form-editor__textarea",
87
+ placeholder: "请输入请求头,格式为JSON"
88
+ }, null, 512), [
89
+ [f, o.value.headers]
90
+ ])
91
+ ]),
92
+ t("div", w, [
93
+ e[11] || (e[11] = t("label", { class: "form-editor__label custom-label" }, "缩略图", -1)),
94
+ t("div", {
95
+ class: "form-editor__file-upload",
96
+ onClick: x
97
+ }, [
98
+ t("img", {
99
+ src: d.value || C,
100
+ alt: "缩略图预览",
101
+ class: "form-editor__file-preview-image"
102
+ }, null, 8, A),
103
+ e[10] || (e[10] = t("div", { class: "form-editor__file-overlay" }, [
104
+ t("div", { class: "form-editor__file-icon" })
105
+ ], -1))
106
+ ])
107
+ ])
108
+ ]));
109
+ }
110
+ }), h = /* @__PURE__ */ T(P, [["__scopeId", "data-v-e91567e8"]]), j = { class: "code-editor__container" }, q = { class: "code-editor__section" }, z = { class: "code-editor__area" }, B = /* @__PURE__ */ g({
111
+ __name: "CodeEditor",
112
+ props: {
113
+ codeData: { required: !0 },
114
+ codeDataModifiers: {}
115
+ },
116
+ emits: ["update:codeData"],
117
+ setup(i) {
118
+ const d = k(i, "codeData");
119
+ return (o, s) => (v(), _("div", j, [
120
+ t("div", q, [
121
+ t("div", z, [
122
+ c(t("textarea", {
123
+ "onUpdate:modelValue": s[0] || (s[0] = (n) => d.value = n),
124
+ class: "code-editor__textarea",
125
+ placeholder: "请输入 JSON 配置..."
126
+ }, null, 512), [
127
+ [f, d.value]
128
+ ])
129
+ ])
130
+ ])
131
+ ]));
132
+ }
133
+ }), J = /* @__PURE__ */ T(B, [["__scopeId", "data-v-555fb3c4"]]), G = { class: "mcp-add-form" }, W = { class: "mcp-add-form__content" }, K = { class: "mcp-add-form__add-type" }, Q = { key: 0 }, X = { key: 1 }, Y = /* @__PURE__ */ g({
134
+ __name: "index",
135
+ props: {
136
+ addType: { default: "form" },
137
+ formData: {},
138
+ codeData: {}
139
+ },
140
+ emits: ["update:addType", "confirm", "cancel"],
141
+ setup(i, { emit: d }) {
142
+ const o = i, s = d, n = b(
143
+ o.formData || {
144
+ name: "",
145
+ description: "",
146
+ type: "streamableHttp",
147
+ url: "",
148
+ headers: "",
149
+ thumbnail: null
150
+ }
151
+ ), u = b(o.codeData || ""), r = b(o.addType), x = [
152
+ { label: "form", text: "表单添加" },
153
+ { label: "code", text: "代码添加" }
154
+ ], m = () => {
155
+ s("cancel");
156
+ }, e = () => {
157
+ r.value === "form" ? s("confirm", "form", n.value) : s("confirm", "code", u.value);
158
+ }, a = (V) => {
159
+ s("update:addType", V);
160
+ };
161
+ return (V, l) => (v(), _("div", G, [
162
+ t("div", W, [
163
+ t("div", K, [
164
+ l[3] || (l[3] = t("span", { class: "mcp-add-form__add-type-label" }, "添加方式", -1)),
165
+ y(D(E), {
166
+ modelValue: r.value,
167
+ "onUpdate:modelValue": [
168
+ l[0] || (l[0] = (p) => r.value = p),
169
+ a
170
+ ],
171
+ type: "button",
172
+ options: x
173
+ }, null, 8, ["modelValue"])
174
+ ]),
175
+ r.value === "form" ? (v(), _("div", Q, [
176
+ y(D(h), {
177
+ "form-data": n.value,
178
+ "onUpdate:formData": l[1] || (l[1] = (p) => n.value = p)
179
+ }, null, 8, ["form-data"])
180
+ ])) : $("", !0),
181
+ r.value === "code" ? (v(), _("div", X, [
182
+ y(D(J), {
183
+ "code-data": u.value,
184
+ "onUpdate:codeData": l[2] || (l[2] = (p) => u.value = p)
185
+ }, null, 8, ["code-data"])
186
+ ])) : $("", !0)
187
+ ]),
188
+ t("div", { class: "mcp-add-form__footer" }, [
189
+ t("div", {
190
+ class: "button cancel",
191
+ onClick: m
192
+ }, [...l[4] || (l[4] = [
193
+ t("span", null, "取消", -1)
194
+ ])]),
195
+ t("div", {
196
+ class: "button confirm",
197
+ onClick: e
198
+ }, [...l[5] || (l[5] = [
199
+ t("span", null, "确定", -1)
200
+ ])])
201
+ ])
202
+ ]));
203
+ }
204
+ }), U = /* @__PURE__ */ T(Y, [["__scopeId", "data-v-e85f1044"]]);
205
+ U.name = "TrMcpAddForm";
206
+ const Z = function(i) {
207
+ i.component(U.name, U);
208
+ };
209
+ U.install = Z;
210
+ export {
211
+ U as default
212
+ };