@tanstack/router-devtools-core 1.166.8 → 1.166.9

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.
Files changed (29) hide show
  1. package/dist/BaseTanStackRouterDevtoolsPanel-B43j38ty.js +1940 -0
  2. package/dist/BaseTanStackRouterDevtoolsPanel-B43j38ty.js.map +1 -0
  3. package/dist/BaseTanStackRouterDevtoolsPanel-DdB0IT5G.cjs +1969 -0
  4. package/dist/BaseTanStackRouterDevtoolsPanel-DdB0IT5G.cjs.map +1 -0
  5. package/dist/FloatingTanStackRouterDevtools-B12ktJLj.js +240 -0
  6. package/dist/FloatingTanStackRouterDevtools-B12ktJLj.js.map +1 -0
  7. package/dist/FloatingTanStackRouterDevtools-TVrd9NKL.cjs +241 -0
  8. package/dist/FloatingTanStackRouterDevtools-TVrd9NKL.cjs.map +1 -0
  9. package/dist/cjs/index.cjs +170 -5
  10. package/dist/cjs/index.cjs.map +1 -1
  11. package/dist/context-D56_tqst.js +1749 -0
  12. package/dist/context-D56_tqst.js.map +1 -0
  13. package/dist/context-DZa5WwQ_.cjs +1916 -0
  14. package/dist/context-DZa5WwQ_.cjs.map +1 -0
  15. package/dist/esm/index.js +168 -5
  16. package/dist/esm/index.js.map +1 -1
  17. package/package.json +2 -2
  18. package/dist/BaseTanStackRouterDevtoolsPanel-BgiCKo12.cjs +0 -1936
  19. package/dist/BaseTanStackRouterDevtoolsPanel-BgiCKo12.cjs.map +0 -1
  20. package/dist/BaseTanStackRouterDevtoolsPanel-Bmws3ikM.js +0 -1920
  21. package/dist/BaseTanStackRouterDevtoolsPanel-Bmws3ikM.js.map +0 -1
  22. package/dist/FloatingTanStackRouterDevtools-B7vy70jP.js +0 -281
  23. package/dist/FloatingTanStackRouterDevtools-B7vy70jP.js.map +0 -1
  24. package/dist/FloatingTanStackRouterDevtools-C-LyXpEh.cjs +0 -281
  25. package/dist/FloatingTanStackRouterDevtools-C-LyXpEh.cjs.map +0 -1
  26. package/dist/index-BoYu2KZp.cjs +0 -1822
  27. package/dist/index-BoYu2KZp.cjs.map +0 -1
  28. package/dist/index-DQ3FiKl6.js +0 -1823
  29. package/dist/index-DQ3FiKl6.js.map +0 -1
