@symbiote-native/navigation 2.0.3 → 2.1.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.
Files changed (155) hide show
  1. package/build/angular/drawer/index.js +6 -4
  2. package/build/angular/stack/index.d.ts +2 -0
  3. package/build/angular/stack/index.js +23 -3
  4. package/build/angular/tabs/index.d.ts +1 -1
  5. package/build/angular/tabs/index.js +20 -7
  6. package/build/core/index.d.ts +2 -1
  7. package/build/core/index.js +5 -1
  8. package/build/core/stack-router-state/index.d.ts +2 -0
  9. package/build/core/stack-router-state/index.js +44 -0
  10. package/build/core/tab-router-state/index.d.ts +1 -0
  11. package/build/core/tab-router-state/index.js +19 -0
  12. package/build/react/drawer/index.js +23 -13
  13. package/build/react/stack/index.js +13 -2
  14. package/build/react/tabs/index.js +23 -9
  15. package/build/svelte/attachments.d.ts +5 -0
  16. package/build/svelte/attachments.js +61 -0
  17. package/build/svelte/descriptor-subtree.d.ts +3 -0
  18. package/build/svelte/descriptor-subtree.js +37 -0
  19. package/build/svelte/drawer/drawer-props.d.ts +14 -0
  20. package/build/svelte/drawer/drawer-props.js +3 -0
  21. package/build/svelte/drawer/index.d.ts +10 -0
  22. package/build/svelte/drawer/index.js +6 -0
  23. package/build/svelte/drawer/index.svelte +421 -0
  24. package/build/svelte/drawer/index.svelte.d.ts +10 -0
  25. package/build/svelte/drawer-screen-props.d.ts +13 -0
  26. package/build/svelte/drawer-screen-props.js +4 -0
  27. package/build/svelte/drawer-screen.svelte +24 -0
  28. package/build/svelte/drawer-screen.svelte.d.ts +4 -0
  29. package/build/svelte/index.d.ts +21 -0
  30. package/build/svelte/index.js +20 -0
  31. package/build/svelte/linking.svelte.d.ts +2 -0
  32. package/build/svelte/linking.svelte.js +55 -0
  33. package/build/svelte/navigation-context.d.ts +14 -0
  34. package/build/svelte/navigation-context.js +44 -0
  35. package/build/svelte/navigation-scope.svelte +24 -0
  36. package/build/svelte/navigation-scope.svelte.d.ts +9 -0
  37. package/build/svelte/registry-host.d.ts +1 -0
  38. package/build/svelte/registry-host.js +26 -0
  39. package/build/svelte/runes/index.d.ts +12 -0
  40. package/build/svelte/runes/index.js +12 -0
  41. package/build/svelte/runes/use-drawer-navigation.svelte.d.ts +6 -0
  42. package/build/svelte/runes/use-drawer-navigation.svelte.js +19 -0
  43. package/build/svelte/runes/use-focus-effect.svelte.d.ts +1 -0
  44. package/build/svelte/runes/use-focus-effect.svelte.js +31 -0
  45. package/build/svelte/runes/use-is-focused.svelte.d.ts +3 -0
  46. package/build/svelte/runes/use-is-focused.svelte.js +34 -0
  47. package/build/svelte/runes/use-navigation-state.svelte.d.ts +4 -0
  48. package/build/svelte/runes/use-navigation-state.svelte.js +39 -0
  49. package/build/svelte/runes/use-navigation.svelte.d.ts +9 -0
  50. package/build/svelte/runes/use-navigation.svelte.js +22 -0
  51. package/build/svelte/runes/use-route.svelte.d.ts +4 -0
  52. package/build/svelte/runes/use-route.svelte.js +12 -0
  53. package/build/svelte/runes/use-stack-navigation.svelte.d.ts +6 -0
  54. package/build/svelte/runes/use-stack-navigation.svelte.js +22 -0
  55. package/build/svelte/runes/use-tab-navigation.svelte.d.ts +6 -0
  56. package/build/svelte/runes/use-tab-navigation.svelte.js +19 -0
  57. package/build/svelte/screen-props.d.ts +21 -0
  58. package/build/svelte/screen-props.js +6 -0
  59. package/build/svelte/screen-registry.d.ts +17 -0
  60. package/build/svelte/screen-registry.js +57 -0
  61. package/build/svelte/screen.svelte +28 -0
  62. package/build/svelte/screen.svelte.d.ts +4 -0
  63. package/build/svelte/stack/index.d.ts +14 -0
  64. package/build/svelte/stack/index.js +7 -0
  65. package/build/svelte/stack/index.svelte +224 -0
  66. package/build/svelte/stack/index.svelte.d.ts +15 -0
  67. package/build/svelte/stack/stack-props.d.ts +20 -0
  68. package/build/svelte/stack/stack-props.js +4 -0
  69. package/build/svelte/stack/stack-screen.svelte +148 -0
  70. package/build/svelte/stack/stack-screen.svelte.d.ts +4 -0
  71. package/build/svelte/tab-screen-props.d.ts +13 -0
  72. package/build/svelte/tab-screen-props.js +4 -0
  73. package/build/svelte/tab-screen.svelte +26 -0
  74. package/build/svelte/tab-screen.svelte.d.ts +4 -0
  75. package/build/svelte/tabs/index.d.ts +8 -0
  76. package/build/svelte/tabs/index.js +6 -0
  77. package/build/svelte/tabs/index.svelte +247 -0
  78. package/build/svelte/tabs/index.svelte.d.ts +8 -0
  79. package/build/svelte/tabs/tab-props.d.ts +7 -0
  80. package/build/svelte/tabs/tab-props.js +3 -0
  81. package/build/vue/drawer/index.js +6 -5
  82. package/build/vue/stack/index.js +26 -12
  83. package/build/vue/tabs/index.js +48 -35
  84. package/build-ngc/angular/drawer/index.js +9 -7
  85. package/build-ngc/angular/drawer/index.js.map +1 -1
  86. package/build-ngc/angular/drawer-screen.directive.js +3 -3
  87. package/build-ngc/angular/navigation-context.service.js +3 -3
  88. package/build-ngc/angular/navigation-scope.directive.js +3 -3
  89. package/build-ngc/angular/screen.directive.js +3 -3
  90. package/build-ngc/angular/search-bar-ref.directive.js +3 -3
  91. package/build-ngc/angular/stack/index.d.ts +2 -0
  92. package/build-ngc/angular/stack/index.js +26 -6
  93. package/build-ngc/angular/stack/index.js.map +1 -1
  94. package/build-ngc/angular/tab-screen.directive.js +3 -3
  95. package/build-ngc/angular/tabs/index.d.ts +1 -1
  96. package/build-ngc/angular/tabs/index.js +23 -10
  97. package/build-ngc/angular/tabs/index.js.map +1 -1
  98. package/build-ngc/core/index.d.ts +2 -1
  99. package/build-ngc/core/index.js +5 -1
  100. package/build-ngc/core/index.js.map +1 -1
  101. package/build-ngc/core/stack-router-state/index.d.ts +2 -0
  102. package/build-ngc/core/stack-router-state/index.js +45 -0
  103. package/build-ngc/core/stack-router-state/index.js.map +1 -0
  104. package/build-ngc/core/tab-router-state/index.d.ts +1 -0
  105. package/build-ngc/core/tab-router-state/index.js +19 -0
  106. package/build-ngc/core/tab-router-state/index.js.map +1 -1
  107. package/package.json +28 -14
  108. package/src/angular/drawer/index.ts +6 -4
  109. package/src/angular/stack/index.ts +23 -2
  110. package/src/angular/tabs/index.ts +19 -5
  111. package/src/core/index.ts +11 -1
  112. package/src/core/stack-router-state/index.ts +49 -0
  113. package/src/core/tab-router-state/index.ts +25 -0
  114. package/src/react/drawer/index.ts +28 -13
  115. package/src/react/stack/index.ts +15 -1
  116. package/src/react/tabs/index.ts +43 -10
  117. package/src/svelte/attachments.ts +68 -0
  118. package/src/svelte/descriptor-subtree.ts +49 -0
  119. package/src/svelte/drawer/drawer-props.ts +28 -0
  120. package/src/svelte/drawer/index.svelte +421 -0
  121. package/src/svelte/drawer/index.ts +10 -0
  122. package/src/svelte/drawer-screen-props.ts +20 -0
  123. package/src/svelte/drawer-screen.svelte +24 -0
  124. package/src/svelte/fabric-tree.test-helper.ts +61 -0
  125. package/src/svelte/index.ts +71 -0
  126. package/src/svelte/linking.svelte.ts +66 -0
  127. package/src/svelte/navigation-context.ts +62 -0
  128. package/src/svelte/navigation-scope.svelte +24 -0
  129. package/src/svelte/registry-host.ts +26 -0
  130. package/src/svelte/runes/index.ts +17 -0
  131. package/src/svelte/runes/use-drawer-navigation.svelte.ts +29 -0
  132. package/src/svelte/runes/use-focus-effect.svelte.ts +35 -0
  133. package/src/svelte/runes/use-is-focused.svelte.ts +38 -0
  134. package/src/svelte/runes/use-navigation-state.svelte.ts +46 -0
  135. package/src/svelte/runes/use-navigation.svelte.ts +39 -0
  136. package/src/svelte/runes/use-route.svelte.ts +16 -0
  137. package/src/svelte/runes/use-stack-navigation.svelte.ts +32 -0
  138. package/src/svelte/runes/use-tab-navigation.svelte.ts +29 -0
  139. package/src/svelte/screen-props.ts +45 -0
  140. package/src/svelte/screen-registry.ts +92 -0
  141. package/src/svelte/screen.svelte +28 -0
  142. package/src/svelte/stack/index.svelte +224 -0
  143. package/src/svelte/stack/index.ts +11 -0
  144. package/src/svelte/stack/stack-props.ts +31 -0
  145. package/src/svelte/stack/stack-screen.svelte +148 -0
  146. package/src/svelte/svelte-ambient.d.ts +6 -0
  147. package/src/svelte/svelte-compile.test-helper.ts +143 -0
  148. package/src/svelte/tab-screen-props.ts +20 -0
  149. package/src/svelte/tab-screen.svelte +26 -0
  150. package/src/svelte/tabs/index.svelte +247 -0
  151. package/src/svelte/tabs/index.ts +10 -0
  152. package/src/svelte/tabs/tab-props.ts +13 -0
  153. package/src/vue/drawer/index.ts +6 -5
  154. package/src/vue/stack/index.ts +28 -11
  155. package/src/vue/tabs/index.ts +68 -65
