react-iten 0.4.2 → 0.5.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +8 -12
- package/dist/create-router.d.cts +4 -1
- package/dist/create-router.d.ts +4 -1
- package/dist/headless.cjs +2 -0
- package/dist/headless.d.cts +5 -1
- package/dist/headless.d.ts +5 -1
- package/dist/headless.mjs +2 -0
- package/dist/types.d.cts +3 -2
- package/dist/types.d.ts +3 -2
- package/dist/url.cjs +1 -0
- package/dist/url.mjs +1 -0
- package/package.json +2 -2
- package/src/create-router.ts +7 -1
- package/src/headless.ts +18 -1
- package/src/types.ts +3 -0
- package/src/url.ts +1 -0
package/README.md
CHANGED
|
@@ -16,10 +16,8 @@ npm install react-iten react
|
|
|
16
16
|
|
|
17
17
|
```tsx
|
|
18
18
|
import {
|
|
19
|
-
createRoute,
|
|
20
19
|
createRouter,
|
|
21
20
|
defineRoutes,
|
|
22
|
-
type InferRoutes,
|
|
23
21
|
route,
|
|
24
22
|
} from 'react-iten'
|
|
25
23
|
|
|
@@ -29,12 +27,9 @@ const routes = defineRoutes({
|
|
|
29
27
|
settings: route(),
|
|
30
28
|
})
|
|
31
29
|
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
const router = createRouter<Routes>({
|
|
37
|
-
initial: toRoute({ name: 'home' }),
|
|
30
|
+
const router = createRouter({
|
|
31
|
+
routes,
|
|
32
|
+
initial: { name: 'home' },
|
|
38
33
|
})
|
|
39
34
|
|
|
40
35
|
export const { Link, Navigate, Route, Switch, useNavigate, useRoute } = router
|
|
@@ -45,7 +40,7 @@ export const { Link, Navigate, Route, Switch, useNavigate, useRoute } = router
|
|
|
45
40
|
<Route name="home">{() => <Home />}</Route>
|
|
46
41
|
<Route name="project">{({ id }) => <Project id={id} />}</Route>
|
|
47
42
|
<Route name="settings">{() => <Settings />}</Route>
|
|
48
|
-
<Navigate to={
|
|
43
|
+
<Navigate to={router.to({ name: 'home' })} />
|
|
49
44
|
</Switch>
|
|
50
45
|
```
|
|
51
46
|
|
|
@@ -54,12 +49,13 @@ export const { Link, Navigate, Route, Switch, useNavigate, useRoute } = router
|
|
|
54
49
|
```ts
|
|
55
50
|
import { createHeadlessRouter } from 'react-iten/headless'
|
|
56
51
|
|
|
57
|
-
const router = createHeadlessRouter
|
|
58
|
-
|
|
52
|
+
const router = createHeadlessRouter({
|
|
53
|
+
routes,
|
|
54
|
+
initial: { name: 'home' },
|
|
59
55
|
})
|
|
60
56
|
|
|
61
57
|
router.store.getState()
|
|
62
|
-
await router.store.navigate({ target:
|
|
58
|
+
await router.store.navigate({ target: router.to({ name: 'settings' }) })
|
|
63
59
|
```
|
|
64
60
|
|
|
65
61
|
The store is scoped to the router instance and uses `useSyncExternalStore` for React subscriptions.
|
package/dist/create-router.d.cts
CHANGED
|
@@ -4,7 +4,7 @@ import { LinkComponent } from "./components/Link.cjs";
|
|
|
4
4
|
import { NavigateComponent } from "./components/Navigate.cjs";
|
|
5
5
|
import { RouteComponent } from "./components/Route.cjs";
|
|
6
6
|
import { SwitchComponent } from "./components/Switch.cjs";
|
|
7
|
-
import { RouteMapDef } from "iten-core";
|
|
7
|
+
import { InferRoutes, RouteDefinitions, RouteMapDef } from "iten-core";
|
|
8
8
|
|
|
9
9
|
//#region src/create-router.d.ts
|
|
10
10
|
type ReactRouter<M extends RouteMapDef, _Ctx = unknown> = HeadlessReactRouter<M> & {
|
|
@@ -13,6 +13,9 @@ type ReactRouter<M extends RouteMapDef, _Ctx = unknown> = HeadlessReactRouter<M>
|
|
|
13
13
|
Link: LinkComponent<M>;
|
|
14
14
|
Navigate: NavigateComponent<M>;
|
|
15
15
|
};
|
|
16
|
+
declare function createRouter<const Defs extends RouteDefinitions, Ctx = unknown>(config: ReactRouterConfig<InferRoutes<Defs>, Ctx> & {
|
|
17
|
+
routes: Defs;
|
|
18
|
+
}): ReactRouter<InferRoutes<Defs>, Ctx>;
|
|
16
19
|
declare function createRouter<M extends RouteMapDef, Ctx = unknown>(config: ReactRouterConfig<M, Ctx>): ReactRouter<M, Ctx>;
|
|
17
20
|
//#endregion
|
|
18
21
|
export { ReactRouter, createRouter };
|
package/dist/create-router.d.ts
CHANGED
|
@@ -4,7 +4,7 @@ import { LinkComponent } from "./components/Link.js";
|
|
|
4
4
|
import { NavigateComponent } from "./components/Navigate.js";
|
|
5
5
|
import { RouteComponent } from "./components/Route.js";
|
|
6
6
|
import { SwitchComponent } from "./components/Switch.js";
|
|
7
|
-
import { RouteMapDef } from "iten-core";
|
|
7
|
+
import { InferRoutes, RouteDefinitions, RouteMapDef } from "iten-core";
|
|
8
8
|
|
|
9
9
|
//#region src/create-router.d.ts
|
|
10
10
|
type ReactRouter<M extends RouteMapDef, _Ctx = unknown> = HeadlessReactRouter<M> & {
|
|
@@ -13,6 +13,9 @@ type ReactRouter<M extends RouteMapDef, _Ctx = unknown> = HeadlessReactRouter<M>
|
|
|
13
13
|
Link: LinkComponent<M>;
|
|
14
14
|
Navigate: NavigateComponent<M>;
|
|
15
15
|
};
|
|
16
|
+
declare function createRouter<const Defs extends RouteDefinitions, Ctx = unknown>(config: ReactRouterConfig<InferRoutes<Defs>, Ctx> & {
|
|
17
|
+
routes: Defs;
|
|
18
|
+
}): ReactRouter<InferRoutes<Defs>, Ctx>;
|
|
16
19
|
declare function createRouter<M extends RouteMapDef, Ctx = unknown>(config: ReactRouterConfig<M, Ctx>): ReactRouter<M, Ctx>;
|
|
17
20
|
//#endregion
|
|
18
21
|
export { ReactRouter, createRouter };
|
package/dist/headless.cjs
CHANGED
|
@@ -9,6 +9,7 @@ function createHeadlessRouter(config) {
|
|
|
9
9
|
};
|
|
10
10
|
const core = (0, iten_core.createItenCore)({
|
|
11
11
|
initial: config.initial,
|
|
12
|
+
routes: config.routes,
|
|
12
13
|
routeConfig: config.routeConfig,
|
|
13
14
|
maxHistoryLength: config.maxHistoryLength,
|
|
14
15
|
queryClient: config.queryClient,
|
|
@@ -34,6 +35,7 @@ function createHeadlessRouter(config) {
|
|
|
34
35
|
return {
|
|
35
36
|
store,
|
|
36
37
|
core,
|
|
38
|
+
to: core.to,
|
|
37
39
|
...require_hooks.makeHooks(store)
|
|
38
40
|
};
|
|
39
41
|
}
|
package/dist/headless.d.cts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { InferRoutes, NoParams, QueryClientLike, ReactRouterConfig, RouteConfigMap, RouteMap, RouteMapDef, RouteMatcher, RouteName, RouteOf, RouteParams, RouteUnion, RouterError, RouterState, UseRouteResult } from "./types.cjs";
|
|
2
2
|
import { HookBundle } from "./hooks.cjs";
|
|
3
|
-
import { ItenCore, NavigateInput, RouteMapDef as RouteMapDef$1, RouterState as RouterState$1, createRoute, defineRouteConfig, defineRoutes, isRoute, isRouteName, matchRoute, route } from "iten-core";
|
|
3
|
+
import { InferRoutes as InferRoutes$1, ItenCore, NavigateInput, RouteDefinitions, RouteFactory, RouteMapDef as RouteMapDef$1, RouterState as RouterState$1, createRoute, defineRouteConfig, defineRoutes, isRoute, isRouteName, matchRoute, route } from "iten-core";
|
|
4
4
|
|
|
5
5
|
//#region src/headless.d.ts
|
|
6
6
|
type ReactRouterStore<M extends RouteMapDef$1> = {
|
|
@@ -15,7 +15,11 @@ type ReactRouterStore<M extends RouteMapDef$1> = {
|
|
|
15
15
|
type HeadlessReactRouter<M extends RouteMapDef$1> = HookBundle<M> & {
|
|
16
16
|
store: ReactRouterStore<M>;
|
|
17
17
|
core: ItenCore<M>;
|
|
18
|
+
to: RouteFactory<M>;
|
|
18
19
|
};
|
|
20
|
+
declare function createHeadlessRouter<const Defs extends RouteDefinitions, Ctx = unknown>(config: ReactRouterConfig<InferRoutes$1<Defs>, Ctx> & {
|
|
21
|
+
routes: Defs;
|
|
22
|
+
}): HeadlessReactRouter<InferRoutes$1<Defs>>;
|
|
19
23
|
declare function createHeadlessRouter<M extends RouteMapDef$1, Ctx = unknown>(config: ReactRouterConfig<M, Ctx>): HeadlessReactRouter<M>;
|
|
20
24
|
//#endregion
|
|
21
25
|
export { HeadlessReactRouter, type InferRoutes, type NoParams, type QueryClientLike, ReactRouterStore, type RouteConfigMap, type RouteMap, type RouteMapDef, type RouteMatcher, type RouteName, type RouteOf, type RouteParams, type RouteUnion, type RouterError, type RouterState, type UseRouteResult, createHeadlessRouter, createRoute, defineRouteConfig, defineRoutes, isRoute, isRouteName, matchRoute, route };
|
package/dist/headless.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { InferRoutes, NoParams, QueryClientLike, ReactRouterConfig, RouteConfigMap, RouteMap, RouteMapDef, RouteMatcher, RouteName, RouteOf, RouteParams, RouteUnion, RouterError, RouterState, UseRouteResult } from "./types.js";
|
|
2
2
|
import { HookBundle } from "./hooks.js";
|
|
3
|
-
import { ItenCore, NavigateInput, RouteMapDef as RouteMapDef$1, RouterState as RouterState$1, createRoute, defineRouteConfig, defineRoutes, isRoute, isRouteName, matchRoute, route } from "iten-core";
|
|
3
|
+
import { InferRoutes as InferRoutes$1, ItenCore, NavigateInput, RouteDefinitions, RouteFactory, RouteMapDef as RouteMapDef$1, RouterState as RouterState$1, createRoute, defineRouteConfig, defineRoutes, isRoute, isRouteName, matchRoute, route } from "iten-core";
|
|
4
4
|
|
|
5
5
|
//#region src/headless.d.ts
|
|
6
6
|
type ReactRouterStore<M extends RouteMapDef$1> = {
|
|
@@ -15,7 +15,11 @@ type ReactRouterStore<M extends RouteMapDef$1> = {
|
|
|
15
15
|
type HeadlessReactRouter<M extends RouteMapDef$1> = HookBundle<M> & {
|
|
16
16
|
store: ReactRouterStore<M>;
|
|
17
17
|
core: ItenCore<M>;
|
|
18
|
+
to: RouteFactory<M>;
|
|
18
19
|
};
|
|
20
|
+
declare function createHeadlessRouter<const Defs extends RouteDefinitions, Ctx = unknown>(config: ReactRouterConfig<InferRoutes$1<Defs>, Ctx> & {
|
|
21
|
+
routes: Defs;
|
|
22
|
+
}): HeadlessReactRouter<InferRoutes$1<Defs>>;
|
|
19
23
|
declare function createHeadlessRouter<M extends RouteMapDef$1, Ctx = unknown>(config: ReactRouterConfig<M, Ctx>): HeadlessReactRouter<M>;
|
|
20
24
|
//#endregion
|
|
21
25
|
export { HeadlessReactRouter, type InferRoutes, type NoParams, type QueryClientLike, ReactRouterStore, type RouteConfigMap, type RouteMap, type RouteMapDef, type RouteMatcher, type RouteName, type RouteOf, type RouteParams, type RouteUnion, type RouterError, type RouterState, type UseRouteResult, createHeadlessRouter, createRoute, defineRouteConfig, defineRoutes, isRoute, isRouteName, matchRoute, route };
|
package/dist/headless.mjs
CHANGED
|
@@ -8,6 +8,7 @@ function createHeadlessRouter(config) {
|
|
|
8
8
|
};
|
|
9
9
|
const core = createItenCore({
|
|
10
10
|
initial: config.initial,
|
|
11
|
+
routes: config.routes,
|
|
11
12
|
routeConfig: config.routeConfig,
|
|
12
13
|
maxHistoryLength: config.maxHistoryLength,
|
|
13
14
|
queryClient: config.queryClient,
|
|
@@ -33,6 +34,7 @@ function createHeadlessRouter(config) {
|
|
|
33
34
|
return {
|
|
34
35
|
store,
|
|
35
36
|
core,
|
|
37
|
+
to: core.to,
|
|
36
38
|
...makeHooks(store)
|
|
37
39
|
};
|
|
38
40
|
}
|
package/dist/types.d.cts
CHANGED
|
@@ -1,8 +1,9 @@
|
|
|
1
|
-
import { InferRoutes, NoParams, QueryClientLike, RouteConfigMap, RouteDefinition, RouteDefinitions, RouteMap as RouteMap$1, RouteMapDef as RouteMapDef$1, RouteMatcher, RouteName, RouteOf, RouteParams, RouteUnion as RouteUnion$1, RouterError as RouterError$1, RouterState as RouterState$1 } from "iten-core";
|
|
1
|
+
import { InferRoutes as InferRoutes$1, NoParams, QueryClientLike, RouteConfigMap, RouteDefinition, RouteDefinitions as RouteDefinitions$1, RouteMap as RouteMap$1, RouteMapDef as RouteMapDef$1, RouteMatcher, RouteName, RouteOf, RouteParams, RouteUnion as RouteUnion$1, RouterError as RouterError$1, RouterState as RouterState$1 } from "iten-core";
|
|
2
2
|
|
|
3
3
|
//#region src/types.d.ts
|
|
4
4
|
type ReactRouterConfig<M extends RouteMapDef$1, Ctx = unknown> = {
|
|
5
5
|
initial: RouteUnion$1<M> | null;
|
|
6
|
+
routes?: RouteDefinitions$1 | undefined;
|
|
6
7
|
routeConfig?: RouteConfigMap<M, Ctx> | undefined;
|
|
7
8
|
maxHistoryLength?: number | undefined;
|
|
8
9
|
context?: Ctx | (() => Ctx) | undefined;
|
|
@@ -16,4 +17,4 @@ type UseRouteResult<M extends RouteMapDef$1, K extends keyof M> = {
|
|
|
16
17
|
params: null;
|
|
17
18
|
};
|
|
18
19
|
//#endregion
|
|
19
|
-
export { type InferRoutes, type NoParams, type QueryClientLike, ReactRouterConfig, type RouteConfigMap, type RouteDefinition, type RouteDefinitions, type RouteMap$1 as RouteMap, type RouteMapDef$1 as RouteMapDef, type RouteMatcher, type RouteName, type RouteOf, type RouteParams, type RouteUnion$1 as RouteUnion, type RouterError$1 as RouterError, type RouterState$1 as RouterState, UseRouteResult };
|
|
20
|
+
export { type InferRoutes$1 as InferRoutes, type NoParams, type QueryClientLike, ReactRouterConfig, type RouteConfigMap, type RouteDefinition, type RouteDefinitions$1 as RouteDefinitions, type RouteMap$1 as RouteMap, type RouteMapDef$1 as RouteMapDef, type RouteMatcher, type RouteName, type RouteOf, type RouteParams, type RouteUnion$1 as RouteUnion, type RouterError$1 as RouterError, type RouterState$1 as RouterState, UseRouteResult };
|
package/dist/types.d.ts
CHANGED
|
@@ -1,8 +1,9 @@
|
|
|
1
|
-
import { InferRoutes, NoParams, QueryClientLike, RouteConfigMap, RouteDefinition, RouteDefinitions, RouteMap as RouteMap$1, RouteMapDef as RouteMapDef$1, RouteMatcher, RouteName, RouteOf, RouteParams, RouteUnion as RouteUnion$1, RouterError as RouterError$1, RouterState as RouterState$1 } from "iten-core";
|
|
1
|
+
import { InferRoutes as InferRoutes$1, NoParams, QueryClientLike, RouteConfigMap, RouteDefinition, RouteDefinitions as RouteDefinitions$1, RouteMap as RouteMap$1, RouteMapDef as RouteMapDef$1, RouteMatcher, RouteName, RouteOf, RouteParams, RouteUnion as RouteUnion$1, RouterError as RouterError$1, RouterState as RouterState$1 } from "iten-core";
|
|
2
2
|
|
|
3
3
|
//#region src/types.d.ts
|
|
4
4
|
type ReactRouterConfig<M extends RouteMapDef$1, Ctx = unknown> = {
|
|
5
5
|
initial: RouteUnion$1<M> | null;
|
|
6
|
+
routes?: RouteDefinitions$1 | undefined;
|
|
6
7
|
routeConfig?: RouteConfigMap<M, Ctx> | undefined;
|
|
7
8
|
maxHistoryLength?: number | undefined;
|
|
8
9
|
context?: Ctx | (() => Ctx) | undefined;
|
|
@@ -16,4 +17,4 @@ type UseRouteResult<M extends RouteMapDef$1, K extends keyof M> = {
|
|
|
16
17
|
params: null;
|
|
17
18
|
};
|
|
18
19
|
//#endregion
|
|
19
|
-
export { type InferRoutes, type NoParams, type QueryClientLike, ReactRouterConfig, type RouteConfigMap, type RouteDefinition, type RouteDefinitions, type RouteMap$1 as RouteMap, type RouteMapDef$1 as RouteMapDef, type RouteMatcher, type RouteName, type RouteOf, type RouteParams, type RouteUnion$1 as RouteUnion, type RouterError$1 as RouterError, type RouterState$1 as RouterState, UseRouteResult };
|
|
20
|
+
export { type InferRoutes$1 as InferRoutes, type NoParams, type QueryClientLike, ReactRouterConfig, type RouteConfigMap, type RouteDefinition, type RouteDefinitions$1 as RouteDefinitions, type RouteMap$1 as RouteMap, type RouteMapDef$1 as RouteMapDef, type RouteMatcher, type RouteName, type RouteOf, type RouteParams, type RouteUnion$1 as RouteUnion, type RouterError$1 as RouterError, type RouterState$1 as RouterState, UseRouteResult };
|
package/dist/url.cjs
CHANGED
|
@@ -4,6 +4,7 @@ let iten_core_url = require("iten-core/url");
|
|
|
4
4
|
function createUrlSync({ router, ...input }) {
|
|
5
5
|
const coreLike = {
|
|
6
6
|
getState: () => router.store.getState(),
|
|
7
|
+
to: router.to,
|
|
7
8
|
navigate: (navigateInput) => router.store.navigate(navigateInput),
|
|
8
9
|
goBack: () => router.store.goBack(),
|
|
9
10
|
subscribe: ({ listener }) => router.store.subscribe({ listener: () => {
|
package/dist/url.mjs
CHANGED
|
@@ -3,6 +3,7 @@ import { createUrlSync as createUrlSync$1 } from "iten-core/url";
|
|
|
3
3
|
function createUrlSync({ router, ...input }) {
|
|
4
4
|
const coreLike = {
|
|
5
5
|
getState: () => router.store.getState(),
|
|
6
|
+
to: router.to,
|
|
6
7
|
navigate: (navigateInput) => router.store.navigate(navigateInput),
|
|
7
8
|
goBack: () => router.store.goBack(),
|
|
8
9
|
subscribe: ({ listener }) => router.store.subscribe({ listener: () => {
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "react-iten",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.5.0",
|
|
4
4
|
"description": "React adapter for iten — ultralight in-memory router for embedded JS apps",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"react",
|
|
@@ -104,7 +104,7 @@
|
|
|
104
104
|
}
|
|
105
105
|
},
|
|
106
106
|
"dependencies": {
|
|
107
|
-
"iten-core": "^0.
|
|
107
|
+
"iten-core": "^0.5.0"
|
|
108
108
|
},
|
|
109
109
|
"publishConfig": {
|
|
110
110
|
"access": "public",
|
package/src/create-router.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { RouteMapDef } from 'iten-core'
|
|
1
|
+
import type { InferRoutes, RouteDefinitions, RouteMapDef } from 'iten-core'
|
|
2
2
|
import type { LinkComponent } from './components/Link.tsx'
|
|
3
3
|
import { makeLink } from './components/Link.tsx'
|
|
4
4
|
import type { NavigateComponent } from './components/Navigate.tsx'
|
|
@@ -18,6 +18,12 @@ export type ReactRouter<M extends RouteMapDef, _Ctx = unknown> = HeadlessReactRo
|
|
|
18
18
|
Navigate: NavigateComponent<M>
|
|
19
19
|
}
|
|
20
20
|
|
|
21
|
+
export function createRouter<const Defs extends RouteDefinitions, Ctx = unknown>(
|
|
22
|
+
config: ReactRouterConfig<InferRoutes<Defs>, Ctx> & { routes: Defs },
|
|
23
|
+
): ReactRouter<InferRoutes<Defs>, Ctx>
|
|
24
|
+
export function createRouter<M extends RouteMapDef, Ctx = unknown>(
|
|
25
|
+
config: ReactRouterConfig<M, Ctx>,
|
|
26
|
+
): ReactRouter<M, Ctx>
|
|
21
27
|
export function createRouter<M extends RouteMapDef, Ctx = unknown>(
|
|
22
28
|
config: ReactRouterConfig<M, Ctx>,
|
|
23
29
|
): ReactRouter<M, Ctx> {
|
package/src/headless.ts
CHANGED
|
@@ -1,4 +1,12 @@
|
|
|
1
|
-
import type {
|
|
1
|
+
import type {
|
|
2
|
+
InferRoutes,
|
|
3
|
+
ItenCore,
|
|
4
|
+
NavigateInput,
|
|
5
|
+
RouteDefinitions,
|
|
6
|
+
RouteFactory,
|
|
7
|
+
RouteMapDef,
|
|
8
|
+
RouterState,
|
|
9
|
+
} from 'iten-core'
|
|
2
10
|
import { createItenCore } from 'iten-core'
|
|
3
11
|
import type { HookBundle } from './hooks.ts'
|
|
4
12
|
import { makeHooks } from './hooks.ts'
|
|
@@ -41,8 +49,15 @@ export type ReactRouterStore<M extends RouteMapDef> = {
|
|
|
41
49
|
export type HeadlessReactRouter<M extends RouteMapDef> = HookBundle<M> & {
|
|
42
50
|
store: ReactRouterStore<M>
|
|
43
51
|
core: ItenCore<M>
|
|
52
|
+
to: RouteFactory<M>
|
|
44
53
|
}
|
|
45
54
|
|
|
55
|
+
export function createHeadlessRouter<const Defs extends RouteDefinitions, Ctx = unknown>(
|
|
56
|
+
config: ReactRouterConfig<InferRoutes<Defs>, Ctx> & { routes: Defs },
|
|
57
|
+
): HeadlessReactRouter<InferRoutes<Defs>>
|
|
58
|
+
export function createHeadlessRouter<M extends RouteMapDef, Ctx = unknown>(
|
|
59
|
+
config: ReactRouterConfig<M, Ctx>,
|
|
60
|
+
): HeadlessReactRouter<M>
|
|
46
61
|
export function createHeadlessRouter<M extends RouteMapDef, Ctx = unknown>(
|
|
47
62
|
config: ReactRouterConfig<M, Ctx>,
|
|
48
63
|
): HeadlessReactRouter<M> {
|
|
@@ -55,6 +70,7 @@ export function createHeadlessRouter<M extends RouteMapDef, Ctx = unknown>(
|
|
|
55
70
|
|
|
56
71
|
const core = createItenCore<M, Ctx>({
|
|
57
72
|
initial: config.initial,
|
|
73
|
+
routes: config.routes,
|
|
58
74
|
routeConfig: config.routeConfig,
|
|
59
75
|
maxHistoryLength: config.maxHistoryLength,
|
|
60
76
|
queryClient: config.queryClient,
|
|
@@ -86,6 +102,7 @@ export function createHeadlessRouter<M extends RouteMapDef, Ctx = unknown>(
|
|
|
86
102
|
return {
|
|
87
103
|
store,
|
|
88
104
|
core,
|
|
105
|
+
to: core.to,
|
|
89
106
|
...makeHooks<M>(store),
|
|
90
107
|
}
|
|
91
108
|
}
|
package/src/types.ts
CHANGED
|
@@ -5,6 +5,7 @@ import type {
|
|
|
5
5
|
RouteConfigMap,
|
|
6
6
|
RouteDefinition,
|
|
7
7
|
RouteDefinitions,
|
|
8
|
+
RouteFactory,
|
|
8
9
|
RouteMap,
|
|
9
10
|
RouteMapDef,
|
|
10
11
|
RouteMatcher,
|
|
@@ -23,6 +24,7 @@ export type {
|
|
|
23
24
|
RouteConfigMap,
|
|
24
25
|
RouteDefinition,
|
|
25
26
|
RouteDefinitions,
|
|
27
|
+
RouteFactory,
|
|
26
28
|
RouteMap,
|
|
27
29
|
RouteMapDef,
|
|
28
30
|
RouteMatcher,
|
|
@@ -36,6 +38,7 @@ export type {
|
|
|
36
38
|
|
|
37
39
|
export type ReactRouterConfig<M extends RouteMapDef, Ctx = unknown> = {
|
|
38
40
|
initial: RouteUnion<M> | null
|
|
41
|
+
routes?: RouteDefinitions | undefined
|
|
39
42
|
routeConfig?: RouteConfigMap<M, Ctx> | undefined
|
|
40
43
|
maxHistoryLength?: number | undefined
|
|
41
44
|
context?: Ctx | (() => Ctx) | undefined
|
package/src/url.ts
CHANGED
|
@@ -31,6 +31,7 @@ export function createUrlSync<M extends RouteMapDef>({
|
|
|
31
31
|
}: CreateUrlSyncInput<M>): UrlSync<M> {
|
|
32
32
|
const coreLike: ItenCore<M> = {
|
|
33
33
|
getState: () => router.store.getState() as RouterState<M>,
|
|
34
|
+
to: router.to,
|
|
34
35
|
navigate: (navigateInput: NavigateInput<M>) => router.store.navigate(navigateInput),
|
|
35
36
|
goBack: () => router.store.goBack(),
|
|
36
37
|
subscribe: ({ listener }) =>
|