@symbiote-native/navigation 1.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 (455) hide show
  1. package/LICENSE +21 -0
  2. package/build/angular/drawer/index.d.ts +76 -0
  3. package/build/angular/drawer/index.js +508 -0
  4. package/build/angular/drawer-screen.directive.d.ts +14 -0
  5. package/build/angular/drawer-screen.directive.js +87 -0
  6. package/build/angular/index.d.ts +23 -0
  7. package/build/angular/index.js +22 -0
  8. package/build/angular/injectors/index.d.ts +13 -0
  9. package/build/angular/injectors/index.js +8 -0
  10. package/build/angular/injectors/inject-drawer-navigation.d.ts +4 -0
  11. package/build/angular/injectors/inject-drawer-navigation.js +12 -0
  12. package/build/angular/injectors/inject-focus-effect.d.ts +2 -0
  13. package/build/angular/injectors/inject-focus-effect.js +29 -0
  14. package/build/angular/injectors/inject-is-focused.d.ts +2 -0
  15. package/build/angular/injectors/inject-is-focused.js +20 -0
  16. package/build/angular/injectors/inject-navigation-state.d.ts +3 -0
  17. package/build/angular/injectors/inject-navigation-state.js +35 -0
  18. package/build/angular/injectors/inject-navigation.d.ts +7 -0
  19. package/build/angular/injectors/inject-navigation.js +16 -0
  20. package/build/angular/injectors/inject-route.d.ts +3 -0
  21. package/build/angular/injectors/inject-route.js +20 -0
  22. package/build/angular/injectors/inject-stack-navigation.d.ts +4 -0
  23. package/build/angular/injectors/inject-stack-navigation.js +15 -0
  24. package/build/angular/injectors/inject-tab-navigation.d.ts +4 -0
  25. package/build/angular/injectors/inject-tab-navigation.js +11 -0
  26. package/build/angular/linking.d.ts +3 -0
  27. package/build/angular/linking.js +43 -0
  28. package/build/angular/navigation-context.service.d.ts +13 -0
  29. package/build/angular/navigation-context.service.js +105 -0
  30. package/build/angular/navigation-scope.directive.d.ts +10 -0
  31. package/build/angular/navigation-scope.directive.js +90 -0
  32. package/build/angular/screen.directive.d.ts +22 -0
  33. package/build/angular/screen.directive.js +90 -0
  34. package/build/angular/search-bar-ref.directive.d.ts +10 -0
  35. package/build/angular/search-bar-ref.directive.js +88 -0
  36. package/build/angular/stack/index.d.ts +55 -0
  37. package/build/angular/stack/index.js +386 -0
  38. package/build/angular/tab-screen.directive.d.ts +14 -0
  39. package/build/angular/tab-screen.directive.js +87 -0
  40. package/build/angular/tabs/index.d.ts +42 -0
  41. package/build/angular/tabs/index.js +263 -0
  42. package/build/core/constants.d.ts +27 -0
  43. package/build/core/constants.js +61 -0
  44. package/build/core/drawer-options/index.d.ts +64 -0
  45. package/build/core/drawer-options/index.js +200 -0
  46. package/build/core/drawer-router-state/index.d.ts +21 -0
  47. package/build/core/drawer-router-state/index.js +40 -0
  48. package/build/core/guards.d.ts +2 -0
  49. package/build/core/guards.js +22 -0
  50. package/build/core/header-bar-buttons.d.ts +9 -0
  51. package/build/core/header-bar-buttons.js +163 -0
  52. package/build/core/index.d.ts +29 -0
  53. package/build/core/index.js +32 -0
  54. package/build/core/linking-config/index.d.ts +13 -0
  55. package/build/core/linking-config/index.js +171 -0
  56. package/build/core/navigation-events/index.d.ts +16 -0
  57. package/build/core/navigation-events/index.js +57 -0
  58. package/build/core/navigator-handles/index.d.ts +30 -0
  59. package/build/core/navigator-handles/index.js +15 -0
  60. package/build/core/navigator-props.d.ts +216 -0
  61. package/build/core/navigator-props.js +7 -0
  62. package/build/core/navigator-state/index.d.ts +36 -0
  63. package/build/core/navigator-state/index.js +81 -0
  64. package/build/core/render-drawer.d.ts +13 -0
  65. package/build/core/render-drawer.js +88 -0
  66. package/build/core/render-stack.d.ts +35 -0
  67. package/build/core/render-stack.js +294 -0
  68. package/build/core/render-tabs.d.ts +20 -0
  69. package/build/core/render-tabs.js +97 -0
  70. package/build/core/screen-options.d.ts +4 -0
  71. package/build/core/screen-options.js +133 -0
  72. package/build/core/search-bar-commands.d.ts +10 -0
  73. package/build/core/search-bar-commands.js +42 -0
  74. package/build/core/state-persistence/index.d.ts +3 -0
  75. package/build/core/state-persistence/index.js +23 -0
  76. package/build/core/tab-options.d.ts +13 -0
  77. package/build/core/tab-options.js +10 -0
  78. package/build/core/tab-router-state/index.d.ts +19 -0
  79. package/build/core/tab-router-state/index.js +51 -0
  80. package/build/react/collect-registry.d.ts +4 -0
  81. package/build/react/collect-registry.js +15 -0
  82. package/build/react/drawer/index.d.ts +29 -0
  83. package/build/react/drawer/index.js +277 -0
  84. package/build/react/drawer-screen.d.ts +14 -0
  85. package/build/react/drawer-screen.js +8 -0
  86. package/build/react/hooks/index.d.ts +12 -0
  87. package/build/react/hooks/index.js +8 -0
  88. package/build/react/hooks/use-drawer-navigation.d.ts +4 -0
  89. package/build/react/hooks/use-drawer-navigation.js +12 -0
  90. package/build/react/hooks/use-focus-effect.d.ts +2 -0
  91. package/build/react/hooks/use-focus-effect.js +29 -0
  92. package/build/react/hooks/use-is-focused.d.ts +1 -0
  93. package/build/react/hooks/use-is-focused.js +22 -0
  94. package/build/react/hooks/use-navigation-state/index.d.ts +2 -0
  95. package/build/react/hooks/use-navigation-state/index.js +39 -0
  96. package/build/react/hooks/use-navigation.d.ts +7 -0
  97. package/build/react/hooks/use-navigation.js +16 -0
  98. package/build/react/hooks/use-route.d.ts +2 -0
  99. package/build/react/hooks/use-route.js +8 -0
  100. package/build/react/hooks/use-stack-navigation.d.ts +4 -0
  101. package/build/react/hooks/use-stack-navigation.js +14 -0
  102. package/build/react/hooks/use-tab-navigation.d.ts +4 -0
  103. package/build/react/hooks/use-tab-navigation.js +12 -0
  104. package/build/react/index.d.ts +24 -0
  105. package/build/react/index.js +21 -0
  106. package/build/react/linking.d.ts +3 -0
  107. package/build/react/linking.js +47 -0
  108. package/build/react/navigation-context.d.ts +10 -0
  109. package/build/react/navigation-context.js +22 -0
  110. package/build/react/screen.d.ts +22 -0
  111. package/build/react/screen.js +7 -0
  112. package/build/react/stack/index.d.ts +13 -0
  113. package/build/react/stack/index.js +202 -0
  114. package/build/react/tab-screen.d.ts +15 -0
  115. package/build/react/tab-screen.js +8 -0
  116. package/build/react/tabs/index.d.ts +12 -0
  117. package/build/react/tabs/index.js +116 -0
  118. package/build/register.d.ts +7 -0
  119. package/build/register.js +58 -0
  120. package/build/vue/composables/index.d.ts +12 -0
  121. package/build/vue/composables/index.js +8 -0
  122. package/build/vue/composables/use-drawer-navigation.d.ts +5 -0
  123. package/build/vue/composables/use-drawer-navigation.js +15 -0
  124. package/build/vue/composables/use-focus-effect.d.ts +1 -0
  125. package/build/vue/composables/use-focus-effect.js +31 -0
  126. package/build/vue/composables/use-is-focused.d.ts +2 -0
  127. package/build/vue/composables/use-is-focused.js +28 -0
  128. package/build/vue/composables/use-navigation-state.d.ts +3 -0
  129. package/build/vue/composables/use-navigation-state.js +29 -0
  130. package/build/vue/composables/use-navigation.d.ts +8 -0
  131. package/build/vue/composables/use-navigation.js +13 -0
  132. package/build/vue/composables/use-route.d.ts +3 -0
  133. package/build/vue/composables/use-route.js +9 -0
  134. package/build/vue/composables/use-stack-navigation.d.ts +5 -0
  135. package/build/vue/composables/use-stack-navigation.js +18 -0
  136. package/build/vue/composables/use-tab-navigation.d.ts +5 -0
  137. package/build/vue/composables/use-tab-navigation.js +15 -0
  138. package/build/vue/drawer/index.d.ts +19 -0
  139. package/build/vue/drawer/index.js +390 -0
  140. package/build/vue/drawer-screen.d.ts +14 -0
  141. package/build/vue/drawer-screen.js +12 -0
  142. package/build/vue/index.d.ts +21 -0
  143. package/build/vue/index.js +19 -0
  144. package/build/vue/linking.d.ts +3 -0
  145. package/build/vue/linking.js +57 -0
  146. package/build/vue/navigation-context.d.ts +16 -0
  147. package/build/vue/navigation-context.js +65 -0
  148. package/build/vue/screen.d.ts +21 -0
  149. package/build/vue/screen.js +12 -0
  150. package/build/vue/stack/index.d.ts +9 -0
  151. package/build/vue/stack/index.js +279 -0
  152. package/build/vue/tab-screen.d.ts +14 -0
  153. package/build/vue/tab-screen.js +11 -0
  154. package/build/vue/tabs/index.d.ts +10 -0
  155. package/build/vue/tabs/index.js +209 -0
  156. package/build-ngc/angular/drawer/index.d.ts +79 -0
  157. package/build-ngc/angular/drawer/index.js +479 -0
  158. package/build-ngc/angular/drawer/index.js.map +1 -0
  159. package/build-ngc/angular/drawer-screen.directive.d.ts +17 -0
  160. package/build-ngc/angular/drawer-screen.directive.js +32 -0
  161. package/build-ngc/angular/drawer-screen.directive.js.map +1 -0
  162. package/build-ngc/angular/drawer.d.ts +79 -0
  163. package/build-ngc/angular/drawer.js +475 -0
  164. package/build-ngc/angular/drawer.js.map +1 -0
  165. package/build-ngc/angular/index.d.ts +23 -0
  166. package/build-ngc/angular/index.js +23 -0
  167. package/build-ngc/angular/index.js.map +1 -0
  168. package/build-ngc/angular/injectors/index.d.ts +13 -0
  169. package/build-ngc/angular/injectors/index.js +9 -0
  170. package/build-ngc/angular/injectors/index.js.map +1 -0
  171. package/build-ngc/angular/injectors/inject-drawer-navigation.d.ts +4 -0
  172. package/build-ngc/angular/injectors/inject-drawer-navigation.js +13 -0
  173. package/build-ngc/angular/injectors/inject-drawer-navigation.js.map +1 -0
  174. package/build-ngc/angular/injectors/inject-focus-effect.d.ts +2 -0
  175. package/build-ngc/angular/injectors/inject-focus-effect.js +30 -0
  176. package/build-ngc/angular/injectors/inject-focus-effect.js.map +1 -0
  177. package/build-ngc/angular/injectors/inject-is-focused.d.ts +2 -0
  178. package/build-ngc/angular/injectors/inject-is-focused.js +22 -0
  179. package/build-ngc/angular/injectors/inject-is-focused.js.map +1 -0
  180. package/build-ngc/angular/injectors/inject-navigation-state.d.ts +3 -0
  181. package/build-ngc/angular/injectors/inject-navigation-state.js +37 -0
  182. package/build-ngc/angular/injectors/inject-navigation-state.js.map +1 -0
  183. package/build-ngc/angular/injectors/inject-navigation.d.ts +7 -0
  184. package/build-ngc/angular/injectors/inject-navigation.js +17 -0
  185. package/build-ngc/angular/injectors/inject-navigation.js.map +1 -0
  186. package/build-ngc/angular/injectors/inject-route.d.ts +3 -0
  187. package/build-ngc/angular/injectors/inject-route.js +21 -0
  188. package/build-ngc/angular/injectors/inject-route.js.map +1 -0
  189. package/build-ngc/angular/injectors/inject-stack-navigation.d.ts +4 -0
  190. package/build-ngc/angular/injectors/inject-stack-navigation.js +16 -0
  191. package/build-ngc/angular/injectors/inject-stack-navigation.js.map +1 -0
  192. package/build-ngc/angular/injectors/inject-tab-navigation.d.ts +4 -0
  193. package/build-ngc/angular/injectors/inject-tab-navigation.js +12 -0
  194. package/build-ngc/angular/injectors/inject-tab-navigation.js.map +1 -0
  195. package/build-ngc/angular/linking.d.ts +3 -0
  196. package/build-ngc/angular/linking.js +44 -0
  197. package/build-ngc/angular/linking.js.map +1 -0
  198. package/build-ngc/angular/navigation-context.service.d.ts +16 -0
  199. package/build-ngc/angular/navigation-context.service.js +63 -0
  200. package/build-ngc/angular/navigation-context.service.js.map +1 -0
  201. package/build-ngc/angular/navigation-scope.directive.d.ts +13 -0
  202. package/build-ngc/angular/navigation-scope.directive.js +42 -0
  203. package/build-ngc/angular/navigation-scope.directive.js.map +1 -0
  204. package/build-ngc/angular/screen.directive.d.ts +25 -0
  205. package/build-ngc/angular/screen.directive.js +35 -0
  206. package/build-ngc/angular/screen.directive.js.map +1 -0
  207. package/build-ngc/angular/search-bar-ref.directive.d.ts +13 -0
  208. package/build-ngc/angular/search-bar-ref.directive.js +44 -0
  209. package/build-ngc/angular/search-bar-ref.directive.js.map +1 -0
  210. package/build-ngc/angular/stack/index.d.ts +58 -0
  211. package/build-ngc/angular/stack/index.js +406 -0
  212. package/build-ngc/angular/stack/index.js.map +1 -0
  213. package/build-ngc/angular/stack.d.ts +58 -0
  214. package/build-ngc/angular/stack.js +402 -0
  215. package/build-ngc/angular/stack.js.map +1 -0
  216. package/build-ngc/angular/tab-screen.directive.d.ts +17 -0
  217. package/build-ngc/angular/tab-screen.directive.js +32 -0
  218. package/build-ngc/angular/tab-screen.directive.js.map +1 -0
  219. package/build-ngc/angular/tabs/index.d.ts +45 -0
  220. package/build-ngc/angular/tabs/index.js +231 -0
  221. package/build-ngc/angular/tabs/index.js.map +1 -0
  222. package/build-ngc/angular/tabs.d.ts +45 -0
  223. package/build-ngc/angular/tabs.js +231 -0
  224. package/build-ngc/angular/tabs.js.map +1 -0
  225. package/build-ngc/core/constants.d.ts +27 -0
  226. package/build-ngc/core/constants.js +62 -0
  227. package/build-ngc/core/constants.js.map +1 -0
  228. package/build-ngc/core/drawer-options/index.d.ts +64 -0
  229. package/build-ngc/core/drawer-options/index.js +201 -0
  230. package/build-ngc/core/drawer-options/index.js.map +1 -0
  231. package/build-ngc/core/drawer-options.d.ts +64 -0
  232. package/build-ngc/core/drawer-options.js +201 -0
  233. package/build-ngc/core/drawer-options.js.map +1 -0
  234. package/build-ngc/core/drawer-router-state/index.d.ts +21 -0
  235. package/build-ngc/core/drawer-router-state/index.js +41 -0
  236. package/build-ngc/core/drawer-router-state/index.js.map +1 -0
  237. package/build-ngc/core/drawer-router-state.d.ts +21 -0
  238. package/build-ngc/core/drawer-router-state.js +41 -0
  239. package/build-ngc/core/drawer-router-state.js.map +1 -0
  240. package/build-ngc/core/guards.d.ts +2 -0
  241. package/build-ngc/core/guards.js +23 -0
  242. package/build-ngc/core/guards.js.map +1 -0
  243. package/build-ngc/core/header-bar-buttons.d.ts +9 -0
  244. package/build-ngc/core/header-bar-buttons.js +164 -0
  245. package/build-ngc/core/header-bar-buttons.js.map +1 -0
  246. package/build-ngc/core/href.d.ts +16 -0
  247. package/build-ngc/core/href.js +55 -0
  248. package/build-ngc/core/href.js.map +1 -0
  249. package/build-ngc/core/index.d.ts +29 -0
  250. package/build-ngc/core/index.js +33 -0
  251. package/build-ngc/core/index.js.map +1 -0
  252. package/build-ngc/core/linking-config/index.d.ts +13 -0
  253. package/build-ngc/core/linking-config/index.js +172 -0
  254. package/build-ngc/core/linking-config/index.js.map +1 -0
  255. package/build-ngc/core/linking-config.d.ts +13 -0
  256. package/build-ngc/core/linking-config.js +172 -0
  257. package/build-ngc/core/linking-config.js.map +1 -0
  258. package/build-ngc/core/navigation-events/index.d.ts +16 -0
  259. package/build-ngc/core/navigation-events/index.js +58 -0
  260. package/build-ngc/core/navigation-events/index.js.map +1 -0
  261. package/build-ngc/core/navigation-events.d.ts +16 -0
  262. package/build-ngc/core/navigation-events.js +58 -0
  263. package/build-ngc/core/navigation-events.js.map +1 -0
  264. package/build-ngc/core/navigator-handles/index.d.ts +30 -0
  265. package/build-ngc/core/navigator-handles/index.js +16 -0
  266. package/build-ngc/core/navigator-handles/index.js.map +1 -0
  267. package/build-ngc/core/navigator-handles.d.ts +30 -0
  268. package/build-ngc/core/navigator-handles.js +16 -0
  269. package/build-ngc/core/navigator-handles.js.map +1 -0
  270. package/build-ngc/core/navigator-props.d.ts +216 -0
  271. package/build-ngc/core/navigator-props.js +8 -0
  272. package/build-ngc/core/navigator-props.js.map +1 -0
  273. package/build-ngc/core/navigator-state/index.d.ts +36 -0
  274. package/build-ngc/core/navigator-state/index.js +82 -0
  275. package/build-ngc/core/navigator-state/index.js.map +1 -0
  276. package/build-ngc/core/navigator-state.d.ts +36 -0
  277. package/build-ngc/core/navigator-state.js +82 -0
  278. package/build-ngc/core/navigator-state.js.map +1 -0
  279. package/build-ngc/core/render-drawer.d.ts +13 -0
  280. package/build-ngc/core/render-drawer.js +89 -0
  281. package/build-ngc/core/render-drawer.js.map +1 -0
  282. package/build-ngc/core/render-stack.d.ts +35 -0
  283. package/build-ngc/core/render-stack.js +295 -0
  284. package/build-ngc/core/render-stack.js.map +1 -0
  285. package/build-ngc/core/render-tabs.d.ts +20 -0
  286. package/build-ngc/core/render-tabs.js +98 -0
  287. package/build-ngc/core/render-tabs.js.map +1 -0
  288. package/build-ngc/core/screen-options.d.ts +4 -0
  289. package/build-ngc/core/screen-options.js +134 -0
  290. package/build-ngc/core/screen-options.js.map +1 -0
  291. package/build-ngc/core/search-bar-commands.d.ts +10 -0
  292. package/build-ngc/core/search-bar-commands.js +43 -0
  293. package/build-ngc/core/search-bar-commands.js.map +1 -0
  294. package/build-ngc/core/search-params.d.ts +9 -0
  295. package/build-ngc/core/search-params.js +60 -0
  296. package/build-ngc/core/search-params.js.map +1 -0
  297. package/build-ngc/core/state-persistence/index.d.ts +3 -0
  298. package/build-ngc/core/state-persistence/index.js +24 -0
  299. package/build-ngc/core/state-persistence/index.js.map +1 -0
  300. package/build-ngc/core/state-persistence.d.ts +3 -0
  301. package/build-ngc/core/state-persistence.js +24 -0
  302. package/build-ngc/core/state-persistence.js.map +1 -0
  303. package/build-ngc/core/tab-options.d.ts +13 -0
  304. package/build-ngc/core/tab-options.js +11 -0
  305. package/build-ngc/core/tab-options.js.map +1 -0
  306. package/build-ngc/core/tab-router-state/index.d.ts +19 -0
  307. package/build-ngc/core/tab-router-state/index.js +52 -0
  308. package/build-ngc/core/tab-router-state/index.js.map +1 -0
  309. package/build-ngc/core/tab-router-state.d.ts +19 -0
  310. package/build-ngc/core/tab-router-state.js +52 -0
  311. package/build-ngc/core/tab-router-state.js.map +1 -0
  312. package/build-ngc/register.d.ts +7 -0
  313. package/build-ngc/register.js +59 -0
  314. package/build-ngc/register.js.map +1 -0
  315. package/codegen-specs/FullWindowOverlayNativeComponent.ts +13 -0
  316. package/codegen-specs/ModalScreenNativeComponent.ts +129 -0
  317. package/codegen-specs/NativeScreensModule.ts +8 -0
  318. package/codegen-specs/NativeScreensModule.web.ts +1 -0
  319. package/codegen-specs/ScreenContainerNativeComponent.ts +8 -0
  320. package/codegen-specs/ScreenContentWrapperNativeComponent.ts +9 -0
  321. package/codegen-specs/ScreenFooterNativeComponent.ts +6 -0
  322. package/codegen-specs/ScreenNativeComponent.ts +133 -0
  323. package/codegen-specs/ScreenNavigationContainerNativeComponent.ts +11 -0
  324. package/codegen-specs/ScreenStackHeaderConfigNativeComponent.ts +99 -0
  325. package/codegen-specs/ScreenStackHeaderSubviewNativeComponent.ts +25 -0
  326. package/codegen-specs/ScreenStackNativeComponent.ts +17 -0
  327. package/codegen-specs/SearchBarNativeComponent.ts +101 -0
  328. package/codegen-specs/codegenUtils.ts +6 -0
  329. package/codegen-specs/gamma/ScrollViewMarkerNativeComponent.ts +15 -0
  330. package/codegen-specs/gamma/modals/form-sheet/FormSheetContentWrapperNativeComponent.ts +10 -0
  331. package/codegen-specs/gamma/modals/form-sheet/FormSheetHostNativeComponent.ts +47 -0
  332. package/codegen-specs/gamma/split/SplitHostNativeComponent.ts +124 -0
  333. package/codegen-specs/gamma/split/SplitScreenNativeComponent.ts +24 -0
  334. package/codegen-specs/gamma/stack/StackHeaderConfigAndroidNativeComponent.ts +144 -0
  335. package/codegen-specs/gamma/stack/StackHeaderConfigIOSNativeComponent.ts +34 -0
  336. package/codegen-specs/gamma/stack/StackHeaderItemIOSNativeComponent.ts +47 -0
  337. package/codegen-specs/gamma/stack/StackHeaderItemSpacerIOSNativeComponent.ts +20 -0
  338. package/codegen-specs/gamma/stack/StackHeaderSubviewAndroidNativeComponent.ts +27 -0
  339. package/codegen-specs/gamma/stack/StackHostNativeComponent.ts +8 -0
  340. package/codegen-specs/gamma/stack/StackScreenNativeComponent.ts +42 -0
  341. package/codegen-specs/safe-area/SafeAreaViewNativeComponent.ts +24 -0
  342. package/codegen-specs/tabs/TabsBottomAccessoryContentNativeComponent.ts +15 -0
  343. package/codegen-specs/tabs/TabsBottomAccessoryNativeComponent.ts +19 -0
  344. package/codegen-specs/tabs/TabsHostAndroidNativeComponent.ts +69 -0
  345. package/codegen-specs/tabs/TabsHostIOSNativeComponent.ts +92 -0
  346. package/codegen-specs/tabs/TabsScreenAndroidNativeComponent.ts +112 -0
  347. package/codegen-specs/tabs/TabsScreenIOSNativeComponent.ts +171 -0
  348. package/package.json +201 -0
  349. package/react-native.config.cjs +58 -0
  350. package/src/angular/drawer/drawer.test.ts +299 -0
  351. package/src/angular/drawer/index.ts +546 -0
  352. package/src/angular/drawer-screen.directive.ts +28 -0
  353. package/src/angular/index.ts +63 -0
  354. package/src/angular/injectors/index.ts +13 -0
  355. package/src/angular/injectors/inject-drawer-navigation.ts +21 -0
  356. package/src/angular/injectors/inject-focus-effect.ts +37 -0
  357. package/src/angular/injectors/inject-is-focused.ts +28 -0
  358. package/src/angular/injectors/inject-navigation-state.ts +46 -0
  359. package/src/angular/injectors/inject-navigation.ts +26 -0
  360. package/src/angular/injectors/inject-route.ts +25 -0
  361. package/src/angular/injectors/inject-stack-navigation.ts +24 -0
  362. package/src/angular/injectors/inject-tab-navigation.ts +20 -0
  363. package/src/angular/injectors/injectors.test.ts +247 -0
  364. package/src/angular/injectors/use-typed-navigation.test.ts +229 -0
  365. package/src/angular/linking.ts +55 -0
  366. package/src/angular/navigation-context.service.ts +68 -0
  367. package/src/angular/navigation-scope.directive.ts +31 -0
  368. package/src/angular/nested-navigation.test.ts +189 -0
  369. package/src/angular/screen.directive.ts +48 -0
  370. package/src/angular/search-bar-ref.directive.ts +38 -0
  371. package/src/angular/stack/index.ts +401 -0
  372. package/src/angular/stack/stack.test.ts +419 -0
  373. package/src/angular/tab-screen.directive.ts +26 -0
  374. package/src/angular/tabs/index.ts +254 -0
  375. package/src/angular/tabs/tabs.test.ts +249 -0
  376. package/src/core/constants.ts +68 -0
  377. package/src/core/drawer-options/drawer-options.test.ts +415 -0
  378. package/src/core/drawer-options/index.ts +331 -0
  379. package/src/core/drawer-router-state/drawer-router-state.test.ts +116 -0
  380. package/src/core/drawer-router-state/index.ts +71 -0
  381. package/src/core/guards.ts +23 -0
  382. package/src/core/header-bar-buttons.ts +212 -0
  383. package/src/core/index.ts +170 -0
  384. package/src/core/linking-config/index.ts +209 -0
  385. package/src/core/linking-config/linking-config.test.ts +109 -0
  386. package/src/core/navigation-events/index.ts +94 -0
  387. package/src/core/navigation-events/navigation-events.test.ts +56 -0
  388. package/src/core/navigator-handles/index.ts +63 -0
  389. package/src/core/navigator-handles/navigator-handles.test.ts +46 -0
  390. package/src/core/navigator-props.ts +323 -0
  391. package/src/core/navigator-state/index.ts +112 -0
  392. package/src/core/navigator-state/navigator-state.test.ts +80 -0
  393. package/src/core/render-drawer.ts +123 -0
  394. package/src/core/render-stack.ts +414 -0
  395. package/src/core/render-tabs.ts +138 -0
  396. package/src/core/screen-options.ts +181 -0
  397. package/src/core/search-bar-commands.ts +57 -0
  398. package/src/core/state-persistence/index.ts +30 -0
  399. package/src/core/state-persistence/state-persistence.test.ts +42 -0
  400. package/src/core/tab-options.ts +25 -0
  401. package/src/core/tab-router-state/index.ts +75 -0
  402. package/src/core/tab-router-state/tab-router-state.test.ts +34 -0
  403. package/src/globals.d.ts +4 -0
  404. package/src/react/collect-registry.ts +19 -0
  405. package/src/react/drawer/drawer.test.tsx +472 -0
  406. package/src/react/drawer/index.ts +451 -0
  407. package/src/react/drawer-screen.ts +29 -0
  408. package/src/react/hooks/hooks.test.tsx +199 -0
  409. package/src/react/hooks/index.ts +12 -0
  410. package/src/react/hooks/use-drawer-navigation.ts +21 -0
  411. package/src/react/hooks/use-focus-effect.ts +36 -0
  412. package/src/react/hooks/use-is-focused.ts +26 -0
  413. package/src/react/hooks/use-navigation-state/index.ts +47 -0
  414. package/src/react/hooks/use-navigation-state/use-navigation-state.test.ts +85 -0
  415. package/src/react/hooks/use-navigation.ts +36 -0
  416. package/src/react/hooks/use-route.ts +11 -0
  417. package/src/react/hooks/use-stack-navigation.ts +23 -0
  418. package/src/react/hooks/use-tab-navigation.ts +21 -0
  419. package/src/react/hooks/use-typed-navigation.test.tsx +187 -0
  420. package/src/react/index.ts +52 -0
  421. package/src/react/linking.ts +59 -0
  422. package/src/react/navigation-context.ts +40 -0
  423. package/src/react/nested-navigation.test.tsx +145 -0
  424. package/src/react/screen.ts +44 -0
  425. package/src/react/stack/index.ts +323 -0
  426. package/src/react/stack/stack.test.tsx +514 -0
  427. package/src/react/tab-screen.ts +30 -0
  428. package/src/react/tabs/index.ts +204 -0
  429. package/src/react/tabs/tabs.test.tsx +256 -0
  430. package/src/register.ts +59 -0
  431. package/src/vue/composables/composables.test.ts +221 -0
  432. package/src/vue/composables/index.ts +12 -0
  433. package/src/vue/composables/use-drawer-navigation.ts +25 -0
  434. package/src/vue/composables/use-focus-effect.ts +37 -0
  435. package/src/vue/composables/use-is-focused.ts +34 -0
  436. package/src/vue/composables/use-navigation-state.ts +38 -0
  437. package/src/vue/composables/use-navigation.ts +30 -0
  438. package/src/vue/composables/use-route.ts +13 -0
  439. package/src/vue/composables/use-stack-navigation.ts +28 -0
  440. package/src/vue/composables/use-tab-navigation.ts +25 -0
  441. package/src/vue/composables/use-typed-navigation.test.ts +205 -0
  442. package/src/vue/drawer/drawer.test.ts +451 -0
  443. package/src/vue/drawer/index.ts +550 -0
  444. package/src/vue/drawer-screen.ts +32 -0
  445. package/src/vue/index.ts +70 -0
  446. package/src/vue/linking.ts +69 -0
  447. package/src/vue/navigation-context.ts +87 -0
  448. package/src/vue/nested-navigation.test.ts +155 -0
  449. package/src/vue/screen.ts +52 -0
  450. package/src/vue/stack/index.ts +376 -0
  451. package/src/vue/stack/stack.test.ts +501 -0
  452. package/src/vue/tab-screen.ts +29 -0
  453. package/src/vue/tabs/index.ts +302 -0
  454. package/src/vue/tabs/tabs.test.ts +278 -0
  455. package/symbiote-navigation.podspec +84 -0