@@ -0,0 +1,247 @@
1
+ <script lang="ts" module>
2
+ // Tab, the Svelte lifecycle half. The focused-index router (tab-router-state) and the tab-bar
3
+ // Descriptor builder (render-tabs) live in @symbiote-native/navigation core, shared verbatim
4
+ // with the React/Vue/Angular entries; here Svelte supplies the lifecycle - `$state.raw` for the
5
+ // router (its twin of useReducer), a module counter for route-key generation, `export
6
+ // function`s for the jumpTo/setParams handle - plus the Descriptor bridge for the tab-bar leaf.
7
+ // Unlike Stack, a bottom-tabs bar is a PURE-JS UI: it paints ordinary `symbiote-view`/
8
+ // `symbiote-text` primitives via the shared render fn, so there is no react-native-screens
9
+ // ViewConfig to register here - Tab needs no `../../register` import.
10
+ //
11
+ // Screens are discovered through the context collector (../screen-registry.ts), not by reading
12
+ // `children` - see stack/index.svelte's header for why, and ../registry-host.ts for where the
13
+ // markers are rendered.
14
+ let tabInstanceCounter = 0;
15
+
16
+ const TAB_ROOT_PROPS: Record<string, unknown> = { style: { flex: 1 } };
17
+ const TAB_CONTENT_PROPS: Record<string, unknown> = { style: { flex: 1 } };
18
+ </script>
19
+
20
+ <script lang="ts">
21
+ import type { Component } from 'svelte';
22
+ import { onDestroy, tick } from 'svelte';
23
+ import { dlog } from '@symbiote-native/engine';
24
+ import type { ShimElement } from '@symbiote-native/svelte/native-view-bridge';
25
+ import {
26
+ NAVIGATION_EVENT_BLUR,
27
+ NAVIGATION_EVENT_FOCUS,
28
+ createInitialTabState,
29
+ createNavigationEmitter,
30
+ diffFocusedRoute,
31
+ isFocusedRoute,
32
+ reconcileTabRoutes,
33
+ renderTabBar,
34
+ tabRouterReducer,
35
+ } from '../../core';
36
+ import type {
37
+ IDescriptor,
38
+ INavigationEmitter,
39
+ IRoute,
40
+ ITabBarItemView,
41
+ ITabNavigatorHandle,
42
+ ITabOptions,
43
+ ITabRouterAction,
44
+ ITabRouterState,
45
+ } from '../../core';
46
+ import { createDescriptorSubtreeSync } from '../descriptor-subtree';
47
+ import { getNavigationScope } from '../navigation-context';
48
+ import type { INavigationScopeValue } from '../navigation-context';
49
+ import NavigationScope from '../navigation-scope.svelte';
50
+ import { SCREEN_REGISTRY_HOST_PROPS } from '../registry-host';
51
+ import { setScreenCollector, toRegistry, withoutScreen } from '../screen-registry';
52
+ import type { IRegisteredScreen } from '../screen-registry';
53
+ import type { ITabScreenProps } from '../tab-screen-props';
54
+ import type { ITabProps } from './tab-props';
55
+
56
+ let { initialRouteName, screenOptions, children }: ITabProps = $props();
57
+
58
+ // Read BEFORE this Tab establishes its own per-screen NavigationScope - becomes the `parent`
59
+ // link a nested screen's useNavigation().getParent() walks. undefined at the nesting root.
60
+ const parentScope = getNavigationScope();
61
+
62
+ const routeIdPrefix = `tab-${(tabInstanceCounter += 1)}`;
63
+
64
+ let screens = $state.raw<IRegisteredScreen<ITabScreenProps['options']>[]>([]);
65
+ setScreenCollector<ITabScreenProps['options']>({
66
+ kind: 'tab',
67
+ register: screen => {
68
+ screens = [...screens, screen];
69
+ },
70
+ unregister: screen => {
71
+ screens = withoutScreen(screens, screen);
72
+ },
73
+ });
74
+
75
+ const registry = $derived(toRegistry(screens));
76
+
77
+ // A tab's route list is a PROJECTION of the registry, not navigation history the way Stack's
78
+ // is: a marker registering or unregistering must add or drop its tab. Unlike Stack, a route key
79
+ // here is derived from the route NAME rather than an incrementing sequence, so re-deriving this
80
+ // list on every registry change re-keys nothing.
81
+ const registeredRoutes = $derived.by<IRoute<unknown>[]>(() =>
82
+ [...registry.entries()].map(([name, entry]) => ({
83
+ key: `${routeIdPrefix}-${name}`,
84
+ name,
85
+ params: entry.initialParams,
86
+ })),
87
+ );
88
+
89
+ // The dispatched half is the only STATE here; the registry half is re-derived and reconciled
90
+ // against it on every change (reconcileTabRoutes, core - it is what preserves each surviving
91
+ // route's key/params and keeps the focus on the same route NAME). Nothing needs memoizing
92
+ // inside the derivation, so there is no state write during a derivation to avoid in the first
93
+ // place. Until something dispatches there is nothing to reconcile against, hence the seed.
94
+ let dispatchedState = $state.raw<ITabRouterState | null>(null);
95
+
96
+ const state = $derived.by<ITabRouterState>(() => {
97
+ if (registeredRoutes.length === 0) dlog('Tab: no <Tab.Screen> children registered');
98
+ const dispatched = dispatchedState;
99
+ return dispatched === null
100
+ ? createInitialTabState(registeredRoutes, initialRouteName)
101
+ : reconcileTabRoutes(dispatched, registeredRoutes);
102
+ });
103
+
104
+ function dispatch(action: ITabRouterAction): void {
105
+ dispatchedState = tabRouterReducer(state, action);
106
+ }
107
+
108
+ export function jumpTo(name: string, params?: unknown): void {
109
+ dispatch({ type: 'jumpTo', name, params });
110
+ }
111
+ export function setParams(params: unknown, key: string): void {
112
+ dispatch({ type: 'setParams', key, params });
113
+ }
114
+
115
+ const handle: ITabNavigatorHandle = { jumpTo, setParams };
116
+
117
+ // One emitter per route.key, created lazily and cached for the navigator's whole lifetime -
118
+ // mirrors Stack's own `emitters` map. This decouples emitter IDENTITY (stable, looked up by
119
+ // key, read below when a route's NavigationScope is built) from emit TIMING (must wait until
120
+ // the focused screen has actually mounted and subscribed).
121
+ const emitters = new Map<string, INavigationEmitter>();
122
+ function emitterFor(routeKey: string): INavigationEmitter {
123
+ let emitter = emitters.get(routeKey);
124
+ if (emitter === undefined) {
125
+ emitter = createNavigationEmitter();
126
+ emitters.set(routeKey, emitter);
127
+ }
128
+ return emitter;
129
+ }
130
+
131
+ // Tab paints its own bar in pure JS - there is no native onAppear/onDisappear to hook (unlike
132
+ // Stack's RNSScreen), so focus/blur is synthesized here. Keyed on the route KEY (not the route
133
+ // object) so a setParams-only change doesn't spuriously re-fire focus/blur.
134
+ //
135
+ // The bookkeeping updates immediately, but the actual emit is deferred to `tick()` - Svelte's
136
+ // twin of Vue's nextTick, and needed for the same reason: the newly-focused screen's own
137
+ // `$effect`s (its useIsFocused/useFocusEffect subscriptions) are created during THIS flush,
138
+ // after this effect was, so emitting synchronously here would reach zero subscribers.
139
+ let previousFocusedKey: string | undefined;
140
+ $effect(() => {
141
+ const nextKey = state.routes[state.index]?.key;
142
+ const { blurKey, focusKey } = diffFocusedRoute(previousFocusedKey, nextKey);
143
+ if (blurKey === undefined && focusKey === undefined) return;
144
+ previousFocusedKey = nextKey;
145
+ void tick().then(() => {
146
+ if (blurKey !== undefined) {
147
+ dlog(`Tab: route "${blurKey}" blurred at t=${Date.now()}`);
148
+ emitterFor(blurKey).emit(NAVIGATION_EVENT_BLUR);
149
+ }
150
+ if (focusKey !== undefined) {
151
+ dlog(`Tab: route "${focusKey}" focused at t=${Date.now()}`);
152
+ emitterFor(focusKey).emit(NAVIGATION_EVENT_FOCUS);
153
+ }
154
+ });
155
+ });
156
+
157
+ onDestroy(() => {
158
+ if (previousFocusedKey !== undefined) {
159
+ emitterFor(previousFocusedKey).emit(NAVIGATION_EVENT_BLUR);
160
+ }
161
+ });
162
+
163
+ function resolveTabOptions(
164
+ entry: IRegisteredScreen<ITabScreenProps['options']> | undefined,
165
+ route: IRoute<unknown>,
166
+ ): ITabOptions {
167
+ const own =
168
+ entry === undefined
169
+ ? undefined
170
+ : typeof entry.options === 'function'
171
+ ? entry.options({ route, navigation: handle })
172
+ : entry.options;
173
+ return { ...screenOptions, ...own };
174
+ }
175
+
176
+ const items = $derived.by<ITabBarItemView[]>(() =>
177
+ state.routes.map((route, index) => {
178
+ const entry = registry.get(route.name);
179
+ const focused = isFocusedRoute(index, state.index);
180
+ if (entry === undefined) {
181
+ dlog(`Tab: no screen registered for route name "${route.name}"`);
182
+ return { key: route.key, focused, label: route.name, passthrough: {} };
183
+ }
184
+ const options = resolveTabOptions(entry, route);
185
+ return {
186
+ key: route.key,
187
+ focused,
188
+ label: options.tabBarLabel ?? options.title ?? route.name,
189
+ icon: options.tabBarIcon,
190
+ badge: options.tabBarBadge,
191
+ activeTintColor: options.tabBarActiveTintColor,
192
+ inactiveTintColor: options.tabBarInactiveTintColor,
193
+ passthrough: {
194
+ onPress: () => jumpTo(route.name),
195
+ accessibilityRole: 'tab',
196
+ accessibilityState: { selected: focused },
197
+ },
198
+ };
199
+ }),
200
+ );
201
+
202
+ const focusedRoute = $derived(state.routes[state.index]);
203
+ const focusedOptions = $derived(
204
+ focusedRoute === undefined
205
+ ? screenOptions
206
+ : resolveTabOptions(registry.get(focusedRoute.name), focusedRoute),
207
+ );
208
+
209
+ const tabBar = $derived.by<IDescriptor>(() =>
210
+ renderTabBar({ items, style: focusedOptions?.tabBarStyle, passthrough: {} }),
211
+ );
212
+
213
+ // Only the focused route's screen is ever mounted (unlike Stack, which keeps every pushed route
214
+ // alive), so a fresh NavigationScope per focus change is sufficient - the previous screen's
215
+ // whole subtree (and any listeners it registered) is torn down by an ordinary unmount when
216
+ // focus moves on.
217
+ const focusedScreen = $derived.by<{ scope: INavigationScopeValue; component: Component } | undefined>(
218
+ () => {
219
+ if (focusedRoute === undefined) return undefined;
220
+ const entry = registry.get(focusedRoute.name);
221
+ if (entry === undefined) return undefined;
222
+ return {
223
+ component: entry.component,
224
+ scope: {
225
+ route: focusedRoute,
226
+ navigation: handle,
227
+ emitter: emitterFor(focusedRoute.key),
228
+ parent: parentScope?.current,
229
+ },
230
+ };
231
+ },
232
+ );
233
+
234
+ // The bar's ROOT stays a literal template tag (so `bind:this` has a statically known tag) and
235
+ // only its children go through the Descriptor bridge - the uniform shape every Svelte component
236
+ // consuming a `render-*.ts` uses (svelte-adapter-dom-shim skill §19). The item count varies with
237
+ // the registry, hence the shape-change-tolerant wrapper rather than the raw bridge.
238
+ let tabBarHost = $state.raw<ShimElement | null>(null);
239
+ const syncTabBarChildren = createDescriptorSubtreeSync();
240
+ $effect(() => {
241
+ const host = tabBarHost;
242
+ const barChildren = tabBar.children;
243
+ syncTabBarChildren(host, barChildren);
244
+ });
245
+ </script>
246
+
247
+ <symbiote-view p={TAB_ROOT_PROPS}><symbiote-text p={SCREEN_REGISTRY_HOST_PROPS}>{@render children?.()}</symbiote-text><symbiote-view p={TAB_CONTENT_PROPS}>{#if focusedScreen !== undefined}{@const FocusedComponent = focusedScreen.component}<NavigationScope value={focusedScreen.scope}><FocusedComponent /></NavigationScope>{/if}</symbiote-view><symbiote-view p={tabBar.props} bind:this={tabBarHost}></symbiote-view></symbiote-view>
@@ -0,0 +1,8 @@
1
+ import type { Component } from 'svelte';
2
+ import type { ITabProps } from './tab-props';
3
+ declare const Index: Component<ITabProps, {
4
+ jumpTo: (name: string, params?: unknown) => void;
5
+ setParams: (params: unknown, key: string) => void;
6
+ }, "">;
7
+ type Index = ReturnType<typeof Index>;
8
+ export default Index;
@@ -0,0 +1,7 @@
1
+ import type { Snippet } from 'svelte';
2
+ import type { ITabOptions } from '../../core';
3
+ export type ITabProps = {
4
+ initialRouteName?: string;
5
+ screenOptions?: ITabOptions;
6
+ children?: Snippet;
7
+ };
@@ -0,0 +1,3 @@
1
+ // Tab's own public prop surface. Plain `.ts` for the tsc-cannot-see-a-`.svelte`-named-export
2
+ // reason ../screen-props.ts documents.
3
+ export {};
@@ -166,13 +166,14 @@ const DrawerImpl = defineComponent((_props, { attrs: rawAttrs, slots, expose })
166
166
  dispatch({ type: 'toggleDrawer' });
167
167
  },
168
168
  jumpTo: (name) => {
169
- // Captured BEFORE dispatch: unlike React's isOpenRef (only refreshed at the TOP of the
170
- // next render, so it still holds the pre-dispatch value here since React batches the
171
- // re-render asynchronously), this ref's `.value` mutates SYNCHRONOUSLY inside dispatch -
172
- // reading it after dispatch would already see the reducer's own isOpen: false.
169
+ // Both sides of the dispatch, because an unregistered name is a documented reducer no-op
170
+ // that hands the SAME state back: animating off the pre-dispatch snapshot alone would
171
+ // slide the panel shut while the router still says isOpen. The ref's `.value` mutates
172
+ // SYNCHRONOUSLY inside dispatch (unlike React's isOpenRef, refreshed only at the top of
173
+ // the next render), so the second read is already the reducer's own answer.
173
174
  const wasOpen = state.value.isOpen;
174
175
  dispatch({ type: 'jumpTo', name });
175
- if (wasOpen)
176
+ if (wasOpen && !state.value.isOpen)
176
177
  animateProgressTo(false);
177
178
  },
178
179
  };
