@tanstack/solid-router 1.20.3-alpha.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/README.md +29 -0
- package/dist/cjs/Asset.cjs +49 -0
- package/dist/cjs/Asset.cjs.map +1 -0
- package/dist/cjs/Asset.d.cts +2 -0
- package/dist/cjs/CatchBoundary.cjs +92 -0
- package/dist/cjs/CatchBoundary.cjs.map +1 -0
- package/dist/cjs/CatchBoundary.d.cts +11 -0
- package/dist/cjs/ClientOnly.cjs +36 -0
- package/dist/cjs/ClientOnly.cjs.map +1 -0
- package/dist/cjs/ClientOnly.d.cts +49 -0
- package/dist/cjs/HeadContent.cjs +146 -0
- package/dist/cjs/HeadContent.cjs.map +1 -0
- package/dist/cjs/HeadContent.d.cts +8 -0
- package/dist/cjs/Match.cjs +339 -0
- package/dist/cjs/Match.cjs.map +1 -0
- package/dist/cjs/Match.d.cts +8 -0
- package/dist/cjs/Matches.cjs +151 -0
- package/dist/cjs/Matches.cjs.map +1 -0
- package/dist/cjs/Matches.d.cts +24 -0
- package/dist/cjs/RouterProvider.cjs +45 -0
- package/dist/cjs/RouterProvider.cjs.map +1 -0
- package/dist/cjs/RouterProvider.d.cts +10 -0
- package/dist/cjs/SafeFragment.cjs +8 -0
- package/dist/cjs/SafeFragment.cjs.map +1 -0
- package/dist/cjs/SafeFragment.d.cts +1 -0
- package/dist/cjs/ScriptOnce.cjs +23 -0
- package/dist/cjs/ScriptOnce.cjs.map +1 -0
- package/dist/cjs/ScriptOnce.d.cts +5 -0
- package/dist/cjs/Scripts.cjs +48 -0
- package/dist/cjs/Scripts.cjs.map +1 -0
- package/dist/cjs/Scripts.d.cts +1 -0
- package/dist/cjs/ScrollRestoration.cjs +37 -0
- package/dist/cjs/ScrollRestoration.cjs.map +1 -0
- package/dist/cjs/ScrollRestoration.d.cts +14 -0
- package/dist/cjs/Transitioner.cjs +124 -0
- package/dist/cjs/Transitioner.cjs.map +1 -0
- package/dist/cjs/Transitioner.d.cts +1 -0
- package/dist/cjs/awaited.cjs +49 -0
- package/dist/cjs/awaited.cjs.map +1 -0
- package/dist/cjs/awaited.d.cts +11 -0
- package/dist/cjs/fileRoute.cjs +103 -0
- package/dist/cjs/fileRoute.cjs.map +1 -0
- package/dist/cjs/fileRoute.d.cts +54 -0
- package/dist/cjs/history.d.cts +8 -0
- package/dist/cjs/index.cjs +289 -0
- package/dist/cjs/index.cjs.map +1 -0
- package/dist/cjs/index.d.cts +52 -0
- package/dist/cjs/lazyRouteComponent.cjs +73 -0
- package/dist/cjs/lazyRouteComponent.cjs.map +1 -0
- package/dist/cjs/lazyRouteComponent.d.cts +2 -0
- package/dist/cjs/link.cjs +278 -0
- package/dist/cjs/link.cjs.map +1 -0
- package/dist/cjs/link.d.cts +44 -0
- package/dist/cjs/matchContext.cjs +25 -0
- package/dist/cjs/matchContext.cjs.map +1 -0
- package/dist/cjs/matchContext.d.cts +3 -0
- package/dist/cjs/not-found.cjs +42 -0
- package/dist/cjs/not-found.cjs.map +1 -0
- package/dist/cjs/not-found.d.cts +8 -0
- package/dist/cjs/renderRouteNotFound.cjs +23 -0
- package/dist/cjs/renderRouteNotFound.cjs.map +1 -0
- package/dist/cjs/renderRouteNotFound.d.cts +2 -0
- package/dist/cjs/route.cjs +236 -0
- package/dist/cjs/route.cjs.map +1 -0
- package/dist/cjs/route.d.cts +95 -0
- package/dist/cjs/router.cjs +22 -0
- package/dist/cjs/router.cjs.map +1 -0
- package/dist/cjs/router.d.cts +69 -0
- package/dist/cjs/routerContext.cjs +33 -0
- package/dist/cjs/routerContext.cjs.map +1 -0
- package/dist/cjs/routerContext.d.cts +8 -0
- package/dist/cjs/scroll-restoration.cjs +23 -0
- package/dist/cjs/scroll-restoration.cjs.map +1 -0
- package/dist/cjs/scroll-restoration.d.cts +1 -0
- package/dist/cjs/typePrimitives.d.cts +10 -0
- package/dist/cjs/useBlocker.cjs +165 -0
- package/dist/cjs/useBlocker.cjs.map +1 -0
- package/dist/cjs/useBlocker.d.cts +67 -0
- package/dist/cjs/useCanGoBack.cjs +8 -0
- package/dist/cjs/useCanGoBack.cjs.map +1 -0
- package/dist/cjs/useCanGoBack.d.cts +1 -0
- package/dist/cjs/useLoaderData.cjs +14 -0
- package/dist/cjs/useLoaderData.cjs.map +1 -0
- package/dist/cjs/useLoaderData.d.cts +8 -0
- package/dist/cjs/useLoaderDeps.cjs +17 -0
- package/dist/cjs/useLoaderDeps.cjs.map +1 -0
- package/dist/cjs/useLoaderDeps.d.cts +7 -0
- package/dist/cjs/useLocation.cjs +10 -0
- package/dist/cjs/useLocation.cjs.map +1 -0
- package/dist/cjs/useLocation.d.cts +7 -0
- package/dist/cjs/useMatch.cjs +39 -0
- package/dist/cjs/useMatch.cjs.map +1 -0
- package/dist/cjs/useMatch.d.cts +10 -0
- package/dist/cjs/useNavigate.cjs +46 -0
- package/dist/cjs/useNavigate.cjs.map +1 -0
- package/dist/cjs/useNavigate.d.cts +5 -0
- package/dist/cjs/useParams.cjs +15 -0
- package/dist/cjs/useParams.cjs.map +1 -0
- package/dist/cjs/useParams.d.cts +9 -0
- package/dist/cjs/useRouteContext.cjs +11 -0
- package/dist/cjs/useRouteContext.cjs.map +1 -0
- package/dist/cjs/useRouteContext.d.cts +4 -0
- package/dist/cjs/useRouter.cjs +29 -0
- package/dist/cjs/useRouter.cjs.map +1 -0
- package/dist/cjs/useRouter.d.cts +4 -0
- package/dist/cjs/useRouterState.cjs +16 -0
- package/dist/cjs/useRouterState.cjs.map +1 -0
- package/dist/cjs/useRouterState.d.cts +8 -0
- package/dist/cjs/useSearch.cjs +15 -0
- package/dist/cjs/useSearch.cjs.map +1 -0
- package/dist/cjs/useSearch.d.cts +9 -0
- package/dist/cjs/utils.cjs +58 -0
- package/dist/cjs/utils.cjs.map +1 -0
- package/dist/cjs/utils.d.cts +34 -0
- package/dist/esm/Asset.d.ts +2 -0
- package/dist/esm/Asset.js +49 -0
- package/dist/esm/Asset.js.map +1 -0
- package/dist/esm/CatchBoundary.d.ts +11 -0
- package/dist/esm/CatchBoundary.js +75 -0
- package/dist/esm/CatchBoundary.js.map +1 -0
- package/dist/esm/ClientOnly.d.ts +49 -0
- package/dist/esm/ClientOnly.js +19 -0
- package/dist/esm/ClientOnly.js.map +1 -0
- package/dist/esm/HeadContent.d.ts +8 -0
- package/dist/esm/HeadContent.js +129 -0
- package/dist/esm/HeadContent.js.map +1 -0
- package/dist/esm/Match.d.ts +8 -0
- package/dist/esm/Match.js +322 -0
- package/dist/esm/Match.js.map +1 -0
- package/dist/esm/Matches.d.ts +24 -0
- package/dist/esm/Matches.js +134 -0
- package/dist/esm/Matches.js.map +1 -0
- package/dist/esm/RouterProvider.d.ts +10 -0
- package/dist/esm/RouterProvider.js +45 -0
- package/dist/esm/RouterProvider.js.map +1 -0
- package/dist/esm/SafeFragment.d.ts +1 -0
- package/dist/esm/SafeFragment.js +8 -0
- package/dist/esm/SafeFragment.js.map +1 -0
- package/dist/esm/ScriptOnce.d.ts +5 -0
- package/dist/esm/ScriptOnce.js +23 -0
- package/dist/esm/ScriptOnce.js.map +1 -0
- package/dist/esm/Scripts.d.ts +1 -0
- package/dist/esm/Scripts.js +48 -0
- package/dist/esm/Scripts.js.map +1 -0
- package/dist/esm/ScrollRestoration.d.ts +14 -0
- package/dist/esm/ScrollRestoration.js +37 -0
- package/dist/esm/ScrollRestoration.js.map +1 -0
- package/dist/esm/Transitioner.d.ts +1 -0
- package/dist/esm/Transitioner.js +107 -0
- package/dist/esm/Transitioner.js.map +1 -0
- package/dist/esm/awaited.d.ts +11 -0
- package/dist/esm/awaited.js +32 -0
- package/dist/esm/awaited.js.map +1 -0
- package/dist/esm/fileRoute.d.ts +54 -0
- package/dist/esm/fileRoute.js +103 -0
- package/dist/esm/fileRoute.js.map +1 -0
- package/dist/esm/history.d.ts +8 -0
- package/dist/esm/index.d.ts +52 -0
- package/dist/esm/index.js +151 -0
- package/dist/esm/index.js.map +1 -0
- package/dist/esm/lazyRouteComponent.d.ts +2 -0
- package/dist/esm/lazyRouteComponent.js +73 -0
- package/dist/esm/lazyRouteComponent.js.map +1 -0
- package/dist/esm/link.d.ts +44 -0
- package/dist/esm/link.js +261 -0
- package/dist/esm/link.js.map +1 -0
- package/dist/esm/matchContext.d.ts +3 -0
- package/dist/esm/matchContext.js +8 -0
- package/dist/esm/matchContext.js.map +1 -0
- package/dist/esm/not-found.d.ts +8 -0
- package/dist/esm/not-found.js +42 -0
- package/dist/esm/not-found.js.map +1 -0
- package/dist/esm/renderRouteNotFound.d.ts +2 -0
- package/dist/esm/renderRouteNotFound.js +23 -0
- package/dist/esm/renderRouteNotFound.js.map +1 -0
- package/dist/esm/route.d.ts +95 -0
- package/dist/esm/route.js +236 -0
- package/dist/esm/route.js.map +1 -0
- package/dist/esm/router.d.ts +69 -0
- package/dist/esm/router.js +22 -0
- package/dist/esm/router.js.map +1 -0
- package/dist/esm/routerContext.d.ts +8 -0
- package/dist/esm/routerContext.js +16 -0
- package/dist/esm/routerContext.js.map +1 -0
- package/dist/esm/scroll-restoration.d.ts +1 -0
- package/dist/esm/scroll-restoration.js +23 -0
- package/dist/esm/scroll-restoration.js.map +1 -0
- package/dist/esm/typePrimitives.d.ts +10 -0
- package/dist/esm/useBlocker.d.ts +67 -0
- package/dist/esm/useBlocker.js +148 -0
- package/dist/esm/useBlocker.js.map +1 -0
- package/dist/esm/useCanGoBack.d.ts +1 -0
- package/dist/esm/useCanGoBack.js +8 -0
- package/dist/esm/useCanGoBack.js.map +1 -0
- package/dist/esm/useLoaderData.d.ts +8 -0
- package/dist/esm/useLoaderData.js +14 -0
- package/dist/esm/useLoaderData.js.map +1 -0
- package/dist/esm/useLoaderDeps.d.ts +7 -0
- package/dist/esm/useLoaderDeps.js +17 -0
- package/dist/esm/useLoaderDeps.js.map +1 -0
- package/dist/esm/useLocation.d.ts +7 -0
- package/dist/esm/useLocation.js +10 -0
- package/dist/esm/useLocation.js.map +1 -0
- package/dist/esm/useMatch.d.ts +10 -0
- package/dist/esm/useMatch.js +22 -0
- package/dist/esm/useMatch.js.map +1 -0
- package/dist/esm/useNavigate.d.ts +5 -0
- package/dist/esm/useNavigate.js +29 -0
- package/dist/esm/useNavigate.js.map +1 -0
- package/dist/esm/useParams.d.ts +9 -0
- package/dist/esm/useParams.js +15 -0
- package/dist/esm/useParams.js.map +1 -0
- package/dist/esm/useRouteContext.d.ts +4 -0
- package/dist/esm/useRouteContext.js +11 -0
- package/dist/esm/useRouteContext.js.map +1 -0
- package/dist/esm/useRouter.d.ts +4 -0
- package/dist/esm/useRouter.js +12 -0
- package/dist/esm/useRouter.js.map +1 -0
- package/dist/esm/useRouterState.d.ts +8 -0
- package/dist/esm/useRouterState.js +16 -0
- package/dist/esm/useRouterState.js.map +1 -0
- package/dist/esm/useSearch.d.ts +9 -0
- package/dist/esm/useSearch.js +15 -0
- package/dist/esm/useSearch.js.map +1 -0
- package/dist/esm/utils.d.ts +34 -0
- package/dist/esm/utils.js +41 -0
- package/dist/esm/utils.js.map +1 -0
- package/dist/source/Asset.d.ts +2 -0
- package/dist/source/Asset.jsx +23 -0
- package/dist/source/Asset.jsx.map +1 -0
- package/dist/source/CatchBoundary.d.ts +11 -0
- package/dist/source/CatchBoundary.jsx +43 -0
- package/dist/source/CatchBoundary.jsx.map +1 -0
- package/dist/source/ClientOnly.d.ts +49 -0
- package/dist/source/ClientOnly.jsx +51 -0
- package/dist/source/ClientOnly.jsx.map +1 -0
- package/dist/source/HeadContent.d.ts +8 -0
- package/dist/source/HeadContent.jsx +143 -0
- package/dist/source/HeadContent.jsx.map +1 -0
- package/dist/source/Match.d.ts +8 -0
- package/dist/source/Match.jsx +255 -0
- package/dist/source/Match.jsx.map +1 -0
- package/dist/source/Matches.d.ts +24 -0
- package/dist/source/Matches.jsx +103 -0
- package/dist/source/Matches.jsx.map +1 -0
- package/dist/source/RouterProvider.d.ts +10 -0
- package/dist/source/RouterProvider.jsx +27 -0
- package/dist/source/RouterProvider.jsx.map +1 -0
- package/dist/source/SafeFragment.d.ts +1 -0
- package/dist/source/SafeFragment.jsx +4 -0
- package/dist/source/SafeFragment.jsx.map +1 -0
- package/dist/source/ScriptOnce.d.ts +5 -0
- package/dist/source/ScriptOnce.jsx +17 -0
- package/dist/source/ScriptOnce.jsx.map +1 -0
- package/dist/source/Scripts.d.ts +1 -0
- package/dist/source/Scripts.jsx +49 -0
- package/dist/source/Scripts.jsx.map +1 -0
- package/dist/source/ScrollRestoration.d.ts +14 -0
- package/dist/source/ScrollRestoration.jsx +37 -0
- package/dist/source/ScrollRestoration.jsx.map +1 -0
- package/dist/source/Transitioner.d.ts +1 -0
- package/dist/source/Transitioner.jsx +102 -0
- package/dist/source/Transitioner.jsx.map +1 -0
- package/dist/source/awaited.d.ts +11 -0
- package/dist/source/awaited.jsx +19 -0
- package/dist/source/awaited.jsx.map +1 -0
- package/dist/source/fileRoute.d.ts +54 -0
- package/dist/source/fileRoute.js +98 -0
- package/dist/source/fileRoute.js.map +1 -0
- package/dist/source/history.d.ts +8 -0
- package/dist/source/history.js +2 -0
- package/dist/source/history.js.map +1 -0
- package/dist/source/index.d.ts +52 -0
- package/dist/source/index.jsx +43 -0
- package/dist/source/index.jsx.map +1 -0
- package/dist/source/lazyRouteComponent.d.ts +2 -0
- package/dist/source/lazyRouteComponent.jsx +83 -0
- package/dist/source/lazyRouteComponent.jsx.map +1 -0
- package/dist/source/link.d.ts +44 -0
- package/dist/source/link.jsx +335 -0
- package/dist/source/link.jsx.map +1 -0
- package/dist/source/matchContext.d.ts +3 -0
- package/dist/source/matchContext.jsx +5 -0
- package/dist/source/matchContext.jsx.map +1 -0
- package/dist/source/not-found.d.ts +8 -0
- package/dist/source/not-found.jsx +30 -0
- package/dist/source/not-found.jsx.map +1 -0
- package/dist/source/renderRouteNotFound.d.ts +2 -0
- package/dist/source/renderRouteNotFound.jsx +15 -0
- package/dist/source/renderRouteNotFound.jsx.map +1 -0
- package/dist/source/route.d.ts +96 -0
- package/dist/source/route.jsx +179 -0
- package/dist/source/route.jsx.map +1 -0
- package/dist/source/router.d.ts +70 -0
- package/dist/source/router.js +21 -0
- package/dist/source/router.js.map +1 -0
- package/dist/source/routerContext.d.ts +8 -0
- package/dist/source/routerContext.jsx +13 -0
- package/dist/source/routerContext.jsx.map +1 -0
- package/dist/source/scroll-restoration.d.ts +1 -0
- package/dist/source/scroll-restoration.jsx +16 -0
- package/dist/source/scroll-restoration.jsx.map +1 -0
- package/dist/source/typePrimitives.d.ts +10 -0
- package/dist/source/typePrimitives.js +2 -0
- package/dist/source/typePrimitives.js.map +1 -0
- package/dist/source/useBlocker.d.ts +67 -0
- package/dist/source/useBlocker.jsx +136 -0
- package/dist/source/useBlocker.jsx.map +1 -0
- package/dist/source/useCanGoBack.d.ts +1 -0
- package/dist/source/useCanGoBack.js +5 -0
- package/dist/source/useCanGoBack.js.map +1 -0
- package/dist/source/useLoaderData.d.ts +8 -0
- package/dist/source/useLoaderData.jsx +11 -0
- package/dist/source/useLoaderData.jsx.map +1 -0
- package/dist/source/useLoaderDeps.d.ts +7 -0
- package/dist/source/useLoaderDeps.jsx +11 -0
- package/dist/source/useLoaderDeps.jsx.map +1 -0
- package/dist/source/useLocation.d.ts +7 -0
- package/dist/source/useLocation.jsx +7 -0
- package/dist/source/useLocation.jsx.map +1 -0
- package/dist/source/useMatch.d.ts +10 -0
- package/dist/source/useMatch.jsx +19 -0
- package/dist/source/useMatch.jsx.map +1 -0
- package/dist/source/useNavigate.d.ts +5 -0
- package/dist/source/useNavigate.jsx +18 -0
- package/dist/source/useNavigate.jsx.map +1 -0
- package/dist/source/useParams.d.ts +9 -0
- package/dist/source/useParams.jsx +12 -0
- package/dist/source/useParams.jsx.map +1 -0
- package/dist/source/useRouteContext.d.ts +4 -0
- package/dist/source/useRouteContext.js +8 -0
- package/dist/source/useRouteContext.js.map +1 -0
- package/dist/source/useRouter.d.ts +4 -0
- package/dist/source/useRouter.jsx +9 -0
- package/dist/source/useRouter.jsx.map +1 -0
- package/dist/source/useRouterState.d.ts +8 -0
- package/dist/source/useRouterState.jsx +14 -0
- package/dist/source/useRouterState.jsx.map +1 -0
- package/dist/source/useSearch.d.ts +9 -0
- package/dist/source/useSearch.jsx +12 -0
- package/dist/source/useSearch.jsx.map +1 -0
- package/dist/source/utils.d.ts +34 -0
- package/dist/source/utils.js +59 -0
- package/dist/source/utils.js.map +1 -0
- package/package.json +80 -0
- package/src/Asset.tsx +24 -0
- package/src/CatchBoundary.tsx +78 -0
- package/src/ClientOnly.tsx +65 -0
- package/src/HeadContent.tsx +174 -0
- package/src/Match.tsx +357 -0
- package/src/Matches.tsx +243 -0
- package/src/RouterProvider.tsx +79 -0
- package/src/SafeFragment.tsx +3 -0
- package/src/ScriptOnce.tsx +30 -0
- package/src/Scripts.tsx +65 -0
- package/src/ScrollRestoration.tsx +69 -0
- package/src/Transitioner.tsx +140 -0
- package/src/awaited.tsx +40 -0
- package/src/fileRoute.ts +256 -0
- package/src/history.ts +9 -0
- package/src/index.tsx +374 -0
- package/src/lazyRouteComponent.tsx +110 -0
- package/src/link.tsx +597 -0
- package/src/matchContext.tsx +10 -0
- package/src/not-found.tsx +42 -0
- package/src/renderRouteNotFound.tsx +26 -0
- package/src/route.tsx +550 -0
- package/src/router.ts +112 -0
- package/src/routerContext.tsx +26 -0
- package/src/scroll-restoration.tsx +29 -0
- package/src/typePrimitives.ts +74 -0
- package/src/useBlocker.tsx +305 -0
- package/src/useCanGoBack.ts +5 -0
- package/src/useLoaderData.tsx +50 -0
- package/src/useLoaderDeps.tsx +46 -0
- package/src/useLocation.tsx +30 -0
- package/src/useMatch.tsx +96 -0
- package/src/useNavigate.tsx +40 -0
- package/src/useParams.tsx +71 -0
- package/src/useRouteContext.ts +31 -0
- package/src/useRouter.tsx +15 -0
- package/src/useRouterState.tsx +36 -0
- package/src/useSearch.tsx +71 -0
- package/src/utils.ts +79 -0
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import type { AnyRouter, RegisteredRouter, RouterState } from '@tanstack/router-core';
|
|
2
|
+
import type { Accessor } from 'solid-js';
|
|
3
|
+
export interface UseLocationBaseOptions<TRouter extends AnyRouter, TSelected> {
|
|
4
|
+
select?: (state: RouterState<TRouter['routeTree']>['location']) => TSelected;
|
|
5
|
+
}
|
|
6
|
+
export type UseLocationResult<TRouter extends AnyRouter, TSelected> = unknown extends TSelected ? RouterState<TRouter['routeTree']>['location'] : TSelected;
|
|
7
|
+
export declare function useLocation<TRouter extends AnyRouter = RegisteredRouter, TSelected = unknown>(opts?: UseLocationBaseOptions<TRouter, TSelected>): Accessor<UseLocationResult<TRouter, TSelected>>;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useLocation.jsx","sourceRoot":"","sources":["../../src/useLocation.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAA;AAmBjD,MAAM,UAAU,WAAW,CAIzB,IAAiD;IAEjD,OAAO,cAAc,CAAC;QACpB,MAAM,EAAE,CAAC,KAAU,EAAE,EAAE,CACrB,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,QAAQ;KACvD,CAAoD,CAAA;AAC9D,CAAC"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import * as Solid from 'solid-js';
|
|
2
|
+
import type { AnyRouter, MakeRouteMatch, MakeRouteMatchUnion, RegisteredRouter, StrictOrFrom, ThrowConstraint, ThrowOrOptional } from '@tanstack/router-core';
|
|
3
|
+
export interface UseMatchBaseOptions<TRouter extends AnyRouter, TFrom, TStrict extends boolean, TThrow extends boolean, TSelected> {
|
|
4
|
+
select?: (match: MakeRouteMatch<TRouter['routeTree'], TFrom, TStrict>) => TSelected;
|
|
5
|
+
shouldThrow?: TThrow;
|
|
6
|
+
}
|
|
7
|
+
export type UseMatchRoute<out TFrom> = <TRouter extends AnyRouter = RegisteredRouter, TSelected = unknown>(opts?: UseMatchBaseOptions<TRouter, TFrom, true, true, TSelected>) => Solid.Accessor<UseMatchResult<TRouter, TFrom, true, TSelected>>;
|
|
8
|
+
export type UseMatchOptions<TRouter extends AnyRouter, TFrom extends string | undefined, TStrict extends boolean, TThrow extends boolean, TSelected> = StrictOrFrom<TRouter, TFrom, TStrict> & UseMatchBaseOptions<TRouter, TFrom, TStrict, TThrow, TSelected>;
|
|
9
|
+
export type UseMatchResult<TRouter extends AnyRouter, TFrom, TStrict extends boolean, TSelected> = unknown extends TSelected ? TStrict extends true ? MakeRouteMatch<TRouter['routeTree'], TFrom, TStrict> : MakeRouteMatchUnion<TRouter> : TSelected;
|
|
10
|
+
export declare function useMatch<TRouter extends AnyRouter = RegisteredRouter, const TFrom extends string | undefined = undefined, TStrict extends boolean = true, TThrow extends boolean = true, TSelected = unknown>(opts: UseMatchOptions<TRouter, TFrom, TStrict, ThrowConstraint<TStrict, TThrow>, TSelected>): Solid.Accessor<ThrowOrOptional<UseMatchResult<TRouter, TFrom, TStrict, TSelected>, TThrow>>;
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import * as Solid from 'solid-js';
|
|
2
|
+
import invariant from 'tiny-invariant';
|
|
3
|
+
import { useRouterState } from './useRouterState';
|
|
4
|
+
import { dummyMatchContext, matchContext } from './matchContext';
|
|
5
|
+
export function useMatch(opts) {
|
|
6
|
+
const nearestMatchId = Solid.useContext(opts.from ? dummyMatchContext : matchContext);
|
|
7
|
+
const matchSelection = useRouterState({
|
|
8
|
+
select: (state) => {
|
|
9
|
+
const match = state.matches.find((d) => opts.from ? opts.from === d.routeId : d.id === nearestMatchId());
|
|
10
|
+
invariant(!((opts.shouldThrow ?? true) && !match), `Could not find ${opts.from ? `an active match from "${opts.from}"` : 'a nearest match!'}`);
|
|
11
|
+
if (match === undefined) {
|
|
12
|
+
return undefined;
|
|
13
|
+
}
|
|
14
|
+
return opts.select ? opts.select(match) : match;
|
|
15
|
+
},
|
|
16
|
+
});
|
|
17
|
+
return matchSelection;
|
|
18
|
+
}
|
|
19
|
+
//# sourceMappingURL=useMatch.jsx.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useMatch.jsx","sourceRoot":"","sources":["../../src/useMatch.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,UAAU,CAAA;AACjC,OAAO,SAAS,MAAM,gBAAgB,CAAA;AACtC,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAA;AACjD,OAAO,EAAE,iBAAiB,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAA;AAmDhE,MAAM,UAAU,QAAQ,CAOtB,IAMC;IAID,MAAM,cAAc,GAAG,KAAK,CAAC,UAAU,CACrC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,YAAY,CAC7C,CAAA;IAED,MAAM,cAAc,GAAG,cAAc,CAAC;QACpC,MAAM,EAAE,CAAC,KAAU,EAAE,EAAE;YACrB,MAAM,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAM,EAAE,EAAE,CAC1C,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,KAAK,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,KAAK,cAAc,EAAE,CAChE,CAAA;YAED,SAAS,CACP,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,EACvC,kBAAkB,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,yBAAyB,IAAI,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,kBAAkB,EAAE,CAC3F,CAAA;YAED,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;gBACxB,OAAO,SAAS,CAAA;YAClB,CAAC;YAED,OAAO,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAA;QACjD,CAAC;KACK,CAAC,CAAA;IAET,OAAO,cAAqB,CAAA;AAC9B,CAAC"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import type { AnyRouter, FromPathOption, NavigateOptions, RegisteredRouter, UseNavigateResult } from '@tanstack/router-core';
|
|
2
|
+
export declare function useNavigate<TRouter extends AnyRouter = RegisteredRouter, TDefaultFrom extends string = string>(_defaultOpts?: {
|
|
3
|
+
from?: FromPathOption<TRouter, TDefaultFrom>;
|
|
4
|
+
}): UseNavigateResult<TDefaultFrom>;
|
|
5
|
+
export declare function Navigate<TRouter extends AnyRouter = RegisteredRouter, const TFrom extends string = string, const TTo extends string | undefined = undefined, const TMaskFrom extends string = TFrom, const TMaskTo extends string = ''>(props: NavigateOptions<TRouter, TFrom, TTo, TMaskFrom, TMaskTo>): null;
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import * as Solid from 'solid-js';
|
|
2
|
+
import { useRouter } from './useRouter';
|
|
3
|
+
export function useNavigate(_defaultOpts) {
|
|
4
|
+
const { navigate } = useRouter();
|
|
5
|
+
return ((options) => {
|
|
6
|
+
return navigate({ from: _defaultOpts?.from, ...options });
|
|
7
|
+
});
|
|
8
|
+
}
|
|
9
|
+
export function Navigate(props) {
|
|
10
|
+
const { navigate } = useRouter();
|
|
11
|
+
Solid.onMount(() => {
|
|
12
|
+
navigate({
|
|
13
|
+
...props,
|
|
14
|
+
});
|
|
15
|
+
});
|
|
16
|
+
return null;
|
|
17
|
+
}
|
|
18
|
+
//# sourceMappingURL=useNavigate.jsx.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useNavigate.jsx","sourceRoot":"","sources":["../../src/useNavigate.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,UAAU,CAAA;AACjC,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAA;AASvC,MAAM,UAAU,WAAW,CAGzB,YAED;IACC,MAAM,EAAE,QAAQ,EAAE,GAAG,SAAS,EAAE,CAAA;IAEhC,OAAO,CAAC,CAAC,OAAwB,EAAE,EAAE;QACnC,OAAO,QAAQ,CAAC,EAAE,IAAI,EAAE,YAAY,EAAE,IAAI,EAAE,GAAG,OAAO,EAAE,CAAC,CAAA;IAC3D,CAAC,CAAoC,CAAA;AACvC,CAAC;AAED,MAAM,UAAU,QAAQ,CAMtB,KAA+D;IAC/D,MAAM,EAAE,QAAQ,EAAE,GAAG,SAAS,EAAE,CAAA;IAEhC,KAAK,CAAC,OAAO,CAAC,GAAG,EAAE;QACjB,QAAQ,CAAC;YACP,GAAG,KAAK;SACT,CAAC,CAAA;IACJ,CAAC,CAAC,CAAA;IAEF,OAAO,IAAI,CAAA;AACb,CAAC"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import type { Accessor } from 'solid-js';
|
|
2
|
+
import type { AnyRouter, RegisteredRouter, ResolveUseParams, StrictOrFrom, ThrowConstraint, ThrowOrOptional, UseParamsResult } from '@tanstack/router-core';
|
|
3
|
+
export interface UseParamsBaseOptions<TRouter extends AnyRouter, TFrom, TStrict extends boolean, TThrow extends boolean, TSelected> {
|
|
4
|
+
select?: (params: ResolveUseParams<TRouter, TFrom, TStrict>) => TSelected;
|
|
5
|
+
shouldThrow?: TThrow;
|
|
6
|
+
}
|
|
7
|
+
export type UseParamsOptions<TRouter extends AnyRouter, TFrom extends string | undefined, TStrict extends boolean, TThrow extends boolean, TSelected> = StrictOrFrom<TRouter, TFrom, TStrict> & UseParamsBaseOptions<TRouter, TFrom, TStrict, TThrow, TSelected>;
|
|
8
|
+
export type UseParamsRoute<out TFrom> = <TRouter extends AnyRouter = RegisteredRouter, TSelected = unknown>(opts?: UseParamsBaseOptions<TRouter, TFrom, true, true, TSelected>) => Accessor<UseParamsResult<TRouter, TFrom, true, TSelected>>;
|
|
9
|
+
export declare function useParams<TRouter extends AnyRouter = RegisteredRouter, const TFrom extends string | undefined = undefined, TStrict extends boolean = true, TThrow extends boolean = true, TSelected = unknown>(opts: UseParamsOptions<TRouter, TFrom, TStrict, ThrowConstraint<TStrict, TThrow>, TSelected>): Accessor<ThrowOrOptional<UseParamsResult<TRouter, TFrom, TStrict, TSelected>, TThrow>>;
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { useMatch } from './useMatch';
|
|
2
|
+
export function useParams(opts) {
|
|
3
|
+
return useMatch({
|
|
4
|
+
from: opts.from,
|
|
5
|
+
strict: opts.strict,
|
|
6
|
+
shouldThrow: opts.shouldThrow,
|
|
7
|
+
select: (match) => {
|
|
8
|
+
return opts.select ? opts.select(match.params) : match.params;
|
|
9
|
+
},
|
|
10
|
+
});
|
|
11
|
+
}
|
|
12
|
+
//# sourceMappingURL=useParams.jsx.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useParams.jsx","sourceRoot":"","sources":["../../src/useParams.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAA;AA6CrC,MAAM,UAAU,SAAS,CAOvB,IAMC;IAID,OAAO,QAAQ,CAAC;QACd,IAAI,EAAE,IAAI,CAAC,IAAK;QAChB,MAAM,EAAE,IAAI,CAAC,MAAM;QACnB,WAAW,EAAE,IAAI,CAAC,WAAW;QAC7B,MAAM,EAAE,CAAC,KAAU,EAAE,EAAE;YACrB,OAAO,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAA;QAC/D,CAAC;KACK,CAAQ,CAAA;AAClB,CAAC"}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import type { Accessor } from 'solid-js';
|
|
2
|
+
import type { AnyRouter, RegisteredRouter, UseRouteContextBaseOptions, UseRouteContextOptions, UseRouteContextResult } from '@tanstack/router-core';
|
|
3
|
+
export type UseRouteContextRoute<out TFrom> = <TRouter extends AnyRouter = RegisteredRouter, TSelected = unknown>(opts?: UseRouteContextBaseOptions<TRouter, TFrom, true, TSelected>) => Accessor<UseRouteContextResult<TRouter, TFrom, true, TSelected>>;
|
|
4
|
+
export declare function useRouteContext<TRouter extends AnyRouter = RegisteredRouter, const TFrom extends string | undefined = undefined, TStrict extends boolean = true, TSelected = unknown>(opts: UseRouteContextOptions<TRouter, TFrom, TStrict, TSelected>): Accessor<UseRouteContextResult<TRouter, TFrom, TStrict, TSelected>>;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useRouteContext.js","sourceRoot":"","sources":["../../src/useRouteContext.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAA;AAiBrC,MAAM,UAAU,eAAe,CAM7B,IAAgE;IAEhE,OAAO,QAAQ,CAAC;QACd,GAAI,IAAY;QAChB,MAAM,EAAE,CAAC,KAAK,EAAE,EAAE,CAChB,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO;KAC3D,CAAQ,CAAA;AACX,CAAC"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import * as Solid from 'solid-js';
|
|
2
|
+
import warning from 'tiny-warning';
|
|
3
|
+
import { getRouterContext } from './routerContext';
|
|
4
|
+
export function useRouter(opts) {
|
|
5
|
+
const value = Solid.useContext(getRouterContext());
|
|
6
|
+
warning(!((opts?.warn ?? true) && !value), 'useRouter must be used inside a <RouterProvider> component!');
|
|
7
|
+
return value;
|
|
8
|
+
}
|
|
9
|
+
//# sourceMappingURL=useRouter.jsx.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useRouter.jsx","sourceRoot":"","sources":["../../src/useRouter.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,UAAU,CAAA;AACjC,OAAO,OAAO,MAAM,cAAc,CAAA;AAClC,OAAO,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAA;AAGlD,MAAM,UAAU,SAAS,CAA+C,IAEvE;IACC,MAAM,KAAK,GAAG,KAAK,CAAC,UAAU,CAAC,gBAAgB,EAAS,CAAC,CAAA;IACzD,OAAO,CACL,CAAC,CAAC,CAAC,IAAI,EAAE,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,EACjC,6DAA6D,CAC9D,CAAA;IACD,OAAO,KAAY,CAAA;AACrB,CAAC"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import type { AnyRouter, RegisteredRouter, RouterState } from '@tanstack/router-core';
|
|
2
|
+
import type { Accessor } from 'solid-js';
|
|
3
|
+
export type UseRouterStateOptions<TRouter extends AnyRouter, TSelected> = {
|
|
4
|
+
router?: TRouter;
|
|
5
|
+
select?: (state: RouterState<TRouter['routeTree']>) => TSelected;
|
|
6
|
+
};
|
|
7
|
+
export type UseRouterStateResult<TRouter extends AnyRouter, TSelected> = unknown extends TSelected ? RouterState<TRouter['routeTree']> : TSelected;
|
|
8
|
+
export declare function useRouterState<TRouter extends AnyRouter = RegisteredRouter, TSelected = unknown>(opts?: UseRouterStateOptions<TRouter, TSelected>): Accessor<UseRouterStateResult<TRouter, TSelected>>;
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { useStore } from '@tanstack/solid-store';
|
|
2
|
+
import { useRouter } from './useRouter';
|
|
3
|
+
export function useRouterState(opts) {
|
|
4
|
+
const contextRouter = useRouter({
|
|
5
|
+
warn: opts?.router === undefined,
|
|
6
|
+
});
|
|
7
|
+
const router = opts?.router || contextRouter;
|
|
8
|
+
return useStore(router.__store, (state) => {
|
|
9
|
+
if (opts?.select)
|
|
10
|
+
return opts.select(state);
|
|
11
|
+
return state;
|
|
12
|
+
});
|
|
13
|
+
}
|
|
14
|
+
//# sourceMappingURL=useRouterState.jsx.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useRouterState.jsx","sourceRoot":"","sources":["../../src/useRouterState.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAA;AAChD,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAA;AAkBvC,MAAM,UAAU,cAAc,CAI5B,IAAgD;IAEhD,MAAM,aAAa,GAAG,SAAS,CAAU;QACvC,IAAI,EAAE,IAAI,EAAE,MAAM,KAAK,SAAS;KACjC,CAAC,CAAA;IACF,MAAM,MAAM,GAAG,IAAI,EAAE,MAAM,IAAI,aAAa,CAAA;IAE5C,OAAO,QAAQ,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC,KAAK,EAAE,EAAE;QACxC,IAAI,IAAI,EAAE,MAAM;YAAE,OAAO,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;QAE3C,OAAO,KAAK,CAAA;IACd,CAAC,CAAuD,CAAA;AAC1D,CAAC"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import type { Accessor } from 'solid-js';
|
|
2
|
+
import type { AnyRouter, RegisteredRouter, ResolveUseSearch, StrictOrFrom, ThrowConstraint, ThrowOrOptional, UseSearchResult } from '@tanstack/router-core';
|
|
3
|
+
export interface UseSearchBaseOptions<TRouter extends AnyRouter, TFrom, TStrict extends boolean, TThrow extends boolean, TSelected> {
|
|
4
|
+
select?: (state: ResolveUseSearch<TRouter, TFrom, TStrict>) => TSelected;
|
|
5
|
+
shouldThrow?: TThrow;
|
|
6
|
+
}
|
|
7
|
+
export type UseSearchOptions<TRouter extends AnyRouter, TFrom, TStrict extends boolean, TThrow extends boolean, TSelected> = StrictOrFrom<TRouter, TFrom, TStrict> & UseSearchBaseOptions<TRouter, TFrom, TStrict, TThrow, TSelected>;
|
|
8
|
+
export type UseSearchRoute<out TFrom> = <TRouter extends AnyRouter = RegisteredRouter, TSelected = unknown>(opts?: UseSearchBaseOptions<TRouter, TFrom, true, true, TSelected>) => Accessor<UseSearchResult<TRouter, TFrom, true, TSelected>>;
|
|
9
|
+
export declare function useSearch<TRouter extends AnyRouter = RegisteredRouter, const TFrom extends string | undefined = undefined, TStrict extends boolean = true, TThrow extends boolean = true, TSelected = unknown>(opts: UseSearchOptions<TRouter, TFrom, TStrict, ThrowConstraint<TStrict, TThrow>, TSelected>): Accessor<ThrowOrOptional<UseSearchResult<TRouter, TFrom, TStrict, TSelected>, TThrow>>;
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { useMatch } from './useMatch';
|
|
2
|
+
export function useSearch(opts) {
|
|
3
|
+
return useMatch({
|
|
4
|
+
from: opts.from,
|
|
5
|
+
strict: opts.strict,
|
|
6
|
+
shouldThrow: opts.shouldThrow,
|
|
7
|
+
select: (match) => {
|
|
8
|
+
return opts.select ? opts.select(match.search) : match.search;
|
|
9
|
+
},
|
|
10
|
+
});
|
|
11
|
+
}
|
|
12
|
+
//# sourceMappingURL=useSearch.jsx.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useSearch.jsx","sourceRoot":"","sources":["../../src/useSearch.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAA;AA6CrC,MAAM,UAAU,SAAS,CAOvB,IAMC;IAID,OAAO,QAAQ,CAAC;QACd,IAAI,EAAE,IAAI,CAAC,IAAK;QAChB,MAAM,EAAE,IAAI,CAAC,MAAM;QACnB,WAAW,EAAE,IAAI,CAAC,WAAW;QAC7B,MAAM,EAAE,CAAC,KAAU,EAAE,EAAE;YACrB,OAAO,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAA;QAC/D,CAAC;KACF,CAAQ,CAAA;AACX,CAAC"}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import * as Solid from 'solid-js';
|
|
2
|
+
export declare const useLayoutEffect: typeof Solid.createRenderEffect;
|
|
3
|
+
export declare const usePrevious: (fn: () => boolean) => Solid.Accessor<{
|
|
4
|
+
current: boolean | null;
|
|
5
|
+
previous: boolean | null;
|
|
6
|
+
}>;
|
|
7
|
+
/**
|
|
8
|
+
* React hook to wrap `IntersectionObserver`.
|
|
9
|
+
*
|
|
10
|
+
* This hook will create an `IntersectionObserver` and observe the ref passed to it.
|
|
11
|
+
*
|
|
12
|
+
* When the intersection changes, the callback will be called with the `IntersectionObserverEntry`.
|
|
13
|
+
*
|
|
14
|
+
* @param ref - The ref to observe
|
|
15
|
+
* @param intersectionObserverOptions - The options to pass to the IntersectionObserver
|
|
16
|
+
* @param options - The options to pass to the hook
|
|
17
|
+
* @param callback - The callback to call when the intersection changes
|
|
18
|
+
* @returns The IntersectionObserver instance
|
|
19
|
+
* @example
|
|
20
|
+
* ```tsx
|
|
21
|
+
* const MyComponent = () => {
|
|
22
|
+
* const ref = React.useRef<HTMLDivElement>(null)
|
|
23
|
+
* useIntersectionObserver(
|
|
24
|
+
* ref,
|
|
25
|
+
* (entry) => { doSomething(entry) },
|
|
26
|
+
* { rootMargin: '10px' },
|
|
27
|
+
* { disabled: false }
|
|
28
|
+
* )
|
|
29
|
+
* return <div ref={ref} />
|
|
30
|
+
* ```
|
|
31
|
+
*/
|
|
32
|
+
export declare function useIntersectionObserver<T extends Element>(ref: Solid.Accessor<T | null>, callback: (entry: IntersectionObserverEntry | undefined) => void, intersectionObserverOptions?: IntersectionObserverInit, options?: {
|
|
33
|
+
disabled?: boolean;
|
|
34
|
+
}): Solid.Accessor<IntersectionObserver | null>;
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
import * as Solid from 'solid-js';
|
|
2
|
+
export const useLayoutEffect = typeof window !== 'undefined' ? Solid.createRenderEffect : Solid.createEffect;
|
|
3
|
+
export const usePrevious = (fn) => {
|
|
4
|
+
return Solid.createMemo((prev = {
|
|
5
|
+
current: null,
|
|
6
|
+
previous: null,
|
|
7
|
+
}) => {
|
|
8
|
+
const current = fn();
|
|
9
|
+
if (prev.current !== current) {
|
|
10
|
+
prev.previous = prev.current;
|
|
11
|
+
prev.current = current;
|
|
12
|
+
}
|
|
13
|
+
return prev;
|
|
14
|
+
});
|
|
15
|
+
};
|
|
16
|
+
/**
|
|
17
|
+
* React hook to wrap `IntersectionObserver`.
|
|
18
|
+
*
|
|
19
|
+
* This hook will create an `IntersectionObserver` and observe the ref passed to it.
|
|
20
|
+
*
|
|
21
|
+
* When the intersection changes, the callback will be called with the `IntersectionObserverEntry`.
|
|
22
|
+
*
|
|
23
|
+
* @param ref - The ref to observe
|
|
24
|
+
* @param intersectionObserverOptions - The options to pass to the IntersectionObserver
|
|
25
|
+
* @param options - The options to pass to the hook
|
|
26
|
+
* @param callback - The callback to call when the intersection changes
|
|
27
|
+
* @returns The IntersectionObserver instance
|
|
28
|
+
* @example
|
|
29
|
+
* ```tsx
|
|
30
|
+
* const MyComponent = () => {
|
|
31
|
+
* const ref = React.useRef<HTMLDivElement>(null)
|
|
32
|
+
* useIntersectionObserver(
|
|
33
|
+
* ref,
|
|
34
|
+
* (entry) => { doSomething(entry) },
|
|
35
|
+
* { rootMargin: '10px' },
|
|
36
|
+
* { disabled: false }
|
|
37
|
+
* )
|
|
38
|
+
* return <div ref={ref} />
|
|
39
|
+
* ```
|
|
40
|
+
*/
|
|
41
|
+
export function useIntersectionObserver(ref, callback, intersectionObserverOptions = {}, options = {}) {
|
|
42
|
+
const isIntersectionObserverAvailable = typeof IntersectionObserver === 'function';
|
|
43
|
+
let observerRef = null;
|
|
44
|
+
Solid.createEffect(() => {
|
|
45
|
+
const r = ref();
|
|
46
|
+
if (!r || !isIntersectionObserverAvailable || options.disabled) {
|
|
47
|
+
return;
|
|
48
|
+
}
|
|
49
|
+
observerRef = new IntersectionObserver(([entry]) => {
|
|
50
|
+
callback(entry);
|
|
51
|
+
}, intersectionObserverOptions);
|
|
52
|
+
observerRef.observe(r);
|
|
53
|
+
Solid.onCleanup(() => {
|
|
54
|
+
observerRef?.disconnect();
|
|
55
|
+
});
|
|
56
|
+
});
|
|
57
|
+
return () => observerRef;
|
|
58
|
+
}
|
|
59
|
+
//# sourceMappingURL=utils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/utils.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,UAAU,CAAA;AAEjC,MAAM,CAAC,MAAM,eAAe,GAC1B,OAAO,MAAM,KAAK,WAAW,CAAC,CAAC,CAAC,KAAK,CAAC,kBAAkB,CAAC,CAAC,CAAC,KAAK,CAAC,YAAY,CAAA;AAE/E,MAAM,CAAC,MAAM,WAAW,GAAG,CAAC,EAAiB,EAAE,EAAE;IAC/C,OAAO,KAAK,CAAC,UAAU,CACrB,CACE,OAA8D;QAC5D,OAAO,EAAE,IAAI;QACb,QAAQ,EAAE,IAAI;KACf,EACD,EAAE;QACF,MAAM,OAAO,GAAG,EAAE,EAAE,CAAA;QAEpB,IAAI,IAAI,CAAC,OAAO,KAAK,OAAO,EAAE,CAAC;YAC7B,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAA;YAC5B,IAAI,CAAC,OAAO,GAAG,OAAO,CAAA;QACxB,CAAC;QAED,OAAO,IAAI,CAAA;IACb,CAAC,CACF,CAAA;AACH,CAAC,CAAA;AAED;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,MAAM,UAAU,uBAAuB,CACrC,GAA6B,EAC7B,QAAgE,EAChE,8BAAwD,EAAE,EAC1D,UAAkC,EAAE;IAEpC,MAAM,+BAA+B,GACnC,OAAO,oBAAoB,KAAK,UAAU,CAAA;IAC5C,IAAI,WAAW,GAAgC,IAAI,CAAA;IAEnD,KAAK,CAAC,YAAY,CAAC,GAAG,EAAE;QACtB,MAAM,CAAC,GAAG,GAAG,EAAE,CAAA;QACf,IAAI,CAAC,CAAC,IAAI,CAAC,+BAA+B,IAAI,OAAO,CAAC,QAAQ,EAAE,CAAC;YAC/D,OAAM;QACR,CAAC;QAED,WAAW,GAAG,IAAI,oBAAoB,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,EAAE;YACjD,QAAQ,CAAC,KAAK,CAAC,CAAA;QACjB,CAAC,EAAE,2BAA2B,CAAC,CAAA;QAE/B,WAAW,CAAC,OAAO,CAAC,CAAC,CAAC,CAAA;QAEtB,KAAK,CAAC,SAAS,CAAC,GAAG,EAAE;YACnB,WAAW,EAAE,UAAU,EAAE,CAAA;QAC3B,CAAC,CAAC,CAAA;IACJ,CAAC,CAAC,CAAA;IAEF,OAAO,GAAG,EAAE,CAAC,WAAW,CAAA;AAC1B,CAAC"}
|
package/package.json
ADDED
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@tanstack/solid-router",
|
|
3
|
+
"version": "1.20.3-alpha.1",
|
|
4
|
+
"description": "Modern and scalable routing for Solid applications",
|
|
5
|
+
"author": "Tanner Linsley",
|
|
6
|
+
"license": "MIT",
|
|
7
|
+
"repository": {
|
|
8
|
+
"type": "git",
|
|
9
|
+
"url": "https://github.com/TanStack/router.git",
|
|
10
|
+
"directory": "packages/solid-router"
|
|
11
|
+
},
|
|
12
|
+
"homepage": "https://tanstack.com/router",
|
|
13
|
+
"funding": {
|
|
14
|
+
"type": "github",
|
|
15
|
+
"url": "https://github.com/sponsors/tannerlinsley"
|
|
16
|
+
},
|
|
17
|
+
"keywords": [
|
|
18
|
+
"solidjs",
|
|
19
|
+
"location",
|
|
20
|
+
"router",
|
|
21
|
+
"routing",
|
|
22
|
+
"async",
|
|
23
|
+
"async router",
|
|
24
|
+
"typescript"
|
|
25
|
+
],
|
|
26
|
+
"type": "module",
|
|
27
|
+
"types": "dist/esm/index.d.ts",
|
|
28
|
+
"main": "dist/cjs/index.cjs",
|
|
29
|
+
"module": "dist/esm/index.js",
|
|
30
|
+
"exports": {
|
|
31
|
+
".": {
|
|
32
|
+
"solid": {
|
|
33
|
+
"types": "./dist/source/index.d.ts",
|
|
34
|
+
"default": "./dist/source/index.jsx"
|
|
35
|
+
},
|
|
36
|
+
"import": {
|
|
37
|
+
"types": "./dist/esm/index.d.ts",
|
|
38
|
+
"default": "./dist/esm/index.js"
|
|
39
|
+
},
|
|
40
|
+
"require": {
|
|
41
|
+
"types": "./dist/cjs/index.d.cts",
|
|
42
|
+
"default": "./dist/cjs/index.cjs"
|
|
43
|
+
}
|
|
44
|
+
},
|
|
45
|
+
"./package.json": "./package.json"
|
|
46
|
+
},
|
|
47
|
+
"sideEffects": false,
|
|
48
|
+
"files": [
|
|
49
|
+
"dist",
|
|
50
|
+
"src"
|
|
51
|
+
],
|
|
52
|
+
"engines": {
|
|
53
|
+
"node": ">=12"
|
|
54
|
+
},
|
|
55
|
+
"dependencies": {
|
|
56
|
+
"@solid-devtools/logger": "^0.9.4",
|
|
57
|
+
"@solid-primitives/refs": "^1.0.8",
|
|
58
|
+
"@solidjs/meta": "^0.29.4",
|
|
59
|
+
"@tanstack/solid-store": "^0.7.0",
|
|
60
|
+
"jsesc": "^3.0.2",
|
|
61
|
+
"tiny-invariant": "^1.3.3",
|
|
62
|
+
"tiny-warning": "^1.0.3",
|
|
63
|
+
"@tanstack/history": "1.20.3-alpha.1",
|
|
64
|
+
"@tanstack/router-core": "1.20.3-alpha.1"
|
|
65
|
+
},
|
|
66
|
+
"devDependencies": {
|
|
67
|
+
"@solidjs/testing-library": "^0.8.10",
|
|
68
|
+
"@testing-library/jest-dom": "^6.6.3",
|
|
69
|
+
"@types/jsesc": "^3.0.3",
|
|
70
|
+
"combinate": "^1.1.11",
|
|
71
|
+
"eslint-plugin-solid": "^0.14.5",
|
|
72
|
+
"solid-js": "^1.9.5",
|
|
73
|
+
"vite-plugin-solid": "^2.11.2",
|
|
74
|
+
"zod": "^3.23.8"
|
|
75
|
+
},
|
|
76
|
+
"peerDependencies": {
|
|
77
|
+
"solid-js": "^1.9.5"
|
|
78
|
+
},
|
|
79
|
+
"scripts": {}
|
|
80
|
+
}
|
package/src/Asset.tsx
ADDED
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { Meta, Style, Title } from '@solidjs/meta'
|
|
2
|
+
import type { RouterManagedTag } from '@tanstack/router-core'
|
|
3
|
+
|
|
4
|
+
export function Asset({ tag, attrs, children }: RouterManagedTag): any {
|
|
5
|
+
switch (tag) {
|
|
6
|
+
case 'title':
|
|
7
|
+
return <Title {...attrs}>{children}</Title>
|
|
8
|
+
case 'meta':
|
|
9
|
+
return <Meta {...attrs} />
|
|
10
|
+
case 'link':
|
|
11
|
+
return <link {...attrs} />
|
|
12
|
+
case 'style':
|
|
13
|
+
return <Style {...attrs} innerHTML={children} />
|
|
14
|
+
case 'script':
|
|
15
|
+
if ((attrs as any) && (attrs as any).src) {
|
|
16
|
+
return <script {...attrs} />
|
|
17
|
+
}
|
|
18
|
+
if (typeof children === 'string')
|
|
19
|
+
return <script {...attrs} innerHTML={children} />
|
|
20
|
+
return null
|
|
21
|
+
default:
|
|
22
|
+
return null
|
|
23
|
+
}
|
|
24
|
+
}
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
import * as Solid from 'solid-js'
|
|
2
|
+
import { Dynamic } from 'solid-js/web'
|
|
3
|
+
import type { ErrorRouteComponent } from './route'
|
|
4
|
+
|
|
5
|
+
export function CatchBoundary(
|
|
6
|
+
props: {
|
|
7
|
+
getResetKey: () => number | string
|
|
8
|
+
children: Solid.JSX.Element
|
|
9
|
+
errorComponent?: ErrorRouteComponent
|
|
10
|
+
onCatch?: (error: Error) => void
|
|
11
|
+
} & Solid.ParentProps,
|
|
12
|
+
) {
|
|
13
|
+
return (
|
|
14
|
+
<Solid.ErrorBoundary
|
|
15
|
+
fallback={(error, reset) => {
|
|
16
|
+
props.onCatch?.(error)
|
|
17
|
+
|
|
18
|
+
Solid.createEffect(
|
|
19
|
+
Solid.on([props.getResetKey], () => reset(), { defer: true }),
|
|
20
|
+
)
|
|
21
|
+
|
|
22
|
+
return (
|
|
23
|
+
<Dynamic
|
|
24
|
+
component={props.errorComponent ?? ErrorComponent}
|
|
25
|
+
error={error}
|
|
26
|
+
reset={reset}
|
|
27
|
+
/>
|
|
28
|
+
)
|
|
29
|
+
}}
|
|
30
|
+
>
|
|
31
|
+
{props.children}
|
|
32
|
+
</Solid.ErrorBoundary>
|
|
33
|
+
)
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
export function ErrorComponent({ error }: { error: any }) {
|
|
37
|
+
const [show, setShow] = Solid.createSignal(
|
|
38
|
+
process.env.NODE_ENV !== 'production',
|
|
39
|
+
)
|
|
40
|
+
|
|
41
|
+
return (
|
|
42
|
+
<div style={{ padding: '.5rem', 'max-width': '100%' }}>
|
|
43
|
+
<div style={{ display: 'flex', 'align-items': 'center', gap: '.5rem' }}>
|
|
44
|
+
<strong style={{ 'font-size': '1rem' }}>Something went wrong!</strong>
|
|
45
|
+
<button
|
|
46
|
+
style={{
|
|
47
|
+
appearance: 'none',
|
|
48
|
+
'font-size': '.6em',
|
|
49
|
+
border: '1px solid currentColor',
|
|
50
|
+
padding: '.1rem .2rem',
|
|
51
|
+
'font-weight': 'bold',
|
|
52
|
+
'border-radius': '.25rem',
|
|
53
|
+
}}
|
|
54
|
+
onClick={() => setShow((d) => !d)}
|
|
55
|
+
>
|
|
56
|
+
{show() ? 'Hide Error' : 'Show Error'}
|
|
57
|
+
</button>
|
|
58
|
+
</div>
|
|
59
|
+
<div style={{ height: '.25rem' }} />
|
|
60
|
+
{show() ? (
|
|
61
|
+
<div>
|
|
62
|
+
<pre
|
|
63
|
+
style={{
|
|
64
|
+
'font-size': '.7em',
|
|
65
|
+
border: '1px solid red',
|
|
66
|
+
'border-radius': '.25rem',
|
|
67
|
+
padding: '.3rem',
|
|
68
|
+
color: 'red',
|
|
69
|
+
overflow: 'auto',
|
|
70
|
+
}}
|
|
71
|
+
>
|
|
72
|
+
{error.message ? <code>{error.message}</code> : null}
|
|
73
|
+
</pre>
|
|
74
|
+
</div>
|
|
75
|
+
) : null}
|
|
76
|
+
</div>
|
|
77
|
+
)
|
|
78
|
+
}
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
import * as Solid from 'solid-js'
|
|
2
|
+
import { isServer } from 'solid-js/web'
|
|
3
|
+
|
|
4
|
+
export interface ClientOnlyProps {
|
|
5
|
+
/**
|
|
6
|
+
* The children to render if the JS is loaded.
|
|
7
|
+
*/
|
|
8
|
+
children: Solid.JSX.Element
|
|
9
|
+
/**
|
|
10
|
+
* The fallback component to render if the JS is not yet loaded.
|
|
11
|
+
*/
|
|
12
|
+
fallback?: Solid.JSX.Element
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
/**
|
|
16
|
+
* Render the children only after the JS has loaded client-side. Use an optional
|
|
17
|
+
* fallback component if the JS is not yet loaded.
|
|
18
|
+
*
|
|
19
|
+
* @example
|
|
20
|
+
* Render a Chart component if JS loads, renders a simple FakeChart
|
|
21
|
+
* component server-side or if there is no JS. The FakeChart can have only the
|
|
22
|
+
* UI without the behavior or be a loading spinner or skeleton.
|
|
23
|
+
*
|
|
24
|
+
* ```tsx
|
|
25
|
+
* return (
|
|
26
|
+
* <ClientOnly fallback={<FakeChart />}>
|
|
27
|
+
* <Chart />
|
|
28
|
+
* </ClientOnly>
|
|
29
|
+
* )
|
|
30
|
+
* ```
|
|
31
|
+
*/
|
|
32
|
+
export function ClientOnly(props: ClientOnlyProps) {
|
|
33
|
+
return useHydrated() ? <>{props.children}</> : <>{props.fallback}</>
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
/**
|
|
37
|
+
* Return a boolean indicating if the JS has been hydrated already.
|
|
38
|
+
* When doing Server-Side Rendering, the result will always be false.
|
|
39
|
+
* When doing Client-Side Rendering, the result will always be false on the
|
|
40
|
+
* first render and true from then on. Even if a new component renders it will
|
|
41
|
+
* always start with true.
|
|
42
|
+
*
|
|
43
|
+
* @example
|
|
44
|
+
* ```tsx
|
|
45
|
+
* // Disable a button that needs JS to work.
|
|
46
|
+
* let hydrated = useHydrated()
|
|
47
|
+
* return (
|
|
48
|
+
* <button type="button" disabled={!hydrated()} onClick={doSomethingCustom}>
|
|
49
|
+
* Click me
|
|
50
|
+
* </button>
|
|
51
|
+
* )
|
|
52
|
+
* ```
|
|
53
|
+
* @returns A signal accessor function that returns true if the JS has been hydrated already, false otherwise.
|
|
54
|
+
*/
|
|
55
|
+
export function useHydrated() {
|
|
56
|
+
const [hydrated, setHydrated] = Solid.createSignal(!isServer)
|
|
57
|
+
|
|
58
|
+
if (!isServer) {
|
|
59
|
+
Solid.createEffect(() => {
|
|
60
|
+
setHydrated(true)
|
|
61
|
+
})
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
return hydrated
|
|
65
|
+
}
|