@qontinui/ui-bridge-native 0.6.11 → 0.6.13

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.
Files changed (63) hide show
  1. package/README.md +36 -16
  2. package/dist/control/action-executor.d.ts +42 -2
  3. package/dist/control/action-executor.d.ts.map +1 -1
  4. package/dist/control/index.js +723 -4
  5. package/dist/control/index.js.map +1 -1
  6. package/dist/control/index.mjs +723 -5
  7. package/dist/control/index.mjs.map +1 -1
  8. package/dist/control/types.d.ts +82 -1
  9. package/dist/control/types.d.ts.map +1 -1
  10. package/dist/core/abortable.d.ts +151 -0
  11. package/dist/core/abortable.d.ts.map +1 -0
  12. package/dist/core/action-effect.d.ts +74 -0
  13. package/dist/core/action-effect.d.ts.map +1 -0
  14. package/dist/core/element-actions.d.ts +38 -0
  15. package/dist/core/element-actions.d.ts.map +1 -0
  16. package/dist/core/index.d.ts +4 -0
  17. package/dist/core/index.d.ts.map +1 -1
  18. package/dist/core/index.js +853 -15
  19. package/dist/core/index.js.map +1 -1
  20. package/dist/core/index.mjs +835 -16
  21. package/dist/core/index.mjs.map +1 -1
  22. package/dist/core/param-schema.d.ts +282 -0
  23. package/dist/core/param-schema.d.ts.map +1 -0
  24. package/dist/core/registry.d.ts +317 -2
  25. package/dist/core/registry.d.ts.map +1 -1
  26. package/dist/core/types.d.ts +231 -32
  27. package/dist/core/types.d.ts.map +1 -1
  28. package/dist/debug/index.js.map +1 -1
  29. package/dist/debug/index.mjs.map +1 -1
  30. package/dist/index.d.ts +10 -5
  31. package/dist/index.d.ts.map +1 -1
  32. package/dist/index.js +1603 -118
  33. package/dist/index.js.map +1 -1
  34. package/dist/index.mjs +1585 -119
  35. package/dist/index.mjs.map +1 -1
  36. package/dist/react/UIBridgeNativeProvider.d.ts +1 -23
  37. package/dist/react/UIBridgeNativeProvider.d.ts.map +1 -1
  38. package/dist/react/index.js +1420 -113
  39. package/dist/react/index.js.map +1 -1
  40. package/dist/react/index.mjs +1420 -113
  41. package/dist/react/index.mjs.map +1 -1
  42. package/dist/react/useUIBridge.d.ts +19 -22
  43. package/dist/react/useUIBridge.d.ts.map +1 -1
  44. package/dist/react/useUIComponent.d.ts +113 -8
  45. package/dist/react/useUIComponent.d.ts.map +1 -1
  46. package/dist/react/useUIElement.d.ts +34 -8
  47. package/dist/react/useUIElement.d.ts.map +1 -1
  48. package/dist/server/handlers.d.ts.map +1 -1
  49. package/dist/server/http-server.d.ts +15 -2
  50. package/dist/server/http-server.d.ts.map +1 -1
  51. package/dist/server/index.js +348 -43
  52. package/dist/server/index.js.map +1 -1
  53. package/dist/server/index.mjs +348 -44
  54. package/dist/server/index.mjs.map +1 -1
  55. package/dist/server/observability.d.ts +40 -0
  56. package/dist/server/observability.d.ts.map +1 -1
  57. package/dist/server/types.d.ts +57 -1
  58. package/dist/server/types.d.ts.map +1 -1
  59. package/dist/transport/CloudRelayClient.d.ts.map +1 -1
  60. package/dist/transport/DeviceAnnouncer.d.ts.map +1 -1
  61. package/dist/transport/relay-logging.d.ts +50 -0
  62. package/dist/transport/relay-logging.d.ts.map +1 -0
  63. package/package.json +2 -2
