{"version":3,"file":"BaseTanStackRouterDevtoolsPanel-CpzRf10l.cjs","names":["goober","createSignal","useContext","tokens","ShadowDomTargetContext","Accessor","stylesFactory","shadowDOMTarget","ShadowRoot","colors","font","size","alpha","shadow","border","fontFamily","lineHeight","fontSize","css","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","historyContainer","historyOverflowContainer","maskedBadgeContainer","matchDetails","matchStatus","status","isFetching","colorMap","pending","success","error","notFound","redirected","const","matchDetailsInfo","matchDetailsInfoLabel","mainCloseBtn","mainCloseBtnPosition","position","mainCloseBtnAnimation","routerLogoCloseButton","mainCloseBtnDivider","mainCloseBtnIconContainer","mainCloseBtnIconOuter","mainCloseBtnIconInner","panelCloseBtn","panelCloseBtnIcon","navigateButton","useStyles","shadowDomTarget","_styles","Dynamic","createEffect","createRenderEffect","createSignal","useTheme","useMediaQuery","AnyRoute","AnyRouteMatch","Theme","JSX","isServer","window","StyledComponent","T","ButtonHTMLAttributes","HTMLButtonElement","InputHTMLAttributes","HTMLInputElement","SelectHTMLAttributes","HTMLSelectElement","HTMLElementTagNameMap","HTMLAttributes","getStatusColor","match","colorMap","pending","success","error","notFound","redirected","const","isFetching","status","getRouteStatusColor","matches","Array","route","found","find","d","routeId","id","Styles","CSSProperties","props","Record","theme","styled","type","newStyles","queries","ref","style","rest","mediaStyles","Object","entries","reduce","current","key","value","baseStyles","combinedStyles","cssText","_$createComponent","_$mergeProps","component","r$","_ref$","useIsMounted","isMounted","setIsMounted","effect","SERVER_COMPONENT_STREAM","Symbol","for","RENDERABLE_RSC","RSC_SLOT_USAGES","RscSlotUsageEvent","slot","args","trimTrailingUndefined","arr","end","length","undefined","slice","ServerComponentType","isServerComponent","getServerComponentType","v","getServerComponentSlots","out","usages","isArray","evt","name","includes","push","getServerComponentSlotUsages","filter","getServerComponentSlotUsageSummary","count","invocations","prev","displayValue","componentType","slots","getOwnPropertyNames","newValue","toString","JSON","stringify","useSafeState","initialState","state","setState","safeSetState","scheduleMicrotask","callback","Promise","resolve","then","catch","setTimeout","multiSortBy","accessors","item","map","i","sort","a","ai","b","bi","accessor","ao","bo","clsx","cx","goober","createMemo","createSignal","useContext","tokens","displayValue","getServerComponentSlotUsageSummary","getServerComponentSlots","getServerComponentType","ShadowDomTargetContext","Accessor","JSX","ExpanderProps","expanded","style","CSSProperties","Expander","_style","styles","useStyles","_el$","_tmpl$","_el$2","firstChild","_$effect","_p$","_v$","expander","_v$2","expanderIcon","e","_$className","t","_$setAttribute","undefined","Entry","label","RendererProps","handleEntry","HandleEntryFn","Element","value","subEntries","Array","subEntryPages","type","toggleExpanded","pageSize","filterSubEntries","Property","chunkArray","array","T","size","i","result","length","push","slice","entry","ExplorerProps","Partial","defaultExpanded","Record","isIterable","x","Iterable","Symbol","iterator","isPlainObject","proto","Object","getPrototypeOf","prototype","Explorer","rest","setExpanded","Boolean","old","entries","makeProperty","sub","subDefaultExpanded","isArray","v","map","key","val","d","toString","from","expandedPages","setExpandedPages","valueSnapshot","setValueSnapshot","refreshValueSnapshot","_$createComponent","_$mergeProps","serverComponentType","serverComponentSlots","serverComponentSlotUsageSummary","isCompositeWithSlots","_el$3","_tmpl$2","_$insert","_c$","_$memo","_el$4","_tmpl$3","_el$5","_el$6","_el$7","nextSibling","$$click","_v$3","expandButton","_v$4","compositeComponent","_el$8","_tmpl$4","_el$9","_el$0","name","usage","invocations","args","_v$5","rscMetaRow","_v$6","rscMetaLabel","_v$7","a","_el$1","_tmpl$5","_el$10","_el$11","_tmpl$6","renderableComponent","_el$12","_tmpl$7","_el$13","_el$14","String","toLowerCase","_v$8","_v$9","info","_el$15","index","_el$16","_el$17","_tmpl$8","_el$18","_el$19","_el$20","_el$25","_el$22","_el$26","_el$24","includes","filter","_c$2","_el$27","_v$0","_v$1","labelButton","_el$28","_tmpl$9","_el$29","refreshValueBtn","_el$30","_el$31","_el$32","stylesFactory","shadowDOMTarget","ShadowRoot","colors","font","border","fontFamily","lineHeight","fontSize","css","bind","target","mono","xs","sm","purple","radius","full","darkGray","cyan","weight","medium","teal","gray","rscChipRow","rscChip","rscChipName","rscChipMeta","shadowDomTarget","_styles","_$delegateEvents","clsx","cx","useStyles","AnyRouteMatch","AnyRouter","Accessor","formatTime","ms","units","values","chosenUnitIndex","i","length","formatter","Intl","NumberFormat","navigator","language","compactDisplay","notation","maximumFractionDigits","format","AgeTicker","match","router","styles","route","looseRoutesById","routeId","options","loader","age","Date","now","updatedAt","staleTime","defaultStaleTime","gcTime","defaultGcTime","_el$","_tmpl$","_el$2","firstChild","_el$3","nextSibling","_el$4","_el$5","_el$6","_$insert","_$effect","_$className","ageTicker","useStyles","AnyRouter","NavigateOptions","Accessor","Props","router","NavigateButton","to","params","search","styles","_el$","_tmpl$","$$click","e","stopPropagation","navigate","_$setAttribute","_$effect","_$className","navigateButton","_$delegateEvents","clsx","cx","interpolatePath","rootRouteId","trimPath","For","Match","Show","Switch","createEffect","createMemo","createSignal","onCleanup","untrack","useDevtoolsOnClose","useStyles","useLocalStorage","Explorer","getRouteStatusColor","getStatusColor","multiSortBy","AgeTicker","NavigateButton","AnyContext","AnyRoute","AnyRouteMatch","AnyRouter","FileRouteTypes","MakeRouteMatchUnion","Route","RouterState","Accessor","JSX","BaseDevtoolsPanelOptions","style","CSSProperties","className","isOpen","setIsOpen","handleDragStart","e","router","routerState","shadowDOMTarget","ShadowRoot","HISTORY_LIMIT","Logo","props","rest","styles","_el$","_tmpl$","_el$2","firstChild","_el$3","nextSibling","_$spread","_$mergeProps","class","logo","_$effect","_p$","_v$","tanstackLogo","_v$2","routerLogo","_$className","t","undefined","NavigateLink","left","Element","children","right","_el$4","_tmpl$2","_el$5","_$insert","RouteComp","pendingMatches","route","isRoot","activeId","setActiveId","Array","id","matches","length","match","find","d","routeId","param","params","p","r","path","startsWith","trimmed","slice","error","navigationTarget","allParams","Object","assign","map","m","interpolated","fullPath","decoder","pathParamsDecoder","isMissingParams","interpolatedPath","_el$6","_tmpl$5","_el$7","_el$8","$$click","_$createComponent","routesRow","when","navigate","to","_el$9","_tmpl$3","_el$0","code","_el$1","_tmpl$4","routeParamInfo","_c$","_$memo","_el$10","_tmpl$6","sort","a","b","rank","nestedRouteRow","_v$3","_v$4","routesRowContainer","_v$5","matchIndicator","_$setAttribute","BaseTanStackRouterDevtoolsPanel","panelProps","onCloseClick","otherPanelProps","currentTab","setCurrentTab","history","setHistory","hasHistoryOverflowed","setHasHistoryOverflowed","cachedMatches","stores","_pendingMatches","setPending","_cachedMatches","setCached","Subscribe","fn","unsubscribe","pendingMatchesStore","get","subscription","subscribe","cachedMatchesStore","currentMatch","historyUntracked","lastMatch","sameLocation","pathname","JSON","stringify","search","prev","newHistory","splice","activeMatch","hasSearch","keys","location","explorerState","state","routerExplorerValue","fromEntries","const","dd","key","filter","includes","activeMatchLoaderData","loaderData","activeMatchValue","locationSearchValue","_el$11","_tmpl$8","_el$12","_el$13","_el$14","_el$15","_el$16","_el$17","_el$18","_el$19","_el$20","_el$21","_el$22","_el$23","_el$24","_el$25","_el$26","_el$27","_el$28","_el$29","_el$30","devtoolsPanel","_el$34","_$addEventListener","dragHandle","onClick","label","value","defaultExpanded","context","options","filterSubEntries","subEntries","_c$2","maskedLocation","_el$35","_tmpl$9","_el$36","_v$24","maskedBadgeContainer","_v$25","maskedBadge","_c$3","_el$37","routeTree","_el$31","_i","_el$38","_tmpl$0","_el$39","_el$40","matchID","_v$26","_v$27","matchRow","_v$28","_el$32","_tmpl$7","_el$33","each","index","_el$41","_tmpl$1","_el$42","_el$43","_v$29","_v$30","_c$4","_el$44","_tmpl$10","historyOverflowContainer","_c$5","_el$45","_tmpl$11","_el$46","_el$47","_el$48","_el$49","_el$50","_el$51","_el$52","_v$34","_v$35","_v$36","_v$31","cachedMatchesContainer","_v$32","detailsHeader","_v$33","detailsHeaderInfo","_c$6","status","_el$53","_tmpl$12","_el$54","_el$55","_el$56","_el$57","_el$58","_el$59","_el$60","_el$61","_el$62","_el$63","_el$64","_el$65","_el$66","_el$67","_el$68","_el$69","_el$70","_c$8","isFetching","_c$9","_c$0","updatedAt","Date","toLocaleTimeString","_c$1","_el$71","_tmpl$13","_el$72","detailsContent","_v$37","thirdContainer","_v$38","_v$39","matchDetails","_v$40","matchStatus","_v$41","matchDetailsInfoLabel","_v$42","matchDetailsInfo","_v$43","_v$44","_v$45","_v$46","_v$47","_v$48","o","i","n","s","h","l","u","_c$7","_el$73","_tmpl$14","_el$74","_el$75","_el$76","navigator","_el$77","_tmpl$15","CopyButton","getValue","reduce","obj","next","_v$49","fourthContainer","_v$50","_v$51","_v$6","panelCloseBtn","_v$7","panelCloseBtnIcon","_v$8","firstContainer","_v$9","row","_v$0","routerExplorerContainer","_v$1","routerExplorer","_v$10","secondContainer","_v$11","matchesContainer","_v$12","_v$13","_v$14","_v$15","routeMatchesToggle","_v$16","_v$17","routeMatchesToggleBtn","_v$18","_v$19","_v$20","_v$21","_v$22","_v$23","routesContainer","c","disabled","w","f","y","g","copied","setCopied","timeoutId","ReturnType","setTimeout","handleCopy","clipboard","writeText","console","warn","clearTimeout","_el$78","_tmpl$16","_$delegateEvents"],"sources":["../src/tokens.ts","../src/useStyles.tsx","../src/useLocalStorage.ts","../src/utils.tsx","../src/Explorer.tsx","../src/AgeTicker.tsx","../src/NavigateButton.tsx","../src/BaseTanStackRouterDevtoolsPanel.tsx"],"sourcesContent":["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    historyContainer: css`\n      display: flex;\n      flex: 1 1 auto;\n      overflow-y: auto;\n      max-height: 50%;\n    `,\n    historyOverflowContainer: css`\n      padding: ${size[1]} ${size[2]};\n      font-size: ${tokens.font.size.xs};\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","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// Symbols for RSC detection\nconst SERVER_COMPONENT_STREAM = Symbol.for('tanstack.rsc.stream')\nconst RENDERABLE_RSC = Symbol.for('tanstack.rsc.renderable')\nconst RSC_SLOT_USAGES = Symbol.for('tanstack.rsc.slotUsages')\n\nexport type RscSlotUsageEvent = {\n  slot: string\n  args?: Array<any>\n}\n\nfunction trimTrailingUndefined<T>(arr: Array<T>): Array<T> {\n  let end = arr.length\n  while (end > 0 && arr[end - 1] === undefined) end--\n  if (end === 0) return arr\n  return end === arr.length ? arr : arr.slice(0, end)\n}\n\nexport type ServerComponentType =\n  | 'compositeSource' // createCompositeComponent result (render via <CompositeComponent src={...} />)\n  | 'renderableValue' // renderServerComponent result (inline renderable value)\n  | null // not a server component\n\n/**\n * Checks if a value is any kind of server component\n */\nexport const isServerComponent = (value: unknown): boolean => {\n  return (\n    (typeof value === 'object' || typeof value === 'function') &&\n    value !== null &&\n    SERVER_COMPONENT_STREAM in value\n  )\n}\n\n/**\n * Gets the type of server component.\n * - RENDERABLE_RSC === true → renderable (from renderServerComponent)\n * - RENDERABLE_RSC === false or not present → composite (from createCompositeComponent)\n */\nexport const getServerComponentType = (value: unknown): ServerComponentType => {\n  if (!isServerComponent(value)) {\n    return null\n  }\n  const v = value as Record<symbol, unknown>\n  if (RENDERABLE_RSC in v && v[RENDERABLE_RSC] === true) {\n    return 'renderableValue'\n  }\n  // RENDERABLE_RSC is false or not present → composite\n  return 'compositeSource'\n}\n\n/**\n * Gets the slot names from a composite server component (dev only)\n */\nexport const getServerComponentSlots = (value: unknown): Array<string> => {\n  if (!isServerComponent(value)) {\n    return []\n  }\n\n  const v = value as Record<symbol, unknown>\n  const out: Array<string> = []\n  // Include any slot names observed via dev-only slot usage events\n  if (RSC_SLOT_USAGES in v) {\n    const usages = v[RSC_SLOT_USAGES]\n    if (Array.isArray(usages)) {\n      for (const evt of usages) {\n        const name = evt?.slot\n        if (typeof name === 'string' && !out.includes(name)) {\n          out.push(name)\n        }\n      }\n    }\n  }\n\n  return out\n}\n\nexport const getServerComponentSlotUsages = (\n  value: unknown,\n): Array<RscSlotUsageEvent> => {\n  if (!isServerComponent(value)) {\n    return []\n  }\n\n  const v = value as Record<symbol, unknown>\n  if (!(RSC_SLOT_USAGES in v)) return []\n  const usages = v[RSC_SLOT_USAGES]\n  if (!Array.isArray(usages)) return []\n\n  return usages.filter((d): d is RscSlotUsageEvent => {\n    return (\n      d &&\n      typeof d === 'object' &&\n      typeof d.slot === 'string' &&\n      (d.args === undefined || Array.isArray(d.args))\n    )\n  })\n}\n\nexport const getServerComponentSlotUsageSummary = (\n  value: unknown,\n): Record<string, { count: number; invocations: Array<Array<any>> }> => {\n  const usages = getServerComponentSlotUsages(value)\n  const out: Record<string, { count: number; invocations: Array<Array<any>> }> =\n    {}\n  for (const evt of usages) {\n    const args = trimTrailingUndefined(evt.args ?? [])\n    const prev =\n      out[evt.slot] ?? (out[evt.slot] = { count: 0, invocations: [] })\n    prev.count++\n    prev.invocations.push(args)\n  }\n  return out\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  if (value === 'React element') return 'React element'\n  const componentType = getServerComponentType(value)\n  if (componentType === 'compositeSource') {\n    const slots = getServerComponentSlots(value)\n    if (slots.length > 0) {\n      return `RSC composite source (${slots.length} ${\n        slots.length === 1 ? 'slot' : 'slots'\n      })`\n    }\n    return 'RSC composite source'\n  }\n  if (componentType === 'renderableValue') {\n    return 'RSC renderable value'\n  }\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 {\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","/* 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 {\n  displayValue,\n  getServerComponentSlotUsageSummary,\n  getServerComponentSlots,\n  getServerComponentType,\n} 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: _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\nfunction isPlainObject(value: unknown): value is Record<string, unknown> {\n  if (!value || typeof value !== 'object') return false\n  const proto = Object.getPrototypeOf(value)\n  return proto === Object.prototype || proto === null\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 (\n      Array.isArray(value()) &&\n      (value() as Array<any>).length === 2 &&\n      (value() as Array<any>)[0] === 'React element' &&\n      isPlainObject((value() as Array<any>)[1])\n    ) {\n      // Special case: treat `[\"React element\", { ...meta }]` as sibling entries\n      // to avoid the meta object being rendered as a deeper nested tree.\n      const v = value() as ['React element', Record<string, unknown>]\n      entries = [\n        makeProperty({ label: '0', value: v[0] }),\n        ...Object.entries(v[1]).map(([key, val]) =>\n          makeProperty({ label: key, value: val }),\n        ),\n      ]\n    } else 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  const serverComponentType = createMemo(() => getServerComponentType(value()))\n  const serverComponentSlots = createMemo(() =>\n    getServerComponentSlots(value()),\n  )\n  const serverComponentSlotUsageSummary = createMemo(() =>\n    getServerComponentSlotUsageSummary(value()),\n  )\n\n  const isCompositeWithSlots = createMemo(\n    () =>\n      serverComponentType() === 'compositeSource' &&\n      serverComponentSlots().length > 0,\n  )\n\n  return (\n    <div class={styles().entry}>\n      {serverComponentType() !== null ? (\n        isCompositeWithSlots() ? (\n          <>\n            <button\n              class={styles().expandButton}\n              onClick={() => toggleExpanded()}\n            >\n              <Expander expanded={expanded() ?? false} />\n              <span>{rest.label}:</span>\n              <span class={styles().compositeComponent}>\n                {displayValue(value())}\n              </span>\n            </button>\n            {(expanded() ?? false) ? (\n              <div class={styles().rscMetaRow}>\n                <span class={styles().rscMetaLabel}>slots</span>\n                <div class={styles().subEntries}>\n                  {serverComponentSlots().map((name) => {\n                    const usage = serverComponentSlotUsageSummary()[name]\n                    if (!usage) return null\n                    return (\n                      <Explorer\n                        label={`${name}:`}\n                        value={() =>\n                          usage.invocations.map((args) =>\n                            args.length === 1 ? args[0] : args,\n                          )\n                        }\n                      />\n                    )\n                  })}\n                </div>\n              </div>\n            ) : null}\n          </>\n        ) : (\n          <>\n            <span>{rest.label}:</span>{' '}\n            <span\n              class={\n                serverComponentType() === 'compositeSource'\n                  ? styles().compositeComponent\n                  : styles().renderableComponent\n              }\n            >\n              {displayValue(value())}\n            </span>\n          </>\n        )\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, 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    compositeComponent: css`\n      display: inline-flex;\n      align-items: center;\n      padding: 1px ${size[1]};\n      border-radius: ${border.radius.full};\n      border: 1px solid ${colors.darkGray[500]};\n      background: ${colors.darkGray[700]};\n      color: ${colors.cyan[300]};\n      font-style: normal;\n      font-weight: ${font.weight.medium};\n    `,\n    renderableComponent: css`\n      display: inline-flex;\n      align-items: center;\n      padding: 1px ${size[1]};\n      border-radius: ${border.radius.full};\n      border: 1px solid ${colors.darkGray[500]};\n      background: ${colors.darkGray[700]};\n      color: ${colors.teal[300]};\n      font-style: normal;\n      font-weight: ${font.weight.medium};\n    `,\n    rscMetaRow: css`\n      display: flex;\n      gap: ${size[1]};\n      align-items: flex-start;\n      margin-left: calc(${size[3]} + ${size[1]});\n      margin-top: ${size[0.5]};\n      flex-wrap: wrap;\n    `,\n    rscMetaLabel: css`\n      color: ${colors.gray[500]};\n      font-size: ${fontSize['2xs']};\n      text-transform: uppercase;\n      letter-spacing: 0.06em;\n      padding-top: 2px;\n    `,\n    rscChipRow: css`\n      display: flex;\n      gap: ${size[1]};\n      flex-wrap: wrap;\n    `,\n    rscChip: css`\n      display: inline-flex;\n      align-items: center;\n      gap: ${size[0.5]};\n      padding: 1px ${size[1]};\n      border-radius: ${border.radius.full};\n      border: 1px solid ${colors.darkGray[500]};\n      background: ${colors.darkGray[800]};\n      color: ${colors.gray[200]};\n      font-size: ${fontSize['2xs']};\n      line-height: ${lineHeight.xs};\n    `,\n    rscChipName: css`\n      color: ${colors.gray[100]};\n    `,\n    rscChipMeta: css`\n      color: ${colors.gray[400]};\n      font-size: ${fontSize['2xs']};\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 { interpolatePath, rootRouteId, trimPath } from '@tanstack/router-core'\nimport {\n  For,\n  Match,\n  Show,\n  Switch,\n  createEffect,\n  createMemo,\n  createSignal,\n  onCleanup,\n  untrack,\n} 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  AnyRouteMatch,\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\nconst HISTORY_LIMIT = 15\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  pendingMatches,\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  pendingMatches: Accessor<Array<AnyRouteMatch>>\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    pendingMatches().length ? 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      decoder: router().pathParamsDecoder,\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                pendingMatches={pendingMatches}\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    // useStore(router.stores.__store)\n\n    const [currentTab, setCurrentTab] = useLocalStorage<\n      'routes' | 'matches' | 'history'\n    >('tanstackRouterDevtoolsActiveTab', 'routes')\n\n    const [activeId, setActiveId] = useLocalStorage(\n      'tanstackRouterDevtoolsActiveRouteId',\n      '',\n    )\n\n    const [history, setHistory] = createSignal<Array<AnyRouteMatch>>([])\n    const [hasHistoryOverflowed, setHasHistoryOverflowed] = createSignal(false)\n\n    let pendingMatches: Accessor<Array<AnyRouteMatch>>\n    let cachedMatches: Accessor<Array<AnyRouteMatch>>\n    // subscribable implementation\n    if ('subscribe' in router().stores.pendingMatches) {\n      const [_pendingMatches, setPending] = createSignal<Array<AnyRouteMatch>>(\n        [],\n      )\n      pendingMatches = _pendingMatches\n\n      const [_cachedMatches, setCached] = createSignal<Array<AnyRouteMatch>>([])\n      cachedMatches = _cachedMatches\n\n      type Subscribe = (fn: () => void) => { unsubscribe: () => void }\n      createEffect(() => {\n        const pendingMatchesStore = router().stores.pendingMatches\n        setPending(pendingMatchesStore.get())\n        const subscription = (\n          (pendingMatchesStore as any).subscribe as Subscribe\n        )(() => {\n          setPending(pendingMatchesStore.get())\n        })\n        onCleanup(() => subscription.unsubscribe())\n      })\n\n      createEffect(() => {\n        const cachedMatchesStore = router().stores.cachedMatches\n        setCached(cachedMatchesStore.get())\n        const subscription = (\n          (cachedMatchesStore as any).subscribe as Subscribe\n        )(() => {\n          setCached(cachedMatchesStore.get())\n        })\n        onCleanup(() => subscription.unsubscribe())\n      })\n    }\n    // signal implementation\n    else {\n      pendingMatches = () => router().stores.pendingMatches.get()\n      cachedMatches = () => router().stores.cachedMatches.get()\n    }\n\n    createEffect(() => {\n      const matches = routerState().matches\n      const currentMatch = matches[matches.length - 1]\n      if (!currentMatch) {\n        return\n      }\n      // Read history WITHOUT tracking it to avoid infinite loops\n      const historyUntracked = untrack(() => history())\n      const lastMatch = historyUntracked[0]\n      const sameLocation =\n        lastMatch &&\n        lastMatch.pathname === currentMatch.pathname &&\n        JSON.stringify(lastMatch.search ?? {}) ===\n          JSON.stringify(currentMatch.search ?? {})\n      if (!lastMatch || !sameLocation) {\n        if (historyUntracked.length >= HISTORY_LIMIT) {\n          setHasHistoryOverflowed(true)\n        }\n        setHistory((prev) => {\n          const newHistory = [currentMatch, ...prev]\n          // truncate to ensure we don't overflow too much the ui\n          newHistory.splice(HISTORY_LIMIT)\n          return newHistory\n        })\n      }\n    })\n\n    const activeMatch = createMemo(() => {\n      const matches = [\n        ...pendingMatches(),\n        ...routerState().matches,\n        ...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              '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                'stores',\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                    setCurrentTab('routes')\n                  }}\n                  disabled={currentTab() === 'routes'}\n                  class={cx(\n                    styles().routeMatchesToggleBtn(\n                      currentTab() === 'routes',\n                      true,\n                    ),\n                  )}\n                >\n                  Routes\n                </button>\n                <button\n                  type=\"button\"\n                  onClick={() => {\n                    setCurrentTab('matches')\n                  }}\n                  disabled={currentTab() === 'matches'}\n                  class={cx(\n                    styles().routeMatchesToggleBtn(\n                      currentTab() === 'matches',\n                      true,\n                    ),\n                  )}\n                >\n                  Matches\n                </button>\n                <button\n                  type=\"button\"\n                  onClick={() => {\n                    setCurrentTab('history')\n                  }}\n                  disabled={currentTab() === 'history'}\n                  class={cx(\n                    styles().routeMatchesToggleBtn(\n                      currentTab() === 'history',\n                      false,\n                    ),\n                  )}\n                >\n                  History\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              <Switch>\n                <Match when={currentTab() === 'routes'}>\n                  <RouteComp\n                    routerState={routerState}\n                    pendingMatches={pendingMatches}\n                    router={router}\n                    route={router().routeTree}\n                    isRoot\n                    activeId={activeId}\n                    setActiveId={setActiveId}\n                  />\n                </Match>\n                <Match when={currentTab() === 'matches'}>\n                  <div>\n                    {(pendingMatches().length\n                      ? 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                </Match>\n                <Match when={currentTab() === 'history'}>\n                  <div>\n                    <ul>\n                      <For each={history()}>\n                        {(match, index) => (\n                          <li\n                            class={cx(\n                              styles().matchRow(match === activeMatch()),\n                            )}\n                          >\n                            <div\n                              class={cx(\n                                styles().matchIndicator(\n                                  index() === 0 ? 'green' : 'gray',\n                                ),\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={\n                                <AgeTicker match={match} router={router} />\n                              }\n                            >\n                              <code class={styles().matchID}>\n                                {`${match.routeId === rootRouteId ? rootRouteId : match.pathname}`}\n                              </code>\n                            </NavigateLink>\n                          </li>\n                        )}\n                      </For>\n                      {hasHistoryOverflowed() ? (\n                        <li class={styles().historyOverflowContainer}>\n                          This panel displays the most recent {HISTORY_LIMIT}{' '}\n                          navigations.\n                        </li>\n                      ) : null}\n                    </ul>\n                  </div>\n                </Match>\n              </Switch>\n            </div>\n          </div>\n          {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                {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                    {pendingMatches().find((d) => d.id === activeMatch()?.id)\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"],"mappings":"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"}