@@ -12,7 +12,7 @@
12
12
  import { defineComponent, h, shallowRef, useId } from '@vue/runtime-core';
13
13
  import { descriptorToVue, normalizeVueAttrs } from '@symbiote-native/vue';
14
14
  import { Platform, debugNodeId, dlog, isSymbioteNode } from '@symbiote-native/engine';
15
- import { NAVIGATION_EVENT_BLUR, NAVIGATION_EVENT_FOCUS, NAVIGATION_EVENT_STATE, RNS_SCREEN_CONTENT_WRAPPER_VIEW_NAME, RNS_SCREEN_STACK_VIEW_NAME, RNS_SCREEN_VIEW_NAME, SCREEN_ON_APPEAR, SCREEN_ON_DISAPPEAR, SCREEN_ON_DISMISSED, SCREEN_ON_HEADER_BACK_BUTTON_CLICKED, SCREEN_ON_WILL_APPEAR, SCREEN_ON_WILL_DISAPPEAR, STACK_ON_FINISH_TRANSITIONING, buildSearchBarHandle, buildSearchBarPassthrough, computeActivityState, createInitialNavigatorState, createNavigationEmitter, isRecord, navigatorReducer, resolveScreenRenderPlan, resolveStackProps, } from '../../core/index.js';
15
+ import { NAVIGATION_EVENT_BLUR, NAVIGATION_EVENT_FOCUS, NAVIGATION_EVENT_STATE, RNS_SCREEN_CONTENT_WRAPPER_VIEW_NAME, RNS_SCREEN_STACK_VIEW_NAME, RNS_SCREEN_VIEW_NAME, SCREEN_ON_APPEAR, SCREEN_ON_DISAPPEAR, SCREEN_ON_DISMISSED, SCREEN_ON_HEADER_BACK_BUTTON_CLICKED, SCREEN_ON_WILL_APPEAR, SCREEN_ON_WILL_DISAPPEAR, STACK_ON_FINISH_TRANSITIONING, buildSearchBarHandle, buildSearchBarPassthrough, computeActivityState, createInitialNavigatorState, createNavigationEmitter, isRecord, navigatorReducer, reconcileStackRoutes, resolveScreenRenderPlan, resolveStackProps, } from '../../core/index.js';
16
16
  import { NavigationScope, injectNavigationScope } from '../navigation-context.js';