@@ -4,7 +4,7 @@
4
4
  * Central registry for all UI elements and components registered with UI Bridge Native.
5
5
  * Adapted from ui-bridge for React Native environments.
6
6
  */
7
- import type { RegisteredNativeElement, RegisteredNativeComponent, NativeElementState, NativeElementType, NativeStandardAction, NativeCustomAction, NativeAppInfo, NativeBridgeSnapshot, NativeElementBbox, NativeElementRef, NativeRegistrationCoverage, NativeRouteProviderLike, NativeSnapshotEnrichers, NativeSnapshotEnricher, Workflow, BridgeEventType, BridgeEventListener } from './types';
7
+ import type { RegisteredNativeElement, RegisteredNativeComponent, NativeElementState, NativeElementType, NativeStandardAction, NativeCustomAction, NativeAppInfo, NativeBridgeSnapshot, NativeElementBbox, NativeElementRef, NativeRegistrationCoverage, NativeRouteProviderLike, NativeSnapshotEnrichers, NativeSnapshotEnricher, Workflow, BridgeEventType, BridgeEventListener, IREffect } from './types';
8
8
  /**
9
9
  * Options for registering an element
10
10
  */
@@ -19,6 +19,24 @@ export interface RegisterElementOptions {
19
19
  accessibilityLabel?: string;
20
20
  /** Route path where the element was registered (for page-scoped filtering) */
21
21
  registrationRoute?: string | null;
22
+ /**
23
+ * Id of the registered scrollable container this element lives inside.
24
+ *
25
+ * When set, {@link computeVisibility} clips the element against that
26
+ * container's measured frame as well as the window, so a row scrolled out of
27
+ * its `ScrollView` / `FlatList` stops reporting `visibility: 'visible'`.
28
+ *
29
+ * DECLARED, not inferred, and that is deliberate. React Native gives the
30
+ * registry no parent chain — `useUIElement` is a hook, so it never wraps its
31
+ * element's children and cannot publish itself as their ancestor. Guessing
32
+ * the ancestor geometrically is worse than not clipping: a full-width scroll
33
+ * container horizontally contains the tab bar and the header too, and
34
+ * clipping those against it would report on-screen chrome as off-screen.
35
+ * A wrong `hidden` is a worse answer than a coarse `visible`.
36
+ *
37
+ * Unset (the default) leaves the window as the only clip region.
38
+ */
39
+ scrollAncestorId?: string;
22
40
  /** Flattened RN style (from StyleSheet.flatten) for design review */
23
41
  flatStyle?: Record<string, unknown>;
24
42
  /** State-specific style overrides for design review */
@@ -38,10 +56,49 @@ export interface RegisterComponentOptions {
38
56
  id: string;
39
57
  label?: string;
40
58
  description?: string;
41
- handler: (params?: unknown) => unknown | Promise<unknown>;
59
+ /**
60
+ * Phase 2 (same plan): the action's published parameter schema. It was
61
+ * ABSENT here and dropped by the object literal in `registerComponent`
62
+ * below, so the field `ComponentAction` declares could never reach a
63
+ * registered native component and the native invocation seam had nothing
64
+ * to validate against. That is the silent-drop trap the plan warns about,
65
+ * already realised.
66
+ */
67
+ paramSchema?: Record<string, unknown>;
68
+ /**
69
+ * Phase 4 (same plan): the safety annotation. Absent here, an author's
70
+ * `effect: 'destructive'` would die at this hop exactly the way
71
+ * `paramSchema` did before Phase 2 — the literal in `registerComponent`
72
+ * has a closed field list and nothing type-checks the omission.
73
+ */
74
+ effect?: IREffect;
75
+ /**
76
+ * Phase 3 (plan 2026-08-20-ui-bridge-action-declaration-shape): the second
77
+ * argument is the `ActionHandlerOptions` bag carrying the cancellation
78
+ * signal. A 1-arity handler stays assignable.
79
+ */
80
+ handler: (params?: unknown, options?: {
81
+ signal?: AbortSignal;
82
+ }) => unknown | Promise<unknown>;
42
83
  }>;
43
84
  elementIds?: string[];
44
85
  }
