@tanstack/router-devtools 1.20.1 → 1.20.3-alpha.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +3 -1
- package/dist/cjs/index.cjs +12 -3
- package/dist/cjs/index.cjs.map +1 -1
- package/dist/cjs/index.d.cts +2 -1
- package/dist/esm/index.d.ts +2 -1
- package/dist/esm/index.js +6 -3
- package/dist/esm/index.js.map +1 -1
- package/package.json +34 -34
- package/src/index.tsx +6 -1
- package/dist/cjs/Explorer.cjs +0 -306
- package/dist/cjs/Explorer.cjs.map +0 -1
- package/dist/cjs/Explorer.d.cts +0 -46
- package/dist/cjs/devtools.cjs +0 -1181
- package/dist/cjs/devtools.cjs.map +0 -1
- package/dist/cjs/devtools.d.cts +0 -65
- package/dist/cjs/logo.cjs +0 -1012
- package/dist/cjs/logo.cjs.map +0 -1
- package/dist/cjs/logo.d.cts +0 -2
- package/dist/cjs/theme.d.cts +0 -34
- package/dist/cjs/tokens.cjs +0 -302
- package/dist/cjs/tokens.cjs.map +0 -1
- package/dist/cjs/tokens.d.cts +0 -298
- package/dist/cjs/useLocalStorage.cjs +0 -45
- package/dist/cjs/useLocalStorage.cjs.map +0 -1
- package/dist/cjs/useLocalStorage.d.cts +0 -1
- package/dist/cjs/useMediaQuery.d.cts +0 -1
- package/dist/cjs/utils.cjs +0 -82
- package/dist/cjs/utils.cjs.map +0 -1
- package/dist/cjs/utils.d.cts +0 -23
- package/dist/esm/Explorer.d.ts +0 -46
- package/dist/esm/Explorer.js +0 -289
- package/dist/esm/Explorer.js.map +0 -1
- package/dist/esm/devtools.d.ts +0 -65
- package/dist/esm/devtools.js +0 -1181
- package/dist/esm/devtools.js.map +0 -1
- package/dist/esm/logo.d.ts +0 -2
- package/dist/esm/logo.js +0 -1012
- package/dist/esm/logo.js.map +0 -1
- package/dist/esm/theme.d.ts +0 -34
- package/dist/esm/tokens.d.ts +0 -298
- package/dist/esm/tokens.js +0 -302
- package/dist/esm/tokens.js.map +0 -1
- package/dist/esm/useLocalStorage.d.ts +0 -1
- package/dist/esm/useLocalStorage.js +0 -46
- package/dist/esm/useLocalStorage.js.map +0 -1
- package/dist/esm/useMediaQuery.d.ts +0 -1
- package/dist/esm/utils.d.ts +0 -23
- package/dist/esm/utils.js +0 -82
- package/dist/esm/utils.js.map +0 -1
- package/src/Explorer.tsx +0 -357
- package/src/devtools.tsx +0 -1401
- package/src/logo.tsx +0 -817
- package/src/theme.tsx +0 -31
- package/src/tokens.ts +0 -305
- package/src/useLocalStorage.ts +0 -52
- package/src/useMediaQuery.ts +0 -39
- package/src/utils.ts +0 -183
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"devtools.cjs","sources":["../../src/devtools.tsx"],"sourcesContent":["import React from 'react'\nimport {\n invariant,\n AnyRouter,\n Route,\n AnyRoute,\n AnyRootRoute,\n trimPath,\n useRouter,\n useRouterState,\n AnyRouteMatch,\n rootRouteId,\n} from '@tanstack/react-router'\n\nimport useLocalStorage from './useLocalStorage'\nimport {\n getRouteStatusColor,\n getStatusColor,\n multiSortBy,\n useIsMounted,\n useSafeState,\n} from './utils'\nimport { css } from 'goober'\nimport { clsx as cx } from 'clsx'\nimport Explorer from './Explorer'\nimport { tokens } from './tokens'\nimport { TanStackLogo } from './logo'\n\nexport type PartialKeys<T, K extends keyof T> = Omit<T, K> & Partial<Pick<T, K>>\n\ninterface DevtoolsOptions {\n /**\n * Set this true if you want the dev tools to default to being open\n */\n initialIsOpen?: boolean\n /**\n * Use this to add props to the panel. For example, you can add className, style (merge and override default style), etc.\n */\n panelProps?: React.DetailedHTMLProps<\n React.HTMLAttributes<HTMLDivElement>,\n HTMLDivElement\n >\n /**\n * Use this to add props to the close button. For example, you can add className, style (merge and override default style), onClick (extend default handler), etc.\n */\n closeButtonProps?: React.DetailedHTMLProps<\n React.ButtonHTMLAttributes<HTMLButtonElement>,\n HTMLButtonElement\n >\n /**\n * Use this to add props to the toggle button. For example, you can add className, style (merge and override default style), onClick (extend default handler), etc.\n */\n toggleButtonProps?: React.DetailedHTMLProps<\n React.ButtonHTMLAttributes<HTMLButtonElement>,\n HTMLButtonElement\n >\n /**\n * The position of the TanStack Router logo to open and close the devtools panel.\n * Defaults to 'bottom-left'.\n */\n position?: 'top-left' | 'top-right' | 'bottom-left' | 'bottom-right'\n /**\n * Use this to render the devtools inside a different type of container element for a11y purposes.\n * Any string which corresponds to a valid intrinsic JSX element is allowed.\n * Defaults to 'footer'.\n */\n containerElement?: string | any\n /**\n * A boolean variable indicating if the \"lite\" version of the library is being used\n */\n router?: AnyRouter\n}\n\ninterface DevtoolsPanelOptions {\n /**\n * The standard React style object used to style a component with inline styles\n */\n style?: React.CSSProperties\n /**\n * The standard React className property used to style a component with classes\n */\n className?: 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: React.MouseEvent<HTMLDivElement, MouseEvent>) => void\n /**\n * A boolean variable indicating if the \"lite\" version of the library is being used\n */\n router?: AnyRouter\n}\n\nconst isServer = typeof window === 'undefined'\n\nfunction Logo(props: React.HTMLAttributes<HTMLButtonElement>) {\n const { className, ...rest } = props\n return (\n <button {...rest} className={cx(getStyles().logo, className)}>\n <div className={getStyles().tanstackLogo}>TANSTACK</div>\n <div className={getStyles().routerLogo}>React Router v1</div>\n </button>\n )\n}\n\nconst DevtoolsOnCloseContext = React.createContext<\n | {\n onCloseClick: (e: React.MouseEvent<HTMLButtonElement>) => void\n }\n | undefined\n>(undefined)\n\nconst useDevtoolsOnClose = () => {\n const context = React.useContext(DevtoolsOnCloseContext)\n if (!context) {\n throw new Error(\n 'useDevtoolsOnClose must be used within a TanStackRouterDevtools component',\n )\n }\n return context\n}\n\nexport function TanStackRouterDevtools({\n initialIsOpen,\n panelProps = {},\n closeButtonProps = {},\n toggleButtonProps = {},\n position = 'bottom-left',\n containerElement: Container = 'footer',\n router,\n}: DevtoolsOptions): React.ReactElement | null {\n const [rootEl, setRootEl] = React.useState<HTMLDivElement>(null!)\n const panelRef = React.useRef<HTMLDivElement>(null)\n const [isOpen, setIsOpen] = useLocalStorage(\n 'tanstackRouterDevtoolsOpen',\n initialIsOpen,\n )\n const [devtoolsHeight, setDevtoolsHeight] = useLocalStorage<number | null>(\n 'tanstackRouterDevtoolsHeight',\n null,\n )\n const [isResolvedOpen, setIsResolvedOpen] = useSafeState(false)\n const [isResizing, setIsResizing] = useSafeState(false)\n const isMounted = useIsMounted()\n\n const handleDragStart = (\n panelElement: HTMLDivElement | null,\n startEvent: React.MouseEvent<HTMLDivElement, MouseEvent>,\n ) => {\n if (startEvent.button !== 0) return // Only allow left click for drag\n\n setIsResizing(true)\n\n const dragInfo = {\n originalHeight: panelElement?.getBoundingClientRect().height ?? 0,\n pageY: startEvent.pageY,\n }\n\n const run = (moveEvent: MouseEvent) => {\n const delta = dragInfo.pageY - moveEvent.pageY\n const newHeight = dragInfo?.originalHeight + delta\n\n setDevtoolsHeight(newHeight)\n\n if (newHeight < 70) {\n setIsOpen(false)\n } else {\n setIsOpen(true)\n }\n }\n\n const unsub = () => {\n setIsResizing(false)\n document.removeEventListener('mousemove', run)\n document.removeEventListener('mouseUp', unsub)\n }\n\n document.addEventListener('mousemove', run)\n document.addEventListener('mouseup', unsub)\n }\n\n const isButtonClosed = isOpen ?? false\n\n React.useEffect(() => {\n setIsResolvedOpen(isOpen ?? false)\n }, [isOpen, isResolvedOpen, setIsResolvedOpen])\n\n React.useEffect(() => {\n if (isResolvedOpen) {\n const previousValue = rootEl?.parentElement?.style.paddingBottom\n\n const run = () => {\n const containerHeight = panelRef.current?.getBoundingClientRect().height\n if (rootEl?.parentElement) {\n rootEl.parentElement.style.paddingBottom = `${containerHeight}px`\n }\n }\n\n run()\n\n if (typeof window !== 'undefined') {\n window.addEventListener('resize', run)\n\n return () => {\n window.removeEventListener('resize', run)\n if (rootEl?.parentElement && typeof previousValue === 'string') {\n rootEl.parentElement.style.paddingBottom = previousValue\n }\n }\n }\n }\n return\n }, [isResolvedOpen])\n\n React.useEffect(() => {\n if (rootEl) {\n const el = rootEl\n const fontSize = getComputedStyle(el).fontSize\n el.style.setProperty('--tsrd-font-size', fontSize)\n }\n }, [rootEl])\n\n const { style: panelStyle = {}, ...otherPanelProps } = panelProps\n\n const {\n style: closeButtonStyle = {},\n onClick: onCloseClick,\n ...otherCloseButtonProps\n } = closeButtonProps\n\n const {\n style: toggleButtonStyle = {},\n onClick: onToggleClick,\n ...otherToggleButtonProps\n } = toggleButtonProps\n\n // Do not render on the server\n if (!isMounted()) return null\n\n const resolvedHeight = devtoolsHeight ?? 500\n\n return (\n <Container ref={setRootEl} className=\"TanStackRouterDevtools\">\n <DevtoolsOnCloseContext.Provider\n value={{\n onCloseClick: onCloseClick ?? (() => {}),\n }}\n >\n <TanStackRouterDevtoolsPanel\n ref={panelRef as any}\n {...otherPanelProps}\n router={router}\n className={cx(\n getStyles().devtoolsPanelContainer,\n getStyles().devtoolsPanelContainerVisibility(!!isOpen),\n getStyles().devtoolsPanelContainerResizing(isResizing),\n getStyles().devtoolsPanelContainerAnimation(\n isResolvedOpen,\n resolvedHeight + 16,\n ),\n )}\n style={{\n height: resolvedHeight,\n ...panelStyle,\n }}\n isOpen={isResolvedOpen}\n setIsOpen={setIsOpen}\n handleDragStart={(e) => handleDragStart(panelRef.current, e)}\n />\n </DevtoolsOnCloseContext.Provider>\n\n <button\n type=\"button\"\n {...otherToggleButtonProps}\n aria-label=\"Open TanStack Router Devtools\"\n onClick={(e) => {\n setIsOpen(true)\n onToggleClick && onToggleClick(e)\n }}\n className={cx(\n getStyles().mainCloseBtn,\n getStyles().mainCloseBtnPosition(position),\n getStyles().mainCloseBtnAnimation(!isButtonClosed),\n )}\n >\n <div className={getStyles().mainCloseBtnIconContainer}>\n <div className={getStyles().mainCloseBtnIconOuter}>\n <TanStackLogo />\n </div>\n <div className={getStyles().mainCloseBtnIconInner}>\n <TanStackLogo />\n </div>\n </div>\n <div className={getStyles().mainCloseBtnDivider}>-</div>\n <div className={getStyles().routerLogoCloseButton}>TanStack Router</div>\n </button>\n </Container>\n )\n}\n\nfunction RouteComp({\n route,\n isRoot,\n activeId,\n setActiveId,\n}: {\n route: AnyRootRoute | AnyRoute\n isRoot?: boolean\n activeId: string | undefined\n setActiveId: (id: string) => void\n}) {\n const routerState = useRouterState()\n const matches =\n routerState.status === 'pending'\n ? routerState.pendingMatches ?? []\n : routerState.matches\n\n const match = routerState.matches.find((d) => d.routeId === route.id)\n\n const param = React.useMemo(() => {\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 if (p[trimmed]) {\n return `(${p[trimmed]})`\n }\n }\n }\n return ''\n } catch (error) {\n return ''\n }\n }, [match, route])\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 className={cx(\n getStyles().routesRowContainer(route.id === activeId, !!match),\n )}\n >\n <div\n className={cx(\n getStyles().matchIndicator(getRouteStatusColor(matches, route)),\n )}\n />\n <div className={cx(getStyles().routesRow(!!match))}>\n <div>\n <code className={getStyles().code}>\n {isRoot ? rootRouteId : route.path || trimPath(route.id)}{' '}\n </code>\n <code className={getStyles().routeParamInfo}>{param}</code>\n </div>\n <AgeTicker match={match} />\n </div>\n </div>\n {(route.children as Route[])?.length ? (\n <div className={getStyles().nestedRouteRow(!!isRoot)}>\n {[...(route.children as Route[])]\n .sort((a, b) => {\n return a.rank - b.rank\n })\n .map((r) => (\n <RouteComp\n key={r.id}\n route={r}\n activeId={activeId}\n setActiveId={setActiveId}\n />\n ))}\n </div>\n ) : null}\n </div>\n )\n}\n\nexport const TanStackRouterDevtoolsPanel = React.forwardRef<\n HTMLDivElement,\n DevtoolsPanelOptions\n>(function TanStackRouterDevtoolsPanel(props, ref): React.ReactElement {\n const {\n isOpen = true,\n setIsOpen,\n handleDragStart,\n router: userRouter,\n ...panelProps\n } = props\n\n const { onCloseClick } = useDevtoolsOnClose()\n const { className, ...otherPanelProps } = panelProps\n\n const contextRouter = useRouter({ warn: false })\n const router = userRouter ?? contextRouter\n const routerState = useRouterState({\n router,\n } as any)\n\n const matches = [\n ...(routerState.pendingMatches ?? []),\n ...routerState.matches,\n ...routerState.cachedMatches,\n ]\n\n invariant(\n router,\n 'No router was found for the TanStack Router Devtools. Please place the devtools in the <RouterProvider> component tree or pass the router instance to the devtools manually.',\n )\n\n // useStore(router.__store)\n\n const [showMatches, setShowMatches] = useLocalStorage(\n 'tanstackRouterDevtoolsShowMatches',\n true,\n )\n\n const [activeId, setActiveId] = useLocalStorage(\n 'tanstackRouterDevtoolsActiveRouteId',\n '',\n )\n\n const activeMatch = React.useMemo(\n () => matches.find((d) => d.routeId === activeId || d.id === activeId),\n [matches, activeId],\n )\n\n const hasSearch = Object.keys(routerState.location.search || {}).length\n\n const explorerState = {\n ...router,\n state: router.state,\n }\n\n return (\n <div\n ref={ref}\n className={cx(\n getStyles().devtoolsPanel,\n 'TanStackRouterDevtoolsPanel',\n className,\n )}\n {...otherPanelProps}\n >\n {handleDragStart ? (\n <div\n className={getStyles().dragHandle}\n onMouseDown={handleDragStart}\n ></div>\n ) : null}\n <button\n className={getStyles().panelCloseBtn}\n onClick={(e) => {\n setIsOpen(false)\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 className={getStyles().panelCloseBtnIcon}\n >\n <path\n stroke=\"currentColor\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n strokeWidth=\"1.667\"\n d=\"M1 1l4 4 4-4\"\n ></path>\n </svg>\n </button>\n <div className={getStyles().firstContainer}>\n <div className={getStyles().row}>\n <Logo\n aria-hidden\n onClick={(e) => {\n setIsOpen(false)\n onCloseClick(e)\n }}\n />\n </div>\n <div className={getStyles().routerExplorerContainer}>\n <div className={getStyles().routerExplorer}>\n <Explorer\n label=\"Router\"\n value={Object.fromEntries(\n multiSortBy(\n Object.keys(explorerState),\n (\n [\n 'state',\n 'routesById',\n 'routesByPath',\n 'flatRoutes',\n 'options',\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 defaultExpanded={{\n state: {} as any,\n context: {} as any,\n options: {} as any,\n }}\n filterSubEntries={(subEntries) => {\n return subEntries.filter((d) => typeof d.value !== 'function')\n }}\n />\n </div>\n </div>\n </div>\n <div className={getStyles().secondContainer}>\n <div className={getStyles().matchesContainer}>\n <div className={getStyles().detailsHeader}>\n <span>Pathname</span>\n {routerState.location.maskedLocation ? (\n <div className={getStyles().maskedBadgeContainer}>\n <span className={getStyles().maskedBadge}>masked</span>\n </div>\n ) : null}\n </div>\n <div className={getStyles().detailsContent}>\n <code>{routerState.location.pathname}</code>\n {routerState.location.maskedLocation ? (\n <code className={getStyles().maskedLocation}>\n {routerState.location.maskedLocation.pathname}\n </code>\n ) : null}\n </div>\n <div className={getStyles().detailsHeader}>\n <div className={getStyles().routeMatchesToggle}>\n <button\n type=\"button\"\n onClick={() => {\n setShowMatches(false)\n }}\n disabled={!showMatches}\n className={cx(\n getStyles().routeMatchesToggleBtn(!showMatches, true),\n )}\n >\n Routes\n </button>\n <button\n type=\"button\"\n onClick={() => {\n setShowMatches(true)\n }}\n disabled={showMatches}\n className={cx(\n getStyles().routeMatchesToggleBtn(!!showMatches, false),\n )}\n >\n Matches\n </button>\n </div>\n <div className={getStyles().detailsHeaderInfo}>\n <div>age / staleTime / gcTime</div>\n </div>\n </div>\n <div className={cx(getStyles().routesContainer)}>\n {!showMatches ? (\n <RouteComp\n route={router.routeTree}\n isRoot\n activeId={activeId}\n setActiveId={setActiveId}\n />\n ) : (\n <div>\n {(routerState.status === 'pending'\n ? routerState.pendingMatches ?? []\n : routerState.matches\n ).map((match, i) => {\n return (\n <div\n key={match.id || i}\n role=\"button\"\n aria-label={`Open match details for ${match.id}`}\n onClick={() =>\n setActiveId(activeId === match.id ? '' : match.id)\n }\n className={cx(\n getStyles().matchRow(match === activeMatch),\n )}\n >\n <div\n className={cx(\n getStyles().matchIndicator(getStatusColor(match)),\n )}\n />\n\n <code\n className={getStyles().matchID}\n >{`${match.routeId === rootRouteId ? rootRouteId : match.pathname}`}</code>\n <AgeTicker match={match} />\n </div>\n )\n })}\n </div>\n )}\n </div>\n </div>\n {routerState.cachedMatches?.length ? (\n <div className={getStyles().cachedMatchesContainer}>\n <div className={getStyles().detailsHeader}>\n <div>Cached Matches</div>\n <div className={getStyles().detailsHeaderInfo}>\n age / staleTime / gcTime\n </div>\n </div>\n <div>\n {routerState.cachedMatches.map((match) => {\n return (\n <div\n key={match.id}\n role=\"button\"\n aria-label={`Open match details for ${match.id}`}\n onClick={() =>\n setActiveId(activeId === match.id ? '' : match.id)\n }\n className={cx(getStyles().matchRow(match === activeMatch))}\n >\n <div\n className={cx(\n getStyles().matchIndicator(getStatusColor(match)),\n )}\n />\n\n <code className={getStyles().matchID}>{`${match.id}`}</code>\n\n <AgeTicker match={match} />\n </div>\n )\n })}\n </div>\n </div>\n ) : null}\n </div>\n {activeMatch ? (\n <div className={getStyles().thirdContainer}>\n <div className={getStyles().detailsHeader}>Match Details</div>\n <div>\n <div className={getStyles().matchDetails}>\n <div\n className={getStyles().matchStatus(\n activeMatch.status,\n activeMatch.isFetching,\n )}\n >\n <div>\n {activeMatch.status === 'success' && activeMatch.isFetching\n ? 'fetching'\n : activeMatch.status}\n </div>\n </div>\n <div className={getStyles().matchDetailsInfoLabel}>\n <div>ID:</div>\n <div className={getStyles().matchDetailsInfo}>\n <code>{activeMatch.id}</code>\n </div>\n </div>\n <div className={getStyles().matchDetailsInfoLabel}>\n <div>State:</div>\n <div className={getStyles().matchDetailsInfo}>\n {routerState.pendingMatches?.find(\n (d) => d.id === activeMatch.id,\n )\n ? 'Pending'\n : routerState.matches?.find((d) => d.id === activeMatch.id)\n ? 'Active'\n : 'Cached'}\n </div>\n </div>\n <div className={getStyles().matchDetailsInfoLabel}>\n <div>Last Updated:</div>\n <div className={getStyles().matchDetailsInfo}>\n {activeMatch.updatedAt\n ? new Date(\n activeMatch.updatedAt as number,\n ).toLocaleTimeString()\n : 'N/A'}\n </div>\n </div>\n </div>\n </div>\n {activeMatch.loaderData ? (\n <>\n <div className={getStyles().detailsHeader}>Loader Data</div>\n <div className={getStyles().detailsContent}>\n <Explorer\n label=\"loaderData\"\n value={activeMatch.loaderData}\n defaultExpanded={{}}\n />\n </div>\n </>\n ) : null}\n <div className={getStyles().detailsHeader}>Explorer</div>\n <div className={getStyles().detailsContent}>\n <Explorer label=\"Match\" value={activeMatch} defaultExpanded={{}} />\n </div>\n </div>\n ) : null}\n {hasSearch ? (\n <div className={getStyles().fourthContainer}>\n <div className={getStyles().detailsHeader}>Search Params</div>\n <div className={getStyles().detailsContent}>\n <Explorer\n value={routerState.location.search || {}}\n defaultExpanded={Object.keys(\n (routerState.location.search as {}) || {},\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 AgeTicker({ match }: { match?: AnyRouteMatch }) {\n const router = useRouter()\n\n const rerender = React.useReducer(\n () => ({}),\n () => ({}),\n )[1]\n\n React.useEffect(() => {\n const interval = setInterval(() => {\n rerender()\n }, 1000)\n\n return () => {\n clearInterval(interval)\n }\n }, [])\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 className={cx(getStyles().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\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\nconst stylesFactory = () => {\n const { colors, font, size, alpha, shadow, border } = tokens\n const { fontFamily, lineHeight, size: fontSize } = font\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: 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 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 const border = css`\n border-right: 1px solid ${tokens.colors.gray[500]};\n `\n classes.push(border)\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: (color: 'green' | 'red' | 'yellow' | 'gray' | 'blue') => {\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 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 `,\n matchesContainer: css`\n flex: 1 1 auto;\n overflow-y: auto;\n `,\n cachedMatchesContainer: css`\n flex: 1 1 auto;\n overflow-y: auto;\n max-height: 50%;\n `,\n maskedBadgeContainer: css`\n flex: 1;\n justify-content: flex-end;\n display: flex;\n `,\n matchDetails: css`\n display: flex;\n flex-direction: column;\n padding: ${tokens.size[2]};\n font-size: ${tokens.font.size.xs};\n color: ${tokens.colors.gray[300]};\n line-height: ${tokens.font.lineHeight.sm};\n `,\n matchStatus: (\n status: 'pending' | 'success' | 'error' | 'notFound' | 'redirected',\n isFetching: boolean,\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' ? 'blue' : 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 }\n}\n\nlet _styles: ReturnType<typeof stylesFactory> | null = null\n\nfunction getStyles() {\n if (_styles) return _styles\n _styles = stylesFactory()\n\n return _styles\n}\n"],"names":["jsxs","cx","jsx","useSafeState","useIsMounted","_a","TanStackLogo","useRouterState","trimPath","getRouteStatusColor","rootRouteId","TanStackRouterDevtoolsPanel","useRouter","invariant","Explorer","multiSortBy","getStatusColor","Fragment","tokens","css","border"],"mappings":"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"}
|
package/dist/cjs/devtools.d.cts
DELETED
|
@@ -1,65 +0,0 @@
|
|
|
1
|
-
import React from 'react';
|
|
2
|
-
import { AnyRouter } from '@tanstack/react-router';
|
|
3
|
-
export type PartialKeys<T, K extends keyof T> = Omit<T, K> & Partial<Pick<T, K>>;
|
|
4
|
-
interface DevtoolsOptions {
|
|
5
|
-
/**
|
|
6
|
-
* Set this true if you want the dev tools to default to being open
|
|
7
|
-
*/
|
|
8
|
-
initialIsOpen?: boolean;
|
|
9
|
-
/**
|
|
10
|
-
* Use this to add props to the panel. For example, you can add className, style (merge and override default style), etc.
|
|
11
|
-
*/
|
|
12
|
-
panelProps?: React.DetailedHTMLProps<React.HTMLAttributes<HTMLDivElement>, HTMLDivElement>;
|
|
13
|
-
/**
|
|
14
|
-
* Use this to add props to the close button. For example, you can add className, style (merge and override default style), onClick (extend default handler), etc.
|
|
15
|
-
*/
|
|
16
|
-
closeButtonProps?: React.DetailedHTMLProps<React.ButtonHTMLAttributes<HTMLButtonElement>, HTMLButtonElement>;
|
|
17
|
-
/**
|
|
18
|
-
* Use this to add props to the toggle button. For example, you can add className, style (merge and override default style), onClick (extend default handler), etc.
|
|
19
|
-
*/
|
|
20
|
-
toggleButtonProps?: React.DetailedHTMLProps<React.ButtonHTMLAttributes<HTMLButtonElement>, HTMLButtonElement>;
|
|
21
|
-
/**
|
|
22
|
-
* The position of the TanStack Router logo to open and close the devtools panel.
|
|
23
|
-
* Defaults to 'bottom-left'.
|
|
24
|
-
*/
|
|
25
|
-
position?: 'top-left' | 'top-right' | 'bottom-left' | 'bottom-right';
|
|
26
|
-
/**
|
|
27
|
-
* Use this to render the devtools inside a different type of container element for a11y purposes.
|
|
28
|
-
* Any string which corresponds to a valid intrinsic JSX element is allowed.
|
|
29
|
-
* Defaults to 'footer'.
|
|
30
|
-
*/
|
|
31
|
-
containerElement?: string | any;
|
|
32
|
-
/**
|
|
33
|
-
* A boolean variable indicating if the "lite" version of the library is being used
|
|
34
|
-
*/
|
|
35
|
-
router?: AnyRouter;
|
|
36
|
-
}
|
|
37
|
-
interface DevtoolsPanelOptions {
|
|
38
|
-
/**
|
|
39
|
-
* The standard React style object used to style a component with inline styles
|
|
40
|
-
*/
|
|
41
|
-
style?: React.CSSProperties;
|
|
42
|
-
/**
|
|
43
|
-
* The standard React className property used to style a component with classes
|
|
44
|
-
*/
|
|
45
|
-
className?: string;
|
|
46
|
-
/**
|
|
47
|
-
* A boolean variable indicating whether the panel is open or closed
|
|
48
|
-
*/
|
|
49
|
-
isOpen?: boolean;
|
|
50
|
-
/**
|
|
51
|
-
* A function that toggles the open and close state of the panel
|
|
52
|
-
*/
|
|
53
|
-
setIsOpen: (isOpen: boolean) => void;
|
|
54
|
-
/**
|
|
55
|
-
* Handles the opening and closing the devtools panel
|
|
56
|
-
*/
|
|
57
|
-
handleDragStart?: (e: React.MouseEvent<HTMLDivElement, MouseEvent>) => void;
|
|
58
|
-
/**
|
|
59
|
-
* A boolean variable indicating if the "lite" version of the library is being used
|
|
60
|
-
*/
|
|
61
|
-
router?: AnyRouter;
|
|
62
|
-
}
|
|
63
|
-
export declare function TanStackRouterDevtools({ initialIsOpen, panelProps, closeButtonProps, toggleButtonProps, position, containerElement: Container, router, }: DevtoolsOptions): React.ReactElement | null;
|
|
64
|
-
export declare const TanStackRouterDevtoolsPanel: React.ForwardRefExoticComponent<DevtoolsPanelOptions & React.RefAttributes<HTMLDivElement>>;
|
|
65
|
-
export {};
|