17
17
  import { Screen } from '../screen.js';
18
18
  // backTitleVisible defaults to `true` on both platforms per the codegen spec's own default
@@ -106,8 +106,20 @@ const StackImpl = defineComponent((_props, { attrs: rawAttrs, slots, expose }) =
106
106
  initialState = createInitialNavigatorState(createRoute(initialRouteName, initialRegistry.get(initialRouteName)?.initialParams));
107
107
  }
108
108
  const state = shallowRef(initialState);
109
+ // The screen names the render pass below last saw in the slot. A PLAIN local, not a ref: it is
110
+ // a cache of what was just rendered, never a reactive source, so refreshing it from inside the
111
+ // render closure is not a state write during render (which would re-trigger the very render
112
+ // effect that produced it).
113
+ let registeredNames = [];
114
+ // A <Stack.Screen> marker can vanish from the slot while its route is still in the pushed
115
+ // history, which would leave that entry with nothing to render (reconcileStackRoutes' header).
116
+ // Reconciling on READ rather than writing the ref keeps the repair out of the render pass; the
117
+ // dispatch below then persists it, so the next push builds on the pruned history.
118
+ function currentState() {
119
+ return reconcileStackRoutes(state.value, registeredNames);
120
+ }
109
121
  function dispatch(action) {
110
- state.value = navigatorReducer(state.value, action);
122
+ state.value = navigatorReducer(currentState(), action);
111
123
  }