86
+ /**
87
+ * Options for {@link NativeUIBridgeRegistry.updateComponentMeta}.
88
+ *
89
+ * Every field is optional and `undefined` means "leave the registered value
90
+ * alone" — the same partial-update semantics {@link RegisterComponentOptions}'s
91
+ * sister {@link NativeUIBridgeRegistry.updateElementMeta} uses. A consequence
92
+ * worth stating: a `description` cannot be CLEARED through this door, only
93
+ * replaced. Pass `actions: []` to publish an empty action list; that is
94
+ * distinguishable from omitting the field.
95
+ */
96
+ export interface UpdateComponentMetaOptions {
97
+ name?: string;
98
+ description?: string;
99
+ actions?: RegisterComponentOptions['actions'];
100
+ elementIds?: string[];
101
+ }
45
102
  /**
46
103
  * Registry configuration
47
104
  */
@@ -78,6 +135,29 @@ export declare function extractHandlerNames(props?: Record<string, unknown>): st
78
135
  * at the root, because tab elements had `registrationRoute: null`.
79
136
  */
80
137
  export declare function matchesCurrentRoute(registrationRoute: string | null | undefined, currentRoute: string): boolean;
138
+ /**
139
+ * Derive the snapshot's `activeTab` from an Expo Router segment list.
140
+ *
141
+ * Expo Router spells a layout group as a parenthesised segment and a dynamic
142
+ * route as a bracketed one, so `usePathname()`/`useSegments()` on the "runs"
143
+ * tab of a `(tabs)` layout yield `"/(tabs)/runs"` and `["(tabs)", "runs"]`
144
+ * (the shape the `RouteProvider` doc comment already documents). The tab a user
145
+ * is looking at is therefore the segment immediately following the INNERMOST
146
+ * group.
147
+ *
148
+ * Rules, all deliberately conservative — an unknown tab is reported as absent
149
+ * rather than guessed:
150
+ *
151
+ * - `["(tabs)", "runs"]` → `"runs"`
152
+ * - `["(tabs)", "runs", "[id]"]`→ `"runs"` (a detail screen is still *on* a tab)
153
+ * - `["(tabs)"]` → `"index"` (the group's own index route)
154
+ * - `["(tabs)", "[id]"]` → `undefined` (dynamic route, not a tab)
155
+ * - `["settings"]` → `undefined` (no group layout ⇒ no tabs)
156
+ * - `[]` / `undefined` → `undefined`
157
+ *
158
+ * Exported so the rules are unit-testable without standing up a registry.
159
+ */
160
+ export declare function deriveActiveTabFromSegments(segments?: string[]): string | undefined;
81
161
  /**
82
162
  * Project an element's runtime state into a runner-native pixel-space `bbox`.
83
163
  *
@@ -105,6 +185,104 @@ export declare function matchesCurrentRoute(registrationRoute: string | null | u
105
185
  * (rare; keeps a best-effort box rather than dropping the element).
106
186
  */
107
187
  export declare function projectBbox(state: NativeElementState, visibility: 'visible' | 'likely-visible' | 'hidden', pixelRatio?: number): NativeElementBbox | undefined;
