@tanstack/router-devtools-core 1.132.37 → 1.132.44
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/dist/cjs/node_modules/.pnpm/solid-js@1.9.5/node_modules/solid-js/dist/solid.cjs +792 -0
- package/dist/cjs/node_modules/.pnpm/solid-js@1.9.5/node_modules/solid-js/dist/solid.cjs.map +1 -0
- package/dist/cjs/node_modules/.pnpm/solid-js@1.9.5/node_modules/solid-js/web/dist/web.cjs +675 -0
- package/dist/cjs/node_modules/.pnpm/solid-js@1.9.5/node_modules/solid-js/web/dist/web.cjs.map +1 -0
- package/dist/cjs/{AgeTicker.cjs → packages/router-devtools-core/src/AgeTicker.cjs} +3 -2
- package/dist/cjs/packages/router-devtools-core/src/AgeTicker.cjs.map +1 -0
- package/dist/cjs/{BaseTanStackRouterDevtoolsPanel.cjs → packages/router-devtools-core/src/BaseTanStackRouterDevtoolsPanel.cjs} +66 -66
- package/dist/cjs/packages/router-devtools-core/src/BaseTanStackRouterDevtoolsPanel.cjs.map +1 -0
- package/dist/cjs/{Explorer.cjs → packages/router-devtools-core/src/Explorer.cjs} +27 -27
- package/dist/cjs/packages/router-devtools-core/src/Explorer.cjs.map +1 -0
- package/dist/cjs/{FloatingTanStackRouterDevtools.cjs → packages/router-devtools-core/src/FloatingTanStackRouterDevtools.cjs} +19 -19
- package/dist/cjs/packages/router-devtools-core/src/FloatingTanStackRouterDevtools.cjs.map +1 -0
- package/dist/cjs/{NavigateButton.cjs → packages/router-devtools-core/src/NavigateButton.cjs} +3 -2
- package/dist/cjs/packages/router-devtools-core/src/NavigateButton.cjs.map +1 -0
- package/dist/cjs/{TanStackRouterDevtoolsCore.cjs → packages/router-devtools-core/src/TanStackRouterDevtoolsCore.cjs} +7 -7
- package/dist/cjs/packages/router-devtools-core/src/TanStackRouterDevtoolsCore.cjs.map +1 -0
- package/dist/cjs/{TanStackRouterDevtoolsPanelCore.cjs → packages/router-devtools-core/src/TanStackRouterDevtoolsPanelCore.cjs} +10 -10
- package/dist/cjs/packages/router-devtools-core/src/TanStackRouterDevtoolsPanelCore.cjs.map +1 -0
- package/dist/cjs/{context.cjs → packages/router-devtools-core/src/context.cjs} +4 -4
- package/dist/cjs/packages/router-devtools-core/src/context.cjs.map +1 -0
- package/dist/cjs/{logo.cjs → packages/router-devtools-core/src/logo.cjs} +3 -3
- package/dist/cjs/packages/router-devtools-core/src/logo.cjs.map +1 -0
- package/dist/cjs/packages/router-devtools-core/src/tokens.cjs.map +1 -0
- package/dist/cjs/{useLocalStorage.cjs → packages/router-devtools-core/src/useLocalStorage.cjs} +3 -3
- package/dist/cjs/packages/router-devtools-core/src/useLocalStorage.cjs.map +1 -0
- package/dist/cjs/{useStyles.cjs → packages/router-devtools-core/src/useStyles.cjs} +3 -3
- package/dist/cjs/packages/router-devtools-core/src/useStyles.cjs.map +1 -0
- package/dist/cjs/{utils.cjs → packages/router-devtools-core/src/utils.cjs} +3 -4
- package/dist/cjs/packages/router-devtools-core/src/utils.cjs.map +1 -0
- package/dist/esm/node_modules/.pnpm/solid-js@1.9.5/node_modules/solid-js/dist/solid.js +792 -0
- package/dist/esm/node_modules/.pnpm/solid-js@1.9.5/node_modules/solid-js/dist/solid.js.map +1 -0
- package/dist/esm/node_modules/.pnpm/solid-js@1.9.5/node_modules/solid-js/web/dist/web.js +676 -0
- package/dist/esm/node_modules/.pnpm/solid-js@1.9.5/node_modules/solid-js/web/dist/web.js.map +1 -0
- package/dist/esm/{AgeTicker.js → packages/router-devtools-core/src/AgeTicker.js} +3 -2
- package/dist/esm/packages/router-devtools-core/src/AgeTicker.js.map +1 -0
- package/dist/esm/{BaseTanStackRouterDevtoolsPanel.js → packages/router-devtools-core/src/BaseTanStackRouterDevtoolsPanel.js} +33 -33
- package/dist/esm/packages/router-devtools-core/src/BaseTanStackRouterDevtoolsPanel.js.map +1 -0
- package/dist/esm/{Explorer.js → packages/router-devtools-core/src/Explorer.js} +15 -15
- package/dist/esm/packages/router-devtools-core/src/Explorer.js.map +1 -0
- package/dist/esm/{FloatingTanStackRouterDevtools.js → packages/router-devtools-core/src/FloatingTanStackRouterDevtools.js} +3 -3
- package/dist/esm/packages/router-devtools-core/src/FloatingTanStackRouterDevtools.js.map +1 -0
- package/dist/esm/{NavigateButton.js → packages/router-devtools-core/src/NavigateButton.js} +3 -2
- package/dist/esm/packages/router-devtools-core/src/NavigateButton.js.map +1 -0
- package/dist/esm/{TanStackRouterDevtoolsCore.js → packages/router-devtools-core/src/TanStackRouterDevtoolsCore.js} +2 -2
- package/dist/esm/packages/router-devtools-core/src/TanStackRouterDevtoolsCore.js.map +1 -0
- package/dist/esm/{TanStackRouterDevtoolsPanelCore.js → packages/router-devtools-core/src/TanStackRouterDevtoolsPanelCore.js} +3 -3
- package/dist/esm/packages/router-devtools-core/src/TanStackRouterDevtoolsPanelCore.js.map +1 -0
- package/dist/esm/{context.js → packages/router-devtools-core/src/context.js} +1 -1
- package/dist/esm/packages/router-devtools-core/src/context.js.map +1 -0
- package/dist/esm/{logo.js → packages/router-devtools-core/src/logo.js} +2 -2
- package/dist/esm/packages/router-devtools-core/src/logo.js.map +1 -0
- package/dist/esm/packages/router-devtools-core/src/tokens.js.map +1 -0
- package/dist/esm/{useLocalStorage.js → packages/router-devtools-core/src/useLocalStorage.js} +1 -1
- package/dist/esm/packages/router-devtools-core/src/useLocalStorage.js.map +1 -0
- package/dist/esm/{useStyles.js → packages/router-devtools-core/src/useStyles.js} +1 -1
- package/dist/esm/packages/router-devtools-core/src/useStyles.js.map +1 -0
- package/dist/esm/{utils.js → packages/router-devtools-core/src/utils.js} +1 -2
- package/dist/esm/packages/router-devtools-core/src/utils.js.map +1 -0
- package/package.json +7 -8
- package/dist/cjs/AgeTicker.cjs.map +0 -1
- package/dist/cjs/BaseTanStackRouterDevtoolsPanel.cjs.map +0 -1
- package/dist/cjs/Explorer.cjs.map +0 -1
- package/dist/cjs/FloatingTanStackRouterDevtools.cjs.map +0 -1
- package/dist/cjs/NavigateButton.cjs.map +0 -1
- package/dist/cjs/TanStackRouterDevtoolsCore.cjs.map +0 -1
- package/dist/cjs/TanStackRouterDevtoolsPanelCore.cjs.map +0 -1
- package/dist/cjs/context.cjs.map +0 -1
- package/dist/cjs/logo.cjs.map +0 -1
- package/dist/cjs/tokens.cjs.map +0 -1
- package/dist/cjs/useLocalStorage.cjs.map +0 -1
- package/dist/cjs/useStyles.cjs.map +0 -1
- package/dist/cjs/utils.cjs.map +0 -1
- package/dist/esm/AgeTicker.js.map +0 -1
- package/dist/esm/BaseTanStackRouterDevtoolsPanel.js.map +0 -1
- package/dist/esm/Explorer.js.map +0 -1
- package/dist/esm/FloatingTanStackRouterDevtools.js.map +0 -1
- package/dist/esm/NavigateButton.js.map +0 -1
- package/dist/esm/TanStackRouterDevtoolsCore.js.map +0 -1
- package/dist/esm/TanStackRouterDevtoolsPanelCore.js.map +0 -1
- package/dist/esm/context.js.map +0 -1
- package/dist/esm/logo.js.map +0 -1
- package/dist/esm/tokens.js.map +0 -1
- package/dist/esm/useLocalStorage.js.map +0 -1
- package/dist/esm/useStyles.js.map +0 -1
- package/dist/esm/utils.js.map +0 -1
- /package/dist/cjs/{index.cjs → packages/router-devtools-core/src/index.cjs} +0 -0
- /package/dist/cjs/{index.cjs.map → packages/router-devtools-core/src/index.cjs.map} +0 -0
- /package/dist/cjs/{tokens.cjs → packages/router-devtools-core/src/tokens.cjs} +0 -0
- /package/dist/esm/{index.js → packages/router-devtools-core/src/index.js} +0 -0
- /package/dist/esm/{index.js.map → packages/router-devtools-core/src/index.js.map} +0 -0
- /package/dist/esm/{tokens.js → packages/router-devtools-core/src/tokens.js} +0 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"BaseTanStackRouterDevtoolsPanel.cjs","sources":["../../../../../src/BaseTanStackRouterDevtoolsPanel.tsx"],"sourcesContent":["import { clsx as cx } from 'clsx'\nimport { default as invariant } from 'tiny-invariant'\nimport { interpolatePath, rootRouteId, trimPath } from '@tanstack/router-core'\nimport { Show, createMemo, createSignal, onCleanup } from 'solid-js'\nimport { useDevtoolsOnClose } from './context'\nimport { useStyles } from './useStyles'\nimport useLocalStorage from './useLocalStorage'\nimport { Explorer } from './Explorer'\nimport { getRouteStatusColor, getStatusColor, multiSortBy } from './utils'\nimport { AgeTicker } from './AgeTicker'\n// import type { DevtoolsPanelOptions } from './TanStackRouterDevtoolsPanel'\n\nimport { NavigateButton } from './NavigateButton'\nimport type {\n AnyContext,\n AnyRoute,\n AnyRouter,\n FileRouteTypes,\n MakeRouteMatchUnion,\n Route,\n RouterState,\n} from '@tanstack/router-core'\nimport type { Accessor, JSX } from 'solid-js'\n\nexport interface BaseDevtoolsPanelOptions {\n /**\n * The standard React style object used to style a component with inline styles\n */\n style?: Accessor<JSX.CSSProperties>\n /**\n * The standard React class property used to style a component with classes\n */\n className?: Accessor<string>\n /**\n * A boolean variable indicating whether the panel is open or closed\n */\n isOpen?: boolean\n /**\n * A function that toggles the open and close state of the panel\n */\n setIsOpen?: (isOpen: boolean) => void\n /**\n * Handles the opening and closing the devtools panel\n */\n handleDragStart?: (e: any) => void\n /**\n * A boolean variable indicating if the \"lite\" version of the library is being used\n */\n router: Accessor<AnyRouter>\n routerState: Accessor<any>\n /**\n * Use this to attach the devtool's styles to specific element in the DOM.\n */\n shadowDOMTarget?: ShadowRoot\n}\n\nfunction Logo(props: any) {\n const { className, ...rest } = props\n const styles = useStyles()\n return (\n <button {...rest} class={cx(styles().logo, className ? className() : '')}>\n <div class={styles().tanstackLogo}>TANSTACK</div>\n <div class={styles().routerLogo}>TanStack Router v1</div>\n </button>\n )\n}\n\nfunction NavigateLink(props: {\n class?: string\n left?: JSX.Element\n children?: JSX.Element\n right?: JSX.Element\n}) {\n return (\n <div\n class={props.class}\n style={{\n display: 'flex',\n 'align-items': 'center',\n width: '100%',\n }}\n >\n {props.left}\n <div style={{ 'flex-grow': 1, 'min-width': 0 }}>{props.children}</div>\n {props.right}\n </div>\n )\n}\n\nfunction RouteComp({\n routerState,\n router,\n route,\n isRoot,\n activeId,\n setActiveId,\n}: {\n routerState: Accessor<\n RouterState<\n Route<\n any,\n any,\n any,\n '/',\n '/',\n string,\n '__root__',\n undefined,\n {},\n {},\n AnyContext,\n AnyContext,\n {},\n undefined,\n any,\n FileRouteTypes,\n unknown,\n undefined\n >,\n MakeRouteMatchUnion\n >\n >\n router: Accessor<AnyRouter>\n route: AnyRoute\n isRoot?: boolean\n activeId: Accessor<string | undefined>\n setActiveId: (id: string) => void\n}) {\n const styles = useStyles()\n const matches = createMemo(\n () => routerState().pendingMatches || routerState().matches,\n )\n const match = createMemo(() =>\n routerState().matches.find((d) => d.routeId === route.id),\n )\n\n const param = createMemo(() => {\n try {\n if (match()?.params) {\n const p = match()?.params\n const r: string = route.path || trimPath(route.id)\n if (r.startsWith('$')) {\n const trimmed = r.slice(1)\n\n if (p[trimmed]) {\n return `(${p[trimmed]})`\n }\n }\n }\n return ''\n } catch (error) {\n return ''\n }\n })\n\n const navigationTarget = createMemo<string | undefined>(() => {\n if (isRoot) return undefined // rootRouteId has no path\n if (!route.path) return undefined // no path to navigate to\n\n // flatten all params in the router state, into a single object\n const allParams = Object.assign({}, ...matches().map((m) => m.params))\n\n // interpolatePath is used by router-core to generate the `to`\n // path for the navigate function in the router\n const interpolated = interpolatePath({\n path: route.fullPath,\n params: allParams,\n leaveWildcards: false,\n leaveParams: false,\n decodeCharMap: router().pathParamsDecodeCharMap,\n })\n\n // only if `interpolated` is not missing params, return the path since this\n // means that all the params are present for a successful navigation\n return !interpolated.isMissingParams\n ? interpolated.interpolatedPath\n : undefined\n })\n\n return (\n <div>\n <div\n role=\"button\"\n aria-label={`Open match details for ${route.id}`}\n onClick={() => {\n if (match()) {\n setActiveId(activeId() === route.id ? '' : route.id)\n }\n }}\n class={cx(\n styles().routesRowContainer(route.id === activeId(), !!match()),\n )}\n >\n <div\n class={cx(\n styles().matchIndicator(getRouteStatusColor(matches(), route)),\n )}\n />\n <NavigateLink\n class={cx(styles().routesRow(!!match()))}\n left={\n <Show when={navigationTarget()}>\n {(navigate) => <NavigateButton to={navigate()} router={router} />}\n </Show>\n }\n right={<AgeTicker match={match()} router={router} />}\n >\n <code class={styles().code}>\n {isRoot ? rootRouteId : route.path || trimPath(route.id)}{' '}\n </code>\n <code class={styles().routeParamInfo}>{param()}</code>\n </NavigateLink>\n </div>\n {route.children?.length ? (\n <div class={styles().nestedRouteRow(!!isRoot)}>\n {[...(route.children as Array<AnyRoute>)]\n .sort((a, b) => {\n return a.rank - b.rank\n })\n .map((r) => (\n <RouteComp\n routerState={routerState}\n router={router}\n route={r}\n activeId={activeId}\n setActiveId={setActiveId}\n />\n ))}\n </div>\n ) : null}\n </div>\n )\n}\n\nexport const BaseTanStackRouterDevtoolsPanel =\n function BaseTanStackRouterDevtoolsPanel({\n ...props\n }: BaseDevtoolsPanelOptions): JSX.Element {\n const {\n isOpen = true,\n setIsOpen,\n handleDragStart,\n router,\n routerState,\n shadowDOMTarget,\n ...panelProps\n } = props\n\n const { onCloseClick } = useDevtoolsOnClose()\n const styles = useStyles()\n const { className, style, ...otherPanelProps } = panelProps\n\n invariant(\n router,\n 'No router was found for the TanStack Router Devtools. Please place the devtools in the <RouterProvider> component tree or pass the router instance to the devtools manually.',\n )\n\n // useStore(router.__store)\n\n const [showMatches, setShowMatches] = useLocalStorage(\n 'tanstackRouterDevtoolsShowMatches',\n true,\n )\n\n const [activeId, setActiveId] = useLocalStorage(\n 'tanstackRouterDevtoolsActiveRouteId',\n '',\n )\n\n const activeMatch = createMemo(() => {\n const matches = [\n ...(routerState().pendingMatches ?? []),\n ...routerState().matches,\n ...routerState().cachedMatches,\n ]\n return matches.find(\n (d) => d.routeId === activeId() || d.id === activeId(),\n )\n })\n\n const hasSearch = createMemo(\n () => Object.keys(routerState().location.search).length,\n )\n\n const explorerState = createMemo(() => {\n return {\n ...router(),\n state: routerState(),\n }\n })\n\n const routerExplorerValue = createMemo(() =>\n Object.fromEntries(\n multiSortBy(\n Object.keys(explorerState()),\n (\n [\n 'state',\n 'routesById',\n 'routesByPath',\n 'flatRoutes',\n 'options',\n 'manifest',\n ] as const\n ).map((d) => (dd) => dd !== d),\n )\n .map((key) => [key, (explorerState() as any)[key]])\n .filter(\n (d) =>\n typeof d[1] !== 'function' &&\n ![\n '__store',\n 'basepath',\n 'injectedHtml',\n 'subscribers',\n 'latestLoadPromise',\n 'navigateTimeout',\n 'resetNextScroll',\n 'tempLocationKey',\n 'latestLocation',\n 'routeTree',\n 'history',\n ].includes(d[0]),\n ),\n ),\n )\n const activeMatchLoaderData = createMemo(() => activeMatch()?.loaderData)\n const activeMatchValue = createMemo(() => activeMatch())\n const locationSearchValue = createMemo(() => routerState().location.search)\n\n return (\n <div\n class={cx(\n styles().devtoolsPanel,\n 'TanStackRouterDevtoolsPanel',\n className ? className() : '',\n )}\n style={style ? style() : ''}\n {...otherPanelProps}\n >\n {handleDragStart ? (\n <div class={styles().dragHandle} onMouseDown={handleDragStart}></div>\n ) : null}\n <button\n class={styles().panelCloseBtn}\n onClick={(e: any) => {\n if (setIsOpen) {\n setIsOpen(false)\n }\n onCloseClick(e)\n }}\n >\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"10\"\n height=\"6\"\n fill=\"none\"\n viewBox=\"0 0 10 6\"\n class={styles().panelCloseBtnIcon}\n >\n <path\n stroke=\"currentColor\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n stroke-width=\"1.667\"\n d=\"M1 1l4 4 4-4\"\n ></path>\n </svg>\n </button>\n <div class={styles().firstContainer}>\n <div class={styles().row}>\n <Logo\n aria-hidden\n onClick={(e: any) => {\n if (setIsOpen) {\n setIsOpen(false)\n }\n onCloseClick(e)\n }}\n />\n </div>\n <div class={styles().routerExplorerContainer}>\n <div class={styles().routerExplorer}>\n <Explorer\n label=\"Router\"\n value={routerExplorerValue}\n defaultExpanded={{\n state: {} as any,\n context: {} as any,\n options: {} as any,\n }}\n filterSubEntries={(subEntries) => {\n return subEntries.filter(\n (d: any) => typeof d.value() !== 'function',\n )\n }}\n />\n </div>\n </div>\n </div>\n <div class={styles().secondContainer}>\n <div class={styles().matchesContainer}>\n <div class={styles().detailsHeader}>\n <span>Pathname</span>\n {routerState().location.maskedLocation ? (\n <div class={styles().maskedBadgeContainer}>\n <span class={styles().maskedBadge}>masked</span>\n </div>\n ) : null}\n </div>\n <div class={styles().detailsContent}>\n <code>{routerState().location.pathname}</code>\n {routerState().location.maskedLocation ? (\n <code class={styles().maskedLocation}>\n {routerState().location.maskedLocation?.pathname}\n </code>\n ) : null}\n </div>\n <div class={styles().detailsHeader}>\n <div class={styles().routeMatchesToggle}>\n <button\n type=\"button\"\n onClick={() => {\n setShowMatches(false)\n }}\n disabled={!showMatches()}\n class={cx(\n styles().routeMatchesToggleBtn(!showMatches(), true),\n )}\n >\n Routes\n </button>\n <button\n type=\"button\"\n onClick={() => {\n setShowMatches(true)\n }}\n disabled={showMatches()}\n class={cx(\n styles().routeMatchesToggleBtn(!!showMatches(), false),\n )}\n >\n Matches\n </button>\n </div>\n <div class={styles().detailsHeaderInfo}>\n <div>age / staleTime / gcTime</div>\n </div>\n </div>\n <div class={cx(styles().routesContainer)}>\n {!showMatches() ? (\n <RouteComp\n routerState={routerState}\n router={router}\n route={router().routeTree}\n isRoot\n activeId={activeId}\n setActiveId={setActiveId}\n />\n ) : (\n <div>\n {(routerState().pendingMatches?.length\n ? routerState().pendingMatches\n : routerState().matches\n )?.map((match: any, _i: any) => {\n return (\n <div\n role=\"button\"\n aria-label={`Open match details for ${match.id}`}\n onClick={() =>\n setActiveId(activeId() === match.id ? '' : match.id)\n }\n class={cx(styles().matchRow(match === activeMatch()))}\n >\n <div\n class={cx(\n styles().matchIndicator(getStatusColor(match)),\n )}\n />\n <NavigateLink\n left={\n <NavigateButton\n to={match.pathname}\n params={match.params}\n search={match.search}\n router={router}\n />\n }\n right={<AgeTicker match={match} router={router} />}\n >\n <code class={styles().matchID}>\n {`${match.routeId === rootRouteId ? rootRouteId : match.pathname}`}\n </code>\n </NavigateLink>\n </div>\n )\n })}\n </div>\n )}\n </div>\n </div>\n {routerState().cachedMatches.length ? (\n <div class={styles().cachedMatchesContainer}>\n <div class={styles().detailsHeader}>\n <div>Cached Matches</div>\n <div class={styles().detailsHeaderInfo}>\n age / staleTime / gcTime\n </div>\n </div>\n <div>\n {routerState().cachedMatches.map((match: any) => {\n return (\n <div\n role=\"button\"\n aria-label={`Open match details for ${match.id}`}\n onClick={() =>\n setActiveId(activeId() === match.id ? '' : match.id)\n }\n class={cx(styles().matchRow(match === activeMatch()))}\n >\n <div\n class={cx(\n styles().matchIndicator(getStatusColor(match)),\n )}\n />\n <NavigateLink\n left={\n <NavigateButton\n to={match.pathname}\n params={match.params}\n search={match.search}\n router={router}\n />\n }\n right={<AgeTicker match={match} router={router} />}\n >\n <code class={styles().matchID}>{`${match.id}`}</code>\n </NavigateLink>\n </div>\n )\n })}\n </div>\n </div>\n ) : null}\n </div>\n {activeMatch() && activeMatch()?.status ? (\n <div class={styles().thirdContainer}>\n <div class={styles().detailsHeader}>Match Details</div>\n <div>\n <div class={styles().matchDetails}>\n <div\n class={styles().matchStatus(\n activeMatch()?.status,\n activeMatch()?.isFetching,\n )}\n >\n <div>\n {activeMatch()?.status === 'success' &&\n activeMatch()?.isFetching\n ? 'fetching'\n : activeMatch()?.status}\n </div>\n </div>\n <div class={styles().matchDetailsInfoLabel}>\n <div>ID:</div>\n <div class={styles().matchDetailsInfo}>\n <code>{activeMatch()?.id}</code>\n </div>\n </div>\n <div class={styles().matchDetailsInfoLabel}>\n <div>State:</div>\n <div class={styles().matchDetailsInfo}>\n {routerState().pendingMatches?.find(\n (d: any) => d.id === activeMatch()?.id,\n )\n ? 'Pending'\n : routerState().matches.find(\n (d: any) => d.id === activeMatch()?.id,\n )\n ? 'Active'\n : 'Cached'}\n </div>\n </div>\n <div class={styles().matchDetailsInfoLabel}>\n <div>Last Updated:</div>\n <div class={styles().matchDetailsInfo}>\n {activeMatch()?.updatedAt\n ? new Date(activeMatch()?.updatedAt).toLocaleTimeString()\n : 'N/A'}\n </div>\n </div>\n </div>\n </div>\n {activeMatchLoaderData() ? (\n <>\n <div class={styles().detailsHeader}>Loader Data</div>\n <div class={styles().detailsContent}>\n <Explorer\n label=\"loaderData\"\n value={activeMatchLoaderData}\n defaultExpanded={{}}\n />\n </div>\n </>\n ) : null}\n <div class={styles().detailsHeader}>Explorer</div>\n <div class={styles().detailsContent}>\n <Explorer\n label=\"Match\"\n value={activeMatchValue}\n defaultExpanded={{}}\n />\n </div>\n </div>\n ) : null}\n {hasSearch() ? (\n <div class={styles().fourthContainer}>\n <div class={styles().detailsHeader}>\n <span>Search Params</span>\n {typeof navigator !== 'undefined' ? (\n <span style=\"margin-left: 0.5rem;\">\n <CopyButton\n getValue={() => {\n const search = routerState().location.search\n return JSON.stringify(search)\n }}\n />\n </span>\n ) : null}\n </div>\n <div class={styles().detailsContent}>\n <Explorer\n value={locationSearchValue}\n defaultExpanded={Object.keys(\n routerState().location.search,\n ).reduce((obj: any, next) => {\n obj[next] = {}\n return obj\n }, {})}\n />\n </div>\n </div>\n ) : null}\n </div>\n )\n }\n\nfunction CopyButton({ getValue }: { getValue: () => string }) {\n const [copied, setCopied] = createSignal(false)\n\n let timeoutId: ReturnType<typeof setTimeout> | null = null\n\n const handleCopy = async () => {\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition\n if (typeof navigator === 'undefined' || !navigator.clipboard?.writeText) {\n console.warn('TanStack Router Devtools: Clipboard API unavailable')\n return\n }\n try {\n const value = getValue()\n await navigator.clipboard.writeText(value)\n setCopied(true)\n if (timeoutId) clearTimeout(timeoutId)\n timeoutId = setTimeout(() => setCopied(false), 2500)\n } catch (e) {\n console.error('TanStack Router Devtools: Failed to copy', e)\n }\n }\n\n onCleanup(() => {\n if (timeoutId) clearTimeout(timeoutId)\n })\n\n return (\n <button\n type=\"button\"\n style=\"cursor: pointer;\"\n onClick={handleCopy}\n aria-label=\"Copy value to clipboard\"\n title={copied() ? 'Copied!' : 'Copy'}\n >\n {copied() ? '✅' : '📋'}\n </button>\n )\n}\n\nexport default BaseTanStackRouterDevtoolsPanel\n"],"names":["Logo","props","className","rest","styles","useStyles","_el$","_tmpl$","_el$2","firstChild","_el$3","nextSibling","_$spread","_$mergeProps","cx","logo","_$effect","_p$","_v$","tanstackLogo","_v$2","routerLogo","e","_$className","t","undefined","NavigateLink","_el$4","_tmpl$2","_el$5","style","setProperty","_$insert","left","children","right","class","RouteComp","routerState","router","route","isRoot","activeId","setActiveId","matches","createMemo","pendingMatches","match","find","d","routeId","id","param","params","p","r","path","trimPath","startsWith","trimmed","slice","error","navigationTarget","allParams","Object","assign","map","m","interpolated","interpolatePath","fullPath","leaveWildcards","leaveParams","decodeCharMap","pathParamsDecodeCharMap","isMissingParams","interpolatedPath","_el$6","_tmpl$5","_el$7","_el$8","$$click","_$createComponent","routesRow","Show","when","navigate","NavigateButton","to","AgeTicker","_el$9","_tmpl$3","_el$0","rootRouteId","code","_el$1","_tmpl$4","routeParamInfo","_c$","_$memo","length","_el$10","_tmpl$6","sort","a","b","rank","nestedRouteRow","_v$3","_v$4","routesRowContainer","_v$5","matchIndicator","getRouteStatusColor","_$setAttribute","BaseTanStackRouterDevtoolsPanel","isOpen","setIsOpen","handleDragStart","shadowDOMTarget","panelProps","onCloseClick","useDevtoolsOnClose","otherPanelProps","invariant","showMatches","setShowMatches","useLocalStorage","activeMatch","cachedMatches","hasSearch","keys","location","search","explorerState","state","routerExplorerValue","fromEntries","multiSortBy","dd","key","filter","includes","activeMatchLoaderData","loaderData","activeMatchValue","locationSearchValue","_el$11","_tmpl$7","_el$12","_el$13","_el$14","_el$15","_el$16","_el$17","_el$18","_el$19","_el$20","_el$22","_el$23","_el$24","_el$25","_el$26","_el$27","_el$28","_el$29","devtoolsPanel","_el$30","_$addEventListener","dragHandle","onClick","Explorer","label","value","defaultExpanded","context","options","filterSubEntries","subEntries","_c$2","maskedLocation","_el$31","_tmpl$8","_el$32","_v$22","maskedBadgeContainer","_v$23","maskedBadge","pathname","_c$3","_el$33","_c$4","routeTree","_el$34","_i","_el$35","_tmpl$9","_el$36","_el$37","matchID","_v$24","_v$25","matchRow","_v$26","getStatusColor","_c$5","_el$38","_tmpl$0","_el$39","_el$40","_el$41","_el$42","_el$43","_el$44","_el$45","_v$30","_v$31","_v$32","_v$27","cachedMatchesContainer","_v$28","detailsHeader","_v$29","detailsHeaderInfo","_c$6","status","_el$46","_tmpl$1","_el$47","_el$48","_el$49","_el$50","_el$51","_el$52","_el$53","_el$54","_el$55","_el$56","_el$57","_el$58","_el$59","_el$60","_el$61","_el$62","_el$63","_c$8","isFetching","_c$9","_c$0","updatedAt","Date","toLocaleTimeString","_c$1","_el$64","_tmpl$10","_el$65","detailsContent","_v$33","thirdContainer","_v$34","_v$35","matchDetails","_v$36","matchStatus","_v$37","matchDetailsInfoLabel","_v$38","matchDetailsInfo","_v$39","_v$40","_v$41","_v$42","_v$43","_v$44","o","i","n","s","h","l","u","_c$7","_el$66","_tmpl$11","_el$67","_el$69","navigator","_el$70","_tmpl$12","CopyButton","getValue","JSON","stringify","reduce","obj","next","_v$45","fourthContainer","_v$46","_v$47","_v$6","panelCloseBtn","_v$7","panelCloseBtnIcon","_v$8","firstContainer","_v$9","row","_v$0","routerExplorerContainer","_v$1","routerExplorer","_v$10","secondContainer","_v$11","matchesContainer","_v$12","_v$13","_v$14","_v$15","routeMatchesToggle","_v$16","_v$17","routeMatchesToggleBtn","_v$18","_v$19","_v$20","_v$21","routesContainer","c","disabled","w","f","y","g","copied","setCopied","createSignal","timeoutId","handleCopy","clipboard","writeText","console","warn","setTimeout","onCleanup","_el$71","_tmpl$13","_$delegateEvents"],"mappings":"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"}
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
3
|
-
const web = require("solid-js/web");
|
|
3
|
+
const web = require("../../../node_modules/.pnpm/solid-js@1.9.5/node_modules/solid-js/web/dist/web.cjs");
|
|
4
4
|
const clsx = require("clsx");
|
|
5
5
|
const goober = require("goober");
|
|
6
|
-
const
|
|
6
|
+
const solid = require("../../../node_modules/.pnpm/solid-js@1.9.5/node_modules/solid-js/dist/solid.cjs");
|
|
7
7
|
const tokens = require("./tokens.cjs");
|
|
8
8
|
const utils = require("./utils.cjs");
|
|
9
9
|
const context = require("./context.cjs");
|
|
@@ -32,7 +32,7 @@ const Expander = ({
|
|
|
32
32
|
const styles = useStyles();
|
|
33
33
|
return (() => {
|
|
34
34
|
var _el$ = _tmpl$(), _el$2 = _el$.firstChild;
|
|
35
|
-
|
|
35
|
+
solid.createRenderEffect((_p$) => {
|
|
36
36
|
var _v$ = styles().expander, _v$2 = clsx.clsx(styles().expanderIcon(expanded));
|
|
37
37
|
_v$ !== _p$.e && web.className(_el$, _p$.e = _v$);
|
|
38
38
|
_v$2 !== _p$.t && web.setAttribute(_el$2, "class", _p$.t = _v$2);
|
|
@@ -64,10 +64,10 @@ function Explorer({
|
|
|
64
64
|
filterSubEntries,
|
|
65
65
|
...rest
|
|
66
66
|
}) {
|
|
67
|
-
const [expanded, setExpanded] =
|
|
67
|
+
const [expanded, setExpanded] = solid.createSignal(Boolean(defaultExpanded));
|
|
68
68
|
const toggleExpanded = () => setExpanded((old) => !old);
|
|
69
|
-
const type =
|
|
70
|
-
const subEntries =
|
|
69
|
+
const type = solid.createMemo(() => typeof value());
|
|
70
|
+
const subEntries = solid.createMemo(() => {
|
|
71
71
|
let entries = [];
|
|
72
72
|
const makeProperty = (sub) => {
|
|
73
73
|
const subDefaultExpanded = defaultExpanded === true ? {
|
|
@@ -97,25 +97,25 @@ function Explorer({
|
|
|
97
97
|
}
|
|
98
98
|
return filterSubEntries ? filterSubEntries(entries) : entries;
|
|
99
99
|
});
|
|
100
|
-
const subEntryPages =
|
|
101
|
-
const [expandedPages, setExpandedPages] =
|
|
102
|
-
const [valueSnapshot, setValueSnapshot] =
|
|
100
|
+
const subEntryPages = solid.createMemo(() => chunkArray(subEntries(), pageSize));
|
|
101
|
+
const [expandedPages, setExpandedPages] = solid.createSignal([]);
|
|
102
|
+
const [valueSnapshot, setValueSnapshot] = solid.createSignal(void 0);
|
|
103
103
|
const styles = useStyles();
|
|
104
104
|
const refreshValueSnapshot = () => {
|
|
105
105
|
setValueSnapshot(value()());
|
|
106
106
|
};
|
|
107
|
-
const handleEntry = (entry) =>
|
|
107
|
+
const handleEntry = (entry) => solid.createComponent(Explorer, solid.mergeProps({
|
|
108
108
|
value,
|
|
109
109
|
filterSubEntries
|
|
110
110
|
}, rest, entry));
|
|
111
111
|
return (() => {
|
|
112
112
|
var _el$3 = _tmpl$2();
|
|
113
113
|
web.insert(_el$3, (() => {
|
|
114
|
-
var _c$ =
|
|
114
|
+
var _c$ = solid.createMemo(() => !!subEntryPages().length);
|
|
115
115
|
return () => _c$() ? [(() => {
|
|
116
116
|
var _el$4 = _tmpl$3(), _el$5 = _el$4.firstChild, _el$6 = _el$5.firstChild;
|
|
117
117
|
_el$4.$$click = () => toggleExpanded();
|
|
118
|
-
web.insert(_el$4,
|
|
118
|
+
web.insert(_el$4, solid.createComponent(Expander, {
|
|
119
119
|
get expanded() {
|
|
120
120
|
return expanded() ?? false;
|
|
121
121
|
}
|
|
@@ -124,7 +124,7 @@ function Explorer({
|
|
|
124
124
|
web.insert(_el$5, () => String(type).toLowerCase() === "iterable" ? "(Iterable) " : "", _el$6);
|
|
125
125
|
web.insert(_el$5, () => subEntries().length, _el$6);
|
|
126
126
|
web.insert(_el$5, () => subEntries().length > 1 ? `items` : `item`, null);
|
|
127
|
-
|
|
127
|
+
solid.createRenderEffect((_p$) => {
|
|
128
128
|
var _v$3 = styles().expandButton, _v$4 = styles().info;
|
|
129
129
|
_v$3 !== _p$.e && web.className(_el$4, _p$.e = _v$3);
|
|
130
130
|
_v$4 !== _p$.t && web.className(_el$5, _p$.t = _v$4);
|
|
@@ -134,10 +134,10 @@ function Explorer({
|
|
|
134
134
|
t: void 0
|
|
135
135
|
});
|
|
136
136
|
return _el$4;
|
|
137
|
-
})(),
|
|
137
|
+
})(), solid.createMemo(() => solid.createMemo(() => !!(expanded() ?? false))() ? solid.createMemo(() => subEntryPages().length === 1)() ? (() => {
|
|
138
138
|
var _el$7 = _tmpl$2();
|
|
139
139
|
web.insert(_el$7, () => subEntries().map((entry, index) => handleEntry(entry)));
|
|
140
|
-
|
|
140
|
+
solid.createRenderEffect(() => web.className(_el$7, styles().subEntries));
|
|
141
141
|
return _el$7;
|
|
142
142
|
})() : (() => {
|
|
143
143
|
var _el$8 = _tmpl$2();
|
|
@@ -146,7 +146,7 @@ function Explorer({
|
|
|
146
146
|
var _el$9 = _tmpl$4(), _el$0 = _el$9.firstChild, _el$1 = _el$0.firstChild, _el$10 = _el$1.firstChild, _el$15 = _el$10.nextSibling, _el$12 = _el$15.nextSibling, _el$16 = _el$12.nextSibling;
|
|
147
147
|
_el$16.nextSibling;
|
|
148
148
|
_el$1.$$click = () => setExpandedPages((old) => old.includes(index) ? old.filter((d) => d !== index) : [...old, index]);
|
|
149
|
-
web.insert(_el$1,
|
|
149
|
+
web.insert(_el$1, solid.createComponent(Expander, {
|
|
150
150
|
get expanded() {
|
|
151
151
|
return expandedPages().includes(index);
|
|
152
152
|
}
|
|
@@ -154,15 +154,15 @@ function Explorer({
|
|
|
154
154
|
web.insert(_el$1, index * pageSize, _el$15);
|
|
155
155
|
web.insert(_el$1, index * pageSize + pageSize - 1, _el$16);
|
|
156
156
|
web.insert(_el$0, (() => {
|
|
157
|
-
var _c$3 =
|
|
157
|
+
var _c$3 = solid.createMemo(() => !!expandedPages().includes(index));
|
|
158
158
|
return () => _c$3() ? (() => {
|
|
159
159
|
var _el$17 = _tmpl$2();
|
|
160
160
|
web.insert(_el$17, () => entries.map((entry) => handleEntry(entry)));
|
|
161
|
-
|
|
161
|
+
solid.createRenderEffect(() => web.className(_el$17, styles().subEntries));
|
|
162
162
|
return _el$17;
|
|
163
163
|
})() : null;
|
|
164
164
|
})(), null);
|
|
165
|
-
|
|
165
|
+
solid.createRenderEffect((_p$) => {
|
|
166
166
|
var _v$5 = styles().entry, _v$6 = clsx.clsx(styles().labelButton, "labelButton");
|
|
167
167
|
_v$5 !== _p$.e && web.className(_el$0, _p$.e = _v$5);
|
|
168
168
|
_v$6 !== _p$.t && web.className(_el$1, _p$.t = _v$6);
|
|
@@ -174,17 +174,17 @@ function Explorer({
|
|
|
174
174
|
return _el$9;
|
|
175
175
|
})();
|
|
176
176
|
}));
|
|
177
|
-
|
|
177
|
+
solid.createRenderEffect(() => web.className(_el$8, styles().subEntries));
|
|
178
178
|
return _el$8;
|
|
179
179
|
})() : null)] : (() => {
|
|
180
|
-
var _c$2 =
|
|
181
|
-
return () => _c$2() ?
|
|
180
|
+
var _c$2 = solid.createMemo(() => type() === "function");
|
|
181
|
+
return () => _c$2() ? solid.createComponent(Explorer, {
|
|
182
182
|
get label() {
|
|
183
183
|
return (() => {
|
|
184
184
|
var _el$18 = _tmpl$5(), _el$19 = _el$18.firstChild;
|
|
185
185
|
_el$18.$$click = refreshValueSnapshot;
|
|
186
186
|
web.insert(_el$19, () => rest.label);
|
|
187
|
-
|
|
187
|
+
solid.createRenderEffect(() => web.className(_el$18, styles().refreshValueBtn));
|
|
188
188
|
return _el$18;
|
|
189
189
|
})();
|
|
190
190
|
},
|
|
@@ -197,12 +197,12 @@ function Explorer({
|
|
|
197
197
|
})(), " ", (() => {
|
|
198
198
|
var _el$22 = _tmpl$7();
|
|
199
199
|
web.insert(_el$22, () => utils.displayValue(value()));
|
|
200
|
-
|
|
200
|
+
solid.createRenderEffect(() => web.className(_el$22, styles().value));
|
|
201
201
|
return _el$22;
|
|
202
202
|
})()];
|
|
203
203
|
})();
|
|
204
204
|
})());
|
|
205
|
-
|
|
205
|
+
solid.createRenderEffect(() => web.className(_el$3, styles().entry));
|
|
206
206
|
return _el$3;
|
|
207
207
|
})();
|
|
208
208
|
}
|
|
@@ -296,8 +296,8 @@ const stylesFactory = (shadowDOMTarget) => {
|
|
|
296
296
|
};
|
|
297
297
|
};
|
|
298
298
|
function useStyles() {
|
|
299
|
-
const shadowDomTarget =
|
|
300
|
-
const [_styles] =
|
|
299
|
+
const shadowDomTarget = solid.useContext(context.ShadowDomTargetContext);
|
|
300
|
+
const [_styles] = solid.createSignal(stylesFactory(shadowDomTarget));
|
|
301
301
|
return _styles;
|
|
302
302
|
}
|
|
303
303
|
web.delegateEvents(["click"]);
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Explorer.cjs","sources":["../../../../../src/Explorer.tsx"],"sourcesContent":["/* eslint-disable @typescript-eslint/no-unnecessary-condition */\nimport { clsx as cx } from 'clsx'\nimport * as goober from 'goober'\nimport { createMemo, createSignal, useContext } from 'solid-js'\nimport { tokens } from './tokens'\nimport { displayValue } from './utils'\nimport { ShadowDomTargetContext } from './context'\nimport type { Accessor, JSX } from 'solid-js'\n\ntype ExpanderProps = {\n expanded: boolean\n style?: JSX.CSSProperties\n}\n\nexport const Expander = ({ expanded, style = {} }: ExpanderProps) => {\n const styles = useStyles()\n return (\n <span class={styles().expander}>\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"12\"\n height=\"12\"\n fill=\"none\"\n viewBox=\"0 0 24 24\"\n class={cx(styles().expanderIcon(expanded))}\n >\n <path\n stroke=\"currentColor\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n stroke-width=\"2\"\n d=\"M9 18l6-6-6-6\"\n ></path>\n </svg>\n </span>\n )\n}\n\ntype Entry = {\n label: string\n}\n\ntype RendererProps = {\n handleEntry: HandleEntryFn\n label?: JSX.Element\n value: Accessor<unknown>\n subEntries: Array<Entry>\n subEntryPages: Array<Array<Entry>>\n type: string\n expanded: Accessor<boolean>\n toggleExpanded: () => void\n pageSize: number\n filterSubEntries?: (subEntries: Array<Property>) => Array<Property>\n}\n\n/**\n * Chunk elements in the array by size\n *\n * when the array cannot be chunked evenly by size, the last chunk will be\n * filled with the remaining elements\n *\n * @example\n * chunkArray(['a','b', 'c', 'd', 'e'], 2) // returns [['a','b'], ['c', 'd'], ['e']]\n */\nexport function chunkArray<T>(array: Array<T>, size: number): Array<Array<T>> {\n if (size < 1) return []\n let i = 0\n const result: Array<Array<T>> = []\n while (i < array.length) {\n result.push(array.slice(i, i + size))\n i = i + size\n }\n return result\n}\n\ntype HandleEntryFn = (entry: Entry) => JSX.Element\n\ntype ExplorerProps = Partial<RendererProps> & {\n defaultExpanded?: true | Record<string, boolean>\n value: Accessor<unknown>\n}\n\ntype Property = {\n defaultExpanded?: boolean | Record<string, boolean>\n label: string\n value: unknown\n}\n\nfunction isIterable(x: any): x is Iterable<unknown> {\n return Symbol.iterator in x\n}\n\nexport function Explorer({\n value,\n defaultExpanded,\n pageSize = 100,\n filterSubEntries,\n ...rest\n}: ExplorerProps) {\n const [expanded, setExpanded] = createSignal(Boolean(defaultExpanded))\n const toggleExpanded = () => setExpanded((old) => !old)\n\n const type = createMemo(() => typeof value())\n const subEntries = createMemo(() => {\n let entries: Array<Property> = []\n\n const makeProperty = (sub: { label: string; value: unknown }): Property => {\n const subDefaultExpanded =\n defaultExpanded === true\n ? { [sub.label]: true }\n : defaultExpanded?.[sub.label]\n return {\n ...sub,\n value: () => sub.value,\n defaultExpanded: subDefaultExpanded,\n }\n }\n\n if (Array.isArray(value())) {\n // any[]\n entries = (value() as Array<any>).map((d, i) =>\n makeProperty({\n label: i.toString(),\n value: d,\n }),\n )\n } else if (\n value() !== null &&\n typeof value() === 'object' &&\n isIterable(value()) &&\n typeof (value() as Iterable<unknown>)[Symbol.iterator] === 'function'\n ) {\n // Iterable<unknown>\n entries = Array.from(value() as Iterable<unknown>, (val, i) =>\n makeProperty({\n label: i.toString(),\n value: val,\n }),\n )\n } else if (typeof value() === 'object' && value() !== null) {\n // object\n entries = Object.entries(value() as object).map(([key, val]) =>\n makeProperty({\n label: key,\n value: val,\n }),\n )\n }\n\n return filterSubEntries ? filterSubEntries(entries) : entries\n })\n\n const subEntryPages = createMemo(() => chunkArray(subEntries(), pageSize))\n\n const [expandedPages, setExpandedPages] = createSignal<Array<number>>([])\n const [valueSnapshot, setValueSnapshot] = createSignal(undefined)\n const styles = useStyles()\n\n const refreshValueSnapshot = () => {\n setValueSnapshot((value() as () => any)())\n }\n\n const handleEntry = (entry: Entry) => (\n <Explorer\n value={value}\n filterSubEntries={filterSubEntries}\n {...rest}\n {...entry}\n />\n )\n\n return (\n <div class={styles().entry}>\n {subEntryPages().length ? (\n <>\n <button\n class={styles().expandButton}\n onClick={() => toggleExpanded()}\n >\n <Expander expanded={expanded() ?? false} />\n {rest.label}\n <span class={styles().info}>\n {String(type).toLowerCase() === 'iterable' ? '(Iterable) ' : ''}\n {subEntries().length} {subEntries().length > 1 ? `items` : `item`}\n </span>\n </button>\n {(expanded() ?? false) ? (\n subEntryPages().length === 1 ? (\n <div class={styles().subEntries}>\n {subEntries().map((entry, index) => handleEntry(entry))}\n </div>\n ) : (\n <div class={styles().subEntries}>\n {subEntryPages().map((entries, index) => {\n return (\n <div>\n <div class={styles().entry}>\n <button\n class={cx(styles().labelButton, 'labelButton')}\n onClick={() =>\n setExpandedPages((old) =>\n old.includes(index)\n ? old.filter((d) => d !== index)\n : [...old, index],\n )\n }\n >\n <Expander\n expanded={expandedPages().includes(index)}\n />{' '}\n [{index * pageSize} ...{' '}\n {index * pageSize + pageSize - 1}]\n </button>\n {expandedPages().includes(index) ? (\n <div class={styles().subEntries}>\n {entries.map((entry) => handleEntry(entry))}\n </div>\n ) : null}\n </div>\n </div>\n )\n })}\n </div>\n )\n ) : null}\n </>\n ) : type() === 'function' ? (\n <>\n <Explorer\n label={\n <button\n onClick={refreshValueSnapshot}\n class={styles().refreshValueBtn}\n >\n <span>{rest.label}</span> 🔄{' '}\n </button>\n }\n value={valueSnapshot}\n defaultExpanded={{}}\n />\n </>\n ) : (\n <>\n <span>{rest.label}:</span>{' '}\n <span class={styles().value}>{displayValue(value())}</span>\n </>\n )}\n </div>\n )\n}\n\nconst stylesFactory = (shadowDOMTarget?: ShadowRoot) => {\n const { colors, font, size, alpha, shadow, border } = tokens\n const { fontFamily, lineHeight, size: fontSize } = font\n const css = shadowDOMTarget\n ? goober.css.bind({ target: shadowDOMTarget })\n : goober.css\n\n return {\n entry: css`\n font-family: ${fontFamily.mono};\n font-size: ${fontSize.xs};\n line-height: ${lineHeight.sm};\n outline: none;\n word-break: break-word;\n `,\n labelButton: css`\n cursor: pointer;\n color: inherit;\n font: inherit;\n outline: inherit;\n background: transparent;\n border: none;\n padding: 0;\n `,\n expander: css`\n display: inline-flex;\n align-items: center;\n justify-content: center;\n width: ${size[3]};\n height: ${size[3]};\n padding-left: 3px;\n box-sizing: content-box;\n `,\n expanderIcon: (expanded: boolean) => {\n if (expanded) {\n return css`\n transform: rotate(90deg);\n transition: transform 0.1s ease;\n `\n }\n return css`\n transform: rotate(0deg);\n transition: transform 0.1s ease;\n `\n },\n expandButton: css`\n display: flex;\n gap: ${size[1]};\n align-items: center;\n cursor: pointer;\n color: inherit;\n font: inherit;\n outline: inherit;\n background: transparent;\n border: none;\n padding: 0;\n `,\n value: css`\n color: ${colors.purple[400]};\n `,\n subEntries: css`\n margin-left: ${size[2]};\n padding-left: ${size[2]};\n border-left: 2px solid ${colors.darkGray[400]};\n `,\n info: css`\n color: ${colors.gray[500]};\n font-size: ${fontSize['2xs']};\n padding-left: ${size[1]};\n `,\n refreshValueBtn: css`\n appearance: none;\n border: 0;\n cursor: pointer;\n background: transparent;\n color: inherit;\n padding: 0;\n font-family: ${fontFamily.mono};\n font-size: ${fontSize.xs};\n `,\n }\n}\n\nfunction useStyles() {\n const shadowDomTarget = useContext(ShadowDomTargetContext)\n const [_styles] = createSignal(stylesFactory(shadowDomTarget))\n return _styles\n}\n"],"names":["Expander","expanded","style","styles","useStyles","_el$","_tmpl$","_el$2","firstChild","_$effect","_p$","_v$","expander","_v$2","cx","expanderIcon","e","_$className","t","_$setAttribute","undefined","chunkArray","array","size","i","result","length","push","slice","isIterable","x","Symbol","iterator","Explorer","value","defaultExpanded","pageSize","filterSubEntries","rest","setExpanded","createSignal","Boolean","toggleExpanded","old","type","createMemo","subEntries","entries","makeProperty","sub","subDefaultExpanded","label","Array","isArray","map","d","toString","from","val","Object","key","subEntryPages","expandedPages","setExpandedPages","valueSnapshot","setValueSnapshot","refreshValueSnapshot","handleEntry","entry","_$createComponent","_$mergeProps","_el$3","_tmpl$2","_$insert","_c$","_$memo","_el$4","_tmpl$3","_el$5","_el$6","$$click","String","toLowerCase","_v$3","expandButton","_v$4","info","_el$7","index","_el$8","_el$9","_tmpl$4","_el$0","_el$1","_el$10","_el$15","nextSibling","_el$12","_el$16","includes","filter","_c$3","_el$17","_v$5","_v$6","labelButton","_c$2","_el$18","_tmpl$5","_el$19","refreshValueBtn","_el$20","_tmpl$6","_el$21","_el$22","_tmpl$7","displayValue","stylesFactory","shadowDOMTarget","colors","font","tokens","fontFamily","lineHeight","fontSize","css","goober","bind","target","mono","xs","sm","purple","darkGray","gray","shadowDomTarget","useContext","ShadowDomTargetContext","_styles","_$delegateEvents"],"mappings":"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"}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperties(exports, { __esModule: { value: true }, [Symbol.toStringTag]: { value: "Module" } });
|
|
3
|
-
const web = require("solid-js/web");
|
|
3
|
+
const web = require("../../../node_modules/.pnpm/solid-js@1.9.5/node_modules/solid-js/web/dist/web.cjs");
|
|
4
4
|
const clsx = require("clsx");
|
|
5
|
-
const
|
|
5
|
+
const solid = require("../../../node_modules/.pnpm/solid-js@1.9.5/node_modules/solid-js/dist/solid.cjs");
|
|
6
6
|
const context = require("./context.cjs");
|
|
7
7
|
const utils = require("./utils.cjs");
|
|
8
8
|
const BaseTanStackRouterDevtoolsPanel = require("./BaseTanStackRouterDevtoolsPanel.cjs");
|
|
@@ -21,12 +21,12 @@ function FloatingTanStackRouterDevtools({
|
|
|
21
21
|
routerState,
|
|
22
22
|
shadowDOMTarget
|
|
23
23
|
}) {
|
|
24
|
-
const [rootEl, setRootEl] =
|
|
24
|
+
const [rootEl, setRootEl] = solid.createSignal();
|
|
25
25
|
let panelRef = void 0;
|
|
26
26
|
const [isOpen, setIsOpen] = useLocalStorage("tanstackRouterDevtoolsOpen", initialIsOpen);
|
|
27
27
|
const [devtoolsHeight, setDevtoolsHeight] = useLocalStorage("tanstackRouterDevtoolsHeight", null);
|
|
28
|
-
const [isResolvedOpen, setIsResolvedOpen] =
|
|
29
|
-
const [isResizing, setIsResizing] =
|
|
28
|
+
const [isResolvedOpen, setIsResolvedOpen] = solid.createSignal(false);
|
|
29
|
+
const [isResizing, setIsResizing] = solid.createSignal(false);
|
|
30
30
|
const isMounted = utils.useIsMounted();
|
|
31
31
|
const styles = useStyles.useStyles();
|
|
32
32
|
const handleDragStart = (panelElement, startEvent) => {
|
|
@@ -55,10 +55,10 @@ function FloatingTanStackRouterDevtools({
|
|
|
55
55
|
document.addEventListener("mouseup", unsub);
|
|
56
56
|
};
|
|
57
57
|
isOpen() ?? false;
|
|
58
|
-
|
|
58
|
+
solid.createEffect(() => {
|
|
59
59
|
setIsResolvedOpen(isOpen() ?? false);
|
|
60
60
|
});
|
|
61
|
-
|
|
61
|
+
solid.createEffect(() => {
|
|
62
62
|
if (isResolvedOpen()) {
|
|
63
63
|
const previousValue = rootEl()?.parentElement?.style.paddingBottom;
|
|
64
64
|
const run = () => {
|
|
@@ -97,7 +97,7 @@ function FloatingTanStackRouterDevtools({
|
|
|
97
97
|
}
|
|
98
98
|
return;
|
|
99
99
|
});
|
|
100
|
-
|
|
100
|
+
solid.createEffect(() => {
|
|
101
101
|
if (rootEl()) {
|
|
102
102
|
const el = rootEl();
|
|
103
103
|
const fontSize = getComputedStyle(el).fontSize;
|
|
@@ -119,32 +119,32 @@ function FloatingTanStackRouterDevtools({
|
|
|
119
119
|
...otherToggleButtonProps
|
|
120
120
|
} = toggleButtonProps;
|
|
121
121
|
if (!isMounted()) return null;
|
|
122
|
-
const resolvedHeight =
|
|
123
|
-
const basePanelClass =
|
|
122
|
+
const resolvedHeight = solid.createMemo(() => devtoolsHeight() ?? 500);
|
|
123
|
+
const basePanelClass = solid.createMemo(() => {
|
|
124
124
|
return clsx.clsx(styles().devtoolsPanelContainer, styles().devtoolsPanelContainerVisibility(!!isOpen()), styles().devtoolsPanelContainerResizing(isResizing), styles().devtoolsPanelContainerAnimation(isResolvedOpen(), resolvedHeight() + 16));
|
|
125
125
|
});
|
|
126
|
-
const basePanelStyle =
|
|
126
|
+
const basePanelStyle = solid.createMemo(() => {
|
|
127
127
|
return {
|
|
128
128
|
height: `${resolvedHeight()}px`,
|
|
129
129
|
// eslint-disable-next-line @typescript-eslint/no-unnecessary-condition
|
|
130
130
|
...panelStyle || {}
|
|
131
131
|
};
|
|
132
132
|
});
|
|
133
|
-
const buttonStyle =
|
|
133
|
+
const buttonStyle = solid.createMemo(() => {
|
|
134
134
|
return clsx.clsx(styles().mainCloseBtn, styles().mainCloseBtnPosition(position), styles().mainCloseBtnAnimation(!!isOpen()), toggleButtonClassName);
|
|
135
135
|
});
|
|
136
|
-
return
|
|
136
|
+
return solid.createComponent(web.Dynamic, {
|
|
137
137
|
component: Container,
|
|
138
138
|
ref: setRootEl,
|
|
139
139
|
"class": "TanStackRouterDevtools",
|
|
140
140
|
get children() {
|
|
141
|
-
return [
|
|
141
|
+
return [solid.createComponent(context.DevtoolsOnCloseContext.Provider, {
|
|
142
142
|
value: {
|
|
143
143
|
onCloseClick: onCloseClick ?? (() => {
|
|
144
144
|
})
|
|
145
145
|
},
|
|
146
146
|
get children() {
|
|
147
|
-
return
|
|
147
|
+
return solid.createComponent(BaseTanStackRouterDevtoolsPanel.BaseTanStackRouterDevtoolsPanel, solid.mergeProps({
|
|
148
148
|
ref(r$) {
|
|
149
149
|
var _ref$ = panelRef;
|
|
150
150
|
typeof _ref$ === "function" ? _ref$(r$) : panelRef = r$;
|
|
@@ -164,7 +164,7 @@ function FloatingTanStackRouterDevtools({
|
|
|
164
164
|
}
|
|
165
165
|
}), (() => {
|
|
166
166
|
var _el$ = _tmpl$(), _el$2 = _el$.firstChild, _el$3 = _el$2.firstChild, _el$4 = _el$3.nextSibling, _el$5 = _el$2.nextSibling, _el$6 = _el$5.nextSibling;
|
|
167
|
-
web.spread(_el$,
|
|
167
|
+
web.spread(_el$, solid.mergeProps(otherToggleButtonProps, {
|
|
168
168
|
"aria-label": "Open TanStack Router Devtools",
|
|
169
169
|
"onClick": (e) => {
|
|
170
170
|
setIsOpen(true);
|
|
@@ -174,9 +174,9 @@ function FloatingTanStackRouterDevtools({
|
|
|
174
174
|
return buttonStyle();
|
|
175
175
|
}
|
|
176
176
|
}), false, true);
|
|
177
|
-
web.insert(_el$3,
|
|
178
|
-
web.insert(_el$4,
|
|
179
|
-
|
|
177
|
+
web.insert(_el$3, solid.createComponent(logo.TanStackLogo, {}));
|
|
178
|
+
web.insert(_el$4, solid.createComponent(logo.TanStackLogo, {}));
|
|
179
|
+
solid.createRenderEffect((_p$) => {
|
|
180
180
|
var _v$ = styles().mainCloseBtnIconContainer, _v$2 = styles().mainCloseBtnIconOuter, _v$3 = styles().mainCloseBtnIconInner, _v$4 = styles().mainCloseBtnDivider, _v$5 = styles().routerLogoCloseButton;
|
|
181
181
|
_v$ !== _p$.e && web.className(_el$2, _p$.e = _v$);
|
|
182
182
|
_v$2 !== _p$.t && web.className(_el$3, _p$.t = _v$2);
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"FloatingTanStackRouterDevtools.cjs","sources":["../../../../../src/FloatingTanStackRouterDevtools.tsx"],"sourcesContent":["import { clsx as cx } from 'clsx'\n\nimport { createEffect, createMemo, createSignal } from 'solid-js'\nimport { Dynamic } from 'solid-js/web'\n\nimport { DevtoolsOnCloseContext } from './context'\nimport { useIsMounted } from './utils'\nimport { BaseTanStackRouterDevtoolsPanel } from './BaseTanStackRouterDevtoolsPanel'\nimport useLocalStorage from './useLocalStorage'\nimport { TanStackLogo } from './logo'\nimport { useStyles } from './useStyles'\nimport type { Accessor, JSX } from 'solid-js'\nimport type { AnyRouter } from '@tanstack/router-core'\n\nexport interface FloatingDevtoolsOptions {\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 class, style (merge and override default style), etc.\n */\n panelProps?: any & {\n ref?: any\n }\n /**\n * Use this to add props to the close button. For example, you can add class, style (merge and override default style), onClick (extend default handler), etc.\n */\n closeButtonProps?: any & {\n ref?: any\n }\n /**\n * Use this to add props to the toggle button. For example, you can add class, style (merge and override default style), onClick (extend default handler), etc.\n */\n toggleButtonProps?: any & {\n ref?: any\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: Accessor<AnyRouter>\n routerState: Accessor<any>\n /**\n * Use this to attach the devtool's styles to specific element in the DOM.\n */\n shadowDOMTarget?: ShadowRoot\n}\n\nexport function FloatingTanStackRouterDevtools({\n initialIsOpen,\n panelProps = {},\n closeButtonProps = {},\n toggleButtonProps = {},\n position = 'bottom-left',\n containerElement: Container = 'footer',\n router,\n routerState,\n shadowDOMTarget,\n}: FloatingDevtoolsOptions): JSX.Element | null {\n const [rootEl, setRootEl] = createSignal<HTMLDivElement>()\n\n // eslint-disable-next-line prefer-const\n let panelRef: HTMLDivElement | undefined = undefined\n\n const [isOpen, setIsOpen] = useLocalStorage(\n 'tanstackRouterDevtoolsOpen',\n initialIsOpen,\n )\n\n const [devtoolsHeight, setDevtoolsHeight] = useLocalStorage<number | null>(\n 'tanstackRouterDevtoolsHeight',\n null,\n )\n\n const [isResolvedOpen, setIsResolvedOpen] = createSignal(false)\n const [isResizing, setIsResizing] = createSignal(false)\n const isMounted = useIsMounted()\n const styles = useStyles()\n\n const handleDragStart = (\n panelElement: HTMLDivElement | undefined,\n startEvent: any,\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 createEffect(() => {\n setIsResolvedOpen(isOpen() ?? false)\n })\n\n createEffect(() => {\n if (isResolvedOpen()) {\n const previousValue = rootEl()?.parentElement?.style.paddingBottom\n\n const run = () => {\n const containerHeight = panelRef!.getBoundingClientRect().height\n if (rootEl()?.parentElement) {\n setRootEl((prev) => {\n if (prev?.parentElement) {\n prev.parentElement.style.paddingBottom = `${containerHeight}px`\n }\n return prev\n })\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 setRootEl((prev) => {\n prev!.parentElement!.style.paddingBottom = previousValue\n return prev\n })\n }\n }\n }\n } else {\n // Reset padding when devtools are closed\n if (rootEl()?.parentElement) {\n setRootEl((prev) => {\n if (prev?.parentElement) {\n prev.parentElement.removeAttribute('style')\n }\n return prev\n })\n }\n }\n return\n })\n\n createEffect(() => {\n if (rootEl()) {\n const el = rootEl()\n const fontSize = getComputedStyle(el!).fontSize\n el?.style.setProperty('--tsrd-font-size', fontSize)\n }\n })\n\n const { style: panelStyle = {}, ...otherPanelProps } = panelProps as {\n style?: Record<string, any>\n }\n\n const {\n style: closeButtonStyle = {},\n onClick: onCloseClick,\n ...otherCloseButtonProps\n } = closeButtonProps\n\n const {\n onClick: onToggleClick,\n class: toggleButtonClassName,\n ...otherToggleButtonProps\n } = toggleButtonProps\n\n // Do not render on the server\n if (!isMounted()) return null\n\n const resolvedHeight = createMemo(() => devtoolsHeight() ?? 500)\n\n const basePanelClass = createMemo(() => {\n return cx(\n styles().devtoolsPanelContainer,\n styles().devtoolsPanelContainerVisibility(!!isOpen()),\n styles().devtoolsPanelContainerResizing(isResizing),\n styles().devtoolsPanelContainerAnimation(\n isResolvedOpen(),\n resolvedHeight() + 16,\n ),\n )\n })\n\n const basePanelStyle = createMemo(() => {\n return {\n height: `${resolvedHeight()}px`,\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition\n ...(panelStyle || {}),\n }\n })\n\n const buttonStyle = createMemo(() => {\n return cx(\n styles().mainCloseBtn,\n styles().mainCloseBtnPosition(position),\n styles().mainCloseBtnAnimation(!!isOpen()),\n toggleButtonClassName,\n )\n })\n\n return (\n <Dynamic\n component={Container}\n ref={setRootEl}\n class=\"TanStackRouterDevtools\"\n >\n <DevtoolsOnCloseContext.Provider\n value={{\n onCloseClick: onCloseClick ?? (() => {}),\n }}\n >\n {/* {router() ? ( */}\n <BaseTanStackRouterDevtoolsPanel\n ref={panelRef as any}\n {...otherPanelProps}\n router={router}\n routerState={routerState}\n className={basePanelClass}\n style={basePanelStyle}\n isOpen={isResolvedOpen()}\n setIsOpen={setIsOpen}\n handleDragStart={(e) => handleDragStart(panelRef, e)}\n shadowDOMTarget={shadowDOMTarget}\n />\n {/* ) : (\n <p>No router</p>\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 class={buttonStyle()}\n >\n <div class={styles().mainCloseBtnIconContainer}>\n <div class={styles().mainCloseBtnIconOuter}>\n <TanStackLogo />\n </div>\n <div class={styles().mainCloseBtnIconInner}>\n <TanStackLogo />\n </div>\n </div>\n <div class={styles().mainCloseBtnDivider}>-</div>\n <div class={styles().routerLogoCloseButton}>TanStack Router</div>\n </button>\n </Dynamic>\n )\n}\n\nexport default FloatingTanStackRouterDevtools\n"],"names":["FloatingTanStackRouterDevtools","initialIsOpen","panelProps","closeButtonProps","toggleButtonProps","position","containerElement","Container","router","routerState","shadowDOMTarget","rootEl","setRootEl","createSignal","panelRef","undefined","isOpen","setIsOpen","useLocalStorage","devtoolsHeight","setDevtoolsHeight","isResolvedOpen","setIsResolvedOpen","isResizing","setIsResizing","isMounted","useIsMounted","styles","useStyles","handleDragStart","panelElement","startEvent","button","dragInfo","originalHeight","getBoundingClientRect","height","pageY","run","moveEvent","delta","newHeight","unsub","document","removeEventListener","addEventListener","createEffect","previousValue","parentElement","style","paddingBottom","containerHeight","prev","window","removeAttribute","el","fontSize","getComputedStyle","setProperty","panelStyle","otherPanelProps","closeButtonStyle","onClick","onCloseClick","otherCloseButtonProps","onToggleClick","class","toggleButtonClassName","otherToggleButtonProps","resolvedHeight","createMemo","basePanelClass","cx","devtoolsPanelContainer","devtoolsPanelContainerVisibility","devtoolsPanelContainerResizing","devtoolsPanelContainerAnimation","basePanelStyle","buttonStyle","mainCloseBtn","mainCloseBtnPosition","mainCloseBtnAnimation","_$createComponent","Dynamic","component","ref","children","DevtoolsOnCloseContext","Provider","value","BaseTanStackRouterDevtoolsPanel","_$mergeProps","r$","_ref$","className","e","_el$","_tmpl$","_el$2","firstChild","_el$3","_el$4","nextSibling","_el$5","_el$6","_$spread","_$insert","TanStackLogo","_$effect","_p$","_v$","mainCloseBtnIconContainer","_v$2","mainCloseBtnIconOuter","_v$3","mainCloseBtnIconInner","_v$4","mainCloseBtnDivider","_v$5","routerLogoCloseButton","_$className","t","a","o","i"],"mappings":"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"}
|
package/dist/cjs/{NavigateButton.cjs → packages/router-devtools-core/src/NavigateButton.cjs}
RENAMED
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
3
|
-
const web = require("solid-js/web");
|
|
3
|
+
const web = require("../../../node_modules/.pnpm/solid-js@1.9.5/node_modules/solid-js/web/dist/web.cjs");
|
|
4
4
|
const useStyles = require("./useStyles.cjs");
|
|
5
|
+
const solid = require("../../../node_modules/.pnpm/solid-js@1.9.5/node_modules/solid-js/dist/solid.cjs");
|
|
5
6
|
var _tmpl$ = /* @__PURE__ */ web.template(`<button type=button>➔`);
|
|
6
7
|
function NavigateButton({
|
|
7
8
|
to,
|
|
@@ -21,7 +22,7 @@ function NavigateButton({
|
|
|
21
22
|
});
|
|
22
23
|
};
|
|
23
24
|
web.setAttribute(_el$, "title", `Navigate to ${to}`);
|
|
24
|
-
|
|
25
|
+
solid.createRenderEffect(() => web.className(_el$, styles().navigateButton));
|
|
25
26
|
return _el$;
|
|
26
27
|
})();
|
|
27
28
|
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"NavigateButton.cjs","sources":["../../../../../src/NavigateButton.tsx"],"sourcesContent":["import { useStyles } from './useStyles'\nimport type { AnyRouter, NavigateOptions } from '@tanstack/router-core'\nimport type { Accessor } from 'solid-js'\n\ninterface Props extends NavigateOptions {\n router: Accessor<AnyRouter>\n}\n\nexport function NavigateButton({ to, params, search, router }: Props) {\n const styles = useStyles()\n\n return (\n <button\n type=\"button\"\n title={`Navigate to ${to}`}\n class={styles().navigateButton}\n onClick={(e) => {\n e.stopPropagation()\n router().navigate({ to, params, search })\n }}\n >\n ➔\n </button>\n )\n}\n"],"names":["NavigateButton","to","params","search","router","styles","useStyles","_el$","_tmpl$","$$click","e","stopPropagation","navigate","_$setAttribute","_$effect","_$className","navigateButton","_$delegateEvents"],"mappings":";;;;;;AAQO,SAASA,eAAe;AAAA,EAAEC;AAAAA,EAAIC;AAAAA,EAAQC;AAAAA,EAAQC;AAAc,GAAG;AACpE,QAAMC,SAASC,UAAAA,UAAAA;AAEf,UAAA,MAAA;AAAA,QAAAC,OAAAC,OAAAA;AAAAD,SAAAE,UAKcC,CAAAA,MAAM;AACdA,QAAEC,gBAAAA;AACFP,aAAAA,EAASQ,SAAS;AAAA,QAAEX;AAAAA,QAAIC;AAAAA,QAAQC;AAAAA,MAAAA,CAAQ;AAAA,IAC1C;AAACU,QAAAA,aAAAN,MAAA,SALM,eAAeN,EAAE,EAAE;AAAAa,UAAAA,mBAAA,MAAAC,IAAAA,UAAAR,MACnBF,OAAAA,EAASW,cAAc,CAAA;AAAA,WAAAT;AAAAA,EAAA,GAAA;AASpC;AAACU,IAAAA,eAAA,CAAA,OAAA,CAAA;;"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
3
|
-
const web = require("solid-js/web");
|
|
4
|
-
const
|
|
3
|
+
const web = require("../../../node_modules/.pnpm/solid-js@1.9.5/node_modules/solid-js/web/dist/web.cjs");
|
|
4
|
+
const solid = require("../../../node_modules/.pnpm/solid-js@1.9.5/node_modules/solid-js/dist/solid.cjs");
|
|
5
5
|
const context = require("./context.cjs");
|
|
6
6
|
class TanStackRouterDevtoolsCore {
|
|
7
7
|
#router;
|
|
@@ -17,8 +17,8 @@ class TanStackRouterDevtoolsCore {
|
|
|
17
17
|
#Component;
|
|
18
18
|
#dispose;
|
|
19
19
|
constructor(config) {
|
|
20
|
-
this.#router =
|
|
21
|
-
this.#routerState =
|
|
20
|
+
this.#router = solid.createSignal(config.router);
|
|
21
|
+
this.#routerState = solid.createSignal(config.routerState);
|
|
22
22
|
this.#position = config.position ?? "bottom-left";
|
|
23
23
|
this.#initialIsOpen = config.initialIsOpen ?? false;
|
|
24
24
|
this.#shadowDOMTarget = config.shadowDOMTarget;
|
|
@@ -45,13 +45,13 @@ class TanStackRouterDevtoolsCore {
|
|
|
45
45
|
if (this.#Component) {
|
|
46
46
|
Devtools = this.#Component;
|
|
47
47
|
} else {
|
|
48
|
-
Devtools =
|
|
48
|
+
Devtools = solid.lazy(() => Promise.resolve().then(() => require("./FloatingTanStackRouterDevtools.cjs")));
|
|
49
49
|
this.#Component = Devtools;
|
|
50
50
|
}
|
|
51
|
-
return
|
|
51
|
+
return solid.createComponent(context.ShadowDomTargetContext.Provider, {
|
|
52
52
|
value: shadowDOMTarget,
|
|
53
53
|
get children() {
|
|
54
|
-
return
|
|
54
|
+
return solid.createComponent(Devtools, {
|
|
55
55
|
position,
|
|
56
56
|
initialIsOpen,
|
|
57
57
|
router,
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TanStackRouterDevtoolsCore.cjs","sources":["../../../../../src/TanStackRouterDevtoolsCore.tsx"],"sourcesContent":["import { createSignal, lazy } from 'solid-js'\nimport { render } from 'solid-js/web'\nimport { ShadowDomTargetContext } from './context'\nimport type { AnyRouter } from '@tanstack/router-core'\nimport type { Signal } from 'solid-js'\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 class, style (merge and override default style), etc.\n */\n panelProps?: any & {\n ref?: any\n }\n /**\n * Use this to add props to the close button. For example, you can add class, style (merge and override default style), onClick (extend default handler), etc.\n */\n closeButtonProps?: any & {\n ref?: any\n }\n /**\n * Use this to add props to the toggle button. For example, you can add class, style (merge and override default style), onClick (extend default handler), etc.\n */\n toggleButtonProps?: any & {\n ref?: any\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 routerState: any\n /**\n * Use this to attach the devtool's styles to specific element in the DOM.\n */\n shadowDOMTarget?: ShadowRoot\n}\n\nclass TanStackRouterDevtoolsCore {\n #router: Signal<AnyRouter>\n #routerState: Signal<any>\n #position: 'top-left' | 'top-right' | 'bottom-left' | 'bottom-right'\n #initialIsOpen: boolean\n #shadowDOMTarget?: ShadowRoot\n\n #panelProps: any\n #closeButtonProps: any\n #toggleButtonProps: any\n #containerElement?: string | any\n\n #isMounted = false\n #Component: any\n #dispose?: () => void\n\n constructor(config: DevtoolsOptions) {\n this.#router = createSignal(config.router)\n this.#routerState = createSignal(config.routerState)\n this.#position = config.position ?? 'bottom-left'\n this.#initialIsOpen = config.initialIsOpen ?? false\n this.#shadowDOMTarget = config.shadowDOMTarget\n\n this.#panelProps = config.panelProps\n this.#closeButtonProps = config.closeButtonProps\n this.#toggleButtonProps = config.toggleButtonProps\n this.#containerElement = config.containerElement\n }\n\n mount<T extends HTMLElement>(el: T) {\n if (this.#isMounted) {\n throw new Error('Devtools is already mounted')\n }\n\n const dispose = render(() => {\n const [router] = this.#router\n const [routerState] = this.#routerState\n const position = this.#position\n const initialIsOpen = this.#initialIsOpen\n const shadowDOMTarget = this.#shadowDOMTarget\n\n const panelProps = this.#panelProps\n const closeButtonProps = this.#closeButtonProps\n const toggleButtonProps = this.#toggleButtonProps\n const containerElement = this.#containerElement\n\n let Devtools\n\n if (this.#Component) {\n Devtools = this.#Component\n } else {\n Devtools = lazy(() => import('./FloatingTanStackRouterDevtools'))\n this.#Component = Devtools\n }\n\n return (\n <ShadowDomTargetContext.Provider value={shadowDOMTarget}>\n <Devtools\n position={position}\n initialIsOpen={initialIsOpen}\n router={router}\n routerState={routerState}\n shadowDOMTarget={shadowDOMTarget}\n panelProps={panelProps}\n closeButtonProps={closeButtonProps}\n toggleButtonProps={toggleButtonProps}\n containerElement={containerElement}\n />\n </ShadowDomTargetContext.Provider>\n )\n }, el)\n\n this.#isMounted = true\n this.#dispose = dispose\n }\n\n unmount() {\n if (!this.#isMounted) {\n throw new Error('Devtools is not mounted')\n }\n this.#dispose?.()\n this.#isMounted = false\n }\n\n setRouter(router: AnyRouter) {\n this.#router[1](router)\n }\n\n setRouterState(routerState: any) {\n this.#routerState[1](routerState)\n }\n\n setOptions(options: Partial<DevtoolsOptions>) {\n if (options.position !== undefined) {\n this.#position = options.position\n }\n\n if (options.initialIsOpen !== undefined) {\n this.#initialIsOpen = options.initialIsOpen\n }\n\n if (options.shadowDOMTarget !== undefined) {\n this.#shadowDOMTarget = options.shadowDOMTarget\n }\n\n if (options.containerElement !== undefined) {\n this.#containerElement = options.containerElement\n }\n }\n}\n\nexport { TanStackRouterDevtoolsCore }\n"],"names":["TanStackRouterDevtoolsCore","constructor","config","createSignal","router","routerState","position","initialIsOpen","shadowDOMTarget","panelProps","closeButtonProps","toggleButtonProps","containerElement","mount","el","Error","dispose","render","Devtools","lazy","_$createComponent","ShadowDomTargetContext","Provider","value","children","unmount","setRouter","setRouterState","setOptions","options","undefined"],"mappings":";;;;;AAmDA,MAAMA,2BAA2B;AAAA,EAC/B;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EAEA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EAEA,aAAa;AAAA,EACb;AAAA,EACA;AAAA,EAEAC,YAAYC,QAAyB;AACnC,SAAK,UAAUC,mBAAaD,OAAOE,MAAM;AACzC,SAAK,eAAeD,mBAAaD,OAAOG,WAAW;AACnD,SAAK,YAAYH,OAAOI,YAAY;AACpC,SAAK,iBAAiBJ,OAAOK,iBAAiB;AAC9C,SAAK,mBAAmBL,OAAOM;AAE/B,SAAK,cAAcN,OAAOO;AAC1B,SAAK,oBAAoBP,OAAOQ;AAChC,SAAK,qBAAqBR,OAAOS;AACjC,SAAK,oBAAoBT,OAAOU;AAAAA,EAClC;AAAA,EAEAC,MAA6BC,IAAO;AAClC,QAAI,KAAK,YAAY;AACnB,YAAM,IAAIC,MAAM,6BAA6B;AAAA,IAC/C;AAEA,UAAMC,UAAUC,IAAAA,OAAO,MAAM;AAC3B,YAAM,CAACb,MAAM,IAAI,KAAK;AACtB,YAAM,CAACC,WAAW,IAAI,KAAK;AAC3B,YAAMC,WAAW,KAAK;AACtB,YAAMC,gBAAgB,KAAK;AAC3B,YAAMC,kBAAkB,KAAK;AAE7B,YAAMC,aAAa,KAAK;AACxB,YAAMC,mBAAmB,KAAK;AAC9B,YAAMC,oBAAoB,KAAK;AAC/B,YAAMC,mBAAmB,KAAK;AAE9B,UAAIM;AAEJ,UAAI,KAAK,YAAY;AACnBA,mBAAW,KAAK;AAAA,MAClB,OAAO;AACLA,mBAAWC,MAAAA,KAAK,MAAM,QAAA,QAAA,EAAA,KAAA,MAAA,QAAO,sCAAkC,EAAC;AAChE,aAAK,aAAaD;AAAAA,MACpB;AAEA,aAAAE,MAAAA,gBACGC,QAAAA,uBAAuBC,UAAQ;AAAA,QAACC,OAAOf;AAAAA,QAAe,IAAAgB,WAAA;AAAA,iBAAAJ,MAAAA,gBACpDF,UAAQ;AAAA,YACPZ;AAAAA,YACAC;AAAAA,YACAH;AAAAA,YACAC;AAAAA,YACAG;AAAAA,YACAC;AAAAA,YACAC;AAAAA,YACAC;AAAAA,YACAC;AAAAA,UAAAA,CAAkC;AAAA,QAAA;AAAA,MAAA,CAAA;AAAA,IAI1C,GAAGE,EAAE;AAEL,SAAK,aAAa;AAClB,SAAK,WAAWE;AAAAA,EAClB;AAAA,EAEAS,UAAU;AACR,QAAI,CAAC,KAAK,YAAY;AACpB,YAAM,IAAIV,MAAM,yBAAyB;AAAA,IAC3C;AACA,SAAK,WAAA;AACL,SAAK,aAAa;AAAA,EACpB;AAAA,EAEAW,UAAUtB,QAAmB;AAC3B,SAAK,QAAQ,CAAC,EAAEA,MAAM;AAAA,EACxB;AAAA,EAEAuB,eAAetB,aAAkB;AAC/B,SAAK,aAAa,CAAC,EAAEA,WAAW;AAAA,EAClC;AAAA,EAEAuB,WAAWC,SAAmC;AAC5C,QAAIA,QAAQvB,aAAawB,QAAW;AAClC,WAAK,YAAYD,QAAQvB;AAAAA,IAC3B;AAEA,QAAIuB,QAAQtB,kBAAkBuB,QAAW;AACvC,WAAK,iBAAiBD,QAAQtB;AAAAA,IAChC;AAEA,QAAIsB,QAAQrB,oBAAoBsB,QAAW;AACzC,WAAK,mBAAmBD,QAAQrB;AAAAA,IAClC;AAEA,QAAIqB,QAAQjB,qBAAqBkB,QAAW;AAC1C,WAAK,oBAAoBD,QAAQjB;AAAAA,IACnC;AAAA,EACF;AACF;;"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
3
|
-
const web = require("solid-js/web");
|
|
4
|
-
const
|
|
3
|
+
const web = require("../../../node_modules/.pnpm/solid-js@1.9.5/node_modules/solid-js/web/dist/web.cjs");
|
|
4
|
+
const solid = require("../../../node_modules/.pnpm/solid-js@1.9.5/node_modules/solid-js/dist/solid.cjs");
|
|
5
5
|
const context = require("./context.cjs");
|
|
6
6
|
class TanStackRouterDevtoolsPanelCore {
|
|
7
7
|
#router;
|
|
@@ -22,10 +22,10 @@ class TanStackRouterDevtoolsPanelCore {
|
|
|
22
22
|
style,
|
|
23
23
|
className
|
|
24
24
|
} = config;
|
|
25
|
-
this.#router =
|
|
26
|
-
this.#routerState =
|
|
27
|
-
this.#style =
|
|
28
|
-
this.#className =
|
|
25
|
+
this.#router = solid.createSignal(router);
|
|
26
|
+
this.#routerState = solid.createSignal(routerState);
|
|
27
|
+
this.#style = solid.createSignal(style);
|
|
28
|
+
this.#className = solid.createSignal(className);
|
|
29
29
|
this.#shadowDOMTarget = shadowDOMTarget;
|
|
30
30
|
this.#setIsOpen = setIsOpen;
|
|
31
31
|
}
|
|
@@ -44,19 +44,19 @@ class TanStackRouterDevtoolsPanelCore {
|
|
|
44
44
|
if (this.#Component) {
|
|
45
45
|
BaseTanStackRouterDevtoolsPanel = this.#Component;
|
|
46
46
|
} else {
|
|
47
|
-
BaseTanStackRouterDevtoolsPanel =
|
|
47
|
+
BaseTanStackRouterDevtoolsPanel = solid.lazy(() => Promise.resolve().then(() => require("./BaseTanStackRouterDevtoolsPanel.cjs")));
|
|
48
48
|
this.#Component = BaseTanStackRouterDevtoolsPanel;
|
|
49
49
|
}
|
|
50
|
-
return
|
|
50
|
+
return solid.createComponent(context.ShadowDomTargetContext.Provider, {
|
|
51
51
|
value: shadowDOMTarget,
|
|
52
52
|
get children() {
|
|
53
|
-
return
|
|
53
|
+
return solid.createComponent(context.DevtoolsOnCloseContext.Provider, {
|
|
54
54
|
value: {
|
|
55
55
|
onCloseClick: () => {
|
|
56
56
|
}
|
|
57
57
|
},
|
|
58
58
|
get children() {
|
|
59
|
-
return
|
|
59
|
+
return solid.createComponent(BaseTanStackRouterDevtoolsPanel, {
|
|
60
60
|
router,
|
|
61
61
|
routerState,
|
|
62
62
|
shadowDOMTarget,
|