@tanstack/router-devtools-core 1.121.0-alpha.22 → 1.121.0-alpha.28
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/AgeTicker.cjs.map +1 -1
- package/dist/cjs/BaseTanStackRouterDevtoolsPanel.cjs +178 -219
- package/dist/cjs/BaseTanStackRouterDevtoolsPanel.cjs.map +1 -1
- package/dist/cjs/Explorer.cjs +27 -27
- package/dist/cjs/Explorer.cjs.map +1 -1
- package/dist/cjs/FloatingTanStackRouterDevtools.cjs +8 -11
- package/dist/cjs/FloatingTanStackRouterDevtools.cjs.map +1 -1
- package/dist/cjs/NavigateButton.cjs.map +1 -1
- package/dist/cjs/TanStackRouterDevtoolsCore.cjs +45 -66
- package/dist/cjs/TanStackRouterDevtoolsCore.cjs.map +1 -1
- package/dist/cjs/TanStackRouterDevtoolsPanelCore.cjs +51 -45
- package/dist/cjs/TanStackRouterDevtoolsPanelCore.cjs.map +1 -1
- package/dist/cjs/TanStackRouterDevtoolsPanelCore.d.cts +2 -0
- package/dist/cjs/context.cjs.map +1 -1
- package/dist/cjs/logo.cjs +73 -73
- package/dist/cjs/logo.cjs.map +1 -1
- package/dist/cjs/tokens.cjs.map +1 -1
- package/dist/cjs/useLocalStorage.cjs.map +1 -1
- package/dist/cjs/useStyles.cjs.map +1 -1
- package/dist/cjs/utils.cjs.map +1 -1
- package/dist/esm/AgeTicker.js.map +1 -1
- package/dist/esm/BaseTanStackRouterDevtoolsPanel.js +178 -219
- package/dist/esm/BaseTanStackRouterDevtoolsPanel.js.map +1 -1
- package/dist/esm/Explorer.js +27 -27
- package/dist/esm/Explorer.js.map +1 -1
- package/dist/esm/FloatingTanStackRouterDevtools.js +8 -11
- package/dist/esm/FloatingTanStackRouterDevtools.js.map +1 -1
- package/dist/esm/NavigateButton.js.map +1 -1
- package/dist/esm/TanStackRouterDevtoolsCore.js +45 -66
- package/dist/esm/TanStackRouterDevtoolsCore.js.map +1 -1
- package/dist/esm/TanStackRouterDevtoolsPanelCore.d.ts +2 -0
- package/dist/esm/TanStackRouterDevtoolsPanelCore.js +51 -45
- package/dist/esm/TanStackRouterDevtoolsPanelCore.js.map +1 -1
- package/dist/esm/context.js.map +1 -1
- package/dist/esm/logo.js +73 -73
- package/dist/esm/logo.js.map +1 -1
- package/dist/esm/tokens.js.map +1 -1
- package/dist/esm/useLocalStorage.js.map +1 -1
- package/dist/esm/useStyles.js.map +1 -1
- package/dist/esm/utils.js.map +1 -1
- package/package.json +5 -5
- package/src/TanStackRouterDevtoolsPanelCore.tsx +32 -1
|
@@ -1 +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 } 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 '/',\n '/',\n string,\n '__root__',\n undefined,\n {},\n {},\n AnyContext,\n AnyContext,\n {},\n undefined,\n any,\n FileRouteTypes\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}>Search Params</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\nexport default BaseTanStackRouterDevtoolsPanel\n"],"names":["Logo","props","className","rest","styles","useStyles","_el$","_tmpl$","_el$2","firstChild","_el$3","nextSibling","_$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$10","rootRouteId","code","_el$11","_tmpl$4","routeParamInfo","_c$","_$memo","length","_el$12","_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$13","_tmpl$7","_el$14","_el$15","_el$16","_el$17","_el$18","_el$19","_el$20","_el$21","_el$22","_el$24","_el$25","_el$26","_el$27","_el$28","_el$29","_el$30","_el$31","_$spread","devtoolsPanel","_el$32","dragHandle","onClick","Explorer","label","value","defaultExpanded","context","options","filterSubEntries","subEntries","_c$2","maskedLocation","_el$33","_tmpl$8","_el$34","_v$24","maskedBadgeContainer","_v$25","maskedBadge","pathname","_c$3","_el$35","_c$4","routeTree","_el$36","_i","_el$37","_tmpl$9","_el$38","_el$39","matchID","_v$26","_v$27","matchRow","_v$28","getStatusColor","_c$5","_el$40","_tmpl$10","_el$41","_el$42","_el$43","_el$44","_el$45","_el$46","_el$47","_v$32","_v$33","_v$34","_v$29","cachedMatchesContainer","_v$30","detailsHeader","_v$31","detailsHeaderInfo","_c$6","status","_el$48","_tmpl$11","_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","_el$64","_el$65","_c$8","isFetching","_c$9","_c$10","updatedAt","Date","toLocaleTimeString","_c$11","_el$66","_tmpl$12","_el$67","detailsContent","_v$35","thirdContainer","_v$36","_v$37","matchDetails","_v$38","matchStatus","_v$39","matchDetailsInfoLabel","_v$40","matchDetailsInfo","_v$41","_v$42","_v$43","_v$44","_v$45","_v$46","o","i","n","s","h","l","u","_c$7","_el$68","_tmpl$13","_el$69","_el$70","reduce","obj","next","_v$47","fourthContainer","_v$48","_v$49","_v$6","panelCloseBtn","_v$7","panelCloseBtnIcon","_v$8","firstContainer","_v$9","row","_v$10","routerExplorerContainer","_v$11","routerExplorer","_v$12","secondContainer","_v$13","matchesContainer","_v$14","_v$15","_v$16","_v$17","routeMatchesToggle","_v$18","_v$19","routeMatchesToggleBtn","_v$20","_v$21","_v$22","_v$23","routesContainer","c","disabled","w","f","y","g","_$delegateEvents"],"mappings":"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"}
|
|
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 } 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 '/',\n '/',\n string,\n '__root__',\n undefined,\n {},\n {},\n AnyContext,\n AnyContext,\n {},\n undefined,\n any,\n FileRouteTypes\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}>Search Params</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\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$68","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","_$delegateEvents"],"mappings":"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"}
|
package/dist/cjs/Explorer.cjs
CHANGED
|
@@ -72,7 +72,7 @@ function Explorer({
|
|
|
72
72
|
const makeProperty = (sub) => {
|
|
73
73
|
const subDefaultExpanded = defaultExpanded === true ? {
|
|
74
74
|
[sub.label]: true
|
|
75
|
-
} : defaultExpanded
|
|
75
|
+
} : defaultExpanded?.[sub.label];
|
|
76
76
|
return {
|
|
77
77
|
...sub,
|
|
78
78
|
value: () => sub.value,
|
|
@@ -143,29 +143,29 @@ function Explorer({
|
|
|
143
143
|
var _el$8 = _tmpl$2();
|
|
144
144
|
web.insert(_el$8, () => subEntryPages().map((entries, index) => {
|
|
145
145
|
return (() => {
|
|
146
|
-
var _el$9 = _tmpl$4(), _el$
|
|
147
|
-
_el$
|
|
148
|
-
_el$
|
|
149
|
-
web.insert(_el$
|
|
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
|
+
_el$16.nextSibling;
|
|
148
|
+
_el$1.$$click = () => setExpandedPages((old) => old.includes(index) ? old.filter((d) => d !== index) : [...old, index]);
|
|
149
|
+
web.insert(_el$1, web.createComponent(Expander, {
|
|
150
150
|
get expanded() {
|
|
151
151
|
return expandedPages().includes(index);
|
|
152
152
|
}
|
|
153
|
-
}), _el$
|
|
154
|
-
web.insert(_el$
|
|
155
|
-
web.insert(_el$
|
|
156
|
-
web.insert(_el$
|
|
153
|
+
}), _el$10);
|
|
154
|
+
web.insert(_el$1, index * pageSize, _el$15);
|
|
155
|
+
web.insert(_el$1, index * pageSize + pageSize - 1, _el$16);
|
|
156
|
+
web.insert(_el$0, (() => {
|
|
157
157
|
var _c$3 = web.memo(() => !!expandedPages().includes(index));
|
|
158
158
|
return () => _c$3() ? (() => {
|
|
159
|
-
var _el$
|
|
160
|
-
web.insert(_el$
|
|
161
|
-
web.effect(() => web.className(_el$
|
|
162
|
-
return _el$
|
|
159
|
+
var _el$17 = _tmpl$2();
|
|
160
|
+
web.insert(_el$17, () => entries.map((entry) => handleEntry(entry)));
|
|
161
|
+
web.effect(() => web.className(_el$17, styles().subEntries));
|
|
162
|
+
return _el$17;
|
|
163
163
|
})() : null;
|
|
164
164
|
})(), null);
|
|
165
165
|
web.effect((_p$) => {
|
|
166
166
|
var _v$5 = styles().entry, _v$6 = clsx.clsx(styles().labelButton, "labelButton");
|
|
167
|
-
_v$5 !== _p$.e && web.className(_el$
|
|
168
|
-
_v$6 !== _p$.t && web.className(_el$
|
|
167
|
+
_v$5 !== _p$.e && web.className(_el$0, _p$.e = _v$5);
|
|
168
|
+
_v$6 !== _p$.t && web.className(_el$1, _p$.t = _v$6);
|
|
169
169
|
return _p$;
|
|
170
170
|
}, {
|
|
171
171
|
e: void 0,
|
|
@@ -181,24 +181,24 @@ function Explorer({
|
|
|
181
181
|
return () => _c$2() ? web.createComponent(Explorer, {
|
|
182
182
|
get label() {
|
|
183
183
|
return (() => {
|
|
184
|
-
var _el$
|
|
185
|
-
_el$
|
|
186
|
-
web.insert(_el$
|
|
187
|
-
web.effect(() => web.className(_el$
|
|
188
|
-
return _el$
|
|
184
|
+
var _el$18 = _tmpl$5(), _el$19 = _el$18.firstChild;
|
|
185
|
+
_el$18.$$click = refreshValueSnapshot;
|
|
186
|
+
web.insert(_el$19, () => rest.label);
|
|
187
|
+
web.effect(() => web.className(_el$18, styles().refreshValueBtn));
|
|
188
|
+
return _el$18;
|
|
189
189
|
})();
|
|
190
190
|
},
|
|
191
191
|
value: valueSnapshot,
|
|
192
192
|
defaultExpanded: {}
|
|
193
193
|
}) : [(() => {
|
|
194
|
-
var _el$
|
|
195
|
-
web.insert(_el$
|
|
196
|
-
return _el$
|
|
194
|
+
var _el$20 = _tmpl$6(), _el$21 = _el$20.firstChild;
|
|
195
|
+
web.insert(_el$20, () => rest.label, _el$21);
|
|
196
|
+
return _el$20;
|
|
197
197
|
})(), " ", (() => {
|
|
198
|
-
var _el$
|
|
199
|
-
web.insert(_el$
|
|
200
|
-
web.effect(() => web.className(_el$
|
|
201
|
-
return _el$
|
|
198
|
+
var _el$22 = _tmpl$7();
|
|
199
|
+
web.insert(_el$22, () => utils.displayValue(value()));
|
|
200
|
+
web.effect(() => web.className(_el$22, styles().value));
|
|
201
|
+
return _el$22;
|
|
202
202
|
})()];
|
|
203
203
|
})();
|
|
204
204
|
})());
|
|
@@ -1 +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$10","_el$11","_el$12","_el$17","nextSibling","_el$14","_el$18","includes","filter","_c$3","_el$19","_v$5","_v$6","labelButton","_c$2","_el$20","_tmpl$5","_el$21","refreshValueBtn","_el$22","_tmpl$6","_el$23","_el$24","_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
|
+
{"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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"}
|
|
@@ -33,7 +33,7 @@ function FloatingTanStackRouterDevtools({
|
|
|
33
33
|
if (startEvent.button !== 0) return;
|
|
34
34
|
setIsResizing(true);
|
|
35
35
|
const dragInfo = {
|
|
36
|
-
originalHeight:
|
|
36
|
+
originalHeight: panelElement?.getBoundingClientRect().height ?? 0,
|
|
37
37
|
pageY: startEvent.pageY
|
|
38
38
|
};
|
|
39
39
|
const run = (moveEvent) => {
|
|
@@ -59,15 +59,13 @@ function FloatingTanStackRouterDevtools({
|
|
|
59
59
|
setIsResolvedOpen(isOpen() ?? false);
|
|
60
60
|
});
|
|
61
61
|
solidJs.createEffect(() => {
|
|
62
|
-
var _a, _b, _c;
|
|
63
62
|
if (isResolvedOpen()) {
|
|
64
|
-
const previousValue =
|
|
63
|
+
const previousValue = rootEl()?.parentElement?.style.paddingBottom;
|
|
65
64
|
const run = () => {
|
|
66
|
-
var _a2;
|
|
67
65
|
const containerHeight = panelRef.getBoundingClientRect().height;
|
|
68
|
-
if (
|
|
66
|
+
if (rootEl()?.parentElement) {
|
|
69
67
|
setRootEl((prev) => {
|
|
70
|
-
if (prev
|
|
68
|
+
if (prev?.parentElement) {
|
|
71
69
|
prev.parentElement.style.paddingBottom = `${containerHeight}px`;
|
|
72
70
|
}
|
|
73
71
|
return prev;
|
|
@@ -78,9 +76,8 @@ function FloatingTanStackRouterDevtools({
|
|
|
78
76
|
if (typeof window !== "undefined") {
|
|
79
77
|
window.addEventListener("resize", run);
|
|
80
78
|
return () => {
|
|
81
|
-
var _a2;
|
|
82
79
|
window.removeEventListener("resize", run);
|
|
83
|
-
if (
|
|
80
|
+
if (rootEl()?.parentElement && typeof previousValue === "string") {
|
|
84
81
|
setRootEl((prev) => {
|
|
85
82
|
prev.parentElement.style.paddingBottom = previousValue;
|
|
86
83
|
return prev;
|
|
@@ -89,9 +86,9 @@ function FloatingTanStackRouterDevtools({
|
|
|
89
86
|
};
|
|
90
87
|
}
|
|
91
88
|
} else {
|
|
92
|
-
if (
|
|
89
|
+
if (rootEl()?.parentElement) {
|
|
93
90
|
setRootEl((prev) => {
|
|
94
|
-
if (prev
|
|
91
|
+
if (prev?.parentElement) {
|
|
95
92
|
prev.parentElement.removeAttribute("style");
|
|
96
93
|
}
|
|
97
94
|
return prev;
|
|
@@ -104,7 +101,7 @@ function FloatingTanStackRouterDevtools({
|
|
|
104
101
|
if (rootEl()) {
|
|
105
102
|
const el = rootEl();
|
|
106
103
|
const fontSize = getComputedStyle(el).fontSize;
|
|
107
|
-
el
|
|
104
|
+
el?.style.setProperty("--tsrd-font-size", fontSize);
|
|
108
105
|
}
|
|
109
106
|
});
|
|
110
107
|
const {
|
|
@@ -1 +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","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","_$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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"}
|
|
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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"}
|
|
@@ -1 +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,
|
|
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,QAAAA,OAAA,MAAAC,IAAAA,UAAAR,MACnBF,OAAAA,EAASW,cAAc,CAAA;AAAA,WAAAT;AAAAA,EAAA,GAAA;AASpC;AAACU,IAAAA,eAAA,CAAA,OAAA,CAAA;;"}
|