@@ -0,0 +1,1969 @@
1
+ //#region \0rolldown/runtime.js
2
+ var __create = Object.create;
3
+ var __defProp = Object.defineProperty;
4
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
5
+ var __getOwnPropNames = Object.getOwnPropertyNames;
6
+ var __getProtoOf = Object.getPrototypeOf;
7
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
8
+ var __copyProps = (to, from, except, desc) => {
9
+ if (from && typeof from === "object" || typeof from === "function") for (var keys = __getOwnPropNames(from), i = 0, n = keys.length, key; i < n; i++) {
10
+ key = keys[i];
11
+ if (!__hasOwnProp.call(to, key) && key !== except) __defProp(to, key, {
12
+ get: ((k) => from[k]).bind(null, key),
13
+ enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable
14
+ });
15
+ }
16
+ return to;
17
+ };
18
+ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", {
19
+ value: mod,
20
+ enumerable: true
21
+ }) : target, mod));
22
+ //#endregion
23
+ const require_context = require("./context-DZa5WwQ_.cjs");
24
+ let clsx = require("clsx");
25
+ let tiny_invariant = require("tiny-invariant");
26
+ tiny_invariant = __toESM(tiny_invariant);
27
+ let _tanstack_router_core = require("@tanstack/router-core");
28
+ let goober = require("goober");
29
+ goober = __toESM(goober);
30
+ //#region src/tokens.ts
31
+ var tokens = {
32
+ colors: {
33
+ inherit: "inherit",
34
+ current: "currentColor",
35
+ transparent: "transparent",
36
+ black: "#000000",
37
+ white: "#ffffff",
38
+ neutral: {
39
+ 50: "#f9fafb",
40
+ 100: "#f2f4f7",
41
+ 200: "#eaecf0",
42
+ 300: "#d0d5dd",
43
+ 400: "#98a2b3",
44
+ 500: "#667085",
45
+ 600: "#475467",
46
+ 700: "#344054",
47
+ 800: "#1d2939",
48
+ 900: "#101828"
49
+ },
50
+ darkGray: {
51
+ 50: "#525c7a",
52
+ 100: "#49536e",
53
+ 200: "#414962",
54
+ 300: "#394056",
55
+ 400: "#313749",
56
+ 500: "#292e3d",
57
+ 600: "#212530",
58
+ 700: "#191c24",
59
+ 800: "#111318",
60
+ 900: "#0b0d10"
61
+ },
62
+ gray: {
63
+ 50: "#f9fafb",
64
+ 100: "#f2f4f7",
65
+ 200: "#eaecf0",
66
+ 300: "#d0d5dd",
67
+ 400: "#98a2b3",
68
+ 500: "#667085",
69
+ 600: "#475467",
70
+ 700: "#344054",
71
+ 800: "#1d2939",
72
+ 900: "#101828"
73
+ },
74
+ blue: {
75
+ 25: "#F5FAFF",
76
+ 50: "#EFF8FF",
77
+ 100: "#D1E9FF",
78
+ 200: "#B2DDFF",
79
+ 300: "#84CAFF",
80
+ 400: "#53B1FD",
81
+ 500: "#2E90FA",
82
+ 600: "#1570EF",
83
+ 700: "#175CD3",
84
+ 800: "#1849A9",
85
+ 900: "#194185"
86
+ },
87
+ green: {
88
+ 25: "#F6FEF9",
89
+ 50: "#ECFDF3",
90
+ 100: "#D1FADF",
91
+ 200: "#A6F4C5",
92
+ 300: "#6CE9A6",
93
+ 400: "#32D583",
94
+ 500: "#12B76A",
95
+ 600: "#039855",
96
+ 700: "#027A48",
97
+ 800: "#05603A",
98
+ 900: "#054F31"
99
+ },
100
+ red: {
101
+ 50: "#fef2f2",
102
+ 100: "#fee2e2",
103
+ 200: "#fecaca",
104
+ 300: "#fca5a5",
105
+ 400: "#f87171",
106
+ 500: "#ef4444",
107
+ 600: "#dc2626",
108
+ 700: "#b91c1c",
109
+ 800: "#991b1b",
110
+ 900: "#7f1d1d",
111
+ 950: "#450a0a"
112
+ },
113
+ yellow: {
114
+ 25: "#FFFCF5",
115
+ 50: "#FFFAEB",
116
+ 100: "#FEF0C7",
117
+ 200: "#FEDF89",
118
+ 300: "#FEC84B",
119
+ 400: "#FDB022",
120
+ 500: "#F79009",
121
+ 600: "#DC6803",
122
+ 700: "#B54708",
123
+ 800: "#93370D",
124
+ 900: "#7A2E0E"
125
+ },
126
+ purple: {
127
+ 25: "#FAFAFF",
128
+ 50: "#F4F3FF",
129
+ 100: "#EBE9FE",
130
+ 200: "#D9D6FE",
131
+ 300: "#BDB4FE",
132
+ 400: "#9B8AFB",
133
+ 500: "#7A5AF8",
134
+ 600: "#6938EF",
135
+ 700: "#5925DC",
136
+ 800: "#4A1FB8",
137
+ 900: "#3E1C96"
138
+ },
139
+ teal: {
140
+ 25: "#F6FEFC",
141
+ 50: "#F0FDF9",
142
+ 100: "#CCFBEF",
143
+ 200: "#99F6E0",
144
+ 300: "#5FE9D0",
145
+ 400: "#2ED3B7",
146
+ 500: "#15B79E",
147
+ 600: "#0E9384",
148
+ 700: "#107569",
149
+ 800: "#125D56",
150
+ 900: "#134E48"
151
+ },
152
+ pink: {
153
+ 25: "#fdf2f8",
154
+ 50: "#fce7f3",
155
+ 100: "#fbcfe8",
156
+ 200: "#f9a8d4",
157
+ 300: "#f472b6",
158
+ 400: "#ec4899",
159
+ 500: "#db2777",
160
+ 600: "#be185d",
161
+ 700: "#9d174d",
162
+ 800: "#831843",
163
+ 900: "#500724"
164
+ },
165
+ cyan: {
166
+ 25: "#ecfeff",
167
+ 50: "#cffafe",
168
+ 100: "#a5f3fc",
169
+ 200: "#67e8f9",
170
+ 300: "#22d3ee",
171
+ 400: "#06b6d4",
172
+ 500: "#0891b2",
173
+ 600: "#0e7490",
174
+ 700: "#155e75",
175
+ 800: "#164e63",
176
+ 900: "#083344"
177
+ }
178
+ },
179
+ alpha: {
180
+ 100: "ff",
181
+ 90: "e5",
182
+ 80: "cc",
183
+ 70: "b3",
184
+ 60: "99",
185
+ 50: "80",
186
+ 40: "66",
187
+ 30: "4d",
188
+ 20: "33",
189
+ 10: "1a",
190
+ 0: "00"
191
+ },
192
+ font: {
193
+ size: {
194
+ "2xs": "calc(var(--tsrd-font-size) * 0.625)",
195
+ xs: "calc(var(--tsrd-font-size) * 0.75)",
196
+ sm: "calc(var(--tsrd-font-size) * 0.875)",
197
+ md: "var(--tsrd-font-size)",
198
+ lg: "calc(var(--tsrd-font-size) * 1.125)",
199
+ xl: "calc(var(--tsrd-font-size) * 1.25)",
200
+ "2xl": "calc(var(--tsrd-font-size) * 1.5)",
201
+ "3xl": "calc(var(--tsrd-font-size) * 1.875)",
202
+ "4xl": "calc(var(--tsrd-font-size) * 2.25)",
203
+ "5xl": "calc(var(--tsrd-font-size) * 3)",
204
+ "6xl": "calc(var(--tsrd-font-size) * 3.75)",
205
+ "7xl": "calc(var(--tsrd-font-size) * 4.5)",
206
+ "8xl": "calc(var(--tsrd-font-size) * 6)",
207
+ "9xl": "calc(var(--tsrd-font-size) * 8)"
208
+ },
209
+ lineHeight: {
210
+ "3xs": "calc(var(--tsrd-font-size) * 0.75)",
211
+ "2xs": "calc(var(--tsrd-font-size) * 0.875)",
212
+ xs: "calc(var(--tsrd-font-size) * 1)",
213
+ sm: "calc(var(--tsrd-font-size) * 1.25)",
214
+ md: "calc(var(--tsrd-font-size) * 1.5)",
215
+ lg: "calc(var(--tsrd-font-size) * 1.75)",
216
+ xl: "calc(var(--tsrd-font-size) * 2)",
217
+ "2xl": "calc(var(--tsrd-font-size) * 2.25)",
218
+ "3xl": "calc(var(--tsrd-font-size) * 2.5)",
219
+ "4xl": "calc(var(--tsrd-font-size) * 2.75)",
220
+ "5xl": "calc(var(--tsrd-font-size) * 3)",
221
+ "6xl": "calc(var(--tsrd-font-size) * 3.25)",
222
+ "7xl": "calc(var(--tsrd-font-size) * 3.5)",
223
+ "8xl": "calc(var(--tsrd-font-size) * 3.75)",
224
+ "9xl": "calc(var(--tsrd-font-size) * 4)"
225
+ },
226
+ weight: {
227
+ thin: "100",
228
+ extralight: "200",
229
+ light: "300",
230
+ normal: "400",
231
+ medium: "500",
232
+ semibold: "600",
233
+ bold: "700",
234
+ extrabold: "800",
235
+ black: "900"
236
+ },
237
+ fontFamily: {
238
+ sans: "ui-sans-serif, Inter, system-ui, sans-serif, sans-serif",
239
+ mono: `ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, 'Liberation Mono', 'Courier New', monospace`
240
+ }
241
+ },
242
+ breakpoints: {
243
+ xs: "320px",
244
+ sm: "640px",
245
+ md: "768px",
246
+ lg: "1024px",
247
+ xl: "1280px",
248
+ "2xl": "1536px"
249
+ },
250
+ border: { radius: {
251
+ none: "0px",
252
+ xs: "calc(var(--tsrd-font-size) * 0.125)",
253
+ sm: "calc(var(--tsrd-font-size) * 0.25)",
254
+ md: "calc(var(--tsrd-font-size) * 0.375)",
255
+ lg: "calc(var(--tsrd-font-size) * 0.5)",
256
+ xl: "calc(var(--tsrd-font-size) * 0.75)",
257
+ "2xl": "calc(var(--tsrd-font-size) * 1)",
258
+ "3xl": "calc(var(--tsrd-font-size) * 1.5)",
259
+ full: "9999px"
260
+ } },
261
+ size: {
262
+ 0: "0px",
263
+ .25: "calc(var(--tsrd-font-size) * 0.0625)",
264
+ .5: "calc(var(--tsrd-font-size) * 0.125)",
265
+ 1: "calc(var(--tsrd-font-size) * 0.25)",
266
+ 1.5: "calc(var(--tsrd-font-size) * 0.375)",
267
+ 2: "calc(var(--tsrd-font-size) * 0.5)",
268
+ 2.5: "calc(var(--tsrd-font-size) * 0.625)",
269
+ 3: "calc(var(--tsrd-font-size) * 0.75)",
270
+ 3.5: "calc(var(--tsrd-font-size) * 0.875)",
271
+ 4: "calc(var(--tsrd-font-size) * 1)",
272
+ 4.5: "calc(var(--tsrd-font-size) * 1.125)",
273
+ 5: "calc(var(--tsrd-font-size) * 1.25)",
274
+ 5.5: "calc(var(--tsrd-font-size) * 1.375)",
275
+ 6: "calc(var(--tsrd-font-size) * 1.5)",
276
+ 6.5: "calc(var(--tsrd-font-size) * 1.625)",
277
+ 7: "calc(var(--tsrd-font-size) * 1.75)",
278
+ 8: "calc(var(--tsrd-font-size) * 2)",
279
+ 9: "calc(var(--tsrd-font-size) * 2.25)",
280
+ 10: "calc(var(--tsrd-font-size) * 2.5)",
281
+ 11: "calc(var(--tsrd-font-size) * 2.75)",
282
+ 12: "calc(var(--tsrd-font-size) * 3)",
283
+ 14: "calc(var(--tsrd-font-size) * 3.5)",
284
+ 16: "calc(var(--tsrd-font-size) * 4)",
285
+ 20: "calc(var(--tsrd-font-size) * 5)",
286
+ 24: "calc(var(--tsrd-font-size) * 6)",
287
+ 28: "calc(var(--tsrd-font-size) * 7)",
288
+ 32: "calc(var(--tsrd-font-size) * 8)",
289
+ 36: "calc(var(--tsrd-font-size) * 9)",
290
+ 40: "calc(var(--tsrd-font-size) * 10)",
291
+ 44: "calc(var(--tsrd-font-size) * 11)",
292
+ 48: "calc(var(--tsrd-font-size) * 12)",
293
+ 52: "calc(var(--tsrd-font-size) * 13)",
294
+ 56: "calc(var(--tsrd-font-size) * 14)",
295
+ 60: "calc(var(--tsrd-font-size) * 15)",
296
+ 64: "calc(var(--tsrd-font-size) * 16)",
297
+ 72: "calc(var(--tsrd-font-size) * 18)",
298
+ 80: "calc(var(--tsrd-font-size) * 20)",
299
+ 96: "calc(var(--tsrd-font-size) * 24)"
300
+ },
301
+ shadow: {
302
+ xs: (_ = "rgb(0 0 0 / 0.1)") => `0 1px 2px 0 rgb(0 0 0 / 0.05)`,
303
+ sm: (color = "rgb(0 0 0 / 0.1)") => `0 1px 3px 0 ${color}, 0 1px 2px -1px ${color}`,
304
+ md: (color = "rgb(0 0 0 / 0.1)") => `0 4px 6px -1px ${color}, 0 2px 4px -2px ${color}`,
305
+ lg: (color = "rgb(0 0 0 / 0.1)") => `0 10px 15px -3px ${color}, 0 4px 6px -4px ${color}`,
306
+ xl: (color = "rgb(0 0 0 / 0.1)") => `0 20px 25px -5px ${color}, 0 8px 10px -6px ${color}`,
307
+ "2xl": (color = "rgb(0 0 0 / 0.25)") => `0 25px 50px -12px ${color}`,
308
+ inner: (color = "rgb(0 0 0 / 0.05)") => `inset 0 2px 4px 0 ${color}`,
309
+ none: () => `none`
310
+ },
311
+ zIndices: {
312
+ hide: -1,
313
+ auto: "auto",
314
+ base: 0,
315
+ docked: 10,
316
+ dropdown: 1e3,
317
+ sticky: 1100,
318
+ banner: 1200,
319
+ overlay: 1300,
320
+ modal: 1400,
321
+ popover: 1500,
322
+ skipLink: 1600,
323
+ toast: 1700,
324
+ tooltip: 1800
325
+ }
326
+ };
327
+ //#endregion
328
+ //#region src/useStyles.tsx
329
+ var stylesFactory$1 = (shadowDOMTarget) => {
330
+ const { colors, font, size, alpha, shadow, border } = tokens;
331
+ const { fontFamily, lineHeight, size: fontSize } = font;
332
+ const css = shadowDOMTarget ? goober.css.bind({ target: shadowDOMTarget }) : goober.css;
333
+ return {
334
+ devtoolsPanelContainer: css`
335
+ direction: ltr;
336
+ position: fixed;
337
+ bottom: 0;
338
+ right: 0;
339
+ z-index: 99999;
340
+ width: 100%;
341
+ max-height: 90%;
342
+ border-top: 1px solid ${colors.gray[700]};
343
+ transform-origin: top;
344
+ `,
345
+ devtoolsPanelContainerVisibility: (isOpen) => {
346
+ return css`
347
+ visibility: ${isOpen ? "visible" : "hidden"};
348
+ `;
349
+ },
350
+ devtoolsPanelContainerResizing: (isResizing) => {
351
+ if (isResizing()) return css`
352
+ transition: none;
353
+ `;
354
+ return css`
355
+ transition: all 0.4s ease;
356
+ `;
357
+ },
358
+ devtoolsPanelContainerAnimation: (isOpen, height) => {
359
+ if (isOpen) return css`
360
+ pointer-events: auto;
361
+ transform: translateY(0);
362
+ `;
363
+ return css`
364
+ pointer-events: none;
365
+ transform: translateY(${height}px);
366
+ `;
367
+ },
368
+ logo: css`
369
+ cursor: pointer;
370
+ display: flex;
371
+ flex-direction: column;
372
+ background-color: transparent;
373
+ border: none;
374
+ font-family: ${fontFamily.sans};
375
+ gap: ${tokens.size[.5]};
376
+ padding: 0px;
377
+ &:hover {
378
+ opacity: 0.7;
379
+ }
380
+ &:focus-visible {
381
+ outline-offset: 4px;
382
+ border-radius: ${border.radius.xs};
383
+ outline: 2px solid ${colors.blue[800]};
384
+ }
385
+ `,
386
+ tanstackLogo: css`
387
+ font-size: ${font.size.md};
388
+ font-weight: ${font.weight.bold};
389
+ line-height: ${font.lineHeight.xs};
390
+ white-space: nowrap;
391
+ color: ${colors.gray[300]};
392
+ `,
393
+ routerLogo: css`
394
+ font-weight: ${font.weight.semibold};
395
+ font-size: ${font.size.xs};
396
+ background: linear-gradient(to right, #84cc16, #10b981);
397
+ background-clip: text;
398
+ -webkit-background-clip: text;
399
+ line-height: 1;
400
+ -webkit-text-fill-color: transparent;
401
+ white-space: nowrap;
402
+ `,
403
+ devtoolsPanel: css`
404
+ display: flex;
405
+ font-size: ${fontSize.sm};
406
+ font-family: ${fontFamily.sans};
407
+ background-color: ${colors.darkGray[700]};
408
+ color: ${colors.gray[300]};
409
+
410
+ @media (max-width: 700px) {
411
+ flex-direction: column;
412
+ }
413
+ @media (max-width: 600px) {
414
+ font-size: ${fontSize.xs};
415
+ }
416
+ `,
417
+ dragHandle: css`
418
+ position: absolute;
419
+ left: 0;
420
+ top: 0;
421
+ width: 100%;
422
+ height: 4px;
423
+ cursor: row-resize;
424
+ z-index: 100000;
425
+ &:hover {
426
+ background-color: ${colors.purple[400]}${alpha[90]};
427
+ }
428
+ `,
429
+ firstContainer: css`
430
+ flex: 1 1 500px;
431
+ min-height: 40%;
432
+ max-height: 100%;
433
+ overflow: auto;
434
+ border-right: 1px solid ${colors.gray[700]};
435
+ display: flex;
436
+ flex-direction: column;
437
+ `,
438
+ routerExplorerContainer: css`
439
+ overflow-y: auto;
440
+ flex: 1;
441
+ `,
442
+ routerExplorer: css`
443
+ padding: ${tokens.size[2]};
444
+ `,
445
+ row: css`
446
+ display: flex;
447
+ align-items: center;
448
+ padding: ${tokens.size[2]} ${tokens.size[2.5]};
449
+ gap: ${tokens.size[2.5]};
450
+ border-bottom: ${colors.darkGray[500]} 1px solid;
451
+ align-items: center;
452
+ `,
453
+ detailsHeader: css`
454
+ font-family: ui-sans-serif, Inter, system-ui, sans-serif, sans-serif;
455
+ position: sticky;
456
+ top: 0;
457
+ z-index: 2;
458
+ background-color: ${colors.darkGray[600]};
459
+ padding: 0px ${tokens.size[2]};
460
+ font-weight: ${font.weight.medium};
461
+ font-size: ${font.size.xs};
462
+ min-height: ${tokens.size[8]};
463
+ line-height: ${font.lineHeight.xs};
464
+ text-align: left;
465
+ display: flex;
466
+ align-items: center;
467
+ `,
468
+ maskedBadge: css`
469
+ background: ${colors.yellow[900]}${alpha[70]};
470
+ color: ${colors.yellow[300]};
471
+ display: inline-block;
472
+ padding: ${tokens.size[0]} ${tokens.size[2.5]};
473
+ border-radius: ${border.radius.full};
474
+ font-size: ${font.size.xs};
475
+ font-weight: ${font.weight.normal};
476
+ border: 1px solid ${colors.yellow[300]};
477
+ `,
478
+ maskedLocation: css`
479
+ color: ${colors.yellow[300]};
480
+ `,
481
+ detailsContent: css`
482
+ padding: ${tokens.size[1.5]} ${tokens.size[2]};
483
+ display: flex;
484
+ align-items: center;
485
+ justify-content: space-between;
486
+ font-size: ${font.size.xs};
487
+ `,
488
+ routeMatchesToggle: css`
489
+ display: flex;
490
+ align-items: center;
491
+ border: 1px solid ${colors.gray[500]};
492
+ border-radius: ${border.radius.sm};
493
+ overflow: hidden;
494
+ `,
495
+ routeMatchesToggleBtn: (active, showBorder) => {
496
+ const classes = [css`
497
+ appearance: none;
498
+ border: none;
499
+ font-size: 12px;
500
+ padding: 4px 8px;
501
+ background: transparent;
502
+ cursor: pointer;
503
+ font-family: ${fontFamily.sans};
504
+ font-weight: ${font.weight.medium};
505
+ `];
506
+ if (active) {
507
+ const activeStyles = css`
508
+ background: ${colors.darkGray[400]};
509
+ color: ${colors.gray[300]};
510
+ `;
511
+ classes.push(activeStyles);
512
+ } else {
513
+ const inactiveStyles = css`
514
+ color: ${colors.gray[500]};
515
+ background: ${colors.darkGray[800]}${alpha[20]};
516
+ `;
517
+ classes.push(inactiveStyles);
518
+ }
519
+ if (showBorder) classes.push(css`
520
+ border-right: 1px solid ${tokens.colors.gray[500]};
521
+ `);
522
+ return classes;
523
+ },
524
+ detailsHeaderInfo: css`
525
+ flex: 1;
526
+ justify-content: flex-end;
527
+ display: flex;
528
+ align-items: center;
529
+ font-weight: ${font.weight.normal};
530
+ color: ${colors.gray[400]};
531
+ `,
532
+ matchRow: (active) => {
533
+ const classes = [css`
534
+ display: flex;
535
+ border-bottom: 1px solid ${colors.darkGray[400]};
536
+ cursor: pointer;
537
+ align-items: center;
538
+ padding: ${size[1]} ${size[2]};
539
+ gap: ${size[2]};
540
+ font-size: ${fontSize.xs};
541
+ color: ${colors.gray[300]};
542
+ `];
543
+ if (active) {
544
+ const activeStyles = css`
545
+ background: ${colors.darkGray[500]};
546
+ `;
547
+ classes.push(activeStyles);
548
+ }
549
+ return classes;
550
+ },
551
+ matchIndicator: (color) => {
552
+ const classes = [css`
553
+ flex: 0 0 auto;
554
+ width: ${size[3]};
555
+ height: ${size[3]};
556
+ background: ${colors[color][900]};
557
+ border: 1px solid ${colors[color][500]};
558
+ border-radius: ${border.radius.full};
559
+ transition: all 0.25s ease-out;
560
+ box-sizing: border-box;
561
+ `];
562
+ if (color === "gray") {
563
+ const grayStyles = css`
564
+ background: ${colors.gray[700]};
565
+ border-color: ${colors.gray[400]};
566
+ `;
567
+ classes.push(grayStyles);
568
+ }
569
+ return classes;
570
+ },
571
+ matchID: css`
572
+ flex: 1;
573
+ line-height: ${lineHeight["xs"]};
574
+ `,
575
+ ageTicker: (showWarning) => {
576
+ const classes = [css`
577
+ display: flex;
578
+ gap: ${size[1]};
579
+ font-size: ${fontSize.xs};
580
+ color: ${colors.gray[400]};
581
+ font-variant-numeric: tabular-nums;
582
+ line-height: ${lineHeight["xs"]};
583
+ `];
584
+ if (showWarning) {
585
+ const warningStyles = css`
586
+ color: ${colors.yellow[400]};
587
+ `;
588
+ classes.push(warningStyles);
589
+ }
590
+ return classes;
591
+ },
592
+ secondContainer: css`
593
+ flex: 1 1 500px;
594
+ min-height: 40%;
595
+ max-height: 100%;
596
+ overflow: auto;
597
+ border-right: 1px solid ${colors.gray[700]};
598
+ display: flex;
599
+ flex-direction: column;
600
+ `,
601
+ thirdContainer: css`
602
+ flex: 1 1 500px;
603
+ overflow: auto;
604
+ display: flex;
605
+ flex-direction: column;
606
+ height: 100%;
607
+ border-right: 1px solid ${colors.gray[700]};
608
+
609
+ @media (max-width: 700px) {
610
+ border-top: 2px solid ${colors.gray[700]};
611
+ }
612
+ `,
613
+ fourthContainer: css`
614
+ flex: 1 1 500px;
615
+ min-height: 40%;
616
+ max-height: 100%;
617
+ overflow: auto;
618
+ display: flex;
619
+ flex-direction: column;
620
+ `,
621
+ routesContainer: css`
622
+ overflow-x: auto;
623
+ overflow-y: visible;
624
+ `,
625
+ routesRowContainer: (active, isMatch) => {
626
+ const classes = [css`
627
+ display: flex;
628
+ border-bottom: 1px solid ${colors.darkGray[400]};
629
+ align-items: center;
630
+ padding: ${size[1]} ${size[2]};
631
+ gap: ${size[2]};
632
+ font-size: ${fontSize.xs};
633
+ color: ${colors.gray[300]};
634
+ cursor: ${isMatch ? "pointer" : "default"};
635
+ line-height: ${lineHeight["xs"]};
636
+ `];
637
+ if (active) {
638
+ const activeStyles = css`
639
+ background: ${colors.darkGray[500]};
640
+ `;
641
+ classes.push(activeStyles);
642
+ }
643
+ return classes;
644
+ },
645
+ routesRow: (isMatch) => {
646
+ const classes = [css`
647
+ flex: 1 0 auto;
648
+ display: flex;
649
+ justify-content: space-between;
650
+ align-items: center;
651
+ font-size: ${fontSize.xs};
652
+ line-height: ${lineHeight["xs"]};
653
+ `];
654
+ if (!isMatch) {
655
+ const matchStyles = css`
656
+ color: ${colors.gray[400]};
657
+ `;
658
+ classes.push(matchStyles);
659
+ }
660
+ return classes;
661
+ },
662
+ routesRowInner: css`
663
+ display: 'flex';
664
+ align-items: 'center';
665
+ flex-grow: 1;
666
+ min-width: 0;
667
+ `,
668
+ routeParamInfo: css`
669
+ color: ${colors.gray[400]};
670
+ font-size: ${fontSize.xs};
671
+ line-height: ${lineHeight["xs"]};
672
+ `,
673
+ nestedRouteRow: (isRoot) => {
674
+ return css`
675
+ margin-left: ${isRoot ? 0 : size[3.5]};
676
+ border-left: ${isRoot ? "" : `solid 1px ${colors.gray[700]}`};
677
+ `;
678
+ },
679
+ code: css`
680
+ font-size: ${fontSize.xs};
681
+ line-height: ${lineHeight["xs"]};
682
+ white-space: nowrap;
683
+ overflow: hidden;
684
+ text-overflow: ellipsis;
685
+ `,
686
+ matchesContainer: css`
687
+ flex: 1 1 auto;
688
+ overflow-y: auto;
689
+ `,
690
+ cachedMatchesContainer: css`
691
+ flex: 1 1 auto;
692
+ overflow-y: auto;
693
+ max-height: 50%;
694
+ `,
695
+ historyContainer: css`
696
+ display: flex;
697
+ flex: 1 1 auto;
698
+ overflow-y: auto;
699
+ max-height: 50%;
700
+ `,
701
+ historyOverflowContainer: css`
702
+ padding: ${size[1]} ${size[2]};
703
+ font-size: ${tokens.font.size.xs};
704
+ `,
705
+ maskedBadgeContainer: css`
706
+ flex: 1;
707
+ justify-content: flex-end;
708
+ display: flex;
709
+ `,
710
+ matchDetails: css`
711
+ display: flex;
712
+ flex-direction: column;
713
+ padding: ${tokens.size[2]};
714
+ font-size: ${tokens.font.size.xs};
715
+ color: ${tokens.colors.gray[300]};
716
+ line-height: ${tokens.font.lineHeight.sm};
717
+ `,
718
+ matchStatus: (status, isFetching) => {
719
+ const color = isFetching && status === "success" ? isFetching === "beforeLoad" ? "purple" : "blue" : {
720
+ pending: "yellow",
721
+ success: "green",
722
+ error: "red",
723
+ notFound: "purple",
724
+ redirected: "gray"
725
+ }[status];
726
+ return css`
727
+ display: flex;
728
+ justify-content: center;
729
+ align-items: center;
730
+ height: 40px;
731
+ border-radius: ${tokens.border.radius.sm};
732
+ font-weight: ${tokens.font.weight.normal};
733
+ background-color: ${tokens.colors[color][900]}${tokens.alpha[90]};
734
+ color: ${tokens.colors[color][300]};
735
+ border: 1px solid ${tokens.colors[color][600]};
736
+ margin-bottom: ${tokens.size[2]};
737
+ transition: all 0.25s ease-out;
738
+ `;
739
+ },
740
+ matchDetailsInfo: css`
741
+ display: flex;
742
+ justify-content: flex-end;
743
+ flex: 1;
744
+ `,
745
+ matchDetailsInfoLabel: css`
746
+ display: flex;
747
+ `,
748
+ mainCloseBtn: css`
749
+ background: ${colors.darkGray[700]};
750
+ padding: ${size[1]} ${size[2]} ${size[1]} ${size[1.5]};
751
+ border-radius: ${border.radius.md};
752
+ position: fixed;
753
+ z-index: 99999;
754
+ display: inline-flex;
755
+ width: fit-content;
756
+ cursor: pointer;
757
+ appearance: none;
758
+ border: 0;
759
+ gap: 8px;
760
+ align-items: center;
761
+ border: 1px solid ${colors.gray[500]};
762
+ font-size: ${font.size.xs};
763
+ cursor: pointer;
764
+ transition: all 0.25s ease-out;
765
+
766
+ &:hover {
767
+ background: ${colors.darkGray[500]};
768
+ }
769
+ `,
770
+ mainCloseBtnPosition: (position) => {
771
+ return css`
772
+ ${position === "top-left" ? `top: ${size[2]}; left: ${size[2]};` : ""}
773
+ ${position === "top-right" ? `top: ${size[2]}; right: ${size[2]};` : ""}
774
+ ${position === "bottom-left" ? `bottom: ${size[2]}; left: ${size[2]};` : ""}
775
+ ${position === "bottom-right" ? `bottom: ${size[2]}; right: ${size[2]};` : ""}
776
+ `;
777
+ },
778
+ mainCloseBtnAnimation: (isOpen) => {
779
+ if (!isOpen) return css`
780
+ opacity: 1;
781
+ pointer-events: auto;
782
+ visibility: visible;
783
+ `;
784
+ return css`
785
+ opacity: 0;
786
+ pointer-events: none;
787
+ visibility: hidden;
788
+ `;
789
+ },
790
+ routerLogoCloseButton: css`
791
+ font-weight: ${font.weight.semibold};
792
+ font-size: ${font.size.xs};
793
+ background: linear-gradient(to right, #98f30c, #00f4a3);
794
+ background-clip: text;
795
+ -webkit-background-clip: text;
796
+ line-height: 1;
797
+ -webkit-text-fill-color: transparent;
798
+ white-space: nowrap;
799
+ `,
800
+ mainCloseBtnDivider: css`
801
+ width: 1px;
802
+ background: ${tokens.colors.gray[600]};
803
+ height: 100%;
804
+ border-radius: 999999px;
805
+ color: transparent;
806
+ `,
807
+ mainCloseBtnIconContainer: css`
808
+ position: relative;
809
+ width: ${size[5]};
810
+ height: ${size[5]};
811
+ background: pink;
812
+ border-radius: 999999px;
813
+ overflow: hidden;
814
+ `,
815
+ mainCloseBtnIconOuter: css`
816
+ width: ${size[5]};
817
+ height: ${size[5]};
818
+ position: absolute;
819
+ top: 50%;
820
+ left: 50%;
821
+ transform: translate(-50%, -50%);
822
+ filter: blur(3px) saturate(1.8) contrast(2);
823
+ `,
824
+ mainCloseBtnIconInner: css`
825
+ width: ${size[4]};
826
+ height: ${size[4]};
827
+ position: absolute;
828
+ top: 50%;
829
+ left: 50%;
830
+ transform: translate(-50%, -50%);
831
+ `,
832
+ panelCloseBtn: css`
833
+ position: absolute;
834
+ cursor: pointer;
835
+ z-index: 100001;
836
+ display: flex;
837
+ align-items: center;
838
+ justify-content: center;
839
+ outline: none;
840
+ background-color: ${colors.darkGray[700]};
841
+ &:hover {
842
+ background-color: ${colors.darkGray[500]};
843
+ }
844
+
845
+ top: 0;
846
+ right: ${size[2]};
847
+ transform: translate(0, -100%);
848
+ border-right: ${colors.darkGray[300]} 1px solid;
849
+ border-left: ${colors.darkGray[300]} 1px solid;
850
+ border-top: ${colors.darkGray[300]} 1px solid;
851
+ border-bottom: none;
852
+ border-radius: ${border.radius.sm} ${border.radius.sm} 0px 0px;
853
+ padding: ${size[1]} ${size[1.5]} ${size[.5]} ${size[1.5]};
854
+
855
+ &::after {
856
+ content: ' ';
857
+ position: absolute;
858
+ top: 100%;
859
+ left: -${size[2.5]};
860
+ height: ${size[1.5]};
861
+ width: calc(100% + ${size[5]});
862
+ }
863
+ `,
864
+ panelCloseBtnIcon: css`
865
+ color: ${colors.gray[400]};
866
+ width: ${size[2]};
867
+ height: ${size[2]};
868
+ `,
869
+ navigateButton: css`
870
+ background: none;
871
+ border: none;
872
+ padding: 0 0 0 4px;
873
+ margin: 0;
874
+ color: ${colors.gray[400]};
875
+ font-size: ${fontSize.md};
876
+ cursor: pointer;
877
+ line-height: 1;
878
+ vertical-align: middle;
879
+ margin-right: 0.5ch;
880
+ flex-shrink: 0;
881
+ &:hover {
882
+ color: ${colors.blue[300]};
883
+ }
884
+ `
885
+ };
886
+ };
887
+ function useStyles$1() {
888
+ const [_styles] = require_context.createSignal(stylesFactory$1(require_context.useContext(require_context.ShadowDomTargetContext)));
889
+ return _styles;
890
+ }
891
+ //#endregion
892
+ //#region src/useLocalStorage.ts
893
+ var getItem = (key) => {
894
+ try {
895
+ const itemValue = localStorage.getItem(key);
896
+ if (typeof itemValue === "string") return JSON.parse(itemValue);
897
+ return;
898
+ } catch {
899
+ return;
900
+ }
901
+ };
902
+ function useLocalStorage(key, defaultValue) {
903
+ const [value, setValue] = require_context.createSignal();
904
+ require_context.createEffect(() => {
905
+ const initialValue = getItem(key);
906
+ if (typeof initialValue === "undefined" || initialValue === null) setValue(typeof defaultValue === "function" ? defaultValue() : defaultValue);
907
+ else setValue(initialValue);
908
+ });
909
+ const setter = (updater) => {
910
+ setValue((old) => {
911
+ let newVal = updater;
912
+ if (typeof updater == "function") newVal = updater(old);
913
+ try {
914
+ localStorage.setItem(key, JSON.stringify(newVal));
915
+ } catch {}
916
+ return newVal;
917
+ });
918
+ };
919
+ return [value, setter];
920
+ }
921
+ //#endregion
922
+ //#region src/utils.tsx
923
+ var isServer = typeof window === "undefined";
924
+ function getStatusColor(match) {
925
+ return match.isFetching && match.status === "success" ? match.isFetching === "beforeLoad" ? "purple" : "blue" : {
926
+ pending: "yellow",
927
+ success: "green",
928
+ error: "red",
929
+ notFound: "purple",
930
+ redirected: "gray"
931
+ }[match.status];
932
+ }
933
+ function getRouteStatusColor(matches, route) {
934
+ const found = matches.find((d) => d.routeId === route.id);
935
+ if (!found) return "gray";
936
+ return getStatusColor(found);
937
+ }
938
+ function useIsMounted() {
939
+ const [isMounted, setIsMounted] = require_context.createSignal(false);
940
+ (isServer ? require_context.createEffect : require_context.createRenderEffect)(() => {
941
+ setIsMounted(true);
942
+ });
943
+ return isMounted;
944
+ }
945
+ /**
946
+ * Displays a string regardless the type of the data
947
+ * @param {unknown} value Value to be stringified
948
+ */
949
+ var displayValue = (value) => {
950
+ const name = Object.getOwnPropertyNames(Object(value));
951
+ const newValue = typeof value === "bigint" ? `${value.toString()}n` : value;
952
+ try {
953
+ return JSON.stringify(newValue, name);
954
+ } catch (e) {
955
+ return `unable to stringify`;
956
+ }
957
+ };
958
+ function multiSortBy(arr, accessors = [(d) => d]) {
959
+ return arr.map((d, i) => [d, i]).sort(([a, ai], [b, bi]) => {
960
+ for (const accessor of accessors) {
961
+ const ao = accessor(a);
962
+ const bo = accessor(b);
963
+ if (typeof ao === "undefined") {
964
+ if (typeof bo === "undefined") continue;
965
+ return 1;
966
+ }
967
+ if (ao === bo) continue;
968
+ return ao > bo ? 1 : -1;
969
+ }
970
+ return ai - bi;
971
+ }).map(([d]) => d);
972
+ }
973
+ //#endregion
974
+ //#region src/Explorer.tsx
975
+ var _tmpl$$3 = /* @__PURE__ */ require_context.template(`<span><svg xmlns=http://www.w3.org/2000/svg width=12 height=12 fill=none viewBox="0 0 24 24"><path stroke=currentColor stroke-linecap=round stroke-linejoin=round stroke-width=2 d="M9 18l6-6-6-6">`), _tmpl$2$1 = /* @__PURE__ */ require_context.template(`<div>`), _tmpl$3$1 = /* @__PURE__ */ require_context.template(`<button><span> `), _tmpl$4$1 = /* @__PURE__ */ require_context.template(`<div><div><button> [<!> ... <!>]`), _tmpl$5$1 = /* @__PURE__ */ require_context.template(`<button><span></span> 🔄 `), _tmpl$6$1 = /* @__PURE__ */ require_context.template(`<span>:`), _tmpl$7$1 = /* @__PURE__ */ require_context.template(`<span>`);
976
+ var Expander = ({ expanded, style = {} }) => {
977
+ const styles = useStyles();
978
+ return (() => {
979
+ var _el$ = _tmpl$$3(), _el$2 = _el$.firstChild;
980
+ require_context.createRenderEffect((_p$) => {
981
+ var _v$ = styles().expander, _v$2 = (0, clsx.clsx)(styles().expanderIcon(expanded));
982
+ _v$ !== _p$.e && require_context.className(_el$, _p$.e = _v$);
983
+ _v$2 !== _p$.t && require_context.setAttribute(_el$2, "class", _p$.t = _v$2);
984
+ return _p$;
985
+ }, {
986
+ e: void 0,
987
+ t: void 0
988
+ });
989
+ return _el$;
990
+ })();
991
+ };
992
+ /**
993
+ * Chunk elements in the array by size
994
+ *
995
+ * when the array cannot be chunked evenly by size, the last chunk will be
996
+ * filled with the remaining elements
997
+ *
998
+ * @example
999
+ * chunkArray(['a','b', 'c', 'd', 'e'], 2) // returns [['a','b'], ['c', 'd'], ['e']]
1000
+ */
1001
+ function chunkArray(array, size) {
1002
+ if (size < 1) return [];
1003
+ let i = 0;
1004
+ const result = [];
1005
+ while (i < array.length) {
1006
+ result.push(array.slice(i, i + size));
1007
+ i = i + size;
1008
+ }
1009
+ return result;
1010
+ }
1011
+ function isIterable(x) {
1012
+ return Symbol.iterator in x;
1013
+ }
1014
+ function Explorer({ value, defaultExpanded, pageSize = 100, filterSubEntries, ...rest }) {
1015
+ const [expanded, setExpanded] = require_context.createSignal(Boolean(defaultExpanded));
1016
+ const toggleExpanded = () => setExpanded((old) => !old);
1017
+ const type = require_context.createMemo(() => typeof value());
1018
+ const subEntries = require_context.createMemo(() => {
1019
+ let entries = [];
1020
+ const makeProperty = (sub) => {
1021
+ const subDefaultExpanded = defaultExpanded === true ? { [sub.label]: true } : defaultExpanded?.[sub.label];
1022
+ return {
1023
+ ...sub,
1024
+ value: () => sub.value,
1025
+ defaultExpanded: subDefaultExpanded
1026
+ };
1027
+ };
1028
+ if (Array.isArray(value())) entries = value().map((d, i) => makeProperty({
1029
+ label: i.toString(),
1030
+ value: d
1031
+ }));
1032
+ else if (value() !== null && typeof value() === "object" && isIterable(value()) && typeof value()[Symbol.iterator] === "function") entries = Array.from(value(), (val, i) => makeProperty({
1033
+ label: i.toString(),
1034
+ value: val
1035
+ }));
1036
+ else if (typeof value() === "object" && value() !== null) entries = Object.entries(value()).map(([key, val]) => makeProperty({
1037
+ label: key,
1038
+ value: val
1039
+ }));
1040
+ return filterSubEntries ? filterSubEntries(entries) : entries;
1041
+ });
1042
+ const subEntryPages = require_context.createMemo(() => chunkArray(subEntries(), pageSize));
1043
+ const [expandedPages, setExpandedPages] = require_context.createSignal([]);
1044
+ const [valueSnapshot, setValueSnapshot] = require_context.createSignal(void 0);
1045
+ const styles = useStyles();
1046
+ const refreshValueSnapshot = () => {
1047
+ setValueSnapshot(value()());
1048
+ };
1049
+ const handleEntry = (entry) => require_context.createComponent(Explorer, require_context.mergeProps({
1050
+ value,
1051
+ filterSubEntries
1052
+ }, rest, entry));
1053
+ return (() => {
1054
+ var _el$3 = _tmpl$2$1();
1055
+ require_context.insert(_el$3, (() => {
1056
+ var _c$ = require_context.memo(() => !!subEntryPages().length);
1057
+ return () => _c$() ? [(() => {
1058
+ var _el$4 = _tmpl$3$1(), _el$5 = _el$4.firstChild, _el$6 = _el$5.firstChild;
1059
+ _el$4.$$click = () => toggleExpanded();
1060
+ require_context.insert(_el$4, require_context.createComponent(Expander, { get expanded() {
1061
+ return expanded() ?? false;
1062
+ } }), _el$5);
1063
+ require_context.insert(_el$4, () => rest.label, _el$5);
1064
+ require_context.insert(_el$5, () => String(type).toLowerCase() === "iterable" ? "(Iterable) " : "", _el$6);
1065
+ require_context.insert(_el$5, () => subEntries().length, _el$6);
1066
+ require_context.insert(_el$5, () => subEntries().length > 1 ? `items` : `item`, null);
1067
+ require_context.createRenderEffect((_p$) => {
1068
+ var _v$3 = styles().expandButton, _v$4 = styles().info;
1069
+ _v$3 !== _p$.e && require_context.className(_el$4, _p$.e = _v$3);
1070
+ _v$4 !== _p$.t && require_context.className(_el$5, _p$.t = _v$4);
1071
+ return _p$;
1072
+ }, {
1073
+ e: void 0,
1074
+ t: void 0
1075
+ });
1076
+ return _el$4;
1077
+ })(), require_context.memo(() => require_context.memo(() => !!(expanded() ?? false))() ? require_context.memo(() => subEntryPages().length === 1)() ? (() => {
1078
+ var _el$7 = _tmpl$2$1();
1079
+ require_context.insert(_el$7, () => subEntries().map((entry, index) => handleEntry(entry)));
1080
+ require_context.createRenderEffect(() => require_context.className(_el$7, styles().subEntries));
1081
+ return _el$7;
1082
+ })() : (() => {
1083
+ var _el$8 = _tmpl$2$1();
1084
+ require_context.insert(_el$8, () => subEntryPages().map((entries, index) => {
1085
+ return (() => {
1086
+ var _el$9 = _tmpl$4$1(), _el$0 = _el$9.firstChild, _el$1 = _el$0.firstChild, _el$10 = _el$1.firstChild, _el$15 = _el$10.nextSibling, _el$16 = _el$15.nextSibling.nextSibling;
1087
+ _el$16.nextSibling;
1088
+ _el$1.$$click = () => setExpandedPages((old) => old.includes(index) ? old.filter((d) => d !== index) : [...old, index]);
1089
+ require_context.insert(_el$1, require_context.createComponent(Expander, { get expanded() {
1090
+ return expandedPages().includes(index);
1091
+ } }), _el$10);
1092
+ require_context.insert(_el$1, index * pageSize, _el$15);
1093
+ require_context.insert(_el$1, index * pageSize + pageSize - 1, _el$16);
1094
+ require_context.insert(_el$0, (() => {
1095
+ var _c$2 = require_context.memo(() => !!expandedPages().includes(index));
1096
+ return () => _c$2() ? (() => {
1097
+ var _el$17 = _tmpl$2$1();
1098
+ require_context.insert(_el$17, () => entries.map((entry) => handleEntry(entry)));
1099
+ require_context.createRenderEffect(() => require_context.className(_el$17, styles().subEntries));
1100
+ return _el$17;
1101
+ })() : null;
1102
+ })(), null);
1103
+ require_context.createRenderEffect((_p$) => {
1104
+ var _v$5 = styles().entry, _v$6 = (0, clsx.clsx)(styles().labelButton, "labelButton");
1105
+ _v$5 !== _p$.e && require_context.className(_el$0, _p$.e = _v$5);
1106
+ _v$6 !== _p$.t && require_context.className(_el$1, _p$.t = _v$6);
1107
+ return _p$;
1108
+ }, {
1109
+ e: void 0,
1110
+ t: void 0
1111
+ });
1112
+ return _el$9;
1113
+ })();
1114
+ }));
1115
+ require_context.createRenderEffect(() => require_context.className(_el$8, styles().subEntries));
1116
+ return _el$8;
1117
+ })() : null)] : require_context.memo(() => type() === "function")() ? require_context.createComponent(Explorer, {
1118
+ get label() {
1119
+ return (() => {
1120
+ var _el$18 = _tmpl$5$1(), _el$19 = _el$18.firstChild;
1121
+ _el$18.$$click = refreshValueSnapshot;
1122
+ require_context.insert(_el$19, () => rest.label);
1123
+ require_context.createRenderEffect(() => require_context.className(_el$18, styles().refreshValueBtn));
1124
+ return _el$18;
1125
+ })();
1126
+ },
1127
+ value: valueSnapshot,
1128
+ defaultExpanded: {}
1129
+ }) : [
1130
+ (() => {
1131
+ var _el$20 = _tmpl$6$1(), _el$21 = _el$20.firstChild;
1132
+ require_context.insert(_el$20, () => rest.label, _el$21);
1133
+ return _el$20;
1134
+ })(),
1135
+ " ",
1136
+ (() => {
1137
+ var _el$22 = _tmpl$7$1();
1138
+ require_context.insert(_el$22, () => displayValue(value()));
1139
+ require_context.createRenderEffect(() => require_context.className(_el$22, styles().value));
1140
+ return _el$22;
1141
+ })()
1142
+ ];
1143
+ })());
1144
+ require_context.createRenderEffect(() => require_context.className(_el$3, styles().entry));
1145
+ return _el$3;
1146
+ })();
1147
+ }
1148
+ var stylesFactory = (shadowDOMTarget) => {
1149
+ const { colors, font, size, alpha, shadow, border } = tokens;
1150
+ const { fontFamily, lineHeight, size: fontSize } = font;
1151
+ const css = shadowDOMTarget ? goober.css.bind({ target: shadowDOMTarget }) : goober.css;
1152
+ return {
1153
+ entry: css`
1154
+ font-family: ${fontFamily.mono};
1155
+ font-size: ${fontSize.xs};
1156
+ line-height: ${lineHeight.sm};
1157
+ outline: none;
1158
+ word-break: break-word;
1159
+ `,
1160
+ labelButton: css`
1161
+ cursor: pointer;
1162
+ color: inherit;
1163
+ font: inherit;
1164
+ outline: inherit;
1165
+ background: transparent;
1166
+ border: none;
1167
+ padding: 0;
1168
+ `,
1169
+ expander: css`
1170
+ display: inline-flex;
1171
+ align-items: center;
1172
+ justify-content: center;
1173
+ width: ${size[3]};
1174
+ height: ${size[3]};
1175
+ padding-left: 3px;
1176
+ box-sizing: content-box;
1177
+ `,
1178
+ expanderIcon: (expanded) => {
1179
+ if (expanded) return css`
1180
+ transform: rotate(90deg);
1181
+ transition: transform 0.1s ease;
1182
+ `;
1183
+ return css`
1184
+ transform: rotate(0deg);
1185
+ transition: transform 0.1s ease;
1186
+ `;
1187
+ },
1188
+ expandButton: css`
1189
+ display: flex;
1190
+ gap: ${size[1]};
1191
+ align-items: center;
1192
+ cursor: pointer;
1193
+ color: inherit;
1194
+ font: inherit;
1195
+ outline: inherit;
1196
+ background: transparent;
1197
+ border: none;
1198
+ padding: 0;
1199
+ `,
1200
+ value: css`
1201
+ color: ${colors.purple[400]};
1202
+ `,
1203
+ subEntries: css`
1204
+ margin-left: ${size[2]};
1205
+ padding-left: ${size[2]};
1206
+ border-left: 2px solid ${colors.darkGray[400]};
1207
+ `,
1208
+ info: css`
1209
+ color: ${colors.gray[500]};
1210
+ font-size: ${fontSize["2xs"]};
1211
+ padding-left: ${size[1]};
1212
+ `,
1213
+ refreshValueBtn: css`
1214
+ appearance: none;
1215
+ border: 0;
1216
+ cursor: pointer;
1217
+ background: transparent;
1218
+ color: inherit;
1219
+ padding: 0;
1220
+ font-family: ${fontFamily.mono};
1221
+ font-size: ${fontSize.xs};
1222
+ `
1223
+ };
1224
+ };
1225
+ function useStyles() {
1226
+ const [_styles] = require_context.createSignal(stylesFactory(require_context.useContext(require_context.ShadowDomTargetContext)));
1227
+ return _styles;
1228
+ }
1229
+ require_context.delegateEvents(["click"]);
1230
+ //#endregion
1231
+ //#region src/AgeTicker.tsx
1232
+ var _tmpl$$2 = /* @__PURE__ */ require_context.template(`<div><div></div><div>/</div><div></div><div>/</div><div>`);
1233
+ function formatTime(ms) {
1234
+ const units = [
1235
+ "s",
1236
+ "min",
1237
+ "h",
1238
+ "d"
1239
+ ];
1240
+ const values = [
1241
+ ms / 1e3,
1242
+ ms / 6e4,
1243
+ ms / 36e5,
1244
+ ms / 864e5
1245
+ ];
1246
+ let chosenUnitIndex = 0;
1247
+ for (let i = 1; i < values.length; i++) {
1248
+ if (values[i] < 1) break;
1249
+ chosenUnitIndex = i;
1250
+ }
1251
+ return new Intl.NumberFormat(navigator.language, {
1252
+ compactDisplay: "short",
1253
+ notation: "compact",
1254
+ maximumFractionDigits: 0
1255
+ }).format(values[chosenUnitIndex]) + units[chosenUnitIndex];
1256
+ }
1257
+ function AgeTicker({ match, router }) {
1258
+ const styles = useStyles$1();
1259
+ if (!match) return null;
1260
+ const route = router().looseRoutesById[match.routeId];
1261
+ if (!route.options.loader) return null;
1262
+ const age = Date.now() - match.updatedAt;
1263
+ const staleTime = route.options.staleTime ?? router().options.defaultStaleTime ?? 0;
1264
+ const gcTime = route.options.gcTime ?? router().options.defaultGcTime ?? 1800 * 1e3;
1265
+ return (() => {
1266
+ var _el$ = _tmpl$$2(), _el$2 = _el$.firstChild, _el$4 = _el$2.nextSibling.nextSibling, _el$6 = _el$4.nextSibling.nextSibling;
1267
+ require_context.insert(_el$2, () => formatTime(age));
1268
+ require_context.insert(_el$4, () => formatTime(staleTime));
1269
+ require_context.insert(_el$6, () => formatTime(gcTime));
1270
+ require_context.createRenderEffect(() => require_context.className(_el$, (0, clsx.clsx)(styles().ageTicker(age > staleTime))));
1271
+ return _el$;
1272
+ })();
1273
+ }
1274
+ //#endregion
1275
+ //#region src/NavigateButton.tsx
1276
+ var _tmpl$$1 = /* @__PURE__ */ require_context.template(`<button type=button>➔`);
1277
+ function NavigateButton({ to, params, search, router }) {
1278
+ const styles = useStyles$1();
1279
+ return (() => {
1280
+ var _el$ = _tmpl$$1();
1281
+ _el$.$$click = (e) => {
1282
+ e.stopPropagation();
1283
+ router().navigate({
1284
+ to,
1285
+ params,
1286
+ search
1287
+ });
1288
+ };
1289
+ require_context.setAttribute(_el$, "title", `Navigate to ${to}`);
1290
+ require_context.createRenderEffect(() => require_context.className(_el$, styles().navigateButton));
1291
+ return _el$;
1292
+ })();
1293
+ }
1294
+ require_context.delegateEvents(["click"]);
1295
+ //#endregion
1296
+ //#region src/BaseTanStackRouterDevtoolsPanel.tsx
1297
+ var _tmpl$ = /* @__PURE__ */ require_context.template(`<button><div>TANSTACK</div><div>TanStack Router v1`), _tmpl$2 = /* @__PURE__ */ require_context.template(`<div style=display:flex;align-items:center;width:100%><div style=flex-grow:1;min-width:0>`), _tmpl$3 = /* @__PURE__ */ require_context.template(`<code> `), _tmpl$4 = /* @__PURE__ */ require_context.template(`<code>`), _tmpl$5 = /* @__PURE__ */ require_context.template(`<div><div role=button><div>`), _tmpl$6 = /* @__PURE__ */ require_context.template(`<div>`), _tmpl$7 = /* @__PURE__ */ require_context.template(`<div><ul>`), _tmpl$8 = /* @__PURE__ */ require_context.template(`<div><button><svg xmlns=http://www.w3.org/2000/svg width=10 height=6 fill=none viewBox="0 0 10 6"><path stroke=currentColor stroke-linecap=round stroke-linejoin=round stroke-width=1.667 d="M1 1l4 4 4-4"></path></svg></button><div><div></div><div><div></div></div></div><div><div><div><span>Pathname</span></div><div><code></code></div><div><div><button type=button>Routes</button><button type=button>Matches</button><button type=button>History</button></div><div><div>age / staleTime / gcTime</div></div></div><div>`), _tmpl$9 = /* @__PURE__ */ require_context.template(`<div><span>masked`), _tmpl$0 = /* @__PURE__ */ require_context.template(`<div role=button><div>`), _tmpl$1 = /* @__PURE__ */ require_context.template(`<li><div>`), _tmpl$10 = /* @__PURE__ */ require_context.template(`<li>This panel displays the most recent 15 navigations.`), _tmpl$11 = /* @__PURE__ */ require_context.template(`<div><div><div>Cached Matches</div><div>age / staleTime / gcTime</div></div><div>`), _tmpl$12 = /* @__PURE__ */ require_context.template(`<div><div>Match Details</div><div><div><div><div></div></div><div><div>ID:</div><div><code></code></div></div><div><div>State:</div><div></div></div><div><div>Last Updated:</div><div></div></div></div></div><div>Explorer</div><div>`), _tmpl$13 = /* @__PURE__ */ require_context.template(`<div>Loader Data`), _tmpl$14 = /* @__PURE__ */ require_context.template(`<div><div><span>Search Params</span></div><div>`), _tmpl$15 = /* @__PURE__ */ require_context.template(`<span style=margin-left:0.5rem>`), _tmpl$16 = /* @__PURE__ */ require_context.template(`<button type=button aria-label="Copy value to clipboard"style=cursor:pointer>`);
1298
+ var HISTORY_LIMIT = 15;
1299
+ function Logo(props) {
1300
+ const { className: className$1, ...rest } = props;
1301
+ const styles = useStyles$1();
1302
+ return (() => {
1303
+ var _el$ = _tmpl$(), _el$2 = _el$.firstChild, _el$3 = _el$2.nextSibling;
1304
+ require_context.spread(_el$, require_context.mergeProps(rest, { get ["class"]() {
1305
+ return (0, clsx.clsx)(styles().logo, className$1 ? className$1() : "");
1306
+ } }), false, true);
1307
+ require_context.createRenderEffect((_p$) => {
1308
+ var _v$ = styles().tanstackLogo, _v$2 = styles().routerLogo;
1309
+ _v$ !== _p$.e && require_context.className(_el$2, _p$.e = _v$);
1310
+ _v$2 !== _p$.t && require_context.className(_el$3, _p$.t = _v$2);
1311
+ return _p$;
1312
+ }, {
1313
+ e: void 0,
1314
+ t: void 0
1315
+ });
1316
+ return _el$;
1317
+ })();
1318
+ }
1319
+ function NavigateLink(props) {
1320
+ return (() => {
1321
+ var _el$4 = _tmpl$2(), _el$5 = _el$4.firstChild;
1322
+ require_context.insert(_el$4, () => props.left, _el$5);
1323
+ require_context.insert(_el$5, () => props.children);
1324
+ require_context.insert(_el$4, () => props.right, null);
1325
+ require_context.createRenderEffect(() => require_context.className(_el$4, props.class));
1326
+ return _el$4;
1327
+ })();
1328
+ }
1329
+ function RouteComp({ routerState, router, route, isRoot, activeId, setActiveId }) {
1330
+ const styles = useStyles$1();
1331
+ const matches = require_context.createMemo(() => routerState().pendingMatches || routerState().matches);
1332
+ const match = require_context.createMemo(() => routerState().matches.find((d) => d.routeId === route.id));
1333
+ const param = require_context.createMemo(() => {
1334
+ try {
1335
+ if (match()?.params) {
1336
+ const p = match()?.params;
1337
+ const r = route.path || (0, _tanstack_router_core.trimPath)(route.id);
1338
+ if (r.startsWith("$")) {
1339
+ const trimmed = r.slice(1);
1340
+ if (p[trimmed]) return `(${p[trimmed]})`;
1341
+ }
1342
+ }
1343
+ return "";
1344
+ } catch (error) {
1345
+ return "";
1346
+ }
1347
+ });
1348
+ const navigationTarget = require_context.createMemo(() => {
1349
+ if (isRoot) return void 0;
1350
+ if (!route.path) return void 0;
1351
+ const allParams = Object.assign({}, ...matches().map((m) => m.params));
1352
+ const interpolated = (0, _tanstack_router_core.interpolatePath)({
1353
+ path: route.fullPath,
1354
+ params: allParams,
1355
+ decoder: router().pathParamsDecoder
1356
+ });
1357
+ return !interpolated.isMissingParams ? interpolated.interpolatedPath : void 0;
1358
+ });
1359
+ return (() => {
1360
+ var _el$6 = _tmpl$5(), _el$7 = _el$6.firstChild, _el$8 = _el$7.firstChild;
1361
+ _el$7.$$click = () => {
1362
+ if (match()) setActiveId(activeId() === route.id ? "" : route.id);
1363
+ };
1364
+ require_context.insert(_el$7, require_context.createComponent(NavigateLink, {
1365
+ get ["class"]() {
1366
+ return (0, clsx.clsx)(styles().routesRow(!!match()));
1367
+ },
1368
+ get left() {
1369
+ return require_context.createComponent(require_context.Show, {
1370
+ get when() {
1371
+ return navigationTarget();
1372
+ },
1373
+ children: (navigate) => require_context.createComponent(NavigateButton, {
1374
+ get to() {
1375
+ return navigate();
1376
+ },
1377
+ router
1378
+ })
1379
+ });
1380
+ },
1381
+ get right() {
1382
+ return require_context.createComponent(AgeTicker, {
1383
+ get match() {
1384
+ return match();
1385
+ },
1386
+ router
1387
+ });
1388
+ },
1389
+ get children() {
1390
+ return [(() => {
1391
+ var _el$9 = _tmpl$3(), _el$0 = _el$9.firstChild;
1392
+ require_context.insert(_el$9, () => isRoot ? _tanstack_router_core.rootRouteId : route.path || (0, _tanstack_router_core.trimPath)(route.id), _el$0);
1393
+ require_context.createRenderEffect(() => require_context.className(_el$9, styles().code));
1394
+ return _el$9;
1395
+ })(), (() => {
1396
+ var _el$1 = _tmpl$4();
1397
+ require_context.insert(_el$1, param);
1398
+ require_context.createRenderEffect(() => require_context.className(_el$1, styles().routeParamInfo));
1399
+ return _el$1;
1400
+ })()];
1401
+ }
1402
+ }), null);
1403
+ require_context.insert(_el$6, (() => {
1404
+ var _c$ = require_context.memo(() => !!route.children?.length);
1405
+ return () => _c$() ? (() => {
1406
+ var _el$10 = _tmpl$6();
1407
+ require_context.insert(_el$10, () => [...route.children].sort((a, b) => {
1408
+ return a.rank - b.rank;
1409
+ }).map((r) => require_context.createComponent(RouteComp, {
1410
+ routerState,
1411
+ router,
1412
+ route: r,
1413
+ activeId,
1414
+ setActiveId
1415
+ })));
1416
+ require_context.createRenderEffect(() => require_context.className(_el$10, styles().nestedRouteRow(!!isRoot)));
1417
+ return _el$10;
1418
+ })() : null;
1419
+ })(), null);
1420
+ require_context.createRenderEffect((_p$) => {
1421
+ var _v$3 = `Open match details for ${route.id}`, _v$4 = (0, clsx.clsx)(styles().routesRowContainer(route.id === activeId(), !!match())), _v$5 = (0, clsx.clsx)(styles().matchIndicator(getRouteStatusColor(matches(), route)));
1422
+ _v$3 !== _p$.e && require_context.setAttribute(_el$7, "aria-label", _p$.e = _v$3);
1423
+ _v$4 !== _p$.t && require_context.className(_el$7, _p$.t = _v$4);
1424
+ _v$5 !== _p$.a && require_context.className(_el$8, _p$.a = _v$5);
1425
+ return _p$;
1426
+ }, {
1427
+ e: void 0,
1428
+ t: void 0,
1429
+ a: void 0
1430
+ });
1431
+ return _el$6;
1432
+ })();
1433
+ }
1434
+ var BaseTanStackRouterDevtoolsPanel = function BaseTanStackRouterDevtoolsPanel({ ...props }) {
1435
+ const { isOpen = true, setIsOpen, handleDragStart, router, routerState, shadowDOMTarget, ...panelProps } = props;
1436
+ const { onCloseClick } = require_context.useDevtoolsOnClose();
1437
+ const styles = useStyles$1();
1438
+ const { className: className$2, style, ...otherPanelProps } = panelProps;
1439
+ (0, tiny_invariant.default)(router, "No router was found for the TanStack Router Devtools. Please place the devtools in the <RouterProvider> component tree or pass the router instance to the devtools manually.");
1440
+ const [currentTab, setCurrentTab] = useLocalStorage("tanstackRouterDevtoolsActiveTab", "routes");
1441
+ const [activeId, setActiveId] = useLocalStorage("tanstackRouterDevtoolsActiveRouteId", "");
1442
+ const [history, setHistory] = require_context.createSignal([]);
1443
+ const [hasHistoryOverflowed, setHasHistoryOverflowed] = require_context.createSignal(false);
1444
+ require_context.createEffect(() => {
1445
+ const matches = routerState().matches;
1446
+ const currentMatch = matches[matches.length - 1];
1447
+ if (!currentMatch) return;
1448
+ const historyUntracked = require_context.untrack(() => history());
1449
+ const lastMatch = historyUntracked[0];
1450
+ const sameLocation = lastMatch && lastMatch.pathname === currentMatch.pathname && JSON.stringify(lastMatch.search ?? {}) === JSON.stringify(currentMatch.search ?? {});
1451
+ if (!lastMatch || !sameLocation) {
1452
+ if (historyUntracked.length >= HISTORY_LIMIT) setHasHistoryOverflowed(true);
1453
+ setHistory((prev) => {
1454
+ const newHistory = [currentMatch, ...prev];
1455
+ newHistory.splice(HISTORY_LIMIT);
1456
+ return newHistory;
1457
+ });
1458
+ }
1459
+ });
1460
+ const activeMatch = require_context.createMemo(() => {
1461
+ return [
1462
+ ...routerState().pendingMatches ?? [],
1463
+ ...routerState().matches,
1464
+ ...routerState().cachedMatches
1465
+ ].find((d) => d.routeId === activeId() || d.id === activeId());
1466
+ });
1467
+ const hasSearch = require_context.createMemo(() => Object.keys(routerState().location.search).length);
1468
+ const explorerState = require_context.createMemo(() => {
1469
+ return {
1470
+ ...router(),
1471
+ state: routerState()
1472
+ };
1473
+ });
1474
+ const routerExplorerValue = require_context.createMemo(() => Object.fromEntries(multiSortBy(Object.keys(explorerState()), [
1475
+ "state",
1476
+ "routesById",
1477
+ "routesByPath",
1478
+ "options",
1479
+ "manifest"
1480
+ ].map((d) => (dd) => dd !== d)).map((key) => [key, explorerState()[key]]).filter((d) => typeof d[1] !== "function" && ![
1481
+ "__store",
1482
+ "basepath",
1483
+ "injectedHtml",
1484
+ "subscribers",
1485
+ "latestLoadPromise",
1486
+ "navigateTimeout",
1487
+ "resetNextScroll",
1488
+ "tempLocationKey",
1489
+ "latestLocation",
1490
+ "routeTree",
1491
+ "history"
1492
+ ].includes(d[0]))));
1493
+ const activeMatchLoaderData = require_context.createMemo(() => activeMatch()?.loaderData);
1494
+ const activeMatchValue = require_context.createMemo(() => activeMatch());
1495
+ const locationSearchValue = require_context.createMemo(() => routerState().location.search);
1496
+ return (() => {
1497
+ var _el$11 = _tmpl$8(), _el$12 = _el$11.firstChild, _el$13 = _el$12.firstChild, _el$14 = _el$12.nextSibling, _el$15 = _el$14.firstChild, _el$16 = _el$15.nextSibling, _el$17 = _el$16.firstChild, _el$18 = _el$14.nextSibling, _el$19 = _el$18.firstChild, _el$20 = _el$19.firstChild;
1498
+ _el$20.firstChild;
1499
+ var _el$22 = _el$20.nextSibling, _el$23 = _el$22.firstChild, _el$24 = _el$22.nextSibling, _el$25 = _el$24.firstChild, _el$26 = _el$25.firstChild, _el$27 = _el$26.nextSibling, _el$28 = _el$27.nextSibling, _el$29 = _el$25.nextSibling, _el$30 = _el$24.nextSibling;
1500
+ require_context.spread(_el$11, require_context.mergeProps({
1501
+ get ["class"]() {
1502
+ return (0, clsx.clsx)(styles().devtoolsPanel, "TanStackRouterDevtoolsPanel", className$2 ? className$2() : "");
1503
+ },
1504
+ get style() {
1505
+ return style ? style() : "";
1506
+ }
1507
+ }, otherPanelProps), false, true);
1508
+ require_context.insert(_el$11, handleDragStart ? (() => {
1509
+ var _el$34 = _tmpl$6();
1510
+ require_context.addEventListener(_el$34, "mousedown", handleDragStart, true);
1511
+ require_context.createRenderEffect(() => require_context.className(_el$34, styles().dragHandle));
1512
+ return _el$34;
1513
+ })() : null, _el$12);
1514
+ _el$12.$$click = (e) => {
1515
+ if (setIsOpen) setIsOpen(false);
1516
+ onCloseClick(e);
1517
+ };
1518
+ require_context.insert(_el$15, require_context.createComponent(Logo, {
1519
+ "aria-hidden": true,
1520
+ onClick: (e) => {
1521
+ if (setIsOpen) setIsOpen(false);
1522
+ onCloseClick(e);
1523
+ }
1524
+ }));
1525
+ require_context.insert(_el$17, require_context.createComponent(Explorer, {
1526
+ label: "Router",
1527
+ value: routerExplorerValue,
1528
+ defaultExpanded: {
1529
+ state: {},
1530
+ context: {},
1531
+ options: {}
1532
+ },
1533
+ filterSubEntries: (subEntries) => {
1534
+ return subEntries.filter((d) => typeof d.value() !== "function");
1535
+ }
1536
+ }));
1537
+ require_context.insert(_el$20, (() => {
1538
+ var _c$2 = require_context.memo(() => !!routerState().location.maskedLocation);
1539
+ return () => _c$2() ? (() => {
1540
+ var _el$35 = _tmpl$9(), _el$36 = _el$35.firstChild;
1541
+ require_context.createRenderEffect((_p$) => {
1542
+ var _v$24 = styles().maskedBadgeContainer, _v$25 = styles().maskedBadge;
1543
+ _v$24 !== _p$.e && require_context.className(_el$35, _p$.e = _v$24);
1544
+ _v$25 !== _p$.t && require_context.className(_el$36, _p$.t = _v$25);
1545
+ return _p$;
1546
+ }, {
1547
+ e: void 0,
1548
+ t: void 0
1549
+ });
1550
+ return _el$35;
1551
+ })() : null;
1552
+ })(), null);
1553
+ require_context.insert(_el$23, () => routerState().location.pathname);
1554
+ require_context.insert(_el$22, (() => {
1555
+ var _c$3 = require_context.memo(() => !!routerState().location.maskedLocation);
1556
+ return () => _c$3() ? (() => {
1557
+ var _el$37 = _tmpl$4();
1558
+ require_context.insert(_el$37, () => routerState().location.maskedLocation?.pathname);
1559
+ require_context.createRenderEffect(() => require_context.className(_el$37, styles().maskedLocation));
1560
+ return _el$37;
1561
+ })() : null;
1562
+ })(), null);
1563
+ _el$26.$$click = () => {
1564
+ setCurrentTab("routes");
1565
+ };
1566
+ _el$27.$$click = () => {
1567
+ setCurrentTab("matches");
1568
+ };
1569
+ _el$28.$$click = () => {
1570
+ setCurrentTab("history");
1571
+ };
1572
+ require_context.insert(_el$30, require_context.createComponent(require_context.Switch, { get children() {
1573
+ return [
1574
+ require_context.createComponent(require_context.Match, {
1575
+ get when() {
1576
+ return currentTab() === "routes";
1577
+ },
1578
+ get children() {
1579
+ return require_context.createComponent(RouteComp, {
1580
+ routerState,
1581
+ router,
1582
+ get route() {
1583
+ return router().routeTree;
1584
+ },
1585
+ isRoot: true,
1586
+ activeId,
1587
+ setActiveId
1588
+ });
1589
+ }
1590
+ }),
1591
+ require_context.createComponent(require_context.Match, {
1592
+ get when() {
1593
+ return currentTab() === "matches";
1594
+ },
1595
+ get children() {
1596
+ var _el$31 = _tmpl$6();
1597
+ require_context.insert(_el$31, () => (routerState().pendingMatches?.length ? routerState().pendingMatches : routerState().matches)?.map((match, _i) => {
1598
+ return (() => {
1599
+ var _el$38 = _tmpl$0(), _el$39 = _el$38.firstChild;
1600
+ _el$38.$$click = () => setActiveId(activeId() === match.id ? "" : match.id);
1601
+ require_context.insert(_el$38, require_context.createComponent(NavigateLink, {
1602
+ get left() {
1603
+ return require_context.createComponent(NavigateButton, {
1604
+ get to() {
1605
+ return match.pathname;
1606
+ },
1607
+ get params() {
1608
+ return match.params;
1609
+ },
1610
+ get search() {
1611
+ return match.search;
1612
+ },
1613
+ router
1614
+ });
1615
+ },
1616
+ get right() {
1617
+ return require_context.createComponent(AgeTicker, {
1618
+ match,
1619
+ router
1620
+ });
1621
+ },
1622
+ get children() {
1623
+ var _el$40 = _tmpl$4();
1624
+ require_context.insert(_el$40, () => `${match.routeId === _tanstack_router_core.rootRouteId ? _tanstack_router_core.rootRouteId : match.pathname}`);
1625
+ require_context.createRenderEffect(() => require_context.className(_el$40, styles().matchID));
1626
+ return _el$40;
1627
+ }
1628
+ }), null);
1629
+ require_context.createRenderEffect((_p$) => {
1630
+ var _v$26 = `Open match details for ${match.id}`, _v$27 = (0, clsx.clsx)(styles().matchRow(match === activeMatch())), _v$28 = (0, clsx.clsx)(styles().matchIndicator(getStatusColor(match)));
1631
+ _v$26 !== _p$.e && require_context.setAttribute(_el$38, "aria-label", _p$.e = _v$26);
1632
+ _v$27 !== _p$.t && require_context.className(_el$38, _p$.t = _v$27);
1633
+ _v$28 !== _p$.a && require_context.className(_el$39, _p$.a = _v$28);
1634
+ return _p$;
1635
+ }, {
1636
+ e: void 0,
1637
+ t: void 0,
1638
+ a: void 0
1639
+ });
1640
+ return _el$38;
1641
+ })();
1642
+ }));
1643
+ return _el$31;
1644
+ }
1645
+ }),
1646
+ require_context.createComponent(require_context.Match, {
1647
+ get when() {
1648
+ return currentTab() === "history";
1649
+ },
1650
+ get children() {
1651
+ var _el$32 = _tmpl$7(), _el$33 = _el$32.firstChild;
1652
+ require_context.insert(_el$33, require_context.createComponent(require_context.For, {
1653
+ get each() {
1654
+ return history();
1655
+ },
1656
+ children: (match, index) => (() => {
1657
+ var _el$41 = _tmpl$1(), _el$42 = _el$41.firstChild;
1658
+ require_context.insert(_el$41, require_context.createComponent(NavigateLink, {
1659
+ get left() {
1660
+ return require_context.createComponent(NavigateButton, {
1661
+ get to() {
1662
+ return match.pathname;
1663
+ },
1664
+ get params() {
1665
+ return match.params;
1666
+ },
1667
+ get search() {
1668
+ return match.search;
1669
+ },
1670
+ router
1671
+ });
1672
+ },
1673
+ get right() {
1674
+ return require_context.createComponent(AgeTicker, {
1675
+ match,
1676
+ router
1677
+ });
1678
+ },
1679
+ get children() {
1680
+ var _el$43 = _tmpl$4();
1681
+ require_context.insert(_el$43, () => `${match.routeId === _tanstack_router_core.rootRouteId ? _tanstack_router_core.rootRouteId : match.pathname}`);
1682
+ require_context.createRenderEffect(() => require_context.className(_el$43, styles().matchID));
1683
+ return _el$43;
1684
+ }
1685
+ }), null);
1686
+ require_context.createRenderEffect((_p$) => {
1687
+ var _v$29 = (0, clsx.clsx)(styles().matchRow(match === activeMatch())), _v$30 = (0, clsx.clsx)(styles().matchIndicator(index() === 0 ? "green" : "gray"));
1688
+ _v$29 !== _p$.e && require_context.className(_el$41, _p$.e = _v$29);
1689
+ _v$30 !== _p$.t && require_context.className(_el$42, _p$.t = _v$30);
1690
+ return _p$;
1691
+ }, {
1692
+ e: void 0,
1693
+ t: void 0
1694
+ });
1695
+ return _el$41;
1696
+ })()
1697
+ }), null);
1698
+ require_context.insert(_el$33, (() => {
1699
+ var _c$4 = require_context.memo(() => !!hasHistoryOverflowed());
1700
+ return () => _c$4() ? (() => {
1701
+ var _el$44 = _tmpl$10();
1702
+ require_context.createRenderEffect(() => require_context.className(_el$44, styles().historyOverflowContainer));
1703
+ return _el$44;
1704
+ })() : null;
1705
+ })(), null);
1706
+ return _el$32;
1707
+ }
1708
+ })
1709
+ ];
1710
+ } }));
1711
+ require_context.insert(_el$18, (() => {
1712
+ var _c$5 = require_context.memo(() => !!routerState().cachedMatches.length);
1713
+ return () => _c$5() ? (() => {
1714
+ var _el$45 = _tmpl$11(), _el$46 = _el$45.firstChild, _el$48 = _el$46.firstChild.nextSibling, _el$49 = _el$46.nextSibling;
1715
+ require_context.insert(_el$49, () => routerState().cachedMatches.map((match) => {
1716
+ return (() => {
1717
+ var _el$50 = _tmpl$0(), _el$51 = _el$50.firstChild;
1718
+ _el$50.$$click = () => setActiveId(activeId() === match.id ? "" : match.id);
1719
+ require_context.insert(_el$50, require_context.createComponent(NavigateLink, {
1720
+ get left() {
1721
+ return require_context.createComponent(NavigateButton, {
1722
+ get to() {
1723
+ return match.pathname;
1724
+ },
1725
+ get params() {
1726
+ return match.params;
1727
+ },
1728
+ get search() {
1729
+ return match.search;
1730
+ },
1731
+ router
1732
+ });
1733
+ },
1734
+ get right() {
1735
+ return require_context.createComponent(AgeTicker, {
1736
+ match,
1737
+ router
1738
+ });
1739
+ },
1740
+ get children() {
1741
+ var _el$52 = _tmpl$4();
1742
+ require_context.insert(_el$52, () => `${match.id}`);
1743
+ require_context.createRenderEffect(() => require_context.className(_el$52, styles().matchID));
1744
+ return _el$52;
1745
+ }
1746
+ }), null);
1747
+ require_context.createRenderEffect((_p$) => {
1748
+ var _v$34 = `Open match details for ${match.id}`, _v$35 = (0, clsx.clsx)(styles().matchRow(match === activeMatch())), _v$36 = (0, clsx.clsx)(styles().matchIndicator(getStatusColor(match)));
1749
+ _v$34 !== _p$.e && require_context.setAttribute(_el$50, "aria-label", _p$.e = _v$34);
1750
+ _v$35 !== _p$.t && require_context.className(_el$50, _p$.t = _v$35);
1751
+ _v$36 !== _p$.a && require_context.className(_el$51, _p$.a = _v$36);
1752
+ return _p$;
1753
+ }, {
1754
+ e: void 0,
1755
+ t: void 0,
1756
+ a: void 0
1757
+ });
1758
+ return _el$50;
1759
+ })();
1760
+ }));
1761
+ require_context.createRenderEffect((_p$) => {
1762
+ var _v$31 = styles().cachedMatchesContainer, _v$32 = styles().detailsHeader, _v$33 = styles().detailsHeaderInfo;
1763
+ _v$31 !== _p$.e && require_context.className(_el$45, _p$.e = _v$31);
1764
+ _v$32 !== _p$.t && require_context.className(_el$46, _p$.t = _v$32);
1765
+ _v$33 !== _p$.a && require_context.className(_el$48, _p$.a = _v$33);
1766
+ return _p$;
1767
+ }, {
1768
+ e: void 0,
1769
+ t: void 0,
1770
+ a: void 0
1771
+ });
1772
+ return _el$45;
1773
+ })() : null;
1774
+ })(), null);
1775
+ require_context.insert(_el$11, (() => {
1776
+ var _c$6 = require_context.memo(() => !!(activeMatch() && activeMatch()?.status));
1777
+ return () => _c$6() ? (() => {
1778
+ var _el$53 = _tmpl$12(), _el$54 = _el$53.firstChild, _el$55 = _el$54.nextSibling, _el$56 = _el$55.firstChild, _el$57 = _el$56.firstChild, _el$58 = _el$57.firstChild, _el$59 = _el$57.nextSibling, _el$61 = _el$59.firstChild.nextSibling, _el$62 = _el$61.firstChild, _el$63 = _el$59.nextSibling, _el$65 = _el$63.firstChild.nextSibling, _el$66 = _el$63.nextSibling, _el$68 = _el$66.firstChild.nextSibling, _el$69 = _el$55.nextSibling, _el$70 = _el$69.nextSibling;
1779
+ require_context.insert(_el$58, (() => {
1780
+ var _c$8 = require_context.memo(() => !!(activeMatch()?.status === "success" && activeMatch()?.isFetching));
1781
+ return () => _c$8() ? "fetching" : activeMatch()?.status;
1782
+ })());
1783
+ require_context.insert(_el$62, () => activeMatch()?.id);
1784
+ require_context.insert(_el$65, (() => {
1785
+ var _c$9 = require_context.memo(() => !!routerState().pendingMatches?.find((d) => d.id === activeMatch()?.id));
1786
+ return () => _c$9() ? "Pending" : routerState().matches.find((d) => d.id === activeMatch()?.id) ? "Active" : "Cached";
1787
+ })());
1788
+ require_context.insert(_el$68, (() => {
1789
+ var _c$0 = require_context.memo(() => !!activeMatch()?.updatedAt);
1790
+ return () => _c$0() ? new Date(activeMatch()?.updatedAt).toLocaleTimeString() : "N/A";
1791
+ })());
1792
+ require_context.insert(_el$53, (() => {
1793
+ var _c$1 = require_context.memo(() => !!activeMatchLoaderData());
1794
+ return () => _c$1() ? [(() => {
1795
+ var _el$71 = _tmpl$13();
1796
+ require_context.createRenderEffect(() => require_context.className(_el$71, styles().detailsHeader));
1797
+ return _el$71;
1798
+ })(), (() => {
1799
+ var _el$72 = _tmpl$6();
1800
+ require_context.insert(_el$72, require_context.createComponent(Explorer, {
1801
+ label: "loaderData",
1802
+ value: activeMatchLoaderData,
1803
+ defaultExpanded: {}
1804
+ }));
1805
+ require_context.createRenderEffect(() => require_context.className(_el$72, styles().detailsContent));
1806
+ return _el$72;
1807
+ })()] : null;
1808
+ })(), _el$69);
1809
+ require_context.insert(_el$70, require_context.createComponent(Explorer, {
1810
+ label: "Match",
1811
+ value: activeMatchValue,
1812
+ defaultExpanded: {}
1813
+ }));
1814
+ require_context.createRenderEffect((_p$) => {
1815
+ var _v$37 = styles().thirdContainer, _v$38 = styles().detailsHeader, _v$39 = styles().matchDetails, _v$40 = styles().matchStatus(activeMatch()?.status, activeMatch()?.isFetching), _v$41 = styles().matchDetailsInfoLabel, _v$42 = styles().matchDetailsInfo, _v$43 = styles().matchDetailsInfoLabel, _v$44 = styles().matchDetailsInfo, _v$45 = styles().matchDetailsInfoLabel, _v$46 = styles().matchDetailsInfo, _v$47 = styles().detailsHeader, _v$48 = styles().detailsContent;
1816
+ _v$37 !== _p$.e && require_context.className(_el$53, _p$.e = _v$37);
1817
+ _v$38 !== _p$.t && require_context.className(_el$54, _p$.t = _v$38);
1818
+ _v$39 !== _p$.a && require_context.className(_el$56, _p$.a = _v$39);
1819
+ _v$40 !== _p$.o && require_context.className(_el$57, _p$.o = _v$40);
1820
+ _v$41 !== _p$.i && require_context.className(_el$59, _p$.i = _v$41);
1821
+ _v$42 !== _p$.n && require_context.className(_el$61, _p$.n = _v$42);
1822
+ _v$43 !== _p$.s && require_context.className(_el$63, _p$.s = _v$43);
1823
+ _v$44 !== _p$.h && require_context.className(_el$65, _p$.h = _v$44);
1824
+ _v$45 !== _p$.r && require_context.className(_el$66, _p$.r = _v$45);
1825
+ _v$46 !== _p$.d && require_context.className(_el$68, _p$.d = _v$46);
1826
+ _v$47 !== _p$.l && require_context.className(_el$69, _p$.l = _v$47);
1827
+ _v$48 !== _p$.u && require_context.className(_el$70, _p$.u = _v$48);
1828
+ return _p$;
1829
+ }, {
1830
+ e: void 0,
1831
+ t: void 0,
1832
+ a: void 0,
1833
+ o: void 0,
1834
+ i: void 0,
1835
+ n: void 0,
1836
+ s: void 0,
1837
+ h: void 0,
1838
+ r: void 0,
1839
+ d: void 0,
1840
+ l: void 0,
1841
+ u: void 0
1842
+ });
1843
+ return _el$53;
1844
+ })() : null;
1845
+ })(), null);
1846
+ require_context.insert(_el$11, (() => {
1847
+ var _c$7 = require_context.memo(() => !!hasSearch());
1848
+ return () => _c$7() ? (() => {
1849
+ var _el$73 = _tmpl$14(), _el$74 = _el$73.firstChild;
1850
+ _el$74.firstChild;
1851
+ var _el$76 = _el$74.nextSibling;
1852
+ require_context.insert(_el$74, typeof navigator !== "undefined" ? (() => {
1853
+ var _el$77 = _tmpl$15();
1854
+ require_context.insert(_el$77, require_context.createComponent(CopyButton, { getValue: () => {
1855
+ const search = routerState().location.search;
1856
+ return JSON.stringify(search);
1857
+ } }));
1858
+ return _el$77;
1859
+ })() : null, null);
1860
+ require_context.insert(_el$76, require_context.createComponent(Explorer, {
1861
+ value: locationSearchValue,
1862
+ get defaultExpanded() {
1863
+ return Object.keys(routerState().location.search).reduce((obj, next) => {
1864
+ obj[next] = {};
1865
+ return obj;
1866
+ }, {});
1867
+ }
1868
+ }));
1869
+ require_context.createRenderEffect((_p$) => {
1870
+ var _v$49 = styles().fourthContainer, _v$50 = styles().detailsHeader, _v$51 = styles().detailsContent;
1871
+ _v$49 !== _p$.e && require_context.className(_el$73, _p$.e = _v$49);
1872
+ _v$50 !== _p$.t && require_context.className(_el$74, _p$.t = _v$50);
1873
+ _v$51 !== _p$.a && require_context.className(_el$76, _p$.a = _v$51);
1874
+ return _p$;
1875
+ }, {
1876
+ e: void 0,
1877
+ t: void 0,
1878
+ a: void 0
1879
+ });
1880
+ return _el$73;
1881
+ })() : null;
1882
+ })(), null);
1883
+ require_context.createRenderEffect((_p$) => {
1884
+ var _v$6 = styles().panelCloseBtn, _v$7 = styles().panelCloseBtnIcon, _v$8 = styles().firstContainer, _v$9 = styles().row, _v$0 = styles().routerExplorerContainer, _v$1 = styles().routerExplorer, _v$10 = styles().secondContainer, _v$11 = styles().matchesContainer, _v$12 = styles().detailsHeader, _v$13 = styles().detailsContent, _v$14 = styles().detailsHeader, _v$15 = styles().routeMatchesToggle, _v$16 = currentTab() === "routes", _v$17 = (0, clsx.clsx)(styles().routeMatchesToggleBtn(currentTab() === "routes", true)), _v$18 = currentTab() === "matches", _v$19 = (0, clsx.clsx)(styles().routeMatchesToggleBtn(currentTab() === "matches", true)), _v$20 = currentTab() === "history", _v$21 = (0, clsx.clsx)(styles().routeMatchesToggleBtn(currentTab() === "history", false)), _v$22 = styles().detailsHeaderInfo, _v$23 = (0, clsx.clsx)(styles().routesContainer);
1885
+ _v$6 !== _p$.e && require_context.className(_el$12, _p$.e = _v$6);
1886
+ _v$7 !== _p$.t && require_context.setAttribute(_el$13, "class", _p$.t = _v$7);
1887
+ _v$8 !== _p$.a && require_context.className(_el$14, _p$.a = _v$8);
1888
+ _v$9 !== _p$.o && require_context.className(_el$15, _p$.o = _v$9);
1889
+ _v$0 !== _p$.i && require_context.className(_el$16, _p$.i = _v$0);
1890
+ _v$1 !== _p$.n && require_context.className(_el$17, _p$.n = _v$1);
1891
+ _v$10 !== _p$.s && require_context.className(_el$18, _p$.s = _v$10);
1892
+ _v$11 !== _p$.h && require_context.className(_el$19, _p$.h = _v$11);
1893
+ _v$12 !== _p$.r && require_context.className(_el$20, _p$.r = _v$12);
1894
+ _v$13 !== _p$.d && require_context.className(_el$22, _p$.d = _v$13);
1895
+ _v$14 !== _p$.l && require_context.className(_el$24, _p$.l = _v$14);
1896
+ _v$15 !== _p$.u && require_context.className(_el$25, _p$.u = _v$15);
1897
+ _v$16 !== _p$.c && (_el$26.disabled = _p$.c = _v$16);
1898
+ _v$17 !== _p$.w && require_context.className(_el$26, _p$.w = _v$17);
1899
+ _v$18 !== _p$.m && (_el$27.disabled = _p$.m = _v$18);
1900
+ _v$19 !== _p$.f && require_context.className(_el$27, _p$.f = _v$19);
1901
+ _v$20 !== _p$.y && (_el$28.disabled = _p$.y = _v$20);
1902
+ _v$21 !== _p$.g && require_context.className(_el$28, _p$.g = _v$21);
1903
+ _v$22 !== _p$.p && require_context.className(_el$29, _p$.p = _v$22);
1904
+ _v$23 !== _p$.b && require_context.className(_el$30, _p$.b = _v$23);
1905
+ return _p$;
1906
+ }, {
1907
+ e: void 0,
1908
+ t: void 0,
1909
+ a: void 0,
1910
+ o: void 0,
1911
+ i: void 0,
1912
+ n: void 0,
1913
+ s: void 0,
1914
+ h: void 0,
1915
+ r: void 0,
1916
+ d: void 0,
1917
+ l: void 0,
1918
+ u: void 0,
1919
+ c: void 0,
1920
+ w: void 0,
1921
+ m: void 0,
1922
+ f: void 0,
1923
+ y: void 0,
1924
+ g: void 0,
1925
+ p: void 0,
1926
+ b: void 0
1927
+ });
1928
+ return _el$11;
1929
+ })();
1930
+ };
1931
+ function CopyButton({ getValue }) {
1932
+ const [copied, setCopied] = require_context.createSignal(false);
1933
+ let timeoutId = null;
1934
+ const handleCopy = async () => {
1935
+ if (typeof navigator === "undefined" || !navigator.clipboard?.writeText) {
1936
+ console.warn("TanStack Router Devtools: Clipboard API unavailable");
1937
+ return;
1938
+ }
1939
+ try {
1940
+ const value = getValue();
1941
+ await navigator.clipboard.writeText(value);
1942
+ setCopied(true);
1943
+ if (timeoutId) clearTimeout(timeoutId);
1944
+ timeoutId = setTimeout(() => setCopied(false), 2500);
1945
+ } catch (e) {
1946
+ console.error("TanStack Router Devtools: Failed to copy", e);
1947
+ }
1948
+ };
1949
+ require_context.onCleanup(() => {
1950
+ if (timeoutId) clearTimeout(timeoutId);
1951
+ });
1952
+ return (() => {
1953
+ var _el$78 = _tmpl$16();
1954
+ _el$78.$$click = handleCopy;
1955
+ require_context.insert(_el$78, () => copied() ? "✅" : "📋");
1956
+ require_context.createRenderEffect(() => require_context.setAttribute(_el$78, "title", copied() ? "Copied!" : "Copy"));
1957
+ return _el$78;
1958
+ })();
1959
+ }
1960
+ require_context.delegateEvents(["click", "mousedown"]);
1961
+ //#endregion
1962
+ exports.BaseTanStackRouterDevtoolsPanel = BaseTanStackRouterDevtoolsPanel;
1963
+ exports.default = BaseTanStackRouterDevtoolsPanel;
1964
+ exports.__toESM = __toESM;
1965
+ exports.useIsMounted = useIsMounted;
1966
+ exports.useLocalStorage = useLocalStorage;
1967
+ exports.useStyles = useStyles$1;
1968
+
1969
+ //# sourceMappingURL=BaseTanStackRouterDevtoolsPanel-DdB0IT5G.cjs.map