@reactra/router 0.1.0-alpha.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/LICENSE +21 -0
- package/README.md +17 -0
- package/dist/index.d.ts +508 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +1049 -0
- package/dist/index.js.map +1 -0
- package/dist/middleware.d.ts +162 -0
- package/dist/middleware.d.ts.map +1 -0
- package/dist/middleware.js +158 -0
- package/dist/middleware.js.map +1 -0
- package/dist/portal.d.ts +35 -0
- package/dist/portal.d.ts.map +1 -0
- package/dist/portal.js +49 -0
- package/dist/portal.js.map +1 -0
- package/dist/scrollManager.d.ts +69 -0
- package/dist/scrollManager.d.ts.map +1 -0
- package/dist/scrollManager.js +189 -0
- package/dist/scrollManager.js.map +1 -0
- package/package.json +37 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,162 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The shape of `ctx.to.meta` / `ctx.from.meta`. Static + semi-static fields
|
|
3
|
+
* resolved against the route's params + query at routing time; dynamic
|
|
4
|
+
* fields (which need a rendered component to read reactive state) are
|
|
5
|
+
* intentionally absent — middleware runs PRE-render. A plain readonly
|
|
6
|
+
* record keeps the type lenient until the meta classifier ships in a
|
|
7
|
+
* follow-up.
|
|
8
|
+
*/
|
|
9
|
+
export type RouteMetaResolved = Readonly<Record<string, unknown>>;
|
|
10
|
+
/**
|
|
11
|
+
* The shape of `ctx.to` and `ctx.from` per spec §6.2. `meta` is the
|
|
12
|
+
* already-resolved meta object for the route (static + semi-static fields
|
|
13
|
+
* pre-resolved against the `to.params`/`to.query`); dynamic meta fields are
|
|
14
|
+
* NOT included here because they need a rendered component to read state
|
|
15
|
+
* from — `_middleware.ts` is a pre-render concern.
|
|
16
|
+
*/
|
|
17
|
+
export interface MiddlewareRouteCoord {
|
|
18
|
+
readonly pathname: string;
|
|
19
|
+
readonly params: Readonly<Record<string, string>>;
|
|
20
|
+
readonly query: Readonly<Record<string, unknown>>;
|
|
21
|
+
readonly meta: RouteMetaResolved;
|
|
22
|
+
/** The route's path pattern (`/customers/:id`), used as RouteId in the manifest. */
|
|
23
|
+
readonly routeId: string;
|
|
24
|
+
}
|
|
25
|
+
/** Discriminator-tagged union. The router's Stage-3 runtime branches on `type`. */
|
|
26
|
+
export type NavigationCommand = {
|
|
27
|
+
readonly type: "redirect";
|
|
28
|
+
readonly path: string;
|
|
29
|
+
readonly replace: boolean;
|
|
30
|
+
readonly query?: Readonly<Record<string, unknown>>;
|
|
31
|
+
} | {
|
|
32
|
+
readonly type: "abort";
|
|
33
|
+
readonly statusCode?: number;
|
|
34
|
+
};
|
|
35
|
+
/** Type guard for `redirect` commands — narrows the union for callers. */
|
|
36
|
+
export declare const isRedirectCommand: (c: NavigationCommand | void) => c is Extract<NavigationCommand, {
|
|
37
|
+
type: "redirect";
|
|
38
|
+
}>;
|
|
39
|
+
/** Type guard for `abort` commands — narrows the union for callers. */
|
|
40
|
+
export declare const isAbortCommand: (c: NavigationCommand | void) => c is Extract<NavigationCommand, {
|
|
41
|
+
type: "abort";
|
|
42
|
+
}>;
|
|
43
|
+
/**
|
|
44
|
+
* The argument passed to every `beforeEnter` / `afterLeave` invocation.
|
|
45
|
+
* `redirect`/`abort`/`allow` are command BUILDERS — returning their result
|
|
46
|
+
* from the middleware is what triggers the router action; just calling
|
|
47
|
+
* `ctx.redirect(...)` without returning does nothing.
|
|
48
|
+
*/
|
|
49
|
+
export interface MiddlewareContext {
|
|
50
|
+
readonly to: MiddlewareRouteCoord;
|
|
51
|
+
/** `null` on the initial navigation (no previous route). */
|
|
52
|
+
readonly from: MiddlewareRouteCoord | null;
|
|
53
|
+
/**
|
|
54
|
+
* Return this from `beforeEnter` to short-circuit the chain and redirect
|
|
55
|
+
* to a different route. `replace` defaults to `true` so the user's
|
|
56
|
+
* browser history doesn't accumulate guard-failure entries.
|
|
57
|
+
*/
|
|
58
|
+
redirect(path: string, options?: {
|
|
59
|
+
replace?: boolean;
|
|
60
|
+
query?: Readonly<Record<string, unknown>>;
|
|
61
|
+
}): NavigationCommand;
|
|
62
|
+
/**
|
|
63
|
+
* Return this to cancel the navigation entirely — the router stays on the
|
|
64
|
+
* current route, no `onEnter` fires, no `afterLeave` runs on the current
|
|
65
|
+
* route. `statusCode` is informational (SSR / hosting concern).
|
|
66
|
+
*/
|
|
67
|
+
abort(statusCode?: number): NavigationCommand;
|
|
68
|
+
/**
|
|
69
|
+
* Explicit "continue" command for symmetry with `redirect`/`abort`. The
|
|
70
|
+
* default — returning `void`/`undefined` — also continues; `allow()`
|
|
71
|
+
* exists for readability in chains that explicitly handle multiple
|
|
72
|
+
* cases.
|
|
73
|
+
*/
|
|
74
|
+
allow(): void;
|
|
75
|
+
/**
|
|
76
|
+
* Service-aware middleware (Router §6.2 v3.5; resolver contract owned by
|
|
77
|
+
* Middleware spec v2 §3): resolve a Strategy-A service by name. Requires
|
|
78
|
+
* the explicit bootstrap line `bindScopedServicesToRouter(RouterRegistry)`
|
|
79
|
+
* (from `@reactra/service`) — without it, MW001. `provide` overrides are
|
|
80
|
+
* invisible (middleware runs outside React); during `beforeEnter`, scoped
|
|
81
|
+
* services are the instances from the last COMMITTED navigation (none on
|
|
82
|
+
* the initial navigation — the underlying SVC error propagates then).
|
|
83
|
+
*/
|
|
84
|
+
service<T = unknown>(name: string): T;
|
|
85
|
+
}
|
|
86
|
+
type MiddlewareServiceResolver = (name: string) => unknown;
|
|
87
|
+
/**
|
|
88
|
+
* Install the middleware service resolver — called by `@reactra/service`'s
|
|
89
|
+
* `bindScopedServicesToRouter`, never by app code. Internal tier
|
|
90
|
+
* (Runtime v1 §1): outside the public contract.
|
|
91
|
+
*/
|
|
92
|
+
export declare const __setMiddlewareServiceResolver: (resolver: MiddlewareServiceResolver) => void;
|
|
93
|
+
/**
|
|
94
|
+
* Build the `redirect`/`abort`/`allow`/`service` methods bound to a context.
|
|
95
|
+
* Pure helper extracted so the Stage-3 runtime can construct the same context
|
|
96
|
+
* shape without duplicating the builder logic.
|
|
97
|
+
*/
|
|
98
|
+
export declare const buildContextCommands: () => Pick<MiddlewareContext, "redirect" | "abort" | "allow" | "service">;
|
|
99
|
+
/**
|
|
100
|
+
* The shape of `beforeEnter` and `afterLeave`. Async is allowed so guards
|
|
101
|
+
* can await an auth check or an analytics event. Returning a
|
|
102
|
+
* NavigationCommand short-circuits (beforeEnter) / has no router effect
|
|
103
|
+
* (afterLeave — the navigation has already committed). Returning
|
|
104
|
+
* `void`/`undefined` = continue.
|
|
105
|
+
*/
|
|
106
|
+
export type MiddlewareFn = (ctx: MiddlewareContext) => void | NavigationCommand | Promise<void | NavigationCommand>;
|
|
107
|
+
/**
|
|
108
|
+
* The default-export shape of a `_middleware.ts` file. Both hooks are
|
|
109
|
+
* optional — a file that only logs may only define `beforeEnter`; a file
|
|
110
|
+
* that only flushes analytics may only define `afterLeave`.
|
|
111
|
+
*/
|
|
112
|
+
export interface MiddlewareDef {
|
|
113
|
+
readonly beforeEnter?: MiddlewareFn;
|
|
114
|
+
readonly afterLeave?: MiddlewareFn;
|
|
115
|
+
}
|
|
116
|
+
/**
|
|
117
|
+
* Identity wrapper that carries the {@link MiddlewareDef} type forward to
|
|
118
|
+
* the user's code. Authoring without `defineMiddleware` loses inference
|
|
119
|
+
* on `ctx.redirect(...)`'s return type; with it, TS narrows correctly.
|
|
120
|
+
*
|
|
121
|
+
* export default defineMiddleware({
|
|
122
|
+
* async beforeEnter(ctx) {
|
|
123
|
+
* if (!authStore.isAuthenticated) {
|
|
124
|
+
* return ctx.redirect("/login", { query: { returnTo: ctx.to.pathname } })
|
|
125
|
+
* }
|
|
126
|
+
* },
|
|
127
|
+
* })
|
|
128
|
+
*/
|
|
129
|
+
export declare const defineMiddleware: (def: MiddlewareDef) => MiddlewareDef;
|
|
130
|
+
/**
|
|
131
|
+
* Combine multiple {@link MiddlewareDef}s into one. Semantics:
|
|
132
|
+
*
|
|
133
|
+
* compose(a, b, c).beforeEnter = run a.beforeEnter, then b.beforeEnter,
|
|
134
|
+
* then c.beforeEnter — first non-void return short-circuits.
|
|
135
|
+
* compose(a, b, c).afterLeave = run c.afterLeave, then b.afterLeave,
|
|
136
|
+
* then a.afterLeave (reverse — spec §6.1). afterLeave returns are
|
|
137
|
+
* IGNORED (the navigation has already committed); any error throws.
|
|
138
|
+
*
|
|
139
|
+
* Empty input is a valid no-op: `compose()` returns `{}`. Defs with neither
|
|
140
|
+
* hook are skipped silently.
|
|
141
|
+
*
|
|
142
|
+
* Async-aware — awaits each fn's return so an auth check can be a
|
|
143
|
+
* Promise. The chain remains sequential (no parallel hooks) because each
|
|
144
|
+
* step may depend on the previous step's side effects (e.g. populating a
|
|
145
|
+
* request-scoped store).
|
|
146
|
+
*/
|
|
147
|
+
export declare const compose: (...mws: ReadonlyArray<MiddlewareDef>) => MiddlewareDef;
|
|
148
|
+
/**
|
|
149
|
+
* Sequentially invoke `chain[i].beforeEnter(ctx)`, returning the first
|
|
150
|
+
* NavigationCommand emitted or `undefined` if every step allowed. Mirrors
|
|
151
|
+
* what the navigate() integration in Stage 3 will do; exported now so the
|
|
152
|
+
* compose-vs-chain semantics are testable in isolation.
|
|
153
|
+
*/
|
|
154
|
+
export declare const runBeforeEnterChain: (chain: ReadonlyArray<MiddlewareDef>, ctx: MiddlewareContext) => Promise<NavigationCommand | undefined>;
|
|
155
|
+
/**
|
|
156
|
+
* Sequentially invoke `chain[i].afterLeave(ctx)` in REVERSE order (per
|
|
157
|
+
* spec §6.1 — afterLeave is the mirror of beforeEnter). Errors propagate.
|
|
158
|
+
* Returns are ignored.
|
|
159
|
+
*/
|
|
160
|
+
export declare const runAfterLeaveChain: (chain: ReadonlyArray<MiddlewareDef>, ctx: MiddlewareContext) => Promise<void>;
|
|
161
|
+
export {};
|
|
162
|
+
//# sourceMappingURL=middleware.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"middleware.d.ts","sourceRoot":"","sources":["../src/middleware.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,158 @@
|
|
|
1
|
+
// @reactra/router — `_middleware.ts` route-guard API (Wave 3, Stage 1)
|
|
2
|
+
//
|
|
3
|
+
// Owner spec: reactra-router-spec.md §6 (Middleware Pipeline). Per phase-2.md
|
|
4
|
+
// §2b, this is the staged rollout of the `_middleware.ts` feature — Stage 1
|
|
5
|
+
// is the runtime API (types + `defineMiddleware` + `compose`) with no walker
|
|
6
|
+
// or navigate-integration yet (Stages 2 + 3). The compiler still skips
|
|
7
|
+
// `_middleware.ts` as a special filename at walker discovery; this file just
|
|
8
|
+
// makes the runtime contract available to handwritten middleware.
|
|
9
|
+
//
|
|
10
|
+
// Spec contract:
|
|
11
|
+
// - `defineMiddleware({ beforeEnter?, afterLeave? })` — type-safe identity.
|
|
12
|
+
// - `compose(...mws)` — combines several middleware defs into one. The
|
|
13
|
+
// beforeEnter chain runs in order; the FIRST def to return a
|
|
14
|
+
// NavigationCommand short-circuits the chain. The afterLeave chain runs
|
|
15
|
+
// in REVERSE order (spec §6.1 — afterLeave is the mirror of beforeEnter).
|
|
16
|
+
// - `MiddlewareContext` carries `to`/`from` route coordinates plus the
|
|
17
|
+
// `redirect`/`abort`/`allow` command builders. `from` is `null` on the
|
|
18
|
+
// initial navigation.
|
|
19
|
+
// - `NavigationCommand` is a tagged union — the navigate() runtime
|
|
20
|
+
// (Stage 3) interprets `redirect` and `abort`; `void` means "continue".
|
|
21
|
+
//
|
|
22
|
+
// What's intentionally NOT in this stage:
|
|
23
|
+
// - `preserveQuery()` — spec §6.2 lists it but the semantics overlap with
|
|
24
|
+
// `redirect({ query: ... })`; defer until Stage 3 (the integration site
|
|
25
|
+
// is where the query-preservation behaviour actually fires).
|
|
26
|
+
// - The walker-emitted `router-middleware.generated.ts` shape — Stage 2.
|
|
27
|
+
// - The actual `navigate()` chain invocation — Stage 3.
|
|
28
|
+
/** Type guard for `redirect` commands — narrows the union for callers. */
|
|
29
|
+
export const isRedirectCommand = (c) => c !== undefined && c.type === "redirect";
|
|
30
|
+
/** Type guard for `abort` commands — narrows the union for callers. */
|
|
31
|
+
export const isAbortCommand = (c) => c !== undefined && c.type === "abort";
|
|
32
|
+
let serviceResolver = null;
|
|
33
|
+
/**
|
|
34
|
+
* Install the middleware service resolver — called by `@reactra/service`'s
|
|
35
|
+
* `bindScopedServicesToRouter`, never by app code. Internal tier
|
|
36
|
+
* (Runtime v1 §1): outside the public contract.
|
|
37
|
+
*/
|
|
38
|
+
export const __setMiddlewareServiceResolver = (resolver) => {
|
|
39
|
+
serviceResolver = resolver;
|
|
40
|
+
};
|
|
41
|
+
/**
|
|
42
|
+
* Build the `redirect`/`abort`/`allow`/`service` methods bound to a context.
|
|
43
|
+
* Pure helper extracted so the Stage-3 runtime can construct the same context
|
|
44
|
+
* shape without duplicating the builder logic.
|
|
45
|
+
*/
|
|
46
|
+
export const buildContextCommands = () => ({
|
|
47
|
+
redirect: (path, options) => ({
|
|
48
|
+
type: "redirect",
|
|
49
|
+
path,
|
|
50
|
+
replace: options?.replace ?? true,
|
|
51
|
+
query: options?.query,
|
|
52
|
+
}),
|
|
53
|
+
abort: (statusCode) => ({ type: "abort", statusCode }),
|
|
54
|
+
allow: () => undefined,
|
|
55
|
+
service: (name) => {
|
|
56
|
+
if (serviceResolver === null) {
|
|
57
|
+
throw new Error(`[reactra:middleware] MW001: ctx.service("${name}") needs the service resolver — add ` +
|
|
58
|
+
`\`bindScopedServicesToRouter(RouterRegistry)\` (from "@reactra/service") to your ` +
|
|
59
|
+
`bootstrap after configureRouter. (Middleware spec v2 §3.)`);
|
|
60
|
+
}
|
|
61
|
+
// An unregistered name propagates the underlying SVC error — the registry
|
|
62
|
+
// owns that diagnostic (owner/raiser discipline), MW only owns MW001.
|
|
63
|
+
return serviceResolver(name);
|
|
64
|
+
},
|
|
65
|
+
});
|
|
66
|
+
// ─── defineMiddleware ─────────────────────────────────────────────────────
|
|
67
|
+
/**
|
|
68
|
+
* Identity wrapper that carries the {@link MiddlewareDef} type forward to
|
|
69
|
+
* the user's code. Authoring without `defineMiddleware` loses inference
|
|
70
|
+
* on `ctx.redirect(...)`'s return type; with it, TS narrows correctly.
|
|
71
|
+
*
|
|
72
|
+
* export default defineMiddleware({
|
|
73
|
+
* async beforeEnter(ctx) {
|
|
74
|
+
* if (!authStore.isAuthenticated) {
|
|
75
|
+
* return ctx.redirect("/login", { query: { returnTo: ctx.to.pathname } })
|
|
76
|
+
* }
|
|
77
|
+
* },
|
|
78
|
+
* })
|
|
79
|
+
*/
|
|
80
|
+
export const defineMiddleware = (def) => def;
|
|
81
|
+
// ─── compose ─────────────────────────────────────────────────────────────
|
|
82
|
+
/**
|
|
83
|
+
* Combine multiple {@link MiddlewareDef}s into one. Semantics:
|
|
84
|
+
*
|
|
85
|
+
* compose(a, b, c).beforeEnter = run a.beforeEnter, then b.beforeEnter,
|
|
86
|
+
* then c.beforeEnter — first non-void return short-circuits.
|
|
87
|
+
* compose(a, b, c).afterLeave = run c.afterLeave, then b.afterLeave,
|
|
88
|
+
* then a.afterLeave (reverse — spec §6.1). afterLeave returns are
|
|
89
|
+
* IGNORED (the navigation has already committed); any error throws.
|
|
90
|
+
*
|
|
91
|
+
* Empty input is a valid no-op: `compose()` returns `{}`. Defs with neither
|
|
92
|
+
* hook are skipped silently.
|
|
93
|
+
*
|
|
94
|
+
* Async-aware — awaits each fn's return so an auth check can be a
|
|
95
|
+
* Promise. The chain remains sequential (no parallel hooks) because each
|
|
96
|
+
* step may depend on the previous step's side effects (e.g. populating a
|
|
97
|
+
* request-scoped store).
|
|
98
|
+
*/
|
|
99
|
+
export const compose = (...mws) => {
|
|
100
|
+
const beforeEnterFns = mws
|
|
101
|
+
.map((m) => m.beforeEnter)
|
|
102
|
+
.filter((fn) => fn !== undefined);
|
|
103
|
+
const afterLeaveFns = mws
|
|
104
|
+
.map((m) => m.afterLeave)
|
|
105
|
+
.filter((fn) => fn !== undefined)
|
|
106
|
+
.reverse();
|
|
107
|
+
const out = {};
|
|
108
|
+
if (beforeEnterFns.length > 0) {
|
|
109
|
+
out.beforeEnter = async (ctx) => {
|
|
110
|
+
for (const fn of beforeEnterFns) {
|
|
111
|
+
const cmd = await fn(ctx);
|
|
112
|
+
if (cmd)
|
|
113
|
+
return cmd;
|
|
114
|
+
}
|
|
115
|
+
};
|
|
116
|
+
}
|
|
117
|
+
if (afterLeaveFns.length > 0) {
|
|
118
|
+
out.afterLeave = async (ctx) => {
|
|
119
|
+
for (const fn of afterLeaveFns) {
|
|
120
|
+
// afterLeave returns are ignored — the navigation has committed.
|
|
121
|
+
// Errors propagate so a noisy middleware doesn't silently swallow.
|
|
122
|
+
await fn(ctx);
|
|
123
|
+
}
|
|
124
|
+
};
|
|
125
|
+
}
|
|
126
|
+
return out;
|
|
127
|
+
};
|
|
128
|
+
// ─── runChain — Stage-3 integration helper, exported for tests ────────────
|
|
129
|
+
/**
|
|
130
|
+
* Sequentially invoke `chain[i].beforeEnter(ctx)`, returning the first
|
|
131
|
+
* NavigationCommand emitted or `undefined` if every step allowed. Mirrors
|
|
132
|
+
* what the navigate() integration in Stage 3 will do; exported now so the
|
|
133
|
+
* compose-vs-chain semantics are testable in isolation.
|
|
134
|
+
*/
|
|
135
|
+
export const runBeforeEnterChain = async (chain, ctx) => {
|
|
136
|
+
for (const mw of chain) {
|
|
137
|
+
if (!mw.beforeEnter)
|
|
138
|
+
continue;
|
|
139
|
+
const cmd = await mw.beforeEnter(ctx);
|
|
140
|
+
if (cmd)
|
|
141
|
+
return cmd;
|
|
142
|
+
}
|
|
143
|
+
return undefined;
|
|
144
|
+
};
|
|
145
|
+
/**
|
|
146
|
+
* Sequentially invoke `chain[i].afterLeave(ctx)` in REVERSE order (per
|
|
147
|
+
* spec §6.1 — afterLeave is the mirror of beforeEnter). Errors propagate.
|
|
148
|
+
* Returns are ignored.
|
|
149
|
+
*/
|
|
150
|
+
export const runAfterLeaveChain = async (chain, ctx) => {
|
|
151
|
+
for (let i = chain.length - 1; i >= 0; i--) {
|
|
152
|
+
const mw = chain[i];
|
|
153
|
+
if (!mw?.afterLeave)
|
|
154
|
+
continue;
|
|
155
|
+
await mw.afterLeave(ctx);
|
|
156
|
+
}
|
|
157
|
+
};
|
|
158
|
+
//# sourceMappingURL=middleware.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"middleware.js","sourceRoot":"","sources":["../src/middleware.ts"],"names":[],"mappings":"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"}
|
package/dist/portal.d.ts
ADDED
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import type { ReactNode } from "react";
|
|
2
|
+
/**
|
|
3
|
+
* Props for {@link Portal}.
|
|
4
|
+
*
|
|
5
|
+
* @property to Where to mount the children. A CSS selector string
|
|
6
|
+
* (`document.querySelector(to)`) or a live DOM `Element`.
|
|
7
|
+
* Omitted → `document.body`.
|
|
8
|
+
* @property children The content to render into the target.
|
|
9
|
+
*/
|
|
10
|
+
export interface PortalProps {
|
|
11
|
+
to?: string | Element;
|
|
12
|
+
children: ReactNode;
|
|
13
|
+
}
|
|
14
|
+
/**
|
|
15
|
+
* Render `children` into a DOM node outside the current React subtree via
|
|
16
|
+
* react-dom's `createPortal`. Use it for toasts, modals, and tooltips that must
|
|
17
|
+
* escape an overflow/transform/stacking-context ancestor.
|
|
18
|
+
*
|
|
19
|
+
* - `<Portal>{children}</Portal>` → mounts into `document.body`.
|
|
20
|
+
* - `<Portal to="#sel">…</Portal>` → mounts into `document.querySelector("#sel")`.
|
|
21
|
+
* - `<Portal to={element}>…</Portal>` → mounts into that `Element`.
|
|
22
|
+
*
|
|
23
|
+
* Fallbacks (content is always preserved — never dropped):
|
|
24
|
+
* - **Target not found** (selector matched nothing): render `children` inline,
|
|
25
|
+
* un-portaled, and `console.warn` once naming the missing selector. The warn is
|
|
26
|
+
* intentionally unconditional (not env-gated) — a missing portal target is an
|
|
27
|
+
* immediate dev error that should always surface (C2).
|
|
28
|
+
* - **No DOM** (`typeof document === "undefined"`, e.g. SSR): render `children`
|
|
29
|
+
* inline rather than nothing, so server output still contains the content.
|
|
30
|
+
*
|
|
31
|
+
* This component does not create or clean up a mount node — point `to` at a node
|
|
32
|
+
* that already exists in the document.
|
|
33
|
+
*/
|
|
34
|
+
export declare const Portal: (props: PortalProps) => ReactNode;
|
|
35
|
+
//# sourceMappingURL=portal.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"portal.d.ts","sourceRoot":"","sources":["../src/portal.ts"],"names":[],"mappings":"AAaA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAA;AAGtC;;;;;;;GAOG;AACH,MAAM,WAAW,WAAW;IAC1B,EAAE,CAAC,EAAE,MAAM,GAAG,OAAO,CAAA;IACrB,QAAQ,EAAE,SAAS,CAAA;CACpB;AAED;;;;;;;;;;;;;;;;;;;GAmBG;AACH,eAAO,MAAM,MAAM,GAAI,OAAO,WAAW,KAAG,SAkB3C,CAAA"}
|
package/dist/portal.js
ADDED
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
// @reactra/router — <Portal> user-facing runtime component
|
|
2
|
+
//
|
|
3
|
+
// Owner: reactra-runtime-spec.md §3 (`@reactra/router` user-facing tier) +
|
|
4
|
+
// docs/how-to/portal.md (the recipe).
|
|
5
|
+
//
|
|
6
|
+
// A thin, hand-imported wrapper over react-dom's `createPortal` so a DSL `view`
|
|
7
|
+
// (or any React tree) can render children into a DOM node outside the component
|
|
8
|
+
// hierarchy — toasts, modals, tooltips. Strictly user-facing: it is NEVER part
|
|
9
|
+
// of a Pass-9-emitted import path (the compiler-emitted router tier stays
|
|
10
|
+
// react-dom-free; C1). createElement, no JSX, returns `ReactNode` — Node-portable
|
|
11
|
+
// per CLAUDE.md §6, mirroring RouteLink/RouteRenderer.
|
|
12
|
+
import { createElement } from "react";
|
|
13
|
+
import { createPortal } from "react-dom";
|
|
14
|
+
/**
|
|
15
|
+
* Render `children` into a DOM node outside the current React subtree via
|
|
16
|
+
* react-dom's `createPortal`. Use it for toasts, modals, and tooltips that must
|
|
17
|
+
* escape an overflow/transform/stacking-context ancestor.
|
|
18
|
+
*
|
|
19
|
+
* - `<Portal>{children}</Portal>` → mounts into `document.body`.
|
|
20
|
+
* - `<Portal to="#sel">…</Portal>` → mounts into `document.querySelector("#sel")`.
|
|
21
|
+
* - `<Portal to={element}>…</Portal>` → mounts into that `Element`.
|
|
22
|
+
*
|
|
23
|
+
* Fallbacks (content is always preserved — never dropped):
|
|
24
|
+
* - **Target not found** (selector matched nothing): render `children` inline,
|
|
25
|
+
* un-portaled, and `console.warn` once naming the missing selector. The warn is
|
|
26
|
+
* intentionally unconditional (not env-gated) — a missing portal target is an
|
|
27
|
+
* immediate dev error that should always surface (C2).
|
|
28
|
+
* - **No DOM** (`typeof document === "undefined"`, e.g. SSR): render `children`
|
|
29
|
+
* inline rather than nothing, so server output still contains the content.
|
|
30
|
+
*
|
|
31
|
+
* This component does not create or clean up a mount node — point `to` at a node
|
|
32
|
+
* that already exists in the document.
|
|
33
|
+
*/
|
|
34
|
+
export const Portal = (props) => {
|
|
35
|
+
// No-DOM / SSR: preserve content inline (not null) — there is nothing to
|
|
36
|
+
// portal into, but the children should still render.
|
|
37
|
+
if (typeof document === "undefined")
|
|
38
|
+
return props.children;
|
|
39
|
+
const { to, children } = props;
|
|
40
|
+
const target = to === undefined ? document.body : typeof to === "string" ? document.querySelector(to) : to;
|
|
41
|
+
if (!target) {
|
|
42
|
+
// Selector matched nothing. Surface it loudly (unconditional — C2) and fall
|
|
43
|
+
// back to rendering inline so the content is never silently dropped.
|
|
44
|
+
console.warn(`[@reactra/router] <Portal> target not found: ${JSON.stringify(to)} — rendering children inline instead.`);
|
|
45
|
+
return children;
|
|
46
|
+
}
|
|
47
|
+
return createPortal(children, target);
|
|
48
|
+
};
|
|
49
|
+
//# sourceMappingURL=portal.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"portal.js","sourceRoot":"","sources":["../src/portal.ts"],"names":[],"mappings":"AAAA,2DAA2D;AAC3D,EAAE;AACF,2EAA2E;AAC3E,6CAA6C;AAC7C,EAAE;AACF,gFAAgF;AAChF,gFAAgF;AAChF,+EAA+E;AAC/E,0EAA0E;AAC1E,kFAAkF;AAClF,uDAAuD;AAEvD,OAAO,EAAE,aAAa,EAAE,MAAM,OAAO,CAAA;AAErC,OAAO,EAAE,YAAY,EAAE,MAAM,WAAW,CAAA;AAexC;;;;;;;;;;;;;;;;;;;GAmBG;AACH,MAAM,CAAC,MAAM,MAAM,GAAG,CAAC,KAAkB,EAAa,EAAE;IACtD,yEAAyE;IACzE,qDAAqD;IACrD,IAAI,OAAO,QAAQ,KAAK,WAAW;QAAE,OAAO,KAAK,CAAC,QAAQ,CAAA;IAE1D,MAAM,EAAE,EAAE,EAAE,QAAQ,EAAE,GAAG,KAAK,CAAA;IAC9B,MAAM,MAAM,GAAG,EAAE,KAAK,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,EAAE,KAAK,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,aAAa,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAA;IAE1G,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,4EAA4E;QAC5E,qEAAqE;QACrE,OAAO,CAAC,IAAI,CACV,gDAAgD,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC,uCAAuC,CAC1G,CAAA;QACD,OAAO,QAAQ,CAAA;IACjB,CAAC;IAED,OAAO,YAAY,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAA;AACvC,CAAC,CAAA"}
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
export type ScrollRestorationMode = "auto" | "top" | "manual";
|
|
2
|
+
export interface ScrollManagerConfig {
|
|
3
|
+
readonly defaultMode: ScrollRestorationMode;
|
|
4
|
+
/** sessionStorage key holding the per-history-entry positions map. */
|
|
5
|
+
readonly scrollKey: string;
|
|
6
|
+
}
|
|
7
|
+
export interface ScrollPosition {
|
|
8
|
+
readonly x: number;
|
|
9
|
+
readonly y: number;
|
|
10
|
+
}
|
|
11
|
+
/** Navigation kind, as observed at the navigate() / popstate boundary. */
|
|
12
|
+
export type NavigationKind = "push" | "replace" | "pop";
|
|
13
|
+
interface SavedMap {
|
|
14
|
+
[historyKey: string]: ScrollPosition;
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* Generate a fresh history-entry key. `crypto.randomUUID` when available
|
|
18
|
+
* (browser, modern Node); falls back to a monotone counter so tests in a
|
|
19
|
+
* minimal environment still get unique keys. The format isn't load-bearing
|
|
20
|
+
* — the navigate-integration site only uses it as an opaque sessionStorage
|
|
21
|
+
* key.
|
|
22
|
+
*/
|
|
23
|
+
export declare const generateHistoryKey: () => string;
|
|
24
|
+
export interface ScrollManager {
|
|
25
|
+
/** Save the current window scroll position under `historyKey`. */
|
|
26
|
+
saveCurrent(historyKey: string): void;
|
|
27
|
+
/** Apply the saved scroll position for `historyKey`. Returns true if applied. */
|
|
28
|
+
restoreFor(historyKey: string): boolean;
|
|
29
|
+
/** Unconditionally scroll the window to the top. */
|
|
30
|
+
scrollToTop(): void;
|
|
31
|
+
/**
|
|
32
|
+
* Apply the configured `mode` after a navigation commit. Caller picks the
|
|
33
|
+
* mode — for now this is always `cfg.defaultMode`, but the navigate
|
|
34
|
+
* integration site is the place to layer per-route overrides once the
|
|
35
|
+
* meta classifier lands.
|
|
36
|
+
*/
|
|
37
|
+
applyForNavigation(historyKey: string | null, navKind: NavigationKind, modeOverride?: ScrollRestorationMode): void;
|
|
38
|
+
}
|
|
39
|
+
export declare const createScrollManager: (cfg: ScrollManagerConfig) => ScrollManager;
|
|
40
|
+
/**
|
|
41
|
+
* Read the key on the current history entry, or null if absent (e.g.
|
|
42
|
+
* an entry created before scroll restoration was wired in, or one
|
|
43
|
+
* overwritten by a foreign `replaceState`). The caller's mode handler
|
|
44
|
+
* treats `null` as "no saved scroll" — auto mode then falls back to
|
|
45
|
+
* scroll-to-top.
|
|
46
|
+
*/
|
|
47
|
+
export declare const readHistoryKey: () => string | null;
|
|
48
|
+
/**
|
|
49
|
+
* Ensure the current history entry carries a key. If it already does,
|
|
50
|
+
* returns the existing key. Otherwise generates one + `replaceState`s
|
|
51
|
+
* the entry to write it. Returns the key in use.
|
|
52
|
+
*/
|
|
53
|
+
export declare const ensureHistoryKey: () => string;
|
|
54
|
+
/**
|
|
55
|
+
* Push a new history entry with a fresh key embedded. Use this from
|
|
56
|
+
* `navigate()` in place of bare `pushState`.
|
|
57
|
+
*/
|
|
58
|
+
export declare const pushStateWithKey: (extraState: Record<string, unknown>, url: string) => string;
|
|
59
|
+
/**
|
|
60
|
+
* Replace the current history entry with a fresh state object, embedding
|
|
61
|
+
* the SAME key as the entry being replaced. If the entry has no key yet,
|
|
62
|
+
* a fresh one is generated. Returns the key in use.
|
|
63
|
+
*/
|
|
64
|
+
export declare const replaceStateWithKey: (extraState: Record<string, unknown>, url: string) => string;
|
|
65
|
+
export declare const __readMap: (storageKey: string) => SavedMap;
|
|
66
|
+
export declare const __writeMap: (storageKey: string, map: SavedMap) => void;
|
|
67
|
+
export declare const __HISTORY_KEY_FIELD = "__reactraScrollKey";
|
|
68
|
+
export {};
|
|
69
|
+
//# sourceMappingURL=scrollManager.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"scrollManager.d.ts","sourceRoot":"","sources":["../src/scrollManager.ts"],"names":[],"mappings":"AAkCA,MAAM,MAAM,qBAAqB,GAAG,MAAM,GAAG,KAAK,GAAG,QAAQ,CAAA;AAE7D,MAAM,WAAW,mBAAmB;IAClC,QAAQ,CAAC,WAAW,EAAE,qBAAqB,CAAA;IAC3C,sEAAsE;IACtE,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAA;CAC3B;AAED,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,CAAC,EAAE,MAAM,CAAA;IAClB,QAAQ,CAAC,CAAC,EAAE,MAAM,CAAA;CACnB;AAED,0EAA0E;AAC1E,MAAM,MAAM,cAAc,GAAG,MAAM,GAAG,SAAS,GAAG,KAAK,CAAA;AAEvD,UAAU,QAAQ;IAChB,CAAC,UAAU,EAAE,MAAM,GAAG,cAAc,CAAA;CACrC;AAmCD;;;;;;GAMG;AACH,eAAO,MAAM,kBAAkB,QAAO,MASrC,CAAA;AAID,MAAM,WAAW,aAAa;IAC5B,kEAAkE;IAClE,WAAW,CAAC,UAAU,EAAE,MAAM,GAAG,IAAI,CAAA;IACrC,iFAAiF;IACjF,UAAU,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAA;IACvC,oDAAoD;IACpD,WAAW,IAAI,IAAI,CAAA;IACnB;;;;;OAKG;IACH,kBAAkB,CAChB,UAAU,EAAE,MAAM,GAAG,IAAI,EACzB,OAAO,EAAE,cAAc,EACvB,YAAY,CAAC,EAAE,qBAAqB,GACnC,IAAI,CAAA;CACR;AAED,eAAO,MAAM,mBAAmB,GAAI,KAAK,mBAAmB,KAAG,aA0C9D,CAAA;AAMD;;;;;;GAMG;AACH,eAAO,MAAM,cAAc,QAAO,MAAM,GAAG,IAK1C,CAAA;AAED;;;;GAIG;AACH,eAAO,MAAM,gBAAgB,QAAO,MAQnC,CAAA;AAED;;;GAGG;AACH,eAAO,MAAM,gBAAgB,GAC3B,YAAY,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EACnC,KAAK,MAAM,KACV,MAKF,CAAA;AAED;;;;GAIG;AACH,eAAO,MAAM,mBAAmB,GAC9B,YAAY,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EACnC,KAAK,MAAM,KACV,MAMF,CAAA;AAGD,eAAO,MAAM,SAAS,eA/KO,MAAM,KAAG,QA+KN,CAAA;AAChC,eAAO,MAAM,UAAU,eAnKO,MAAM,OAAO,QAAQ,KAAG,IAmKpB,CAAA;AAClC,eAAO,MAAM,mBAAmB,uBAAoB,CAAA"}
|