@symbiote-native/navigation 2.1.0 → 3.0.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 (237) hide show
  1. package/README.md +89 -14
  2. package/build/angular/drawer/index.js +23 -9
  3. package/build/angular/index.d.ts +4 -4
  4. package/build/angular/index.js +1 -1
  5. package/build/angular/injectors/inject-navigation.js +1 -1
  6. package/build/angular/navigation-scope.directive.js +1 -1
  7. package/build/angular/search-bar-ref.directive.js +1 -1
  8. package/build/angular/stack/index.js +20 -6
  9. package/build/angular/tabs/index.js +21 -7
  10. package/build/core/drawer-options/index.js +19 -5
  11. package/build/core/drawer-router-state/index.js +8 -2
  12. package/build/core/guards.js +3 -1
  13. package/build/core/header-bar-buttons.js +14 -4
  14. package/build/core/index.d.ts +4 -4
  15. package/build/core/index.js +2 -2
  16. package/build/core/navigator-state/index.js +12 -4
  17. package/build/core/render-drawer.js +4 -1
  18. package/build/core/render-stack.js +13 -4
  19. package/build/core/screen-options.js +1 -1
  20. package/build/core/search-bar-commands.js +1 -1
  21. package/build/core/state-persistence/index.js +6 -2
  22. package/build/core/tab-router-state/index.js +8 -2
  23. package/build/react/drawer/index.js +36 -13
  24. package/build/react/index.d.ts +7 -7
  25. package/build/react/index.js +3 -3
  26. package/build/react/stack/index.js +34 -8
  27. package/build/react/tabs/index.js +14 -4
  28. package/build/solid/drawer/index.d.ts +22 -0
  29. package/build/solid/drawer/index.js +394 -0
  30. package/build/solid/drawer-screen-props.d.ts +13 -0
  31. package/build/solid/drawer-screen-props.js +2 -0
  32. package/build/solid/host.d.ts +2 -0
  33. package/build/solid/host.js +23 -0
  34. package/build/solid/index.d.ts +19 -0
  35. package/build/solid/index.js +24 -0
  36. package/build/solid/linking.d.ts +3 -0
  37. package/build/solid/linking.js +55 -0
  38. package/build/solid/navigation-context.d.ts +13 -0
  39. package/build/solid/navigation-context.js +37 -0
  40. package/build/solid/primitives/create-focus-effect.d.ts +1 -0
  41. package/build/solid/primitives/create-focus-effect.js +30 -0
  42. package/build/solid/primitives/create-is-focused.d.ts +2 -0
  43. package/build/solid/primitives/create-is-focused.js +31 -0
  44. package/build/solid/primitives/create-navigation-state.d.ts +3 -0
  45. package/build/solid/primitives/create-navigation-state.js +30 -0
  46. package/build/solid/primitives/index.d.ts +12 -0
  47. package/build/solid/primitives/index.js +8 -0
  48. package/build/solid/primitives/use-drawer-navigation.d.ts +5 -0
  49. package/build/solid/primitives/use-drawer-navigation.js +15 -0
  50. package/build/solid/primitives/use-navigation.d.ts +8 -0
  51. package/build/solid/primitives/use-navigation.js +23 -0
  52. package/build/solid/primitives/use-route.d.ts +3 -0
  53. package/build/solid/primitives/use-route.js +14 -0
  54. package/build/solid/primitives/use-stack-navigation.d.ts +5 -0
  55. package/build/solid/primitives/use-stack-navigation.js +19 -0
  56. package/build/solid/primitives/use-tab-navigation.d.ts +5 -0
  57. package/build/solid/primitives/use-tab-navigation.js +15 -0
  58. package/build/solid/screen-props.d.ts +19 -0
  59. package/build/solid/screen-props.js +9 -0
  60. package/build/solid/screen-registry.d.ts +31 -0
  61. package/build/solid/screen-registry.js +86 -0
  62. package/build/solid/screen.d.ts +6 -0
  63. package/build/solid/screen.js +69 -0
  64. package/build/solid/stack/index.d.ts +15 -0
  65. package/build/solid/stack/index.js +348 -0
  66. package/build/solid/tab-screen-props.d.ts +13 -0
  67. package/build/solid/tab-screen-props.js +3 -0
  68. package/build/solid/tabs/index.d.ts +14 -0
  69. package/build/solid/tabs/index.js +228 -0
  70. package/build/svelte/descriptor-subtree.js +3 -1
  71. package/build/svelte/drawer/index.svelte +163 -25
  72. package/build/svelte/drawer-screen.svelte +2 -1
  73. package/build/svelte/index.d.ts +3 -3
  74. package/build/svelte/index.js +1 -1
  75. package/build/svelte/navigation-scope.svelte +4 -1
  76. package/build/svelte/runes/use-navigation.svelte.js +5 -1
  77. package/build/svelte/stack/index.svelte +43 -6
  78. package/build/svelte/stack/stack-screen.svelte +66 -9
  79. package/build/svelte/tabs/index.svelte +42 -20
  80. package/build/vue/composables/use-navigation.js +5 -1
  81. package/build/vue/drawer/index.js +30 -8
  82. package/build/vue/index.d.ts +3 -3
  83. package/build/vue/index.js +1 -1
  84. package/build/vue/navigation-context.js +1 -1
  85. package/build/vue/stack/index.js +17 -6
  86. package/build/vue/tabs/index.js +18 -5
  87. package/build-ngc/angular/drawer/index.js +31 -11
  88. package/build-ngc/angular/drawer/index.js.map +1 -1
  89. package/build-ngc/angular/index.d.ts +4 -4
  90. package/build-ngc/angular/index.js.map +1 -1
  91. package/build-ngc/angular/injectors/inject-focus-effect.js.map +1 -1
  92. package/build-ngc/angular/injectors/inject-is-focused.js.map +1 -1
  93. package/build-ngc/angular/injectors/inject-navigation-state.js.map +1 -1
  94. package/build-ngc/angular/injectors/inject-navigation.js +1 -1
  95. package/build-ngc/angular/injectors/inject-navigation.js.map +1 -1
  96. package/build-ngc/angular/linking.js.map +1 -1
  97. package/build-ngc/angular/navigation-context.service.js.map +1 -1
  98. package/build-ngc/angular/navigation-scope.directive.js +1 -1
  99. package/build-ngc/angular/navigation-scope.directive.js.map +1 -1
  100. package/build-ngc/angular/screen.directive.js.map +1 -1
  101. package/build-ngc/angular/search-bar-ref.directive.js +1 -1
  102. package/build-ngc/angular/search-bar-ref.directive.js.map +1 -1
  103. package/build-ngc/angular/stack/index.js +26 -8
  104. package/build-ngc/angular/stack/index.js.map +1 -1
  105. package/build-ngc/angular/tab-screen.directive.js.map +1 -1
  106. package/build-ngc/angular/tabs/index.js +21 -7
  107. package/build-ngc/angular/tabs/index.js.map +1 -1
  108. package/build-ngc/core/constants.js.map +1 -1
  109. package/build-ngc/core/drawer-options/index.js +19 -5
  110. package/build-ngc/core/drawer-options/index.js.map +1 -1
  111. package/build-ngc/core/drawer-router-state/index.js +8 -2
  112. package/build-ngc/core/drawer-router-state/index.js.map +1 -1
  113. package/build-ngc/core/guards.js +3 -1
  114. package/build-ngc/core/guards.js.map +1 -1
  115. package/build-ngc/core/header-bar-buttons.js +14 -4
  116. package/build-ngc/core/header-bar-buttons.js.map +1 -1
  117. package/build-ngc/core/index.d.ts +4 -4
  118. package/build-ngc/core/index.js +2 -2
  119. package/build-ngc/core/index.js.map +1 -1
  120. package/build-ngc/core/linking-config/index.js.map +1 -1
  121. package/build-ngc/core/navigation-events/index.js.map +1 -1
  122. package/build-ngc/core/navigator-handles/index.js.map +1 -1
  123. package/build-ngc/core/navigator-state/index.js +12 -4
  124. package/build-ngc/core/navigator-state/index.js.map +1 -1
  125. package/build-ngc/core/render-drawer.js +4 -1
  126. package/build-ngc/core/render-drawer.js.map +1 -1
  127. package/build-ngc/core/render-stack.js +13 -4
  128. package/build-ngc/core/render-stack.js.map +1 -1
  129. package/build-ngc/core/render-tabs.js.map +1 -1
  130. package/build-ngc/core/screen-options.js +1 -1
  131. package/build-ngc/core/screen-options.js.map +1 -1
  132. package/build-ngc/core/search-bar-commands.js +1 -1
  133. package/build-ngc/core/search-bar-commands.js.map +1 -1
  134. package/build-ngc/core/stack-router-state/index.js.map +1 -1
  135. package/build-ngc/core/state-persistence/index.js +6 -2
  136. package/build-ngc/core/state-persistence/index.js.map +1 -1
  137. package/build-ngc/core/tab-router-state/index.js +8 -2
  138. package/build-ngc/core/tab-router-state/index.js.map +1 -1
  139. package/package.json +40 -15
  140. package/src/angular/drawer/index.ts +69 -25
  141. package/src/angular/index.ts +20 -4
  142. package/src/angular/injectors/inject-focus-effect.ts +8 -2
  143. package/src/angular/injectors/inject-is-focused.ts +6 -4
  144. package/src/angular/injectors/inject-navigation-state.ts +7 -4
  145. package/src/angular/injectors/inject-navigation.ts +12 -3
  146. package/src/angular/linking.ts +4 -1
  147. package/src/angular/navigation-context.service.ts +5 -2
  148. package/src/angular/navigation-scope.directive.ts +6 -2
  149. package/src/angular/screen.directive.ts +13 -3
  150. package/src/angular/search-bar-ref.directive.ts +10 -2
  151. package/src/angular/stack/index.ts +68 -22
  152. package/src/angular/tab-screen.directive.ts +3 -1
  153. package/src/angular/tabs/index.ts +36 -12
  154. package/src/core/constants.ts +6 -3
  155. package/src/core/drawer-options/index.ts +40 -13
  156. package/src/core/drawer-router-state/index.ts +11 -3
  157. package/src/core/guards.ts +3 -1
  158. package/src/core/header-bar-buttons.ts +41 -12
  159. package/src/core/index.ts +18 -4
  160. package/src/core/linking-config/index.ts +31 -10
  161. package/src/core/navigation-events/index.ts +8 -2
  162. package/src/core/navigator-handles/index.ts +8 -3
  163. package/src/core/navigator-props.ts +13 -4
  164. package/src/core/navigator-state/index.ts +24 -7
  165. package/src/core/render-drawer.ts +24 -9
  166. package/src/core/render-stack.ts +52 -13
  167. package/src/core/render-tabs.ts +24 -6
  168. package/src/core/screen-options.ts +15 -5
  169. package/src/core/search-bar-commands.ts +12 -3
  170. package/src/core/stack-router-state/index.ts +5 -2
  171. package/src/core/state-persistence/index.ts +13 -3
  172. package/src/core/tab-router-state/index.ts +10 -3
  173. package/src/react/drawer/index.ts +408 -344
  174. package/src/react/drawer-screen.ts +8 -2
  175. package/src/react/hooks/use-focus-effect.ts +8 -2
  176. package/src/react/hooks/use-is-focused.ts +6 -2
  177. package/src/react/hooks/use-navigation.ts +8 -2
  178. package/src/react/index.ts +37 -7
  179. package/src/react/linking.ts +4 -1
  180. package/src/react/navigation-context.ts +6 -2
  181. package/src/react/screen.ts +12 -3
  182. package/src/react/stack/index.ts +294 -231
  183. package/src/react/tab-screen.ts +3 -1
  184. package/src/react/tabs/index.ts +188 -158
  185. package/src/solid/drawer/index.ts +570 -0
  186. package/src/solid/drawer-screen-props.ts +24 -0
  187. package/src/solid/host.ts +29 -0
  188. package/src/solid/index.ts +87 -0
  189. package/src/solid/linking.ts +74 -0
  190. package/src/solid/navigation-context.ts +56 -0
  191. package/src/solid/primitives/create-focus-effect.ts +41 -0
  192. package/src/solid/primitives/create-is-focused.ts +41 -0
  193. package/src/solid/primitives/create-navigation-state.ts +44 -0
  194. package/src/solid/primitives/index.ts +12 -0
  195. package/src/solid/primitives/use-drawer-navigation.ts +25 -0
  196. package/src/solid/primitives/use-navigation.ts +44 -0
  197. package/src/solid/primitives/use-route.ts +18 -0
  198. package/src/solid/primitives/use-stack-navigation.ts +29 -0
  199. package/src/solid/primitives/use-tab-navigation.ts +25 -0
  200. package/src/solid/screen-props.ts +51 -0
  201. package/src/solid/screen-registry.ts +159 -0
  202. package/src/solid/screen.ts +80 -0
  203. package/src/solid/stack/index.ts +528 -0
  204. package/src/solid/tab-screen-props.ts +21 -0
  205. package/src/solid/tabs/index.ts +327 -0
  206. package/src/svelte/attachments.ts +3 -1
  207. package/src/svelte/descriptor-subtree.ts +3 -1
  208. package/src/svelte/drawer/index.svelte +163 -25
  209. package/src/svelte/drawer-screen-props.ts +8 -2
  210. package/src/svelte/drawer-screen.svelte +2 -1
  211. package/src/svelte/fabric-tree.test-helper.ts +37 -3
  212. package/src/svelte/index.ts +15 -3
  213. package/src/svelte/linking.svelte.ts +11 -5
  214. package/src/svelte/navigation-scope.svelte +4 -1
  215. package/src/svelte/runes/use-drawer-navigation.svelte.ts +3 -1
  216. package/src/svelte/runes/use-focus-effect.svelte.ts +8 -2
  217. package/src/svelte/runes/use-navigation-state.svelte.ts +3 -1
  218. package/src/svelte/runes/use-navigation.svelte.ts +13 -3
  219. package/src/svelte/runes/use-stack-navigation.svelte.ts +3 -1
  220. package/src/svelte/screen-props.ts +7 -2
  221. package/src/svelte/screen-registry.ts +9 -3
  222. package/src/svelte/stack/index.svelte +43 -6
  223. package/src/svelte/stack/stack-screen.svelte +66 -9
  224. package/src/svelte/svelte-compile.test-helper.ts +16 -12
  225. package/src/svelte/tab-screen-props.ts +3 -1
  226. package/src/svelte/tabs/index.svelte +42 -20
  227. package/src/vue/composables/use-navigation-state.ts +7 -4
  228. package/src/vue/composables/use-navigation.ts +13 -3
  229. package/src/vue/drawer/index.ts +122 -36
  230. package/src/vue/drawer-screen.ts +12 -5
  231. package/src/vue/index.ts +15 -3
  232. package/src/vue/linking.ts +7 -2
  233. package/src/vue/navigation-context.ts +17 -5
  234. package/src/vue/screen.ts +7 -2
  235. package/src/vue/stack/index.ts +82 -34
  236. package/src/vue/tab-screen.ts +3 -1
  237. package/src/vue/tabs/index.ts +51 -13
