{"version":3,"file":"BaseTanStackRouterDevtoolsPanel-Bmws3ikM.js","sources":["../src/utils.tsx","../src/tokens.ts","../src/useStyles.tsx","../src/useLocalStorage.ts","../src/Explorer.tsx","../src/AgeTicker.tsx","../src/NavigateButton.tsx","../src/BaseTanStackRouterDevtoolsPanel.tsx"],"sourcesContent":["import { Dynamic } from 'solid-js/web'\nimport { createEffect, createRenderEffect, createSignal } from 'solid-js'\nimport { useTheme } from './theme'\nimport useMediaQuery from './useMediaQuery'\nimport type { AnyRoute, AnyRouteMatch } from '@tanstack/router-core'\n\nimport type { Theme } from './theme'\nimport type { JSX } from 'solid-js'\n\nexport const isServer = typeof window === 'undefined'\n\ntype StyledComponent<T> = T extends 'button'\n  ? JSX.ButtonHTMLAttributes<HTMLButtonElement>\n  : T extends 'input'\n    ? JSX.InputHTMLAttributes<HTMLInputElement>\n    : T extends 'select'\n      ? JSX.SelectHTMLAttributes<HTMLSelectElement>\n      : T extends keyof HTMLElementTagNameMap\n        ? JSX.HTMLAttributes<HTMLElementTagNameMap[T]>\n        : never\n\nexport function getStatusColor(match: AnyRouteMatch) {\n  const colorMap = {\n    pending: 'yellow',\n    success: 'green',\n    error: 'red',\n    notFound: 'purple',\n    redirected: 'gray',\n  } as const\n\n  return match.isFetching && match.status === 'success'\n    ? match.isFetching === 'beforeLoad'\n      ? 'purple'\n      : 'blue'\n    : colorMap[match.status]\n}\n\nexport function getRouteStatusColor(\n  matches: Array<AnyRouteMatch>,\n  route: AnyRoute,\n) {\n  const found = matches.find((d) => d.routeId === route.id)\n  if (!found) return 'gray'\n  return getStatusColor(found)\n}\n\ntype Styles =\n  | JSX.CSSProperties\n  | ((props: Record<string, any>, theme: Theme) => JSX.CSSProperties)\n\nexport function styled<T extends keyof HTMLElementTagNameMap>(\n  type: T,\n  newStyles: Styles,\n  queries: Record<string, Styles> = {},\n) {\n  return ({\n    ref,\n    style,\n    ...rest\n  }: StyledComponent<T> & {\n    ref?: HTMLElementTagNameMap[T] | undefined\n  }) => {\n    const theme = useTheme()\n\n    const mediaStyles = Object.entries(queries).reduce(\n      (current, [key, value]) => {\n        // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition\n        return useMediaQuery(key)\n          ? {\n              ...current,\n              ...(typeof value === 'function' ? value(rest, theme) : value),\n            }\n          : current\n      },\n      {},\n    )\n\n    const baseStyles =\n      typeof newStyles === 'function' ? newStyles(rest, theme) : newStyles\n\n    // Handle style being either a string or an object\n    const combinedStyles =\n      typeof style === 'string'\n        ? { ...baseStyles, ...mediaStyles, cssText: style }\n        : { ...baseStyles, ...style, ...mediaStyles }\n\n    return (\n      // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n      // @ts-ignore\n      <Dynamic component={type} {...rest} style={combinedStyles} ref={ref} />\n    )\n  }\n}\n\nexport function useIsMounted() {\n  const [isMounted, setIsMounted] = createSignal(false)\n\n  const effect = isServer ? createEffect : createRenderEffect\n\n  effect(() => {\n    setIsMounted(true)\n  })\n\n  return isMounted\n}\n\n/**\n * Displays a string regardless the type of the data\n * @param {unknown} value Value to be stringified\n */\nexport const displayValue = (value: unknown) => {\n  const name = Object.getOwnPropertyNames(Object(value))\n  const newValue = typeof value === 'bigint' ? `${value.toString()}n` : value\n  try {\n    return JSON.stringify(newValue, name)\n  } catch (e) {\n    return `unable to stringify`\n  }\n}\n\n/**\n * This hook is a safe useState version which schedules state updates in microtasks\n * to prevent updating a component state while React is rendering different components\n * or when the component is not mounted anymore.\n */\nexport function useSafeState<T>(initialState: T): [T, (value: T) => void] {\n  const isMounted = useIsMounted()\n  const [state, setState] = createSignal(initialState)\n\n  const safeSetState = (value: T) => {\n    scheduleMicrotask(() => {\n      if (isMounted()) {\n        // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n        // @ts-ignore\n        setState(value)\n      }\n    })\n  }\n\n  return [state(), safeSetState]\n}\n\n/**\n * Schedules a microtask.\n * This can be useful to schedule state updates after rendering.\n */\nfunction scheduleMicrotask(callback: () => void) {\n  Promise.resolve()\n    .then(callback)\n    .catch((error) =>\n      setTimeout(() => {\n        throw error\n      }),\n    )\n}\n\nexport function multiSortBy<T>(\n  arr: Array<T>,\n  accessors: Array<(item: T) => any> = [(d) => d],\n): Array<T> {\n  return arr\n    .map((d, i) => [d, i] as const)\n    .sort(([a, ai], [b, bi]) => {\n      for (const accessor of accessors) {\n        const ao = accessor(a)\n        const bo = accessor(b)\n\n        if (typeof ao === 'undefined') {\n          if (typeof bo === 'undefined') {\n            continue\n          }\n          return 1\n        }\n\n        if (ao === bo) {\n          continue\n        }\n\n        return ao > bo ? 1 : -1\n      }\n\n      return ai - bi\n    })\n    .map(([d]) => d)\n}\n","export const tokens = {\n  colors: {\n    inherit: 'inherit',\n    current: 'currentColor',\n    transparent: 'transparent',\n    black: '#000000',\n    white: '#ffffff',\n    neutral: {\n      50: '#f9fafb',\n      100: '#f2f4f7',\n      200: '#eaecf0',\n      300: '#d0d5dd',\n      400: '#98a2b3',\n      500: '#667085',\n      600: '#475467',\n      700: '#344054',\n      800: '#1d2939',\n      900: '#101828',\n    },\n    darkGray: {\n      50: '#525c7a',\n      100: '#49536e',\n      200: '#414962',\n      300: '#394056',\n      400: '#313749',\n      500: '#292e3d',\n      600: '#212530',\n      700: '#191c24',\n      800: '#111318',\n      900: '#0b0d10',\n    },\n    gray: {\n      50: '#f9fafb',\n      100: '#f2f4f7',\n      200: '#eaecf0',\n      300: '#d0d5dd',\n      400: '#98a2b3',\n      500: '#667085',\n      600: '#475467',\n      700: '#344054',\n      800: '#1d2939',\n      900: '#101828',\n    },\n    blue: {\n      25: '#F5FAFF',\n      50: '#EFF8FF',\n      100: '#D1E9FF',\n      200: '#B2DDFF',\n      300: '#84CAFF',\n      400: '#53B1FD',\n      500: '#2E90FA',\n      600: '#1570EF',\n      700: '#175CD3',\n      800: '#1849A9',\n      900: '#194185',\n    },\n    green: {\n      25: '#F6FEF9',\n      50: '#ECFDF3',\n      100: '#D1FADF',\n      200: '#A6F4C5',\n      300: '#6CE9A6',\n      400: '#32D583',\n      500: '#12B76A',\n      600: '#039855',\n      700: '#027A48',\n      800: '#05603A',\n      900: '#054F31',\n    },\n    red: {\n      50: '#fef2f2',\n      100: '#fee2e2',\n      200: '#fecaca',\n      300: '#fca5a5',\n      400: '#f87171',\n      500: '#ef4444',\n      600: '#dc2626',\n      700: '#b91c1c',\n      800: '#991b1b',\n      900: '#7f1d1d',\n      950: '#450a0a',\n    },\n    yellow: {\n      25: '#FFFCF5',\n      50: '#FFFAEB',\n      100: '#FEF0C7',\n      200: '#FEDF89',\n      300: '#FEC84B',\n      400: '#FDB022',\n      500: '#F79009',\n      600: '#DC6803',\n      700: '#B54708',\n      800: '#93370D',\n      900: '#7A2E0E',\n    },\n    purple: {\n      25: '#FAFAFF',\n      50: '#F4F3FF',\n      100: '#EBE9FE',\n      200: '#D9D6FE',\n      300: '#BDB4FE',\n      400: '#9B8AFB',\n      500: '#7A5AF8',\n      600: '#6938EF',\n      700: '#5925DC',\n      800: '#4A1FB8',\n      900: '#3E1C96',\n    },\n    teal: {\n      25: '#F6FEFC',\n      50: '#F0FDF9',\n      100: '#CCFBEF',\n      200: '#99F6E0',\n      300: '#5FE9D0',\n      400: '#2ED3B7',\n      500: '#15B79E',\n      600: '#0E9384',\n      700: '#107569',\n      800: '#125D56',\n      900: '#134E48',\n    },\n    pink: {\n      25: '#fdf2f8',\n      50: '#fce7f3',\n      100: '#fbcfe8',\n      200: '#f9a8d4',\n      300: '#f472b6',\n      400: '#ec4899',\n      500: '#db2777',\n      600: '#be185d',\n      700: '#9d174d',\n      800: '#831843',\n      900: '#500724',\n    },\n    cyan: {\n      25: '#ecfeff',\n      50: '#cffafe',\n      100: '#a5f3fc',\n      200: '#67e8f9',\n      300: '#22d3ee',\n      400: '#06b6d4',\n      500: '#0891b2',\n      600: '#0e7490',\n      700: '#155e75',\n      800: '#164e63',\n      900: '#083344',\n    },\n  },\n  alpha: {\n    100: 'ff',\n    90: 'e5',\n    80: 'cc',\n    70: 'b3',\n    60: '99',\n    50: '80',\n    40: '66',\n    30: '4d',\n    20: '33',\n    10: '1a',\n    0: '00',\n  },\n  font: {\n    size: {\n      '2xs': 'calc(var(--tsrd-font-size) * 0.625)',\n      xs: 'calc(var(--tsrd-font-size) * 0.75)',\n      sm: 'calc(var(--tsrd-font-size) * 0.875)',\n      md: 'var(--tsrd-font-size)',\n      lg: 'calc(var(--tsrd-font-size) * 1.125)',\n      xl: 'calc(var(--tsrd-font-size) * 1.25)',\n      '2xl': 'calc(var(--tsrd-font-size) * 1.5)',\n      '3xl': 'calc(var(--tsrd-font-size) * 1.875)',\n      '4xl': 'calc(var(--tsrd-font-size) * 2.25)',\n      '5xl': 'calc(var(--tsrd-font-size) * 3)',\n      '6xl': 'calc(var(--tsrd-font-size) * 3.75)',\n      '7xl': 'calc(var(--tsrd-font-size) * 4.5)',\n      '8xl': 'calc(var(--tsrd-font-size) * 6)',\n      '9xl': 'calc(var(--tsrd-font-size) * 8)',\n    },\n    lineHeight: {\n      '3xs': 'calc(var(--tsrd-font-size) * 0.75)',\n      '2xs': 'calc(var(--tsrd-font-size) * 0.875)',\n      xs: 'calc(var(--tsrd-font-size) * 1)',\n      sm: 'calc(var(--tsrd-font-size) * 1.25)',\n      md: 'calc(var(--tsrd-font-size) * 1.5)',\n      lg: 'calc(var(--tsrd-font-size) * 1.75)',\n      xl: 'calc(var(--tsrd-font-size) * 2)',\n      '2xl': 'calc(var(--tsrd-font-size) * 2.25)',\n      '3xl': 'calc(var(--tsrd-font-size) * 2.5)',\n      '4xl': 'calc(var(--tsrd-font-size) * 2.75)',\n      '5xl': 'calc(var(--tsrd-font-size) * 3)',\n      '6xl': 'calc(var(--tsrd-font-size) * 3.25)',\n      '7xl': 'calc(var(--tsrd-font-size) * 3.5)',\n      '8xl': 'calc(var(--tsrd-font-size) * 3.75)',\n      '9xl': 'calc(var(--tsrd-font-size) * 4)',\n    },\n    weight: {\n      thin: '100',\n      extralight: '200',\n      light: '300',\n      normal: '400',\n      medium: '500',\n      semibold: '600',\n      bold: '700',\n      extrabold: '800',\n      black: '900',\n    },\n    fontFamily: {\n      sans: 'ui-sans-serif, Inter, system-ui, sans-serif, sans-serif',\n      mono: `ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, 'Liberation Mono', 'Courier New', monospace`,\n    },\n  },\n  breakpoints: {\n    xs: '320px',\n    sm: '640px',\n    md: '768px',\n    lg: '1024px',\n    xl: '1280px',\n    '2xl': '1536px',\n  },\n  border: {\n    radius: {\n      none: '0px',\n      xs: 'calc(var(--tsrd-font-size) * 0.125)',\n      sm: 'calc(var(--tsrd-font-size) * 0.25)',\n      md: 'calc(var(--tsrd-font-size) * 0.375)',\n      lg: 'calc(var(--tsrd-font-size) * 0.5)',\n      xl: 'calc(var(--tsrd-font-size) * 0.75)',\n      '2xl': 'calc(var(--tsrd-font-size) * 1)',\n      '3xl': 'calc(var(--tsrd-font-size) * 1.5)',\n      full: '9999px',\n    },\n  },\n  size: {\n    0: '0px',\n    0.25: 'calc(var(--tsrd-font-size) * 0.0625)',\n    0.5: 'calc(var(--tsrd-font-size) * 0.125)',\n    1: 'calc(var(--tsrd-font-size) * 0.25)',\n    1.5: 'calc(var(--tsrd-font-size) * 0.375)',\n    2: 'calc(var(--tsrd-font-size) * 0.5)',\n    2.5: 'calc(var(--tsrd-font-size) * 0.625)',\n    3: 'calc(var(--tsrd-font-size) * 0.75)',\n    3.5: 'calc(var(--tsrd-font-size) * 0.875)',\n    4: 'calc(var(--tsrd-font-size) * 1)',\n    4.5: 'calc(var(--tsrd-font-size) * 1.125)',\n    5: 'calc(var(--tsrd-font-size) * 1.25)',\n    5.5: 'calc(var(--tsrd-font-size) * 1.375)',\n    6: 'calc(var(--tsrd-font-size) * 1.5)',\n    6.5: 'calc(var(--tsrd-font-size) * 1.625)',\n    7: 'calc(var(--tsrd-font-size) * 1.75)',\n    8: 'calc(var(--tsrd-font-size) * 2)',\n    9: 'calc(var(--tsrd-font-size) * 2.25)',\n    10: 'calc(var(--tsrd-font-size) * 2.5)',\n    11: 'calc(var(--tsrd-font-size) * 2.75)',\n    12: 'calc(var(--tsrd-font-size) * 3)',\n    14: 'calc(var(--tsrd-font-size) * 3.5)',\n    16: 'calc(var(--tsrd-font-size) * 4)',\n    20: 'calc(var(--tsrd-font-size) * 5)',\n    24: 'calc(var(--tsrd-font-size) * 6)',\n    28: 'calc(var(--tsrd-font-size) * 7)',\n    32: 'calc(var(--tsrd-font-size) * 8)',\n    36: 'calc(var(--tsrd-font-size) * 9)',\n    40: 'calc(var(--tsrd-font-size) * 10)',\n    44: 'calc(var(--tsrd-font-size) * 11)',\n    48: 'calc(var(--tsrd-font-size) * 12)',\n    52: 'calc(var(--tsrd-font-size) * 13)',\n    56: 'calc(var(--tsrd-font-size) * 14)',\n    60: 'calc(var(--tsrd-font-size) * 15)',\n    64: 'calc(var(--tsrd-font-size) * 16)',\n    72: 'calc(var(--tsrd-font-size) * 18)',\n    80: 'calc(var(--tsrd-font-size) * 20)',\n    96: 'calc(var(--tsrd-font-size) * 24)',\n  },\n  shadow: {\n    xs: (_: string = 'rgb(0 0 0 / 0.1)') =>\n      `0 1px 2px 0 rgb(0 0 0 / 0.05)` as const,\n    sm: (color: string = 'rgb(0 0 0 / 0.1)') =>\n      `0 1px 3px 0 ${color}, 0 1px 2px -1px ${color}` as const,\n    md: (color: string = 'rgb(0 0 0 / 0.1)') =>\n      `0 4px 6px -1px ${color}, 0 2px 4px -2px ${color}` as const,\n    lg: (color: string = 'rgb(0 0 0 / 0.1)') =>\n      `0 10px 15px -3px ${color}, 0 4px 6px -4px ${color}` as const,\n    xl: (color: string = 'rgb(0 0 0 / 0.1)') =>\n      `0 20px 25px -5px ${color}, 0 8px 10px -6px ${color}` as const,\n    '2xl': (color: string = 'rgb(0 0 0 / 0.25)') =>\n      `0 25px 50px -12px ${color}` as const,\n    inner: (color: string = 'rgb(0 0 0 / 0.05)') =>\n      `inset 0 2px 4px 0 ${color}` as const,\n    none: () => `none` as const,\n  },\n  zIndices: {\n    hide: -1,\n    auto: 'auto',\n    base: 0,\n    docked: 10,\n    dropdown: 1000,\n    sticky: 1100,\n    banner: 1200,\n    overlay: 1300,\n    modal: 1400,\n    popover: 1500,\n    skipLink: 1600,\n    toast: 1700,\n    tooltip: 1800,\n  },\n} as const\n","import * as goober from 'goober'\nimport { createSignal, useContext } from 'solid-js'\nimport { tokens } from './tokens'\nimport { ShadowDomTargetContext } from './context'\nimport type { Accessor } from 'solid-js'\n\nconst stylesFactory = (shadowDOMTarget?: ShadowRoot) => {\n  const { colors, font, size, alpha, shadow, border } = tokens\n  const { fontFamily, lineHeight, size: fontSize } = font\n  const css = shadowDOMTarget\n    ? goober.css.bind({ target: shadowDOMTarget })\n    : goober.css\n\n  return {\n    devtoolsPanelContainer: css`\n      direction: ltr;\n      position: fixed;\n      bottom: 0;\n      right: 0;\n      z-index: 99999;\n      width: 100%;\n      max-height: 90%;\n      border-top: 1px solid ${colors.gray[700]};\n      transform-origin: top;\n    `,\n    devtoolsPanelContainerVisibility: (isOpen: boolean) => {\n      return css`\n        visibility: ${isOpen ? 'visible' : 'hidden'};\n      `\n    },\n    devtoolsPanelContainerResizing: (isResizing: Accessor<boolean>) => {\n      if (isResizing()) {\n        return css`\n          transition: none;\n        `\n      }\n\n      return css`\n        transition: all 0.4s ease;\n      `\n    },\n    devtoolsPanelContainerAnimation: (isOpen: boolean, height: number) => {\n      if (isOpen) {\n        return css`\n          pointer-events: auto;\n          transform: translateY(0);\n        `\n      }\n      return css`\n        pointer-events: none;\n        transform: translateY(${height}px);\n      `\n    },\n    logo: css`\n      cursor: pointer;\n      display: flex;\n      flex-direction: column;\n      background-color: transparent;\n      border: none;\n      font-family: ${fontFamily.sans};\n      gap: ${tokens.size[0.5]};\n      padding: 0px;\n      &:hover {\n        opacity: 0.7;\n      }\n      &:focus-visible {\n        outline-offset: 4px;\n        border-radius: ${border.radius.xs};\n        outline: 2px solid ${colors.blue[800]};\n      }\n    `,\n    tanstackLogo: css`\n      font-size: ${font.size.md};\n      font-weight: ${font.weight.bold};\n      line-height: ${font.lineHeight.xs};\n      white-space: nowrap;\n      color: ${colors.gray[300]};\n    `,\n    routerLogo: css`\n      font-weight: ${font.weight.semibold};\n      font-size: ${font.size.xs};\n      background: linear-gradient(to right, #84cc16, #10b981);\n      background-clip: text;\n      -webkit-background-clip: text;\n      line-height: 1;\n      -webkit-text-fill-color: transparent;\n      white-space: nowrap;\n    `,\n    devtoolsPanel: css`\n      display: flex;\n      font-size: ${fontSize.sm};\n      font-family: ${fontFamily.sans};\n      background-color: ${colors.darkGray[700]};\n      color: ${colors.gray[300]};\n\n      @media (max-width: 700px) {\n        flex-direction: column;\n      }\n      @media (max-width: 600px) {\n        font-size: ${fontSize.xs};\n      }\n    `,\n    dragHandle: css`\n      position: absolute;\n      left: 0;\n      top: 0;\n      width: 100%;\n      height: 4px;\n      cursor: row-resize;\n      z-index: 100000;\n      &:hover {\n        background-color: ${colors.purple[400]}${alpha[90]};\n      }\n    `,\n    firstContainer: css`\n      flex: 1 1 500px;\n      min-height: 40%;\n      max-height: 100%;\n      overflow: auto;\n      border-right: 1px solid ${colors.gray[700]};\n      display: flex;\n      flex-direction: column;\n    `,\n    routerExplorerContainer: css`\n      overflow-y: auto;\n      flex: 1;\n    `,\n    routerExplorer: css`\n      padding: ${tokens.size[2]};\n    `,\n    row: css`\n      display: flex;\n      align-items: center;\n      padding: ${tokens.size[2]} ${tokens.size[2.5]};\n      gap: ${tokens.size[2.5]};\n      border-bottom: ${colors.darkGray[500]} 1px solid;\n      align-items: center;\n    `,\n    detailsHeader: css`\n      font-family: ui-sans-serif, Inter, system-ui, sans-serif, sans-serif;\n      position: sticky;\n      top: 0;\n      z-index: 2;\n      background-color: ${colors.darkGray[600]};\n      padding: 0px ${tokens.size[2]};\n      font-weight: ${font.weight.medium};\n      font-size: ${font.size.xs};\n      min-height: ${tokens.size[8]};\n      line-height: ${font.lineHeight.xs};\n      text-align: left;\n      display: flex;\n      align-items: center;\n    `,\n    maskedBadge: css`\n      background: ${colors.yellow[900]}${alpha[70]};\n      color: ${colors.yellow[300]};\n      display: inline-block;\n      padding: ${tokens.size[0]} ${tokens.size[2.5]};\n      border-radius: ${border.radius.full};\n      font-size: ${font.size.xs};\n      font-weight: ${font.weight.normal};\n      border: 1px solid ${colors.yellow[300]};\n    `,\n    maskedLocation: css`\n      color: ${colors.yellow[300]};\n    `,\n    detailsContent: css`\n      padding: ${tokens.size[1.5]} ${tokens.size[2]};\n      display: flex;\n      align-items: center;\n      justify-content: space-between;\n      font-size: ${font.size.xs};\n    `,\n    routeMatchesToggle: css`\n      display: flex;\n      align-items: center;\n      border: 1px solid ${colors.gray[500]};\n      border-radius: ${border.radius.sm};\n      overflow: hidden;\n    `,\n    routeMatchesToggleBtn: (active: boolean, showBorder: boolean) => {\n      const base = css`\n        appearance: none;\n        border: none;\n        font-size: 12px;\n        padding: 4px 8px;\n        background: transparent;\n        cursor: pointer;\n        font-family: ${fontFamily.sans};\n        font-weight: ${font.weight.medium};\n      `\n      const classes = [base]\n\n      if (active) {\n        const activeStyles = css`\n          background: ${colors.darkGray[400]};\n          color: ${colors.gray[300]};\n        `\n        classes.push(activeStyles)\n      } else {\n        const inactiveStyles = css`\n          color: ${colors.gray[500]};\n          background: ${colors.darkGray[800]}${alpha[20]};\n        `\n        classes.push(inactiveStyles)\n      }\n\n      if (showBorder) {\n        classes.push(css`\n          border-right: 1px solid ${tokens.colors.gray[500]};\n        `)\n      }\n\n      return classes\n    },\n    detailsHeaderInfo: css`\n      flex: 1;\n      justify-content: flex-end;\n      display: flex;\n      align-items: center;\n      font-weight: ${font.weight.normal};\n      color: ${colors.gray[400]};\n    `,\n    matchRow: (active: boolean) => {\n      const base = css`\n        display: flex;\n        border-bottom: 1px solid ${colors.darkGray[400]};\n        cursor: pointer;\n        align-items: center;\n        padding: ${size[1]} ${size[2]};\n        gap: ${size[2]};\n        font-size: ${fontSize.xs};\n        color: ${colors.gray[300]};\n      `\n      const classes = [base]\n\n      if (active) {\n        const activeStyles = css`\n          background: ${colors.darkGray[500]};\n        `\n        classes.push(activeStyles)\n      }\n\n      return classes\n    },\n    matchIndicator: (\n      color: 'green' | 'red' | 'yellow' | 'gray' | 'blue' | 'purple',\n    ) => {\n      const base = css`\n        flex: 0 0 auto;\n        width: ${size[3]};\n        height: ${size[3]};\n        background: ${colors[color][900]};\n        border: 1px solid ${colors[color][500]};\n        border-radius: ${border.radius.full};\n        transition: all 0.25s ease-out;\n        box-sizing: border-box;\n      `\n      const classes = [base]\n\n      if (color === 'gray') {\n        const grayStyles = css`\n          background: ${colors.gray[700]};\n          border-color: ${colors.gray[400]};\n        `\n        classes.push(grayStyles)\n      }\n\n      return classes\n    },\n    matchID: css`\n      flex: 1;\n      line-height: ${lineHeight['xs']};\n    `,\n    ageTicker: (showWarning: boolean) => {\n      const base = css`\n        display: flex;\n        gap: ${size[1]};\n        font-size: ${fontSize.xs};\n        color: ${colors.gray[400]};\n        font-variant-numeric: tabular-nums;\n        line-height: ${lineHeight['xs']};\n      `\n\n      const classes = [base]\n\n      if (showWarning) {\n        const warningStyles = css`\n          color: ${colors.yellow[400]};\n        `\n        classes.push(warningStyles)\n      }\n\n      return classes\n    },\n    secondContainer: css`\n      flex: 1 1 500px;\n      min-height: 40%;\n      max-height: 100%;\n      overflow: auto;\n      border-right: 1px solid ${colors.gray[700]};\n      display: flex;\n      flex-direction: column;\n    `,\n    thirdContainer: css`\n      flex: 1 1 500px;\n      overflow: auto;\n      display: flex;\n      flex-direction: column;\n      height: 100%;\n      border-right: 1px solid ${colors.gray[700]};\n\n      @media (max-width: 700px) {\n        border-top: 2px solid ${colors.gray[700]};\n      }\n    `,\n    fourthContainer: css`\n      flex: 1 1 500px;\n      min-height: 40%;\n      max-height: 100%;\n      overflow: auto;\n      display: flex;\n      flex-direction: column;\n    `,\n    routesContainer: css`\n      overflow-x: auto;\n      overflow-y: visible;\n    `,\n    routesRowContainer: (active: boolean, isMatch: boolean) => {\n      const base = css`\n        display: flex;\n        border-bottom: 1px solid ${colors.darkGray[400]};\n        align-items: center;\n        padding: ${size[1]} ${size[2]};\n        gap: ${size[2]};\n        font-size: ${fontSize.xs};\n        color: ${colors.gray[300]};\n        cursor: ${isMatch ? 'pointer' : 'default'};\n        line-height: ${lineHeight['xs']};\n      `\n      const classes = [base]\n\n      if (active) {\n        const activeStyles = css`\n          background: ${colors.darkGray[500]};\n        `\n        classes.push(activeStyles)\n      }\n\n      return classes\n    },\n    routesRow: (isMatch: boolean) => {\n      const base = css`\n        flex: 1 0 auto;\n        display: flex;\n        justify-content: space-between;\n        align-items: center;\n        font-size: ${fontSize.xs};\n        line-height: ${lineHeight['xs']};\n      `\n\n      const classes = [base]\n\n      if (!isMatch) {\n        const matchStyles = css`\n          color: ${colors.gray[400]};\n        `\n        classes.push(matchStyles)\n      }\n\n      return classes\n    },\n    routesRowInner: css`\n      display: 'flex';\n      align-items: 'center';\n      flex-grow: 1;\n      min-width: 0;\n    `,\n    routeParamInfo: css`\n      color: ${colors.gray[400]};\n      font-size: ${fontSize.xs};\n      line-height: ${lineHeight['xs']};\n    `,\n    nestedRouteRow: (isRoot: boolean) => {\n      const base = css`\n        margin-left: ${isRoot ? 0 : size[3.5]};\n        border-left: ${isRoot ? '' : `solid 1px ${colors.gray[700]}`};\n      `\n      return base\n    },\n    code: css`\n      font-size: ${fontSize.xs};\n      line-height: ${lineHeight['xs']};\n      white-space: nowrap;\n      overflow: hidden;\n      text-overflow: ellipsis;\n    `,\n    matchesContainer: css`\n      flex: 1 1 auto;\n      overflow-y: auto;\n    `,\n    cachedMatchesContainer: css`\n      flex: 1 1 auto;\n      overflow-y: auto;\n      max-height: 50%;\n    `,\n    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","/* eslint-disable @typescript-eslint/no-unnecessary-condition */\nimport { clsx as cx } from 'clsx'\nimport * as goober from 'goober'\nimport { createMemo, createSignal, useContext } from 'solid-js'\nimport { tokens } from './tokens'\nimport { displayValue } from './utils'\nimport { ShadowDomTargetContext } from './context'\nimport type { Accessor, JSX } from 'solid-js'\n\ntype ExpanderProps = {\n  expanded: boolean\n  style?: JSX.CSSProperties\n}\n\nexport const Expander = ({ expanded, style = {} }: ExpanderProps) => {\n  const styles = useStyles()\n  return (\n    <span class={styles().expander}>\n      <svg\n        xmlns=\"http://www.w3.org/2000/svg\"\n        width=\"12\"\n        height=\"12\"\n        fill=\"none\"\n        viewBox=\"0 0 24 24\"\n        class={cx(styles().expanderIcon(expanded))}\n      >\n        <path\n          stroke=\"currentColor\"\n          stroke-linecap=\"round\"\n          stroke-linejoin=\"round\"\n          stroke-width=\"2\"\n          d=\"M9 18l6-6-6-6\"\n        ></path>\n      </svg>\n    </span>\n  )\n}\n\ntype Entry = {\n  label: string\n}\n\ntype RendererProps = {\n  handleEntry: HandleEntryFn\n  label?: JSX.Element\n  value: Accessor<unknown>\n  subEntries: Array<Entry>\n  subEntryPages: Array<Array<Entry>>\n  type: string\n  expanded: Accessor<boolean>\n  toggleExpanded: () => void\n  pageSize: number\n  filterSubEntries?: (subEntries: Array<Property>) => Array<Property>\n}\n\n/**\n * Chunk elements in the array by size\n *\n * when the array cannot be chunked evenly by size, the last chunk will be\n * filled with the remaining elements\n *\n * @example\n * chunkArray(['a','b', 'c', 'd', 'e'], 2) // returns [['a','b'], ['c', 'd'], ['e']]\n */\nexport function chunkArray<T>(array: Array<T>, size: number): Array<Array<T>> {\n  if (size < 1) return []\n  let i = 0\n  const result: Array<Array<T>> = []\n  while (i < array.length) {\n    result.push(array.slice(i, i + size))\n    i = i + size\n  }\n  return result\n}\n\ntype HandleEntryFn = (entry: Entry) => JSX.Element\n\ntype ExplorerProps = Partial<RendererProps> & {\n  defaultExpanded?: true | Record<string, boolean>\n  value: Accessor<unknown>\n}\n\ntype Property = {\n  defaultExpanded?: boolean | Record<string, boolean>\n  label: string\n  value: unknown\n}\n\nfunction isIterable(x: any): x is Iterable<unknown> {\n  return Symbol.iterator in x\n}\n\nexport function Explorer({\n  value,\n  defaultExpanded,\n  pageSize = 100,\n  filterSubEntries,\n  ...rest\n}: ExplorerProps) {\n  const [expanded, setExpanded] = createSignal(Boolean(defaultExpanded))\n  const toggleExpanded = () => setExpanded((old) => !old)\n\n  const type = createMemo(() => typeof value())\n  const subEntries = createMemo(() => {\n    let entries: Array<Property> = []\n\n    const makeProperty = (sub: { label: string; value: unknown }): Property => {\n      const subDefaultExpanded =\n        defaultExpanded === true\n          ? { [sub.label]: true }\n          : defaultExpanded?.[sub.label]\n      return {\n        ...sub,\n        value: () => sub.value,\n        defaultExpanded: subDefaultExpanded,\n      }\n    }\n\n    if (Array.isArray(value())) {\n      // any[]\n      entries = (value() as Array<any>).map((d, i) =>\n        makeProperty({\n          label: i.toString(),\n          value: d,\n        }),\n      )\n    } else if (\n      value() !== null &&\n      typeof value() === 'object' &&\n      isIterable(value()) &&\n      typeof (value() as Iterable<unknown>)[Symbol.iterator] === 'function'\n    ) {\n      // Iterable<unknown>\n      entries = Array.from(value() as Iterable<unknown>, (val, i) =>\n        makeProperty({\n          label: i.toString(),\n          value: val,\n        }),\n      )\n    } else if (typeof value() === 'object' && value() !== null) {\n      // object\n      entries = Object.entries(value() as object).map(([key, val]) =>\n        makeProperty({\n          label: key,\n          value: val,\n        }),\n      )\n    }\n\n    return filterSubEntries ? filterSubEntries(entries) : entries\n  })\n\n  const subEntryPages = createMemo(() => chunkArray(subEntries(), pageSize))\n\n  const [expandedPages, setExpandedPages] = createSignal<Array<number>>([])\n  const [valueSnapshot, setValueSnapshot] = createSignal(undefined)\n  const styles = useStyles()\n\n  const refreshValueSnapshot = () => {\n    setValueSnapshot((value() as () => any)())\n  }\n\n  const handleEntry = (entry: Entry) => (\n    <Explorer\n      value={value}\n      filterSubEntries={filterSubEntries}\n      {...rest}\n      {...entry}\n    />\n  )\n\n  return (\n    <div class={styles().entry}>\n      {subEntryPages().length ? (\n        <>\n          <button\n            class={styles().expandButton}\n            onClick={() => toggleExpanded()}\n          >\n            <Expander expanded={expanded() ?? false} />\n            {rest.label}\n            <span class={styles().info}>\n              {String(type).toLowerCase() === 'iterable' ? '(Iterable) ' : ''}\n              {subEntries().length} {subEntries().length > 1 ? `items` : `item`}\n            </span>\n          </button>\n          {(expanded() ?? false) ? (\n            subEntryPages().length === 1 ? (\n              <div class={styles().subEntries}>\n                {subEntries().map((entry, index) => handleEntry(entry))}\n              </div>\n            ) : (\n              <div class={styles().subEntries}>\n                {subEntryPages().map((entries, index) => {\n                  return (\n                    <div>\n                      <div class={styles().entry}>\n                        <button\n                          class={cx(styles().labelButton, 'labelButton')}\n                          onClick={() =>\n                            setExpandedPages((old) =>\n                              old.includes(index)\n                                ? old.filter((d) => d !== index)\n                                : [...old, index],\n                            )\n                          }\n                        >\n                          <Expander\n                            expanded={expandedPages().includes(index)}\n                          />{' '}\n                          [{index * pageSize} ...{' '}\n                          {index * pageSize + pageSize - 1}]\n                        </button>\n                        {expandedPages().includes(index) ? (\n                          <div class={styles().subEntries}>\n                            {entries.map((entry) => handleEntry(entry))}\n                          </div>\n                        ) : null}\n                      </div>\n                    </div>\n                  )\n                })}\n              </div>\n            )\n          ) : null}\n        </>\n      ) : type() === 'function' ? (\n        <>\n          <Explorer\n            label={\n              <button\n                onClick={refreshValueSnapshot}\n                class={styles().refreshValueBtn}\n              >\n                <span>{rest.label}</span> 🔄{' '}\n              </button>\n            }\n            value={valueSnapshot}\n            defaultExpanded={{}}\n          />\n        </>\n      ) : (\n        <>\n          <span>{rest.label}:</span>{' '}\n          <span class={styles().value}>{displayValue(value())}</span>\n        </>\n      )}\n    </div>\n  )\n}\n\nconst stylesFactory = (shadowDOMTarget?: ShadowRoot) => {\n  const { colors, font, size, alpha, shadow, border } = tokens\n  const { fontFamily, lineHeight, size: fontSize } = font\n  const css = shadowDOMTarget\n    ? goober.css.bind({ target: shadowDOMTarget })\n    : goober.css\n\n  return {\n    entry: css`\n      font-family: ${fontFamily.mono};\n      font-size: ${fontSize.xs};\n      line-height: ${lineHeight.sm};\n      outline: none;\n      word-break: break-word;\n    `,\n    labelButton: css`\n      cursor: pointer;\n      color: inherit;\n      font: inherit;\n      outline: inherit;\n      background: transparent;\n      border: none;\n      padding: 0;\n    `,\n    expander: css`\n      display: inline-flex;\n      align-items: center;\n      justify-content: center;\n      width: ${size[3]};\n      height: ${size[3]};\n      padding-left: 3px;\n      box-sizing: content-box;\n    `,\n    expanderIcon: (expanded: boolean) => {\n      if (expanded) {\n        return css`\n          transform: rotate(90deg);\n          transition: transform 0.1s ease;\n        `\n      }\n      return css`\n        transform: rotate(0deg);\n        transition: transform 0.1s ease;\n      `\n    },\n    expandButton: css`\n      display: flex;\n      gap: ${size[1]};\n      align-items: center;\n      cursor: pointer;\n      color: inherit;\n      font: inherit;\n      outline: inherit;\n      background: transparent;\n      border: none;\n      padding: 0;\n    `,\n    value: css`\n      color: ${colors.purple[400]};\n    `,\n    subEntries: css`\n      margin-left: ${size[2]};\n      padding-left: ${size[2]};\n      border-left: 2px solid ${colors.darkGray[400]};\n    `,\n    info: css`\n      color: ${colors.gray[500]};\n      font-size: ${fontSize['2xs']};\n      padding-left: ${size[1]};\n    `,\n    refreshValueBtn: css`\n      appearance: none;\n      border: 0;\n      cursor: pointer;\n      background: transparent;\n      color: inherit;\n      padding: 0;\n      font-family: ${fontFamily.mono};\n      font-size: ${fontSize.xs};\n    `,\n  }\n}\n\nfunction useStyles() {\n  const shadowDomTarget = useContext(ShadowDomTargetContext)\n  const [_styles] = createSignal(stylesFactory(shadowDomTarget))\n  return _styles\n}\n","import { clsx as cx } from 'clsx'\nimport { useStyles } from './useStyles'\nimport type { AnyRouteMatch, AnyRouter } from '@tanstack/router-core'\nimport type { Accessor } from 'solid-js'\n\nfunction formatTime(ms: number) {\n  const units = ['s', 'min', 'h', 'd']\n  const values = [ms / 1000, ms / 60000, ms / 3600000, ms / 86400000]\n\n  let chosenUnitIndex = 0\n  for (let i = 1; i < values.length; i++) {\n    if (values[i]! < 1) break\n    chosenUnitIndex = i\n  }\n\n  const formatter = new Intl.NumberFormat(navigator.language, {\n    compactDisplay: 'short',\n    notation: 'compact',\n    maximumFractionDigits: 0,\n  })\n\n  return formatter.format(values[chosenUnitIndex]!) + units[chosenUnitIndex]\n}\n\nexport function AgeTicker({\n  match,\n  router,\n}: {\n  match?: AnyRouteMatch\n  router: Accessor<AnyRouter>\n}) {\n  const styles = useStyles()\n\n  if (!match) {\n    return null\n  }\n\n  const route = router().looseRoutesById[match.routeId]!\n\n  if (!route.options.loader) {\n    return null\n  }\n\n  const age = Date.now() - match.updatedAt\n  const staleTime =\n    route.options.staleTime ?? router().options.defaultStaleTime ?? 0\n  const gcTime =\n    route.options.gcTime ?? router().options.defaultGcTime ?? 30 * 60 * 1000\n\n  return (\n    <div class={cx(styles().ageTicker(age > staleTime))}>\n      <div>{formatTime(age)}</div>\n      <div>/</div>\n      <div>{formatTime(staleTime)}</div>\n      <div>/</div>\n      <div>{formatTime(gcTime)}</div>\n    </div>\n  )\n}\n","import { useStyles } from './useStyles'\nimport type { AnyRouter, NavigateOptions } from '@tanstack/router-core'\nimport type { Accessor } from 'solid-js'\n\ninterface Props extends NavigateOptions {\n  router: Accessor<AnyRouter>\n}\n\nexport function NavigateButton({ to, params, search, router }: Props) {\n  const styles = useStyles()\n\n  return (\n    <button\n      type=\"button\"\n      title={`Navigate to ${to}`}\n      class={styles().navigateButton}\n      onClick={(e) => {\n        e.stopPropagation()\n        router().navigate({ to, params, search })\n      }}\n    >\n      ➔\n    </button>\n  )\n}\n","import { clsx as cx } from 'clsx'\nimport { default as invariant } from 'tiny-invariant'\nimport { interpolatePath, rootRouteId, trimPath } from '@tanstack/router-core'\nimport {\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  router,\n  route,\n  isRoot,\n  activeId,\n  setActiveId,\n}: {\n  routerState: Accessor<\n    RouterState<\n      Route<\n        any,\n        any,\n        any,\n        '/',\n        '/',\n        string,\n        '__root__',\n        undefined,\n        {},\n        {},\n        AnyContext,\n        AnyContext,\n        {},\n        undefined,\n        any,\n        FileRouteTypes,\n        unknown,\n        undefined\n      >,\n      MakeRouteMatchUnion\n    >\n  >\n  router: Accessor<AnyRouter>\n  route: AnyRoute\n  isRoot?: boolean\n  activeId: Accessor<string | undefined>\n  setActiveId: (id: string) => void\n}) {\n  const styles = useStyles()\n  const matches = createMemo(\n    () => routerState().pendingMatches || routerState().matches,\n  )\n  const match = createMemo(() =>\n    routerState().matches.find((d) => d.routeId === route.id),\n  )\n\n  const param = createMemo(() => {\n    try {\n      if (match()?.params) {\n        const p = match()?.params\n        const r: string = route.path || trimPath(route.id)\n        if (r.startsWith('$')) {\n          const trimmed = r.slice(1)\n\n          if (p[trimmed]) {\n            return `(${p[trimmed]})`\n          }\n        }\n      }\n      return ''\n    } catch (error) {\n      return ''\n    }\n  })\n\n  const navigationTarget = createMemo<string | undefined>(() => {\n    if (isRoot) return undefined // rootRouteId has no path\n    if (!route.path) return undefined // no path to navigate to\n\n    // flatten all params in the router state, into a single object\n    const allParams = Object.assign({}, ...matches().map((m) => m.params))\n\n    // interpolatePath is used by router-core to generate the `to`\n    // path for the navigate function in the router\n    const interpolated = interpolatePath({\n      path: route.fullPath,\n      params: allParams,\n      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                router={router}\n                route={r}\n                activeId={activeId}\n                setActiveId={setActiveId}\n              />\n            ))}\n        </div>\n      ) : null}\n    </div>\n  )\n}\n\nexport const BaseTanStackRouterDevtoolsPanel =\n  function BaseTanStackRouterDevtoolsPanel({\n    ...props\n  }: BaseDevtoolsPanelOptions): JSX.Element {\n    const {\n      isOpen = true,\n      setIsOpen,\n      handleDragStart,\n      router,\n      routerState,\n      shadowDOMTarget,\n      ...panelProps\n    } = props\n\n    const { onCloseClick } = useDevtoolsOnClose()\n    const styles = useStyles()\n    const { className, style, ...otherPanelProps } = panelProps\n\n    invariant(\n      router,\n      'No router was found for the TanStack Router Devtools. Please place the devtools in the <RouterProvider> component tree or pass the router instance to the devtools manually.',\n    )\n\n    // useStore(router.__store)\n\n    const [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    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        ...(routerState().pendingMatches ?? []),\n        ...routerState().matches,\n        ...routerState().cachedMatches,\n      ]\n      return matches.find(\n        (d) => d.routeId === activeId() || d.id === activeId(),\n      )\n    })\n\n    const hasSearch = createMemo(\n      () => Object.keys(routerState().location.search).length,\n    )\n\n    const explorerState = createMemo(() => {\n      return {\n        ...router(),\n        state: routerState(),\n      }\n    })\n\n    const routerExplorerValue = createMemo(() =>\n      Object.fromEntries(\n        multiSortBy(\n          Object.keys(explorerState()),\n          (\n            [\n              'state',\n              'routesById',\n              'routesByPath',\n              'options',\n              'manifest',\n            ] as const\n          ).map((d) => (dd) => dd !== d),\n        )\n          .map((key) => [key, (explorerState() as any)[key]])\n          .filter(\n            (d) =>\n              typeof d[1] !== 'function' &&\n              ![\n                '__store',\n                'basepath',\n                'injectedHtml',\n                'subscribers',\n                'latestLoadPromise',\n                'navigateTimeout',\n                'resetNextScroll',\n                'tempLocationKey',\n                'latestLocation',\n                'routeTree',\n                'history',\n              ].includes(d[0]),\n          ),\n      ),\n    )\n    const activeMatchLoaderData = createMemo(() => activeMatch()?.loaderData)\n    const activeMatchValue = createMemo(() => activeMatch())\n    const locationSearchValue = createMemo(() => routerState().location.search)\n\n    return (\n      <div\n        class={cx(\n          styles().devtoolsPanel,\n          'TanStackRouterDevtoolsPanel',\n          className ? className() : '',\n        )}\n        style={style ? style() : ''}\n        {...otherPanelProps}\n      >\n        {handleDragStart ? (\n          <div class={styles().dragHandle} onMouseDown={handleDragStart}></div>\n        ) : null}\n        <button\n          class={styles().panelCloseBtn}\n          onClick={(e: any) => {\n            if (setIsOpen) {\n              setIsOpen(false)\n            }\n            onCloseClick(e)\n          }}\n        >\n          <svg\n            xmlns=\"http://www.w3.org/2000/svg\"\n            width=\"10\"\n            height=\"6\"\n            fill=\"none\"\n            viewBox=\"0 0 10 6\"\n            class={styles().panelCloseBtnIcon}\n          >\n            <path\n              stroke=\"currentColor\"\n              stroke-linecap=\"round\"\n              stroke-linejoin=\"round\"\n              stroke-width=\"1.667\"\n              d=\"M1 1l4 4 4-4\"\n            ></path>\n          </svg>\n        </button>\n        <div class={styles().firstContainer}>\n          <div class={styles().row}>\n            <Logo\n              aria-hidden\n              onClick={(e: any) => {\n                if (setIsOpen) {\n                  setIsOpen(false)\n                }\n                onCloseClick(e)\n              }}\n            />\n          </div>\n          <div class={styles().routerExplorerContainer}>\n            <div class={styles().routerExplorer}>\n              <Explorer\n                label=\"Router\"\n                value={routerExplorerValue}\n                defaultExpanded={{\n                  state: {} as any,\n                  context: {} as any,\n                  options: {} as any,\n                }}\n                filterSubEntries={(subEntries) => {\n                  return subEntries.filter(\n                    (d: any) => typeof d.value() !== 'function',\n                  )\n                }}\n              />\n            </div>\n          </div>\n        </div>\n        <div class={styles().secondContainer}>\n          <div class={styles().matchesContainer}>\n            <div class={styles().detailsHeader}>\n              <span>Pathname</span>\n              {routerState().location.maskedLocation ? (\n                <div class={styles().maskedBadgeContainer}>\n                  <span class={styles().maskedBadge}>masked</span>\n                </div>\n              ) : null}\n            </div>\n            <div class={styles().detailsContent}>\n              <code>{routerState().location.pathname}</code>\n              {routerState().location.maskedLocation ? (\n                <code class={styles().maskedLocation}>\n                  {routerState().location.maskedLocation?.pathname}\n                </code>\n              ) : null}\n            </div>\n            <div class={styles().detailsHeader}>\n              <div class={styles().routeMatchesToggle}>\n                <button\n                  type=\"button\"\n                  onClick={() => {\n                    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                    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                    {(routerState().pendingMatches?.length\n                      ? routerState().pendingMatches\n                      : routerState().matches\n                    )?.map((match: any, _i: any) => {\n                      return (\n                        <div\n                          role=\"button\"\n                          aria-label={`Open match details for ${match.id}`}\n                          onClick={() =>\n                            setActiveId(activeId() === match.id ? '' : match.id)\n                          }\n                          class={cx(styles().matchRow(match === activeMatch()))}\n                        >\n                          <div\n                            class={cx(\n                              styles().matchIndicator(getStatusColor(match)),\n                            )}\n                          />\n                          <NavigateLink\n                            left={\n                              <NavigateButton\n                                to={match.pathname}\n                                params={match.params}\n                                search={match.search}\n                                router={router}\n                              />\n                            }\n                            right={<AgeTicker match={match} router={router} />}\n                          >\n                            <code class={styles().matchID}>\n                              {`${match.routeId === rootRouteId ? rootRouteId : match.pathname}`}\n                            </code>\n                          </NavigateLink>\n                        </div>\n                      )\n                    })}\n                  </div>\n                </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          {routerState().cachedMatches.length ? (\n            <div class={styles().cachedMatchesContainer}>\n              <div class={styles().detailsHeader}>\n                <div>Cached Matches</div>\n                <div class={styles().detailsHeaderInfo}>\n                  age / staleTime / gcTime\n                </div>\n              </div>\n              <div>\n                {routerState().cachedMatches.map((match: any) => {\n                  return (\n                    <div\n                      role=\"button\"\n                      aria-label={`Open match details for ${match.id}`}\n                      onClick={() =>\n                        setActiveId(activeId() === match.id ? '' : match.id)\n                      }\n                      class={cx(styles().matchRow(match === activeMatch()))}\n                    >\n                      <div\n                        class={cx(\n                          styles().matchIndicator(getStatusColor(match)),\n                        )}\n                      />\n                      <NavigateLink\n                        left={\n                          <NavigateButton\n                            to={match.pathname}\n                            params={match.params}\n                            search={match.search}\n                            router={router}\n                          />\n                        }\n                        right={<AgeTicker match={match} router={router} />}\n                      >\n                        <code class={styles().matchID}>{`${match.id}`}</code>\n                      </NavigateLink>\n                    </div>\n                  )\n                })}\n              </div>\n            </div>\n          ) : null}\n        </div>\n        {activeMatch() && activeMatch()?.status ? (\n          <div class={styles().thirdContainer}>\n            <div class={styles().detailsHeader}>Match Details</div>\n            <div>\n              <div class={styles().matchDetails}>\n                <div\n                  class={styles().matchStatus(\n                    activeMatch()?.status,\n                    activeMatch()?.isFetching,\n                  )}\n                >\n                  <div>\n                    {activeMatch()?.status === 'success' &&\n                    activeMatch()?.isFetching\n                      ? 'fetching'\n                      : activeMatch()?.status}\n                  </div>\n                </div>\n                <div class={styles().matchDetailsInfoLabel}>\n                  <div>ID:</div>\n                  <div class={styles().matchDetailsInfo}>\n                    <code>{activeMatch()?.id}</code>\n                  </div>\n                </div>\n                <div class={styles().matchDetailsInfoLabel}>\n                  <div>State:</div>\n                  <div class={styles().matchDetailsInfo}>\n                    {routerState().pendingMatches?.find(\n                      (d: any) => d.id === activeMatch()?.id,\n                    )\n                      ? 'Pending'\n                      : routerState().matches.find(\n                            (d: any) => d.id === activeMatch()?.id,\n                          )\n                        ? 'Active'\n                        : 'Cached'}\n                  </div>\n                </div>\n                <div class={styles().matchDetailsInfoLabel}>\n                  <div>Last Updated:</div>\n                  <div class={styles().matchDetailsInfo}>\n                    {activeMatch()?.updatedAt\n                      ? new Date(activeMatch()?.updatedAt).toLocaleTimeString()\n                      : 'N/A'}\n                  </div>\n                </div>\n              </div>\n            </div>\n            {activeMatchLoaderData() ? (\n              <>\n                <div class={styles().detailsHeader}>Loader Data</div>\n                <div class={styles().detailsContent}>\n                  <Explorer\n                    label=\"loaderData\"\n                    value={activeMatchLoaderData}\n                    defaultExpanded={{}}\n                  />\n                </div>\n              </>\n            ) : null}\n            <div class={styles().detailsHeader}>Explorer</div>\n            <div class={styles().detailsContent}>\n              <Explorer\n                label=\"Match\"\n                value={activeMatchValue}\n                defaultExpanded={{}}\n              />\n            </div>\n          </div>\n        ) : null}\n        {hasSearch() ? (\n          <div class={styles().fourthContainer}>\n            <div class={styles().detailsHeader}>\n              <span>Search Params</span>\n              {typeof navigator !== 'undefined' ? (\n                <span style=\"margin-left: 0.5rem;\">\n                  <CopyButton\n                    getValue={() => {\n                      const search = routerState().location.search\n                      return JSON.stringify(search)\n                    }}\n                  />\n                </span>\n              ) : null}\n            </div>\n            <div class={styles().detailsContent}>\n              <Explorer\n                value={locationSearchValue}\n                defaultExpanded={Object.keys(\n                  routerState().location.search,\n                ).reduce((obj: any, next) => {\n                  obj[next] = {}\n                  return obj\n                }, {})}\n              />\n            </div>\n          </div>\n        ) : null}\n      </div>\n    )\n  }\n\nfunction CopyButton({ getValue }: { getValue: () => string }) {\n  const [copied, setCopied] = createSignal(false)\n\n  let timeoutId: ReturnType<typeof setTimeout> | null = null\n\n  const handleCopy = async () => {\n    // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition\n    if (typeof navigator === 'undefined' || !navigator.clipboard?.writeText) {\n      console.warn('TanStack Router Devtools: Clipboard API unavailable')\n      return\n    }\n    try {\n      const value = getValue()\n      await navigator.clipboard.writeText(value)\n      setCopied(true)\n      if (timeoutId) clearTimeout(timeoutId)\n      timeoutId = setTimeout(() => setCopied(false), 2500)\n    } catch (e) {\n      console.error('TanStack Router Devtools: Failed to copy', e)\n    }\n  }\n\n  onCleanup(() => {\n    if (timeoutId) clearTimeout(timeoutId)\n  })\n\n  return (\n    <button\n      type=\"button\"\n      style=\"cursor: pointer;\"\n      onClick={handleCopy}\n      aria-label=\"Copy value to clipboard\"\n      title={copied() ? 'Copied!' : 'Copy'}\n    >\n      {copied() ? '✅' : '📋'}\n    </button>\n  )\n}\n\nexport default BaseTanStackRouterDevtoolsPanel\n"],"names":["isServer","window","getStatusColor","match","colorMap","pending","success","error","notFound","redirected","isFetching","status","getRouteStatusColor","matches","route","found","find","d","routeId","id","useIsMounted","isMounted","setIsMounted","createSignal","effect","createEffect","createRenderEffect","displayValue","value","name","Object","getOwnPropertyNames","newValue","toString","JSON","stringify","e","multiSortBy","arr","accessors","map","i","sort","a","ai","b","bi","accessor","ao","bo","stylesFactory","shadowDOMTarget","colors","font","size","alpha","border","tokens","fontFamily","lineHeight","fontSize","css","goober","bind","target","devtoolsPanelContainer","gray","devtoolsPanelContainerVisibility","isOpen","devtoolsPanelContainerResizing","isResizing","devtoolsPanelContainerAnimation","height","logo","sans","radius","xs","blue","tanstackLogo","md","weight","bold","routerLogo","semibold","devtoolsPanel","sm","darkGray","dragHandle","purple","firstContainer","routerExplorerContainer","routerExplorer","row","detailsHeader","medium","maskedBadge","yellow","full","normal","maskedLocation","detailsContent","routeMatchesToggle","routeMatchesToggleBtn","active","showBorder","base","classes","activeStyles","push","inactiveStyles","detailsHeaderInfo","matchRow","matchIndicator","color","grayStyles","matchID","ageTicker","showWarning","warningStyles","secondContainer","thirdContainer","fourthContainer","routesContainer","routesRowContainer","isMatch","routesRow","matchStyles","routesRowInner","routeParamInfo","nestedRouteRow","isRoot","code","matchesContainer","cachedMatchesContainer","historyContainer","historyOverflowContainer","maskedBadgeContainer","matchDetails","matchStatus","matchDetailsInfo","matchDetailsInfoLabel","mainCloseBtn","mainCloseBtnPosition","position","mainCloseBtnAnimation","routerLogoCloseButton","mainCloseBtnDivider","mainCloseBtnIconContainer","mainCloseBtnIconOuter","mainCloseBtnIconInner","panelCloseBtn","panelCloseBtnIcon","navigateButton","useStyles","shadowDomTarget","useContext","ShadowDomTargetContext","_styles","Expander","expanded","style","styles","_el$","_tmpl$","_el$2","firstChild","_$effect","_p$","_v$","expander","_v$2","cx","expanderIcon","_$className","t","_$setAttribute","undefined","chunkArray","array","result","length","slice","isIterable","x","Symbol","iterator","Explorer","defaultExpanded","pageSize","filterSubEntries","rest","setExpanded","Boolean","toggleExpanded","old","type","createMemo","subEntries","entries","makeProperty","sub","subDefaultExpanded","label","Array","isArray","from","val","key","subEntryPages","expandedPages","setExpandedPages","valueSnapshot","setValueSnapshot","refreshValueSnapshot","handleEntry","entry","_$createComponent","_$mergeProps","_el$3","_tmpl$2","_$insert","_c$","_$memo","_el$4","_tmpl$3","_el$5","_el$6","$$click","String","toLowerCase","_v$3","expandButton","_v$4","info","_el$7","index","_el$8","_el$9","_tmpl$4","_el$0","_el$1","_el$10","_el$15","nextSibling","_el$12","_el$16","includes","filter","_c$2","_el$17","_v$5","_v$6","labelButton","_el$18","_tmpl$5","_el$19","refreshValueBtn","_el$20","_tmpl$6","_el$21","_el$22","_tmpl$7","mono","_$delegateEvents","formatTime","ms","units","values","chosenUnitIndex","formatter","Intl","NumberFormat","navigator","language","compactDisplay","notation","maximumFractionDigits","format","AgeTicker","router","looseRoutesById","options","loader","age","Date","now","updatedAt","staleTime","defaultStaleTime","gcTime","defaultGcTime","NavigateButton","to","params","search","stopPropagation","navigate","HISTORY_LIMIT","Logo","props","className","_$spread","NavigateLink","left","children","right","class","RouteComp","routerState","activeId","setActiveId","pendingMatches","param","p","r","path","trimPath","startsWith","trimmed","navigationTarget","allParams","assign","m","interpolated","interpolatePath","fullPath","decoder","pathParamsDecoder","isMissingParams","interpolatedPath","Show","when","rootRouteId","rank","BaseTanStackRouterDevtoolsPanel","setIsOpen","handleDragStart","panelProps","onCloseClick","useDevtoolsOnClose","otherPanelProps","invariant","currentTab","setCurrentTab","useLocalStorage","history","setHistory","hasHistoryOverflowed","setHasHistoryOverflowed","currentMatch","historyUntracked","untrack","lastMatch","sameLocation","pathname","prev","newHistory","splice","activeMatch","cachedMatches","hasSearch","keys","location","explorerState","state","routerExplorerValue","fromEntries","dd","activeMatchLoaderData","loaderData","activeMatchValue","locationSearchValue","_el$11","_tmpl$8","_el$13","_el$14","_el$23","_el$24","_el$25","_el$26","_el$27","_el$28","_el$29","_el$30","_el$34","_$addEventListener","onClick","context","_el$35","_tmpl$9","_el$36","_v$24","_v$25","_c$3","_el$37","Switch","Match","routeTree","_el$31","_i","_el$38","_tmpl$0","_el$39","_el$40","_v$26","_v$27","_v$28","_el$32","_el$33","For","each","_el$41","_tmpl$1","_el$42","_el$43","_v$29","_v$30","_c$4","_el$44","_tmpl$10","_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","_v$32","_v$33","_c$6","_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","_c$9","_c$0","toLocaleTimeString","_c$1","_el$71","_tmpl$13","_el$72","_v$37","_v$38","_v$39","_v$40","_v$41","_v$42","_v$43","_v$44","_v$45","_v$46","_v$47","_v$48","o","n","s","h","l","u","_c$7","_el$73","_tmpl$14","_el$74","_el$76","_el$77","_tmpl$15","CopyButton","getValue","reduce","obj","next","_v$49","_v$50","_v$51","_v$7","_v$8","_v$9","_v$0","_v$1","_v$10","_v$11","_v$12","_v$13","_v$14","_v$15","_v$16","_v$17","_v$18","_v$19","_v$20","_v$21","_v$22","_v$23","c","disabled","w","f","y","g","copied","setCopied","timeoutId","handleCopy","clipboard","writeText","console","warn","setTimeout","onCleanup","_el$78","_tmpl$16"],"mappings":"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"}