112
124
  const handle = {
113
125
  push: (name, params) => dispatch({ type: 'push', route: createRoute(name, params) }),
@@ -117,7 +129,7 @@ const StackImpl = defineComponent((_props, { attrs: rawAttrs, slots, expose }) =
117
129
  replace: (name, params) => dispatch({ type: 'replace', route: createRoute(name, params) }),
118
130
  setParams: (params, key) => dispatch({ type: 'setParams', key, params }),
119
131
  reset: nextState => dispatch({ type: 'reset', state: nextState }),
120
- canGoBack: () => state.value.routes.length > 1,
132
+ canGoBack: () => currentState().routes.length > 1,
121
133
  };
122
134
  expose(handle);
123
135
  // Broadcasts the router state to every still-live route's emitter (useNavigationState's
@@ -126,18 +138,20 @@ const StackImpl = defineComponent((_props, { attrs: rawAttrs, slots, expose }) =
126
138
  // useEffect, which must be deferred past render to avoid a descendant setState-during-render):
127
139
  // Vue's provide/inject + shallowRef.value writes are safe to perform directly inside the
128
140
  // render closure below, so the broadcast happens right there, once per render.
129
- function broadcastState() {
130
- for (const route of state.value.routes) {
131
- emitterFor(route.key).emit(NAVIGATION_EVENT_STATE, state.value);
141
+ function broadcastState(current) {
142
+ for (const route of current.routes) {
143
+ emitterFor(route.key).emit(NAVIGATION_EVENT_STATE, current);
132
144
  }
133
145
  for (const routeKey of emitters.keys()) {
134
- if (!state.value.routes.some(route => route.key === routeKey))
146
+ if (!current.routes.some(route => route.key === routeKey))
135
147
  emitters.delete(routeKey);
136
148
  }
137
149
  }
138
150
  return () => {
139
- broadcastState();
140
151
  const registry = collectRegistry(slots.default?.() ?? []);
152
+ registeredNames = [...registry.keys()];
153
+ const current = currentState();
154
+ broadcastState(current);
141
155
  const screenOptions = asScreenOptions(attrs.screenOptions);
142
156
  // Investigation instrumentation (flicker-on-focus bug): STACK_ON_FINISH_TRANSITIONING is
143
157
  // the native signal that the WHOLE push/pop animation has finished (as opposed to
@@ -149,7 +163,7 @@ const StackImpl = defineComponent((_props, { attrs: rawAttrs, slots, expose }) =
149
163
  [STACK_ON_FINISH_TRANSITIONING]: () => dlog(`Stack: onFinishTransitioning at t=${Date.now()}`),
150
164
  },
151
165
  });
152
- const children = state.value.routes.map((route, index) => {
166
+ const children = current.routes.map((route, index) => {
153
167
  const entry = registry.get(route.name);
154
168
  if (entry === undefined) {
155
169
  dlog(`Stack: no screen registered for route name "${route.name}"`);
@@ -157,18 +171,18 @@ const StackImpl = defineComponent((_props, { attrs: rawAttrs, slots, expose }) =
157
171
  }
158
172
  const screenOptionsArgs = { route, navigation: handle };
159
173
  const mergedOptions = resolveScreenOptions(entry, screenOptionsArgs, screenOptions);
160
- const activityState = computeActivityState(index, state.value.routes.length);
174
+ const activityState = computeActivityState(index, current.routes.length);
161
175
  // Investigation instrumentation (flicker-on-focus bug): fires on EVERY Stack render, not
162
176
  // just on transitions, so the log stream shows whether a route's activityState/index ever
163
177
  // changes outside of a push/pop dispatch. Kept behind DEBUG, never removed.
164
- dlog(`Stack: render route "${route.name}" index=${index}/${state.value.routes.length - 1} ` +
178
+ dlog(`Stack: render route "${route.name}" index=${index}/${current.routes.length - 1} ` +
165
179
  `activityState=${activityState} at t=${Date.now()}`);
166
180
  const routeEmitter = emitterFor(route.key);
167
181
  const searchBarOptions = mergedOptions.headerSearchBarOptions;
168
182
  const plan = resolveScreenRenderPlan({
169
183
  screenId: route.key,
170
184
  index,
171
- routeCount: state.value.routes.length,
185
+ routeCount: current.routes.length,
172
186
  options: mergedOptions,
173
187
  platform: NAVIGATOR_PLATFORM,
174
188
  isAndroid: Platform.OS === 'android',
@@ -1,15 +1,15 @@
1
1
  // Tab, the Vue lifecycle half. The focused-index router (tab-router-state) and the tab-bar
2
2
  // Descriptor builder (render-tabs) live in @symbiote-native/navigation core, shared verbatim with
3
- // the React/Angular adapters; here Vue supplies the lifecycle - a plain ref for the focused index
4
- // (Vue's twin of useReducer), useId for route-key generation, expose() for the jumpTo/setParams
5
- // handle - plus the descriptor bridge for the tab-bar leaf, exactly like Stack bridges its header
3
+ // the React/Angular adapters; here Vue supplies the lifecycle - a shallowRef for the dispatched
4
+ // router state (Vue's twin of useReducer), useId for route-key generation, expose() for the
5
+ // jumpTo/setParams handle - plus the descriptor bridge for the tab-bar leaf, like Stack's header
6
6
  // config (stack.ts). Unlike Stack, a bottom-tabs bar is a PURE-JS UI: it paints ordinary
7
7
  // `symbiote-view`/`symbiote-text` primitives via the shared render fn, so there is no
8
8
  // react-native-screens ViewConfig to register here - Tab needs no `../register` import.
9
- import { defineComponent, h, nextTick, onMounted, onUnmounted, shallowRef, useId, watch, } from '@vue/runtime-core';
9
+ import { defineComponent, h, nextTick, onUnmounted, shallowRef, useId } from '@vue/runtime-core';
10
10
  import { descriptorToVue, normalizeVueAttrs } from '@symbiote-native/vue';
11
11
  import { dlog } from '@symbiote-native/engine';
12
- import { NAVIGATION_EVENT_BLUR, NAVIGATION_EVENT_FOCUS, createInitialTabState, createNavigationEmitter, diffFocusedRoute, isFocusedRoute, isRecord, renderTabBar, tabRouterReducer, } from '../../core/index.js';
12
+ import { NAVIGATION_EVENT_BLUR, NAVIGATION_EVENT_FOCUS, createInitialTabState, createNavigationEmitter, diffFocusedRoute, isFocusedRoute, isRecord, reconcileTabRoutes, renderTabBar, tabRouterReducer, } from '../../core/index.js';
13
13
  import { NavigationScope, injectNavigationScope } from '../navigation-context.js';
14
14
  import { TabScreen } from '../tab-screen.js';
15
15
  function asString(value) {
@@ -73,23 +73,33 @@ const TabImpl = defineComponent((_props, { attrs: rawAttrs, slots, expose }) =>
73
73
  const initialRoutes = buildRoutes(initialRegistry);
74
74
  if (initialRoutes.length === 0)
75
75
  dlog('Tab: no <Tab.Screen> children registered');
76
- const state = shallowRef(createInitialTabState(initialRoutes, asString(attrs.initialRouteName)));
76
+ // A <Tab.Screen> can appear or disappear after mount (a marker behind a v-if, a data-driven
77
+ // screen list), so the route list is re-collected from the slot on every render and the
78
+ // DISPATCHED state is reconciled against it (reconcileTabRoutes, core - it preserves each
79
+ // surviving route's key and accumulated params and keeps focus on the same route NAME) rather
80
+ // than staying frozen at whatever setup() first saw. Slot vnodes are not reactive state, so
81
+ // the render fn is the only place that can observe the registry change: the reconciliation
82
+ // happens there, as a pure local, and never writes back - a state write inside a derivation is
83
+ // an error in Vue, not a style choice. `null` means nothing has dispatched yet, which is what
84
+ // keeps initialRouteName honored when the markers arrive after the first render.
85
+ const dispatchedState = shallowRef(null);
86
+ // Non-reactive cache of the route list the last render derived: dispatch() reduces over the
87
+ // RECONCILED state, so it needs the same list that paint used. A ref here would be a reactive
88
+ // write from the render fn, exactly what the comment above rules out.
89
+ let latestRoutes = initialRoutes;
90
+ function resolveState(routes) {
91
+ const dispatched = dispatchedState.value;
92
+ return dispatched === null
93
+ ? createInitialTabState(routes, asString(attrs.initialRouteName))
94
+ : reconcileTabRoutes(dispatched, routes);
95
+ }
77
96
  function dispatch(action) {
78
- state.value = tabRouterReducer(state.value, action);
97
+ dispatchedState.value = tabRouterReducer(resolveState(latestRoutes), action);
79
98
  }
80
99
  const jumpTo = (name, params) => dispatch({ type: 'jumpTo', name, params });
81
100
  const setParams = (params, key) => dispatch({ type: 'setParams', key, params });
82
101
  const handle = { jumpTo, setParams };
83
102
  expose(handle);
84
- // Tab paints its own bar in pure JS - there is no native onAppear/onDisappear to hook (unlike
85
- // Stack's RNSScreen), so focus/blur is synthesized here: emit 'focus' once the newly-focused
86
- // route's content has mounted, 'blur' when it's about to be replaced or Tab itself unmounts.
87
- // Keyed on the route KEY (not the route object) so a setParams-only change (new route object,
88
- // same key) doesn't spuriously re-fire focus/blur - mirrors tabs.ts's React twin exactly,
89
- // just expressed as a `watch` over the focused key instead of a useEffect dependency array.
90
- function focusedKeyOf(current) {
91
- return current.routes[current.index]?.key;
92
- }
93
103
  // One emitter per route.key, created lazily and cached for the navigator's whole lifetime -
94
104
  // mirrors stack.ts's own `emitters` map. This decouples emitter IDENTITY (stable, looked up
95
105
  // by key, read by the render closure below when it builds a route's NavigationScope) from
@@ -112,24 +122,23 @@ const TabImpl = defineComponent((_props, { attrs: rawAttrs, slots, expose }) =>
112
122
  // Stack's RNSScreen), so focus/blur is synthesized here: emit 'focus' once the newly-focused
113
123
  // route's content has mounted, 'blur' when it's about to be replaced or Tab itself unmounts.
114
124
  // Keyed on the route KEY (not the route object) so a setParams-only change (new route object,
115
- // same key) doesn't spuriously re-fire focus/blur - mirrors tabs.ts's React twin exactly,
116
- // just expressed as a `watch` over the focused key instead of a useEffect dependency array.
117
- let focusedRouteKey = focusedKeyOf(state.value);
118
- onMounted(() => {
119
- if (focusedRouteKey !== undefined) {
120
- dlog(`Tab: route "${focusedRouteKey}" focused at t=${Date.now()}`);
121
- emitterFor(focusedRouteKey).emit(NAVIGATION_EVENT_FOCUS);
122
- }
123
- });
125
+ // same key) doesn't spuriously re-fire focus/blur.
126
+ //
127
+ // Driven from the render pass rather than a `watch` because the focused key follows the
128
+ // SLOT-collected route list too - a marker disappearing can move focus, and slot vnodes are
129
+ // not reactive state, so no watcher source can see that; only a render can. The diff therefore
130
+ // lives where the state is derived, and stays a plain local, never a reactive write.
131
+ //
124
132
  // The bookkeeping (which key is focused) updates immediately so the render closure below
125
133
  // always reads the right route; the actual emit is deferred to nextTick(), which resolves
126
134
  // only after the CURRENT flush cycle fully drains - including the newly-focused screen's own
127
- // onMounted (subscribing its useIsFocused/useFocusEffect listeners). flush:'post' alone is
128
- // NOT enough here: it only guarantees this callback runs after THIS component's own render
129
- // effect, not after an arbitrary sibling post-flush job (a just-mounted child's onMounted)
130
- // that may be queued after it in the same batch - nextTick is the one API that waits for the
131
- // WHOLE cycle, not just this watcher's own slot in it.
132
- watch(() => focusedKeyOf(state.value), nextKey => {
135
+ // onMounted (subscribing its useIsFocused/useFocusEffect listeners). Emitting inline would
136
+ // reach zero subscribers; flush:'post' would not have been enough either, since it only
137
+ // orders a callback after THIS component's own render effect, not after an arbitrary sibling
138
+ // post-flush job (a just-mounted child's onMounted) queued after it in the same batch.
139
+ let focusedRouteKey;
140
+ function syncFocus(current) {
141
+ const nextKey = current.routes[current.index]?.key;
133
142
  const { blurKey, focusKey } = diffFocusedRoute(focusedRouteKey, nextKey);
134
143
  if (blurKey === undefined && focusKey === undefined)
135
144
  return;
@@ -144,7 +153,7 @@ const TabImpl = defineComponent((_props, { attrs: rawAttrs, slots, expose }) =>
144
153
  emitterFor(focusKey).emit(NAVIGATION_EVENT_FOCUS);
145
154
  }
146
155
  });
147
- });
156
+ }
148
157
  onUnmounted(() => {
149
158
  if (focusedRouteKey !== undefined)
150
159
  emitterFor(focusedRouteKey).emit(NAVIGATION_EVENT_BLUR);
@@ -154,10 +163,14 @@ const TabImpl = defineComponent((_props, { attrs: rawAttrs, slots, expose }) =>
154
163
  const screenOptions = asTabOptions(attrs.screenOptions);
155
164
  if (registry.size === 0)
156
165
  dlog('Tab: no <Tab.Screen> children registered');
157
- const focusedRoute = state.value.routes[state.value.index];
158
- const items = state.value.routes.map((route, index) => {
166
+ const routes = buildRoutes(registry);
167
+ latestRoutes = routes;
168
+ const state = resolveState(routes);
169
+ syncFocus(state);
170
+ const focusedRoute = state.routes[state.index];
171
+ const items = state.routes.map((route, index) => {
159
172
  const entry = registry.get(route.name);
160
- const focused = isFocusedRoute(index, state.value.index);
173
+ const focused = isFocusedRoute(index, state.index);
161
174
  if (entry === undefined) {
162
175
  dlog(`Tab: no screen registered for route name "${route.name}"`);
163
176
  return { key: route.key, focused, label: route.name, passthrough: {} };
@@ -83,12 +83,14 @@ export class Drawer {
83
83
  this.dispatch({ type: 'toggleDrawer' });
84
84
  };
85
85
  jumpTo = (name) => {
86
- // Captured BEFORE dispatch, mirroring vue/drawer/index.ts's jumpTo: a signal (like Vue's ref)
87
- // mutates synchronously inside dispatch, so reading isOpen after it would already see the
88
- // reducer's own isOpen: false and never animate the panel closed.
86
+ // Both sides of the dispatch, mirroring vue/drawer/index.ts's jumpTo: an unregistered name is
87
+ // a documented reducer no-op that hands the SAME state back, so animating off the pre-dispatch
88
+ // snapshot alone would slide the panel shut while the router still says isOpen. The signal is
89
+ // set synchronously inside dispatch, so the second read is already the reducer's own answer.
89
90
  const wasOpen = this.stateSignal()?.isOpen ?? false;
90
91
  this.dispatch({ type: 'jumpTo', name });
91
- if (wasOpen)
92
+ const isOpenNow = this.stateSignal()?.isOpen ?? false;
93
+ if (wasOpen && !isOpenNow)
92
94
  this.animateProgressTo(false);
93
95
  };
94
96
  panResponder = PanResponder.create({
@@ -346,8 +348,8 @@ export class Drawer {
346
348
  }
347
349
  return { $implicit: { state: currentState, descriptors, navigation: this } };
348
350
  }
349
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.5", ngImport: i0, type: Drawer, deps: [], target: i0.ɵɵFactoryTarget.Component });
350
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.5", type: Drawer, isStandalone: true, selector: "Drawer", inputs: { initialRouteName: "initialRouteName", drawerStyle: "drawerStyle", drawerType: "drawerType", drawerPosition: "drawerPosition", drawerWidth: "drawerWidth", overlayColor: "overlayColor", swipeEnabled: "swipeEnabled", swipeEdgeWidth: "swipeEdgeWidth", swipeMinDistance: "swipeMinDistance", swipeMinVelocity: "swipeMinVelocity" }, queries: [{ propertyName: "drawerContentTemplate", first: true, predicate: ["drawerContent"], descendants: true, read: TemplateRef }, { propertyName: "drawerScreenChildren", predicate: DrawerScreenDirective }], usesOnChanges: true, ngImport: i0, template: `
351
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: Drawer, deps: [], target: i0.ɵɵFactoryTarget.Component });
352
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.8", type: Drawer, isStandalone: true, selector: "Drawer", inputs: { initialRouteName: "initialRouteName", drawerStyle: "drawerStyle", drawerType: "drawerType", drawerPosition: "drawerPosition", drawerWidth: "drawerWidth", overlayColor: "overlayColor", swipeEnabled: "swipeEnabled", swipeEdgeWidth: "swipeEdgeWidth", swipeMinDistance: "swipeMinDistance", swipeMinVelocity: "swipeMinVelocity" }, queries: [{ propertyName: "drawerContentTemplate", first: true, predicate: ["drawerContent"], descendants: true, read: TemplateRef }, { propertyName: "drawerScreenChildren", predicate: DrawerScreenDirective }], usesOnChanges: true, ngImport: i0, template: `
351
353
  @if (state(); as currentState) {
352
354
  <View [style]="rootStyle()" [symbioteHostProps]="rootPanHandlers()">
353
355
  @for (slot of slotOrder(); track slot) {
@@ -391,7 +393,7 @@ export class Drawer {
391
393
  }
392
394
  `, isInline: true, dependencies: [{ kind: "directive", type: NgComponentOutlet, selector: "[ngComponentOutlet]", inputs: ["ngComponentOutlet", "ngComponentOutletInputs", "ngComponentOutletInjector", "ngComponentOutletEnvironmentInjector", "ngComponentOutletContent", "ngComponentOutletNgModule"], exportAs: ["ngComponentOutlet"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: NavigationScopeDirective, selector: "[symbioteNavigationScope]", inputs: ["symbioteNavigationScope", "navigation", "emitter"] }, { kind: "directive", type: SymbioteHostPropsDirective, selector: "[symbioteHostProps]", inputs: ["symbioteHostProps"], exportAs: ["symbioteHost"] }, { kind: "component", type: View, selector: "symbiote-view, View" }, { kind: "component", type: AnimatedView, selector: "AnimatedView, symbiote-animated-view", inputs: ["style", "animatedProps", "passthroughAnimatedPropExplicitValues"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
393
395
  }
394
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.5", ngImport: i0, type: Drawer, decorators: [{
396
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: Drawer, decorators: [{
395
397
  type: Component,
396
398
  args: [{
397
399
  selector: 'Drawer',
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/angular/drawer/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/angular/drawer/index.ts"],"names":[],"mappings":"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"}