package/README.md CHANGED
@@ -3,7 +3,7 @@
3
3
  A native stack/tab/drawer navigator for [SymbioteNative](../../README.md), built directly on
4
4
  [`react-native-screens`](https://github.com/software-mansion/react-native-screens)' native view
5
5
  primitives (`RNSScreen`/`RNSScreenStack`/`RNSScreenStackHeaderConfig`/`RNSSearchBar`) — reachable
6
- from **every** adapter: React, Vue, and Angular. Unlike the third-party-view wrappers
6
+ from **every** adapter: React, Vue, Svelte, Solid, and Angular. Unlike the third-party-view wrappers
7
7
  ([`@symbiote-native/slider`](../slider), [`@symbiote-native/splash-screen`](../splash-screen)),
8
8
  there is no upstream React component to route around here at all — `react-navigation`'s own
9
9
  navigator UI is itself React-only (it calls hooks off the React dispatcher), so wrapping it was
@@ -38,14 +38,16 @@ src/
38
38
  │ react-native-screens' own React components)
39
39
  ├── react/ @symbiote-native/navigation/react — Stack/Tab/Drawer + hooks
40
40
  ├── vue/ @symbiote-native/navigation/vue — Stack/Tab/Drawer + composables
41
+ ├── svelte/ @symbiote-native/navigation/svelte — Stack/Tab/Drawer + runes
42
+ ├── solid/ @symbiote-native/navigation/solid — Stack/Tab/Drawer + primitives
41
43
  └── angular/ @symbiote-native/navigation/angular — Stack/Tab/Drawer + directives + inject*
42
44
  ```
43
45
 
44
46
  Each adapter entry imports `../register` first (so every native view's `ViewConfig` is registered
45
47
  before a screen ever mounts), then exposes `Stack`, `Tab`, and `Drawer`. The router/reducer logic
46
48
  and every `react-native-screens` prop fold are written once in `core/` and shared verbatim; each
47
- adapter supplies only its own lifecycle (hooks / composables / `inject*` functions) and the
48
- descriptor bridge.
49
+ adapter supplies only its own lifecycle (hooks / composables / runes / primitives / `inject*`
50
+ functions) and the descriptor bridge.
49
51
 
50
52
  ## Use it
51
53
 
@@ -65,8 +67,16 @@ function App() {
65
67
 
66
68
  return (
67
69
  <Stack ref={setStackHandle} initialRouteName="Menu">
68
- <Stack.Screen name="Menu" component={MenuScreen} options={{ title: 'Navigation Demos' }} />
69
- <Stack.Screen name="Details" component={DetailsScreen} options={{ title: 'Details' }} />
70
+ <Stack.Screen
71
+ name="Menu"
72
+ component={MenuScreen}
73
+ options={{ title: 'Navigation Demos' }}
74
+ />
75
+ <Stack.Screen
76
+ name="Details"
77
+ component={DetailsScreen}
78
+ options={{ title: 'Details' }}
79
+ />
70
80
  </Stack>
71
81
  );
72
82
  }
@@ -84,8 +94,16 @@ const stackHandle = ref<INavigatorHandle | null>(null);
84
94
 
85
95
  <template>
86
96
  <Stack ref="stackHandle" initial-route-name="Menu">
87
- <Screen name="Menu" :component="MenuScreen" :options="{ title: 'Navigation Demos' }" />
88
- <Screen name="Details" :component="DetailsScreen" :options="{ title: 'Details' }" />
97
+ <Screen
98
+ name="Menu"
99
+ :component="MenuScreen"
100
+ :options="{ title: 'Navigation Demos' }"
101
+ />
102
+ <Screen
103
+ name="Details"
104
+ :component="DetailsScreen"
105
+ :options="{ title: 'Details' }"
106
+ />
89
107
  </Stack>
90
108
  </template>
91
109
  ```
@@ -100,8 +118,18 @@ import { Stack, ScreenDirective } from '@symbiote-native/navigation/angular';
100
118
  imports: [Stack, ScreenDirective],
101
119
  template: `
102
120
  <Stack #nav initialRouteName="Menu">
103
- <ng-template symbioteScreen name="Menu" [component]="menuScreen" [options]="menuOptions"></ng-template>
104
- <ng-template symbioteScreen name="Details" [component]="detailsScreen" [options]="detailsOptions"></ng-template>
121
+ <ng-template
122
+ symbioteScreen
123
+ name="Menu"
124
+ [component]="menuScreen"
125
+ [options]="menuOptions"
126
+ ></ng-template>
127
+ <ng-template
128
+ symbioteScreen
129
+ name="Details"
130
+ [component]="detailsScreen"
131
+ [options]="detailsOptions"
132
+ ></ng-template>
105
133
  </Stack>
106
134
  `,
107
135
  })
