fibrae 0.1.3 → 0.2.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/dist/core.d.ts +7 -5
- package/dist/core.js +9 -8
- package/dist/core.js.map +1 -1
- package/dist/dom.js +42 -3
- package/dist/dom.js.map +1 -1
- package/dist/fiber-render.js +53 -15
- package/dist/fiber-render.js.map +1 -1
- package/dist/hydration-state.d.ts +28 -0
- package/dist/hydration-state.js +56 -0
- package/dist/hydration-state.js.map +1 -0
- package/dist/hydration.js +3 -9
- package/dist/hydration.js.map +1 -1
- package/dist/index.d.ts +3 -1
- package/dist/index.js +5 -1
- package/dist/index.js.map +1 -1
- package/dist/render.js +3 -3
- package/dist/render.js.map +1 -1
- package/dist/router/Navigator.d.ts +3 -1
- package/dist/router/Navigator.js +33 -40
- package/dist/router/Navigator.js.map +1 -1
- package/dist/router/Route.d.ts +1 -1
- package/dist/router/Route.js +1 -1
- package/dist/router/Route.js.map +1 -1
- package/dist/router/Router.d.ts +72 -15
- package/dist/router/Router.js +99 -21
- package/dist/router/Router.js.map +1 -1
- package/dist/router/RouterBuilder.d.ts +56 -2
- package/dist/router/RouterBuilder.js +86 -7
- package/dist/router/RouterBuilder.js.map +1 -1
- package/dist/router/RouterOutlet.d.ts +29 -5
- package/dist/router/RouterOutlet.js +58 -7
- package/dist/router/RouterOutlet.js.map +1 -1
- package/dist/router/RouterState.d.ts +2 -2
- package/dist/router/RouterState.js +2 -2
- package/dist/router/index.d.ts +3 -3
- package/dist/router/index.js +1 -1
- package/dist/router/index.js.map +1 -1
- package/dist/runtime.d.ts +12 -5
- package/dist/runtime.js +6 -2
- package/dist/runtime.js.map +1 -1
- package/dist/server.d.ts +11 -13
- package/dist/server.js +25 -27
- package/dist/server.js.map +1 -1
- package/dist/shared.d.ts +61 -5
- package/dist/shared.js +51 -0
- package/dist/shared.js.map +1 -1
- package/package.json +1 -1
package/dist/router/Router.js
CHANGED
|
@@ -15,18 +15,66 @@ import * as Option from "effect/Option";
|
|
|
15
15
|
import * as Effect from "effect/Effect";
|
|
16
16
|
import * as Layer from "effect/Layer";
|
|
17
17
|
import * as Context from "effect/Context";
|
|
18
|
+
import * as Data from "effect/Data";
|
|
18
19
|
import { Registry as AtomRegistry } from "@effect-atom/atom";
|
|
19
20
|
import { History, MemoryHistoryLive } from "./History.js";
|
|
20
21
|
import { Navigator, NavigatorLive } from "./Navigator.js";
|
|
21
22
|
import { RouterHandlers } from "./RouterBuilder.js";
|
|
22
23
|
import { RouterStateAtom } from "./RouterState.js";
|
|
24
|
+
/**
|
|
25
|
+
* Router error for route matching and navigation failures.
|
|
26
|
+
*/
|
|
27
|
+
export class RouterError extends Data.TaggedError("RouterError") {
|
|
28
|
+
}
|
|
23
29
|
/**
|
|
24
30
|
* Create a route group with the given name.
|
|
25
31
|
* Routes are added via group.add(route).
|
|
26
32
|
*/
|
|
27
33
|
export function group(name) {
|
|
28
34
|
return {
|
|
35
|
+
_tag: "RouteGroup",
|
|
36
|
+
name,
|
|
37
|
+
routes: [],
|
|
38
|
+
add(route) {
|
|
39
|
+
return {
|
|
40
|
+
...this,
|
|
41
|
+
routes: [...this.routes, route],
|
|
42
|
+
};
|
|
43
|
+
},
|
|
44
|
+
};
|
|
45
|
+
}
|
|
46
|
+
/**
|
|
47
|
+
* Create a layout group with the given name, base path, and layout component.
|
|
48
|
+
*
|
|
49
|
+
* Layout groups wrap their child routes with a layout component that should
|
|
50
|
+
* render <RouterOutlet /> to display the matched child route.
|
|
51
|
+
*
|
|
52
|
+
* Child routes are matched relative to the basePath.
|
|
53
|
+
*
|
|
54
|
+
* Usage:
|
|
55
|
+
* ```typescript
|
|
56
|
+
* const DashboardLayout = () => (
|
|
57
|
+
* <div class="dashboard">
|
|
58
|
+
* <Sidebar />
|
|
59
|
+
* <RouterOutlet />
|
|
60
|
+
* </div>
|
|
61
|
+
* );
|
|
62
|
+
*
|
|
63
|
+
* const DashboardRoutes = Router.layout("dashboard", "/dashboard")
|
|
64
|
+
* .add(Route.get("overview", "/overview")) // matches /dashboard/overview
|
|
65
|
+
* .add(Route.get("settings", "/settings")); // matches /dashboard/settings
|
|
66
|
+
* ```
|
|
67
|
+
*/
|
|
68
|
+
export function layout(name, basePath) {
|
|
69
|
+
// Normalize basePath - ensure it starts with / and doesn't end with /
|
|
70
|
+
const normalizedBase = basePath.startsWith("/") ? basePath : `/${basePath}`;
|
|
71
|
+
const cleanBase = normalizedBase.endsWith("/")
|
|
72
|
+
? normalizedBase.slice(0, -1)
|
|
73
|
+
: normalizedBase;
|
|
74
|
+
return {
|
|
75
|
+
_tag: "LayoutGroup",
|
|
29
76
|
name,
|
|
77
|
+
basePath: cleanBase,
|
|
30
78
|
routes: [],
|
|
31
79
|
add(route) {
|
|
32
80
|
return {
|
|
@@ -53,14 +101,38 @@ export function make(name) {
|
|
|
53
101
|
matchRoute(pathname) {
|
|
54
102
|
// Try to match against each route in each group
|
|
55
103
|
for (const g of this.groups) {
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
104
|
+
if (g._tag === "LayoutGroup") {
|
|
105
|
+
// For layout groups, check if pathname starts with basePath
|
|
106
|
+
const layoutGroup = g;
|
|
107
|
+
if (pathname.startsWith(layoutGroup.basePath)) {
|
|
108
|
+
// Get the remaining path after the base
|
|
109
|
+
const remainingPath = pathname.slice(layoutGroup.basePath.length) || "/";
|
|
110
|
+
// Try to match child routes against remaining path
|
|
111
|
+
for (const route of layoutGroup.routes) {
|
|
112
|
+
const match = route.match(remainingPath);
|
|
113
|
+
if (Option.isSome(match)) {
|
|
114
|
+
return Option.some({
|
|
115
|
+
groupName: layoutGroup.name,
|
|
116
|
+
route,
|
|
117
|
+
params: match.value,
|
|
118
|
+
layouts: [layoutGroup],
|
|
119
|
+
});
|
|
120
|
+
}
|
|
121
|
+
}
|
|
122
|
+
}
|
|
123
|
+
}
|
|
124
|
+
else {
|
|
125
|
+
// Regular route group - match directly
|
|
126
|
+
for (const route of g.routes) {
|
|
127
|
+
const match = route.match(pathname);
|
|
128
|
+
if (Option.isSome(match)) {
|
|
129
|
+
return Option.some({
|
|
130
|
+
groupName: g.name,
|
|
131
|
+
route,
|
|
132
|
+
params: match.value,
|
|
133
|
+
layouts: [],
|
|
134
|
+
});
|
|
135
|
+
}
|
|
64
136
|
}
|
|
65
137
|
}
|
|
66
138
|
}
|
|
@@ -145,13 +217,13 @@ export function serverLayer(options) {
|
|
|
145
217
|
// Match route using stripped pathname
|
|
146
218
|
const match = router.matchRoute(matchPathname);
|
|
147
219
|
if (Option.isNone(match)) {
|
|
148
|
-
return yield* Effect.fail(new
|
|
220
|
+
return yield* Effect.fail(new RouterError({ message: `No route matched pathname: ${matchPathname}` }));
|
|
149
221
|
}
|
|
150
222
|
const { route, params } = match.value;
|
|
151
223
|
// Get handler for this route
|
|
152
224
|
const handler = routerHandlers.getHandler(route.name);
|
|
153
225
|
if (Option.isNone(handler)) {
|
|
154
|
-
return yield* Effect.fail(new
|
|
226
|
+
return yield* Effect.fail(new RouterError({ message: `No handler found for route: ${route.name}` }));
|
|
155
227
|
}
|
|
156
228
|
// Execute loader and render component
|
|
157
229
|
const loaderCtx = { path: params, searchParams };
|
|
@@ -182,20 +254,20 @@ export function serverLayer(options) {
|
|
|
182
254
|
* 3. If hydrated, uses that for initial render (skips loader)
|
|
183
255
|
* 4. Provides Navigator for subsequent navigation
|
|
184
256
|
*
|
|
185
|
-
* SSR hydration works automatically via
|
|
186
|
-
* pass initialState manually. The RouterStateAtom is hydrated from
|
|
187
|
-
*
|
|
257
|
+
* SSR hydration works automatically via the HydrationState service - no need to
|
|
258
|
+
* pass initialState manually. The RouterStateAtom is hydrated from the
|
|
259
|
+
* <script type="application/json" id="__fibrae-state__"> tag before this layer is created.
|
|
188
260
|
*
|
|
189
261
|
* Usage in client:
|
|
190
262
|
* ```typescript
|
|
191
|
-
* // Hydrate atoms first (includes RouterStateAtom)
|
|
192
|
-
* hydrate(container, app, window.__FIBRAE_STATE__);
|
|
193
|
-
*
|
|
194
263
|
* // Browser layer reads from hydrated RouterStateAtom
|
|
195
264
|
* const browserLayer = Router.browserLayer({
|
|
196
265
|
* router: AppRouter,
|
|
197
266
|
* basePath: "/ssr/router"
|
|
198
267
|
* });
|
|
268
|
+
*
|
|
269
|
+
* // render() auto-discovers hydration state from the DOM
|
|
270
|
+
* render(app, container, { layer: browserLayer });
|
|
199
271
|
* ```
|
|
200
272
|
*/
|
|
201
273
|
export function browserLayer(options) {
|
|
@@ -215,7 +287,8 @@ export function browserLayer(options) {
|
|
|
215
287
|
const locationAtom = Atom.make(getBrowserLocation());
|
|
216
288
|
// Subscribe to popstate for browser back/forward
|
|
217
289
|
const handlePopState = () => {
|
|
218
|
-
|
|
290
|
+
const newLocation = getBrowserLocation();
|
|
291
|
+
registry.set(locationAtom, newLocation);
|
|
219
292
|
};
|
|
220
293
|
window.addEventListener("popstate", handlePopState);
|
|
221
294
|
// Cleanup on scope close
|
|
@@ -273,7 +346,7 @@ export function browserLayer(options) {
|
|
|
273
346
|
const state = hydratedState.value;
|
|
274
347
|
const handler = routerHandlers.getHandler(state.routeName);
|
|
275
348
|
if (Option.isNone(handler)) {
|
|
276
|
-
return yield* Effect.fail(new
|
|
349
|
+
return yield* Effect.fail(new RouterError({ message: `No handler found for route: ${state.routeName}` }));
|
|
277
350
|
}
|
|
278
351
|
// Render component with SSR loader data (skip loader)
|
|
279
352
|
const element = handler.value.component({
|
|
@@ -297,12 +370,12 @@ export function browserLayer(options) {
|
|
|
297
370
|
const searchParams = parseSearchParams(search);
|
|
298
371
|
const match = router.matchRoute(matchPathname);
|
|
299
372
|
if (Option.isNone(match)) {
|
|
300
|
-
return yield* Effect.fail(new
|
|
373
|
+
return yield* Effect.fail(new RouterError({ message: `No route matched pathname: ${matchPathname}` }));
|
|
301
374
|
}
|
|
302
375
|
const { route, params } = match.value;
|
|
303
376
|
const handler = routerHandlers.getHandler(route.name);
|
|
304
377
|
if (Option.isNone(handler)) {
|
|
305
|
-
return yield* Effect.fail(new
|
|
378
|
+
return yield* Effect.fail(new RouterError({ message: `No handler found for route: ${route.name}` }));
|
|
306
379
|
}
|
|
307
380
|
const loaderCtx = { path: params, searchParams };
|
|
308
381
|
const loaderData = yield* handler.value.loader(loaderCtx);
|
|
@@ -321,6 +394,11 @@ export function browserLayer(options) {
|
|
|
321
394
|
registry.set(RouterStateAtom, Option.some(state));
|
|
322
395
|
return { element, state };
|
|
323
396
|
}));
|
|
324
|
-
|
|
397
|
+
// Layer composition: historyLayer provides History, which navigatorLayer needs.
|
|
398
|
+
// We use provideMerge to give Navigator the History it needs, then merge with routeElementLayer.
|
|
399
|
+
// Important: historyLayer should only be instantiated once - putting it in mergeAll separately
|
|
400
|
+
// would create a second instance with a different locationAtom.
|
|
401
|
+
const historyAndNavigator = Layer.provideMerge(navigatorLayer, historyLayer);
|
|
402
|
+
return Layer.mergeAll(historyAndNavigator, routeElementLayer);
|
|
325
403
|
}
|
|
326
404
|
//# sourceMappingURL=Router.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Router.js","sourceRoot":"","sources":["../../src/router/Router.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"Router.js","sourceRoot":"","sources":["../../src/router/Router.ts"],"names":[],"mappings":"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"}
|
|
@@ -55,6 +55,14 @@ export interface RouteHandler {
|
|
|
55
55
|
readonly loader: (ctx: LoaderContext) => Effect.Effect<unknown>;
|
|
56
56
|
readonly component: (props: ComponentProps) => VElement;
|
|
57
57
|
}
|
|
58
|
+
/**
|
|
59
|
+
* A registered layout handler.
|
|
60
|
+
* The layout component should render <RouterOutlet /> for children.
|
|
61
|
+
*/
|
|
62
|
+
export interface LayoutHandler {
|
|
63
|
+
readonly layoutName: string;
|
|
64
|
+
readonly component: () => VElement;
|
|
65
|
+
}
|
|
58
66
|
/**
|
|
59
67
|
* Handlers builder for a route group.
|
|
60
68
|
* Accumulates handler registrations for routes in the group.
|
|
@@ -67,9 +75,29 @@ export interface GroupHandlers<GroupName extends string = string> {
|
|
|
67
75
|
*/
|
|
68
76
|
readonly handle: <RouteName extends string, LoaderData, PathParams extends Record<string, unknown>, SearchParams extends Record<string, unknown>, R, E>(routeName: RouteName, config: HandlerConfig<LoaderData, PathParams, SearchParams, R, E>) => GroupHandlers<GroupName>;
|
|
69
77
|
}
|
|
78
|
+
/**
|
|
79
|
+
* Handlers builder for a layout group.
|
|
80
|
+
* Includes layout component registration plus child route handlers.
|
|
81
|
+
*/
|
|
82
|
+
export interface LayoutGroupHandlers<GroupName extends string = string> {
|
|
83
|
+
readonly groupName: GroupName;
|
|
84
|
+
readonly handlers: readonly RouteHandler[];
|
|
85
|
+
readonly layoutHandler: LayoutHandler | null;
|
|
86
|
+
/**
|
|
87
|
+
* Register the layout component for this layout group.
|
|
88
|
+
* The layout component should render <RouterOutlet /> for children.
|
|
89
|
+
*/
|
|
90
|
+
readonly layout: (component: () => VElement) => LayoutGroupHandlers<GroupName>;
|
|
91
|
+
/**
|
|
92
|
+
* Register a handler for a route in this layout group.
|
|
93
|
+
*/
|
|
94
|
+
readonly handle: <RouteName extends string, LoaderData, PathParams extends Record<string, unknown>, SearchParams extends Record<string, unknown>, R, E>(routeName: RouteName, config: HandlerConfig<LoaderData, PathParams, SearchParams, R, E>) => LayoutGroupHandlers<GroupName>;
|
|
95
|
+
}
|
|
70
96
|
declare const RouterHandlers_base: Context.TagClass<RouterHandlers, "fibrae/RouterHandlers", {
|
|
71
97
|
readonly handlers: ReadonlyMap<string, RouteHandler>;
|
|
98
|
+
readonly layoutHandlers: ReadonlyMap<string, LayoutHandler>;
|
|
72
99
|
readonly getHandler: (routeName: string) => Option.Option<RouteHandler>;
|
|
100
|
+
readonly getLayoutHandler: (layoutName: string) => Option.Option<LayoutHandler>;
|
|
73
101
|
}>;
|
|
74
102
|
/**
|
|
75
103
|
* Tag for the RouterHandlers service.
|
|
@@ -106,8 +134,34 @@ export declare class RouterHandlers extends RouterHandlers_base {
|
|
|
106
134
|
* )
|
|
107
135
|
* ```
|
|
108
136
|
*/
|
|
109
|
-
export declare function group<GroupName extends string>(
|
|
110
|
-
export declare function group<GroupName extends string, R>(
|
|
137
|
+
export declare function group<GroupName extends string>(appRouter: Router, groupName: GroupName, build: (handlers: GroupHandlers<GroupName>) => GroupHandlers<GroupName>): Layer.Layer<RouterHandlers, never, never>;
|
|
138
|
+
export declare function group<GroupName extends string, R>(appRouter: Router, groupName: GroupName, build: (handlers: GroupHandlers<GroupName>) => Effect.Effect<GroupHandlers<GroupName>, never, R>): Layer.Layer<RouterHandlers, never, R>;
|
|
139
|
+
/**
|
|
140
|
+
* Create a Layer that provides handlers for a layout group.
|
|
141
|
+
*
|
|
142
|
+
* Layout groups require a layout component that renders <RouterOutlet /> for children.
|
|
143
|
+
*
|
|
144
|
+
* Usage:
|
|
145
|
+
* ```typescript
|
|
146
|
+
* const DashboardLayout = () => (
|
|
147
|
+
* <div class="dashboard">
|
|
148
|
+
* <Sidebar />
|
|
149
|
+
* <RouterOutlet />
|
|
150
|
+
* </div>
|
|
151
|
+
* );
|
|
152
|
+
*
|
|
153
|
+
* const DashboardRoutesLive = RouterBuilder.layoutGroup(
|
|
154
|
+
* AppRouter,
|
|
155
|
+
* "dashboard",
|
|
156
|
+
* (handlers) => handlers
|
|
157
|
+
* .layout(DashboardLayout)
|
|
158
|
+
* .handle("overview", { component: () => <Overview /> })
|
|
159
|
+
* .handle("settings", { component: () => <Settings /> })
|
|
160
|
+
* )
|
|
161
|
+
* ```
|
|
162
|
+
*/
|
|
163
|
+
export declare function layoutGroup<GroupName extends string>(appRouter: Router, groupName: GroupName, build: (handlers: LayoutGroupHandlers<GroupName>) => LayoutGroupHandlers<GroupName>): Layer.Layer<RouterHandlers, never, never>;
|
|
164
|
+
export declare function layoutGroup<GroupName extends string, R>(appRouter: Router, groupName: GroupName, build: (handlers: LayoutGroupHandlers<GroupName>) => Effect.Effect<LayoutGroupHandlers<GroupName>, never, R>): Layer.Layer<RouterHandlers, never, R>;
|
|
111
165
|
/**
|
|
112
166
|
* Merge multiple group handler layers into a single RouterHandlers layer.
|
|
113
167
|
*
|
|
@@ -19,8 +19,8 @@ export class RouterHandlers extends Context.Tag("fibrae/RouterHandlers")() {
|
|
|
19
19
|
/**
|
|
20
20
|
* Create handlers builder for a route group.
|
|
21
21
|
*/
|
|
22
|
-
function makeGroupHandlers(groupName,
|
|
23
|
-
const routesByName = new Map(
|
|
22
|
+
function makeGroupHandlers(groupName, grp) {
|
|
23
|
+
const routesByName = new Map(grp.routes.map((r) => [r.name, r]));
|
|
24
24
|
const buildHandlers = (handlers) => ({
|
|
25
25
|
groupName,
|
|
26
26
|
handlers,
|
|
@@ -49,18 +49,61 @@ function makeGroupHandlers(groupName, group) {
|
|
|
49
49
|
});
|
|
50
50
|
return buildHandlers([]);
|
|
51
51
|
}
|
|
52
|
+
/**
|
|
53
|
+
* Create handlers builder for a layout group.
|
|
54
|
+
*/
|
|
55
|
+
function makeLayoutGroupHandlers(groupName, layoutGroup) {
|
|
56
|
+
const routesByName = new Map(layoutGroup.routes.map((r) => [r.name, r]));
|
|
57
|
+
const buildHandlers = (handlers, layoutHandler) => ({
|
|
58
|
+
groupName,
|
|
59
|
+
handlers,
|
|
60
|
+
layoutHandler,
|
|
61
|
+
layout(component) {
|
|
62
|
+
return buildHandlers(handlers, {
|
|
63
|
+
layoutName: groupName,
|
|
64
|
+
component,
|
|
65
|
+
});
|
|
66
|
+
},
|
|
67
|
+
handle(routeName, config) {
|
|
68
|
+
const maybeRoute = Option.fromNullable(routesByName.get(routeName));
|
|
69
|
+
if (Option.isNone(maybeRoute)) {
|
|
70
|
+
throw new Error(`Route "${routeName}" not found in layout group "${groupName}"`);
|
|
71
|
+
}
|
|
72
|
+
const route = maybeRoute.value;
|
|
73
|
+
const normalizedLoader = (ctx) => {
|
|
74
|
+
if (!config.loader) {
|
|
75
|
+
return Effect.succeed(null);
|
|
76
|
+
}
|
|
77
|
+
const result = config.loader(ctx);
|
|
78
|
+
return (Effect.isEffect(result) ? result : Effect.succeed(result));
|
|
79
|
+
};
|
|
80
|
+
const handler = {
|
|
81
|
+
routeName,
|
|
82
|
+
route,
|
|
83
|
+
loader: normalizedLoader,
|
|
84
|
+
component: config.component,
|
|
85
|
+
};
|
|
86
|
+
return buildHandlers([...handlers, handler], layoutHandler);
|
|
87
|
+
},
|
|
88
|
+
});
|
|
89
|
+
return buildHandlers([], null);
|
|
90
|
+
}
|
|
52
91
|
/**
|
|
53
92
|
* Find a route group by name in a router.
|
|
54
93
|
*/
|
|
55
|
-
function findGroup(
|
|
56
|
-
const maybeGroup = Option.fromNullable(
|
|
94
|
+
function findGroup(appRouter, groupName) {
|
|
95
|
+
const maybeGroup = Option.fromNullable(appRouter.groups.find((g) => g.name === groupName));
|
|
57
96
|
if (Option.isNone(maybeGroup)) {
|
|
58
|
-
throw new Error(`Group "${groupName}" not found in router "${
|
|
97
|
+
throw new Error(`Group "${groupName}" not found in router "${appRouter.name}"`);
|
|
59
98
|
}
|
|
60
99
|
return maybeGroup.value;
|
|
61
100
|
}
|
|
62
|
-
export function group(
|
|
63
|
-
const routeGroup = findGroup(
|
|
101
|
+
export function group(appRouter, groupName, build) {
|
|
102
|
+
const routeGroup = findGroup(appRouter, groupName);
|
|
103
|
+
// Check if it's a layout group - if so, throw helpful error
|
|
104
|
+
if (routeGroup._tag === "LayoutGroup") {
|
|
105
|
+
throw new Error(`Group "${groupName}" is a LayoutGroup. Use RouterBuilder.layoutGroup() instead of RouterBuilder.group().`);
|
|
106
|
+
}
|
|
64
107
|
const initialHandlers = makeGroupHandlers(groupName, routeGroup);
|
|
65
108
|
return Layer.effect(RouterHandlers, Effect.gen(function* () {
|
|
66
109
|
const result = build(initialHandlers);
|
|
@@ -68,10 +111,42 @@ export function group(router, groupName, build) {
|
|
|
68
111
|
const handlersMap = new Map(builtHandlers.handlers.map((h) => [h.routeName, h]));
|
|
69
112
|
return {
|
|
70
113
|
handlers: handlersMap,
|
|
114
|
+
layoutHandlers: new Map(),
|
|
71
115
|
getHandler(routeName) {
|
|
72
116
|
const handler = handlersMap.get(routeName);
|
|
73
117
|
return handler ? Option.some(handler) : Option.none();
|
|
74
118
|
},
|
|
119
|
+
getLayoutHandler(_layoutName) {
|
|
120
|
+
return Option.none();
|
|
121
|
+
},
|
|
122
|
+
};
|
|
123
|
+
}));
|
|
124
|
+
}
|
|
125
|
+
export function layoutGroup(appRouter, groupName, build) {
|
|
126
|
+
const routeGroup = findGroup(appRouter, groupName);
|
|
127
|
+
if (routeGroup._tag !== "LayoutGroup") {
|
|
128
|
+
throw new Error(`Group "${groupName}" is not a LayoutGroup. Use RouterBuilder.group() instead.`);
|
|
129
|
+
}
|
|
130
|
+
const initialHandlers = makeLayoutGroupHandlers(groupName, routeGroup);
|
|
131
|
+
return Layer.effect(RouterHandlers, Effect.gen(function* () {
|
|
132
|
+
const result = build(initialHandlers);
|
|
133
|
+
const builtHandlers = Effect.isEffect(result) ? yield* result : result;
|
|
134
|
+
const handlersMap = new Map(builtHandlers.handlers.map((h) => [h.routeName, h]));
|
|
135
|
+
const layoutHandlersMap = new Map();
|
|
136
|
+
if (builtHandlers.layoutHandler) {
|
|
137
|
+
layoutHandlersMap.set(builtHandlers.layoutHandler.layoutName, builtHandlers.layoutHandler);
|
|
138
|
+
}
|
|
139
|
+
return {
|
|
140
|
+
handlers: handlersMap,
|
|
141
|
+
layoutHandlers: layoutHandlersMap,
|
|
142
|
+
getHandler(routeName) {
|
|
143
|
+
const handler = handlersMap.get(routeName);
|
|
144
|
+
return handler ? Option.some(handler) : Option.none();
|
|
145
|
+
},
|
|
146
|
+
getLayoutHandler(layoutName) {
|
|
147
|
+
const handler = layoutHandlersMap.get(layoutName);
|
|
148
|
+
return handler ? Option.some(handler) : Option.none();
|
|
149
|
+
},
|
|
75
150
|
};
|
|
76
151
|
}));
|
|
77
152
|
}
|
|
@@ -90,9 +165,13 @@ export function router(_router) {
|
|
|
90
165
|
// Start with an empty handlers layer
|
|
91
166
|
return Layer.succeed(RouterHandlers, {
|
|
92
167
|
handlers: new Map(),
|
|
168
|
+
layoutHandlers: new Map(),
|
|
93
169
|
getHandler(_routeName) {
|
|
94
170
|
return Option.none();
|
|
95
171
|
},
|
|
172
|
+
getLayoutHandler(_layoutName) {
|
|
173
|
+
return Option.none();
|
|
174
|
+
},
|
|
96
175
|
});
|
|
97
176
|
}
|
|
98
177
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RouterBuilder.js","sourceRoot":"","sources":["../../src/router/RouterBuilder.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,MAAM,MAAM,eAAe,CAAC;AACxC,OAAO,KAAK,OAAO,MAAM,gBAAgB,CAAC;AAC1C,OAAO,KAAK,KAAK,MAAM,cAAc,CAAC;AACtC,OAAO,KAAK,MAAM,MAAM,eAAe,CAAC;
|
|
1
|
+
{"version":3,"file":"RouterBuilder.js","sourceRoot":"","sources":["../../src/router/RouterBuilder.ts"],"names":[],"mappings":"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"}
|
|
@@ -7,6 +7,10 @@
|
|
|
7
7
|
* For SSR hydration, the RouterStateAtom is pre-populated and the loader is skipped
|
|
8
8
|
* on first render.
|
|
9
9
|
*
|
|
10
|
+
* Supports nested layouts - when a route is matched inside a layout group,
|
|
11
|
+
* the outlet renders the layout component first. The layout component should
|
|
12
|
+
* render its own <RouterOutlet /> which will then render the child route.
|
|
13
|
+
*
|
|
10
14
|
* Usage:
|
|
11
15
|
* ```typescript
|
|
12
16
|
* function App() {
|
|
@@ -17,13 +21,31 @@
|
|
|
17
21
|
* </div>
|
|
18
22
|
* );
|
|
19
23
|
* }
|
|
24
|
+
*
|
|
25
|
+
* // Layout component
|
|
26
|
+
* function DashboardLayout() {
|
|
27
|
+
* return (
|
|
28
|
+
* <div class="dashboard">
|
|
29
|
+
* <Sidebar />
|
|
30
|
+
* <RouterOutlet /> // Renders child route
|
|
31
|
+
* </div>
|
|
32
|
+
* );
|
|
33
|
+
* }
|
|
20
34
|
* ```
|
|
21
35
|
*/
|
|
22
36
|
import * as Stream from "effect/Stream";
|
|
37
|
+
import * as Context from "effect/Context";
|
|
23
38
|
import { Registry as AtomRegistry } from "@effect-atom/atom";
|
|
24
39
|
import { Navigator } from "./Navigator.js";
|
|
25
40
|
import { RouterHandlers } from "./RouterBuilder.js";
|
|
26
41
|
import type { VElement } from "../shared.js";
|
|
42
|
+
declare const OutletDepth_base: Context.TagClass<OutletDepth, "fibrae/OutletDepth", number>;
|
|
43
|
+
/**
|
|
44
|
+
* Context for tracking outlet depth in nested layouts.
|
|
45
|
+
* Each nested RouterOutlet increments the depth.
|
|
46
|
+
*/
|
|
47
|
+
export declare class OutletDepth extends OutletDepth_base {
|
|
48
|
+
}
|
|
27
49
|
/**
|
|
28
50
|
* Props for RouterOutlet component.
|
|
29
51
|
*
|
|
@@ -45,13 +67,15 @@ export interface RouterOutletProps {
|
|
|
45
67
|
* RouterOutlet component for reactive route rendering.
|
|
46
68
|
*
|
|
47
69
|
* The RouterOutlet:
|
|
48
|
-
* 1.
|
|
49
|
-
* 2.
|
|
50
|
-
* 3.
|
|
51
|
-
* 4.
|
|
52
|
-
* 5.
|
|
70
|
+
* 1. Gets current outlet depth from context (default 0)
|
|
71
|
+
* 2. If at depth < layouts.length, renders the layout at that depth
|
|
72
|
+
* 3. If at depth === layouts.length, renders the actual route component
|
|
73
|
+
* 4. Subscribes to Navigator.currentRoute for navigation changes
|
|
74
|
+
* 5. When route changes, runs the matched route's loader
|
|
75
|
+
* 6. Updates RouterStateAtom with the full state (for DI access)
|
|
53
76
|
*
|
|
54
77
|
* For SSR hydration, the RouterStateAtom is pre-populated by the server,
|
|
55
78
|
* so the first render uses that data and skips the loader.
|
|
56
79
|
*/
|
|
57
80
|
export declare function RouterOutlet(_props?: RouterOutletProps): Stream.Stream<VElement, unknown, Navigator | RouterHandlers | AtomRegistry.AtomRegistry>;
|
|
81
|
+
export {};
|