@tanstack/react-router-devtools 0.0.1-beta.45 → 0.0.1-beta.49
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/build/cjs/Explorer.js +35 -43
- package/build/cjs/Explorer.js.map +1 -1
- package/build/cjs/devtools.js +46 -51
- package/build/cjs/devtools.js.map +1 -1
- package/build/cjs/styledComponents.js +0 -32
- package/build/cjs/styledComponents.js.map +1 -1
- package/build/cjs/theme.js +4 -5
- package/build/cjs/theme.js.map +1 -1
- package/build/cjs/useMediaQuery.js +3 -6
- package/build/cjs/useMediaQuery.js.map +1 -1
- package/build/cjs/utils.js +10 -23
- package/build/cjs/utils.js.map +1 -1
- package/build/esm/index.js +98 -160
- package/build/esm/index.js.map +1 -1
- package/build/stats-html.html +1 -1
- package/build/stats-react.json +5057 -4480
- package/build/umd/index.development.js +3663 -762
- package/build/umd/index.development.js.map +1 -1
- package/build/umd/index.production.js +3 -3
- package/build/umd/index.production.js.map +1 -1
- package/package.json +2 -2
- package/src/devtools.tsx +44 -38
- package/src/utils.ts +3 -3
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"devtools.js","sources":["../../src/devtools.tsx"],"sourcesContent":["import React from 'react'\nimport {\n Router,\n last,\n routerContext,\n invariant,\n __useStoreValue,\n useRouterStore,\n} from '@tanstack/react-router'\nimport { formatDistanceStrict } from 'date-fns'\n\nimport useLocalStorage from './useLocalStorage'\nimport {\n getStatusColor,\n multiSortBy,\n useIsMounted,\n useSafeState,\n} from './utils'\nimport { Panel, Button, Code, ActivePanel } from './styledComponents'\nimport { ThemeProvider, defaultTheme as theme } from './theme'\n// import { getQueryStatusLabel, getQueryStatusColor } from './utils'\nimport Explorer from './Explorer'\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?: Router<any, any, any>\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?: Router<any, any, any>\n}\n\nconst isServer = typeof window === 'undefined'\n\nfunction Logo(props: React.HTMLProps<HTMLDivElement>) {\n return (\n <div\n {...props}\n style={{\n ...(props.style ?? {}),\n display: 'flex',\n alignItems: 'center',\n flexDirection: 'column',\n fontSize: '0.8rem',\n fontWeight: 'bolder',\n lineHeight: '1',\n }}\n >\n <div\n style={{\n letterSpacing: '-0.05rem',\n }}\n >\n TANSTACK\n </div>\n <div\n style={{\n backgroundImage:\n 'linear-gradient(to right, var(--tw-gradient-stops))',\n // @ts-ignore\n '--tw-gradient-from': '#84cc16',\n '--tw-gradient-stops':\n 'var(--tw-gradient-from), var(--tw-gradient-to)',\n '--tw-gradient-to': '#10b981',\n WebkitBackgroundClip: 'text',\n color: 'transparent',\n letterSpacing: '0.1rem',\n marginRight: '-0.2rem',\n }}\n >\n ROUTER\n </div>\n </div>\n )\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 rootRef = React.useRef<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 React.useEffect(() => {\n setIsResolvedOpen(isOpen ?? false)\n }, [isOpen, isResolvedOpen, setIsResolvedOpen])\n\n // Toggle panel visibility before/after transition (depending on direction).\n // Prevents focusing in a closed panel.\n React.useEffect(() => {\n const ref = panelRef.current\n\n if (ref) {\n const handlePanelTransitionStart = () => {\n if (ref && isResolvedOpen) {\n ref.style.visibility = 'visible'\n }\n }\n\n const handlePanelTransitionEnd = () => {\n if (ref && !isResolvedOpen) {\n ref.style.visibility = 'hidden'\n }\n }\n\n ref.addEventListener('transitionstart', handlePanelTransitionStart)\n ref.addEventListener('transitionend', handlePanelTransitionEnd)\n\n return () => {\n ref.removeEventListener('transitionstart', handlePanelTransitionStart)\n ref.removeEventListener('transitionend', handlePanelTransitionEnd)\n }\n }\n\n return\n }, [isResolvedOpen])\n\n React[isServer ? 'useEffect' : 'useLayoutEffect'](() => {\n if (isResolvedOpen) {\n const previousValue = rootRef.current?.parentElement?.style.paddingBottom\n\n const run = () => {\n const containerHeight = panelRef.current?.getBoundingClientRect().height\n if (rootRef.current?.parentElement) {\n rootRef.current.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 (\n rootRef.current?.parentElement &&\n typeof previousValue === 'string'\n ) {\n rootRef.current.parentElement.style.paddingBottom = previousValue\n }\n }\n }\n }\n return\n }, [isResolvedOpen])\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 return (\n <Container ref={rootRef} className=\"TanStackRouterDevtools\">\n <ThemeProvider theme={theme}>\n <TanStackRouterDevtoolsPanel\n ref={panelRef as any}\n {...otherPanelProps}\n router={router}\n style={{\n position: 'fixed',\n bottom: '0',\n right: '0',\n zIndex: 99999,\n width: '100%',\n height: devtoolsHeight ?? 500,\n maxHeight: '90%',\n boxShadow: '0 0 20px rgba(0,0,0,.3)',\n borderTop: `1px solid ${theme.gray}`,\n transformOrigin: 'top',\n // visibility will be toggled after transitions, but set initial state here\n visibility: isOpen ? 'visible' : 'hidden',\n ...panelStyle,\n ...(isResizing\n ? {\n transition: `none`,\n }\n : { transition: `all .2s ease` }),\n ...(isResolvedOpen\n ? {\n opacity: 1,\n pointerEvents: 'all',\n transform: `translateY(0) scale(1)`,\n }\n : {\n opacity: 0,\n pointerEvents: 'none',\n transform: `translateY(15px) scale(1.02)`,\n }),\n }}\n isOpen={isResolvedOpen}\n setIsOpen={setIsOpen}\n handleDragStart={(e) => handleDragStart(panelRef.current, e)}\n />\n {isResolvedOpen ? (\n <Button\n type=\"button\"\n aria-label=\"Close TanStack Router Devtools\"\n {...(otherCloseButtonProps as any)}\n onClick={(e) => {\n setIsOpen(false)\n onCloseClick && onCloseClick(e)\n }}\n style={{\n position: 'fixed',\n zIndex: 99999,\n margin: '.5em',\n bottom: 0,\n ...(position === 'top-right'\n ? {\n right: '0',\n }\n : position === 'top-left'\n ? {\n left: '0',\n }\n : position === 'bottom-right'\n ? {\n right: '0',\n }\n : {\n left: '0',\n }),\n ...closeButtonStyle,\n }}\n >\n Close\n </Button>\n ) : null}\n </ThemeProvider>\n {!isResolvedOpen ? (\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 style={{\n appearance: 'none',\n background: 'none',\n border: 0,\n padding: 0,\n position: 'fixed',\n zIndex: 99999,\n display: 'inline-flex',\n fontSize: '1.5em',\n margin: '.5em',\n cursor: 'pointer',\n width: 'fit-content',\n ...(position === 'top-right'\n ? {\n top: '0',\n right: '0',\n }\n : position === 'top-left'\n ? {\n top: '0',\n left: '0',\n }\n : position === 'bottom-right'\n ? {\n bottom: '0',\n right: '0',\n }\n : {\n bottom: '0',\n left: '0',\n }),\n ...toggleButtonStyle,\n }}\n >\n <Logo aria-hidden />\n </button>\n ) : null}\n </Container>\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 routerContextValue = React.useContext(routerContext)\n const router = userRouter ?? routerContextValue?.router\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 useRouterStore()\n\n const [activeRouteId, setActiveRouteId] = useLocalStorage(\n 'tanstackRouterDevtoolsActiveRouteId',\n '',\n )\n\n const [activeMatchId, setActiveMatchId] = useLocalStorage(\n 'tanstackRouterDevtoolsActiveMatchId',\n '',\n )\n\n React.useEffect(() => {\n setActiveMatchId('')\n }, [activeRouteId])\n\n const activeMatch =\n Object.values(router.store.matchCache)?.find(\n (d) => d.match.matchId === activeMatchId,\n )?.match ??\n router.store.currentMatches?.find((d) => d.routeId === activeRouteId)\n\n const matchCacheValues = multiSortBy(\n Object.keys(router.store.matchCache)\n .filter((key) => {\n const cacheEntry = router.store.matchCache[key]!\n return cacheEntry.gc > Date.now()\n })\n .map((key) => router.store.matchCache[key]!),\n [\n (d) => (d.match.store.isFetching ? -1 : 1),\n (d) => -d.match.store.updatedAt!,\n ],\n )\n\n return (\n <ThemeProvider theme={theme}>\n <Panel ref={ref} className=\"TanStackRouterDevtoolsPanel\" {...panelProps}>\n <style\n dangerouslySetInnerHTML={{\n __html: `\n\n .TanStackRouterDevtoolsPanel * {\n scrollbar-color: ${theme.backgroundAlt} ${theme.gray};\n }\n\n .TanStackRouterDevtoolsPanel *::-webkit-scrollbar, .TanStackRouterDevtoolsPanel scrollbar {\n width: 1em;\n height: 1em;\n }\n\n .TanStackRouterDevtoolsPanel *::-webkit-scrollbar-track, .TanStackRouterDevtoolsPanel scrollbar-track {\n background: ${theme.backgroundAlt};\n }\n\n .TanStackRouterDevtoolsPanel *::-webkit-scrollbar-thumb, .TanStackRouterDevtoolsPanel scrollbar-thumb {\n background: ${theme.gray};\n border-radius: .5em;\n border: 3px solid ${theme.backgroundAlt};\n }\n\n .TanStackRouterDevtoolsPanel table {\n width: 100%;\n }\n\n .TanStackRouterDevtoolsPanel table tr {\n border-bottom: 2px dotted rgba(255, 255, 255, .2);\n }\n\n .TanStackRouterDevtoolsPanel table tr:last-child {\n border-bottom: none\n }\n\n .TanStackRouterDevtoolsPanel table td {\n padding: .25rem .5rem;\n border-right: 2px dotted rgba(255, 255, 255, .05);\n }\n\n .TanStackRouterDevtoolsPanel table td:last-child {\n border-right: none\n }\n\n `,\n }}\n />\n <div\n style={{\n position: 'absolute',\n left: 0,\n top: 0,\n width: '100%',\n height: '4px',\n marginBottom: '-4px',\n cursor: 'row-resize',\n zIndex: 100000,\n }}\n onMouseDown={handleDragStart}\n ></div>\n <div\n style={{\n flex: '1 1 500px',\n minHeight: '40%',\n maxHeight: '100%',\n overflow: 'auto',\n borderRight: `1px solid ${theme.grayAlt}`,\n display: 'flex',\n flexDirection: 'column',\n }}\n >\n <div\n style={{\n display: 'flex',\n justifyContent: 'start',\n gap: '1rem',\n padding: '1rem',\n alignItems: 'center',\n background: theme.backgroundAlt,\n }}\n >\n <Logo aria-hidden />\n <div\n style={{\n fontSize: 'clamp(.8rem, 2vw, 1.3rem)',\n fontWeight: 'bold',\n }}\n >\n <span\n style={{\n fontWeight: 100,\n }}\n >\n Devtools\n </span>\n </div>\n </div>\n <div\n style={{\n overflowY: 'auto',\n flex: '1',\n }}\n >\n <div\n style={{\n padding: '.5em',\n }}\n >\n <Explorer label=\"Router\" value={router} defaultExpanded={{}} />\n </div>\n </div>\n </div>\n <div\n style={{\n flex: '1 1 500px',\n minHeight: '40%',\n maxHeight: '100%',\n overflow: 'auto',\n borderRight: `1px solid ${theme.grayAlt}`,\n display: 'flex',\n flexDirection: 'column',\n }}\n >\n <div\n style={{\n padding: '.5em',\n background: theme.backgroundAlt,\n position: 'sticky',\n top: 0,\n zIndex: 1,\n }}\n >\n Active Matches\n </div>\n {router.store.currentMatches.map((match, i) => {\n return (\n <div\n key={match.routeId || i}\n role=\"button\"\n aria-label={`Open match details for ${match.routeId}`}\n onClick={() =>\n setActiveRouteId(\n activeRouteId === match.routeId ? '' : match.routeId,\n )\n }\n style={{\n display: 'flex',\n borderBottom: `solid 1px ${theme.grayAlt}`,\n cursor: 'pointer',\n alignItems: 'center',\n background:\n match === activeMatch ? 'rgba(255,255,255,.1)' : undefined,\n }}\n >\n <div\n style={{\n flex: '0 0 auto',\n width: '1.3rem',\n height: '1.3rem',\n marginLeft: '.25rem',\n background: getStatusColor(match, theme),\n alignItems: 'center',\n justifyContent: 'center',\n fontWeight: 'bold',\n borderRadius: '.25rem',\n transition: 'all .2s ease-out',\n }}\n />\n\n <Code\n style={{\n padding: '.5em',\n }}\n >\n {`${match.matchId}`}\n </Code>\n </div>\n )\n })}\n {router.store.pendingMatches?.length ? (\n <>\n <div\n style={{\n marginTop: '2rem',\n padding: '.5em',\n background: theme.backgroundAlt,\n position: 'sticky',\n top: 0,\n zIndex: 1,\n }}\n >\n Pending Matches\n </div>\n {router.store.pendingMatches?.map((match, i) => {\n return (\n <div\n key={match.routeId || i}\n role=\"button\"\n aria-label={`Open match details for ${match.routeId}`}\n onClick={() =>\n setActiveRouteId(\n activeRouteId === match.routeId ? '' : match.routeId,\n )\n }\n style={{\n display: 'flex',\n borderBottom: `solid 1px ${theme.grayAlt}`,\n cursor: 'pointer',\n background:\n match === activeMatch\n ? 'rgba(255,255,255,.1)'\n : undefined,\n }}\n >\n <div\n style={{\n flex: '0 0 auto',\n width: '1.3rem',\n height: '1.3rem',\n marginLeft: '.25rem',\n background: getStatusColor(match, theme),\n alignItems: 'center',\n justifyContent: 'center',\n fontWeight: 'bold',\n borderRadius: '.25rem',\n transition: 'all .2s ease-out',\n }}\n />\n\n <Code\n style={{\n padding: '.5em',\n }}\n >\n {`${match.matchId}`}\n </Code>\n </div>\n )\n })}\n </>\n ) : null}\n {matchCacheValues.length ? (\n <>\n <div\n style={{\n marginTop: '2rem',\n padding: '.5em',\n background: theme.backgroundAlt,\n position: 'sticky',\n top: 0,\n bottom: 0,\n zIndex: 1,\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'space-between',\n }}\n >\n <div>Match Cache</div>\n <Button\n onClick={() => {\n router.setStore((s) => (s.matchCache = {}))\n }}\n >\n Clear\n </Button>\n </div>\n {matchCacheValues.map((d, i) => {\n const { match, gc } = d\n\n return (\n <div\n key={match.matchId || i}\n role=\"button\"\n aria-label={`Open match details for ${match.matchId}`}\n onClick={() =>\n setActiveMatchId(\n activeMatchId === match.matchId ? '' : match.matchId,\n )\n }\n style={{\n display: 'flex',\n borderBottom: `solid 1px ${theme.grayAlt}`,\n cursor: 'pointer',\n background:\n match === activeMatch\n ? 'rgba(255,255,255,.1)'\n : undefined,\n }}\n >\n <div\n style={{\n display: 'flex',\n flexDirection: 'column',\n padding: '.5rem',\n gap: '.3rem',\n }}\n >\n <div\n style={{\n display: 'flex',\n alignItems: 'center',\n gap: '.5rem',\n }}\n >\n <div\n style={{\n flex: '0 0 auto',\n width: '1.3rem',\n height: '1.3rem',\n background: getStatusColor(match, theme),\n alignItems: 'center',\n justifyContent: 'center',\n fontWeight: 'bold',\n borderRadius: '.25rem',\n transition: 'all .2s ease-out',\n }}\n />\n <Code>{`${match.matchId}`}</Code>\n </div>\n <span\n style={{\n fontSize: '.7rem',\n opacity: '.5',\n lineHeight: 1,\n }}\n >\n Expires{' '}\n {formatDistanceStrict(new Date(gc), new Date(), {\n addSuffix: true,\n })}\n </span>\n </div>\n </div>\n )\n })}\n </>\n ) : null}\n </div>\n\n {activeMatch ? (\n <ActivePanel>\n <div\n style={{\n padding: '.5em',\n background: theme.backgroundAlt,\n position: 'sticky',\n top: 0,\n bottom: 0,\n zIndex: 1,\n }}\n >\n Match Details\n </div>\n <div>\n <table>\n <tbody>\n <tr>\n <td style={{ opacity: '.5' }}>ID</td>\n <td>\n <Code\n style={{\n lineHeight: '1.8em',\n }}\n >\n {JSON.stringify(activeMatch.matchId, null, 2)}\n </Code>\n </td>\n </tr>\n <tr>\n <td style={{ opacity: '.5' }}>Status</td>\n <td>{activeMatch.store.status}</td>\n </tr>\n <tr>\n <td style={{ opacity: '.5' }}>Invalid</td>\n <td>{activeMatch.store.isInvalid.toString()}</td>\n </tr>\n <tr>\n <td style={{ opacity: '.5' }}>Last Updated</td>\n <td>\n {activeMatch.store.updatedAt\n ? new Date(\n activeMatch.store.updatedAt as number,\n ).toLocaleTimeString()\n : 'N/A'}\n </td>\n </tr>\n </tbody>\n </table>\n </div>\n <div\n style={{\n background: theme.backgroundAlt,\n padding: '.5em',\n position: 'sticky',\n top: 0,\n bottom: 0,\n zIndex: 1,\n }}\n >\n Actions\n </div>\n <div\n style={{\n padding: '0.5em',\n }}\n >\n <Button\n type=\"button\"\n onClick={() => {\n activeMatch.invalidate()\n }}\n style={{\n background: theme.warning,\n color: theme.inputTextColor,\n }}\n >\n Invalidate\n </Button>{' '}\n <Button\n type=\"button\"\n onClick={() => activeMatch.load()}\n style={{\n background: theme.gray,\n }}\n >\n Reload\n </Button>\n </div>\n <div\n style={{\n background: theme.backgroundAlt,\n padding: '.5em',\n position: 'sticky',\n top: 0,\n bottom: 0,\n zIndex: 1,\n }}\n >\n Explorer\n </div>\n <div\n style={{\n padding: '.5em',\n }}\n >\n <Explorer\n label=\"Match\"\n value={activeMatch}\n defaultExpanded={{}}\n />\n </div>\n </ActivePanel>\n ) : null}\n <div\n style={{\n flex: '1 1 500px',\n minHeight: '40%',\n maxHeight: '100%',\n overflow: 'auto',\n borderRight: `1px solid ${theme.grayAlt}`,\n display: 'flex',\n flexDirection: 'column',\n }}\n >\n <div\n style={{\n padding: '.5em',\n background: theme.backgroundAlt,\n position: 'sticky',\n top: 0,\n bottom: 0,\n zIndex: 1,\n }}\n >\n All Loader Data\n </div>\n <div\n style={{\n padding: '.5em',\n }}\n >\n {Object.keys(\n last(router.store.currentMatches)?.store.loaderData || {},\n ).length ? (\n <Explorer\n value={\n last(router.store.currentMatches)?.store.loaderData || {}\n }\n defaultExpanded={Object.keys(\n (last(router.store.currentMatches)?.store.loaderData as {}) ||\n {},\n ).reduce((obj: any, next) => {\n obj[next] = {}\n return obj\n }, {})}\n />\n ) : (\n <em style={{ opacity: 0.5 }}>{'{ }'}</em>\n )}\n </div>\n <div\n style={{\n padding: '.5em',\n background: theme.backgroundAlt,\n position: 'sticky',\n top: 0,\n bottom: 0,\n zIndex: 1,\n }}\n >\n Search Params\n </div>\n <div\n style={{\n padding: '.5em',\n }}\n >\n {Object.keys(last(router.store.currentMatches)?.store.search || {})\n .length ? (\n <Explorer\n value={last(router.store.currentMatches)?.store.search || {}}\n defaultExpanded={Object.keys(\n (last(router.store.currentMatches)?.store.search as {}) || {},\n ).reduce((obj: any, next) => {\n obj[next] = {}\n return obj\n }, {})}\n />\n ) : (\n <em style={{ opacity: 0.5 }}>{'{ }'}</em>\n )}\n </div>\n </div>\n </Panel>\n </ThemeProvider>\n )\n})\n"],"names":["isServer","window","Logo","props","React","style","display","alignItems","flexDirection","fontSize","fontWeight","lineHeight","letterSpacing","backgroundImage","WebkitBackgroundClip","color","marginRight","TanStackRouterDevtools","initialIsOpen","panelProps","closeButtonProps","toggleButtonProps","position","containerElement","Container","router","rootRef","useRef","panelRef","isOpen","setIsOpen","useLocalStorage","devtoolsHeight","setDevtoolsHeight","isResolvedOpen","setIsResolvedOpen","useSafeState","isResizing","setIsResizing","isMounted","useIsMounted","handleDragStart","panelElement","startEvent","button","dragInfo","originalHeight","getBoundingClientRect","height","pageY","run","moveEvent","delta","newHeight","unsub","document","removeEventListener","addEventListener","useEffect","ref","current","handlePanelTransitionStart","visibility","handlePanelTransitionEnd","previousValue","parentElement","paddingBottom","containerHeight","panelStyle","otherPanelProps","closeButtonStyle","onClick","onCloseClick","otherCloseButtonProps","toggleButtonStyle","onToggleClick","otherToggleButtonProps","ThemeProvider","theme","_extends","bottom","right","zIndex","width","maxHeight","boxShadow","borderTop","gray","transformOrigin","transition","opacity","pointerEvents","transform","e","Button","margin","left","appearance","background","border","padding","cursor","top","TanStackRouterDevtoolsPanel","forwardRef","userRouter","routerContextValue","useContext","routerContext","invariant","useRouterStore","activeRouteId","setActiveRouteId","activeMatchId","setActiveMatchId","activeMatch","Object","values","store","matchCache","find","d","match","matchId","currentMatches","routeId","matchCacheValues","multiSortBy","keys","filter","key","cacheEntry","gc","Date","now","map","isFetching","updatedAt","Panel","__html","backgroundAlt","marginBottom","flex","minHeight","overflow","borderRight","grayAlt","justifyContent","gap","overflowY","Explorer","i","borderBottom","undefined","marginLeft","getStatusColor","borderRadius","Code","pendingMatches","length","marginTop","setStore","s","formatDistanceStrict","addSuffix","ActivePanel","JSON","stringify","status","isInvalid","toString","toLocaleTimeString","invalidate","warning","inputTextColor","load","last","loaderData","reduce","obj","next","search"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"devtools.js","sources":["../../src/devtools.tsx"],"sourcesContent":["import React from 'react'\nimport {\n Router,\n last,\n routerContext,\n invariant,\n useRouterStore,\n} from '@tanstack/react-router'\nimport { formatDistanceStrict } from 'date-fns'\n\nimport useLocalStorage from './useLocalStorage'\nimport {\n getStatusColor,\n multiSortBy,\n useIsMounted,\n useSafeState,\n} from './utils'\nimport { Panel, Button, Code, ActivePanel } from './styledComponents'\nimport { ThemeProvider, defaultTheme as theme } from './theme'\n// import { getQueryStatusLabel, getQueryStatusColor } from './utils'\nimport Explorer from './Explorer'\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?: Router<any, any, any>\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?: Router<any, any, any>\n}\n\nconst isServer = typeof window === 'undefined'\n\nfunction Logo(props: React.HTMLProps<HTMLDivElement>) {\n return (\n <div\n {...props}\n style={{\n ...(props.style ?? {}),\n display: 'flex',\n alignItems: 'center',\n flexDirection: 'column',\n fontSize: '0.8rem',\n fontWeight: 'bolder',\n lineHeight: '1',\n }}\n >\n <div\n style={{\n letterSpacing: '-0.05rem',\n }}\n >\n TANSTACK\n </div>\n <div\n style={{\n backgroundImage:\n 'linear-gradient(to right, var(--tw-gradient-stops))',\n // @ts-ignore\n '--tw-gradient-from': '#84cc16',\n '--tw-gradient-stops':\n 'var(--tw-gradient-from), var(--tw-gradient-to)',\n '--tw-gradient-to': '#10b981',\n WebkitBackgroundClip: 'text',\n color: 'transparent',\n letterSpacing: '0.1rem',\n marginRight: '-0.2rem',\n }}\n >\n ROUTER\n </div>\n </div>\n )\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 rootRef = React.useRef<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 React.useEffect(() => {\n setIsResolvedOpen(isOpen ?? false)\n }, [isOpen, isResolvedOpen, setIsResolvedOpen])\n\n // Toggle panel visibility before/after transition (depending on direction).\n // Prevents focusing in a closed panel.\n React.useEffect(() => {\n const ref = panelRef.current\n\n if (ref) {\n const handlePanelTransitionStart = () => {\n if (ref && isResolvedOpen) {\n ref.style.visibility = 'visible'\n }\n }\n\n const handlePanelTransitionEnd = () => {\n if (ref && !isResolvedOpen) {\n ref.style.visibility = 'hidden'\n }\n }\n\n ref.addEventListener('transitionstart', handlePanelTransitionStart)\n ref.addEventListener('transitionend', handlePanelTransitionEnd)\n\n return () => {\n ref.removeEventListener('transitionstart', handlePanelTransitionStart)\n ref.removeEventListener('transitionend', handlePanelTransitionEnd)\n }\n }\n\n return\n }, [isResolvedOpen])\n\n React[isServer ? 'useEffect' : 'useLayoutEffect'](() => {\n if (isResolvedOpen) {\n const previousValue = rootRef.current?.parentElement?.style.paddingBottom\n\n const run = () => {\n const containerHeight = panelRef.current?.getBoundingClientRect().height\n if (rootRef.current?.parentElement) {\n rootRef.current.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 (\n rootRef.current?.parentElement &&\n typeof previousValue === 'string'\n ) {\n rootRef.current.parentElement.style.paddingBottom = previousValue\n }\n }\n }\n }\n return\n }, [isResolvedOpen])\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 return (\n <Container ref={rootRef} className=\"TanStackRouterDevtools\">\n <ThemeProvider theme={theme}>\n <TanStackRouterDevtoolsPanel\n ref={panelRef as any}\n {...otherPanelProps}\n router={router}\n style={{\n position: 'fixed',\n bottom: '0',\n right: '0',\n zIndex: 99999,\n width: '100%',\n height: devtoolsHeight ?? 500,\n maxHeight: '90%',\n boxShadow: '0 0 20px rgba(0,0,0,.3)',\n borderTop: `1px solid ${theme.gray}`,\n transformOrigin: 'top',\n // visibility will be toggled after transitions, but set initial state here\n visibility: isOpen ? 'visible' : 'hidden',\n ...panelStyle,\n ...(isResizing\n ? {\n transition: `none`,\n }\n : { transition: `all .2s ease` }),\n ...(isResolvedOpen\n ? {\n opacity: 1,\n pointerEvents: 'all',\n transform: `translateY(0) scale(1)`,\n }\n : {\n opacity: 0,\n pointerEvents: 'none',\n transform: `translateY(15px) scale(1.02)`,\n }),\n }}\n isOpen={isResolvedOpen}\n setIsOpen={setIsOpen}\n handleDragStart={(e) => handleDragStart(panelRef.current, e)}\n />\n {isResolvedOpen ? (\n <Button\n type=\"button\"\n aria-label=\"Close TanStack Router Devtools\"\n {...(otherCloseButtonProps as any)}\n onClick={(e) => {\n setIsOpen(false)\n onCloseClick && onCloseClick(e)\n }}\n style={{\n position: 'fixed',\n zIndex: 99999,\n margin: '.5em',\n bottom: 0,\n ...(position === 'top-right'\n ? {\n right: '0',\n }\n : position === 'top-left'\n ? {\n left: '0',\n }\n : position === 'bottom-right'\n ? {\n right: '0',\n }\n : {\n left: '0',\n }),\n ...closeButtonStyle,\n }}\n >\n Close\n </Button>\n ) : null}\n </ThemeProvider>\n {!isResolvedOpen ? (\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 style={{\n appearance: 'none',\n background: 'none',\n border: 0,\n padding: 0,\n position: 'fixed',\n zIndex: 99999,\n display: 'inline-flex',\n fontSize: '1.5em',\n margin: '.5em',\n cursor: 'pointer',\n width: 'fit-content',\n ...(position === 'top-right'\n ? {\n top: '0',\n right: '0',\n }\n : position === 'top-left'\n ? {\n top: '0',\n left: '0',\n }\n : position === 'bottom-right'\n ? {\n bottom: '0',\n right: '0',\n }\n : {\n bottom: '0',\n left: '0',\n }),\n ...toggleButtonStyle,\n }}\n >\n <Logo aria-hidden />\n </button>\n ) : null}\n </Container>\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 routerContextValue = React.useContext(routerContext)\n const router = userRouter ?? routerContextValue?.router\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 useRouterStore()\n\n const [activeRouteId, setActiveRouteId] = useLocalStorage(\n 'tanstackRouterDevtoolsActiveRouteId',\n '',\n )\n\n const [activeMatchId, setActiveMatchId] = useLocalStorage(\n 'tanstackRouterDevtoolsActiveMatchId',\n '',\n )\n\n React.useEffect(() => {\n setActiveMatchId('')\n }, [activeRouteId])\n\n const activeMatch =\n Object.values(router.store.state.matchCache)?.find(\n (d) => d.match.id === activeMatchId,\n )?.match ??\n router.store.state.currentMatches?.find((d) => d.route.id === activeRouteId)\n\n const matchCacheValues = multiSortBy(\n Object.keys(router.store.state.matchCache)\n .filter((key) => {\n const cacheEntry = router.store.state.matchCache[key]!\n return cacheEntry.gc > Date.now()\n })\n .map((key) => router.store.state.matchCache[key]!),\n [\n (d) => (d.match.store.state.isFetching ? -1 : 1),\n (d) => -d.match.store.state.updatedAt!,\n ],\n )\n\n return (\n <ThemeProvider theme={theme}>\n <Panel ref={ref} className=\"TanStackRouterDevtoolsPanel\" {...panelProps}>\n <style\n dangerouslySetInnerHTML={{\n __html: `\n\n .TanStackRouterDevtoolsPanel * {\n scrollbar-color: ${theme.backgroundAlt} ${theme.gray};\n }\n\n .TanStackRouterDevtoolsPanel *::-webkit-scrollbar, .TanStackRouterDevtoolsPanel scrollbar {\n width: 1em;\n height: 1em;\n }\n\n .TanStackRouterDevtoolsPanel *::-webkit-scrollbar-track, .TanStackRouterDevtoolsPanel scrollbar-track {\n background: ${theme.backgroundAlt};\n }\n\n .TanStackRouterDevtoolsPanel *::-webkit-scrollbar-thumb, .TanStackRouterDevtoolsPanel scrollbar-thumb {\n background: ${theme.gray};\n border-radius: .5em;\n border: 3px solid ${theme.backgroundAlt};\n }\n\n .TanStackRouterDevtoolsPanel table {\n width: 100%;\n }\n\n .TanStackRouterDevtoolsPanel table tr {\n border-bottom: 2px dotted rgba(255, 255, 255, .2);\n }\n\n .TanStackRouterDevtoolsPanel table tr:last-child {\n border-bottom: none\n }\n\n .TanStackRouterDevtoolsPanel table td {\n padding: .25rem .5rem;\n border-right: 2px dotted rgba(255, 255, 255, .05);\n }\n\n .TanStackRouterDevtoolsPanel table td:last-child {\n border-right: none\n }\n\n `,\n }}\n />\n <div\n style={{\n position: 'absolute',\n left: 0,\n top: 0,\n width: '100%',\n height: '4px',\n marginBottom: '-4px',\n cursor: 'row-resize',\n zIndex: 100000,\n }}\n onMouseDown={handleDragStart}\n ></div>\n <div\n style={{\n flex: '1 1 500px',\n minHeight: '40%',\n maxHeight: '100%',\n overflow: 'auto',\n borderRight: `1px solid ${theme.grayAlt}`,\n display: 'flex',\n flexDirection: 'column',\n }}\n >\n <div\n style={{\n display: 'flex',\n justifyContent: 'start',\n gap: '1rem',\n padding: '1rem',\n alignItems: 'center',\n background: theme.backgroundAlt,\n }}\n >\n <Logo aria-hidden />\n <div\n style={{\n fontSize: 'clamp(.8rem, 2vw, 1.3rem)',\n fontWeight: 'bold',\n }}\n >\n <span\n style={{\n fontWeight: 100,\n }}\n >\n Devtools\n </span>\n </div>\n </div>\n <div\n style={{\n overflowY: 'auto',\n flex: '1',\n }}\n >\n <div\n style={{\n padding: '.5em',\n }}\n >\n <Explorer label=\"Router\" value={router} defaultExpanded={{}} />\n </div>\n </div>\n </div>\n <div\n style={{\n flex: '1 1 500px',\n minHeight: '40%',\n maxHeight: '100%',\n overflow: 'auto',\n borderRight: `1px solid ${theme.grayAlt}`,\n display: 'flex',\n flexDirection: 'column',\n }}\n >\n <div\n style={{\n padding: '.5em',\n background: theme.backgroundAlt,\n position: 'sticky',\n top: 0,\n zIndex: 1,\n }}\n >\n Active Matches\n </div>\n {router.store.state.currentMatches.map((match, i) => {\n return (\n <div\n key={match.route.id || i}\n role=\"button\"\n aria-label={`Open match details for ${match.route.id}`}\n onClick={() =>\n setActiveRouteId(\n activeRouteId === match.route.id ? '' : match.route.id,\n )\n }\n style={{\n display: 'flex',\n borderBottom: `solid 1px ${theme.grayAlt}`,\n cursor: 'pointer',\n alignItems: 'center',\n background:\n match === activeMatch ? 'rgba(255,255,255,.1)' : undefined,\n }}\n >\n <div\n style={{\n flex: '0 0 auto',\n width: '1.3rem',\n height: '1.3rem',\n marginLeft: '.25rem',\n background: getStatusColor(match, theme),\n alignItems: 'center',\n justifyContent: 'center',\n fontWeight: 'bold',\n borderRadius: '.25rem',\n transition: 'all .2s ease-out',\n }}\n />\n\n <Code\n style={{\n padding: '.5em',\n }}\n >\n {`${match.id}`}\n </Code>\n </div>\n )\n })}\n {router.store.state.pendingMatches?.length ? (\n <>\n <div\n style={{\n marginTop: '2rem',\n padding: '.5em',\n background: theme.backgroundAlt,\n position: 'sticky',\n top: 0,\n zIndex: 1,\n }}\n >\n Pending Matches\n </div>\n {router.store.state.pendingMatches?.map((match, i) => {\n return (\n <div\n key={match.route.id || i}\n role=\"button\"\n aria-label={`Open match details for ${match.route.id}`}\n onClick={() =>\n setActiveRouteId(\n activeRouteId === match.route.id ? '' : match.route.id,\n )\n }\n style={{\n display: 'flex',\n borderBottom: `solid 1px ${theme.grayAlt}`,\n cursor: 'pointer',\n background:\n match === activeMatch\n ? 'rgba(255,255,255,.1)'\n : undefined,\n }}\n >\n <div\n style={{\n flex: '0 0 auto',\n width: '1.3rem',\n height: '1.3rem',\n marginLeft: '.25rem',\n background: getStatusColor(match, theme),\n alignItems: 'center',\n justifyContent: 'center',\n fontWeight: 'bold',\n borderRadius: '.25rem',\n transition: 'all .2s ease-out',\n }}\n />\n\n <Code\n style={{\n padding: '.5em',\n }}\n >\n {`${match.id}`}\n </Code>\n </div>\n )\n })}\n </>\n ) : null}\n {matchCacheValues.length ? (\n <>\n <div\n style={{\n marginTop: '2rem',\n padding: '.5em',\n background: theme.backgroundAlt,\n position: 'sticky',\n top: 0,\n bottom: 0,\n zIndex: 1,\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'space-between',\n }}\n >\n <div>Match Cache</div>\n <Button\n onClick={() => {\n router.store.setState((s) => (s.matchCache = {}))\n }}\n >\n Clear\n </Button>\n </div>\n {matchCacheValues.map((d, i) => {\n const { match, gc } = d\n\n return (\n <div\n key={match.id || i}\n role=\"button\"\n aria-label={`Open match details for ${match.id}`}\n onClick={() =>\n setActiveMatchId(\n activeMatchId === match.id ? '' : match.id,\n )\n }\n style={{\n display: 'flex',\n borderBottom: `solid 1px ${theme.grayAlt}`,\n cursor: 'pointer',\n background:\n match === activeMatch\n ? 'rgba(255,255,255,.1)'\n : undefined,\n }}\n >\n <div\n style={{\n display: 'flex',\n flexDirection: 'column',\n padding: '.5rem',\n gap: '.3rem',\n }}\n >\n <div\n style={{\n display: 'flex',\n alignItems: 'center',\n gap: '.5rem',\n }}\n >\n <div\n style={{\n flex: '0 0 auto',\n width: '1.3rem',\n height: '1.3rem',\n background: getStatusColor(match, theme),\n alignItems: 'center',\n justifyContent: 'center',\n fontWeight: 'bold',\n borderRadius: '.25rem',\n transition: 'all .2s ease-out',\n }}\n />\n <Code>{`${match.id}`}</Code>\n </div>\n <span\n style={{\n fontSize: '.7rem',\n opacity: '.5',\n lineHeight: 1,\n }}\n >\n Expires{' '}\n {formatDistanceStrict(new Date(gc), new Date(), {\n addSuffix: true,\n })}\n </span>\n </div>\n </div>\n )\n })}\n </>\n ) : null}\n </div>\n\n {activeMatch ? (\n <ActivePanel>\n <div\n style={{\n padding: '.5em',\n background: theme.backgroundAlt,\n position: 'sticky',\n top: 0,\n bottom: 0,\n zIndex: 1,\n }}\n >\n Match Details\n </div>\n <div>\n <table>\n <tbody>\n <tr>\n <td style={{ opacity: '.5' }}>ID</td>\n <td>\n <Code\n style={{\n lineHeight: '1.8em',\n }}\n >\n {JSON.stringify(activeMatch.id, null, 2)}\n </Code>\n </td>\n </tr>\n <tr>\n <td style={{ opacity: '.5' }}>Status</td>\n <td>{activeMatch.store.state.status}</td>\n </tr>\n <tr>\n <td style={{ opacity: '.5' }}>Invalid</td>\n <td>{activeMatch.getIsInvalid().toString()}</td>\n </tr>\n <tr>\n <td style={{ opacity: '.5' }}>Last Updated</td>\n <td>\n {activeMatch.store.state.updatedAt\n ? new Date(\n activeMatch.store.state.updatedAt as number,\n ).toLocaleTimeString()\n : 'N/A'}\n </td>\n </tr>\n </tbody>\n </table>\n </div>\n <div\n style={{\n background: theme.backgroundAlt,\n padding: '.5em',\n position: 'sticky',\n top: 0,\n bottom: 0,\n zIndex: 1,\n }}\n >\n Actions\n </div>\n <div\n style={{\n padding: '0.5em',\n }}\n >\n <Button\n type=\"button\"\n onClick={() => {\n activeMatch.invalidate()\n }}\n style={{\n background: theme.warning,\n color: theme.inputTextColor,\n }}\n >\n Invalidate\n </Button>{' '}\n <Button\n type=\"button\"\n onClick={() => activeMatch.load()}\n style={{\n background: theme.gray,\n }}\n >\n Reload\n </Button>\n </div>\n <div\n style={{\n background: theme.backgroundAlt,\n padding: '.5em',\n position: 'sticky',\n top: 0,\n bottom: 0,\n zIndex: 1,\n }}\n >\n Explorer\n </div>\n <div\n style={{\n padding: '.5em',\n }}\n >\n <Explorer\n label=\"Match\"\n value={activeMatch}\n defaultExpanded={{}}\n />\n </div>\n </ActivePanel>\n ) : null}\n <div\n style={{\n flex: '1 1 500px',\n minHeight: '40%',\n maxHeight: '100%',\n overflow: 'auto',\n borderRight: `1px solid ${theme.grayAlt}`,\n display: 'flex',\n flexDirection: 'column',\n }}\n >\n <div\n style={{\n padding: '.5em',\n background: theme.backgroundAlt,\n position: 'sticky',\n top: 0,\n bottom: 0,\n zIndex: 1,\n }}\n >\n All Loader Data\n </div>\n <div\n style={{\n padding: '.5em',\n }}\n >\n {Object.keys(\n last(router.store.state.currentMatches)?.store.state.loaderData ||\n {},\n ).length ? (\n <Explorer\n value={\n last(router.store.state.currentMatches)?.store.state\n .loaderData || {}\n }\n defaultExpanded={Object.keys(\n (last(router.store.state.currentMatches)?.store.state\n .loaderData as {}) || {},\n ).reduce((obj: any, next) => {\n obj[next] = {}\n return obj\n }, {})}\n />\n ) : (\n <em style={{ opacity: 0.5 }}>{'{ }'}</em>\n )}\n </div>\n <div\n style={{\n padding: '.5em',\n background: theme.backgroundAlt,\n position: 'sticky',\n top: 0,\n bottom: 0,\n zIndex: 1,\n }}\n >\n Search Params\n </div>\n <div\n style={{\n padding: '.5em',\n }}\n >\n {Object.keys(\n last(router.store.state.currentMatches)?.store.state.search || {},\n ).length ? (\n <Explorer\n value={\n last(router.store.state.currentMatches)?.store.state.search ||\n {}\n }\n defaultExpanded={Object.keys(\n (last(router.store.state.currentMatches)?.store.state\n .search as {}) || {},\n ).reduce((obj: any, next) => {\n obj[next] = {}\n return obj\n }, {})}\n />\n ) : (\n <em style={{ opacity: 0.5 }}>{'{ }'}</em>\n )}\n </div>\n </div>\n </Panel>\n </ThemeProvider>\n )\n})\n"],"names":["isServer","window","Logo","props","React","style","display","alignItems","flexDirection","fontSize","fontWeight","lineHeight","letterSpacing","backgroundImage","WebkitBackgroundClip","color","marginRight","TanStackRouterDevtools","initialIsOpen","panelProps","closeButtonProps","toggleButtonProps","position","containerElement","Container","router","rootRef","useRef","panelRef","isOpen","setIsOpen","useLocalStorage","devtoolsHeight","setDevtoolsHeight","isResolvedOpen","setIsResolvedOpen","useSafeState","isResizing","setIsResizing","isMounted","useIsMounted","handleDragStart","panelElement","startEvent","button","dragInfo","originalHeight","getBoundingClientRect","height","pageY","run","moveEvent","delta","newHeight","unsub","document","removeEventListener","addEventListener","useEffect","ref","current","handlePanelTransitionStart","visibility","handlePanelTransitionEnd","previousValue","parentElement","paddingBottom","containerHeight","panelStyle","otherPanelProps","closeButtonStyle","onClick","onCloseClick","otherCloseButtonProps","toggleButtonStyle","onToggleClick","otherToggleButtonProps","ThemeProvider","theme","_extends","bottom","right","zIndex","width","maxHeight","boxShadow","borderTop","gray","transformOrigin","transition","opacity","pointerEvents","transform","e","Button","margin","left","appearance","background","border","padding","cursor","top","TanStackRouterDevtoolsPanel","forwardRef","userRouter","routerContextValue","useContext","routerContext","invariant","useRouterStore","activeRouteId","setActiveRouteId","activeMatchId","setActiveMatchId","activeMatch","Object","values","store","state","matchCache","find","d","match","id","currentMatches","route","matchCacheValues","multiSortBy","keys","filter","key","cacheEntry","gc","Date","now","map","isFetching","updatedAt","Panel","__html","backgroundAlt","marginBottom","flex","minHeight","overflow","borderRight","grayAlt","justifyContent","gap","overflowY","Explorer","i","borderBottom","undefined","marginLeft","getStatusColor","borderRadius","Code","pendingMatches","length","marginTop","setState","s","formatDistanceStrict","addSuffix","ActivePanel","JSON","stringify","status","getIsInvalid","toString","toLocaleTimeString","invalidate","warning","inputTextColor","load","last","loaderData","reduce","obj","next","search"],"mappings":"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"}
|
|
@@ -71,38 +71,6 @@ const Button = utils.styled('button', (props, theme) => ({
|
|
|
71
71
|
const Code = utils.styled('code', {
|
|
72
72
|
fontSize: '.9em'
|
|
73
73
|
});
|
|
74
|
-
utils.styled('input', (_props, theme) => ({
|
|
75
|
-
backgroundColor: theme.inputBackgroundColor,
|
|
76
|
-
border: 0,
|
|
77
|
-
borderRadius: '.2em',
|
|
78
|
-
color: theme.inputTextColor,
|
|
79
|
-
fontSize: '.9em',
|
|
80
|
-
lineHeight: `1.3`,
|
|
81
|
-
padding: '.3em .4em'
|
|
82
|
-
}));
|
|
83
|
-
utils.styled('select', (_props, theme) => ({
|
|
84
|
-
display: `inline-block`,
|
|
85
|
-
fontSize: `.9em`,
|
|
86
|
-
fontFamily: `sans-serif`,
|
|
87
|
-
fontWeight: 'normal',
|
|
88
|
-
lineHeight: `1.3`,
|
|
89
|
-
padding: `.3em 1.5em .3em .5em`,
|
|
90
|
-
height: 'auto',
|
|
91
|
-
border: 0,
|
|
92
|
-
borderRadius: `.2em`,
|
|
93
|
-
appearance: `none`,
|
|
94
|
-
WebkitAppearance: 'none',
|
|
95
|
-
backgroundColor: theme.inputBackgroundColor,
|
|
96
|
-
backgroundImage: `url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='100' height='100' fill='%23444444'><polygon points='0,25 100,25 50,75'/></svg>")`,
|
|
97
|
-
backgroundRepeat: `no-repeat`,
|
|
98
|
-
backgroundPosition: `right .55em center`,
|
|
99
|
-
backgroundSize: `.65em auto, 100%`,
|
|
100
|
-
color: theme.inputTextColor
|
|
101
|
-
}), {
|
|
102
|
-
'(max-width: 500px)': {
|
|
103
|
-
display: 'none'
|
|
104
|
-
}
|
|
105
|
-
});
|
|
106
74
|
|
|
107
75
|
exports.ActivePanel = ActivePanel;
|
|
108
76
|
exports.Button = Button;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"styledComponents.js","sources":["../../src/styledComponents.ts"],"sourcesContent":["import { styled } from './utils'\n\nexport const Panel = styled(\n 'div',\n (_props, theme) => ({\n fontSize: 'clamp(12px, 1.5vw, 14px)',\n fontFamily: `sans-serif`,\n display: 'flex',\n backgroundColor: theme.background,\n color: theme.foreground,\n }),\n {\n '(max-width: 700px)': {\n flexDirection: 'column',\n },\n '(max-width: 600px)': {\n fontSize: '.9em',\n // flexDirection: 'column',\n },\n },\n)\n\nexport const ActivePanel = styled(\n 'div',\n () => ({\n flex: '1 1 500px',\n display: 'flex',\n flexDirection: 'column',\n overflow: 'auto',\n height: '100%',\n }),\n {\n '(max-width: 700px)': (_props, theme) => ({\n borderTop: `2px solid ${theme.gray}`,\n }),\n },\n)\n\nexport const Button = styled('button', (props, theme) => ({\n appearance: 'none',\n fontSize: '.9em',\n fontWeight: 'bold',\n background: theme.gray,\n border: '0',\n borderRadius: '.3em',\n color: 'white',\n padding: '.5em',\n opacity: props.disabled ? '.5' : undefined,\n cursor: 'pointer',\n}))\n\n// export const QueryKeys = styled('span', {\n// display: 'inline-block',\n// fontSize: '0.9em',\n// })\n\n// export const QueryKey = styled('span', {\n// display: 'inline-flex',\n// alignItems: 'center',\n// padding: '.2em .4em',\n// fontWeight: 'bold',\n// textShadow: '0 0 10px black',\n// borderRadius: '.2em',\n// })\n\nexport const Code = styled('code', {\n fontSize: '.9em',\n})\n\nexport const Input = styled('input', (_props, theme) => ({\n backgroundColor: theme.inputBackgroundColor,\n border: 0,\n borderRadius: '.2em',\n color: theme.inputTextColor,\n fontSize: '.9em',\n lineHeight: `1.3`,\n padding: '.3em .4em',\n}))\n\nexport const Select = styled(\n 'select',\n (_props, theme) => ({\n display: `inline-block`,\n fontSize: `.9em`,\n fontFamily: `sans-serif`,\n fontWeight: 'normal',\n lineHeight: `1.3`,\n padding: `.3em 1.5em .3em .5em`,\n height: 'auto',\n border: 0,\n borderRadius: `.2em`,\n appearance: `none`,\n WebkitAppearance: 'none',\n backgroundColor: theme.inputBackgroundColor,\n backgroundImage: `url(\"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='100' height='100' fill='%23444444'><polygon points='0,25 100,25 50,75'/></svg>\")`,\n backgroundRepeat: `no-repeat`,\n backgroundPosition: `right .55em center`,\n backgroundSize: `.65em auto, 100%`,\n color: theme.inputTextColor,\n }),\n {\n '(max-width: 500px)': {\n display: 'none',\n },\n },\n)\n"],"names":["Panel","styled","_props","theme","fontSize","fontFamily","display","backgroundColor","background","color","foreground","flexDirection","ActivePanel","flex","overflow","height","borderTop","gray","Button","props","appearance","fontWeight","border","borderRadius","padding","opacity","disabled","undefined","cursor","Code"
|
|
1
|
+
{"version":3,"file":"styledComponents.js","sources":["../../src/styledComponents.ts"],"sourcesContent":["import { styled } from './utils'\n\nexport const Panel = styled(\n 'div',\n (_props, theme) => ({\n fontSize: 'clamp(12px, 1.5vw, 14px)',\n fontFamily: `sans-serif`,\n display: 'flex',\n backgroundColor: theme.background,\n color: theme.foreground,\n }),\n {\n '(max-width: 700px)': {\n flexDirection: 'column',\n },\n '(max-width: 600px)': {\n fontSize: '.9em',\n // flexDirection: 'column',\n },\n },\n)\n\nexport const ActivePanel = styled(\n 'div',\n () => ({\n flex: '1 1 500px',\n display: 'flex',\n flexDirection: 'column',\n overflow: 'auto',\n height: '100%',\n }),\n {\n '(max-width: 700px)': (_props, theme) => ({\n borderTop: `2px solid ${theme.gray}`,\n }),\n },\n)\n\nexport const Button = styled('button', (props, theme) => ({\n appearance: 'none',\n fontSize: '.9em',\n fontWeight: 'bold',\n background: theme.gray,\n border: '0',\n borderRadius: '.3em',\n color: 'white',\n padding: '.5em',\n opacity: props.disabled ? '.5' : undefined,\n cursor: 'pointer',\n}))\n\n// export const QueryKeys = styled('span', {\n// display: 'inline-block',\n// fontSize: '0.9em',\n// })\n\n// export const QueryKey = styled('span', {\n// display: 'inline-flex',\n// alignItems: 'center',\n// padding: '.2em .4em',\n// fontWeight: 'bold',\n// textShadow: '0 0 10px black',\n// borderRadius: '.2em',\n// })\n\nexport const Code = styled('code', {\n fontSize: '.9em',\n})\n\nexport const Input = styled('input', (_props, theme) => ({\n backgroundColor: theme.inputBackgroundColor,\n border: 0,\n borderRadius: '.2em',\n color: theme.inputTextColor,\n fontSize: '.9em',\n lineHeight: `1.3`,\n padding: '.3em .4em',\n}))\n\nexport const Select = styled(\n 'select',\n (_props, theme) => ({\n display: `inline-block`,\n fontSize: `.9em`,\n fontFamily: `sans-serif`,\n fontWeight: 'normal',\n lineHeight: `1.3`,\n padding: `.3em 1.5em .3em .5em`,\n height: 'auto',\n border: 0,\n borderRadius: `.2em`,\n appearance: `none`,\n WebkitAppearance: 'none',\n backgroundColor: theme.inputBackgroundColor,\n backgroundImage: `url(\"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='100' height='100' fill='%23444444'><polygon points='0,25 100,25 50,75'/></svg>\")`,\n backgroundRepeat: `no-repeat`,\n backgroundPosition: `right .55em center`,\n backgroundSize: `.65em auto, 100%`,\n color: theme.inputTextColor,\n }),\n {\n '(max-width: 500px)': {\n display: 'none',\n },\n },\n)\n"],"names":["Panel","styled","_props","theme","fontSize","fontFamily","display","backgroundColor","background","color","foreground","flexDirection","ActivePanel","flex","overflow","height","borderTop","gray","Button","props","appearance","fontWeight","border","borderRadius","padding","opacity","disabled","undefined","cursor","Code"],"mappings":";;;;;;;;;;;;;;;;AAEO,MAAMA,KAAK,GAAGC,YAAM,CACzB,KAAK,EACL,CAACC,MAAM,EAAEC,KAAK,MAAM;AAClBC,EAAAA,QAAQ,EAAE,0BAA0B;AACpCC,EAAAA,UAAU,EAAG,CAAW,UAAA,CAAA;AACxBC,EAAAA,OAAO,EAAE,MAAM;EACfC,eAAe,EAAEJ,KAAK,CAACK,UAAU;EACjCC,KAAK,EAAEN,KAAK,CAACO,UAAAA;AACf,CAAC,CAAC,EACF;AACE,EAAA,oBAAoB,EAAE;AACpBC,IAAAA,aAAa,EAAE,QAAA;GAChB;AACD,EAAA,oBAAoB,EAAE;AACpBP,IAAAA,QAAQ,EAAE,MAAA;AACV;AACF,GAAA;AACF,CAAC,EACF;;MAEYQ,WAAW,GAAGX,YAAM,CAC/B,KAAK,EACL,OAAO;AACLY,EAAAA,IAAI,EAAE,WAAW;AACjBP,EAAAA,OAAO,EAAE,MAAM;AACfK,EAAAA,aAAa,EAAE,QAAQ;AACvBG,EAAAA,QAAQ,EAAE,MAAM;AAChBC,EAAAA,MAAM,EAAE,MAAA;AACV,CAAC,CAAC,EACF;AACE,EAAA,oBAAoB,EAAE,CAACb,MAAM,EAAEC,KAAK,MAAM;AACxCa,IAAAA,SAAS,EAAG,CAAA,UAAA,EAAYb,KAAK,CAACc,IAAK,CAAA,CAAA;GACpC,CAAA;AACH,CAAC,EACF;AAEM,MAAMC,MAAM,GAAGjB,YAAM,CAAC,QAAQ,EAAE,CAACkB,KAAK,EAAEhB,KAAK,MAAM;AACxDiB,EAAAA,UAAU,EAAE,MAAM;AAClBhB,EAAAA,QAAQ,EAAE,MAAM;AAChBiB,EAAAA,UAAU,EAAE,MAAM;EAClBb,UAAU,EAAEL,KAAK,CAACc,IAAI;AACtBK,EAAAA,MAAM,EAAE,GAAG;AACXC,EAAAA,YAAY,EAAE,MAAM;AACpBd,EAAAA,KAAK,EAAE,OAAO;AACde,EAAAA,OAAO,EAAE,MAAM;AACfC,EAAAA,OAAO,EAAEN,KAAK,CAACO,QAAQ,GAAG,IAAI,GAAGC,SAAS;AAC1CC,EAAAA,MAAM,EAAE,SAAA;AACV,CAAC,CAAC,EAAC;;AAEH;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;MAEaC,IAAI,GAAG5B,YAAM,CAAC,MAAM,EAAE;AACjCG,EAAAA,QAAQ,EAAE,MAAA;AACZ,CAAC;;;;;;;"}
|
package/build/cjs/theme.js
CHANGED
|
@@ -33,11 +33,10 @@ const defaultTheme = {
|
|
|
33
33
|
warning: '#ffb200'
|
|
34
34
|
};
|
|
35
35
|
const ThemeContext = /*#__PURE__*/React__default["default"].createContext(defaultTheme);
|
|
36
|
-
function ThemeProvider(
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
} = _ref;
|
|
36
|
+
function ThemeProvider({
|
|
37
|
+
theme,
|
|
38
|
+
...rest
|
|
39
|
+
}) {
|
|
41
40
|
return /*#__PURE__*/React__default["default"].createElement(ThemeContext.Provider, _rollupPluginBabelHelpers["extends"]({
|
|
42
41
|
value: theme
|
|
43
42
|
}, rest));
|
package/build/cjs/theme.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"theme.js","sources":["../../src/theme.tsx"],"sourcesContent":["import React from 'react'\n\nexport const defaultTheme = {\n background: '#0b1521',\n backgroundAlt: '#132337',\n foreground: 'white',\n gray: '#3f4e60',\n grayAlt: '#222e3e',\n inputBackgroundColor: '#fff',\n inputTextColor: '#000',\n success: '#00ab52',\n danger: '#ff0085',\n active: '#006bff',\n warning: '#ffb200',\n} as const\n\nexport type Theme = typeof defaultTheme\ninterface ProviderProps {\n theme: Theme\n children?: React.ReactNode\n}\n\nconst ThemeContext = React.createContext(defaultTheme)\n\nexport function ThemeProvider({ theme, ...rest }: ProviderProps) {\n return <ThemeContext.Provider value={theme} {...rest} />\n}\n\nexport function useTheme() {\n return React.useContext(ThemeContext)\n}\n"],"names":["defaultTheme","background","backgroundAlt","foreground","gray","grayAlt","inputBackgroundColor","inputTextColor","success","danger","active","warning","ThemeContext","React","createContext","ThemeProvider","theme","rest","_extends","useTheme","useContext"],"mappings":";;;;;;;;;;;;;;;;;;;;;AAEO,MAAMA,YAAY,GAAG;AAC1BC,EAAAA,UAAU,EAAE,SAAS;AACrBC,EAAAA,aAAa,EAAE,SAAS;AACxBC,EAAAA,UAAU,EAAE,OAAO;AACnBC,EAAAA,IAAI,EAAE,SAAS;AACfC,EAAAA,OAAO,EAAE,SAAS;AAClBC,EAAAA,oBAAoB,EAAE,MAAM;AAC5BC,EAAAA,cAAc,EAAE,MAAM;AACtBC,EAAAA,OAAO,EAAE,SAAS;AAClBC,EAAAA,MAAM,EAAE,SAAS;AACjBC,EAAAA,MAAM,EAAE,SAAS;AACjBC,EAAAA,OAAO,EAAE,SAAA;AACX,EAAU;AAQV,MAAMC,YAAY,gBAAGC,yBAAK,CAACC,aAAa,CAACd,YAAY,CAAC,CAAA;AAE/C,SAASe,aAAa,
|
|
1
|
+
{"version":3,"file":"theme.js","sources":["../../src/theme.tsx"],"sourcesContent":["import React from 'react'\n\nexport const defaultTheme = {\n background: '#0b1521',\n backgroundAlt: '#132337',\n foreground: 'white',\n gray: '#3f4e60',\n grayAlt: '#222e3e',\n inputBackgroundColor: '#fff',\n inputTextColor: '#000',\n success: '#00ab52',\n danger: '#ff0085',\n active: '#006bff',\n warning: '#ffb200',\n} as const\n\nexport type Theme = typeof defaultTheme\ninterface ProviderProps {\n theme: Theme\n children?: React.ReactNode\n}\n\nconst ThemeContext = React.createContext(defaultTheme)\n\nexport function ThemeProvider({ theme, ...rest }: ProviderProps) {\n return <ThemeContext.Provider value={theme} {...rest} />\n}\n\nexport function useTheme() {\n return React.useContext(ThemeContext)\n}\n"],"names":["defaultTheme","background","backgroundAlt","foreground","gray","grayAlt","inputBackgroundColor","inputTextColor","success","danger","active","warning","ThemeContext","React","createContext","ThemeProvider","theme","rest","_extends","useTheme","useContext"],"mappings":";;;;;;;;;;;;;;;;;;;;;AAEO,MAAMA,YAAY,GAAG;AAC1BC,EAAAA,UAAU,EAAE,SAAS;AACrBC,EAAAA,aAAa,EAAE,SAAS;AACxBC,EAAAA,UAAU,EAAE,OAAO;AACnBC,EAAAA,IAAI,EAAE,SAAS;AACfC,EAAAA,OAAO,EAAE,SAAS;AAClBC,EAAAA,oBAAoB,EAAE,MAAM;AAC5BC,EAAAA,cAAc,EAAE,MAAM;AACtBC,EAAAA,OAAO,EAAE,SAAS;AAClBC,EAAAA,MAAM,EAAE,SAAS;AACjBC,EAAAA,MAAM,EAAE,SAAS;AACjBC,EAAAA,OAAO,EAAE,SAAA;AACX,EAAU;AAQV,MAAMC,YAAY,gBAAGC,yBAAK,CAACC,aAAa,CAACd,YAAY,CAAC,CAAA;AAE/C,SAASe,aAAa,CAAC;EAAEC,KAAK;EAAE,GAAGC,IAAAA;AAAoB,CAAC,EAAE;EAC/D,oBAAOJ,yBAAA,CAAA,aAAA,CAAC,YAAY,CAAC,QAAQ,EAAAK,oCAAA,CAAA;AAAC,IAAA,KAAK,EAAEF,KAAAA;AAAM,GAAA,EAAKC,IAAI,CAAI,CAAA,CAAA;AAC1D,CAAA;AAEO,SAASE,QAAQ,GAAG;AACzB,EAAA,OAAON,yBAAK,CAACO,UAAU,CAACR,YAAY,CAAC,CAAA;AACvC;;;;;;"}
|
|
@@ -38,12 +38,9 @@ function useMediaQuery(query) {
|
|
|
38
38
|
const matcher = window.matchMedia(query);
|
|
39
39
|
|
|
40
40
|
// Create our handler
|
|
41
|
-
const onChange =
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
} = _ref;
|
|
45
|
-
return setIsMatch(matches);
|
|
46
|
-
};
|
|
41
|
+
const onChange = ({
|
|
42
|
+
matches
|
|
43
|
+
}) => setIsMatch(matches);
|
|
47
44
|
|
|
48
45
|
// Listen for changes
|
|
49
46
|
matcher.addListener(onChange);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useMediaQuery.js","sources":["../../src/useMediaQuery.ts"],"sourcesContent":["import React from 'react'\n\nexport default function useMediaQuery(query: string): boolean | undefined {\n // Keep track of the preference in state, start with the current match\n const [isMatch, setIsMatch] = React.useState(() => {\n if (typeof window !== 'undefined') {\n return window.matchMedia && window.matchMedia(query).matches\n }\n return\n })\n\n // Watch for changes\n React.useEffect(() => {\n if (typeof window !== 'undefined') {\n if (!window.matchMedia) {\n return\n }\n\n // Create a matcher\n const matcher = window.matchMedia(query)\n\n // Create our handler\n const onChange = ({ matches }: { matches: boolean }) =>\n setIsMatch(matches)\n\n // Listen for changes\n matcher.addListener(onChange)\n\n return () => {\n // Stop listening for changes\n matcher.removeListener(onChange)\n }\n }\n\n return\n }, [isMatch, query, setIsMatch])\n\n return isMatch\n}\n"],"names":["useMediaQuery","query","isMatch","setIsMatch","React","useState","window","matchMedia","matches","useEffect","matcher","onChange","addListener","removeListener"],"mappings":";;;;;;;;;;;;;;;;;;;;AAEe,SAASA,aAAa,CAACC,KAAa,EAAuB;AACxE;EACA,MAAM,CAACC,OAAO,EAAEC,UAAU,CAAC,GAAGC,yBAAK,CAACC,QAAQ,CAAC,MAAM;AACjD,IAAA,IAAI,OAAOC,MAAM,KAAK,WAAW,EAAE;MACjC,OAAOA,MAAM,CAACC,UAAU,IAAID,MAAM,CAACC,UAAU,CAACN,KAAK,CAAC,CAACO,OAAO,CAAA;AAC9D,KAAA;AACA,IAAA,OAAA;AACF,GAAC,CAAC,CAAA;;AAEF;EACAJ,yBAAK,CAACK,SAAS,CAAC,MAAM;AACpB,IAAA,IAAI,OAAOH,MAAM,KAAK,WAAW,EAAE;AACjC,MAAA,IAAI,CAACA,MAAM,CAACC,UAAU,EAAE;AACtB,QAAA,OAAA;AACF,OAAA;;AAEA;AACA,MAAA,MAAMG,OAAO,GAAGJ,MAAM,CAACC,UAAU,CAACN,KAAK,CAAC,CAAA;;AAExC;
|
|
1
|
+
{"version":3,"file":"useMediaQuery.js","sources":["../../src/useMediaQuery.ts"],"sourcesContent":["import React from 'react'\n\nexport default function useMediaQuery(query: string): boolean | undefined {\n // Keep track of the preference in state, start with the current match\n const [isMatch, setIsMatch] = React.useState(() => {\n if (typeof window !== 'undefined') {\n return window.matchMedia && window.matchMedia(query).matches\n }\n return\n })\n\n // Watch for changes\n React.useEffect(() => {\n if (typeof window !== 'undefined') {\n if (!window.matchMedia) {\n return\n }\n\n // Create a matcher\n const matcher = window.matchMedia(query)\n\n // Create our handler\n const onChange = ({ matches }: { matches: boolean }) =>\n setIsMatch(matches)\n\n // Listen for changes\n matcher.addListener(onChange)\n\n return () => {\n // Stop listening for changes\n matcher.removeListener(onChange)\n }\n }\n\n return\n }, [isMatch, query, setIsMatch])\n\n return isMatch\n}\n"],"names":["useMediaQuery","query","isMatch","setIsMatch","React","useState","window","matchMedia","matches","useEffect","matcher","onChange","addListener","removeListener"],"mappings":";;;;;;;;;;;;;;;;;;;;AAEe,SAASA,aAAa,CAACC,KAAa,EAAuB;AACxE;EACA,MAAM,CAACC,OAAO,EAAEC,UAAU,CAAC,GAAGC,yBAAK,CAACC,QAAQ,CAAC,MAAM;AACjD,IAAA,IAAI,OAAOC,MAAM,KAAK,WAAW,EAAE;MACjC,OAAOA,MAAM,CAACC,UAAU,IAAID,MAAM,CAACC,UAAU,CAACN,KAAK,CAAC,CAACO,OAAO,CAAA;AAC9D,KAAA;AACA,IAAA,OAAA;AACF,GAAC,CAAC,CAAA;;AAEF;EACAJ,yBAAK,CAACK,SAAS,CAAC,MAAM;AACpB,IAAA,IAAI,OAAOH,MAAM,KAAK,WAAW,EAAE;AACjC,MAAA,IAAI,CAACA,MAAM,CAACC,UAAU,EAAE;AACtB,QAAA,OAAA;AACF,OAAA;;AAEA;AACA,MAAA,MAAMG,OAAO,GAAGJ,MAAM,CAACC,UAAU,CAACN,KAAK,CAAC,CAAA;;AAExC;MACA,MAAMU,QAAQ,GAAG,CAAC;AAAEH,QAAAA,OAAAA;AAA8B,OAAC,KACjDL,UAAU,CAACK,OAAO,CAAC,CAAA;;AAErB;AACAE,MAAAA,OAAO,CAACE,WAAW,CAACD,QAAQ,CAAC,CAAA;AAE7B,MAAA,OAAO,MAAM;AACX;AACAD,QAAAA,OAAO,CAACG,cAAc,CAACF,QAAQ,CAAC,CAAA;OACjC,CAAA;AACH,KAAA;AAEA,IAAA,OAAA;GACD,EAAE,CAACT,OAAO,EAAED,KAAK,EAAEE,UAAU,CAAC,CAAC,CAAA;AAEhC,EAAA,OAAOD,OAAO,CAAA;AAChB;;;;"}
|
package/build/cjs/utils.js
CHANGED
|
@@ -22,7 +22,7 @@ var React__default = /*#__PURE__*/_interopDefaultLegacy(React);
|
|
|
22
22
|
|
|
23
23
|
const isServer = typeof window === 'undefined';
|
|
24
24
|
function getStatusColor(match, theme) {
|
|
25
|
-
return match.store.isFetching ? theme.active : match.store.status === 'error' ? theme.danger : match.store.status === 'success' ? theme.success : theme.gray;
|
|
25
|
+
return match.store.state.isFetching ? theme.active : match.store.state.status === 'error' ? theme.danger : match.store.state.status === 'success' ? theme.success : theme.gray;
|
|
26
26
|
}
|
|
27
27
|
|
|
28
28
|
// export function getQueryStatusLabel(query: Query) {
|
|
@@ -35,18 +35,13 @@ function getStatusColor(match, theme) {
|
|
|
35
35
|
// : 'fresh'
|
|
36
36
|
// }
|
|
37
37
|
|
|
38
|
-
function styled(type, newStyles, queries) {
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
let {
|
|
44
|
-
style,
|
|
45
|
-
...rest
|
|
46
|
-
} = _ref;
|
|
38
|
+
function styled(type, newStyles, queries = {}) {
|
|
39
|
+
return /*#__PURE__*/React__default["default"].forwardRef(({
|
|
40
|
+
style,
|
|
41
|
+
...rest
|
|
42
|
+
}, ref) => {
|
|
47
43
|
const theme$1 = theme.useTheme();
|
|
48
|
-
const mediaStyles = Object.entries(queries).reduce((current,
|
|
49
|
-
let [key, value] = _ref2;
|
|
44
|
+
const mediaStyles = Object.entries(queries).reduce((current, [key, value]) => {
|
|
50
45
|
// eslint-disable-next-line react-hooks/rules-of-hooks
|
|
51
46
|
return useMediaQuery["default"](key) ? {
|
|
52
47
|
...current,
|
|
@@ -113,13 +108,8 @@ function scheduleMicrotask(callback) {
|
|
|
113
108
|
throw error;
|
|
114
109
|
}));
|
|
115
110
|
}
|
|
116
|
-
function multiSortBy(arr, accessors) {
|
|
117
|
-
|
|
118
|
-
accessors = [d => d];
|
|
119
|
-
}
|
|
120
|
-
return arr.map((d, i) => [d, i]).sort((_ref3, _ref4) => {
|
|
121
|
-
let [a, ai] = _ref3;
|
|
122
|
-
let [b, bi] = _ref4;
|
|
111
|
+
function multiSortBy(arr, accessors = [d => d]) {
|
|
112
|
+
return arr.map((d, i) => [d, i]).sort(([a, ai], [b, bi]) => {
|
|
123
113
|
for (const accessor of accessors) {
|
|
124
114
|
const ao = accessor(a);
|
|
125
115
|
const bo = accessor(b);
|
|
@@ -135,10 +125,7 @@ function multiSortBy(arr, accessors) {
|
|
|
135
125
|
return ao > bo ? 1 : -1;
|
|
136
126
|
}
|
|
137
127
|
return ai - bi;
|
|
138
|
-
}).map(
|
|
139
|
-
let [d] = _ref5;
|
|
140
|
-
return d;
|
|
141
|
-
});
|
|
128
|
+
}).map(([d]) => d);
|
|
142
129
|
}
|
|
143
130
|
|
|
144
131
|
exports.displayValue = displayValue;
|
package/build/cjs/utils.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.js","sources":["../../src/utils.ts"],"sourcesContent":["import React from 'react'\nimport { RouteMatch } from '@tanstack/react-router'\n\nimport { Theme, useTheme } from './theme'\nimport useMediaQuery from './useMediaQuery'\n\nexport const isServer = typeof window === 'undefined'\n\ntype StyledComponent<T> = T extends 'button'\n ? React.DetailedHTMLProps<\n React.ButtonHTMLAttributes<HTMLButtonElement>,\n HTMLButtonElement\n >\n : T extends 'input'\n ? React.DetailedHTMLProps<\n React.InputHTMLAttributes<HTMLInputElement>,\n HTMLInputElement\n >\n : T extends 'select'\n ? React.DetailedHTMLProps<\n React.SelectHTMLAttributes<HTMLSelectElement>,\n HTMLSelectElement\n >\n : T extends keyof HTMLElementTagNameMap\n ? React.HTMLAttributes<HTMLElementTagNameMap[T]>\n : never\n\nexport function getStatusColor(match: RouteMatch, theme: Theme) {\n return match.store.isFetching\n ? theme.active\n : match.store.status === 'error'\n ? theme.danger\n : match.store.status === 'success'\n ? theme.success\n : theme.gray\n}\n\n// export function getQueryStatusLabel(query: Query) {\n// return query.state.isFetching\n// ? 'fetching'\n// : !query.getObserversCount()\n// ? 'inactive'\n// : query.isStale()\n// ? 'stale'\n// : 'fresh'\n// }\n\ntype Styles =\n | React.CSSProperties\n | ((props: Record<string, any>, theme: Theme) => React.CSSProperties)\n\nexport function styled<T extends keyof HTMLElementTagNameMap>(\n type: T,\n newStyles: Styles,\n queries: Record<string, Styles> = {},\n) {\n return React.forwardRef<HTMLElementTagNameMap[T], StyledComponent<T>>(\n ({ style, ...rest }, ref) => {\n const theme = useTheme()\n\n const mediaStyles = Object.entries(queries).reduce(\n (current, [key, value]) => {\n // eslint-disable-next-line react-hooks/rules-of-hooks\n return useMediaQuery(key)\n ? {\n ...current,\n ...(typeof value === 'function' ? value(rest, theme) : value),\n }\n : current\n },\n {},\n )\n\n return React.createElement(type, {\n ...rest,\n style: {\n ...(typeof newStyles === 'function'\n ? newStyles(rest, theme)\n : newStyles),\n ...style,\n ...mediaStyles,\n },\n ref,\n })\n },\n )\n}\n\nexport function useIsMounted() {\n const mountedRef = React.useRef(false)\n const isMounted = React.useCallback(() => mountedRef.current, [])\n\n React[isServer ? 'useEffect' : 'useLayoutEffect'](() => {\n mountedRef.current = true\n return () => {\n mountedRef.current = false\n }\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\n return JSON.stringify(newValue, name)\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] = React.useState(initialState)\n\n const safeSetState = React.useCallback(\n (value: T) => {\n scheduleMicrotask(() => {\n if (isMounted()) {\n setState(value)\n }\n })\n },\n [isMounted],\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: T[],\n accessors: ((item: T) => any)[] = [(d) => d],\n): 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"],"names":["isServer","window","getStatusColor","match","theme","store","isFetching","active","status","danger","success","gray","styled","type","newStyles","queries","React","forwardRef","
|
|
1
|
+
{"version":3,"file":"utils.js","sources":["../../src/utils.ts"],"sourcesContent":["import React from 'react'\nimport { RouteMatch } from '@tanstack/react-router'\n\nimport { Theme, useTheme } from './theme'\nimport useMediaQuery from './useMediaQuery'\n\nexport const isServer = typeof window === 'undefined'\n\ntype StyledComponent<T> = T extends 'button'\n ? React.DetailedHTMLProps<\n React.ButtonHTMLAttributes<HTMLButtonElement>,\n HTMLButtonElement\n >\n : T extends 'input'\n ? React.DetailedHTMLProps<\n React.InputHTMLAttributes<HTMLInputElement>,\n HTMLInputElement\n >\n : T extends 'select'\n ? React.DetailedHTMLProps<\n React.SelectHTMLAttributes<HTMLSelectElement>,\n HTMLSelectElement\n >\n : T extends keyof HTMLElementTagNameMap\n ? React.HTMLAttributes<HTMLElementTagNameMap[T]>\n : never\n\nexport function getStatusColor(match: RouteMatch, theme: Theme) {\n return match.store.state.isFetching\n ? theme.active\n : match.store.state.status === 'error'\n ? theme.danger\n : match.store.state.status === 'success'\n ? theme.success\n : theme.gray\n}\n\n// export function getQueryStatusLabel(query: Query) {\n// return query.state.isFetching\n// ? 'fetching'\n// : !query.getObserversCount()\n// ? 'inactive'\n// : query.isStale()\n// ? 'stale'\n// : 'fresh'\n// }\n\ntype Styles =\n | React.CSSProperties\n | ((props: Record<string, any>, theme: Theme) => React.CSSProperties)\n\nexport function styled<T extends keyof HTMLElementTagNameMap>(\n type: T,\n newStyles: Styles,\n queries: Record<string, Styles> = {},\n) {\n return React.forwardRef<HTMLElementTagNameMap[T], StyledComponent<T>>(\n ({ style, ...rest }, ref) => {\n const theme = useTheme()\n\n const mediaStyles = Object.entries(queries).reduce(\n (current, [key, value]) => {\n // eslint-disable-next-line react-hooks/rules-of-hooks\n return useMediaQuery(key)\n ? {\n ...current,\n ...(typeof value === 'function' ? value(rest, theme) : value),\n }\n : current\n },\n {},\n )\n\n return React.createElement(type, {\n ...rest,\n style: {\n ...(typeof newStyles === 'function'\n ? newStyles(rest, theme)\n : newStyles),\n ...style,\n ...mediaStyles,\n },\n ref,\n })\n },\n )\n}\n\nexport function useIsMounted() {\n const mountedRef = React.useRef(false)\n const isMounted = React.useCallback(() => mountedRef.current, [])\n\n React[isServer ? 'useEffect' : 'useLayoutEffect'](() => {\n mountedRef.current = true\n return () => {\n mountedRef.current = false\n }\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\n return JSON.stringify(newValue, name)\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] = React.useState(initialState)\n\n const safeSetState = React.useCallback(\n (value: T) => {\n scheduleMicrotask(() => {\n if (isMounted()) {\n setState(value)\n }\n })\n },\n [isMounted],\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: T[],\n accessors: ((item: T) => any)[] = [(d) => d],\n): 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"],"names":["isServer","window","getStatusColor","match","theme","store","state","isFetching","active","status","danger","success","gray","styled","type","newStyles","queries","React","forwardRef","style","rest","ref","useTheme","mediaStyles","Object","entries","reduce","current","key","value","useMediaQuery","createElement","useIsMounted","mountedRef","useRef","isMounted","useCallback","displayValue","name","getOwnPropertyNames","newValue","toString","JSON","stringify","useSafeState","initialState","setState","useState","safeSetState","scheduleMicrotask","callback","Promise","resolve","then","catch","error","setTimeout","multiSortBy","arr","accessors","d","map","i","sort","a","ai","b","bi","accessor","ao","bo"],"mappings":"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"}
|