188
+ /**
189
+ * A rectangle in window (page) coordinates, logical dp — the same space
190
+ * `measureInWindow` reports `pageX`/`pageY` in.
191
+ */
192
+ export interface NativePageRect {
193
+ left: number;
194
+ top: number;
195
+ right: number;
196
+ bottom: number;
197
+ }
198
+ /**
199
+ * Why an element is not plainly visible.
200
+ *
201
+ * DUPLICATE of `@qontinui/ui-bridge` `VisibilityReason`
202
+ * (`src/core/types.ts` — `'hidden' | 'off-screen' | 'occluded' | 'no-layout'`),
203
+ * for the same reason the action types above are duplicated: `@qontinui/ui-bridge`
204
+ * is an OPTIONAL peer of this package, so this module must not import from it.
205
+ * KEEP IN SYNC — one vocabulary across both SDKs is the point; do not coin
206
+ * native-only spellings.
207
+ *
208
+ * `'occluded'` is declared but never produced here: React Native gives the
209
+ * registry no hit-test equivalent of `document.elementFromPoint`, so this SDK
210
+ * cannot honestly claim occlusion. It stays in the union so a native reason
211
+ * string is always a valid web reason string.
212
+ */
213
+ export type NativeVisibilityReason = 'hidden' | 'off-screen' | 'occluded' | 'no-layout';
214
+ /** The three-value verdict carried on every snapshot element. */
215
+ export type NativeVisibility = 'visible' | 'likely-visible' | 'hidden';
216
+ /**
217
+ * Convert an element's measured layout into a page-space rect, or `null` when
218
+ * it has no TRUSTWORTHY page-space origin.
219
+ *
220
+ * STRICTER THAN {@link projectBbox} ON PURPOSE. `projectBbox` falls back to the
221
+ * parent-relative `x`/`y` when `pageX`/`pageY` weren't measured, because a
222
+ * slightly-wrong box is still a usable box. Clipping cannot take that trade: a
223
+ * parent-relative origin compared against window coordinates silently mixes two
224
+ * coordinate spaces and yields a wrong `hidden` verdict — the outcome
225
+ * `RegisterElementOptions.scrollAncestorId` calls worse than a coarse
226
+ * `visible`. So a layout flagged `pageOriginUnmeasured` returns `null` here,
227
+ * and {@link computeVisibility} declines to clip rather than guess.
228
+ */
229
+ export declare function pageRectOf(state: NativeElementState): NativePageRect | null;
230
+ /**
231
+ * Is this rect empty — nothing can overlap it?
232
+ *
233
+ * {@link intersectRects} returns an INVERTED rect (`right < left`) when the two
234
+ * inputs are disjoint, which is the honest answer for "the reachable region",
235
+ * but `spansOverlap`'s `aMin < bMax && aMax > bMin` reads an inverted span as
236
+ * overlapping. Every consumer of an intersection must ask this first.
237
+ */
238
+ export declare function isEmptyRect(rect: NativePageRect): boolean;
239
+ /**
240
+ * Intersect two page rects, or `null` when either is absent (`null` means
241
+ * UNKNOWN, so it never narrows the other side).
242
+ *
243
+ * The result may be EMPTY — check {@link isEmptyRect}. That happens whenever
244
+ * the two rects are disjoint, e.g. a scroll container that has itself been
245
+ * scrolled out of the window: nothing inside it can be on screen, and an empty
246
+ * clip is exactly how that is expressed.
247
+ */
248
+ export declare function intersectRects(a: NativePageRect | null, b: NativePageRect | null): NativePageRect | null;
249
+ /**
250
+ * Decide what a snapshot should say about an element being on screen.
251
+ *
252
+ * THE DEFECT THIS CLOSES: visibility used to be derived from mount + `measure()`
253
+ * alone — `state.visible ? (state.layout ? 'visible' : 'likely-visible') : 'hidden'`
254
+ * — with no comparison against any bounds at all. Every mounted, measured
255
+ * element reported `visible`, including rows scrolled far past the fold, so a
256
+ * snapshot claimed things were on screen that were not.
257
+ *
258
+ * SCOPE — read this before citing it. This is a PURE PROJECTION: it reads
259
+ * `state.visible` and never writes it. An off-screen element still carries
260
+ * `state.visible === true`; only the snapshot's `visibility` /
261
+ * `visibilityReason` change. That is a deliberate divergence from the web SDK,
262
+ * which folds off-screen INTO the boolean (`@qontinui/ui-bridge`
263
+ * `src/core/registry.ts` — `if (!inViewport) return { visible: false, reason:
264
+ * 'off-screen' }`), and it means any consumer asserting on `state.visible`
265
+ * alone — `/manual-test`'s "PRESENT IS NOT VISIBLE" gate among them — sees no
266
+ * change on mobile and stays as vacuous as it was. Closing that needs either a
267
+ * matching demotion of `state.visible` here or a consumer that reads
268
+ * `visibility`; both are contract decisions beyond this projection, and
269
+ * neither is done. The strings are shared with the web SDK; the SHAPE is not.
270
+ *
271
+ * `clip` is the region the element must reach to count as on screen — the
272
+ * window, intersected with the measured frame of a declared
273
+ * `scrollAncestorId`. **A `null`/absent clip means the bounds are UNKNOWN, and
274
+ * an unknown never demotes**: with no viewport injected (every non-RN caller,
275
+ * including this package's own suite) the answer is exactly what it was before.
276
+ * Absence of evidence is not evidence of off-screen.
277
+ *
278
+ * Any overlap at all counts as visible. A half-scrolled row IS on screen, and
279
+ * a ratio threshold would be a second, unshared policy knob for callers to
280
+ * disagree about.
281
+ */
282
+ export declare function computeVisibility(state: NativeElementState, clip?: NativePageRect | null): {
283
+ visibility: NativeVisibility;
284
+ visibilityReason?: NativeVisibilityReason;
285
+ };
108
286
  /**
109
287
  * Native UI Bridge Registry
110
288
  *
@@ -150,6 +328,18 @@ export declare class NativeUIBridgeRegistry {
150
328
  * the `projectBbox` doc comment for why we don't import `react-native` here.
151
329
  */
