@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,365 @@
|
|
|
1
|
+
type MonitorRule = {
|
|
2
|
+
id: string;
|
|
3
|
+
type: 'console' | 'network';
|
|
4
|
+
match: string;
|
|
5
|
+
enabled: boolean;
|
|
6
|
+
};
|
|
7
|
+
type HeaderPair = {
|
|
8
|
+
name: string;
|
|
9
|
+
value: string;
|
|
10
|
+
};
|
|
11
|
+
type BodyInfo = {
|
|
12
|
+
text: string | null;
|
|
13
|
+
size: number;
|
|
14
|
+
truncated: boolean;
|
|
15
|
+
contentType: string | null;
|
|
16
|
+
};
|
|
17
|
+
type ConsoleDetails = {
|
|
18
|
+
type: 'console';
|
|
19
|
+
level: 'log' | 'warn' | 'error';
|
|
20
|
+
args: ReadonlyArray<unknown>;
|
|
21
|
+
};
|
|
22
|
+
type NetworkDetails = {
|
|
23
|
+
type: 'network';
|
|
24
|
+
request: {
|
|
25
|
+
method: string;
|
|
26
|
+
url: string;
|
|
27
|
+
headers: ReadonlyArray<HeaderPair>;
|
|
28
|
+
body?: BodyInfo;
|
|
29
|
+
};
|
|
30
|
+
response?: {
|
|
31
|
+
status: number;
|
|
32
|
+
statusText: string;
|
|
33
|
+
ok: boolean;
|
|
34
|
+
headers: ReadonlyArray<HeaderPair>;
|
|
35
|
+
body?: BodyInfo;
|
|
36
|
+
};
|
|
37
|
+
durationMs: number;
|
|
38
|
+
error?: string;
|
|
39
|
+
};
|
|
40
|
+
type MonitorDetails = ConsoleDetails | NetworkDetails;
|
|
41
|
+
type MonitorMatch = {
|
|
42
|
+
id: string;
|
|
43
|
+
ruleId: string;
|
|
44
|
+
timestamp: number;
|
|
45
|
+
content: string;
|
|
46
|
+
details?: MonitorDetails;
|
|
47
|
+
};
|
|
48
|
+
type MonitorState = {
|
|
49
|
+
rules: ReadonlyArray<MonitorRule>;
|
|
50
|
+
matches: ReadonlyArray<MonitorMatch>;
|
|
51
|
+
isListening: boolean;
|
|
52
|
+
};
|
|
53
|
+
|
|
54
|
+
type AuthState = {
|
|
55
|
+
provider: string;
|
|
56
|
+
authenticated: boolean;
|
|
57
|
+
confidence: AuthConfidence;
|
|
58
|
+
session: AuthSession | null;
|
|
59
|
+
error: string | null;
|
|
60
|
+
};
|
|
61
|
+
type RouteEntry = {
|
|
62
|
+
path: string;
|
|
63
|
+
sourceFile: string;
|
|
64
|
+
isDynamic: boolean;
|
|
65
|
+
group?: string;
|
|
66
|
+
};
|
|
67
|
+
type LinkEntry = {
|
|
68
|
+
target: string;
|
|
69
|
+
sourceFile: string;
|
|
70
|
+
sourceType: 'next-link' | 'router-push' | 'anchor' | 'markdown';
|
|
71
|
+
};
|
|
72
|
+
type LinkDiagnostic = 'missing-route-target' | 'dynamic-route-unresolved' | 'relative-link-ambiguity' | 'external-link-without-rel';
|
|
73
|
+
type RoutesState = {
|
|
74
|
+
routes: ReadonlyArray<RouteEntry>;
|
|
75
|
+
loading: boolean;
|
|
76
|
+
error: string | null;
|
|
77
|
+
};
|
|
78
|
+
type LinksState = {
|
|
79
|
+
links: ReadonlyArray<LinkEntry>;
|
|
80
|
+
diagnostics: ReadonlyArray<{
|
|
81
|
+
link: LinkEntry;
|
|
82
|
+
issue: LinkDiagnostic;
|
|
83
|
+
}>;
|
|
84
|
+
loading: boolean;
|
|
85
|
+
};
|
|
86
|
+
type PerfState = {
|
|
87
|
+
fps: number;
|
|
88
|
+
isScrolling: boolean;
|
|
89
|
+
scrollFps: number;
|
|
90
|
+
events: ReadonlyArray<PerfEvent>;
|
|
91
|
+
hourlyCount: number;
|
|
92
|
+
analysisRunning: boolean;
|
|
93
|
+
lastReport: string | null;
|
|
94
|
+
};
|
|
95
|
+
type SystemState = {
|
|
96
|
+
userAgent: string;
|
|
97
|
+
env: string;
|
|
98
|
+
viewport: {
|
|
99
|
+
w: number;
|
|
100
|
+
h: number;
|
|
101
|
+
};
|
|
102
|
+
hydrationErrors: ReadonlyArray<{
|
|
103
|
+
id: string;
|
|
104
|
+
message: string;
|
|
105
|
+
serverContent: string | null;
|
|
106
|
+
clientContent: string | null;
|
|
107
|
+
componentStack: string | null;
|
|
108
|
+
timestamp: number;
|
|
109
|
+
}>;
|
|
110
|
+
};
|
|
111
|
+
type StateMap = {
|
|
112
|
+
auth: AuthState;
|
|
113
|
+
routes: RoutesState;
|
|
114
|
+
performance: PerfState;
|
|
115
|
+
system: SystemState;
|
|
116
|
+
links: LinksState;
|
|
117
|
+
monitor: MonitorState;
|
|
118
|
+
};
|
|
119
|
+
type EventMap = {
|
|
120
|
+
'auth/state-changed': {
|
|
121
|
+
provider: string;
|
|
122
|
+
authenticated: boolean;
|
|
123
|
+
};
|
|
124
|
+
'auth/sign-out': Record<string, never>;
|
|
125
|
+
'routes/discovered': {
|
|
126
|
+
count: number;
|
|
127
|
+
routes: ReadonlyArray<RouteEntry>;
|
|
128
|
+
};
|
|
129
|
+
'links/validated': {
|
|
130
|
+
total: number;
|
|
131
|
+
broken: number;
|
|
132
|
+
};
|
|
133
|
+
'performance/drop-detected': {
|
|
134
|
+
fps: number;
|
|
135
|
+
reasons: string[];
|
|
136
|
+
};
|
|
137
|
+
'performance/analysis-complete': {
|
|
138
|
+
reportId: string;
|
|
139
|
+
};
|
|
140
|
+
'system/updated': {
|
|
141
|
+
key: string;
|
|
142
|
+
};
|
|
143
|
+
};
|
|
144
|
+
type EventName = keyof EventMap;
|
|
145
|
+
type EventListener<K extends EventName> = (payload: EventMap[K]) => void;
|
|
146
|
+
type WidgetDomain<TState, TConfig> = {
|
|
147
|
+
id: FeatureId;
|
|
148
|
+
setup(config: TConfig): void | Promise<void>;
|
|
149
|
+
start(): void | Promise<void>;
|
|
150
|
+
stop(): void | Promise<void>;
|
|
151
|
+
getState(): TState;
|
|
152
|
+
subscribe(listener: (state: TState) => void): () => void;
|
|
153
|
+
serializeDiagnostics?(): Record<string, unknown>;
|
|
154
|
+
runHealthCheck?(): boolean;
|
|
155
|
+
reset?(): void;
|
|
156
|
+
};
|
|
157
|
+
type TabCategory = {
|
|
158
|
+
id: string;
|
|
159
|
+
label: string;
|
|
160
|
+
icon?: string;
|
|
161
|
+
order?: number;
|
|
162
|
+
group?: string;
|
|
163
|
+
enabled?: boolean;
|
|
164
|
+
badgeCount?: number;
|
|
165
|
+
};
|
|
166
|
+
type TabPresenter<TState = unknown> = {
|
|
167
|
+
render: (state: TState) => React.ReactNode;
|
|
168
|
+
getAriaLabel?: (state: TState) => string;
|
|
169
|
+
};
|
|
170
|
+
type PluginContext = {
|
|
171
|
+
registerDomain(domain: WidgetDomain<unknown, unknown>): void;
|
|
172
|
+
registerCategory(category: TabCategory, presenter: TabPresenter): void;
|
|
173
|
+
onEvent<K extends EventName>(event: K, listener: EventListener<K>): () => void;
|
|
174
|
+
};
|
|
175
|
+
type WidgetPlugin = {
|
|
176
|
+
id: string;
|
|
177
|
+
version: string;
|
|
178
|
+
register(ctx: PluginContext): void | Promise<void>;
|
|
179
|
+
};
|
|
180
|
+
type ResolvedConfig = {
|
|
181
|
+
enabled: boolean;
|
|
182
|
+
mode: 'development-only' | 'always';
|
|
183
|
+
theme: Required<ThemeConfig>;
|
|
184
|
+
features: Record<FeatureId, {
|
|
185
|
+
enabled: boolean;
|
|
186
|
+
} & Record<string, unknown>>;
|
|
187
|
+
keyboard: Required<KeyboardConfig>;
|
|
188
|
+
accessibility: Required<A11yConfig>;
|
|
189
|
+
rightRail: Required<Omit<RailConfig, 'panels'>> & {
|
|
190
|
+
panels: PanelConfig[];
|
|
191
|
+
};
|
|
192
|
+
};
|
|
193
|
+
|
|
194
|
+
declare const FEATURE_IDS: readonly ["auth", "routes", "performance", "system", "links", "monitor"];
|
|
195
|
+
type FeatureId = (typeof FEATURE_IDS)[number];
|
|
196
|
+
type FeatureBase = {
|
|
197
|
+
enabled?: boolean;
|
|
198
|
+
};
|
|
199
|
+
type AuthOptions = FeatureBase & {
|
|
200
|
+
provider?: 'better-auth' | 'cookie' | 'jwt' | 'custom';
|
|
201
|
+
};
|
|
202
|
+
type RoutesOptions = FeatureBase & {
|
|
203
|
+
appRoot?: string;
|
|
204
|
+
endpoint?: string;
|
|
205
|
+
includeApiRoutes?: boolean;
|
|
206
|
+
includeDynamic?: boolean;
|
|
207
|
+
};
|
|
208
|
+
type PerfOptions = FeatureBase & {
|
|
209
|
+
fpsThreshold?: number;
|
|
210
|
+
hourlyIssueThreshold?: number;
|
|
211
|
+
captureReactCommits?: boolean;
|
|
212
|
+
captureLongTasks?: boolean;
|
|
213
|
+
};
|
|
214
|
+
type SystemOptions = FeatureBase & {
|
|
215
|
+
includeUserAgent?: boolean;
|
|
216
|
+
includeEnv?: boolean;
|
|
217
|
+
};
|
|
218
|
+
type LinksOptions = FeatureBase & {
|
|
219
|
+
includeExternal?: boolean;
|
|
220
|
+
validateInternal?: boolean;
|
|
221
|
+
extractLinks?: () => Promise<LinkEntry[]>;
|
|
222
|
+
};
|
|
223
|
+
type MonitorOptions = FeatureBase & {};
|
|
224
|
+
type FeatureMap = {
|
|
225
|
+
auth: AuthOptions;
|
|
226
|
+
routes: RoutesOptions;
|
|
227
|
+
performance: PerfOptions;
|
|
228
|
+
system: SystemOptions;
|
|
229
|
+
links: LinksOptions;
|
|
230
|
+
monitor: MonitorOptions;
|
|
231
|
+
};
|
|
232
|
+
type FeatureConfig = {
|
|
233
|
+
[K in keyof FeatureMap]?: boolean | FeatureMap[K];
|
|
234
|
+
};
|
|
235
|
+
|
|
236
|
+
type ThemeMode = 'system' | 'light' | 'dark';
|
|
237
|
+
type Density = 'compact' | 'comfortable';
|
|
238
|
+
type RadiusScale = 'none' | 'sm' | 'md' | 'lg';
|
|
239
|
+
type AuthConfidence = 'confirmed' | 'inferred' | 'unknown';
|
|
240
|
+
type Severity = 'low' | 'medium' | 'high';
|
|
241
|
+
type ThemeConfig = {
|
|
242
|
+
mode?: ThemeMode;
|
|
243
|
+
accent?: string;
|
|
244
|
+
density?: Density;
|
|
245
|
+
radius?: RadiusScale;
|
|
246
|
+
};
|
|
247
|
+
type AuthConfig = {
|
|
248
|
+
provider: 'better-auth' | 'cookie' | 'jwt' | 'custom';
|
|
249
|
+
options?: Record<string, unknown>;
|
|
250
|
+
customProvider?: AuthProvider;
|
|
251
|
+
};
|
|
252
|
+
type AuthSession = {
|
|
253
|
+
userId: string;
|
|
254
|
+
email?: string;
|
|
255
|
+
role?: string;
|
|
256
|
+
image?: string;
|
|
257
|
+
expiresAt?: string;
|
|
258
|
+
};
|
|
259
|
+
type AuthProvider = {
|
|
260
|
+
id: string;
|
|
261
|
+
getSession(): Promise<AuthSession | null>;
|
|
262
|
+
signOut?(): Promise<void>;
|
|
263
|
+
purge?(): Promise<void>;
|
|
264
|
+
};
|
|
265
|
+
type StorageProvider = {
|
|
266
|
+
appendLog(entry: unknown): Promise<void>;
|
|
267
|
+
readWindow(windowId: string): Promise<unknown[]>;
|
|
268
|
+
};
|
|
269
|
+
type AnalysisInput = {
|
|
270
|
+
events: ReadonlyArray<PerfEvent>;
|
|
271
|
+
route?: string;
|
|
272
|
+
suspects?: ReadonlyArray<string>;
|
|
273
|
+
};
|
|
274
|
+
type AnalysisOutput = {
|
|
275
|
+
summary: string;
|
|
276
|
+
hotspots: ReadonlyArray<string>;
|
|
277
|
+
suggestions: ReadonlyArray<string>;
|
|
278
|
+
confidence: number;
|
|
279
|
+
};
|
|
280
|
+
type AiProvider = {
|
|
281
|
+
analyze(input: AnalysisInput): Promise<AnalysisOutput>;
|
|
282
|
+
};
|
|
283
|
+
type StorageConfig = {
|
|
284
|
+
type: 'jsonl' | 'sqlite' | 'external';
|
|
285
|
+
options?: Record<string, unknown>;
|
|
286
|
+
};
|
|
287
|
+
type AiConfig = {
|
|
288
|
+
provider: 'rules' | 'openai' | 'local' | 'custom';
|
|
289
|
+
model?: string;
|
|
290
|
+
maxTokens?: number;
|
|
291
|
+
enableRedaction?: boolean;
|
|
292
|
+
customProvider?: AiProvider;
|
|
293
|
+
};
|
|
294
|
+
type KeyboardConfig = {
|
|
295
|
+
toggleKey?: string;
|
|
296
|
+
enableShortcuts?: boolean;
|
|
297
|
+
};
|
|
298
|
+
type A11yConfig = {
|
|
299
|
+
reducedMotion?: 'system' | 'always' | 'never';
|
|
300
|
+
announceUpdates?: boolean;
|
|
301
|
+
};
|
|
302
|
+
type PanelConfig = {
|
|
303
|
+
id: string;
|
|
304
|
+
label: string;
|
|
305
|
+
icon: string;
|
|
306
|
+
enabled?: boolean;
|
|
307
|
+
order?: number;
|
|
308
|
+
badgeCount?: number;
|
|
309
|
+
};
|
|
310
|
+
type RailConfig = {
|
|
311
|
+
enabled?: boolean;
|
|
312
|
+
defaultPanel?: string | null;
|
|
313
|
+
panels?: PanelConfig[];
|
|
314
|
+
collapsible?: boolean;
|
|
315
|
+
};
|
|
316
|
+
type EventType = 'fps_drop' | 'long_task' | 'react_commit_burst' | 'dom_mutation_burst' | 'scroll_pressure' | 'route_transition_slow' | 'hydration_warning';
|
|
317
|
+
type PerfMetrics = {
|
|
318
|
+
fps?: number;
|
|
319
|
+
frameWindowMs?: number;
|
|
320
|
+
longTaskDurationMs?: number;
|
|
321
|
+
commitCount?: number;
|
|
322
|
+
mutationCount?: number;
|
|
323
|
+
scrollEventCount?: number;
|
|
324
|
+
};
|
|
325
|
+
type PerfSuspects = {
|
|
326
|
+
components?: string[];
|
|
327
|
+
files?: string[];
|
|
328
|
+
};
|
|
329
|
+
type PerfContext = {
|
|
330
|
+
userAgent?: string;
|
|
331
|
+
viewport?: {
|
|
332
|
+
w: number;
|
|
333
|
+
h: number;
|
|
334
|
+
};
|
|
335
|
+
branch?: string;
|
|
336
|
+
commitSha?: string;
|
|
337
|
+
};
|
|
338
|
+
type PerfEvent = {
|
|
339
|
+
id: string;
|
|
340
|
+
timestamp: string;
|
|
341
|
+
sessionId: string;
|
|
342
|
+
route: string;
|
|
343
|
+
eventType: EventType;
|
|
344
|
+
severity: Severity;
|
|
345
|
+
metrics: PerfMetrics;
|
|
346
|
+
suspects?: PerfSuspects;
|
|
347
|
+
context: PerfContext;
|
|
348
|
+
};
|
|
349
|
+
type WidgetProps = {
|
|
350
|
+
enabled?: boolean;
|
|
351
|
+
mode?: 'development-only' | 'always';
|
|
352
|
+
theme?: ThemeConfig;
|
|
353
|
+
features?: FeatureConfig;
|
|
354
|
+
disable?: FeatureId[];
|
|
355
|
+
providers?: {
|
|
356
|
+
auth?: AuthConfig;
|
|
357
|
+
ai?: AiConfig;
|
|
358
|
+
storage?: StorageConfig;
|
|
359
|
+
};
|
|
360
|
+
keyboard?: KeyboardConfig;
|
|
361
|
+
accessibility?: A11yConfig;
|
|
362
|
+
rightRail?: RailConfig;
|
|
363
|
+
};
|
|
364
|
+
|
|
365
|
+
export { type A11yConfig as A, type EventListener as B, type WidgetDomain as C, type Density as D, type EventType as E, FEATURE_IDS as F, type StateMap as G, type TabCategory as H, type TabPresenter as I, type WidgetPlugin as J, type KeyboardConfig as K, type LinksOptions as L, type AuthState as M, type LinkEntry as N, type LinksState as O, type PanelConfig as P, type PerfState as Q, type ResolvedConfig as R, type StorageProvider as S, type ThemeConfig as T, type PluginContext as U, type RouteEntry as V, type WidgetProps as W, type RoutesState as X, type SystemState as Y, type AiConfig as a, type AiProvider as b, type AnalysisInput as c, type AnalysisOutput as d, type AuthConfidence as e, type AuthConfig as f, type AuthOptions as g, type AuthProvider as h, type AuthSession as i, type FeatureConfig as j, type FeatureId as k, type FeatureMap as l, type PerfContext as m, type PerfEvent as n, type PerfMetrics as o, type PerfOptions as p, type PerfSuspects as q, type RadiusScale as r, type RailConfig as s, type RoutesOptions as t, type Severity as u, type StorageConfig as v, type SystemOptions as w, type ThemeMode as x, type EventName as y, type EventMap as z };
|
package/dist/react.d.mts
ADDED
package/dist/react.d.ts
ADDED
package/dist/react.js
ADDED
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
"use strict";var Lt=Object.create;var de=Object.defineProperty;var Ft=Object.getOwnPropertyDescriptor;var Bt=Object.getOwnPropertyNames;var Ot=Object.getPrototypeOf,Nt=Object.prototype.hasOwnProperty;var Wt=(e,t)=>{for(var r in t)de(e,r,{get:t[r],enumerable:!0})},Se=(e,t,r,n)=>{if(t&&typeof t=="object"||typeof t=="function")for(let o of Bt(t))!Nt.call(e,o)&&o!==r&&de(e,o,{get:()=>t[o],enumerable:!(n=Ft(t,o))||n.enumerable});return e};var $t=(e,t,r)=>(r=e!=null?Lt(Ot(e)):{},Se(t||!e||!e.__esModule?de(r,"default",{value:e,enumerable:!0}):r,e)),Ht=e=>Se(de({},"__esModule",{value:!0}),e);var Cn={};Wt(Cn,{DevWidget:()=>At});module.exports=Ht(Cn);var ee=require("react");var ue=["auth","routes","performance","system","links","monitor"];function ke(e){try{return e()}catch{return}}async function te(e){try{return await e()}catch{return}}function Te(){let e={listeners:new Map};function t(o,i){let s=e.listeners.get(o);if(s)for(let u of s)ke(function(){u(i)})}function r(o,i){let s=e.listeners.get(o);s||(s=new Set,e.listeners.set(o,s)),s.add(i);let u=s;return function(){u.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 u(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 d(){return Array.from(t.values()).sort(function(b,h){let c=b.category.order??999,y=h.category.order??999;return c!==y?c-y:b.category.label.localeCompare(h.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:u,registerCategory:p,unregisterCategory:l,getCategories:d,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 Ee(e){let t=new Set(e.disable??[]),r={};for(let n of ue){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 Me(e){let t=Ee(e),r=Te(),n=Pe(),o=!1;function i(){return{registerDomain(l){n.registerDomain(l)},registerCategory(l,d){n.registerCategory(l,d)},onEvent(l,d){return r.subscribe(l,d)}}}async function s(){if(o)return;let l=ue.filter(function(v){return t.features[v]?.enabled!==!1});for(let d of l){let v=n.getDomain(d);v&&await te(async function(){await v.setup(t.features[d]??{})})}for(let d of l){let v=n.getDomain(d);v&&(await te(async function(){await v.start()}),n.markStarted(d))}o=!0}async function u(){if(!o)return;let l=n.listDomains().reverse();for(let d of l){if(!n.isStarted(d))continue;let v=n.getDomain(d);v&&await te(async function(){await v.stop()})}r.clear(),o=!1}async function p(l){let d=i();await te(async function(){await l.register(d)})}return{config:t,bus:r,registry:n,start:s,stop:u,registerPlugin:p}}function Ce(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,u=i.session;if(!s||!u)return null;let p={userId:String(s.id??"")},l=s.email;typeof l=="string"&&(p.email=l);let d=s.role;typeof d=="string"&&(p.role=d);let v=s.image;typeof v=="string"&&(p.image=v);let f=u.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,u]=i.trim().split("=");return s&&(o[s]=u??""),o},{});return t.session??t["auth-token"]??t.__session?{userId:"inferred"}:null}return{id:"cookie",getSession:e}}function Ae(){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 d=l.trim();if(d.startsWith("token=")||d.startsWith("jwt=")){n=d.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 u=o.role;typeof u=="string"&&(i.role=u);let p=o.exp;return typeof p=="number"&&(i.expiresAt=new Date(p*1e3).toISOString()),i}return{id:"jwt",getSession:t}}function Kt(e){if(e?.customProvider)return e.customProvider;switch(e?.provider){case"cookie":return De();case"jwt":return Ae();default:return Ce(e?.options)}}function Ie(e,t){let r,n={provider:"unknown",authenticated:!1,confidence:"unknown",session:null,error:null},o=new Set,i=null,s=null;function u(){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},u(),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"},u()}}function l(c){r=Kt(t),n={...n,provider:r.id}}async function d(){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 h(){return n.error===null}return{id:"auth",setup:l,start:d,stop:v,getState:f,subscribe:m,serializeDiagnostics:b,runHealthCheck:h,signOut:async()=>{e.publish("auth/sign-out",{})}}}function ze(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 d=Math.round(t*1e3/l);e(d),t=0,r=p}n=requestAnimationFrame(i)}function s(){o||(o=!0,t=0,r=0,n=requestAnimationFrame(i))}function u(){o=!1,n!==null&&(cancelAnimationFrame(n),n=null)}return{start:s,stop:u}}function Le(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 d=i();return d.slice(Math.max(0,d.length-l))}function u(){return n}function p(){r=0,n=0}return{push:o,getAll:i,getRecent:s,count:u,clear:p}}function Fe(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 u(){n&&(clearInterval(n),n=null),o()}return{add:i,flush:o,start:s,stop:u}}var _t={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 qt(e,t){let r=t??_t,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 qt(e,r)>=t}function Oe(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 Ne(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(u){return u.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 Y(e){return typeof e=="object"&&e!==null}function Ut(e){return typeof e=="function"}function Vt(e){return Y(e)}function Xt(e){return Y(e)}function jt(){let t=globalThis.__REACT_DEVTOOLS_GLOBAL_HOOK__;return Vt(t)?t:null}function $e(e){return typeof e=="number"&&Number.isFinite(e)?e:0}function Gt(e){let t=e[0];return t?t.toUpperCase()===t:!1}function We(e){if(typeof e=="function"){let t=e;return t.displayName??t.name??null}if(typeof e=="string")return Gt(e)?e:null;if(Y(e)){let t=e.displayName;if(typeof t=="string"&&t.length>0)return t}return null}function Jt(e){let t=We(e.elementType)??We(e.type);if(t)return t;if(Y(e.stateNode)){let r=e.stateNode.constructor;if(Y(r)){let n=r.name;if(typeof n=="string"&&n.length>0)return n}}return null}function we(e,t){if(!e)return;let r=$e(e.actualDuration),n=Jt(e);n&&r>0&&t.push({name:n,duration:r}),e.child&&we(e.child,t),e.sibling&&we(e.sibling,t)}function Yt(e,t){let r=e.sort(function(s,u){return u.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 Qt(e){if(!Y(e))return null;let t=e.current;if(!Xt(t))return null;let r=t,n=$e(r.actualDuration),o=[];we(r,o);let i=Yt(o,5);return{duration:n,components:i}}function He(e){let t=jt();if(!t)return null;let r=t.onCommitFiberRoot;function n(o,i,s){try{let u=Qt(i);u&&e(u)}catch{}Ut(r)&&r(o,i,s)}return t.onCommitFiberRoot=n,function(){t.onCommitFiberRoot=r}}var Zt=0;function en(){return`perf-${Date.now()}-${Zt++}`}function tn(){return`sess-${Date.now()}-${Math.random().toString(36).slice(2,8)}`}var nn=new Set(["DevWidget","Shell","ThemeProvider","Panel","Header","Footer","TabsView","RightRail","AuthTab","PerfTab","RoutesTab","MonitorTab"]),rn=new Set(["App","Root","Layout","Page","Provider"]);function on(e){let t=[];for(let r of e)nn.has(r)||t.push(r);return t}function sn(e){let t=[];for(let r of e)rn.has(r)||t.push(r);return t}function an(e){let t=on(e),r=sn(t);return r.length>0?r.slice(0,5):t.slice(0,5)}function Ke(e,t){let r=tn(),n=Le(500),o=Fe(async function(){},3e4),i={},s={fps:60,isScrolling:!1,scrollFps:60,events:[],hourlyCount:0,analysisRunning:!1,lastReport:null},u=new Set,p=null,l=null,d=null,v=null,f=null,m=null,b=[],h=0;function c(){for(let R of u)R(s)}function y(R,D){return R<D*.5?"high":R<D*.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,D,W,L){let F={id:en(),timestamp:new Date().toISOString(),sessionId:r,route:S(),eventType:R,severity:D,metrics:W,context:k()};return L&&(F.suspects=L),F}let H=ze(function(D){let W={...s,fps:D};if(s.isScrolling){let F=s.scrollFps,q=Math.round(F*.7+D*.3);W={...W,scrollFps:q}}s=W,c();let L=i.fpsThreshold??50;if(D<L){let F=y(D,L);x(B("fps_drop",F,{fps:D}))}});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(D){for(let W of D.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 K(){if(typeof MutationObserver>"u"||typeof document>"u")return;let R=0,D=null;l=new MutationObserver(function(L){R+=L.length,!D&&(D=setTimeout(function(){if(R>50){let q=R>200?"high":R>100?"medium":"low";x(B("dom_mutation_burst",q,{mutationCount:R}))}R=0,D=null},1e3))}),l.observe(document.body,{childList:!0,subtree:!0,attributes:!0})}function G(R){if(R.duration<16)return;let W=R.duration>80?"high":R.duration>40?"medium":"low",L=an(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-h>5e3&&(h=q,x(B("react_commit_burst","high",{commitCount:b.length},F)))}async function fe(){let R=i.hourlyIssueThreshold??5,D=n.getAll();if(Be(D,R*3)){s={...s,analysisRunning:!0},c();try{let W=Oe(D),L;t?L=await t.analyze(W):L=Ne(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 ge(R){i=R}async function me(){H.start(),E(),K(),T=z()||null,o.start(),(i.captureReactCommits??!0)&&(m=He(G)),d=setInterval(function(){s={...s,hourlyCount:0},c()},36e5),v=setInterval(fe,6e4)}function ye(){H.stop(),o.stop(),p&&(p.disconnect(),p=null),l&&(l.disconnect(),l=null),d&&(clearInterval(d),d=null),v&&(clearInterval(v),v=null),T&&(T(),T=null),m&&(m(),m=null)}function ve(){return s}function be(R){return u.add(R),function(){u.delete(R)}}function ie(){return{fps:s.fps,totalEvents:n.count(),hourlyCount:s.hourlyCount,analysisRunning:s.analysisRunning,lastReport:s.lastReport}}function se(){return s.fps>0}function ae(){n.clear(),b.length=0,s={fps:60,isScrolling:!1,scrollFps:60,events:[],hourlyCount:0,analysisRunning:!1,lastReport:null},c()}return{id:"performance",setup:ge,start:me,stop:ye,getState:ve,subscribe:be,serializeDiagnostics:ie,runHealthCheck:se,reset:ae}}var _e="/api/dev-widget/routes";function qe(e){let t={routes:[],loading:!1,error:null},r=new Set,n=_e,o=!1;function i(){for(let f of r)f(t)}function s(f){n=f.endpoint??_e,o=f.includeApiRoutes??!1,t={...t,loading:!0},i()}async function u(){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 h=b.routes??[];t={routes:h,loading:!1,error:null},i(),e.publish("routes/discovered",{count:h.length,routes:h})}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 d(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:u,stop:p,getState:l,subscribe:d,serializeDiagnostics:v}}function Ue(e){if(e){if(e.provider==="custom")return e.customProvider;e.provider}}var le=require("react"),P=require("react/jsx-runtime");function Ve({domain:e}){let[t,r]=(0,le.useState)(e.getState());(0,le.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 _=require("react"),w=require("react/jsx-runtime");function dn(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 un(e){return e==="App"||e==="Root"||e==="Layout"||e==="Page"||e==="Provider"}function ln(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 je(e){return e==="high"?"var(--dw-danger)":e==="medium"?"var(--dw-warning)":"var(--dw-success)"}function cn(e){return e.toLowerCase().replace(/[^a-z0-9_-]/g,"")}function pn(e){return e.replace(/([a-z0-9])([A-Z])/g,"$1-$2").replace(/[^a-zA-Z0-9-]/g,"").toLowerCase()}function fn(e){if(typeof document>"u")return[];let t=cn(e),r=pn(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 u of s)u instanceof HTMLElement&&o.add(u)}catch{}return Array.from(o).slice(0,6)}function Ge({domain:e}){let[t,r]=(0,_.useState)(e.getState()),[n,o]=(0,_.useState)(null),[i,s]=(0,_.useState)(null),[u,p]=(0,_.useState)(null);(0,_.useEffect)(function(){return e.subscribe(r)},[e]);let l=(0,_.useMemo)(function(){return t.events.slice(-12).reverse()},[t.events]);(0,_.useEffect)(function(){if(!n)return;l.some(function(k){return k.id===n})||o(l[0]?.id??null)},[n,l]);let d=(0,_.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=fn(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=d?ln(d):null,b=d?Xe(d):[],h=b.some(function(y){return!un(y)});return(0,w.jsxs)("div",{role:"region","aria-label":"Performance monitor",style:{display:"flex",flexDirection:"column",gap:"12px"},children:[(0,w.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,w.jsxs)("div",{style:{display:"flex",alignItems:"baseline",gap:"8px"},children:[(0,w.jsxs)("span",{"data-dw-metric":"fps",style:{color:f,fontWeight:"bold"},children:[t.fps," FPS"]}),(0,w.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,w.jsxs)("span",{"data-dw-label":"events",style:{color:"var(--dw-text-muted)"},children:[t.hourlyCount," events/hr"]}),t.analysisRunning&&(0,w.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,w.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,w.jsx)("h4",{style:{margin:"0 0 4px 0",fontSize:"11px",color:"var(--dw-text-muted)",textTransform:"uppercase"},children:"Latest Analysis"}),(0,w.jsx)("p",{style:{margin:0},children:t.lastReport})]}),d&&m&&(0,w.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 ${je(d.severity)}`},children:[(0,w.jsx)("h4",{style:{margin:0,fontSize:"11px",textTransform:"uppercase"},children:"Issue Guide"}),(0,w.jsxs)("div",{style:{display:"grid",gap:"2px"},children:[(0,w.jsx)("span",{style:{fontSize:"10px",color:"var(--dw-text-muted)"},children:"What"}),(0,w.jsx)("span",{style:{fontSize:"11px"},children:m.what})]}),(0,w.jsxs)("div",{style:{display:"grid",gap:"2px"},children:[(0,w.jsx)("span",{style:{fontSize:"10px",color:"var(--dw-text-muted)"},children:"Where"}),(0,w.jsx)("span",{style:{fontSize:"11px"},children:m.where})]}),(0,w.jsxs)("div",{style:{display:"grid",gap:"2px"},children:[(0,w.jsx)("span",{style:{fontSize:"10px",color:"var(--dw-text-muted)"},children:"How to fix"}),(0,w.jsx)("span",{style:{fontSize:"11px"},children:m.fix})]}),b.length>0&&(0,w.jsxs)("div",{style:{display:"grid",gap:"4px"},children:[(0,w.jsx)("span",{style:{fontSize:"10px",color:"var(--dw-text-muted)"},children:"Suspect components"}),(0,w.jsx)("div",{style:{display:"flex",gap:"6px",flexWrap:"wrap"},children:b.map(function(y){let S=i===y;return(0,w.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,w.jsx)("span",{style:{fontSize:"10px",color:"var(--dw-text-muted)"},children:h?"Click a suspect to highlight likely DOM nodes.":"Only generic names detected. Add data-component on app nodes for precise mapping."}),u&&(0,w.jsx)("span",{style:{fontSize:"10px",color:"var(--dw-text-muted)"},children:u})]})]}),(0,w.jsxs)("div",{"data-dw-section":"perf-events",style:{display:"flex",flexDirection:"column",gap:"8px"},children:[(0,w.jsxs)("h4",{style:{margin:0,fontSize:"11px",color:"var(--dw-text-muted)",textTransform:"uppercase"},children:["Recent Events (",l.length,")"]}),l.length===0?(0,w.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,w.jsx)("p",{style:{margin:0},children:"No performance issues detected"}),(0,w.jsx)("p",{style:{margin:0,fontSize:"10px",opacity:.8},children:"Events appear when thresholds are crossed"})]}):(0,w.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=dn(y),k=Xe(y),x=d?.id===y.id;return(0,w.jsx)("li",{children:(0,w.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 ${je(y.severity)}`,textAlign:"left",cursor:"pointer",width:"100%"},children:[(0,w.jsxs)("div",{style:{display:"flex",flexDirection:"column",gap:"2px"},children:[(0,w.jsxs)("div",{style:{display:"flex",alignItems:"center",gap:"8px"},children:[(0,w.jsx)("span",{"data-dw-label":"type",style:{fontWeight:500},children:y.eventType}),(0,w.jsx)("span",{"data-dw-label":"route",style:{fontSize:"10px",color:"var(--dw-text-muted)"},children:y.route})]}),S&&(0,w.jsx)("span",{style:{fontSize:"10px",color:"var(--dw-text-muted)"},children:S}),k.length>0&&(0,w.jsxs)("span",{style:{fontSize:"10px",color:"var(--dw-text-muted)"},children:["Suspects: ",k.join(", ")]})]}),(0,w.jsx)("time",{dateTime:y.timestamp,style:{fontSize:"10px",color:"var(--dw-text-muted)"},children:new Date(y.timestamp).toLocaleTimeString()})]})},y.id)})})]})]})}var ce=require("react"),N=require("react/jsx-runtime");function Je({domain:e}){let[t,r]=(0,ce.useState)(e.getState());if((0,ce.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 Ye(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 et(e){return e?e.includes("application/json")||e.includes("text/")||e.includes("application/javascript"):!1}function Qe(e){let t=[];return e.forEach(function(n,o){t.push({name:o,value:n})}),t}function Q(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 gn(e,t){let r=e.headers.get("content-type");if(et(r))try{let n=await e.text();return Q(n,r,t)}catch{return}}async function mn(e,t){let r=e.headers.get("content-type");if(et(r))try{let n=await e.text();return Q(n,r,t)}catch{return}}function yn(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 xe(e){return e.__dwInfo??null}function vn(e,t){let r=e;r.__dwInfo=t}function bn(e,t,r){if(t!=null){if(typeof t=="string"){e.body=Q(t,null,r);return}if(t instanceof URLSearchParams){e.body=Q(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=Q(n.join("&"),"multipart/form-data",r)}}}function Re(e,t,r,n){return n?{url:e,method:t,headers:r,body:n}:{url:e,method:t,headers:r}}function Ze(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 tt(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,u=async function(...p){let l=performance.now(),d=null,v=[],f;try{d=new Request(p[0],p[1]),v=Qe(d.headers);let m=d.clone();f=await mn(m,s)}catch{}try{let m=await t(...p),b=Math.round(performance.now()-l),h=Qe(m.headers),c;try{let y=m.clone();c=await gn(y,s)}catch{}return e({request:Re(d?.url??String(p[0]),d?.method??"GET",v,f),response:Ze(m.status,m.statusText,m.ok,h,c),durationMs:b}),m}catch(m){let b=Math.round(performance.now()-l),h={request:Re(d?.url??String(p[0]),d?.method??"GET",v,f),durationMs:b};throw m instanceof Error?h.error=m.message:h.error="Network error",e(h),m}};return window.fetch=u,r.prototype.open=function(p,l,d,v,f){return vn(this,{method:p,url:l,headers:[],start:0}),n.call(this,p,l,d??!0,v??null,f??null)},r.prototype.setRequestHeader=function(p,l){let d=xe(this);return d&&d.headers.push({name:p,value:l}),i.call(this,p,l)},r.prototype.send=function(p){let l=xe(this);l&&(l.start=performance.now(),bn(l,p,s));let d=()=>{this.removeEventListener("loadend",d);let v=xe(this);if(!v)return;let f=Math.round(performance.now()-v.start),m=yn(this.getAllResponseHeaders()),b=this.status,h=this.statusText||"",c=b>=200&&b<300,y;(this.responseType===""||this.responseType==="text")&&typeof this.responseText=="string"&&(y=Q(this.responseText,this.getResponseHeader("content-type"),s));let S={request:Re(v.url,v.method,v.headers,v.body),response:Ze(b,h,c,m,y),durationMs:f};!c&&this.statusText&&(S.error=this.statusText),e(S)};return this.addEventListener("loadend",d),o.call(this,p??null)},()=>{window.fetch=t,r.prototype.open=n,r.prototype.send=o,r.prototype.setRequestHeader=i}}function nt(){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 u(){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 d(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 H={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:H}});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 H=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:[...H,...e.matches].slice(0,100)},o()}}function f(c){}function m(){e.isListening||(r=Ye(d),n=tt(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:u}}var $=require("react"),a=require("react/jsx-runtime");function rt(e){return new Date(e).toLocaleTimeString([],{hour12:!1,hour:"2-digit",minute:"2-digit",second:"2-digit"})}function hn(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 wn(e){return e<1024?`${e} B`:e<1024*1024?`${(e/1024).toFixed(1)} KB`:`${(e/(1024*1024)).toFixed(1)} MB`}function ot(){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 it(){if(typeof window>"u")return 0;let e=window.localStorage.length+window.sessionStorage.length;return window.localStorage.clear(),window.sessionStorage.clear(),e}async function st(){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 xn(){typeof window>"u"||window.location.reload()}function Rn(){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 at({domain:e}){let[t,r]=(0,$.useState)(e.getState()),[n,o]=(0,$.useState)(""),[i,s]=(0,$.useState)("console"),[u,p]=(0,$.useState)(!1),[l,d]=(0,$.useState)(null),[v,f]=(0,$.useState)(!1),[m,b]=(0,$.useState)(!1),[h,c]=(0,$.useState)(!1),[y,S]=(0,$.useState)("");(0,$.useEffect)(()=>e.subscribe(r),[e]),(0,$.useEffect)(function(){if(!l)return;t.matches.some(function(J){return J.id===l})||d(null)},[l,t.matches]),(0,$.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 H(g){o(g.target.value)}function z(){p(!0)}function T(){p(!1)}function E(g){g.key==="Enter"&&k()}function K(){e.clearMatches(),d(null)}function G(g){d(g)}async function fe(){c(!0);try{let g=it(),M=ot();S(`Cleared storage (${g}) and cookies (${M}).`)}finally{c(!1)}}async function ge(){c(!0);try{let g=await st();S(`Cleared cache buckets (${g}).`)}finally{c(!1)}}async function me(){c(!0);try{let g=it(),M=ot(),C=await st();S(`Cleared storage (${g}), cookies (${M}), cache (${C}).`)}finally{c(!1)}}async function ye(){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 ve(){f(function(M){return!M})}function be(){b(function(M){return!M})}function ie(g){return t.rules.find(function(C){return C.id===g})}function se(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(C){return(0,a.jsxs)("li",{style:{display:"grid",gap:"2px"},children:[(0,a.jsx)("span",{style:{fontSize:"10px",color:"var(--dw-text-muted)"},children:C.name}),(0,a.jsx)("code",{style:{fontSize:"11px",color:"var(--dw-text)"},children:C.value})]},`${C.name}-${C.value}`)})})}function ae(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:[wn(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 D(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(C,J){return`${J+1}. ${hn(C)}`}).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"}),se(g.request.headers),g.request.body&&(0,a.jsx)("button",{onClick:ve,style:{border:"none",background:"transparent",color:"var(--dw-accent)",fontSize:"10px",cursor:"pointer",padding:0,textAlign:"left"},children:v?"Hide body":"Show body"}),v&&ae(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:[se(g.response.headers),g.response.body&&(0,a.jsx)("button",{onClick:be,style:{border:"none",background:"transparent",color:"var(--dw-accent)",fontSize:"10px",cursor:"pointer",padding:0,textAlign:"left"},children:m?"Hide body":"Show body"}),m&&ae(g.response.body)]}):(0,a.jsx)("span",{style:{color:"var(--dw-text-muted)"},children:"No response captured"})]})]})}function L(g,M){let C=ie(g.ruleId),J=g.id===l,he=C?.type??g.details?.type??"console",zt=he==="network"?"NET":"LOG";return(0,a.jsxs)("button",{onClick:function(){G(g.id)},style:{display:"flex",flexDirection:"column",gap:"4px",padding:"10px",borderRadius:"8px",background:J?"rgba(59, 130, 246, 0.15)":"var(--dw-bg-secondary)",border:J?"1px solid rgba(59, 130, 246, 0.4)":"1px solid var(--dw-border)",animation:`dw-slide-up 0.3s ease-out backwards ${M*.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:rt(g.timestamp)}),(0,a.jsx)("span",{style:{padding:"2px 4px",borderRadius:"4px",fontSize:"9px",fontWeight:800,textTransform:"uppercase",background:he==="network"?"rgba(59, 130, 246, 0.15)":"rgba(245, 158, 11, 0.15)",color:he==="network"?"#3b82f6":"#f59e0b"},children:zt})]}),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 M=ie(g.ruleId),C=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:M?.match??"unknown"}),(0,a.jsxs)("span",{style:{fontSize:"10px",color:"var(--dw-text-muted)"},children:[M?.type??"unknown"," \u2022 ",rt(g.timestamp)]})]})]}),C?C.type==="network"?W(C):D(C):(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(M){return M.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:xn,disabled:h,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:Rn,disabled:h,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:ge,disabled:h,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:fe,disabled:h,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:me,disabled:h,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:ye,disabled:h,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:u?"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:H,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(M){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:M.type==="console"?"rgba(245, 158, 11, 0.15)":"rgba(59, 130, 246, 0.15)",color:M.type==="console"?"#f59e0b":"#3b82f6"},children:M.type==="console"?"LOG":"NET"}),(0,a.jsx)("span",{style:{fontFamily:"var(--dw-font-mono)",color:"var(--dw-text)"},children:M.match}),(0,a.jsx)("button",{onClick:function(){e.removeRule(M.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:C=>{C.currentTarget.style.background="rgba(239, 68, 68, 0.1)",C.currentTarget.style.color="#ef4444"},onMouseLeave:C=>{C.currentTarget.style.background="transparent",C.currentTarget.style.color="var(--dw-text-muted)"},children:"x"})]},M.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:K,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 ne=$t(require("react"));function dt(e){let t=Me(e),{bus:r,registry:n}=t,o=Ue(e.providers?.ai),i=Ie(r,e.providers?.auth),s=Ke(r,o),u=qe(r),p=nt();return n.registerDomain(i),n.registerDomain(s),n.registerDomain(u),n.registerDomain(p),n.registerCategory({id:"auth",label:"Auth",order:1},{render(){return ne.default.createElement(Ve,{domain:i})}}),n.registerCategory({id:"performance",label:"Perf",order:2},{render(){return ne.default.createElement(Ge,{domain:s})}}),n.registerCategory({id:"routes",label:"Routes",order:3},{render(){return ne.default.createElement(Je,{domain:u})}}),n.registerCategory({id:"monitor",label:"Monitor",order:4},{render(){return ne.default.createElement(at,{domain:p})}}),t}var I=require("react");var U=require("react");var Sn={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"},kn={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"?kn:Sn;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 Tn(){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=Tn(),s=e==="system"?i:e,u=(0,U.useMemo)(function(){let l=ut(s,t),d=pt(l,n,r);return{mode:s,tokens:l,density:r,radius:n,cssVars:d}},[s,t,r,n]);return(0,vt.jsx)(gt.Provider,{value:u,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 Z=require("react/jsx-runtime");function ht({toggleKey:e,diagnosticCount:t}){return(0,Z.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,Z.jsxs)("span",{children:[(0,Z.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,Z.jsxs)("span",{"data-dw-badge":"info",children:[t," diagnostic",t!==1?"s":""]})]})}var xt=require("react/jsx-runtime");function wt({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 V=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:u,...p},l){let d={fontFamily:"ui-monospace, monospace",cursor:u?"not-allowed":"pointer",display:"inline-flex",alignItems:"center",justifyContent:"center",border:"none",background:"transparent",transition:"all 0.15s ease",whiteSpace:"nowrap",opacity:u?.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:u,"aria-pressed":o,style:{...d,...v[r],...f[n],...i},...p,children:t})});var re=require("react/jsx-runtime");function Tt({runtime:e}){let[,t]=(0,V.useState)(0),r=(0,V.useRef)(null);(0,V.useEffect)(function(){return e.subscribe(function(){t(function(l){return l+1})})},[e]);let n=e.getSorted(),o=e.getActive(),i=(0,V.useCallback)(function(u){let p=n.findIndex(function(f){return f.category.id===o});if(p===-1)return;let l=p;switch(u.key){case"ArrowRight":l=(p+1)%n.length,u.preventDefault();break;case"ArrowLeft":l=(p-1+n.length)%n.length,u.preventDefault();break;case"Home":l=0,u.preventDefault();break;case"End":l=n.length-1,u.preventDefault();break;default:return}let d=n[l];d&&(e.setActive(d.category.id),r.current?.querySelector(`[data-dw-tab-id="${d.category.id}"]`)?.focus())},[n,o,e]);return(0,re.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(u){let p=u.category.id===o;return(0,re.jsxs)(St,{variant:"tab",role:"tab",id:`dw-tab-${u.category.id}`,"aria-controls":`dw-panel-${u.category.id}`,"aria-selected":p,tabIndex:p?0:-1,"data-dw-tab-id":u.category.id,active:p,onClick:function(){e.setActive(u.category.id)},style:{position:"relative"},children:[u.category.label,(u.category.badgeCount??0)>0&&(0,re.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:u.category.badgeCount})]},u.category.id)})})}var oe=require("react"),j=require("react/jsx-runtime");function Pt({panels:e,defaultPanel:t,collapsible:r,children:n}){let[o,i]=(0,oe.useState)(t??null),s=(0,oe.useCallback)(function(d){i(function(f){return f===d&&(r??!0)?null:d})},[r]),u=(0,oe.useCallback)(function(d){let v=e.filter(function(c){return c.enabled??!0}),f=v.findIndex(function(c){return c.id===o}),m=f;switch(d.key){case"ArrowDown":m=(f+1)%v.length,d.preventDefault();break;case"ArrowUp":m=(f-1+v.length)%v.length,d.preventDefault();break;case"Enter":case" ":if(f>=0){let h=v[f];h&&s(h.id)}d.preventDefault();return;default:return}let b=v[m];b&&s(b.id)},[e,o,s]),p=e.filter(function(d){return d.enabled??!0}).sort(function(d,v){return(d.order??999)-(v.order??999)});return(0,j.jsxs)("div",{"data-dw-right-rail":!0,style:{display:"flex",flexDirection:"row",borderLeft:"1px solid var(--dw-border)",height:"100%"},children:[o&&n&&(0,j.jsx)("div",{"data-dw-rail-panel":!0,role:"complementary","aria-label":p.find(function(d){return d.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,j.jsx)("nav",{"data-dw-rail-icons":!0,role:"toolbar","aria-label":"Side panels",onKeyDown:u,style:{display:"flex",flexDirection:"column",width:"40px",background:"var(--dw-bg-secondary)",padding:"4px 0",gap:"2px",alignItems:"center"},children:p.map(function(d){let v=d.id===o;return(0,j.jsxs)("button",{type:"button","aria-label":d.label,"aria-pressed":v,onClick:function(){s(d.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:[d.icon,(d.badgeCount??0)>0&&(0,j.jsx)("span",{style:{position:"absolute",top:"2px",right:"2px",width:"8px",height:"8px",borderRadius:"50%",background:"var(--dw-accent)",fontSize:"0"},children:d.badgeCount})]},d.id)})})]})}var pe=require("react");function Et(e){let{toggleKey:t,enableShortcuts:r,onToggle:n,onEscape:o}=e,i=(0,pe.useCallback)(function(u){if(!r||u.repeat||u.target instanceof HTMLInputElement||u.target instanceof HTMLTextAreaElement||u.target instanceof HTMLElement&&u.target.isContentEditable)return;if(u.key==="Escape"){u.preventDefault(),o?o():n();return}(u.key===t||t==="`"&&u.code==="Backquote")&&!u.ctrlKey&&!u.metaKey&&!u.altKey&&(u.preventDefault(),n())},[t,r,n,o]);(0,pe.useEffect)(function(){return window.addEventListener("keydown",i,!0),function(){window.removeEventListener("keydown",i,!0)}},[i])}function Mt(){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 u(){return t}function p(){return Array.from(e.values()).filter(function(m){return m.category.enabled??!0}).sort(function(m,b){let h=m.category.order??999,c=b.category.order??999;return h!==c?h-c:m.category.label.localeCompare(b.category.label)})}function l(f){return e.get(f)?.presenter??null}function d(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:u,getSorted:p,getPresenter:l,subscribe:d,updateBadge:v}}var A=require("react/jsx-runtime");function Ct(e){return e==="always"?!0:e==="never"||typeof window>"u"||typeof window.matchMedia!="function"?!1:window.matchMedia("(prefers-reduced-motion: reduce)").matches}function Pn({message:e}){return(0,A.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 En({runtime:e}){let{config:t}=e,{tokens:r,density:n,radius:o}=yt(),[i,s]=(0,I.useState)(!0),[u,p]=(0,I.useState)(!1),[l,d]=(0,I.useState)(""),[v,f]=(0,I.useState)(function(){return Ct(t.accessibility.reducedMotion)}),[,m]=(0,I.useState)(0),b=(0,I.useRef)(0),h=(0,I.useRef)(null),c=(0,I.useMemo)(function(){return Mt()},[]);(0,I.useEffect)(function(){if(t.accessibility.reducedMotion!=="system"){f(Ct(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(K){f(K.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(K){return K+1})})},[c]),(0,I.useEffect)(function(){if(!t.accessibility.announceUpdates)return;let T=e.bus.subscribe("performance/drop-detected",function(){b.current+=1,h.current&&clearTimeout(h.current),h.current=setTimeout(function(){let G=b.current;d(`${G} performance drop${G===1?"":"s"} detected in the last few seconds`),b.current=0,h.current=null},2e3)});return function(){T(),h.current&&(clearTimeout(h.current),h.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(),H=c.getActive();return(0,A.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:u?"auto":"400px",maxHeight:"100vh",transition:v?"none":"height 0.2s ease-in-out",...x},children:[(0,A.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,A.jsx)(bt,{onMinimize:S,onClose:k}),!u&&(0,A.jsxs)(A.Fragment,{children:[(0,A.jsxs)("div",{style:{display:"flex",flex:1,overflow:"hidden"},children:[(0,A.jsxs)("div",{style:{flex:1,display:"flex",flexDirection:"column",overflow:"hidden"},children:[(0,A.jsx)(Tt,{runtime:c}),(0,A.jsx)("div",{style:{flex:1,overflow:"auto"},children:B.map(function(T){let E=T.category.id===H;return(0,A.jsx)(wt,{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,A.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,A.jsxs)("span",{children:["No content for ",T]});let K=E.serializeDiagnostics?.();return K?(0,A.jsx)("pre",{style:{margin:0,whiteSpace:"pre-wrap",fontSize:"11px"},children:JSON.stringify(K,null,2)}):(0,A.jsx)("span",{children:"No diagnostics"})}})]}),(0,A.jsx)(ht,{toggleKey:t.keyboard.toggleKey})]}),(0,A.jsx)(Pn,{message:l})]})}function Dt({runtime:e}){let{config:t}=e;return(0,A.jsx)(mt,{mode:t.theme.mode,accent:t.theme.accent,density:t.theme.density,radius:t.theme.radius,children:(0,A.jsx)(En,{runtime:e})})}var It=require("react/jsx-runtime");function Mn(){return typeof process<"u"&&process.env?process.env.NODE_ENV==="development":!0}function At(e={}){let{enabled:t=!0,mode:r="development-only"}=e,n=t&&(r==="always"||Mn()),o=(0,ee.useMemo)(function(){return n?dt(e):null},[n]),i=(0,ee.useRef)(!1);return(0,ee.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)(Dt,{runtime:o})}0&&(module.exports={DevWidget});
|
|
16
|
+
//# sourceMappingURL=react.js.map
|