@vc-shell/framework 2.4.0-pr295.d5bed36 → 2.4.0-pr297.5a39e15
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/ai-agent/index.js +2 -2
- package/dist/chunks/{VcAiAgentPanel.vue_vue_type_script_setup_true_lang-DKRyBR_M.js → VcAiAgentPanel.vue_vue_type_script_setup_true_lang-bvyt-Rtf.js} +375 -366
- package/dist/chunks/VcAiAgentPanel.vue_vue_type_script_setup_true_lang-bvyt-Rtf.js.map +1 -0
- package/dist/chunks/{VcScheduler.vue_vue_type_script_setup_true_lang-D73V_F2S.js → VcScheduler.vue_vue_type_script_setup_true_lang-BF2WGXWx.js} +2 -2
- package/dist/chunks/VcScheduler.vue_vue_type_script_setup_true_lang-BF2WGXWx.js.map +1 -0
- package/dist/chunks/{index-Cp8w9Q3q.js → index-DYMV0pFy.js} +1 -1
- package/dist/chunks/{index-Cp8w9Q3q.js.map → index-DYMV0pFy.js.map} +1 -1
- package/dist/core/plugins/ai-agent/services/ai-agent-service.d.ts.map +1 -1
- package/dist/core/plugins/ai-agent/services/message-transport.d.ts +2 -0
- package/dist/core/plugins/ai-agent/services/message-transport.d.ts.map +1 -1
- package/dist/core/plugins/ai-agent/types.d.ts +1 -1
- package/dist/core/plugins/ai-agent/types.d.ts.map +1 -1
- package/dist/framework.js +11 -11
- package/dist/locales/de.js +2 -0
- package/dist/locales/en.js +2 -0
- package/dist/locales/en.json +2 -0
- package/dist/locales/types.d.ts +2 -0
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/dist/ui/components/organisms/vc-app/_internal/sidebar/SidebarHeader.vue.d.ts.map +1 -1
- package/dist/ui/index.js +1 -1
- package/package.json +4 -4
- package/dist/chunks/VcAiAgentPanel.vue_vue_type_script_setup_true_lang-DKRyBR_M.js.map +0 -1
- package/dist/chunks/VcScheduler.vue_vue_type_script_setup_true_lang-D73V_F2S.js.map +0 -1
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { ref as D, computed as
|
|
1
|
+
import { ref as D, computed as b, shallowRef as Ge, watch as q, getCurrentInstance as ee, inject as N, isRef as Ve, provide as Pe, defineComponent as H, openBlock as B, createElementBlock as S, createElementVNode as A, createCommentVNode as z, createStaticVNode as Ke, Fragment as Ae, renderList as qe, toDisplayString as K, createVNode as P, createBlock as se, unref as x, withCtx as $, withKeys as U, withModifiers as G, createTextVNode as Ce, Transition as ke, normalizeClass as Me, onUnmounted as ze, normalizeStyle as He } from "vue";
|
|
2
2
|
import { c as W, b as De, d as We, B as Ze, e as Xe, f as Ye, A as be, L as je, g as Qe, T as Je, a as me, _ as ie, E as et } from "./VcAiAgentPanel.vue_vue_type_style_index_0_lang-CZdY18Hq.js";
|
|
3
3
|
import { c as te } from "./vendor-lodash-es-D2n90GJy.js";
|
|
4
4
|
import { u as tt } from "./vendor-vueuse-core-BFa9je5E.js";
|
|
@@ -20,7 +20,7 @@ const at = {
|
|
|
20
20
|
AI_CHAT_MESSAGE: "AI_CHAT_MESSAGE"
|
|
21
21
|
}, ot = "ai-agent-toggle", rt = "lucide-sparkles", it = "AI Assistant", ne = W("ai-agent-panel");
|
|
22
22
|
function st() {
|
|
23
|
-
const e = D("closed"), o = D(!1), t =
|
|
23
|
+
const e = D("closed"), o = D(!1), t = b(() => e.value !== "closed"), s = b(() => e.value === "expanded"), n = () => {
|
|
24
24
|
e.value === "closed" && (e.value = "open", ne.debug("Panel opened"));
|
|
25
25
|
}, c = () => {
|
|
26
26
|
e.value = "closed", o.value = !1, ne.debug("Panel closed, reset initialized state");
|
|
@@ -57,8 +57,8 @@ function we(e) {
|
|
|
57
57
|
}
|
|
58
58
|
function lt(e) {
|
|
59
59
|
const { userGetter: o, bladeGetter: t, localeGetter: s, tokenGetter: n } = e, c = D(/* @__PURE__ */ new Map()), f = () => {
|
|
60
|
-
const
|
|
61
|
-
return
|
|
60
|
+
const E = t();
|
|
61
|
+
return E ? c.value.get(E.id) ?? {
|
|
62
62
|
items: [],
|
|
63
63
|
type: "list",
|
|
64
64
|
suggestions: void 0
|
|
@@ -67,166 +67,174 @@ function lt(e) {
|
|
|
67
67
|
type: "list",
|
|
68
68
|
suggestions: void 0
|
|
69
69
|
};
|
|
70
|
-
},
|
|
70
|
+
}, l = b(() => f().items), d = b(() => f().type), u = b(() => f().suggestions), h = b(() => l.value.length);
|
|
71
71
|
return {
|
|
72
|
-
contextItems:
|
|
73
|
-
contextType:
|
|
74
|
-
contextSuggestions:
|
|
75
|
-
totalItemsCount:
|
|
76
|
-
setContextData: (
|
|
77
|
-
const M = t()?.id ||
|
|
78
|
-
return M ?
|
|
72
|
+
contextItems: l,
|
|
73
|
+
contextType: d,
|
|
74
|
+
contextSuggestions: u,
|
|
75
|
+
totalItemsCount: h,
|
|
76
|
+
setContextData: (E, w, T, F) => {
|
|
77
|
+
const M = t()?.id || F;
|
|
78
|
+
return M ? E.length === 0 && !T ? (c.value.delete(M), he.debug(`Context cleared for blade: ${M}`), { cleared: !0 }) : (c.value.set(M, { items: E, type: w, suggestions: T }), he.debug(`Context set for blade: ${M}, items: ${E.length}, type: ${w}`), { cleared: !1 }) : (he.warn("Cannot set context data: no blade id available"), { cleared: !1 });
|
|
79
79
|
},
|
|
80
80
|
buildInitPayload: async () => {
|
|
81
|
-
const
|
|
81
|
+
const E = n ? await n() ?? void 0 : void 0;
|
|
82
82
|
return {
|
|
83
83
|
userId: o()?.id || "",
|
|
84
84
|
locale: s(),
|
|
85
85
|
blade: we(t()),
|
|
86
|
-
contextType:
|
|
87
|
-
items: te(
|
|
88
|
-
suggestions:
|
|
89
|
-
accessToken:
|
|
86
|
+
contextType: d.value,
|
|
87
|
+
items: te(l.value),
|
|
88
|
+
suggestions: u.value ? te(u.value) : void 0,
|
|
89
|
+
accessToken: E
|
|
90
90
|
};
|
|
91
91
|
},
|
|
92
92
|
buildUpdatePayload: async () => {
|
|
93
|
-
const
|
|
93
|
+
const E = n ? await n() ?? void 0 : void 0;
|
|
94
94
|
return {
|
|
95
95
|
blade: we(t()),
|
|
96
|
-
contextType:
|
|
97
|
-
items: te(
|
|
98
|
-
suggestions:
|
|
96
|
+
contextType: d.value,
|
|
97
|
+
items: te(l.value),
|
|
98
|
+
suggestions: u.value ? te(u.value) : void 0,
|
|
99
99
|
locale: s(),
|
|
100
|
-
accessToken:
|
|
100
|
+
accessToken: E
|
|
101
101
|
};
|
|
102
102
|
}
|
|
103
103
|
};
|
|
104
104
|
}
|
|
105
|
-
const
|
|
106
|
-
function
|
|
107
|
-
const { getConfig: o, isEmbedded: t, navigateToBlade: s } = e,
|
|
108
|
-
function g
|
|
109
|
-
switch (
|
|
105
|
+
const O = W("ai-agent-transport");
|
|
106
|
+
function ct(e) {
|
|
107
|
+
const { getConfig: o, isEmbedded: t, navigateToBlade: s, closePanel: n } = e, c = Ge(null), f = D(!1), l = D(!1), d = /* @__PURE__ */ new Set(), u = /* @__PURE__ */ new Set();
|
|
108
|
+
function h(g, C) {
|
|
109
|
+
switch (g) {
|
|
110
110
|
case "NAVIGATE_TO_APP": {
|
|
111
|
-
const
|
|
112
|
-
s &&
|
|
111
|
+
const w = C;
|
|
112
|
+
s && w?.bladeName && (s(w.bladeName, w.param, w.options), O.debug(`Navigation requested to: ${w.bladeName}`));
|
|
113
|
+
break;
|
|
114
|
+
}
|
|
115
|
+
// The panel's own Escape handler listens on the host document, which never sees a
|
|
116
|
+
// keystroke delivered to a cross-origin iframe. So while the chatbot holds focus the
|
|
117
|
+
// only route back is the chatbot relaying it here (VCST-5673). Closing a panel exposes
|
|
118
|
+
// nothing, and the sender's origin is already checked before this runs.
|
|
119
|
+
case "CLOSE_PANEL": {
|
|
120
|
+
n && (n(), O.debug("Panel close requested by the chatbot"));
|
|
113
121
|
break;
|
|
114
122
|
}
|
|
115
123
|
}
|
|
116
|
-
const
|
|
117
|
-
type:
|
|
118
|
-
payload:
|
|
124
|
+
const E = {
|
|
125
|
+
type: g,
|
|
126
|
+
payload: C,
|
|
119
127
|
timestamp: Date.now()
|
|
120
128
|
};
|
|
121
|
-
d.forEach((
|
|
129
|
+
d.forEach((w) => {
|
|
122
130
|
try {
|
|
123
|
-
|
|
124
|
-
} catch (
|
|
125
|
-
|
|
131
|
+
w(E);
|
|
132
|
+
} catch (T) {
|
|
133
|
+
O.error("Handler error:", T);
|
|
126
134
|
}
|
|
127
135
|
});
|
|
128
136
|
}
|
|
129
|
-
function
|
|
130
|
-
const
|
|
131
|
-
if (
|
|
132
|
-
|
|
137
|
+
function v(g) {
|
|
138
|
+
const E = o().allowedOrigins ?? [];
|
|
139
|
+
if (E.length === 0) {
|
|
140
|
+
O.warn(
|
|
133
141
|
"Ignoring postMessage: aiAgentConfig.allowedOrigins is empty. Configure explicit origins to enable the AI agent bridge.",
|
|
134
|
-
{ origin:
|
|
142
|
+
{ origin: g.origin, type: g.data?.type }
|
|
135
143
|
);
|
|
136
144
|
return;
|
|
137
145
|
}
|
|
138
|
-
if (
|
|
139
|
-
|
|
146
|
+
if (E.includes("*")) {
|
|
147
|
+
O.error(
|
|
140
148
|
'Refusing postMessage with wildcard allowedOrigins. Replace "*" with explicit origins (e.g. ["https://chat.example.com"]).'
|
|
141
149
|
);
|
|
142
150
|
return;
|
|
143
151
|
}
|
|
144
|
-
if (!
|
|
152
|
+
if (!E.includes(g.origin))
|
|
145
153
|
return;
|
|
146
|
-
const
|
|
147
|
-
if (!(!
|
|
148
|
-
switch (
|
|
154
|
+
const w = g.data;
|
|
155
|
+
if (!(!w?.type || typeof w.type != "string"))
|
|
156
|
+
switch (O.debug(`Message received: ${w.type}`), w.type) {
|
|
149
157
|
// Embedded: parent forwards chat messages wrapped in AI_CHAT_MESSAGE
|
|
150
158
|
case "AI_CHAT_MESSAGE": {
|
|
151
159
|
if (t) {
|
|
152
|
-
const
|
|
153
|
-
|
|
160
|
+
const T = w.payload;
|
|
161
|
+
T?.type && h(T.type, T.payload);
|
|
154
162
|
}
|
|
155
163
|
return;
|
|
156
164
|
}
|
|
157
165
|
// Normal: chatbot signals it's ready
|
|
158
166
|
case "CHAT_READY":
|
|
159
|
-
u.forEach((
|
|
167
|
+
u.forEach((T) => {
|
|
160
168
|
try {
|
|
161
|
-
|
|
162
|
-
} catch (
|
|
163
|
-
|
|
169
|
+
T();
|
|
170
|
+
} catch (F) {
|
|
171
|
+
O.error("ChatReady handler error:", F);
|
|
164
172
|
}
|
|
165
173
|
});
|
|
166
174
|
break;
|
|
167
175
|
// Normal: direct chat protocol messages
|
|
168
176
|
default:
|
|
169
|
-
|
|
177
|
+
h(w.type, w.payload);
|
|
170
178
|
break;
|
|
171
179
|
}
|
|
172
180
|
}
|
|
173
181
|
return {
|
|
174
|
-
iframeRef:
|
|
175
|
-
pendingInitContext:
|
|
176
|
-
isListenerRegistered:
|
|
177
|
-
setIframeRef(
|
|
178
|
-
|
|
182
|
+
iframeRef: c,
|
|
183
|
+
pendingInitContext: f,
|
|
184
|
+
isListenerRegistered: l,
|
|
185
|
+
setIframeRef(g) {
|
|
186
|
+
c.value = g, O.debug("Iframe ref set:", g ? "available" : "null");
|
|
179
187
|
},
|
|
180
|
-
sendToIframe(
|
|
181
|
-
if (!
|
|
182
|
-
|
|
188
|
+
sendToIframe(g) {
|
|
189
|
+
if (!c.value?.contentWindow) {
|
|
190
|
+
O.warn("Cannot send message: iframe not available");
|
|
183
191
|
return;
|
|
184
192
|
}
|
|
185
|
-
const
|
|
186
|
-
if (!
|
|
187
|
-
|
|
193
|
+
const C = o().allowedOrigins?.[0];
|
|
194
|
+
if (!C || C === "*") {
|
|
195
|
+
O.error(
|
|
188
196
|
"Refusing to send to iframe: aiAgentConfig.allowedOrigins must contain an explicit origin. Message dropped to avoid leaking data (including access tokens) to arbitrary origins.",
|
|
189
|
-
{ type:
|
|
197
|
+
{ type: g.type }
|
|
190
198
|
);
|
|
191
199
|
return;
|
|
192
200
|
}
|
|
193
|
-
|
|
201
|
+
c.value.contentWindow.postMessage(g, C), O.debug(`Sent to iframe: ${g.type}`);
|
|
194
202
|
},
|
|
195
|
-
sendToParent(
|
|
203
|
+
sendToParent(g) {
|
|
196
204
|
if (!window.parent || window.parent === window) {
|
|
197
|
-
|
|
205
|
+
O.warn("Cannot send to parent: not in iframe");
|
|
198
206
|
return;
|
|
199
207
|
}
|
|
200
|
-
const
|
|
201
|
-
if (!
|
|
202
|
-
|
|
208
|
+
const C = o().parentOrigin;
|
|
209
|
+
if (!C || C === "*") {
|
|
210
|
+
O.error(
|
|
203
211
|
"Refusing to send to parent: aiAgentConfig.parentOrigin must be an explicit origin. Message dropped to avoid leaking data (including access tokens) to arbitrary origins.",
|
|
204
|
-
{ type:
|
|
212
|
+
{ type: g.type }
|
|
205
213
|
);
|
|
206
214
|
return;
|
|
207
215
|
}
|
|
208
|
-
window.parent.postMessage(
|
|
216
|
+
window.parent.postMessage(g, C), O.debug(`Sent to parent: ${g.type}`);
|
|
209
217
|
},
|
|
210
218
|
startListening() {
|
|
211
|
-
|
|
219
|
+
l.value || (window.addEventListener("message", v), l.value = !0);
|
|
212
220
|
},
|
|
213
221
|
stopListening() {
|
|
214
|
-
|
|
222
|
+
l.value && (window.removeEventListener("message", v), l.value = !1);
|
|
215
223
|
},
|
|
216
|
-
onChatReady(
|
|
217
|
-
return u.add(
|
|
218
|
-
u.delete(
|
|
224
|
+
onChatReady(g) {
|
|
225
|
+
return u.add(g), () => {
|
|
226
|
+
u.delete(g);
|
|
219
227
|
};
|
|
220
228
|
},
|
|
221
|
-
onMessage(
|
|
222
|
-
return d.add(
|
|
223
|
-
d.delete(
|
|
229
|
+
onMessage(g) {
|
|
230
|
+
return d.add(g), () => {
|
|
231
|
+
d.delete(g);
|
|
224
232
|
};
|
|
225
233
|
}
|
|
226
234
|
};
|
|
227
235
|
}
|
|
228
236
|
const ae = W("ai-agent-service");
|
|
229
|
-
function
|
|
237
|
+
function dt(e) {
|
|
230
238
|
const {
|
|
231
239
|
userGetter: o,
|
|
232
240
|
bladeGetter: t,
|
|
@@ -234,83 +242,84 @@ function ct(e) {
|
|
|
234
242
|
tokenGetter: n,
|
|
235
243
|
navigateToBlade: c,
|
|
236
244
|
initialConfig: f,
|
|
237
|
-
isEmbedded:
|
|
238
|
-
} = e,
|
|
245
|
+
isEmbedded: l = !1
|
|
246
|
+
} = e, d = D({ ...at, ...f }), u = st(), h = lt({
|
|
239
247
|
userGetter: o,
|
|
240
248
|
bladeGetter: t,
|
|
241
249
|
localeGetter: s,
|
|
242
250
|
tokenGetter: n
|
|
243
|
-
}),
|
|
244
|
-
getConfig: () =>
|
|
245
|
-
isEmbedded:
|
|
246
|
-
navigateToBlade: c
|
|
247
|
-
|
|
251
|
+
}), v = ct({
|
|
252
|
+
getConfig: () => d.value,
|
|
253
|
+
isEmbedded: l,
|
|
254
|
+
navigateToBlade: c,
|
|
255
|
+
closePanel: () => u.close()
|
|
256
|
+
}), g = b(() => ({
|
|
248
257
|
user: o(),
|
|
249
258
|
currentBlade: t(),
|
|
250
|
-
items:
|
|
251
|
-
})),
|
|
252
|
-
if (
|
|
253
|
-
|
|
254
|
-
const
|
|
255
|
-
|
|
259
|
+
items: h.contextItems.value
|
|
260
|
+
})), C = async () => {
|
|
261
|
+
if (v.pendingInitContext.value && v.iframeRef.value?.contentWindow) {
|
|
262
|
+
v.pendingInitContext.value = !1, u.isInitialized.value = !0;
|
|
263
|
+
const I = await h.buildInitPayload();
|
|
264
|
+
v.sendToIframe({ type: "INIT_CONTEXT", payload: I }), ae.debug("Flushed pending INIT_CONTEXT");
|
|
256
265
|
}
|
|
257
266
|
};
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
})) : (
|
|
262
|
-
}), q(
|
|
263
|
-
() => ({ currentBlade:
|
|
267
|
+
v.onChatReady(() => {
|
|
268
|
+
v.iframeRef.value?.contentWindow ? (u.isInitialized.value = !0, h.buildInitPayload().then((I) => {
|
|
269
|
+
v.sendToIframe({ type: "INIT_CONTEXT", payload: I }), ae.info("Chatbot ready, sent INIT_CONTEXT");
|
|
270
|
+
})) : (v.pendingInitContext.value = !0, ae.info("Chatbot ready, iframe ref not available yet — pending INIT_CONTEXT"));
|
|
271
|
+
}), q(v.iframeRef, () => C()), q(
|
|
272
|
+
() => ({ currentBlade: g.value.currentBlade, items: g.value.items }),
|
|
264
273
|
async () => {
|
|
265
|
-
if (
|
|
266
|
-
const
|
|
267
|
-
|
|
274
|
+
if (l) {
|
|
275
|
+
const I = await h.buildInitPayload();
|
|
276
|
+
v.sendToParent({ type: "AI_CONTEXT_UPDATE", payload: I });
|
|
268
277
|
return;
|
|
269
278
|
}
|
|
270
|
-
if (
|
|
271
|
-
const
|
|
272
|
-
|
|
279
|
+
if (u.isOpen.value && u.isInitialized.value && v.iframeRef.value?.contentWindow) {
|
|
280
|
+
const I = await h.buildUpdatePayload();
|
|
281
|
+
v.sendToIframe({ type: "UPDATE_CONTEXT", payload: I });
|
|
273
282
|
}
|
|
274
283
|
},
|
|
275
284
|
{ deep: !0 }
|
|
276
285
|
);
|
|
277
|
-
const
|
|
278
|
-
|
|
279
|
-
}, M = (
|
|
280
|
-
const { cleared: Y } =
|
|
281
|
-
|
|
286
|
+
const E = () => l ? v.sendToParent({ type: "AI_TOGGLE_PANEL" }) : u.open(), w = () => l ? v.sendToParent({ type: "AI_TOGGLE_PANEL" }) : u.close(), T = () => l ? v.sendToParent({ type: "AI_TOGGLE_PANEL" }) : u.toggle(), F = (I) => {
|
|
287
|
+
v.setIframeRef(I), C();
|
|
288
|
+
}, M = (I, R, Z, X) => {
|
|
289
|
+
const { cleared: Y } = h.setContextData(I, R, Z, X);
|
|
290
|
+
l && Y && v.sendToParent({ type: "AI_CONTEXT_CLEAR" });
|
|
282
291
|
};
|
|
283
|
-
return
|
|
292
|
+
return v.startListening(), l && (v.sendToParent({
|
|
284
293
|
type: "EMBEDDED_APP_READY",
|
|
285
294
|
payload: { supportedFeatures: ["ai-agent"] }
|
|
286
295
|
}), ae.info("Embedded mode: sent EMBEDDED_APP_READY to parent")), {
|
|
287
296
|
// State
|
|
288
|
-
panelState:
|
|
289
|
-
config:
|
|
290
|
-
context:
|
|
291
|
-
isOpen:
|
|
292
|
-
isExpanded:
|
|
293
|
-
totalItemsCount:
|
|
297
|
+
panelState: u.panelState,
|
|
298
|
+
config: d,
|
|
299
|
+
context: g,
|
|
300
|
+
isOpen: b(() => !l && u.isOpen.value),
|
|
301
|
+
isExpanded: u.isExpanded,
|
|
302
|
+
totalItemsCount: h.totalItemsCount,
|
|
294
303
|
// Panel control
|
|
295
|
-
openPanel:
|
|
296
|
-
closePanel:
|
|
297
|
-
togglePanel:
|
|
298
|
-
expandPanel: () =>
|
|
299
|
-
collapsePanel: () =>
|
|
304
|
+
openPanel: E,
|
|
305
|
+
closePanel: w,
|
|
306
|
+
togglePanel: T,
|
|
307
|
+
expandPanel: () => u.expand(),
|
|
308
|
+
collapsePanel: () => u.collapse(),
|
|
300
309
|
// Configuration
|
|
301
|
-
setConfig: (
|
|
302
|
-
|
|
310
|
+
setConfig: (I) => {
|
|
311
|
+
d.value = { ...d.value, ...I };
|
|
303
312
|
},
|
|
304
313
|
// Communication
|
|
305
|
-
sendMessage: (
|
|
306
|
-
|
|
314
|
+
sendMessage: (I, R) => {
|
|
315
|
+
v.sendToIframe({ type: I, payload: R });
|
|
307
316
|
},
|
|
308
|
-
onMessage:
|
|
317
|
+
onMessage: v.onMessage,
|
|
309
318
|
// Internal API
|
|
310
|
-
iframeRef:
|
|
311
|
-
_setIframeRef:
|
|
312
|
-
_startListening:
|
|
313
|
-
_stopListening:
|
|
319
|
+
iframeRef: v.iframeRef,
|
|
320
|
+
_setIframeRef: F,
|
|
321
|
+
_startListening: v.startListening,
|
|
322
|
+
_stopListening: v.stopListening,
|
|
314
323
|
_setContextData: M
|
|
315
324
|
};
|
|
316
325
|
}
|
|
@@ -463,19 +472,19 @@ function xe(e, o) {
|
|
|
463
472
|
return { path: e ? `/${e}` : "/", query: {} };
|
|
464
473
|
const t = o[0], s = Se(t.url);
|
|
465
474
|
let n;
|
|
466
|
-
for (let
|
|
467
|
-
if (o[
|
|
468
|
-
n = o[
|
|
475
|
+
for (let l = o.length - 1; l >= 1; l--)
|
|
476
|
+
if (o[l].visible) {
|
|
477
|
+
n = o[l];
|
|
469
478
|
break;
|
|
470
479
|
}
|
|
471
480
|
let c = e ? `/${e}` : "";
|
|
472
481
|
if (s && (c += `/${s}`), n) {
|
|
473
|
-
const
|
|
474
|
-
|
|
482
|
+
const l = Se(n.url);
|
|
483
|
+
l && (c += `/${l}`), n.param && (c += `/${n.param}`);
|
|
475
484
|
}
|
|
476
485
|
const f = {};
|
|
477
|
-
for (const
|
|
478
|
-
|
|
486
|
+
for (const l of o)
|
|
487
|
+
l.visible && l.query && Object.assign(f, l.query);
|
|
479
488
|
return { path: c || "/", query: f };
|
|
480
489
|
}
|
|
481
490
|
function Bn(e, o) {
|
|
@@ -506,7 +515,7 @@ function yt(e, o) {
|
|
|
506
515
|
return { syncUrlPush: t, syncUrlReplace: s };
|
|
507
516
|
}
|
|
508
517
|
const Bt = "useBlade() was called outside a blade. Navigation methods (openBlade) work everywhere, but blade-specific methods require the component to be rendered inside VcBladeSlot.";
|
|
509
|
-
function
|
|
518
|
+
function y(e) {
|
|
510
519
|
throw new Error(`[vc-shell] ${e} requires blade context.
|
|
511
520
|
${Bt}`);
|
|
512
521
|
}
|
|
@@ -518,129 +527,129 @@ function It() {
|
|
|
518
527
|
);
|
|
519
528
|
const t = e, s = o, n = ee() ? N(Ze, void 0) : void 0, c = ee() ? N(Xe, void 0) : void 0;
|
|
520
529
|
let f;
|
|
521
|
-
function
|
|
530
|
+
function l() {
|
|
522
531
|
if (f) return f;
|
|
523
532
|
const r = Fe?.router;
|
|
524
533
|
return r && (f = yt(r, t)), f;
|
|
525
534
|
}
|
|
526
|
-
const
|
|
535
|
+
const d = b(() => (n || y("id"), n.value.id)), u = b(() => (n || y("param"), n.value.param)), h = b(() => (n || y("options"), n.value.options)), v = b(() => (n || y("query"), n.value.query)), g = b(() => (n || y("closable"), n.value.parentId !== void 0)), C = b(() => (n || y("expanded"), t.activeBlade.value?.id === n.value.id)), E = b(() => (n || y("name"), n.value.name)), w = b(() => {
|
|
527
536
|
if (!n) return;
|
|
528
537
|
const r = n.value.id;
|
|
529
|
-
return t.blades.value.find((
|
|
538
|
+
return t.blades.value.find((m) => m.parentId === r)?.param;
|
|
530
539
|
});
|
|
531
|
-
let
|
|
532
|
-
function
|
|
533
|
-
if (
|
|
540
|
+
let T = !1;
|
|
541
|
+
function F(r) {
|
|
542
|
+
if (T) {
|
|
534
543
|
console.warn(
|
|
535
544
|
"[vc-shell] provideBladeData() called more than once in the same blade. Only the first call takes effect."
|
|
536
545
|
);
|
|
537
546
|
return;
|
|
538
547
|
}
|
|
539
|
-
|
|
540
|
-
const
|
|
541
|
-
|
|
548
|
+
T = !0;
|
|
549
|
+
const m = Ve(r) ? r : D(r);
|
|
550
|
+
Pe(Ye, m);
|
|
542
551
|
}
|
|
543
552
|
async function M(r) {
|
|
544
|
-
const { isWorkspace:
|
|
545
|
-
if (
|
|
553
|
+
const { isWorkspace: m, ...k } = r;
|
|
554
|
+
if (m)
|
|
546
555
|
await t.openWorkspace(k);
|
|
547
556
|
else {
|
|
548
557
|
const L = n?.value.id;
|
|
549
558
|
L ? await t.openBlade({ ...k, parentId: L }) : await t.openBlade(k);
|
|
550
559
|
}
|
|
551
|
-
t.activeBlade.value?.url &&
|
|
560
|
+
t.activeBlade.value?.url && l()?.syncUrlPush();
|
|
552
561
|
}
|
|
553
|
-
async function
|
|
554
|
-
n ||
|
|
562
|
+
async function I() {
|
|
563
|
+
n || y("closeSelf()");
|
|
555
564
|
const r = await t.closeBlade(n.value.id);
|
|
556
|
-
return r ||
|
|
565
|
+
return r || l()?.syncUrlReplace(), r;
|
|
557
566
|
}
|
|
558
567
|
async function R() {
|
|
559
|
-
n ||
|
|
568
|
+
n || y("closeChildren()"), await t.closeChildren(n.value.id), l()?.syncUrlReplace();
|
|
560
569
|
}
|
|
561
570
|
async function Z(r) {
|
|
562
|
-
n ||
|
|
571
|
+
n || y("replaceWith()"), await t.replaceCurrentBlade({
|
|
563
572
|
...r,
|
|
564
573
|
parentId: n.value.parentId
|
|
565
|
-
}), t.activeBlade.value?.url &&
|
|
574
|
+
}), t.activeBlade.value?.url && l()?.syncUrlReplace();
|
|
566
575
|
}
|
|
567
576
|
async function X(r) {
|
|
568
|
-
n ||
|
|
577
|
+
n || y("coverWith()"), await t.coverCurrentBlade({
|
|
569
578
|
...r,
|
|
570
579
|
parentId: n.value.parentId
|
|
571
|
-
}), t.activeBlade.value?.url &&
|
|
580
|
+
}), t.activeBlade.value?.url && l()?.syncUrlPush();
|
|
572
581
|
}
|
|
573
|
-
async function Y(r,
|
|
574
|
-
return n ||
|
|
582
|
+
async function Y(r, m) {
|
|
583
|
+
return n || y("callParent()"), s.callParent(n.value.id, r, m);
|
|
575
584
|
}
|
|
576
585
|
function le(r) {
|
|
577
|
-
n ||
|
|
578
|
-
}
|
|
579
|
-
function de(r) {
|
|
580
|
-
n || w("onBeforeClose()"), t.registerBeforeClose(n.value.id, r);
|
|
586
|
+
n || y("exposeToChildren()"), s.exposeToChildren(n.value.id, r);
|
|
581
587
|
}
|
|
582
588
|
function ce(r) {
|
|
583
|
-
n ||
|
|
589
|
+
n || y("onBeforeClose()"), t.registerBeforeClose(n.value.id, r);
|
|
590
|
+
}
|
|
591
|
+
function de(r) {
|
|
592
|
+
n || y("setError()"), t.setBladeError(n.value.id, r);
|
|
584
593
|
}
|
|
585
594
|
function j() {
|
|
586
|
-
n ||
|
|
595
|
+
n || y("clearError()"), t.clearBladeError(n.value.id);
|
|
587
596
|
}
|
|
588
597
|
let ue = 0;
|
|
589
598
|
function pe(r) {
|
|
590
|
-
c ||
|
|
591
|
-
const
|
|
599
|
+
c || y("addBanner()");
|
|
600
|
+
const m = `banner-${n.value.id}-${++ue}`;
|
|
592
601
|
return c.value.push({
|
|
593
602
|
...r,
|
|
594
|
-
id:
|
|
603
|
+
id: m,
|
|
595
604
|
dismissible: r.dismissible ?? !1
|
|
596
|
-
}),
|
|
605
|
+
}), m;
|
|
597
606
|
}
|
|
598
607
|
function fe(r) {
|
|
599
|
-
c ||
|
|
608
|
+
c || y("removeBanner()"), c.value = c.value.filter((m) => m.id !== r);
|
|
600
609
|
}
|
|
601
610
|
function ge() {
|
|
602
|
-
c ||
|
|
611
|
+
c || y("clearBanners()"), c.value = c.value.filter((r) => r._system);
|
|
603
612
|
}
|
|
604
613
|
let a = !1, i = !1;
|
|
605
614
|
function p(r) {
|
|
606
|
-
if (n ||
|
|
615
|
+
if (n || y("onActivated()"), a) {
|
|
607
616
|
console.warn("[useBlade] onActivated() already registered in this blade.");
|
|
608
617
|
return;
|
|
609
618
|
}
|
|
610
|
-
a = !0, q(
|
|
611
|
-
|
|
619
|
+
a = !0, q(C, (m) => {
|
|
620
|
+
m && r();
|
|
612
621
|
});
|
|
613
622
|
}
|
|
614
|
-
function
|
|
615
|
-
if (n ||
|
|
623
|
+
function _(r) {
|
|
624
|
+
if (n || y("onDeactivated()"), i) {
|
|
616
625
|
console.warn("[useBlade] onDeactivated() already registered in this blade.");
|
|
617
626
|
return;
|
|
618
627
|
}
|
|
619
|
-
i = !0, q(
|
|
620
|
-
|
|
628
|
+
i = !0, q(C, (m) => {
|
|
629
|
+
m || r();
|
|
621
630
|
});
|
|
622
631
|
}
|
|
623
632
|
return {
|
|
624
|
-
id:
|
|
625
|
-
param:
|
|
626
|
-
activeChildParam:
|
|
627
|
-
options:
|
|
628
|
-
query:
|
|
629
|
-
closable:
|
|
630
|
-
expanded:
|
|
631
|
-
name:
|
|
632
|
-
provideBladeData:
|
|
633
|
+
id: d,
|
|
634
|
+
param: u,
|
|
635
|
+
activeChildParam: w,
|
|
636
|
+
options: h,
|
|
637
|
+
query: v,
|
|
638
|
+
closable: g,
|
|
639
|
+
expanded: C,
|
|
640
|
+
name: E,
|
|
641
|
+
provideBladeData: F,
|
|
633
642
|
openBlade: M,
|
|
634
|
-
closeSelf:
|
|
643
|
+
closeSelf: I,
|
|
635
644
|
closeChildren: R,
|
|
636
645
|
replaceWith: Z,
|
|
637
646
|
coverWith: X,
|
|
638
647
|
callParent: Y,
|
|
639
648
|
exposeToChildren: le,
|
|
640
|
-
onBeforeClose:
|
|
649
|
+
onBeforeClose: ce,
|
|
641
650
|
onActivated: p,
|
|
642
|
-
onDeactivated:
|
|
643
|
-
setError:
|
|
651
|
+
onDeactivated: _,
|
|
652
|
+
setError: de,
|
|
644
653
|
clearError: j,
|
|
645
654
|
addBanner: pe,
|
|
646
655
|
removeBanner: fe,
|
|
@@ -694,28 +703,28 @@ function Ot(e, o, t) {
|
|
|
694
703
|
visible: !0
|
|
695
704
|
};
|
|
696
705
|
}
|
|
697
|
-
let
|
|
698
|
-
function
|
|
699
|
-
return `blade_${++
|
|
706
|
+
let Pt = 0;
|
|
707
|
+
function kt() {
|
|
708
|
+
return `blade_${++Pt}_${Math.random().toString(36).slice(2, 8)}`;
|
|
700
709
|
}
|
|
701
710
|
function In(e, o) {
|
|
702
|
-
const t = D([]), s = /* @__PURE__ */ new Map(), n = /* @__PURE__ */ new Map(), c = /* @__PURE__ */ new Map(), f = /* @__PURE__ */ new Map(),
|
|
711
|
+
const t = D([]), s = /* @__PURE__ */ new Map(), n = /* @__PURE__ */ new Map(), c = /* @__PURE__ */ new Map(), f = /* @__PURE__ */ new Map(), l = b(() => t.value[0]), d = b(() => t.value), u = b(() => {
|
|
703
712
|
for (let a = t.value.length - 1; a >= 0; a--)
|
|
704
713
|
if (t.value[a].visible) return t.value[a];
|
|
705
714
|
});
|
|
706
|
-
function
|
|
715
|
+
function h(a) {
|
|
707
716
|
s.delete(a), n.delete(a), c.delete(a), f.delete(a);
|
|
708
717
|
}
|
|
709
|
-
function
|
|
718
|
+
function v(a) {
|
|
710
719
|
const i = e.getBlade(a);
|
|
711
720
|
if (i)
|
|
712
721
|
return i.route;
|
|
713
722
|
}
|
|
714
|
-
const
|
|
715
|
-
generateId:
|
|
716
|
-
resolveUrl:
|
|
723
|
+
const g = {
|
|
724
|
+
generateId: kt,
|
|
725
|
+
resolveUrl: v
|
|
717
726
|
};
|
|
718
|
-
async function
|
|
727
|
+
async function C(a) {
|
|
719
728
|
for (let i = a.length - 1; i >= 0; i--) {
|
|
720
729
|
const p = s.get(a[i].id);
|
|
721
730
|
if (p && await p())
|
|
@@ -723,12 +732,12 @@ function In(e, o) {
|
|
|
723
732
|
}
|
|
724
733
|
return !1;
|
|
725
734
|
}
|
|
726
|
-
function
|
|
735
|
+
function E(a) {
|
|
727
736
|
for (const i of a)
|
|
728
|
-
c.get(i.id)?.(),
|
|
737
|
+
c.get(i.id)?.(), h(i.id);
|
|
729
738
|
}
|
|
730
|
-
async function
|
|
731
|
-
if (
|
|
739
|
+
async function w(a) {
|
|
740
|
+
if (l.value?.name === a.name) return;
|
|
732
741
|
const p = e.getBlade(a.name);
|
|
733
742
|
if (!p)
|
|
734
743
|
throw new Error(`[BladeStack] Blade '${a.name}' not found in registry`);
|
|
@@ -736,41 +745,41 @@ function In(e, o) {
|
|
|
736
745
|
console.warn(`[BladeStack] Access denied to workspace '${a.name}'`);
|
|
737
746
|
return;
|
|
738
747
|
}
|
|
739
|
-
|
|
740
|
-
const
|
|
741
|
-
t.value = [
|
|
748
|
+
E([...t.value]);
|
|
749
|
+
const _ = Tt(a, g);
|
|
750
|
+
t.value = [_], a.onOpen && n.set(_.id, a.onOpen), a.onClose && c.set(_.id, a.onClose), a.onOpen?.();
|
|
742
751
|
}
|
|
743
|
-
async function
|
|
752
|
+
async function T(a) {
|
|
744
753
|
if (!e.getBlade(a.name))
|
|
745
754
|
throw new Error(`[BladeStack] Blade '${a.name}' not found in registry`);
|
|
746
|
-
const i = a.parentId ??
|
|
755
|
+
const i = a.parentId ?? u.value?.id ?? l.value?.id;
|
|
747
756
|
if (!i)
|
|
748
757
|
throw new Error("[BladeStack] Cannot open blade: no parent blade found");
|
|
749
|
-
const p = t.value.findIndex((
|
|
758
|
+
const p = t.value.findIndex((m) => m.id === i);
|
|
750
759
|
if (p === -1)
|
|
751
760
|
throw new Error(`[BladeStack] Parent blade '${i}' not found in stack`);
|
|
752
|
-
const
|
|
753
|
-
if (
|
|
761
|
+
const _ = t.value.slice(p + 1);
|
|
762
|
+
if (_.length > 0 && await C(_))
|
|
754
763
|
return;
|
|
755
|
-
|
|
756
|
-
const r = xt(a, i,
|
|
764
|
+
E(_);
|
|
765
|
+
const r = xt(a, i, g);
|
|
757
766
|
t.value = [...t.value.slice(0, p + 1), r], a.onOpen && n.set(r.id, a.onOpen), a.onClose && c.set(r.id, a.onClose), a.onOpen?.();
|
|
758
767
|
}
|
|
759
|
-
async function
|
|
760
|
-
const i = t.value.findIndex((
|
|
768
|
+
async function F(a) {
|
|
769
|
+
const i = t.value.findIndex((m) => m.id === a);
|
|
761
770
|
if (i === -1 || i === 0) return !1;
|
|
762
771
|
const p = t.value.slice(i);
|
|
763
|
-
if (await
|
|
764
|
-
|
|
772
|
+
if (await C(p)) return !0;
|
|
773
|
+
E(p), t.value = t.value.slice(0, i);
|
|
765
774
|
const r = t.value.length - 1;
|
|
766
775
|
if (r > 0 && !t.value[r].visible) {
|
|
767
|
-
const
|
|
768
|
-
|
|
776
|
+
const m = [...t.value];
|
|
777
|
+
m[r] = { ...m[r], visible: !0 }, t.value = m;
|
|
769
778
|
}
|
|
770
779
|
return !1;
|
|
771
780
|
}
|
|
772
781
|
async function M(a) {
|
|
773
|
-
const i =
|
|
782
|
+
const i = u.value;
|
|
774
783
|
if (!i)
|
|
775
784
|
throw new Error("[BladeStack] No active blade to replace");
|
|
776
785
|
if (!e.getBlade(a.name))
|
|
@@ -778,18 +787,18 @@ function In(e, o) {
|
|
|
778
787
|
const p = t.value.findIndex((k) => k.id === i.id);
|
|
779
788
|
if (p === -1)
|
|
780
789
|
throw new Error(`[BladeStack] Active blade '${i.id}' not found in stack`);
|
|
781
|
-
const
|
|
782
|
-
if (
|
|
783
|
-
if (await _
|
|
784
|
-
|
|
790
|
+
const _ = t.value.slice(p + 1);
|
|
791
|
+
if (_.length > 0) {
|
|
792
|
+
if (await C(_)) return;
|
|
793
|
+
E(_);
|
|
785
794
|
}
|
|
786
|
-
const r = St(a, i.parentId,
|
|
787
|
-
|
|
788
|
-
const
|
|
789
|
-
t.value =
|
|
795
|
+
const r = St(a, i.parentId, g);
|
|
796
|
+
E([i]);
|
|
797
|
+
const m = [...t.value.slice(0, p), r, ...t.value.slice(p + 1)];
|
|
798
|
+
t.value = m, a.onOpen && n.set(r.id, a.onOpen), a.onClose && c.set(r.id, a.onClose), a.onOpen?.();
|
|
790
799
|
}
|
|
791
|
-
async function
|
|
792
|
-
const i =
|
|
800
|
+
async function I(a) {
|
|
801
|
+
const i = u.value;
|
|
793
802
|
if (!i)
|
|
794
803
|
throw new Error("[BladeStack] No active blade to cover");
|
|
795
804
|
if (!e.getBlade(a.name))
|
|
@@ -797,19 +806,19 @@ function In(e, o) {
|
|
|
797
806
|
const p = t.value.findIndex((k) => k.id === i.id);
|
|
798
807
|
if (p === -1)
|
|
799
808
|
throw new Error(`[BladeStack] Active blade '${i.id}' not found in stack`);
|
|
800
|
-
const
|
|
801
|
-
if (
|
|
802
|
-
if (await _
|
|
803
|
-
|
|
809
|
+
const _ = t.value.slice(p + 1);
|
|
810
|
+
if (_.length > 0) {
|
|
811
|
+
if (await C(_)) return;
|
|
812
|
+
E(_);
|
|
804
813
|
}
|
|
805
|
-
const r = Ot(a, i.id,
|
|
806
|
-
|
|
814
|
+
const r = Ot(a, i.id, g), m = t.value.slice(0, p);
|
|
815
|
+
m.push({ ...i, visible: !1 }), m.push(r), t.value = m, a.onOpen && n.set(r.id, a.onOpen), a.onClose && c.set(r.id, a.onClose), a.onOpen?.();
|
|
807
816
|
}
|
|
808
817
|
async function R(a) {
|
|
809
818
|
const i = t.value.findIndex((r) => r.id === a);
|
|
810
819
|
if (i === -1) return;
|
|
811
820
|
const p = t.value.slice(i + 1);
|
|
812
|
-
p.length === 0 || await
|
|
821
|
+
p.length === 0 || await C(p) || (E(p), t.value = t.value.slice(0, i + 1));
|
|
813
822
|
}
|
|
814
823
|
function Z(a, i) {
|
|
815
824
|
s.set(a, i);
|
|
@@ -820,29 +829,29 @@ function In(e, o) {
|
|
|
820
829
|
function Y(a, i) {
|
|
821
830
|
const p = t.value.findIndex((r) => r.id === a);
|
|
822
831
|
if (p === -1) return;
|
|
823
|
-
const
|
|
824
|
-
|
|
832
|
+
const _ = [...t.value];
|
|
833
|
+
_[p] = { ..._[p], error: i }, t.value = _;
|
|
825
834
|
}
|
|
826
835
|
function le(a) {
|
|
827
|
-
const i = t.value.findIndex((
|
|
836
|
+
const i = t.value.findIndex((_) => _.id === a);
|
|
828
837
|
if (i === -1) return;
|
|
829
838
|
const p = [...t.value];
|
|
830
839
|
p[i] = { ...p[i], error: void 0 }, t.value = p;
|
|
831
840
|
}
|
|
832
|
-
function
|
|
841
|
+
function ce(a, i) {
|
|
833
842
|
const p = t.value.findIndex((r) => r.id === a);
|
|
834
843
|
if (p === -1 || t.value[p].title === i) return;
|
|
835
|
-
const
|
|
836
|
-
|
|
844
|
+
const _ = [...t.value];
|
|
845
|
+
_[p] = { ..._[p], title: i }, t.value = _;
|
|
837
846
|
}
|
|
838
|
-
function
|
|
847
|
+
function de(a, i) {
|
|
839
848
|
const p = t.value.findIndex((L) => L.id === a);
|
|
840
849
|
if (p === -1) return;
|
|
841
|
-
const
|
|
850
|
+
const _ = t.value[p].query ?? {}, r = { ..._ };
|
|
842
851
|
for (const [L, ve] of Object.entries(i))
|
|
843
852
|
ve === "" || ve == null ? delete r[L] : r[L] = ve;
|
|
844
|
-
const
|
|
845
|
-
if (
|
|
853
|
+
const m = Object.keys(_), k = Object.keys(r);
|
|
854
|
+
if (m.length === k.length && k.every((L) => _[L] === r[L]))
|
|
846
855
|
return;
|
|
847
856
|
const J = [...t.value];
|
|
848
857
|
J[p] = { ...J[p], query: r }, t.value = J;
|
|
@@ -863,25 +872,25 @@ function In(e, o) {
|
|
|
863
872
|
}
|
|
864
873
|
function ge(a) {
|
|
865
874
|
for (const i of t.value)
|
|
866
|
-
|
|
875
|
+
h(i.id);
|
|
867
876
|
t.value = a;
|
|
868
877
|
}
|
|
869
878
|
return {
|
|
870
|
-
workspace:
|
|
871
|
-
blades:
|
|
872
|
-
activeBlade:
|
|
873
|
-
openWorkspace:
|
|
874
|
-
openBlade:
|
|
875
|
-
closeBlade:
|
|
879
|
+
workspace: l,
|
|
880
|
+
blades: d,
|
|
881
|
+
activeBlade: u,
|
|
882
|
+
openWorkspace: w,
|
|
883
|
+
openBlade: T,
|
|
884
|
+
closeBlade: F,
|
|
876
885
|
closeChildren: R,
|
|
877
886
|
replaceCurrentBlade: M,
|
|
878
|
-
coverCurrentBlade:
|
|
887
|
+
coverCurrentBlade: I,
|
|
879
888
|
registerBeforeClose: Z,
|
|
880
889
|
unregisterBeforeClose: X,
|
|
881
890
|
setBladeError: Y,
|
|
882
891
|
clearBladeError: le,
|
|
883
|
-
setBladeTitle:
|
|
884
|
-
updateBladeQuery:
|
|
892
|
+
setBladeTitle: ce,
|
|
893
|
+
updateBladeQuery: de,
|
|
885
894
|
getMaximizedRef: j,
|
|
886
895
|
isMaximized: ue,
|
|
887
896
|
setMaximized: pe,
|
|
@@ -897,7 +906,7 @@ function Mt() {
|
|
|
897
906
|
}
|
|
898
907
|
const V = W("use-ai-agent");
|
|
899
908
|
function Tn(e) {
|
|
900
|
-
const o = N(je), { user: t, getAccessToken: s } = Qe(), { openBlade: n } = It(), { blades: c, activeBlade: f } = Mt(),
|
|
909
|
+
const o = N(je), { user: t, getAccessToken: s } = Qe(), { openBlade: n } = It(), { blades: c, activeBlade: f } = Mt(), l = e?.isEmbedded, d = dt({
|
|
901
910
|
userGetter: () => {
|
|
902
911
|
if (t.value)
|
|
903
912
|
return {
|
|
@@ -908,44 +917,44 @@ function Tn(e) {
|
|
|
908
917
|
};
|
|
909
918
|
},
|
|
910
919
|
bladeGetter: () => {
|
|
911
|
-
const
|
|
912
|
-
return
|
|
913
|
-
id:
|
|
914
|
-
name:
|
|
915
|
-
title:
|
|
916
|
-
param:
|
|
917
|
-
options:
|
|
920
|
+
const h = f.value ?? c.value[c.value.length - 1];
|
|
921
|
+
return h ? {
|
|
922
|
+
id: h.id,
|
|
923
|
+
name: h.name,
|
|
924
|
+
title: h.title,
|
|
925
|
+
param: h.param,
|
|
926
|
+
options: h.options
|
|
918
927
|
} : null;
|
|
919
928
|
},
|
|
920
929
|
localeGetter: () => o?.currentLocale.value ?? "en",
|
|
921
930
|
tokenGetter: s,
|
|
922
|
-
navigateToBlade: (
|
|
923
|
-
n({ name:
|
|
924
|
-
V.debug(`Navigated to blade: ${
|
|
925
|
-
}).catch((
|
|
926
|
-
V.warn(`Blade not found or cannot be opened: ${
|
|
931
|
+
navigateToBlade: (h, v, g) => {
|
|
932
|
+
n({ name: h, param: v, options: g }).then(() => {
|
|
933
|
+
V.debug(`Navigated to blade: ${h}`);
|
|
934
|
+
}).catch((C) => {
|
|
935
|
+
V.warn(`Blade not found or cannot be opened: ${h}`, C);
|
|
927
936
|
});
|
|
928
937
|
},
|
|
929
938
|
initialConfig: e?.config,
|
|
930
|
-
isEmbedded:
|
|
939
|
+
isEmbedded: l
|
|
931
940
|
});
|
|
932
|
-
if (
|
|
933
|
-
const
|
|
934
|
-
|
|
941
|
+
if (Pe(be, d), V.debug("AiAgentService provided"), e?.addGlobalToolbarButton ?? !0) {
|
|
942
|
+
const h = N(Je, null);
|
|
943
|
+
h ? (h.registerToolbarItem(
|
|
935
944
|
{
|
|
936
945
|
id: ot,
|
|
937
946
|
icon: rt,
|
|
938
947
|
title: it,
|
|
939
948
|
shortcut: Q.mod.i,
|
|
940
949
|
clickHandler: () => {
|
|
941
|
-
|
|
950
|
+
d.togglePanel();
|
|
942
951
|
}
|
|
943
952
|
},
|
|
944
953
|
"*"
|
|
945
954
|
// Wildcard for all blades
|
|
946
955
|
), V.debug("Global AI toolbar button registered with wildcard '*'")) : V.warn("Toolbar service not available, AI button not registered");
|
|
947
956
|
}
|
|
948
|
-
return
|
|
957
|
+
return d;
|
|
949
958
|
}
|
|
950
959
|
function xn() {
|
|
951
960
|
const e = N(be);
|
|
@@ -1004,8 +1013,8 @@ const Dt = ["width", "height"], Lt = ["clip-path"], Nt = {
|
|
|
1004
1013
|
animated: { type: Boolean, default: !1 }
|
|
1005
1014
|
},
|
|
1006
1015
|
setup(e) {
|
|
1007
|
-
const o =
|
|
1008
|
-
return (t, s) => (
|
|
1016
|
+
const o = b(() => `virto-oz-clip-${Math.random().toString(36).substring(2, 11)}`);
|
|
1017
|
+
return (t, s) => (B(), S("svg", {
|
|
1009
1018
|
width: e.width,
|
|
1010
1019
|
height: e.height,
|
|
1011
1020
|
viewBox: "0 0 99 108",
|
|
@@ -1017,7 +1026,7 @@ const Dt = ["width", "height"], Lt = ["clip-path"], Nt = {
|
|
|
1017
1026
|
d: "M40.1199 2.41576C45.6989 -0.805254 52.5724 -0.805253 58.1514 2.41576L89.2556 20.3738C94.8345 23.5948 98.2713 29.5475 98.2713 35.9895V71.9055C98.2713 78.3475 94.8345 84.3002 89.2556 87.5212L58.1514 105.479C52.5724 108.7 45.6989 108.7 40.1199 105.479L9.01574 87.5212C3.43678 84.3002 0 78.3475 0 71.9055V35.9895C0 29.5475 3.43678 23.5948 9.01574 20.3738L40.1199 2.41576Z",
|
|
1018
1027
|
fill: "white"
|
|
1019
1028
|
}, null, -1)),
|
|
1020
|
-
e.animated ? (
|
|
1029
|
+
e.animated ? (B(), S("path", Nt)) : (B(), S("g", {
|
|
1021
1030
|
key: 0,
|
|
1022
1031
|
"clip-path": `url(#${o.value})`
|
|
1023
1032
|
}, [...s[0] || (s[0] = [
|
|
@@ -1069,13 +1078,13 @@ const Dt = ["width", "height"], Lt = ["clip-path"], Nt = {
|
|
|
1069
1078
|
fill: "#6C6C6C"
|
|
1070
1079
|
}, null, -1)),
|
|
1071
1080
|
A("defs", null, [
|
|
1072
|
-
e.animated ? z("", !0) : (
|
|
1081
|
+
e.animated ? z("", !0) : (B(), S("clipPath", {
|
|
1073
1082
|
key: 0,
|
|
1074
1083
|
id: o.value
|
|
1075
1084
|
}, [...s[1] || (s[1] = [
|
|
1076
1085
|
A("path", { d: "M72.9199 46.4165C73.2527 46.9495 73.5831 47.4996 73.9092 48.0679C78.4022 55.8976 79.0605 66.3551 76.7793 76.6079C74.5635 86.5668 69.6096 96.1504 62.9795 102.692L58.1514 105.48C52.5725 108.701 45.699 108.701 40.1201 105.48L21.665 94.8247C29.1398 95.4723 37.0781 94.4072 44.3848 91.9233C54.5984 88.4512 63.7463 82.1497 68.6807 73.6548C75.124 62.5619 75.4351 53.2694 72.9199 46.4165ZM56.5205 29.5093C65.5697 29.5331 75.1259 33.9964 83.0215 40.8853C89.9848 46.9608 95.5441 54.8286 98.2715 62.9478V71.9058C98.2715 78.3478 94.8348 84.301 89.2559 87.522L69.4658 98.9468C74.0688 92.6731 77.4601 84.9996 79.207 77.1479C81.5723 66.517 80.9666 55.3703 76.0654 46.8296C69.6817 35.7054 61.7917 30.789 54.6006 29.5396C55.2271 29.5179 55.867 29.5076 56.5205 29.5093ZM0 50.688C3.16812 57.476 8.04614 63.7935 13.8389 68.853C21.9305 75.9204 31.9368 80.6465 41.7578 80.6724C54.5833 80.706 62.7851 76.3308 67.4629 70.728C67.1684 71.2812 66.8584 71.8408 66.5303 72.4058C61.9844 80.2318 53.417 86.2251 43.584 89.5679C34.4355 92.6779 24.3375 93.4401 15.6328 91.3423L9.01562 87.522C3.43667 84.301 0 78.3478 0 71.9058V50.688ZM26.7559 10.1313C22.5672 16.2131 19.6599 23.483 18.2695 30.9126C16.3077 41.3962 17.3358 52.3558 22.2188 60.8647C28.6034 71.9905 36.4946 76.9061 43.6865 78.1548C43.0594 78.1765 42.4188 78.1868 41.7646 78.1851C32.7113 78.1612 23.2602 73.7801 15.4746 66.98C8.2197 60.6434 2.52684 52.3035 0 43.7075V35.9897C6.33247e-05 29.5479 3.43687 23.5955 9.01562 20.3745L26.7559 10.1313ZM51.2432 31.6978C54.0287 31.7659 57.0796 32.4389 60.1875 33.9976C58.8529 33.7029 57.5584 33.677 56.3965 33.9722L57.0088 36.3833C58.4774 36.0102 60.6741 36.4134 63.0332 37.8237C65.3553 39.212 67.6865 41.4953 69.375 44.5923C70.7081 47.0376 71.6489 50.015 71.8535 53.4839C71.4414 52.1828 70.818 51.0505 69.9824 50.1929L68.2012 51.9282C69.2585 53.0135 70.0076 55.1176 69.9658 57.8657C69.9246 60.5708 69.1121 63.731 67.2744 66.7417C65.8225 69.1203 63.7129 71.4251 60.8086 73.3374C61.7311 72.329 62.4012 71.2217 62.7266 70.0679L60.333 69.3931C59.9218 70.8514 58.4742 72.5523 56.0732 73.8901C53.71 75.207 50.5672 76.0837 47.041 75.9976C44.2551 75.9294 41.204 75.2549 38.0957 73.6958C39.4307 73.9907 40.7254 74.0184 41.8877 73.7231L41.2754 71.312C39.8069 71.6851 37.6101 71.2818 35.251 69.8716C32.9289 68.4834 30.5977 66.2 28.9092 63.103C27.5754 60.6565 26.6337 57.6775 26.4297 54.2065C26.8418 55.5096 27.4661 56.6438 28.3027 57.5024L30.084 55.7661C29.0267 54.6807 28.2775 52.5767 28.3193 49.8286C28.3606 47.1236 29.173 43.9633 31.0107 40.9526C32.4621 38.5751 34.5702 36.2706 37.4727 34.3589C36.5514 35.3666 35.8827 36.4736 35.5576 37.6265L37.9512 38.3013C38.3625 36.8429 39.8101 35.142 42.2109 33.8042C44.5742 32.4874 47.717 31.6116 51.2432 31.6978ZM40.1201 2.4165C45.6991 -0.804509 52.5724 -0.804509 58.1514 2.4165L75.6777 12.5356C68.4683 12.0708 60.8765 13.1991 53.8691 15.6333C43.6671 19.1774 34.5353 25.5492 29.6035 34.0396C23.1612 45.1305 22.8486 54.4223 25.3623 61.2749C25.0301 60.7429 24.7004 60.1936 24.375 59.6265C19.8639 51.765 18.8286 41.4457 20.7139 31.3706C22.4486 22.1007 26.633 13.1734 32.6709 6.71631L40.1201 2.4165ZM54.6855 17.9829C63.3703 14.966 72.9092 14.0715 81.3008 15.7817L89.2559 20.3745C94.8346 23.5955 98.2714 29.5479 98.2715 35.9897V56.4692C95.0606 49.9731 90.2759 43.9144 84.6562 39.0112C76.4636 31.8632 66.3524 27.0488 56.5273 27.0229C43.6978 26.9893 35.4935 31.3659 30.8164 36.9712C31.1117 36.4161 31.4247 35.8554 31.7539 35.2886C36.3024 27.4582 44.8633 21.395 54.6855 17.9829Z" }, null, -1)
|
|
1077
1086
|
])], 8, Ft)),
|
|
1078
|
-
e.animated ? (
|
|
1087
|
+
e.animated ? (B(), S("linearGradient", $t, [...s[2] || (s[2] = [
|
|
1079
1088
|
Ke('<stop offset="0%" stop-color="#FF9533"><animate attributeName="stop-color" values="#FF9533;#FF4FBB;#EAFF4F;#1C91FC;#9A2DF8;#FF9533" dur="4s" repeatCount="indefinite"></animate></stop><stop offset="25%" stop-color="#FF4FBB"><animate attributeName="stop-color" values="#FF4FBB;#EAFF4F;#1C91FC;#9A2DF8;#FF9533;#FF4FBB" dur="4s" repeatCount="indefinite"></animate></stop><stop offset="50%" stop-color="#EAFF4F"><animate attributeName="stop-color" values="#EAFF4F;#1C91FC;#9A2DF8;#FF9533;#FF4FBB;#EAFF4F" dur="4s" repeatCount="indefinite"></animate></stop><stop offset="75%" stop-color="#1C91FC"><animate attributeName="stop-color" values="#1C91FC;#9A2DF8;#FF9533;#FF4FBB;#EAFF4F;#1C91FC" dur="4s" repeatCount="indefinite"></animate></stop><stop offset="100%" stop-color="#9A2DF8"><animate attributeName="stop-color" values="#9A2DF8;#FF9533;#FF4FBB;#EAFF4F;#1C91FC;#9A2DF8" dur="4s" repeatCount="indefinite"></animate></stop>', 5)
|
|
1080
1089
|
])])) : z("", !0)
|
|
1081
1090
|
])
|
|
@@ -1091,9 +1100,9 @@ const Dt = ["width", "height"], Lt = ["clip-path"], Nt = {
|
|
|
1091
1100
|
separated: { type: Boolean, default: !1 }
|
|
1092
1101
|
},
|
|
1093
1102
|
setup(e) {
|
|
1094
|
-
return (o, t) => (
|
|
1095
|
-
(
|
|
1096
|
-
e.separated && n > 0 ? (
|
|
1103
|
+
return (o, t) => (B(), S("span", Rt, [
|
|
1104
|
+
(B(!0), S(Ae, null, qe(e.parts, (s, n) => (B(), S(Ae, { key: n }, [
|
|
1105
|
+
e.separated && n > 0 ? (B(), S("span", Ut, "+")) : z("", !0),
|
|
1097
1106
|
A("kbd", Gt, K(s), 1)
|
|
1098
1107
|
], 64))), 128))
|
|
1099
1108
|
]));
|
|
@@ -1107,10 +1116,10 @@ const Dt = ["width", "height"], Lt = ["clip-path"], Nt = {
|
|
|
1107
1116
|
},
|
|
1108
1117
|
emits: ["close", "expand", "collapse"],
|
|
1109
1118
|
setup(e) {
|
|
1110
|
-
const { t: o } = nt(), { isMac: t } = Ne(), s =
|
|
1111
|
-
return (
|
|
1119
|
+
const { t: o } = nt(), { isMac: t } = Ne(), s = b(() => Ee(Q.escape, t)), n = b(() => Ee(Q.mod.backslash, t)), c = b(() => s.value.aria), f = b(() => n.value.aria);
|
|
1120
|
+
return (l, d) => (B(), S("div", Vt, [
|
|
1112
1121
|
A("div", Kt, [
|
|
1113
|
-
|
|
1122
|
+
P(Ue, {
|
|
1114
1123
|
width: 22,
|
|
1115
1124
|
height: 24,
|
|
1116
1125
|
"show-dots": ""
|
|
@@ -1122,91 +1131,91 @@ const Dt = ["width", "height"], Lt = ["clip-path"], Nt = {
|
|
|
1122
1131
|
])
|
|
1123
1132
|
]),
|
|
1124
1133
|
A("div", Wt, [
|
|
1125
|
-
e.isExpanded ? (
|
|
1134
|
+
e.isExpanded ? (B(), se(x(me), {
|
|
1126
1135
|
key: 0,
|
|
1127
1136
|
placement: "bottom"
|
|
1128
1137
|
}, {
|
|
1129
|
-
tooltip:
|
|
1138
|
+
tooltip: $(() => [
|
|
1130
1139
|
A("span", Xt, [
|
|
1131
|
-
Ce(K(
|
|
1132
|
-
|
|
1140
|
+
Ce(K(x(o)("COMPONENTS.ORGANISMS.VC_BLADE_HEADER.RESTORE")) + " ", 1),
|
|
1141
|
+
P(_e, {
|
|
1133
1142
|
parts: n.value.parts,
|
|
1134
|
-
separated: !
|
|
1143
|
+
separated: !x(t)
|
|
1135
1144
|
}, null, 8, ["parts", "separated"])
|
|
1136
1145
|
])
|
|
1137
1146
|
]),
|
|
1138
|
-
default:
|
|
1147
|
+
default: $(() => [
|
|
1139
1148
|
A("div", {
|
|
1140
1149
|
class: "vc-ai-agent-header__button",
|
|
1141
1150
|
role: "button",
|
|
1142
1151
|
tabindex: "0",
|
|
1143
|
-
"aria-label":
|
|
1152
|
+
"aria-label": x(o)("COMPONENTS.ORGANISMS.VC_BLADE_HEADER.RESTORE"),
|
|
1144
1153
|
"aria-keyshortcuts": f.value,
|
|
1145
|
-
onClick:
|
|
1154
|
+
onClick: d[0] || (d[0] = (u) => l.$emit("collapse")),
|
|
1146
1155
|
onKeydown: [
|
|
1147
|
-
|
|
1148
|
-
|
|
1156
|
+
d[1] || (d[1] = U(G((u) => l.$emit("collapse"), ["prevent"]), ["enter"])),
|
|
1157
|
+
d[2] || (d[2] = U(G((u) => l.$emit("collapse"), ["prevent"]), ["space"]))
|
|
1149
1158
|
]
|
|
1150
1159
|
}, [
|
|
1151
|
-
|
|
1160
|
+
P(x(ie), { icon: "lucide-minus" })
|
|
1152
1161
|
], 40, Zt)
|
|
1153
1162
|
]),
|
|
1154
1163
|
_: 1
|
|
1155
|
-
})) : (
|
|
1164
|
+
})) : (B(), se(x(me), {
|
|
1156
1165
|
key: 1,
|
|
1157
1166
|
placement: "bottom"
|
|
1158
1167
|
}, {
|
|
1159
|
-
tooltip:
|
|
1168
|
+
tooltip: $(() => [
|
|
1160
1169
|
A("span", jt, [
|
|
1161
|
-
Ce(K(
|
|
1162
|
-
|
|
1170
|
+
Ce(K(x(o)("COMPONENTS.ORGANISMS.VC_BLADE_HEADER.MAXIMIZE")) + " ", 1),
|
|
1171
|
+
P(_e, {
|
|
1163
1172
|
parts: n.value.parts,
|
|
1164
|
-
separated: !
|
|
1173
|
+
separated: !x(t)
|
|
1165
1174
|
}, null, 8, ["parts", "separated"])
|
|
1166
1175
|
])
|
|
1167
1176
|
]),
|
|
1168
|
-
default:
|
|
1177
|
+
default: $(() => [
|
|
1169
1178
|
A("div", {
|
|
1170
1179
|
class: "vc-ai-agent-header__button",
|
|
1171
1180
|
role: "button",
|
|
1172
1181
|
tabindex: "0",
|
|
1173
|
-
"aria-label":
|
|
1182
|
+
"aria-label": x(o)("COMPONENTS.ORGANISMS.VC_BLADE_HEADER.MAXIMIZE"),
|
|
1174
1183
|
"aria-keyshortcuts": f.value,
|
|
1175
|
-
onClick:
|
|
1184
|
+
onClick: d[3] || (d[3] = (u) => l.$emit("expand")),
|
|
1176
1185
|
onKeydown: [
|
|
1177
|
-
|
|
1178
|
-
|
|
1186
|
+
d[4] || (d[4] = U(G((u) => l.$emit("expand"), ["prevent"]), ["enter"])),
|
|
1187
|
+
d[5] || (d[5] = U(G((u) => l.$emit("expand"), ["prevent"]), ["space"]))
|
|
1179
1188
|
]
|
|
1180
1189
|
}, [
|
|
1181
|
-
|
|
1190
|
+
P(x(ie), { icon: "lucide-panel-top" })
|
|
1182
1191
|
], 40, Yt)
|
|
1183
1192
|
]),
|
|
1184
1193
|
_: 1
|
|
1185
1194
|
})),
|
|
1186
|
-
|
|
1187
|
-
tooltip:
|
|
1195
|
+
P(x(me), { placement: "bottom" }, {
|
|
1196
|
+
tooltip: $(() => [
|
|
1188
1197
|
A("span", Jt, [
|
|
1189
|
-
Ce(K(
|
|
1190
|
-
|
|
1198
|
+
Ce(K(x(o)("COMPONENTS.ORGANISMS.VC_BLADE_HEADER.CLOSE")) + " ", 1),
|
|
1199
|
+
P(_e, {
|
|
1191
1200
|
parts: s.value.parts,
|
|
1192
|
-
separated: !
|
|
1201
|
+
separated: !x(t)
|
|
1193
1202
|
}, null, 8, ["parts", "separated"])
|
|
1194
1203
|
])
|
|
1195
1204
|
]),
|
|
1196
|
-
default:
|
|
1205
|
+
default: $(() => [
|
|
1197
1206
|
A("div", {
|
|
1198
1207
|
class: "vc-ai-agent-header__button",
|
|
1199
1208
|
role: "button",
|
|
1200
1209
|
tabindex: "0",
|
|
1201
|
-
"aria-label":
|
|
1210
|
+
"aria-label": x(o)("COMPONENTS.ORGANISMS.VC_BLADE_HEADER.CLOSE"),
|
|
1202
1211
|
"aria-keyshortcuts": c.value,
|
|
1203
|
-
onClick:
|
|
1212
|
+
onClick: d[6] || (d[6] = (u) => l.$emit("close")),
|
|
1204
1213
|
onKeydown: [
|
|
1205
|
-
|
|
1206
|
-
|
|
1214
|
+
d[7] || (d[7] = U(G((u) => l.$emit("close"), ["prevent"]), ["enter"])),
|
|
1215
|
+
d[8] || (d[8] = U(G((u) => l.$emit("close"), ["prevent"]), ["space"]))
|
|
1207
1216
|
]
|
|
1208
1217
|
}, [
|
|
1209
|
-
|
|
1218
|
+
P(x(ie), { icon: "lucide-x" })
|
|
1210
1219
|
], 40, Qt)
|
|
1211
1220
|
]),
|
|
1212
1221
|
_: 1
|
|
@@ -1223,23 +1232,23 @@ const Dt = ["width", "height"], Lt = ["clip-path"], Nt = {
|
|
|
1223
1232
|
text: {}
|
|
1224
1233
|
},
|
|
1225
1234
|
setup(e) {
|
|
1226
|
-
return (o, t) => (
|
|
1235
|
+
return (o, t) => (B(), S("div", tn, [
|
|
1227
1236
|
A("div", nn, [
|
|
1228
1237
|
A("div", an, [
|
|
1229
|
-
|
|
1238
|
+
P(Ue, {
|
|
1230
1239
|
width: 80,
|
|
1231
1240
|
height: 87,
|
|
1232
1241
|
animated: ""
|
|
1233
1242
|
})
|
|
1234
1243
|
]),
|
|
1235
|
-
e.text ? (
|
|
1244
|
+
e.text ? (B(), S("p", on, K(e.text), 1)) : z("", !0)
|
|
1236
1245
|
])
|
|
1237
1246
|
]));
|
|
1238
1247
|
}
|
|
1239
|
-
}), sn = { class: "vc-ai-agent-iframe" }, ln = ["src"],
|
|
1248
|
+
}), sn = { class: "vc-ai-agent-iframe" }, ln = ["src"], cn = {
|
|
1240
1249
|
key: 1,
|
|
1241
1250
|
class: "vc-ai-agent-iframe__placeholder"
|
|
1242
|
-
},
|
|
1251
|
+
}, dn = /* @__PURE__ */ H({
|
|
1243
1252
|
__name: "VcAiAgentIframe",
|
|
1244
1253
|
props: {
|
|
1245
1254
|
url: {}
|
|
@@ -1249,12 +1258,12 @@ const Dt = ["width", "height"], Lt = ["clip-path"], Nt = {
|
|
|
1249
1258
|
const t = W("ai-agent-iframe"), s = e, n = o, c = D(null), f = D(!0);
|
|
1250
1259
|
q(
|
|
1251
1260
|
c,
|
|
1252
|
-
(
|
|
1253
|
-
|
|
1261
|
+
(d) => {
|
|
1262
|
+
d && n("iframe-ready", d);
|
|
1254
1263
|
},
|
|
1255
1264
|
{ immediate: !0 }
|
|
1256
1265
|
);
|
|
1257
|
-
const
|
|
1266
|
+
const l = () => {
|
|
1258
1267
|
f.value = !1, t.debug("Iframe loaded");
|
|
1259
1268
|
};
|
|
1260
1269
|
return q(
|
|
@@ -1262,17 +1271,17 @@ const Dt = ["width", "height"], Lt = ["clip-path"], Nt = {
|
|
|
1262
1271
|
() => {
|
|
1263
1272
|
f.value = !0;
|
|
1264
1273
|
}
|
|
1265
|
-
), (
|
|
1266
|
-
|
|
1267
|
-
default:
|
|
1268
|
-
f.value && e.url ? (
|
|
1274
|
+
), (d, u) => (B(), S("div", sn, [
|
|
1275
|
+
P(ke, { name: "fade" }, {
|
|
1276
|
+
default: $(() => [
|
|
1277
|
+
f.value && e.url ? (B(), se(rn, {
|
|
1269
1278
|
key: 0,
|
|
1270
|
-
text:
|
|
1279
|
+
text: d.$t("AI_AGENT.LOADING")
|
|
1271
1280
|
}, null, 8, ["text"])) : z("", !0)
|
|
1272
1281
|
]),
|
|
1273
1282
|
_: 1
|
|
1274
1283
|
}),
|
|
1275
|
-
e.url ? (
|
|
1284
|
+
e.url ? (B(), S("iframe", {
|
|
1276
1285
|
key: 0,
|
|
1277
1286
|
ref_key: "iframeRef",
|
|
1278
1287
|
ref: c,
|
|
@@ -1280,14 +1289,14 @@ const Dt = ["width", "height"], Lt = ["clip-path"], Nt = {
|
|
|
1280
1289
|
class: Me(["vc-ai-agent-iframe__frame", { "vc-ai-agent-iframe__frame--loading": f.value }]),
|
|
1281
1290
|
sandbox: "allow-scripts allow-same-origin allow-forms allow-popups allow-popups-to-escape-sandbox",
|
|
1282
1291
|
allow: "clipboard-read; clipboard-write",
|
|
1283
|
-
onLoad:
|
|
1284
|
-
}, null, 42, ln)) : (
|
|
1285
|
-
|
|
1292
|
+
onLoad: l
|
|
1293
|
+
}, null, 42, ln)) : (B(), S("div", cn, [
|
|
1294
|
+
P(x(ie), {
|
|
1286
1295
|
icon: "lucide-sparkles",
|
|
1287
1296
|
size: "xl",
|
|
1288
1297
|
class: "vc-ai-agent-iframe__placeholder-icon"
|
|
1289
1298
|
}),
|
|
1290
|
-
|
|
1299
|
+
u[0] || (u[0] = A("p", { class: "vc-ai-agent-iframe__placeholder-text" }, "AI Agent URL not configured", -1))
|
|
1291
1300
|
]))
|
|
1292
1301
|
]));
|
|
1293
1302
|
}
|
|
@@ -1296,46 +1305,46 @@ const Dt = ["width", "height"], Lt = ["clip-path"], Nt = {
|
|
|
1296
1305
|
setup(e) {
|
|
1297
1306
|
const { isMac: o } = Ne(), t = N(be), s = N(et, !1);
|
|
1298
1307
|
t || console.error("[VcAiAgentPanel] AiAgentService not provided");
|
|
1299
|
-
const n =
|
|
1308
|
+
const n = b(
|
|
1300
1309
|
() => t?.config.value ?? { url: "", title: "AI Assistant", width: 362, expandedWidth: 500 }
|
|
1301
|
-
), c =
|
|
1310
|
+
), c = b(() => !s && (t?.isOpen.value ?? !1)), f = b(() => t?.isExpanded.value ?? !1), l = b(() => t?.totalItemsCount.value ?? 0), d = b(() => ({
|
|
1302
1311
|
width: f.value ? `${n.value.expandedWidth ?? 500}px` : `${n.value.width ?? 362}px`
|
|
1303
|
-
})),
|
|
1304
|
-
tt(document, "keydown", (
|
|
1305
|
-
if (c.value && !
|
|
1306
|
-
if (
|
|
1307
|
-
|
|
1312
|
+
})), u = () => t?.closePanel(), h = () => t?.expandPanel(), v = () => t?.collapsePanel();
|
|
1313
|
+
tt(document, "keydown", (C) => {
|
|
1314
|
+
if (c.value && !C.isComposing && !C.defaultPrevented) {
|
|
1315
|
+
if (C.key === "Escape") {
|
|
1316
|
+
C.preventDefault(), u();
|
|
1308
1317
|
return;
|
|
1309
1318
|
}
|
|
1310
|
-
Et(Q.mod.backslash,
|
|
1319
|
+
Et(Q.mod.backslash, C, o) && (C.preventDefault(), f.value ? v() : h());
|
|
1311
1320
|
}
|
|
1312
1321
|
});
|
|
1313
|
-
const
|
|
1314
|
-
t?._setIframeRef(
|
|
1322
|
+
const g = (C) => {
|
|
1323
|
+
t?._setIframeRef(C);
|
|
1315
1324
|
};
|
|
1316
1325
|
return ze(() => {
|
|
1317
1326
|
t?._setIframeRef(null);
|
|
1318
|
-
}), (
|
|
1319
|
-
default:
|
|
1320
|
-
c.value ? (
|
|
1327
|
+
}), (C, E) => (B(), se(ke, { name: "ai-panel-slide" }, {
|
|
1328
|
+
default: $(() => [
|
|
1329
|
+
c.value ? (B(), S("div", {
|
|
1321
1330
|
key: 0,
|
|
1322
1331
|
class: Me(["vc-ai-agent-panel", {
|
|
1323
1332
|
"vc-ai-agent-panel--expanded": f.value
|
|
1324
1333
|
}]),
|
|
1325
|
-
style: He(
|
|
1334
|
+
style: He(d.value)
|
|
1326
1335
|
}, [
|
|
1327
|
-
|
|
1336
|
+
P(en, {
|
|
1328
1337
|
title: n.value.title,
|
|
1329
1338
|
"is-expanded": f.value,
|
|
1330
|
-
"items-count":
|
|
1331
|
-
onClose:
|
|
1332
|
-
onExpand:
|
|
1333
|
-
onCollapse:
|
|
1339
|
+
"items-count": l.value,
|
|
1340
|
+
onClose: u,
|
|
1341
|
+
onExpand: h,
|
|
1342
|
+
onCollapse: v
|
|
1334
1343
|
}, null, 8, ["title", "is-expanded", "items-count"]),
|
|
1335
1344
|
A("div", un, [
|
|
1336
|
-
|
|
1345
|
+
P(dn, {
|
|
1337
1346
|
url: n.value.url,
|
|
1338
|
-
onIframeReady:
|
|
1347
|
+
onIframeReady: g
|
|
1339
1348
|
}, null, 8, ["url"])
|
|
1340
1349
|
])
|
|
1341
1350
|
], 6)) : z("", !0)
|