@@ -114,9 +142,54 @@ export class AppComponent {
114
142
  }
115
143
  ```
116
144
 
145
+ ```svelte
146
+ <!-- Svelte — examples/svelte/App.svelte -->
147
+ <script lang="ts">
148
+ import { Screen, Stack } from '@symbiote-native/navigation/svelte';
149
+ import type { INavigatorHandle } from '@symbiote-native/navigation/svelte';
150
+
151
+ let stackInstance = $state.raw<INavigatorHandle | null>(null);
152
+ </script>
153
+
154
+ <Stack bind:this={stackInstance} initialRouteName="Menu">
155
+ <Screen name="Menu" component={MenuScreen} options={{ title: 'Navigation Demos' }} />
156
+ <Screen name="Details" component={DetailsScreen} options={{ title: 'Details' }} />
157
+ </Stack>
158
+ ```
159
+
160
+ ```tsx
161
+ // Solid — examples/solid/App.tsx
162
+ import { createSignal } from 'solid-js';
163
+ import { Stack } from '@symbiote-native/navigation/solid';
164
+ import type { INavigatorHandle } from '@symbiote-native/navigation/solid';
165
+
166
+ export default function App() {
167
+ const [stackHandle, setStackHandle] = createSignal<INavigatorHandle | null>(
168
+ null,
169
+ );
170
+
171
+ return (
172
+ <Stack ref={handle => setStackHandle(handle)} initialRouteName="Menu">
173
+ <Stack.Screen
174
+ name="Menu"
175
+ component={MenuScreen}
176
+ options={{ title: 'Navigation Demos' }}
177
+ />
178
+ <Stack.Screen
179
+ name="Details"
180
+ component={DetailsScreen}
181
+ options={{ title: 'Details' }}
182
+ />
183
+ </Stack>
184
+ );
185
+ }
186
+ ```
187
+
117
188
  `Stack` itself implements `INavigatorHandle` in Angular — `@ViewChild` gives you the handle
118
- directly, no separate ref callback. In React/Vue, the ref only attaches during commit — code that
119
- needs the handle (e.g. `useLinkingIntegration` below) must gate on it being non-null first.
189
+ directly, no separate ref callback. In React/Vue/Svelte/Solid, the ref only attaches during
190
+ commit — code that needs the handle (e.g. `useLinkingIntegration` below) must gate on it being
191
+ non-null first (Svelte's `bind:this` binds during mount, so `$effect`-gate on it; Solid's `ref`
192
+ callback fires during creation, strictly before any effect runs).
120
193
 
121
194
  ### Tabs, Drawer, hooks, deep linking, and state persistence
122
195
 
@@ -125,8 +198,10 @@ swipeable drawer navigator (`Drawer`/`Drawer.Screen`, built on `PanResponder`/`A
125
198
  codebase doesn't depend on `react-native-gesture-handler`/`react-native-reanimated` — see