@@ -0,0 +1,402 @@
1
+ // Stack, the Angular lifecycle half. The route-stack transitions (navigator-state) and the
2
+ // options/props folds (screen-options, render-stack) live in @symbiote-native/navigation core,
3
+ // shared verbatim with the React/Vue adapters; here Angular supplies the lifecycle — a signal for
4
+ // the pushed-route stack, a per-instance counter for route-key generation, push/pop/replace/... as
5
+ // plain public methods directly on the class (no `useImperativeHandle`/forwardRef equivalent
6
+ // needed: an Angular component instance IS its own "ref", same shape as MatDrawer.open(), reached
7
+ // via a template reference variable, e.g. `<Stack #nav>` then `nav.push(...)`; `Stack implements
8
+ // INavigatorHandle` so the instance itself is what NavigationScopeDirective hands to
9
+ // NavigationContextService — the DI scope every mounted screen reads its navigation/route from via
10
+ // injectStackNavigation()/injectRoute(), never a component input) - plus the descriptor bridge for
11
+ // the header config leaf via the raw
12
+ // native-view element tags below. Pushing/popping a route is an ordinary child render/removal:
13
+ // RNSScreenStack diffs its RNSScreen children natively, so no imperative native command is needed
14
+ // here at all. Neither this nor ScreenDirective imports react-native-screens' own React components
15
+ // (hooks, crashes a non-React adapter); the native views are driven directly through the
16
+ // ViewConfig ../register registers. See CLAUDE.md <third_party_rn_packages_are_react_only>.
17
+ //
18
+ // RAW NATIVE TAGS + NO_ERRORS_SCHEMA: RNSScreenStack/RNSScreen/RNSModalScreen/
19
+ // RNSScreenContentWrapper/RNSScreenStackHeaderConfig/RNSScreenStackHeaderSubview/RNSSearchBar are
20
+ // react-native-screens' native Fabric views, not Angular components — core's render-stack.ts
21
+ // deliberately hands back PLAIN PROPS OBJECTS for the leaves this adapter builds itself with real
22
+ // framework children (see its header comment), the same split react/stack.ts's `createElement`
23
+ // calls implement. A non-dashed raw tag name only satisfies Angular's DOM element schema check
24
+ // under `NO_ERRORS_SCHEMA` (`CUSTOM_ELEMENTS_SCHEMA` only relaxes tags containing a "-", confirmed
25
+ // against `.vendors/angular/packages/compiler/src/schema/dom_element_schema_registry.ts`'s
26
+ // `hasElement`) — every other Angular component in this codebase only ever names dashed
27
+ // `symbiote-*` primitives or real `@Component` selectors, so this is the first legitimate need for
28
+ // the looser schema in this codebase; every prop still routes through the real, declared
29
+ // `[symbioteHostProps]` input (primitives/shared.ts, `@symbiote-native/angular`), never a bare
30
+ // unknown-property binding.
31
+ //
32
+ // RESOLVED: `Stack` itself (like `Tab`/`Drawer`) is a composed Angular `@Component` used as a
33
+ // plain `<Stack>` tag by consuming app code. `adapters/angular/src/renderer.ts`'s
34
+ // `ANCHOR_HOST_COMPONENTS` allowlist lists `'Stack'`/`'Tab'`/`'Drawer'` — plus every
35
+ // `.examples/angular` navigation-demo screen/component that hits the same "composed @Component
36
+ // used as a plain tag" case, mounted either statically or via `NgComponentOutlet` — so a real
37
+ // device build paints correctly (unlisted, `createElement('Stack')` falls through to a real
38
+ // `createNode` call and RN paints its own "Unimplemented component" fallback instead) — the same
39
+ // allowlist `@symbiote-native/slider`'s `Slider` needed. Every raw react-native-screens tag above
40
+ // is correctly EXEMPT from that allowlist (they must fall through to a real `createNode` to paint
41
+ // at all).
42
+ import { ChangeDetectionStrategy, Component, ContentChildren, Input, NO_ERRORS_SCHEMA, QueryList, signal, } from '@angular/core';
43
+ import { NgComponentOutlet, NgTemplateOutlet } from '@angular/common';
44
+ import { SymbioteHostPropsDirective } from '@symbiote-native/angular';
45
+ import { Platform, dlog } from '@symbiote-native/engine';
46
+ import { NAVIGATION_EVENT_BLUR, NAVIGATION_EVENT_FOCUS, NAVIGATION_EVENT_STATE, RNS_MODAL_SCREEN_VIEW_NAME, SCREEN_ON_APPEAR, SCREEN_ON_DISAPPEAR, SCREEN_ON_DISMISSED, SCREEN_ON_HEADER_BACK_BUTTON_CLICKED, STACK_ON_FINISH_TRANSITIONING, buildSearchBarPassthrough, createInitialNavigatorState, createNavigationEmitter, navigatorReducer, resolveHeaderInModalStackStyle, resolveScreenRenderPlan, resolveStackProps, } from '../core';
47
+ import { NavigationScopeDirective } from './navigation-scope.directive';
48
+ import { SearchBarRefDirective } from './search-bar-ref.directive';
49
+ import { ScreenDirective } from './screen.directive';
50
+ import * as i0 from "@angular/core";
51
+ // backTitleVisible defaults to `true` on both platforms per the codegen spec's own default — no
52
+ // ios/android divergence in v1 scope (mirrors react/stack.ts's own constant exactly).
53
+ const NAVIGATOR_PLATFORM = { defaultHeaderBackTitleVisible: true };
54
+ let stackInstanceCounter = 0;
55
+ export class Stack {
56
+ screenChildren;
57
+ initialRouteName;
58
+ screenOptions;
59
+ headerSubviewProps = { type: 'searchBar' };
60
+ routeIdPrefix = `stack-${(stackInstanceCounter += 1)}`;
61
+ // Keyed by name -> the LIVE ScreenDirective instance, not a snapshot copy of its fields:
62
+ // @ContentChildren's `changes` Observable only fires on a STRUCTURAL change to the query
63
+ // results (screens added/removed/reordered), never when an already-matched instance's own
64
+ // `[options]`/`[component]` binding is merely reassigned a new value — a snapshot copy taken at
65
+ // rebuild time would go stale the instant an app changes e.g. `[options]` on an existing
66
+ // `<ng-template symbioteScreen>` without also adding/removing one. Reading straight off the
67
+ // directive instance means Angular's own ordinary Input binding keeps every field live for free.
68
+ registry = new Map();
69
+ emitters = new Map();
70
+ // Keyed by `${route.key}:${index}`, cleared on every dispatch: the ~7 template-bound
71
+ // accessors below (outerScreenIsModal/isInModal/screenHostProps/...) all resolve the SAME
72
+ // route+index through planFor per change-detection cycle, so caching here turns ~7 runs of
73
+ // the 14-step resolveScreenRenderPlan chain into 1 per actual state change.
74
+ planCache = new Map();
75
+ routeSequence = 0;
76
+ screenChildrenSubscription;
77
+ stateSignal = signal(undefined, /* @ts-ignore */
78
+ ...(ngDevMode ? [{ debugName: "stateSignal" }] : /* istanbul ignore next */ []));
79
+ state = this.stateSignal.asReadonly();
80
+ push = (name, params) => this.dispatch({ type: 'push', route: this.createRoute(name, params) });
81
+ pop = (count) => this.dispatch({ type: 'pop', count });
82
+ popToTop = () => this.dispatch({ type: 'popToTop' });
83
+ popTo = (key) => this.dispatch({ type: 'popTo', key });
84
+ replace = (name, params) => this.dispatch({ type: 'replace', route: this.createRoute(name, params) });
85
+ setParams = (params, key) => this.dispatch({ type: 'setParams', key, params });
86
+ reset = (nextState) => this.dispatch({ type: 'reset', state: nextState });
87
+ canGoBack = () => (this.stateSignal()?.routes.length ?? 0) > 1;
88
+ ngAfterContentInit() {
89
+ this.rebuildRegistry();
90
+ this.initializeState();
91
+ this.screenChildrenSubscription = this.screenChildren.changes.subscribe(() => {
92
+ this.rebuildRegistry();
93
+ });
94
+ }
95
+ ngOnDestroy() {
96
+ this.screenChildrenSubscription?.unsubscribe();
97
+ }
98
+ rebuildRegistry() {
99
+ this.registry.clear();
100
+ for (const screen of this.screenChildren) {
101
+ this.registry.set(screen.name, screen);
102
+ }
103
+ }
104
+ initializeState() {
105
+ if (this.stateSignal() !== undefined)
106
+ return;
107
+ const initialRouteName = this.initialRouteName ?? this.registry.keys().next().value;
108
+ if (initialRouteName === undefined) {
109
+ dlog('Stack: no <ng-template symbioteScreen> children registered');
110
+ this.stateSignal.set(createInitialNavigatorState({ key: this.routeIdPrefix, name: '', params: undefined }));
111
+ return;
112
+ }
113
+ this.stateSignal.set(createInitialNavigatorState(this.createRoute(initialRouteName, this.registry.get(initialRouteName)?.initialParams)));
114
+ }
115
+ createRoute(name, params) {
116
+ this.routeSequence += 1;
117
+ return { key: `${this.routeIdPrefix}-${name}-${this.routeSequence}`, name, params };
118
+ }
119
+ dispatch(action) {
120
+ const current = this.stateSignal();
121
+ if (current === undefined)
122
+ return;
123
+ const next = navigatorReducer(current, action);
124
+ this.planCache.clear();
125
+ this.stateSignal.set(next);
126
+ const liveRouteKeys = new Set(next.routes.map(route => route.key));
127
+ for (const route of next.routes) {
128
+ this.emitterFor(route.key).emit(NAVIGATION_EVENT_STATE, next);
129
+ }
130
+ for (const routeKey of this.emitters.keys()) {
131
+ if (!liveRouteKeys.has(routeKey))
132
+ this.emitters.delete(routeKey);
133
+ }
134
+ }
135
+ emitterFor(routeKey) {
136
+ let emitter = this.emitters.get(routeKey);
137
+ if (!emitter) {
138
+ emitter = createNavigationEmitter();
139
+ this.emitters.set(routeKey, emitter);
140
+ }
141
+ return emitter;
142
+ }
143
+ mergedOptionsFor(route) {
144
+ const entry = this.registry.get(route.name);
145
+ const optionsArgs = { route, navigation: this };
146
+ const own = entry === undefined
147
+ ? undefined
148
+ : typeof entry.options === 'function'
149
+ ? entry.options(optionsArgs)
150
+ : entry.options;
151
+ return { ...this.screenOptions, ...own };
152
+ }
153
+ componentFor(route) {
154
+ return this.registry.get(route.name)?.component ?? null;
155
+ }
156
+ stackHostProps() {
157
+ return resolveStackProps({
158
+ passthrough: {
159
+ [STACK_ON_FINISH_TRANSITIONING]: () => dlog(`Stack: onFinishTransitioning at t=${Date.now()}`),
160
+ },
161
+ });
162
+ }
163
+ // Threads a route's merged options through the shared ~14-call resolver sequence (see
164
+ // core/render-stack.ts's resolveScreenRenderPlan) every per-route template method below picks
165
+ // its one field from. Angular has no per-route closure scope the way React's `.map`/Vue's render
166
+ // loop do, so each template-bound method calls this per change-detection cycle — cached below
167
+ // by `${route.key}:${index}` so the ~7 accessors that share a route+index resolve the plan once
168
+ // per actual state change instead of once per template read; `dispatch` clears the cache before
169
+ // recomputing so no stale entry survives a state transition. Screen appear/disappear stay
170
+ // adapter-owned (close over `this.dispatch`/`this.emitterFor`); the search bar passthrough
171
+ // carries no dlog wrapper, unlike React/Vue (see this file's own review notes) — its imperative
172
+ // ref rides a separate directive (searchBarRef/[symbioteSearchBarRef]), not this passthrough map.
173
+ planFor(route, index) {
174
+ const cacheKey = `${route.key}:${index}`;
175
+ const cached = this.planCache.get(cacheKey);
176
+ if (cached)
177
+ return cached;
178
+ const mergedOptions = this.mergedOptionsFor(route);
179
+ const searchBarOptions = mergedOptions.headerSearchBarOptions;
180
+ const plan = resolveScreenRenderPlan({
181
+ screenId: route.key,
182
+ index,
183
+ routeCount: this.stateSignal()?.routes.length ?? 1,
184
+ options: mergedOptions,
185
+ platform: NAVIGATOR_PLATFORM,
186
+ isAndroid: Platform.OS === 'android',
187
+ screenPassthrough: {
188
+ [SCREEN_ON_DISMISSED]: () => this.dispatch({ type: 'pop', count: 1 }),
189
+ [SCREEN_ON_HEADER_BACK_BUTTON_CLICKED]: () => this.dispatch({ type: 'pop', count: 1 }),
190
+ [SCREEN_ON_APPEAR]: () => {
191
+ dlog(`Stack: route "${route.name}" appeared (focus)`);
192
+ this.emitterFor(route.key).emit(NAVIGATION_EVENT_FOCUS);
193
+ },
194
+ [SCREEN_ON_DISAPPEAR]: () => {
195
+ dlog(`Stack: route "${route.name}" disappeared (blur)`);
196
+ this.emitterFor(route.key).emit(NAVIGATION_EVENT_BLUR);
197
+ },
198
+ },
199
+ searchBarPassthrough: searchBarOptions
200
+ ? buildSearchBarPassthrough(searchBarOptions)
201
+ : undefined,
202
+ });
203
+ this.planCache.set(cacheKey, plan);
204
+ return plan;
205
+ }
206
+ outerScreenIsModal(route, index) {
207
+ return this.planFor(route, index).screenViewName === RNS_MODAL_SCREEN_VIEW_NAME;
208
+ }
209
+ isInModal(route, index) {
210
+ return this.planFor(route, index).inModal;
211
+ }
212
+ screenHostProps(route, index) {
213
+ return this.planFor(route, index).screenProps;
214
+ }
215
+ innerStackProps() {
216
+ return { style: resolveHeaderInModalStackStyle() };
217
+ }
218
+ innerScreenProps(route, index) {
219
+ const plan = this.planFor(route, index);
220
+ return { style: plan.innerScreenStyle, activityState: plan.activityState };
221
+ }
222
+ contentWrapperProps(route, index) {
223
+ return this.planFor(route, index).contentWrapperProps;
224
+ }
225
+ headerConfigProps(route, index) {
226
+ return this.planFor(route, index).headerConfig.props;
227
+ }
228
+ hasSearchBar(route) {
229
+ return this.mergedOptionsFor(route).headerSearchBarOptions !== undefined;
230
+ }
231
+ searchBarRef(route) {
232
+ return this.mergedOptionsFor(route).headerSearchBarOptions?.ref;
233
+ }
234
+ searchBarProps(route, index) {
235
+ return this.planFor(route, index).searchBarProps ?? {};
236
+ }
237
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.5", ngImport: i0, type: Stack, deps: [], target: i0.ɵɵFactoryTarget.Component });
238
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.5", type: Stack, isStandalone: true, selector: "Stack", inputs: { initialRouteName: "initialRouteName", screenOptions: "screenOptions" }, queries: [{ propertyName: "screenChildren", predicate: ScreenDirective }], ngImport: i0, template: `
239
+ @if (state(); as currentState) {
240
+ <RNSScreenStack [symbioteHostProps]="stackHostProps()">
241
+ @for (route of currentState.routes; track route.key; let idx = $index) {
242
+ <ng-container
243
+ [ngTemplateOutlet]="screenTpl"
244
+ [ngTemplateOutletContext]="{ $implicit: route, index: idx }"
245
+ />
246
+ }
247
+ </RNSScreenStack>
248
+ }
249
+
250
+ <ng-template #screenTpl let-route let-index="index">
251
+ @if (outerScreenIsModal(route, index)) {
252
+ <RNSModalScreen [symbioteHostProps]="screenHostProps(route, index)">
253
+ <ng-container
254
+ [ngTemplateOutlet]="innerTpl"
255
+ [ngTemplateOutletContext]="{ $implicit: route, index: index }"
256
+ />
257
+ </RNSModalScreen>
258
+ } @else {
259
+ <RNSScreen [symbioteHostProps]="screenHostProps(route, index)">
260
+ <ng-container
261
+ [ngTemplateOutlet]="innerTpl"
262
+ [ngTemplateOutletContext]="{ $implicit: route, index: index }"
263
+ />
264
+ </RNSScreen>
265
+ }
266
+ </ng-template>
267
+
268
+ <ng-template #innerTpl let-route let-index="index">
269
+ @if (isInModal(route, index)) {
270
+ <RNSScreenStack [symbioteHostProps]="innerStackProps()">
271
+ <RNSScreen [symbioteHostProps]="innerScreenProps(route, index)">
272
+ <ng-container
273
+ [ngTemplateOutlet]="headerAndContentTpl"
274
+ [ngTemplateOutletContext]="{ $implicit: route, index: index }"
275
+ />
276
+ </RNSScreen>
277
+ </RNSScreenStack>
278
+ } @else {
279
+ <ng-container
280
+ [ngTemplateOutlet]="headerAndContentTpl"
281
+ [ngTemplateOutletContext]="{ $implicit: route, index: index }"
282
+ />
283
+ }
284
+ </ng-template>
285
+
286
+ <ng-template #headerAndContentTpl let-route let-index="index">
287
+ <RNSScreenStackHeaderConfig [symbioteHostProps]="headerConfigProps(route, index)">
288
+ @if (hasSearchBar(route)) {
289
+ <RNSScreenStackHeaderSubview [symbioteHostProps]="headerSubviewProps">
290
+ <RNSSearchBar
291
+ [symbioteSearchBarRef]="searchBarRef(route)"
292
+ [symbioteHostProps]="searchBarProps(route, index)"
293
+ />
294
+ </RNSScreenStackHeaderSubview>
295
+ }
296
+ </RNSScreenStackHeaderConfig>
297
+ <RNSScreenContentWrapper [symbioteHostProps]="contentWrapperProps(route, index)">
298
+ <ng-container
299
+ [symbioteNavigationScope]="route"
300
+ [navigation]="this"
301
+ [emitter]="emitterFor(route.key)"
302
+ >
303
+ <ng-container *ngComponentOutlet="componentFor(route)" />
304
+ </ng-container>
305
+ </RNSScreenContentWrapper>
306
+ </ng-template>
307
+ `, isInline: true, dependencies: [{ kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: NgComponentOutlet, selector: "[ngComponentOutlet]", inputs: ["ngComponentOutlet", "ngComponentOutletInputs", "ngComponentOutletInjector", "ngComponentOutletEnvironmentInjector", "ngComponentOutletContent", "ngComponentOutletNgModule"], exportAs: ["ngComponentOutlet"] }, { kind: "directive", type: NavigationScopeDirective, selector: "[symbioteNavigationScope]", inputs: ["symbioteNavigationScope", "navigation", "emitter"] }, { kind: "directive", type: SearchBarRefDirective, selector: "[symbioteSearchBarRef]", inputs: ["symbioteSearchBarRef"] }, { kind: "directive", type: SymbioteHostPropsDirective, selector: "[symbioteHostProps]", inputs: ["symbioteHostProps"], exportAs: ["symbioteHost"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
308
+ }
309
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.5", ngImport: i0, type: Stack, decorators: [{
310
+ type: Component,
311
+ args: [{
312
+ selector: 'Stack',
313
+ standalone: true,
314
+ schemas: [NO_ERRORS_SCHEMA],
315
+ imports: [
316
+ NgTemplateOutlet,
317
+ NgComponentOutlet,
318
+ NavigationScopeDirective,
319
+ SearchBarRefDirective,
320
+ SymbioteHostPropsDirective,
321
+ ],
322
+ changeDetection: ChangeDetectionStrategy.OnPush,
323
+ template: `
324
+ @if (state(); as currentState) {
325
+ <RNSScreenStack [symbioteHostProps]="stackHostProps()">
326
+ @for (route of currentState.routes; track route.key; let idx = $index) {
327
+ <ng-container
328
+ [ngTemplateOutlet]="screenTpl"
329
+ [ngTemplateOutletContext]="{ $implicit: route, index: idx }"
330
+ />
331
+ }
332
+ </RNSScreenStack>
333
+ }
334
+
335
+ <ng-template #screenTpl let-route let-index="index">
336
+ @if (outerScreenIsModal(route, index)) {
337
+ <RNSModalScreen [symbioteHostProps]="screenHostProps(route, index)">
338
+ <ng-container
339
+ [ngTemplateOutlet]="innerTpl"
340
+ [ngTemplateOutletContext]="{ $implicit: route, index: index }"
341
+ />
342
+ </RNSModalScreen>
343
+ } @else {
344
+ <RNSScreen [symbioteHostProps]="screenHostProps(route, index)">
345
+ <ng-container
346
+ [ngTemplateOutlet]="innerTpl"
347
+ [ngTemplateOutletContext]="{ $implicit: route, index: index }"
348
+ />
349
+ </RNSScreen>
350
+ }
351
+ </ng-template>
352
+
353
+ <ng-template #innerTpl let-route let-index="index">
354
+ @if (isInModal(route, index)) {
355
+ <RNSScreenStack [symbioteHostProps]="innerStackProps()">
356
+ <RNSScreen [symbioteHostProps]="innerScreenProps(route, index)">
357
+ <ng-container
358
+ [ngTemplateOutlet]="headerAndContentTpl"
359
+ [ngTemplateOutletContext]="{ $implicit: route, index: index }"
360
+ />
361
+ </RNSScreen>
362
+ </RNSScreenStack>
363
+ } @else {
364
+ <ng-container
365
+ [ngTemplateOutlet]="headerAndContentTpl"
366
+ [ngTemplateOutletContext]="{ $implicit: route, index: index }"
367
+ />
368
+ }
369
+ </ng-template>
370
+
371
+ <ng-template #headerAndContentTpl let-route let-index="index">
372
+ <RNSScreenStackHeaderConfig [symbioteHostProps]="headerConfigProps(route, index)">
373
+ @if (hasSearchBar(route)) {
374
+ <RNSScreenStackHeaderSubview [symbioteHostProps]="headerSubviewProps">
375
+ <RNSSearchBar
376
+ [symbioteSearchBarRef]="searchBarRef(route)"
377
+ [symbioteHostProps]="searchBarProps(route, index)"
378
+ />
379
+ </RNSScreenStackHeaderSubview>
380
+ }
381
+ </RNSScreenStackHeaderConfig>
382
+ <RNSScreenContentWrapper [symbioteHostProps]="contentWrapperProps(route, index)">
383
+ <ng-container
384
+ [symbioteNavigationScope]="route"
385
+ [navigation]="this"
386
+ [emitter]="emitterFor(route.key)"
387
+ >
388
+ <ng-container *ngComponentOutlet="componentFor(route)" />
389
+ </ng-container>
390
+ </RNSScreenContentWrapper>
391
+ </ng-template>
392
+ `,
393
+ }]
394
+ }], propDecorators: { screenChildren: [{
395
+ type: ContentChildren,
396
+ args: [ScreenDirective]
397
+ }], initialRouteName: [{
398
+ type: Input
399
+ }], screenOptions: [{
400
+ type: Input
401
+ }] } });
402
+ //# sourceMappingURL=stack.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"stack.js","sourceRoot":"","sources":["../../src/angular/stack.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,17 @@
1
+ import { type Type } from '@angular/core';
2
+ import type { IRoute, ITabOptions } from '../core';
3
+ import type { ITabNavigatorHandle } from '../core';
4
+ import * as i0 from "@angular/core";
5
+ export type ITabScreenOptionsArgs = {
6
+ route: IRoute<unknown>;
7
+ navigation: ITabNavigatorHandle;
8
+ };
9
+ export type ITabScreenOptionsResolver = (props: ITabScreenOptionsArgs) => ITabOptions;
10
+ export declare class TabScreenDirective {
11
+ name: string;
12
+ component: Type<unknown>;
13
+ options?: ITabOptions | ITabScreenOptionsResolver;
14
+ initialParams?: unknown;
15
+ static ɵfac: i0.ɵɵFactoryDeclaration<TabScreenDirective, never>;
16
+ static ɵdir: i0.ɵɵDirectiveDeclaration<TabScreenDirective, "ng-template[symbioteTabScreen]", never, { "name": { "alias": "name"; "required": true; }; "component": { "alias": "component"; "required": true; }; "options": { "alias": "options"; "required": false; }; "initialParams": { "alias": "initialParams"; "required": false; }; }, {}, never, never, true, never>;
17
+ }
@@ -0,0 +1,32 @@
1
+ // [symbioteTabScreen]: Tab's twin of screen.directive.ts's ScreenDirective - a declarative marker
2
+ // read via @ContentChildren to build the static name -> {component, options} registry, then Tab
3
+ // mounts the FOCUSED route's component itself. Mirrors react/tab-screen.ts's TabScreen minus the
4
+ // stack-only concepts (no push/pop lifecycle events to wire).
5
+ import { Directive, Input } from '@angular/core';
6
+ import * as i0 from "@angular/core";
7
+ export class TabScreenDirective {
8
+ name;
9
+ component;
10
+ options;
11
+ initialParams;
12
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.5", ngImport: i0, type: TabScreenDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
13
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "22.0.5", type: TabScreenDirective, isStandalone: true, selector: "ng-template[symbioteTabScreen]", inputs: { name: "name", component: "component", options: "options", initialParams: "initialParams" }, ngImport: i0 });
14
+ }
15
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.5", ngImport: i0, type: TabScreenDirective, decorators: [{
16
+ type: Directive,
17
+ args: [{
18
+ selector: 'ng-template[symbioteTabScreen]',
19
+ standalone: true,
20
+ }]
21
+ }], propDecorators: { name: [{
22
+ type: Input,
23
+ args: [{ required: true }]
24
+ }], component: [{
25
+ type: Input,
26
+ args: [{ required: true }]
27
+ }], options: [{
28
+ type: Input
29
+ }], initialParams: [{
30
+ type: Input
31
+ }] } });
32
+ //# sourceMappingURL=tab-screen.directive.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tab-screen.directive.js","sourceRoot":"","sources":["../../src/angular/tab-screen.directive.ts"],"names":[],"mappings":"AAAA,kGAAkG;AAClG,gGAAgG;AAChG,iGAAiG;AACjG,8DAA8D;AAE9D,OAAO,EAAE,SAAS,EAAE,KAAK,EAAa,MAAM,eAAe,CAAC;;AAe5D,MAAM,OAAO,kBAAkB;IACF,IAAI,CAAU;IACd,SAAS,CAAiB;IAC5C,OAAO,CAA2C;IAClD,aAAa,CAAW;uGAJtB,kBAAkB;2FAAlB,kBAAkB;;2FAAlB,kBAAkB;kBAJ9B,SAAS;mBAAC;oBACT,QAAQ,EAAE,gCAAgC;oBAC1C,UAAU,EAAE,IAAI;iBACjB;;sBAEE,KAAK;uBAAC,EAAE,QAAQ,EAAE,IAAI,EAAE;;sBACxB,KAAK;uBAAC,EAAE,QAAQ,EAAE,IAAI,EAAE;;sBACxB,KAAK;;sBACL,KAAK"}
@@ -0,0 +1,45 @@
1
+ import { type AfterContentInit, type OnDestroy, type Type } from '@angular/core';
2
+ import type { IDescriptor } from '@symbiote-native/components';
3
+ import type { INavigationEmitter, IRoute, ITabNavigatorHandle, ITabOptions } from '../../core';
4
+ import * as i0 from "@angular/core";
5
+ export type { ITabNavigatorHandle } from '../../core';
6
+ export declare class Tab implements AfterContentInit, OnDestroy, ITabNavigatorHandle {
7
+ private readonly tabScreenChildren;
8
+ initialRouteName?: string;
9
+ screenOptions?: ITabOptions;
10
+ readonly rootStyle: {
11
+ flex: number;
12
+ };
13
+ readonly contentStyle: {
14
+ flex: number;
15
+ };
16
+ private readonly routeIdPrefix;
17
+ private readonly registry;
18
+ private tabScreenChildrenSubscription;
19
+ private readonly stateSignal;
20
+ readonly state: import("@angular/core").Signal<Readonly<{
21
+ routes: readonly Readonly<{
22
+ key: string;
23
+ name: string;
24
+ params: unknown;
25
+ }>[];
26
+ index: number;
27
+ }> | undefined>;
28
+ private currentEmitterKey;
29
+ private currentEmitter;
30
+ readonly jumpTo: (name: string, params?: unknown) => void;
31
+ readonly setParams: (params: unknown, key: string) => void;
32
+ ngAfterContentInit(): void;
33
+ ngOnDestroy(): void;
34
+ private rebuildRegistry;
35
+ private routesFromRegistry;
36
+ private initializeState;
37
+ private dispatch;
38
+ private resolveTabOptions;
39
+ focusedRoute(): IRoute<unknown> | undefined;
40
+ componentForRoute(route: IRoute<unknown>): Type<unknown> | null;
41
+ focusedRouteEmitter(): INavigationEmitter;
42
+ tabBarDescriptor(): IDescriptor;
43
+ static ɵfac: i0.ɵɵFactoryDeclaration<Tab, never>;
44
+ static ɵcmp: i0.ɵɵComponentDeclaration<Tab, "Tab", never, { "initialRouteName": { "alias": "initialRouteName"; "required": false; }; "screenOptions": { "alias": "screenOptions"; "required": false; }; }, {}, ["tabScreenChildren"], never, true, never>;
45
+ }