@tanstack/router-devtools-core 1.132.51 → 1.133.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/{BaseTanStackRouterDevtoolsPanel-CaAQWNvS.js → BaseTanStackRouterDevtoolsPanel-Cbvcs84k.js} +263 -148
- package/dist/BaseTanStackRouterDevtoolsPanel-Cbvcs84k.js.map +1 -0
- package/dist/{BaseTanStackRouterDevtoolsPanel-CbH9Ihs_.cjs → BaseTanStackRouterDevtoolsPanel-CiObEXSM.cjs} +262 -147
- package/dist/BaseTanStackRouterDevtoolsPanel-CiObEXSM.cjs.map +1 -0
- package/dist/{FloatingTanStackRouterDevtools-0xtXUOcx.cjs → FloatingTanStackRouterDevtools-BMhRQRk5.cjs} +3 -3
- package/dist/{FloatingTanStackRouterDevtools-0xtXUOcx.cjs.map → FloatingTanStackRouterDevtools-BMhRQRk5.cjs.map} +1 -1
- package/dist/{FloatingTanStackRouterDevtools-DdHNTjWg.js → FloatingTanStackRouterDevtools-KvPiI7YB.js} +3 -3
- package/dist/{FloatingTanStackRouterDevtools-DdHNTjWg.js.map → FloatingTanStackRouterDevtools-KvPiI7YB.js.map} +1 -1
- package/dist/cjs/index.cjs +1 -1
- package/dist/cjs/useStyles.d.cts +2 -0
- package/dist/esm/index.js +1 -1
- package/dist/esm/useStyles.d.ts +2 -0
- package/dist/{index-BiZF0hsR.js → index-Bz4rofgr.js} +3 -3
- package/dist/{index-BiZF0hsR.js.map → index-Bz4rofgr.js.map} +1 -1
- package/dist/{index-CHaaetqh.cjs → index-sVJ8jjbP.cjs} +3 -3
- package/dist/{index-CHaaetqh.cjs.map → index-sVJ8jjbP.cjs.map} +1 -1
- package/package.json +1 -1
- package/src/BaseTanStackRouterDevtoolsPanel.tsx +169 -57
- package/src/useStyles.tsx +10 -0
- package/dist/BaseTanStackRouterDevtoolsPanel-CaAQWNvS.js.map +0 -1
- package/dist/BaseTanStackRouterDevtoolsPanel-CbH9Ihs_.cjs.map +0 -1
|
@@ -1,7 +1,17 @@
|
|
|
1
1
|
import { clsx as cx } from 'clsx'
|
|
2
2
|
import { default as invariant } from 'tiny-invariant'
|
|
3
3
|
import { interpolatePath, rootRouteId, trimPath } from '@tanstack/router-core'
|
|
4
|
-
import {
|
|
4
|
+
import {
|
|
5
|
+
For,
|
|
6
|
+
Match,
|
|
7
|
+
Show,
|
|
8
|
+
Switch,
|
|
9
|
+
createEffect,
|
|
10
|
+
createMemo,
|
|
11
|
+
createSignal,
|
|
12
|
+
onCleanup,
|
|
13
|
+
untrack,
|
|
14
|
+
} from 'solid-js'
|
|
5
15
|
import { useDevtoolsOnClose } from './context'
|
|
6
16
|
import { useStyles } from './useStyles'
|
|
7
17
|
import useLocalStorage from './useLocalStorage'
|
|
@@ -14,6 +24,7 @@ import { NavigateButton } from './NavigateButton'
|
|
|
14
24
|
import type {
|
|
15
25
|
AnyContext,
|
|
16
26
|
AnyRoute,
|
|
27
|
+
AnyRouteMatch,
|
|
17
28
|
AnyRouter,
|
|
18
29
|
FileRouteTypes,
|
|
19
30
|
MakeRouteMatchUnion,
|
|
@@ -54,6 +65,8 @@ export interface BaseDevtoolsPanelOptions {
|
|
|
54
65
|
shadowDOMTarget?: ShadowRoot
|
|
55
66
|
}
|
|
56
67
|
|
|
68
|
+
const HISTORY_LIMIT = 15
|
|
69
|
+
|
|
57
70
|
function Logo(props: any) {
|
|
58
71
|
const { className, ...rest } = props
|
|
59
72
|
const styles = useStyles()
|
|
@@ -257,16 +270,45 @@ export const BaseTanStackRouterDevtoolsPanel =
|
|
|
257
270
|
|
|
258
271
|
// useStore(router.__store)
|
|
259
272
|
|
|
260
|
-
const [
|
|
261
|
-
'
|
|
262
|
-
|
|
263
|
-
)
|
|
273
|
+
const [currentTab, setCurrentTab] = useLocalStorage<
|
|
274
|
+
'routes' | 'matches' | 'history'
|
|
275
|
+
>('tanstackRouterDevtoolsActiveTab', 'routes')
|
|
264
276
|
|
|
265
277
|
const [activeId, setActiveId] = useLocalStorage(
|
|
266
278
|
'tanstackRouterDevtoolsActiveRouteId',
|
|
267
279
|
'',
|
|
268
280
|
)
|
|
269
281
|
|
|
282
|
+
const [history, setHistory] = createSignal<Array<AnyRouteMatch>>([])
|
|
283
|
+
const [hasHistoryOverflowed, setHasHistoryOverflowed] = createSignal(false)
|
|
284
|
+
|
|
285
|
+
createEffect(() => {
|
|
286
|
+
const matches = routerState().matches
|
|
287
|
+
const currentMatch = matches[matches.length - 1]
|
|
288
|
+
if (!currentMatch) {
|
|
289
|
+
return
|
|
290
|
+
}
|
|
291
|
+
// Read history WITHOUT tracking it to avoid infinite loops
|
|
292
|
+
const historyUntracked = untrack(() => history())
|
|
293
|
+
const lastMatch = historyUntracked[0]
|
|
294
|
+
const sameLocation =
|
|
295
|
+
lastMatch &&
|
|
296
|
+
lastMatch.pathname === currentMatch.pathname &&
|
|
297
|
+
JSON.stringify(lastMatch.search ?? {}) ===
|
|
298
|
+
JSON.stringify(currentMatch.search ?? {})
|
|
299
|
+
if (!lastMatch || !sameLocation) {
|
|
300
|
+
if (historyUntracked.length >= HISTORY_LIMIT) {
|
|
301
|
+
setHasHistoryOverflowed(true)
|
|
302
|
+
}
|
|
303
|
+
setHistory((prev) => {
|
|
304
|
+
const newHistory = [currentMatch, ...prev]
|
|
305
|
+
// truncate to ensure we don't overflow too much the ui
|
|
306
|
+
newHistory.splice(HISTORY_LIMIT)
|
|
307
|
+
return newHistory
|
|
308
|
+
})
|
|
309
|
+
}
|
|
310
|
+
})
|
|
311
|
+
|
|
270
312
|
const activeMatch = createMemo(() => {
|
|
271
313
|
const matches = [
|
|
272
314
|
...(routerState().pendingMatches ?? []),
|
|
@@ -421,11 +463,14 @@ export const BaseTanStackRouterDevtoolsPanel =
|
|
|
421
463
|
<button
|
|
422
464
|
type="button"
|
|
423
465
|
onClick={() => {
|
|
424
|
-
|
|
466
|
+
setCurrentTab('routes')
|
|
425
467
|
}}
|
|
426
|
-
disabled={
|
|
468
|
+
disabled={currentTab() === 'routes'}
|
|
427
469
|
class={cx(
|
|
428
|
-
styles().routeMatchesToggleBtn(
|
|
470
|
+
styles().routeMatchesToggleBtn(
|
|
471
|
+
currentTab() === 'routes',
|
|
472
|
+
true,
|
|
473
|
+
),
|
|
429
474
|
)}
|
|
430
475
|
>
|
|
431
476
|
Routes
|
|
@@ -433,70 +478,137 @@ export const BaseTanStackRouterDevtoolsPanel =
|
|
|
433
478
|
<button
|
|
434
479
|
type="button"
|
|
435
480
|
onClick={() => {
|
|
436
|
-
|
|
481
|
+
setCurrentTab('matches')
|
|
437
482
|
}}
|
|
438
|
-
disabled={
|
|
483
|
+
disabled={currentTab() === 'matches'}
|
|
439
484
|
class={cx(
|
|
440
|
-
styles().routeMatchesToggleBtn(
|
|
485
|
+
styles().routeMatchesToggleBtn(
|
|
486
|
+
currentTab() === 'matches',
|
|
487
|
+
true,
|
|
488
|
+
),
|
|
441
489
|
)}
|
|
442
490
|
>
|
|
443
491
|
Matches
|
|
444
492
|
</button>
|
|
493
|
+
<button
|
|
494
|
+
type="button"
|
|
495
|
+
onClick={() => {
|
|
496
|
+
setCurrentTab('history')
|
|
497
|
+
}}
|
|
498
|
+
disabled={currentTab() === 'history'}
|
|
499
|
+
class={cx(
|
|
500
|
+
styles().routeMatchesToggleBtn(
|
|
501
|
+
currentTab() === 'history',
|
|
502
|
+
false,
|
|
503
|
+
),
|
|
504
|
+
)}
|
|
505
|
+
>
|
|
506
|
+
History
|
|
507
|
+
</button>
|
|
445
508
|
</div>
|
|
446
509
|
<div class={styles().detailsHeaderInfo}>
|
|
447
510
|
<div>age / staleTime / gcTime</div>
|
|
448
511
|
</div>
|
|
449
512
|
</div>
|
|
450
513
|
<div class={cx(styles().routesContainer)}>
|
|
451
|
-
|
|
452
|
-
<
|
|
453
|
-
|
|
454
|
-
|
|
455
|
-
|
|
456
|
-
|
|
457
|
-
|
|
458
|
-
|
|
459
|
-
|
|
460
|
-
|
|
461
|
-
|
|
462
|
-
|
|
463
|
-
|
|
464
|
-
|
|
465
|
-
|
|
466
|
-
|
|
467
|
-
|
|
468
|
-
|
|
469
|
-
aria-label={`Open match details for ${match.id}`}
|
|
470
|
-
onClick={() =>
|
|
471
|
-
setActiveId(activeId() === match.id ? '' : match.id)
|
|
472
|
-
}
|
|
473
|
-
class={cx(styles().matchRow(match === activeMatch()))}
|
|
474
|
-
>
|
|
514
|
+
<Switch>
|
|
515
|
+
<Match when={currentTab() === 'routes'}>
|
|
516
|
+
<RouteComp
|
|
517
|
+
routerState={routerState}
|
|
518
|
+
router={router}
|
|
519
|
+
route={router().routeTree}
|
|
520
|
+
isRoot
|
|
521
|
+
activeId={activeId}
|
|
522
|
+
setActiveId={setActiveId}
|
|
523
|
+
/>
|
|
524
|
+
</Match>
|
|
525
|
+
<Match when={currentTab() === 'matches'}>
|
|
526
|
+
<div>
|
|
527
|
+
{(routerState().pendingMatches?.length
|
|
528
|
+
? routerState().pendingMatches
|
|
529
|
+
: routerState().matches
|
|
530
|
+
)?.map((match: any, _i: any) => {
|
|
531
|
+
return (
|
|
475
532
|
<div
|
|
476
|
-
|
|
477
|
-
|
|
478
|
-
)
|
|
479
|
-
|
|
480
|
-
<NavigateLink
|
|
481
|
-
left={
|
|
482
|
-
<NavigateButton
|
|
483
|
-
to={match.pathname}
|
|
484
|
-
params={match.params}
|
|
485
|
-
search={match.search}
|
|
486
|
-
router={router}
|
|
487
|
-
/>
|
|
533
|
+
role="button"
|
|
534
|
+
aria-label={`Open match details for ${match.id}`}
|
|
535
|
+
onClick={() =>
|
|
536
|
+
setActiveId(activeId() === match.id ? '' : match.id)
|
|
488
537
|
}
|
|
489
|
-
|
|
538
|
+
class={cx(styles().matchRow(match === activeMatch()))}
|
|
490
539
|
>
|
|
491
|
-
<
|
|
492
|
-
{
|
|
493
|
-
|
|
494
|
-
|
|
495
|
-
|
|
496
|
-
|
|
497
|
-
|
|
498
|
-
|
|
499
|
-
|
|
540
|
+
<div
|
|
541
|
+
class={cx(
|
|
542
|
+
styles().matchIndicator(getStatusColor(match)),
|
|
543
|
+
)}
|
|
544
|
+
/>
|
|
545
|
+
<NavigateLink
|
|
546
|
+
left={
|
|
547
|
+
<NavigateButton
|
|
548
|
+
to={match.pathname}
|
|
549
|
+
params={match.params}
|
|
550
|
+
search={match.search}
|
|
551
|
+
router={router}
|
|
552
|
+
/>
|
|
553
|
+
}
|
|
554
|
+
right={<AgeTicker match={match} router={router} />}
|
|
555
|
+
>
|
|
556
|
+
<code class={styles().matchID}>
|
|
557
|
+
{`${match.routeId === rootRouteId ? rootRouteId : match.pathname}`}
|
|
558
|
+
</code>
|
|
559
|
+
</NavigateLink>
|
|
560
|
+
</div>
|
|
561
|
+
)
|
|
562
|
+
})}
|
|
563
|
+
</div>
|
|
564
|
+
</Match>
|
|
565
|
+
<Match when={currentTab() === 'history'}>
|
|
566
|
+
<div>
|
|
567
|
+
<ul>
|
|
568
|
+
<For each={history()}>
|
|
569
|
+
{(match, index) => (
|
|
570
|
+
<li
|
|
571
|
+
class={cx(
|
|
572
|
+
styles().matchRow(match === activeMatch()),
|
|
573
|
+
)}
|
|
574
|
+
>
|
|
575
|
+
<div
|
|
576
|
+
class={cx(
|
|
577
|
+
styles().matchIndicator(
|
|
578
|
+
index() === 0 ? 'green' : 'gray',
|
|
579
|
+
),
|
|
580
|
+
)}
|
|
581
|
+
/>
|
|
582
|
+
<NavigateLink
|
|
583
|
+
left={
|
|
584
|
+
<NavigateButton
|
|
585
|
+
to={match.pathname}
|
|
586
|
+
params={match.params}
|
|
587
|
+
search={match.search}
|
|
588
|
+
router={router}
|
|
589
|
+
/>
|
|
590
|
+
}
|
|
591
|
+
right={
|
|
592
|
+
<AgeTicker match={match} router={router} />
|
|
593
|
+
}
|
|
594
|
+
>
|
|
595
|
+
<code class={styles().matchID}>
|
|
596
|
+
{`${match.routeId === rootRouteId ? rootRouteId : match.pathname}`}
|
|
597
|
+
</code>
|
|
598
|
+
</NavigateLink>
|
|
599
|
+
</li>
|
|
600
|
+
)}
|
|
601
|
+
</For>
|
|
602
|
+
{hasHistoryOverflowed() ? (
|
|
603
|
+
<li class={styles().historyOverflowContainer}>
|
|
604
|
+
This panel displays the most recent {HISTORY_LIMIT}{' '}
|
|
605
|
+
navigations.
|
|
606
|
+
</li>
|
|
607
|
+
) : null}
|
|
608
|
+
</ul>
|
|
609
|
+
</div>
|
|
610
|
+
</Match>
|
|
611
|
+
</Switch>
|
|
500
612
|
</div>
|
|
501
613
|
</div>
|
|
502
614
|
{routerState().cachedMatches.length ? (
|
package/src/useStyles.tsx
CHANGED
|
@@ -404,6 +404,16 @@ const stylesFactory = (shadowDOMTarget?: ShadowRoot) => {
|
|
|
404
404
|
overflow-y: auto;
|
|
405
405
|
max-height: 50%;
|
|
406
406
|
`,
|
|
407
|
+
historyContainer: css`
|
|
408
|
+
display: flex;
|
|
409
|
+
flex: 1 1 auto;
|
|
410
|
+
overflow-y: auto;
|
|
411
|
+
max-height: 50%;
|
|
412
|
+
`,
|
|
413
|
+
historyOverflowContainer: css`
|
|
414
|
+
padding: ${size[1]} ${size[2]};
|
|
415
|
+
font-size: ${tokens.font.size.xs};
|
|
416
|
+
`,
|
|
407
417
|
maskedBadgeContainer: css`
|
|
408
418
|
flex: 1;
|
|
409
419
|
justify-content: flex-end;
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"BaseTanStackRouterDevtoolsPanel-CaAQWNvS.js","sources":["../src/utils.tsx","../src/tokens.ts","../src/useStyles.tsx","../src/useLocalStorage.ts","../src/Explorer.tsx","../src/AgeTicker.tsx","../src/NavigateButton.tsx","../src/BaseTanStackRouterDevtoolsPanel.tsx"],"sourcesContent":["import { Dynamic } from 'solid-js/web'\nimport { createEffect, createRenderEffect, createSignal } from 'solid-js'\nimport { useTheme } from './theme'\nimport useMediaQuery from './useMediaQuery'\nimport type { AnyRoute, AnyRouteMatch } from '@tanstack/router-core'\n\nimport type { Theme } from './theme'\nimport type { JSX } from 'solid-js'\n\nexport const isServer = typeof window === 'undefined'\n\ntype StyledComponent<T> = T extends 'button'\n ? JSX.ButtonHTMLAttributes<HTMLButtonElement>\n : T extends 'input'\n ? JSX.InputHTMLAttributes<HTMLInputElement>\n : T extends 'select'\n ? JSX.SelectHTMLAttributes<HTMLSelectElement>\n : T extends keyof HTMLElementTagNameMap\n ? JSX.HTMLAttributes<HTMLElementTagNameMap[T]>\n : never\n\nexport function getStatusColor(match: AnyRouteMatch) {\n const colorMap = {\n pending: 'yellow',\n success: 'green',\n error: 'red',\n notFound: 'purple',\n redirected: 'gray',\n } as const\n\n return match.isFetching && match.status === 'success'\n ? match.isFetching === 'beforeLoad'\n ? 'purple'\n : 'blue'\n : colorMap[match.status]\n}\n\nexport function getRouteStatusColor(\n matches: Array<AnyRouteMatch>,\n route: AnyRoute,\n) {\n const found = matches.find((d) => d.routeId === route.id)\n if (!found) return 'gray'\n return getStatusColor(found)\n}\n\ntype Styles =\n | JSX.CSSProperties\n | ((props: Record<string, any>, theme: Theme) => JSX.CSSProperties)\n\nexport function styled<T extends keyof HTMLElementTagNameMap>(\n type: T,\n newStyles: Styles,\n queries: Record<string, Styles> = {},\n) {\n return ({\n ref,\n style,\n ...rest\n }: StyledComponent<T> & {\n ref?: HTMLElementTagNameMap[T] | undefined\n }) => {\n const theme = useTheme()\n\n const mediaStyles = Object.entries(queries).reduce(\n (current, [key, value]) => {\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition\n return useMediaQuery(key)\n ? {\n ...current,\n ...(typeof value === 'function' ? value(rest, theme) : value),\n }\n : current\n },\n {},\n )\n\n const baseStyles =\n typeof newStyles === 'function' ? newStyles(rest, theme) : newStyles\n\n // Handle style being either a string or an object\n const combinedStyles =\n typeof style === 'string'\n ? { ...baseStyles, ...mediaStyles, cssText: style }\n : { ...baseStyles, ...style, ...mediaStyles }\n\n return (\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n <Dynamic component={type} {...rest} style={combinedStyles} ref={ref} />\n )\n }\n}\n\nexport function useIsMounted() {\n const [isMounted, setIsMounted] = createSignal(false)\n\n const effect = isServer ? createEffect : createRenderEffect\n\n effect(() => {\n setIsMounted(true)\n })\n\n return isMounted\n}\n\n/**\n * Displays a string regardless the type of the data\n * @param {unknown} value Value to be stringified\n */\nexport const displayValue = (value: unknown) => {\n const name = Object.getOwnPropertyNames(Object(value))\n const newValue = typeof value === 'bigint' ? `${value.toString()}n` : value\n try {\n return JSON.stringify(newValue, name)\n } catch (e) {\n return `unable to stringify`\n }\n}\n\n/**\n * This hook is a safe useState version which schedules state updates in microtasks\n * to prevent updating a component state while React is rendering different components\n * or when the component is not mounted anymore.\n */\nexport function useSafeState<T>(initialState: T): [T, (value: T) => void] {\n const isMounted = useIsMounted()\n const [state, setState] = createSignal(initialState)\n\n const safeSetState = (value: T) => {\n scheduleMicrotask(() => {\n if (isMounted()) {\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n setState(value)\n }\n })\n }\n\n return [state(), safeSetState]\n}\n\n/**\n * Schedules a microtask.\n * This can be useful to schedule state updates after rendering.\n */\nfunction scheduleMicrotask(callback: () => void) {\n Promise.resolve()\n .then(callback)\n .catch((error) =>\n setTimeout(() => {\n throw error\n }),\n )\n}\n\nexport function multiSortBy<T>(\n arr: Array<T>,\n accessors: Array<(item: T) => any> = [(d) => d],\n): Array<T> {\n return arr\n .map((d, i) => [d, i] as const)\n .sort(([a, ai], [b, bi]) => {\n for (const accessor of accessors) {\n const ao = accessor(a)\n const bo = accessor(b)\n\n if (typeof ao === 'undefined') {\n if (typeof bo === 'undefined') {\n continue\n }\n return 1\n }\n\n if (ao === bo) {\n continue\n }\n\n return ao > bo ? 1 : -1\n }\n\n return ai - bi\n })\n .map(([d]) => d)\n}\n","export const tokens = {\n colors: {\n inherit: 'inherit',\n current: 'currentColor',\n transparent: 'transparent',\n black: '#000000',\n white: '#ffffff',\n neutral: {\n 50: '#f9fafb',\n 100: '#f2f4f7',\n 200: '#eaecf0',\n 300: '#d0d5dd',\n 400: '#98a2b3',\n 500: '#667085',\n 600: '#475467',\n 700: '#344054',\n 800: '#1d2939',\n 900: '#101828',\n },\n darkGray: {\n 50: '#525c7a',\n 100: '#49536e',\n 200: '#414962',\n 300: '#394056',\n 400: '#313749',\n 500: '#292e3d',\n 600: '#212530',\n 700: '#191c24',\n 800: '#111318',\n 900: '#0b0d10',\n },\n gray: {\n 50: '#f9fafb',\n 100: '#f2f4f7',\n 200: '#eaecf0',\n 300: '#d0d5dd',\n 400: '#98a2b3',\n 500: '#667085',\n 600: '#475467',\n 700: '#344054',\n 800: '#1d2939',\n 900: '#101828',\n },\n blue: {\n 25: '#F5FAFF',\n 50: '#EFF8FF',\n 100: '#D1E9FF',\n 200: '#B2DDFF',\n 300: '#84CAFF',\n 400: '#53B1FD',\n 500: '#2E90FA',\n 600: '#1570EF',\n 700: '#175CD3',\n 800: '#1849A9',\n 900: '#194185',\n },\n green: {\n 25: '#F6FEF9',\n 50: '#ECFDF3',\n 100: '#D1FADF',\n 200: '#A6F4C5',\n 300: '#6CE9A6',\n 400: '#32D583',\n 500: '#12B76A',\n 600: '#039855',\n 700: '#027A48',\n 800: '#05603A',\n 900: '#054F31',\n },\n red: {\n 50: '#fef2f2',\n 100: '#fee2e2',\n 200: '#fecaca',\n 300: '#fca5a5',\n 400: '#f87171',\n 500: '#ef4444',\n 600: '#dc2626',\n 700: '#b91c1c',\n 800: '#991b1b',\n 900: '#7f1d1d',\n 950: '#450a0a',\n },\n yellow: {\n 25: '#FFFCF5',\n 50: '#FFFAEB',\n 100: '#FEF0C7',\n 200: '#FEDF89',\n 300: '#FEC84B',\n 400: '#FDB022',\n 500: '#F79009',\n 600: '#DC6803',\n 700: '#B54708',\n 800: '#93370D',\n 900: '#7A2E0E',\n },\n purple: {\n 25: '#FAFAFF',\n 50: '#F4F3FF',\n 100: '#EBE9FE',\n 200: '#D9D6FE',\n 300: '#BDB4FE',\n 400: '#9B8AFB',\n 500: '#7A5AF8',\n 600: '#6938EF',\n 700: '#5925DC',\n 800: '#4A1FB8',\n 900: '#3E1C96',\n },\n teal: {\n 25: '#F6FEFC',\n 50: '#F0FDF9',\n 100: '#CCFBEF',\n 200: '#99F6E0',\n 300: '#5FE9D0',\n 400: '#2ED3B7',\n 500: '#15B79E',\n 600: '#0E9384',\n 700: '#107569',\n 800: '#125D56',\n 900: '#134E48',\n },\n pink: {\n 25: '#fdf2f8',\n 50: '#fce7f3',\n 100: '#fbcfe8',\n 200: '#f9a8d4',\n 300: '#f472b6',\n 400: '#ec4899',\n 500: '#db2777',\n 600: '#be185d',\n 700: '#9d174d',\n 800: '#831843',\n 900: '#500724',\n },\n cyan: {\n 25: '#ecfeff',\n 50: '#cffafe',\n 100: '#a5f3fc',\n 200: '#67e8f9',\n 300: '#22d3ee',\n 400: '#06b6d4',\n 500: '#0891b2',\n 600: '#0e7490',\n 700: '#155e75',\n 800: '#164e63',\n 900: '#083344',\n },\n },\n alpha: {\n 100: 'ff',\n 90: 'e5',\n 80: 'cc',\n 70: 'b3',\n 60: '99',\n 50: '80',\n 40: '66',\n 30: '4d',\n 20: '33',\n 10: '1a',\n 0: '00',\n },\n font: {\n size: {\n '2xs': 'calc(var(--tsrd-font-size) * 0.625)',\n xs: 'calc(var(--tsrd-font-size) * 0.75)',\n sm: 'calc(var(--tsrd-font-size) * 0.875)',\n md: 'var(--tsrd-font-size)',\n lg: 'calc(var(--tsrd-font-size) * 1.125)',\n xl: 'calc(var(--tsrd-font-size) * 1.25)',\n '2xl': 'calc(var(--tsrd-font-size) * 1.5)',\n '3xl': 'calc(var(--tsrd-font-size) * 1.875)',\n '4xl': 'calc(var(--tsrd-font-size) * 2.25)',\n '5xl': 'calc(var(--tsrd-font-size) * 3)',\n '6xl': 'calc(var(--tsrd-font-size) * 3.75)',\n '7xl': 'calc(var(--tsrd-font-size) * 4.5)',\n '8xl': 'calc(var(--tsrd-font-size) * 6)',\n '9xl': 'calc(var(--tsrd-font-size) * 8)',\n },\n lineHeight: {\n '3xs': 'calc(var(--tsrd-font-size) * 0.75)',\n '2xs': 'calc(var(--tsrd-font-size) * 0.875)',\n xs: 'calc(var(--tsrd-font-size) * 1)',\n sm: 'calc(var(--tsrd-font-size) * 1.25)',\n md: 'calc(var(--tsrd-font-size) * 1.5)',\n lg: 'calc(var(--tsrd-font-size) * 1.75)',\n xl: 'calc(var(--tsrd-font-size) * 2)',\n '2xl': 'calc(var(--tsrd-font-size) * 2.25)',\n '3xl': 'calc(var(--tsrd-font-size) * 2.5)',\n '4xl': 'calc(var(--tsrd-font-size) * 2.75)',\n '5xl': 'calc(var(--tsrd-font-size) * 3)',\n '6xl': 'calc(var(--tsrd-font-size) * 3.25)',\n '7xl': 'calc(var(--tsrd-font-size) * 3.5)',\n '8xl': 'calc(var(--tsrd-font-size) * 3.75)',\n '9xl': 'calc(var(--tsrd-font-size) * 4)',\n },\n weight: {\n thin: '100',\n extralight: '200',\n light: '300',\n normal: '400',\n medium: '500',\n semibold: '600',\n bold: '700',\n extrabold: '800',\n black: '900',\n },\n fontFamily: {\n sans: 'ui-sans-serif, Inter, system-ui, sans-serif, sans-serif',\n mono: `ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, 'Liberation Mono', 'Courier New', monospace`,\n },\n },\n breakpoints: {\n xs: '320px',\n sm: '640px',\n md: '768px',\n lg: '1024px',\n xl: '1280px',\n '2xl': '1536px',\n },\n border: {\n radius: {\n none: '0px',\n xs: 'calc(var(--tsrd-font-size) * 0.125)',\n sm: 'calc(var(--tsrd-font-size) * 0.25)',\n md: 'calc(var(--tsrd-font-size) * 0.375)',\n lg: 'calc(var(--tsrd-font-size) * 0.5)',\n xl: 'calc(var(--tsrd-font-size) * 0.75)',\n '2xl': 'calc(var(--tsrd-font-size) * 1)',\n '3xl': 'calc(var(--tsrd-font-size) * 1.5)',\n full: '9999px',\n },\n },\n size: {\n 0: '0px',\n 0.25: 'calc(var(--tsrd-font-size) * 0.0625)',\n 0.5: 'calc(var(--tsrd-font-size) * 0.125)',\n 1: 'calc(var(--tsrd-font-size) * 0.25)',\n 1.5: 'calc(var(--tsrd-font-size) * 0.375)',\n 2: 'calc(var(--tsrd-font-size) * 0.5)',\n 2.5: 'calc(var(--tsrd-font-size) * 0.625)',\n 3: 'calc(var(--tsrd-font-size) * 0.75)',\n 3.5: 'calc(var(--tsrd-font-size) * 0.875)',\n 4: 'calc(var(--tsrd-font-size) * 1)',\n 4.5: 'calc(var(--tsrd-font-size) * 1.125)',\n 5: 'calc(var(--tsrd-font-size) * 1.25)',\n 5.5: 'calc(var(--tsrd-font-size) * 1.375)',\n 6: 'calc(var(--tsrd-font-size) * 1.5)',\n 6.5: 'calc(var(--tsrd-font-size) * 1.625)',\n 7: 'calc(var(--tsrd-font-size) * 1.75)',\n 8: 'calc(var(--tsrd-font-size) * 2)',\n 9: 'calc(var(--tsrd-font-size) * 2.25)',\n 10: 'calc(var(--tsrd-font-size) * 2.5)',\n 11: 'calc(var(--tsrd-font-size) * 2.75)',\n 12: 'calc(var(--tsrd-font-size) * 3)',\n 14: 'calc(var(--tsrd-font-size) * 3.5)',\n 16: 'calc(var(--tsrd-font-size) * 4)',\n 20: 'calc(var(--tsrd-font-size) * 5)',\n 24: 'calc(var(--tsrd-font-size) * 6)',\n 28: 'calc(var(--tsrd-font-size) * 7)',\n 32: 'calc(var(--tsrd-font-size) * 8)',\n 36: 'calc(var(--tsrd-font-size) * 9)',\n 40: 'calc(var(--tsrd-font-size) * 10)',\n 44: 'calc(var(--tsrd-font-size) * 11)',\n 48: 'calc(var(--tsrd-font-size) * 12)',\n 52: 'calc(var(--tsrd-font-size) * 13)',\n 56: 'calc(var(--tsrd-font-size) * 14)',\n 60: 'calc(var(--tsrd-font-size) * 15)',\n 64: 'calc(var(--tsrd-font-size) * 16)',\n 72: 'calc(var(--tsrd-font-size) * 18)',\n 80: 'calc(var(--tsrd-font-size) * 20)',\n 96: 'calc(var(--tsrd-font-size) * 24)',\n },\n shadow: {\n xs: (_: string = 'rgb(0 0 0 / 0.1)') =>\n `0 1px 2px 0 rgb(0 0 0 / 0.05)` as const,\n sm: (color: string = 'rgb(0 0 0 / 0.1)') =>\n `0 1px 3px 0 ${color}, 0 1px 2px -1px ${color}` as const,\n md: (color: string = 'rgb(0 0 0 / 0.1)') =>\n `0 4px 6px -1px ${color}, 0 2px 4px -2px ${color}` as const,\n lg: (color: string = 'rgb(0 0 0 / 0.1)') =>\n `0 10px 15px -3px ${color}, 0 4px 6px -4px ${color}` as const,\n xl: (color: string = 'rgb(0 0 0 / 0.1)') =>\n `0 20px 25px -5px ${color}, 0 8px 10px -6px ${color}` as const,\n '2xl': (color: string = 'rgb(0 0 0 / 0.25)') =>\n `0 25px 50px -12px ${color}` as const,\n inner: (color: string = 'rgb(0 0 0 / 0.05)') =>\n `inset 0 2px 4px 0 ${color}` as const,\n none: () => `none` as const,\n },\n zIndices: {\n hide: -1,\n auto: 'auto',\n base: 0,\n docked: 10,\n dropdown: 1000,\n sticky: 1100,\n banner: 1200,\n overlay: 1300,\n modal: 1400,\n popover: 1500,\n skipLink: 1600,\n toast: 1700,\n tooltip: 1800,\n },\n} as const\n","import * as goober from 'goober'\nimport { createSignal, useContext } from 'solid-js'\nimport { tokens } from './tokens'\nimport { ShadowDomTargetContext } from './context'\nimport type { Accessor } from 'solid-js'\n\nconst stylesFactory = (shadowDOMTarget?: ShadowRoot) => {\n const { colors, font, size, alpha, shadow, border } = tokens\n const { fontFamily, lineHeight, size: fontSize } = font\n const css = shadowDOMTarget\n ? goober.css.bind({ target: shadowDOMTarget })\n : goober.css\n\n return {\n devtoolsPanelContainer: css`\n direction: ltr;\n position: fixed;\n bottom: 0;\n right: 0;\n z-index: 99999;\n width: 100%;\n max-height: 90%;\n border-top: 1px solid ${colors.gray[700]};\n transform-origin: top;\n `,\n devtoolsPanelContainerVisibility: (isOpen: boolean) => {\n return css`\n visibility: ${isOpen ? 'visible' : 'hidden'};\n `\n },\n devtoolsPanelContainerResizing: (isResizing: Accessor<boolean>) => {\n if (isResizing()) {\n return css`\n transition: none;\n `\n }\n\n return css`\n transition: all 0.4s ease;\n `\n },\n devtoolsPanelContainerAnimation: (isOpen: boolean, height: number) => {\n if (isOpen) {\n return css`\n pointer-events: auto;\n transform: translateY(0);\n `\n }\n return css`\n pointer-events: none;\n transform: translateY(${height}px);\n `\n },\n logo: css`\n cursor: pointer;\n display: flex;\n flex-direction: column;\n background-color: transparent;\n border: none;\n font-family: ${fontFamily.sans};\n gap: ${tokens.size[0.5]};\n padding: 0px;\n &:hover {\n opacity: 0.7;\n }\n &:focus-visible {\n outline-offset: 4px;\n border-radius: ${border.radius.xs};\n outline: 2px solid ${colors.blue[800]};\n }\n `,\n tanstackLogo: css`\n font-size: ${font.size.md};\n font-weight: ${font.weight.bold};\n line-height: ${font.lineHeight.xs};\n white-space: nowrap;\n color: ${colors.gray[300]};\n `,\n routerLogo: css`\n font-weight: ${font.weight.semibold};\n font-size: ${font.size.xs};\n background: linear-gradient(to right, #84cc16, #10b981);\n background-clip: text;\n -webkit-background-clip: text;\n line-height: 1;\n -webkit-text-fill-color: transparent;\n white-space: nowrap;\n `,\n devtoolsPanel: css`\n display: flex;\n font-size: ${fontSize.sm};\n font-family: ${fontFamily.sans};\n background-color: ${colors.darkGray[700]};\n color: ${colors.gray[300]};\n\n @media (max-width: 700px) {\n flex-direction: column;\n }\n @media (max-width: 600px) {\n font-size: ${fontSize.xs};\n }\n `,\n dragHandle: css`\n position: absolute;\n left: 0;\n top: 0;\n width: 100%;\n height: 4px;\n cursor: row-resize;\n z-index: 100000;\n &:hover {\n background-color: ${colors.purple[400]}${alpha[90]};\n }\n `,\n firstContainer: css`\n flex: 1 1 500px;\n min-height: 40%;\n max-height: 100%;\n overflow: auto;\n border-right: 1px solid ${colors.gray[700]};\n display: flex;\n flex-direction: column;\n `,\n routerExplorerContainer: css`\n overflow-y: auto;\n flex: 1;\n `,\n routerExplorer: css`\n padding: ${tokens.size[2]};\n `,\n row: css`\n display: flex;\n align-items: center;\n padding: ${tokens.size[2]} ${tokens.size[2.5]};\n gap: ${tokens.size[2.5]};\n border-bottom: ${colors.darkGray[500]} 1px solid;\n align-items: center;\n `,\n detailsHeader: css`\n font-family: ui-sans-serif, Inter, system-ui, sans-serif, sans-serif;\n position: sticky;\n top: 0;\n z-index: 2;\n background-color: ${colors.darkGray[600]};\n padding: 0px ${tokens.size[2]};\n font-weight: ${font.weight.medium};\n font-size: ${font.size.xs};\n min-height: ${tokens.size[8]};\n line-height: ${font.lineHeight.xs};\n text-align: left;\n display: flex;\n align-items: center;\n `,\n maskedBadge: css`\n background: ${colors.yellow[900]}${alpha[70]};\n color: ${colors.yellow[300]};\n display: inline-block;\n padding: ${tokens.size[0]} ${tokens.size[2.5]};\n border-radius: ${border.radius.full};\n font-size: ${font.size.xs};\n font-weight: ${font.weight.normal};\n border: 1px solid ${colors.yellow[300]};\n `,\n maskedLocation: css`\n color: ${colors.yellow[300]};\n `,\n detailsContent: css`\n padding: ${tokens.size[1.5]} ${tokens.size[2]};\n display: flex;\n align-items: center;\n justify-content: space-between;\n font-size: ${font.size.xs};\n `,\n routeMatchesToggle: css`\n display: flex;\n align-items: center;\n border: 1px solid ${colors.gray[500]};\n border-radius: ${border.radius.sm};\n overflow: hidden;\n `,\n routeMatchesToggleBtn: (active: boolean, showBorder: boolean) => {\n const base = css`\n appearance: none;\n border: none;\n font-size: 12px;\n padding: 4px 8px;\n background: transparent;\n cursor: pointer;\n font-family: ${fontFamily.sans};\n font-weight: ${font.weight.medium};\n `\n const classes = [base]\n\n if (active) {\n const activeStyles = css`\n background: ${colors.darkGray[400]};\n color: ${colors.gray[300]};\n `\n classes.push(activeStyles)\n } else {\n const inactiveStyles = css`\n color: ${colors.gray[500]};\n background: ${colors.darkGray[800]}${alpha[20]};\n `\n classes.push(inactiveStyles)\n }\n\n if (showBorder) {\n classes.push(css`\n border-right: 1px solid ${tokens.colors.gray[500]};\n `)\n }\n\n return classes\n },\n detailsHeaderInfo: css`\n flex: 1;\n justify-content: flex-end;\n display: flex;\n align-items: center;\n font-weight: ${font.weight.normal};\n color: ${colors.gray[400]};\n `,\n matchRow: (active: boolean) => {\n const base = css`\n display: flex;\n border-bottom: 1px solid ${colors.darkGray[400]};\n cursor: pointer;\n align-items: center;\n padding: ${size[1]} ${size[2]};\n gap: ${size[2]};\n font-size: ${fontSize.xs};\n color: ${colors.gray[300]};\n `\n const classes = [base]\n\n if (active) {\n const activeStyles = css`\n background: ${colors.darkGray[500]};\n `\n classes.push(activeStyles)\n }\n\n return classes\n },\n matchIndicator: (\n color: 'green' | 'red' | 'yellow' | 'gray' | 'blue' | 'purple',\n ) => {\n const base = css`\n flex: 0 0 auto;\n width: ${size[3]};\n height: ${size[3]};\n background: ${colors[color][900]};\n border: 1px solid ${colors[color][500]};\n border-radius: ${border.radius.full};\n transition: all 0.25s ease-out;\n box-sizing: border-box;\n `\n const classes = [base]\n\n if (color === 'gray') {\n const grayStyles = css`\n background: ${colors.gray[700]};\n border-color: ${colors.gray[400]};\n `\n classes.push(grayStyles)\n }\n\n return classes\n },\n matchID: css`\n flex: 1;\n line-height: ${lineHeight['xs']};\n `,\n ageTicker: (showWarning: boolean) => {\n const base = css`\n display: flex;\n gap: ${size[1]};\n font-size: ${fontSize.xs};\n color: ${colors.gray[400]};\n font-variant-numeric: tabular-nums;\n line-height: ${lineHeight['xs']};\n `\n\n const classes = [base]\n\n if (showWarning) {\n const warningStyles = css`\n color: ${colors.yellow[400]};\n `\n classes.push(warningStyles)\n }\n\n return classes\n },\n secondContainer: css`\n flex: 1 1 500px;\n min-height: 40%;\n max-height: 100%;\n overflow: auto;\n border-right: 1px solid ${colors.gray[700]};\n display: flex;\n flex-direction: column;\n `,\n thirdContainer: css`\n flex: 1 1 500px;\n overflow: auto;\n display: flex;\n flex-direction: column;\n height: 100%;\n border-right: 1px solid ${colors.gray[700]};\n\n @media (max-width: 700px) {\n border-top: 2px solid ${colors.gray[700]};\n }\n `,\n fourthContainer: css`\n flex: 1 1 500px;\n min-height: 40%;\n max-height: 100%;\n overflow: auto;\n display: flex;\n flex-direction: column;\n `,\n routesContainer: css`\n overflow-x: auto;\n overflow-y: visible;\n `,\n routesRowContainer: (active: boolean, isMatch: boolean) => {\n const base = css`\n display: flex;\n border-bottom: 1px solid ${colors.darkGray[400]};\n align-items: center;\n padding: ${size[1]} ${size[2]};\n gap: ${size[2]};\n font-size: ${fontSize.xs};\n color: ${colors.gray[300]};\n cursor: ${isMatch ? 'pointer' : 'default'};\n line-height: ${lineHeight['xs']};\n `\n const classes = [base]\n\n if (active) {\n const activeStyles = css`\n background: ${colors.darkGray[500]};\n `\n classes.push(activeStyles)\n }\n\n return classes\n },\n routesRow: (isMatch: boolean) => {\n const base = css`\n flex: 1 0 auto;\n display: flex;\n justify-content: space-between;\n align-items: center;\n font-size: ${fontSize.xs};\n line-height: ${lineHeight['xs']};\n `\n\n const classes = [base]\n\n if (!isMatch) {\n const matchStyles = css`\n color: ${colors.gray[400]};\n `\n classes.push(matchStyles)\n }\n\n return classes\n },\n routesRowInner: css`\n display: 'flex';\n align-items: 'center';\n flex-grow: 1;\n min-width: 0;\n `,\n routeParamInfo: css`\n color: ${colors.gray[400]};\n font-size: ${fontSize.xs};\n line-height: ${lineHeight['xs']};\n `,\n nestedRouteRow: (isRoot: boolean) => {\n const base = css`\n margin-left: ${isRoot ? 0 : size[3.5]};\n border-left: ${isRoot ? '' : `solid 1px ${colors.gray[700]}`};\n `\n return base\n },\n code: css`\n font-size: ${fontSize.xs};\n line-height: ${lineHeight['xs']};\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n `,\n matchesContainer: css`\n flex: 1 1 auto;\n overflow-y: auto;\n `,\n cachedMatchesContainer: css`\n flex: 1 1 auto;\n overflow-y: auto;\n max-height: 50%;\n `,\n maskedBadgeContainer: css`\n flex: 1;\n justify-content: flex-end;\n display: flex;\n `,\n matchDetails: css`\n display: flex;\n flex-direction: column;\n padding: ${tokens.size[2]};\n font-size: ${tokens.font.size.xs};\n color: ${tokens.colors.gray[300]};\n line-height: ${tokens.font.lineHeight.sm};\n `,\n matchStatus: (\n status: 'pending' | 'success' | 'error' | 'notFound' | 'redirected',\n isFetching: false | 'beforeLoad' | 'loader',\n ) => {\n const colorMap = {\n pending: 'yellow',\n success: 'green',\n error: 'red',\n notFound: 'purple',\n redirected: 'gray',\n } as const\n\n const color =\n isFetching && status === 'success'\n ? isFetching === 'beforeLoad'\n ? 'purple'\n : 'blue'\n : colorMap[status]\n\n return css`\n display: flex;\n justify-content: center;\n align-items: center;\n height: 40px;\n border-radius: ${tokens.border.radius.sm};\n font-weight: ${tokens.font.weight.normal};\n background-color: ${tokens.colors[color][900]}${tokens.alpha[90]};\n color: ${tokens.colors[color][300]};\n border: 1px solid ${tokens.colors[color][600]};\n margin-bottom: ${tokens.size[2]};\n transition: all 0.25s ease-out;\n `\n },\n matchDetailsInfo: css`\n display: flex;\n justify-content: flex-end;\n flex: 1;\n `,\n matchDetailsInfoLabel: css`\n display: flex;\n `,\n mainCloseBtn: css`\n background: ${colors.darkGray[700]};\n padding: ${size[1]} ${size[2]} ${size[1]} ${size[1.5]};\n border-radius: ${border.radius.md};\n position: fixed;\n z-index: 99999;\n display: inline-flex;\n width: fit-content;\n cursor: pointer;\n appearance: none;\n border: 0;\n gap: 8px;\n align-items: center;\n border: 1px solid ${colors.gray[500]};\n font-size: ${font.size.xs};\n cursor: pointer;\n transition: all 0.25s ease-out;\n\n &:hover {\n background: ${colors.darkGray[500]};\n }\n `,\n mainCloseBtnPosition: (\n position: 'top-left' | 'top-right' | 'bottom-left' | 'bottom-right',\n ) => {\n const base = css`\n ${position === 'top-left' ? `top: ${size[2]}; left: ${size[2]};` : ''}\n ${position === 'top-right' ? `top: ${size[2]}; right: ${size[2]};` : ''}\n ${position === 'bottom-left'\n ? `bottom: ${size[2]}; left: ${size[2]};`\n : ''}\n ${position === 'bottom-right'\n ? `bottom: ${size[2]}; right: ${size[2]};`\n : ''}\n `\n return base\n },\n mainCloseBtnAnimation: (isOpen: boolean) => {\n if (!isOpen) {\n return css`\n opacity: 1;\n pointer-events: auto;\n visibility: visible;\n `\n }\n return css`\n opacity: 0;\n pointer-events: none;\n visibility: hidden;\n `\n },\n routerLogoCloseButton: css`\n font-weight: ${font.weight.semibold};\n font-size: ${font.size.xs};\n background: linear-gradient(to right, #98f30c, #00f4a3);\n background-clip: text;\n -webkit-background-clip: text;\n line-height: 1;\n -webkit-text-fill-color: transparent;\n white-space: nowrap;\n `,\n mainCloseBtnDivider: css`\n width: 1px;\n background: ${tokens.colors.gray[600]};\n height: 100%;\n border-radius: 999999px;\n color: transparent;\n `,\n mainCloseBtnIconContainer: css`\n position: relative;\n width: ${size[5]};\n height: ${size[5]};\n background: pink;\n border-radius: 999999px;\n overflow: hidden;\n `,\n mainCloseBtnIconOuter: css`\n width: ${size[5]};\n height: ${size[5]};\n position: absolute;\n top: 50%;\n left: 50%;\n transform: translate(-50%, -50%);\n filter: blur(3px) saturate(1.8) contrast(2);\n `,\n mainCloseBtnIconInner: css`\n width: ${size[4]};\n height: ${size[4]};\n position: absolute;\n top: 50%;\n left: 50%;\n transform: translate(-50%, -50%);\n `,\n panelCloseBtn: css`\n position: absolute;\n cursor: pointer;\n z-index: 100001;\n display: flex;\n align-items: center;\n justify-content: center;\n outline: none;\n background-color: ${colors.darkGray[700]};\n &:hover {\n background-color: ${colors.darkGray[500]};\n }\n\n top: 0;\n right: ${size[2]};\n transform: translate(0, -100%);\n border-right: ${colors.darkGray[300]} 1px solid;\n border-left: ${colors.darkGray[300]} 1px solid;\n border-top: ${colors.darkGray[300]} 1px solid;\n border-bottom: none;\n border-radius: ${border.radius.sm} ${border.radius.sm} 0px 0px;\n padding: ${size[1]} ${size[1.5]} ${size[0.5]} ${size[1.5]};\n\n &::after {\n content: ' ';\n position: absolute;\n top: 100%;\n left: -${size[2.5]};\n height: ${size[1.5]};\n width: calc(100% + ${size[5]});\n }\n `,\n panelCloseBtnIcon: css`\n color: ${colors.gray[400]};\n width: ${size[2]};\n height: ${size[2]};\n `,\n navigateButton: css`\n background: none;\n border: none;\n padding: 0 0 0 4px;\n margin: 0;\n color: ${colors.gray[400]};\n font-size: ${fontSize.md};\n cursor: pointer;\n line-height: 1;\n vertical-align: middle;\n margin-right: 0.5ch;\n flex-shrink: 0;\n &:hover {\n color: ${colors.blue[300]};\n }\n `,\n }\n}\n\nexport function useStyles() {\n const shadowDomTarget = useContext(ShadowDomTargetContext)\n const [_styles] = createSignal(stylesFactory(shadowDomTarget))\n return _styles\n}\n","import { createEffect, createSignal } from 'solid-js'\nimport type { Accessor } from 'solid-js'\n\nconst getItem = (key: string): unknown => {\n try {\n const itemValue = localStorage.getItem(key)\n if (typeof itemValue === 'string') {\n return JSON.parse(itemValue)\n }\n return undefined\n } catch {\n return undefined\n }\n}\n\nexport default function useLocalStorage<T>(\n key: string,\n defaultValue: T | undefined,\n): [Accessor<T | undefined>, (newVal: T | ((prevVal: T) => T)) => void] {\n const [value, setValue] = createSignal<T>()\n\n createEffect(() => {\n const initialValue = getItem(key) as T | undefined\n\n if (typeof initialValue === 'undefined' || initialValue === null) {\n setValue(\n typeof defaultValue === 'function' ? defaultValue() : defaultValue,\n )\n } else {\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n setValue(initialValue)\n }\n })\n\n const setter = (updater: any) => {\n setValue((old) => {\n let newVal = updater\n\n if (typeof updater == 'function') {\n newVal = updater(old)\n }\n try {\n localStorage.setItem(key, JSON.stringify(newVal))\n } catch {}\n\n return newVal\n })\n }\n\n return [value, setter]\n}\n","/* eslint-disable @typescript-eslint/no-unnecessary-condition */\nimport { clsx as cx } from 'clsx'\nimport * as goober from 'goober'\nimport { createMemo, createSignal, useContext } from 'solid-js'\nimport { tokens } from './tokens'\nimport { displayValue } from './utils'\nimport { ShadowDomTargetContext } from './context'\nimport type { Accessor, JSX } from 'solid-js'\n\ntype ExpanderProps = {\n expanded: boolean\n style?: JSX.CSSProperties\n}\n\nexport const Expander = ({ expanded, style = {} }: ExpanderProps) => {\n const styles = useStyles()\n return (\n <span class={styles().expander}>\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"12\"\n height=\"12\"\n fill=\"none\"\n viewBox=\"0 0 24 24\"\n class={cx(styles().expanderIcon(expanded))}\n >\n <path\n stroke=\"currentColor\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n stroke-width=\"2\"\n d=\"M9 18l6-6-6-6\"\n ></path>\n </svg>\n </span>\n )\n}\n\ntype Entry = {\n label: string\n}\n\ntype RendererProps = {\n handleEntry: HandleEntryFn\n label?: JSX.Element\n value: Accessor<unknown>\n subEntries: Array<Entry>\n subEntryPages: Array<Array<Entry>>\n type: string\n expanded: Accessor<boolean>\n toggleExpanded: () => void\n pageSize: number\n filterSubEntries?: (subEntries: Array<Property>) => Array<Property>\n}\n\n/**\n * Chunk elements in the array by size\n *\n * when the array cannot be chunked evenly by size, the last chunk will be\n * filled with the remaining elements\n *\n * @example\n * chunkArray(['a','b', 'c', 'd', 'e'], 2) // returns [['a','b'], ['c', 'd'], ['e']]\n */\nexport function chunkArray<T>(array: Array<T>, size: number): Array<Array<T>> {\n if (size < 1) return []\n let i = 0\n const result: Array<Array<T>> = []\n while (i < array.length) {\n result.push(array.slice(i, i + size))\n i = i + size\n }\n return result\n}\n\ntype HandleEntryFn = (entry: Entry) => JSX.Element\n\ntype ExplorerProps = Partial<RendererProps> & {\n defaultExpanded?: true | Record<string, boolean>\n value: Accessor<unknown>\n}\n\ntype Property = {\n defaultExpanded?: boolean | Record<string, boolean>\n label: string\n value: unknown\n}\n\nfunction isIterable(x: any): x is Iterable<unknown> {\n return Symbol.iterator in x\n}\n\nexport function Explorer({\n value,\n defaultExpanded,\n pageSize = 100,\n filterSubEntries,\n ...rest\n}: ExplorerProps) {\n const [expanded, setExpanded] = createSignal(Boolean(defaultExpanded))\n const toggleExpanded = () => setExpanded((old) => !old)\n\n const type = createMemo(() => typeof value())\n const subEntries = createMemo(() => {\n let entries: Array<Property> = []\n\n const makeProperty = (sub: { label: string; value: unknown }): Property => {\n const subDefaultExpanded =\n defaultExpanded === true\n ? { [sub.label]: true }\n : defaultExpanded?.[sub.label]\n return {\n ...sub,\n value: () => sub.value,\n defaultExpanded: subDefaultExpanded,\n }\n }\n\n if (Array.isArray(value())) {\n // any[]\n entries = (value() as Array<any>).map((d, i) =>\n makeProperty({\n label: i.toString(),\n value: d,\n }),\n )\n } else if (\n value() !== null &&\n typeof value() === 'object' &&\n isIterable(value()) &&\n typeof (value() as Iterable<unknown>)[Symbol.iterator] === 'function'\n ) {\n // Iterable<unknown>\n entries = Array.from(value() as Iterable<unknown>, (val, i) =>\n makeProperty({\n label: i.toString(),\n value: val,\n }),\n )\n } else if (typeof value() === 'object' && value() !== null) {\n // object\n entries = Object.entries(value() as object).map(([key, val]) =>\n makeProperty({\n label: key,\n value: val,\n }),\n )\n }\n\n return filterSubEntries ? filterSubEntries(entries) : entries\n })\n\n const subEntryPages = createMemo(() => chunkArray(subEntries(), pageSize))\n\n const [expandedPages, setExpandedPages] = createSignal<Array<number>>([])\n const [valueSnapshot, setValueSnapshot] = createSignal(undefined)\n const styles = useStyles()\n\n const refreshValueSnapshot = () => {\n setValueSnapshot((value() as () => any)())\n }\n\n const handleEntry = (entry: Entry) => (\n <Explorer\n value={value}\n filterSubEntries={filterSubEntries}\n {...rest}\n {...entry}\n />\n )\n\n return (\n <div class={styles().entry}>\n {subEntryPages().length ? (\n <>\n <button\n class={styles().expandButton}\n onClick={() => toggleExpanded()}\n >\n <Expander expanded={expanded() ?? false} />\n {rest.label}\n <span class={styles().info}>\n {String(type).toLowerCase() === 'iterable' ? '(Iterable) ' : ''}\n {subEntries().length} {subEntries().length > 1 ? `items` : `item`}\n </span>\n </button>\n {(expanded() ?? false) ? (\n subEntryPages().length === 1 ? (\n <div class={styles().subEntries}>\n {subEntries().map((entry, index) => handleEntry(entry))}\n </div>\n ) : (\n <div class={styles().subEntries}>\n {subEntryPages().map((entries, index) => {\n return (\n <div>\n <div class={styles().entry}>\n <button\n class={cx(styles().labelButton, 'labelButton')}\n onClick={() =>\n setExpandedPages((old) =>\n old.includes(index)\n ? old.filter((d) => d !== index)\n : [...old, index],\n )\n }\n >\n <Expander\n expanded={expandedPages().includes(index)}\n />{' '}\n [{index * pageSize} ...{' '}\n {index * pageSize + pageSize - 1}]\n </button>\n {expandedPages().includes(index) ? (\n <div class={styles().subEntries}>\n {entries.map((entry) => handleEntry(entry))}\n </div>\n ) : null}\n </div>\n </div>\n )\n })}\n </div>\n )\n ) : null}\n </>\n ) : type() === 'function' ? (\n <>\n <Explorer\n label={\n <button\n onClick={refreshValueSnapshot}\n class={styles().refreshValueBtn}\n >\n <span>{rest.label}</span> 🔄{' '}\n </button>\n }\n value={valueSnapshot}\n defaultExpanded={{}}\n />\n </>\n ) : (\n <>\n <span>{rest.label}:</span>{' '}\n <span class={styles().value}>{displayValue(value())}</span>\n </>\n )}\n </div>\n )\n}\n\nconst stylesFactory = (shadowDOMTarget?: ShadowRoot) => {\n const { colors, font, size, alpha, shadow, border } = tokens\n const { fontFamily, lineHeight, size: fontSize } = font\n const css = shadowDOMTarget\n ? goober.css.bind({ target: shadowDOMTarget })\n : goober.css\n\n return {\n entry: css`\n font-family: ${fontFamily.mono};\n font-size: ${fontSize.xs};\n line-height: ${lineHeight.sm};\n outline: none;\n word-break: break-word;\n `,\n labelButton: css`\n cursor: pointer;\n color: inherit;\n font: inherit;\n outline: inherit;\n background: transparent;\n border: none;\n padding: 0;\n `,\n expander: css`\n display: inline-flex;\n align-items: center;\n justify-content: center;\n width: ${size[3]};\n height: ${size[3]};\n padding-left: 3px;\n box-sizing: content-box;\n `,\n expanderIcon: (expanded: boolean) => {\n if (expanded) {\n return css`\n transform: rotate(90deg);\n transition: transform 0.1s ease;\n `\n }\n return css`\n transform: rotate(0deg);\n transition: transform 0.1s ease;\n `\n },\n expandButton: css`\n display: flex;\n gap: ${size[1]};\n align-items: center;\n cursor: pointer;\n color: inherit;\n font: inherit;\n outline: inherit;\n background: transparent;\n border: none;\n padding: 0;\n `,\n value: css`\n color: ${colors.purple[400]};\n `,\n subEntries: css`\n margin-left: ${size[2]};\n padding-left: ${size[2]};\n border-left: 2px solid ${colors.darkGray[400]};\n `,\n info: css`\n color: ${colors.gray[500]};\n font-size: ${fontSize['2xs']};\n padding-left: ${size[1]};\n `,\n refreshValueBtn: css`\n appearance: none;\n border: 0;\n cursor: pointer;\n background: transparent;\n color: inherit;\n padding: 0;\n font-family: ${fontFamily.mono};\n font-size: ${fontSize.xs};\n `,\n }\n}\n\nfunction useStyles() {\n const shadowDomTarget = useContext(ShadowDomTargetContext)\n const [_styles] = createSignal(stylesFactory(shadowDomTarget))\n return _styles\n}\n","import { clsx as cx } from 'clsx'\nimport { useStyles } from './useStyles'\nimport type { AnyRouteMatch, AnyRouter } from '@tanstack/router-core'\nimport type { Accessor } from 'solid-js'\n\nfunction formatTime(ms: number) {\n const units = ['s', 'min', 'h', 'd']\n const values = [ms / 1000, ms / 60000, ms / 3600000, ms / 86400000]\n\n let chosenUnitIndex = 0\n for (let i = 1; i < values.length; i++) {\n if (values[i]! < 1) break\n chosenUnitIndex = i\n }\n\n const formatter = new Intl.NumberFormat(navigator.language, {\n compactDisplay: 'short',\n notation: 'compact',\n maximumFractionDigits: 0,\n })\n\n return formatter.format(values[chosenUnitIndex]!) + units[chosenUnitIndex]\n}\n\nexport function AgeTicker({\n match,\n router,\n}: {\n match?: AnyRouteMatch\n router: Accessor<AnyRouter>\n}) {\n const styles = useStyles()\n\n if (!match) {\n return null\n }\n\n const route = router().looseRoutesById[match.routeId]!\n\n if (!route.options.loader) {\n return null\n }\n\n const age = Date.now() - match.updatedAt\n const staleTime =\n route.options.staleTime ?? router().options.defaultStaleTime ?? 0\n const gcTime =\n route.options.gcTime ?? router().options.defaultGcTime ?? 30 * 60 * 1000\n\n return (\n <div class={cx(styles().ageTicker(age > staleTime))}>\n <div>{formatTime(age)}</div>\n <div>/</div>\n <div>{formatTime(staleTime)}</div>\n <div>/</div>\n <div>{formatTime(gcTime)}</div>\n </div>\n )\n}\n","import { useStyles } from './useStyles'\nimport type { AnyRouter, NavigateOptions } from '@tanstack/router-core'\nimport type { Accessor } from 'solid-js'\n\ninterface Props extends NavigateOptions {\n router: Accessor<AnyRouter>\n}\n\nexport function NavigateButton({ to, params, search, router }: Props) {\n const styles = useStyles()\n\n return (\n <button\n type=\"button\"\n title={`Navigate to ${to}`}\n class={styles().navigateButton}\n onClick={(e) => {\n e.stopPropagation()\n router().navigate({ to, params, search })\n }}\n >\n ➔\n </button>\n )\n}\n","import { clsx as cx } from 'clsx'\nimport { default as invariant } from 'tiny-invariant'\nimport { interpolatePath, rootRouteId, trimPath } from '@tanstack/router-core'\nimport { Show, createMemo, createSignal, onCleanup } from 'solid-js'\nimport { useDevtoolsOnClose } from './context'\nimport { useStyles } from './useStyles'\nimport useLocalStorage from './useLocalStorage'\nimport { Explorer } from './Explorer'\nimport { getRouteStatusColor, getStatusColor, multiSortBy } from './utils'\nimport { AgeTicker } from './AgeTicker'\n// import type { DevtoolsPanelOptions } from './TanStackRouterDevtoolsPanel'\n\nimport { NavigateButton } from './NavigateButton'\nimport type {\n AnyContext,\n AnyRoute,\n AnyRouter,\n FileRouteTypes,\n MakeRouteMatchUnion,\n Route,\n RouterState,\n} from '@tanstack/router-core'\nimport type { Accessor, JSX } from 'solid-js'\n\nexport interface BaseDevtoolsPanelOptions {\n /**\n * The standard React style object used to style a component with inline styles\n */\n style?: Accessor<JSX.CSSProperties>\n /**\n * The standard React class property used to style a component with classes\n */\n className?: Accessor<string>\n /**\n * A boolean variable indicating whether the panel is open or closed\n */\n isOpen?: boolean\n /**\n * A function that toggles the open and close state of the panel\n */\n setIsOpen?: (isOpen: boolean) => void\n /**\n * Handles the opening and closing the devtools panel\n */\n handleDragStart?: (e: any) => void\n /**\n * A boolean variable indicating if the \"lite\" version of the library is being used\n */\n router: Accessor<AnyRouter>\n routerState: Accessor<any>\n /**\n * Use this to attach the devtool's styles to specific element in the DOM.\n */\n shadowDOMTarget?: ShadowRoot\n}\n\nfunction Logo(props: any) {\n const { className, ...rest } = props\n const styles = useStyles()\n return (\n <button {...rest} class={cx(styles().logo, className ? className() : '')}>\n <div class={styles().tanstackLogo}>TANSTACK</div>\n <div class={styles().routerLogo}>TanStack Router v1</div>\n </button>\n )\n}\n\nfunction NavigateLink(props: {\n class?: string\n left?: JSX.Element\n children?: JSX.Element\n right?: JSX.Element\n}) {\n return (\n <div\n class={props.class}\n style={{\n display: 'flex',\n 'align-items': 'center',\n width: '100%',\n }}\n >\n {props.left}\n <div style={{ 'flex-grow': 1, 'min-width': 0 }}>{props.children}</div>\n {props.right}\n </div>\n )\n}\n\nfunction RouteComp({\n routerState,\n router,\n route,\n isRoot,\n activeId,\n setActiveId,\n}: {\n routerState: Accessor<\n RouterState<\n Route<\n any,\n any,\n any,\n '/',\n '/',\n string,\n '__root__',\n undefined,\n {},\n {},\n AnyContext,\n AnyContext,\n {},\n undefined,\n any,\n FileRouteTypes,\n unknown,\n undefined\n >,\n MakeRouteMatchUnion\n >\n >\n router: Accessor<AnyRouter>\n route: AnyRoute\n isRoot?: boolean\n activeId: Accessor<string | undefined>\n setActiveId: (id: string) => void\n}) {\n const styles = useStyles()\n const matches = createMemo(\n () => routerState().pendingMatches || routerState().matches,\n )\n const match = createMemo(() =>\n routerState().matches.find((d) => d.routeId === route.id),\n )\n\n const param = createMemo(() => {\n try {\n if (match()?.params) {\n const p = match()?.params\n const r: string = route.path || trimPath(route.id)\n if (r.startsWith('$')) {\n const trimmed = r.slice(1)\n\n if (p[trimmed]) {\n return `(${p[trimmed]})`\n }\n }\n }\n return ''\n } catch (error) {\n return ''\n }\n })\n\n const navigationTarget = createMemo<string | undefined>(() => {\n if (isRoot) return undefined // rootRouteId has no path\n if (!route.path) return undefined // no path to navigate to\n\n // flatten all params in the router state, into a single object\n const allParams = Object.assign({}, ...matches().map((m) => m.params))\n\n // interpolatePath is used by router-core to generate the `to`\n // path for the navigate function in the router\n const interpolated = interpolatePath({\n path: route.fullPath,\n params: allParams,\n leaveWildcards: false,\n leaveParams: false,\n decodeCharMap: router().pathParamsDecodeCharMap,\n })\n\n // only if `interpolated` is not missing params, return the path since this\n // means that all the params are present for a successful navigation\n return !interpolated.isMissingParams\n ? interpolated.interpolatedPath\n : undefined\n })\n\n return (\n <div>\n <div\n role=\"button\"\n aria-label={`Open match details for ${route.id}`}\n onClick={() => {\n if (match()) {\n setActiveId(activeId() === route.id ? '' : route.id)\n }\n }}\n class={cx(\n styles().routesRowContainer(route.id === activeId(), !!match()),\n )}\n >\n <div\n class={cx(\n styles().matchIndicator(getRouteStatusColor(matches(), route)),\n )}\n />\n <NavigateLink\n class={cx(styles().routesRow(!!match()))}\n left={\n <Show when={navigationTarget()}>\n {(navigate) => <NavigateButton to={navigate()} router={router} />}\n </Show>\n }\n right={<AgeTicker match={match()} router={router} />}\n >\n <code class={styles().code}>\n {isRoot ? rootRouteId : route.path || trimPath(route.id)}{' '}\n </code>\n <code class={styles().routeParamInfo}>{param()}</code>\n </NavigateLink>\n </div>\n {route.children?.length ? (\n <div class={styles().nestedRouteRow(!!isRoot)}>\n {[...(route.children as Array<AnyRoute>)]\n .sort((a, b) => {\n return a.rank - b.rank\n })\n .map((r) => (\n <RouteComp\n routerState={routerState}\n router={router}\n route={r}\n activeId={activeId}\n setActiveId={setActiveId}\n />\n ))}\n </div>\n ) : null}\n </div>\n )\n}\n\nexport const BaseTanStackRouterDevtoolsPanel =\n function BaseTanStackRouterDevtoolsPanel({\n ...props\n }: BaseDevtoolsPanelOptions): JSX.Element {\n const {\n isOpen = true,\n setIsOpen,\n handleDragStart,\n router,\n routerState,\n shadowDOMTarget,\n ...panelProps\n } = props\n\n const { onCloseClick } = useDevtoolsOnClose()\n const styles = useStyles()\n const { className, style, ...otherPanelProps } = panelProps\n\n invariant(\n router,\n '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.',\n )\n\n // useStore(router.__store)\n\n const [showMatches, setShowMatches] = useLocalStorage(\n 'tanstackRouterDevtoolsShowMatches',\n true,\n )\n\n const [activeId, setActiveId] = useLocalStorage(\n 'tanstackRouterDevtoolsActiveRouteId',\n '',\n )\n\n const activeMatch = createMemo(() => {\n const matches = [\n ...(routerState().pendingMatches ?? []),\n ...routerState().matches,\n ...routerState().cachedMatches,\n ]\n return matches.find(\n (d) => d.routeId === activeId() || d.id === activeId(),\n )\n })\n\n const hasSearch = createMemo(\n () => Object.keys(routerState().location.search).length,\n )\n\n const explorerState = createMemo(() => {\n return {\n ...router(),\n state: routerState(),\n }\n })\n\n const routerExplorerValue = createMemo(() =>\n Object.fromEntries(\n multiSortBy(\n Object.keys(explorerState()),\n (\n [\n 'state',\n 'routesById',\n 'routesByPath',\n 'flatRoutes',\n 'options',\n 'manifest',\n ] as const\n ).map((d) => (dd) => dd !== d),\n )\n .map((key) => [key, (explorerState() as any)[key]])\n .filter(\n (d) =>\n typeof d[1] !== 'function' &&\n ![\n '__store',\n 'basepath',\n 'injectedHtml',\n 'subscribers',\n 'latestLoadPromise',\n 'navigateTimeout',\n 'resetNextScroll',\n 'tempLocationKey',\n 'latestLocation',\n 'routeTree',\n 'history',\n ].includes(d[0]),\n ),\n ),\n )\n const activeMatchLoaderData = createMemo(() => activeMatch()?.loaderData)\n const activeMatchValue = createMemo(() => activeMatch())\n const locationSearchValue = createMemo(() => routerState().location.search)\n\n return (\n <div\n class={cx(\n styles().devtoolsPanel,\n 'TanStackRouterDevtoolsPanel',\n className ? className() : '',\n )}\n style={style ? style() : ''}\n {...otherPanelProps}\n >\n {handleDragStart ? (\n <div class={styles().dragHandle} onMouseDown={handleDragStart}></div>\n ) : null}\n <button\n class={styles().panelCloseBtn}\n onClick={(e: any) => {\n if (setIsOpen) {\n setIsOpen(false)\n }\n onCloseClick(e)\n }}\n >\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"10\"\n height=\"6\"\n fill=\"none\"\n viewBox=\"0 0 10 6\"\n class={styles().panelCloseBtnIcon}\n >\n <path\n stroke=\"currentColor\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n stroke-width=\"1.667\"\n d=\"M1 1l4 4 4-4\"\n ></path>\n </svg>\n </button>\n <div class={styles().firstContainer}>\n <div class={styles().row}>\n <Logo\n aria-hidden\n onClick={(e: any) => {\n if (setIsOpen) {\n setIsOpen(false)\n }\n onCloseClick(e)\n }}\n />\n </div>\n <div class={styles().routerExplorerContainer}>\n <div class={styles().routerExplorer}>\n <Explorer\n label=\"Router\"\n value={routerExplorerValue}\n defaultExpanded={{\n state: {} as any,\n context: {} as any,\n options: {} as any,\n }}\n filterSubEntries={(subEntries) => {\n return subEntries.filter(\n (d: any) => typeof d.value() !== 'function',\n )\n }}\n />\n </div>\n </div>\n </div>\n <div class={styles().secondContainer}>\n <div class={styles().matchesContainer}>\n <div class={styles().detailsHeader}>\n <span>Pathname</span>\n {routerState().location.maskedLocation ? (\n <div class={styles().maskedBadgeContainer}>\n <span class={styles().maskedBadge}>masked</span>\n </div>\n ) : null}\n </div>\n <div class={styles().detailsContent}>\n <code>{routerState().location.pathname}</code>\n {routerState().location.maskedLocation ? (\n <code class={styles().maskedLocation}>\n {routerState().location.maskedLocation?.pathname}\n </code>\n ) : null}\n </div>\n <div class={styles().detailsHeader}>\n <div class={styles().routeMatchesToggle}>\n <button\n type=\"button\"\n onClick={() => {\n setShowMatches(false)\n }}\n disabled={!showMatches()}\n class={cx(\n styles().routeMatchesToggleBtn(!showMatches(), true),\n )}\n >\n Routes\n </button>\n <button\n type=\"button\"\n onClick={() => {\n setShowMatches(true)\n }}\n disabled={showMatches()}\n class={cx(\n styles().routeMatchesToggleBtn(!!showMatches(), false),\n )}\n >\n Matches\n </button>\n </div>\n <div class={styles().detailsHeaderInfo}>\n <div>age / staleTime / gcTime</div>\n </div>\n </div>\n <div class={cx(styles().routesContainer)}>\n {!showMatches() ? (\n <RouteComp\n routerState={routerState}\n router={router}\n route={router().routeTree}\n isRoot\n activeId={activeId}\n setActiveId={setActiveId}\n />\n ) : (\n <div>\n {(routerState().pendingMatches?.length\n ? routerState().pendingMatches\n : routerState().matches\n )?.map((match: any, _i: any) => {\n return (\n <div\n role=\"button\"\n aria-label={`Open match details for ${match.id}`}\n onClick={() =>\n setActiveId(activeId() === match.id ? '' : match.id)\n }\n class={cx(styles().matchRow(match === activeMatch()))}\n >\n <div\n class={cx(\n styles().matchIndicator(getStatusColor(match)),\n )}\n />\n <NavigateLink\n left={\n <NavigateButton\n to={match.pathname}\n params={match.params}\n search={match.search}\n router={router}\n />\n }\n right={<AgeTicker match={match} router={router} />}\n >\n <code class={styles().matchID}>\n {`${match.routeId === rootRouteId ? rootRouteId : match.pathname}`}\n </code>\n </NavigateLink>\n </div>\n )\n })}\n </div>\n )}\n </div>\n </div>\n {routerState().cachedMatches.length ? (\n <div class={styles().cachedMatchesContainer}>\n <div class={styles().detailsHeader}>\n <div>Cached Matches</div>\n <div class={styles().detailsHeaderInfo}>\n age / staleTime / gcTime\n </div>\n </div>\n <div>\n {routerState().cachedMatches.map((match: any) => {\n return (\n <div\n role=\"button\"\n aria-label={`Open match details for ${match.id}`}\n onClick={() =>\n setActiveId(activeId() === match.id ? '' : match.id)\n }\n class={cx(styles().matchRow(match === activeMatch()))}\n >\n <div\n class={cx(\n styles().matchIndicator(getStatusColor(match)),\n )}\n />\n <NavigateLink\n left={\n <NavigateButton\n to={match.pathname}\n params={match.params}\n search={match.search}\n router={router}\n />\n }\n right={<AgeTicker match={match} router={router} />}\n >\n <code class={styles().matchID}>{`${match.id}`}</code>\n </NavigateLink>\n </div>\n )\n })}\n </div>\n </div>\n ) : null}\n </div>\n {activeMatch() && activeMatch()?.status ? (\n <div class={styles().thirdContainer}>\n <div class={styles().detailsHeader}>Match Details</div>\n <div>\n <div class={styles().matchDetails}>\n <div\n class={styles().matchStatus(\n activeMatch()?.status,\n activeMatch()?.isFetching,\n )}\n >\n <div>\n {activeMatch()?.status === 'success' &&\n activeMatch()?.isFetching\n ? 'fetching'\n : activeMatch()?.status}\n </div>\n </div>\n <div class={styles().matchDetailsInfoLabel}>\n <div>ID:</div>\n <div class={styles().matchDetailsInfo}>\n <code>{activeMatch()?.id}</code>\n </div>\n </div>\n <div class={styles().matchDetailsInfoLabel}>\n <div>State:</div>\n <div class={styles().matchDetailsInfo}>\n {routerState().pendingMatches?.find(\n (d: any) => d.id === activeMatch()?.id,\n )\n ? 'Pending'\n : routerState().matches.find(\n (d: any) => d.id === activeMatch()?.id,\n )\n ? 'Active'\n : 'Cached'}\n </div>\n </div>\n <div class={styles().matchDetailsInfoLabel}>\n <div>Last Updated:</div>\n <div class={styles().matchDetailsInfo}>\n {activeMatch()?.updatedAt\n ? new Date(activeMatch()?.updatedAt).toLocaleTimeString()\n : 'N/A'}\n </div>\n </div>\n </div>\n </div>\n {activeMatchLoaderData() ? (\n <>\n <div class={styles().detailsHeader}>Loader Data</div>\n <div class={styles().detailsContent}>\n <Explorer\n label=\"loaderData\"\n value={activeMatchLoaderData}\n defaultExpanded={{}}\n />\n </div>\n </>\n ) : null}\n <div class={styles().detailsHeader}>Explorer</div>\n <div class={styles().detailsContent}>\n <Explorer\n label=\"Match\"\n value={activeMatchValue}\n defaultExpanded={{}}\n />\n </div>\n </div>\n ) : null}\n {hasSearch() ? (\n <div class={styles().fourthContainer}>\n <div class={styles().detailsHeader}>\n <span>Search Params</span>\n {typeof navigator !== 'undefined' ? (\n <span style=\"margin-left: 0.5rem;\">\n <CopyButton\n getValue={() => {\n const search = routerState().location.search\n return JSON.stringify(search)\n }}\n />\n </span>\n ) : null}\n </div>\n <div class={styles().detailsContent}>\n <Explorer\n value={locationSearchValue}\n defaultExpanded={Object.keys(\n routerState().location.search,\n ).reduce((obj: any, next) => {\n obj[next] = {}\n return obj\n }, {})}\n />\n </div>\n </div>\n ) : null}\n </div>\n )\n }\n\nfunction CopyButton({ getValue }: { getValue: () => string }) {\n const [copied, setCopied] = createSignal(false)\n\n let timeoutId: ReturnType<typeof setTimeout> | null = null\n\n const handleCopy = async () => {\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition\n if (typeof navigator === 'undefined' || !navigator.clipboard?.writeText) {\n console.warn('TanStack Router Devtools: Clipboard API unavailable')\n return\n }\n try {\n const value = getValue()\n await navigator.clipboard.writeText(value)\n setCopied(true)\n if (timeoutId) clearTimeout(timeoutId)\n timeoutId = setTimeout(() => setCopied(false), 2500)\n } catch (e) {\n console.error('TanStack Router Devtools: Failed to copy', e)\n }\n }\n\n onCleanup(() => {\n if (timeoutId) clearTimeout(timeoutId)\n })\n\n return (\n <button\n type=\"button\"\n style=\"cursor: pointer;\"\n onClick={handleCopy}\n aria-label=\"Copy value to clipboard\"\n title={copied() ? 'Copied!' : 'Copy'}\n >\n {copied() ? '✅' : '📋'}\n </button>\n )\n}\n\nexport default BaseTanStackRouterDevtoolsPanel\n"],"names":["isServer","window","getStatusColor","match","colorMap","pending","success","error","notFound","redirected","isFetching","status","getRouteStatusColor","matches","route","found","find","d","routeId","id","useIsMounted","isMounted","setIsMounted","createSignal","effect","createEffect","createRenderEffect","displayValue","value","name","Object","getOwnPropertyNames","newValue","toString","JSON","stringify","e","multiSortBy","arr","accessors","map","i","sort","a","ai","b","bi","accessor","ao","bo","stylesFactory","shadowDOMTarget","colors","font","size","alpha","border","tokens","fontFamily","lineHeight","fontSize","css","goober","bind","target","devtoolsPanelContainer","gray","devtoolsPanelContainerVisibility","isOpen","devtoolsPanelContainerResizing","isResizing","devtoolsPanelContainerAnimation","height","logo","sans","radius","xs","blue","tanstackLogo","md","weight","bold","routerLogo","semibold","devtoolsPanel","sm","darkGray","dragHandle","purple","firstContainer","routerExplorerContainer","routerExplorer","row","detailsHeader","medium","maskedBadge","yellow","full","normal","maskedLocation","detailsContent","routeMatchesToggle","routeMatchesToggleBtn","active","showBorder","base","classes","activeStyles","push","inactiveStyles","detailsHeaderInfo","matchRow","matchIndicator","color","grayStyles","matchID","ageTicker","showWarning","warningStyles","secondContainer","thirdContainer","fourthContainer","routesContainer","routesRowContainer","isMatch","routesRow","matchStyles","routesRowInner","routeParamInfo","nestedRouteRow","isRoot","code","matchesContainer","cachedMatchesContainer","maskedBadgeContainer","matchDetails","matchStatus","matchDetailsInfo","matchDetailsInfoLabel","mainCloseBtn","mainCloseBtnPosition","position","mainCloseBtnAnimation","routerLogoCloseButton","mainCloseBtnDivider","mainCloseBtnIconContainer","mainCloseBtnIconOuter","mainCloseBtnIconInner","panelCloseBtn","panelCloseBtnIcon","navigateButton","useStyles","shadowDomTarget","useContext","ShadowDomTargetContext","_styles","Expander","expanded","style","styles","_el$","_tmpl$","_el$2","firstChild","_$effect","_p$","_v$","expander","_v$2","cx","expanderIcon","_$className","t","_$setAttribute","undefined","chunkArray","array","result","length","slice","isIterable","x","Symbol","iterator","Explorer","defaultExpanded","pageSize","filterSubEntries","rest","setExpanded","Boolean","toggleExpanded","old","type","createMemo","subEntries","entries","makeProperty","sub","subDefaultExpanded","label","Array","isArray","from","val","key","subEntryPages","expandedPages","setExpandedPages","valueSnapshot","setValueSnapshot","refreshValueSnapshot","handleEntry","entry","_$createComponent","_$mergeProps","_el$3","_tmpl$2","_$insert","_c$","_$memo","_el$4","_tmpl$3","_el$5","_el$6","$$click","String","toLowerCase","_v$3","expandButton","_v$4","info","_el$7","index","_el$8","_el$9","_tmpl$4","_el$0","_el$1","_el$10","_el$15","nextSibling","_el$12","_el$16","includes","filter","_c$3","_el$17","_v$5","_v$6","labelButton","_c$2","_el$18","_tmpl$5","_el$19","refreshValueBtn","_el$20","_tmpl$6","_el$21","_el$22","_tmpl$7","mono","_$delegateEvents","formatTime","ms","units","values","chosenUnitIndex","formatter","Intl","NumberFormat","navigator","language","compactDisplay","notation","maximumFractionDigits","format","AgeTicker","router","looseRoutesById","options","loader","age","Date","now","updatedAt","staleTime","defaultStaleTime","gcTime","defaultGcTime","NavigateButton","to","params","search","stopPropagation","navigate","Logo","props","className","_$spread","NavigateLink","setProperty","left","children","right","class","RouteComp","routerState","activeId","setActiveId","pendingMatches","param","p","r","path","trimPath","startsWith","trimmed","navigationTarget","allParams","assign","m","interpolated","interpolatePath","fullPath","leaveWildcards","leaveParams","decodeCharMap","pathParamsDecodeCharMap","isMissingParams","interpolatedPath","Show","when","rootRouteId","rank","BaseTanStackRouterDevtoolsPanel","setIsOpen","handleDragStart","panelProps","onCloseClick","useDevtoolsOnClose","otherPanelProps","invariant","showMatches","setShowMatches","useLocalStorage","activeMatch","cachedMatches","hasSearch","keys","location","explorerState","state","routerExplorerValue","fromEntries","dd","activeMatchLoaderData","loaderData","activeMatchValue","locationSearchValue","_el$11","_el$13","_el$14","_el$23","_el$24","_el$25","_el$26","_el$27","_el$28","_el$29","_el$30","_$addEventListener","onClick","context","_el$31","_tmpl$8","_el$32","_v$22","_v$23","pathname","_el$33","_c$4","routeTree","_el$34","_i","_el$35","_tmpl$9","_el$36","_el$37","_v$24","_v$25","_v$26","_c$5","_el$38","_tmpl$0","_el$39","_el$40","_el$41","_el$42","_el$43","_el$44","_el$45","_v$30","_v$31","_v$32","_v$27","_v$28","_v$29","_c$6","_el$46","_tmpl$1","_el$47","_el$48","_el$49","_el$50","_el$51","_el$52","_el$53","_el$54","_el$55","_el$56","_el$57","_el$58","_el$59","_el$60","_el$61","_el$62","_el$63","_c$8","_c$9","_c$0","toLocaleTimeString","_c$1","_el$64","_tmpl$10","_el$65","_v$33","_v$34","_v$35","_v$36","_v$37","_v$38","_v$39","_v$40","_v$41","_v$42","_v$43","_v$44","o","n","s","h","l","u","_c$7","_el$66","_tmpl$11","_el$67","_el$69","_el$70","_tmpl$12","CopyButton","getValue","reduce","obj","next","_v$45","_v$46","_v$47","_v$7","_v$8","_v$9","_v$0","_v$1","_v$10","_v$11","_v$12","_v$13","_v$14","_v$15","_v$16","_v$17","_v$18","_v$19","_v$20","_v$21","c","disabled","w","f","y","g","copied","setCopied","timeoutId","handleCopy","clipboard","writeText","console","warn","setTimeout","onCleanup","_el$71","_tmpl$13"],"mappings":"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"}
|