@llui/vike 0.4.10 → 0.5.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/index.d.ts +3 -3
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/on-render-client.d.ts +80 -189
- package/dist/on-render-client.d.ts.map +1 -1
- package/dist/on-render-client.js +101 -223
- package/dist/on-render-client.js.map +1 -1
- package/dist/on-render-html.d.ts +36 -8
- package/dist/on-render-html.d.ts.map +1 -1
- package/dist/on-render-html.js +36 -31
- package/dist/on-render-html.js.map +1 -1
- package/dist/page-slot.d.ts +22 -12
- package/dist/page-slot.d.ts.map +1 -1
- package/dist/page-slot.js +20 -14
- package/dist/page-slot.js.map +1 -1
- package/package.json +3 -3
package/dist/index.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
export { onRenderHtml, createOnRenderHtml } from './on-render-html.js';
|
|
2
|
-
export type { PageContext, DocumentContext, RenderHtmlResult, RenderHtmlOptions, } from './on-render-html.js';
|
|
3
|
-
export { onRenderClient, createOnRenderClient, fromTransition } from './on-render-client.js';
|
|
4
|
-
export type { ClientPageContext, RenderClientOptions } from './on-render-client.js';
|
|
2
|
+
export type { PageContext, DocumentContext, RenderHtmlResult, RenderHtmlOptions, AnyLayer, } from './on-render-html.js';
|
|
3
|
+
export { onRenderClient, createOnRenderClient, fromTransition, getLayoutChain, } from './on-render-client.js';
|
|
4
|
+
export type { ClientPageContext, RenderClientOptions, LayerHandle } from './on-render-client.js';
|
|
5
5
|
export { pageSlot } from './page-slot.js';
|
|
6
6
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAA;AACtE,YAAY,EACV,WAAW,EACX,eAAe,EACf,gBAAgB,EAChB,iBAAiB,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAA;AACtE,YAAY,EACV,WAAW,EACX,eAAe,EACf,gBAAgB,EAChB,iBAAiB,EACjB,QAAQ,GACT,MAAM,qBAAqB,CAAA;AAE5B,OAAO,EACL,cAAc,EACd,oBAAoB,EACpB,cAAc,EACd,cAAc,GACf,MAAM,uBAAuB,CAAA;AAC9B,YAAY,EAAE,iBAAiB,EAAE,mBAAmB,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAA;AAEhG,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAA"}
|
package/dist/index.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
export { onRenderHtml, createOnRenderHtml } from './on-render-html.js';
|
|
2
|
-
export { onRenderClient, createOnRenderClient, fromTransition } from './on-render-client.js';
|
|
2
|
+
export { onRenderClient, createOnRenderClient, fromTransition, getLayoutChain, } from './on-render-client.js';
|
|
3
3
|
export { pageSlot } from './page-slot.js';
|
|
4
4
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAA;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAA;AAStE,OAAO,EACL,cAAc,EACd,oBAAoB,EACpB,cAAc,EACd,cAAc,GACf,MAAM,uBAAuB,CAAA;AAG9B,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAA","sourcesContent":["export { onRenderHtml, createOnRenderHtml } from './on-render-html.js'\nexport type {\n PageContext,\n DocumentContext,\n RenderHtmlResult,\n RenderHtmlOptions,\n AnyLayer,\n} from './on-render-html.js'\n\nexport {\n onRenderClient,\n createOnRenderClient,\n fromTransition,\n getLayoutChain,\n} from './on-render-client.js'\nexport type { ClientPageContext, RenderClientOptions, LayerHandle } from './on-render-client.js'\n\nexport { pageSlot } from './page-slot.js'\n"]}
|
|
@@ -1,6 +1,20 @@
|
|
|
1
|
-
import type {
|
|
1
|
+
import type { SignalComponentHandle } from '@llui/dom';
|
|
2
|
+
import type { TransitionOptions } from '@llui/dom';
|
|
2
3
|
import type { VikePageContextData } from './vike-namespace.js';
|
|
3
4
|
export { pageSlot } from './page-slot.js';
|
|
5
|
+
/** A type-erased signal component as the adapter handles it (type params unused
|
|
6
|
+
* at runtime). Method syntax + a single `unknown` view-bag param so any concrete
|
|
7
|
+
* `SignalComponentDef<S,M,E>` assigns in (see on-render-html's AnyLayer note —
|
|
8
|
+
* ComponentBag's state/send variance rules out the `<unknown,…>` erasure). */
|
|
9
|
+
export interface AnyLayer {
|
|
10
|
+
readonly name?: string;
|
|
11
|
+
init(): unknown;
|
|
12
|
+
update(state: unknown, msg: unknown): unknown;
|
|
13
|
+
view(bag: unknown): readonly Node[];
|
|
14
|
+
onEffect?(effect: unknown, api: unknown): void | (() => void);
|
|
15
|
+
}
|
|
16
|
+
/** The live handle a mounted/hydrated layer exposes (send/getState/subscribe). */
|
|
17
|
+
export type LayerHandle = SignalComponentHandle<unknown, unknown>;
|
|
4
18
|
declare global {
|
|
5
19
|
interface Window {
|
|
6
20
|
__LLUI_STATE__?: unknown;
|
|
@@ -12,59 +26,31 @@ declare global {
|
|
|
12
26
|
* Vike resolved for the current route.
|
|
13
27
|
*
|
|
14
28
|
* `data` is derived from the global `Vike.PageContext` namespace — the
|
|
15
|
-
* convention users already know from Vike. Consumer augmentations
|
|
16
|
-
*
|
|
17
|
-
* through to every callback here without a cast. Unaugmented projects
|
|
29
|
+
* convention users already know from Vike. Consumer augmentations flow
|
|
30
|
+
* through to every callback here without a cast; unaugmented projects
|
|
18
31
|
* fall back to `unknown`.
|
|
19
32
|
*
|
|
33
|
+
* In the signal runtime a component's `init()` takes no data argument, so
|
|
34
|
+
* each layer's `data` slice is used directly as that layer's seed STATE
|
|
35
|
+
* when present; when absent, the layer's own `init()` provides the seed.
|
|
36
|
+
*
|
|
20
37
|
* `lluiLayoutData` is optional and carries per-layer data for the layout
|
|
21
38
|
* chain configured via `createOnRenderClient({ Layout })`. It's indexed
|
|
22
|
-
* outermost-to-innermost, one entry per layout layer.
|
|
23
|
-
* mean the corresponding layout's `init()` receives `undefined`. Users
|
|
24
|
-
* wire this from their Vike `+data.ts` files by merging layout-owned
|
|
25
|
-
* data under the `lluiLayoutData` key.
|
|
39
|
+
* outermost-to-innermost, one entry per layout layer.
|
|
26
40
|
*/
|
|
27
41
|
export interface ClientPageContext {
|
|
28
|
-
Page:
|
|
42
|
+
Page: AnyLayer;
|
|
29
43
|
data?: VikePageContextData;
|
|
30
44
|
lluiLayoutData?: readonly unknown[];
|
|
31
45
|
isHydration?: boolean;
|
|
32
46
|
}
|
|
33
|
-
type LayoutChain = ReadonlyArray<
|
|
47
|
+
type LayoutChain = ReadonlyArray<AnyLayer>;
|
|
34
48
|
/**
|
|
35
49
|
* Page-lifecycle hooks that fire around the dispose → mount cycle on
|
|
36
50
|
* client navigation. With persistent layouts in play the cycle only
|
|
37
51
|
* tears down the *divergent* suffix of the layout chain — any layers
|
|
38
52
|
* shared between the old and new routes stay mounted.
|
|
39
53
|
*
|
|
40
|
-
* Navigation sequence for an already-mounted app:
|
|
41
|
-
*
|
|
42
|
-
* ```
|
|
43
|
-
* client nav triggered
|
|
44
|
-
* │
|
|
45
|
-
* ▼
|
|
46
|
-
* compare old chain to new chain → find first mismatch index K
|
|
47
|
-
* │
|
|
48
|
-
* ▼
|
|
49
|
-
* onLeave(leaveTarget) ← awaited; leaveTarget is the slot element
|
|
50
|
-
* │ at depth K-1 (or the root container if K=0)
|
|
51
|
-
* │ whose contents are about to be replaced
|
|
52
|
-
* ▼
|
|
53
|
-
* dispose chainHandles[K..end] innermost first
|
|
54
|
-
* │
|
|
55
|
-
* ▼
|
|
56
|
-
* leaveTarget.textContent = ''
|
|
57
|
-
* │
|
|
58
|
-
* ▼
|
|
59
|
-
* mount newChain[K..end] into leaveTarget, outermost first
|
|
60
|
-
* │
|
|
61
|
-
* ▼
|
|
62
|
-
* onEnter(leaveTarget) ← fire-and-forget; fresh DOM in place
|
|
63
|
-
* │
|
|
64
|
-
* ▼
|
|
65
|
-
* onMount()
|
|
66
|
-
* ```
|
|
67
|
-
*
|
|
68
54
|
* On the initial hydration render, `onLeave` and `onEnter` are NOT
|
|
69
55
|
* called — there's no outgoing page to leave and no animation to enter.
|
|
70
56
|
* Use `onMount` for code that should run on every render including the
|
|
@@ -76,26 +62,21 @@ export interface RenderClientOptions {
|
|
|
76
62
|
/**
|
|
77
63
|
* Persistent layout chain. One of:
|
|
78
64
|
*
|
|
79
|
-
* - A single `
|
|
80
|
-
* - An array of `
|
|
81
|
-
* layout last. Every layer except the innermost must call
|
|
65
|
+
* - A single `SignalComponentDef` — becomes a one-layout chain.
|
|
66
|
+
* - An array of `SignalComponentDef`s — outermost layout first,
|
|
67
|
+
* innermost layout last. Every layer except the innermost must call
|
|
82
68
|
* `pageSlot()` in its view to declare where nested content renders.
|
|
83
|
-
* - A function that returns a chain from the current `pageContext
|
|
84
|
-
* lets different routes use different chains, e.g. by reading
|
|
85
|
-
* Vike's `pageContext.urlPathname` or `pageContext.config.Layout`.
|
|
69
|
+
* - A function that returns a chain from the current `pageContext`.
|
|
86
70
|
*
|
|
87
|
-
* Layers
|
|
88
|
-
*
|
|
89
|
-
* Dialogs, focus traps, and effect subscriptions rooted in a surviving
|
|
90
|
-
* layer are unaffected by the nav.
|
|
71
|
+
* Layers shared between the previous and next navigation stay mounted.
|
|
72
|
+
* Only the divergent suffix is disposed and re-mounted.
|
|
91
73
|
*/
|
|
92
|
-
Layout?:
|
|
74
|
+
Layout?: AnyLayer | LayoutChain | ((pageContext: ClientPageContext) => LayoutChain);
|
|
93
75
|
/**
|
|
94
76
|
* Called on the slot element whose contents are about to be replaced,
|
|
95
77
|
* BEFORE the divergent suffix is disposed and re-mounted. The slot's
|
|
96
|
-
* current DOM is still attached when this runs
|
|
97
|
-
*
|
|
98
|
-
* swap until the animation completes.
|
|
78
|
+
* current DOM is still attached when this runs. Return a promise to
|
|
79
|
+
* defer the swap until the animation completes.
|
|
99
80
|
*
|
|
100
81
|
* For a plain no-layout setup, the slot element is the root container.
|
|
101
82
|
* Not called on the initial hydration render.
|
|
@@ -103,105 +84,47 @@ export interface RenderClientOptions {
|
|
|
103
84
|
onLeave?: (el: HTMLElement) => void | Promise<void>;
|
|
104
85
|
/**
|
|
105
86
|
* Called after the new divergent suffix is mounted, on the same slot
|
|
106
|
-
* element that was passed to `onLeave`.
|
|
107
|
-
*
|
|
108
|
-
*
|
|
109
|
-
* Not called on the initial hydration render.
|
|
87
|
+
* element that was passed to `onLeave`. Fire-and-forget. Not called on
|
|
88
|
+
* the initial hydration render.
|
|
110
89
|
*/
|
|
111
90
|
onEnter?: (el: HTMLElement) => void;
|
|
112
91
|
/**
|
|
113
92
|
* Called after mount or hydration completes. Fires on every render
|
|
114
|
-
* including the initial hydration.
|
|
115
|
-
*
|
|
116
|
-
*
|
|
117
|
-
* Receives the live layout chain — `[...layouts, page]`, outermost
|
|
118
|
-
* first — as `AppHandle`s. Consumers wiring observability bridges,
|
|
119
|
-
* the LAP agent client, custom devtools, or any tool that needs
|
|
120
|
-
* `getState` / `send` / `subscribe` for the *outermost layout*
|
|
121
|
-
* (which `window.__lluiComponents` did not reliably expose for
|
|
122
|
-
* hydrated apps until @llui/dom@0.0.31) can read it from here:
|
|
123
|
-
*
|
|
124
|
-
* ```ts
|
|
125
|
-
* createOnRenderClient({
|
|
126
|
-
* Layout: AppLayout,
|
|
127
|
-
* onMount: (chain) => {
|
|
128
|
-
* const layout = chain[0] // outermost layout
|
|
129
|
-
* const page = chain.at(-1) // current page
|
|
130
|
-
* },
|
|
131
|
-
* })
|
|
132
|
-
* ```
|
|
133
|
-
*
|
|
134
|
-
* The array is a snapshot at call time; consumers should not retain
|
|
135
|
-
* references to handles past the next navigation, since surviving
|
|
136
|
-
* layers stay live but disposed layers do not.
|
|
93
|
+
* including the initial hydration. Receives the live layout chain —
|
|
94
|
+
* `[...layouts, page]`, outermost first — as `LayerHandle`s.
|
|
137
95
|
*/
|
|
138
|
-
onMount?: (chain: readonly
|
|
96
|
+
onMount?: (chain: readonly LayerHandle[]) => void;
|
|
139
97
|
/**
|
|
140
98
|
* Called for each surviving layout layer whose `lluiLayoutData[i]`
|
|
141
|
-
* slice changed across a client navigation. Surviving layers
|
|
142
|
-
*
|
|
143
|
-
*
|
|
144
|
-
*
|
|
145
|
-
*
|
|
146
|
-
* The framework gives you the layer's `AppHandle` and the changed
|
|
147
|
-
* data; you decide how to translate it into a state-update message
|
|
148
|
-
* and dispatch it through `handle.send(msg)`. Typically:
|
|
149
|
-
*
|
|
150
|
-
* ```ts
|
|
151
|
-
* createOnRenderClient({
|
|
152
|
-
* Layout: NavAwareLayout,
|
|
153
|
-
* onLayerDataChange: ({ def, handle, newData }) => {
|
|
154
|
-
* if (def === NavAwareLayout) {
|
|
155
|
-
* handle.send({ type: 'navChanged', data: newData as NavData })
|
|
156
|
-
* }
|
|
157
|
-
* },
|
|
158
|
-
* })
|
|
159
|
-
* ```
|
|
160
|
-
*
|
|
161
|
-
* Not called for layers whose data slice is unchanged (shallow-key
|
|
162
|
-
* `Object.is` diff on records, whole-value `Object.is` for
|
|
163
|
-
* primitives). Not called on the initial hydration render — `init`
|
|
164
|
-
* handles the initial data injection there. Not called for the
|
|
165
|
-
* page layer (the innermost entry); the page always disposes and
|
|
166
|
-
* remounts, so its `init(data)` receives the fresh data directly.
|
|
99
|
+
* slice changed across a client navigation. Surviving layers stay
|
|
100
|
+
* mounted but need a fresh injection of nav-driven data. You decide how
|
|
101
|
+
* to translate the new data into a message and dispatch it through
|
|
102
|
+
* `handle.send(msg)`.
|
|
167
103
|
*
|
|
168
|
-
*
|
|
169
|
-
*
|
|
170
|
-
*
|
|
104
|
+
* Not called for unchanged slices, not on the initial hydration render,
|
|
105
|
+
* and not for the page layer (it always disposes and remounts, so its
|
|
106
|
+
* `init`/seed receives the fresh data directly).
|
|
171
107
|
*/
|
|
172
108
|
onLayerDataChange?: (ctx: {
|
|
173
|
-
def:
|
|
174
|
-
handle:
|
|
109
|
+
def: AnyLayer;
|
|
110
|
+
handle: LayerHandle;
|
|
175
111
|
newData: unknown;
|
|
176
112
|
prevData: unknown;
|
|
177
113
|
}) => void;
|
|
178
114
|
/**
|
|
179
|
-
* Forwarded to
|
|
180
|
-
*
|
|
181
|
-
*
|
|
182
|
-
*
|
|
183
|
-
* — the SSR pass already ran them on the server, and re-running on
|
|
184
|
-
* the client typically produces duplicate fetches / subscriptions.
|
|
115
|
+
* Forwarded to the signal hydrate path for every layer on initial
|
|
116
|
+
* hydration. When `true`, effects returned by each component's `init()`
|
|
117
|
+
* are dispatched post-swap on the client. When `false` (default), they
|
|
118
|
+
* are skipped — the SSR pass already ran them.
|
|
185
119
|
*
|
|
186
|
-
*
|
|
187
|
-
*
|
|
188
|
-
* - all returned effects are idempotent / client-only (e.g. attaching
|
|
189
|
-
* a `window` listener), AND
|
|
190
|
-
* - the SSR path didn't run them (typically because `init()` checks
|
|
191
|
-
* a `loaded` flag in state and returns `[]` when serverState
|
|
192
|
-
* already has the data loaded).
|
|
193
|
-
*
|
|
194
|
-
* Subsequent client-side navigation always uses `mountApp` /
|
|
195
|
-
* `mountAtAnchor` (fresh mount), which always fires init effects
|
|
196
|
-
* regardless of this flag.
|
|
120
|
+
* Subsequent client-side navigation always uses a fresh mount, which
|
|
121
|
+
* always fires init effects regardless of this flag.
|
|
197
122
|
*/
|
|
198
123
|
runInitEffectsOnHydrate?: boolean;
|
|
199
124
|
}
|
|
200
125
|
/**
|
|
201
|
-
* Adapt a `TransitionOptions` object
|
|
202
|
-
*
|
|
203
|
-
* / `slide`) into the `onLeave` / `onEnter` pair expected by
|
|
204
|
-
* `createOnRenderClient`.
|
|
126
|
+
* Adapt a `TransitionOptions` object into the `onLeave` / `onEnter` pair
|
|
127
|
+
* expected by `createOnRenderClient`.
|
|
205
128
|
*
|
|
206
129
|
* ```ts
|
|
207
130
|
* import { createOnRenderClient, fromTransition } from '@llui/vike/client'
|
|
@@ -214,15 +137,13 @@ export interface RenderClientOptions {
|
|
|
214
137
|
* ```
|
|
215
138
|
*
|
|
216
139
|
* The transition operates on the slot element — in a no-layout setup,
|
|
217
|
-
* the root container; in a layout setup, the innermost surviving
|
|
218
|
-
*
|
|
219
|
-
* outgoing page content, then the new page fades in.
|
|
140
|
+
* the root container; in a layout setup, the innermost surviving layer's
|
|
141
|
+
* `pageSlot()` element.
|
|
220
142
|
*/
|
|
221
143
|
export declare function fromTransition(t: TransitionOptions): Pick<RenderClientOptions, 'onLeave' | 'onEnter'>;
|
|
222
144
|
/**
|
|
223
|
-
* @internal — test helper. Disposes every layer in the current chain
|
|
224
|
-
*
|
|
225
|
-
* mount. Not part of the public API; subject to change without notice.
|
|
145
|
+
* @internal — test helper. Disposes every layer in the current chain and
|
|
146
|
+
* clears the module state so subsequent calls behave as a first mount.
|
|
226
147
|
*/
|
|
227
148
|
export declare function _resetChainForTest(): void;
|
|
228
149
|
/**
|
|
@@ -233,75 +154,45 @@ export declare function _resetChainForTest(): void;
|
|
|
233
154
|
export declare function _resetCurrentHandleForTest(): void;
|
|
234
155
|
/**
|
|
235
156
|
* Default onRenderClient hook — no layout, no animation hooks. Hydrates
|
|
236
|
-
* on first load, mounts fresh on subsequent navs.
|
|
237
|
-
* for the customizable factory form.
|
|
157
|
+
* on first load, mounts fresh on subsequent navs.
|
|
238
158
|
*/
|
|
239
159
|
export declare function onRenderClient(pageContext: ClientPageContext): Promise<void>;
|
|
240
160
|
/**
|
|
241
|
-
* Factory to create a customized onRenderClient hook. See
|
|
242
|
-
* for the full option surface
|
|
243
|
-
* layouts, route transitions, and lifecycle hooks.
|
|
161
|
+
* Factory to create a customized onRenderClient hook. See
|
|
162
|
+
* `RenderClientOptions` for the full option surface.
|
|
244
163
|
*
|
|
245
164
|
* **Do not name your layout file `+Layout.ts`.** Vike reserves the `+`
|
|
246
|
-
* prefix for its own framework config conventions
|
|
247
|
-
*
|
|
248
|
-
*
|
|
249
|
-
* adapter in that sense — it's a render adapter, and `createOnRenderClient`
|
|
250
|
-
* consumes the layout component directly via the `Layout` option. Name
|
|
251
|
-
* the file `Layout.ts`, `app-layout.ts`, or anywhere outside `/pages`
|
|
252
|
-
* that Vike won't scan, and import it here by path.
|
|
253
|
-
*
|
|
254
|
-
* ```ts
|
|
255
|
-
* // pages/+onRenderClient.ts
|
|
256
|
-
* import { createOnRenderClient, fromTransition } from '@llui/vike/client'
|
|
257
|
-
* import { routeTransition } from '@llui/transitions'
|
|
258
|
-
* import { AppLayout } from './Layout.js' // ← NOT './+Layout'
|
|
259
|
-
*
|
|
260
|
-
* export const onRenderClient = createOnRenderClient({
|
|
261
|
-
* Layout: AppLayout,
|
|
262
|
-
* ...fromTransition(routeTransition({ duration: 200 })),
|
|
263
|
-
* onMount: () => console.log('page rendered'),
|
|
264
|
-
* })
|
|
265
|
-
* ```
|
|
165
|
+
* prefix for its own framework config conventions. Name the file
|
|
166
|
+
* `Layout.ts`, `app-layout.ts`, or anywhere outside `/pages` that Vike
|
|
167
|
+
* won't scan, and import it here by path.
|
|
266
168
|
*/
|
|
267
169
|
export declare function createOnRenderClient(options: RenderClientOptions): (pageContext: ClientPageContext) => Promise<void>;
|
|
268
170
|
/**
|
|
269
|
-
* Public read of the current layout chain
|
|
270
|
-
* `
|
|
271
|
-
* before the first mount; updates after every navigation.
|
|
272
|
-
*
|
|
273
|
-
* Returns a fresh array each call, but the AppHandle references are
|
|
274
|
-
* shared with the live chain — calling `.send()` / `.dispose()` /
|
|
275
|
-
* `.subscribe()` operates on the same instance the framework manages.
|
|
276
|
-
*
|
|
277
|
-
* Prefer the `onMount(chain)` callback for lifecycle-coupled wiring
|
|
278
|
-
* (the framework guarantees the chain is fully populated when it
|
|
279
|
-
* fires); use this getter for ad-hoc reads where the caller can't
|
|
280
|
-
* thread state through `onMount`.
|
|
171
|
+
* Public read of the current layout chain — live `LayerHandle`s for
|
|
172
|
+
* `[...layouts, page]`, outermost first. Empty before the first mount.
|
|
281
173
|
*/
|
|
282
|
-
export declare function getLayoutChain(): readonly
|
|
174
|
+
export declare function getLayoutChain(): readonly LayerHandle[];
|
|
283
175
|
interface MountOpts {
|
|
284
176
|
mode: 'mount' | 'hydrate';
|
|
285
177
|
/** For hydration: the full `window.__LLUI_STATE__` envelope. */
|
|
286
178
|
serverStateEnvelope?: unknown;
|
|
287
|
-
/** Forwarded to
|
|
179
|
+
/** Forwarded to the signal hydrate path. Mount mode ignores. */
|
|
288
180
|
runInitEffectsOnHydrate?: boolean;
|
|
289
181
|
}
|
|
290
182
|
/**
|
|
291
|
-
* Mount (or hydrate) `chain[startAt..end]` into `initialTarget`,
|
|
292
|
-
* the
|
|
293
|
-
*
|
|
183
|
+
* Mount (or hydrate) `chain[startAt..end]` into `initialTarget`, replaying
|
|
184
|
+
* `initialContexts` into the first layer's build. Threads each layer's slot
|
|
185
|
+
* (anchor + captured contexts) into the next layer's target + contexts.
|
|
294
186
|
*
|
|
295
|
-
* `initialTarget` is `HTMLElement` for the outermost layer (container
|
|
296
|
-
*
|
|
297
|
-
*
|
|
187
|
+
* `initialTarget` is an `HTMLElement` for the outermost layer (container mount/
|
|
188
|
+
* hydrate) and a `Comment` for inner layers mounting relative to a `pageSlot()`
|
|
189
|
+
* anchor.
|
|
298
190
|
*
|
|
299
|
-
* Fails loudly if a non-innermost layer forgot to call `pageSlot()`,
|
|
300
|
-
*
|
|
191
|
+
* Fails loudly if a non-innermost layer forgot to call `pageSlot()`, or if the
|
|
192
|
+
* innermost layer called `pageSlot()` unnecessarily.
|
|
301
193
|
*
|
|
302
|
-
* @internal — test helper. Exported so `client-page-slot.test.ts` can
|
|
303
|
-
*
|
|
304
|
-
* Not part of the public API.
|
|
194
|
+
* @internal — test helper. Exported so `client-page-slot.test.ts` can exercise
|
|
195
|
+
* anchor-mount/dispose contracts directly with hand-built DOM.
|
|
305
196
|
*/
|
|
306
|
-
export declare function _mountChainSuffix(chain: LayoutChain, chainData: readonly unknown[], startAt: number, initialTarget: HTMLElement | Comment,
|
|
197
|
+
export declare function _mountChainSuffix(chain: LayoutChain, chainData: readonly unknown[], startAt: number, initialTarget: HTMLElement | Comment, initialContexts: ReadonlyMap<symbol, unknown> | undefined, opts: MountOpts): void;
|
|
307
198
|
//# sourceMappingURL=on-render-client.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"on-render-client.d.ts","sourceRoot":"","sources":["../src/on-render-client.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,
|
|
1
|
+
{"version":3,"file":"on-render-client.d.ts","sourceRoot":"","sources":["../src/on-render-client.ts"],"names":[],"mappings":"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"}
|