@tanstack/router-devtools-core 1.167.1 → 1.167.3

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.
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BaseTanStackRouterDevtoolsPanel-BbL4h7yi.js","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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"}