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