@remcostoeten/dev-widget 0.0.1
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/LICENSE +21 -0
- package/README.md +132 -0
- package/dist/chunk-6OCSDLNS.mjs +16 -0
- package/dist/chunk-6OCSDLNS.mjs.map +1 -0
- package/dist/chunk-VI7WXBU2.mjs +2 -0
- package/dist/chunk-VI7WXBU2.mjs.map +1 -0
- package/dist/chunk-X3LYXERT.mjs +2 -0
- package/dist/chunk-X3LYXERT.mjs.map +1 -0
- package/dist/cli.js +104 -0
- package/dist/index.d.mts +18 -0
- package/dist/index.d.ts +18 -0
- package/dist/index.js +16 -0
- package/dist/index.js.map +1 -0
- package/dist/index.mjs +2 -0
- package/dist/index.mjs.map +1 -0
- package/dist/internal-Bhwt8k21.d.mts +51 -0
- package/dist/internal-C3TqZPIi.d.ts +51 -0
- package/dist/internal.d.mts +2 -0
- package/dist/internal.d.ts +2 -0
- package/dist/internal.js +2 -0
- package/dist/internal.js.map +1 -0
- package/dist/internal.mjs +1 -0
- package/dist/internal.mjs.map +1 -0
- package/dist/next.d.mts +13 -0
- package/dist/next.d.ts +13 -0
- package/dist/next.js +2 -0
- package/dist/next.js.map +1 -0
- package/dist/next.mjs +2 -0
- package/dist/next.mjs.map +1 -0
- package/dist/public-CgTT_99y.d.mts +365 -0
- package/dist/public-CgTT_99y.d.ts +365 -0
- package/dist/react.d.mts +5 -0
- package/dist/react.d.ts +5 -0
- package/dist/react.js +16 -0
- package/dist/react.js.map +1 -0
- package/dist/react.mjs +2 -0
- package/dist/react.mjs.map +1 -0
- package/dist/routeHandler-CwUVepQp.d.mts +7 -0
- package/dist/routeHandler-DMHcrvQO.d.ts +7 -0
- package/dist/tauri.d.mts +5 -0
- package/dist/tauri.d.ts +5 -0
- package/dist/tauri.js +2 -0
- package/dist/tauri.js.map +1 -0
- package/dist/tauri.mjs +2 -0
- package/dist/tauri.mjs.map +1 -0
- package/package.json +100 -0
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
function i(){let t=[];async function n(o){t.push(o)}async function s(o){return t.filter(function(e){return!e||typeof e!="object"?!1:Reflect.get(e,"sessionId")===o})}return{appendLog:n,readWindow:s}}function f(t){let n=t??i();async function s(o){try{let e=(await o.json()).events??[];for(let c of e)await n.appendLog(c);let r={success:!0,count:e.length};return new Response(JSON.stringify(r),{status:200,headers:{"Content-Type":"application/json"}})}catch{return new Response(JSON.stringify({success:!1,count:0}),{status:400,headers:{"Content-Type":"application/json"}})}}return{POST:s}}export{i as a,f as b};
|
|
2
|
+
//# sourceMappingURL=chunk-VI7WXBU2.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/core/storageAdapter.ts","../src/adapters/next/routeHandler.ts"],"sourcesContent":["import type { StorageProvider } from '../types/public'\n\n/** Create an in-memory storage provider */\nexport function createInMemoryStorage(): StorageProvider {\n\tconst store: unknown[] = []\n\n\tasync function appendLog(entry: unknown): Promise<void> {\n\t\tstore.push(entry)\n\t}\n\n\tasync function readWindow(windowId: string): Promise<unknown[]> {\n\t\treturn store.filter(function bySession(entry) {\n\t\t\tif (!entry || typeof entry !== 'object') return false\n\t\t\tconst sessionId = Reflect.get(entry, 'sessionId')\n\t\t\treturn sessionId === windowId\n\t\t})\n\t}\n\n\treturn { appendLog, readWindow }\n}\n","import type { PerfEvent } from '../../types/public'\nimport type { StorageProvider } from '../../types/public'\nimport { createInMemoryStorage } from '../../core/storageAdapter'\n\n/** Request body for the perf log endpoint */\nexport type LogRequest = {\n\tevents: PerfEvent[]\n}\n\n/** Response body from the perf log endpoint */\nexport type LogResponse = {\n\tsuccess: boolean\n\tcount: number\n}\n\n/** Create a Next.js route handler for persisting perf events */\nexport function createLogHandler(storage?: StorageProvider): {\n\tPOST: (req: Request) => Promise<Response>\n} {\n\tconst store = storage ?? createInMemoryStorage()\n\n\tasync function POST(req: Request): Promise<Response> {\n\t\ttry {\n\t\t\tconst body = (await req.json()) as LogRequest\n\t\t\tconst events = body.events ?? []\n\t\t\tfor (const event of events) {\n\t\t\t\tawait store.appendLog(event)\n\t\t\t}\n\n\t\t\tconst response: LogResponse = {\n\t\t\t\tsuccess: true,\n\t\t\t\tcount: events.length\n\t\t\t}\n\t\t\treturn new Response(JSON.stringify(response), {\n\t\t\t\tstatus: 200,\n\t\t\t\theaders: { 'Content-Type': 'application/json' }\n\t\t\t})\n\t\t} catch {\n\t\t\treturn new Response(JSON.stringify({ success: false, count: 0 }), {\n\t\t\t\tstatus: 400,\n\t\t\t\theaders: { 'Content-Type': 'application/json' }\n\t\t\t})\n\t\t}\n\t}\n\n\treturn { POST }\n}\n"],"mappings":"AAGO,SAASA,GAAyC,CACxD,IAAMC,EAAmB,CAAC,EAE1B,eAAeC,EAAUC,EAA+B,CACvDF,EAAM,KAAKE,CAAK,CACjB,CAEA,eAAeC,EAAWC,EAAsC,CAC/D,OAAOJ,EAAM,OAAO,SAAmBE,EAAO,CAC7C,MAAI,CAACA,GAAS,OAAOA,GAAU,SAAiB,GAC9B,QAAQ,IAAIA,EAAO,WAAW,IAC3BE,CACtB,CAAC,CACF,CAEA,MAAO,CAAE,UAAAH,EAAW,WAAAE,CAAW,CAChC,CCHO,SAASE,EAAiBC,EAE/B,CACD,IAAMC,EAAQD,GAAWE,EAAsB,EAE/C,eAAeC,EAAKC,EAAiC,CACpD,GAAI,CAEH,IAAMC,GADQ,MAAMD,EAAI,KAAK,GACT,QAAU,CAAC,EAC/B,QAAWE,KAASD,EACnB,MAAMJ,EAAM,UAAUK,CAAK,EAG5B,IAAMC,EAAwB,CAC7B,QAAS,GACT,MAAOF,EAAO,MACf,EACA,OAAO,IAAI,SAAS,KAAK,UAAUE,CAAQ,EAAG,CAC7C,OAAQ,IACR,QAAS,CAAE,eAAgB,kBAAmB,CAC/C,CAAC,CACF,MAAQ,CACP,OAAO,IAAI,SAAS,KAAK,UAAU,CAAE,QAAS,GAAO,MAAO,CAAE,CAAC,EAAG,CACjE,OAAQ,IACR,QAAS,CAAE,eAAgB,kBAAmB,CAC/C,CAAC,CACF,CACD,CAEA,MAAO,CAAE,KAAAJ,CAAK,CACf","names":["createInMemoryStorage","store","appendLog","entry","readWindow","windowId","createLogHandler","storage","store","createInMemoryStorage","POST","req","events","event","response"]}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
function u(){async function e(o){if(typeof window>"u")return;let n=window.__TAURI__;n?.invoke&&await n.invoke("append_perf_log",{entry:o})}async function i(o){if(typeof window>"u")return[];let n=window.__TAURI__;if(!n?.invoke)return[];let r=await n.invoke("read_perf_window",{windowId:o});return Array.isArray(r)?r:[]}return{appendLog:e,readWindow:i}}export{u as a};
|
|
2
|
+
//# sourceMappingURL=chunk-X3LYXERT.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/adapters/tauri/commandAdapter.ts"],"sourcesContent":["import type { StorageProvider } from '../../types/public'\n\n/** Create a Tauri command-based storage provider */\nexport function createTauriStorage(): StorageProvider {\n\tasync function appendLog(entry: unknown): Promise<void> {\n\t\tif (typeof window === 'undefined') return\n\n\t\tconst w = window as unknown as Record<string, unknown>\n\t\tconst tauri = w['__TAURI__'] as\n\t\t\t| { invoke?: (cmd: string, args: unknown) => Promise<unknown> }\n\t\t\t| undefined\n\n\t\tif (!tauri?.invoke) return\n\n\t\tawait tauri.invoke('append_perf_log', { entry })\n\t}\n\n\tasync function readWindow(windowId: string): Promise<unknown[]> {\n\t\tif (typeof window === 'undefined') return []\n\n\t\tconst w = window as unknown as Record<string, unknown>\n\t\tconst tauri = w['__TAURI__'] as\n\t\t\t| { invoke?: (cmd: string, args: unknown) => Promise<unknown> }\n\t\t\t| undefined\n\n\t\tif (!tauri?.invoke) return []\n\n\t\tconst result = await tauri.invoke('read_perf_window', { windowId })\n\t\treturn Array.isArray(result) ? result : []\n\t}\n\n\treturn { appendLog, readWindow }\n}\n"],"mappings":"AAGO,SAASA,GAAsC,CACrD,eAAeC,EAAUC,EAA+B,CACvD,GAAI,OAAO,OAAW,IAAa,OAGnC,IAAMC,EADI,OACM,UAIXA,GAAO,QAEZ,MAAMA,EAAM,OAAO,kBAAmB,CAAE,MAAAD,CAAM,CAAC,CAChD,CAEA,eAAeE,EAAWC,EAAsC,CAC/D,GAAI,OAAO,OAAW,IAAa,MAAO,CAAC,EAG3C,IAAMF,EADI,OACM,UAIhB,GAAI,CAACA,GAAO,OAAQ,MAAO,CAAC,EAE5B,IAAMG,EAAS,MAAMH,EAAM,OAAO,mBAAoB,CAAE,SAAAE,CAAS,CAAC,EAClE,OAAO,MAAM,QAAQC,CAAM,EAAIA,EAAS,CAAC,CAC1C,CAEA,MAAO,CAAE,UAAAL,EAAW,WAAAG,CAAW,CAChC","names":["createTauriStorage","appendLog","entry","tauri","readWindow","windowId","result"]}
|
package/dist/cli.js
ADDED
|
@@ -0,0 +1,104 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
// src/cli.ts
|
|
4
|
+
var import_node_fs = require("fs");
|
|
5
|
+
var import_node_path = require("path");
|
|
6
|
+
var ROUTE_FILE_CONTENT = `import { createRouteDiscoveryHandler } from '@remcostoeten/dev-widget/next'
|
|
7
|
+
|
|
8
|
+
export const { GET } = createRouteDiscoveryHandler()
|
|
9
|
+
`;
|
|
10
|
+
var SEARCH_PATTERNS = [
|
|
11
|
+
{
|
|
12
|
+
label: "src/app",
|
|
13
|
+
resolve(cwd) {
|
|
14
|
+
const p = (0, import_node_path.join)(cwd, "src", "app");
|
|
15
|
+
return (0, import_node_fs.existsSync)(p) ? p : null;
|
|
16
|
+
}
|
|
17
|
+
},
|
|
18
|
+
{
|
|
19
|
+
label: "app",
|
|
20
|
+
resolve(cwd) {
|
|
21
|
+
const p = (0, import_node_path.join)(cwd, "app");
|
|
22
|
+
return (0, import_node_fs.existsSync)(p) ? p : null;
|
|
23
|
+
}
|
|
24
|
+
},
|
|
25
|
+
{
|
|
26
|
+
label: "apps/*/src/app (monorepo)",
|
|
27
|
+
resolve(cwd) {
|
|
28
|
+
return findInAppsDir(cwd, true);
|
|
29
|
+
}
|
|
30
|
+
},
|
|
31
|
+
{
|
|
32
|
+
label: "apps/*/app (monorepo)",
|
|
33
|
+
resolve(cwd) {
|
|
34
|
+
return findInAppsDir(cwd, false);
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
];
|
|
38
|
+
function findInAppsDir(cwd, withSrc) {
|
|
39
|
+
const appsDir = (0, import_node_path.join)(cwd, "apps");
|
|
40
|
+
if (!(0, import_node_fs.existsSync)(appsDir)) return null;
|
|
41
|
+
let entries;
|
|
42
|
+
try {
|
|
43
|
+
entries = (0, import_node_fs.readdirSync)(appsDir, { encoding: "utf-8" });
|
|
44
|
+
} catch {
|
|
45
|
+
return null;
|
|
46
|
+
}
|
|
47
|
+
for (const entry of entries) {
|
|
48
|
+
const full = (0, import_node_path.join)(appsDir, entry);
|
|
49
|
+
try {
|
|
50
|
+
if (!(0, import_node_fs.statSync)(full).isDirectory()) continue;
|
|
51
|
+
} catch {
|
|
52
|
+
continue;
|
|
53
|
+
}
|
|
54
|
+
const candidate = withSrc ? (0, import_node_path.join)(full, "src", "app") : (0, import_node_path.join)(full, "app");
|
|
55
|
+
if ((0, import_node_fs.existsSync)(candidate)) return candidate;
|
|
56
|
+
}
|
|
57
|
+
return null;
|
|
58
|
+
}
|
|
59
|
+
function detectAppDir(cwd) {
|
|
60
|
+
for (const pattern of SEARCH_PATTERNS) {
|
|
61
|
+
const result = pattern.resolve(cwd);
|
|
62
|
+
if (result) return { appDir: result, label: pattern.label };
|
|
63
|
+
}
|
|
64
|
+
return null;
|
|
65
|
+
}
|
|
66
|
+
function main() {
|
|
67
|
+
const cwd = process.cwd();
|
|
68
|
+
const command = process.argv[2];
|
|
69
|
+
if (command !== "init") {
|
|
70
|
+
console.log(`
|
|
71
|
+
@remcostoeten/dev-widget CLI
|
|
72
|
+
|
|
73
|
+
Usage:
|
|
74
|
+
npx @remcostoeten/dev-widget init
|
|
75
|
+
|
|
76
|
+
Commands:
|
|
77
|
+
init Generate the route discovery API route
|
|
78
|
+
`);
|
|
79
|
+
process.exit(0);
|
|
80
|
+
}
|
|
81
|
+
console.log("\n \u{1F50D} Searching for Next.js app directory...\n");
|
|
82
|
+
const detected = detectAppDir(cwd);
|
|
83
|
+
if (!detected) {
|
|
84
|
+
console.error(" \u2717 Could not find an app directory.");
|
|
85
|
+
console.error(" Looked for: src/app, app, apps/*/src/app, apps/*/app");
|
|
86
|
+
console.error(" Run this command from your project root.\n");
|
|
87
|
+
process.exit(1);
|
|
88
|
+
}
|
|
89
|
+
const { appDir, label } = detected;
|
|
90
|
+
const relAppDir = (0, import_node_path.relative)(cwd, appDir);
|
|
91
|
+
console.log(` \u2713 Found app directory: ${relAppDir} (${label})`);
|
|
92
|
+
const routeDir = (0, import_node_path.join)(appDir, "api", "dev-widget", "routes");
|
|
93
|
+
const routeFile = (0, import_node_path.join)(routeDir, "route.ts");
|
|
94
|
+
if ((0, import_node_fs.existsSync)(routeFile)) {
|
|
95
|
+
console.log(` \u26A0 Route file already exists: ${(0, import_node_path.relative)(cwd, routeFile)}`);
|
|
96
|
+
console.log(" Skipping generation.\n");
|
|
97
|
+
process.exit(0);
|
|
98
|
+
}
|
|
99
|
+
(0, import_node_fs.mkdirSync)(routeDir, { recursive: true });
|
|
100
|
+
(0, import_node_fs.writeFileSync)(routeFile, ROUTE_FILE_CONTENT, "utf-8");
|
|
101
|
+
console.log(` \u2713 Created: ${(0, import_node_path.relative)(cwd, routeFile)}`);
|
|
102
|
+
console.log("\n Done! The Routes tab will now show your app routes.\n");
|
|
103
|
+
}
|
|
104
|
+
main();
|
package/dist/index.d.mts
ADDED
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
export { DevWidget } from './react.mjs';
|
|
2
|
+
import { W as WidgetRuntime } from './internal-Bhwt8k21.mjs';
|
|
3
|
+
export { D as DomainRegistry, E as EventBus, T as ThemeTokens, c as createBus, a as createRegistry, b as createRuntime } from './internal-Bhwt8k21.mjs';
|
|
4
|
+
import { W as WidgetProps, R as ResolvedConfig } from './public-CgTT_99y.mjs';
|
|
5
|
+
export { A as A11yConfig, a as AiConfig, b as AiProvider, c as AnalysisInput, d as AnalysisOutput, e as AuthConfidence, f as AuthConfig, g as AuthOptions, h as AuthProvider, i as AuthSession, D as Density, E as EventType, F as FEATURE_IDS, j as FeatureConfig, k as FeatureId, l as FeatureMap, K as KeyboardConfig, L as LinksOptions, P as PanelConfig, m as PerfContext, n as PerfEvent, o as PerfMetrics, p as PerfOptions, q as PerfSuspects, r as RadiusScale, s as RailConfig, t as RoutesOptions, u as Severity, v as StorageConfig, S as StorageProvider, w as SystemOptions, T as ThemeConfig, x as ThemeMode } from './public-CgTT_99y.mjs';
|
|
6
|
+
export { c as createLogHandler } from './routeHandler-CwUVepQp.mjs';
|
|
7
|
+
export { createTauriStorage } from './tauri.mjs';
|
|
8
|
+
|
|
9
|
+
declare function bootstrap(props: WidgetProps): WidgetRuntime;
|
|
10
|
+
|
|
11
|
+
declare function resolveConfig(props: WidgetProps): ResolvedConfig;
|
|
12
|
+
|
|
13
|
+
declare const DEFAULTS: ResolvedConfig;
|
|
14
|
+
|
|
15
|
+
declare function safeRun<T>(fn: () => T): T | undefined;
|
|
16
|
+
declare function safeRunAsync<T>(fn: () => Promise<T>): Promise<T | undefined>;
|
|
17
|
+
|
|
18
|
+
export { DEFAULTS, WidgetProps, WidgetRuntime, bootstrap, resolveConfig, safeRun, safeRunAsync };
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
export { DevWidget } from './react.js';
|
|
2
|
+
import { W as WidgetRuntime } from './internal-C3TqZPIi.js';
|
|
3
|
+
export { D as DomainRegistry, E as EventBus, T as ThemeTokens, c as createBus, a as createRegistry, b as createRuntime } from './internal-C3TqZPIi.js';
|
|
4
|
+
import { W as WidgetProps, R as ResolvedConfig } from './public-CgTT_99y.js';
|
|
5
|
+
export { A as A11yConfig, a as AiConfig, b as AiProvider, c as AnalysisInput, d as AnalysisOutput, e as AuthConfidence, f as AuthConfig, g as AuthOptions, h as AuthProvider, i as AuthSession, D as Density, E as EventType, F as FEATURE_IDS, j as FeatureConfig, k as FeatureId, l as FeatureMap, K as KeyboardConfig, L as LinksOptions, P as PanelConfig, m as PerfContext, n as PerfEvent, o as PerfMetrics, p as PerfOptions, q as PerfSuspects, r as RadiusScale, s as RailConfig, t as RoutesOptions, u as Severity, v as StorageConfig, S as StorageProvider, w as SystemOptions, T as ThemeConfig, x as ThemeMode } from './public-CgTT_99y.js';
|
|
6
|
+
export { c as createLogHandler } from './routeHandler-DMHcrvQO.js';
|
|
7
|
+
export { createTauriStorage } from './tauri.js';
|
|
8
|
+
|
|
9
|
+
declare function bootstrap(props: WidgetProps): WidgetRuntime;
|
|
10
|
+
|
|
11
|
+
declare function resolveConfig(props: WidgetProps): ResolvedConfig;
|
|
12
|
+
|
|
13
|
+
declare const DEFAULTS: ResolvedConfig;
|
|
14
|
+
|
|
15
|
+
declare function safeRun<T>(fn: () => T): T | undefined;
|
|
16
|
+
declare function safeRunAsync<T>(fn: () => Promise<T>): Promise<T | undefined>;
|
|
17
|
+
|
|
18
|
+
export { DEFAULTS, WidgetProps, WidgetRuntime, bootstrap, resolveConfig, safeRun, safeRunAsync };
|
package/dist/index.js
ADDED
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
"use strict";var Bt=Object.create;var ue=Object.defineProperty;var Nt=Object.getOwnPropertyDescriptor;var Wt=Object.getOwnPropertyNames;var Ht=Object.getPrototypeOf,$t=Object.prototype.hasOwnProperty;var _t=(e,t)=>{for(var r in t)ue(e,r,{get:t[r],enumerable:!0})},Me=(e,t,r,n)=>{if(t&&typeof t=="object"||typeof t=="function")for(let o of Wt(t))!$t.call(e,o)&&o!==r&&ue(e,o,{get:()=>t[o],enumerable:!(n=Nt(t,o))||n.enumerable});return e};var Kt=(e,t,r)=>(r=e!=null?Bt(Ht(e)):{},Me(t||!e||!e.__esModule?ue(r,"default",{value:e,enumerable:!0}):r,e)),qt=e=>Me(ue({},"__esModule",{value:!0}),e);var In={};_t(In,{DEFAULTS:()=>O,DevWidget:()=>Dt,FEATURE_IDS:()=>Q,bootstrap:()=>ve,createBus:()=>ce,createLogHandler:()=>Lt,createRegistry:()=>pe,createRuntime:()=>ge,createTauriStorage:()=>Ft,resolveConfig:()=>fe,safeRun:()=>le,safeRunAsync:()=>V});module.exports=qt(In);var ne=require("react");var Q=["auth","routes","performance","system","links","monitor"];function le(e){try{return e()}catch{return}}async function V(e){try{return await e()}catch{return}}function ce(){let e={listeners:new Map};function t(o,i){let s=e.listeners.get(o);if(s)for(let d of s)le(function(){d(i)})}function r(o,i){let s=e.listeners.get(o);s||(s=new Set,e.listeners.set(o,s)),s.add(i);let d=s;return function(){d.delete(i)}}function n(){e.listeners.clear()}return{publish:t,subscribe:r,clear:n}}function pe(){let e=new Map,t=new Map;function r(m){e.set(m.id,{domain:m,started:!1})}function n(m){let b=e.get(m);b?.started&&b.domain.stop(),e.delete(m)}function o(m){let b=e.get(m);return b?b.domain:null}function i(){return Array.from(e.keys())}function s(m){let b=e.get(m);b&&(b.started=!0)}function d(m){return e.get(m)?.started??!1}function p(m,b){t.set(m.id,{category:m,presenter:b})}function l(m){t.delete(m)}function u(){return Array.from(t.values()).sort(function(b,w){let c=b.category.order??999,y=w.category.order??999;return c!==y?c-y:b.category.label.localeCompare(w.category.label)})}function v(m){return t.get(m)?.presenter??null}function f(){e.clear(),t.clear()}return{registerDomain:r,unregisterDomain:n,getDomain:o,listDomains:i,markStarted:s,isStarted:d,registerCategory:p,unregisterCategory:l,getCategories:u,getPresenter:v,clear:f}}var O={enabled:!0,mode:"development-only",theme:{mode:"system",accent:"#3bb273",density:"compact",radius:"md"},features:{auth:{enabled:!0,provider:"better-auth"},routes:{enabled:!0,includeApiRoutes:!0,includeDynamic:!0},performance:{enabled:!0,fpsThreshold:50,hourlyIssueThreshold:5,captureReactCommits:!0,captureLongTasks:!0},system:{enabled:!0,includeUserAgent:!0,includeEnv:!0},links:{enabled:!0,includeExternal:!0,validateInternal:!0},monitor:{enabled:!0}},keyboard:{toggleKey:"`",enableShortcuts:!0},accessibility:{reducedMotion:"system",announceUpdates:!0},rightRail:{enabled:!1,defaultPanel:null,collapsible:!0,panels:[]}};function fe(e){let t=new Set(e.disable??[]),r={};for(let n of Q){let o=O.features[n],i=e.features?.[n];if(i!==void 0){typeof i=="boolean"?r[n]={...o,enabled:i}:r[n]={...o,...i,enabled:i.enabled??o.enabled};continue}if(t.has(n)){r[n]={...o,enabled:!1};continue}r[n]={...o}}return{enabled:e.enabled??O.enabled,mode:e.mode??O.mode,theme:{mode:e.theme?.mode??O.theme.mode,accent:e.theme?.accent??O.theme.accent,density:e.theme?.density??O.theme.density,radius:e.theme?.radius??O.theme.radius},features:r,keyboard:{toggleKey:e.keyboard?.toggleKey??O.keyboard.toggleKey,enableShortcuts:e.keyboard?.enableShortcuts??O.keyboard.enableShortcuts},accessibility:{reducedMotion:e.accessibility?.reducedMotion??O.accessibility.reducedMotion,announceUpdates:e.accessibility?.announceUpdates??O.accessibility.announceUpdates},rightRail:{enabled:e.rightRail?.enabled??O.rightRail.enabled,defaultPanel:e.rightRail?.defaultPanel??O.rightRail.defaultPanel,collapsible:e.rightRail?.collapsible??O.rightRail.collapsible,panels:e.rightRail?.panels??O.rightRail.panels}}}function ge(e){let t=fe(e),r=ce(),n=pe(),o=!1;function i(){return{registerDomain(l){n.registerDomain(l)},registerCategory(l,u){n.registerCategory(l,u)},onEvent(l,u){return r.subscribe(l,u)}}}async function s(){if(o)return;let l=Q.filter(function(v){return t.features[v]?.enabled!==!1});for(let u of l){let v=n.getDomain(u);v&&await V(async function(){await v.setup(t.features[u]??{})})}for(let u of l){let v=n.getDomain(u);v&&(await V(async function(){await v.start()}),n.markStarted(u))}o=!0}async function d(){if(!o)return;let l=n.listDomains().reverse();for(let u of l){if(!n.isStarted(u))continue;let v=n.getDomain(u);v&&await V(async function(){await v.stop()})}r.clear(),o=!1}async function p(l){let u=i();await V(async function(){await l.register(u)})}return{config:t,bus:r,registry:n,start:s,stop:d,registerPlugin:p}}function Ae(e){let t=(e?e.baseUrl:void 0)??"/api/auth";async function r(){try{let o=await fetch(`${t}/session`,{credentials:"include"});if(!o.ok)return null;let i=await o.json();if(!i||typeof i!="object")return null;let s=i.user,d=i.session;if(!s||!d)return null;let p={userId:String(s.id??"")},l=s.email;typeof l=="string"&&(p.email=l);let u=s.role;typeof u=="string"&&(p.role=u);let v=s.image;typeof v=="string"&&(p.image=v);let f=d.expiresAt;return typeof f=="string"?p.expiresAt=f:f instanceof Date&&(p.expiresAt=f.toISOString()),p}catch{return null}}async function n(){await fetch(`${t}/sign-out`,{method:"POST",credentials:"include"})}return{id:"better-auth",getSession:r,signOut:n}}function De(){async function e(){if(typeof document>"u")return null;let t=document.cookie.split(";").reduce(function(o,i){let[s,d]=i.trim().split("=");return s&&(o[s]=d??""),o},{});return t.session??t["auth-token"]??t.__session?{userId:"inferred"}:null}return{id:"cookie",getSession:e}}function Ie(){function e(r){try{let o=r.split(".")[1];if(!o)return null;let i=atob(o.replace(/-/g,"+").replace(/_/g,"/"));return JSON.parse(i)}catch{return null}}async function t(){if(typeof document>"u")return null;let r=document.cookie.split(";"),n=null;for(let l of r){let u=l.trim();if(u.startsWith("token=")||u.startsWith("jwt=")){n=u.split("=").slice(1).join("=");break}}if(!n)return null;let o=e(n);if(!o)return null;let i={userId:String(o.sub??o.id??"unknown")},s=o.email;typeof s=="string"&&(i.email=s);let d=o.role;typeof d=="string"&&(i.role=d);let p=o.exp;return typeof p=="number"&&(i.expiresAt=new Date(p*1e3).toISOString()),i}return{id:"jwt",getSession:t}}function Ut(e){if(e?.customProvider)return e.customProvider;switch(e?.provider){case"cookie":return De();case"jwt":return Ie();default:return Ae(e?.options)}}function ze(e,t){let r,n={provider:"unknown",authenticated:!1,confidence:"unknown",session:null,error:null},o=new Set,i=null,s=null;function d(){for(let c of o)c(n)}async function p(){try{let c=await r.getSession(),y=n.authenticated;n={provider:r.id,authenticated:c!==null,confidence:r.id==="better-auth"?"confirmed":"inferred",session:c,error:null},d(),n.authenticated!==y&&e.publish("auth/state-changed",{provider:n.provider,authenticated:n.authenticated})}catch(c){n={...n,error:c instanceof Error?c.message:"Session check failed"},d()}}function l(c){r=Ut(t),n={...n,provider:r.id}}async function u(){await p(),i=setInterval(p,3e4),s=e.subscribe("auth/sign-out",async()=>{r.signOut&&(await r.signOut(),await p())})}function v(){i&&(clearInterval(i),i=null),s&&(s(),s=null)}function f(){return n}function m(c){return o.add(c),function(){o.delete(c)}}function b(){return{provider:n.provider,authenticated:n.authenticated,confidence:n.confidence,hasSession:n.session!==null,error:n.error}}function w(){return n.error===null}return{id:"auth",setup:l,start:u,stop:v,getState:f,subscribe:m,serializeDiagnostics:b,runHealthCheck:w,signOut:async()=>{e.publish("auth/sign-out",{})}}}function Le(e){let t=0,r=0,n=null,o=!1;function i(p){if(!o)return;t++,r===0&&(r=p);let l=p-r;if(l>=1e3){let u=Math.round(t*1e3/l);e(u),t=0,r=p}n=requestAnimationFrame(i)}function s(){o||(o=!0,t=0,r=0,n=requestAnimationFrame(i))}function d(){o=!1,n!==null&&(cancelAnimationFrame(n),n=null)}return{start:s,stop:d}}function Fe(e){let t=Array.from({length:e}),r=0,n=0;function o(l){t[r]=l,r=(r+1)%e,n<e&&n++}function i(){return n<e?t.slice(0,n):[...t.slice(r),...t.slice(0,r)]}function s(l){let u=i();return u.slice(Math.max(0,u.length-l))}function d(){return n}function p(){r=0,n=0}return{push:o,getAll:i,getRecent:s,count:d,clear:p}}function Oe(e,t){let r=[],n=null;async function o(){if(r.length===0)return;let p=r.splice(0);try{await e(p)}catch{}}function i(p){r.push(p)}function s(){n||(n=setInterval(o,t))}function d(){n&&(clearInterval(n),n=null),o()}return{add:i,flush:o,start:s,stop:d}}var jt={fps_drop:{low:1,medium:2,high:3},long_task:{low:1,medium:2,high:4},react_commit_burst:{low:1,medium:2,high:3},dom_mutation_burst:{low:1,medium:2,high:3},scroll_pressure:{low:0,medium:1,high:2},route_transition_slow:{low:1,medium:2,high:3},hydration_warning:{low:1,medium:2,high:3}};function Vt(e,t){let r=t??jt,n=0;for(let o of e){let i=r[o.eventType];i&&(n+=i[o.severity]??0)}return n}function Be(e,t,r){return Vt(e,r)>=t}function Ne(e){let t=new Set;for(let o of e)if(o.suspects?.components)for(let i of o.suspects.components)t.add(i);let r=new Set;for(let o of e)r.add(o.route);let n={events:e,suspects:Array.from(t)};if(r.size===1){let o=Array.from(r)[0];o&&(n.route=o)}return n}function We(e){let t=new Map;for(let s of e.events)t.set(s.eventType,(t.get(s.eventType)??0)+1);let r=e.events.filter(function(d){return d.severity==="high"}),n=e.suspects??[],o=[];return t.get("fps_drop")&&o.push("Investigate render-heavy components for unnecessary re-renders"),t.get("long_task")&&o.push("Move expensive computations to Web Workers or useMemo"),t.get("react_commit_burst")&&o.push("Check for cascading state updates causing commit bursts"),t.get("dom_mutation_burst")&&o.push("Batch DOM mutations or use virtualization for large lists"),t.get("scroll_pressure")&&o.push("Add scroll event throttling or passive listeners"),t.get("route_transition_slow")&&o.push("Lazy-load route components and preload critical data"),{summary:`Detected ${e.events.length} performance events (${r.length} high severity). ${n.length} suspect component(s) identified.`,hotspots:Array.from(n),suggestions:o,confidence:n.length>0?.7:.4}}function Z(e){return typeof e=="object"&&e!==null}function Xt(e){return typeof e=="function"}function Gt(e){return Z(e)}function Jt(e){return Z(e)}function Yt(){let t=globalThis.__REACT_DEVTOOLS_GLOBAL_HOOK__;return Gt(t)?t:null}function $e(e){return typeof e=="number"&&Number.isFinite(e)?e:0}function Qt(e){let t=e[0];return t?t.toUpperCase()===t:!1}function He(e){if(typeof e=="function"){let t=e;return t.displayName??t.name??null}if(typeof e=="string")return Qt(e)?e:null;if(Z(e)){let t=e.displayName;if(typeof t=="string"&&t.length>0)return t}return null}function Zt(e){let t=He(e.elementType)??He(e.type);if(t)return t;if(Z(e.stateNode)){let r=e.stateNode.constructor;if(Z(r)){let n=r.name;if(typeof n=="string"&&n.length>0)return n}}return null}function Pe(e,t){if(!e)return;let r=$e(e.actualDuration),n=Zt(e);n&&r>0&&t.push({name:n,duration:r}),e.child&&Pe(e.child,t),e.sibling&&Pe(e.sibling,t)}function en(e,t){let r=e.sort(function(s,d){return d.duration-s.duration}),n=[],o=new Set;for(let i of r)if(!o.has(i.name)&&(o.add(i.name),n.push(i.name),n.length>=t))break;return n}function tn(e){if(!Z(e))return null;let t=e.current;if(!Jt(t))return null;let r=t,n=$e(r.actualDuration),o=[];Pe(r,o);let i=en(o,5);return{duration:n,components:i}}function _e(e){let t=Yt();if(!t)return null;let r=t.onCommitFiberRoot;function n(o,i,s){try{let d=tn(i);d&&e(d)}catch{}Xt(r)&&r(o,i,s)}return t.onCommitFiberRoot=n,function(){t.onCommitFiberRoot=r}}var nn=0;function rn(){return`perf-${Date.now()}-${nn++}`}function on(){return`sess-${Date.now()}-${Math.random().toString(36).slice(2,8)}`}var sn=new Set(["DevWidget","Shell","ThemeProvider","Panel","Header","Footer","TabsView","RightRail","AuthTab","PerfTab","RoutesTab","MonitorTab"]),an=new Set(["App","Root","Layout","Page","Provider"]);function dn(e){let t=[];for(let r of e)sn.has(r)||t.push(r);return t}function un(e){let t=[];for(let r of e)an.has(r)||t.push(r);return t}function ln(e){let t=dn(e),r=un(t);return r.length>0?r.slice(0,5):t.slice(0,5)}function Ke(e,t){let r=on(),n=Fe(500),o=Oe(async function(){},3e4),i={},s={fps:60,isScrolling:!1,scrollFps:60,events:[],hourlyCount:0,analysisRunning:!1,lastReport:null},d=new Set,p=null,l=null,u=null,v=null,f=null,m=null,b=[],w=0;function c(){for(let R of d)R(s)}function y(R,A){return R<A*.5?"high":R<A*.75?"medium":"low"}function S(){return typeof window<"u"?window.location.pathname:"/"}function k(){return typeof window>"u"?{}:{userAgent:navigator.userAgent,viewport:{w:window.innerWidth,h:window.innerHeight}}}function x(R){n.push(R),o.add(R),s={...s,events:n.getRecent(50),hourlyCount:s.hourlyCount+1},c(),R.severity==="high"&&e.publish("performance/drop-detected",{fps:R.metrics.fps??0,reasons:[R.eventType]})}function B(R,A,W,L){let F={id:rn(),timestamp:new Date().toISOString(),sessionId:r,route:S(),eventType:R,severity:A,metrics:W,context:k()};return L&&(F.suspects=L),F}let $=Le(function(A){let W={...s,fps:A};if(s.isScrolling){let F=s.scrollFps,q=Math.round(F*.7+A*.3);W={...W,scrollFps:q}}s=W,c();let L=i.fpsThreshold??50;if(A<L){let F=y(A,L);x(B("fps_drop",F,{fps:A}))}});function z(){if(typeof window>"u")return;let R=()=>{s.isScrolling||(s={...s,isScrolling:!0},c()),f&&clearTimeout(f),f=setTimeout(()=>{s={...s,isScrolling:!1},c(),f=null},150)};return window.addEventListener("scroll",R,{passive:!0}),()=>{window.removeEventListener("scroll",R),f&&clearTimeout(f)}}let T=null;function E(){if(!(typeof PerformanceObserver>"u")&&(i.captureLongTasks??!0))try{p=new PerformanceObserver(function(A){for(let W of A.getEntries()){let L=W.duration,F="low";L>200?F="high":L>100&&(F="medium"),x(B("long_task",F,{longTaskDurationMs:L}))}}),p.observe({type:"longtask",buffered:!1})}catch{}}function _(){if(typeof MutationObserver>"u"||typeof document>"u")return;let R=0,A=null;l=new MutationObserver(function(L){R+=L.length,!A&&(A=setTimeout(function(){if(R>50){let q=R>200?"high":R>100?"medium":"low";x(B("dom_mutation_burst",q,{mutationCount:R}))}R=0,A=null},1e3))}),l.observe(document.body,{childList:!0,subtree:!0,attributes:!0})}function J(R){if(R.duration<16)return;let W=R.duration>80?"high":R.duration>40?"medium":"low",L=ln(R.components),F=L.length>0?{components:L}:void 0;x(B("react_commit_burst",W,{commitCount:1},F));let q=Date.now();for(b.push(q);b.length>0;){let g=b[0];if(g===void 0||q-g<=2e3)break;b.shift()}b.length>=5&&q-w>5e3&&(w=q,x(B("react_commit_burst","high",{commitCount:b.length},F)))}async function we(){let R=i.hourlyIssueThreshold??5,A=n.getAll();if(Be(A,R*3)){s={...s,analysisRunning:!0},c();try{let W=Ne(A),L;t?L=await t.analyze(W):L=We(W);let F=`report-${Date.now()}`;s={...s,analysisRunning:!1,lastReport:L.summary},c(),e.publish("performance/analysis-complete",{reportId:F})}catch{s={...s,analysisRunning:!1},c()}}}function he(R){i=R}async function xe(){$.start(),E(),_(),T=z()||null,o.start(),(i.captureReactCommits??!0)&&(m=_e(J)),u=setInterval(function(){s={...s,hourlyCount:0},c()},36e5),v=setInterval(we,6e4)}function Re(){$.stop(),o.stop(),p&&(p.disconnect(),p=null),l&&(l.disconnect(),l=null),u&&(clearInterval(u),u=null),v&&(clearInterval(v),v=null),T&&(T(),T=null),m&&(m(),m=null)}function Se(){return s}function ke(R){return d.add(R),function(){d.delete(R)}}function se(){return{fps:s.fps,totalEvents:n.count(),hourlyCount:s.hourlyCount,analysisRunning:s.analysisRunning,lastReport:s.lastReport}}function ae(){return s.fps>0}function de(){n.clear(),b.length=0,s={fps:60,isScrolling:!1,scrollFps:60,events:[],hourlyCount:0,analysisRunning:!1,lastReport:null},c()}return{id:"performance",setup:he,start:xe,stop:Re,getState:Se,subscribe:ke,serializeDiagnostics:se,runHealthCheck:ae,reset:de}}var qe="/api/dev-widget/routes";function Ue(e){let t={routes:[],loading:!1,error:null},r=new Set,n=qe,o=!1;function i(){for(let f of r)f(t)}function s(f){n=f.endpoint??qe,o=f.includeApiRoutes??!1,t={...t,loading:!0},i()}async function d(){try{let f=new URL(n,globalThis.location?.origin??"http://localhost:3000");o&&f.searchParams.set("includeApiRoutes","true");let m=await fetch(f.toString());if(!m.ok){t={...t,loading:!1,error:`Route discovery failed (${m.status})`},i();return}let b=await m.json();if(b.error){t={...t,loading:!1,error:b.error},i();return}let w=b.routes??[];t={routes:w,loading:!1,error:null},i(),e.publish("routes/discovered",{count:w.length,routes:w})}catch(f){let m=f instanceof Error?f.message:"Route discovery failed";t={...t,loading:!1,error:m},i()}}function p(){t={routes:[],loading:!1,error:null}}function l(){return t}function u(f){return r.add(f),function(){r.delete(f)}}function v(){return{routeCount:t.routes.length,loading:t.loading,error:t.error}}return{id:"routes",setup:s,start:d,stop:p,getState:l,subscribe:u,serializeDiagnostics:v}}function je(e){if(e){if(e.provider==="custom")return e.customProvider;e.provider}}var me=require("react"),P=require("react/jsx-runtime");function Ve({domain:e}){let[t,r]=(0,me.useState)(e.getState());(0,me.useEffect)(function(){return e.subscribe(r)},[e]);let n=t.confidence==="confirmed"?"Confirmed":t.confidence==="inferred"?"Inferred":"Unknown";return(0,P.jsxs)("div",{role:"region","aria-label":"Authentication status",style:{display:"flex",flexDirection:"column",gap:"var(--dw-gap)"},children:[(0,P.jsxs)("div",{"data-dw-section":"auth-header",style:{display:"flex",alignItems:"center",justifyContent:"space-between"},children:[(0,P.jsxs)("span",{"data-dw-label":"provider",children:["Provider: ",t.provider]}),(0,P.jsxs)("div",{style:{display:"flex",alignItems:"center",gap:"8px"},children:[(0,P.jsx)("span",{"data-dw-badge":t.confidence,children:n}),t.authenticated&&(0,P.jsx)("button",{onClick:()=>e.signOut?.(),style:{background:"transparent",border:"1px solid var(--dw-border)",color:"var(--dw-text-muted)",borderRadius:"4px",padding:"2px 6px",fontSize:"10px",cursor:"pointer"},"data-dw-action":"sign-out",children:"Sign Out"})]})]}),t.error&&(0,P.jsx)("div",{"data-dw-alert":"warning",role:"alert",style:{color:"var(--dw-warning)",padding:"var(--dw-padding)",background:"var(--dw-bg-secondary)",borderRadius:"var(--dw-radius)"},children:t.error}),t.session?(0,P.jsxs)("dl",{"data-dw-section":"auth-details",style:{display:"grid",gridTemplateColumns:"auto 1fr",gap:"var(--dw-gap)",fontSize:"11px"},children:[(0,P.jsx)("dt",{style:{color:"var(--dw-text-muted)"},children:"User ID"}),(0,P.jsx)("dd",{style:{fontFamily:"monospace"},children:t.session.userId}),t.session.email&&(0,P.jsxs)(P.Fragment,{children:[(0,P.jsx)("dt",{style:{color:"var(--dw-text-muted)"},children:"Email"}),(0,P.jsx)("dd",{style:{fontFamily:"monospace"},children:t.session.email})]}),t.session.role&&(0,P.jsxs)(P.Fragment,{children:[(0,P.jsx)("dt",{style:{color:"var(--dw-text-muted)"},children:"Role"}),(0,P.jsx)("dd",{style:{fontFamily:"monospace"},children:t.session.role})]}),t.session.expiresAt&&(0,P.jsxs)(P.Fragment,{children:[(0,P.jsx)("dt",{style:{color:"var(--dw-text-muted)"},children:"Expires"}),(0,P.jsx)("dd",{style:{fontFamily:"monospace"},children:t.session.expiresAt})]})]}):(0,P.jsxs)("div",{"data-dw-empty":!0,style:{textAlign:"center",padding:"var(--dw-padding)",color:"var(--dw-text-muted)",background:"var(--dw-bg-secondary)",borderRadius:"var(--dw-radius)"},children:[(0,P.jsx)("p",{style:{margin:0},children:"No active session"}),(0,P.jsx)("p",{style:{margin:0,fontSize:"10px",opacity:.8},children:"Sign in to see session details"})]})]})}var K=require("react"),h=require("react/jsx-runtime");function cn(e){let t=[];return e.metrics.fps&&t.push(`FPS ${Math.round(e.metrics.fps)}`),e.metrics.longTaskDurationMs&&t.push(`Long task ${Math.round(e.metrics.longTaskDurationMs)}ms`),e.metrics.commitCount&&t.push(`Commits ${e.metrics.commitCount}`),e.metrics.mutationCount&&t.push(`Mutations ${e.metrics.mutationCount}`),e.metrics.scrollEventCount&&t.push(`Scroll ${e.metrics.scrollEventCount}`),t.length>0?t.join(" | "):null}function Xe(e){return e.suspects?.components?.slice(0,5)??[]}function pn(e){return e==="App"||e==="Root"||e==="Layout"||e==="Page"||e==="Provider"}function fn(e){switch(e.eventType){case"fps_drop":return{what:"Frame rate dropped under your FPS threshold.",where:`Route ${e.route} at ${new Date(e.timestamp).toLocaleTimeString()}.`,fix:"Reduce render work, virtualize long lists, and split heavy components."};case"long_task":return{what:"Main thread was blocked by a long task.",where:`Detected on ${e.route} (${Math.round(e.metrics.longTaskDurationMs??0)}ms).`,fix:"Move heavy work to workers, chunk loops, and defer non-critical JS."};case"react_commit_burst":return{what:"React commit activity spiked and likely caused UI jank.",where:`Commit burst on ${e.route}.`,fix:"Memoize expensive trees and avoid state updates that fan out broadly."};case"dom_mutation_burst":return{what:"DOM mutation volume was unusually high.",where:`Mutation burst on ${e.route}.`,fix:"Batch DOM writes and avoid repeated mount/unmount loops."};default:return{what:"A performance signal was recorded.",where:`Route ${e.route}.`,fix:"Inspect the latest event details and test with the same user flow."}}}function Ge(e){return e==="high"?"var(--dw-danger)":e==="medium"?"var(--dw-warning)":"var(--dw-success)"}function gn(e){return e.toLowerCase().replace(/[^a-z0-9_-]/g,"")}function mn(e){return e.replace(/([a-z0-9])([A-Z])/g,"$1-$2").replace(/[^a-zA-Z0-9-]/g,"").toLowerCase()}function yn(e){if(typeof document>"u")return[];let t=gn(e),r=mn(e),n=[`[data-component="${e}"]`,`[data-testid*="${t}"]`,`[id*="${t}"]`,`[class*="${t}"]`,r],o=new Set;for(let i of n)try{let s=document.querySelectorAll(i);for(let d of s)d instanceof HTMLElement&&o.add(d)}catch{}return Array.from(o).slice(0,6)}function Je({domain:e}){let[t,r]=(0,K.useState)(e.getState()),[n,o]=(0,K.useState)(null),[i,s]=(0,K.useState)(null),[d,p]=(0,K.useState)(null);(0,K.useEffect)(function(){return e.subscribe(r)},[e]);let l=(0,K.useMemo)(function(){return t.events.slice(-12).reverse()},[t.events]);(0,K.useEffect)(function(){if(!n)return;l.some(function(k){return k.id===n})||o(l[0]?.id??null)},[n,l]);let u=(0,K.useMemo)(function(){return l.length===0?null:n?l.find(function(S){return S.id===n})??l[0]??null:l[0]??null},[n,l]);function v(c){s(c);let y=yn(c);if(y.length===0){p(`No DOM node matched "${c}". Add data-component="${c}" for direct targeting.`);return}p(`Highlighted ${y.length} node${y.length>1?"s":""} for "${c}".`);let S=y.map(function(x){return{target:x,outline:x.style.outline,outlineOffset:x.style.outlineOffset,transition:x.style.transition,boxShadow:x.style.boxShadow}});for(let k of S)k.target.style.transition="outline 0.15s ease, box-shadow 0.15s ease",k.target.style.outline="2px solid var(--dw-accent)",k.target.style.outlineOffset="2px",k.target.style.boxShadow="0 0 0 4px rgba(59, 130, 246, 0.2)";y[0]?.scrollIntoView({block:"center",inline:"nearest",behavior:"smooth"}),setTimeout(function(){for(let x of S)x.target.style.outline=x.outline,x.target.style.outlineOffset=x.outlineOffset,x.target.style.transition=x.transition,x.target.style.boxShadow=x.boxShadow},2200)}let f=t.fps>=55?"var(--dw-success)":t.fps>=40?"var(--dw-warning)":"var(--dw-danger)",m=u?fn(u):null,b=u?Xe(u):[],w=b.some(function(y){return!pn(y)});return(0,h.jsxs)("div",{role:"region","aria-label":"Performance monitor",style:{display:"flex",flexDirection:"column",gap:"12px"},children:[(0,h.jsxs)("div",{"data-dw-section":"perf-header",style:{display:"grid",gridTemplateColumns:"1fr auto auto",alignItems:"center",gap:"10px",padding:"10px",borderRadius:"var(--dw-radius)",border:"1px solid var(--dw-border)",background:"var(--dw-bg-secondary)"},children:[(0,h.jsxs)("div",{style:{display:"flex",alignItems:"baseline",gap:"8px"},children:[(0,h.jsxs)("span",{"data-dw-metric":"fps",style:{color:f,fontWeight:"bold"},children:[t.fps," FPS"]}),(0,h.jsxs)("span",{"data-dw-metric":"scroll-fps",style:{fontSize:"10px",color:t.isScrolling?"var(--dw-accent)":"var(--dw-text-muted)",fontWeight:t.isScrolling?"bold":"normal",transition:"color 0.2s"},children:[t.scrollFps," Scroll FPS"]})]}),(0,h.jsxs)("span",{"data-dw-label":"events",style:{color:"var(--dw-text-muted)"},children:[t.hourlyCount," events/hr"]}),t.analysisRunning&&(0,h.jsx)("span",{"data-dw-badge":"analyzing","aria-live":"polite",style:{color:"var(--dw-accent)",fontSize:"10px",fontWeight:700,padding:"2px 6px",borderRadius:"999px",border:"1px solid var(--dw-accent)"},children:"Analyzing..."})]}),t.lastReport&&(0,h.jsxs)("div",{"data-dw-section":"perf-report","aria-live":"polite",style:{padding:"var(--dw-padding)",background:"var(--dw-bg-secondary)",borderRadius:"var(--dw-radius)"},children:[(0,h.jsx)("h4",{style:{margin:"0 0 4px 0",fontSize:"11px",color:"var(--dw-text-muted)",textTransform:"uppercase"},children:"Latest Analysis"}),(0,h.jsx)("p",{style:{margin:0},children:t.lastReport})]}),u&&m&&(0,h.jsxs)("div",{"data-dw-section":"perf-guide",style:{display:"grid",gap:"8px",padding:"10px",background:"var(--dw-bg-secondary)",borderRadius:"var(--dw-radius)",border:`1px solid ${Ge(u.severity)}`},children:[(0,h.jsx)("h4",{style:{margin:0,fontSize:"11px",textTransform:"uppercase"},children:"Issue Guide"}),(0,h.jsxs)("div",{style:{display:"grid",gap:"2px"},children:[(0,h.jsx)("span",{style:{fontSize:"10px",color:"var(--dw-text-muted)"},children:"What"}),(0,h.jsx)("span",{style:{fontSize:"11px"},children:m.what})]}),(0,h.jsxs)("div",{style:{display:"grid",gap:"2px"},children:[(0,h.jsx)("span",{style:{fontSize:"10px",color:"var(--dw-text-muted)"},children:"Where"}),(0,h.jsx)("span",{style:{fontSize:"11px"},children:m.where})]}),(0,h.jsxs)("div",{style:{display:"grid",gap:"2px"},children:[(0,h.jsx)("span",{style:{fontSize:"10px",color:"var(--dw-text-muted)"},children:"How to fix"}),(0,h.jsx)("span",{style:{fontSize:"11px"},children:m.fix})]}),b.length>0&&(0,h.jsxs)("div",{style:{display:"grid",gap:"4px"},children:[(0,h.jsx)("span",{style:{fontSize:"10px",color:"var(--dw-text-muted)"},children:"Suspect components"}),(0,h.jsx)("div",{style:{display:"flex",gap:"6px",flexWrap:"wrap"},children:b.map(function(y){let S=i===y;return(0,h.jsx)("button",{onClick:function(){v(y)},style:{borderRadius:"999px",border:"1px solid var(--dw-border)",padding:"2px 8px",fontSize:"10px",cursor:"pointer",background:S?"var(--dw-accent)":"var(--dw-bg)",color:S?"#fff":"var(--dw-text)"},children:y},y)})}),(0,h.jsx)("span",{style:{fontSize:"10px",color:"var(--dw-text-muted)"},children:w?"Click a suspect to highlight likely DOM nodes.":"Only generic names detected. Add data-component on app nodes for precise mapping."}),d&&(0,h.jsx)("span",{style:{fontSize:"10px",color:"var(--dw-text-muted)"},children:d})]})]}),(0,h.jsxs)("div",{"data-dw-section":"perf-events",style:{display:"flex",flexDirection:"column",gap:"8px"},children:[(0,h.jsxs)("h4",{style:{margin:0,fontSize:"11px",color:"var(--dw-text-muted)",textTransform:"uppercase"},children:["Recent Events (",l.length,")"]}),l.length===0?(0,h.jsxs)("div",{"data-dw-empty":!0,style:{textAlign:"center",padding:"var(--dw-padding)",color:"var(--dw-text-muted)",background:"var(--dw-bg-secondary)",borderRadius:"var(--dw-radius)"},children:[(0,h.jsx)("p",{style:{margin:0},children:"No performance issues detected"}),(0,h.jsx)("p",{style:{margin:0,fontSize:"10px",opacity:.8},children:"Events appear when thresholds are crossed"})]}):(0,h.jsx)("ul",{"data-dw-list":"events",style:{listStyle:"none",padding:0,margin:0,display:"flex",flexDirection:"column",gap:"4px"},children:l.map(function(y){let S=cn(y),k=Xe(y),x=u?.id===y.id;return(0,h.jsx)("li",{children:(0,h.jsxs)("button",{onClick:function(){o(y.id)},"data-dw-severity":y.severity,style:{display:"grid",gridTemplateColumns:"1fr auto",gap:"4px",padding:"8px",background:x?"rgba(255, 255, 255, 0.06)":"var(--dw-bg-secondary)",borderRadius:"var(--dw-radius)",border:`1px solid ${x?"var(--dw-accent)":"var(--dw-border)"}`,borderLeft:`3px solid ${Ge(y.severity)}`,textAlign:"left",cursor:"pointer",width:"100%"},children:[(0,h.jsxs)("div",{style:{display:"flex",flexDirection:"column",gap:"2px"},children:[(0,h.jsxs)("div",{style:{display:"flex",alignItems:"center",gap:"8px"},children:[(0,h.jsx)("span",{"data-dw-label":"type",style:{fontWeight:500},children:y.eventType}),(0,h.jsx)("span",{"data-dw-label":"route",style:{fontSize:"10px",color:"var(--dw-text-muted)"},children:y.route})]}),S&&(0,h.jsx)("span",{style:{fontSize:"10px",color:"var(--dw-text-muted)"},children:S}),k.length>0&&(0,h.jsxs)("span",{style:{fontSize:"10px",color:"var(--dw-text-muted)"},children:["Suspects: ",k.join(", ")]})]}),(0,h.jsx)("time",{dateTime:y.timestamp,style:{fontSize:"10px",color:"var(--dw-text-muted)"},children:new Date(y.timestamp).toLocaleTimeString()})]})},y.id)})})]})]})}var ye=require("react"),N=require("react/jsx-runtime");function Ye({domain:e}){let[t,r]=(0,ye.useState)(e.getState());if((0,ye.useEffect)(function(){return e.subscribe(r)},[e]),t.loading)return(0,N.jsx)("div",{role:"region","aria-label":"Routes","aria-busy":"true",children:(0,N.jsx)("p",{children:"Discovering routes..."})});if(t.error)return(0,N.jsx)("div",{role:"region","aria-label":"Routes",children:(0,N.jsx)("div",{"data-dw-alert":"warning",role:"alert",children:t.error})});let n=new Map;for(let o of t.routes){let i=o.group??"ungrouped",s=n.get(i)??[];s.push(o),n.set(i,s)}return(0,N.jsx)("div",{role:"region","aria-label":"Routes",style:{display:"flex",flexDirection:"column",gap:"var(--dw-gap)"},children:t.routes.length===0?(0,N.jsxs)("div",{"data-dw-empty":!0,style:{textAlign:"center",padding:"var(--dw-padding)",color:"var(--dw-text-muted)",background:"var(--dw-bg-secondary)",borderRadius:"var(--dw-radius)"},children:[(0,N.jsx)("p",{style:{margin:0},children:"No routes discovered"}),(0,N.jsx)("p",{style:{margin:0,fontSize:"10px",opacity:.8},children:"Routes are detected from app directory structure"})]}):Array.from(n.entries()).map(function([i,s]){return(0,N.jsxs)("div",{"data-dw-section":"route-group",style:{display:"flex",flexDirection:"column",gap:"4px"},children:[(0,N.jsx)("h4",{style:{margin:"8px 0 4px 0",fontSize:"11px",color:"var(--dw-text-muted)",textTransform:"uppercase"},children:i}),(0,N.jsx)("ul",{"data-dw-list":"routes",style:{listStyle:"none",padding:0,margin:0,display:"flex",flexDirection:"column",gap:"2px"},children:s.map(function(p){return(0,N.jsxs)("li",{"data-dw-dynamic":p.isDynamic,style:{display:"flex",alignItems:"center",justifyContent:"space-between",padding:"6px 8px",background:"var(--dw-bg-secondary)",borderRadius:"var(--dw-radius)",fontSize:"11px"},children:[(0,N.jsx)("code",{style:{color:p.isDynamic?"var(--dw-accent)":"var(--dw-text)"},children:p.path}),p.sourceFile&&(0,N.jsx)("span",{"data-dw-label":"source",style:{fontSize:"10px",color:"var(--dw-text-muted)",opacity:.7},children:p.sourceFile.split("/").pop()})]},p.path)})})]},i)})})}function Qe(e){if(typeof console>"u")return()=>{};let t=console.log,r=console.warn,n=console.error;function o(i,s){try{e({type:i,args:s})}catch{}}return console.log=(...i)=>{t.apply(console,i),o("log",i)},console.warn=(...i)=>{r.apply(console,i),o("warn",i)},console.error=(...i)=>{n.apply(console,i),o("error",i)},()=>{console.log=t,console.warn=r,console.error=n}}function tt(e){return e?e.includes("application/json")||e.includes("text/")||e.includes("application/javascript"):!1}function Ze(e){let t=[];return e.forEach(function(n,o){t.push({name:o,value:n})}),t}function ee(e,t,r){let n=new TextEncoder().encode(e),o=n.length,i=o>r,s=i?n.slice(0,r):n;return{text:new TextDecoder().decode(s),size:o,truncated:i,contentType:t}}async function vn(e,t){let r=e.headers.get("content-type");if(tt(r))try{let n=await e.text();return ee(n,r,t)}catch{return}}async function bn(e,t){let r=e.headers.get("content-type");if(tt(r))try{let n=await e.text();return ee(n,r,t)}catch{return}}function wn(e){let t=e.split(/\r?\n/),r=[];for(let n of t){if(!n)continue;let o=n.indexOf(":");if(o===-1)continue;let i=n.slice(0,o).trim(),s=n.slice(o+1).trim();r.push({name:i,value:s})}return r}function Ee(e){return e.__dwInfo??null}function hn(e,t){let r=e;r.__dwInfo=t}function xn(e,t,r){if(t!=null){if(typeof t=="string"){e.body=ee(t,null,r);return}if(t instanceof URLSearchParams){e.body=ee(t.toString(),"application/x-www-form-urlencoded",r);return}if(t instanceof FormData){let n=[];t.forEach(function(i,s){n.push(`${s}=${String(i)}`)}),e.body=ee(n.join("&"),"multipart/form-data",r)}}}function Ce(e,t,r,n){return n?{url:e,method:t,headers:r,body:n}:{url:e,method:t,headers:r}}function et(e,t,r,n,o){return o?{status:e,statusText:t,ok:r,headers:n,body:o}:{status:e,statusText:t,ok:r,headers:n}}function nt(e){if(typeof window>"u")return()=>{};let t=window.fetch,r=window.XMLHttpRequest,n=r.prototype.open,o=r.prototype.send,i=r.prototype.setRequestHeader,s=65536,d=async function(...p){let l=performance.now(),u=null,v=[],f;try{u=new Request(p[0],p[1]),v=Ze(u.headers);let m=u.clone();f=await bn(m,s)}catch{}try{let m=await t(...p),b=Math.round(performance.now()-l),w=Ze(m.headers),c;try{let y=m.clone();c=await vn(y,s)}catch{}return e({request:Ce(u?.url??String(p[0]),u?.method??"GET",v,f),response:et(m.status,m.statusText,m.ok,w,c),durationMs:b}),m}catch(m){let b=Math.round(performance.now()-l),w={request:Ce(u?.url??String(p[0]),u?.method??"GET",v,f),durationMs:b};throw m instanceof Error?w.error=m.message:w.error="Network error",e(w),m}};return window.fetch=d,r.prototype.open=function(p,l,u,v,f){return hn(this,{method:p,url:l,headers:[],start:0}),n.call(this,p,l,u??!0,v??null,f??null)},r.prototype.setRequestHeader=function(p,l){let u=Ee(this);return u&&u.headers.push({name:p,value:l}),i.call(this,p,l)},r.prototype.send=function(p){let l=Ee(this);l&&(l.start=performance.now(),xn(l,p,s));let u=()=>{this.removeEventListener("loadend",u);let v=Ee(this);if(!v)return;let f=Math.round(performance.now()-v.start),m=wn(this.getAllResponseHeaders()),b=this.status,w=this.statusText||"",c=b>=200&&b<300,y;(this.responseType===""||this.responseType==="text")&&typeof this.responseText=="string"&&(y=ee(this.responseText,this.getResponseHeader("content-type"),s));let S={request:Ce(v.url,v.method,v.headers,v.body),response:et(b,w,c,m,y),durationMs:f};!c&&this.statusText&&(S.error=this.statusText),e(S)};return this.addEventListener("loadend",u),o.call(this,p??null)},()=>{window.fetch=t,r.prototype.open=n,r.prototype.send=o,r.prototype.setRequestHeader=i}}function rt(){let e={rules:[],matches:[],isListening:!1},t=new Set,r=null,n=null;function o(){for(let c of t)c(e)}function i(c){let y={...c,id:Math.random().toString(36).slice(2),enabled:!0};e={...e,rules:[...e.rules,y]},o()}function s(c){e={...e,rules:e.rules.filter(y=>y.id!==c)},o()}function d(){e={...e,matches:[]},o()}function p(c){e={...e,rules:e.rules.map(y=>y.id===c?{...y,enabled:!y.enabled}:y)},o()}function l(c,y){if(!y.enabled)return!1;try{if(y.match.startsWith("/")&&y.match.lastIndexOf("/")>0){let S=y.match.lastIndexOf("/"),k=y.match.slice(1,S),x=y.match.slice(S+1);return new RegExp(k,x).test(c)}return c.includes(y.match)}catch{return c.includes(y.match)}}function u(c){let y=c.args.map(function(x){if(typeof x=="string")return x;try{return JSON.stringify(x)}catch{return String(x)}}).join(" "),S=e.rules.filter(function(x){return x.type==="console"}).filter(function(x){return l(y,x)});if(S.length>0){let k=S.map(function(B){let $={type:"console",level:c.type,args:c.args};return{id:Math.random().toString(36).slice(2),ruleId:B.id,timestamp:Date.now(),content:y,details:$}});e={...e,matches:[...k,...e.matches].slice(0,100)},o()}}function v(c){let y=c.response?.status??0,S=c.request.method,k=c.request.url,x=`${S} ${k} ${y}`,B=e.rules.filter(function(z){return z.type==="network"}).filter(function(z){return l(x,z)});if(B.length>0){let $=B.map(function(T){let E={type:"network",request:c.request,durationMs:c.durationMs};return c.response&&(E.response=c.response),c.error&&(E.error=c.error),{id:Math.random().toString(36).slice(2),ruleId:T.id,timestamp:Date.now(),content:x,details:E}});e={...e,matches:[...$,...e.matches].slice(0,100)},o()}}function f(c){}function m(){e.isListening||(r=Qe(u),n=nt(v),e={...e,isListening:!0},o())}function b(){r&&(r(),r=null),n&&(n(),n=null),e={...e,isListening:!1},o()}return{id:"monitor",setup:f,start:m,stop:b,getState:function(){return e},subscribe:function(y){return t.add(y),function(){t.delete(y)}},addRule:i,removeRule:s,toggleRule:p,clearMatches:d}}var H=require("react"),a=require("react/jsx-runtime");function ot(e){return new Date(e).toLocaleTimeString([],{hour12:!1,hour:"2-digit",minute:"2-digit",second:"2-digit"})}function Rn(e){if(typeof e=="string")return e;if(typeof e=="number"||typeof e=="boolean")return String(e);try{return JSON.stringify(e,null,2)}catch{return String(e)}}function Sn(e){return e<1024?`${e} B`:e<1024*1024?`${(e/1024).toFixed(1)} KB`:`${(e/(1024*1024)).toFixed(1)} MB`}function it(){if(typeof document>"u")return 0;let e=document.cookie.split(";"),t=0;for(let r of e){let[n]=r.split("="),o=n?.trim();o&&(document.cookie=`${o}=; expires=Thu, 01 Jan 1970 00:00:00 GMT; path=/`,t++)}return t}function st(){if(typeof window>"u")return 0;let e=window.localStorage.length+window.sessionStorage.length;return window.localStorage.clear(),window.sessionStorage.clear(),e}async function at(){if(typeof window>"u"||!("caches"in window))return 0;let e=await window.caches.keys();for(let t of e)await window.caches.delete(t);return e.length}function kn(){typeof window>"u"||window.location.reload()}function Tn(){if(typeof window>"u")return;let e=new URL(window.location.href);e.searchParams.set("dwcb",String(Date.now())),window.location.assign(e.toString())}function dt({domain:e}){let[t,r]=(0,H.useState)(e.getState()),[n,o]=(0,H.useState)(""),[i,s]=(0,H.useState)("console"),[d,p]=(0,H.useState)(!1),[l,u]=(0,H.useState)(null),[v,f]=(0,H.useState)(!1),[m,b]=(0,H.useState)(!1),[w,c]=(0,H.useState)(!1),[y,S]=(0,H.useState)("");(0,H.useEffect)(()=>e.subscribe(r),[e]),(0,H.useEffect)(function(){if(!l)return;t.matches.some(function(Y){return Y.id===l})||u(null)},[l,t.matches]),(0,H.useEffect)(function(){f(!1),b(!1)},[l]);function k(){n.trim()&&(e.addRule({type:i,match:n}),o(""))}function x(){t.isListening?e.stop():e.start()}function B(g){s(g.target.value)}function $(g){o(g.target.value)}function z(){p(!0)}function T(){p(!1)}function E(g){g.key==="Enter"&&k()}function _(){e.clearMatches(),u(null)}function J(g){u(g)}async function we(){c(!0);try{let g=st(),C=it();S(`Cleared storage (${g}) and cookies (${C}).`)}finally{c(!1)}}async function he(){c(!0);try{let g=await at();S(`Cleared cache buckets (${g}).`)}finally{c(!1)}}async function xe(){c(!0);try{let g=st(),C=it(),M=await at();S(`Cleared storage (${g}), cookies (${C}), cache (${M}).`)}finally{c(!1)}}async function Re(){c(!0);try{(await fetch("/api/dev-widget/restart",{method:"POST"})).ok?S("Restart request sent to /api/dev-widget/restart."):S("Restart endpoint found but returned non-success status.")}catch{S("No restart endpoint found. Add POST /api/dev-widget/restart to enable it.")}finally{c(!1)}}function Se(){f(function(C){return!C})}function ke(){b(function(C){return!C})}function se(g){return t.rules.find(function(M){return M.id===g})}function ae(g){return g.length===0?(0,a.jsx)("span",{style:{color:"var(--dw-text-muted)"},children:"None"}):(0,a.jsx)("ul",{style:{listStyle:"none",margin:0,padding:0,display:"grid",gap:"6px"},children:g.map(function(M){return(0,a.jsxs)("li",{style:{display:"grid",gap:"2px"},children:[(0,a.jsx)("span",{style:{fontSize:"10px",color:"var(--dw-text-muted)"},children:M.name}),(0,a.jsx)("code",{style:{fontSize:"11px",color:"var(--dw-text)"},children:M.value})]},`${M.name}-${M.value}`)})})}function de(g){return!g||!g.text?(0,a.jsx)("span",{style:{color:"var(--dw-text-muted)"},children:"No body captured"}):(0,a.jsxs)("div",{style:{display:"grid",gap:"6px"},children:[(0,a.jsx)("code",{style:{whiteSpace:"pre-wrap",fontSize:"11px",lineHeight:"1.4"},children:g.text}),(0,a.jsxs)("span",{style:{fontSize:"10px",color:"var(--dw-text-muted)"},children:[Sn(g.size),g.truncated?" (truncated)":""]})]})}function R(){return(0,a.jsxs)("div",{style:{display:"grid",gap:"10px",padding:"12px",borderRadius:"var(--dw-radius)",border:"1px solid var(--dw-border)",background:"var(--dw-bg-secondary)"},children:[(0,a.jsxs)("div",{style:{display:"grid",gap:"2px"},children:[(0,a.jsx)("span",{style:{fontSize:"10px",textTransform:"uppercase",letterSpacing:"0.05em",color:"var(--dw-text-muted)"},children:"Network Recorder Example"}),(0,a.jsx)("span",{style:{fontSize:"11px",color:"var(--dw-text)"},children:"Type a rule, press Track, then trigger a request that matches it."})]}),(0,a.jsxs)("div",{style:{display:"grid",gap:"6px"},children:[(0,a.jsx)("code",{style:{fontSize:"11px"},children:"Rule: `GET /api/orders 500`"}),(0,a.jsx)("code",{style:{fontSize:"11px"},children:"Rule (regex): `/POST .*checkout/i`"}),(0,a.jsx)("code",{style:{fontSize:"11px"},children:"Captured: `POST /api/checkout 502 | 784ms`"})]})]})}function A(g){return g.type!=="console"?null:(0,a.jsxs)("div",{style:{display:"grid",gap:"10px"},children:[(0,a.jsxs)("div",{style:{display:"grid",gap:"4px"},children:[(0,a.jsx)("span",{style:{fontSize:"10px",color:"var(--dw-text-muted)"},children:"Level"}),(0,a.jsx)("code",{style:{fontSize:"11px"},children:g.level})]}),(0,a.jsxs)("div",{style:{display:"grid",gap:"4px"},children:[(0,a.jsx)("span",{style:{fontSize:"10px",color:"var(--dw-text-muted)"},children:"Arguments"}),(0,a.jsx)("code",{style:{whiteSpace:"pre-wrap",fontSize:"11px"},children:g.args.map(function(M,Y){return`${Y+1}. ${Rn(M)}`}).join(`
|
|
2
|
+
`)})]})]})}function W(g){return g.type!=="network"?null:(0,a.jsxs)("div",{style:{display:"grid",gap:"14px"},children:[(0,a.jsxs)("div",{style:{display:"grid",gap:"6px"},children:[(0,a.jsx)("span",{style:{fontSize:"10px",color:"var(--dw-text-muted)"},children:"Summary"}),(0,a.jsxs)("div",{style:{display:"grid",gap:"4px"},children:[(0,a.jsxs)("code",{style:{fontSize:"11px"},children:[g.request.method," ",g.request.url]}),(0,a.jsxs)("span",{style:{fontSize:"10px",color:"var(--dw-text-muted)"},children:["Status ",g.response?.status??0," \u2022 ",g.durationMs,"ms"]}),g.error&&(0,a.jsx)("span",{style:{fontSize:"10px",color:"var(--dw-danger)"},children:g.error})]})]}),(0,a.jsxs)("div",{style:{display:"grid",gap:"8px"},children:[(0,a.jsx)("span",{style:{fontSize:"10px",color:"var(--dw-text-muted)"},children:"Request"}),ae(g.request.headers),g.request.body&&(0,a.jsx)("button",{onClick:Se,style:{border:"none",background:"transparent",color:"var(--dw-accent)",fontSize:"10px",cursor:"pointer",padding:0,textAlign:"left"},children:v?"Hide body":"Show body"}),v&&de(g.request.body)]}),(0,a.jsxs)("div",{style:{display:"grid",gap:"8px"},children:[(0,a.jsx)("span",{style:{fontSize:"10px",color:"var(--dw-text-muted)"},children:"Response"}),g.response?(0,a.jsxs)(a.Fragment,{children:[ae(g.response.headers),g.response.body&&(0,a.jsx)("button",{onClick:ke,style:{border:"none",background:"transparent",color:"var(--dw-accent)",fontSize:"10px",cursor:"pointer",padding:0,textAlign:"left"},children:m?"Hide body":"Show body"}),m&&de(g.response.body)]}):(0,a.jsx)("span",{style:{color:"var(--dw-text-muted)"},children:"No response captured"})]})]})}function L(g,C){let M=se(g.ruleId),Y=g.id===l,Te=M?.type??g.details?.type??"console",Ot=Te==="network"?"NET":"LOG";return(0,a.jsxs)("button",{onClick:function(){J(g.id)},style:{display:"flex",flexDirection:"column",gap:"4px",padding:"10px",borderRadius:"8px",background:Y?"rgba(59, 130, 246, 0.15)":"var(--dw-bg-secondary)",border:Y?"1px solid rgba(59, 130, 246, 0.4)":"1px solid var(--dw-border)",animation:`dw-slide-up 0.3s ease-out backwards ${C*.05}s relative`,position:"relative",overflow:"hidden",textAlign:"left",cursor:"pointer"},children:[(0,a.jsx)("div",{style:{position:"absolute",left:0,top:0,bottom:0,width:"3px",background:"var(--dw-accent)"}}),(0,a.jsxs)("div",{style:{display:"flex",justifyContent:"space-between",alignItems:"center"},children:[(0,a.jsxs)("div",{style:{display:"flex",alignItems:"center",gap:"6px"},children:[(0,a.jsx)("span",{style:{fontSize:"9px",fontWeight:700,color:"var(--dw-text-muted)",fontFamily:"var(--dw-font-mono)"},children:ot(g.timestamp)}),(0,a.jsx)("span",{style:{padding:"2px 4px",borderRadius:"4px",fontSize:"9px",fontWeight:800,textTransform:"uppercase",background:Te==="network"?"rgba(59, 130, 246, 0.15)":"rgba(245, 158, 11, 0.15)",color:Te==="network"?"#3b82f6":"#f59e0b"},children:Ot})]}),g.details?.type==="console"&&(0,a.jsx)("span",{style:{fontSize:"9px",fontWeight:800,color:g.details.level==="error"?"#ef4444":g.details.level==="warn"?"#f59e0b":"var(--dw-text-muted)",textTransform:"uppercase"},children:g.details.level}),g.details?.type==="network"&&(0,a.jsx)("span",{style:{fontSize:"9px",color:"var(--dw-text-muted)"},children:g.details.response?.status??0})]}),(0,a.jsx)("code",{style:{whiteSpace:"pre-wrap",wordBreak:"break-all",fontFamily:"var(--dw-font-mono)",fontSize:"11px",lineHeight:"1.4",color:"var(--dw-text)"},children:g.content})]},g.id)}function F(g){if(!g)return(0,a.jsx)("div",{style:{padding:"24px",borderRadius:"12px",border:"1px dashed var(--dw-border)",background:"rgba(255, 255, 255, 0.02)",textAlign:"center",color:"var(--dw-text-muted)",fontSize:"11px"},children:"Select an intercept to inspect full details."});let C=se(g.ruleId),M=g.details;return(0,a.jsxs)("div",{style:{display:"grid",gap:"14px"},children:[(0,a.jsxs)("div",{style:{display:"grid",gap:"6px"},children:[(0,a.jsx)("span",{style:{fontSize:"10px",color:"var(--dw-text-muted)"},children:"Rule"}),(0,a.jsxs)("div",{style:{display:"grid",gap:"2px"},children:[(0,a.jsx)("code",{style:{fontSize:"11px"},children:C?.match??"unknown"}),(0,a.jsxs)("span",{style:{fontSize:"10px",color:"var(--dw-text-muted)"},children:[C?.type??"unknown"," \u2022 ",ot(g.timestamp)]})]})]}),M?M.type==="network"?W(M):A(M):(0,a.jsx)("span",{style:{color:"var(--dw-text-muted)"},children:"No details available"})]})}let q=l===null?t.matches[0]??null:t.matches.find(function(C){return C.id===l})??null;return(0,a.jsxs)("div",{style:{display:"flex",flexDirection:"column",gap:"20px",animation:"dw-fade-in 0.3s ease-out"},children:[(0,a.jsxs)("div",{"data-dw-section":"monitor-header",style:{display:"flex",justifyContent:"space-between",alignItems:"center",padding:"12px",background:"var(--dw-bg-secondary)",borderRadius:"var(--dw-radius)",border:"1px solid var(--dw-border)",gap:"8px"},children:[(0,a.jsxs)("div",{style:{display:"flex",alignItems:"center",gap:"10px"},children:[(0,a.jsx)("button",{onClick:x,style:{padding:"6px 10px",borderRadius:"6px",background:t.isListening?"var(--dw-success)":"var(--dw-bg)",border:"1px solid var(--dw-border)",color:t.isListening?"#fff":"var(--dw-text)",cursor:"pointer",fontSize:"11px",fontWeight:600},"aria-label":t.isListening?"Stop monitoring":"Start monitoring",children:t.isListening?"Stop Recorder":"Start Recorder"}),(0,a.jsxs)("div",{style:{display:"flex",flexDirection:"column"},children:[(0,a.jsx)("span",{style:{fontSize:"12px",fontWeight:600,color:"var(--dw-text)"},children:"Network Recorder"}),(0,a.jsxs)("span",{style:{fontSize:"10px",color:"var(--dw-text-muted)",display:"flex",alignItems:"center",gap:"4px"},children:[(0,a.jsx)("span",{style:{width:"6px",height:"6px",borderRadius:"50%",background:t.isListening?"#10b981":"#6b7280"}}),t.isListening?"Listening":"Idle"]})]})]}),(0,a.jsx)("div",{style:{display:"flex",alignItems:"center",gap:"8px"},children:(0,a.jsxs)("div",{style:{textAlign:"right"},children:[(0,a.jsx)("div",{style:{fontSize:"10px",color:"var(--dw-text-muted)",textTransform:"uppercase",letterSpacing:"0.05em"},children:"Total Matches"}),(0,a.jsx)("div",{style:{fontSize:"18px",fontWeight:700,color:"var(--dw-accent)"},children:t.matches.length})]})})]}),(0,a.jsxs)("div",{style:{display:"grid",gap:"8px",padding:"12px",borderRadius:"var(--dw-radius)",border:"1px solid var(--dw-border)",background:"var(--dw-bg-secondary)"},children:[(0,a.jsx)("span",{style:{fontSize:"11px",fontWeight:600,color:"var(--dw-text-muted)"},children:"Browser Tools"}),(0,a.jsxs)("div",{style:{display:"flex",flexWrap:"wrap",gap:"6px"},children:[(0,a.jsx)("button",{onClick:kn,disabled:w,style:{padding:"6px 10px",borderRadius:"6px",border:"1px solid var(--dw-border)",background:"var(--dw-bg)",color:"var(--dw-text)",fontSize:"11px",cursor:"pointer"},children:"Refresh"}),(0,a.jsx)("button",{onClick:Tn,disabled:w,style:{padding:"6px 10px",borderRadius:"6px",border:"1px solid var(--dw-border)",background:"var(--dw-bg)",color:"var(--dw-text)",fontSize:"11px",cursor:"pointer"},children:"Bust + Refresh"}),(0,a.jsx)("button",{onClick:he,disabled:w,style:{padding:"6px 10px",borderRadius:"6px",border:"1px solid var(--dw-border)",background:"var(--dw-bg)",color:"var(--dw-text)",fontSize:"11px",cursor:"pointer"},children:"Clear Cache"}),(0,a.jsx)("button",{onClick:we,disabled:w,style:{padding:"6px 10px",borderRadius:"6px",border:"1px solid var(--dw-border)",background:"var(--dw-bg)",color:"var(--dw-text)",fontSize:"11px",cursor:"pointer"},children:"Clear Storage"}),(0,a.jsx)("button",{onClick:xe,disabled:w,style:{padding:"6px 10px",borderRadius:"6px",border:"1px solid var(--dw-border)",background:"var(--dw-bg)",color:"var(--dw-text)",fontSize:"11px",cursor:"pointer"},children:"Clear All"}),(0,a.jsx)("button",{onClick:Re,disabled:w,style:{padding:"6px 10px",borderRadius:"6px",border:"1px solid var(--dw-border)",background:"var(--dw-bg)",color:"var(--dw-text)",fontSize:"11px",cursor:"pointer"},children:"Restart Next Dev"})]}),y&&(0,a.jsx)("span",{style:{fontSize:"10px",color:"var(--dw-text-muted)"},children:y})]}),(0,a.jsxs)("div",{style:{display:"flex",flexDirection:"column",gap:"8px",padding:"12px",background:"rgba(255, 255, 255, 0.03)",borderRadius:"var(--dw-radius)",border:d?"1px solid var(--dw-accent)":"1px solid var(--dw-border)",transition:"all 0.2s"},children:[(0,a.jsx)("span",{style:{fontSize:"11px",fontWeight:600,color:"var(--dw-text-muted)"},children:"Create Watch Rule"}),(0,a.jsxs)("div",{style:{display:"flex",gap:"8px"},children:[(0,a.jsxs)("select",{value:i,onChange:B,style:{padding:"6px 8px",borderRadius:"6px",border:"1px solid var(--dw-border)",background:"var(--dw-bg)",color:"var(--dw-text)",fontSize:"11px",cursor:"pointer",outline:"none"},children:[(0,a.jsx)("option",{value:"console",children:"Console Log"}),(0,a.jsx)("option",{value:"network",children:"Network Req"})]}),(0,a.jsx)("input",{type:"text",value:n,onFocus:z,onBlur:T,onChange:$,placeholder:"Filter string or /regex/i",style:{flex:1,padding:"6px 10px",borderRadius:"6px",border:"1px solid var(--dw-border)",background:"var(--dw-bg)",color:"var(--dw-text)",fontSize:"11px",outline:"none"},onKeyDown:E}),(0,a.jsx)("button",{onClick:k,disabled:!n.trim(),style:{padding:"6px 12px",borderRadius:"6px",background:n.trim()?"var(--dw-accent)":"var(--dw-bg-tertiary)",color:"white",border:"none",cursor:"pointer",fontSize:"11px",fontWeight:600,transition:"all 0.2s",opacity:n.trim()?1:.5},children:"Track"})]})]}),R(),t.rules.length>0&&(0,a.jsx)("div",{style:{display:"flex",flexDirection:"column",gap:"8px"},children:(0,a.jsx)("div",{style:{display:"flex",flexWrap:"wrap",gap:"8px"},children:t.rules.map(function(C){return(0,a.jsxs)("div",{style:{display:"flex",alignItems:"center",gap:"8px",padding:"4px 8px",paddingRight:"4px",borderRadius:"8px",background:"var(--dw-bg-secondary)",border:"1px solid var(--dw-border)",fontSize:"11px",animation:"dw-scale-in 0.2s ease-out"},children:[(0,a.jsx)("span",{style:{padding:"2px 4px",borderRadius:"4px",fontSize:"9px",fontWeight:800,textTransform:"uppercase",background:C.type==="console"?"rgba(245, 158, 11, 0.15)":"rgba(59, 130, 246, 0.15)",color:C.type==="console"?"#f59e0b":"#3b82f6"},children:C.type==="console"?"LOG":"NET"}),(0,a.jsx)("span",{style:{fontFamily:"var(--dw-font-mono)",color:"var(--dw-text)"},children:C.match}),(0,a.jsx)("button",{onClick:function(){e.removeRule(C.id)},style:{width:"18px",height:"18px",borderRadius:"4px",border:"none",background:"transparent",cursor:"pointer",display:"flex",alignItems:"center",justifyContent:"center",color:"var(--dw-text-muted)",transition:"all 0.2s",fontSize:"14px"},onMouseEnter:M=>{M.currentTarget.style.background="rgba(239, 68, 68, 0.1)",M.currentTarget.style.color="#ef4444"},onMouseLeave:M=>{M.currentTarget.style.background="transparent",M.currentTarget.style.color="var(--dw-text-muted)"},children:"x"})]},C.id)})})}),(0,a.jsxs)("div",{"data-dw-section":"monitor-main",style:{display:"grid",gridTemplateColumns:"1.2fr 1fr",gap:"16px"},children:[(0,a.jsxs)("div",{"data-dw-section":"matches",style:{display:"flex",flexDirection:"column",gap:"12px"},children:[(0,a.jsxs)("div",{style:{display:"flex",justifyContent:"space-between",alignItems:"baseline"},children:[(0,a.jsx)("h4",{style:{margin:0,fontSize:"12px",fontWeight:600,color:"var(--dw-text-muted)",textTransform:"uppercase"},children:"Intercepted Feed"}),t.matches.length>0&&(0,a.jsx)("button",{onClick:_,style:{border:"none",background:"transparent",fontSize:"10px",color:"var(--dw-text-muted)",cursor:"pointer",padding:"2px 4px",borderRadius:"4px",transition:"color 0.2s"},onMouseEnter:g=>g.currentTarget.style.color="var(--dw-accent)",onMouseLeave:g=>g.currentTarget.style.color="var(--dw-text-muted)",children:"Clear Feed"})]}),(0,a.jsx)("div",{style:{display:"flex",flexDirection:"column",gap:"8px",maxHeight:"350px",overflowY:"auto",paddingRight:"4px"},children:t.matches.length===0?(0,a.jsxs)("div",{style:{padding:"40px 20px",textAlign:"center",background:"rgba(255, 255, 255, 0.02)",borderRadius:"var(--dw-radius)",border:"1px dashed var(--dw-border)"},children:[(0,a.jsx)("div",{style:{fontSize:"12px",color:"var(--dw-text)",fontWeight:600},children:"No Signals Captured"}),(0,a.jsx)("p",{style:{fontSize:"10px",color:"var(--dw-text-muted)",margin:"4px 0 0 0"},children:"Set up rules and start monitoring to see data here."})]}):t.matches.map(L)})]}),(0,a.jsxs)("div",{"data-dw-section":"details",style:{display:"flex",flexDirection:"column",gap:"12px",padding:"12px",background:"var(--dw-bg-secondary)",border:"1px solid var(--dw-border)",borderRadius:"var(--dw-radius)",maxHeight:"350px",overflowY:"auto"},children:[(0,a.jsx)("h4",{style:{margin:0,fontSize:"12px",fontWeight:600,color:"var(--dw-text-muted)",textTransform:"uppercase"},children:"Details"}),F(q)]})]}),(0,a.jsx)("style",{children:`
|
|
3
|
+
@keyframes dw-fade-in {
|
|
4
|
+
from { opacity: 0; }
|
|
5
|
+
to { opacity: 1; }
|
|
6
|
+
}
|
|
7
|
+
@keyframes dw-slide-up {
|
|
8
|
+
from { opacity: 0; transform: translateY(10px); }
|
|
9
|
+
to { opacity: 1; transform: translateY(0); }
|
|
10
|
+
}
|
|
11
|
+
@keyframes dw-scale-in {
|
|
12
|
+
from { opacity: 0; transform: scale(0.95); }
|
|
13
|
+
to { opacity: 1; transform: scale(1); }
|
|
14
|
+
}
|
|
15
|
+
`})]})}var re=Kt(require("react"));function ve(e){let t=ge(e),{bus:r,registry:n}=t,o=je(e.providers?.ai),i=ze(r,e.providers?.auth),s=Ke(r,o),d=Ue(r),p=rt();return n.registerDomain(i),n.registerDomain(s),n.registerDomain(d),n.registerDomain(p),n.registerCategory({id:"auth",label:"Auth",order:1},{render(){return re.default.createElement(Ve,{domain:i})}}),n.registerCategory({id:"performance",label:"Perf",order:2},{render(){return re.default.createElement(Je,{domain:s})}}),n.registerCategory({id:"routes",label:"Routes",order:3},{render(){return re.default.createElement(Ye,{domain:d})}}),n.registerCategory({id:"monitor",label:"Monitor",order:4},{render(){return re.default.createElement(dt,{domain:p})}}),t}var I=require("react");var U=require("react");var Pn={bg:"#0a0a0b",bgSecondary:"#141416",border:"#2a2a2e",text:"#e4e4e7",textMuted:"#71717a",accent:"#3bb273",accentSoft:"rgba(59, 178, 115, 0.15)",danger:"#ef4444",warning:"#f59e0b",success:"#22c55e"},En={bg:"#fafafa",bgSecondary:"#f4f4f5",border:"#e4e4e7",text:"#18181b",textMuted:"#71717a",accent:"#16a34a",accentSoft:"rgba(22, 163, 74, 0.1)",danger:"#dc2626",warning:"#d97706",success:"#16a34a"};function ut(e,t){let r=e==="light"?En:Pn;return t?{...r,accent:t,accentSoft:`color-mix(in srgb, ${t}, transparent 85%)`}:r}function lt(e){switch(e){case"none":return"0";case"sm":return"2px";case"md":return"4px";case"lg":return"6px"}}function ct(e){switch(e){case"compact":return{unit:4,gap:4,padding:8};case"comfortable":return{unit:6,gap:8,padding:12}}}function pt(e,t,r){let n=ct(r);return[`--dw-bg: ${e.bg}`,`--dw-bg-secondary: ${e.bgSecondary}`,`--dw-border: ${e.border}`,`--dw-text: ${e.text}`,`--dw-text-muted: ${e.textMuted}`,`--dw-accent: ${e.accent}`,`--dw-accent-soft: ${e.accentSoft}`,`--dw-danger: ${e.danger}`,`--dw-warning: ${e.warning}`,`--dw-success: ${e.success}`,`--dw-radius: ${lt(t)}`,`--dw-unit: ${n.unit}px`,`--dw-gap: ${n.gap}px`,`--dw-padding: ${n.padding}px`].join("; ")}function ft(e,t,r){let n=ct(r);return{"--dw-bg":e.bg,"--dw-bg-secondary":e.bgSecondary,"--dw-border":e.border,"--dw-text":e.text,"--dw-text-muted":e.textMuted,"--dw-accent":e.accent,"--dw-accent-soft":e.accentSoft,"--dw-danger":e.danger,"--dw-warning":e.warning,"--dw-success":e.success,"--dw-radius":lt(t),"--dw-unit":`${n.unit}px`,"--dw-gap":`${n.gap}px`,"--dw-padding":`${n.padding}px`}}var vt=require("react/jsx-runtime"),gt=(0,U.createContext)(null);function Cn(){let[e,t]=(0,U.useState)(function(){return typeof window>"u"?!0:window.matchMedia("(prefers-color-scheme: dark)").matches});return(0,U.useEffect)(function(){if(typeof window>"u")return;let n=window.matchMedia("(prefers-color-scheme: dark)");function o(i){t(i.matches)}return n.addEventListener("change",o),function(){n.removeEventListener("change",o)}},[]),e?"dark":"light"}function mt({mode:e,accent:t,density:r,radius:n,children:o}){let i=Cn(),s=e==="system"?i:e,d=(0,U.useMemo)(function(){let l=ut(s,t),u=pt(l,n,r);return{mode:s,tokens:l,density:r,radius:n,cssVars:u}},[s,t,r,n]);return(0,vt.jsx)(gt.Provider,{value:d,children:o})}function yt(){let e=(0,U.useContext)(gt);if(!e)throw new Error("useTheme must be used within ThemeProvider");return e}var X=require("react/jsx-runtime");function bt({title:e,onMinimize:t,onClose:r}){return(0,X.jsxs)("div",{"data-dw-header":!0,role:"banner",style:{display:"flex",alignItems:"center",justifyContent:"space-between",padding:"var(--dw-padding)",borderBottom:"1px solid var(--dw-border)",background:"var(--dw-bg-secondary)",color:"var(--dw-text)",fontSize:"12px",fontFamily:"ui-monospace, monospace",userSelect:"none"},children:[(0,X.jsx)("span",{"data-dw-title":!0,style:{fontWeight:600},children:e??"DevWidget"}),(0,X.jsxs)("div",{"data-dw-actions":!0,style:{display:"flex",gap:"var(--dw-gap)"},children:[(0,X.jsx)("button",{type:"button",onClick:t,"aria-label":"Minimize widget",style:{background:"none",border:"none",color:"var(--dw-text-muted)",cursor:"pointer",padding:"2px 6px",fontSize:"12px",lineHeight:1},children:"\u2013"}),(0,X.jsx)("button",{type:"button",onClick:r,"aria-label":"Close widget",style:{background:"none",border:"none",color:"var(--dw-text-muted)",cursor:"pointer",padding:"2px 6px",fontSize:"12px",lineHeight:1},children:"\u2715"})]})]})}var te=require("react/jsx-runtime");function wt({toggleKey:e,diagnosticCount:t}){return(0,te.jsxs)("div",{"data-dw-footer":!0,style:{display:"flex",alignItems:"center",justifyContent:"space-between",padding:"var(--dw-padding)",borderTop:"1px solid var(--dw-border)",background:"var(--dw-bg-secondary)",color:"var(--dw-text-muted)",fontSize:"10px",fontFamily:"ui-monospace, monospace"},children:[(0,te.jsxs)("span",{children:[(0,te.jsx)("kbd",{style:{padding:"1px 4px",border:"1px solid var(--dw-border)",borderRadius:"2px",fontSize:"10px",fontFamily:"ui-monospace, monospace",background:"var(--dw-bg)"},children:e})," ","toggle"]}),t!==void 0&&t>0&&(0,te.jsxs)("span",{"data-dw-badge":"info",children:[t," diagnostic",t!==1?"s":""]})]})}var xt=require("react/jsx-runtime");function ht({id:e,active:t,children:r}){return(0,xt.jsx)("div",{role:"tabpanel",id:`dw-panel-${e}`,"aria-labelledby":`dw-tab-${e}`,hidden:!t,tabIndex:t?0:-1,style:{padding:"var(--dw-padding)",overflow:"auto",flex:1,color:"var(--dw-text)",fontSize:"12px",fontFamily:"ui-monospace, monospace",display:t?"block":"none"},children:t&&r})}var j=require("react");var Rt=require("react"),kt=require("react/jsx-runtime"),St=(0,Rt.forwardRef)(function({children:t,variant:r="ghost",size:n="sm",active:o=!1,style:i,type:s="button",disabled:d,...p},l){let u={fontFamily:"ui-monospace, monospace",cursor:d?"not-allowed":"pointer",display:"inline-flex",alignItems:"center",justifyContent:"center",border:"none",background:"transparent",transition:"all 0.15s ease",whiteSpace:"nowrap",opacity:d?.5:1,...i},v={ghost:{color:o?"var(--dw-text)":"var(--dw-text-muted)",background:o?"var(--dw-bg-secondary)":"transparent"},solid:{background:"var(--dw-accent)",color:"#fff",borderRadius:"var(--dw-radius)"},outline:{border:`1px solid ${o?"var(--dw-accent)":"var(--dw-border)"}`,color:o?"var(--dw-accent)":"var(--dw-text)",borderRadius:"var(--dw-radius)"},tab:{background:o?"var(--dw-accent-soft)":"transparent",borderBottom:o?"2px solid var(--dw-accent)":"2px solid transparent",color:o?"var(--dw-text)":"var(--dw-text-muted)",borderRadius:"0"}},f={sm:{fontSize:"11px",padding:r==="tab"?"6px 12px":"4px 8px"},md:{fontSize:"12px",padding:"6px 12px"}};return(0,kt.jsx)("button",{ref:l,type:s,disabled:d,"aria-pressed":o,style:{...u,...v[r],...f[n],...i},...p,children:t})});var oe=require("react/jsx-runtime");function Tt({runtime:e}){let[,t]=(0,j.useState)(0),r=(0,j.useRef)(null);(0,j.useEffect)(function(){return e.subscribe(function(){t(function(l){return l+1})})},[e]);let n=e.getSorted(),o=e.getActive(),i=(0,j.useCallback)(function(d){let p=n.findIndex(function(f){return f.category.id===o});if(p===-1)return;let l=p;switch(d.key){case"ArrowRight":l=(p+1)%n.length,d.preventDefault();break;case"ArrowLeft":l=(p-1+n.length)%n.length,d.preventDefault();break;case"Home":l=0,d.preventDefault();break;case"End":l=n.length-1,d.preventDefault();break;default:return}let u=n[l];u&&(e.setActive(u.category.id),r.current?.querySelector(`[data-dw-tab-id="${u.category.id}"]`)?.focus())},[n,o,e]);return(0,oe.jsx)("div",{ref:r,role:"tablist","aria-label":"Widget tabs",onKeyDown:i,style:{display:"flex",borderBottom:"1px solid var(--dw-border)",background:"var(--dw-bg)",overflowX:"auto",scrollbarWidth:"none"},children:n.map(function(d){let p=d.category.id===o;return(0,oe.jsxs)(St,{variant:"tab",role:"tab",id:`dw-tab-${d.category.id}`,"aria-controls":`dw-panel-${d.category.id}`,"aria-selected":p,tabIndex:p?0:-1,"data-dw-tab-id":d.category.id,active:p,onClick:function(){e.setActive(d.category.id)},style:{position:"relative"},children:[d.category.label,(d.category.badgeCount??0)>0&&(0,oe.jsx)("span",{style:{marginLeft:"4px",padding:"0 4px",fontSize:"9px",borderRadius:"8px",background:"var(--dw-accent)",color:"#fff",lineHeight:"14px",display:"inline-block",minWidth:"14px",textAlign:"center"},children:d.category.badgeCount})]},d.category.id)})})}var ie=require("react"),G=require("react/jsx-runtime");function Pt({panels:e,defaultPanel:t,collapsible:r,children:n}){let[o,i]=(0,ie.useState)(t??null),s=(0,ie.useCallback)(function(u){i(function(f){return f===u&&(r??!0)?null:u})},[r]),d=(0,ie.useCallback)(function(u){let v=e.filter(function(c){return c.enabled??!0}),f=v.findIndex(function(c){return c.id===o}),m=f;switch(u.key){case"ArrowDown":m=(f+1)%v.length,u.preventDefault();break;case"ArrowUp":m=(f-1+v.length)%v.length,u.preventDefault();break;case"Enter":case" ":if(f>=0){let w=v[f];w&&s(w.id)}u.preventDefault();return;default:return}let b=v[m];b&&s(b.id)},[e,o,s]),p=e.filter(function(u){return u.enabled??!0}).sort(function(u,v){return(u.order??999)-(v.order??999)});return(0,G.jsxs)("div",{"data-dw-right-rail":!0,style:{display:"flex",flexDirection:"row",borderLeft:"1px solid var(--dw-border)",height:"100%"},children:[o&&n&&(0,G.jsx)("div",{"data-dw-rail-panel":!0,role:"complementary","aria-label":p.find(function(u){return u.id===o})?.label??"Panel",style:{width:"280px",overflow:"auto",padding:"var(--dw-padding)",borderRight:"1px solid var(--dw-border)",background:"var(--dw-bg)",color:"var(--dw-text)",fontSize:"12px",fontFamily:"ui-monospace, monospace"},children:n(o)}),(0,G.jsx)("nav",{"data-dw-rail-icons":!0,role:"toolbar","aria-label":"Side panels",onKeyDown:d,style:{display:"flex",flexDirection:"column",width:"40px",background:"var(--dw-bg-secondary)",padding:"4px 0",gap:"2px",alignItems:"center"},children:p.map(function(u){let v=u.id===o;return(0,G.jsxs)("button",{type:"button","aria-label":u.label,"aria-pressed":v,onClick:function(){s(u.id)},style:{width:"32px",height:"32px",display:"flex",alignItems:"center",justifyContent:"center",background:v?"var(--dw-accent-soft)":"transparent",border:"none",borderRadius:"var(--dw-radius)",color:v?"var(--dw-accent)":"var(--dw-text-muted)",cursor:"pointer",fontSize:"14px",position:"relative"},children:[u.icon,(u.badgeCount??0)>0&&(0,G.jsx)("span",{style:{position:"absolute",top:"2px",right:"2px",width:"8px",height:"8px",borderRadius:"50%",background:"var(--dw-accent)",fontSize:"0"},children:u.badgeCount})]},u.id)})})]})}var be=require("react");function Et(e){let{toggleKey:t,enableShortcuts:r,onToggle:n,onEscape:o}=e,i=(0,be.useCallback)(function(d){if(!r||d.repeat||d.target instanceof HTMLInputElement||d.target instanceof HTMLTextAreaElement||d.target instanceof HTMLElement&&d.target.isContentEditable)return;if(d.key==="Escape"){d.preventDefault(),o?o():n();return}(d.key===t||t==="`"&&d.code==="Backquote")&&!d.ctrlKey&&!d.metaKey&&!d.altKey&&(d.preventDefault(),n())},[t,r,n,o]);(0,be.useEffect)(function(){return window.addEventListener("keydown",i,!0),function(){window.removeEventListener("keydown",i,!0)}},[i])}function Ct(){let e=new Map,t=null,r=new Set;function n(){for(let f of r)f()}function o(f,m){e.set(f.id,{category:f,presenter:m}),!t&&(f.enabled??!0)&&(t=f.id),n()}function i(f){e.delete(f),t===f&&(t=p()[0]?.category.id??null),n()}function s(f){e.has(f)&&(t=f,n())}function d(){return t}function p(){return Array.from(e.values()).filter(function(m){return m.category.enabled??!0}).sort(function(m,b){let w=m.category.order??999,c=b.category.order??999;return w!==c?w-c:m.category.label.localeCompare(b.category.label)})}function l(f){return e.get(f)?.presenter??null}function u(f){return r.add(f),function(){r.delete(f)}}function v(f,m){let b=e.get(f);b&&(b.category={...b.category,badgeCount:m},n())}return{register:o,unregister:i,setActive:s,getActive:d,getSorted:p,getPresenter:l,subscribe:u,updateBadge:v}}var D=require("react/jsx-runtime");function Mt(e){return e==="always"?!0:e==="never"||typeof window>"u"||typeof window.matchMedia!="function"?!1:window.matchMedia("(prefers-reduced-motion: reduce)").matches}function Mn({message:e}){return(0,D.jsx)("div",{role:"status","aria-live":"polite","aria-atomic":"true",style:{position:"absolute",width:"1px",height:"1px",overflow:"hidden",clip:"rect(0, 0, 0, 0)",whiteSpace:"nowrap"},children:e})}function An({runtime:e}){let{config:t}=e,{tokens:r,density:n,radius:o}=yt(),[i,s]=(0,I.useState)(!0),[d,p]=(0,I.useState)(!1),[l,u]=(0,I.useState)(""),[v,f]=(0,I.useState)(function(){return Mt(t.accessibility.reducedMotion)}),[,m]=(0,I.useState)(0),b=(0,I.useRef)(0),w=(0,I.useRef)(null),c=(0,I.useMemo)(function(){return Ct()},[]);(0,I.useEffect)(function(){if(t.accessibility.reducedMotion!=="system"){f(Mt(t.accessibility.reducedMotion));return}if(typeof window>"u"||typeof window.matchMedia!="function"){f(!1);return}let T=window.matchMedia("(prefers-reduced-motion: reduce)");f(T.matches);function E(_){f(_.matches)}return T.addEventListener("change",E),function(){T.removeEventListener("change",E)}},[t.accessibility.reducedMotion]),(0,I.useEffect)(function(){let T=e.registry.getCategories();for(let E of T)c.register(E.category,E.presenter)},[e,c]),(0,I.useEffect)(function(){return c.subscribe(function(){m(function(_){return _+1})})},[c]),(0,I.useEffect)(function(){if(!t.accessibility.announceUpdates)return;let T=e.bus.subscribe("performance/drop-detected",function(){b.current+=1,w.current&&clearTimeout(w.current),w.current=setTimeout(function(){let J=b.current;u(`${J} performance drop${J===1?"":"s"} detected in the last few seconds`),b.current=0,w.current=null},2e3)});return function(){T(),w.current&&(clearTimeout(w.current),w.current=null),b.current=0}},[e,t.accessibility.announceUpdates]);let y=(0,I.useCallback)(function(){s(function(E){return!E})},[]),S=(0,I.useCallback)(function(){p(function(E){return!E})},[]),k=(0,I.useCallback)(function(){s(!1)},[]);Et({toggleKey:t.keyboard.toggleKey,enableShortcuts:t.keyboard.enableShortcuts,onToggle:y,onEscape:y,reducedMotion:t.accessibility.reducedMotion});let x=(0,I.useMemo)(function(){return ft(r,o,n)},[r,o,n]);if(!i)return null;let B=c.getSorted(),$=c.getActive();return(0,D.jsxs)("div",{"data-dw-shell":!0,role:"region","aria-label":"Development Widget",style:{display:"flex",flexDirection:"column",background:"var(--dw-bg)",border:"1px solid var(--dw-border)",borderBottom:"none",borderTopLeftRadius:"var(--dw-radius)",borderTopRightRadius:"var(--dw-radius)",boxShadow:"0 -4px 32px rgba(0, 0, 0, 0.2)",overflow:"hidden",zIndex:99999,fontFamily:"ui-monospace, monospace",fontSize:"12px",color:"var(--dw-text)",position:"fixed",bottom:0,left:0,right:0,height:d?"auto":"400px",maxHeight:"100vh",transition:v?"none":"height 0.2s ease-in-out",...x},children:[(0,D.jsx)("style",{children:"[data-dw-shell] button:focus-visible,[data-dw-shell] [role='tab']:focus-visible{outline:2px solid var(--dw-accent);outline-offset:-2px;}[data-dw-shell] *:focus:not(:focus-visible){outline:none;}@media (prefers-reduced-motion: reduce){[data-dw-shell] *{transition:none !important;animation:none !important;}}"}),(0,D.jsx)(bt,{onMinimize:S,onClose:k}),!d&&(0,D.jsxs)(D.Fragment,{children:[(0,D.jsxs)("div",{style:{display:"flex",flex:1,overflow:"hidden"},children:[(0,D.jsxs)("div",{style:{flex:1,display:"flex",flexDirection:"column",overflow:"hidden"},children:[(0,D.jsx)(Tt,{runtime:c}),(0,D.jsx)("div",{style:{flex:1,overflow:"auto"},children:B.map(function(T){let E=T.category.id===$;return(0,D.jsx)(ht,{id:T.category.id,active:E,children:T.presenter.render(e.registry.getDomain(T.category.id)?.getState()??null)},T.category.id)})})]}),t.rightRail.enabled&&t.rightRail.panels.length>0&&(0,D.jsx)(Pt,{panels:t.rightRail.panels,defaultPanel:t.rightRail.defaultPanel,collapsible:t.rightRail.collapsible,children:function(T){let E=e.registry.getDomain(T);if(!E)return(0,D.jsxs)("span",{children:["No content for ",T]});let _=E.serializeDiagnostics?.();return _?(0,D.jsx)("pre",{style:{margin:0,whiteSpace:"pre-wrap",fontSize:"11px"},children:JSON.stringify(_,null,2)}):(0,D.jsx)("span",{children:"No diagnostics"})}})]}),(0,D.jsx)(wt,{toggleKey:t.keyboard.toggleKey})]}),(0,D.jsx)(Mn,{message:l})]})}function At({runtime:e}){let{config:t}=e;return(0,D.jsx)(mt,{mode:t.theme.mode,accent:t.theme.accent,density:t.theme.density,radius:t.theme.radius,children:(0,D.jsx)(An,{runtime:e})})}var It=require("react/jsx-runtime");function Dn(){return typeof process<"u"&&process.env?process.env.NODE_ENV==="development":!0}function Dt(e={}){let{enabled:t=!0,mode:r="development-only"}=e,n=t&&(r==="always"||Dn()),o=(0,ne.useMemo)(function(){return n?ve(e):null},[n]),i=(0,ne.useRef)(!1);return(0,ne.useEffect)(function(){if(!(!o||i.current))return i.current=!0,o.start(),function(){o.stop(),i.current=!1}},[o]),!n||!o?null:(0,It.jsx)(At,{runtime:o})}function zt(){let e=[];async function t(n){e.push(n)}async function r(n){return e.filter(function(i){return!i||typeof i!="object"?!1:Reflect.get(i,"sessionId")===n})}return{appendLog:t,readWindow:r}}function Lt(e){let t=e??zt();async function r(n){try{let i=(await n.json()).events??[];for(let d of i)await t.appendLog(d);let s={success:!0,count:i.length};return new Response(JSON.stringify(s),{status:200,headers:{"Content-Type":"application/json"}})}catch{return new Response(JSON.stringify({success:!1,count:0}),{status:400,headers:{"Content-Type":"application/json"}})}}return{POST:r}}function Ft(){async function e(r){if(typeof window>"u")return;let o=window.__TAURI__;o?.invoke&&await o.invoke("append_perf_log",{entry:r})}async function t(r){if(typeof window>"u")return[];let o=window.__TAURI__;if(!o?.invoke)return[];let i=await o.invoke("read_perf_window",{windowId:r});return Array.isArray(i)?i:[]}return{appendLog:e,readWindow:t}}0&&(module.exports={DEFAULTS,DevWidget,FEATURE_IDS,bootstrap,createBus,createLogHandler,createRegistry,createRuntime,createTauriStorage,resolveConfig,safeRun,safeRunAsync});
|
|
16
|
+
//# sourceMappingURL=index.js.map
|