152
330
  private pixelRatio;
331
+ /**
332
+ * Injected getter for the device window size in logical dp, used to clip
333
+ * reported visibility. Injected rather than read here for exactly the reason
334
+ * `pixelRatio` is: a static `import { Dimensions } from 'react-native'` in
335
+ * this non-React core module breaks the vitest suite and risks the
336
+ * Metro/Hermes `unknownModuleError`. It is a PROVIDER, not a value, so a
337
+ * rotation is picked up on the next snapshot with nothing to keep in sync.
338
+ *
339
+ * `null` means the window bounds are UNKNOWN, and {@link computeVisibility}
340
+ * treats unknown bounds as "cannot demote" — never as an empty viewport.
341
+ */
342
+ private viewportProvider;
153
343
  /**
154
344
  * Sticky flag: flips `true` the first time any element is registered and
155
345
  * stays `true` even after elements are unregistered. Lets agents distinguish
@@ -175,6 +365,16 @@ export declare class NativeUIBridgeRegistry {
175
365
  setRouteProvider(provider: NativeRouteProviderLike | null | undefined): void;
176
366
  /** Read-only accessor for the registered route provider, if any. */
177
367
  getRouteProvider(): NativeRouteProviderLike | null;
368
+ /**
369
+ * Resolve the snapshot's `activeTab`: an explicit `getActiveTab()` on the
370
+ * route provider wins, otherwise derive it from the Expo Router segments the
371
+ * provider already exposes.
372
+ *
373
+ * A throwing or empty-string provider degrades to the derivation rather than
374
+ * to `undefined` — the host's opt-in extra should never be able to make the
375
+ * snapshot WORSE than it was without it. A blank derivation stays blank.
376
+ */
377
+ private resolveActiveTab;
178
378
  /**
179
379
  * Set the device pixel ratio used to project per-element `bbox` geometry
180
380
  * into physical pixels. The React provider passes `PixelRatio.get()` here
@@ -184,6 +384,34 @@ export declare class NativeUIBridgeRegistry {
184
384
  setPixelRatio(ratio: number): void;
185
385
  /** Read-only accessor for the device pixel ratio used for bbox projection. */
186
386
  getPixelRatio(): number;