126
199
  [Known gaps](#known-gaps-drawer-parity) below), the full `useNavigation`/`useRoute`/
127
200
  `useIsFocused`/`useFocusEffect`/`useNavigationState` hook family (narrowed per navigator as
128
- `useStackNavigation`/`useTabNavigation`/`useDrawerNavigation`, with Vue composable and Angular
129
- `inject*` twins of all of them), header/search-bar screen options (bar buttons, menus,
201
+ `useStackNavigation`/`useTabNavigation`/`useDrawerNavigation`, with Vue composable, Svelte rune,
202
+ Solid primitive and Angular `inject*` twins of all of them — Solid spells the three that own state
203
+ `createIsFocused`/`createFocusEffect`/`createNavigationState`, since it reserves `use*` for reading
204
+ an existing context), header/search-bar screen options (bar buttons, menus,
130
205
  `formSheet`/modal presentation, `sheetAllowedDetents`), a `resolveRouteFromUrl`/
131
206
  `useLinkingIntegration` deep-linking layer, and `serializeNavigatorState`/
132
207
  `deserializeNavigatorState` for state persistence. See the docs-site navigation section
@@ -153,7 +228,7 @@ horizontal `ScrollView` hijacking the swipe), `useDrawerProgress` as a UI-thread
153
228
  ## Test it
154
229
 
155
230
  Headless tests live next to each adapter entry and the shared core
156
- (`src/{core,react,vue,angular}/**/*.test.{ts,tsx}`) and drive the same reducers/prop folds every
231
+ (`src/{core,react,vue,svelte,solid,angular}/**/*.test.{ts,tsx}`) and drive the same reducers/prop folds every
157
232
  adapter shares, plus per-adapter component tests against a fake `nativeFabricUIManager` slot.
