@hexclave/next 1.0.13 → 1.0.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/clickmap/clickmap-core.d.ts +15 -0
- package/dist/clickmap/clickmap-core.d.ts.map +1 -0
- package/dist/clickmap/clickmap-core.js +1527 -0
- package/dist/clickmap/clickmap-core.js.map +1 -0
- package/dist/clickmap/clickmap-styles.d.ts +5 -0
- package/dist/clickmap/clickmap-styles.d.ts.map +1 -0
- package/dist/clickmap/clickmap-styles.js +1095 -0
- package/dist/clickmap/clickmap-styles.js.map +1 -0
- package/dist/clickmap/index.d.ts +16 -0
- package/dist/clickmap/index.d.ts.map +1 -0
- package/dist/clickmap/index.js +74 -0
- package/dist/clickmap/index.js.map +1 -0
- package/dist/components/api-key-dialogs.js +2 -2
- package/dist/components/credential-sign-in.js +1 -1
- package/dist/components/credential-sign-up.js +1 -1
- package/dist/components/magic-link-sign-in.js +1 -1
- package/dist/components/message-cards/known-error-message-card.d.ts +1 -1
- package/dist/components/team-switcher.js +1 -1
- package/dist/components-page/account-settings/active-sessions/active-sessions-page.js +1 -1
- package/dist/components-page/account-settings/email-and-auth/emails-section.js +1 -1
- package/dist/components-page/account-settings/email-and-auth/mfa-section.js +1 -1
- package/dist/components-page/account-settings/email-and-auth/password-section.js +1 -1
- package/dist/components-page/account-settings/teams/team-creation-page.js +1 -1
- package/dist/components-page/account-settings/teams/team-member-invitation-section.js +1 -1
- package/dist/components-page/auth-page.js +1 -1
- package/dist/components-page/cli-auth-confirm.js +1 -1
- package/dist/components-page/cli-auth-confirm.test.js +1 -1
- package/dist/components-page/forgot-password.d.ts.map +1 -1
- package/dist/components-page/forgot-password.js +2 -3
- package/dist/components-page/forgot-password.js.map +1 -1
- package/dist/components-page/hexclave-handler-client.d.ts +1 -1
- package/dist/components-page/mfa.js +4 -19
- package/dist/components-page/mfa.js.map +1 -1
- package/dist/components-page/oauth-callback.js +1 -1
- package/dist/components-page/onboarding.js +1 -1
- package/dist/components-page/password-reset.d.ts.map +1 -1
- package/dist/components-page/password-reset.js +5 -7
- package/dist/components-page/password-reset.js.map +1 -1
- package/dist/components-page/team-creation.js +1 -1
- package/dist/dev-tool/dev-tool-core.d.ts.map +1 -1
- package/dist/dev-tool/dev-tool-core.js +258 -262
- package/dist/dev-tool/dev-tool-core.js.map +1 -1
- package/dist/dev-tool/dev-tool-styles.d.ts +1 -1
- package/dist/dev-tool/dev-tool-styles.d.ts.map +1 -1
- package/dist/dev-tool/dev-tool-styles.js +13 -143
- package/dist/dev-tool/dev-tool-styles.js.map +1 -1
- package/dist/dev-tool/index.d.ts.map +1 -1
- package/dist/dev-tool/index.js +5 -12
- package/dist/dev-tool/index.js.map +1 -1
- package/dist/esm/clickmap/clickmap-core.d.ts +15 -0
- package/dist/esm/clickmap/clickmap-core.d.ts.map +1 -0
- package/dist/esm/clickmap/clickmap-core.js +1525 -0
- package/dist/esm/clickmap/clickmap-core.js.map +1 -0
- package/dist/esm/clickmap/clickmap-styles.d.ts +5 -0
- package/dist/esm/clickmap/clickmap-styles.d.ts.map +1 -0
- package/dist/esm/clickmap/clickmap-styles.js +1093 -0
- package/dist/esm/clickmap/clickmap-styles.js.map +1 -0
- package/dist/esm/clickmap/index.d.ts +16 -0
- package/dist/esm/clickmap/index.d.ts.map +1 -0
- package/dist/esm/clickmap/index.js +72 -0
- package/dist/esm/clickmap/index.js.map +1 -0
- package/dist/esm/components/api-key-dialogs.js +2 -2
- package/dist/esm/components/credential-sign-in.js +1 -1
- package/dist/esm/components/credential-sign-up.js +1 -1
- package/dist/esm/components/magic-link-sign-in.js +1 -1
- package/dist/esm/components/team-switcher.js +1 -1
- package/dist/esm/components-page/account-settings/active-sessions/active-sessions-page.js +1 -1
- package/dist/esm/components-page/account-settings/email-and-auth/emails-section.js +1 -1
- package/dist/esm/components-page/account-settings/email-and-auth/mfa-section.js +1 -1
- package/dist/esm/components-page/account-settings/email-and-auth/password-section.js +1 -1
- package/dist/esm/components-page/account-settings/teams/team-creation-page.js +1 -1
- package/dist/esm/components-page/account-settings/teams/team-member-invitation-section.js +1 -1
- package/dist/esm/components-page/auth-page.js +1 -1
- package/dist/esm/components-page/cli-auth-confirm.js +1 -1
- package/dist/esm/components-page/cli-auth-confirm.test.js +1 -1
- package/dist/esm/components-page/forgot-password.d.ts.map +1 -1
- package/dist/esm/components-page/forgot-password.js +2 -3
- package/dist/esm/components-page/forgot-password.js.map +1 -1
- package/dist/esm/components-page/hexclave-handler-client.d.ts +1 -1
- package/dist/esm/components-page/mfa.js +4 -19
- package/dist/esm/components-page/mfa.js.map +1 -1
- package/dist/esm/components-page/oauth-callback.js +1 -1
- package/dist/esm/components-page/onboarding.js +1 -1
- package/dist/esm/components-page/password-reset.d.ts.map +1 -1
- package/dist/esm/components-page/password-reset.js +5 -7
- package/dist/esm/components-page/password-reset.js.map +1 -1
- package/dist/esm/components-page/team-creation.js +1 -1
- package/dist/esm/dev-tool/dev-tool-core.d.ts.map +1 -1
- package/dist/esm/dev-tool/dev-tool-core.js +35 -39
- package/dist/esm/dev-tool/dev-tool-core.js.map +1 -1
- package/dist/esm/dev-tool/dev-tool-styles.d.ts +1 -1
- package/dist/esm/dev-tool/dev-tool-styles.d.ts.map +1 -1
- package/dist/esm/dev-tool/dev-tool-styles.js +13 -143
- package/dist/esm/dev-tool/dev-tool-styles.js.map +1 -1
- package/dist/esm/dev-tool/index.d.ts.map +1 -1
- package/dist/esm/dev-tool/index.js +2 -9
- package/dist/esm/dev-tool/index.js.map +1 -1
- package/dist/esm/generated/global-css.d.ts +1 -1
- package/dist/esm/generated/global-css.js +1 -1
- package/dist/esm/generated/global-css.js.map +1 -1
- package/dist/esm/generated/quetzal-translations.d.ts +2 -2
- package/dist/esm/in-page-ui/base-styles.d.ts +5 -0
- package/dist/esm/in-page-ui/base-styles.d.ts.map +1 -0
- package/dist/esm/in-page-ui/base-styles.js +166 -0
- package/dist/esm/in-page-ui/base-styles.js.map +1 -0
- package/dist/esm/in-page-ui/dom.d.ts +15 -0
- package/dist/esm/in-page-ui/dom.d.ts.map +1 -0
- package/dist/esm/in-page-ui/dom.js +44 -0
- package/dist/esm/in-page-ui/dom.js.map +1 -0
- package/dist/esm/lib/auth.js +1 -1
- package/dist/esm/lib/hexclave-app/apps/implementations/admin-app-impl.d.ts +5 -1
- package/dist/esm/lib/hexclave-app/apps/implementations/admin-app-impl.d.ts.map +1 -1
- package/dist/esm/lib/hexclave-app/apps/implementations/admin-app-impl.js +20 -0
- package/dist/esm/lib/hexclave-app/apps/implementations/admin-app-impl.js.map +1 -1
- package/dist/esm/lib/hexclave-app/apps/implementations/client-app-impl.d.ts.map +1 -1
- package/dist/esm/lib/hexclave-app/apps/implementations/client-app-impl.js +4 -2
- package/dist/esm/lib/hexclave-app/apps/implementations/client-app-impl.js.map +1 -1
- package/dist/esm/lib/hexclave-app/apps/implementations/common.js +2 -2
- package/dist/esm/lib/hexclave-app/apps/implementations/event-tracker.d.ts +13 -0
- package/dist/esm/lib/hexclave-app/apps/implementations/event-tracker.d.ts.map +1 -1
- package/dist/esm/lib/hexclave-app/apps/implementations/event-tracker.js +146 -14
- package/dist/esm/lib/hexclave-app/apps/implementations/event-tracker.js.map +1 -1
- package/dist/esm/lib/hexclave-app/apps/implementations/event-tracker.test.js +221 -0
- package/dist/esm/lib/hexclave-app/apps/implementations/event-tracker.test.js.map +1 -1
- package/dist/esm/lib/hexclave-app/apps/implementations/server-app-impl.d.ts +1 -1
- package/dist/esm/lib/hexclave-app/apps/implementations/server-app-impl.js +1 -1
- package/dist/esm/lib/hexclave-app/apps/implementations/session-replay.js +1 -1
- package/dist/esm/lib/hexclave-app/apps/interfaces/admin-app.d.ts +5 -0
- package/dist/esm/lib/hexclave-app/apps/interfaces/admin-app.d.ts.map +1 -1
- package/dist/esm/lib/hexclave-app/apps/interfaces/admin-app.js.map +1 -1
- package/dist/esm/providers/theme-provider.js +1 -1
- package/dist/generated/global-css.d.ts +1 -1
- package/dist/generated/global-css.js +1 -1
- package/dist/generated/global-css.js.map +1 -1
- package/dist/generated/quetzal-translations.d.ts +2 -2
- package/dist/in-page-ui/base-styles.d.ts +5 -0
- package/dist/in-page-ui/base-styles.d.ts.map +1 -0
- package/dist/in-page-ui/base-styles.js +168 -0
- package/dist/in-page-ui/base-styles.js.map +1 -0
- package/dist/in-page-ui/dom.d.ts +15 -0
- package/dist/in-page-ui/dom.d.ts.map +1 -0
- package/dist/in-page-ui/dom.js +51 -0
- package/dist/in-page-ui/dom.js.map +1 -0
- package/dist/index.d.ts +1 -1
- package/dist/integrations/convex/component/convex.config.d.ts +1 -1
- package/dist/lib/auth.js +1 -1
- package/dist/lib/hexclave-app/apps/implementations/admin-app-impl.d.ts +5 -1
- package/dist/lib/hexclave-app/apps/implementations/admin-app-impl.d.ts.map +1 -1
- package/dist/lib/hexclave-app/apps/implementations/admin-app-impl.js +20 -0
- package/dist/lib/hexclave-app/apps/implementations/admin-app-impl.js.map +1 -1
- package/dist/lib/hexclave-app/apps/implementations/client-app-impl.d.ts.map +1 -1
- package/dist/lib/hexclave-app/apps/implementations/client-app-impl.js +4 -2
- package/dist/lib/hexclave-app/apps/implementations/client-app-impl.js.map +1 -1
- package/dist/lib/hexclave-app/apps/implementations/common.js +2 -2
- package/dist/lib/hexclave-app/apps/implementations/event-tracker.d.ts +13 -0
- package/dist/lib/hexclave-app/apps/implementations/event-tracker.d.ts.map +1 -1
- package/dist/lib/hexclave-app/apps/implementations/event-tracker.js +146 -14
- package/dist/lib/hexclave-app/apps/implementations/event-tracker.js.map +1 -1
- package/dist/lib/hexclave-app/apps/implementations/event-tracker.test.js +221 -0
- package/dist/lib/hexclave-app/apps/implementations/event-tracker.test.js.map +1 -1
- package/dist/lib/hexclave-app/apps/implementations/server-app-impl.d.ts +1 -1
- package/dist/lib/hexclave-app/apps/implementations/server-app-impl.js +1 -1
- package/dist/lib/hexclave-app/apps/implementations/session-replay.js +1 -1
- package/dist/lib/hexclave-app/apps/interfaces/admin-app.d.ts +5 -0
- package/dist/lib/hexclave-app/apps/interfaces/admin-app.d.ts.map +1 -1
- package/dist/lib/hexclave-app/apps/interfaces/admin-app.js.map +1 -1
- package/dist/lib/hexclave-app/apps/interfaces/server-app.d.ts +1 -1
- package/dist/lib/hexclave-app/common.d.ts +1 -1
- package/dist/providers/hexclave-provider-client.d.ts +1 -1
- package/dist/providers/theme-provider.js +1 -1
- package/dist/{storage-CKzvsBxG.d.ts → storage-ksajV_p6.d.ts} +1 -1
- package/dist/{storage-CKzvsBxG.d.ts.map → storage-ksajV_p6.d.ts.map} +1 -1
- package/package.json +4 -4
- package/src/clickmap/clickmap-core.ts +1997 -0
- package/src/clickmap/clickmap-styles.ts +1102 -0
- package/src/clickmap/index.ts +95 -0
- package/src/components-page/forgot-password.tsx +1 -2
- package/src/components-page/mfa.tsx +12 -21
- package/src/components-page/password-reset.tsx +4 -6
- package/src/dev-tool/dev-tool-core.ts +38 -65
- package/src/dev-tool/dev-tool-styles.ts +13 -142
- package/src/dev-tool/index.ts +1 -14
- package/src/in-page-ui/base-styles.ts +171 -0
- package/src/in-page-ui/dom.ts +80 -0
- package/src/lib/hexclave-app/apps/implementations/admin-app-impl.ts +23 -1
- package/src/lib/hexclave-app/apps/implementations/client-app-impl.ts +7 -0
- package/src/lib/hexclave-app/apps/implementations/event-tracker.test.ts +287 -0
- package/src/lib/hexclave-app/apps/implementations/event-tracker.ts +226 -16
- package/src/lib/hexclave-app/apps/interfaces/admin-app.ts +3 -0
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
|
|
2
2
|
const require_chunk = require('../chunk-BE-pF4vm.js');
|
|
3
|
+
let _hexclave_shared_dist_utils_dev_tool = require("@hexclave/shared/dist/utils/dev-tool");
|
|
3
4
|
let _hexclave_shared_dist_utils_promises = require("@hexclave/shared/dist/utils/promises");
|
|
5
|
+
let ___in_page_ui_dom_js = require("../in-page-ui/dom.js");
|
|
4
6
|
let ___lib_hexclave_app_common_js = require("../lib/hexclave-app/common.js");
|
|
5
7
|
let _hexclave_shared_dist_utils_urls = require("@hexclave/shared/dist/utils/urls");
|
|
6
8
|
let ___lib_hexclave_app_url_targets_js = require("../lib/hexclave-app/url-targets.js");
|
|
@@ -12,7 +14,7 @@ let __dev_tool_trigger_position_js = require("./dev-tool-trigger-position.js");
|
|
|
12
14
|
//#region src/dev-tool/dev-tool-core.ts
|
|
13
15
|
const STORAGE_KEY = "__hexclave-dev-tool-state";
|
|
14
16
|
const TRIGGER_POS_KEY = "hexclave-devtool-trigger-position";
|
|
15
|
-
const ROOT_ID =
|
|
17
|
+
const ROOT_ID = _hexclave_shared_dist_utils_dev_tool.DEV_TOOL_ROOT_ID;
|
|
16
18
|
const GLOBAL_INSTANCE_KEY = "__hexclave-dev-tool-instance";
|
|
17
19
|
const MAX_LOG_ENTRIES = 500;
|
|
18
20
|
const CONSOLE_LOG_BATCH_SIZE = 100;
|
|
@@ -102,19 +104,6 @@ function createStateStore() {
|
|
|
102
104
|
}
|
|
103
105
|
};
|
|
104
106
|
}
|
|
105
|
-
function isDevToolGlobalInstance(value) {
|
|
106
|
-
return typeof value === "object" && value !== null && typeof Reflect.get(value, "cleanup") === "function";
|
|
107
|
-
}
|
|
108
|
-
function getGlobalDevToolInstance() {
|
|
109
|
-
if (typeof window === "undefined") return null;
|
|
110
|
-
const value = Reflect.get(window, GLOBAL_INSTANCE_KEY);
|
|
111
|
-
return isDevToolGlobalInstance(value) ? value : null;
|
|
112
|
-
}
|
|
113
|
-
function setGlobalDevToolInstance(instance) {
|
|
114
|
-
if (typeof window === "undefined") return;
|
|
115
|
-
if (instance === null) Reflect.deleteProperty(window, GLOBAL_INSTANCE_KEY);
|
|
116
|
-
else Reflect.set(window, GLOBAL_INSTANCE_KEY, instance);
|
|
117
|
-
}
|
|
118
107
|
function getGlobalLogStore() {
|
|
119
108
|
const g = globalThis;
|
|
120
109
|
if (!g.__STACK_DEV_TOOL_LOG_STORE__) g.__STACK_DEV_TOOL_LOG_STORE__ = {
|
|
@@ -194,27 +183,6 @@ function generateRandomEmail() {
|
|
|
194
183
|
for (let i = 0; i < 8; i++) id += chars[Math.floor(Math.random() * 36)];
|
|
195
184
|
return `dev-${id}@test.hexclave.com`;
|
|
196
185
|
}
|
|
197
|
-
function h(tag, attrs, ...children) {
|
|
198
|
-
const el = document.createElement(tag);
|
|
199
|
-
if (attrs) for (const [k, v] of Object.entries(attrs)) {
|
|
200
|
-
if (v == null) continue;
|
|
201
|
-
if (k === "className") el.className = v;
|
|
202
|
-
else if (k === "style" && typeof v === "object") Object.assign(el.style, v);
|
|
203
|
-
else if (k.startsWith("on") && typeof v === "function") el.addEventListener(k.slice(2).toLowerCase(), v);
|
|
204
|
-
else el.setAttribute(k, String(v));
|
|
205
|
-
}
|
|
206
|
-
for (const child of children) {
|
|
207
|
-
if (child == null) continue;
|
|
208
|
-
el.appendChild(typeof child === "string" ? document.createTextNode(child) : child);
|
|
209
|
-
}
|
|
210
|
-
return el;
|
|
211
|
-
}
|
|
212
|
-
function setHtml(el, html) {
|
|
213
|
-
el.innerHTML = html;
|
|
214
|
-
}
|
|
215
|
-
function hasAppendChild(value) {
|
|
216
|
-
return typeof value === "object" && value !== null && typeof Reflect.get(value, "appendChild") === "function";
|
|
217
|
-
}
|
|
218
186
|
function appendInlineMarkdown(container, text) {
|
|
219
187
|
const tokenPattern = /(\[[^\]]+\]\([^)]+\)|`[^`\n]+`|\*\*[^*\n]+\*\*|__[^_\n]+__|\*[^*\n]+\*|_[^_\n]+_)/g;
|
|
220
188
|
let lastIndex = 0;
|
|
@@ -222,13 +190,13 @@ function appendInlineMarkdown(container, text) {
|
|
|
222
190
|
while ((match = tokenPattern.exec(text)) !== null) {
|
|
223
191
|
if (match.index > lastIndex) container.appendChild(document.createTextNode(text.slice(lastIndex, match.index)));
|
|
224
192
|
const token = match[0];
|
|
225
|
-
if (token.startsWith("`")) container.appendChild(h("code", { className: "sdt-ai-inline-code" }, token.slice(1, -1)));
|
|
193
|
+
if (token.startsWith("`")) container.appendChild((0, ___in_page_ui_dom_js.h)("code", { className: "sdt-ai-inline-code" }, token.slice(1, -1)));
|
|
226
194
|
else if (token.startsWith("**") || token.startsWith("__")) {
|
|
227
|
-
const bold = h("strong", { className: "sdt-ai-bold" });
|
|
195
|
+
const bold = (0, ___in_page_ui_dom_js.h)("strong", { className: "sdt-ai-bold" });
|
|
228
196
|
appendInlineMarkdown(bold, token.slice(2, -2));
|
|
229
197
|
container.appendChild(bold);
|
|
230
198
|
} else if (token.startsWith("*") || token.startsWith("_")) {
|
|
231
|
-
const italic = h("em");
|
|
199
|
+
const italic = (0, ___in_page_ui_dom_js.h)("em");
|
|
232
200
|
appendInlineMarkdown(italic, token.slice(1, -1));
|
|
233
201
|
container.appendChild(italic);
|
|
234
202
|
} else {
|
|
@@ -237,7 +205,7 @@ function appendInlineMarkdown(container, text) {
|
|
|
237
205
|
const [, linkText, href] = linkMatch;
|
|
238
206
|
const trimmedHref = href.trim();
|
|
239
207
|
if (/^(https?:\/\/|mailto:)/i.test(trimmedHref)) {
|
|
240
|
-
const link = h("a", {
|
|
208
|
+
const link = (0, ___in_page_ui_dom_js.h)("a", {
|
|
241
209
|
className: "sdt-ai-link",
|
|
242
210
|
href: trimmedHref,
|
|
243
211
|
target: "_blank",
|
|
@@ -319,14 +287,14 @@ function createTrigger(onClick) {
|
|
|
319
287
|
btn.style.left = pos.left + "px";
|
|
320
288
|
btn.style.top = pos.top + "px";
|
|
321
289
|
}
|
|
322
|
-
const btn = h("button", {
|
|
290
|
+
const btn = (0, ___in_page_ui_dom_js.h)("button", {
|
|
323
291
|
className: "sdt-trigger",
|
|
324
292
|
"aria-label": "Toggle Hexclave Dev Tools",
|
|
325
293
|
"data-hexclave-devtool-trigger": "true",
|
|
326
294
|
title: "Hexclave Dev Tools"
|
|
327
295
|
});
|
|
328
|
-
const logoSpan = h("span", { className: "sdt-trigger-logo" });
|
|
329
|
-
setHtml(logoSpan, HEXCLAVE_LOGO_SVG);
|
|
296
|
+
const logoSpan = (0, ___in_page_ui_dom_js.h)("span", { className: "sdt-trigger-logo" });
|
|
297
|
+
(0, ___in_page_ui_dom_js.setHtml)(logoSpan, HEXCLAVE_LOGO_SVG);
|
|
330
298
|
btn.appendChild(logoSpan);
|
|
331
299
|
let placement = loadPlacement() ?? { corner: "bottom-right" };
|
|
332
300
|
let pos = (0, __dev_tool_trigger_position_js.resolveTriggerPosition)(placement, triggerSize, {
|
|
@@ -413,21 +381,21 @@ function createTabBar(tabs, activeTab, onTabChange, opts) {
|
|
|
413
381
|
const barClass = variant === "pills" ? "sdt-console-tabs" : "sdt-tabbar";
|
|
414
382
|
const tabClass = variant === "pills" ? "sdt-console-tab" : "sdt-tab";
|
|
415
383
|
const indicatorClass = variant === "pills" ? "sdt-console-tab-indicator" : "sdt-tab-indicator";
|
|
416
|
-
const bar = h("div", { className: barClass });
|
|
417
|
-
const indicator = h("div", { className: indicatorClass });
|
|
384
|
+
const bar = (0, ___in_page_ui_dom_js.h)("div", { className: barClass });
|
|
385
|
+
const indicator = (0, ___in_page_ui_dom_js.h)("div", { className: indicatorClass });
|
|
418
386
|
indicator.style.opacity = "0";
|
|
419
387
|
bar.appendChild(indicator);
|
|
420
388
|
let current = activeTab;
|
|
421
389
|
let isInitial = true;
|
|
422
390
|
const buttons = tabs.map((tab) => {
|
|
423
|
-
const btn = h("button", {
|
|
391
|
+
const btn = (0, ___in_page_ui_dom_js.h)("button", {
|
|
424
392
|
className: tabClass,
|
|
425
393
|
"data-tab-id": tab.id,
|
|
426
394
|
"data-active": String(tab.id === activeTab)
|
|
427
395
|
});
|
|
428
396
|
if (tab.icon) {
|
|
429
|
-
const iconSpan = h("span", { className: "sdt-tab-icon" });
|
|
430
|
-
setHtml(iconSpan, tab.icon);
|
|
397
|
+
const iconSpan = (0, ___in_page_ui_dom_js.h)("span", { className: "sdt-tab-icon" });
|
|
398
|
+
(0, ___in_page_ui_dom_js.setHtml)(iconSpan, tab.icon);
|
|
431
399
|
btn.appendChild(iconSpan);
|
|
432
400
|
}
|
|
433
401
|
btn.appendChild(document.createTextNode(tab.label));
|
|
@@ -435,7 +403,7 @@ function createTabBar(tabs, activeTab, onTabChange, opts) {
|
|
|
435
403
|
bar.appendChild(btn);
|
|
436
404
|
return btn;
|
|
437
405
|
});
|
|
438
|
-
if (variant === "bar") bar.appendChild(h("div", { className: "sdt-tabbar-spacer" }));
|
|
406
|
+
if (variant === "bar") bar.appendChild((0, ___in_page_ui_dom_js.h)("div", { className: "sdt-tabbar-spacer" }));
|
|
439
407
|
if (opts?.trailing) bar.appendChild(opts.trailing);
|
|
440
408
|
function measure() {
|
|
441
409
|
const btn = bar.querySelector(`[data-tab-id="${current}"]`);
|
|
@@ -463,14 +431,14 @@ function createTabBar(tabs, activeTab, onTabChange, opts) {
|
|
|
463
431
|
};
|
|
464
432
|
}
|
|
465
433
|
function createIframeTab(src, title, loadingMsg = "Loading…", errorMsg = "Unable to load content", errorDetail, openExternallyLabel) {
|
|
466
|
-
const container = h("div", { className: "sdt-iframe-container" });
|
|
467
|
-
if (openExternallyLabel != null) container.appendChild(h("div", { className: "sdt-iframe-toolbar" }, h("a", {
|
|
434
|
+
const container = (0, ___in_page_ui_dom_js.h)("div", { className: "sdt-iframe-container" });
|
|
435
|
+
if (openExternallyLabel != null) container.appendChild((0, ___in_page_ui_dom_js.h)("div", { className: "sdt-iframe-toolbar" }, (0, ___in_page_ui_dom_js.h)("a", {
|
|
468
436
|
href: src,
|
|
469
437
|
target: "_blank",
|
|
470
438
|
rel: "noopener noreferrer",
|
|
471
439
|
className: "sdt-iframe-open-link"
|
|
472
440
|
}, openExternallyLabel)));
|
|
473
|
-
const loadingEl = h("div", { className: "sdt-iframe-loading" }, loadingMsg);
|
|
441
|
+
const loadingEl = (0, ___in_page_ui_dom_js.h)("div", { className: "sdt-iframe-loading" }, loadingMsg);
|
|
474
442
|
container.appendChild(loadingEl);
|
|
475
443
|
const iframe = document.createElement("iframe");
|
|
476
444
|
iframe.src = src;
|
|
@@ -484,18 +452,18 @@ function createIframeTab(src, title, loadingMsg = "Loading…", errorMsg = "Unab
|
|
|
484
452
|
iframe.addEventListener("error", () => {
|
|
485
453
|
loadingEl.style.display = "none";
|
|
486
454
|
container.innerHTML = "";
|
|
487
|
-
const errDiv = h("div", { className: "sdt-iframe-error" });
|
|
488
|
-
errDiv.appendChild(h("div", null, errorMsg));
|
|
489
|
-
if (errorDetail) errDiv.appendChild(h("div", { style: {
|
|
455
|
+
const errDiv = (0, ___in_page_ui_dom_js.h)("div", { className: "sdt-iframe-error" });
|
|
456
|
+
errDiv.appendChild((0, ___in_page_ui_dom_js.h)("div", null, errorMsg));
|
|
457
|
+
if (errorDetail) errDiv.appendChild((0, ___in_page_ui_dom_js.h)("div", { style: {
|
|
490
458
|
fontSize: "12px",
|
|
491
459
|
color: "var(--sdt-text-tertiary)"
|
|
492
460
|
} }, errorDetail));
|
|
493
|
-
const retryBtn = h("button", { className: "sdt-iframe-error-btn" }, "Retry");
|
|
461
|
+
const retryBtn = (0, ___in_page_ui_dom_js.h)("button", { className: "sdt-iframe-error-btn" }, "Retry");
|
|
494
462
|
retryBtn.addEventListener("click", () => {
|
|
495
463
|
container.replaceWith(createIframeTab(src, title, loadingMsg, errorMsg, errorDetail, openExternallyLabel));
|
|
496
464
|
});
|
|
497
465
|
errDiv.appendChild(retryBtn);
|
|
498
|
-
const link = h("a", {
|
|
466
|
+
const link = (0, ___in_page_ui_dom_js.h)("a", {
|
|
499
467
|
href: src,
|
|
500
468
|
target: "_blank",
|
|
501
469
|
rel: "noopener noreferrer",
|
|
@@ -511,34 +479,38 @@ function createIframeTab(src, title, loadingMsg = "Loading…", errorMsg = "Unab
|
|
|
511
479
|
container.appendChild(iframe);
|
|
512
480
|
return container;
|
|
513
481
|
}
|
|
482
|
+
function hasPersistentTokenStoreForDevTool(app) {
|
|
483
|
+
return app[___lib_hexclave_app_common_js.hexclaveAppInternalsSymbol].getConstructorOptions().tokenStore !== null;
|
|
484
|
+
}
|
|
514
485
|
function createOverviewTab(app) {
|
|
515
|
-
const container = h("div", { className: "sdt-ov" });
|
|
516
|
-
const
|
|
517
|
-
heroCard.
|
|
518
|
-
|
|
519
|
-
const
|
|
520
|
-
const
|
|
521
|
-
const
|
|
522
|
-
const
|
|
523
|
-
const
|
|
486
|
+
const container = (0, ___in_page_ui_dom_js.h)("div", { className: "sdt-ov" });
|
|
487
|
+
const hasPersistentTokenStore = hasPersistentTokenStoreForDevTool(app);
|
|
488
|
+
const heroCard = (0, ___in_page_ui_dom_js.h)("div", { className: "sdt-ov-card sdt-ov-card-hero" });
|
|
489
|
+
heroCard.appendChild((0, ___in_page_ui_dom_js.h)("div", { className: "sdt-ov-label" }, "Identity"));
|
|
490
|
+
const userRow = (0, ___in_page_ui_dom_js.h)("div", { className: "sdt-ov-user-row" });
|
|
491
|
+
const avatar = (0, ___in_page_ui_dom_js.h)("div", { className: "sdt-ov-avatar" }, "?");
|
|
492
|
+
const userMeta = (0, ___in_page_ui_dom_js.h)("div", { className: "sdt-ov-user-meta" });
|
|
493
|
+
const userName = (0, ___in_page_ui_dom_js.h)("div", { className: "sdt-ov-user-name" }, "Loading…");
|
|
494
|
+
const userEmail = (0, ___in_page_ui_dom_js.h)("div", { className: "sdt-ov-user-email" }, "");
|
|
495
|
+
const authIndicator = (0, ___in_page_ui_dom_js.h)("div", {
|
|
524
496
|
className: "sdt-ov-auth-indicator",
|
|
525
497
|
style: { display: "none" }
|
|
526
498
|
}, "Authenticated");
|
|
527
499
|
userMeta.append(userName, userEmail, authIndicator);
|
|
528
500
|
userRow.append(avatar, userMeta);
|
|
529
501
|
heroCard.appendChild(userRow);
|
|
530
|
-
const actions = h("div", { className: "sdt-ov-actions" });
|
|
531
|
-
const toast = h("div", {
|
|
502
|
+
const actions = (0, ___in_page_ui_dom_js.h)("div", { className: "sdt-ov-actions" });
|
|
503
|
+
const toast = (0, ___in_page_ui_dom_js.h)("div", {
|
|
532
504
|
className: "sdt-ov-toast",
|
|
533
505
|
style: { display: "none" }
|
|
534
506
|
});
|
|
535
|
-
const emailRow = h("div", { className: "sdt-ov-email-input" });
|
|
536
|
-
const emailInput = h("input", {
|
|
507
|
+
const emailRow = (0, ___in_page_ui_dom_js.h)("div", { className: "sdt-ov-email-input" });
|
|
508
|
+
const emailInput = (0, ___in_page_ui_dom_js.h)("input", {
|
|
537
509
|
type: "email",
|
|
538
510
|
placeholder: "Sign in as email…"
|
|
539
511
|
});
|
|
540
|
-
const emailBtn = h("button", null);
|
|
541
|
-
setHtml(emailBtn, "<svg width=\"12\" height=\"12\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><line x1=\"5\" y1=\"12\" x2=\"19\" y2=\"12\"/><polyline points=\"12 5 19 12 12 19\"/></svg>");
|
|
512
|
+
const emailBtn = (0, ___in_page_ui_dom_js.h)("button", null);
|
|
513
|
+
(0, ___in_page_ui_dom_js.setHtml)(emailBtn, "<svg width=\"12\" height=\"12\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><line x1=\"5\" y1=\"12\" x2=\"19\" y2=\"12\"/><polyline points=\"12 5 19 12 12 19\"/></svg>");
|
|
542
514
|
emailRow.append(emailInput, emailBtn);
|
|
543
515
|
function isBestEffortOverviewError(error) {
|
|
544
516
|
if (error instanceof DOMException && error.name === "AbortError") return true;
|
|
@@ -558,8 +530,17 @@ function createOverviewTab(app) {
|
|
|
558
530
|
let loading = false;
|
|
559
531
|
function rebuildActions() {
|
|
560
532
|
actions.innerHTML = "";
|
|
533
|
+
if (!hasPersistentTokenStore) {
|
|
534
|
+
userName.textContent = "Current user unavailable";
|
|
535
|
+
userEmail.textContent = "This app was initialized without a token store";
|
|
536
|
+
actions.appendChild((0, ___in_page_ui_dom_js.h)("button", {
|
|
537
|
+
className: "sdt-ov-btn sdt-ov-btn-wide",
|
|
538
|
+
disabled: "true"
|
|
539
|
+
}, "Session actions unavailable"));
|
|
540
|
+
return;
|
|
541
|
+
}
|
|
561
542
|
if (currentUser) {
|
|
562
|
-
const signOutBtn = h("button", { className: "sdt-ov-btn sdt-ov-btn-danger" }, "Sign Out");
|
|
543
|
+
const signOutBtn = (0, ___in_page_ui_dom_js.h)("button", { className: "sdt-ov-btn sdt-ov-btn-danger" }, "Sign Out");
|
|
563
544
|
signOutBtn.disabled = loading;
|
|
564
545
|
signOutBtn.addEventListener("click", () => {
|
|
565
546
|
(0, _hexclave_shared_dist_utils_promises.runAsynchronously)(async () => {
|
|
@@ -575,14 +556,14 @@ function createOverviewTab(app) {
|
|
|
575
556
|
await refreshUser();
|
|
576
557
|
});
|
|
577
558
|
});
|
|
578
|
-
const randomBtn = h("button", { className: "sdt-ov-btn sdt-ov-btn-primary" }, "Random User");
|
|
559
|
+
const randomBtn = (0, ___in_page_ui_dom_js.h)("button", { className: "sdt-ov-btn sdt-ov-btn-primary" }, "Random User");
|
|
579
560
|
randomBtn.disabled = loading;
|
|
580
561
|
randomBtn.addEventListener("click", () => {
|
|
581
562
|
(0, _hexclave_shared_dist_utils_promises.runAsynchronously)(doQuickSignIn());
|
|
582
563
|
});
|
|
583
564
|
actions.append(signOutBtn, randomBtn);
|
|
584
565
|
} else {
|
|
585
|
-
const quickBtn = h("button", { className: "sdt-ov-btn sdt-ov-btn-primary sdt-ov-btn-wide" }, loading ? "Working…" : "Quick Sign In");
|
|
566
|
+
const quickBtn = (0, ___in_page_ui_dom_js.h)("button", { className: "sdt-ov-btn sdt-ov-btn-primary sdt-ov-btn-wide" }, loading ? "Working…" : "Quick Sign In");
|
|
586
567
|
quickBtn.disabled = loading;
|
|
587
568
|
quickBtn.addEventListener("click", () => {
|
|
588
569
|
(0, _hexclave_shared_dist_utils_promises.runAsynchronously)(doQuickSignIn());
|
|
@@ -680,10 +661,10 @@ function createOverviewTab(app) {
|
|
|
680
661
|
if (e.key === "Enter") (0, _hexclave_shared_dist_utils_promises.runAsynchronously)(doSignInAs(emailInput.value));
|
|
681
662
|
});
|
|
682
663
|
heroCard.append(actions, toast);
|
|
683
|
-
const methodsCard = h("div", { className: "sdt-ov-card sdt-ov-card-auth" });
|
|
684
|
-
methodsCard.appendChild(h("div", { className: "sdt-ov-label" }, "Auth Methods"));
|
|
685
|
-
const authGrid = h("div", { className: "sdt-ov-auth-grid" });
|
|
686
|
-
for (let i = 0; i < 3; i++) authGrid.appendChild(h("div", { className: "sdt-ov-method sdt-ov-skeleton-pill" }));
|
|
664
|
+
const methodsCard = (0, ___in_page_ui_dom_js.h)("div", { className: "sdt-ov-card sdt-ov-card-auth" });
|
|
665
|
+
methodsCard.appendChild((0, ___in_page_ui_dom_js.h)("div", { className: "sdt-ov-label" }, "Auth Methods"));
|
|
666
|
+
const authGrid = (0, ___in_page_ui_dom_js.h)("div", { className: "sdt-ov-auth-grid" });
|
|
667
|
+
for (let i = 0; i < 3; i++) authGrid.appendChild((0, ___in_page_ui_dom_js.h)("div", { className: "sdt-ov-method sdt-ov-skeleton-pill" }));
|
|
687
668
|
methodsCard.appendChild(authGrid);
|
|
688
669
|
let hasActiveAuthMethod = null;
|
|
689
670
|
async function loadAuthMethods() {
|
|
@@ -707,18 +688,18 @@ function createOverviewTab(app) {
|
|
|
707
688
|
}
|
|
708
689
|
];
|
|
709
690
|
for (const m of methods) {
|
|
710
|
-
const pill = h("div", { className: `sdt-ov-method ${m.enabled ? "sdt-ov-method-on" : "sdt-ov-method-off"}` });
|
|
711
|
-
pill.appendChild(h("span", { className: "sdt-ov-method-name" }, m.label));
|
|
691
|
+
const pill = (0, ___in_page_ui_dom_js.h)("div", { className: `sdt-ov-method ${m.enabled ? "sdt-ov-method-on" : "sdt-ov-method-off"}` });
|
|
692
|
+
pill.appendChild((0, ___in_page_ui_dom_js.h)("span", { className: "sdt-ov-method-name" }, m.label));
|
|
712
693
|
authGrid.appendChild(pill);
|
|
713
694
|
}
|
|
714
695
|
for (const p of config.oauthProviders) {
|
|
715
|
-
const pill = h("div", { className: "sdt-ov-method sdt-ov-method-on sdt-ov-method-oauth" });
|
|
716
|
-
pill.appendChild(h("span", { className: "sdt-ov-method-name" }, p.id));
|
|
696
|
+
const pill = (0, ___in_page_ui_dom_js.h)("div", { className: "sdt-ov-method sdt-ov-method-on sdt-ov-method-oauth" });
|
|
697
|
+
pill.appendChild((0, ___in_page_ui_dom_js.h)("span", { className: "sdt-ov-method-name" }, p.id));
|
|
717
698
|
authGrid.appendChild(pill);
|
|
718
699
|
}
|
|
719
700
|
if (!config.signUpEnabled) {
|
|
720
|
-
const pill = h("div", { className: "sdt-ov-method sdt-ov-method-warn" });
|
|
721
|
-
pill.appendChild(h("span", { className: "sdt-ov-method-name" }, "Sign-up off"));
|
|
701
|
+
const pill = (0, ___in_page_ui_dom_js.h)("div", { className: "sdt-ov-method sdt-ov-method-warn" });
|
|
702
|
+
pill.appendChild((0, ___in_page_ui_dom_js.h)("span", { className: "sdt-ov-method-name" }, "Sign-up off"));
|
|
722
703
|
authGrid.appendChild(pill);
|
|
723
704
|
}
|
|
724
705
|
buildChecklist();
|
|
@@ -730,7 +711,7 @@ function createOverviewTab(app) {
|
|
|
730
711
|
}
|
|
731
712
|
}
|
|
732
713
|
(0, _hexclave_shared_dist_utils_promises.runAsynchronously)(loadAuthMethods());
|
|
733
|
-
const checksCard = h("div", { className: "sdt-ov-card sdt-ov-card-checks" });
|
|
714
|
+
const checksCard = (0, ___in_page_ui_dom_js.h)("div", { className: "sdt-ov-card sdt-ov-card-checks" });
|
|
734
715
|
const projectId = app.projectId;
|
|
735
716
|
let checksCardMounted = false;
|
|
736
717
|
function buildChecklist() {
|
|
@@ -746,10 +727,14 @@ function createOverviewTab(app) {
|
|
|
746
727
|
label: "Auth method active",
|
|
747
728
|
hint: hasActiveAuthMethod === null ? "Still checking project config" : null
|
|
748
729
|
},
|
|
749
|
-
{
|
|
730
|
+
hasPersistentTokenStore ? {
|
|
750
731
|
ok: !!currentUser,
|
|
751
732
|
label: "Sign in a test user",
|
|
752
733
|
hint: "Use “Quick Sign In” above →"
|
|
734
|
+
} : {
|
|
735
|
+
ok: true,
|
|
736
|
+
label: "Current-user tools unavailable",
|
|
737
|
+
hint: null
|
|
753
738
|
}
|
|
754
739
|
];
|
|
755
740
|
const passCount = checks.filter((c) => c.ok).length;
|
|
@@ -764,31 +749,42 @@ function createOverviewTab(app) {
|
|
|
764
749
|
container.appendChild(checksCard);
|
|
765
750
|
checksCardMounted = true;
|
|
766
751
|
}
|
|
767
|
-
const titleRow = h("div", { className: "sdt-ov-checks-header" });
|
|
768
|
-
const titleLabel = h("div", {
|
|
752
|
+
const titleRow = (0, ___in_page_ui_dom_js.h)("div", { className: "sdt-ov-checks-header" });
|
|
753
|
+
const titleLabel = (0, ___in_page_ui_dom_js.h)("div", {
|
|
769
754
|
className: "sdt-ov-label",
|
|
770
755
|
style: {
|
|
771
756
|
marginBottom: "0",
|
|
772
757
|
color: "var(--sdt-warning)"
|
|
773
758
|
}
|
|
774
759
|
}, "Setup");
|
|
775
|
-
const badge = h("span", { className: "sdt-ov-checks-badge sdt-ov-checks-badge-warn" }, `${passCount}\u200a/\u200a${checks.length}`);
|
|
760
|
+
const badge = (0, ___in_page_ui_dom_js.h)("span", { className: "sdt-ov-checks-badge sdt-ov-checks-badge-warn" }, `${passCount}\u200a/\u200a${checks.length}`);
|
|
776
761
|
titleRow.append(titleLabel, badge);
|
|
777
762
|
checksCard.appendChild(titleRow);
|
|
778
|
-
const bar = h("div", { className: "sdt-ov-checks-bar" });
|
|
779
|
-
const fill = h("div", { className: "sdt-ov-checks-bar-fill" });
|
|
763
|
+
const bar = (0, ___in_page_ui_dom_js.h)("div", { className: "sdt-ov-checks-bar" });
|
|
764
|
+
const fill = (0, ___in_page_ui_dom_js.h)("div", { className: "sdt-ov-checks-bar-fill" });
|
|
780
765
|
fill.style.width = `${passCount / checks.length * 100}%`;
|
|
781
766
|
bar.appendChild(fill);
|
|
782
767
|
checksCard.appendChild(bar);
|
|
783
768
|
for (const c of checks) {
|
|
784
|
-
const row = h("div", { className: "sdt-ov-setup-row" });
|
|
785
|
-
row.appendChild(h("span", { className: `sdt-ov-setup-dot ${c.ok ? "sdt-ov-setup-dot-ok" : "sdt-ov-setup-dot-warn"}` }));
|
|
786
|
-
row.appendChild(h("span", { className: "sdt-ov-setup-label" }, c.label));
|
|
787
|
-
if (!c.ok && c.hint) row.appendChild(h("span", { className: "sdt-ov-setup-hint" }, c.hint));
|
|
769
|
+
const row = (0, ___in_page_ui_dom_js.h)("div", { className: "sdt-ov-setup-row" });
|
|
770
|
+
row.appendChild((0, ___in_page_ui_dom_js.h)("span", { className: `sdt-ov-setup-dot ${c.ok ? "sdt-ov-setup-dot-ok" : "sdt-ov-setup-dot-warn"}` }));
|
|
771
|
+
row.appendChild((0, ___in_page_ui_dom_js.h)("span", { className: "sdt-ov-setup-label" }, c.label));
|
|
772
|
+
if (!c.ok && c.hint) row.appendChild((0, ___in_page_ui_dom_js.h)("span", { className: "sdt-ov-setup-hint" }, c.hint));
|
|
788
773
|
checksCard.appendChild(row);
|
|
789
774
|
}
|
|
790
775
|
}
|
|
791
776
|
async function refreshUser() {
|
|
777
|
+
if (!hasPersistentTokenStore) {
|
|
778
|
+
avatar.className = "sdt-ov-avatar";
|
|
779
|
+
avatar.textContent = "?";
|
|
780
|
+
userName.textContent = "Current user unavailable";
|
|
781
|
+
userEmail.textContent = "This app was initialized without a token store";
|
|
782
|
+
authIndicator.style.display = "none";
|
|
783
|
+
currentUser = null;
|
|
784
|
+
rebuildActions();
|
|
785
|
+
buildChecklist();
|
|
786
|
+
return;
|
|
787
|
+
}
|
|
792
788
|
try {
|
|
793
789
|
currentUser = await app.getUser();
|
|
794
790
|
if (currentUser) {
|
|
@@ -830,31 +826,31 @@ function createOverviewTab(app) {
|
|
|
830
826
|
};
|
|
831
827
|
}
|
|
832
828
|
function createConsoleTab(logStore) {
|
|
833
|
-
const container = h("div", { className: "sdt-console-panel" });
|
|
829
|
+
const container = (0, ___in_page_ui_dom_js.h)("div", { className: "sdt-console-panel" });
|
|
834
830
|
const EVENT_TYPE_STYLES = {
|
|
835
831
|
"error": "sdt-badge-error",
|
|
836
832
|
"info": "sdt-badge-info"
|
|
837
833
|
};
|
|
838
|
-
const title = h("div", { className: "sdt-console-title" }, "Logs");
|
|
839
|
-
const actions = h("div", { className: "sdt-console-actions" });
|
|
840
|
-
const copyBtn = h("button", {
|
|
834
|
+
const title = (0, ___in_page_ui_dom_js.h)("div", { className: "sdt-console-title" }, "Logs");
|
|
835
|
+
const actions = (0, ___in_page_ui_dom_js.h)("div", { className: "sdt-console-actions" });
|
|
836
|
+
const copyBtn = (0, ___in_page_ui_dom_js.h)("button", {
|
|
841
837
|
className: "sdt-console-action-btn",
|
|
842
838
|
title: "Copy logs"
|
|
843
839
|
});
|
|
844
|
-
setHtml(copyBtn, "<svg width=\"12\" height=\"12\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.25\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><rect x=\"9\" y=\"9\" width=\"13\" height=\"13\" rx=\"2\"/><path d=\"M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1\"/></svg>Copy");
|
|
845
|
-
const exportBtn = h("button", {
|
|
840
|
+
(0, ___in_page_ui_dom_js.setHtml)(copyBtn, "<svg width=\"12\" height=\"12\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.25\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><rect x=\"9\" y=\"9\" width=\"13\" height=\"13\" rx=\"2\"/><path d=\"M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1\"/></svg>Copy");
|
|
841
|
+
const exportBtn = (0, ___in_page_ui_dom_js.h)("button", {
|
|
846
842
|
className: "sdt-console-action-btn",
|
|
847
843
|
title: "Export logs"
|
|
848
844
|
});
|
|
849
|
-
setHtml(exportBtn, "<svg width=\"12\" height=\"12\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.25\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4\"/><polyline points=\"7 10 12 15 17 10\"/><line x1=\"12\" y1=\"15\" x2=\"12\" y2=\"3\"/></svg>Export");
|
|
850
|
-
const clearBtn = h("button", {
|
|
845
|
+
(0, ___in_page_ui_dom_js.setHtml)(exportBtn, "<svg width=\"12\" height=\"12\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.25\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4\"/><polyline points=\"7 10 12 15 17 10\"/><line x1=\"12\" y1=\"15\" x2=\"12\" y2=\"3\"/></svg>Export");
|
|
846
|
+
const clearBtn = (0, ___in_page_ui_dom_js.h)("button", {
|
|
851
847
|
className: "sdt-console-action-btn",
|
|
852
848
|
title: "Clear logs"
|
|
853
849
|
});
|
|
854
|
-
setHtml(clearBtn, "<svg width=\"12\" height=\"12\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.25\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><polyline points=\"3 6 5 6 21 6\"/><path d=\"M8 6V4a2 2 0 0 1 2-2h4a2 2 0 0 1 2 2v2\"/><path d=\"M19 6l-1 14a2 2 0 0 1-2 2H8a2 2 0 0 1-2-2L5 6\"/></svg>Clear");
|
|
850
|
+
(0, ___in_page_ui_dom_js.setHtml)(clearBtn, "<svg width=\"12\" height=\"12\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.25\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><polyline points=\"3 6 5 6 21 6\"/><path d=\"M8 6V4a2 2 0 0 1 2-2h4a2 2 0 0 1 2 2v2\"/><path d=\"M19 6l-1 14a2 2 0 0 1-2 2H8a2 2 0 0 1-2-2L5 6\"/></svg>Clear");
|
|
855
851
|
actions.append(copyBtn, exportBtn, clearBtn);
|
|
856
|
-
container.appendChild(h("div", { className: "sdt-console-header" }, title, actions));
|
|
857
|
-
const contentArea = h("div", { className: "sdt-console-log-scroll sdt-tab-content-fade" });
|
|
852
|
+
container.appendChild((0, ___in_page_ui_dom_js.h)("div", { className: "sdt-console-header" }, title, actions));
|
|
853
|
+
const contentArea = (0, ___in_page_ui_dom_js.h)("div", { className: "sdt-console-log-scroll sdt-tab-content-fade" });
|
|
858
854
|
container.appendChild(contentArea);
|
|
859
855
|
let visibleLogCount = CONSOLE_LOG_BATCH_SIZE;
|
|
860
856
|
function getMergedLogs() {
|
|
@@ -889,19 +885,19 @@ function createConsoleTab(logStore) {
|
|
|
889
885
|
function renderLogItem(item) {
|
|
890
886
|
if (item.kind === "api") {
|
|
891
887
|
const log = item.entry;
|
|
892
|
-
const row = h("div", { className: "sdt-log-item" });
|
|
893
|
-
row.appendChild(h("span", { className: "sdt-log-time" }, formatTimestamp(log.timestamp)));
|
|
894
|
-
row.appendChild(h("span", { className: `sdt-log-method sdt-log-method-${log.method.toLowerCase()}` }, log.method));
|
|
895
|
-
row.appendChild(h("span", { className: "sdt-log-url" }, log.url));
|
|
896
|
-
if (log.status !== void 0) row.appendChild(h("span", { className: `sdt-log-status ${log.status < 400 ? "sdt-log-status-ok" : "sdt-log-status-err"}` }, String(log.status)));
|
|
897
|
-
if (log.duration !== void 0) row.appendChild(h("span", { className: "sdt-log-time" }, log.duration + "ms"));
|
|
888
|
+
const row = (0, ___in_page_ui_dom_js.h)("div", { className: "sdt-log-item" });
|
|
889
|
+
row.appendChild((0, ___in_page_ui_dom_js.h)("span", { className: "sdt-log-time" }, formatTimestamp(log.timestamp)));
|
|
890
|
+
row.appendChild((0, ___in_page_ui_dom_js.h)("span", { className: `sdt-log-method sdt-log-method-${log.method.toLowerCase()}` }, log.method));
|
|
891
|
+
row.appendChild((0, ___in_page_ui_dom_js.h)("span", { className: "sdt-log-url" }, log.url));
|
|
892
|
+
if (log.status !== void 0) row.appendChild((0, ___in_page_ui_dom_js.h)("span", { className: `sdt-log-status ${log.status < 400 ? "sdt-log-status-ok" : "sdt-log-status-err"}` }, String(log.status)));
|
|
893
|
+
if (log.duration !== void 0) row.appendChild((0, ___in_page_ui_dom_js.h)("span", { className: "sdt-log-time" }, log.duration + "ms"));
|
|
898
894
|
return row;
|
|
899
895
|
}
|
|
900
896
|
const log = item.entry;
|
|
901
|
-
const row = h("div", { className: "sdt-log-item" });
|
|
902
|
-
row.appendChild(h("span", { className: "sdt-log-time" }, formatTimestamp(log.timestamp)));
|
|
903
|
-
row.appendChild(h("span", { className: `sdt-badge ${EVENT_TYPE_STYLES[log.type] || "sdt-badge-info"}` }, log.type));
|
|
904
|
-
row.appendChild(h("span", { className: "sdt-log-message" }, log.message));
|
|
897
|
+
const row = (0, ___in_page_ui_dom_js.h)("div", { className: "sdt-log-item" });
|
|
898
|
+
row.appendChild((0, ___in_page_ui_dom_js.h)("span", { className: "sdt-log-time" }, formatTimestamp(log.timestamp)));
|
|
899
|
+
row.appendChild((0, ___in_page_ui_dom_js.h)("span", { className: `sdt-badge ${EVENT_TYPE_STYLES[log.type] || "sdt-badge-info"}` }, log.type));
|
|
900
|
+
row.appendChild((0, ___in_page_ui_dom_js.h)("span", { className: "sdt-log-message" }, log.message));
|
|
905
901
|
return row;
|
|
906
902
|
}
|
|
907
903
|
function renderLogs() {
|
|
@@ -913,9 +909,9 @@ function createConsoleTab(logStore) {
|
|
|
913
909
|
contentArea.innerHTML = "<div class=\"sdt-empty-state\"><div class=\"sdt-empty-state-icon\">📋</div><div>No logs recorded yet</div><div style=\"font-size:12px;color:var(--sdt-text-tertiary)\">API calls and auth events will appear here</div></div>";
|
|
914
910
|
return;
|
|
915
911
|
}
|
|
916
|
-
const list = h("div", { className: "sdt-log-list" });
|
|
912
|
+
const list = (0, ___in_page_ui_dom_js.h)("div", { className: "sdt-log-list" });
|
|
917
913
|
for (const item of merged.slice(0, visibleLogCount)) list.appendChild(renderLogItem(item));
|
|
918
|
-
if (visibleLogCount < merged.length) list.appendChild(h("div", { className: "sdt-log-load-hint" }, `${merged.length - visibleLogCount} older logs available`));
|
|
914
|
+
if (visibleLogCount < merged.length) list.appendChild((0, ___in_page_ui_dom_js.h)("div", { className: "sdt-log-load-hint" }, `${merged.length - visibleLogCount} older logs available`));
|
|
919
915
|
contentArea.appendChild(list);
|
|
920
916
|
contentArea.scrollTop = Math.min(previousScrollTop, contentArea.scrollHeight);
|
|
921
917
|
}
|
|
@@ -933,14 +929,14 @@ function createConsoleTab(logStore) {
|
|
|
933
929
|
(0, _hexclave_shared_dist_utils_promises.runAsynchronously)(navigator.clipboard.writeText(formatLogsForExport()).then(() => {
|
|
934
930
|
copyBtn.textContent = "✓ Copied";
|
|
935
931
|
setTimeout(() => {
|
|
936
|
-
setHtml(copyBtn, "<svg width=\"12\" height=\"12\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.25\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><rect x=\"9\" y=\"9\" width=\"13\" height=\"13\" rx=\"2\"/><path d=\"M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1\"/></svg>Copy");
|
|
932
|
+
(0, ___in_page_ui_dom_js.setHtml)(copyBtn, "<svg width=\"12\" height=\"12\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.25\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><rect x=\"9\" y=\"9\" width=\"13\" height=\"13\" rx=\"2\"/><path d=\"M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1\"/></svg>Copy");
|
|
937
933
|
}, 1500);
|
|
938
934
|
}));
|
|
939
935
|
});
|
|
940
936
|
exportBtn.addEventListener("click", () => {
|
|
941
937
|
const blob = new Blob([formatLogsForExport()], { type: "text/plain;charset=utf-8" });
|
|
942
938
|
const url = URL.createObjectURL(blob);
|
|
943
|
-
const link = h("a", {
|
|
939
|
+
const link = (0, ___in_page_ui_dom_js.h)("a", {
|
|
944
940
|
href: url,
|
|
945
941
|
download: `hexclave-dev-tool-logs-${(/* @__PURE__ */ new Date()).toISOString()}.txt`
|
|
946
942
|
});
|
|
@@ -965,13 +961,13 @@ function createConsoleTab(logStore) {
|
|
|
965
961
|
};
|
|
966
962
|
}
|
|
967
963
|
function createAITab(app) {
|
|
968
|
-
const container = h("div", { className: "sdt-ai-container" });
|
|
964
|
+
const container = (0, ___in_page_ui_dom_js.h)("div", { className: "sdt-ai-container" });
|
|
969
965
|
const apiBaseUrl = resolveApiBaseUrl(app);
|
|
970
966
|
const messages = [];
|
|
971
967
|
let aiLoading = false;
|
|
972
968
|
let activeAiAbortController = null;
|
|
973
|
-
const messagesArea = h("div", { className: "sdt-ai-messages" });
|
|
974
|
-
const inputArea = h("div", { className: "sdt-ai-input-area" });
|
|
969
|
+
const messagesArea = (0, ___in_page_ui_dom_js.h)("div", { className: "sdt-ai-messages" });
|
|
970
|
+
const inputArea = (0, ___in_page_ui_dom_js.h)("div", { className: "sdt-ai-input-area" });
|
|
975
971
|
const SUGGESTED_QUESTIONS = [
|
|
976
972
|
{
|
|
977
973
|
icon: "🔒",
|
|
@@ -1000,34 +996,34 @@ function createAITab(app) {
|
|
|
1000
996
|
return headers;
|
|
1001
997
|
}
|
|
1002
998
|
function renderToolCard(toolCall) {
|
|
1003
|
-
const toolCard = h("div", { className: "sdt-ai-tool-card" });
|
|
1004
|
-
const header = h("button", {
|
|
999
|
+
const toolCard = (0, ___in_page_ui_dom_js.h)("div", { className: "sdt-ai-tool-card" });
|
|
1000
|
+
const header = (0, ___in_page_ui_dom_js.h)("button", {
|
|
1005
1001
|
className: "sdt-ai-tool-header",
|
|
1006
1002
|
type: "button"
|
|
1007
1003
|
});
|
|
1008
|
-
header.appendChild(h("span", { className: "sdt-ai-tool-name" }, toolCall.toolName));
|
|
1009
|
-
header.appendChild(h("span", { className: `sdt-ai-tool-status sdt-ai-tool-status-${toolCall.state}` }, toolCall.state));
|
|
1010
|
-
header.appendChild(h("span", { className: `sdt-ai-tool-chevron${toolCall.isExpanded ? " sdt-ai-tool-chevron-open" : ""}` }, "▾"));
|
|
1004
|
+
header.appendChild((0, ___in_page_ui_dom_js.h)("span", { className: "sdt-ai-tool-name" }, toolCall.toolName));
|
|
1005
|
+
header.appendChild((0, ___in_page_ui_dom_js.h)("span", { className: `sdt-ai-tool-status sdt-ai-tool-status-${toolCall.state}` }, toolCall.state));
|
|
1006
|
+
header.appendChild((0, ___in_page_ui_dom_js.h)("span", { className: `sdt-ai-tool-chevron${toolCall.isExpanded ? " sdt-ai-tool-chevron-open" : ""}` }, "▾"));
|
|
1011
1007
|
header.addEventListener("click", () => {
|
|
1012
1008
|
toolCall.isExpanded = !toolCall.isExpanded;
|
|
1013
1009
|
renderMessages();
|
|
1014
1010
|
});
|
|
1015
1011
|
toolCard.appendChild(header);
|
|
1016
1012
|
if (toolCall.isExpanded) {
|
|
1017
|
-
const body = h("div", { className: "sdt-ai-tool-body" });
|
|
1013
|
+
const body = (0, ___in_page_ui_dom_js.h)("div", { className: "sdt-ai-tool-body" });
|
|
1018
1014
|
if (toolCall.argsText !== null) {
|
|
1019
|
-
body.appendChild(h("div", { className: "sdt-ai-tool-label" }, "Args"));
|
|
1020
|
-
const argsPre = h("pre", { className: "sdt-ai-tool-pre" });
|
|
1021
|
-
argsPre.appendChild(h("code", null, toolCall.argsText));
|
|
1015
|
+
body.appendChild((0, ___in_page_ui_dom_js.h)("div", { className: "sdt-ai-tool-label" }, "Args"));
|
|
1016
|
+
const argsPre = (0, ___in_page_ui_dom_js.h)("pre", { className: "sdt-ai-tool-pre" });
|
|
1017
|
+
argsPre.appendChild((0, ___in_page_ui_dom_js.h)("code", null, toolCall.argsText));
|
|
1022
1018
|
body.appendChild(argsPre);
|
|
1023
1019
|
}
|
|
1024
1020
|
if (toolCall.resultText !== null) {
|
|
1025
|
-
body.appendChild(h("div", { className: "sdt-ai-tool-label" }, toolCall.state === "error" ? "Error" : "Result"));
|
|
1026
|
-
const resultPre = h("pre", { className: "sdt-ai-tool-pre" });
|
|
1027
|
-
resultPre.appendChild(h("code", null, toolCall.resultText));
|
|
1021
|
+
body.appendChild((0, ___in_page_ui_dom_js.h)("div", { className: "sdt-ai-tool-label" }, toolCall.state === "error" ? "Error" : "Result"));
|
|
1022
|
+
const resultPre = (0, ___in_page_ui_dom_js.h)("pre", { className: "sdt-ai-tool-pre" });
|
|
1023
|
+
resultPre.appendChild((0, ___in_page_ui_dom_js.h)("code", null, toolCall.resultText));
|
|
1028
1024
|
body.appendChild(resultPre);
|
|
1029
1025
|
}
|
|
1030
|
-
if (toolCall.state === "running") body.appendChild(h("div", { className: "sdt-ai-tool-running" }, "Running..."));
|
|
1026
|
+
if (toolCall.state === "running") body.appendChild((0, ___in_page_ui_dom_js.h)("div", { className: "sdt-ai-tool-running" }, "Running..."));
|
|
1031
1027
|
toolCard.appendChild(body);
|
|
1032
1028
|
}
|
|
1033
1029
|
return toolCard;
|
|
@@ -1035,17 +1031,17 @@ function createAITab(app) {
|
|
|
1035
1031
|
function renderMessages() {
|
|
1036
1032
|
messagesArea.innerHTML = "";
|
|
1037
1033
|
if (messages.length === 0) {
|
|
1038
|
-
const empty = h("div", { className: "sdt-ai-empty" });
|
|
1039
|
-
const icon = h("div", { className: "sdt-ai-empty-icon" });
|
|
1040
|
-
setHtml(icon, "<svg width=\"32\" height=\"32\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><polygon points=\"12 2 15.09 8.26 22 9.27 17 14.14 18.18 21.02 12 17.77 5.82 21.02 7 14.14 2 9.27 8.91 8.26 12 2\"/></svg>");
|
|
1034
|
+
const empty = (0, ___in_page_ui_dom_js.h)("div", { className: "sdt-ai-empty" });
|
|
1035
|
+
const icon = (0, ___in_page_ui_dom_js.h)("div", { className: "sdt-ai-empty-icon" });
|
|
1036
|
+
(0, ___in_page_ui_dom_js.setHtml)(icon, "<svg width=\"32\" height=\"32\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><polygon points=\"12 2 15.09 8.26 22 9.27 17 14.14 18.18 21.02 12 17.77 5.82 21.02 7 14.14 2 9.27 8.91 8.26 12 2\"/></svg>");
|
|
1041
1037
|
empty.appendChild(icon);
|
|
1042
|
-
empty.appendChild(h("div", { className: "sdt-ai-empty-title" }, "Ask AI"));
|
|
1043
|
-
empty.appendChild(h("div", { className: "sdt-ai-empty-desc" }, "Get help with Hexclave integration, troubleshooting, and best practices."));
|
|
1044
|
-
const suggestions = h("div", { className: "sdt-ai-suggestions" });
|
|
1038
|
+
empty.appendChild((0, ___in_page_ui_dom_js.h)("div", { className: "sdt-ai-empty-title" }, "Ask AI"));
|
|
1039
|
+
empty.appendChild((0, ___in_page_ui_dom_js.h)("div", { className: "sdt-ai-empty-desc" }, "Get help with Hexclave integration, troubleshooting, and best practices."));
|
|
1040
|
+
const suggestions = (0, ___in_page_ui_dom_js.h)("div", { className: "sdt-ai-suggestions" });
|
|
1045
1041
|
for (const q of SUGGESTED_QUESTIONS) {
|
|
1046
|
-
const btn = h("button", { className: "sdt-ai-suggestion" });
|
|
1047
|
-
btn.appendChild(h("span", { className: "sdt-ai-suggestion-icon" }, q.icon));
|
|
1048
|
-
btn.appendChild(h("span", null, q.text));
|
|
1042
|
+
const btn = (0, ___in_page_ui_dom_js.h)("button", { className: "sdt-ai-suggestion" });
|
|
1043
|
+
btn.appendChild((0, ___in_page_ui_dom_js.h)("span", { className: "sdt-ai-suggestion-icon" }, q.icon));
|
|
1044
|
+
btn.appendChild((0, ___in_page_ui_dom_js.h)("span", null, q.text));
|
|
1049
1045
|
btn.addEventListener("click", () => {
|
|
1050
1046
|
(0, _hexclave_shared_dist_utils_promises.runAsynchronously)(sendMessage(q.text));
|
|
1051
1047
|
});
|
|
@@ -1055,43 +1051,43 @@ function createAITab(app) {
|
|
|
1055
1051
|
messagesArea.appendChild(empty);
|
|
1056
1052
|
return;
|
|
1057
1053
|
}
|
|
1058
|
-
const list = h("div", { className: "sdt-ai-message-list" });
|
|
1054
|
+
const list = (0, ___in_page_ui_dom_js.h)("div", { className: "sdt-ai-message-list" });
|
|
1059
1055
|
for (const msg of messages) if (msg.role === "user") {
|
|
1060
|
-
const msgDiv = h("div", { className: "sdt-ai-msg sdt-ai-msg-user" });
|
|
1061
|
-
const bubble = h("div", { className: "sdt-ai-bubble sdt-ai-bubble-user" });
|
|
1062
|
-
bubble.appendChild(h("p", null, msg.content));
|
|
1056
|
+
const msgDiv = (0, ___in_page_ui_dom_js.h)("div", { className: "sdt-ai-msg sdt-ai-msg-user" });
|
|
1057
|
+
const bubble = (0, ___in_page_ui_dom_js.h)("div", { className: "sdt-ai-bubble sdt-ai-bubble-user" });
|
|
1058
|
+
bubble.appendChild((0, ___in_page_ui_dom_js.h)("p", null, msg.content));
|
|
1063
1059
|
msgDiv.appendChild(bubble);
|
|
1064
|
-
const avatarDiv = h("div", { className: "sdt-ai-avatar sdt-ai-avatar-user" });
|
|
1065
|
-
setHtml(avatarDiv, "<svg width=\"14\" height=\"14\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M20 21v-2a4 4 0 0 0-4-4H8a4 4 0 0 0-4 4v2\"/><circle cx=\"12\" cy=\"7\" r=\"4\"/></svg>");
|
|
1060
|
+
const avatarDiv = (0, ___in_page_ui_dom_js.h)("div", { className: "sdt-ai-avatar sdt-ai-avatar-user" });
|
|
1061
|
+
(0, ___in_page_ui_dom_js.setHtml)(avatarDiv, "<svg width=\"14\" height=\"14\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M20 21v-2a4 4 0 0 0-4-4H8a4 4 0 0 0-4 4v2\"/><circle cx=\"12\" cy=\"7\" r=\"4\"/></svg>");
|
|
1066
1062
|
msgDiv.appendChild(avatarDiv);
|
|
1067
1063
|
list.appendChild(msgDiv);
|
|
1068
1064
|
} else {
|
|
1069
|
-
const msgDiv = h("div", { className: "sdt-ai-msg sdt-ai-msg-assistant" });
|
|
1070
|
-
const avatarDiv = h("div", { className: "sdt-ai-avatar sdt-ai-avatar-assistant" });
|
|
1071
|
-
setHtml(avatarDiv, "<svg width=\"14\" height=\"14\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><polygon points=\"12 2 15.09 8.26 22 9.27 17 14.14 18.18 21.02 12 17.77 5.82 21.02 7 14.14 2 9.27 8.91 8.26 12 2\"/></svg>");
|
|
1065
|
+
const msgDiv = (0, ___in_page_ui_dom_js.h)("div", { className: "sdt-ai-msg sdt-ai-msg-assistant" });
|
|
1066
|
+
const avatarDiv = (0, ___in_page_ui_dom_js.h)("div", { className: "sdt-ai-avatar sdt-ai-avatar-assistant" });
|
|
1067
|
+
(0, ___in_page_ui_dom_js.setHtml)(avatarDiv, "<svg width=\"14\" height=\"14\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><polygon points=\"12 2 15.09 8.26 22 9.27 17 14.14 18.18 21.02 12 17.77 5.82 21.02 7 14.14 2 9.27 8.91 8.26 12 2\"/></svg>");
|
|
1072
1068
|
msgDiv.appendChild(avatarDiv);
|
|
1073
|
-
const bubble = h("div", { className: "sdt-ai-bubble sdt-ai-bubble-assistant" });
|
|
1069
|
+
const bubble = (0, ___in_page_ui_dom_js.h)("div", { className: "sdt-ai-bubble sdt-ai-bubble-assistant" });
|
|
1074
1070
|
if (msg.parts.length === 0) bubble.innerHTML = "<div class=\"sdt-ai-thinking\"><span class=\"sdt-ai-thinking-dot\"></span><span class=\"sdt-ai-thinking-dot\"></span><span class=\"sdt-ai-thinking-dot\"></span></div>";
|
|
1075
1071
|
else for (const part of msg.parts) {
|
|
1076
1072
|
if (part.type === "text") {
|
|
1077
|
-
const textContainer = h("div", { className: "sdt-ai-part-text" });
|
|
1073
|
+
const textContainer = (0, ___in_page_ui_dom_js.h)("div", { className: "sdt-ai-part-text" });
|
|
1078
1074
|
renderMarkdownInto(textContainer, part.content);
|
|
1079
1075
|
bubble.appendChild(textContainer);
|
|
1080
1076
|
continue;
|
|
1081
1077
|
}
|
|
1082
1078
|
const toolCall = msg.toolCallsById.get(part.toolCallId);
|
|
1083
1079
|
if (toolCall == null) {
|
|
1084
|
-
const missingTool = h("div", { className: "sdt-ai-tool-card" });
|
|
1085
|
-
const missingBody = h("div", { className: "sdt-ai-tool-body" });
|
|
1086
|
-
missingBody.appendChild(h("div", { className: "sdt-ai-tool-label" }, "Error"));
|
|
1087
|
-
const missingPre = h("pre", { className: "sdt-ai-tool-pre" });
|
|
1088
|
-
missingPre.appendChild(h("code", null, `Missing tool call state for ${part.toolCallId}`));
|
|
1080
|
+
const missingTool = (0, ___in_page_ui_dom_js.h)("div", { className: "sdt-ai-tool-card" });
|
|
1081
|
+
const missingBody = (0, ___in_page_ui_dom_js.h)("div", { className: "sdt-ai-tool-body" });
|
|
1082
|
+
missingBody.appendChild((0, ___in_page_ui_dom_js.h)("div", { className: "sdt-ai-tool-label" }, "Error"));
|
|
1083
|
+
const missingPre = (0, ___in_page_ui_dom_js.h)("pre", { className: "sdt-ai-tool-pre" });
|
|
1084
|
+
missingPre.appendChild((0, ___in_page_ui_dom_js.h)("code", null, `Missing tool call state for ${part.toolCallId}`));
|
|
1089
1085
|
missingBody.appendChild(missingPre);
|
|
1090
1086
|
missingTool.appendChild(missingBody);
|
|
1091
1087
|
bubble.appendChild(missingTool);
|
|
1092
1088
|
continue;
|
|
1093
1089
|
}
|
|
1094
|
-
const toolsContainer = h("div", { className: "sdt-ai-tools" });
|
|
1090
|
+
const toolsContainer = (0, ___in_page_ui_dom_js.h)("div", { className: "sdt-ai-tools" });
|
|
1095
1091
|
toolsContainer.appendChild(renderToolCard(toolCall));
|
|
1096
1092
|
bubble.appendChild(toolsContainer);
|
|
1097
1093
|
}
|
|
@@ -1103,7 +1099,7 @@ function createAITab(app) {
|
|
|
1103
1099
|
}
|
|
1104
1100
|
function renderMarkdownInto(el, content) {
|
|
1105
1101
|
function appendBlockWithInlineMarkdown(tag, className, text) {
|
|
1106
|
-
const block = h(tag, { className });
|
|
1102
|
+
const block = (0, ___in_page_ui_dom_js.h)(tag, { className });
|
|
1107
1103
|
appendInlineMarkdown(block, text);
|
|
1108
1104
|
el.appendChild(block);
|
|
1109
1105
|
}
|
|
@@ -1120,10 +1116,10 @@ function createAITab(app) {
|
|
|
1120
1116
|
i++;
|
|
1121
1117
|
}
|
|
1122
1118
|
i++;
|
|
1123
|
-
const block = h("div", { className: "sdt-ai-code-block" });
|
|
1124
|
-
const header = h("div", { className: "sdt-ai-code-header" });
|
|
1125
|
-
header.appendChild(h("span", { className: "sdt-ai-code-lang" }, lang || "CODE"));
|
|
1126
|
-
const copyBtn = h("button", { className: "sdt-ai-copy-btn" }, "⎘");
|
|
1119
|
+
const block = (0, ___in_page_ui_dom_js.h)("div", { className: "sdt-ai-code-block" });
|
|
1120
|
+
const header = (0, ___in_page_ui_dom_js.h)("div", { className: "sdt-ai-code-header" });
|
|
1121
|
+
header.appendChild((0, ___in_page_ui_dom_js.h)("span", { className: "sdt-ai-code-lang" }, lang || "CODE"));
|
|
1122
|
+
const copyBtn = (0, ___in_page_ui_dom_js.h)("button", { className: "sdt-ai-copy-btn" }, "⎘");
|
|
1127
1123
|
const code = codeLines.join("\n");
|
|
1128
1124
|
copyBtn.addEventListener("click", () => {
|
|
1129
1125
|
(0, _hexclave_shared_dist_utils_promises.runAsynchronously)(navigator.clipboard.writeText(code).then(() => {
|
|
@@ -1135,8 +1131,8 @@ function createAITab(app) {
|
|
|
1135
1131
|
});
|
|
1136
1132
|
header.appendChild(copyBtn);
|
|
1137
1133
|
block.appendChild(header);
|
|
1138
|
-
const pre = h("pre", { className: "sdt-ai-code-pre" });
|
|
1139
|
-
pre.appendChild(h("code", null, code));
|
|
1134
|
+
const pre = (0, ___in_page_ui_dom_js.h)("pre", { className: "sdt-ai-code-pre" });
|
|
1135
|
+
pre.appendChild((0, ___in_page_ui_dom_js.h)("code", null, code));
|
|
1140
1136
|
block.appendChild(pre);
|
|
1141
1137
|
el.appendChild(block);
|
|
1142
1138
|
continue;
|
|
@@ -1148,9 +1144,9 @@ function createAITab(app) {
|
|
|
1148
1144
|
continue;
|
|
1149
1145
|
}
|
|
1150
1146
|
if (/^[-*] /.test(line)) {
|
|
1151
|
-
const ul = h("ul", { className: "sdt-ai-list" });
|
|
1147
|
+
const ul = (0, ___in_page_ui_dom_js.h)("ul", { className: "sdt-ai-list" });
|
|
1152
1148
|
while (i < lines.length && /^[-*] /.test(lines[i])) {
|
|
1153
|
-
const li = h("li");
|
|
1149
|
+
const li = (0, ___in_page_ui_dom_js.h)("li");
|
|
1154
1150
|
appendInlineMarkdown(li, lines[i].replace(/^[-*] /, ""));
|
|
1155
1151
|
ul.appendChild(li);
|
|
1156
1152
|
i++;
|
|
@@ -1159,9 +1155,9 @@ function createAITab(app) {
|
|
|
1159
1155
|
continue;
|
|
1160
1156
|
}
|
|
1161
1157
|
if (/^\d+\. /.test(line)) {
|
|
1162
|
-
const ol = h("ol", { className: "sdt-ai-list sdt-ai-list-ordered" });
|
|
1158
|
+
const ol = (0, ___in_page_ui_dom_js.h)("ol", { className: "sdt-ai-list sdt-ai-list-ordered" });
|
|
1163
1159
|
while (i < lines.length && /^\d+\. /.test(lines[i])) {
|
|
1164
|
-
const li = h("li");
|
|
1160
|
+
const li = (0, ___in_page_ui_dom_js.h)("li");
|
|
1165
1161
|
appendInlineMarkdown(li, lines[i].replace(/^\d+\. /, ""));
|
|
1166
1162
|
ol.appendChild(li);
|
|
1167
1163
|
i++;
|
|
@@ -1415,8 +1411,8 @@ function createAITab(app) {
|
|
|
1415
1411
|
renderInput();
|
|
1416
1412
|
}
|
|
1417
1413
|
}
|
|
1418
|
-
const inputWrapper = h("div", { className: "sdt-ai-input-wrapper" });
|
|
1419
|
-
const input = h("input", {
|
|
1414
|
+
const inputWrapper = (0, ___in_page_ui_dom_js.h)("div", { className: "sdt-ai-input-wrapper" });
|
|
1415
|
+
const input = (0, ___in_page_ui_dom_js.h)("input", {
|
|
1420
1416
|
type: "text",
|
|
1421
1417
|
className: "sdt-ai-input",
|
|
1422
1418
|
placeholder: "Ask anything about Hexclave...",
|
|
@@ -1424,11 +1420,11 @@ function createAITab(app) {
|
|
|
1424
1420
|
autocorrect: "off",
|
|
1425
1421
|
spellcheck: "false"
|
|
1426
1422
|
});
|
|
1427
|
-
const sendBtn = h("button", {
|
|
1423
|
+
const sendBtn = (0, ___in_page_ui_dom_js.h)("button", {
|
|
1428
1424
|
className: "sdt-ai-send-btn",
|
|
1429
1425
|
title: "Send"
|
|
1430
1426
|
});
|
|
1431
|
-
setHtml(sendBtn, "<svg width=\"14\" height=\"14\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><line x1=\"22\" y1=\"2\" x2=\"11\" y2=\"13\"/><polygon points=\"22 2 15 22 11 13 2 9 22 2\"/></svg>");
|
|
1427
|
+
(0, ___in_page_ui_dom_js.setHtml)(sendBtn, "<svg width=\"14\" height=\"14\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><line x1=\"22\" y1=\"2\" x2=\"11\" y2=\"13\"/><polygon points=\"22 2 15 22 11 13 2 9 22 2\"/></svg>");
|
|
1432
1428
|
function renderInput() {
|
|
1433
1429
|
input.disabled = false;
|
|
1434
1430
|
input.placeholder = messages.length === 0 ? "Ask anything about Hexclave..." : "Ask a follow-up...";
|
|
@@ -1436,17 +1432,17 @@ function createAITab(app) {
|
|
|
1436
1432
|
sendBtn.classList.add("sdt-ai-send-btn-active");
|
|
1437
1433
|
sendBtn.classList.add("sdt-ai-stop-btn");
|
|
1438
1434
|
sendBtn.setAttribute("title", "Stop");
|
|
1439
|
-
setHtml(sendBtn, "<svg width=\"12\" height=\"12\" viewBox=\"0 0 24 24\" fill=\"currentColor\"><rect x=\"6\" y=\"6\" width=\"12\" height=\"12\" rx=\"2\"/></svg>");
|
|
1435
|
+
(0, ___in_page_ui_dom_js.setHtml)(sendBtn, "<svg width=\"12\" height=\"12\" viewBox=\"0 0 24 24\" fill=\"currentColor\"><rect x=\"6\" y=\"6\" width=\"12\" height=\"12\" rx=\"2\"/></svg>");
|
|
1440
1436
|
} else if (input.value.trim()) {
|
|
1441
1437
|
sendBtn.classList.add("sdt-ai-send-btn-active");
|
|
1442
1438
|
sendBtn.classList.remove("sdt-ai-stop-btn");
|
|
1443
1439
|
sendBtn.setAttribute("title", "Send");
|
|
1444
|
-
setHtml(sendBtn, "<svg width=\"14\" height=\"14\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><line x1=\"22\" y1=\"2\" x2=\"11\" y2=\"13\"/><polygon points=\"22 2 15 22 11 13 2 9 22 2\"/></svg>");
|
|
1440
|
+
(0, ___in_page_ui_dom_js.setHtml)(sendBtn, "<svg width=\"14\" height=\"14\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><line x1=\"22\" y1=\"2\" x2=\"11\" y2=\"13\"/><polygon points=\"22 2 15 22 11 13 2 9 22 2\"/></svg>");
|
|
1445
1441
|
} else {
|
|
1446
1442
|
sendBtn.classList.remove("sdt-ai-send-btn-active");
|
|
1447
1443
|
sendBtn.classList.remove("sdt-ai-stop-btn");
|
|
1448
1444
|
sendBtn.setAttribute("title", "Send");
|
|
1449
|
-
setHtml(sendBtn, "<svg width=\"14\" height=\"14\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><line x1=\"22\" y1=\"2\" x2=\"11\" y2=\"13\"/><polygon points=\"22 2 15 22 11 13 2 9 22 2\"/></svg>");
|
|
1445
|
+
(0, ___in_page_ui_dom_js.setHtml)(sendBtn, "<svg width=\"14\" height=\"14\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><line x1=\"22\" y1=\"2\" x2=\"11\" y2=\"13\"/><polygon points=\"22 2 15 22 11 13 2 9 22 2\"/></svg>");
|
|
1450
1446
|
}
|
|
1451
1447
|
}
|
|
1452
1448
|
input.addEventListener("input", renderInput);
|
|
@@ -1469,12 +1465,12 @@ function createAITab(app) {
|
|
|
1469
1465
|
}
|
|
1470
1466
|
renderInput();
|
|
1471
1467
|
});
|
|
1472
|
-
const newChatBtn = h("button", {
|
|
1468
|
+
const newChatBtn = (0, ___in_page_ui_dom_js.h)("button", {
|
|
1473
1469
|
className: "sdt-ai-new-chat",
|
|
1474
1470
|
title: "New conversation",
|
|
1475
1471
|
style: { display: "none" }
|
|
1476
1472
|
});
|
|
1477
|
-
setHtml(newChatBtn, "<svg width=\"14\" height=\"14\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><line x1=\"12\" y1=\"5\" x2=\"12\" y2=\"19\"/><line x1=\"5\" y1=\"12\" x2=\"19\" y2=\"12\"/></svg>");
|
|
1473
|
+
(0, ___in_page_ui_dom_js.setHtml)(newChatBtn, "<svg width=\"14\" height=\"14\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><line x1=\"12\" y1=\"5\" x2=\"12\" y2=\"19\"/><line x1=\"5\" y1=\"12\" x2=\"19\" y2=\"12\"/></svg>");
|
|
1478
1474
|
newChatBtn.addEventListener("click", () => {
|
|
1479
1475
|
if (aiLoading) activeAiAbortController?.abort();
|
|
1480
1476
|
messages.length = 0;
|
|
@@ -1494,26 +1490,26 @@ function createDashboardTab(app) {
|
|
|
1494
1490
|
return createIframeTab(resolveDashboardUrl(app), "Hexclave Dashboard", "Loading dashboard…", "Unable to load dashboard", "The dashboard may require authentication or block framing", "Open in New Tab");
|
|
1495
1491
|
}
|
|
1496
1492
|
function createSupportTab(app) {
|
|
1497
|
-
const container = h("div", { className: "sdt-support-tab" });
|
|
1493
|
+
const container = (0, ___in_page_ui_dom_js.h)("div", { className: "sdt-support-tab" });
|
|
1498
1494
|
const apiBaseUrl = resolveApiBaseUrl(app);
|
|
1499
1495
|
function createFeedbackForm() {
|
|
1500
|
-
const pane = h("div", { className: "sdt-support-feedback-pane" });
|
|
1501
|
-
const form = h("form", { className: "sdt-support-form" });
|
|
1496
|
+
const pane = (0, ___in_page_ui_dom_js.h)("div", { className: "sdt-support-feedback-pane" });
|
|
1497
|
+
const form = (0, ___in_page_ui_dom_js.h)("form", { className: "sdt-support-form" });
|
|
1502
1498
|
let feedbackType = "feedback";
|
|
1503
1499
|
let status = "idle";
|
|
1504
1500
|
let errorMessage = "";
|
|
1505
|
-
const nameInput = h("input", {
|
|
1501
|
+
const nameInput = (0, ___in_page_ui_dom_js.h)("input", {
|
|
1506
1502
|
className: "sdt-support-input",
|
|
1507
1503
|
type: "text",
|
|
1508
1504
|
placeholder: "Your name"
|
|
1509
1505
|
});
|
|
1510
|
-
const emailInput = h("input", {
|
|
1506
|
+
const emailInput = (0, ___in_page_ui_dom_js.h)("input", {
|
|
1511
1507
|
className: "sdt-support-input",
|
|
1512
1508
|
type: "email",
|
|
1513
1509
|
placeholder: "you@example.com",
|
|
1514
1510
|
required: "true"
|
|
1515
1511
|
});
|
|
1516
|
-
const messageInput = h("textarea", {
|
|
1512
|
+
const messageInput = (0, ___in_page_ui_dom_js.h)("textarea", {
|
|
1517
1513
|
className: "sdt-support-textarea",
|
|
1518
1514
|
placeholder: "What's on your mind?",
|
|
1519
1515
|
required: "true",
|
|
@@ -1522,11 +1518,11 @@ function createSupportTab(app) {
|
|
|
1522
1518
|
function render() {
|
|
1523
1519
|
form.innerHTML = "";
|
|
1524
1520
|
if (status === "success") {
|
|
1525
|
-
const successDiv = h("div", { className: "sdt-support-status sdt-support-status-success" });
|
|
1526
|
-
const icon = h("div", { className: "sdt-support-status-icon" });
|
|
1527
|
-
setHtml(icon, "<svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\"><path d=\"M6 10l3 3 5-6\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/></svg>");
|
|
1528
|
-
successDiv.append(icon, h("div", { className: "sdt-support-status-title" }, "Feedback sent"), h("div", { className: "sdt-support-status-msg" }, "Thank you! We'll get back to you soon."));
|
|
1529
|
-
const resetBtn = h("button", {
|
|
1521
|
+
const successDiv = (0, ___in_page_ui_dom_js.h)("div", { className: "sdt-support-status sdt-support-status-success" });
|
|
1522
|
+
const icon = (0, ___in_page_ui_dom_js.h)("div", { className: "sdt-support-status-icon" });
|
|
1523
|
+
(0, ___in_page_ui_dom_js.setHtml)(icon, "<svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\"><path d=\"M6 10l3 3 5-6\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/></svg>");
|
|
1524
|
+
successDiv.append(icon, (0, ___in_page_ui_dom_js.h)("div", { className: "sdt-support-status-title" }, "Feedback sent"), (0, ___in_page_ui_dom_js.h)("div", { className: "sdt-support-status-msg" }, "Thank you! We'll get back to you soon."));
|
|
1525
|
+
const resetBtn = (0, ___in_page_ui_dom_js.h)("button", {
|
|
1530
1526
|
className: "sdt-support-submit",
|
|
1531
1527
|
style: {
|
|
1532
1528
|
marginTop: "12px",
|
|
@@ -1542,11 +1538,11 @@ function createSupportTab(app) {
|
|
|
1542
1538
|
return;
|
|
1543
1539
|
}
|
|
1544
1540
|
if (status === "error") {
|
|
1545
|
-
const errDiv = h("div", { className: "sdt-support-status sdt-support-status-error" });
|
|
1546
|
-
const icon = h("div", { className: "sdt-support-status-icon" });
|
|
1547
|
-
setHtml(icon, "<svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\"><path d=\"M10 6v5m0 3h.01\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\"/></svg>");
|
|
1548
|
-
errDiv.append(icon, h("div", { className: "sdt-support-status-title" }, "Failed to send"), h("div", { className: "sdt-support-status-msg" }, errorMessage || "Please try again."));
|
|
1549
|
-
const retryBtn = h("button", {
|
|
1541
|
+
const errDiv = (0, ___in_page_ui_dom_js.h)("div", { className: "sdt-support-status sdt-support-status-error" });
|
|
1542
|
+
const icon = (0, ___in_page_ui_dom_js.h)("div", { className: "sdt-support-status-icon" });
|
|
1543
|
+
(0, ___in_page_ui_dom_js.setHtml)(icon, "<svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\"><path d=\"M10 6v5m0 3h.01\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\"/></svg>");
|
|
1544
|
+
errDiv.append(icon, (0, ___in_page_ui_dom_js.h)("div", { className: "sdt-support-status-title" }, "Failed to send"), (0, ___in_page_ui_dom_js.h)("div", { className: "sdt-support-status-msg" }, errorMessage || "Please try again."));
|
|
1545
|
+
const retryBtn = (0, ___in_page_ui_dom_js.h)("button", {
|
|
1550
1546
|
className: "sdt-support-submit",
|
|
1551
1547
|
style: {
|
|
1552
1548
|
marginTop: "12px",
|
|
@@ -1562,47 +1558,47 @@ function createSupportTab(app) {
|
|
|
1562
1558
|
form.appendChild(errDiv);
|
|
1563
1559
|
return;
|
|
1564
1560
|
}
|
|
1565
|
-
const nameField = h("div", { className: "sdt-support-field" });
|
|
1566
|
-
const nameLabel = h("label", { className: "sdt-support-label" }, "Name ");
|
|
1567
|
-
nameLabel.appendChild(h("span", { className: "sdt-support-optional" }, "optional"));
|
|
1561
|
+
const nameField = (0, ___in_page_ui_dom_js.h)("div", { className: "sdt-support-field" });
|
|
1562
|
+
const nameLabel = (0, ___in_page_ui_dom_js.h)("label", { className: "sdt-support-label" }, "Name ");
|
|
1563
|
+
nameLabel.appendChild((0, ___in_page_ui_dom_js.h)("span", { className: "sdt-support-optional" }, "optional"));
|
|
1568
1564
|
nameField.append(nameLabel, nameInput);
|
|
1569
1565
|
form.appendChild(nameField);
|
|
1570
|
-
const emailField = h("div", { className: "sdt-support-field" });
|
|
1571
|
-
emailField.append(h("label", { className: "sdt-support-label" }, "Email"), emailInput);
|
|
1566
|
+
const emailField = (0, ___in_page_ui_dom_js.h)("div", { className: "sdt-support-field" });
|
|
1567
|
+
emailField.append((0, ___in_page_ui_dom_js.h)("label", { className: "sdt-support-label" }, "Email"), emailInput);
|
|
1572
1568
|
form.appendChild(emailField);
|
|
1573
|
-
const msgField = h("div", { className: "sdt-support-field" });
|
|
1574
|
-
msgField.append(h("label", { className: "sdt-support-label" }, feedbackType === "bug" ? "Description" : "Message"), messageInput);
|
|
1569
|
+
const msgField = (0, ___in_page_ui_dom_js.h)("div", { className: "sdt-support-field" });
|
|
1570
|
+
msgField.append((0, ___in_page_ui_dom_js.h)("label", { className: "sdt-support-label" }, feedbackType === "bug" ? "Description" : "Message"), messageInput);
|
|
1575
1571
|
messageInput.placeholder = feedbackType === "bug" ? "Steps to reproduce, expected vs. actual behavior…" : "What's on your mind?";
|
|
1576
1572
|
form.appendChild(msgField);
|
|
1577
|
-
const typeCards = h("div", { className: "sdt-support-type-cards" });
|
|
1578
|
-
const feedbackBtn = h("button", {
|
|
1573
|
+
const typeCards = (0, ___in_page_ui_dom_js.h)("div", { className: "sdt-support-type-cards" });
|
|
1574
|
+
const feedbackBtn = (0, ___in_page_ui_dom_js.h)("button", {
|
|
1579
1575
|
type: "button",
|
|
1580
1576
|
className: `sdt-support-type-card ${feedbackType === "feedback" ? "sdt-support-type-card-active" : ""}`
|
|
1581
1577
|
});
|
|
1582
|
-
setHtml(feedbackBtn, "<svg width=\"16\" height=\"16\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M21 15a2 2 0 0 1-2 2H7l-4 4V5a2 2 0 0 1 2-2h14a2 2 0 0 1 2 2z\"/></svg><span>Feedback</span>");
|
|
1578
|
+
(0, ___in_page_ui_dom_js.setHtml)(feedbackBtn, "<svg width=\"16\" height=\"16\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M21 15a2 2 0 0 1-2 2H7l-4 4V5a2 2 0 0 1 2-2h14a2 2 0 0 1 2 2z\"/></svg><span>Feedback</span>");
|
|
1583
1579
|
feedbackBtn.addEventListener("click", () => {
|
|
1584
1580
|
feedbackType = "feedback";
|
|
1585
1581
|
render();
|
|
1586
1582
|
});
|
|
1587
|
-
const bugBtn = h("button", {
|
|
1583
|
+
const bugBtn = (0, ___in_page_ui_dom_js.h)("button", {
|
|
1588
1584
|
type: "button",
|
|
1589
1585
|
className: `sdt-support-type-card ${feedbackType === "bug" ? "sdt-support-type-card-active" : ""}`
|
|
1590
1586
|
});
|
|
1591
|
-
setHtml(bugBtn, "<svg width=\"16\" height=\"16\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M8 2l1.88 1.88M14.12 3.88L16 2M9 7.13v-1a3.003 3.003 0 1 1 6 0v1\"/><path d=\"M12 20c-3.3 0-6-2.7-6-6v-3a4 4 0 0 1 4-4h4a4 4 0 0 1 4 4v3c0 3.3-2.7 6-6 6\"/><path d=\"M12 20v-9M6.53 9C4.6 8.8 3 7.1 3 5M6 13H2M6 17H3M21 5c0 2.1-1.6 3.8-3.53 4M18 13h4M21 17h-3\"/></svg><span>Bug Report</span>");
|
|
1587
|
+
(0, ___in_page_ui_dom_js.setHtml)(bugBtn, "<svg width=\"16\" height=\"16\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M8 2l1.88 1.88M14.12 3.88L16 2M9 7.13v-1a3.003 3.003 0 1 1 6 0v1\"/><path d=\"M12 20c-3.3 0-6-2.7-6-6v-3a4 4 0 0 1 4-4h4a4 4 0 0 1 4 4v3c0 3.3-2.7 6-6 6\"/><path d=\"M12 20v-9M6.53 9C4.6 8.8 3 7.1 3 5M6 13H2M6 17H3M21 5c0 2.1-1.6 3.8-3.53 4M18 13h4M21 17h-3\"/></svg><span>Bug Report</span>");
|
|
1592
1588
|
bugBtn.addEventListener("click", () => {
|
|
1593
1589
|
feedbackType = "bug";
|
|
1594
1590
|
render();
|
|
1595
1591
|
});
|
|
1596
1592
|
typeCards.append(feedbackBtn, bugBtn);
|
|
1597
1593
|
form.appendChild(typeCards);
|
|
1598
|
-
const submitBtn = h("button", {
|
|
1594
|
+
const submitBtn = (0, ___in_page_ui_dom_js.h)("button", {
|
|
1599
1595
|
type: "submit",
|
|
1600
1596
|
className: "sdt-support-submit"
|
|
1601
1597
|
});
|
|
1602
|
-
setHtml(submitBtn, "Submit <svg width=\"14\" height=\"14\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><line x1=\"5\" y1=\"12\" x2=\"19\" y2=\"12\"/><polyline points=\"12 5 19 12 12 19\"/></svg>");
|
|
1598
|
+
(0, ___in_page_ui_dom_js.setHtml)(submitBtn, "Submit <svg width=\"14\" height=\"14\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><line x1=\"5\" y1=\"12\" x2=\"19\" y2=\"12\"/><polyline points=\"12 5 19 12 12 19\"/></svg>");
|
|
1603
1599
|
submitBtn.disabled = status === "submitting";
|
|
1604
1600
|
form.appendChild(submitBtn);
|
|
1605
|
-
const channels = h("div", { className: "sdt-support-channels" });
|
|
1601
|
+
const channels = (0, ___in_page_ui_dom_js.h)("div", { className: "sdt-support-channels" });
|
|
1606
1602
|
channels.innerHTML = `
|
|
1607
1603
|
<a href="https://discord.hexclave.com" target="_blank" rel="noopener noreferrer" class="sdt-support-channel">
|
|
1608
1604
|
<svg width="16" height="16" viewBox="0 0 24 24" fill="currentColor"><path d="M20.317 4.37a19.791 19.791 0 0 0-4.885-1.515.074.074 0 0 0-.079.037c-.21.375-.444.864-.608 1.25a18.27 18.27 0 0 0-5.487 0 12.64 12.64 0 0 0-.617-1.25.077.077 0 0 0-.079-.037A19.736 19.736 0 0 0 3.677 4.37a.07.07 0 0 0-.032.027C.533 9.046-.32 13.58.099 18.057a.082.082 0 0 0 .031.057 19.9 19.9 0 0 0 5.993 3.03.078.078 0 0 0 .084-.028c.462-.63.874-1.295 1.226-1.994a.076.076 0 0 0-.041-.106 13.107 13.107 0 0 1-1.872-.892.077.077 0 0 1-.008-.128 10.2 10.2 0 0 0 .372-.292.074.074 0 0 1 .077-.01c3.928 1.793 8.18 1.793 12.062 0a.074.074 0 0 1 .078.01c.12.098.246.198.373.292a.077.077 0 0 1-.006.127 12.299 12.299 0 0 1-1.873.892.077.077 0 0 0-.041.107c.36.698.772 1.362 1.225 1.993a.076.076 0 0 0 .084.028 19.839 19.839 0 0 0 6.002-3.03.077.077 0 0 0 .032-.054c.5-5.177-.838-9.674-3.549-13.66a.061.061 0 0 0-.031-.03zM8.02 15.33c-1.183 0-2.157-1.085-2.157-2.419 0-1.333.956-2.419 2.157-2.419 1.21 0 2.176 1.095 2.157 2.42 0 1.333-.956 2.418-2.157 2.418zm7.975 0c-1.183 0-2.157-1.085-2.157-2.419 0-1.333.955-2.419 2.157-2.419 1.21 0 2.176 1.095 2.157 2.42 0 1.333-.946 2.418-2.157 2.418z"/></svg>
|
|
@@ -1659,7 +1655,7 @@ function createSupportTab(app) {
|
|
|
1659
1655
|
return container;
|
|
1660
1656
|
}
|
|
1661
1657
|
function createComponentsTab(app) {
|
|
1662
|
-
const container = h("div", { className: "sdt-pg-layout" });
|
|
1658
|
+
const container = (0, ___in_page_ui_dom_js.h)("div", { className: "sdt-pg-layout" });
|
|
1663
1659
|
const apiBaseUrl = resolveApiBaseUrl(app);
|
|
1664
1660
|
const urls = app.urls;
|
|
1665
1661
|
const urlOptions = app[___lib_hexclave_app_common_js.hexclaveAppInternalsSymbol].getConstructorOptions().urls ?? {};
|
|
@@ -1766,28 +1762,28 @@ function createComponentsTab(app) {
|
|
|
1766
1762
|
const resolved = new URL(url, window.location.origin);
|
|
1767
1763
|
return `${resolved.pathname}${resolved.search}${resolved.hash}`;
|
|
1768
1764
|
}
|
|
1769
|
-
const sidebar = h("div", { className: "sdt-pg-sidebar" });
|
|
1770
|
-
const mainArea = h("div", { className: "sdt-pg-main" });
|
|
1765
|
+
const sidebar = (0, ___in_page_ui_dom_js.h)("div", { className: "sdt-pg-sidebar" });
|
|
1766
|
+
const mainArea = (0, ___in_page_ui_dom_js.h)("div", { className: "sdt-pg-main" });
|
|
1771
1767
|
function renderSidebar() {
|
|
1772
1768
|
sidebar.innerHTML = "";
|
|
1773
1769
|
const pages = buildPages();
|
|
1774
1770
|
const outdatedCount = pages.filter((p) => p.versionStatus === "outdated").length;
|
|
1775
|
-
const head = h("div", { className: "sdt-pg-sidebar-head" });
|
|
1776
|
-
head.appendChild(h("span", { className: "sdt-pg-sidebar-title" }, "Pages"));
|
|
1777
|
-
head.appendChild(h("span", { className: "sdt-pg-sidebar-count" }, String(pages.length)));
|
|
1778
|
-
if (outdatedCount > 0) head.appendChild(h("span", { className: "sdt-pg-sidebar-warn" }, `${outdatedCount} outdated`));
|
|
1771
|
+
const head = (0, ___in_page_ui_dom_js.h)("div", { className: "sdt-pg-sidebar-head" });
|
|
1772
|
+
head.appendChild((0, ___in_page_ui_dom_js.h)("span", { className: "sdt-pg-sidebar-title" }, "Pages"));
|
|
1773
|
+
head.appendChild((0, ___in_page_ui_dom_js.h)("span", { className: "sdt-pg-sidebar-count" }, String(pages.length)));
|
|
1774
|
+
if (outdatedCount > 0) head.appendChild((0, ___in_page_ui_dom_js.h)("span", { className: "sdt-pg-sidebar-warn" }, `${outdatedCount} outdated`));
|
|
1779
1775
|
sidebar.appendChild(head);
|
|
1780
|
-
const list = h("div", { className: "sdt-pg-list" });
|
|
1776
|
+
const list = (0, ___in_page_ui_dom_js.h)("div", { className: "sdt-pg-list" });
|
|
1781
1777
|
for (const page of pages) {
|
|
1782
1778
|
const isOutdated = page.versionStatus === "outdated";
|
|
1783
|
-
const item = h("div", {
|
|
1779
|
+
const item = (0, ___in_page_ui_dom_js.h)("div", {
|
|
1784
1780
|
className: `sdt-pg-item ${isOutdated ? "sdt-pg-item-warn" : ""}`,
|
|
1785
1781
|
"data-selected": String(selectedKey === page.key)
|
|
1786
1782
|
});
|
|
1787
1783
|
const dotClass = isOutdated ? "sdt-pg-item-dot-warn" : page.classification === "custom" ? "sdt-pg-item-dot-custom" : "sdt-pg-item-dot-handler";
|
|
1788
|
-
item.appendChild(h("span", { className: `sdt-pg-item-dot ${dotClass}` }));
|
|
1789
|
-
item.appendChild(h("span", { className: "sdt-pg-item-label" }, page.label));
|
|
1790
|
-
if (isOutdated) item.appendChild(h("span", { className: "sdt-pg-badge sdt-pg-badge-outdated" }, "Outdated"));
|
|
1784
|
+
item.appendChild((0, ___in_page_ui_dom_js.h)("span", { className: `sdt-pg-item-dot ${dotClass}` }));
|
|
1785
|
+
item.appendChild((0, ___in_page_ui_dom_js.h)("span", { className: "sdt-pg-item-label" }, page.label));
|
|
1786
|
+
if (isOutdated) item.appendChild((0, ___in_page_ui_dom_js.h)("span", { className: "sdt-pg-badge sdt-pg-badge-outdated" }, "Outdated"));
|
|
1791
1787
|
item.addEventListener("click", () => {
|
|
1792
1788
|
selectedKey = page.key;
|
|
1793
1789
|
renderSidebar();
|
|
@@ -1799,23 +1795,23 @@ function createComponentsTab(app) {
|
|
|
1799
1795
|
}
|
|
1800
1796
|
function renderDetail(page) {
|
|
1801
1797
|
mainArea.innerHTML = "";
|
|
1802
|
-
const detail = h("div", { className: "sdt-pg-detail" });
|
|
1803
|
-
const header = h("div", { className: "sdt-pg-header" });
|
|
1804
|
-
const headerTop = h("div", { className: "sdt-pg-header-top" });
|
|
1805
|
-
headerTop.appendChild(h("h3", { className: "sdt-pg-title" }, `${page.label} Page`));
|
|
1806
|
-
headerTop.appendChild(h("a", {
|
|
1798
|
+
const detail = (0, ___in_page_ui_dom_js.h)("div", { className: "sdt-pg-detail" });
|
|
1799
|
+
const header = (0, ___in_page_ui_dom_js.h)("div", { className: "sdt-pg-header" });
|
|
1800
|
+
const headerTop = (0, ___in_page_ui_dom_js.h)("div", { className: "sdt-pg-header-top" });
|
|
1801
|
+
headerTop.appendChild((0, ___in_page_ui_dom_js.h)("h3", { className: "sdt-pg-title" }, `${page.label} Page`));
|
|
1802
|
+
headerTop.appendChild((0, ___in_page_ui_dom_js.h)("a", {
|
|
1807
1803
|
href: page.url,
|
|
1808
1804
|
target: "_blank",
|
|
1809
1805
|
rel: "noopener noreferrer",
|
|
1810
1806
|
className: "sdt-pg-title-url"
|
|
1811
1807
|
}, getCompactUrl(page.url)));
|
|
1812
|
-
if (page.versionStatus === "outdated") headerTop.appendChild(h("span", { className: "sdt-pg-badge sdt-pg-badge-outdated" }, "Outdated"));
|
|
1808
|
+
if (page.versionStatus === "outdated") headerTop.appendChild((0, ___in_page_ui_dom_js.h)("span", { className: "sdt-pg-badge sdt-pg-badge-outdated" }, "Outdated"));
|
|
1813
1809
|
header.appendChild(headerTop);
|
|
1814
1810
|
const redirectMethod = `hexclaveApp.redirectTo${page.key.charAt(0).toUpperCase()}${page.key.slice(1)}()`;
|
|
1815
|
-
const codeRow = h("div", { className: "sdt-pg-code-inline" });
|
|
1816
|
-
codeRow.appendChild(h("code", { className: "sdt-pg-code" }, redirectMethod));
|
|
1817
|
-
const openBtn = h("button", { className: "sdt-pg-copy-btn sdt-pg-open-btn" });
|
|
1818
|
-
setHtml(openBtn, "Open <svg width=\"12\" height=\"12\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.25\" stroke-linecap=\"round\" stroke-linejoin=\"round\" aria-hidden=\"true\"><path d=\"M7 17L17 7\"/><path d=\"M7 7h10v10\"/></svg>");
|
|
1811
|
+
const codeRow = (0, ___in_page_ui_dom_js.h)("div", { className: "sdt-pg-code-inline" });
|
|
1812
|
+
codeRow.appendChild((0, ___in_page_ui_dom_js.h)("code", { className: "sdt-pg-code" }, redirectMethod));
|
|
1813
|
+
const openBtn = (0, ___in_page_ui_dom_js.h)("button", { className: "sdt-pg-copy-btn sdt-pg-open-btn" });
|
|
1814
|
+
(0, ___in_page_ui_dom_js.setHtml)(openBtn, "Open <svg width=\"12\" height=\"12\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.25\" stroke-linecap=\"round\" stroke-linejoin=\"round\" aria-hidden=\"true\"><path d=\"M7 17L17 7\"/><path d=\"M7 7h10v10\"/></svg>");
|
|
1819
1815
|
openBtn.addEventListener("click", () => {
|
|
1820
1816
|
const resolved = new URL(page.url, window.location.origin);
|
|
1821
1817
|
window.open(resolved.toString(), "_blank", "noopener,noreferrer");
|
|
@@ -1832,11 +1828,11 @@ function createComponentsTab(app) {
|
|
|
1832
1828
|
else if (prompt.fullPrompt) promptText = prompt.fullPrompt;
|
|
1833
1829
|
else promptText = "";
|
|
1834
1830
|
if (promptText) {
|
|
1835
|
-
const section = h("div", { className: "sdt-pg-section" });
|
|
1836
|
-
section.appendChild(h("div", { className: "sdt-pg-section-label" }, isOutdated ? "Use this prompt to upgrade your component:" : "Want to customize this page? Paste this prompt into your coding agent."));
|
|
1837
|
-
section.appendChild(h("pre", { className: "sdt-pg-pre" }, promptText));
|
|
1838
|
-
const footer = h("div", { className: "sdt-pg-section-footer" });
|
|
1839
|
-
const copyBtn = h("button", { className: "sdt-pg-copy-btn" }, "Copy prompt");
|
|
1831
|
+
const section = (0, ___in_page_ui_dom_js.h)("div", { className: "sdt-pg-section" });
|
|
1832
|
+
section.appendChild((0, ___in_page_ui_dom_js.h)("div", { className: "sdt-pg-section-label" }, isOutdated ? "Use this prompt to upgrade your component:" : "Want to customize this page? Paste this prompt into your coding agent."));
|
|
1833
|
+
section.appendChild((0, ___in_page_ui_dom_js.h)("pre", { className: "sdt-pg-pre" }, promptText));
|
|
1834
|
+
const footer = (0, ___in_page_ui_dom_js.h)("div", { className: "sdt-pg-section-footer" });
|
|
1835
|
+
const copyBtn = (0, ___in_page_ui_dom_js.h)("button", { className: "sdt-pg-copy-btn" }, "Copy prompt");
|
|
1840
1836
|
copyBtn.addEventListener("click", () => {
|
|
1841
1837
|
(0, _hexclave_shared_dist_utils_promises.runAsynchronously)(navigator.clipboard.writeText(promptText).then(() => {
|
|
1842
1838
|
copyBtn.textContent = "✓ Copied";
|
|
@@ -1855,12 +1851,12 @@ function createComponentsTab(app) {
|
|
|
1855
1851
|
}
|
|
1856
1852
|
function renderEmptyMain() {
|
|
1857
1853
|
mainArea.innerHTML = "";
|
|
1858
|
-
const empty = h("div", { className: "sdt-pg-empty" });
|
|
1859
|
-
const icon = h("div", { className: "sdt-pg-empty-icon" });
|
|
1860
|
-
setHtml(icon, "<svg width=\"32\" height=\"32\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><rect x=\"3\" y=\"3\" width=\"7\" height=\"7\" rx=\"1\"/><rect x=\"14\" y=\"3\" width=\"7\" height=\"7\" rx=\"1\"/><rect x=\"3\" y=\"14\" width=\"7\" height=\"7\" rx=\"1\"/><rect x=\"14\" y=\"14\" width=\"7\" height=\"7\" rx=\"1\"/></svg>");
|
|
1854
|
+
const empty = (0, ___in_page_ui_dom_js.h)("div", { className: "sdt-pg-empty" });
|
|
1855
|
+
const icon = (0, ___in_page_ui_dom_js.h)("div", { className: "sdt-pg-empty-icon" });
|
|
1856
|
+
(0, ___in_page_ui_dom_js.setHtml)(icon, "<svg width=\"32\" height=\"32\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><rect x=\"3\" y=\"3\" width=\"7\" height=\"7\" rx=\"1\"/><rect x=\"14\" y=\"3\" width=\"7\" height=\"7\" rx=\"1\"/><rect x=\"3\" y=\"14\" width=\"7\" height=\"7\" rx=\"1\"/><rect x=\"14\" y=\"14\" width=\"7\" height=\"7\" rx=\"1\"/></svg>");
|
|
1861
1857
|
empty.appendChild(icon);
|
|
1862
|
-
empty.appendChild(h("div", { className: "sdt-pg-empty-text" }, "Select a page to inspect"));
|
|
1863
|
-
empty.appendChild(h("div", { className: "sdt-pg-empty-sub" }, "View configuration, preview, and upgrade prompts"));
|
|
1858
|
+
empty.appendChild((0, ___in_page_ui_dom_js.h)("div", { className: "sdt-pg-empty-text" }, "Select a page to inspect"));
|
|
1859
|
+
empty.appendChild((0, ___in_page_ui_dom_js.h)("div", { className: "sdt-pg-empty-sub" }, "View configuration, preview, and upgrade prompts"));
|
|
1864
1860
|
mainArea.appendChild(empty);
|
|
1865
1861
|
}
|
|
1866
1862
|
renderSidebar();
|
|
@@ -1869,7 +1865,7 @@ function createComponentsTab(app) {
|
|
|
1869
1865
|
return container;
|
|
1870
1866
|
}
|
|
1871
1867
|
function createPanel(app, state, logStore, onClose) {
|
|
1872
|
-
const panel = h("div", { className: "sdt-panel" });
|
|
1868
|
+
const panel = (0, ___in_page_ui_dom_js.h)("div", { className: "sdt-panel" });
|
|
1873
1869
|
let panelAnimationTimeout = null;
|
|
1874
1870
|
function animateNextPanelGeometryChange() {
|
|
1875
1871
|
panel.classList.add("sdt-panel-geometry-animated");
|
|
@@ -1895,34 +1891,34 @@ function createPanel(app, state, logStore, onClose) {
|
|
|
1895
1891
|
const storedActiveTab = state.get().activeTab;
|
|
1896
1892
|
const activeTab = tabs.some((tab) => tab.id === storedActiveTab) ? storedActiveTab : DEFAULT_STATE.activeTab;
|
|
1897
1893
|
applyPanelMode(activeTab);
|
|
1898
|
-
const inner = h("div", { className: "sdt-panel-inner" });
|
|
1899
|
-
const closeBtn = h("button", {
|
|
1894
|
+
const inner = (0, ___in_page_ui_dom_js.h)("div", { className: "sdt-panel-inner" });
|
|
1895
|
+
const closeBtn = (0, ___in_page_ui_dom_js.h)("button", {
|
|
1900
1896
|
className: "sdt-close-btn",
|
|
1901
1897
|
"aria-label": "Close"
|
|
1902
1898
|
});
|
|
1903
|
-
setHtml(closeBtn, "<svg width=\"14\" height=\"14\" viewBox=\"0 0 14 14\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\"><line x1=\"3\" y1=\"3\" x2=\"11\" y2=\"11\"/><line x1=\"11\" y1=\"3\" x2=\"3\" y2=\"11\"/></svg>");
|
|
1899
|
+
(0, ___in_page_ui_dom_js.setHtml)(closeBtn, "<svg width=\"14\" height=\"14\" viewBox=\"0 0 14 14\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\"><line x1=\"3\" y1=\"3\" x2=\"11\" y2=\"11\"/><line x1=\"11\" y1=\"3\" x2=\"3\" y2=\"11\"/></svg>");
|
|
1904
1900
|
closeBtn.addEventListener("click", onClose);
|
|
1905
|
-
const docsLink = h("a", {
|
|
1901
|
+
const docsLink = (0, ___in_page_ui_dom_js.h)("a", {
|
|
1906
1902
|
href: DOCS_URL,
|
|
1907
1903
|
target: "_blank",
|
|
1908
1904
|
rel: "noopener noreferrer",
|
|
1909
1905
|
className: "sdt-docs-link"
|
|
1910
1906
|
});
|
|
1911
1907
|
docsLink.appendChild(document.createTextNode("Docs"));
|
|
1912
|
-
const docsIcon = h("span", {
|
|
1908
|
+
const docsIcon = (0, ___in_page_ui_dom_js.h)("span", {
|
|
1913
1909
|
className: "sdt-docs-link-icon",
|
|
1914
1910
|
"aria-hidden": "true"
|
|
1915
1911
|
});
|
|
1916
|
-
setHtml(docsIcon, "<svg width=\"13\" height=\"13\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.25\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M7 17L17 7\"/><path d=\"M7 7h10v10\"/></svg>");
|
|
1912
|
+
(0, ___in_page_ui_dom_js.setHtml)(docsIcon, "<svg width=\"13\" height=\"13\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.25\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M7 17L17 7\"/><path d=\"M7 7h10v10\"/></svg>");
|
|
1917
1913
|
docsLink.appendChild(docsIcon);
|
|
1918
1914
|
const tabBar = createTabBar(tabs, activeTab, (id) => {
|
|
1919
1915
|
state.update({ activeTab: id });
|
|
1920
1916
|
applyPanelMode(id, { animate: true });
|
|
1921
1917
|
showTab(id);
|
|
1922
|
-
}, { trailing: h("div", { className: "sdt-tabbar-actions" }, docsLink, closeBtn) });
|
|
1918
|
+
}, { trailing: (0, ___in_page_ui_dom_js.h)("div", { className: "sdt-tabbar-actions" }, docsLink, closeBtn) });
|
|
1923
1919
|
inner.appendChild(tabBar.el);
|
|
1924
|
-
const content = h("div", { className: "sdt-content" });
|
|
1925
|
-
const layers = h("div", { className: "sdt-tab-layers" });
|
|
1920
|
+
const content = (0, ___in_page_ui_dom_js.h)("div", { className: "sdt-content" });
|
|
1921
|
+
const layers = (0, ___in_page_ui_dom_js.h)("div", { className: "sdt-tab-layers" });
|
|
1926
1922
|
content.appendChild(layers);
|
|
1927
1923
|
inner.appendChild(content);
|
|
1928
1924
|
const mountedPanes = /* @__PURE__ */ new Map();
|
|
@@ -1935,7 +1931,7 @@ function createPanel(app, state, logStore, onClose) {
|
|
|
1935
1931
|
}
|
|
1936
1932
|
function getOrCreatePane(tabId) {
|
|
1937
1933
|
if (mountedPanes.has(tabId)) return mountedPanes.get(tabId);
|
|
1938
|
-
const pane = h("div", { className: "sdt-tab-pane" });
|
|
1934
|
+
const pane = (0, ___in_page_ui_dom_js.h)("div", { className: "sdt-tab-pane" });
|
|
1939
1935
|
if (tabId === "dashboard") pane.classList.add("sdt-tab-pane-iframe");
|
|
1940
1936
|
switch (tabId) {
|
|
1941
1937
|
case "overview":
|
|
@@ -1969,7 +1965,7 @@ function createPanel(app, state, logStore, onClose) {
|
|
|
1969
1965
|
}
|
|
1970
1966
|
showTab(activeTab);
|
|
1971
1967
|
function addResizeHandle(edge) {
|
|
1972
|
-
const handle = h("div", { className: `sdt-resize-handle sdt-resize-${edge}` });
|
|
1968
|
+
const handle = (0, ___in_page_ui_dom_js.h)("div", { className: `sdt-resize-handle sdt-resize-${edge}` });
|
|
1973
1969
|
let startX = 0;
|
|
1974
1970
|
let startY = 0;
|
|
1975
1971
|
let startW = 0;
|
|
@@ -2024,8 +2020,8 @@ function createPanel(app, state, logStore, onClose) {
|
|
|
2024
2020
|
function createDevTool(app) {
|
|
2025
2021
|
if (typeof document === "undefined" || typeof document.createElement !== "function") return () => {};
|
|
2026
2022
|
const body = Reflect.get(document, "body");
|
|
2027
|
-
if (!hasAppendChild(body)) return () => {};
|
|
2028
|
-
|
|
2023
|
+
if (!(0, ___in_page_ui_dom_js.hasAppendChild)(body)) return () => {};
|
|
2024
|
+
(0, ___in_page_ui_dom_js.getGlobalUiInstance)(GLOBAL_INSTANCE_KEY)?.cleanup();
|
|
2029
2025
|
let existingRoot = document.getElementById(ROOT_ID);
|
|
2030
2026
|
while (existingRoot !== null) {
|
|
2031
2027
|
existingRoot.remove();
|
|
@@ -2034,7 +2030,7 @@ function createDevTool(app) {
|
|
|
2034
2030
|
const root = document.createElement("div");
|
|
2035
2031
|
root.id = ROOT_ID;
|
|
2036
2032
|
body.appendChild(root);
|
|
2037
|
-
const wrapper = h("div", { className: "hexclave-devtool" });
|
|
2033
|
+
const wrapper = (0, ___in_page_ui_dom_js.h)("div", { className: "hexclave-devtool" });
|
|
2038
2034
|
root.appendChild(wrapper);
|
|
2039
2035
|
const style = document.createElement("style");
|
|
2040
2036
|
style.textContent = __dev_tool_styles_js.devToolCSS;
|
|
@@ -2099,13 +2095,13 @@ function createDevTool(app) {
|
|
|
2099
2095
|
const instance = { cleanup: () => {
|
|
2100
2096
|
if (didCleanup) return;
|
|
2101
2097
|
didCleanup = true;
|
|
2102
|
-
if (
|
|
2098
|
+
if ((0, ___in_page_ui_dom_js.getGlobalUiInstance)(GLOBAL_INSTANCE_KEY) === instance) (0, ___in_page_ui_dom_js.setGlobalUiInstance)(GLOBAL_INSTANCE_KEY, null);
|
|
2103
2099
|
trigger.cleanup();
|
|
2104
2100
|
removeRequestListener();
|
|
2105
2101
|
panel?.cleanup();
|
|
2106
2102
|
if (root.parentNode) root.parentNode.removeChild(root);
|
|
2107
2103
|
} };
|
|
2108
|
-
|
|
2104
|
+
(0, ___in_page_ui_dom_js.setGlobalUiInstance)(GLOBAL_INSTANCE_KEY, instance);
|
|
2109
2105
|
return () => {
|
|
2110
2106
|
instance.cleanup();
|
|
2111
2107
|
};
|