387
+ /**
388
+ * Set the getter for the device window size (logical dp) that reported
389
+ * visibility is clipped against. The React provider passes
390
+ * `() => Dimensions.get('window')` here at construction.
391
+ *
392
+ * Pass `null` to detach. While detached the window bounds are UNKNOWN and no
393
+ * element is ever demoted for being outside them.
394
+ */
395
+ setViewportProvider(provider: (() => {
396
+ width: number;
397
+ height: number;
398
+ }) | null | undefined): void;
399
+ /**
400
+ * The window as a page-space rect, or `null` when it is unknown or the
401
+ * provider returned something unusable (it throws in some RN teardown
402
+ * paths, and a zero-size window would silently hide the entire screen).
403
+ */
404
+ getViewportRect(): NativePageRect | null;
405
+ /**
406
+ * The region `element` must reach to count as on screen: the window,
407
+ * intersected with the measured frame of its declared `scrollAncestorId`.
408
+ *
409
+ * Returns `null` when neither bound is known — see {@link computeVisibility}
410
+ * for why that means "do not demote" rather than "nothing is visible".
411
+ * An ancestor that is not registered, or registered but not yet measured,
412
+ * contributes nothing rather than hiding its subtree.
413
+ */
414
+ getClipRectFor(element: RegisteredNativeElement, viewport?: NativePageRect | null): NativePageRect | null;
187
415
  /**
188
416
  * Register/replace canonical enrichers (modal/toast/undo). HMR-safe — calling
189
417
  * with a partial set merges into existing slots instead of clobbering them.
@@ -270,6 +498,51 @@ export declare class NativeUIBridgeRegistry {
270
498
  * `registrationRoute` (app-wide registrations) are untouched.
271
499
  */
272
500
  markRouteOffscreen(route: string): void;
501
+ /**
502
+ * Re-measure every mounted-visible element's geometry via its stored React
503
+ * ref and write the fresh coordinates into the registry ("measure-on-
504
+ * snapshot").
505
+ *
506
+ * Why: element geometry is otherwise captured ONCE at mount time
507
+ * (`onLayout` + `measureInWindow` in `useUIElement`) and RN never re-fires
508
+ * `onLayout` on pure translation — scrolling a virtualized list
509
+ * (FlashList), recycling a cell, a keyboard shift or an orientation change
510
+ * all move elements WITHOUT updating the stored `state.layout`. Snapshot
511
+ * consumers (vision analyzers hit-testing `bbox`, coord-based tap) then
512
+ * operate on stale positions. Re-measuring at READ time is correct
513
+ * regardless of what moved the element and needs zero per-consumer wiring:
514
+ * every registry entry already stores its ref (see `registerElement`).
515
+ *
516
+ * Per-element outcomes:
517
+ * - non-zero dims → write a fresh full layout (same state shape as the
518
+ * mount-time measure loop in `useUIElement`); counted as `measured`.
519
+ * - zero dims AND the element previously had a non-null `state.layout` →
520
+ * the view collapsed / left the screen; clear to
521
+ * `{ visible: false, layout: null }` (same shape `markRouteOffscreen`
522
+ * writes); counted as `cleared`.
523
+ * - zero dims and it never had a layout → leave state untouched (element
524
+ * in the mount→first-onLayout gap; don't demote `likely-visible`);
525
+ * counted as `skipped`.
526
+ * - no ref / no callable `measureInWindow` (test fixtures, web) → leave
527
+ * untouched; counted as `skipped`.
528
+ *
529
+ * The whole sweep races an overall timeout (default 250 ms) so a dead ref
530
+ * whose `measureInWindow` never calls back can never hang a snapshot: the
531
+ * returned promise resolves at the deadline with whatever counts have
532
+ * accumulated. Late callbacks may still write state afterwards — harmless,
533
+ * freshest data wins. Never throws.
534
+ *
535
+ * Non-React core module on purpose — `measureInWindow` is duck-typed off
536
+ * the stored ref rather than imported from `react-native` (see the
537
+ * `projectBbox` doc comment for why this file must not import RN).
538
+ */
539
+ refreshMeasurements(options?: {
540
+ timeoutMs?: number;
541
+ }): Promise<{
542
+ measured: number;
543
+ cleared: number;
544
+ skipped: number;
545
+ }>;
273
546
  /**
274
547
  * Update element state
275
548
  */