158
233
  Native rendering (the real `RNSScreenStack` push/pop transitions, header/search-bar chrome,
159
234
  `formSheet` detents) is verified on-device (see the parent [README](../../README.md) for the
@@ -92,7 +92,10 @@ let Drawer = (() => {
92
92
  @for (slot of slotOrder(); track slot) {
93
93
  @switch (slot) {
94
94
  @case ('content') {
95
- <AnimatedView [style]="contentStyle()" [animatedProps]="slotAnimatedProps('content')">
95
+ <AnimatedView
96
+ [style]="contentStyle()"
97
+ [animatedProps]="slotAnimatedProps('content')"
98
+ >
96
99
  @if (focusedRoute(); as route) {
97
100
  @if (componentForRoute(route); as component) {
98
101
  <ng-container
@@ -113,7 +116,10 @@ let Drawer = (() => {
113
116
  />
114
117
  }
115
118
  @case ('panel') {
116
- <AnimatedView [style]="panelStyle()" [animatedProps]="slotAnimatedProps('panel')">
119
+ <AnimatedView
120
+ [style]="panelStyle()"
121
+ [animatedProps]="slotAnimatedProps('panel')"
122
+ >
117
123
  @if (drawerContentTemplate) {
118
124
  <ng-container
119
125
  *ngTemplateOutlet="
@@ -214,7 +220,8 @@ let Drawer = (() => {
214
220
  swipeEdgeWidth = (__runInitializers(this, _swipeEnabled_extraInitializers), __runInitializers(this, _swipeEdgeWidth_initializers, void 0));
215
221
  swipeMinDistance = (__runInitializers(this, _swipeEdgeWidth_extraInitializers), __runInitializers(this, _swipeMinDistance_initializers, void 0));
216
222
  swipeMinVelocity = (__runInitializers(this, _swipeMinDistance_extraInitializers), __runInitializers(this, _swipeMinVelocity_initializers, void 0));
217
- windowDimensions = (__runInitializers(this, _swipeMinVelocity_extraInitializers), inject(WindowDimensionsService).dimensions);
223
+ windowDimensions = (__runInitializers(this, _swipeMinVelocity_extraInitializers), inject(WindowDimensionsService)
224
+ .dimensions);
218
225
  routeIdPrefix = `drawer-${(drawerInstanceCounter += 1)}`;
219
226
  // Keyed by name -> the LIVE DrawerScreenDirective instance - see stack.ts's matching comment
220
227
  // for why a snapshot copy would go stale on an in-place `[options]`/`[component]` change.
@@ -278,9 +285,10 @@ let Drawer = (() => {
278
285
  ngAfterContentInit() {
279
286
  this.rebuildRegistry();
280
287
  this.initializeState();
281
- this.drawerScreenChildrenSubscription = this.drawerScreenChildren.changes.subscribe(() => {
282
- this.rebuildRegistry();
283
- });
288
+ this.drawerScreenChildrenSubscription =
289
+ this.drawerScreenChildren.changes.subscribe(() => {
290
+ this.rebuildRegistry();
291
+ });
284
292
  }
285
293
  ngOnDestroy() {
286
294
  this.drawerScreenChildrenSubscription?.unsubscribe();
@@ -365,7 +373,9 @@ let Drawer = (() => {
365
373
  overlayColor: this.optionsSnapshot().overlayColor ?? DRAWER_DEFAULT_OVERLAY_COLOR,
366
374
  drawerStyle: this.drawerStyleSnapshot(),
367
375
  contentPassthrough: {},
368
- overlayPassthrough: this.isAnimated() ? this.overlayResponderPassthrough() : {},
376
+ overlayPassthrough: this.isAnimated()
377
+ ? this.overlayResponderPassthrough()
378
+ : {},
369
379
  panelPassthrough: {},
370
380
  }, this.optionsSnapshot()));
371
381
  slotsMap = computed(() => {
@@ -400,7 +410,9 @@ let Drawer = (() => {
400
410
  }
401
411
  slotStyle(slot, animatedStyle) {
402
412
  const base = this.slotsMap().get(slot)?.props.style;
403
- return this.isAnimated() ? flattenStyle([base, animatedStyle()]) : flattenStyle(base);
413
+ return this.isAnimated()
414
+ ? flattenStyle([base, animatedStyle()])
415
+ : flattenStyle(base);
404
416
  }
405
417
  contentStyle() {
406
418
  return this.slotStyle('content', () => {
@@ -502,7 +514,9 @@ let Drawer = (() => {
502
514
  navigation: this,
503
515
  };
504
516
  }
505
- return { $implicit: { state: currentState, descriptors, navigation: this } };
517
+ return {
518
+ $implicit: { state: currentState, descriptors, navigation: this },
519
+ };
506
520
  }
507
521
  };
508
522
  return Drawer = _classThis;
@@ -3,7 +3,7 @@ export { Stack } from './stack';
3
3
  export type { INavigatorHandle } from './stack';
4
4
  export { ScreenDirective } from './screen.directive';
5
5
  export type { IAngularScreenOptions, IAngularSearchBarOptions, IScreenOptionsArgs, IScreenOptionsResolver, } from './screen.directive';
6
- export type { IScreenOptions, IStackAnimation, IStackPresentation } from '../core';
6
+ export type { IScreenOptions, IStackAnimation, IStackPresentation, } from '../core';
7
7
  export { injectNavigation, injectStackNavigation, injectTabNavigation, injectDrawerNavigation, injectRoute, injectIsFocused, injectFocusEffect, injectNavigationState, } from './injectors';
8
8
  export type { INavigationHandle, IStackNavigationHandle, ITabNavigationHandle, IDrawerNavigationHandle, IFocusEffectCallback, } from './injectors';
9
9
  export { NavigationContextService } from './navigation-context.service';
@@ -14,10 +14,10 @@ export type { ILinkingConfig, IScreenLinkingConfig } from '../core';
14
14
  export { Tab } from './tabs';
15
15
  export type { ITabNavigatorHandle } from './tabs';
16
16
  export { TabScreenDirective } from './tab-screen.directive';
17
- export type { ITabScreenOptionsArgs, ITabScreenOptionsResolver } from './tab-screen.directive';
17
+ export type { ITabScreenOptionsArgs, ITabScreenOptionsResolver, } from './tab-screen.directive';
18
18
  export type { ITabOptions, ITabBarIcon } from '../core';
19
19
  export { Drawer } from './drawer';
20
- export type { IDrawerNavigatorHandle, IDrawerDescriptorMap, IDrawerContentContext } from './drawer';
20
+ export type { IDrawerNavigatorHandle, IDrawerDescriptorMap, IDrawerContentContext, } from './drawer';
21
21
  export { DrawerScreenDirective } from './drawer-screen.directive';
22
22
  export type { IDrawerScreenOptionsArgs, IDrawerScreenOptionsResolver, } from './drawer-screen.directive';
23
- export type { IDrawerOptions, IDrawerScreenOptions, IDrawerType, IDrawerPosition } from '../core';
23
+ export type { IDrawerOptions, IDrawerScreenOptions, IDrawerType, IDrawerPosition, } from '../core';
@@ -3,7 +3,7 @@
3
3
  // views' ViewConfigs (../register, a side-effect import of the three codegen specs - never
4
4
  // react-native-screens' own React components), then exposes Stack/Tab/Drawer with their Screen
5
5
  // directives and navigator handles. Mirrors react/index.ts's barrel shape.
6
- import '../register';
6
+ import '../register.js';
7
7
  export { Stack } from './stack/index.js';
8
8
  export { ScreenDirective } from './screen.directive.js';
9
9
  export { injectNavigation, injectStackNavigation, injectTabNavigation, injectDrawerNavigation, injectRoute, injectIsFocused, injectFocusEffect, injectNavigationState, } from './injectors/index.js';
@@ -5,7 +5,7 @@
5
5
  // that route's own emitter - mirrors @react-navigation's `navigation.addListener('focus', cb)`
6
6
  // surface. All pub/sub logic lives in ../../core/navigation-events; this function only reads
7
7
  // NavigationContextService and binds identity.
8
- import { requireNavigationContext } from '../navigation-context.service.js';
8
+ import { requireNavigationContext, } from '../navigation-context.service.js';
9
9
  export function injectNavigation() {
10
10
  const context = requireNavigationContext('injectNavigation');
11
11
  return {
@@ -41,7 +41,7 @@ var __runInitializers = (this && this.__runInitializers) || function (thisArg, i
41
41
  return useValue ? value : void 0;
42
42
  };
43
43
  import { Directive, Input, inject } from '@angular/core';
44
- import { NavigationContextService } from './navigation-context.service.js';
44
+ import { NavigationContextService, } from './navigation-context.service.js';
45
45
  let NavigationScopeDirective = (() => {
46
46
  let _classDecorators = [Directive({
47
47
  selector: '[symbioteNavigationScope]',
@@ -40,7 +40,7 @@ var __runInitializers = (this && this.__runInitializers) || function (thisArg, i
40
40
  }
41
41
  return useValue ? value : void 0;
42
42
  };
43
- import { Directive, Input, inject, ElementRef } from '@angular/core';
43
+ import { Directive, Input, inject, ElementRef, } from '@angular/core';
44
44
  import { isSymbioteNode, dlog, debugNodeId } from '@symbiote-native/engine';
45
45
  import { buildSearchBarHandle } from '../core/index.js';
46
46
  let SearchBarRefDirective = (() => {
@@ -87,7 +87,9 @@ import { SearchBarRefDirective } from '../search-bar-ref.directive.js';
87
87
  import { ScreenDirective } from '../screen.directive.js';
88
88
  // backTitleVisible defaults to `true` on both platforms per the codegen spec's own default - no
89
89
  // ios/android divergence in v1 scope (mirrors react/stack.ts's own constant exactly).
90
- const NAVIGATOR_PLATFORM = { defaultHeaderBackTitleVisible: true };
90
+ const NAVIGATOR_PLATFORM = {
91
+ defaultHeaderBackTitleVisible: true,
92
+ };
91
93
  let stackInstanceCounter = 0;
92
94
  let Stack = (() => {
93
95
  let _classDecorators = [Component({
@@ -151,7 +153,9 @@ let Stack = (() => {
151
153
  </ng-template>
152
154
 
153
155
  <ng-template #headerAndContentTpl let-route let-index="index">
154
- <RNSScreenStackHeaderConfig [symbioteHostProps]="headerConfigProps(route, index)">
156
+ <RNSScreenStackHeaderConfig
157
+ [symbioteHostProps]="headerConfigProps(route, index)"
158
+ >
155
159
  @if (hasSearchBar(route)) {
156
160
  <RNSScreenStackHeaderSubview [symbioteHostProps]="headerSubviewProps">
157
161
  <RNSSearchBar
@@ -161,7 +165,9 @@ let Stack = (() => {
161
165
  </RNSScreenStackHeaderSubview>
162
166
  }
163
167
  </RNSScreenStackHeaderConfig>
164
- <RNSScreenContentWrapper [symbioteHostProps]="contentWrapperProps(route, index)">
168
+ <RNSScreenContentWrapper
169
+ [symbioteHostProps]="contentWrapperProps(route, index)"
170
+ >
165
171
  <ng-container
166
172
  [symbioteNavigationScope]="route"
167
173
  [navigation]="this"
@@ -268,14 +274,22 @@ let Stack = (() => {
268
274
  const initialRouteName = this.initialRouteName ?? this.registry.keys().next().value;
269
275
  if (initialRouteName === undefined) {
270
276
  dlog('Stack: no <ng-template symbioteScreen> children registered');
271
- this.stateSignal.set(createInitialNavigatorState({ key: this.routeIdPrefix, name: '', params: undefined }));
277
+ this.stateSignal.set(createInitialNavigatorState({
278
+ key: this.routeIdPrefix,
279
+ name: '',
280
+ params: undefined,
281
+ }));
272
282
  return;
273
283
  }
274
284
  this.stateSignal.set(createInitialNavigatorState(this.createRoute(initialRouteName, this.registry.get(initialRouteName)?.initialParams)));
275
285
  }
276
286
  createRoute(name, params) {
277
287
  this.routeSequence += 1;
278
- return { key: `${this.routeIdPrefix}-${name}-${this.routeSequence}`, name, params };
288
+ return {
289
+ key: `${this.routeIdPrefix}-${name}-${this.routeSequence}`,
290
+ name,
291
+ params,
292
+ };
279
293
  }
280
294
  dispatch(action) {
281
295
  const current = this.stateSignal();
@@ -370,7 +384,7 @@ let Stack = (() => {
370
384
  return plan;
371
385
  }
372
386
  outerScreenIsModal(route, index) {
373
- return this.planFor(route, index).screenViewName === RNS_MODAL_SCREEN_VIEW_NAME;
387
+ return (this.planFor(route, index).screenViewName === RNS_MODAL_SCREEN_VIEW_NAME);
374
388
  }
375
389
  isInModal(route, index) {
376
390
  return this.planFor(route, index).inModal;
@@ -63,7 +63,12 @@ let Tab = (() => {
63
63
  let _classDecorators = [Component({
64
64
  selector: 'Tab',
65
65
  standalone: true,
66
- imports: [NgComponentOutlet, NavigationScopeDirective, DescriptorOutlet, View],
66
+ imports: [
67
+ NgComponentOutlet,
68
+ NavigationScopeDirective,
69
+ DescriptorOutlet,
70
+ View,
71
+ ],
67
72
  changeDetection: ChangeDetectionStrategy.OnPush,
68
73
  template: `
69
74
  <View [style]="rootStyle">
@@ -129,9 +134,10 @@ let Tab = (() => {
129
134
  setParams = (params, key) => this.dispatch({ type: 'setParams', key, params });
130
135
  ngAfterContentInit() {
131
136
  this.syncRegistry();
132
- this.tabScreenChildrenSubscription = this.tabScreenChildren.changes.subscribe(() => {
133
- this.syncRegistry();
134
- });
137
+ this.tabScreenChildrenSubscription =
138
+ this.tabScreenChildren.changes.subscribe(() => {
139
+ this.syncRegistry();
140
+ });
135
141
  }
136
142
  ngOnDestroy() {
137
143
  this.tabScreenChildrenSubscription?.unsubscribe();
@@ -181,7 +187,9 @@ let Tab = (() => {
181
187
  }
182
188
  resolveTabOptions(entry, route) {
183
189
  const props = { route, navigation: this };
184
- const own = typeof entry.options === 'function' ? entry.options(props) : entry.options;
190
+ const own = typeof entry.options === 'function'
191
+ ? entry.options(props)
192
+ : entry.options;
185
193
  return { ...this.screenOptions, ...own };
186
194
  }
187
195
  focusedRoute() {
@@ -264,11 +272,17 @@ let Tab = (() => {
264
272
  };
265
273
  });
266
274
  const focusedRoute = this.focusedRoute();
267
- const focusedEntry = focusedRoute ? this.registry.get(focusedRoute.name) : undefined;
275
+ const focusedEntry = focusedRoute
276
+ ? this.registry.get(focusedRoute.name)
277
+ : undefined;
268
278
  const focusedOptions = focusedEntry && focusedRoute
269
279
  ? this.resolveTabOptions(focusedEntry, focusedRoute)
270
280
  : this.screenOptions;
271
- return renderTabBar({ items, style: focusedOptions?.tabBarStyle, passthrough: {} });
281
+ return renderTabBar({
282
+ items,
283
+ style: focusedOptions?.tabBarStyle,
284
+ passthrough: {},
285
+ });
272
286
  }
273
287
  };
274
288
  return Tab = _classThis;
@@ -85,25 +85,37 @@ export function resolveDrawerSlotInterpolation(geometry, slot) {
85
85
  return {
86
86
  translateX: {
87
87
  inputRange: DRAWER_PROGRESS_INPUT_RANGE,
88
- outputRange: [geometry.contentTranslateXClosed, geometry.contentTranslateXOpen],
88
+ outputRange: [
89
+ geometry.contentTranslateXClosed,
90
+ geometry.contentTranslateXOpen,
91
+ ],
89
92
  },
90
93
  };
91
94
  case 'overlay':
92
95
  return {
93
96
  opacity: {
94
97
  inputRange: DRAWER_PROGRESS_INPUT_RANGE,
95
- outputRange: [geometry.overlayOpacityClosed, geometry.overlayOpacityOpen],
98
+ outputRange: [
99
+ geometry.overlayOpacityClosed,
100
+ geometry.overlayOpacityOpen,
101
+ ],
96
102
  },
97
103
  translateX: {
98
104
  inputRange: DRAWER_PROGRESS_INPUT_RANGE,
99
- outputRange: [geometry.contentTranslateXClosed, geometry.contentTranslateXOpen],
105
+ outputRange: [
106
+ geometry.contentTranslateXClosed,
107
+ geometry.contentTranslateXOpen,
108
+ ],
100
109
  },
101
110
  };
102
111
  case 'panel':
103
112
  return {
104
113
  translateX: {
105
114
  inputRange: DRAWER_PROGRESS_INPUT_RANGE,
106
- outputRange: [geometry.panelTranslateXClosed, geometry.panelTranslateXOpen],
115
+ outputRange: [
116
+ geometry.panelTranslateXClosed,
117
+ geometry.panelTranslateXOpen,
118
+ ],
107
119
  },
108
120
  };
109
121
  }
@@ -154,7 +166,9 @@ export function clamp01(value) {
154
166
  return Math.min(1, Math.max(0, value));
155
167
  }
156
168
  function toFiniteNumber(value) {
157
- return typeof value === 'number' && Number.isFinite(value) ? value : undefined;
169
+ return typeof value === 'number' && Number.isFinite(value)
170
+ ? value
171
+ : undefined;
158
172
  }
159
173
  // The touch's real starting page-X, read off the raw event rather than gestureState.x0: the
160
174
  // engine's capture phase (core/engine/src/pan-responder/index.ts's
@@ -11,7 +11,11 @@ export function createInitialDrawerRouterState(routes, initialRouteName) {
11
11
  return { routes, index: INITIAL_FOCUSED_INDEX, isOpen: false };
12
12
  }
13
13
  const index = routes.findIndex(route => route.name === initialRouteName);
14
- return { routes, index: index === -1 ? INITIAL_FOCUSED_INDEX : index, isOpen: false };
14
+ return {
15
+ routes,
16
+ index: index === -1 ? INITIAL_FOCUSED_INDEX : index,
17
+ isOpen: false,
18
+ };
15
19
  }
16
20
  // Mirrors @react-navigation/drawer's DrawerActions: jumpTo focuses a route by NAME (TabRouter's
17
21
  // own convention, not the stack's by-key popTo) AND closes the drawer - selecting a destination
@@ -23,7 +27,9 @@ export function drawerRouterReducer(state, action) {
23
27
  const index = state.routes.findIndex(route => route.name === action.name);
24
28
  if (index === -1)
25
29
  return state;
26
- return index === state.index && !state.isOpen ? state : { ...state, index, isOpen: false };
30
+ return index === state.index && !state.isOpen
31
+ ? state
32
+ : { ...state, index, isOpen: false };
27
33
  }
28
34
  case 'openDrawer':
29
35
  return state.isOpen ? state : { ...state, isOpen: true };
@@ -18,5 +18,7 @@ export function isRecord(value) {
18
18
  // navigator-state.ts (Stack) and tab-router-state.ts (Tabs) so the two reducers can't drift on
19
19
  // this rule independently.
20
20
  export function mergeParams(current, incoming) {
21
- return isRecord(current) && isRecord(incoming) ? { ...current, ...incoming } : incoming;
21
+ return isRecord(current) && isRecord(incoming)
22
+ ? { ...current, ...incoming }
23
+ : incoming;
22
24
  }
@@ -21,7 +21,9 @@ function prepareIcon(icon) {
21
21
  case 'imageSource':
22
22
  return { imageSource: imageStatics.resolveAssetSource(icon.imageSource) };
23
23
  case 'templateSource':
24
- return { templateSource: imageStatics.resolveAssetSource(icon.templateSource) };
24
+ return {
25
+ templateSource: imageStatics.resolveAssetSource(icon.templateSource),
26
+ };
25
27
  }
26
28
  }
27
29
  // The one id algorithm both the payload tagger (prepareMenuItems/prepareHeaderBarButtonItems)
@@ -38,7 +40,9 @@ function prepareTitleStyle(titleStyle) {
38
40
  return undefined;
39
41
  return {
40
42
  ...titleStyle,
41
- color: titleStyle.color === undefined ? undefined : processColor(titleStyle.color),
43
+ color: titleStyle.color === undefined
44
+ ? undefined
45
+ : processColor(titleStyle.color),
42
46
  };
43
47
  }
44
48
  function prepareBadge(badge) {
@@ -49,7 +53,9 @@ function prepareBadge(badge) {
49
53
  style: badge.style
50
54
  ? {
51
55
  ...badge.style,
52
- color: badge.style.color === undefined ? undefined : processColor(badge.style.color),
56
+ color: badge.style.color === undefined
57
+ ? undefined
58
+ : processColor(badge.style.color),
53
59
  backgroundColor: badge.style.backgroundColor === undefined
54
60
  ? undefined
55
61
  : processColor(badge.style.backgroundColor),
@@ -88,7 +94,11 @@ function prepareMenuItems(menuLike, index, side, path = '') {
88
94
  const currentPath = path ? `${path}.${menuIndex}` : `${menuIndex}`;
89
95
  const icon = prepareIcon(menuItem.icon);
90
96
  if (menuItem.type === 'submenu') {
91
- return { ...menuItem, ...icon, ...prepareMenuItems(menuItem, index, side, currentPath) };
97
+ return {
98
+ ...menuItem,
99
+ ...icon,
100
+ ...prepareMenuItems(menuItem, index, side, currentPath),
101
+ };
92
102
  }
93
103
  return {
94
104
  ...excludeOnPress(menuItem),
@@ -1,14 +1,14 @@
1
1
  export * from './constants';
2
2
  export { createInitialNavigatorState, navigatorReducer, computeActivityState, isTopRoute, } from './navigator-state';
3
- export type { IRoute, INavigatorState, INavigatorAction } from './navigator-state';
3
+ export type { IRoute, INavigatorState, INavigatorAction, } from './navigator-state';
4
4
  export { reconcileStackRoutes } from './stack-router-state';
5
5
  export type { IStackAnimation, IStackPresentation, IHeaderBackButtonDisplayMode, IHeaderUserInterfaceStyle, IOptionalBooleanNativeProp, ISheetAllowedDetents, ISheetLargestUndimmedDetent, ISheetInitialDetent, IHeaderBarButtonIcon, IHeaderBarButtonItemBadge, IHeaderBarButtonItemAction, IHeaderBarButtonMenuAction, IHeaderBarButtonSubmenu, IHeaderBarButtonItemMenu, IHeaderBarButtonItemSpacing, IHeaderBarButtonItem, ISearchBarAutoCapitalize, ISearchBarPlacement, ISearchBarOptions, IScreenOrientation, IScreenOptions, INavigatorPlatform, IScreenViewProps, IHeaderConfigViewProps, IStackViewProps, ISearchBarViewProps, } from './navigator-props';
6
- export { resolveHeaderConfigView, resolveScreenView, resolveSearchBarView } from './screen-options';
6
+ export { resolveHeaderConfigView, resolveScreenView, resolveSearchBarView, } from './screen-options';
7
7
  export { buildSearchBarHandle } from './search-bar-commands';
8
8
  export type { ISearchBarCommands } from './search-bar-commands';
9
9
  export { resolveScreenProps, resolveStackProps, renderHeaderConfig, resolveSearchBarProps, resolveScreenContentWrapperStyle, resolveScreenViewName, isHeaderInModal, resolveHeaderInModalStackStyle, resolveHeaderInModalScreenStyle, buildSearchBarPassthrough, resolveScreenRenderPlan, } from './render-stack';
10
10
  export type { IScreenRenderPlanInput, IScreenRenderPlan } from './render-stack';
11
- export { serializeNavigatorState, deserializeNavigatorState } from './state-persistence';
11
+ export { serializeNavigatorState, deserializeNavigatorState, } from './state-persistence';
12
12
  export { createNavigationEmitter, diffFocusedRoute, NAVIGATION_EVENT_FOCUS, NAVIGATION_EVENT_BLUR, NAVIGATION_EVENT_STATE, NAVIGATION_EVENT_BEFORE_REMOVE, } from './navigation-events';
13
13
  export type { INavigationEmitter, INavigationEventListener, INavigationEventName, IFocusTransition, } from './navigation-events';
14
14
  export { isRecord } from './guards';
@@ -20,7 +20,7 @@ export type { ITabBarItemView, ITabBarViewProps } from './render-tabs';
20
20
  export { resolveRouteFromUrl, resolveUrlFromRoute } from './linking-config';
21
21
  export type { ILinkingConfig, IScreenLinkingConfig } from './linking-config';
22
22
  export { createInitialDrawerRouterState, drawerRouterReducer, focusedDrawerRoute, } from './drawer-router-state';
23
- export type { IDrawerRouterState, IDrawerRouterAction } from './drawer-router-state';
23
+ export type { IDrawerRouterState, IDrawerRouterAction, } from './drawer-router-state';
24
24
  export type { IDrawerType, IDrawerPosition, IDrawerOptions, IDrawerScreenOptions, IDrawerGeometry, ISwipeIntent, } from './drawer-options';
25
25
  export { DRAWER_DEFAULT_TYPE, DRAWER_DEFAULT_POSITION, DRAWER_DEFAULT_WIDTH, DRAWER_DEFAULT_OVERLAY_COLOR, DRAWER_DEFAULT_SWIPE_ENABLED, DRAWER_DEFAULT_SWIPE_EDGE_WIDTH, DRAWER_DEFAULT_SWIPE_MIN_DISTANCE, DRAWER_DEFAULT_SWIPE_MIN_VELOCITY, resolveDrawerType, resolveDrawerPosition, resolveDrawerWidth, isDrawerAnimated, isDrawerOverlayVisible, resolveDrawerGeometry, isSwipeStartInEdge, isHorizontalDrag, resolveSwipeIntent, clamp01, startPageXOf, resolveDragProgress, shouldClaimDrawerSwipe, resolveDrawerSlotInterpolation, } from './drawer-options';
26
26
  export type { IDrawerInterpolationRange, IDrawerContentSlotInterpolation, IDrawerOverlaySlotInterpolation, IDrawerPanelSlotInterpolation, } from './drawer-options';
@@ -11,10 +11,10 @@ export { createInitialNavigatorState, navigatorReducer, computeActivityState, is
11
11
  // stack-router-state.ts's header for why the Stack's history needs this and the Tab's projection
12
12
  // does not.
13
13
  export { reconcileStackRoutes } from './stack-router-state/index.js';
14
- export { resolveHeaderConfigView, resolveScreenView, resolveSearchBarView } from './screen-options.js';
14
+ export { resolveHeaderConfigView, resolveScreenView, resolveSearchBarView, } from './screen-options.js';
15
15
  export { buildSearchBarHandle } from './search-bar-commands.js';
16
16
  export { resolveScreenProps, resolveStackProps, renderHeaderConfig, resolveSearchBarProps, resolveScreenContentWrapperStyle, resolveScreenViewName, isHeaderInModal, resolveHeaderInModalStackStyle, resolveHeaderInModalScreenStyle, buildSearchBarPassthrough, resolveScreenRenderPlan, } from './render-stack.js';
17
- export { serializeNavigatorState, deserializeNavigatorState } from './state-persistence/index.js';
17
+ export { serializeNavigatorState, deserializeNavigatorState, } from './state-persistence/index.js';
18
18
  export { createNavigationEmitter, diffFocusedRoute, NAVIGATION_EVENT_FOCUS, NAVIGATION_EVENT_BLUR, NAVIGATION_EVENT_STATE, NAVIGATION_EVENT_BEFORE_REMOVE, } from './navigation-events/index.js';
19
19
  // Runtime guards shared across core (and re-exported for adapters narrowing their own untyped
20
20
  // inputs - vnode props, gesture/event data, persisted JSON) - see guards.ts's header for which