@@ -336,6 +609,33 @@ export declare class NativeUIBridgeRegistry {
336
609
  * Register a component
337
610
  */
338
611
  registerComponent(id: string, options: RegisterComponentOptions): RegisteredNativeComponent;
612
+ /**
613
+ * Update a registered component's declaration in place — name, description,
614
+ * actions, elementIds.
615
+ *
616
+ * Sister to {@link updateElementMeta}, and it exists for the same reason one
617
+ * level up. `registerComponent` publishes the declaration exactly once, and
618
+ * `useUIComponent` registers on mount and never again, so an action whose
619
+ * `label` carries a count, an action that only exists while a row is
620
+ * selected, a `paramSchema` that widens once options load, or an `elementIds`
621
+ * list that grows after mount, all published their mount-time shape to
622
+ * `/control/components` forever. PR #176 closed that hole for an ELEMENT's
623
+ * label; this closes it for a COMPONENT's declaration.
624
+ *
625
+ * **Idempotent by VALUE over the PUBLISHED shape.** `handler` identity is
626
+ * excluded from the comparison — call sites pass inline closures that are
627
+ * freshly allocated every render, so including it would report a change on
628
+ * every call and make the door useless for a render-path publisher. The
629
+ * newest handlers are still STORED whenever `actions` is supplied, which is
630
+ * the other half of the same defect: without it the registry keeps the
631
+ * closure from the render that registered the component, so a handler reading
632
+ * component state read the state as it was at mount.
633
+ *
634
+ * Returns `true` when the published shape changed and an event was emitted,
635
+ * `false` otherwise — the same contract as `updateElementMeta`, so a caller
636
+ * can gate a warning or a state write on a real change.
637
+ */
638
+ updateComponentMeta(id: string, meta: UpdateComponentMetaOptions): boolean;
339
639
  /**
340
640
  * Unregister a component
341
641
  */
@@ -385,10 +685,25 @@ export declare class NativeUIBridgeRegistry {
385
685
  * server-level override (the bare-server / cloud-relay path) still get a
386
686
  * populated `currentRoute` field as long as `setRouteProvider` was called
387
687
  * on the registry.
688
+ *
689
+ * `activeTab` resolves through {@link resolveActiveTab} on BOTH branches. An
690
+ * explicit `routeInfo.activeTab` wins outright; otherwise a registered
691
+ * provider's `getActiveTab()` answers and the Expo Router derivation is the
692
+ * fallback. Deriving straight from `routeInfo.segments` here instead — which
693
+ * is what this branch did when `activeTab` was introduced — silently ignored
694
+ * `RouteProvider.getActiveTab` on the ONLY path that serves
695
+ * `control/snapshot` once `setRouteProvider` is wired (the server installs a
696
+ * `getSnapshot` override that passes `routeInfo`), so the opt-in hook for an
697
+ * app whose visible pane is decoupled from the router reached no consumer.
388
698
  */
389
699
  createSnapshot(routeInfo?: {
390
700
  currentRoute?: string | null;
391
701
  segments?: string[];
702
+ /**
703
+ * Explicit active tab for callers that own the answer outright. Omit to
704
+ * let the registered `routeProvider` / the segment derivation resolve it.
705
+ */
706
+ activeTab?: string | null;
392
707
  }, options?: {
393
708
  visibleOnly?: boolean;
394
709
  currentRouteOnly?: boolean;
@@ -1 +1 @@
1
- {"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../../src/core/registry.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../../src/core/registry.ts"],"names":[],"mappings":"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"}